diff --git a/.github/ISSUE_TEMPLATE/2_bug_provider.yml b/.github/ISSUE_TEMPLATE/2_bug_provider.yml index a7af5b7ea3..fa87b24a59 100644 --- a/.github/ISSUE_TEMPLATE/2_bug_provider.yml +++ b/.github/ISSUE_TEMPLATE/2_bug_provider.yml @@ -26,6 +26,7 @@ body: - "42 School" - "Apple" - "Asgardeo" + - "Atlassian" - "Auth0" - "Authentik" - "Azure Active Directory" @@ -37,6 +38,7 @@ body: - "Bungie" - "ClickUp" - "Cognito" + - "Concept2" - "Coinbase" - "Descope" - "Discord" @@ -59,6 +61,7 @@ body: - "Kinde" - "Line" - "LinkedIn" + - "Loops" - "Mailchimp" - "Mail.ru" - "Mastodon" @@ -66,6 +69,7 @@ body: - "Naver" - "Netlify" - "NetSuite" + - "Nextcloud" - "Notion" - "Okta" - "OneLogin" diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..ea6feea960 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,15 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "npm" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" + versioning-strategy: "increase" + allow: + - dependency-name: "oauth4webapi" + - dependency-name: "jose" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 36edede556..aabbc57446 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,54 +15,38 @@ on: type: choice description: Package name (npm) options: + - "next-auth" - "@auth/core" + - "@auth/express" + - "@auth/nuxt" + - "@auth/qwik" + - "@auth/solid-start" + - "@auth/sveltekit" + - "@auth/azure-tables-adapter" + - "@auth/d1-adapter" - "@auth/dgraph-adapter" - "@auth/drizzle-adapter" - "@auth/dynamodb-adapter" + - "@auth/edgedb-adapter" - "@auth/fauna-adapter" - "@auth/firebase-adapter" - "@auth/hasura-adapter" + - "@auth/kysely-adapter" - "@auth/mikro-orm-adapter" - "@auth/mongodb-adapter" - "@auth/neo4j-adapter" + - "@auth/pg-adapter" - "@auth/pouchdb-adapter" - "@auth/prisma-adapter" - "@auth/sequelize-adapter" - "@auth/supabase-adapter" - "@auth/surrealdb-adapter" + - "@auth/test-adapter" - "@auth/typeorm-adapter" + - "@auth/typeorm-legacy-adapter" - "@auth/unstorage-adapter" - "@auth/upstash-redis-adapter" - "@auth/xata-adapter" - - "next-auth" - # TODO: Infer from package name - path: - type: choice - description: Directory name (packages/*) - options: - - "core" - - "frameworks-nextjs" - - "adapter-edgedb" - - "adapter-dgraph" - - "adapter-drizzle" - - "adapter-dynamodb" - - "adapter-fauna" - - "adapter-firebase" - - "adapter-hasura" - - "adapter-mikro-orm" - - "adapter-mongodb" - - "adapter-neo4j" - - "adapter-pouchdb" - - "adapter-prisma" - - "adapter-sequelize" - - "adapter-supabase" - - "adapter-surrealdb" - - "adapter-typeorm" - - "adapter-unstorage" - - "adapter-upstash-redis" - - "adapter-xata" - - "next-auth" - permissions: id-token: write @@ -113,40 +97,18 @@ jobs: - name: Run unit tests if: ${{ env.PACKAGES_CHANGES == 'true' || github.ref == 'refs/heads/main' }} run: pnpm test - - name: Get installed Playwright version - id: playwright-version - run: echo "PLAYWRIGHT_VERSION=$(pnpx playwright -V | awk '{ print $2 }')" >> $GITHUB_ENV - - name: Cache playwright binaries - uses: actions/cache@v4 - id: playwright-cache - with: - path: | - ~/.cache/ms-playwright - key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }} - name: Install Playwright - if: steps.playwright-cache.outputs.cache-hit != 'true' && github.repository == 'nextauthjs/next-auth' - run: | - pnpm exec playwright install --with-deps chromium + if: github.repository == 'nextauthjs/next-auth' + run: pnpm exec playwright install --with-deps chromium - name: Run E2E tests (Nextjs-Docker) continue-on-error: true if: false timeout-minutes: 15 - run: | - cd apps/examples/nextjs-docker && pnpm test:docker - env: - AUTH_SECRET: ${{ secrets.AUTH_SECRET }} - TEST_KEYCLOAK_USERNAME: ${{ secrets.TEST_KEYCLOAK_USERNAME }} - TEST_KEYCLOAK_PASSWORD: ${{ secrets.TEST_KEYCLOAK_PASSWORD }} - AUTH_KEYCLOAK_ID: ${{ secrets.AUTH_KEYCLOAK_ID }} - AUTH_KEYCLOAK_SECRET: ${{ secrets.AUTH_KEYCLOAK_SECRET }} - AUTH_KEYCLOAK_ISSUER: ${{ secrets.AUTH_KEYCLOAK_ISSUER }} - AUTH_TRUST_HOST: 1 + run: cd apps/examples/nextjs-docker && pnpm test:docker - name: Run E2E tests continue-on-error: true # TODO: Make this less flakey - if: github.repository == 'nextauthjs/next-auth' + if: ${{ env.PACKAGES_CHANGES == 'true' || github.ref == 'refs/heads/main' }} timeout-minutes: 15 - run: | - pnpm test:e2e env: AUTH_SECRET: ${{ secrets.AUTH_SECRET }} TEST_KEYCLOAK_USERNAME: ${{ secrets.TEST_KEYCLOAK_USERNAME }} @@ -155,11 +117,13 @@ jobs: AUTH_KEYCLOAK_SECRET: ${{ secrets.AUTH_KEYCLOAK_SECRET }} AUTH_KEYCLOAK_ISSUER: ${{ secrets.AUTH_KEYCLOAK_ISSUER }} AUTH_TRUST_HOST: 1 + DEBUG: "pw:webserver" + run: pnpm test:e2e - uses: actions/upload-artifact@v4 name: Upload Playwright artifacts with: name: playwright-traces - path: "**/packages/utils/test-results/*/trace.zip" + path: "**/packages/next-auth/test-results/*/trace.zip" retention-days: 7 - uses: codecov/codecov-action@v4 if: always() @@ -254,11 +218,29 @@ jobs: cache: "pnpm" - name: Install dependencies run: pnpm install + - name: Map package name to path + run: | + case "${{ github.event.inputs.name }}" in + *"-adapter") + adapter_name=$(echo "${{ github.event.inputs.name }}" | sed 's/@auth\///' | sed 's/-adapter//') + echo "PACKAGE_PATH=adapter-${adapter_name}" >> $GITHUB_ENV + ;; + "next-auth") + echo "PACKAGE_PATH=next-auth" >> $GITHUB_ENV + ;; + "@auth/core") + echo "PACKAGE_PATH=core" >> $GITHUB_ENV + ;; + *) + framework_name=$(echo "${{ github.event.inputs.name }}" | sed 's/@auth\///') + echo "PACKAGE_PATH=frameworks-${framework_name}" >> $GITHUB_ENV + ;; + esac - name: Determine version uses: ./.github/version-pr id: determine-version env: - PACKAGE_PATH: ${{ github.event.inputs.path }} + PACKAGE_PATH: ${{ env.PACKAGE_PATH }} - name: Publish to npm run: | pnpm build @@ -269,5 +251,5 @@ jobs: echo "Install via: pnpm add ${{ github.event.inputs.name }}@${{ env.VERSION }}" env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - PACKAGE_PATH: ${{ github.event.inputs.path }} + PACKAGE_PATH: ${{ env.PACKAGE_PATH }} VERSION: ${{ steps.determine-version.outputs.version }} diff --git a/.gitignore b/.gitignore index 66ce6a85ba..2ac352effe 100644 --- a/.gitignore +++ b/.gitignore @@ -87,7 +87,7 @@ docs/.next docs/manifest.mjs # Core -packages/core/src/providers/oauth-types.ts +packages/core/src/providers/provider-types.ts packages/core/lib packages/core/providers packages/core/src/lib/pages/styles.ts diff --git a/.prettierignore b/.prettierignore index af5e116db3..5838858cf7 100644 --- a/.prettierignore +++ b/.prettierignore @@ -32,7 +32,7 @@ packages/**/*.js !packages/*/scripts/*.js # @auth/core -packages/core/src/providers/oauth-types.ts +packages/core/src/providers/provider-types.ts packages/core/src/lib/pages/styles.ts # @auth/sveltekit @@ -43,7 +43,7 @@ packages/frameworks-sveltekit/vite.config.{js,ts}.timestamp-* packages/frameworks-express/providers # next-auth -packages/next-auth/src/providers/oauth-types.ts +packages/next-auth/src/providers/provider-types.ts packages/next-auth/css/index.css # Adapters diff --git a/.vscode/extensions.json b/.vscode/extensions.json index c83e26348e..75b820aec8 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["esbenp.prettier-vscode"] + "recommendations": ["esbenp.prettier-vscode", "bradlc.vscode-tailwindcss"] } diff --git a/README.md b/README.md index 22d6f77c85..4a8005f3a1 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,13 @@

Authentication for the Web.

Open Source. Full Stack. Own Your Data.

- GitHub Stable Release + X (formerly known Twitter) + NPM next-auth@latest release + NPM next-auth@beta release Downloads Github Stars - Codecov + TypeScript

@@ -106,13 +108,6 @@ We have an [OpenCollective](https://opencollective.com/nextauth) for companies a

FusionAuth
💵 - - - Beyond Identity Logo -
-
Beyond Identity
- 💵 - Stytch Logo @@ -127,8 +122,22 @@ We have an [OpenCollective](https://opencollective.com/nextauth) for companies a
Prisma
💵 + +
+ Neon Logo +
+
Neon
+ 💵 + + + + Beyond Identity Logo +
+
Beyond Identity
+ 💵 + Lowdefy Logo @@ -157,6 +166,15 @@ We have an [OpenCollective](https://opencollective.com/nextauth) for companies a
Encore
💵 + +
+ Sent.dm Logo +
+
Sent.dm
+ 💵 + + + Arcjet Logo @@ -164,6 +182,13 @@ We have an [OpenCollective](https://opencollective.com/nextauth) for companies a
Arcjet
💵 + +
+ Route4Me Logo +
+
Route4Me
+ 💵 + Netlight logo @@ -171,8 +196,6 @@ We have an [OpenCollective](https://opencollective.com/nextauth) for companies a
Netlight
☁️ - -
Checkly Logo diff --git a/apps/dev/express/package.json b/apps/dev/express/package.json index 23f4fce1fd..817a23bb57 100644 --- a/apps/dev/express/package.json +++ b/apps/dev/express/package.json @@ -17,7 +17,7 @@ "license": "MIT", "dependencies": { "@auth/express": "workspace:*", - "express": "^4.19.2", + "express": "^4.20.0", "morgan": "^1.10.0", "pug": "^3.0.2" }, @@ -28,8 +28,5 @@ "@types/pug": "^2.0.10", "tsx": "^4.7.3", "typescript": "5.4.5" - }, - "engines": { - "node": ">=20.11.0" } } diff --git a/apps/dev/nextjs/.env.local.example b/apps/dev/nextjs/.env.local.example index 70e5ece6f0..cb34099406 100644 --- a/apps/dev/nextjs/.env.local.example +++ b/apps/dev/nextjs/.env.local.example @@ -26,6 +26,7 @@ AUTH_BEYOND_IDENTITY_ISSUER= AUTH_DESCOPE_ID= AUTH_DESCOPE_SECRET= +AUTH_DESCOPE_ISSUER= AUTH_GITHUB_ID= AUTH_GITHUB_SECRET= diff --git a/apps/dev/nextjs/app/client.tsx b/apps/dev/nextjs/app/client.tsx index 70708cfe65..f60777109c 100644 --- a/apps/dev/nextjs/app/client.tsx +++ b/apps/dev/nextjs/app/client.tsx @@ -34,7 +34,11 @@ export default function Client() { ) : ( <> - diff --git a/apps/dev/nextjs/auth.config.ts b/apps/dev/nextjs/auth.config.ts deleted file mode 100644 index 662822a01e..0000000000 --- a/apps/dev/nextjs/auth.config.ts +++ /dev/null @@ -1,54 +0,0 @@ -import type { NextAuthConfig } from "next-auth" -import Credentials from "next-auth/providers/credentials" -import GitHub from "next-auth/providers/github" -import Google from "next-auth/providers/google" -import Facebook from "next-auth/providers/facebook" -import Twitter from "next-auth/providers/twitter" -import Keycloak from "next-auth/providers/keycloak" -import LinkedIn from "next-auth/providers/linkedin" - -declare module "next-auth" { - /** - * Returned by `useSession`, `getSession`, `auth` and received as a prop on the `SessionProvider` React Context - */ - interface Session { - user: { - /** The user's postal address. */ - address: string - } & User - } - - interface User { - foo?: string - } -} - -export default { - debug: true, - providers: [ - Credentials({ - credentials: { password: { label: "Password", type: "password" } }, - authorize(c) { - if (c.password !== "password") return null - return { - id: "test", - name: "Test User", - email: "test@example.com", - } - }, - }), - GitHub, - Google, - Keycloak, - Facebook, - Twitter, - LinkedIn, - ].filter(Boolean) as NextAuthConfig["providers"], - callbacks: { - jwt({ token, trigger, session }) { - if (trigger === "update") token.name = session.user.name - return token - }, - }, - basePath: "/auth", -} satisfies NextAuthConfig diff --git a/apps/dev/nextjs/auth.ts b/apps/dev/nextjs/auth.ts index 13c872fee2..0571764576 100644 --- a/apps/dev/nextjs/auth.ts +++ b/apps/dev/nextjs/auth.ts @@ -1,5 +1,8 @@ import NextAuth from "next-auth" -import authConfig from "auth.config" +import Credentials from "next-auth/providers/credentials" +import Keycloak from "next-auth/providers/keycloak" +import GitHub from "next-auth/providers/github" + // import { PrismaClient } from "@prisma/client" // import { PrismaAdapter } from "@auth/prisma-adapter" // import SendGrid from "next-auth/providers/sendgrid" @@ -33,8 +36,46 @@ import authConfig from "auth.config" // } // ) +declare module "next-auth" { + /** + * Returned by `useSession`, `getSession`, `auth` and received as a prop on the `SessionProvider` React Context + */ + interface Session { + user: { + /** The user's postal address. */ + address: string + } & User + } + + interface User { + foo?: string + } +} + export const { handlers, auth, signIn, signOut, unstable_update } = NextAuth({ - // adapter: PrismaAdapter(globalThis.prisma), + debug: true, + providers: [ + Credentials({ + credentials: { password: { label: "Password", type: "password" } }, + authorize(c) { + if (c.password !== "password") return null + return { + id: "test", + name: "Test User", + email: "test@example.com", + } + }, + }), + GitHub, + Keycloak, + ], + + callbacks: { + jwt({ token, trigger, session }) { + if (trigger === "update") token.name = session.user.name + return token + }, + }, + basePath: "/auth", session: { strategy: "jwt" }, - ...authConfig, }) diff --git a/apps/dev/nextjs/components/header.tsx b/apps/dev/nextjs/components/header.tsx index 0e8d2249f3..4a63013a30 100644 --- a/apps/dev/nextjs/components/header.tsx +++ b/apps/dev/nextjs/components/header.tsx @@ -17,7 +17,7 @@ export function Header({ diff --git a/apps/dev/nextjs/next-env.d.ts b/apps/dev/nextjs/next-env.d.ts index fd36f9494e..725dd6f245 100644 --- a/apps/dev/nextjs/next-env.d.ts +++ b/apps/dev/nextjs/next-env.d.ts @@ -3,4 +3,4 @@ /// // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/apps/dev/nextjs/package.json b/apps/dev/nextjs/package.json index a8dbf8f75e..361ceddbcb 100644 --- a/apps/dev/nextjs/package.json +++ b/apps/dev/nextjs/package.json @@ -1,29 +1,23 @@ { "name": "next-auth-app", - "version": "1.0.0", - "description": "Next.js + Auth.js Developer app", + "version": "1.0.1", + "description": "Next.js + Auth.js Developer App", "private": true, "scripts": { "clean": "rm -rf .next", "dev": "next dev", "build": "next build", - "start": "next start", - "e2e": "pnpm dlx playwright test" + "start": "next start" }, "license": "ISC", "dependencies": { - "@auth/prisma-adapter": "workspace:*", - "@prisma/client": "^5", - "next": "15.0.0-rc.0", + "next": "15.0.0-rc.1", "next-auth": "workspace:*", - "nodemailer": "^6.9.3", - "react": "19.0.0-rc-4c2e457c7c-20240522", - "react-dom": "19.0.0-rc-4c2e457c7c-20240522" + "react": "19.0.0-rc-4c58fce7-20240904", + "react-dom": "19.0.0-rc-4c58fce7-20240904" }, "devDependencies": { - "@libsql/client": "^0.6.0", "@types/react": "^18.2.23", - "@types/react-dom": "^18.2.8", - "prisma": "^5" + "@types/react-dom": "^18.2.8" } } diff --git a/apps/dev/qwik/src/routes/plugin@auth.ts b/apps/dev/qwik/src/routes/plugin@auth.ts index 15cc0ce362..c5a5d13639 100644 --- a/apps/dev/qwik/src/routes/plugin@auth.ts +++ b/apps/dev/qwik/src/routes/plugin@auth.ts @@ -1,6 +1,14 @@ -import { QwikAuth$ } from "@auth/qwik" +import { DefaultSession, QwikAuth$ } from "@auth/qwik" import GitHub from "@auth/qwik/providers/github" +declare module "@auth/qwik" { + interface Session { + user: { + roles: string[] + } & DefaultSession["user"] + } +} + export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( () => ({ providers: [GitHub], diff --git a/apps/dev/sveltekit/src/auth.ts b/apps/dev/sveltekit/src/auth.ts index 8682bc2f40..a22aeb19b2 100644 --- a/apps/dev/sveltekit/src/auth.ts +++ b/apps/dev/sveltekit/src/auth.ts @@ -28,7 +28,7 @@ export const { handle, signIn, signOut } = SvelteKitAuth({ return { name: "Fill Murray", email: "bill@fillmurray.com", - image: "https://source.boringavatars.com/marble/120", + image: `https://api.dicebear.com/9.x/thumbs/svg?seed=234173&randomizeIds=true`, id: "1", } }, diff --git a/apps/dev/sveltekit/src/components/header.svelte b/apps/dev/sveltekit/src/components/header.svelte index e3346eabbf..2ad2d285b1 100644 --- a/apps/dev/sveltekit/src/components/header.svelte +++ b/apps/dev/sveltekit/src/components/header.svelte @@ -9,7 +9,7 @@ Avatar diff --git a/apps/examples/express/pnpm-lock.yaml b/apps/examples/express/pnpm-lock.yaml deleted file mode 100644 index 6f8532c362..0000000000 --- a/apps/examples/express/pnpm-lock.yaml +++ /dev/null @@ -1,2119 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@auth/express': - specifier: latest - version: 0.5.4(express@4.19.2) - express: - specifier: ^4.19.2 - version: 4.19.2 - morgan: - specifier: ^1.10.0 - version: 1.10.0 - pug: - specifier: ^3.0.2 - version: 3.0.2 - tailwindcss: - specifier: ^3.4.3 - version: 3.4.3 - devDependencies: - '@types/express': - specifier: ^4.17.21 - version: 4.17.21 - '@types/morgan': - specifier: ^1.9.9 - version: 1.9.9 - '@types/node': - specifier: ^20.12.7 - version: 20.12.7 - '@types/pug': - specifier: ^2.0.10 - version: 2.0.10 - tsx: - specifier: ^4.7.0 - version: 4.7.3 - typescript: - specifier: 5.3.3 - version: 5.3.3 - -packages: - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@auth/core@0.30.0': - resolution: {integrity: sha512-8AE4m/nk+4EIiVCJwxZAsJeAQuzpEC8M8768mmKVn60CGDdupKQkVhxbRlm5Qh7eNRCoFFME+0DvtaX2aXrYaA==} - peerDependencies: - '@simplewebauthn/browser': ^9.0.1 - '@simplewebauthn/server': ^9.0.2 - nodemailer: ^6.8.0 - peerDependenciesMeta: - '@simplewebauthn/browser': - optional: true - '@simplewebauthn/server': - optional: true - nodemailer: - optional: true - - '@auth/express@0.5.4': - resolution: {integrity: sha512-8mULCeTQ5IhVKMWtfvgIxt7y92yh2j0KFolJ60sCtEHxM75MoWRs7GXBEg/QyxQcIeZyxcpfKPH7xcAeJwDh0Q==} - peerDependencies: - express: ^4.18.2 - - '@babel/helper-string-parser@7.24.1': - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.24.4': - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} - - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@panva/hkdf@1.1.1': - resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - - '@types/express-serve-static-core@4.19.0': - resolution: {integrity: sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/morgan@1.9.9': - resolution: {integrity: sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ==} - - '@types/node@20.12.7': - resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} - - '@types/pug@2.0.10': - resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - - '@types/qs@6.9.15': - resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - assert-never@1.2.1: - resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} - - babel-walk@3.0.0-canary-5: - resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} - engines: {node: '>= 10.0.0'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - character-parser@2.2.0: - resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - constantinople@4.0.1: - resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - doctypes@1.1.0: - resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} - engines: {node: '>= 0.10.0'} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-expression@4.0.0: - resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - - jose@5.2.4: - resolution: {integrity: sha512-6ScbIk2WWCeXkmzF6bRPmEuaqy1m8SbsRFMa/FLrSCkGIhj8OLVG/IH+XHVmNMx/KUo8cVWEE6oKR4dJ+S0Rkg==} - - js-stringify@1.0.2: - resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} - - jstransformer@1.0.0: - resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - - morgan@1.10.0: - resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} - engines: {node: '>= 0.8.0'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - oauth4webapi@2.10.4: - resolution: {integrity: sha512-DSoj8QoChzOCQlJkRmYxAJCIpnXFW32R0Uq7avyghIeB6iJq0XAblOD7pcq3mx4WEBDwMuKr0Y1qveCBleG2Xw==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} - - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - - preact-render-to-string@5.2.3: - resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} - peerDependencies: - preact: '>=10' - - preact@10.11.3: - resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} - - pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - - promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - pug-attrs@3.0.0: - resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} - - pug-code-gen@3.0.2: - resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} - - pug-error@2.0.0: - resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} - - pug-filters@4.0.0: - resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} - - pug-lexer@5.0.1: - resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} - - pug-linker@4.0.0: - resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} - - pug-load@3.0.0: - resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} - - pug-parser@6.0.0: - resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} - - pug-runtime@3.0.1: - resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} - - pug-strip-comments@2.0.0: - resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} - - pug-walk@2.0.0: - resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} - - pug@3.0.2: - resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} - - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - token-stream@1.0.0: - resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - tsx@4.7.3: - resolution: {integrity: sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ==} - engines: {node: '>=18.0.0'} - hasBin: true - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - with@7.0.2: - resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} - engines: {node: '>= 10.0.0'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} - engines: {node: '>= 14'} - hasBin: true - -snapshots: - - '@alloc/quick-lru@5.2.0': {} - - '@auth/core@0.30.0': - dependencies: - '@panva/hkdf': 1.1.1 - '@types/cookie': 0.6.0 - cookie: 0.6.0 - jose: 5.2.4 - oauth4webapi: 2.10.4 - preact: 10.11.3 - preact-render-to-string: 5.2.3(preact@10.11.3) - - '@auth/express@0.5.4(express@4.19.2)': - dependencies: - '@auth/core': 0.30.0 - express: 4.19.2 - transitivePeerDependencies: - - '@simplewebauthn/browser' - - '@simplewebauthn/server' - - nodemailer - - '@babel/helper-string-parser@7.24.1': {} - - '@babel/helper-validator-identifier@7.22.20': {} - - '@babel/parser@7.24.4': - dependencies: - '@babel/types': 7.24.0 - - '@babel/types@7.24.0': - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@esbuild/aix-ppc64@0.19.12': - optional: true - - '@esbuild/android-arm64@0.19.12': - optional: true - - '@esbuild/android-arm@0.19.12': - optional: true - - '@esbuild/android-x64@0.19.12': - optional: true - - '@esbuild/darwin-arm64@0.19.12': - optional: true - - '@esbuild/darwin-x64@0.19.12': - optional: true - - '@esbuild/freebsd-arm64@0.19.12': - optional: true - - '@esbuild/freebsd-x64@0.19.12': - optional: true - - '@esbuild/linux-arm64@0.19.12': - optional: true - - '@esbuild/linux-arm@0.19.12': - optional: true - - '@esbuild/linux-ia32@0.19.12': - optional: true - - '@esbuild/linux-loong64@0.19.12': - optional: true - - '@esbuild/linux-mips64el@0.19.12': - optional: true - - '@esbuild/linux-ppc64@0.19.12': - optional: true - - '@esbuild/linux-riscv64@0.19.12': - optional: true - - '@esbuild/linux-s390x@0.19.12': - optional: true - - '@esbuild/linux-x64@0.19.12': - optional: true - - '@esbuild/netbsd-x64@0.19.12': - optional: true - - '@esbuild/openbsd-x64@0.19.12': - optional: true - - '@esbuild/sunos-x64@0.19.12': - optional: true - - '@esbuild/win32-arm64@0.19.12': - optional: true - - '@esbuild/win32-ia32@0.19.12': - optional: true - - '@esbuild/win32-x64@0.19.12': - optional: true - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@panva/hkdf@1.1.1': {} - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@types/body-parser@1.19.5': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 20.12.7 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 20.12.7 - - '@types/cookie@0.6.0': {} - - '@types/express-serve-static-core@4.19.0': - dependencies: - '@types/node': 20.12.7 - '@types/qs': 6.9.15 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express@4.17.21': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.0 - '@types/qs': 6.9.15 - '@types/serve-static': 1.15.7 - - '@types/http-errors@2.0.4': {} - - '@types/mime@1.3.5': {} - - '@types/morgan@1.9.9': - dependencies: - '@types/node': 20.12.7 - - '@types/node@20.12.7': - dependencies: - undici-types: 5.26.5 - - '@types/pug@2.0.10': {} - - '@types/qs@6.9.15': {} - - '@types/range-parser@1.2.7': {} - - '@types/send@0.17.4': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 20.12.7 - - '@types/serve-static@1.15.7': - dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 20.12.7 - '@types/send': 0.17.4 - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - acorn@7.4.1: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - - array-flatten@1.1.1: {} - - asap@2.0.6: {} - - assert-never@1.2.1: {} - - babel-walk@3.0.0-canary-5: - dependencies: - '@babel/types': 7.24.0 - - balanced-match@1.0.2: {} - - basic-auth@2.0.1: - dependencies: - safe-buffer: 5.1.2 - - binary-extensions@2.3.0: {} - - body-parser@1.20.2: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - bytes@3.1.2: {} - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - camelcase-css@2.0.1: {} - - character-parser@2.2.0: - dependencies: - is-regex: 1.1.4 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@4.1.1: {} - - constantinople@4.0.1: - dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - - cookie-signature@1.0.6: {} - - cookie@0.6.0: {} - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - cssesc@3.0.0: {} - - debug@2.6.9: - dependencies: - ms: 2.0.0 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - depd@2.0.0: {} - - destroy@1.2.0: {} - - didyoumean@1.2.2: {} - - dlv@1.1.3: {} - - doctypes@1.1.0: {} - - eastasianwidth@0.2.0: {} - - ee-first@1.1.1: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - encodeurl@1.0.2: {} - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - - escape-html@1.0.3: {} - - etag@1.8.1: {} - - express@4.19.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.2 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.6.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - finalhandler@1.2.0: - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - forwarded@0.2.0: {} - - fresh@0.5.2: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - get-tsconfig@4.7.3: - dependencies: - resolve-pkg-maps: 1.0.0 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.3.12: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.2 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - inherits@2.0.4: {} - - ipaddr.js@1.9.1: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.2 - - is-expression@4.0.0: - dependencies: - acorn: 7.4.1 - object-assign: 4.1.1 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-promise@2.2.2: {} - - is-regex@1.1.4: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - isexe@2.0.0: {} - - jackspeak@2.3.6: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jiti@1.21.0: {} - - jose@5.2.4: {} - - js-stringify@1.0.2: {} - - jstransformer@1.0.0: - dependencies: - is-promise: 2.2.2 - promise: 7.3.1 - - lilconfig@2.1.0: {} - - lilconfig@3.1.1: {} - - lines-and-columns@1.2.4: {} - - lru-cache@10.2.0: {} - - media-typer@0.3.0: {} - - merge-descriptors@1.0.1: {} - - merge2@1.4.1: {} - - methods@1.1.2: {} - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime@1.6.0: {} - - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 - - minipass@7.0.4: {} - - morgan@1.10.0: - dependencies: - basic-auth: 2.0.1 - debug: 2.6.9 - depd: 2.0.0 - on-finished: 2.3.0 - on-headers: 1.0.2 - transitivePeerDependencies: - - supports-color - - ms@2.0.0: {} - - ms@2.1.3: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.7: {} - - negotiator@0.6.3: {} - - normalize-path@3.0.0: {} - - oauth4webapi@2.10.4: {} - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - object-inspect@1.13.1: {} - - on-finished@2.3.0: - dependencies: - ee-first: 1.1.1 - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - on-headers@1.0.2: {} - - parseurl@1.3.3: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@1.10.2: - dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - - path-to-regexp@0.1.7: {} - - picocolors@1.0.0: {} - - picomatch@2.3.1: {} - - pify@2.3.0: {} - - pirates@4.0.6: {} - - postcss-import@15.1.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.38): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.38 - - postcss-load-config@4.0.2(postcss@8.4.38): - dependencies: - lilconfig: 3.1.1 - postcss: 8.4.38 - yaml: 2.4.1 - - postcss-nested@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 - - postcss-selector-parser@6.0.16: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - - preact-render-to-string@5.2.3(preact@10.11.3): - dependencies: - preact: 10.11.3 - pretty-format: 3.8.0 - - preact@10.11.3: {} - - pretty-format@3.8.0: {} - - promise@7.3.1: - dependencies: - asap: 2.0.6 - - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - pug-attrs@3.0.0: - dependencies: - constantinople: 4.0.1 - js-stringify: 1.0.2 - pug-runtime: 3.0.1 - - pug-code-gen@3.0.2: - dependencies: - constantinople: 4.0.1 - doctypes: 1.1.0 - js-stringify: 1.0.2 - pug-attrs: 3.0.0 - pug-error: 2.0.0 - pug-runtime: 3.0.1 - void-elements: 3.1.0 - with: 7.0.2 - - pug-error@2.0.0: {} - - pug-filters@4.0.0: - dependencies: - constantinople: 4.0.1 - jstransformer: 1.0.0 - pug-error: 2.0.0 - pug-walk: 2.0.0 - resolve: 1.22.8 - - pug-lexer@5.0.1: - dependencies: - character-parser: 2.2.0 - is-expression: 4.0.0 - pug-error: 2.0.0 - - pug-linker@4.0.0: - dependencies: - pug-error: 2.0.0 - pug-walk: 2.0.0 - - pug-load@3.0.0: - dependencies: - object-assign: 4.1.1 - pug-walk: 2.0.0 - - pug-parser@6.0.0: - dependencies: - pug-error: 2.0.0 - token-stream: 1.0.0 - - pug-runtime@3.0.1: {} - - pug-strip-comments@2.0.0: - dependencies: - pug-error: 2.0.0 - - pug-walk@2.0.0: {} - - pug@3.0.2: - dependencies: - pug-code-gen: 3.0.2 - pug-filters: 4.0.0 - pug-lexer: 5.0.1 - pug-linker: 4.0.0 - pug-load: 3.0.0 - pug-parser: 6.0.0 - pug-runtime: 3.0.1 - pug-strip-comments: 2.0.0 - - qs@6.11.0: - dependencies: - side-channel: 1.0.6 - - queue-microtask@1.2.3: {} - - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - resolve-pkg-maps@1.0.0: {} - - resolve@1.22.8: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - reusify@1.0.4: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safer-buffer@2.1.2: {} - - send@0.18.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - serve-static@1.15.0: - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - setprototypeof@1.2.0: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - side-channel@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - - signal-exit@4.1.0: {} - - source-map-js@1.2.0: {} - - statuses@2.0.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.3.12 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-preserve-symlinks-flag@1.0.0: {} - - tailwindcss@3.4.3: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.16 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - to-fast-properties@2.0.0: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - toidentifier@1.0.1: {} - - token-stream@1.0.0: {} - - ts-interface-checker@0.1.13: {} - - tsx@4.7.3: - dependencies: - esbuild: 0.19.12 - get-tsconfig: 4.7.3 - optionalDependencies: - fsevents: 2.3.3 - - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - - typescript@5.3.3: {} - - undici-types@5.26.5: {} - - unpipe@1.0.0: {} - - util-deprecate@1.0.2: {} - - utils-merge@1.0.1: {} - - vary@1.1.2: {} - - void-elements@3.1.0: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - with@7.0.2: - dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - assert-never: 1.2.1 - babel-walk: 3.0.0-canary-5 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - yaml@2.4.1: {} diff --git a/apps/examples/nextjs/app/[...proxy]/route.tsx b/apps/examples/nextjs/app/[...proxy]/route.tsx index 26f1449ae0..bd16f70e35 100644 --- a/apps/examples/nextjs/app/[...proxy]/route.tsx +++ b/apps/examples/nextjs/app/[...proxy]/route.tsx @@ -21,7 +21,7 @@ async function handler(request: NextRequest) { let backendUrl = process.env.THIRD_PARTY_API_EXAMPLE_BACKEND ?? - "https://authjs-third-party-backend.authjs.dev" + "https://third-party-backend.authjs.dev" let url = request.nextUrl.href.replace(request.nextUrl.origin, backendUrl) let result = await fetch(url, { headers, body: request.body }) diff --git a/apps/examples/nextjs/auth.ts b/apps/examples/nextjs/auth.ts index cdf64d97ce..fa7c049ea3 100644 --- a/apps/examples/nextjs/auth.ts +++ b/apps/examples/nextjs/auth.ts @@ -2,6 +2,7 @@ import NextAuth from "next-auth" import "next-auth/jwt" import Apple from "next-auth/providers/apple" +// import Atlassian from "next-auth/providers/atlassian" import Auth0 from "next-auth/providers/auth0" import AzureB2C from "next-auth/providers/azure-ad-b2c" import BankIDNorway from "next-auth/providers/bankid-no" @@ -17,6 +18,7 @@ import Google from "next-auth/providers/google" import Hubspot from "next-auth/providers/hubspot" import Keycloak from "next-auth/providers/keycloak" import LinkedIn from "next-auth/providers/linkedin" +import MicrosoftEntraId from "next-auth/providers/microsoft-entra-id" import Netlify from "next-auth/providers/netlify" import Okta from "next-auth/providers/okta" import Passage from "next-auth/providers/passage" @@ -24,16 +26,17 @@ import Passkey from "next-auth/providers/passkey" import Pinterest from "next-auth/providers/pinterest" import Reddit from "next-auth/providers/reddit" import Slack from "next-auth/providers/slack" +import Salesforce from "next-auth/providers/salesforce" import Spotify from "next-auth/providers/spotify" import Twitch from "next-auth/providers/twitch" import Twitter from "next-auth/providers/twitter" +import Vipps from "next-auth/providers/vipps" import WorkOS from "next-auth/providers/workos" import Zoom from "next-auth/providers/zoom" import { createStorage } from "unstorage" import memoryDriver from "unstorage/drivers/memory" import vercelKVDriver from "unstorage/drivers/vercel-kv" import { UnstorageAdapter } from "@auth/unstorage-adapter" -import type { NextAuthConfig } from "next-auth" const storage = createStorage({ driver: process.env.VERCEL @@ -45,17 +48,15 @@ const storage = createStorage({ : memoryDriver(), }) -const config = { +export const { handlers, auth, signIn, signOut } = NextAuth({ + debug: !!process.env.AUTH_DEBUG, theme: { logo: "https://authjs.dev/img/logo-sm.png" }, adapter: UnstorageAdapter(storage), providers: [ Apple, + // Atlassian, Auth0, - AzureB2C({ - clientId: process.env.AUTH_AZURE_AD_B2C_ID, - clientSecret: process.env.AUTH_AZURE_AD_B2C_SECRET, - issuer: process.env.AUTH_AZURE_AD_B2C_ISSUER, - }), + AzureB2C, BankIDNorway, BoxyHQSAML({ clientId: "dummy", @@ -73,6 +74,7 @@ const config = { Hubspot, Keycloak({ name: "Keycloak (bob/bob)" }), LinkedIn, + MicrosoftEntraId, Netlify, Okta, Passkey({ @@ -87,16 +89,19 @@ const config = { Passage, Pinterest, Reddit, + Salesforce, Slack, Spotify, Twitch, Twitter, - WorkOS({ - connection: process.env.AUTH_WORKOS_CONNECTION!, + Vipps({ + issuer: "https://apitest.vipps.no/access-management-1.0/access/", }), + WorkOS({ connection: process.env.AUTH_WORKOS_CONNECTION! }), Zoom, ], basePath: "/auth", + session: { strategy: "jwt" }, callbacks: { authorized({ request, auth }) { const { pathname } = request.nextUrl @@ -111,19 +116,13 @@ const config = { return token }, async session({ session, token }) { - if (token?.accessToken) { - session.accessToken = token.accessToken - } + if (token?.accessToken) session.accessToken = token.accessToken + return session }, }, - experimental: { - enableWebAuthn: true, - }, - debug: process.env.NODE_ENV !== "production" ? true : false, -} satisfies NextAuthConfig - -export const { handlers, auth, signIn, signOut } = NextAuth(config) + experimental: { enableWebAuthn: true }, +}) declare module "next-auth" { interface Session { diff --git a/apps/examples/nextjs/components/client-example.tsx b/apps/examples/nextjs/components/client-example.tsx index 7513472072..13ec5681fa 100644 --- a/apps/examples/nextjs/components/client-example.tsx +++ b/apps/examples/nextjs/components/client-example.tsx @@ -9,7 +9,7 @@ import CustomLink from "./custom-link" const UpdateForm = () => { const { data: session, update } = useSession() - const [name, setName] = useState(`New ${session?.user?.name}` ?? "") + const [name, setName] = useState(`New ${session?.user?.name}`) if (!session?.user) return null return ( diff --git a/apps/examples/nextjs/components/user-button.tsx b/apps/examples/nextjs/components/user-button.tsx index 8393f3e95c..591761bd2a 100644 --- a/apps/examples/nextjs/components/user-button.tsx +++ b/apps/examples/nextjs/components/user-button.tsx @@ -25,7 +25,7 @@ export default async function UserButton() { diff --git a/apps/examples/nextjs/pnpm-lock.yaml b/apps/examples/nextjs/pnpm-lock.yaml deleted file mode 100644 index 95dfa66d50..0000000000 --- a/apps/examples/nextjs/pnpm-lock.yaml +++ /dev/null @@ -1,2948 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@auth/unstorage-adapter': - specifier: ^2.0.0 - version: 2.0.0(@simplewebauthn/server@9.0.3)(unstorage@1.10.2(@upstash/redis@1.25.1)(@vercel/kv@1.0.1)) - '@radix-ui/react-avatar': - specifier: ^1.0.3 - version: 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-collapsible': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-dropdown-menu': - specifier: ^2.0.5 - version: 2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-navigation-menu': - specifier: ^1.1.3 - version: 1.1.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.74)(react@18.2.0) - '@simplewebauthn/server': - specifier: ^9.0.3 - version: 9.0.3 - '@vercel/kv': - specifier: ^1.0.1 - version: 1.0.1 - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.0.0 - version: 2.1.0 - lucide-react: - specifier: ^0.274.0 - version: 0.274.0(react@18.2.0) - next: - specifier: latest - version: 14.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - next-auth: - specifier: beta - version: 5.0.0-beta.17(@simplewebauthn/server@9.0.3)(next@14.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - tailwind-merge: - specifier: ^1.14.0 - version: 1.14.0 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.3) - unstorage: - specifier: ^1.10.1 - version: 1.10.2(@upstash/redis@1.25.1)(@vercel/kv@1.0.1) - devDependencies: - '@types/node': - specifier: ^20.12.8 - version: 20.12.8 - '@types/react': - specifier: ^18.2.23 - version: 18.2.74 - '@types/react-dom': - specifier: ^18.2.8 - version: 18.2.24 - autoprefixer: - specifier: ^10.4.15 - version: 10.4.19(postcss@8.4.38) - postcss: - specifier: ^8.4.29 - version: 8.4.38 - tailwindcss: - specifier: ^3.3.3 - version: 3.4.3 - typescript: - specifier: ^5.2.2 - version: 5.4.4 - -packages: - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@auth/core@0.30.0': - resolution: {integrity: sha512-8AE4m/nk+4EIiVCJwxZAsJeAQuzpEC8M8768mmKVn60CGDdupKQkVhxbRlm5Qh7eNRCoFFME+0DvtaX2aXrYaA==} - peerDependencies: - '@simplewebauthn/browser': ^9.0.1 - '@simplewebauthn/server': ^9.0.2 - nodemailer: ^6.8.0 - peerDependenciesMeta: - '@simplewebauthn/browser': - optional: true - '@simplewebauthn/server': - optional: true - nodemailer: - optional: true - - '@auth/unstorage-adapter@2.0.0': - resolution: {integrity: sha512-zFCRk26qpi9hj71y7h8wKM9czdlQKtbvOaVY4c4Y45Ig2phVGaaL7mdKpOGSDGsieww5rvjKJBhgzg6wQ58VXg==} - peerDependencies: - unstorage: ^1.10.1 - - '@babel/runtime@7.24.4': - resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} - engines: {node: '>=6.9.0'} - - '@floating-ui/core@1.6.0': - resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} - - '@floating-ui/dom@1.6.3': - resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} - - '@floating-ui/react-dom@2.0.8': - resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.1': - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} - - '@hexagon/base64@1.1.28': - resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@levischuck/tiny-cbor@0.2.2': - resolution: {integrity: sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==} - - '@next/env@14.1.4': - resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} - - '@next/swc-darwin-arm64@14.1.4': - resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-x64@14.1.4': - resolution: {integrity: sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@next/swc-linux-arm64-gnu@14.1.4': - resolution: {integrity: sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-arm64-musl@14.1.4': - resolution: {integrity: sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-x64-gnu@14.1.4': - resolution: {integrity: sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-linux-x64-musl@14.1.4': - resolution: {integrity: sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-win32-arm64-msvc@14.1.4': - resolution: {integrity: sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-ia32-msvc@14.1.4': - resolution: {integrity: sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.1.4': - resolution: {integrity: sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@panva/hkdf@1.1.1': - resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} - - '@parcel/watcher-android-arm64@2.4.1': - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.4.1': - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.4.1': - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.4.1': - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.4.1': - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm64-glibc@2.4.1': - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-arm64-musl@2.4.1': - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-x64-glibc@2.4.1': - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-linux-x64-musl@2.4.1': - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-wasm@2.4.1': - resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm - - '@parcel/watcher-win32-arm64@2.4.1': - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.4.1': - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.4.1': - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.4.1': - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} - engines: {node: '>= 10.0.0'} - - '@peculiar/asn1-android@2.3.10': - resolution: {integrity: sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==} - - '@peculiar/asn1-ecc@2.3.8': - resolution: {integrity: sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==} - - '@peculiar/asn1-rsa@2.3.8': - resolution: {integrity: sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==} - - '@peculiar/asn1-schema@2.3.8': - resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} - - '@peculiar/asn1-x509@2.3.8': - resolution: {integrity: sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - - '@radix-ui/react-arrow@1.0.3': - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-avatar@1.0.4': - resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-collapsible@1.0.3': - resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-collection@1.0.3': - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-direction@1.0.1': - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-dropdown-menu@2.0.6': - resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.0.4': - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-menu@2.0.6': - resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-navigation-menu@1.1.4': - resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-popper@1.1.3': - resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-portal@1.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-roving-focus@1.0.4': - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-previous@1.0.1': - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/rect@1.0.1': - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} - - '@simplewebauthn/server@9.0.3': - resolution: {integrity: sha512-FMZieoBosrVLFxCnxPFD9Enhd1U7D8nidVDT4MsHc6l4fdVcjoeHjDueeXCloO1k5O/fZg1fsSXXPKbY2XTzDA==} - engines: {node: '>=16.0.0'} - - '@simplewebauthn/types@9.0.1': - resolution: {integrity: sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==} - - '@swc/helpers@0.5.2': - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - - '@types/node@20.12.8': - resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==} - - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - - '@types/react-dom@18.2.24': - resolution: {integrity: sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg==} - - '@types/react@18.2.74': - resolution: {integrity: sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==} - - '@upstash/redis@1.25.1': - resolution: {integrity: sha512-ACj0GhJ4qrQyBshwFgPod6XufVEfKX2wcaihsEvSdLYnY+m+pa13kGt1RXm/yTHKf4TQi/Dy2A8z/y6WUEOmlg==} - - '@vercel/kv@1.0.1': - resolution: {integrity: sha512-uTKddsqVYS2GRAM/QMNNXCTuw9N742mLoGRXoNDcyECaxEXvIHG0dEY+ZnYISV4Vz534VwJO+64fd9XeSggSKw==} - engines: {node: '>=14.6'} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} - - asn1js@3.0.5: - resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} - engines: {node: '>=12.0.0'} - - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - caniuse-lite@1.0.30001606: - resolution: {integrity: sha512-LPbwnW4vfpJId225pwjZJOgX1m9sGfbw/RKJvw/t0QhYOOaTXHvkjVGFGPpvwEzufrjvTlsULnVTxdy4/6cqkg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - - clipboardy@4.0.0: - resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} - engines: {node: '>=18'} - - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - - clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - - cookie-es@1.1.0: - resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - crossws@0.2.4: - resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true - - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - electron-to-chromium@1.4.729: - resolution: {integrity: sha512-bx7+5Saea/qu14kmPTDHQxkp2UnziG3iajUQu3BxFvCOnpAJdDbMV4rSl+EqFDkkpNNVUFlR1kDfpL59xfy1HA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - h3@1.11.1: - resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - http-shutdown@1.2.2: - resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - - iron-webcrypto@1.1.1: - resolution: {integrity: sha512-5xGwQUWHQSy039rFr+5q/zOmj7GP0Ypzvo34Ep+61bPIhaLduEDp/PvLGlU3awD2mzWUR0weN2vJ1mILydFPEg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - - is64bit@2.0.0: - resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} - engines: {node: '>=18'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - - jose@5.2.3: - resolution: {integrity: sha512-KUXdbctm1uHVL8BYhnyHkgp3zDX5KW8ZhAKVFEfUbU2P8Alpzjb+48hHvjOdQIyPshoblhzsuqOwEEAbtHVirA==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - listhen@1.7.2: - resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} - hasBin: true - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - - lucide-react@0.274.0: - resolution: {integrity: sha512-qiWcojRXEwDiSimMX1+arnxha+ROJzZjJaVvCC0rsG6a9pUPjZePXSq7em4ZKMp0NDm1hyzPNkM7UaWC3LU2AA==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - - mlly@1.7.0: - resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - next-auth@5.0.0-beta.17: - resolution: {integrity: sha512-XA/7JtAjOgDfAeotJPFUsFZGGItZwzZrxLt9Gc9fE7EchLk6zydZfuZ22Vvwixs3IilkN644D5IoD5tEOAFGCQ==} - peerDependencies: - '@simplewebauthn/browser': ^9.0.1 - '@simplewebauthn/server': ^9.0.2 - next: ^14 - nodemailer: ^6.6.5 - react: ^18.2.0 - peerDependenciesMeta: - '@simplewebauthn/browser': - optional: true - '@simplewebauthn/server': - optional: true - nodemailer: - optional: true - - next@14.1.4: - resolution: {integrity: sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - sass: - optional: true - - node-addon-api@7.1.0: - resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} - engines: {node: ^16 || ^18 || >= 20} - - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - oauth4webapi@2.10.4: - resolution: {integrity: sha512-DSoj8QoChzOCQlJkRmYxAJCIpnXFW32R0Uq7avyghIeB6iJq0XAblOD7pcq3mx4WEBDwMuKr0Y1qveCBleG2Xw==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - ofetch@1.3.4: - resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} - - ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-types@1.1.0: - resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - - preact-render-to-string@5.2.3: - resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} - peerDependencies: - preact: '>=10' - - preact@10.11.3: - resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} - - pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - - pvtsutils@1.3.5: - resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==} - - pvutils@1.1.3: - resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} - engines: {node: '>=6.0.0'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - - react-remove-scroll-bar@2.3.6: - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - system-architecture@0.1.0: - resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} - engines: {node: '>=18'} - - tailwind-merge@1.14.0: - resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} - - tailwindcss-animate@1.0.7: - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - typescript@5.4.4: - resolution: {integrity: sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - - uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unenv@1.9.0: - resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} - - unstorage@1.10.2: - resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} - peerDependencies: - '@azure/app-configuration': ^1.5.0 - '@azure/cosmos': ^4.0.0 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.0.1 - '@azure/keyvault-secrets': ^4.8.0 - '@azure/storage-blob': ^12.17.0 - '@capacitor/preferences': ^5.0.7 - '@netlify/blobs': ^6.5.0 || ^7.0.0 - '@planetscale/database': ^1.16.0 - '@upstash/redis': ^1.28.4 - '@vercel/kv': ^1.0.1 - idb-keyval: ^6.2.1 - ioredis: ^5.3.2 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - ioredis: - optional: true - - untun@0.1.3: - resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} - hasBin: true - - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uqr@0.1.2: - resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - - use-callback-ref@1.3.2: - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} - engines: {node: '>= 14'} - hasBin: true - -snapshots: - - '@alloc/quick-lru@5.2.0': {} - - '@auth/core@0.30.0(@simplewebauthn/server@9.0.3)': - dependencies: - '@panva/hkdf': 1.1.1 - '@types/cookie': 0.6.0 - cookie: 0.6.0 - jose: 5.2.3 - oauth4webapi: 2.10.4 - preact: 10.11.3 - preact-render-to-string: 5.2.3(preact@10.11.3) - optionalDependencies: - '@simplewebauthn/server': 9.0.3 - - '@auth/unstorage-adapter@2.0.0(@simplewebauthn/server@9.0.3)(unstorage@1.10.2(@upstash/redis@1.25.1)(@vercel/kv@1.0.1))': - dependencies: - '@auth/core': 0.30.0(@simplewebauthn/server@9.0.3) - unstorage: 1.10.2(@upstash/redis@1.25.1)(@vercel/kv@1.0.1) - transitivePeerDependencies: - - '@simplewebauthn/browser' - - '@simplewebauthn/server' - - nodemailer - - '@babel/runtime@7.24.4': - dependencies: - regenerator-runtime: 0.14.1 - - '@floating-ui/core@1.6.0': - dependencies: - '@floating-ui/utils': 0.2.1 - - '@floating-ui/dom@1.6.3': - dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 - - '@floating-ui/react-dom@2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@floating-ui/dom': 1.6.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@floating-ui/utils@0.2.1': {} - - '@hexagon/base64@1.1.28': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@levischuck/tiny-cbor@0.2.2': {} - - '@next/env@14.1.4': {} - - '@next/swc-darwin-arm64@14.1.4': - optional: true - - '@next/swc-darwin-x64@14.1.4': - optional: true - - '@next/swc-linux-arm64-gnu@14.1.4': - optional: true - - '@next/swc-linux-arm64-musl@14.1.4': - optional: true - - '@next/swc-linux-x64-gnu@14.1.4': - optional: true - - '@next/swc-linux-x64-musl@14.1.4': - optional: true - - '@next/swc-win32-arm64-msvc@14.1.4': - optional: true - - '@next/swc-win32-ia32-msvc@14.1.4': - optional: true - - '@next/swc-win32-x64-msvc@14.1.4': - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@panva/hkdf@1.1.1': {} - - '@parcel/watcher-android-arm64@2.4.1': - optional: true - - '@parcel/watcher-darwin-arm64@2.4.1': - optional: true - - '@parcel/watcher-darwin-x64@2.4.1': - optional: true - - '@parcel/watcher-freebsd-x64@2.4.1': - optional: true - - '@parcel/watcher-linux-arm-glibc@2.4.1': - optional: true - - '@parcel/watcher-linux-arm64-glibc@2.4.1': - optional: true - - '@parcel/watcher-linux-arm64-musl@2.4.1': - optional: true - - '@parcel/watcher-linux-x64-glibc@2.4.1': - optional: true - - '@parcel/watcher-linux-x64-musl@2.4.1': - optional: true - - '@parcel/watcher-wasm@2.4.1': - dependencies: - is-glob: 4.0.3 - micromatch: 4.0.5 - - '@parcel/watcher-win32-arm64@2.4.1': - optional: true - - '@parcel/watcher-win32-ia32@2.4.1': - optional: true - - '@parcel/watcher-win32-x64@2.4.1': - optional: true - - '@parcel/watcher@2.4.1': - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.5 - node-addon-api: 7.1.0 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.1 - '@parcel/watcher-darwin-arm64': 2.4.1 - '@parcel/watcher-darwin-x64': 2.4.1 - '@parcel/watcher-freebsd-x64': 2.4.1 - '@parcel/watcher-linux-arm-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-musl': 2.4.1 - '@parcel/watcher-linux-x64-glibc': 2.4.1 - '@parcel/watcher-linux-x64-musl': 2.4.1 - '@parcel/watcher-win32-arm64': 2.4.1 - '@parcel/watcher-win32-ia32': 2.4.1 - '@parcel/watcher-win32-x64': 2.4.1 - - '@peculiar/asn1-android@2.3.10': - dependencies: - '@peculiar/asn1-schema': 2.3.8 - asn1js: 3.0.5 - tslib: 2.6.2 - - '@peculiar/asn1-ecc@2.3.8': - dependencies: - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/asn1-x509': 2.3.8 - asn1js: 3.0.5 - tslib: 2.6.2 - - '@peculiar/asn1-rsa@2.3.8': - dependencies: - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/asn1-x509': 2.3.8 - asn1js: 3.0.5 - tslib: 2.6.2 - - '@peculiar/asn1-schema@2.3.8': - dependencies: - asn1js: 3.0.5 - pvtsutils: 1.3.5 - tslib: 2.6.2 - - '@peculiar/asn1-x509@2.3.8': - dependencies: - '@peculiar/asn1-schema': 2.3.8 - asn1js: 3.0.5 - ipaddr.js: 2.2.0 - pvtsutils: 1.3.5 - tslib: 2.6.2 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.24.4 - - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-context@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-direction@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-id@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) - aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.74)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/react-slot@1.0.2(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-use-size@1.0.1(@types/react@18.2.74)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.74)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.74 - - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - '@types/react-dom': 18.2.24 - - '@radix-ui/rect@1.0.1': - dependencies: - '@babel/runtime': 7.24.4 - - '@simplewebauthn/server@9.0.3': - dependencies: - '@hexagon/base64': 1.1.28 - '@levischuck/tiny-cbor': 0.2.2 - '@peculiar/asn1-android': 2.3.10 - '@peculiar/asn1-ecc': 2.3.8 - '@peculiar/asn1-rsa': 2.3.8 - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/asn1-x509': 2.3.8 - '@simplewebauthn/types': 9.0.1 - cross-fetch: 4.0.0 - transitivePeerDependencies: - - encoding - - '@simplewebauthn/types@9.0.1': {} - - '@swc/helpers@0.5.2': - dependencies: - tslib: 2.6.2 - - '@types/cookie@0.6.0': {} - - '@types/node@20.12.8': - dependencies: - undici-types: 5.26.5 - - '@types/prop-types@15.7.12': {} - - '@types/react-dom@18.2.24': - dependencies: - '@types/react': 18.2.74 - - '@types/react@18.2.74': - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 - - '@upstash/redis@1.25.1': - dependencies: - crypto-js: 4.2.0 - - '@vercel/kv@1.0.1': - dependencies: - '@upstash/redis': 1.25.1 - - acorn@8.11.3: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - - aria-hidden@1.2.4: - dependencies: - tslib: 2.6.2 - - asn1js@3.0.5: - dependencies: - pvtsutils: 1.3.5 - pvutils: 1.1.3 - tslib: 2.6.2 - - autoprefixer@10.4.19(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001606 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - balanced-match@1.0.2: {} - - binary-extensions@2.3.0: {} - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001606 - electron-to-chromium: 1.4.729 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - - camelcase-css@2.0.1: {} - - caniuse-lite@1.0.30001606: {} - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - citty@0.1.6: - dependencies: - consola: 3.2.3 - - class-variance-authority@0.7.0: - dependencies: - clsx: 2.0.0 - - client-only@0.0.1: {} - - clipboardy@4.0.0: - dependencies: - execa: 8.0.1 - is-wsl: 3.1.0 - is64bit: 2.0.0 - - clsx@2.0.0: {} - - clsx@2.1.0: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@4.1.1: {} - - confbox@0.1.7: {} - - consola@3.2.3: {} - - cookie-es@1.1.0: {} - - cookie@0.6.0: {} - - cross-fetch@4.0.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crossws@0.2.4: {} - - crypto-js@4.2.0: {} - - cssesc@3.0.0: {} - - csstype@3.1.3: {} - - defu@6.1.4: {} - - destr@2.0.3: {} - - detect-libc@1.0.3: {} - - detect-node-es@1.1.0: {} - - didyoumean@1.2.2: {} - - dlv@1.1.3: {} - - eastasianwidth@0.2.0: {} - - electron-to-chromium@1.4.729: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - escalade@3.1.2: {} - - execa@8.0.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - fraction.js@4.3.7: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-nonce@1.0.1: {} - - get-port-please@3.1.2: {} - - get-stream@8.0.1: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.3.12: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.2 - - graceful-fs@4.2.11: {} - - h3@1.11.1: - dependencies: - cookie-es: 1.1.0 - crossws: 0.2.4 - defu: 6.1.4 - destr: 2.0.3 - iron-webcrypto: 1.1.1 - ohash: 1.1.3 - radix3: 1.1.2 - ufo: 1.5.3 - uncrypto: 0.1.3 - unenv: 1.9.0 - transitivePeerDependencies: - - uWebSockets.js - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - http-shutdown@1.2.2: {} - - human-signals@5.0.0: {} - - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - - ipaddr.js@2.2.0: {} - - iron-webcrypto@1.1.1: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.2 - - is-docker@3.0.0: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - - is-number@7.0.0: {} - - is-stream@3.0.0: {} - - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - - is64bit@2.0.0: - dependencies: - system-architecture: 0.1.0 - - isexe@2.0.0: {} - - jackspeak@2.3.6: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jiti@1.21.0: {} - - jose@5.2.3: {} - - js-tokens@4.0.0: {} - - lilconfig@2.1.0: {} - - lilconfig@3.1.1: {} - - lines-and-columns@1.2.4: {} - - listhen@1.7.2: - dependencies: - '@parcel/watcher': 2.4.1 - '@parcel/watcher-wasm': 2.4.1 - citty: 0.1.6 - clipboardy: 4.0.0 - consola: 3.2.3 - crossws: 0.2.4 - defu: 6.1.4 - get-port-please: 3.1.2 - h3: 1.11.1 - http-shutdown: 1.2.2 - jiti: 1.21.0 - mlly: 1.7.0 - node-forge: 1.3.1 - pathe: 1.1.2 - std-env: 3.7.0 - ufo: 1.5.3 - untun: 0.1.3 - uqr: 0.1.2 - transitivePeerDependencies: - - uWebSockets.js - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lru-cache@10.2.0: {} - - lucide-react@0.274.0(react@18.2.0): - dependencies: - react: 18.2.0 - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - mime@3.0.0: {} - - mimic-fn@4.0.0: {} - - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 - - minipass@7.0.4: {} - - mlly@1.7.0: - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.1.0 - ufo: 1.5.3 - - mri@1.2.0: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.7: {} - - next-auth@5.0.0-beta.17(@simplewebauthn/server@9.0.3)(next@14.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): - dependencies: - '@auth/core': 0.30.0(@simplewebauthn/server@9.0.3) - next: 14.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@simplewebauthn/server': 9.0.3 - - next@14.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@next/env': 14.1.4 - '@swc/helpers': 0.5.2 - busboy: 1.6.0 - caniuse-lite: 1.0.30001606 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) - optionalDependencies: - '@next/swc-darwin-arm64': 14.1.4 - '@next/swc-darwin-x64': 14.1.4 - '@next/swc-linux-arm64-gnu': 14.1.4 - '@next/swc-linux-arm64-musl': 14.1.4 - '@next/swc-linux-x64-gnu': 14.1.4 - '@next/swc-linux-x64-musl': 14.1.4 - '@next/swc-win32-arm64-msvc': 14.1.4 - '@next/swc-win32-ia32-msvc': 14.1.4 - '@next/swc-win32-x64-msvc': 14.1.4 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - - node-addon-api@7.1.0: {} - - node-fetch-native@1.6.4: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-forge@1.3.1: {} - - node-releases@2.0.14: {} - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - oauth4webapi@2.10.4: {} - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - ofetch@1.3.4: - dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.4 - ufo: 1.5.3 - - ohash@1.1.3: {} - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-parse@1.0.7: {} - - path-scurry@1.10.2: - dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - - pathe@1.1.2: {} - - picocolors@1.0.0: {} - - picomatch@2.3.1: {} - - pify@2.3.0: {} - - pirates@4.0.6: {} - - pkg-types@1.1.0: - dependencies: - confbox: 0.1.7 - mlly: 1.7.0 - pathe: 1.1.2 - - postcss-import@15.1.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.38): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.38 - - postcss-load-config@4.0.2(postcss@8.4.38): - dependencies: - lilconfig: 3.1.1 - yaml: 2.4.1 - optionalDependencies: - postcss: 8.4.38 - - postcss-nested@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 - - postcss-selector-parser@6.0.16: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.31: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - - preact-render-to-string@5.2.3(preact@10.11.3): - dependencies: - preact: 10.11.3 - pretty-format: 3.8.0 - - preact@10.11.3: {} - - pretty-format@3.8.0: {} - - pvtsutils@1.3.5: - dependencies: - tslib: 2.6.2 - - pvutils@1.1.3: {} - - queue-microtask@1.2.3: {} - - radix3@1.1.2: {} - - react-dom@18.2.0(react@18.2.0): - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - - react-remove-scroll-bar@2.3.6(@types/react@18.2.74)(react@18.2.0): - dependencies: - react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.74)(react@18.2.0) - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.74 - - react-remove-scroll@2.5.5(@types/react@18.2.74)(react@18.2.0): - dependencies: - react: 18.2.0 - react-remove-scroll-bar: 2.3.6(@types/react@18.2.74)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.74)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.2.74)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.74)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.74 - - react-style-singleton@2.2.1(@types/react@18.2.74)(react@18.2.0): - dependencies: - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.74 - - react@18.2.0: - dependencies: - loose-envify: 1.4.0 - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - resolve@1.22.8: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - reusify@1.0.4: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - scheduler@0.23.0: - dependencies: - loose-envify: 1.4.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - source-map-js@1.2.0: {} - - std-env@3.7.0: {} - - streamsearch@1.1.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - strip-final-newline@3.0.0: {} - - styled-jsx@5.1.1(react@18.2.0): - dependencies: - client-only: 0.0.1 - react: 18.2.0 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.3.12 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-preserve-symlinks-flag@1.0.0: {} - - system-architecture@0.1.0: {} - - tailwind-merge@1.14.0: {} - - tailwindcss-animate@1.0.7(tailwindcss@3.4.3): - dependencies: - tailwindcss: 3.4.3 - - tailwindcss@3.4.3: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.16 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-interface-checker@0.1.13: {} - - tslib@2.6.2: {} - - typescript@5.4.4: {} - - ufo@1.5.3: {} - - uncrypto@0.1.3: {} - - undici-types@5.26.5: {} - - unenv@1.9.0: - dependencies: - consola: 3.2.3 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.4 - pathe: 1.1.2 - - unstorage@1.10.2(@upstash/redis@1.25.1)(@vercel/kv@1.0.1): - dependencies: - anymatch: 3.1.3 - chokidar: 3.6.0 - destr: 2.0.3 - h3: 1.11.1 - listhen: 1.7.2 - lru-cache: 10.2.0 - mri: 1.2.0 - node-fetch-native: 1.6.4 - ofetch: 1.3.4 - ufo: 1.5.3 - optionalDependencies: - '@upstash/redis': 1.25.1 - '@vercel/kv': 1.0.1 - transitivePeerDependencies: - - uWebSockets.js - - untun@0.1.3: - dependencies: - citty: 0.1.6 - consola: 3.2.3 - pathe: 1.1.2 - - update-browserslist-db@1.0.13(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - - uqr@0.1.2: {} - - use-callback-ref@1.3.2(@types/react@18.2.74)(react@18.2.0): - dependencies: - react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.74 - - use-sidecar@1.1.2(@types/react@18.2.74)(react@18.2.0): - dependencies: - detect-node-es: 1.1.0 - react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.74 - - util-deprecate@1.0.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - yaml@2.4.1: {} diff --git a/apps/examples/qwik/src/routes/plugin@auth.ts b/apps/examples/qwik/src/routes/plugin@auth.ts index db116d6e52..87f1532aac 100644 --- a/apps/examples/qwik/src/routes/plugin@auth.ts +++ b/apps/examples/qwik/src/routes/plugin@auth.ts @@ -1,6 +1,14 @@ -import { QwikAuth$ } from "@auth/qwik"; +import { DefaultSession, QwikAuth$ } from "@auth/qwik"; import GitHub from "@auth/qwik/providers/github"; +declare module "@auth/qwik" { + interface Session { + user: { + roles: string[]; + } & DefaultSession["user"]; + } +} + export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( () => ({ providers: [GitHub], diff --git a/apps/examples/solid-start/package.json b/apps/examples/solid-start/package.json index 53f7ec78bf..251f2381f8 100644 --- a/apps/examples/solid-start/package.json +++ b/apps/examples/solid-start/package.json @@ -1,5 +1,5 @@ { - "name": "my-app", + "name": "solid-start-example-app", "scripts": { "dev": "solid-start dev", "build": "solid-start build", @@ -17,7 +17,7 @@ "vite": "^3.1.0" }, "dependencies": { - "@auth/solid-start": "^0.12.2", + "@auth/solid-start": "latest", "@solidjs/meta": "^0.28.0", "@solidjs/router": "^0.6.0", "solid-js": "^1.5.7", @@ -25,6 +25,6 @@ "zod": "^3.19.1" }, "engines": { - "node": ">=16" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" } } diff --git a/apps/examples/solid-start/pnpm-lock.yaml b/apps/examples/solid-start/pnpm-lock.yaml index e0fd301d94..2a1f667262 100644 --- a/apps/examples/solid-start/pnpm-lock.yaml +++ b/apps/examples/solid-start/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@auth/solid-start': - specifier: ^0.12.2 - version: 0.12.2(solid-js@1.8.22)(solid-start@0.2.32(@solidjs/meta@0.28.7(solid-js@1.8.22))(@solidjs/router@0.6.0(solid-js@1.8.22))(solid-js@1.8.22)(solid-start-node@0.2.32)(solid-start-vercel@0.2.32)(vite@3.2.10(terser@5.31.6))) + specifier: latest + version: 0.13.0(solid-js@1.8.22)(solid-start@0.2.32(@solidjs/meta@0.28.7(solid-js@1.8.22))(@solidjs/router@0.6.0(solid-js@1.8.22))(solid-js@1.8.22)(solid-start-node@0.2.32)(solid-start-vercel@0.2.32)(vite@3.2.10(terser@5.31.6))) '@solidjs/meta': specifier: ^0.28.0 version: 0.28.7(solid-js@1.8.22) @@ -62,8 +62,8 @@ packages: '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - '@auth/core@0.34.2': - resolution: {integrity: sha512-KywHKRgLiF3l7PLyL73fjLSIBe1YNcA6sMeew4yMP6cfCWGXZrkkXd32AjRi1hlJ9nvovUBGZHvbn+LijO6ZeQ==} + '@auth/core@0.35.0': + resolution: {integrity: sha512-XvMALiYn5ZQd1hVeG1t+jCU89jRrc7ortl/05wkBrPHnRWZScxAK5jKuzBz+AOBQXewDjYcMpzeF5tTqg6rDhQ==} peerDependencies: '@simplewebauthn/browser': ^9.0.1 '@simplewebauthn/server': ^9.0.2 @@ -76,8 +76,8 @@ packages: nodemailer: optional: true - '@auth/solid-start@0.12.2': - resolution: {integrity: sha512-V7ZrwBHna95CTH19aBhez/RU8dos1gtYC6vpePxv+P3ZFKVtV/4F/b9p1ED9XIlll8v6/z0HvPYEvkpdvXbL+A==} + '@auth/solid-start@0.13.0': + resolution: {integrity: sha512-Y1/EBwTgfjcw3MMrB6wyBwY7jNc96PZ8dYO6MYfO3JNHCHO3njPCWplgffw5L/sGkI/Bks94ZOAh+TVnczJcUQ==} peerDependencies: solid-js: ^1.5.7 solid-start: ^0.2.14 @@ -2501,7 +2501,7 @@ snapshots: '@antfu/utils@0.7.10': {} - '@auth/core@0.34.2': + '@auth/core@0.35.0': dependencies: '@panva/hkdf': 1.2.1 '@types/cookie': 0.6.0 @@ -2511,9 +2511,9 @@ snapshots: preact: 10.11.3 preact-render-to-string: 5.2.3(preact@10.11.3) - '@auth/solid-start@0.12.2(solid-js@1.8.22)(solid-start@0.2.32(@solidjs/meta@0.28.7(solid-js@1.8.22))(@solidjs/router@0.6.0(solid-js@1.8.22))(solid-js@1.8.22)(solid-start-node@0.2.32)(solid-start-vercel@0.2.32)(vite@3.2.10(terser@5.31.6)))': + '@auth/solid-start@0.13.0(solid-js@1.8.22)(solid-start@0.2.32(@solidjs/meta@0.28.7(solid-js@1.8.22))(@solidjs/router@0.6.0(solid-js@1.8.22))(solid-js@1.8.22)(solid-start-node@0.2.32)(solid-start-vercel@0.2.32)(vite@3.2.10(terser@5.31.6)))': dependencies: - '@auth/core': 0.34.2 + '@auth/core': 0.35.0 solid-js: 1.8.22 solid-start: 0.2.32(@solidjs/meta@0.28.7(solid-js@1.8.22))(@solidjs/router@0.6.0(solid-js@1.8.22))(solid-js@1.8.22)(solid-start-node@0.2.32)(solid-start-vercel@0.2.32)(vite@3.2.10(terser@5.31.6)) transitivePeerDependencies: diff --git a/apps/examples/sveltekit/package.json b/apps/examples/sveltekit/package.json index 7635a797c9..eeca83afd9 100644 --- a/apps/examples/sveltekit/package.json +++ b/apps/examples/sveltekit/package.json @@ -20,7 +20,7 @@ "svelte": "4.2.19", "svelte-check": "3.6.9", "typescript": "5.4.5", - "vite": "5.2.10" + "vite": "5.2.14" }, "dependencies": { "@auth/sveltekit": "latest" diff --git a/apps/examples/sveltekit/src/components/header.svelte b/apps/examples/sveltekit/src/components/header.svelte index f085868f0f..7fe13ed293 100644 --- a/apps/examples/sveltekit/src/components/header.svelte +++ b/apps/examples/sveltekit/src/components/header.svelte @@ -9,7 +9,7 @@ User avatar {#if $page.data.session} diff --git a/apps/proxy/api/[auth].ts b/apps/proxy/api/[auth].ts index 522f78ccb2..661070563a 100644 --- a/apps/proxy/api/[auth].ts +++ b/apps/proxy/api/[auth].ts @@ -2,6 +2,7 @@ import { Auth, setEnvDefaults, type AuthConfig } from "@auth/core" import Apple from "@auth/core/providers/apple" import Auth0 from "@auth/core/providers/auth0" import AzureB2C from "@auth/core/providers/azure-ad-b2c" +import BankId from "@auth/core/providers/bankid-no" import BoxyHQSAML from "@auth/core/providers/boxyhq-saml" import Cognito from "@auth/core/providers/cognito" import Coinbase from "@auth/core/providers/coinbase" @@ -14,15 +15,18 @@ import Google from "@auth/core/providers/google" import Hubspot from "@auth/core/providers/hubspot" import Keycloak from "@auth/core/providers/keycloak" import LinkedIn from "@auth/core/providers/linkedin" +import MicrosoftEntraId from "@auth/core/providers/microsoft-entra-id" import Netlify from "@auth/core/providers/netlify" import Okta from "@auth/core/providers/okta" import Passage from "@auth/core/providers/passage" import Pinterest from "@auth/core/providers/pinterest" import Reddit from "@auth/core/providers/reddit" +import Salesforce from "@auth/core/providers/salesforce" import Slack from "@auth/core/providers/slack" import Spotify from "@auth/core/providers/spotify" import Twitch from "@auth/core/providers/twitch" import Twitter from "@auth/core/providers/twitter" +import Vipps from "@auth/core/providers/vipps" import WorkOS from "@auth/core/providers/workos" import Zoom from "@auth/core/providers/zoom" @@ -30,11 +34,8 @@ const authConfig: AuthConfig = { providers: [ Apple, Auth0, - AzureB2C({ - clientId: process.env.AUTH_AZURE_AD_B2C_ID, - clientSecret: process.env.AUTH_AZURE_AD_B2C_SECRET, - issuer: process.env.AUTH_AZURE_AD_B2C_ISSUER, - }), + AzureB2C, + BankId, BoxyHQSAML({ clientId: "dummy", clientSecret: "dummy", @@ -51,15 +52,18 @@ const authConfig: AuthConfig = { Hubspot, Keycloak, LinkedIn, + MicrosoftEntraId, Netlify, Okta, Passage, Pinterest, Reddit, + Salesforce, Slack, Spotify, Twitch, Twitter, + Vipps, WorkOS, Zoom, { diff --git a/apps/proxy/package.json b/apps/proxy/package.json index b8ed5bd189..e956b0fdba 100644 --- a/apps/proxy/package.json +++ b/apps/proxy/package.json @@ -3,7 +3,7 @@ "description": "Proxy for Auth.js hosted examples", "private": true, "type": "module", - "packageManager": "pnpm@8.9.2", + "packageManager": "pnpm@9.10.0", "dependencies": { "@auth/core": "latest" } diff --git a/docs/components/DocSearch/searchInput.tsx b/docs/components/DocSearch/searchInput.tsx index 67b09f0176..91a26addab 100644 --- a/docs/components/DocSearch/searchInput.tsx +++ b/docs/components/DocSearch/searchInput.tsx @@ -19,46 +19,46 @@ export function CustomSearchBox(props: UseSearchBoxProps) { } return ( -
-
{ - event.preventDefault() - event.stopPropagation() + { + event.preventDefault() + event.stopPropagation() - if (inputRef.current) { - inputRef.current.blur() - } - }} - onReset={(event) => { - event.preventDefault() - event.stopPropagation() + if (inputRef.current) { + inputRef.current.blur() + } + }} + onReset={(event) => { + event.preventDefault() + event.stopPropagation() - setQuery("") + setQuery("") - if (inputRef.current) { - inputRef.current.focus() - } + if (inputRef.current) { + inputRef.current.focus() + } + }} + className="relative" + > + { + setQuery(event.currentTarget.value) }} - className="relative max-md:ml-6" - > - { - setQuery(event.currentTarget.value) - }} - className="w-full max-w-48 appearance-none rounded-lg bg-black/[.05] px-3 py-1.5 pr-2 text-base leading-tight transition-colors placeholder:text-gray-500 focus:!bg-transparent md:text-sm dark:bg-gray-50/10 dark:placeholder:text-gray-400" - /> + className="w-48 appearance-none rounded-lg bg-black/[.05] px-3 py-1.5 pr-2 text-base leading-tight transition-colors placeholder:text-gray-500 focus:!bg-transparent md:text-sm dark:bg-gray-50/10 dark:placeholder:text-gray-400 [aside_&]:w-full" + /> +
{inputValue.length ? (
+
+ + ) } diff --git a/docs/components/DocSearch/wrapper.tsx b/docs/components/DocSearch/wrapper.tsx index 0f692e90f8..cb87ef3585 100644 --- a/docs/components/DocSearch/wrapper.tsx +++ b/docs/components/DocSearch/wrapper.tsx @@ -1,4 +1,4 @@ -import { useEffect } from "react" +import { useEffect, useRef, useState } from "react" import algoliasearch from "algoliasearch/lite" import { InstantSearch, Hits, useInstantSearch } from "react-instantsearch" //import { InstantSearchNext } from "react-instantsearch-nextjs" @@ -32,35 +32,58 @@ const searchClient = { }, } -export default function () { - const ctrlKHandler = (e: KeyboardEvent) => { - if (e.repeat || e.target instanceof HTMLInputElement) return - if (e.ctrlKey && e.key === "k") { - e.preventDefault() - document.querySelector('input[type="search"]')?.focus() - } - } +export default function Wrapper() { + const docSearchRef = useRef(null) + const [isSearchHitsVisible, setIsSearchHitsVisible] = useState(false) useEffect(() => { + function ctrlKHandler(e: KeyboardEvent) { + if (e.repeat || e.target instanceof HTMLInputElement) return + if (e.ctrlKey && e.key === "k") { + e.preventDefault() + document + .querySelector('input[type="search"]') + ?.focus() + } + } + + function clickSearchBoxOutsideHandler(event: MouseEvent) { + setIsSearchHitsVisible( + Boolean( + event.target instanceof Node && + docSearchRef.current?.contains(event.target) + ) + ) + } + window.addEventListener("keydown", ctrlKHandler) + window.addEventListener("mousedown", clickSearchBoxOutsideHandler) - return window.addEventListener("keydown", ctrlKHandler) + return () => { + window.removeEventListener("keydown", ctrlKHandler) + window.removeEventListener("mousedown", clickSearchBoxOutsideHandler) + } }, []) return ( -
+
- - - + {isSearchHitsVisible && ( + + + + )}
) diff --git a/docs/components/Footer/index.tsx b/docs/components/Footer/index.tsx index 3df4fb2fc6..3978a4ab8e 100644 --- a/docs/components/Footer/index.tsx +++ b/docs/components/Footer/index.tsx @@ -58,24 +58,6 @@ export function Footer({ className = "" }) { Discord Community
-
  • - - Powered by - - Vercel - - - -
  • diff --git a/docs/components/OAuthProviderInstructions/OAuthProviderSelect.tsx b/docs/components/OAuthProviderInstructions/OAuthProviderSelect.tsx index c505580d85..aeff3bef6c 100644 --- a/docs/components/OAuthProviderInstructions/OAuthProviderSelect.tsx +++ b/docs/components/OAuthProviderInstructions/OAuthProviderSelect.tsx @@ -4,44 +4,68 @@ import { ComboboxPopover, ComboboxProvider, } from "@ariakit/react" -import { useOAuthProviderSelect } from "./useOAuthProviderSelect" import dynamic from "next/dynamic" -import type { ChangeEvent } from "react" - import { Link } from "@/components/Link" import manifest from "@/data/manifest.json" +import { + PreviewProviders, + type Provider, +} from "@/components/SearchBarProviders/PreviewProviders" +import { useSelectCombobox } from "@/hooks/use-select-combobox" const OAuthProviderInstructions = dynamic(() => import("./content").then((mod) => mod.OAuthInstructions) ) +const previewProviders: Provider[] = [ + { id: "google", name: "Google" }, + { id: "github", name: "GitHub" }, + { id: "twitter", name: "Twitter" }, + { id: "keycloak", name: "Keycloak" }, + { id: "okta", name: "Okta" }, +] + +const items = Object.entries(manifest.providersOAuth).map(([id, name]) => ({ + id, + name, +})) + export function OAuthProviderSelect() { - const { items, term, selected, handleSearchItem, handleSelectOption } = - useOAuthProviderSelect() + const { + selectedItem, + filteredItems, + hasMatchItem, + handleChange, + handleSelect, + } = useSelectCombobox({ + items, + }) return (
    - + ) => - handleSearchItem(e.target.value) - } + value={selectedItem.name} + onChange={handleChange} /> - {items.map((item) => ( + {filteredItems.map((item) => ( handleSelectOption(item)} + onClick={() => handleSelect(item)} > ))} - {!term ? ( + {!selectedItem.name && ( <>

    Or jump directly to one of the popular ones below.

    -
    -
    - handleSelectOption({ id: "google", name: "Google" }) - } - className="flex h-32 w-32 flex-col items-center justify-between rounded-lg border border-solid border-neutral-200 p-4 shadow-sm transition-colors duration-300 hover:bg-neutral-50 dark:border-neutral-800 dark:hover:bg-neutral-950" - > - -
    Google
    -
    -
    - handleSelectOption({ id: "github", name: "GitHub" }) - } - > - -
    GitHub
    -
    -
    - handleSelectOption({ id: "twitter", name: "Twitter" }) - } - className="flex h-32 w-32 flex-col items-center justify-between rounded-lg border border-solid border-neutral-200 p-4 shadow-sm transition-colors duration-300 hover:bg-neutral-50 dark:border-neutral-800 dark:hover:bg-neutral-950" - > - -
    Twitter
    -
    -
    - handleSelectOption({ id: "keycloak", name: "keycloak" }) - } - className="flex h-32 w-32 flex-col items-center justify-between rounded-lg border border-solid border-neutral-200 p-4 shadow-sm transition-colors duration-300 hover:bg-neutral-50 dark:border-neutral-800 dark:hover:bg-neutral-950" - > - -
    Keycloak
    -
    -
    handleSelectOption({ id: "okta", name: "okta" })} - className="flex h-32 w-32 flex-col items-center justify-between rounded-lg border border-solid border-neutral-200 p-4 shadow-sm transition-colors duration-300 hover:bg-neutral-50 dark:border-neutral-800 dark:hover:bg-neutral-950" - > - -
    Okta
    -
    -
    + - ) : null} - {term && items.length === 0 ? ( + )} + {!hasMatchItem && filteredItems.length === 0 && (

    Can't find the OAuth provider you're looking for? You can always{" "} @@ -119,17 +95,11 @@ export function OAuthProviderSelect() { .

    - ) : null} + )}
    - {selected && term && items.length !== 0 ? ( - - ) : null} + {hasMatchItem && ( + + )}
    ) } diff --git a/docs/components/OAuthProviderInstructions/content/components/SetupCode.tsx b/docs/components/OAuthProviderInstructions/content/components/SetupCode.tsx index a28c8bfe3d..cbbb25ed91 100644 --- a/docs/components/OAuthProviderInstructions/content/components/SetupCode.tsx +++ b/docs/components/OAuthProviderInstructions/content/components/SetupCode.tsx @@ -21,6 +21,7 @@ export function SetupCode({ providerId, providerName, highlight }: Props) { data-copy="" data-language="tsx" icon={TSIcon} + className="px-4" dangerouslySetInnerHTML={{ __html: highlight(` import NextAuth from "next-auth" @@ -40,6 +41,7 @@ export const { handlers, signIn, signOut, auth } = NextAuth({ data-theme="default" data-copy="" data-language="tsx" + className="px-4" icon={TSIcon} dangerouslySetInnerHTML={{ __html: highlight(` @@ -57,13 +59,14 @@ export const { GET, POST } = handlers data-theme="default" data-copy="" data-language="tsx" + className="px-4" icon={TSIcon} dangerouslySetInnerHTML={{ __html: highlight(` -import { SvelteKitAuth } from "@auth/sveltekit" -import ${providerName} from "@auth/sveltekit/providers/${providerId}" +import { QwikAuth$ } from "@auth/qwik" +import ${providerName} from "@auth/qwik/providers/${providerId}" -export const { handle, signIn, signOut } = SvelteKitAuth({ +export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$({ providers: [${providerName}], }) `), }} @@ -78,6 +81,7 @@ export const { handle, signIn, signOut } = SvelteKitAuth({ data-theme="default" data-copy="" data-language="tsx" + className="px-4" icon={TSIcon} dangerouslySetInnerHTML={{ __html: highlight(` @@ -98,6 +102,7 @@ export const { handle, signIn } = SvelteKitAuth({ data-theme="default" data-copy="" data-language="tsx" + className="px-4" icon={TSIcon} dangerouslySetInnerHTML={{ __html: highlight(`export { handle } from "./auth"`), @@ -113,6 +118,7 @@ export const { handle, signIn } = SvelteKitAuth({ data-theme="default" data-copy="" data-language="tsx" + className="px-4" icon={TSIcon} dangerouslySetInnerHTML={{ __html: highlight(` @@ -134,6 +140,7 @@ export const load: LayoutServerLoad = async (event) => { data-theme="default" data-copy="" data-language="tsx" + className="px-4" icon={TSIcon} dangerouslySetInnerHTML={{ __html: highlight(` diff --git a/docs/components/OAuthProviderInstructions/content/components/SignInCode.tsx b/docs/components/OAuthProviderInstructions/content/components/SignInCode.tsx index ee38c49767..eb0147c6f2 100644 --- a/docs/components/OAuthProviderInstructions/content/components/SignInCode.tsx +++ b/docs/components/OAuthProviderInstructions/content/components/SignInCode.tsx @@ -17,6 +17,7 @@ export function SignInCode({ providerId, providerName, highlight }: Props) { data-theme="default" data-copy="" data-language="tsx" + className="px-4" icon={TSIcon} dangerouslySetInnerHTML={{ __html: highlight(` @@ -37,6 +38,27 @@ export default function SignIn() { }} /> + +
     signIn("${providerId}")}>
    +}
    +`),
    +          }}
    +        />
    +      
           
             With Qwik we can do a server-side login with Form action, or a more
             simple client-side login via submit method.
    @@ -45,6 +67,7 @@ export default function SignIn() {
               data-theme="default"
               data-copy=""
               data-language="tsx"
    +          className="px-4"
               icon={TSIcon}
               dangerouslySetInnerHTML={{
                 __html: highlight(`
    @@ -88,6 +111,7 @@ export default component$(() => {
               data-theme="default"
               data-copy=""
               data-language="tsx"
    +          className="px-4"
               icon={TSIcon}
               data-filename="src/routes/+page.svelte"
               dangerouslySetInnerHTML={{
    @@ -112,6 +136,7 @@ export default component$(() => {
               data-theme="default"
               data-copy=""
               data-language="tsx"
    +          className="px-4"
               icon={TSIcon}
               data-filename="src/routes/signin/+page.server.ts"
               dangerouslySetInnerHTML={{
    @@ -129,6 +154,7 @@ export const actions: Actions = { default: signIn }
               data-theme="default"
               data-copy=""
               data-language="tsx"
    +          className="px-4"
               icon={TSIcon}
               data-filename="src/routes/+page.svelte"
               dangerouslySetInnerHTML={{
    diff --git a/docs/components/OAuthProviderInstructions/content/components/StepTitle.tsx b/docs/components/OAuthProviderInstructions/content/components/StepTitle.tsx
    index 6843098d21..1c4137fb29 100644
    --- a/docs/components/OAuthProviderInstructions/content/components/StepTitle.tsx
    +++ b/docs/components/OAuthProviderInstructions/content/components/StepTitle.tsx
    @@ -1,12 +1,29 @@
     interface Props {
       children: React.ReactNode
    +  count: number
     }
     
    -export function StepTitle({ children }: Props) {
    +export function StepTitle({ children, count }: Props) {
       return (
         

    + + {count} + {children}

    ) diff --git a/docs/components/OAuthProviderInstructions/content/index.tsx b/docs/components/OAuthProviderInstructions/content/index.tsx index 8ed2537956..3d53c6a19b 100644 --- a/docs/components/OAuthProviderInstructions/content/index.tsx +++ b/docs/components/OAuthProviderInstructions/content/index.tsx @@ -1,8 +1,7 @@ import { useEffect, useState } from "react" -import { type Highlighter, getHighlighter } from "shiki" +import { type Highlighter, createHighlighter } from "shiki" import cx from "classnames" import { Callout, Pre, Code as NXCode } from "nextra/components" - import { StepTitle } from "./components/StepTitle" import { SetupCode } from "./components/SetupCode" import { SignInCode } from "./components/SignInCode" @@ -19,7 +18,7 @@ export function OAuthInstructions({ providerId, disabled = false }: Props) { const [highlighter, setHighlighter] = useState(null) useEffect(() => { ;(async () => { - const hl = await getHighlighter({ + const hl = await createHighlighter({ themes: ["github-light", "github-dark"], langs: ["ts", "tsx", "bash"], }) @@ -39,16 +38,27 @@ export function OAuthInstructions({ providerId, disabled = false }: Props) { } const providerName = manifest.providersOAuth[providerId] + const envVars = [ + `AUTH_${providerId.toUpperCase().replace(/-/gi, "_")}_ID={CLIENT_ID}`, + `AUTH_${providerId.toUpperCase().replace(/-/gi, "_")}_SECRET={CLIENT_SECRET}`, + ] + if (manifest.requiresIssuer.includes(providerId)) { + envVars.push( + `AUTH_${providerId.toUpperCase().replace(/-/gi, "_")}_ISSUER={ISSUER_URL}` + ) + } + const envString = `\n${envVars.join("\n")}\n` return (
    {/* Step 1 */} - Register OAuth App in {providerName}'s dashboard + + Register OAuth App in {providerName}'s dashboard +

    First you have to setup an OAuth application on the {providerName}{" "} developers dashboard. @@ -105,68 +115,65 @@ export function OAuthInstructions({ providerId, disabled = false }: Props) { environment(s). {/* Step 2 */} - Setup Environment Variables + Setup Environment Variables

    - Once registered, you should get a Client ID and{" "} - Client Secret. Add those in your application - environment file: + Once registered, you should receive a{" "} + {manifest.requiresIssuer.includes(providerId) ? ( + <> + Client ID, Client Secret and{" "} + Issuer URL + + ) : ( + <> + Client ID and Client Secret + + )} + . Add those in your application environment file:

    -
    +          
    +            
    +
    +
    +
    -
    +          
    +            
    +
    +
    +
    -
    +          
    +            
    +
    +
    +
    -
    +          
    +            
    +
    +
    +

    Assuming{" "} @@ -189,7 +196,7 @@ AUTH_${providerId.toUpperCase().replace(/-/gi, "_")}_SECRET={CLIENT_SECRET} if needed, but then you’ll need to pass them to the provider manually.

    {/* Step 3 */} - Setup Provider + Setup Provider

    Let’s enable {providerName} as a sign in option in our Auth.js configuration. You’ll have to import the {providerName}{" "} @@ -202,7 +209,7 @@ AUTH_${providerId.toUpperCase().replace(/-/gi, "_")}_SECRET={CLIENT_SECRET} highlight={highlight} /> {/* Step 4 */} - Add Signin Button + Add Signin Button

    Next, we can add a signin button somewhere in your application like the Navbar. It will trigger Auth.js sign in when clicked. @@ -213,7 +220,7 @@ AUTH_${providerId.toUpperCase().replace(/-/gi, "_")}_SECRET={CLIENT_SECRET} highlight={highlight} /> {/* Step 5 */} - Ship it! + Ship it!

    Click the “Sign in with {providerName}" button and if all went well, you should be redirected to {providerName} and once authenticated, diff --git a/docs/components/OAuthProviderInstructions/useOAuthProviderSelect.ts b/docs/components/OAuthProviderInstructions/useOAuthProviderSelect.ts deleted file mode 100644 index 97d5072861..0000000000 --- a/docs/components/OAuthProviderInstructions/useOAuthProviderSelect.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { useState } from "react" -import manifest from "@/data/manifest.json" - -const providerList = Object.entries(manifest.providersOAuth).map( - ([id, name]) => { - return { id, name } - } -) - -export function useOAuthProviderSelect() { - const [term, setTerm] = useState("") - const [selected, setSelected] = useState("") - - function handleSearchItem(term: string) { - setTerm(term) - } - - function handleSelectOption(item: { id: string; name: string }) { - setTerm(item.name) - setSelected(item.id) - } - - return { - items: providerList.filter((item) => - item.name.toLowerCase().includes(term?.toLowerCase()) - ), - term, - selected, - handleSearchItem, - handleSelectOption, - } -} diff --git a/docs/components/SearchBarProviders/PreviewProviders.tsx b/docs/components/SearchBarProviders/PreviewProviders.tsx new file mode 100644 index 0000000000..d1fdfdb0f2 --- /dev/null +++ b/docs/components/SearchBarProviders/PreviewProviders.tsx @@ -0,0 +1,35 @@ +export interface Provider { + id: string + name: string +} + +export interface PreviewProvidersProps { + className?: string + providers: Provider[] + onSelected: (provider: Provider) => void +} + +export function PreviewProviders({ + className, + providers, + onSelected, +}: PreviewProvidersProps) { + return ( +

    + {providers.map((provider) => ( +
    onSelected(provider)} + > + +
    {provider.name}
    +
    + ))} +
    + ) +} diff --git a/docs/components/Tooltip/index.tsx b/docs/components/Tooltip/index.tsx deleted file mode 100644 index 12e8497f62..0000000000 --- a/docs/components/Tooltip/index.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { useRef } from "react" -import polyfill from "@oddbird/css-anchor-positioning/fn" - -interface Props { - label: string - framework: string - children: React.ReactNode -} - -export function Tooltip({ label, framework, children }: Props) { - // CSS Anchor Positioning Polyfill - // https://github.com/oddbird/css-anchor-positioning - polyfill() - - const popoverTargetRef = useRef() - const slug = label.replace(/[^a-zA-Z0-9]/g, "-").toLowerCase() - - return ( -
    - -
    - {label} -
    -
    - ) -} diff --git a/docs/hooks/use-select-combobox.ts b/docs/hooks/use-select-combobox.ts new file mode 100644 index 0000000000..b8ee43a0dc --- /dev/null +++ b/docs/hooks/use-select-combobox.ts @@ -0,0 +1,48 @@ +import { ChangeEvent, useState } from "react" + +interface SelectComboboxValue { + id: string + name: string +} + +interface SelectComboboxProps { + defaultValue?: SelectComboboxValue + items: SelectComboboxValue[] +} + +export const useSelectCombobox = ({ + defaultValue = { id: "", name: "" }, + items, +}: SelectComboboxProps) => { + const [selectedItem, setSelectedItem] = + useState(defaultValue) + const [filteredItems, setFilteredItems] = useState(items) + const [hasMatchItem, setHasMatchItem] = useState(false) + + const handleSelect = (value: SelectComboboxValue) => { + let hasMatchItem = false + setFilteredItems( + items.filter((item) => { + if (item.id === value.id) { + hasMatchItem = true + } + return item.name.toLowerCase().includes(value.name.toLowerCase()) + }) + ) + setSelectedItem(value) + setHasMatchItem(hasMatchItem) + } + + const handleChange = (event: ChangeEvent) => { + const { value } = event.target + handleSelect({ id: value, name: value }) + } + + return { + selectedItem, + filteredItems, + handleSelect, + handleChange, + hasMatchItem, + } +} diff --git a/docs/next-env.d.ts b/docs/next-env.d.ts index fd36f9494e..725dd6f245 100644 --- a/docs/next-env.d.ts +++ b/docs/next-env.d.ts @@ -3,4 +3,4 @@ /// // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/docs/package.json b/docs/package.json index 32eb8ca551..75b2da8a8b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -24,35 +24,34 @@ }, "homepage": "https://authjs.dev", "dependencies": { - "@ariakit/react": "^0.4.5", - "@inkeep/widgets": "^0.2.272", - "@next/third-parties": "^14.2.1", - "@oddbird/css-anchor-positioning": "^0.0.5", - "@radix-ui/react-accordion": "^1.1.2", - "@radix-ui/react-tabs": "^1.0.4", - "@vercel/analytics": "^1.2.2", + "@ariakit/react": "^0.4.13", + "@inkeep/widgets": "^0.2.289", + "@next/third-parties": "^14.2.15", + "@radix-ui/react-accordion": "^1.2.1", + "@radix-ui/react-tabs": "^1.1.1", + "@vercel/analytics": "^1.3.1", "@vercel/kv": "^1.0.1", - "algoliasearch": "^4.23.3", + "algoliasearch": "^4.24.0", "classnames": "^2.5.1", - "framer-motion": "^11.2.6", - "next": "14.2.3", + "framer-motion": "^11.11.8", + "next": "14.2.15", "next-sitemap": "^4.2.3", - "nextra": "3.0.0-alpha.24", - "nextra-theme-docs": "3.0.0-alpha.24", + "nextra": "3.0.15", + "nextra-theme-docs": "3.0.15", "react": "18.3.1", "react-dom": "18.3.1", - "react-instantsearch": "^7.7.2", - "react-instantsearch-nextjs": "^0.2.2" + "react-instantsearch": "^7.13.3", + "react-instantsearch-nextjs": "^0.2.5" }, "devDependencies": { "@types/node": "20.12.7", "@types/react": "18.2.78", - "autoprefixer": "^10.4.19", - "postcss": "^8.4.38", - "shiki": "^1.3.0", - "tailwindcss": "^3.4.3", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "shiki": "^1.22.0", + "tailwindcss": "^3.4.13", "typedoc": "^0.25.13", "typedoc-plugin-markdown": "4.0.0-next.54", - "typedoc-plugin-mdn-links": "^3.2.7" + "typedoc-plugin-mdn-links": "^3.3.2" } } diff --git a/docs/pages/data/manifest.json b/docs/pages/data/manifest.json index e727763653..b9bba6f916 100644 --- a/docs/pages/data/manifest.json +++ b/docs/pages/data/manifest.json @@ -62,7 +62,7 @@ "box": "Box", "boxyhq-saml": "BoxyHQ SAML", "bungie": "Bungie", - "clickup": "ClickUp", + "click-up": "ClickUp", "cognito": "Cognito", "coinbase": "Coinbase", "descope": "Descope", @@ -119,8 +119,33 @@ "zoom": "Zoom" }, "providersEmail": { + "forwardemail": "Forward Email", "resend": "Resend", "sendgrid": "Sendgrid", "nodemailer": "Nodemailer" - } + }, + "requiresIssuer": [ + "asgardeo", + "auth0", + "authentik", + "azure-ad-b2c", + "battlenet", + "beyondidentity", + "boxyhq-saml", + "cognito", + "descope", + "duende-identityserver-6", + "fusionauth", + "identity-server4", + "keycloak", + "kinde", + "mastodon", + "mattermost", + "nextcloud", + "okta", + "ory-hydra", + "osso", + "passage", + "ping-id" + ] } diff --git a/docs/pages/getting-started/adapters/drizzle.mdx b/docs/pages/getting-started/adapters/drizzle.mdx index 84ed30eeda..09c9be0428 100644 --- a/docs/pages/getting-started/adapters/drizzle.mdx +++ b/docs/pages/getting-started/adapters/drizzle.mdx @@ -34,8 +34,8 @@ To use this adapter, you must have setup Drizzle ORM and Drizzle Kit in your pro 1. Create your schema file, based off of one of the ones below. 2. Install a supported database driver to your project, like `@libsql/client`, `mysql2` or `postgres`. 3. Create a `drizzle.config.ts` [file](https://orm.drizzle.team/kit-docs/conf). -4. Generate the initial migration from your schema file with a command like, `drizzle-kit generate:pg`. -5. Apply migrations by using `migrate()` function or push changes directly to your database with a command like, `drizzle-kit push:pg`. +4. Generate the initial migration from your schema file with a command like, `drizzle-kit generate`. +5. Apply migrations by using `migrate()` function or push changes directly to your database with a command like, `drizzle-kit push`. 6. If your schemas differ from the default ones, pass them as the second parameter to the adapter. #### Schemas diff --git a/docs/pages/getting-started/adapters/firebase.mdx b/docs/pages/getting-started/adapters/firebase.mdx index f48dbbcfaf..eb17e28dc9 100644 --- a/docs/pages/getting-started/adapters/firebase.mdx +++ b/docs/pages/getting-started/adapters/firebase.mdx @@ -40,7 +40,8 @@ AUTH_FIREBASE_PRIVATE_KEY import NextAuth from "next-auth" import { FirestoreAdapter } from "@auth/firebase-adapter" -export { handlers, auth, signIn, signOut } = NextAuth({ +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [], adapter: FirestoreAdapter(), }) ``` @@ -67,7 +68,8 @@ export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( import { SvelteKitAuth } from "@auth/sveltekit" import { FirestoreAdapter } from "@auth/firebase-adapter" -export { handle, signIn, signOut } = SvelteKitAuth({ +export const { handle, signIn, signOut } = SvelteKitAuth({ + providers: [], adapter: FirestoreAdapter(), }) ``` diff --git a/docs/pages/getting-started/adapters/prisma.mdx b/docs/pages/getting-started/adapters/prisma.mdx index cddfc7e168..2c79e7bf9e 100644 --- a/docs/pages/getting-started/adapters/prisma.mdx +++ b/docs/pages/getting-started/adapters/prisma.mdx @@ -523,7 +523,7 @@ This will create an SQL migration file and execute it: npm exec prisma migrate dev ``` -Note that you will need to specify your database connection string in the environment variable `DATABASE_URL`. You can do this by setting it in a `.env` file at the root of your project. Note Prisma doesn't support `.env.local` syntax, it must be named `.env`. For more information, check out their [environment variables docs](https://www.prisma.io/docs/orm/more/development-environment/environment-variables/using-multiple-env-files). +Note that you will need to specify your database connection string in the environment variable `DATABASE_URL`. You can do this by setting it in a `.env` file at the root of your project. ### Generate Prisma Client @@ -597,6 +597,6 @@ model VerificationToken { expires DateTime @@unique([identifier, token]) - @@map("verificationtokens") + @@map("verification_tokens") } ``` diff --git a/docs/pages/getting-started/adapters/surrealdb.mdx b/docs/pages/getting-started/adapters/surrealdb.mdx index 4411e84206..a70d335635 100644 --- a/docs/pages/getting-started/adapters/surrealdb.mdx +++ b/docs/pages/getting-started/adapters/surrealdb.mdx @@ -105,18 +105,26 @@ The SurrealDB adapter does not handle connections automatically, so you will hav import { Surreal } from "surrealdb.js" const connectionString = process.env.AUTH_SURREALDB_CONNECTION -const user = process.env.AUTH_SURREALDB_USERNAME -const pass = process.env.AUTH_SURREALDB_PASSWORD -const ns = process.env.AUTH_SURREALDB_NS -const db = process.env.AUTH_SURREALDB_DB +const username = process.env.AUTH_SURREALDB_USERNAME +const password = process.env.AUTH_SURREALDB_PASSWORD +const namespace = process.env.AUTH_SURREALDB_NAMESPACE +const database = process.env.AUTH_SURREALDB_DATABASE +if (!connectionString || !username || !password || !namespace || !database) { + throw new Error( + "SurrealDB connection string, username, password, namespace, and database are required" + ) +} const clientPromise = new Promise(async (resolve, reject) => { const db = new Surreal() try { await db.connect(`${connectionString}/rpc`, { - ns, - db, - auth: { user, pass }, + namespace, + database, + auth: { + username, + password, + }, }) resolve(db) } catch (e) { @@ -124,7 +132,7 @@ const clientPromise = new Promise(async (resolve, reject) => { } }) -// Export a module-scoped MongoClient promise. By doing this in a +// Export a module-scoped Promise. By doing this in a // separate module, the client can be shared across functions. export default clientPromise ``` @@ -137,19 +145,27 @@ Useful in serverless environments like Vercel. import { ExperimentalSurrealHTTP } from "surrealdb.js" const connectionString = process.env.AUTH_SURREALDB_CONNECTION -const user = process.env.AUTH_SURREALDB_USERNAME -const pass = process.env.AUTH_SURREALDB_PASSWORD -const ns = process.env.AUTH_SURREALDB_NS -const db = process.env.AUTH_SURREALDB_DB +const username = process.env.AUTH_SURREALDB_USERNAME +const password = process.env.AUTH_SURREALDB_PASSWORD +const namespace = process.env.AUTH_SURREALDB_NAMESPACE +const database = process.env.AUTH_SURREALDB_DATABASE +if (!connectionString || !username || !password || !namespace || !database) { + throw new Error( + "SurrealDB connection string, username, password, namespace, and database are required" + ) +} const clientPromise = new Promise>( async (resolve, reject) => { try { const db = new ExperimentalSurrealHTTP(connectionString, { fetch, - ns, - db, - auth: { user, pass }, + namespace, + database, + auth: { + username, + password, + }, }) resolve(db) } catch (e) { @@ -158,7 +174,7 @@ const clientPromise = new Promise>( } ) -// Export a module-scoped MongoClient promise. By doing this in a +// Export a module-scoped Promise. By doing this in a // separate module, the client can be shared across functions. export default clientPromise ``` diff --git a/docs/pages/getting-started/authentication/credentials.mdx b/docs/pages/getting-started/authentication/credentials.mdx index f3128403a2..e7af253de6 100644 --- a/docs/pages/getting-started/authentication/credentials.mdx +++ b/docs/pages/getting-started/authentication/credentials.mdx @@ -7,7 +7,29 @@ import { Code } from "@/components/Code" # Credentials -To setup Auth.js with external authentication mechanisms or simply use username and password, we need to use the `Credentials` provider. This provider is designed to forward any credentials inserted into the login form (.i.e username/password) to your authentication service via the `authorize` callback on the provider configuration. +To setup Auth.js with any external authentication mechanisms or use a traditional username/email and password flow, we can use the `Credentials` provider. This provider is designed to forward any credentials inserted into the login form (i.e. username/password, but not limited to) to your authentication service. + + + The industry has come a long way since usernames and passwords + as the go-to mechanism for authenticating and authorizing users to + web applications. Therefore, if possible, we recommend a more modern and + secure authentication mechanism such as any of the [OAuth + providers](/getting-started/authentication/oauth), [Email Magic + Links](/getting-started/authentication/email), or [WebAuthn + (Passkeys)](/getting-started/authentication/webauthn) options instead. + +However, we also want to be flexible and support anything +you deem appropriate for your application and use case, +so there are no plans to remove this provider. + + + + + By default, the Credentials provider does not persist data in the database. + However, you can still create and save any data in your database, you just + have to provide the necessary logic, eg. to encrypt passwords, add + rate-limiting, add password reset functionality, etc. + @@ -44,8 +66,8 @@ export const { handlers, signIn, signOut, auth } = NextAuth({ if (!user) { // No user found, so this is their first attempt to login - // meaning this is also the place you could do registration - throw new Error("User not found.") + // Optionally, this is also the place you could do a user registration + throw new Error("Invalid credentials.") } // return user object with their profile data @@ -110,7 +132,9 @@ export const { signIn, signOut, handle } = SvelteKitAuth({ user = await getUserFromDb(credentials.email, pwHash) if (!user) { - throw new Error("User not found.") + // No user found, so this is their first attempt to login + // Optionally, this is also the place you could do a user registration + throw new Error("Invalid credentials.") } // return JSON object with the user data @@ -161,8 +185,8 @@ app.use( if (!user) { // No user found, so this is their first attempt to login - // meaning this is also the place you could do registration - throw new Error("User not found.") + // Optionally, this is also the place you could do a user registration + throw new Error("Invalid credentials.") } // return user object with the their profile data @@ -217,6 +241,34 @@ export function SignIn() { ``` + + +```tsx filename="./components/sign-in.tsx" +"use client" +import { signIn } from "next-auth/react" + +export function SignIn() { + const credentialsAction = (formData: FormData) => { + signIn("credentials", formData) + } + + return ( +
    + + + +
    + ) +} +``` + +
    ```ts filename="/src/routes/index.tsx" @@ -277,15 +329,15 @@ export default component$(() => {
    -## Verifying Data with Zod +## Validating credentials -To improve the security of your `Credentials` provider use, we can leverage a run-time schema validation library like [Zod](https://zod.dev) to validate that the inputs match what we expect. +Always validate the credentials server-side, i.e. by leveraging a schema validation library like [Zod](https://zod.dev). ```bash npm2yarn npm install zod ``` -Next, we'll setup the schema and parsing in our `auth.ts` configuration file, using the `authorize` callback on the `Credentials` provider. +Next, we'll set up the schema and parsing in our `auth.ts` configuration file, using the `authorize` callback on the `Credentials` provider. @@ -335,7 +387,7 @@ export const { handlers, auth } = NextAuth({ user = await getUserFromDb(email, pwHash) if (!user) { - throw new Error("User not found.") + throw new Error("Invalid credentials.") } // return JSON object with the user data @@ -442,7 +494,7 @@ export const { handle } = SvelteKitAuth({ user = await getUserFromDb(email, pwHash) if (!user) { - throw new Error("User not found.") + throw new Error("Invalid credentials.") } // return JSON object with the user data @@ -461,24 +513,3 @@ export const { handle } = SvelteKitAuth({ - - - The industry has come a long way since usernames and passwords were first - introduced as the go-to mechanism for authenticating and authorizing users to - web applications. Therefore, if possible, we recommend a more modern and - secure authentication mechanism such as any of the [OAuth - providers](/getting-started/authentication/oauth), [Email Magic - Links](/getting-started/authentication/email), or [WebAuthn - (Passkeys)](/getting-started/authentication/webauthn) options instead of - username / password. - -However, we also want to be flexible and support anything -you deem appropriate for your application and use-case. - - - - - The Credentials provider only supports the JWT session strategy. You can still - create and save a database session and reference it from the JWT via an id, - but you'll need to provide that logic yourself. - diff --git a/docs/pages/getting-started/authentication/email.mdx b/docs/pages/getting-started/authentication/email.mdx index 3e514bee85..ce51246686 100644 --- a/docs/pages/getting-started/authentication/email.mdx +++ b/docs/pages/getting-started/authentication/email.mdx @@ -32,7 +32,15 @@ This login mechanism starts by the user providing their email address at the log defaultValue="resend" className="w-full flex flex-col" > - + + + +
    Forward Email
    +
    Postmark
    +
    + + +
    Loops
    +
    + + +
    Mailgun
    +### Forward Email Setup + + + +### Database Adapter + +Please make sure you've [setup a database adapter](/getting-started/database), as mentioned earlier, +a database is required for passwordless login to work as verification tokens need to be stored. + +### Setup Environment Variables + +Auth.js will automatically pick up these if formatted like the example above. +You can [also use a different name for the environment variables](/guides/environment-variables#oauth-variables) if needed, but then you’ll need to pass them to the provider manually. + +```bash filename=".env" +AUTH_FORWARDEMAIL_KEY=abc123 +``` + +### Setup Provider + +Let’s enable `ForwardEmail` as a sign in option in our Auth.js configuration. You’ll have to import the `ForwardEmail` provider from the package and pass it to the providers array we setup earlier in the Auth.js config file: + + + + +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import ForwardEmail from "next-auth/providers/forwardemail" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [ForwardEmail], +}) +``` + + + + +```ts filename="/src/routes/plugin@auth.ts" +import { QwikAuth$ } from "@auth/qwik" +import ForwardEmail from "@auth/qwik/providers/forwardemail" + +export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( + () => ({ + providers: [ForwardEmail], + }) +) +``` + + + + +```ts filename="./src/auth.ts" +import SvelteKitAuth from "@auth/sveltekit" +import ForwardEmail from "@auth/sveltekit/providers/forwardemail" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + providers: [ForwardEmail], +}) +``` + +```ts filename="./src/hooks.server.ts" +export { handle } from "./auth" +``` + + + + +### Add Signin Button + +Next, we can add a signin button somewhere in your application like the Navbar. This will send an email to the user containing the magic link to sign in. + + + + +```tsx filename="./components/sign-in.tsx" +import { signIn } from "../../auth.ts" + +export function SignIn() { + return ( +
    { + "use server" + await signIn("forwardemail", formData) + }} + > + + +
    + ) +} +``` + +
    + + +```ts filename="./components/sign-in.tsx" +import { component$ } from "@builder.io/qwik" +import { useSignIn } from "./plugin@auth" + +export default component$(() => { + const signInSig = useSignIn() + + return ( + + ) +}) +``` + + + + +```html filename="src/routes/+page.svelte" + + +
    + +
    +``` + +
    +
    + +### Signin + +Start your application, once the user enters their Email and clicks on the signin button, they'll be redirected to a page that asks them to check their email. When they click on the link in their email, they will be signed in. + +
    + + + Check our [Customising magic links + emails](/getting-started/providers/forwardemail#customization) to learn how to + change the look and feel of the emails the user receives to sign in. + + +For more information on this provider go to the [Forward Email docs page](/getting-started/providers/forwardemail). + +
    + + + ### Resend Setup @@ -109,7 +287,7 @@ export const { handlers, auth, signIn, signOut } = NextAuth({ - + ```ts filename="/src/routes/plugin@auth.ts" import { QwikAuth$ } from "@auth/qwik" import Resend from "@auth/qwik/providers/resend" @@ -166,6 +344,30 @@ export function SignIn() { ``` + + +```tsx filename="./components/sign-in.tsx" +"use client" +import { signIn } from "next-auth/react" + +export function SignIn() { + const resendAction = (formData: FormData) => { + signIn("resend", formData) + } + + return ( +
    + + +
    + ) +} +``` + +
    ```ts filename="./components/sign-in.tsx" @@ -263,7 +465,7 @@ export const { handlers, auth, signIn, signOut } = NextAuth({ - + ```ts filename="/src/routes/plugin@auth.ts" import { QwikAuth$ } from "@auth/qwik" import Sendgrid from "@auth/qwik/providers/sendgrid" @@ -320,6 +522,30 @@ export function SignIn() { ``` + + +```tsx filename="./components/sign-in.tsx" +"use client" +import { signIn } from "next-auth/react" + +export function SignIn() { + const sendgridAction = (formData: FormData) => { + signIn("sendgrid", formData) + } + + return ( +
    + + +
    + ) +} +``` + +
    ```ts filename="./components/sign-in.tsx" @@ -431,7 +657,7 @@ export const { handlers, auth, signIn, signOut } = NextAuth({ - + ```ts filename="/src/routes/plugin@auth.ts" import { QwikAuth$ } from "@auth/qwik" import Nodemailer from "@auth/qwik/providers/nodemailer" @@ -510,7 +736,7 @@ export const { handlers, auth, signIn, signOut } = NextAuth({ - + ```ts filename="/src/routes/plugin@auth.ts" import { QwikAuth$ } from "@auth/qwik" import Nodemailer from "@auth/qwik/providers/nodemailer" @@ -688,7 +914,7 @@ export const { handlers, auth, signIn, signOut } = NextAuth({ - + ```ts filename="/src/routes/plugin@auth.ts" import { QwikAuth$ } from "@auth/qwik" import Postmark from "@auth/qwik/providers/postmark" @@ -745,6 +971,30 @@ export function SignIn() { ``` + + +```tsx filename="./components/sign-in.tsx" +"use client" +import { signIn } from "next-auth/react" + +export function SignIn() { + const postmarkAction = (formData: FormData) => { + signIn("postmark", formData) + } + + return ( +
    + + +
    + ) +} +``` + +
    ```ts filename="./components/sign-in.tsx" @@ -798,6 +1048,298 @@ Start your application, once the user enters their Email and clicks on the signi For more information on this provider go to the [Postmark docs page](/getting-started/providers/postmark).
    + + +### Loops Setup + + + +### Database Adapter + +Please make sure you've [setup a database adapter](/getting-started/database), as mentioned earlier, +a database is required for passwordless login to work as verification tokens need to be stored. + +### Create your Transactional Email Template on Loops + +Loops have provided a super handy [guide](https://loops.so/docs/transactional/guide) to help you get started with creating your transactional email template. +This provider only passes one data varaiable into the template, `url` which is the magic link to sign in. This is case sensitive, so make sure you use `url` in your template.
    +On the last page of Template creation, you'll need to copy the `TRANSACTIONAL ID`. If you skipped this step, don't worry, you can get this at any from the Template edit page. + +### Create an API Key on Loops + +You'll need to create an API key to authenticate with Loops. This key should be kept secret and not shared with anyone. +You can Generate a key by going to the [API Settings Page](https://app.loops.so/settings?page=api) and clicking Generate. +You should name the key something that makes sense to you, like "Auth.js". + +### Setup Environment Variables + +To implement Loops, you need to set up the following environment variables. You should have these from the previous steps. + +```bash filename=".env" +AUTH_LOOPS_KEY=abc123 +AUTH_LOOPS_TRANSACTIONAL_ID=def456 +``` + +### Setup Provider + +Let's enable `Loops` as a sign-in option for our Auth.js configuration. You'll have to import the `Loops` provider from the package and pass it to the providers array we set up earlier in the Auth.js config file: + + + + +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import Loops from "next-auth/providers/loops" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [ + Loops({ + apiKey: process.env.AUTH_LOOPS_KEY, + transactionalId: process.env.AUTH_LOOPS_TRANSACTIONAL_ID, + }), + ], +}) +``` + + + + +```ts filename="./src/auth.ts" +import SvelteKitAuth from "@auth/sveltekit" +import Loops from "@auth/sveltekit/providers/loops" +import { + AUTH_LOOPS_KEY, + AUTH_LOOPS_TRANSACTIONAL_ID, +} from "$env/static/private" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + providers: [ + Loops({ + apiKey: AUTH_LOOPS_KEY, + transactionalId: AUTH_LOOPS_TRANSACTIONAL_ID, + }), + ], +}) +``` + +```ts filename="./src/hooks.server.ts" +export { handle } from "./auth" +``` + + + + +### Add Signin Button + +Next, we add a signin button somewhere in your application like the Navbar. This will send an email to the user containing the magic link to sign in. + + + + +```tsx filename="./components/sign-in.tsx" +import { signIn } from "../../auth.ts" + +export function SignIn() { + return ( +
    { + "use server" + await signIn("loops", formData) + }} + > + + +
    + ) +} +``` + +
    + + +```ts filename="src/routes/+page.svelte" + + + +
    + +
    + +``` + +
    +
    + +### Signin + +Start your application, click on the signin button we just added, and you should see Auth.js built-in sign in page with the option to sign in with your email. +A user can enter their email, click "Sign in with Loops", and receive their beautifully formatted signin email. +Clicking on the link in the email will redirect the user to your application, landing already authenticated! + +
    +
    + + +### Mailgun Setup + + + +### Database Adapter + +Please make sure you've [setup a database adapter](/getting-started/database), as mentioned earlier, +a database is required for passwordless login to work as verification tokens need to be stored. + +### Setup Environment Variables + +Auth.js will automatically pick up these if formatted like the example above. +You can [also use a different name for the environment variables](/guides/environment-variables#oauth-variables) if needed, but then you’ll need to pass them to the provider manually. + +```bash filename=".env" +AUTH_MAILGUN_KEY=abc123 +``` + +### Setup Provider + +Let’s enable `Mailgun` as a sign in option in our Auth.js configuration. +You’ll have to import the `Mailgun` provider from the package and pass it to the providers array we setup earlier in the Auth.js config file: + + + + +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import Mailgun from "next-auth/providers/mailgun" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [Mailgun], +}) +``` + + + + +```ts filename="/src/routes/plugin@auth.ts" +import { QwikAuth$ } from "@auth/qwik" +import Mailgun from "@auth/qwik/providers/mailgun" + +export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( + () => ({ + providers: [Mailgun], + }) +) +``` + + + + +```ts filename="./src/auth.ts" +import SvelteKitAuth from "@auth/sveltekit" +import Mailgun from "@auth/sveltekit/providers/mailgun" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + providers: [Mailgun], +}) +``` - +```ts filename="./src/hooks.server.ts" +export { handle } from "./auth" +``` + + + + +### Add Signin Button + +Next, we can add a signin button somewhere in your application like the Navbar. This will send an email to the user containing the magic link to sign in. + + + + +```tsx filename="./components/sign-in.tsx" +import { signIn } from "../../auth.ts" + +export function SignIn() { + return ( +
    { + "use server" + await signIn("mailgun", formData) + }} + > + + +
    + ) +} +``` + +
    + + +```ts filename="./components/sign-in.tsx" +import { component$ } from "@builder.io/qwik" +import { useSignIn } from "./plugin@auth" + +export default component$(() => { + const signInSig = useSignIn() + + return ( + + ) +}) +``` + + + + +```html filename="src/routes/+page.svelte" + + +
    + +
    +``` + +
    +
    + +### Signin + +Start your application, once the user enters their Email and clicks on the signin button, they'll be redirected to a page that asks them to check their email. When they click on the link in their email, they will be signed in. + +
    + + + Check our [Customising magic links + emails](/getting-started/providers/mailgun#customization) to learn how to + change the look and feel of the emails the user receives to sign in. + + +For more information on this provider go to the [Mailgun docs page](/getting-started/providers/mailgun). + +
    +
    diff --git a/docs/pages/getting-started/database.mdx b/docs/pages/getting-started/database.mdx index af9d69a8da..0e455ccdfa 100644 --- a/docs/pages/getting-started/database.mdx +++ b/docs/pages/getting-started/database.mdx @@ -43,7 +43,7 @@ monorepo](https://github.com/nextauthjs/next-auth/tree/main/packages). If you're ## Models -This is a generic ER Diagram of what the full database schema should look like. Your database adapter of choice will include a template schema with more details for applying this schema to the underlying database. For more details, check out our [database models](/concepts/database-models) documentation. Please note, that the entire schema is not required for every use-case, for more details check out out our [database adapters guide](/guides/creating-a-database-adapter). +This is a generic ER Diagram of what the full database schema should look like. Your database adapter of choice will include a template schema with more details for applying this schema to the underlying database. For more details, check out our [database models](/concepts/database-models) documentation. Please note, that the entire schema is not required for every use-case, for more details check out our [database adapters guide](/guides/creating-a-database-adapter). ```mermaid %%{init: {'theme':'neutral'}}%% diff --git a/docs/pages/getting-started/deployment.mdx b/docs/pages/getting-started/deployment.mdx index 96ff2c5dfa..13a4c7684e 100644 --- a/docs/pages/getting-started/deployment.mdx +++ b/docs/pages/getting-started/deployment.mdx @@ -11,18 +11,12 @@ import { Accordion, Accordions } from "@/components/Accordion" distinguished from other environment variables more easily. -Auth.js libraries require you to set an `AUTH_SECRET` environment variable. This is used to encrypt cookies and tokens. It should be a random string of at least 32 characters. On UNIX based systems you can use this command: +Auth.js libraries require you to set an `AUTH_SECRET` environment variable. This is used to encrypt cookies and tokens. It should be a cryptographically secure random string of at least 32 characters: ```bash npm2yarn npm exec auth secret ``` -Alternatively, you can use the following `openssl` command, which should be available on all Linux / Mac OS X systems. - -```bash -openssl rand -base64 33 -``` - If you are using an [OAuth Provider](/concepts/oauth), your provider will provide you with a **Client ID** and **Client Secret** that you will need to set as environment variables as well (in the case of an OIDC provider, like Auth0, a third `issuer` value might be also required, refer to the provider's specific documentation). @@ -174,7 +168,7 @@ Most OAuth providers cannot be configured with multiple callback URLs or using a However, Auth.js **supports Preview deployments**, even **with OAuth providers**. The idea is to have one deployment which proxies authentication requests to the dynamic URLs of your main application. So you could have 1 stable deployment, like at `auth.company.com` where you would point all your OAuth provider's `callbackUrl`s, and this application would then, upon successful authentication, redirect the user back to the preview deploy URL, like `https://git-abc123-myapp.vercel.app`. Follow these steps to get started with securing preview deploys with Auth.js. 1. Determine a stable deployment URL. For example, a deployment whose URL does not change between builds, for example. `auth.yourdomain.com` (using a subdomain is not a requirement, this can be the main site's URL too, for example.) -2. In your preview deploy application, set `AUTH_REDIRECT_PROXY_URL` to that stable deployment URL, including the path from where Auth.js handles the routes. Eg.: (`https://auth.yourdomain.com/api/auth`) +2. In both the preview and stable environment, set `AUTH_REDIRECT_PROXY_URL` to that stable deployment URL, including the path from where Auth.js handles the routes. Eg.: (`https://auth.yourdomain.com/api/auth`) 3. Update the `callbackUrl` in your OAuth provider's configuration to use the stable deployment URL. For example, for GitHub it would be `https://auth.yourdomain.com/api/auth/callback/github`. Fun fact: all of our example apps are using the proxy functionality! diff --git a/docs/pages/getting-started/index.mdx b/docs/pages/getting-started/index.mdx index f03fad3e30..ceee02642a 100644 --- a/docs/pages/getting-started/index.mdx +++ b/docs/pages/getting-started/index.mdx @@ -51,7 +51,7 @@ Select your framework of choice to get started, or view the example application
    -Check the [integrations page](/getting-started/integrations) for all supported packages. We are working on supporting more frameworks, but you can create own or +Check the [integrations page](/getting-started/integrations) for all supported packages. We are working on supporting more frameworks, but you can create your own or help us create one for your favorite framework. @@ -70,7 +70,7 @@ history](/contributors#history). There are 4 ways to authenticate users with Auth.js: - [OAuth authentication](/getting-started/authentication/oauth) (_Sign in with Google, GitHub, LinkedIn, etc..._) -- [Magic Links](/getting-started/authentication/email) (_Email Provider like Resend, Sendgrid, Nodemailer etc..._) +- [Magic Links](/getting-started/authentication/email) (_Email Provider like Forward Email, Resend, Sendgrid, Nodemailer etc..._) - [Credentials](/getting-started/authentication/credentials) (_Username and Password, Integrating with external APIs, etc..._) - [WebAuthn](/getting-started/authentication/webauthn) (_Passkeys, etc..._) diff --git a/docs/pages/getting-started/installation.mdx b/docs/pages/getting-started/installation.mdx index 544ee8f693..e8c57de3dc 100644 --- a/docs/pages/getting-started/installation.mdx +++ b/docs/pages/getting-started/installation.mdx @@ -15,8 +15,6 @@ Start by installing the appropriate package for your framework. - - You can use the Qwik starter script: ```bash npm2yarn npm run qwik add auth diff --git a/docs/pages/getting-started/integrations.mdx b/docs/pages/getting-started/integrations.mdx index 3caf63f38a..10694d00f9 100644 --- a/docs/pages/getting-started/integrations.mdx +++ b/docs/pages/getting-started/integrations.mdx @@ -48,8 +48,7 @@ them and are interested in collaborating, please do not hesitate to reach out! | Rakkas | [Auth.js Integration Example](https://github.com/rakkasjs/rakkasjs/tree/main/examples/auth) | | SolidStart | [`@solid-mediakit/auth`](https://www.npmjs.com/package/@solid-mediakit/auth) | | Astro | [`auth-astro`](https://github.com/nowaythatworked/auth-astro) | -| Nuxt | [`@sidebase/nuxt-auth`](https://sidebase.io/nuxt-auth/) | -| Nuxt | [`@hebilicious/authjs-nuxt`](https://authjs-nuxt.pages.dev/) | +| Nuxt | [`@sidebase/nuxt-auth`](https://auth.sidebase.io) | ### Help needed diff --git a/docs/pages/getting-started/providers/asgardeo.mdx b/docs/pages/getting-started/providers/asgardeo.mdx index 2fb17b0c3c..b3ce1767e7 100644 --- a/docs/pages/getting-started/providers/asgardeo.mdx +++ b/docs/pages/getting-started/providers/asgardeo.mdx @@ -42,6 +42,7 @@ https://example.com/auth/callback/asgardeo ``` AUTH_ASGARDEO_ID AUTH_ASGARDEO_SECRET +AUTH_ASGARDEO_ISSUER ``` ### Configuration diff --git a/docs/pages/getting-started/providers/descope.mdx b/docs/pages/getting-started/providers/descope.mdx index 5e3d8dd44f..f5b37bac4f 100644 --- a/docs/pages/getting-started/providers/descope.mdx +++ b/docs/pages/getting-started/providers/descope.mdx @@ -43,6 +43,7 @@ https://example.com/auth/callback/descope ``` AUTH_DESCOPE_ID AUTH_DESCOPE_SECRET +AUTH_DESCOPE_ISSUER ``` ### Configuration @@ -104,3 +105,9 @@ app.use("/auth/*", ExpressAuth({ providers: [Descope] })) + +### Using Descope Widgets + +If you wish to use Descope [Widgets](https://docs.descope.com/widgets) with NextAuth.js, you will have to wrap your NextAuth.js components with our Next.js SDK and ``. + +For more information on this, please look at our documentation [here](https://docs.descope.com/getting-started/nextauth/app-router#nextauth-and-widgets). diff --git a/docs/pages/getting-started/providers/forwardemail.mdx b/docs/pages/getting-started/providers/forwardemail.mdx new file mode 100644 index 0000000000..b920f4223a --- /dev/null +++ b/docs/pages/getting-started/providers/forwardemail.mdx @@ -0,0 +1,279 @@ +import { Callout, Tabs } from "nextra/components" +import { Code } from "@/components/Code" + + + +# Forward Email Provider + +## Overview + +The Forward Email provider uses email to send "magic links" that contain URLs with verification tokens can be used to sign in. + +Adding support for signing in via email in addition to one or more OAuth services provides a way for users to sign in if they lose access to their OAuth account (e.g. if it is locked or deleted). + +The Forward Email provider can be used in conjunction with (or instead of) one or more OAuth providers. + +### How it works + +On initial sign in, a **Verification Token** is sent to the email address provided. By default this token is valid for 24 hours. If the Verification Token is used within that time (i.e. by clicking on the link in the email) an account is created for the user and they are signed in. + +If someone provides the email address of an _existing account_ when signing in, an email is sent and they are signed into the account associated with that email address when they follow the link in the email. + + + The Forward Email provider can be used with both BasicAuth and database + managed sessions, however **you must configure a database** to use it. It is + not possible to enable email sign in without using a database. + + +## Configuration + +1. First, you'll need to [add your domain](https://forwardemail.net/my-account/domains) to your Forward Email account. This is required by Forward Email and this domain of the address you use in the `from` provider option. + +2. Next, you will have to generate an API key in the [My Account → Security](https://forwardemail.net/my-account/security). You can save this API key as the `AUTH_FORWARDEMAIL_KEY` environment variable. + +```sh +AUTH_FORWARDEMAIL_KEY=abc +``` + +If you name your environment variable `AUTH_FORWARDEMAIL_KEY`, the provider will pick it up automatically and your Auth.js configuration object can be simpler. If you'd like to rename it to something else, however, you'll have to manually pass it into the provider in your Auth.js configuration. + + + + +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import ForwardEmail from "next-auth/providers/forwardemail" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + adapter: ..., + providers: [ + ForwardEmail({ + // If your environment variable is named differently than default + apiKey: AUTH_FORWARDEMAIL_KEY, + from: "no-reply@company.com" + }), + ], +}) +``` + + + + +```ts filename="/src/routes/plugin@auth.ts" +import { QwikAuth$ } from "@auth/qwik" +import ForwardEmail from "@auth/qwik/providers/forwardemail" + +export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( + () => ({ + providers: [ + ForwardEmail({ + // If your environment variable is named differently than default + apiKey: import.meta.env.AUTH_FORWARDEMAIL_KEY, + from: "no-reply@company.com", + }), + ], + }) +) +``` + + + + +```ts filename="./src/auth.ts" +import { SvelteKitAuth } from "@auth/sveltekit" +import ForwardEmail from "@auth/sveltekit/providers/forwardemail" +import { env } from "$env/dynamic/prviate" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + adapter: ..., + providers: [ + ForwardEmail({ + // If your environment variable is named differently than default + apiKey: env.AUTH_FORWARDEMAIL_KEY, + from: "no-reply@company.com", + }), + ], +}) +``` + + + + +4. Do not forget to setup one of the [database adapters](https://authjs.dev/getting-started/database) for storing the Email verification token. + +5. You can now start the sign-in process with an email address at `/api/auth/signin`. + +A user account (i.e. an entry in the `Users` table) will not be created for the user until the first time they verify their email address. If an email address is already associated with an account, the user will be signed in to that account when they click the link in magic link email and use up the verification token. + +## Customization + +### Email Body + +You can fully customize the sign in email that is sent by passing a custom function as the `sendVerificationRequest` option to `ForwardEmail()`. + +```js {7} filename="./auth.ts" +import NextAuth from "next-auth" +import ForwardEmail from "next-auth/providers/forwardemail" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [ + ForwardEmail({ + server: process.env.EMAIL_SERVER, + from: process.env.EMAIL_FROM, + sendVerificationRequest({ + identifier: email, + url, + provider: { server, from }, + }) { + // your function + }, + }), + ], +}) +``` + +As an example, the following shows the source for our built-in `sendVerificationRequest()` method. Notice that we're rendering the HTML (`html()`) and making the network call (`fetch()`) to Forward Email to actually do the sending here in this method. + +```ts filename="./lib/authSendRequest.ts" {4, 14} +export async function sendVerificationRequest(params) { + const { identifier: to, provider, url, theme } = params + const { host } = new URL(url) + const res = await fetch("https://api.forwardemail.net/v1/emails", { + method: "POST", + headers: { + Authorization: `Basic ${btoa(provider.apiKey + ":")}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + from: provider.from, + to, + subject: `Sign in to ${host}`, + html: html({ url, host, theme }), + text: text({ url, host }), + }), + }) + + if (!res.ok) + throw new Error("Forward Email error: " + JSON.stringify(await res.json())) +} + +function html(params: { url: string; host: string; theme: Theme }) { + const { url, host, theme } = params + + const escapedHost = host.replace(/\./g, "​.") + + const brandColor = theme.brandColor || "#346df1" + const color = { + background: "#f9f9f9", + text: "#444", + mainBackground: "#fff", + buttonBackground: brandColor, + buttonBorder: brandColor, + buttonText: theme.buttonText || "#fff", + } + + return ` + + + + + + + + + + + +
    + Sign in to ${escapedHost} +
    + + + + +
    Sign + in
    +
    + If you did not request this email you can safely ignore it. +
    + +` +} + +// Email Text body (fallback for email clients that don't render HTML, e.g. feature phones) +function text({ url, host }: { url: string; host: string }) { + return `Sign in to ${host}\n${url}\n\n` +} +``` + + + If you want to generate great looking emails with React that are compatible + with many email clients, check out [mjml](https://mjml.io) or + [react-email](https://react.email) + + +### Verification Tokens + +By default, we are generating a random verification token. You can define a `generateVerificationToken` method in your provider options if you want to override it: + +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import ForwardEmail from "next-auth/providers/forwardemail" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [ + ForwardEmail({ + async generateVerificationToken() { + return crypto.randomUUID() + }, + }), + ], +}) +``` + +### Normalizing Email Addresses + +By default, Auth.js will normalize the email address. It treats the address as case-insensitive (which is technically not compliant to the [RFC 2821 spec](https://datatracker.ietf.org/doc/html/rfc2821), but in practice this causes more problems than it solves, i.e. when looking up users by e-mail from databases.) and also removes any secondary email address that may have been passed in as a comma-separated list. You can apply your own normalization via the `normalizeIdentifier` method on the `ForwardEmail` provider. The following example shows the default behavior: + +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import ForwardEmail from "next-auth/providers/forwardemail" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [ + ForwardEmail({ + normalizeIdentifier(identifier: string): string { + // Get the first two elements only, + // separated by `@` from user input. + let [local, domain] = identifier.toLowerCase().trim().split("@") + // The part before "@" can contain a "," + // but we remove it on the domain part + domain = domain.split(",")[0] + return `${local}@${domain}` + + // You can also throw an error, which will redirect the user + // to the sign-in page with error=EmailSignin in the URL + // if (identifier.split("@").length > 2) { + // throw new Error("Only one email allowed") + // } + }, + }), + ], +}) +``` + + + Always make sure this returns a single e-mail address, even if multiple ones + were passed in. + diff --git a/docs/pages/getting-started/providers/loops.mdx b/docs/pages/getting-started/providers/loops.mdx new file mode 100644 index 0000000000..77a5672f38 --- /dev/null +++ b/docs/pages/getting-started/providers/loops.mdx @@ -0,0 +1,103 @@ +import { Callout } from "nextra/components" +import { Code } from "@/components/Code" + + + +# Loops Provider + +## Overview + +The Loops provider uses email to send "magic links" that contain URLs with verification tokens can be used to sign in. + +Adding support for signing in via email in addition to one or more OAuth services provides a way for users to sign in if they lose access to their OAuth account (e.g. if it is locked or deleted). + +The Loops provider can be used in conjunction with (or instead of) one or more OAuth providers. + +## How it works + +On initial sign in, a **Verification Token** is sent to the email address provided. By default this token is valid for 24 hours. If the Verification Token is used within that time (i.e. by clicking on the link in the email) an account is created for the user and they are signed in. + +If someone provides the email address of an _existing account_ when signing in, an email is sent and they are signed into the account associated with that email address when they follow the link in the email. + + + The Loops provider can be used with both JSON Web Token and database managed + sessions, however **you must configure a database** to use it. It is not + possible to enable email sign in without using a database. + + +## Configuration + +### Add and Verify your Domain on Loops + +First, you'll need to have completed the steps covered in the ['Start here'](https://loops.so/docs/start-here) Loops documentation. +The main thing required is to [set up your domain records](https://loops.so/docs/start-here#1-set-up-your-domain-records). + +### Generate an API Key + +Next, you will have to generate an API key in the [Loops Dashboard](https://loops.so/api-keys). You can save this API key as the `AUTH_LOOPS_KEY` environment variable. + +```sh +AUTH_LOOPS_KEY=abc +``` + +### Create a Transactional Email Template on Loops + +The easiest way to achieve this is using the [Loops email editor](https://loops.so/docs/creating-emails/editor) to create a transactional email template. +If you're new to Loops, you can find rich documentation [here](https://loops.so/docs/transactional/guide). + +
    +Copy the Transactional ID value from the last page of the template creation +process, and save this as the `AUTH_LOOPS_TRANSACTIONAL_ID` environment +variable. If you're following these steps, you should now have two environment +variables set up for Loops. + +```sh +AUTH_LOOPS_KEY=abc +AUTH_LOOPS_TRANSACTIONAL_ID=def +``` + + + When creating your email template, make sure to include the `url` variable in + the template. This is the URL that will sent to the user, allowing them to + signin. + + + + +### Configure AuthJS with the Loops Provider +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import Loops from "next-auth/providers/loops" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + adapter: ..., // database adapter of your choosing + providers: [ + Loops({ + apiKey: process.env.AUTH_LOOPS_KEY, + transactionalId: process.env.AUTH_LOOPS_TRANSACTIONAL_ID, + }), + ], +}) +``` + + + +### Configure AuthJS with the Loops Provider +```ts filename="./src/auth.ts" +import { SvelteKitAuth } from "@auth/sveltekit" +import Loops from "@auth/sveltekit/providers/loops" +import { AUTH_LOOPS_KEY, AUTH_LOOPS_TRANSACTIONAL_ID } from "@env/static/private" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + adapter: ..., // database adapter of your choosing + providers: [ + Loops({ + apiKey: AUTH_LOOPS_KEY, + transactionalId: AUTH_LOOPS_TRANSACTIONAL_ID, + }), + ], +}) +``` + + + diff --git a/docs/pages/getting-started/providers/mailgun.mdx b/docs/pages/getting-started/providers/mailgun.mdx new file mode 100644 index 0000000000..d4fae4e556 --- /dev/null +++ b/docs/pages/getting-started/providers/mailgun.mdx @@ -0,0 +1,280 @@ +import { Callout } from "nextra/components" +import { Code } from "@/components/Code" + + + +# Mailgun Provider + +## Resources + +- [Mailgun documentation](https://documentation.mailgun.com/docs/mailgun) + +## Overview + +The Mailgun provider uses email to send "magic links" that contain URLs with verification tokens can be used to sign in. + +Adding support for signing in via email in addition to one or more OAuth services provides a way for users to sign in if they lose access to their OAuth account (e.g. if it is locked or deleted). + +The Mailgun provider can be used in conjunction with (or instead of) one or more OAuth providers. + +### How it works + +On initial sign in, a **Verification Token** is sent to the email address provided. By default this token is valid for 24 hours. If the Verification Token is used within that time (i.e. by clicking on the link in the email) an account is created for the user and they are signed in. + +If someone provides the email address of an _existing account_ when signing in, an email is sent and they are signed into the account associated with that email address when they follow the link in the email. + + + The Mailgun provider can be used with both JSON Web Token and database managed + sessions, however **you must configure a database** to use it. It is not + possible to enable email sign in without using a database. + + +## Configuration + +1. First, you'll need to [add your domain](https://app.mailgun.com/mg/sending/domains) to your Mailgun account. This is required by Mailgun and this domain of the address you use in the `from` provider option. + +2. Next, you will have to generate an API key in the [Mailgun Settings](https://app.mailgun.com/settings/api_security/api_keys). You can save this API key as the `AUTH_MAILGUN_KEY` environment variable. + +```sh +AUTH_MAILGUN_KEY=abc +``` + +If you name your environment variable `AUTH_MAILGUN_KEY`, the provider will pick it up automatically and your Auth.js configuration object can be simpler. If you'd like to rename it to something else, however, you'll have to manually pass it into the provider in your Auth.js configuration. + + + + +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import Mailgun from "next-auth/providers/mailgun" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + adapter: ..., + providers: [ + Mailgun({ + // If your environment variable is named differently than default + apiKey: import.meta.env.AUTH_MAILGUN_KEY, + from: "no-reply@company.com" + }), + ], +}) +``` + + + + +```ts filename="/src/routes/plugin@auth.ts" +import { QwikAuth$ } from "@auth/qwik" +import Mailgun from "@auth/qwik/providers/mailgun" + +export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( + () => ({ + providers: [ + Mailgun({ + // If your environment variable is named differently than default + apiKey: import.meta.env.AUTH_MAILGUN_KEY, + from: "no-reply@company.com", + }), + ], + }) +) +``` + + + + +```ts filename="./src/auth.ts" +import { SvelteKitAuth } from "@auth/sveltekit" +import Mailgun from "@auth/sveltekit/providers/mailgun" +import { env } from "$env/dynamic/prviate" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + adapter: ..., + providers: [ + Mailgun({ + // If your environment variable is named differently than default + apiKey: env.AUTH_MAILGUN_KEY, + from: "no-reply@company.com", + }), + ], +}) +``` + + + + +4. Do not forget to setup one of the [database adapters](https://authjs.dev/getting-started/database) for storing the Email verification token. + +5. You can now start the sign-in process with an email address at `/api/auth/signin`. + +A user account (i.e. an entry in the `Users` table) will not be created for the user until the first time they verify their email address. If an email address is already associated with an account, the user will be signed in to that account when they click the link in magic link email and use up the verification token. + +## Customization + +### Email Body + +You can fully customize the sign in email that is sent by passing a custom function as the `sendVerificationRequest` option to `Mailgun()`. + +```js {7} filename="./auth.ts" +import NextAuth from "next-auth" +import Mailgun from "next-auth/providers/mailgun" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [ + Mailgun({ + server: process.env.EMAIL_SERVER, + from: process.env.EMAIL_FROM, + sendVerificationRequest({ + identifier: email, + url, + provider: { server, from }, + }) { + // your function + }, + }), + ], +}) +``` + +As an example, the following shows the source for our built-in `sendVerificationRequest()` method. Notice that we're rendering the HTML (`html()`) and making the network call (`fetch()`) to Mailgun to actually do the sending here in this method. + +```ts filename="./lib/authSendRequest.ts" {13, 16} +export async function sendVerificationRequest(params) { + const { identifier: to, provider, url, theme } = params + const { host } = new URL(url) + const domain = provider.from.split("@").at(1) + + if (!domain) throw new Error("malformed Mailgun domain") + + const form = new FormData() + form.append("from", `${provider.name} <${provider.from}>`) + form.append("to", to) + form.append("subject", `Sign in to ${host}`) + form.append("html", html({ host, url, theme })) + form.append("text", text({ host, url })) + + const res = await fetch(`https://api.mailgun.net/v3/${domain}/messages`, { + method: "POST", + headers: { + Authorization: `Basic ${btoa(`api:${provider.apiKey}`)}`, + }, + body: form, + }) + + if (!res.ok) throw new Error("Mailgun error: " + (await res.text())) +} + +function html(params: { url: string; host: string; theme: Theme }) { + const { url, host, theme } = params + + const escapedHost = host.replace(/\./g, "​.") + + const brandColor = theme.brandColor || "#346df1" + const color = { + background: "#f9f9f9", + text: "#444", + mainBackground: "#fff", + buttonBackground: brandColor, + buttonBorder: brandColor, + buttonText: theme.buttonText || "#fff", + } + + return ` + + + + + + + + + + + +
    + Sign in to ${escapedHost} +
    + + + + +
    Sign + in
    +
    + If you did not request this email you can safely ignore it. +
    + +` +} + +// Email Text body (fallback for email clients that don't render HTML, e.g. feature phones) +function text({ url, host }: { url: string; host: string }) { + return `Sign in to ${host}\n${url}\n\n` +} +``` + + + If you want to generate great looking emails with React that are compatible + with many email clients, check out [mjml](https://mjml.io) or + [react-email](https://react.email) + + +### Verification Tokens + +By default, we are generating a random verification token. You can define a `generateVerificationToken` method in your provider options if you want to override it: + +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import Mailgun from "next-auth/providers/mailgun" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [ + Mailgun({ + async generateVerificationToken() { + return crypto.randomUUID() + }, + }), + ], +}) +``` + +### Normalizing Email Addresses + +By default, Auth.js will normalize the email address. It treats the address as case-insensitive (which is technically not compliant to the [RFC 2821 spec](https://datatracker.ietf.org/doc/html/rfc2821), but in practice this causes more problems than it solves, i.e. when looking up users by e-mail from databases.) and also removes any secondary email address that may have been passed in as a comma-separated list. You can apply your own normalization via the `normalizeIdentifier` method on the `Mailgun` provider. The following example shows the default behavior: + +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import Mailgun from "next-auth/providers/mailgun" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [ + Mailgun({ + normalizeIdentifier(identifier: string): string { + // Get the first two elements only, + // separated by `@` from user input. + let [local, domain] = identifier.toLowerCase().trim().split("@") + // The part before "@" can contain a "," + // but we remove it on the domain part + domain = domain.split(",")[0] + return `${local}@${domain}` + + // You can also throw an error, which will redirect the user + // to the sign-in page with error=EmailSignin in the URL + // if (identifier.split("@").length > 2) { + // throw new Error("Only one email allowed") + // } + }, + }), + ], +}) +``` + + + Always make sure this returns a single e-mail address, even if multiple ones + were passed in. + diff --git a/docs/pages/getting-started/providers/microsoft-entra-id.mdx b/docs/pages/getting-started/providers/microsoft-entra-id.mdx index 65307b1248..b50db46ca2 100644 --- a/docs/pages/getting-started/providers/microsoft-entra-id.mdx +++ b/docs/pages/getting-started/providers/microsoft-entra-id.mdx @@ -54,7 +54,7 @@ https://example.com/auth/callback/microsoft-entra-id ``` AUTH_MICROSOFT_ENTRA_ID_ID AUTH_MICROSOFT_ENTRA_ID_SECRET -AUTH_MICROSOFT_ENTRA_ID_TENANT_ID +AUTH_MICROSOFT_ENTRA_ID_ISSUER ``` ### Configuration @@ -71,7 +71,7 @@ const { handlers, auth, signIn, signOut } = NextAuth({ MicrosoftEntraID({ clientId: process.env.AUTH_MICROSOFT_ENTRA_ID_ID, clientSecret: process.env.AUTH_MICROSOFT_ENTRA_ID_SECRET, - tenantId: process.env.AUTH_MICROSOFT_ENTRA_ID_TENANT_ID, + issuer: process.env.AUTH_MICROSOFT_ENTRA_ID_ISSUER, }), ], }) @@ -90,7 +90,7 @@ export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( Entra({ clientId: import.meta.env.AUTH_MICROSOFT_ENTRA_ID_ID, clientSecret: import.meta.env.AUTH_MICROSOFT_ENTRA_ID_SECRET, - tenantId: import.meta.env.AUTH_MICROSOFT_ENTRA_ID_TENANT_ID, + issuer: import.meta.env.AUTH_MICROSOFT_ENTRA_ID_ISSUER, }), ], }) @@ -110,7 +110,7 @@ export const { handle, signIn, signOut } = SvelteKitAuth({ Entra({ clientId: env.AUTH_MICROSOFT_ENTRA_ID_ID, clientSecret: env.AUTH_MICROSOFT_ENTRA_ID_SECRET, - tenantId: process.env.AUTH_MICROSOFT_ENTRA_ID_TENANT_ID, + issuer: process.env.AUTH_MICROSOFT_ENTRA_ID_ISSUER, }), ], }) @@ -130,7 +130,7 @@ app.use( Entra({ clientId: process.env.AUTH_MICROSOFT_ENTRA_ID_ID, clientSecret: process.env.AUTH_MICROSOFT_ENTRA_ID_SECRET, - tenantId: process.env.AUTH_MICROSOFT_ENTRA_ID_TENANT_ID, + issuer: process.env.AUTH_MICROSOFT_ENTRA_ID_ISSUER, }), ], }) @@ -153,15 +153,15 @@ app.use( - After your App Registration is created, under "Client Credential" create your Client secret. - Now copy your: - Application (client) ID - - Directory (tenant) ID - Client secret (value) + - Issuer In `.env.local` create the following entries: ``` AUTH_MICROSOFT_ENTRA_ID_ID= AUTH_MICROSOFT_ENTRA_ID_SECRET= -AUTH_MICROSOFT_ENTRA_ID_TENANT_ID= +AUTH_MICROSOFT_ENTRA_ID_ISSUER= ``` That will default the tenant to use the `common` authorization endpoint. [For more details see here](https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols#endpoints). diff --git a/docs/pages/getting-started/providers/nextcloud.mdx b/docs/pages/getting-started/providers/nextcloud.mdx new file mode 100644 index 0000000000..cf8c2ce384 --- /dev/null +++ b/docs/pages/getting-started/providers/nextcloud.mdx @@ -0,0 +1,136 @@ +import { Callout } from "nextra/components" +import { Code } from "@/components/Code" + + + +# Nextcloud Provider + +## Resources + +- [Nextcloud Documentation](https://docs.nextcloud.com/) +- [Nextcloud OAuth 2](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/oauth2.html) +- [Nextcloud Clients and Client APIs](https://docs.nextcloud.com/server/latest/developer_manual/client_apis/index.html) +- [Nextcloud User provisioning API](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_provisioning_api.html) + +## Setup + +### Callback URL + + + + +```bash +https://example.com/api/auth/callback/nextcloud +``` + + + + +```bash +https://example.com/auth/callback/nextcloud +``` + + + + +```bash +https://example.com/auth/callback/nextcloud +``` + + + + +### Environment Variables + +``` +AUTH_NEXTCLOUD_ID +AUTH_NEXTCLOUD_SECRET +AUTH_NEXTCLOUD_ISSUER +``` + +### Configuration + + + + +```ts +import NextAuth from "next-auth" +import Nextcloud from "next-auth/providers/nextcloud" + +const response = await NextAuth({ + providers: [ + Nextcloud({ + clientId: process.env.AUTH_NEXTCLOUD_ID, + clientSecret: process.env.AUTH_NEXTCLOUD_SECRET, + issuer: process.env.AUTH_NEXTCLOUD_ISSUER, + }), + ], +}) +``` + + + + +```ts filename="/src/routes/plugin@auth.ts" +import { QwikAuth$ } from "@auth/qwik" +import Nextcloud from "@auth/qwik/providers/nextcloud" + +export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( + () => ({ + providers: [ + Nextcloud({ + clientId: process.env.AUTH_NEXTCLOUD_ID, + clientSecret: process.env.AUTH_NEXTCLOUD_SECRET, + issuer: process.env.AUTH_NEXTCLOUD_ISSUER, + }), + ], + }) +) +``` + + + + +```ts filename="/src/auth.ts" +import { SvelteKitAuth } from "@auth/sveltekit" +import Nextcloud from "@auth/sveltekit/providers/nextcloud" +import { + AUTH_NEXTCLOUD_ID, + AUTH_NEXTCLOUD_SECRET, + AUTH_NEXTCLOUD_ISSUER, +} from "$env/static/private" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + providers: [ + Nextcloud({ + clientId: AUTH_NEXTCLOUD_ID, + clientSecret: AUTH_NEXTCLOUD_SECRET, + issuer: AUTH_NEXTCLOUD_ISSUER, + }), + ], +}) +``` + + + + +```ts filename="/src/app.ts" +import { ExpressAuth } from "@auth/express" +import Nextcloud from "@auth/express/providers/nextcloud" + +app.use( + "/auth/*", + ExpressAuth({ + providers: [ + Nextcloud({ + clientId: AUTH_NEXTCLOUD_ID, + clientSecret: AUTH_NEXTCLOUD_SECRET, + issuer: AUTH_NEXTCLOUD_ISSUER, + }), + ], + }) +) +``` + + + diff --git a/docs/pages/getting-started/providers/twitter.mdx b/docs/pages/getting-started/providers/twitter.mdx index 79c1769bc5..0a13a2d152 100644 --- a/docs/pages/getting-started/providers/twitter.mdx +++ b/docs/pages/getting-started/providers/twitter.mdx @@ -3,7 +3,7 @@ import { Code } from "@/components/Code" -# Twitter Provider +# Twitter/X Provider ## Resources @@ -97,17 +97,7 @@ app.use("/auth/*", ExpressAuth({ providers: [Twitter] })) -To enable OAuth 2.0, simply add version: "2.0" to your Provider configuration. - -```ts filename="./auth.ts" {4} -Twitter({ - clientId: process.env.TWITTER_ID, - clientSecret: process.env.TWITTER_SECRET, - version: "2.0", // opt-in to Twitter OAuth 2.0 -}) -``` - ### Notes -- Email is currently not supported by Twitter OAuth 2.0. -- You must enable the "Request email address from users" option in your app permissions if you want to obtain the users email address. +- Auth.js now uses Twitter/X OAuth 2.0 by default. There's no need to set `version` anymore. +- Email is currently not supported by Twitter/X OAuth 2.0. diff --git a/docs/pages/getting-started/providers/vipps-mobilepay.mdx b/docs/pages/getting-started/providers/vipps-mobilepay.mdx new file mode 100644 index 0000000000..700cd0d693 --- /dev/null +++ b/docs/pages/getting-started/providers/vipps-mobilepay.mdx @@ -0,0 +1,119 @@ +--- +title: Vipps MobilePay +--- + +import { Code } from "@/components/Code" + + + +# Vipps MobilePay Provider + +[Vipps MobilePay](https://vippsmobilepay.com/) is a widespread mobile payment application for mobile in Norway, Sweden, Denmark and Finland. The brand is split, where you have Vipps in Norway and Sweden, and MobilePay in Denmark and Finland, but both brands/apps are using the same API. + +## Resources + +- [Vipps MobilePay login documentation](https://developer.vippsmobilepay.com/docs/APIs/login-api/) +- [Official Vipps MobilePay Buttons](https://developer.vippsmobilepay.com/docs/knowledge-base/design-guidelines/buttons/) +- [Vipps MobilePay Public Testing discovery endpoint](https://apitest.vipps.no/access-management-1.0/access/.well-known/openid-configuration) +- [Vipps MobilePay Public Production discovery endpoint](https://api.vipps.no/access-management-1.0/access/.well-known/openid-configuration) + +## Setup + +### Callback URL + + + + +```bash +https://example.com/api/auth/callback/vipps +``` + + + + +```bash +https://example.com/auth/callback/vipps +``` + + + + +```bash +https://example.com/auth/callback/vipps +``` + + + + +### Environment Variables + +``` +AUTH_VIPPS_ID +AUTH_VIPPS_SECRET +``` + +### Test API + +To use the test mode, you need to override the issuer with the test API endpoint. + +``` +Vipps({ issuer: "https://apitest.vipps.no/access-management-1.0/access/" }) +``` + +### Configuration + + + + +```ts filename="/auth.ts" +import NextAuth from "next-auth" +import Vipps from "next-auth/providers/vipps" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + providers: [Vipps], +}) +``` + + + + +```ts filename="/src/routes/plugin@auth.ts" +import { QwikAuth$ } from "@auth/qwik" +import Vipps from "@auth/qwik/providers/vipps" + +export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( + () => ({ + providers: [Vipps], + }) +) +``` + + + + +```ts filename="/src/auth.ts" +import { SvelteKitAuth } from "@auth/sveltekit" +import Vipps from "@auth/sveltekit/providers/vipps" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + providers: [Vipps], +}) +``` + + + + +```ts filename="/src/app.ts" +import { ExpressAuth } from "@auth/express" +import Vipps from "@auth/express/providers/vipps" + +app.use("/auth/*", ExpressAuth({ providers: [Vipps] })) +``` + + + diff --git a/docs/pages/getting-started/session-management/get-session.mdx b/docs/pages/getting-started/session-management/get-session.mdx index a557f76c28..85909f365f 100644 --- a/docs/pages/getting-started/session-management/get-session.mdx +++ b/docs/pages/getting-started/session-management/get-session.mdx @@ -14,7 +14,7 @@ import { auth } from "../auth" export default async function UserAvatar() { const session = await auth() - if (!session.user) return null + if (!session?.user) return null return (
    @@ -27,10 +27,42 @@ export default async function UserAvatar() { -In the pages router, to access a session in a component, you'll first need to get the `session` object in a page and then pass it down to the component. +Although `next-auth` supports client-side data retrieval using `useSession` and `SessionProvider` for both the App Router and Pages Router, in real-world scenarios, these are used less frequently. Typically, you'll want to take full advantage of server-side rendering to optimize performance and security. + +### App Router + +```tsx filename="app/admin/dashboard.tsx" +"use client" +import { useSession } from "next-auth/react" + +export default function Dashboard() { + const { data: session } = useSession() + + if (session?.user?.role === "admin") { + return

    You are an admin, welcome!

    + } + + return

    You are not authorized to view this page!

    +} +``` + +```tsx filename="app/admin/page.tsx" +import { SessionProvider } from "next-auth/react" +import { Dashboard } from "./Dashboard" + +export default function Administrator() { + return ( + + + + ) +} +``` ### Page Server Side +In the pages router, to access a session in a component, you'll first need to get the `session` object in a page and then pass it down to the component. + ```tsx filename="./pages/dashboard.tsx" import { auth } from "@/auth.ts" import { UserAvatar } from "@/components/UserAvatar" @@ -99,7 +131,7 @@ export function UserAvatar({ session }: { session: Session | null }) { return (
    User Avatar
    @@ -143,8 +175,7 @@ Then you can access the `session` on the `$page.data` object in your page. diff --git a/docs/pages/getting-started/session-management/protecting.mdx b/docs/pages/getting-started/session-management/protecting.mdx index 2d62aada8c..67de091276 100644 --- a/docs/pages/getting-started/session-management/protecting.mdx +++ b/docs/pages/getting-started/session-management/protecting.mdx @@ -10,7 +10,7 @@ Protecting routes can be done generally by checking for the session and taking a -You can use the `auth` function returned from `NextAuth()` and exported from your `auth.js` configuration file to get the session object. +You can use the `auth` function returned from `NextAuth()` and exported from your `auth.ts` or `auth.js` configuration file to get the session object. ```tsx filename="app/server/page.tsx" {4} import { auth } from "@/auth" diff --git a/docs/pages/getting-started/typescript.mdx b/docs/pages/getting-started/typescript.mdx index fda9ad4158..3aacaa8d8d 100644 --- a/docs/pages/getting-started/typescript.mdx +++ b/docs/pages/getting-started/typescript.mdx @@ -77,6 +77,49 @@ export const { auth, handlers } = NextAuth({ ``` + + +```ts filename="plugin@auth.ts" +import { DefaultSession, QwikAuth$ } from "@auth/qwik" + +declare module "@auth/qwik" { + /** + * Returned by the `useSession` hook and the `session` object in the sharedMap + */ + interface Session { + user: { + /** The user's postal address. */ + address: string + /** + * By default, TypeScript merges new interface properties and overwrites existing ones. + * In this case, the default session user properties will be overwritten, + * with the new ones defined above. To keep the default session user properties, + * you need to add them back into the newly declared interface. + */ + } & DefaultSession["user"] + } +} + +export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$( + () => ({ + callbacks: { + session({ session, token, user }) { + // `session.user.address` is now a valid property, and will be type-checked + // in places like `useSession().user` or `sharedMap.get('session').user` + return { + ...session, + user: { + ...session.user, + address: user.address, + }, + } + }, + }, + }) +) +``` + + ```ts filename="auth.ts" diff --git a/docs/pages/global.css b/docs/pages/global.css index 54a8d7821d..7f6e4829ce 100644 --- a/docs/pages/global.css +++ b/docs/pages/global.css @@ -177,11 +177,6 @@ html[data-theme="dark"] .github-counter { animation: fadeOut 250ms ease-in; } -/* Nextra Tabs buttons - fix ring cutoff from overflow-hidden */ -button[id^="headlessui-tabs-tab"] { - margin: 0 3px 0 3px; -} - #carbonads_bak { @apply flex flex-col gap-1 rounded-md bg-neutral-100 p-3 text-xs text-neutral-500 dark:bg-neutral-800 dark:!text-neutral-400; @@ -207,11 +202,6 @@ button[id^="headlessui-tabs-tab"] { } } -/* Sidebar hack for padding for focus ring */ -aside.nextra-sidebar-container .nextra-scrollbar > div { - padding: 4px; -} - .sponsoredBadge { display: inline-block; width: max-content; @@ -257,3 +247,17 @@ div.nextra-search kbd { opacity: 0; } } + +:is(html[class~="dark"]) + > head:has(meta[content*="reference/core/providers"]) + + body + .provider { + color: #e2e8f0 !important; + background-color: transparent !important; +} + +html > head:has(meta[content*="reference/core/providers"]) + body .provider { + padding: 1rem; + font-size: 1rem; + color: #000 !important; +} diff --git a/docs/pages/guides/_meta.js b/docs/pages/guides/_meta.js index 404b3ceb9a..77e7f5d6ff 100644 --- a/docs/pages/guides/_meta.js +++ b/docs/pages/guides/_meta.js @@ -6,6 +6,8 @@ export default { "extending-the-session": "Extending the Session", "restricting-user-access": "Restricting users accessing to the app", "role-based-access-control": "Role-Based Access Control", + "corporate-proxy": "Supporting Corporate Proxies", + "edge-compatibility": "Edge Compatibility", "configuring-github": "Configuring GitHub for OAuth", "configuring-resend": "Configuring Resend for magic links", "configuring-oauth-providers": "Configuring OAuth providers", @@ -13,5 +15,4 @@ export default { "creating-a-database-adapter": "Creating a Database Adapter", "creating-a-framework-integration": "Creating a Framework Integration", "refresh-token-rotation": "Refresh Token Rotation", - "edge-compatibility": "Edge Compatibility", } diff --git a/docs/pages/guides/corporate-proxy.mdx b/docs/pages/guides/corporate-proxy.mdx new file mode 100644 index 0000000000..8a1541cc50 --- /dev/null +++ b/docs/pages/guides/corporate-proxy.mdx @@ -0,0 +1,37 @@ +import { Code } from "@/components/Code" + +# Supporting corporate proxies + +Auth.js libraries use the `fetch` API to communicate with OAuth providers. If your organization uses a corporate proxy, you may need to configure the `fetch` API to use the proxy. + +## Using a custom fetch function + +You can provide a custom `fetch` function by passing it as an option to the provider. + +Here, we use the `undici` library to make requests through a proxy server, by passing a `dispatcher` to the `fetch` implementation by `undici`. + + + + +```tsx filename="auth.ts" +import NextAuth, { customFetch } from "next-auth" +import GitHub from "next-auth/providers/github" +import { ProxyAgent, fetch as undici } from "undici" + +const dispatcher = new ProxyAgent("my.proxy.server") +function proxy(...args: Parameters): ReturnType { + // @ts-expect-error `undici` has a `duplex` option + return undici(args[0], { ...args[1], dispatcher }) +} + +export const { handlers, auth } = NextAuth({ + providers: [GitHub({ [customFetch]: proxy })], +}) +``` + + + + +## Resources + +- [`undici` - Basic Proxy Request with local agent dispatcher](https://undici.nodejs.org/#/docs/api/ProxyAgent?id=example-basic-proxy-request-with-local-agent-dispatcher) diff --git a/docs/pages/guides/creating-a-database-adapter.mdx b/docs/pages/guides/creating-a-database-adapter.mdx index a5d491144a..cde5fb6fed 100644 --- a/docs/pages/guides/creating-a-database-adapter.mdx +++ b/docs/pages/guides/creating-a-database-adapter.mdx @@ -8,6 +8,8 @@ Auth.js adapters are very flexible, and you can implement only the methods you n An Auth.js adapter is a function that receives an ORM/database client and returns an object with methods (based on the [`Adapter` interface](/reference/core/adapters#adapter)) that interact with the database. The same database Adapter will be compatible with any Auth.js library. +Optionally, you can run our [Adapter tests](https://github.com/nextauthjs/next-auth/blob/main/packages/utils/adapter.ts) on your adapter to ensure it is compliant with the Auth.js. + ## User management Auth.js differentiates between users and accounts. A user can have multiple accounts. An account is created for each provider type the user signs in with for the first time. For example, if a user signs in with Google and then with Facebook, they will have two accounts, one for each provider. The first provider the user signs in with will also be used to create the user object. See the [`profile()` provider method](/reference/core/providers#profile). @@ -146,7 +148,7 @@ See also: [Verification Token](/concepts/database-models#verification-token) mod If you created an adapter and want us to distribute it as an official package, please make sure it meets the following requirements. Check out this [existing adapter](https://github.com/nextauthjs/next-auth/tree/main/packages/adapter-prisma) to learn about the package structure, required files, test setup, config, etc. 1. The Adapter _must_ implement all methods of the [`Adapter` interface](/reference/core/adapters#adapter) -1. [Adapter tests](https://github.com/nextauthjs/next-auth/tree/main/packages/utils/adapter/index.ts) _must_ be included and _must_ pass. Docker is favored over services, to make CI resilient to network errors and to reduce the number of GitHub Action Secrets (which also lets us run these tests in fork PRs) +1. [Adapter tests](https://github.com/nextauthjs/next-auth/blob/main/packages/utils/adapter.ts) _must_ be included and _must_ pass. Docker is favored over services, to make CI resilient to network errors and to reduce the number of GitHub Action Secrets (which also lets us run these tests in fork PRs) 1. The Adapter _must_ follow these coding styles - Written in TypeScript diff --git a/docs/pages/guides/edge-compatibility.mdx b/docs/pages/guides/edge-compatibility.mdx index f2e489bfd5..4ae65343cb 100644 --- a/docs/pages/guides/edge-compatibility.mdx +++ b/docs/pages/guides/edge-compatibility.mdx @@ -108,7 +108,7 @@ export default async function Page() { return (
    -
    {session}
    +
    {JSON.stringify(session, null, 2)}
    ) } diff --git a/docs/pages/guides/environment-variables.mdx b/docs/pages/guides/environment-variables.mdx index 5e0ed17492..d30d0604bb 100644 --- a/docs/pages/guides/environment-variables.mdx +++ b/docs/pages/guides/environment-variables.mdx @@ -36,18 +36,12 @@ AUTH_SECRET="This is an example"
    -`AUTH_SECRET` is a random token used by the library to encrypt tokens and email verification hashes, and it's mandatory to keep things secure (See [Deployment](/getting-started/deployment) to learn more). You can use the CLI to generate an auth secret. +`AUTH_SECRET` is a random token used by the library to encrypt tokens and email verification hashes, and it's mandatory to keep things secure (See [Deployment](/getting-started/deployment) to learn more). You can use the CLI to generate an auth secret: ```bash npm2yarn npm exec auth secret ``` -Alternatively, on Linux and Mac OS X based systems you can use the `openssl` CLI. - -```bash -openssl rand -base64 33 -``` - ## Environment Variable Inference Auth.js is automatically configured to pick the right environment variables for `clientId` and `clientSecret` when using an [official OAuth provider](/getting-started/authentication/oauth). diff --git a/docs/pages/guides/extending-the-session.mdx b/docs/pages/guides/extending-the-session.mdx index 2b27518385..734cc6b3bc 100644 --- a/docs/pages/guides/extending-the-session.mdx +++ b/docs/pages/guides/extending-the-session.mdx @@ -17,7 +17,7 @@ A common use case is to add the user's id to the session. Below it is shown how To have access to the user id, add the following to your Auth.js configuration: ```ts filename="auth.ts" - providers, + // By default, the `id` property does not exist on `token` or `session`. See the [TypeScript](https://authjs.dev/getting-started/typescript) on how to add it. callbacks: { jwt({ token, user }) { if (user) { // User is available during sign-in @@ -44,7 +44,7 @@ Calls to `auth()` or `useSession()` will now have access to the user's id. If you are using a database session strategy, you can add the user's id to the session by modifying the `session` callback: ```ts filename="auth.ts" - providers, + // By default, the `id` property does not exist on `session`. See the [TypeScript](https://authjs.dev/getting-started/typescript) on how to add it. callbacks: { session({ session, user }) { session.user.id = user.id diff --git a/docs/pages/guides/pages/built-in-pages.mdx b/docs/pages/guides/pages/built-in-pages.mdx index 0e98fb2104..2a65261a3e 100644 --- a/docs/pages/guides/pages/built-in-pages.mdx +++ b/docs/pages/guides/pages/built-in-pages.mdx @@ -3,23 +3,7 @@ import { Screenshot } from "@/components/Screenshot" # Built-in Pages -Auth.js comes by default with a set of pages that are presented to the user as they go through their authentication journey (sign up, sign in, sign out, error, etc...). This is helpful so that you don't need to write those from scratch when using the library first time. - - - - -```tsx filename="components/sign-in.tsx" -"use client" - -import { signIn } from "next-auth/react" - -export function SignInButton() { - return -} -``` - - - +Auth.js comes by default with a set of pages that are presented to the user as they go through their authentication journey (sign up, sign in, sign out, error, etc...). This is helpful so that you don't need to write those from scratch when using the library first time. The UI created is based on the providers specified in your configuration file. If you do not pass a `providerId`, the `signIn` function will redirect the user to the signin page. diff --git a/docs/pages/guides/pages/error.mdx b/docs/pages/guides/pages/error.mdx index 20c65b064a..789665bd01 100644 --- a/docs/pages/guides/pages/error.mdx +++ b/docs/pages/guides/pages/error.mdx @@ -86,7 +86,7 @@ export default function AuthErrorPage() {
    {errorMap[error] || "Please contact us if this error persists."}
    -
    + ) } diff --git a/docs/pages/guides/pages/signin.mdx b/docs/pages/guides/pages/signin.mdx index d6a8499cca..c379b7c0a3 100644 --- a/docs/pages/guides/pages/signin.mdx +++ b/docs/pages/guides/pages/signin.mdx @@ -133,7 +133,9 @@ import { redirect } from "next/navigation" import { signIn, auth, providerMap } from "@/auth.ts" import { AuthError } from "next-auth" -export default async function SignInPage() { +export default async function SignInPage(props: { + searchParams: { callbackUrl: string | undefined } +}) { return (
    { "use server" try { - await signIn(provider.id) + await signIn(provider.id, { + redirectTo: props.searchParams?.callbackUrl ?? "", + }) } catch (error) { // Signin can fail for a number of reasons, such as the user // not existing, or the user not having the correct role. diff --git a/docs/pages/guides/refresh-token-rotation.mdx b/docs/pages/guides/refresh-token-rotation.mdx index 2a4330844c..b00be118ad 100644 --- a/docs/pages/guides/refresh-token-rotation.mdx +++ b/docs/pages/guides/refresh-token-rotation.mdx @@ -118,10 +118,10 @@ export const { handlers, auth } = NextAuth({ } } }, - }, - session: ({ session, token }) => { - session.error = token.error - return session + async session({ session, token }) { + session.error = token.error + return session + }, }, }) @@ -219,10 +219,6 @@ export const { handlers, signIn, signOut, auth } = NextAuth({ return session }, }, - session: ({ session, token }) => { - session.error = token.error - return session - }, }) declare module "next-auth" { @@ -248,7 +244,7 @@ import { useEffect } from "react" import { auth, signIn } from "@/auth" export default async function Page() { - const session = await useSession() + const session = await auth() if (session?.error === "RefreshTokenError") { await signIn("google") // Force sign in to obtain a new set of access and refresh tokens } @@ -266,7 +262,7 @@ import { useEffect } from "react" import { signIn, useSession } from "next-auth/react" export default function Page() { - const { data: session } = useSession() + const { data: session } = useSession() // For this to work, the Page should be wrapped inside the SessionProvider component in Layout useEffect(() => { if (session?.error !== "RefreshTokenError") return signIn("google") // Force sign in to obtain a new set of access and refresh tokens diff --git a/docs/pages/sponsors.mdx b/docs/pages/sponsors.mdx index b68f1c1849..4d8e0f4f4b 100644 --- a/docs/pages/sponsors.mdx +++ b/docs/pages/sponsors.mdx @@ -125,6 +125,11 @@ It would not be possible without the generous support of our sponsors. "https://avatars.githubusercontent.com/u/14985020?s=200&v=4", "Vercel", ], + [ + "https://route4me.com", + "https://avatars.githubusercontent.com/u/7936820?v=4", + "Route4Me", + ], [ "https://badass.dev", "https://avatars.githubusercontent.com/u/136839242?v=4", @@ -135,6 +140,16 @@ It would not be possible without the generous support of our sponsors. "https://avatars.githubusercontent.com/u/50438175?v=4", "Encore", ], + [ + "https://github.com/neondatabase/neon", + "https://avatars.githubusercontent.com/u/77690634?v=4", + "Neon", + ], + [ + "https://sent.dm", + "https://avatars.githubusercontent.com/u/153308555?v=4", + "Sent.dm", + ], ].map(([href, src, name]) => ( + + + + + + diff --git a/docs/public/img/providers/azure-ad.svg b/docs/public/img/providers/azure-ad.svg index f9201cf2a3..82ac48348c 100644 --- a/docs/public/img/providers/azure-ad.svg +++ b/docs/public/img/providers/azure-ad.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/public/img/providers/bungie.svg b/docs/public/img/providers/bungie.svg index 21f1813282..01e4f4390c 100644 --- a/docs/public/img/providers/bungie.svg +++ b/docs/public/img/providers/bungie.svg @@ -1 +1 @@ -image/svg+xml \ No newline at end of file +image/svg+xml diff --git a/docs/public/img/providers/concept2.svg b/docs/public/img/providers/concept2.svg new file mode 100644 index 0000000000..2d8b7e0bf3 --- /dev/null +++ b/docs/public/img/providers/concept2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/public/img/providers/forwardemail.svg b/docs/public/img/providers/forwardemail.svg new file mode 100644 index 0000000000..82cc1e0564 --- /dev/null +++ b/docs/public/img/providers/forwardemail.svg @@ -0,0 +1,139 @@ + + + Group 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TM + + + + + \ No newline at end of file diff --git a/docs/public/img/providers/loops.svg b/docs/public/img/providers/loops.svg new file mode 100644 index 0000000000..8f831f634d --- /dev/null +++ b/docs/public/img/providers/loops.svg @@ -0,0 +1,3 @@ + + + diff --git a/docs/public/img/providers/mailgun.svg b/docs/public/img/providers/mailgun.svg new file mode 100644 index 0000000000..0b8987ec80 --- /dev/null +++ b/docs/public/img/providers/mailgun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/public/img/providers/nextcloud.svg b/docs/public/img/providers/nextcloud.svg new file mode 100644 index 0000000000..afb786d497 --- /dev/null +++ b/docs/public/img/providers/nextcloud.svg @@ -0,0 +1 @@ + diff --git a/docs/public/img/providers/osu.svg b/docs/public/img/providers/osu.svg index 66077866a4..54f0ea5169 100644 --- a/docs/public/img/providers/osu.svg +++ b/docs/public/img/providers/osu.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/docs/public/img/providers/pipedrive.svg b/docs/public/img/providers/pipedrive.svg index e322bf1da2..fd080d04a6 100644 --- a/docs/public/img/providers/pipedrive.svg +++ b/docs/public/img/providers/pipedrive.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/docs/public/img/providers/vipps-mobilepay.svg b/docs/public/img/providers/vipps-mobilepay.svg new file mode 100644 index 0000000000..57bded639d --- /dev/null +++ b/docs/public/img/providers/vipps-mobilepay.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/img/providers/vipps.svg b/docs/public/img/providers/vipps.svg new file mode 100644 index 0000000000..c28a876f4d --- /dev/null +++ b/docs/public/img/providers/vipps.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/docs/tsconfig.json b/docs/tsconfig.json index f509920619..6d428110ce 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -20,7 +20,8 @@ "@/utils/*": ["utils/*"], "@/icons/*": ["components/Icons/*"], "@/icons": ["components/Icons"], - "@/data/*": ["pages/data/*"] + "@/data/*": ["pages/data/*"], + "@/hooks/*": ["hooks/*"] }, "plugins": [ { diff --git a/docs/typedoc.config.cjs b/docs/typedoc.config.cjs index 7822c6d730..c84463d38d 100644 --- a/docs/typedoc.config.cjs +++ b/docs/typedoc.config.cjs @@ -3,27 +3,22 @@ const fs = require("node:fs") const path = require("node:path") -const frameworks = fs +const isSkipAdapters = process.env.TYPEDOC_SKIP_ADAPTERS ? "skip" : "adapter-" +const excludePackages = new RegExp( + `(core|next-auth|frameworks-(?!template)|${isSkipAdapters})` +) + +const entryPoints = fs .readdirSync(path.resolve(__dirname, "../packages")) - .filter((dir) => dir.startsWith("frameworks-")) - .filter((dir) => dir !== "frameworks-template") + .filter((dir) => excludePackages.test(dir)) .map((dir) => `../packages/${dir}`) -frameworks.push("../packages/next-auth", "../packages/core") - -const adapters = process.env.TYPEDOC_SKIP_ADAPTERS - ? [] - : fs - .readdirSync(path.resolve(__dirname, "../packages")) - .filter((dir) => dir.startsWith("adapter-")) - .map((dir) => `../packages/${dir}`) - /** * @type {import('typedoc').TypeDocOptions & import('typedoc-plugin-markdown').PluginOptions} */ module.exports = { // typedoc options - entryPoints: [...frameworks, ...adapters], + entryPoints, entryPointStrategy: "packages", out: "pages/reference", tsconfig: "./tsconfig.json", diff --git a/docs/utils/frameworks.ts b/docs/utils/frameworks.ts deleted file mode 100644 index 81d5fcb63a..0000000000 --- a/docs/utils/frameworks.ts +++ /dev/null @@ -1,107 +0,0 @@ -type Details = { - title: string - code: string - logo: string - logoW: string - example: string -} - -export enum Framework { - Next = "nextjs", - Svelte = "sveltekit", - // SolidStart = "solidstart", - Express = "express", -} - -export const frameworkDetails: Record = { - [Framework.Next]: { - title: "Next.js", - code: codeNextJs(), - logo: "/img/etc/nextjs.svg", - logoW: "45", - example: "https://next-auth-example.vercel.app/", - }, - [Framework.Svelte]: { - title: "SvelteKit", - code: codeSvelte(), - logo: "/img/etc/sveltekit.svg", - logoW: "40", - example: "https://sveltekit-auth-example.vercel.app/", - }, - // [Framework.SolidStart]: { - // title: "SolidStart", - // code: codeSolid(), - // logo: "/img/etc/solidstart.svg", - // logoW: "45", - // example: "https://auth-solid.vercel.app/", - // }, - [Framework.Express]: { - title: "Express", - code: codeExpress(), - logo: "/img/etc/express.svg", - logoW: "45", - example: "https://express.vercel.app/", - }, -} - -/** - * Using functions for these to not have to have them at the top of the file and block readability... - */ -function codeNextJs() { - return ` -// auth.ts -import NextAuth from "next-auth" -import GitHub from "next-auth/providers/github" -export const { auth, handlers } = NextAuth({ providers: [ GitHub ] }) - -// middleware.ts -export { auth as middleware } from "@/auth" - -// app/api/auth/[...nextauth]/route.ts -import { handlers } from "@/auth" -export const { GET, POST } = handlers` -} - -function codeSvelte() { - return ` -// src/auth.ts -import { SvelteKitAuth } from "@auth/sveltekit" -import GitHub from '@auth/sveltekit/providers/github' - -export const { handle } = SvelteKitAuth({ - providers: [GitHub], -}) - -// src/hooks.server.ts -export { handle } from "./auth" -` -} - -// function codeSolid() { -// return ` -// import { SolidAuth } from "@auth/solid-start" -// import GitHub from "@auth/solid-start/providers/github" - -// export const { GET, POST } = SolidAuth({ -// providers: [ -// GitHub({ -// clientId: process.env.AUTH_GITHUB_ID, -// clientSecret: process.env.AUTH_GITHUB_SECRET -// }) -// ] -// }) -// `; -// } - -function codeExpress() { - return ` -// server.ts -import { express } from "express" -import { ExpressAuth } from "@auth/express" -import GitHub from "@auth/express/providers/github" - -const app = express() - -app.use("/auth/*", ExpressAuth({ providers: [GitHub] })) -` -} diff --git a/eslint.config.mjs b/eslint.config.mjs index 5b901f5b8b..0abf1d0ab1 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -164,7 +164,7 @@ export default tsEslint.config( "static", "coverage", "dist", - "packages/core/src/providers/oauth-types.ts", + "packages/core/src/providers/provider-types.ts", "packages/core/src/lib/pages/styles.ts", "packages/frameworks-sveltekit/package", "packages/frameworks-sveltekit/vite.config.{js,ts}.timestamp-*", diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 0000000000..b04410518c --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,6 @@ +pre-commit: + parallel: true + commands: + format: + run: pnpm prettier --cache --write {staged_files} + stage_fixed: true diff --git a/package.json b/package.json index fe80f7dbca..1bd916a6e2 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,12 @@ "build:docs": "turbo run build --filter=docs", "build": "turbo run build --filter=next-auth --filter=@auth/*", "test": "turbo run test --concurrency=1 --filter=[HEAD^1] --filter=./packages/* --filter=!*app* --filter=!*dynamo* --filter=!*edgedb* --filter=!*hasura* --filter=!*mikro* --filter=!*dgraph* --filter=!*xata* --filter=!*typeorm*", - "test:e2e": "turbo run test:e2e", + "test:e2e": "turbo run test:e2e --filter=next-auth", "test:e2e:watch": "turbo run test:e2e -- --ui", "clean": "turbo run clean --no-cache", "dev": "pnpm dev:next", "dev:next": "turbo run dev --parallel --continue --filter=next-auth-app... --filter=@auth/core --filter=!./packages/adapter-*", + "dev:e2e:next": "turbo run dev --filter=next-auth-app", "dev:db": "turbo run dev --parallel --continue --filter=next-auth-app...", "dev:sveltekit": "turbo run dev --parallel --continue --filter=sveltekit-auth-app...", "dev:express": "turbo run dev --parallel --continue --filter=express-auth-app...", @@ -32,7 +33,7 @@ "@balazsorban/monorepo-release": "0.5.1", "@eslint/compat": "^1.1.1", "@eslint/js": "^9.9.1", - "@playwright/test": "1.41.2", + "@playwright/test": "1.40.0", "@types/node": "^20.8.10", "@typescript-eslint/eslint-plugin": "v6.19.1", "@typescript-eslint/parser": "v6.19.1", @@ -46,16 +47,17 @@ "eslint-plugin-react": "^7.33.2", "eslint-plugin-svelte": "^2.38.0", "fake-smtp-server": "^0.8.0", + "lefthook": "1.7.15", "globals": "^15.9.0", "prettier": "3.3.3", "prettier-plugin-svelte": "^3.2.6", "prettier-plugin-tailwindcss": "^0.6.6", "svelte-eslint-parser": "^0.35.0", - "turbo": "^2.0.14", + "turbo": "^2.1.1", "typescript": "5.3.3", "typescript-eslint": "^8.3.0", "utils": "workspace:*", - "vite": "^5.0.13", + "vite": "^5.1.8", "vitest": "1.2.2" }, "engines": { diff --git a/packages/adapter-azure-tables/README.md b/packages/adapter-azure-tables/README.md index 09b5c00206..f605b056c4 100644 --- a/packages/adapter-azure-tables/README.md +++ b/packages/adapter-azure-tables/README.md @@ -24,3 +24,5 @@

    --- + +Check out the documentation at [authjs.dev](https://authjs.dev/getting-started/adapters/azure-tables). diff --git a/packages/adapter-azure-tables/package.json b/packages/adapter-azure-tables/package.json index 9e78e03280..c80f45864d 100644 --- a/packages/adapter-azure-tables/package.json +++ b/packages/adapter-azure-tables/package.json @@ -1,6 +1,6 @@ { "name": "@auth/azure-tables-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "Azure Tables Storage adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -38,7 +38,8 @@ }, "scripts": { "test": "./test/test.sh", - "build": "tsc" + "build": "tsc", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-azure-tables/tsconfig.json b/packages/adapter-azure-tables/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-azure-tables/tsconfig.json +++ b/packages/adapter-azure-tables/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-d1/package.json b/packages/adapter-d1/package.json index 00ed90849b..ee70221a7b 100644 --- a/packages/adapter-d1/package.json +++ b/packages/adapter-d1/package.json @@ -1,6 +1,6 @@ { "name": "@auth/d1-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "A Cloudflare D1 adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -39,7 +39,8 @@ }, "scripts": { "build": "tsc", - "test": "vitest -c ../utils/vitest.config.ts" + "test": "vitest -c ../utils/vitest.config.ts", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-d1/tsconfig.json b/packages/adapter-d1/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-d1/tsconfig.json +++ b/packages/adapter-d1/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-dgraph/package.json b/packages/adapter-dgraph/package.json index a07c871327..f9d38eca0b 100644 --- a/packages/adapter-dgraph/package.json +++ b/packages/adapter-dgraph/package.json @@ -1,6 +1,6 @@ { "name": "@auth/dgraph-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "Dgraph adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -38,7 +38,8 @@ }, "scripts": { "build": "tsc", - "test": "./test/test.sh" + "test": "./test/test.sh", + "clean": "rm -rf *.js *.d.ts* lib" }, "devDependencies": { "@types/jsonwebtoken": "^8.5.5" diff --git a/packages/adapter-dgraph/tsconfig.json b/packages/adapter-dgraph/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-dgraph/tsconfig.json +++ b/packages/adapter-dgraph/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-drizzle/package.json b/packages/adapter-drizzle/package.json index 805a1815e8..42eb92c69c 100644 --- a/packages/adapter-drizzle/package.json +++ b/packages/adapter-drizzle/package.json @@ -1,6 +1,6 @@ { "name": "@auth/drizzle-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "Drizzle adapter for Auth.js.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -37,7 +37,8 @@ "access": "public" }, "scripts": { - "clean": "find . -type d -name \".drizzle\" | xargs rm -rf", + "clean": "rm -rf *.js *.d.ts* lib", + "clean:drizzle": "find . -type d -name \".drizzle\" | xargs rm -rf", "test": "pnpm test:mysql && pnpm test:sqlite && pnpm test:pg", "test:mysql": "pnpm clean && ./test/mysql/test.sh", "test:sqlite": "pnpm clean && ./test/sqlite/test.sh", diff --git a/packages/adapter-drizzle/src/lib/pg.ts b/packages/adapter-drizzle/src/lib/pg.ts index 90d14cd552..5a12ded440 100644 --- a/packages/adapter-drizzle/src/lib/pg.ts +++ b/packages/adapter-drizzle/src/lib/pg.ts @@ -532,7 +532,7 @@ export type DefaultPostgresAuthenticatorTable = PgTableWithColumns<{ dataType: "string" }> userId: DefaultPostgresColumn<{ - columnType: "PgVarchar" | "PgText" + columnType: "PgVarchar" | "PgText" | "PgUUID" data: string notNull: true dataType: "string" diff --git a/packages/adapter-drizzle/tsconfig.json b/packages/adapter-drizzle/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-drizzle/tsconfig.json +++ b/packages/adapter-drizzle/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-dynamodb/package.json b/packages/adapter-dynamodb/package.json index d83167947e..b7c5a44dcc 100644 --- a/packages/adapter-dynamodb/package.json +++ b/packages/adapter-dynamodb/package.json @@ -1,7 +1,7 @@ { "name": "@auth/dynamodb-adapter", "repository": "https://github.com/nextauthjs/next-auth", - "version": "2.4.2", + "version": "2.7.4", "description": "AWS DynamoDB adapter for next-auth.", "keywords": [ "next-auth", diff --git a/packages/adapter-dynamodb/tsconfig.json b/packages/adapter-dynamodb/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-dynamodb/tsconfig.json +++ b/packages/adapter-dynamodb/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-edgedb/package.json b/packages/adapter-edgedb/package.json index bf2d5830ca..e268dcf66f 100644 --- a/packages/adapter-edgedb/package.json +++ b/packages/adapter-edgedb/package.json @@ -1,6 +1,6 @@ { "name": "@auth/edgedb-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "EdgeDB adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -38,7 +38,8 @@ }, "scripts": { "build": "tsc", - "test": "vitest -c ../utils/vitest.config.ts" + "test": "vitest -c ../utils/vitest.config.ts", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-edgedb/tsconfig.json b/packages/adapter-edgedb/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-edgedb/tsconfig.json +++ b/packages/adapter-edgedb/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-fauna/package.json b/packages/adapter-fauna/package.json index 9a32f8be18..695459f6eb 100644 --- a/packages/adapter-fauna/package.json +++ b/packages/adapter-fauna/package.json @@ -1,6 +1,6 @@ { "name": "@auth/fauna-adapter", - "version": "3.4.2", + "version": "3.7.4", "description": "Fauna Adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -41,7 +41,8 @@ "fauna": "fauna", "build": "tsc", "dev": "tsc -w", - "test": "./test/test.sh" + "test": "./test/test.sh", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-fauna/tsconfig.json b/packages/adapter-fauna/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-fauna/tsconfig.json +++ b/packages/adapter-fauna/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-firebase/package.json b/packages/adapter-firebase/package.json index 01a1b3885d..1a7532d7d1 100644 --- a/packages/adapter-firebase/package.json +++ b/packages/adapter-firebase/package.json @@ -1,6 +1,6 @@ { "name": "@auth/firebase-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "Firebase adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -38,7 +38,8 @@ }, "scripts": { "build": "tsc", - "test": "./test/test.sh" + "test": "./test/test.sh", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-firebase/src/index.ts b/packages/adapter-firebase/src/index.ts index 5aa4196e3d..9dc77596af 100644 --- a/packages/adapter-firebase/src/index.ts +++ b/packages/adapter-firebase/src/index.ts @@ -44,29 +44,53 @@ export interface FirebaseAdapterConfig extends AppOptions { * * * @example - * ```ts title="pages/api/auth/[...nextauth].ts" - * import NextAuth from "next-auth" - * import { FirestoreAdapter } from "@auth/firebase-adapter" - * - * export default NextAuth({ + * ```ts + * // This will convert all field and collection names to snake_case * adapter: FirestoreAdapter({ namingStrategy: "snake_case" }) * // ... * }) * ``` */ namingStrategy?: "snake_case" | "default" + /** + * Use this option if you already have one of the default collections in your Firestore database. + * + * @example + * ```ts + * // This will use the collection name "authjs_users" instead of the default "users" + * adapter: FirestoreAdapter({ collections: { users: "authjs_users" } }) + * // ... + * ``` + */ + collections?: { + users?: string + sessions?: string + accounts?: string + verificationTokens?: string + } } export function FirestoreAdapter( config?: FirebaseAdapterConfig | Firestore ): Adapter { - const { db, namingStrategy = "default" } = - config instanceof Firestore - ? { db: config } - : { ...config, db: config?.firestore ?? initFirestore(config) } + const { + db, + namingStrategy = "default", + collections = {}, + } = config instanceof Firestore + ? { db: config } + : { ...config, db: config?.firestore ?? initFirestore(config) } const preferSnakeCase = namingStrategy === "snake_case" - const C = collectionsFactory(db, preferSnakeCase) + const C = collectionsFactory(db, preferSnakeCase, { + users: "users", + sessions: "sessions", + accounts: "accounts", + verificationTokens: preferSnakeCase + ? "verification_tokens" + : "verificationTokens", + ...collections, + }) const mapper = mapFieldsFactory(preferSnakeCase) return { @@ -247,12 +271,11 @@ export function mapFieldsFactory(preferSnakeCase?: boolean) { return { toDb: identity, fromDb: identity } } -/** @internal */ function getConverter>(options: { excludeId?: boolean preferSnakeCase?: boolean }): FirebaseFirestore.FirestoreDataConverter { - const mapper = mapFieldsFactory(options?.preferSnakeCase ?? false) + const mapper = mapFieldsFactory(options?.preferSnakeCase) return { toFirestore(object) { @@ -302,7 +325,6 @@ export async function getOneDoc( return querySnap.docs[0]?.data() ?? null } -/** @internal */ async function deleteDocs( querySnapshot: FirebaseFirestore.Query ): Promise { @@ -323,22 +345,21 @@ export async function getDoc( /** @internal */ export function collectionsFactory( db: FirebaseFirestore.Firestore, - preferSnakeCase = false + preferSnakeCase = false, + collections: Required> ) { return { users: db - .collection("users") + .collection(collections.users) .withConverter(getConverter({ preferSnakeCase })), sessions: db - .collection("sessions") + .collection(collections.sessions) .withConverter(getConverter({ preferSnakeCase })), accounts: db - .collection("accounts") + .collection(collections.accounts) .withConverter(getConverter({ preferSnakeCase })), verification_tokens: db - .collection( - preferSnakeCase ? "verification_tokens" : "verificationTokens" - ) + .collection(collections.verificationTokens) .withConverter( getConverter({ preferSnakeCase, excludeId: true }) ), diff --git a/packages/adapter-firebase/test/index.test.ts b/packages/adapter-firebase/test/index.test.ts index ae0700d534..57d7bc9470 100644 --- a/packages/adapter-firebase/test/index.test.ts +++ b/packages/adapter-firebase/test/index.test.ts @@ -21,10 +21,24 @@ describe.each([ config.projectId = "authjs-test" config.databaseURL = "http://localhost:8080" - const db = initFirestore(config) const preferSnakeCase = config.namingStrategy === "snake_case" + + config.collections = { + accounts: preferSnakeCase ? "authjs_accounts" : "authjsAccounts", + verificationTokens: preferSnakeCase + ? "verification_tokens" + : "verificationTokens", + } + const db = initFirestore(config) const mapper = mapFieldsFactory(preferSnakeCase) - const C = collectionsFactory(db, preferSnakeCase) + const C = collectionsFactory(db, preferSnakeCase, { + users: "users", + accounts: preferSnakeCase ? "authjs_accounts" : "authjsAccounts", + sessions: "sessions", + verificationTokens: preferSnakeCase + ? "verification_tokens" + : "verificationTokens", + }) for (const [name, collection] of Object.entries(C)) { test(`collection "${name}" should be empty`, async () => { diff --git a/packages/adapter-firebase/tsconfig.json b/packages/adapter-firebase/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-firebase/tsconfig.json +++ b/packages/adapter-firebase/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-hasura/package.json b/packages/adapter-hasura/package.json index 91482d5ece..31b0336c6f 100644 --- a/packages/adapter-hasura/package.json +++ b/packages/adapter-hasura/package.json @@ -1,6 +1,6 @@ { "name": "@auth/hasura-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "Hasura adapter for Auth.js.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -42,7 +42,8 @@ }, "scripts": { "test": "./test/test.sh", - "build": "graphql-codegen-esm --config codegen.ts && tsc" + "build": "graphql-codegen-esm --config codegen.ts && tsc", + "clean": "rm -rf *.js *.d.ts* lib" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-hasura/tsconfig.json b/packages/adapter-hasura/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-hasura/tsconfig.json +++ b/packages/adapter-hasura/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-kysely/package.json b/packages/adapter-kysely/package.json index ca2c35ae99..0fa23f84c2 100644 --- a/packages/adapter-kysely/package.json +++ b/packages/adapter-kysely/package.json @@ -1,6 +1,6 @@ { "name": "@auth/kysely-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "Kysely adapter for Auth.js", "homepage": "https://authjs.dev/reference/adapter/kysely", "repository": "https://github.com/nextauthjs/next-auth", @@ -31,7 +31,8 @@ }, "scripts": { "build": "tsc", - "test": "./test/test.sh" + "test": "./test/test.sh", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-kysely/src/index.ts b/packages/adapter-kysely/src/index.ts index e7023bcc7f..375953143c 100644 --- a/packages/adapter-kysely/src/index.ts +++ b/packages/adapter-kysely/src/index.ts @@ -186,6 +186,7 @@ export function KyselyAdapter(db: Kysely): Adapter { .selectFrom("VerificationToken") .selectAll() .where("token", "=", token) + .where("identifier", "=", identifier) .executeTakeFirst() .then(async (res) => { await query.executeTakeFirst() diff --git a/packages/adapter-kysely/tsconfig.json b/packages/adapter-kysely/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-kysely/tsconfig.json +++ b/packages/adapter-kysely/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-mikro-orm/package.json b/packages/adapter-mikro-orm/package.json index ad0a51ccf1..d98ae42b25 100644 --- a/packages/adapter-mikro-orm/package.json +++ b/packages/adapter-mikro-orm/package.json @@ -1,6 +1,6 @@ { "name": "@auth/mikro-orm-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "MikroORM adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -38,7 +38,8 @@ }, "scripts": { "test": "vitest -c ../utils/vitest.config.ts", - "build": "tsc" + "build": "tsc", + "clean": "rm -rf *.js *.d.ts* lib" }, "peerDependencies": { "@mikro-orm/core": "^5" diff --git a/packages/adapter-mikro-orm/tsconfig.json b/packages/adapter-mikro-orm/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-mikro-orm/tsconfig.json +++ b/packages/adapter-mikro-orm/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-mongodb/package.json b/packages/adapter-mongodb/package.json index 7888bb66d8..3d9a58c67d 100644 --- a/packages/adapter-mongodb/package.json +++ b/packages/adapter-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@auth/mongodb-adapter", - "version": "3.4.2", + "version": "3.7.4", "description": "MongoDB adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -35,7 +35,8 @@ }, "scripts": { "test": "./test/test.sh", - "build": "tsc" + "build": "tsc", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-mongodb/tsconfig.json b/packages/adapter-mongodb/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-mongodb/tsconfig.json +++ b/packages/adapter-mongodb/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-neo4j/package.json b/packages/adapter-neo4j/package.json index 7f1a9f9857..def7bfed54 100644 --- a/packages/adapter-neo4j/package.json +++ b/packages/adapter-neo4j/package.json @@ -1,6 +1,6 @@ { "name": "@auth/neo4j-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "neo4j adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -37,7 +37,8 @@ }, "scripts": { "test": "./test/test.sh", - "build": "tsc" + "build": "tsc", + "clean": "rm -rf *.js *.d.ts*" }, "peerDependencies": { "neo4j-driver": "^4.0.0 || ^5.7.0" diff --git a/packages/adapter-neo4j/tsconfig.json b/packages/adapter-neo4j/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-neo4j/tsconfig.json +++ b/packages/adapter-neo4j/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-pg/package.json b/packages/adapter-pg/package.json index cddef75fa5..c506099d3c 100644 --- a/packages/adapter-pg/package.json +++ b/packages/adapter-pg/package.json @@ -1,6 +1,6 @@ { "name": "@auth/pg-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "Postgres adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -38,7 +38,8 @@ }, "scripts": { "test": "./test/test.sh", - "build": "tsc" + "build": "tsc", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-pg/tsconfig.json b/packages/adapter-pg/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-pg/tsconfig.json +++ b/packages/adapter-pg/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-pouchdb/package.json b/packages/adapter-pouchdb/package.json index 5de4c38720..7130e31c80 100644 --- a/packages/adapter-pouchdb/package.json +++ b/packages/adapter-pouchdb/package.json @@ -1,6 +1,6 @@ { "name": "@auth/pouchdb-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "PouchDB adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-pouchdb/tsconfig.json b/packages/adapter-pouchdb/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-pouchdb/tsconfig.json +++ b/packages/adapter-pouchdb/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-prisma/package.json b/packages/adapter-prisma/package.json index 88e0a06dbf..4e78bc58ef 100644 --- a/packages/adapter-prisma/package.json +++ b/packages/adapter-prisma/package.json @@ -1,6 +1,6 @@ { "name": "@auth/prisma-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "Prisma adapter for Auth.js", "homepage": "https://authjs.dev/reference/adapter/prisma", "repository": "https://github.com/nextauthjs/next-auth", @@ -37,7 +37,7 @@ "access": "public" }, "scripts": { - "clean": "rm ./prisma/dev.db* || echo 'File deleted'", + "clean": "rm ./prisma/dev.db* || echo 'File deleted' && rm -rf *.js *.d.ts*", "init:default": "prisma migrate dev --name init --skip-seed", "init:custom": "prisma migrate dev --name init-custom --schema ./prisma/custom.prisma", "test:default": "pnpm init:default && vitest run -c ../utils/vitest.config.ts", @@ -53,12 +53,12 @@ "@auth/core": "workspace:*" }, "peerDependencies": { - "@prisma/client": ">=2.26.0 || >=3 || >=4 || >=5" + "@prisma/client": ">=2.26.0 || >=3 || >=4 || >=5 || >=6" }, "devDependencies": { - "@prisma/client": "^5.9.1", - "@prisma/extension-accelerate": "^0.6.3", - "mongodb": "^4.17.0", - "prisma": "^5.9.1" + "@prisma/client": "^6.0.0", + "@prisma/extension-accelerate": "1.1.0", + "mongodb": "^6.9.0", + "prisma": "^6.0.0" } } diff --git a/packages/adapter-prisma/prisma/custom.prisma b/packages/adapter-prisma/prisma/custom.prisma index 0f67d40919..a455a2343b 100644 --- a/packages/adapter-prisma/prisma/custom.prisma +++ b/packages/adapter-prisma/prisma/custom.prisma @@ -5,6 +5,7 @@ datasource db { generator client { provider = "prisma-client-js" + previewFeatures = ["strictUndefinedChecks"] } model User { diff --git a/packages/adapter-prisma/prisma/mongodb.prisma b/packages/adapter-prisma/prisma/mongodb.prisma index e0f83db99c..8762338abe 100644 --- a/packages/adapter-prisma/prisma/mongodb.prisma +++ b/packages/adapter-prisma/prisma/mongodb.prisma @@ -5,6 +5,7 @@ datasource db { generator client { provider = "prisma-client-js" + previewFeatures = ["strictUndefinedChecks"] } model Account { diff --git a/packages/adapter-prisma/prisma/schema.prisma b/packages/adapter-prisma/prisma/schema.prisma index 60e5a0841b..d545207a74 100644 --- a/packages/adapter-prisma/prisma/schema.prisma +++ b/packages/adapter-prisma/prisma/schema.prisma @@ -5,6 +5,7 @@ datasource db { generator client { provider = "prisma-client-js" + previewFeatures = ["strictUndefinedChecks"] } model User { diff --git a/packages/adapter-prisma/src/index.ts b/packages/adapter-prisma/src/index.ts index bf2f01fd95..769e5ede55 100644 --- a/packages/adapter-prisma/src/index.ts +++ b/packages/adapter-prisma/src/index.ts @@ -29,10 +29,7 @@ export function PrismaAdapter( const p = prisma as PrismaClient return { // We need to let Prisma generate the ID because our default UUID is incompatible with MongoDB - // eslint-disable-next-line @typescript-eslint/no-unused-vars - createUser: ({ id, ...data }) => { - return p.user.create({ data }) - }, + createUser: ({ id, ...data }) => p.user.create(stripUndefined(data)), getUser: (id) => p.user.findUnique({ where: { id } }), getUserByEmail: (email) => p.user.findUnique({ where: { email } }), async getUserByAccount(provider_providerAccountId) { @@ -43,7 +40,10 @@ export function PrismaAdapter( return (account?.user as AdapterUser) ?? null }, updateUser: ({ id, ...data }) => - p.user.update({ where: { id }, data }) as Promise, + p.user.update({ + where: { id }, + ...stripUndefined(data), + }) as Promise, deleteUser: (id) => p.user.delete({ where: { id } }) as Promise, linkAccount: (data) => @@ -61,13 +61,18 @@ export function PrismaAdapter( const { user, ...session } = userAndSession return { user, session } as { user: AdapterUser; session: AdapterSession } }, - createSession: (data) => p.session.create({ data }), + createSession: (data) => p.session.create(stripUndefined(data)), updateSession: (data) => - p.session.update({ where: { sessionToken: data.sessionToken }, data }), + p.session.update({ + where: { sessionToken: data.sessionToken }, + ...stripUndefined(data), + }), deleteSession: (sessionToken) => p.session.delete({ where: { sessionToken } }), async createVerificationToken(data) { - const verificationToken = await p.verificationToken.create({ data }) + const verificationToken = await p.verificationToken.create( + stripUndefined(data) + ) // @ts-expect-errors // MongoDB needs an ID, but we don't if (verificationToken.id) delete verificationToken.id return verificationToken @@ -93,10 +98,8 @@ export function PrismaAdapter( where: { providerAccountId, provider }, }) as Promise }, - async createAuthenticator(authenticator) { - return p.authenticator.create({ - data: authenticator, - }) + async createAuthenticator(data) { + return p.authenticator.create(stripUndefined(data)) }, async getAuthenticator(credentialID) { return p.authenticator.findUnique({ @@ -116,3 +119,10 @@ export function PrismaAdapter( }, } } + +/** @see https://www.prisma.io/docs/orm/prisma-client/special-fields-and-types/null-and-undefined */ +function stripUndefined(obj: T) { + const data = {} as T + for (const key in obj) if (obj[key] !== undefined) data[key] = obj[key] + return { data } +} diff --git a/packages/adapter-prisma/tsconfig.json b/packages/adapter-prisma/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-prisma/tsconfig.json +++ b/packages/adapter-prisma/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-sequelize/package.json b/packages/adapter-sequelize/package.json index 3722f6c0da..861511e72a 100644 --- a/packages/adapter-sequelize/package.json +++ b/packages/adapter-sequelize/package.json @@ -1,6 +1,6 @@ { "name": "@auth/sequelize-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "Sequelize adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -34,7 +34,8 @@ }, "scripts": { "test": "vitest -c ../utils/vitest.config.ts", - "build": "tsc" + "build": "tsc", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-sequelize/tsconfig.json b/packages/adapter-sequelize/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-sequelize/tsconfig.json +++ b/packages/adapter-sequelize/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-supabase/package.json b/packages/adapter-supabase/package.json index 6f450c7cae..ee8cc2024c 100644 --- a/packages/adapter-supabase/package.json +++ b/packages/adapter-supabase/package.json @@ -1,6 +1,6 @@ { "name": "@auth/supabase-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "Supabase adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-supabase/tsconfig.json b/packages/adapter-supabase/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-supabase/tsconfig.json +++ b/packages/adapter-supabase/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-surrealdb/package.json b/packages/adapter-surrealdb/package.json index 3f4bddc0db..7fa968c888 100644 --- a/packages/adapter-surrealdb/package.json +++ b/packages/adapter-surrealdb/package.json @@ -1,6 +1,6 @@ { "name": "@auth/surrealdb-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "SurrealDB adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -38,7 +38,8 @@ }, "scripts": { "test": "./test/test.sh", - "build": "tsc" + "build": "tsc", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-surrealdb/tsconfig.json b/packages/adapter-surrealdb/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-surrealdb/tsconfig.json +++ b/packages/adapter-surrealdb/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-typeorm/package.json b/packages/adapter-typeorm/package.json index 546db6c617..eaf239459e 100644 --- a/packages/adapter-typeorm/package.json +++ b/packages/adapter-typeorm/package.json @@ -1,6 +1,6 @@ { "name": "@auth/typeorm-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "TypeORM adapter for Auth.js.", "homepage": "https://authjs.dev/reference/adapter/typeorm", "repository": "https://github.com/nextauthjs/next-auth", @@ -38,7 +38,7 @@ "scripts": { "build": "tsc", "dev": "tsc -w", - "clean": "rm -rf dist", + "clean": "rm -rf dist *.js *.d.ts*", "test": "pnpm test:mysql && pnpm test:sqlite && pnpm test:pg", "test:mysql": "pnpm clean && ./test/mysql/test.sh", "test:pg": "pnpm clean && ./test/postgresql/test.sh", diff --git a/packages/adapter-typeorm/tsconfig.json b/packages/adapter-typeorm/tsconfig.json index 0a25c050db..a75e6dc4f2 100644 --- a/packages/adapter-typeorm/tsconfig.json +++ b/packages/adapter-typeorm/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-unstorage/package.json b/packages/adapter-unstorage/package.json index ac20752ecb..f39ec1b095 100644 --- a/packages/adapter-unstorage/package.json +++ b/packages/adapter-unstorage/package.json @@ -1,6 +1,6 @@ { "name": "@auth/unstorage-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "Unstorage adapter for Auth.js.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -35,7 +35,8 @@ "scripts": { "test": "./test/test.sh", "dev": "tsc -w", - "build": "tsc" + "build": "tsc", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-unstorage/tsconfig.json b/packages/adapter-unstorage/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-unstorage/tsconfig.json +++ b/packages/adapter-unstorage/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-upstash-redis/package.json b/packages/adapter-upstash-redis/package.json index 4cca69c860..d7d32d65cf 100644 --- a/packages/adapter-upstash-redis/package.json +++ b/packages/adapter-upstash-redis/package.json @@ -1,6 +1,6 @@ { "name": "@auth/upstash-redis-adapter", - "version": "2.4.2", + "version": "2.7.4", "description": "Upstash adapter for Auth.js.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -35,7 +35,8 @@ }, "scripts": { "test": "./test/test.sh", - "build": "tsc" + "build": "tsc", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-upstash-redis/tsconfig.json b/packages/adapter-upstash-redis/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-upstash-redis/tsconfig.json +++ b/packages/adapter-upstash-redis/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/adapter-xata/package.json b/packages/adapter-xata/package.json index 6673c9fd8e..7746258632 100644 --- a/packages/adapter-xata/package.json +++ b/packages/adapter-xata/package.json @@ -1,6 +1,6 @@ { "name": "@auth/xata-adapter", - "version": "1.4.2", + "version": "1.7.4", "description": "Xata adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", @@ -34,7 +34,8 @@ }, "scripts": { "build": "tsc", - "test": "vitest -c ../utils/vitest.config.ts" + "test": "vitest -c ../utils/vitest.config.ts", + "clean": "rm -rf *.js *.d.ts*" }, "dependencies": { "@auth/core": "workspace:*" diff --git a/packages/adapter-xata/tsconfig.json b/packages/adapter-xata/tsconfig.json index df8621c516..6f3b51d36f 100644 --- a/packages/adapter-xata/tsconfig.json +++ b/packages/adapter-xata/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "outDir": ".", "rootDir": "src" diff --git a/packages/core/package.json b/packages/core/package.json index d2f5b84f48..3359333ce0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@auth/core", - "version": "0.34.2", + "version": "0.37.4", "description": "Authentication for the Web.", "keywords": [ "authentication", @@ -67,13 +67,11 @@ }, "license": "ISC", "dependencies": { - "@panva/hkdf": "^1.1.1", - "@types/cookie": "0.6.0", - "cookie": "0.6.0", - "jose": "^5.1.3", - "oauth4webapi": "^2.10.4", - "preact": "10.11.3", - "preact-render-to-string": "5.2.3" + "@panva/hkdf": "^1.2.1", + "jose": "^5.9.6", + "oauth4webapi": "^3.1.3", + "preact": "10.24.3", + "preact-render-to-string": "6.5.11" }, "peerDependencies": { "@simplewebauthn/browser": "^9.0.1", @@ -96,7 +94,6 @@ "clean": "rm -rf *.js *.d.ts* lib providers", "css": "node scripts/generate-css", "dev": "pnpm css && pnpm providers && tsc -w", - "test:e2e": "playwright test -c ../utils/playwright.config.ts", "test": "vitest run -c ../utils/vitest.config.ts", "test:watch": "vitest -c ../utils/vitest.config.ts", "providers": "node scripts/generate-providers" @@ -110,7 +107,7 @@ "@types/react": "18.0.37", "autoprefixer": "10.4.13", "postcss": "8.4.19", - "postcss-nesting": "^12.0.2", + "postcss-nesting": "^12.1.5", "typedoc": "^0.25.12", "typedoc-plugin-markdown": "4.0.0-next.53" } diff --git a/packages/core/scripts/generate-providers.js b/packages/core/scripts/generate-providers.js index 11cc80d1b1..ff74012730 100644 --- a/packages/core/scripts/generate-providers.js +++ b/packages/core/scripts/generate-providers.js @@ -5,17 +5,50 @@ const providersPath = join(process.cwd(), "src/providers") const files = readdirSync(providersPath, "utf8") -const nonOAuthFile = ["oauth-types", "oauth", "index", "email", "credentials"] -const providers = files - .map((file) => { - const strippedProviderName = file.substring(0, file.indexOf(".")) - return `"${strippedProviderName}"` - }) - .filter((provider) => !nonOAuthFile.includes(provider.replace(/"/g, ""))) - -const result = ` +// TODO: Autogenerate +const emailProvidersFile = [ + "email", + "forwardemail", + "mailgun", + "nodemailer", + "passkey", + "postmark", + "resend", + "sendgrid", +] + +// TODO: Autogenerate +const nonOAuthFile = [ + "provider-types", + "oauth", + "index", + // Credentials + "credentials", + // Webauthn + "webauthn", + // Email providers + ...emailProvidersFile, +] + +const providers = files.map((file) => { + const strippedProviderName = file.substring(0, file.indexOf(".")) + return `"${strippedProviderName}"` +}) + +const oauthProviders = providers.filter( + (provider) => !nonOAuthFile.includes(provider.replace(/"/g, "")) +) + +const emailProviders = providers.filter((provider) => + emailProvidersFile.includes(provider.replace(/"/g, "")) +) + +const content = ` // THIS FILE IS AUTOGENERATED. DO NOT EDIT. -export type OAuthProviderType = - | ${providers.join("\n | ")}` +export type OAuthProviderId = + | ${oauthProviders.join("\n | ")} + +export type EmailProviderId = + | ${emailProviders.join("\n | ")}` -writeFileSync(join(providersPath, "oauth-types.ts"), result) +writeFileSync(join(providersPath, "provider-types.ts"), content) diff --git a/packages/core/src/adapters.ts b/packages/core/src/adapters.ts index 27755a346a..43c4800870 100644 --- a/packages/core/src/adapters.ts +++ b/packages/core/src/adapters.ts @@ -441,12 +441,16 @@ export interface Adapter { const isoDateRE = /(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/ -export function isDate(value: any) { - return value && isoDateRE.test(value) && !isNaN(Date.parse(value)) +/** Determines if a given value can be parsed into `Date` */ +export function isDate(value: unknown): value is string { + return ( + typeof value === "string" && + isoDateRE.test(value) && + !isNaN(Date.parse(value)) + ) } -// For compatibility with older versions of NextAuth.js -// @ts-expect-error +// @ts-expect-error For compatibility with older versions of NextAuth.js declare module "next-auth/adapters" { type JsonObject = { [Key in string]?: JsonValue diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 3fa2b01d54..aef7a3b6ca 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -67,6 +67,7 @@ import type { CredentialInput, Provider } from "./providers/index.js" import { JWT, JWTOptions } from "./jwt.js" import { isAuthAction } from "./lib/utils/actions.js" +export { customFetch } from "./lib/symbols.js" export { skipCSRFCheck, raw, setEnvDefaults, createActionURL, isAuthAction } export async function Auth( @@ -318,12 +319,13 @@ export interface AuthConfig { * async signIn({ profile }) { * // Only allow sign in for users with email addresses ending with "yourdomain.com" * return profile?.email?.endsWith("@yourdomain.com") + * } * } * ``` */ signIn?: (params: { user: User | AdapterUser - account: Account | null + account?: Account | null /** * If OAuth provider is used, it contains the full * OAuth profile returned by your provider. @@ -451,7 +453,7 @@ export interface AuthConfig { * Also includes {@link TokenSet} * @note available when `trigger` is `"signIn"` or `"signUp"` */ - account: Account | null + account?: Account | null /** * The OAuth profile returned from your provider. * (In case of OIDC it will be the decoded ID Token or /userinfo response) @@ -496,7 +498,7 @@ export interface AuthConfig { */ signIn?: (message: { user: User - account: Account | null + account?: Account | null profile?: Profile isNewUser?: boolean }) => Awaitable diff --git a/packages/core/src/jwt.ts b/packages/core/src/jwt.ts index 10d23c84c2..fe93e12668 100644 --- a/packages/core/src/jwt.ts +++ b/packages/core/src/jwt.ts @@ -6,7 +6,7 @@ * issued and used by Auth.js. * * The JWT issued by Auth.js is _encrypted by default_, using the _A256CBC-HS512_ algorithm ({@link https://www.rfc-editor.org/rfc/rfc7518.html#section-5.2.5 JWE}). - * It uses the `AUTH_SECRET` environment variable or the passed `secret` propery to derive a suitable encryption key. + * It uses the `AUTH_SECRET` environment variable or the passed `secret` property to derive a suitable encryption key. * * :::info Note * Auth.js JWTs are meant to be used by the same app that issued them. @@ -38,12 +38,13 @@ import { hkdf } from "@panva/hkdf" import { EncryptJWT, base64url, calculateJwkThumbprint, jwtDecrypt } from "jose" -import { SessionStore } from "./lib/utils/cookie.js" +import { defaultCookies, SessionStore } from "./lib/utils/cookie.js" import { Awaitable } from "./types.js" import type { LoggerInstance } from "./lib/utils/logger.js" import { MissingSecret } from "./errors.js" -import { parse } from "cookie" +import * as cookie from "./lib/vendored/cookie.js" +const { parse: parseCookie } = cookie const DEFAULT_MAX_AGE = 30 * 24 * 60 * 60 // 30 days const now = () => (Date.now() / 1000) | 0 @@ -71,7 +72,7 @@ export async function encode(params: JWTEncodeParams) { .encrypt(encryptionSecret) } -/** Decodes a Auth.js issued JWT. */ +/** Decodes an Auth.js issued JWT. */ export async function decode( params: JWTDecodeParams ): Promise { @@ -107,8 +108,13 @@ export async function decode( return payload as Payload } +type GetTokenParamsBase = { + secret?: JWTDecodeParams["secret"] + salt?: JWTDecodeParams["salt"] +} + export interface GetTokenParams - extends Pick { + extends GetTokenParamsBase { /** The request containing the JWT either in the cookies or in the `Authorization` header. */ req: Request | { headers: Headers | Record } /** @@ -140,9 +146,7 @@ export async function getToken( ): Promise { const { secureCookie, - cookieName = secureCookie - ? "__Secure-authjs.session-token" - : "authjs.session-token", + cookieName = defaultCookies(secureCookie ?? false).sessionToken.name, decode: _decode = decode, salt = cookieName, secret, @@ -152,15 +156,13 @@ export async function getToken( } = params if (!req) throw new Error("Must pass `req` to JWT getToken()") - if (!secret) - throw new MissingSecret("Must pass `secret` if not set to JWT getToken()") const headers = req.headers instanceof Headers ? req.headers : new Headers(req.headers) const sessionStore = new SessionStore( { name: cookieName, options: { secure: secureCookie } }, - parse(headers.get("cookie") ?? ""), + parseCookie(headers.get("cookie") ?? ""), logger ) @@ -177,6 +179,9 @@ export async function getToken( if (raw) return token + if (!secret) + throw new MissingSecret("Must pass `secret` if not set to JWT getToken()") + try { return await _decode({ token, secret, salt }) } catch { diff --git a/packages/core/src/lib/actions/callback/handle-login.ts b/packages/core/src/lib/actions/callback/handle-login.ts index d80e387127..e053c3ef63 100644 --- a/packages/core/src/lib/actions/callback/handle-login.ts +++ b/packages/core/src/lib/actions/callback/handle-login.ts @@ -292,6 +292,7 @@ export async function handleLoginOrRegister( // If you trust the oauth provider to correctly verify email addresses, you can opt-in to // account linking even when the user is not signed-in. user = userByEmail + isNewUser = false } else { // We end up here when we don't have an account with the same [provider].id *BUT* // we do already have an account with the same email address as the one in the @@ -313,6 +314,7 @@ export async function handleLoginOrRegister( // create a new account for the user, link it to the OAuth account and // create a new session for them so they are signed in with it. user = await createUser({ ...profile, emailVerified: null }) + isNewUser = true } await events.createUser?.({ user }) @@ -327,6 +329,6 @@ export async function handleLoginOrRegister( expires: fromDate(options.session.maxAge), }) - return { session, user, isNewUser: true } + return { session, user, isNewUser } } } diff --git a/packages/core/src/lib/actions/callback/index.ts b/packages/core/src/lib/actions/callback/index.ts index 15215b97eb..d11048f7cb 100644 --- a/packages/core/src/lib/actions/callback/index.ts +++ b/packages/core/src/lib/actions/callback/index.ts @@ -10,7 +10,7 @@ import { } from "../../../errors.js" import { handleLoginOrRegister } from "./handle-login.js" import { handleOAuth } from "./oauth/callback.js" -import { handleState } from "./oauth/checks.js" +import { state } from "./oauth/checks.js" import { createHash } from "../../utils/web.js" import type { AdapterSession } from "../../../adapters.js" @@ -57,28 +57,33 @@ export async function callback( try { if (provider.type === "oauth" || provider.type === "oidc") { // Use body if the response mode is set to form_post. For all other cases, use query - const payload = + const params = provider.authorization?.url.searchParams.get("response_mode") === "form_post" ? body : query - const { proxyRedirect, randomState } = handleState( - payload, - provider, - options.isOnRedirectProxy - ) - - if (proxyRedirect) { - logger.debug("proxy redirect", { proxyRedirect, randomState }) - return { redirect: proxyRedirect } + // If we have a state and we are on a redirect proxy, we try to parse it + // and see if it contains a valid origin to redirect to. If it does, we + // redirect the user to that origin with the original state. + if (options.isOnRedirectProxy && params?.state) { + // NOTE: We rely on the state being encrypted using a shared secret + // between the proxy and the original server. + const parsedState = await state.decode(params.state, options) + const shouldRedirect = + parsedState?.origin && + new URL(parsedState.origin).origin !== options.url.origin + if (shouldRedirect) { + const proxyRedirect = `${parsedState.origin}?${new URLSearchParams(params)}` + logger.debug("Proxy redirecting to", proxyRedirect) + return { redirect: proxyRedirect, cookies } + } } const authorizationResult = await handleOAuth( - payload, + params, request.cookies, - options, - randomState + options ) if (authorizationResult.cookies.length) { @@ -198,13 +203,13 @@ export async function callback( return { redirect: callbackUrl, cookies } } else if (provider.type === "email") { - const token = query?.token as string | undefined - const identifier = query?.email as string | undefined + const paramToken = query?.token as string | undefined + const paramIdentifier = query?.email as string | undefined - if (!token || !identifier) { + if (!paramToken) { const e = new TypeError( - "Missing token or email. The sign-in URL was manually opened without token/identifier or the link was not sent correctly in the email.", - { cause: { hasToken: !!token, hasEmail: !!identifier } } + "Missing token. The sign-in URL was manually opened without token or the link was not sent correctly in the email.", + { cause: { hasToken: !!paramToken } } ) e.name = "Configuration" throw e @@ -213,15 +218,22 @@ export async function callback( const secret = provider.secret ?? options.secret // @ts-expect-error -- Verified in `assertConfig`. const invite = await adapter.useVerificationToken({ - identifier, - token: await createHash(`${token}${secret}`), + // @ts-expect-error User-land adapters might decide to omit the identifier during lookup + identifier: paramIdentifier, // TODO: Drop this requirement for lookup in official adapters too + token: await createHash(`${paramToken}${secret}`), }) const hasInvite = !!invite - const expired = invite ? invite.expires.valueOf() < Date.now() : undefined - const invalidInvite = !hasInvite || expired + const expired = hasInvite && invite.expires.valueOf() < Date.now() + const invalidInvite = + !hasInvite || + expired || + // The user might have configured the link to not contain the identifier + // so we only compare if it exists + (paramIdentifier && invite.identifier !== paramIdentifier) if (invalidInvite) throw new Verification({ hasInvite, expired }) + const { identifier } = invite const user = (await adapter!.getUserByEmail(identifier)) ?? { id: crypto.randomUUID(), email: identifier, diff --git a/packages/core/src/lib/actions/callback/oauth/callback.ts b/packages/core/src/lib/actions/callback/oauth/callback.ts index 6dd50794a0..988ead5b10 100644 --- a/packages/core/src/lib/actions/callback/oauth/callback.ts +++ b/packages/core/src/lib/actions/callback/oauth/callback.ts @@ -17,6 +17,23 @@ import type { import { type OAuthConfigInternal } from "../../../../providers/index.js" import type { Cookie } from "../../../utils/cookie.js" import { isOIDCProvider } from "../../../utils/providers.js" +import { conformInternal, customFetch } from "../../../symbols.js" +import { decodeJwt } from "jose" + +function formUrlEncode(token: string) { + return encodeURIComponent(token).replace(/%20/g, "+") +} + +/** + * Formats client_id and client_secret as an HTTP Basic Authentication header as per the OAuth 2.0 + * specified in RFC6749. + */ +function clientSecretBasic(clientId: string, clientSecret: string) { + const username = formUrlEncode(clientId) + const password = formUrlEncode(clientSecret) + const credentials = btoa(`${username}:${password}`) + return `Basic ${credentials}` +} /** * Handles the following OAuth steps. @@ -28,12 +45,12 @@ import { isOIDCProvider } from "../../../utils/providers.js" * we fetch it anyway. This is because we always want a user profile. */ export async function handleOAuth( - query: RequestInternal["query"], + params: RequestInternal["query"], cookies: RequestInternal["cookies"], - options: InternalOptions<"oauth" | "oidc">, - randomState?: string + options: InternalOptions<"oauth" | "oidc"> ) { const { logger, provider } = options + let as: o.AuthorizationServer const { token, userinfo } = provider @@ -45,23 +62,21 @@ export async function handleOAuth( // We assume that issuer is always defined as this has been asserted earlier const issuer = new URL(provider.issuer!) - const discoveryResponse = await o.discoveryRequest(issuer) - const discoveredAs = await o.processDiscoveryResponse( - issuer, - discoveryResponse - ) + const discoveryResponse = await o.discoveryRequest(issuer, { + [o.allowInsecureRequests]: true, + [o.customFetch]: provider[customFetch], + }) + as = await o.processDiscoveryResponse(issuer, discoveryResponse) - if (!discoveredAs.token_endpoint) + if (!as.token_endpoint) throw new TypeError( "TODO: Authorization server did not provide a token endpoint." ) - if (!discoveredAs.userinfo_endpoint) + if (!as.userinfo_endpoint) throw new TypeError( "TODO: Authorization server did not provide a userinfo endpoint." ) - - as = discoveredAs } else { as = { issuer: provider.issuer ?? "https://authjs.dev", // TODO: review fallback issuer @@ -72,31 +87,66 @@ export async function handleOAuth( const client: o.Client = { client_id: provider.clientId, - client_secret: provider.clientSecret, ...provider.client, } - const resCookies: Cookie[] = [] + let clientAuth: o.ClientAuth - const state = await checks.state.use( - cookies, - resCookies, - options, - randomState - ) + switch (client.token_endpoint_auth_method) { + // TODO: in the next breaking major version have undefined be `client_secret_post` + case undefined: + case "client_secret_basic": + // TODO: in the next breaking major version use o.ClientSecretBasic() here + clientAuth = (_as, _client, _body, headers) => { + headers.set( + "authorization", + clientSecretBasic(provider.clientId, provider.clientSecret!) + ) + } + break + case "client_secret_post": + clientAuth = o.ClientSecretPost(provider.clientSecret!) + break + case "client_secret_jwt": + clientAuth = o.ClientSecretJwt(provider.clientSecret!) + break + case "private_key_jwt": + clientAuth = o.PrivateKeyJwt(provider.token!.clientPrivateKey!, { + // TODO: review in the next breaking change + [o.modifyAssertion](_header, payload) { + payload.aud = [as.issuer, as.token_endpoint!] + }, + }) + break + case "none": + clientAuth = o.None() + break + default: + throw new Error("unsupported client authentication method") + } - const codeGrantParams = o.validateAuthResponse( - as, - client, - new URLSearchParams(query), - provider.checks.includes("state") ? state : o.skipStateCheck - ) + const resCookies: Cookie[] = [] + + const state = await checks.state.use(cookies, resCookies, options) - /** https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2.1 */ - if (o.isOAuth2Error(codeGrantParams)) { - const cause = { providerId: provider.id, ...codeGrantParams } - logger.debug("OAuthCallbackError", cause) - throw new OAuthCallbackError("OAuth Provider returned an error", cause) + let codeGrantParams: URLSearchParams + try { + codeGrantParams = o.validateAuthResponse( + as, + client, + new URLSearchParams(params), + provider.checks.includes("state") ? state : o.skipStateCheck + ) + } catch (err) { + if (err instanceof o.AuthorizationResponseError) { + const cause = { + providerId: provider.id, + ...Object.fromEntries(err.cause.entries()), + } + logger.debug("OAuthCallbackError", cause) + throw new OAuthCallbackError("OAuth Provider returned an error", cause) + } + throw err } const codeVerifier = await checks.pkce.use(cookies, resCookies, options) @@ -109,20 +159,19 @@ export async function handleOAuth( let codeGrantResponse = await o.authorizationCodeGrantRequest( as, client, + clientAuth, codeGrantParams, redirect_uri, - codeVerifier ?? "auth", // TODO: review fallback code verifier, + codeVerifier ?? "decoy", { + // TODO: move away from allowing insecure HTTP requests + [o.allowInsecureRequests]: true, [o.customFetch]: (...args) => { - if ( - !provider.checks.includes("pkce") && - args[1]?.body instanceof URLSearchParams - ) { + if (!provider.checks.includes("pkce")) { args[1].body.delete("code_verifier") } - return fetch(...args) + return (provider[customFetch] ?? fetch)(...args) }, - clientPrivateKey: provider.token?.clientPrivateKey, } ) @@ -132,40 +181,71 @@ export async function handleOAuth( codeGrantResponse } - let challenges: o.WWWAuthenticateChallenge[] | undefined - if ((challenges = o.parseWwwAuthenticateChallenges(codeGrantResponse))) { - for (const challenge of challenges) { - console.log("challenge", challenge) - } - throw new Error("TODO: Handle www-authenticate challenges as needed") - } - let profile: Profile = {} - let tokens: TokenSet & Pick - if (isOIDCProvider(provider)) { - const nonce = await checks.nonce.use(cookies, resCookies, options) - const processedCodeResponse = - await o.processAuthorizationCodeOpenIDResponse( - as, - client, - codeGrantResponse, - nonce ?? o.expectNoNonce - ) + const requireIdToken = isOIDCProvider(provider) - if (o.isOAuth2Error(processedCodeResponse)) { - console.log("error", processedCodeResponse) - throw new Error("TODO: Handle OIDC response body error") + if (provider[conformInternal]) { + switch (provider.id) { + case "microsoft-entra-id": + case "azure-ad": { + /** + * These providers need the authorization server metadata to be re-processed + * based on the `id_token`'s `tid` claim + * @see https://github.com/MicrosoftDocs/azure-docs/issues/113944 + */ + const { tid } = decodeJwt( + (await codeGrantResponse.clone().json()).id_token + ) + if (typeof tid === "string") { + const tenantRe = /microsoftonline\.com\/(\w+)\/v2\.0/ + const tenantId = as.issuer?.match(tenantRe)?.[1] ?? "common" + const issuer = new URL(as.issuer.replace(tenantId, tid)) + const discoveryResponse = await o.discoveryRequest(issuer, { + [o.customFetch]: provider[customFetch], + }) + as = await o.processDiscoveryResponse(issuer, discoveryResponse) + } + break + } + default: + break } + } + const processedCodeResponse = await o.processAuthorizationCodeResponse( + as, + client, + codeGrantResponse, + { + expectedNonce: await checks.nonce.use(cookies, resCookies, options), + requireIdToken, + } + ) - const idTokenClaims = o.getValidatedIdTokenClaims(processedCodeResponse) + const tokens: TokenSet & Pick = processedCodeResponse + + if (requireIdToken) { + const idTokenClaims = o.getValidatedIdTokenClaims(processedCodeResponse)! profile = idTokenClaims + // Apple sends some of the user information in a `user` parameter as a stringified JSON. + // It also only does so the first time the user consents to share their information. + if (provider[conformInternal] && provider.id === "apple") { + try { + profile.user = JSON.parse(params?.user) + } catch {} + } + if (provider.idToken === false) { const userinfoResponse = await o.userInfoRequest( as, client, - processedCodeResponse.access_token + processedCodeResponse.access_token, + { + [o.customFetch]: provider[customFetch], + // TODO: move away from allowing insecure HTTP requests + [o.allowInsecureRequests]: true, + } ) profile = await o.processUserInfoResponse( @@ -175,20 +255,7 @@ export async function handleOAuth( userinfoResponse ) } - tokens = processedCodeResponse } else { - const processedCodeResponse = - await o.processAuthorizationCodeOAuth2Response( - as, - client, - codeGrantResponse - ) - tokens = processedCodeResponse - if (o.isOAuth2Error(processedCodeResponse)) { - console.log("error", processedCodeResponse) - throw new Error("TODO: Handle OAuth 2.0 response body error") - } - if (userinfo?.request) { const _profile = await userinfo.request({ tokens, provider }) if (_profile instanceof Object) profile = _profile @@ -196,7 +263,12 @@ export async function handleOAuth( const userinfoResponse = await o.userInfoRequest( as, client, - processedCodeResponse.access_token + processedCodeResponse.access_token, + { + [o.customFetch]: provider[customFetch], + // TODO: move away from allowing insecure HTTP requests + [o.allowInsecureRequests]: true, + } ) profile = await userinfoResponse.json() } else { @@ -233,6 +305,9 @@ export async function getUserAndAccount( const userFromProfile = await provider.profile(OAuthProfile, tokens) const user = { ...userFromProfile, + // The user's id is intentionally not set based on the profile id, as + // the user should remain independent of the provider and the profile id + // is saved on the Account already, as `providerAccountId`. id: crypto.randomUUID(), email: userFromProfile.email?.toLowerCase(), } satisfies User diff --git a/packages/core/src/lib/actions/callback/oauth/checks.ts b/packages/core/src/lib/actions/callback/oauth/checks.ts index 6f5d677d8a..8d8fac115b 100644 --- a/packages/core/src/lib/actions/callback/oauth/checks.ts +++ b/packages/core/src/lib/actions/callback/oauth/checks.ts @@ -1,6 +1,7 @@ -import * as jose from "jose" import * as o from "oauth4webapi" import { InvalidCheck } from "../../../../errors.js" + +// NOTE: We use the default JWT methods here because they encrypt/decrypt the payload, not just sign it. import { decode, encode } from "../../../../jwt.js" import type { @@ -10,112 +11,138 @@ import type { User, } from "../../../../types.js" import type { Cookie } from "../../../utils/cookie.js" -import type { OAuthConfigInternal } from "../../../../providers/oauth.js" import type { WebAuthnProviderType } from "../../../../providers/webauthn.js" -interface CheckPayload { +interface CookiePayload { value: string } -/** Returns a signed cookie. */ -export async function signCookie( - type: keyof CookiesOptions, - value: string, - maxAge: number, - options: InternalOptions<"oauth" | "oidc" | WebAuthnProviderType>, - data?: any +const COOKIE_TTL = 60 * 15 // 15 minutes + +/** Returns a cookie with a JWT encrypted payload. */ +async function sealCookie( + name: keyof CookiesOptions, + payload: string, + options: InternalOptions<"oauth" | "oidc" | WebAuthnProviderType> ): Promise { const { cookies, logger } = options + const cookie = cookies[name] + const expires = new Date() + expires.setTime(expires.getTime() + COOKIE_TTL * 1000) + + logger.debug(`CREATE_${name.toUpperCase()}`, { + name: cookie.name, + payload, + COOKIE_TTL, + expires, + }) + + const encoded = await encode({ + ...options.jwt, + maxAge: COOKIE_TTL, + token: { value: payload } satisfies CookiePayload, + salt: cookie.name, + }) + const cookieOptions = { ...cookie.options, expires } + return { name: cookie.name, value: encoded, options: cookieOptions } +} - logger.debug(`CREATE_${type.toUpperCase()}`, { value, maxAge }) +async function parseCookie( + name: keyof CookiesOptions, + value: string | undefined, + options: InternalOptions +): Promise { + try { + const { logger, cookies, jwt } = options + logger.debug(`PARSE_${name.toUpperCase()}`, { cookie: value }) + + if (!value) throw new InvalidCheck(`${name} cookie was missing`) + const parsed = await decode({ + ...jwt, + token: value, + salt: cookies[name].name, + }) + if (parsed?.value) return parsed.value + throw new Error("Invalid cookie") + } catch (error) { + throw new InvalidCheck(`${name} value could not be parsed`, { + cause: error, + }) + } +} - const expires = new Date() - expires.setTime(expires.getTime() + maxAge * 1000) - const token: any = { value } - if (type === "state" && data) token.data = data - const name = cookies[type].name - return { - name, - value: await encode({ ...options.jwt, maxAge, token, salt: name }), - options: { ...cookies[type].options, expires }, +function clearCookie( + name: keyof CookiesOptions, + options: InternalOptions, + resCookies: Cookie[] +) { + const { logger, cookies } = options + const cookie = cookies[name] + logger.debug(`CLEAR_${name.toUpperCase()}`, { cookie }) + resCookies.push({ + name: cookie.name, + value: "", + options: { ...cookies[name].options, maxAge: 0 }, + }) +} + +function useCookie( + check: "state" | "pkce" | "nonce", + name: keyof CookiesOptions +) { + return async function ( + cookies: RequestInternal["cookies"], + resCookies: Cookie[], + options: InternalOptions<"oidc"> + ) { + const { provider, logger } = options + if (!provider?.checks?.includes(check)) return + const cookieValue = cookies?.[options.cookies[name].name] + logger.debug(`USE_${name.toUpperCase()}`, { value: cookieValue }) + const parsed = await parseCookie(name, cookieValue, options) + clearCookie(name, options, resCookies) + return parsed } } -const PKCE_MAX_AGE = 60 * 15 // 15 minutes in seconds +/** + * @see https://www.rfc-editor.org/rfc/rfc7636 + * @see https://danielfett.de/2020/05/16/pkce-vs-nonce-equivalent-or-not/#pkce + */ export const pkce = { + /** Creates a PKCE code challenge and verifier pair. The verifier in stored in the cookie. */ async create(options: InternalOptions<"oauth">) { const code_verifier = o.generateRandomCodeVerifier() const value = await o.calculatePKCECodeChallenge(code_verifier) - const maxAge = PKCE_MAX_AGE - const cookie = await signCookie( - "pkceCodeVerifier", - code_verifier, - maxAge, - options - ) + const cookie = await sealCookie("pkceCodeVerifier", code_verifier, options) return { cookie, value } }, /** * Returns code_verifier if the provider is configured to use PKCE, * and clears the container cookie afterwards. * An error is thrown if the code_verifier is missing or invalid. - * @see https://www.rfc-editor.org/rfc/rfc7636 - * @see https://danielfett.de/2020/05/16/pkce-vs-nonce-equivalent-or-not/#pkce */ - async use( - cookies: RequestInternal["cookies"], - resCookies: Cookie[], - options: InternalOptions<"oauth"> - ): Promise { - const { provider } = options - - if (!provider?.checks?.includes("pkce")) return - - const codeVerifier = cookies?.[options.cookies.pkceCodeVerifier.name] - - if (!codeVerifier) - throw new InvalidCheck("PKCE code_verifier cookie was missing") - - const value = await decode({ - ...options.jwt, - token: codeVerifier, - salt: options.cookies.pkceCodeVerifier.name, - }) - - if (!value?.value) - throw new InvalidCheck("PKCE code_verifier value could not be parsed") - - // Clear the pkce code verifier cookie after use - resCookies.push({ - name: options.cookies.pkceCodeVerifier.name, - value: "", - options: { ...options.cookies.pkceCodeVerifier.options, maxAge: 0 }, - }) + use: useCookie("pkce", "pkceCodeVerifier"), +} - return value.value - }, +interface EncodedState { + origin?: string + random: string } const STATE_MAX_AGE = 60 * 15 // 15 minutes in seconds -export function decodeState(value: string): - | { - /** If defined, a redirect proxy is being used to support multiple OAuth apps with a single callback URL */ - origin?: string - /** Random value for CSRF protection */ - random: string - } - | undefined { - try { - const decoder = new TextDecoder() - return JSON.parse(decoder.decode(jose.base64url.decode(value))) - } catch {} -} +const encodedStateSalt = "encodedState" +/** + * @see https://www.rfc-editor.org/rfc/rfc6749#section-10.12 + * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.1.1 + */ export const state = { - async create(options: InternalOptions<"oauth">, data?: object) { + /** Creates a state cookie with an optionally encoded body. */ + async create(options: InternalOptions<"oauth">, origin?: string) { const { provider } = options if (!provider.checks.includes("state")) { - if (data) { + if (origin) { throw new InvalidCheck( "State data was provided but the provider is not configured to use state" ) @@ -123,78 +150,49 @@ export const state = { return } - const encodedState = jose.base64url.encode( - JSON.stringify({ ...data, random: o.generateRandomState() }) - ) + // IDEA: Allow the user to pass data to be stored in the state + const payload = { + origin, + random: o.generateRandomState(), + } satisfies EncodedState + const value = await encode({ + secret: options.jwt.secret, + token: payload, + salt: encodedStateSalt, + maxAge: STATE_MAX_AGE, + }) + const cookie = await sealCookie("state", value, options) - const maxAge = STATE_MAX_AGE - const cookie = await signCookie( - "state", - encodedState, - maxAge, - options, - data - ) - return { cookie, value: encodedState } + return { cookie, value } }, /** * Returns state if the provider is configured to use state, * and clears the container cookie afterwards. * An error is thrown if the state is missing or invalid. - * @see https://www.rfc-editor.org/rfc/rfc6749#section-10.12 - * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.1.1 */ - async use( - cookies: RequestInternal["cookies"], - resCookies: Cookie[], - options: InternalOptions<"oauth">, - paramRandom?: string - ): Promise { - const { provider } = options - if (!provider.checks.includes("state")) return - - const state = cookies?.[options.cookies.state.name] - - if (!state) throw new InvalidCheck("State cookie was missing") - - // IDEA: Let the user do something with the returned state - const encodedState = await decode({ - ...options.jwt, - token: state, - salt: options.cookies.state.name, - }) - - if (!encodedState?.value) - throw new InvalidCheck("State (cookie) value could not be parsed") - - const decodedState = decodeState(encodedState.value) - - if (!decodedState) - throw new InvalidCheck("State (encoded) value could not be parsed") - - if (decodedState.random !== paramRandom) - throw new InvalidCheck( - `Random state values did not match. Expected: ${decodedState.random}. Got: ${paramRandom}` - ) - - // Clear the state cookie after use - resCookies.push({ - name: options.cookies.state.name, - value: "", - options: { ...options.cookies.state.options, maxAge: 0 }, - }) - - return encodedState.value + use: useCookie("state", "state"), + /** Decodes the state. If it could not be decoded, it throws an error. */ + async decode(state: string, options: InternalOptions) { + try { + options.logger.debug("DECODE_STATE", { state }) + const payload = await decode({ + secret: options.jwt.secret, + token: state, + salt: encodedStateSalt, + }) + if (payload) return payload + throw new Error("Invalid state") + } catch (error) { + throw new InvalidCheck("State could not be decoded", { cause: error }) + } }, } -const NONCE_MAX_AGE = 60 * 15 // 15 minutes in seconds export const nonce = { async create(options: InternalOptions<"oidc">) { if (!options.provider.checks.includes("nonce")) return const value = o.generateRandomNonce() - const maxAge = NONCE_MAX_AGE - const cookie = await signCookie("nonce", value, maxAge, options) + const cookie = await sealCookie("nonce", value, options) return { cookie, value } }, /** @@ -204,113 +202,57 @@ export const nonce = { * @see https://openid.net/specs/openid-connect-core-1_0.html#NonceNotes * @see https://danielfett.de/2020/05/16/pkce-vs-nonce-equivalent-or-not/#nonce */ - async use( - cookies: RequestInternal["cookies"], - resCookies: Cookie[], - options: InternalOptions<"oidc"> - ): Promise { - const { provider } = options - - if (!provider?.checks?.includes("nonce")) return - - const nonce = cookies?.[options.cookies.nonce.name] - if (!nonce) throw new InvalidCheck("Nonce cookie was missing") - - const value = await decode({ - ...options.jwt, - token: nonce, - salt: options.cookies.nonce.name, - }) - - if (!value?.value) throw new InvalidCheck("Nonce value could not be parsed") - - // Clear the nonce cookie after use - resCookies.push({ - name: options.cookies.nonce.name, - value: "", - options: { ...options.cookies.nonce.options, maxAge: 0 }, - }) - - return value.value - }, + use: useCookie("nonce", "nonce"), } -/** - * When the authorization flow contains a state, we check if it's a redirect proxy - * and if so, we return the random state and the original redirect URL. - */ -export function handleState( - query: RequestInternal["query"], - provider: OAuthConfigInternal, - isOnRedirectProxy: InternalOptions["isOnRedirectProxy"] -) { - let proxyRedirect: string | undefined - - if (provider.redirectProxyUrl && !query?.state) { - throw new InvalidCheck( - "Missing state in query, but required for redirect proxy" - ) - } - - const state = decodeState(query?.state) - const randomState = state?.random - - if (isOnRedirectProxy) { - if (!state?.origin) return { randomState } - proxyRedirect = `${state.origin}?${new URLSearchParams(query)}` - } +const WEBAUTHN_CHALLENGE_MAX_AGE = 60 * 15 // 15 minutes in seconds - return { randomState, proxyRedirect } +interface WebAuthnChallengePayload { + challenge: string + registerData?: User } -const WEBAUTHN_CHALLENGE_MAX_AGE = 60 * 15 // 15 minutes in seconds -type WebAuthnChallengeCookie = { challenge: string; registerData?: User } +const webauthnChallengeSalt = "encodedWebauthnChallenge" export const webauthnChallenge = { async create( options: InternalOptions, challenge: string, registerData?: User ) { - const maxAge = WEBAUTHN_CHALLENGE_MAX_AGE - const data: WebAuthnChallengeCookie = { challenge, registerData } - const cookie = await signCookie( - "webauthnChallenge", - JSON.stringify(data), - maxAge, - options - ) - return { cookie } + return { + cookie: await sealCookie( + "webauthnChallenge", + await encode({ + secret: options.jwt.secret, + token: { challenge, registerData } satisfies WebAuthnChallengePayload, + salt: webauthnChallengeSalt, + maxAge: WEBAUTHN_CHALLENGE_MAX_AGE, + }), + options + ), + } }, - - /** - * Returns challenge if present, - */ + /** Returns WebAuthn challenge if present. */ async use( options: InternalOptions, cookies: RequestInternal["cookies"], resCookies: Cookie[] - ): Promise { - const challenge = cookies?.[options.cookies.webauthnChallenge.name] + ): Promise { + const cookieValue = cookies?.[options.cookies.webauthnChallenge.name] - if (!challenge) throw new InvalidCheck("Challenge cookie missing") + const parsed = await parseCookie("webauthnChallenge", cookieValue, options) - const value = await decode({ - ...options.jwt, - token: challenge, - salt: options.cookies.webauthnChallenge.name, + const payload = await decode({ + secret: options.jwt.secret, + token: parsed, + salt: webauthnChallengeSalt, }) - if (!value?.value) - throw new InvalidCheck("Challenge value could not be parsed") + // Clear the WebAuthn challenge cookie after use + clearCookie("webauthnChallenge", options, resCookies) - // Clear the pkce code verifier cookie after use - const cookie = { - name: options.cookies.webauthnChallenge.name, - value: "", - options: { ...options.cookies.webauthnChallenge.options, maxAge: 0 }, - } - resCookies.push(cookie) + if (!payload) throw new InvalidCheck("WebAuthn challenge was missing") - return JSON.parse(value.value) as WebAuthnChallengeCookie + return payload }, } diff --git a/packages/core/src/lib/actions/signin/authorization-url.ts b/packages/core/src/lib/actions/signin/authorization-url.ts index c0cde4c9c4..ac7d96aeee 100644 --- a/packages/core/src/lib/actions/signin/authorization-url.ts +++ b/packages/core/src/lib/actions/signin/authorization-url.ts @@ -3,6 +3,7 @@ import * as o from "oauth4webapi" import type { InternalOptions, RequestInternal } from "../../../types.js" import type { Cookie } from "../../utils/cookie.js" +import { customFetch } from "../../symbols.js" /** * Generates an authorization/request token URL. @@ -24,7 +25,11 @@ export async function getAuthorizationUrl( // We check this in assert.ts const issuer = new URL(provider.issuer!) - const discoveryResponse = await o.discoveryRequest(issuer) + const discoveryResponse = await o.discoveryRequest(issuer, { + [o.customFetch]: provider[customFetch], + // TODO: move away from allowing insecure HTTP requests + [o.allowInsecureRequests]: true, + }) const as = await o.processDiscoveryResponse(issuer, discoveryResponse) if (!as.authorization_endpoint) { @@ -39,10 +44,10 @@ export async function getAuthorizationUrl( const authParams = url.searchParams let redirect_uri: string = provider.callbackUrl - let data: object | undefined + let data: string | undefined if (!options.isOnRedirectProxy && provider.redirectProxyUrl) { redirect_uri = provider.redirectProxyUrl - data = { origin: provider.callbackUrl } + data = provider.callbackUrl logger.debug("using redirect proxy", { redirect_uri, data }) } @@ -63,6 +68,17 @@ export async function getAuthorizationUrl( const cookies: Cookie[] = [] + if ( + // Otherwise "POST /redirect_uri" wouldn't include the cookies + provider.authorization?.url.searchParams.get("response_mode") === + "form_post" + ) { + options.cookies.state.options.sameSite = "none" + options.cookies.state.options.secure = true + options.cookies.nonce.options.sameSite = "none" + options.cookies.nonce.options.secure = true + } + const state = await checks.state.create(options, data) if (state) { authParams.set("state", state.value) @@ -73,7 +89,7 @@ export async function getAuthorizationUrl( if (as && !as.code_challenge_methods_supported?.includes("S256")) { // We assume S256 PKCE support, if the server does not advertise that, // a random `nonce` must be used for CSRF protection. - if (provider.type === "oidc") provider.checks = ["nonce"] as any + if (provider.type === "oidc") provider.checks = ["nonce"] } else { const { value, cookie } = await checks.pkce.create(options) authParams.set("code_challenge", value) diff --git a/packages/core/src/lib/index.ts b/packages/core/src/lib/index.ts index da43c81984..00ee0027c1 100644 --- a/packages/core/src/lib/index.ts +++ b/packages/core/src/lib/index.ts @@ -7,6 +7,9 @@ import { validateCSRF } from "./actions/callback/oauth/csrf-token.js" import type { RequestInternal, ResponseInternal } from "../types.js" import type { AuthConfig } from "../index.js" +import { skipCSRFCheck } from "./symbols.js" + +export { customFetch, raw, skipCSRFCheck } from "./symbols.js" /** @internal */ export async function AuthInternal( @@ -92,25 +95,3 @@ export async function AuthInternal( } throw new UnknownAction(`Cannot handle action: ${action}`) } - -/** - * :::danger - * This option is intended for framework authors. - * ::: - * - * Auth.js comes with built-in CSRF protection, but - * if you are implementing a framework that is already protected against CSRF attacks, you can skip this check by - * passing this value to {@link AuthConfig.skipCSRFCheck}. - */ -export const skipCSRFCheck = Symbol("skip-csrf-check") - -/** - * :::danger - * This option is intended for framework authors. - * ::: - * - * Auth.js returns a web standard {@link Response} by default, but - * if you are implementing a framework you might want to get access to the raw internal response - * by passing this value to {@link AuthConfig.raw}. - */ -export const raw = Symbol("return-type-raw") diff --git a/packages/core/src/lib/init.ts b/packages/core/src/lib/init.ts index bd24bcdba3..9e8ca122f6 100644 --- a/packages/core/src/lib/init.ts +++ b/packages/core/src/lib/init.ts @@ -52,7 +52,7 @@ export const defaultCallbacks: InternalOptions["callbacks"] = { /** Initialize all internal options and cookies. */ export async function init({ - authOptions, + authOptions: config, providerId, action, url, @@ -65,13 +65,8 @@ export async function init({ options: InternalOptions cookies: cookie.Cookie[] }> { - const logger = setLogger(authOptions) - const { providers, provider } = parseProviders({ - providers: authOptions.providers, - url, - providerId, - options: authOptions, - }) + const logger = setLogger(config) + const { providers, provider } = parseProviders({ url, providerId, config }) const maxAge = 30 * 24 * 60 * 60 // Sessions expire after 30 days of being idle by default @@ -102,7 +97,7 @@ export async function init({ buttonText: "", }, // Custom options override defaults - ...authOptions, + ...config, // These computed settings can have values in userOptions but we override them // and are request-specific. url, @@ -111,38 +106,38 @@ export async function init({ provider, cookies: merge( cookie.defaultCookies( - authOptions.useSecureCookies ?? url.protocol === "https:" + config.useSecureCookies ?? url.protocol === "https:" ), - authOptions.cookies + config.cookies ), providers, // Session options session: { // If no adapter specified, force use of JSON Web Tokens (stateless) - strategy: authOptions.adapter ? "database" : "jwt", + strategy: config.adapter ? "database" : "jwt", maxAge, updateAge: 24 * 60 * 60, generateSessionToken: () => crypto.randomUUID(), - ...authOptions.session, + ...config.session, }, // JWT options jwt: { - secret: authOptions.secret!, // Asserted in assert.ts - maxAge: authOptions.session?.maxAge ?? maxAge, // default to same as `session.maxAge` + secret: config.secret!, // Asserted in assert.ts + maxAge: config.session?.maxAge ?? maxAge, // default to same as `session.maxAge` encode: jwt.encode, decode: jwt.decode, - ...authOptions.jwt, + ...config.jwt, }, // Event messages - events: eventsErrorHandler(authOptions.events ?? {}, logger), - adapter: adapterErrorHandler(authOptions.adapter, logger), + events: eventsErrorHandler(config.events ?? {}, logger), + adapter: adapterErrorHandler(config.adapter, logger), // Callback functions - callbacks: { ...defaultCallbacks, ...authOptions.callbacks }, + callbacks: { ...defaultCallbacks, ...config.callbacks }, logger, callbackUrl: url.origin, isOnRedirectProxy, experimental: { - ...authOptions.experimental, + ...config.experimental, }, } diff --git a/packages/core/src/lib/pages/index.ts b/packages/core/src/lib/pages/index.ts index 0e83e203fb..2c91513a3f 100644 --- a/packages/core/src/lib/pages/index.ts +++ b/packages/core/src/lib/pages/index.ts @@ -144,7 +144,10 @@ export default function renderPage(params: RenderPageParams) { }, verifyRequest(props?: any) { if (pages?.verifyRequest) - return { redirect: pages.verifyRequest, cookies } + return { + redirect: `${pages.verifyRequest}${url?.search ?? ""}`, + cookies, + } return send({ cookies, theme, diff --git a/packages/core/src/lib/pages/signin.tsx b/packages/core/src/lib/pages/signin.tsx index 15c4cb607b..6bf15d0c81 100644 --- a/packages/core/src/lib/pages/signin.tsx +++ b/packages/core/src/lib/pages/signin.tsx @@ -133,15 +133,6 @@ export default function SigninPage(props: { }} tabIndex={0} > - {logo && ( - - )} Sign in with {provider.name} + {logo && } ) : null} diff --git a/packages/core/src/lib/pages/styles.css b/packages/core/src/lib/pages/styles.css index ddcfe00e06..be0a2ba9c4 100644 --- a/packages/core/src/lib/pages/styles.css +++ b/packages/core/src/lib/pages/styles.css @@ -157,10 +157,6 @@ a.button { } } -button span { - flex-grow: 1; -} - button, a.button { padding: 0.75rem 1rem; @@ -175,7 +171,7 @@ a.button { position: relative; display: flex; align-items: center; - justify-content: center; + justify-content: space-between; &:hover { background-color: var(--provider-bg-hover, var(--color-background-hover)); @@ -189,11 +185,6 @@ a.button { span { color: #fff; } - - #provider-logo { - width: 25px; - display: block; - } } #submitButton { diff --git a/packages/core/src/lib/symbols.ts b/packages/core/src/lib/symbols.ts new file mode 100644 index 0000000000..e0346d5777 --- /dev/null +++ b/packages/core/src/lib/symbols.ts @@ -0,0 +1,60 @@ +/** + * :::danger + * This option is intended for framework authors. + * ::: + * + * Auth.js comes with built-in CSRF protection, but + * if you are implementing a framework that is already protected against CSRF attacks, you can skip this check by + * passing this value to {@link AuthConfig.skipCSRFCheck}. + */ +export const skipCSRFCheck = Symbol("skip-csrf-check") + +/** + * :::danger + * This option is intended for framework authors. + * ::: + * + * Auth.js returns a web standard {@link Response} by default, but + * if you are implementing a framework you might want to get access to the raw internal response + * by passing this value to {@link AuthConfig.raw}. + */ +export const raw = Symbol("return-type-raw") + +/** + * :::danger + * This option allows you to override the default `fetch` function used by the provider + * to make requests to the provider's OAuth endpoints directly. + * Used incorrectly, it can have security implications. + * ::: + * + * It can be used to support corporate proxies, custom fetch libraries, cache discovery endpoints, + * add mocks for testing, logging, set custom headers/params for non-spec compliant providers, etc. + * + * @example + * ```ts + * import { Auth, customFetch } from "@auth/core" + * import GitHub from "@auth/core/providers/github" + * + * const dispatcher = new ProxyAgent("my.proxy.server") + * function proxy(...args: Parameters): ReturnType { + * return undici(args[0], { ...(args[1] ?? {}), dispatcher }) + * } + * + * const response = await Auth(request, { + * providers: [GitHub({ [customFetch]: proxy })] + * }) + * ``` + * + * @see https://undici.nodejs.org/#/docs/api/ProxyAgent?id=example-basic-proxy-request-with-local-agent-dispatcher + * @see https://authjs.dev/guides/corporate-proxy + */ +export const customFetch = Symbol("custom-fetch") + +/** + * @internal + * + * Used to mark some providers for processing within the core library. + * + * **Do not use or you will be fired.** + */ +export const conformInternal = Symbol("conform-internal") diff --git a/packages/core/src/lib/utils/cookie.ts b/packages/core/src/lib/utils/cookie.ts index 5ef7b7a831..7932b37a09 100644 --- a/packages/core/src/lib/utils/cookie.ts +++ b/packages/core/src/lib/utils/cookie.ts @@ -7,7 +7,8 @@ import type { // Uncomment to recalculate the estimated size // of an empty session cookie -// import { serialize } from "cookie" +// import * as cookie from "../vendored/cookie.js" +// const { serialize } = cookie // console.log( // "Cookie estimated to be ", // serialize(`__Secure.authjs.session-token.0`, "", { diff --git a/packages/core/src/lib/utils/env.ts b/packages/core/src/lib/utils/env.ts index 77690c28ce..afe05444b5 100644 --- a/packages/core/src/lib/utils/env.ts +++ b/packages/core/src/lib/utils/env.ts @@ -48,17 +48,23 @@ export function setEnvDefaults( envObject.CF_PAGES ?? envObject.NODE_ENV !== "production" ) - config.providers = config.providers.map((p) => { - const finalProvider = typeof p === "function" ? p({}) : p - const ID = finalProvider.id.toUpperCase().replace(/-/g, "_") + config.providers = config.providers.map((provider) => { + const { id } = typeof provider === "function" ? provider({}) : provider + const ID = id.toUpperCase().replace(/-/g, "_") + const clientId = envObject[`AUTH_${ID}_ID`] + const clientSecret = envObject[`AUTH_${ID}_SECRET`] + const issuer = envObject[`AUTH_${ID}_ISSUER`] + const apiKey = envObject[`AUTH_${ID}_KEY`] + const finalProvider = + typeof provider === "function" + ? provider({ clientId, clientSecret, issuer, apiKey }) + : provider if (finalProvider.type === "oauth" || finalProvider.type === "oidc") { - finalProvider.clientId ??= envObject[`AUTH_${ID}_ID`] - finalProvider.clientSecret ??= envObject[`AUTH_${ID}_SECRET`] - if (finalProvider.type === "oidc") { - finalProvider.issuer ??= envObject[`AUTH_${ID}_ISSUER`] - } + finalProvider.clientId ??= clientId + finalProvider.clientSecret ??= clientSecret + finalProvider.issuer ??= issuer } else if (finalProvider.type === "email") { - finalProvider.apiKey ??= envObject[`AUTH_${ID}_KEY`] + finalProvider.apiKey ??= apiKey } return finalProvider }) diff --git a/packages/core/src/lib/utils/merge.ts b/packages/core/src/lib/utils/merge.ts index ad75850177..83356cd5d3 100644 --- a/packages/core/src/lib/utils/merge.ts +++ b/packages/core/src/lib/utils/merge.ts @@ -1,23 +1,28 @@ -// Source: https://stackoverflow.com/a/34749873/5364135 - -/** Simple object check */ -function isObject(item: any): boolean { - return item && typeof item === "object" && !Array.isArray(item) +function isObject(item: unknown): item is object { + return item !== null && typeof item === "object" } -/** Deep merge two objects */ -export function merge(target: any, ...sources: any[]): any { +/** Deep merge two or more objects */ +export function merge>( + target: T, + ...sources: Array | undefined> +): T & Record { if (!sources.length) return target const source = sources.shift() if (isObject(target) && isObject(source)) { for (const key in source) { if (isObject(source[key])) { - if (!target[key]) Object.assign(target, { [key]: {} }) - merge(target[key], source[key]) - } else { - Object.assign(target, { [key]: source[key] }) - } + if (!isObject(target[key])) + (target as Record)[key] = Array.isArray(source[key]) + ? [] + : {} + merge( + (target as Record)[key] as T, + source[key] as Record + ) + } else if (source[key] !== undefined) + (target as Record)[key] = source[key] } } diff --git a/packages/core/src/lib/utils/providers.ts b/packages/core/src/lib/utils/providers.ts index 4ab9331daa..8e8a4e66d0 100644 --- a/packages/core/src/lib/utils/providers.ts +++ b/packages/core/src/lib/utils/providers.ts @@ -7,28 +7,27 @@ import type { OAuthEndpointType, OAuthUserConfig, ProfileCallback, - Provider, } from "../../providers/index.js" import type { InternalProvider, Profile } from "../../types.js" -import type { AuthConfig } from "../../index.js" +import { type AuthConfig } from "../../index.js" +import { customFetch } from "../symbols.js" /** * Adds `signinUrl` and `callbackUrl` to each provider * and deep merge user-defined options. */ export default function parseProviders(params: { - providers: Provider[] url: URL providerId?: string - options: AuthConfig + config: AuthConfig }): { providers: InternalProvider[] provider?: InternalProvider } { - const { providerId, options } = params - const url = new URL(options.basePath ?? "/auth", params.url.origin) + const { providerId, config } = params + const url = new URL(config.basePath ?? "/auth", params.url.origin) - const providers = params.providers.map((p) => { + const providers = config.providers.map((p) => { const provider = typeof p === "function" ? p() : p const { options: userOptions, ...defaults } = provider @@ -40,11 +39,27 @@ export default function parseProviders(params: { }) if (provider.type === "oauth" || provider.type === "oidc") { - merged.redirectProxyUrl ??= options.redirectProxyUrl - return normalizeOAuth(merged) + merged.redirectProxyUrl ??= + userOptions?.redirectProxyUrl ?? config.redirectProxyUrl + + const normalized = normalizeOAuth(merged) as InternalProvider< + "oauth" | "oidc" + > + // We currently don't support redirect proxies for response_mode=form_post + if ( + normalized.authorization?.url.searchParams.get("response_mode") === + "form_post" + ) { + delete normalized.redirectProxyUrl + } + + // @ts-expect-error Symbols don't get merged by the `merge` function + // so we need to do it manually. + normalized[customFetch] ??= userOptions?.[customFetch] + return normalized } - return merged + return merged as InternalProvider }) return { diff --git a/packages/core/src/lib/utils/web.ts b/packages/core/src/lib/utils/web.ts index e3a4bfd748..9e782978bb 100644 --- a/packages/core/src/lib/utils/web.ts +++ b/packages/core/src/lib/utils/web.ts @@ -1,4 +1,4 @@ -import { parse as parseCookie, serialize } from "cookie" +import * as cookie from "../vendored/cookie.js" import { UnknownAction } from "../../errors.js" import { setLogger } from "./logger.js" @@ -10,6 +10,8 @@ import type { import { isAuthAction } from "./actions.js" import type { AuthConfig } from "../../index.js" +const { parse: parseCookie, serialize: serializeCookie } = cookie + async function getBody(req: Request): Promise | undefined> { if (!("body" in req) || !req.body || req.method !== "POST") return @@ -74,7 +76,7 @@ export function toResponse(res: ResponseInternal): Response { res.cookies?.forEach((cookie) => { const { name, value, options } = cookie - const cookieHeader = serialize(name, value, options) + const cookieHeader = serializeCookie(name, value, options) if (headers.has("Set-Cookie")) headers.append("Set-Cookie", cookieHeader) else headers.set("Set-Cookie", cookieHeader) }) diff --git a/packages/core/src/lib/vendored/cookie.ts b/packages/core/src/lib/vendored/cookie.ts new file mode 100644 index 0000000000..2e796e9ace --- /dev/null +++ b/packages/core/src/lib/vendored/cookie.ts @@ -0,0 +1,383 @@ +/** + * @source https://github.com/jshttp/cookie + * @author blakeembrey + * @license MIT + */ + +/** + * This is a workaround to support ESM-only environments, until `cookie` ships ESM builds. + * @see https://github.com/jshttp/cookie/issues/211 + */ + +/** + * RegExp to match cookie-name in RFC 6265 sec 4.1.1 + * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2 + * which has been replaced by the token definition in RFC 7230 appendix B. + * + * cookie-name = token + * token = 1*tchar + * tchar = "!" / "#" / "$" / "%" / "&" / "'" / + * "*" / "+" / "-" / "." / "^" / "_" / + * "`" / "|" / "~" / DIGIT / ALPHA + */ +const cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/ + +/** + * RegExp to match cookie-value in RFC 6265 sec 4.1.1 + * + * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + * ; US-ASCII characters excluding CTLs, + * ; whitespace DQUOTE, comma, semicolon, + * ; and backslash + */ +const cookieValueRegExp = + /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/ + +/** + * RegExp to match domain-value in RFC 6265 sec 4.1.1 + * + * domain-value = + * ; defined in [RFC1034], Section 3.5, as + * ; enhanced by [RFC1123], Section 2.1 + * =
    + *
    * Built-in 42School integration. * * diff --git a/packages/core/src/providers/apple.ts b/packages/core/src/providers/apple.ts index 3763325a0e..7183e17fb4 100644 --- a/packages/core/src/providers/apple.ts +++ b/packages/core/src/providers/apple.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * * Built-in sign in with Apple integration. * @@ -11,6 +11,7 @@ * @module providers/apple */ +import { conformInternal, customFetch } from "../lib/symbols.js" import type { OAuthConfig, OAuthUserConfig } from "./index.js" /** The returned user profile from Apple when using the profile callback. */ @@ -94,6 +95,20 @@ export interface AppleProfile extends Record { transfer_sub: string at_hash: string auth_time: number + user?: AppleNonConformUser +} + +/** + * This is the shape of the `user` query parameter that Apple sends the first + * time the user consents to the app. + * @see https://developer.apple.com/documentation/sign_in_with_apple/request_an_authorization_to_the_sign_in_with_apple_server#4066168 + */ +export interface AppleNonConformUser { + name: { + firstName: string + lastName: string + } + email: string } /** @@ -101,42 +116,38 @@ export interface AppleProfile extends Record { * * #### Callback URL * ``` - * https://example.com/api/auth/callback/apple + * https://example.com/auth/callback/apple * ``` * * #### Configuration * ```ts - * import { Auth } from "@auth/core" * import Apple from "@auth/core/providers/apple" - * - * const request = new Request(origin) - * const response = await Auth(request, { - * providers: [ - * Apple({ - * clientId: APPLE_CLIENT_ID, - * clientSecret: APPLE_CLIENT_SECRET, - * }), - * ], - * }) + * ... + * providers: [ + * Apple({ + * clientId: env.AUTH_APPLE_ID, + * clientSecret: env.AUTH_APPLE_SECRET, + * }) + * ] + * ... * ``` - * - * - * Apple requires the client secret to be a JWT. You can generate one using the following script: - * https://bal.so/apple-gen-secret - * - * Read more: [Creating the Client Secret -](https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens#3262048) - * + * * ### Resources - * + * * - Sign in with Apple [Overview](https://developer.apple.com/sign-in-with-apple/get-started/) * - Sign in with Apple [REST API](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api) * - [How to retrieve](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple#3383773) the user's information from Apple ID servers * - [Learn more about OAuth](https://authjs.dev/concepts/oauth) - + * - [Creating the Client Secret](https://developer.apple.com/documentation/accountorganizationaldatasharing/creating-a-client-secret) + * * ### Notes - * - * The Apple provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/apple.ts). To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). + * + * - Apple does not support localhost/http URLs. You can only use a live URL with HTTPS. + * - Apple requires the client secret to be a JWT. We provide a CLI command `npx auth add apple`, to help you generate one. + * This will prompt you for the necessary information and at the end it will add the `AUTH_APPLE_ID` and `AUTH_APPLE_SECRET` to your `.env` file. + * - Apple provides minimal user information. It returns the user's email and name, but only the first time the user consents to the app. + * - The Apple provider does not support setting up the same client for multiple deployments (like [preview deployments](https://authjs.dev/getting-started/deployment#securing-a-preview-deployment)). + * - The Apple provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/apple.ts). To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). * * ## Help * @@ -146,26 +157,50 @@ export interface AppleProfile extends Record { * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec, * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions). */ -export default function Apple

    ( - options: OAuthUserConfig

    -): OAuthConfig

    { +export default function Apple( + config: OAuthUserConfig +): OAuthConfig { return { id: "apple", name: "Apple", type: "oidc", issuer: "https://appleid.apple.com", authorization: { - params: { scope: "name email", response_mode: "form_post" }, + params: { + scope: "name email", // https://developer.apple.com/documentation/sign_in_with_apple/clientconfigi/3230955-scope + response_mode: "form_post", + }, }, - client: { - token_endpoint_auth_method: "client_secret_post", + // We need to parse the special `user` parameter the first time the user consents to the app. + // It adds the `name` object to the `profile`, with `firstName` and `lastName` fields. + [conformInternal]: true, + profile(profile) { + const name = profile.user + ? `${profile.user.name.firstName} ${profile.user.name.lastName}` + : profile.email + return { + id: profile.sub, + name: name, + email: profile.email, + image: null, + } }, - style: { - text: "#fff", - bg: "#000", + // Apple does not provide a userinfo endpoint. + async [customFetch](...args) { + const url = new URL(args[0] instanceof Request ? args[0].url : args[0]) + if (url.pathname.endsWith(".well-known/openid-configuration")) { + const response = await fetch(...args) + const json = await response.clone().json() + return Response.json({ + ...json, + userinfo_endpoint: "https://appleid.apple.com/fake_endpoint", + }) + } + return fetch(...args) }, - // https://developer.apple.com/documentation/sign_in_with_apple/request_an_authorization_to_the_sign_in_with_apple_server + client: { token_endpoint_auth_method: "client_secret_post" }, + style: { text: "#fff", bg: "#000" }, checks: ["nonce", "state"], - options, + options: config, } } diff --git a/packages/core/src/providers/asgardeo.ts b/packages/core/src/providers/asgardeo.ts index d65014445b..9b79cf6a32 100644 --- a/packages/core/src/providers/asgardeo.ts +++ b/packages/core/src/providers/asgardeo.ts @@ -1,5 +1,5 @@ /** - *

    + *
    * * Built-in sign in with Asgardeo integration. * diff --git a/packages/core/src/providers/atlassian.ts b/packages/core/src/providers/atlassian.ts new file mode 100644 index 0000000000..ca211e0b45 --- /dev/null +++ b/packages/core/src/providers/atlassian.ts @@ -0,0 +1,120 @@ +/** + * + * + * @module providers/atlassian + */ +import type { OAuthConfig, OAuthUserConfig } from "./index.js" + +/** The returned user profile from Atlassian when using the profile callback. */ +export interface AtlassianProfile extends Record { + /** + * The user's atlassian account ID + */ + account_id: string + /** + * The user name + */ + name: string + /** + * The user's email + */ + email: string + /** + * The user's profile picture + */ + picture: string +} + +/** + * ### Setup + * + * #### Callback URL + * ``` + * https://example.com/api/auth/callback/atlassian + * ``` + * + * #### Configuration + * + * Import the provider and configure it in your **Auth.js** initialization file: + * + * ```ts + * import Atlassian from "@auth/core/providers/atlassian" + * ... + * providers: [ + * Atlassian({ + * clientId: env.AUTH_ATLASSIAN_ID, + * clientSecret: env.AUTH_ATLASSIAN_SECRET, + * }), + * ] + * ... + * ``` + * + * ### Configuring Atlassian + * + * Follow these steps: + * + * 1. From any page on [developer.atlassian.com](https://developer.atlassian.com), select your profile icon in the top-right corner, and from the dropdown, select **Developer console**. + * 2. Select your app from the list (or create one if you don't already have one) + * 3. Select **Authorization** in the left menu + * 4. Next to OAuth 2.0 (3LO), select **Configure** (or **Add** for newly created app) + * 5. Enter the **Callback URL**: `https://{YOUR_DOMAIN}/api/auth/callback/atlassian` + * 6. Click Save changes + * 7. Select **Settings** in the left menu + * 8. Access and copy your app's **Client ID** and **Secret** + * + * Then, create a `.env` file in the project root add the following entries: + * + * ``` + * AUTH_ATLASSIAN_ID= + * AUTH_ATLASSIAN_SECRET= + * ``` + * + * ### Resources + * + * - [Atlassian docs](https://developer.atlassian.com/cloud/jira/software/oauth-2-3lo-apps/) + * + * ### Notes + * + * The Atlassian provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/atlassian.ts). To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/providers/custom-provider#override-default-options). + * + * ## Help + * + * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue). + * + * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from + * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec, + * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions). + */ +export default function Atlassian( + options: OAuthUserConfig +): OAuthConfig { + return { + id: "atlassian", + name: "Atlassian", + type: "oauth", + authorization: { + url: "https://auth.atlassian.com/authorize", + params: { audience: "api.atlassian.com", scope: "read:me" }, + }, + token: "https://auth.atlassian.com/oauth/token", + userinfo: "https://api.atlassian.com/me", + profile(profile) { + return { + id: profile.account_id, + name: profile.name, + email: profile.email, + image: profile.picture, + } + }, + checks: ["state"], + style: { bg: "#fff", text: "#0052cc" }, + options, + } +} diff --git a/packages/core/src/providers/auth0.ts b/packages/core/src/providers/auth0.ts index 0b239f0584..c588f3a2f1 100644 --- a/packages/core/src/providers/auth0.ts +++ b/packages/core/src/providers/auth0.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * * Built-in sign in with Auth0 integration. * diff --git a/packages/core/src/providers/authentik.ts b/packages/core/src/providers/authentik.ts index 0bb3608a87..c00ef99ad8 100644 --- a/packages/core/src/providers/authentik.ts +++ b/packages/core/src/providers/authentik.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Authentik integration. * * diff --git a/packages/core/src/providers/azure-ad-b2c.ts b/packages/core/src/providers/azure-ad-b2c.ts index 5ce2c2ac32..2a87f29b8e 100644 --- a/packages/core/src/providers/azure-ad-b2c.ts +++ b/packages/core/src/providers/azure-ad-b2c.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Azure AD B2C integration. * * @@ -27,6 +27,7 @@ export interface AzureADB2CProfile { postalCode: string emails: string[] tfp: string + preferred_username: string } /** @@ -103,21 +104,16 @@ export interface AzureADB2CProfile { * ::: */ export default function AzureADB2C( - options: OIDCUserConfig & { - primaryUserFlow?: string - tenantId?: string - } + options: OIDCUserConfig ): OIDCConfig { - const { tenantId, primaryUserFlow } = options - options.issuer ??= `https://${tenantId}.b2clogin.com/${tenantId}.onmicrosoft.com/${primaryUserFlow}/v2.0` return { id: "azure-ad-b2c", - name: "Azure Active Directory B2C", + name: "Azure AD B2C", type: "oidc", profile(profile) { return { id: profile.sub, - name: profile.name, + name: profile.name ?? profile.preferred_username, email: profile?.emails?.[0], image: null, } diff --git a/packages/core/src/providers/azure-ad.ts b/packages/core/src/providers/azure-ad.ts index 97f950c401..a7192dcbb7 100644 --- a/packages/core/src/providers/azure-ad.ts +++ b/packages/core/src/providers/azure-ad.ts @@ -1,178 +1,30 @@ /** - *
    + * * * @module providers/azure-ad */ -import type { OAuthConfig, OAuthUserConfig } from "./index.js" +import MicrosoftEntraID, { + MicrosoftEntraIDProfile, +} from "./microsoft-entra-id.js" -export interface AzureADProfile extends Record { - sub: string - nickname: string - email: string - picture: string -} +export type AzureADProfile = MicrosoftEntraIDProfile /** - * * @deprecated - * Azure Active Directory is now known as [Microsoft Entra ID](/getting-started/providers/microsoft-entra-id). + * Azure Active Directory has been renamed to [Microsoft Entra ID](/getting-started/providers/microsoft-entra-id). * Import this provider from the `providers/microsoft-entra-id` submodule instead of `providers/azure-ad`. - * - * Add Azure AD login to your page. - * - * ### Setup - * - * #### Callback URL - * ``` - * https://example.com/api/auth/callback/azure-ad - * ``` - * - * #### Configuration - *```ts - * import { Auth } from "@auth/core" - * import AzureAd from "@auth/core/providers/azure-ad" - * - * const request = new Request(origin) - * const response = await Auth(request, { - * providers: [ - * AzureAd({ - * clientId: AZURE_AD_CLIENT_ID, - * clientSecret: AZURE_AD_CLIENT_SECRET, - * }), - * ], - * }) - * ``` - * - * ### Resources - * - * - [AzureAd OAuth documentation](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow/) - * - [AzureAd OAuth apps](https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app/) - * - * @example - * - * ### To allow specific Active Directory users access: - * - * - In https://portal.azure.com/ search for "Azure Active Directory", and select your organization. - * - Next, go to "App Registration" in the left menu, and create a new one. - * - Pay close attention to "Who can use this application or access this API?" - * - This allows you to scope access to specific types of user accounts - * - Only your tenant, all azure tenants, or all azure tenants and public Microsoft accounts (Skype, Xbox, Outlook.com, etc.) - * - When asked for a redirection URL, use `https://yourapplication.com/api/auth/callback/azure-ad` or for development `http://localhost:3000/api/auth/callback/azure-ad`. - * - After your App Registration is created, under "Client Credential" create your Client secret. - * - Click on "API Permissions" and click "Grant admin consent for..." to allow User.Read access to your tenant. - * - Now copy your: - * - Application (client) ID - * - Directory (tenant) ID - * - Client secret (value) - * - * In `.env.local` create the following entries: - * - * ``` - * AZURE_AD_CLIENT_ID= - * AZURE_AD_CLIENT_SECRET= - * AZURE_AD_TENANT_ID= - * ``` - * - * That will default the tenant to use the `common` authorization endpoint. [For more details see here](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols#endpoints). - * - * :::note - * Azure AD returns the profile picture in an ArrayBuffer, instead of just a URL to the image, so our provider converts it to a base64 encoded image string and returns that instead. See: https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0#examples. The default image size is 48x48 to avoid [running out of space](https://next-auth.js.org/faq#:~:text=What%20are%20the%20disadvantages%20of%20JSON%20Web%20Tokens%3F) in case the session is saved as a JWT. - * ::: - * - * In `auth.ts` find or add the `AzureAD` entries: - * - * ```ts - * import AzureAd from "@auth/core/providers/azure-ad" - * - * ... - * providers: [ - * AzureAD({ - * clientId: process.env.AZURE_AD_CLIENT_ID, - * clientSecret: process.env.AZURE_AD_CLIENT_SECRET, - * tenantId: process.env.AZURE_AD_TENANT_ID, - * }), - * ] - * ... - * - * ``` - * - * ### Notes - * - * By default, Auth.js assumes that the AzureAd provider is - * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification. - * - * :::tip - * - * The AzureAd provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/azure-ad.ts). - * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). - * - * ::: - * - * :::info **Disclaimer** - * - * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue). - * - * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from - * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec, - * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions). - * - * ::: */ -export default function AzureAD

    ( - options: OAuthUserConfig

    & { - /** - * https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0#examples - * - * @default 48 - */ - profilePhotoSize?: 48 | 64 | 96 | 120 | 240 | 360 | 432 | 504 | 648 - /** @default "common" */ - tenantId?: string - } -): OAuthConfig

    { - const { tenantId = "common", profilePhotoSize = 48, ...rest } = options - rest.issuer ??= `https://login.microsoftonline.com/${tenantId}/v2.0` +export default function AzureAD( + config: Parameters[0] +): ReturnType { return { + ...MicrosoftEntraID(config), id: "azure-ad", name: "Azure Active Directory", - type: "oidc", - wellKnown: `${rest.issuer}/.well-known/openid-configuration?appid=${options.clientId}`, - authorization: { - params: { - scope: "openid profile email User.Read", - }, - }, - async profile(profile, tokens) { - // https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0#examples - const response = await fetch( - `https://graph.microsoft.com/v1.0/me/photos/${profilePhotoSize}x${profilePhotoSize}/$value`, - { headers: { Authorization: `Bearer ${tokens.access_token}` } } - ) - - // Confirm that profile photo was returned - let image - // TODO: Do this without Buffer - if (response.ok && typeof Buffer !== "undefined") { - try { - const pictureBuffer = await response.arrayBuffer() - const pictureBase64 = Buffer.from(pictureBuffer).toString("base64") - image = `data:image/jpeg;base64, ${pictureBase64}` - } catch {} - } - - return { - id: profile.sub, - name: profile.name, - email: profile.email, - image: image ?? null, - } - }, - style: { text: "#fff", bg: "#0072c6" }, - options: rest, } } diff --git a/packages/core/src/providers/bankid-no.ts b/packages/core/src/providers/bankid-no.ts index c715b22834..8bca214341 100644 --- a/packages/core/src/providers/bankid-no.ts +++ b/packages/core/src/providers/bankid-no.ts @@ -1,5 +1,5 @@ /** - *

    + *
    * * Built-in sign in with BankID Norway integration. * diff --git a/packages/core/src/providers/battlenet.ts b/packages/core/src/providers/battlenet.ts index c429709776..09c516b9c6 100644 --- a/packages/core/src/providers/battlenet.ts +++ b/packages/core/src/providers/battlenet.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Battle.net integration. * * diff --git a/packages/core/src/providers/beyondidentity.ts b/packages/core/src/providers/beyondidentity.ts index 68fe36c2ea..7fd5522497 100644 --- a/packages/core/src/providers/beyondidentity.ts +++ b/packages/core/src/providers/beyondidentity.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Beyond Identity integration. * * diff --git a/packages/core/src/providers/box.ts b/packages/core/src/providers/box.ts index b7f84a4cb3..4d06c310a4 100644 --- a/packages/core/src/providers/box.ts +++ b/packages/core/src/providers/box.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Box integration. * * diff --git a/packages/core/src/providers/boxyhq-saml.ts b/packages/core/src/providers/boxyhq-saml.ts index f1ae7a370d..e3353e484a 100644 --- a/packages/core/src/providers/boxyhq-saml.ts +++ b/packages/core/src/providers/boxyhq-saml.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in BoxyHQ SAML integration. * * diff --git a/packages/core/src/providers/bungie.ts b/packages/core/src/providers/bungie.ts index 3fcd803395..94a6b69d53 100644 --- a/packages/core/src/providers/bungie.ts +++ b/packages/core/src/providers/bungie.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Bungie integration. * * diff --git a/packages/core/src/providers/click-up.ts b/packages/core/src/providers/click-up.ts index f923424fcc..5435319b54 100644 --- a/packages/core/src/providers/click-up.ts +++ b/packages/core/src/providers/click-up.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in ClickUp integration. * * diff --git a/packages/core/src/providers/cognito.ts b/packages/core/src/providers/cognito.ts index 27bad9947c..89f87dc25b 100644 --- a/packages/core/src/providers/cognito.ts +++ b/packages/core/src/providers/cognito.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Cognito integration. * * diff --git a/packages/core/src/providers/coinbase.ts b/packages/core/src/providers/coinbase.ts index ccfeb52ff4..88266a99e6 100644 --- a/packages/core/src/providers/coinbase.ts +++ b/packages/core/src/providers/coinbase.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Coinbase integration. * * diff --git a/packages/core/src/providers/concept2.ts b/packages/core/src/providers/concept2.ts new file mode 100644 index 0000000000..714608b899 --- /dev/null +++ b/packages/core/src/providers/concept2.ts @@ -0,0 +1,108 @@ +/** + * + * + * @module providers/concept2 + */ + +import type { OAuthConfig, OAuthUserConfig } from "./index.js" + +export interface Concept2Profile extends Record { + id: number + username: string + first_name: string + last_name: string + gender: string + dob: string + email: string + country: string + profile_image: string + age_restricted: boolean + email_permission: boolean | null + max_heart_rate: number | null + weight: number | null + logbook_privacy: string | null +} + +/** + * Add Concept2 login to your page. + * + * ### Setup + * + * #### Callback URL + * ``` + * https://example.com/api/auth/callback/concept2 + * ``` + * + * #### Configuration + *```js + * import { Auth } from "@auth/core" + * import Concept2 from "@auth/core/providers/concept2" + * + * const request = new Request(origin) + * const response = await Auth(request, { + * providers: [ + * Concept2({ + * clientId: CONCEPT2_CLIENT_ID, + * clientSecret: CONCEPT2_CLIENT_SECRET + * }), + * ], + * }) + * ``` + * + * ### Resources + * + * - [Concept2 OAuth documentation](https://log.concept2.com/developers/documentation/) + * + * ### Notes + * + * By default, Auth.js assumes that the Concept2 provider is + * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification. + * + * :::tip + * + * The Concept2 provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/concept2.ts)). + * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/providers/custom-provider#override-default-options). + * + * ::: + * + * :::info **Disclaimer** + * + * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue). + * + * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from + * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec, + * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions). + * + * ::: + */ +export default function Concept2( + options: OAuthUserConfig +): OAuthConfig { + return { + id: "concept2", + name: "Concept2", + type: "oauth", + authorization: { + url: "https://log.concept2.com/oauth/authorize", + params: { + scope: "user:read,results:write", + }, + }, + token: "https://log.concept2.com/oauth/access_token", + userinfo: "https://log.concept2.com/api/users/me", + profile(profile) { + return { + id: profile.data.id, + name: profile.data.username, + email: profile.data.email, + image: profile.data.profile_image, + } + }, + options, + } +} diff --git a/packages/core/src/providers/credentials.ts b/packages/core/src/providers/credentials.ts index 1f8a07e2ab..afe5c1bc8a 100644 --- a/packages/core/src/providers/credentials.ts +++ b/packages/core/src/providers/credentials.ts @@ -74,7 +74,7 @@ export interface CredentialsConfig< ) => Awaitable } -export type CredentialsProviderType = "Credentials" +export type CredentialsProviderId = "credentials" /** * The Credentials provider allows you to handle signing in with arbitrary credentials, diff --git a/packages/core/src/providers/descope.ts b/packages/core/src/providers/descope.ts index 601c3f6fe3..2a9c950461 100644 --- a/packages/core/src/providers/descope.ts +++ b/packages/core/src/providers/descope.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * * Built-in sign in with Descope integration. * @@ -50,7 +50,7 @@ export interface DescopeProfile { * import Descope from "@auth/core/providers/descope" * * const request = new Request(origin) - * const response = await Auth(request, { providers: [Descope] }) + * const response = await Auth(request, { providers: [Descope({ clientId: AUTH_DESCOPE_ID, clientSecret: AUTH_DESCOPE_SECRET, issuer: AUTH_DESCOPE_ISSUER })] }) * ``` * * ### Configuring Descope @@ -66,6 +66,7 @@ export interface DescopeProfile { * ``` * AUTH_DESCOPE_ID="" # Descope's Issuer can be found in "Authentication Methods > SSO > Identity Provider" (Can also be taken from "Project > Project ID") * AUTH_DESCOPE_SECRET="" # Manage > Access Keys + * AUTH_DESCOPE_ISSUER="" # Applications -> OIDC Application -> Issuer * ``` * * ### Resources @@ -92,15 +93,12 @@ export interface DescopeProfile { export default function Descope( config: OIDCUserConfig ): OIDCConfig { + config.issuer ??= `https://api.descope.com/${config.clientId}` return { id: "descope", name: "Descope", type: "oidc", - issuer: `https://api.descope.com/${config.clientId}`, - style: { - bg: "#1C1C23", - text: "#ffffff", - }, + style: { bg: "#1C1C23", text: "#ffffff" }, checks: ["pkce", "state"], options: config, } diff --git a/packages/core/src/providers/discord.ts b/packages/core/src/providers/discord.ts index 5fb6c103db..da5c61d62b 100644 --- a/packages/core/src/providers/discord.ts +++ b/packages/core/src/providers/discord.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Discord integration. * * @@ -146,8 +146,10 @@ export default function Discord

    ( id: "discord", name: "Discord", type: "oauth", - authorization: - "https://discord.com/api/oauth2/authorize?scope=identify+email", + authorization: { + url: "https://discord.com/api/oauth2/authorize", + params: { scope: "identify email" }, + }, token: "https://discord.com/api/oauth2/token", userinfo: "https://discord.com/api/users/@me", profile(profile) { diff --git a/packages/core/src/providers/dribbble.ts b/packages/core/src/providers/dribbble.ts index 10a8775fc2..1b9145a1e2 100644 --- a/packages/core/src/providers/dribbble.ts +++ b/packages/core/src/providers/dribbble.ts @@ -1,5 +1,5 @@ /** - *

    + *
    * Built-in Dribbble integration. * * diff --git a/packages/core/src/providers/dropbox.ts b/packages/core/src/providers/dropbox.ts index 52fcb2c9f4..cd2ee0b36c 100644 --- a/packages/core/src/providers/dropbox.ts +++ b/packages/core/src/providers/dropbox.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Dropbox integration. * * @@ -72,7 +72,7 @@ export default function Dropbox( authorization: { url: "https://www.dropbox.com/oauth2/authorize", params: { - access_type: "offline", + token_access_type: "offline", scope: "account_info.read", }, }, diff --git a/packages/core/src/providers/duende-identity-server6.ts b/packages/core/src/providers/duende-identity-server6.ts index 494cea0b4b..9a9b32c8e6 100644 --- a/packages/core/src/providers/duende-identity-server6.ts +++ b/packages/core/src/providers/duende-identity-server6.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in DuendeIdentityServer6 integration. * * diff --git a/packages/core/src/providers/email.ts b/packages/core/src/providers/email.ts index 0507a69674..35bd306d77 100644 --- a/packages/core/src/providers/email.ts +++ b/packages/core/src/providers/email.ts @@ -1,5 +1,6 @@ import type { CommonProviderOptions } from "./index.js" import type { Awaitable, Theme } from "../types.js" +export type { EmailProviderId } from "./provider-types.js" // TODO: Kepts for backwards compatibility // Remove this import and encourage users @@ -26,21 +27,25 @@ export default function Email(config: NodemailerUserConfig): NodemailerConfig { // when started working on https://github.com/nextauthjs/next-auth/discussions/1465 export type EmailProviderType = "email" +export type EmailProviderSendVerificationRequestParams = { + identifier: string + url: string + expires: Date + provider: EmailConfig + token: string + theme: Theme + request: Request +} + export interface EmailConfig extends CommonProviderOptions { id: string - type: EmailProviderType + type: "email" name: string - from: string - maxAge: number - sendVerificationRequest: (params: { - identifier: string - url: string - expires: Date - provider: EmailConfig - token: string - theme: Theme - request: Request - }) => Awaitable + from?: string + maxAge?: number + sendVerificationRequest: ( + params: EmailProviderSendVerificationRequestParams + ) => Awaitable /** Used to hash the verification token. */ secret?: string /** Used with HTTP-based email providers. */ @@ -49,7 +54,7 @@ export interface EmailConfig extends CommonProviderOptions { server?: NodemailerConfig["server"] generateVerificationToken?: () => Awaitable normalizeIdentifier?: (identifier: string) => string - options: EmailUserConfig + options?: EmailUserConfig } export type EmailUserConfig = Omit, "options" | "type"> diff --git a/packages/core/src/providers/eventbrite.ts b/packages/core/src/providers/eventbrite.ts index 915c1262eb..3598338062 100644 --- a/packages/core/src/providers/eventbrite.ts +++ b/packages/core/src/providers/eventbrite.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Eventbrite integration. * * diff --git a/packages/core/src/providers/eveonline.ts b/packages/core/src/providers/eveonline.ts index ce97824f25..7faaf8ac24 100644 --- a/packages/core/src/providers/eveonline.ts +++ b/packages/core/src/providers/eveonline.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in EVEOnline integration. * * diff --git a/packages/core/src/providers/facebook.ts b/packages/core/src/providers/facebook.ts index 3eab1c4883..7405116949 100644 --- a/packages/core/src/providers/facebook.ts +++ b/packages/core/src/providers/facebook.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Facebook integration. * * diff --git a/packages/core/src/providers/faceit.ts b/packages/core/src/providers/faceit.ts index 634fbbc227..818cecb157 100644 --- a/packages/core/src/providers/faceit.ts +++ b/packages/core/src/providers/faceit.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in FACEIT integration. * * diff --git a/packages/core/src/providers/forwardemail.ts b/packages/core/src/providers/forwardemail.ts new file mode 100644 index 0000000000..550380e728 --- /dev/null +++ b/packages/core/src/providers/forwardemail.ts @@ -0,0 +1,37 @@ +import type { EmailConfig, EmailUserConfig } from "./index.js" +import { html, text } from "../lib/utils/email.js" + +/** @todo Document this */ +export default function ForwardEmail(config: EmailUserConfig): EmailConfig { + return { + id: "forwardemail", + type: "email", + name: "Forward Email", + from: "Auth.js ", + maxAge: 24 * 60 * 60, + async sendVerificationRequest(params) { + const { identifier: to, provider, url, theme } = params + const { host } = new URL(url) + const res = await fetch("https://api.forwardemail.net/v1/emails", { + method: "POST", + headers: { + Authorization: `Basic ${btoa(provider.apiKey + ":")}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + from: provider.from, + to, + subject: `Sign in to ${host}`, + html: html({ url, host, theme }), + text: text({ url, host }), + }), + }) + + if (!res.ok) + throw new Error( + "Forward Email error: " + JSON.stringify(await res.json()) + ) + }, + options: config, + } +} diff --git a/packages/core/src/providers/foursquare.ts b/packages/core/src/providers/foursquare.ts index d428979cb7..f5806afcdf 100644 --- a/packages/core/src/providers/foursquare.ts +++ b/packages/core/src/providers/foursquare.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in FourSquare integration. * * diff --git a/packages/core/src/providers/freshbooks.ts b/packages/core/src/providers/freshbooks.ts index b21dc53cc0..96c6441cb8 100644 --- a/packages/core/src/providers/freshbooks.ts +++ b/packages/core/src/providers/freshbooks.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in FreshBooks integration. * * diff --git a/packages/core/src/providers/fusionauth.ts b/packages/core/src/providers/fusionauth.ts index 261ffd1a62..5bb3d31bd6 100644 --- a/packages/core/src/providers/fusionauth.ts +++ b/packages/core/src/providers/fusionauth.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in FusionAuth integration. * * diff --git a/packages/core/src/providers/github.ts b/packages/core/src/providers/github.ts index 7284a12116..54a5e53236 100644 --- a/packages/core/src/providers/github.ts +++ b/packages/core/src/providers/github.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in GitHub integration. * * diff --git a/packages/core/src/providers/gitlab.ts b/packages/core/src/providers/gitlab.ts index 78d32736a1..cc2562586d 100644 --- a/packages/core/src/providers/gitlab.ts +++ b/packages/core/src/providers/gitlab.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in GitLab integration. * * diff --git a/packages/core/src/providers/google.ts b/packages/core/src/providers/google.ts index 211472c6e7..9dc7dff2d1 100644 --- a/packages/core/src/providers/google.ts +++ b/packages/core/src/providers/google.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Google integration. * * diff --git a/packages/core/src/providers/hubspot.ts b/packages/core/src/providers/hubspot.ts index a14841e74f..a3f39ee019 100644 --- a/packages/core/src/providers/hubspot.ts +++ b/packages/core/src/providers/hubspot.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in HubSpot integration. * * diff --git a/packages/core/src/providers/identity-server4.ts b/packages/core/src/providers/identity-server4.ts index be58d531c5..47264cdd23 100644 --- a/packages/core/src/providers/identity-server4.ts +++ b/packages/core/src/providers/identity-server4.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in IdentityServer4 integration. * * diff --git a/packages/core/src/providers/index.ts b/packages/core/src/providers/index.ts index d2f97d2bc2..9edfe85872 100644 --- a/packages/core/src/providers/index.ts +++ b/packages/core/src/providers/index.ts @@ -1,15 +1,12 @@ import type { Profile } from "../types.js" import CredentialsProvider from "./credentials.js" -import type { - CredentialsConfig, - CredentialsProviderType, -} from "./credentials.js" +import type { CredentialsConfig, CredentialsProviderId } from "./credentials.js" import type EmailProvider from "./email.js" -import type { EmailConfig, EmailProviderType } from "./email.js" +import type { EmailConfig, EmailProviderId } from "./email.js" import type { OAuth2Config, OAuthConfig, - OAuthProviderType, + OAuthProviderId, OIDCConfig, } from "./oauth.js" import type { WebAuthnConfig, WebAuthnProviderType } from "./webauthn.js" @@ -91,11 +88,11 @@ export type Provider

    = ( InternalProviderOptions export type BuiltInProviders = Record< - OAuthProviderType, + OAuthProviderId, (config: Partial>) => OAuthConfig > & - Record & - Record & + Record & + Record & Record< WebAuthnProviderType, (config: Partial) => WebAuthnConfig @@ -110,9 +107,9 @@ export interface AppProvider extends CommonProviderOptions { callbackUrl: string } -export type RedirectableProviderType = "email" | "credentials" - -export type BuiltInProviderType = - | RedirectableProviderType - | OAuthProviderType +export type ProviderId = + | CredentialsProviderId + | EmailProviderId + | OAuthProviderId | WebAuthnProviderType + | (string & {}) // HACK: To allow user-defined providers in `signIn` diff --git a/packages/core/src/providers/instagram.ts b/packages/core/src/providers/instagram.ts index bc467890df..7dd3945f5e 100644 --- a/packages/core/src/providers/instagram.ts +++ b/packages/core/src/providers/instagram.ts @@ -1,5 +1,5 @@ /** - *

    + *
    * Built-in Instagram integration. * * diff --git a/packages/core/src/providers/kakao.ts b/packages/core/src/providers/kakao.ts index f6d7d1df2e..e18879a45a 100644 --- a/packages/core/src/providers/kakao.ts +++ b/packages/core/src/providers/kakao.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Kakao integration. * * diff --git a/packages/core/src/providers/keycloak.ts b/packages/core/src/providers/keycloak.ts index 8708a43999..62e1dc202d 100644 --- a/packages/core/src/providers/keycloak.ts +++ b/packages/core/src/providers/keycloak.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Keycloak integration. * * diff --git a/packages/core/src/providers/kinde.ts b/packages/core/src/providers/kinde.ts index 190d32bcf1..b550a8ab76 100644 --- a/packages/core/src/providers/kinde.ts +++ b/packages/core/src/providers/kinde.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * * Built-in sign in with Kinde integration. * diff --git a/packages/core/src/providers/line.ts b/packages/core/src/providers/line.ts index b4a2c32451..fdc8e8f25f 100644 --- a/packages/core/src/providers/line.ts +++ b/packages/core/src/providers/line.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in LINE integration. * * diff --git a/packages/core/src/providers/linkedin.ts b/packages/core/src/providers/linkedin.ts index 339e9510af..48dc92cf47 100644 --- a/packages/core/src/providers/linkedin.ts +++ b/packages/core/src/providers/linkedin.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in LinkedIn integration. * * diff --git a/packages/core/src/providers/loops.ts b/packages/core/src/providers/loops.ts new file mode 100644 index 0000000000..dd76fa1eb8 --- /dev/null +++ b/packages/core/src/providers/loops.ts @@ -0,0 +1,79 @@ +/** + * + * + * @module providers/loops + */ + +import type { EmailConfig, EmailUserConfig } from "./email.js" + +export type LoopsUserConfig = Omit, "options" | "type"> + +export interface LoopsConfig + extends Omit { + id: string + apiKey: string + transactionalId: string + sendVerificationRequest: (params: Params) => Promise + options: LoopsUserConfig +} + +type Params = Parameters[0] & { + provider: LoopsConfig +} + +/** + * + * @param config + * @returns LoopsConfig + * @requires LoopsUserConfig + * @example + * ```ts + * Loops({ + * apiKey: process.env.AUTH_LOOPS_KEY, + * transactionalId: process.env.AUTH_LOOPS_TRANSACTIONAL_ID, + * }) + * ``` + * + * @typedef LoopsUserConfig + */ + +export default function Loops(config: LoopsUserConfig): LoopsConfig { + return { + id: "loops", + apiKey: "", + type: "email", + name: "Loops", + from: "Auth.js ", + maxAge: 24 * 60 * 60, + transactionalId: config.transactionalId || "", + async sendVerificationRequest(params: Params) { + const { identifier: to, provider, url } = params + if (!provider.apiKey || !provider.transactionalId) + throw new TypeError("Missing Loops API Key or TransactionalId") + + const res = await fetch("https://app.loops.so/api/v1/transactional", { + method: "POST", + headers: { + Authorization: `Bearer ${provider.apiKey}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + transactionalId: provider.transactionalId, + email: to, + dataVariables: { + url: url, + }, + }), + }) + if (!res.ok) { + throw new Error("Loops Send Error: " + JSON.stringify(await res.json())) + } + }, + options: config, + } +} diff --git a/packages/core/src/providers/mailchimp.ts b/packages/core/src/providers/mailchimp.ts index a8786970e5..d88c1856be 100644 --- a/packages/core/src/providers/mailchimp.ts +++ b/packages/core/src/providers/mailchimp.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Mailchimp integration. * * diff --git a/packages/core/src/providers/mailgun.ts b/packages/core/src/providers/mailgun.ts new file mode 100644 index 0000000000..84f29d3c52 --- /dev/null +++ b/packages/core/src/providers/mailgun.ts @@ -0,0 +1,79 @@ +/** + * + * + * @module providers/mailgun + */ +import type { EmailConfig, EmailUserConfig } from "./index.js" +import { html, text } from "../lib/utils/email.js" + +/** + * Add Mailgun login to your page. + * + * ### Setup + * + * #### Configuration + *```ts + * import { Auth } from "@auth/core" + * import Mailgun from "@auth/core/providers/mailgun" + * + * const request = new Request(origin) + * const response = await Auth(request, { + * providers: [ + * Mailgun({ from: MAILGUN_DOMAIN }), + * ], + * }) + * ``` + * + * ### Resources + * + * - [Mailgun documentation](https://documentation.mailgun.com/docs/mailgun) + * + * :::info **Disclaimer** + * + * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue). + * + * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from + * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec, + * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions). + * + * ::: + */ +export default function MailGun(config: EmailUserConfig): EmailConfig { + return { + id: "mailgun", + type: "email", + name: "Mailgun", + from: "Auth.js ", + maxAge: 24 * 60 * 60, + async sendVerificationRequest(params) { + const { identifier: to, provider, url, theme } = params + const { host } = new URL(url) + const domain = provider.from?.split("@").at(1) + + if (!domain) throw new Error("malformed Mailgun domain") + + const form = new FormData() + form.append("from", `${provider.name} <${provider.from}>`) + form.append("to", to) + form.append("subject", `Sign in to ${host}`) + form.append("html", html({ host, url, theme })) + form.append("text", text({ host, url })) + + const res = await fetch(`https://api.mailgun.net/v3/${domain}/messages`, { + method: "POST", + headers: { + Authorization: `Basic ${btoa(`api:${provider.apiKey}`)}`, + }, + body: form, + }) + + if (!res.ok) throw new Error("Mailgun error: " + (await res.text())) + }, + options: config, + } +} diff --git a/packages/core/src/providers/mailru.ts b/packages/core/src/providers/mailru.ts index b7c9503fd0..b5bac8878c 100644 --- a/packages/core/src/providers/mailru.ts +++ b/packages/core/src/providers/mailru.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Mailru integration. * * diff --git a/packages/core/src/providers/mastodon.ts b/packages/core/src/providers/mastodon.ts index 03d822f062..4113c6cfe7 100644 --- a/packages/core/src/providers/mastodon.ts +++ b/packages/core/src/providers/mastodon.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Mastodon integration. * * diff --git a/packages/core/src/providers/mattermost.ts b/packages/core/src/providers/mattermost.ts index 474a00f92b..fc578ec4ba 100644 --- a/packages/core/src/providers/mattermost.ts +++ b/packages/core/src/providers/mattermost.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Mattermost integration. * * diff --git a/packages/core/src/providers/medium.ts b/packages/core/src/providers/medium.ts index a1e38b0a56..786a777992 100644 --- a/packages/core/src/providers/medium.ts +++ b/packages/core/src/providers/medium.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Medium integration. * * diff --git a/packages/core/src/providers/microsoft-entra-id.ts b/packages/core/src/providers/microsoft-entra-id.ts index 61982a6f74..be71594493 100644 --- a/packages/core/src/providers/microsoft-entra-id.ts +++ b/packages/core/src/providers/microsoft-entra-id.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Microsoft Entra ID integration. * * @@ -8,7 +8,8 @@ * * @module providers/microsoft-entra-id */ -import type { OAuthConfig, OAuthUserConfig } from "./index.js" +import { conformInternal, customFetch } from "../lib/symbols.js" +import type { OIDCConfig, OIDCUserConfig } from "./index.js" export interface MicrosoftEntraIDProfile extends Record { sub: string @@ -17,47 +18,31 @@ export interface MicrosoftEntraIDProfile extends Record { picture: string } -export type MicrosoftEntraIDOptions

    = - OAuthUserConfig

    & { - /** - * https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0&tabs=http#examples - * - * @default 48 - */ - profilePhotoSize?: 48 | 64 | 96 | 120 | 240 | 360 | 432 | 504 | 648 - /** @default "common" */ - tenantId?: string - } - /** * * Add Microsoft Entra ID login to your page. * - * :::note - * Entra is the [new name](https://learn.microsoft.com/en-us/entra/fundamentals/new-name) Microsoft has given to what was previously known as "Azure AD" - * ::: - * * ## Setup * * ### Callback URL * ``` - * https://example.com/api/auth/callback/microsoft-entra-id + * https://example.com/auth/callback/microsoft-entra-id * ``` * * ### Configuration + * + * @example + * * ```ts - * import { Auth } from "@auth/core" * import MicrosoftEntraID from "@auth/core/providers/microsoft-entra-id" - * - * const request = new Request(origin) - * const response = await Auth(request, { - * providers: [ - * MicrosoftEntraID({ - * clientId: AUTH_MICROSOFT_ENTRA_ID_ID, - * clientSecret: AUTH_MICROSOFT_ENTRA_ID_SECRET, - * }), - * ], - * }) + * ... + * providers: [ + * MicrosoftEntraID({ + * clientId: env.AUTH_MICROSOFT_ENTRA_ID_ID, + * clientSecret: env.AUTH_MICROSOFT_ENTRA_ID_SECRET, + * }), + * ] + * ... * ``` * * ### Resources @@ -65,54 +50,31 @@ export type MicrosoftEntraIDOptions

    = * - [Microsoft Entra OAuth documentation](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow) * - [Microsoft Entra OAuth apps](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app) * - * @example - * * ### To allow specific Active Directory users access: * - * - In https://entra.microsoft.com/ select Identity from the left bar menu. - * - Next, go to "App Registration" in the left menu, and create a new one. - * - Pay close attention to "Who can use this application or access this API?" - * - This allows you to scope access to specific types of user accounts - * - Only your tenant, all Microsoft tenants, or all Microsoft tenants and public Microsoft accounts (Skype, Xbox, Outlook.com, etc.) - * - When asked for a redirection URL, use `https://yourapplication.com/api/auth/callback/microsoft-entra-id` or for development `http://localhost:3000/api/auth/callback/microsoft-entra-id`. - * - After your App Registration is created, under "Client Credential" create your Client secret. - * - Now copy your: - * - Application (client) ID - * - Directory (tenant) ID - * - Client secret (value) + * By default, the Entra ID provider lets the users to log in with any Microsoft account (either Personal, School or Work). * - * In `.env.local` create the following entries: - * - * ``` - * AUTH_MICROSOFT_ENTRA_ID_ID= - * AUTH_MICROSOFT_ENTRA_ID_SECRET= - * AUTH_MICROSOFT_ENTRA_ID_TENANT_ID= - * ``` - * - * That will default the tenant to use the `common` authorization endpoint. [For more details see here](https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols#endpoints). - * - * :::note - * Microsoft Entra returns the profile picture in an ArrayBuffer, instead of just a URL to the image, so our provider converts it to a base64 encoded image string and returns that instead. See: https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0&tabs=http#examples. The default image size is 48x48 to avoid [running out of space](https://next-auth.js.org/faq#:~:text=What%20are%20the%20disadvantages%20of%20JSON%20Web%20Tokens%3F) in case the session is saved as a JWT. - * ::: - * - * In `auth.ts` find or add the `Entra` entries: + * To only allow your organization's users to log in, you'll need to set the `issuer`, in addition to the client id and secret. * + * @example * ```ts * import MicrosoftEntraID from "@auth/core/providers/microsoft-entra-id" * * providers: [ * MicrosoftEntraID({ - * clientId: process.env.AUTH_MICROSOFT_ENTRA_ID_ID, - * clientSecret: process.env.AUTH_MICROSOFT_ENTRA_ID_SECRET, - * tenantId: process.env.AUTH_MICROSOFT_ENTRA_ID_TENANT_ID, + * clientId: env.AUTH_MICROSOFT_ENTRA_ID_ID, + * clientSecret: env.AUTH_MICROSOFT_ENTRA_ID_SECRET, + * issuer: env.AUTH_MICROSOFT_ENTRA_ID_TENANT_ID, * }), * ] * ``` * * ### Notes * - * By default, Auth.js assumes that the MicrosoftEntra provider is - * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification. + * Microsoft Entra ID returns the profile picture in an ArrayBuffer, instead of just a URL to the image, so our provider converts it to a base64 encoded image string and returns that instead. See: https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0&tabs=http#examples. The default image size is 48x48 to avoid [running out of space](https://next-auth.js.org/faq#:~:text=What%20are%20the%20disadvantages%20of%20JSON%20Web%20Tokens%3F) in case the session is saved as a JWT. + * + * By default, Auth.js assumes that the Microsoft Entra ID provider is + * based on the [Open ID Connect](https://openid.net/specs/openid-connect-core-1_0.html) specification. * * :::tip * @@ -131,21 +93,25 @@ export type MicrosoftEntraIDOptions

    = * * ::: */ -export default function MicrosoftEntraID

    ( - options: MicrosoftEntraIDOptions

    -): OAuthConfig

    { - const { tenantId = "common", profilePhotoSize = 48, ...rest } = options - rest.issuer ??= `https://login.microsoftonline.com/${tenantId}/v2.0` +export default function MicrosoftEntraID( + config: OIDCUserConfig & { + /** + * https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0&tabs=http#examples + * + * @default 48 + */ + profilePhotoSize?: 48 | 64 | 96 | 120 | 240 | 360 | 432 | 504 | 648 + } +): OIDCConfig { + const { profilePhotoSize = 48 } = config + + config.issuer ??= "https://login.microsoftonline.com/common/v2.0" + return { id: "microsoft-entra-id", name: "Microsoft Entra ID", type: "oidc", - wellKnown: `${rest.issuer}/.well-known/openid-configuration?appid=${options.clientId}`, - authorization: { - params: { - scope: "openid profile email User.Read", - }, - }, + authorization: { params: { scope: "openid profile email User.Read" } }, async profile(profile, tokens) { // https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0&tabs=http#examples const response = await fetch( @@ -172,6 +138,20 @@ export default function MicrosoftEntraID

    ( } }, style: { text: "#fff", bg: "#0072c6" }, - options: rest, + /** Entra ID returns the wrong issuer @see https://github.com/MicrosoftDocs/azure-docs/issues/113944 */ + async [customFetch](...args) { + const url = new URL(args[0] instanceof Request ? args[0].url : args[0]) + if (url.pathname.endsWith(".well-known/openid-configuration")) { + const response = await fetch(...args) + const json = await response.clone().json() + const tenantRe = /microsoftonline\.com\/(\w+)\/v2\.0/ + const tenantId = config.issuer?.match(tenantRe)?.[1] ?? "common" + const issuer = json.issuer.replace("{tenantid}", tenantId) + return Response.json({ ...json, issuer }) + } + return fetch(...args) + }, + [conformInternal]: true, + options: config, } } diff --git a/packages/core/src/providers/naver.ts b/packages/core/src/providers/naver.ts index 55b98f6285..f6987abaf6 100644 --- a/packages/core/src/providers/naver.ts +++ b/packages/core/src/providers/naver.ts @@ -1,5 +1,5 @@ /** - *

    + *
    * Built-in Naver integration. * * diff --git a/packages/core/src/providers/netlify.ts b/packages/core/src/providers/netlify.ts index a566efcce8..bc9e5fa4a9 100644 --- a/packages/core/src/providers/netlify.ts +++ b/packages/core/src/providers/netlify.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Netlify integration. * * diff --git a/packages/core/src/providers/netsuite.ts b/packages/core/src/providers/netsuite.ts index 54231a5669..ed10b0d3e2 100644 --- a/packages/core/src/providers/netsuite.ts +++ b/packages/core/src/providers/netsuite.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in NetSuite integration. * * diff --git a/packages/core/src/providers/nextcloud.ts b/packages/core/src/providers/nextcloud.ts new file mode 100644 index 0000000000..54b416dbe8 --- /dev/null +++ b/packages/core/src/providers/nextcloud.ts @@ -0,0 +1,207 @@ +/** + * + * + * @module providers/nextcloud + */ + +import type { OAuthConfig, OAuthUserConfig } from "./index.js" + +/** + * Represents the Nextcloud user profile data returned from the `/ocs/v1.php/cloud/users/`. + * @see [Check out the documentation for more details](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/instruction_set_for_users.html#get-data-of-a-single-user) + */ +export interface NextcloudProfile extends Record { + /** + * The user's username. + * @example "frank" + */ + id: string + + /** + * The email address associated with the user. + * @example "frank@domain.tld" + */ + email: string | null + + /** + * The display name of the user. + * @example "Frank K." + */ + displayname: string + + /** + * The phone number of the user. + */ + phone: string + + /** + * The address of the user. + * @example "Foobar 12, 12345 Town" + */ + address: string + + /** + * The website URL of the user. + * @example "https://nextcloud.com" + */ + website: string + + /** + * The user's Twitter handle. + * @example "Nextcloud" + */ + twitter: string + + /** + * The user's Fediverse handle. + */ + fediverse: string + + /** + * The organization associated with the user. + */ + organisation: string + + /** + * The role or position of the user. + */ + role: string + + /** + * The headline or brief description of the user. + */ + headline: string + + /** + * The biography or detailed description of the user. + */ + biography: string + + /** + * An array of group names that the user belongs to. + * @example ["admin", "group1", "group2"] + */ + groups: string[] + + /** + * The language preference of the user. + * @example "en" + */ + language: string + + /** + * The locale or language locale of the user. + * @example "en_US" + */ + locale: string + + /** + * Indicates whether the user account is enabled or disabled. + * @example true + */ + enabled: boolean + + /** + * The storage location of the user's files. + * @example "/path/to/nextcloud/data/frank" + */ + storageLocation: string +} + +/** + * Add Nextcloud login to your page. + * + * ### Setup + * + * #### Callback URL + * ``` + * https://example.com/auth/callback/nextcloud + * ``` + * + * #### Configuration + * ```ts + * import { Auth } from "@auth/core" + * import Nextcloud from "@auth/core/providers/nextcloud" + * + * const request = new Request(origin) + * const response = await Auth(request, { + * providers: [ + * Nextcloud({ clientId: AUTH_NEXTCLOUD_ID, clientSecret: AUTH_NEXTCLOUD_SECRET, issuer: AUTH_NEXTCLOUD_ISSUER }), + * ], + * }) + * ``` + * + * ### Resources + * + * - [Nextcloud Documentation](https://docs.nextcloud.com/) + * - [Nextcloud OAuth 2](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/oauth2.html) + * - [Nextcloud Clients and Client APIs](https://docs.nextcloud.com/server/latest/developer_manual/client_apis/index.html) + * - [Nextcloud User provisioning API](https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_provisioning_api.html) + * + * ### Notes + * + * By default, Auth.js assumes that the Nextcloud provider is + * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification. + * + * :::tip + * + * The Nextcloud provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/nextcloud.ts). + * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). + * + * ::: + * + * :::info **Disclaimer** + * + * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue). + * + * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from + * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec, + * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions). + * + * ::: + */ +export default function Nextcloud( + options: OAuthUserConfig +): OAuthConfig { + return { + id: "nextcloud", + name: "Nextcloud", + type: "oauth", + authorization: `${options.issuer}/apps/oauth2/authorize`, + token: `${options.issuer}/apps/oauth2/api/v1/token`, + userinfo: { + url: `${options.issuer}/ocs/v1.php/cloud/users`, + async request({ tokens, provider }) { + const url = `${provider.userinfo?.url}/${tokens.user_id}` + + const res = await fetch(url, { + headers: { + "OCS-APIRequest": "true", + Authorization: `Bearer ${tokens.access_token}`, + Accept: "application/json", + }, + }).then((res) => res.json()) + return res.ocs.data + }, + }, + profile(profile) { + return { + id: profile.id, + name: profile.displayname, + email: profile.email, + image: `${options.issuer}/avatar/${profile.id}/512`, + } + }, + style: { + logo: "/nextcloud.svg", + bg: "#fff", + text: "#0082C9", + }, + options, + } +} diff --git a/packages/core/src/providers/nodemailer.ts b/packages/core/src/providers/nodemailer.ts index 9329211526..a86b7d6705 100644 --- a/packages/core/src/providers/nodemailer.ts +++ b/packages/core/src/providers/nodemailer.ts @@ -1,13 +1,13 @@ import { createTransport } from "nodemailer" -import { html, text } from "../lib/utils/email.js" import { AuthError } from "../errors.js" +import { html, text } from "../lib/utils/email.js" import type { Transport, TransportOptions } from "nodemailer" import * as JSONTransport from "nodemailer/lib/json-transport/index.js" import * as SendmailTransport from "nodemailer/lib/sendmail-transport/index.js" import * as SESTransport from "nodemailer/lib/ses-transport/index.js" -import * as SMTPTransport from "nodemailer/lib/smtp-transport/index.js" import * as SMTPPool from "nodemailer/lib/smtp-pool/index.js" +import * as SMTPTransport from "nodemailer/lib/smtp-transport/index.js" import * as StreamTransport from "nodemailer/lib/stream-transport/index.js" import type { Awaitable, Theme } from "../types.js" import type { EmailConfig } from "./email.js" @@ -40,7 +40,7 @@ export interface NodemailerConfig extends EmailConfig { theme: Theme request: Request }) => Awaitable - options: NodemailerUserConfig + options?: NodemailerUserConfig } export type NodemailerUserConfig = Omit< @@ -72,7 +72,9 @@ export default function Nodemailer( text: text({ url, host }), html: html({ url, host, theme }), }) - const failed = result.rejected.concat(result.pending).filter(Boolean) + const rejected = result.rejected || [] + const pending = result.pending || [] + const failed = rejected.concat(pending).filter(Boolean) if (failed.length) { throw new Error(`Email (${failed.join(", ")}) could not be sent`) } diff --git a/packages/core/src/providers/notion.ts b/packages/core/src/providers/notion.ts index a2c2571d43..d96820cfcf 100644 --- a/packages/core/src/providers/notion.ts +++ b/packages/core/src/providers/notion.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Notion integration. * * diff --git a/packages/core/src/providers/oauth.ts b/packages/core/src/providers/oauth.ts index 372a8fb9fb..6e24343d2c 100644 --- a/packages/core/src/providers/oauth.ts +++ b/packages/core/src/providers/oauth.ts @@ -2,6 +2,7 @@ import type { Client, PrivateKey } from "oauth4webapi" import type { CommonProviderOptions } from "../providers/index.js" import type { Awaitable, Profile, TokenSet, User } from "../types.js" import type { AuthConfig } from "../index.js" +import type { conformInternal, customFetch } from "../lib/symbols.js" // TODO: fix types type AuthorizationParameters = any @@ -10,7 +11,7 @@ type IssuerMetadata = any type OAuthCallbackChecks = any type OpenIDCallbackChecks = any -export type { OAuthProviderType } from "./oauth-types.js" +export type { OAuthProviderId } from "./provider-types.js" export type OAuthChecks = OpenIDCallbackChecks | OAuthCallbackChecks @@ -204,7 +205,7 @@ export interface OAuth2Config * Pass overrides to the underlying OAuth library. * See [`oauth4webapi` client](https://github.com/panva/oauth4webapi/blob/main/docs/interfaces/Client.md) for details. */ - client?: Partial + client?: Partial style?: OAuthProviderButtonStyles /** * Normally, when you sign in with an OAuth provider and another account @@ -221,6 +222,8 @@ export interface OAuth2Config */ allowDangerousEmailAccountLinking?: boolean redirectProxyUrl?: AuthConfig["redirectProxyUrl"] + /** @see {customFetch} */ + [customFetch]?: typeof fetch /** * The options provided by the user. * We will perform a deep-merge of these values @@ -228,6 +231,8 @@ export interface OAuth2Config * * @internal */ + /** @see {conformInternal} */ + [conformInternal]?: true options?: OAuthUserConfig } @@ -265,7 +270,10 @@ export type OAuthConfigInternal = Omit< url: URL request?: TokenEndpointHandler["request"] clientPrivateKey?: CryptoKey | PrivateKey - /** @internal */ + /** + * @internal + * @deprecated + */ conform?: TokenEndpointHandler["conform"] } userinfo?: { url: URL; request?: UserinfoEndpointHandler["request"] } diff --git a/packages/core/src/providers/okta.ts b/packages/core/src/providers/okta.ts index 6d98ea7dc0..0833f44e70 100644 --- a/packages/core/src/providers/okta.ts +++ b/packages/core/src/providers/okta.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Okta integration. * * diff --git a/packages/core/src/providers/onelogin.ts b/packages/core/src/providers/onelogin.ts index bccbc4ece6..b1c05a108c 100644 --- a/packages/core/src/providers/onelogin.ts +++ b/packages/core/src/providers/onelogin.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in OneLogin integration. * * diff --git a/packages/core/src/providers/ory-hydra.ts b/packages/core/src/providers/ory-hydra.ts index 25cb69a3bd..fb8a2d754d 100644 --- a/packages/core/src/providers/ory-hydra.ts +++ b/packages/core/src/providers/ory-hydra.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Ory Hydra integration. * * diff --git a/packages/core/src/providers/osso.ts b/packages/core/src/providers/osso.ts index 58e6c21d11..2f987d2f74 100644 --- a/packages/core/src/providers/osso.ts +++ b/packages/core/src/providers/osso.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Osso integration. * * diff --git a/packages/core/src/providers/osu.ts b/packages/core/src/providers/osu.ts index 1f419ce757..250dfc86ae 100644 --- a/packages/core/src/providers/osu.ts +++ b/packages/core/src/providers/osu.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in osu! integration. * * diff --git a/packages/core/src/providers/passage.ts b/packages/core/src/providers/passage.ts index 0a1b39f746..a15f4cdb5e 100644 --- a/packages/core/src/providers/passage.ts +++ b/packages/core/src/providers/passage.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Passage by 1Password integration. * * diff --git a/packages/core/src/providers/passkey.ts b/packages/core/src/providers/passkey.ts index 6e181bf4f6..de634c2c82 100644 --- a/packages/core/src/providers/passkey.ts +++ b/packages/core/src/providers/passkey.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Passkey integration. * * diff --git a/packages/core/src/providers/patreon.ts b/packages/core/src/providers/patreon.ts index 745b2d5ca8..95f93d47f0 100644 --- a/packages/core/src/providers/patreon.ts +++ b/packages/core/src/providers/patreon.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Patreon integration. * * diff --git a/packages/core/src/providers/pinterest.ts b/packages/core/src/providers/pinterest.ts index 500febbb74..29ee832b57 100644 --- a/packages/core/src/providers/pinterest.ts +++ b/packages/core/src/providers/pinterest.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Pinterest integration. * * diff --git a/packages/core/src/providers/pipedrive.ts b/packages/core/src/providers/pipedrive.ts index 09d257bb4e..b9ab49a5a2 100644 --- a/packages/core/src/providers/pipedrive.ts +++ b/packages/core/src/providers/pipedrive.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Pipedrive integration. * * diff --git a/packages/core/src/providers/reddit.ts b/packages/core/src/providers/reddit.ts index 2edaacd99e..3e5d22abaa 100644 --- a/packages/core/src/providers/reddit.ts +++ b/packages/core/src/providers/reddit.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Reddit integration. * * diff --git a/packages/core/src/providers/roblox.ts b/packages/core/src/providers/roblox.ts index e20579af70..421caaab6a 100644 --- a/packages/core/src/providers/roblox.ts +++ b/packages/core/src/providers/roblox.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Roblox integration. * * diff --git a/packages/core/src/providers/salesforce.ts b/packages/core/src/providers/salesforce.ts index 27a3199277..26870c1a2f 100644 --- a/packages/core/src/providers/salesforce.ts +++ b/packages/core/src/providers/salesforce.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Salesforce integration. * * @@ -8,7 +8,7 @@ * * @module providers/salesforce */ -import type { OAuthConfig, OAuthUserConfig } from "./index.js" +import type { OIDCConfig, OIDCUserConfig } from "./index.js" export interface SalesforceProfile extends Record { sub: string @@ -18,8 +18,6 @@ export interface SalesforceProfile extends Record { } /** - * Add Salesforce login to your page. - * * ### Setup * * #### Callback URL @@ -28,16 +26,16 @@ export interface SalesforceProfile extends Record { * ``` * * #### Configuration - *```ts + * ```ts * import { Auth } from "@auth/core" - * import salesforce from "@auth/core/providers/salesforce" + * import Salesforce from "@auth/core/providers/salesforce" * * const request = new Request(origin) * const response = await Auth(request, { * providers: [ - * salesforce({ - * clientId: salesforce_CLIENT_ID, - * clientSecret: salesforce_CLIENT_SECRET, + * Salesforce({ + * clientId: AUTH_SALESFORCE_ID, + * clientSecret: AUTH_SALESFORCE_SECRET, * }), * ], * }) @@ -45,49 +43,31 @@ export interface SalesforceProfile extends Record { * * ### Resources * - * - [Salesforce OAuth documentation](https://help.salesforce.com/articleView?id=remoteaccess_authenticate.htm&type=5) + * - [Auth0 docs](https://auth0.com/docs/authenticate) * * ### Notes * - * By default, Auth.js assumes that the salesforce provider is - * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification. - * - * :::tip - * - * The Salesforce provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/salesforce.ts). - * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). + * The Salesforce provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/salesforce.ts). To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). * - * ::: - * - * :::info **Disclaimer** + * ## Help * * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue). * * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec, * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions). - * - * ::: */ -export default function Salesforce

    ( - options: OAuthUserConfig

    -): OAuthConfig

    { - const { issuer = "https://login.salesforce.com" } = options +export default function Salesforce( + options: OIDCUserConfig +): OIDCConfig { return { id: "salesforce", name: "Salesforce", - type: "oauth", - authorization: `${issuer}/services/oauth2/authorize?display=page`, - token: `${issuer}/services/oauth2/token`, - userinfo: `${issuer}/services/oauth2/userinfo`, - profile(profile) { - return { - id: profile.user_id, - name: null, - email: null, - image: profile.picture, - } - }, + type: "oidc", + issuer: "https://login.salesforce.com", + idToken: false, + checks: ["pkce", "state", "nonce"], + style: { bg: "#00a1e0" }, options, } } diff --git a/packages/core/src/providers/simplelogin.ts b/packages/core/src/providers/simplelogin.ts index d0eee806e6..81728f2351 100644 --- a/packages/core/src/providers/simplelogin.ts +++ b/packages/core/src/providers/simplelogin.ts @@ -1,5 +1,5 @@ /** - *

    + *
    * Built-in SimpleLogin integration. * * diff --git a/packages/core/src/providers/slack.ts b/packages/core/src/providers/slack.ts index e5f2549db5..26a6ce2748 100644 --- a/packages/core/src/providers/slack.ts +++ b/packages/core/src/providers/slack.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Slack integration. * * diff --git a/packages/core/src/providers/spotify.ts b/packages/core/src/providers/spotify.ts index fce6235be8..92d89c46ab 100644 --- a/packages/core/src/providers/spotify.ts +++ b/packages/core/src/providers/spotify.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Spotify integration. * * diff --git a/packages/core/src/providers/strava.ts b/packages/core/src/providers/strava.ts index e429166fb9..99443f1797 100644 --- a/packages/core/src/providers/strava.ts +++ b/packages/core/src/providers/strava.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Strava integration. * * diff --git a/packages/core/src/providers/threads.ts b/packages/core/src/providers/threads.ts index 51a82c3e94..d6779bc49f 100644 --- a/packages/core/src/providers/threads.ts +++ b/packages/core/src/providers/threads.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Threads integration. * * diff --git a/packages/core/src/providers/tiktok.ts b/packages/core/src/providers/tiktok.ts index 3b0ef7526f..bb60110b13 100644 --- a/packages/core/src/providers/tiktok.ts +++ b/packages/core/src/providers/tiktok.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in TikTok integration. * * @@ -8,13 +8,13 @@ * * @module providers/tiktok */ -import { TokenSet } from "../types.js" +import { customFetch } from "../lib/symbols.js" import type { OAuthConfig, OAuthUserConfig } from "./index.js" /** * [More info](https://developers.tiktok.com/doc/tiktok-api-v2-get-user-info/) */ -export interface TiktokProfile extends Record { +export interface TiktokProfile { data: { user: { /** @@ -137,6 +137,8 @@ export interface TiktokProfile extends Record { * ``` * * #### Configuration + * You can omit the client and secret if you have set the `AUTH_TIKTOK_ID` and `AUTH_TIKTOK_SECRET` environment variables. + * Remeber that the AUTH_TIKTOK_ID is the Client Key in the TikTok Application *```ts * import { Auth } from "@auth/core" * import TikTok from "@auth/core/providers/tiktok" @@ -144,7 +146,7 @@ export interface TiktokProfile extends Record { * const request = new Request(origin) * const response = await Auth(request, { * providers: [ - * TikTok({ clientId: TIKTOK_CLIENT_KEY, clientSecret: TIKTOK_CLIENT_SECRET }), + * TikTok({ clientId: AUTH_TIKTOK_ID, clientSecret: AUTH_TIKTOK_SECRET }), * ], * }) * ``` @@ -153,6 +155,7 @@ export interface TiktokProfile extends Record { * - [TikTok app console](https://developers.tiktok.com/) * - [TikTok login kit documentation](https://developers.tiktok.com/doc/login-kit-web/) * - [Avaliable Scopes](https://developers.tiktok.com/doc/tiktok-api-scopes/) + * - [Sandbox for testing](https://developers.tiktok.com/blog/introducing-sandbox) * * * ### Notes @@ -160,6 +163,7 @@ export interface TiktokProfile extends Record { * :::tip * * Production applications cannot use localhost URLs to sign in with TikTok. You need add the domain and Callback/Redirect url's to your TikTok app and have them review and approved by the TikTok Team. + * If you need to test your implementation, you can use the sandbox feature and ngrok for testing in localhost. * * ::: * @@ -171,7 +175,7 @@ export interface TiktokProfile extends Record { * * :::tip * - * Client_ID will be the Client Key in the TikTok Application + * AUTH_TIKTOK_ID will be the Client Key in the TikTok Application * * ::: * @@ -183,6 +187,64 @@ export interface TiktokProfile extends Record { * The TikTok provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/tiktok.ts). * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). * + * If You Need to Customize the TikTok Provider, You Can Use the Following Configuration as a custom provider + * + * ```ts + * { + * async [customFetch](...args) { + * const url = new URL(args[0] instanceof Request ? args[0].url : args[0]); + * if (url.pathname.endsWith("/token/")) { + * const [url, request] = args; + * const customHeaders = { + * ...request?.headers, + * "content-type": "application/x-www-form-urlencoded", + * }; + * + * const customBody = new URLSearchParams(request?.body as string); + * customBody.append("client_key", process.env.AUTH_TIKTOK_ID!); + * + * const response = await fetch(url, { + * ...request, + * headers: customHeaders, + * body: customBody.toString(), + * }); + * const json = await response.json(); + * return Response.json({ ...json }); + * } + * return fetch(...args); + * }, + * + * id: "tiktok", + * name: "TikTok", + * type: "oauth", + * client: { + * token_endpoint_auth_method: "client_secret_post", + * }, + * + * authorization: { + * url: "https://www.tiktok.com/v2/auth/authorize", + * params: { + * client_key: options.clientId, + * scope: "user.info.profile", //Add scopes you need eg(user.info.profile,user.info.stats,video.list) + * }, + * }, + * + * token: "https://open.tiktokapis.com/v2/oauth/token/", + * + * userinfo: "https://open.tiktokapis.com/v2/user/info/?fields=open_id,avatar_url,display_name,username", //Add fields you need eg(open_id,avatar_url,display_name,username) + * + * profile(profile) { + * return { + * id: profile.data.user.open_id, + * name: profile.data.user.display_name, + * image: profile.data.user.avatar_url, + * email: profile.data.user.email || profile.data.user.username || null, + * }; + * }, + * } + * + * ``` + * * ::: * * :::info **Disclaimer** @@ -195,62 +257,50 @@ export interface TiktokProfile extends Record { * * ::: */ -export default function TikTok

    ( - options: OAuthUserConfig

    -): OAuthConfig

    { +export default function TikTok( + options: OAuthUserConfig +): OAuthConfig { return { + async [customFetch](...args) { + const url = new URL(args[0] instanceof Request ? args[0].url : args[0]) + if (url.pathname.endsWith("/token/")) { + const [url, request] = args + + const customHeaders = { + ...request?.headers, + "content-type": "application/x-www-form-urlencoded", + } + + const customBody = new URLSearchParams(request?.body as string) + customBody.append("client_key", options.clientId!) + const response = await fetch(url, { + ...request, + headers: customHeaders, + body: customBody.toString(), + }) + const json = await response.json() + return Response.json({ ...json }) + } + return fetch(...args) + }, id: "tiktok", name: "TikTok", type: "oauth", + client: { + token_endpoint_auth_method: "client_secret_post", + }, authorization: { url: "https://www.tiktok.com/v2/auth/authorize", params: { client_key: options.clientId, scope: "user.info.profile", - response_type: "code", }, }, - token: { - url: "https://open.tiktokapis.com/v2/oauth/token/", - async request({ params, provider }) { - const res = await fetch(provider.token?.url as unknown as string, { - method: "POST", - headers: { - "Cache-Control": "no-cache", - "Content-Type": "application/x-www-form-urlencoded", - }, - body: new URLSearchParams({ - client_key: provider.clientId!, - client_secret: provider.clientSecret!, - code: params.code!, - grant_type: "authorization_code", - redirect_uri: provider.callbackUrl!, - }), - }).then((res) => res.json()) + token: "https://open.tiktokapis.com/v2/oauth/token/", + userinfo: + "https://open.tiktokapis.com/v2/user/info/?fields=open_id,avatar_url,display_name,username", - const tokens: TokenSet = { - access_token: res.access_token, - expires_at: res.expires_in, - refresh_token: res.refresh_token, - scope: res.scope, - id_token: res.open_id, - token_type: res.token_type, - session_state: res.open_id, - } - return { - tokens, - } - }, - }, - userinfo: { - url: "https://open.tiktokapis.com/v2/user/info/?fields=open_id,avatar_url,display_name,username", - async request({ tokens, provider }) { - return await fetch(provider.userinfo?.url as URL, { - headers: { Authorization: `Bearer ${tokens.access_token}` }, - }).then(async (res) => await res.json()) - }, - }, profile(profile) { return { id: profile.data.user.open_id, diff --git a/packages/core/src/providers/todoist.ts b/packages/core/src/providers/todoist.ts index 3bc58b3c0c..2fd0505f28 100644 --- a/packages/core/src/providers/todoist.ts +++ b/packages/core/src/providers/todoist.ts @@ -1,5 +1,5 @@ /** - *

    + *
    * Built-in Todoist integration. * * diff --git a/packages/core/src/providers/trakt.ts b/packages/core/src/providers/trakt.ts index 1462b8818b..c4ddd8a401 100644 --- a/packages/core/src/providers/trakt.ts +++ b/packages/core/src/providers/trakt.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Trakt integration. * * diff --git a/packages/core/src/providers/twitch.ts b/packages/core/src/providers/twitch.ts index 4846d27010..ca4f50ff1d 100644 --- a/packages/core/src/providers/twitch.ts +++ b/packages/core/src/providers/twitch.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Twitch integration. * * diff --git a/packages/core/src/providers/twitter.ts b/packages/core/src/providers/twitter.ts index dd1b3cf776..436fc21600 100644 --- a/packages/core/src/providers/twitter.ts +++ b/packages/core/src/providers/twitter.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Twitter integration. * * diff --git a/packages/core/src/providers/united-effects.ts b/packages/core/src/providers/united-effects.ts index 734a982ce0..2e50153e5a 100644 --- a/packages/core/src/providers/united-effects.ts +++ b/packages/core/src/providers/united-effects.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in United Effects integration. * * diff --git a/packages/core/src/providers/vipps.ts b/packages/core/src/providers/vipps.ts new file mode 100644 index 0000000000..e3e1b13cd6 --- /dev/null +++ b/packages/core/src/providers/vipps.ts @@ -0,0 +1,86 @@ +import type { OIDCConfig, OIDCUserConfig } from "./index.js" + +interface Address { + address_type: string + country: string + formatted: string + postal_code: string + region: string + street_address: string +} + +/** @see [User Profile Structure](https://developer.vippsmobilepay.com/api/userinfo/#operation/userinfoAuthorizationCode) */ +export interface VippsProfile extends Record { + accounts: { + account_name: string + account_number: number + bank_name: string + }[] + address: Address + other_addresses: Address[] + birthdate: string + email: string + email_verified: boolean + family_name: string + given_name: string + name: string + nin: string + phone_number: string + sid: string + sub: string + delegatedConsents: { + language: string + heading: string + termsDescription: string + confirmConsentButtonText: string + links: { + termsLinkText: string + termsLinkUrl: string + privacyStatementLinkText: string + privacyStatementLinkUrl: string + } + timeOfConsent: string + consents: { + id: string + accepted: boolean + required: boolean + textDisplayedToUser: string + }[] + } +} + +/** + * @see [Vipps Login API](https://developer.vippsmobilepay.com/docs/APIs/login-api/api-guide) + * + * ## Example + * + * ```ts + * import Vipps from "@auth/core/providers/vipps" + * ... + * providers: [ + * Vipps({ + * clientId: process.env.AUTH_VIPPS_ID, + * clientSecret: process.env.AUTH_VIPPS_SECRET, + * }) + * ] + * ... + * ``` + * ::: note + * If you're testing, make sure to override the issuer option with apitest.vipps.no + * ::: + */ +export default function Vipps( + options: OIDCUserConfig +): OIDCConfig { + return { + id: "vipps", + name: "Vipps", + type: "oidc", + issuer: "https://api.vipps.no/access-management-1.0/access/", + authorization: { params: { scope: "openid name email" } }, + idToken: false, + style: { brandColor: "#f05c18" }, + checks: ["pkce", "state", "nonce"], + options, + } +} diff --git a/packages/core/src/providers/vk.ts b/packages/core/src/providers/vk.ts index e4b5620b24..1d475aff90 100644 --- a/packages/core/src/providers/vk.ts +++ b/packages/core/src/providers/vk.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in VK integration. * * diff --git a/packages/core/src/providers/webex.ts b/packages/core/src/providers/webex.ts index fa1ee94457..df4ecfbc4b 100755 --- a/packages/core/src/providers/webex.ts +++ b/packages/core/src/providers/webex.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Webex integration. * * diff --git a/packages/core/src/providers/wechat.ts b/packages/core/src/providers/wechat.ts index 363f1386d0..ebb2052e38 100644 --- a/packages/core/src/providers/wechat.ts +++ b/packages/core/src/providers/wechat.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in WeChat integration. * * diff --git a/packages/core/src/providers/wikimedia.ts b/packages/core/src/providers/wikimedia.ts index 7043ff7ddb..bca61601aa 100644 --- a/packages/core/src/providers/wikimedia.ts +++ b/packages/core/src/providers/wikimedia.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Wikimedia integration. * * diff --git a/packages/core/src/providers/wordpress.ts b/packages/core/src/providers/wordpress.ts index e44dbe50c7..7a9f1717ff 100644 --- a/packages/core/src/providers/wordpress.ts +++ b/packages/core/src/providers/wordpress.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in WordPress integration. * * diff --git a/packages/core/src/providers/workos.ts b/packages/core/src/providers/workos.ts index 776aa95496..54d9ccda7d 100644 --- a/packages/core/src/providers/workos.ts +++ b/packages/core/src/providers/workos.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in WorkOS integration. * * diff --git a/packages/core/src/providers/yandex.ts b/packages/core/src/providers/yandex.ts index a477051d3e..80f19bcd73 100644 --- a/packages/core/src/providers/yandex.ts +++ b/packages/core/src/providers/yandex.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Yandex integration. * * diff --git a/packages/core/src/providers/zitadel.ts b/packages/core/src/providers/zitadel.ts index c8f55c616b..7ea39d310d 100644 --- a/packages/core/src/providers/zitadel.ts +++ b/packages/core/src/providers/zitadel.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Zitadel integration. * * diff --git a/packages/core/src/providers/zoho.ts b/packages/core/src/providers/zoho.ts index 113afd206f..a84be5f44b 100644 --- a/packages/core/src/providers/zoho.ts +++ b/packages/core/src/providers/zoho.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in ZOHO integration. * * diff --git a/packages/core/src/providers/zoom.ts b/packages/core/src/providers/zoom.ts index fdf9500d0a..ed97010afa 100644 --- a/packages/core/src/providers/zoom.ts +++ b/packages/core/src/providers/zoom.ts @@ -1,5 +1,5 @@ /** - *
    + *
    * Built-in Zoom integration. * * diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index a22bedd388..4968eb9323 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -51,11 +51,8 @@ * @module types */ -import type { CookieSerializeOptions } from "cookie" -import type { - OAuth2TokenEndpointResponse, - OpenIDTokenEndpointResponse, -} from "oauth4webapi" +import type { SerializeOptions } from "./lib/vendored/cookie.js" +import type { TokenEndpointResponse } from "oauth4webapi" import type { Adapter } from "./adapters.js" import { AuthConfig } from "./index.js" import type { JWTOptions } from "./jwt.js" @@ -102,9 +99,7 @@ export interface Theme { * Some of them are available with different casing, * but they refer to the same value. */ -export type TokenSet = Partial< - OAuth2TokenEndpointResponse | OpenIDTokenEndpointResponse -> & { +export type TokenSet = Partial & { /** * Date of when the `access_token` expires in seconds. * This value is calculated from the `expires_in` value. @@ -118,7 +113,7 @@ export type TokenSet = Partial< * Usually contains information about the provider being used * and also extends `TokenSet`, which is different tokens returned by OAuth Providers. */ -export interface Account extends Partial { +export interface Account extends Partial { /** Provider's id for this account. E.g. "google". See the full list at https://authjs.dev/reference/core/providers */ provider: string /** @@ -137,11 +132,11 @@ export interface Account extends Partial { */ userId?: string /** - * Calculated value based on {@link OAuth2TokenEndpointResponse.expires_in}. + * Calculated value based on {@link TokenEndpointResponse.expires_in}. * - * It is the absolute timestamp (in seconds) when the {@link OAuth2TokenEndpointResponse.access_token} expires. + * It is the absolute timestamp (in seconds) when the {@link TokenEndpointResponse.access_token} expires. * - * This value can be used for implementing token rotation together with {@link OAuth2TokenEndpointResponse.refresh_token}. + * This value can be used for implementing token rotation together with {@link TokenEndpointResponse.refresh_token}. * * @see https://authjs.dev/guides/refresh-token-rotation#database-strategy * @see https://www.rfc-editor.org/rfc/rfc6749#section-5.1 @@ -188,7 +183,7 @@ export interface Profile { /** [Documentation](https://authjs.dev/reference/core#cookies) */ export interface CookieOption { name: string - options: CookieSerializeOptions + options: SerializeOptions } /** [Documentation](https://authjs.dev/reference/core#cookies) */ diff --git a/packages/core/test/actions/callback.test.ts b/packages/core/test/actions/callback.test.ts index a810627cec..bd30f61225 100644 --- a/packages/core/test/actions/callback.test.ts +++ b/packages/core/test/actions/callback.test.ts @@ -1,13 +1,12 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" -import * as jose from "jose" -import * as o from "oauth4webapi" import GitHub from "../../src/providers/github.js" import Credentials from "../../src/providers/credentials.js" -import { makeAuthRequest } from "../utils.js" +import { logger, makeAuthRequest, testConfig } from "../utils.js" import { skipCSRFCheck } from "../../src/index.js" -import { CredentialsSignin } from "../../src/errors.js" +import { CredentialsSignin, InvalidCheck } from "../../src/errors.js" +import { state } from "../../src/lib/actions/callback/oauth/checks.js" describe("assert GET callback action", () => { beforeEach(() => { @@ -28,45 +27,107 @@ describe("assert GET callback action", () => { ) }) - it("should throw Configuration error is missing query state and isOnRedirectProxy is true", async () => { - const { response } = await makeAuthRequest({ - action: "callback", - path: "/github", - query: { state: "random" }, - config: { - redirectProxyUrl: "https://login.example.com", - providers: [GitHub], - }, + describe("Redirect Proxy", () => { + it("should throw Configuration error if missing query state and isOnRedirectProxy is true", async () => { + const { response } = await makeAuthRequest({ + action: "callback", + path: "/github", + query: { state: "random" }, + config: { + redirectProxyUrl: "https://login.example.com", + providers: [GitHub], + }, + }) + + expect(response.status).toEqual(302) + expect(response.headers.get("location")).toEqual( + `https://authjs.test/auth/error?error=Configuration` + ) }) - expect(response.status).toEqual(302) - expect(response.headers.get("location")).toEqual( - `https://authjs.test/auth/error?error=Configuration` - ) - }) + it("should redirect query with state if redirectProxyUrl is defined, and state query contains origin", async () => { + const proxyURL = "https://login.example.com/auth" + const originURL = "https://origin.example.com" - it("should redirect query with state if redirectProxyUrl is defined, and state query contains origin", async () => { - const encodedState = jose.base64url.encode( - JSON.stringify({ - random: o.generateRandomState(), - origin: "https://login.example.com", - }) - ) - const { response } = await makeAuthRequest({ - action: "callback", - path: "/github", - query: { state: encodedState }, - host: "login.example.com", - config: { - redirectProxyUrl: "https://login.example.com", + const config = testConfig({ + debug: true, + redirectProxyUrl: proxyURL, providers: [GitHub], - }, + }) + + const stateCookie = (await state.create( + { + logger: config.logger, + provider: { checks: ["state"] }, + jwt: { secret: config.secret }, + cookies: { + state: { + name: "authjs.state", + options: { secure: true, sameSite: "lax", httpOnly: true }, + }, + }, + } as any, + originURL + )) as any + + const params = { state: stateCookie?.value, code: "random" } + const { response } = await makeAuthRequest({ + action: "callback", + path: "/github", + query: params, + host: "login.example.com", + config, + }) + + expect(response.status).toEqual(302) + expect(response.headers.get("location")).toEqual( + `${originURL}?${new URLSearchParams(params)}` + ) }) - expect(response.status).toEqual(302) - expect(response.headers.get("location")).toEqual( - `https://login.example.com?state=${encodedState}` - ) + it("should error if secret does not match and state cannot be decoded", async () => { + const proxyURL = "https://login.example.com/auth" + const originURL = "https://origin.example.com" + + const config = testConfig({ + logger, + debug: true, + redirectProxyUrl: proxyURL, + providers: [GitHub], + }) + + const stateCookie = (await state.create( + { + logger: config.logger, + provider: { checks: ["state"] }, + jwt: { secret: "something random" }, + cookies: { + state: { + name: "authjs.state", + options: { secure: true, sameSite: "lax", httpOnly: true }, + }, + }, + } as any, + originURL + )) as any + + const params = { state: stateCookie?.value, code: "random" } + const { response } = await makeAuthRequest({ + action: "callback", + path: "/github", + query: params, + host: "login.example.com", + config, + }) + + expect(response.status).toEqual(302) + expect(response.headers.get("location")).toEqual( + `${proxyURL}/error?${new URLSearchParams({ error: "Configuration" })}` + ) + expect(logger.error).toHaveBeenCalledWith( + new InvalidCheck("State could not be decoded") + ) + }) }) it("should redirect to the custom error page is custom error page is defined", async () => { diff --git a/packages/core/test/actions/session.test.ts b/packages/core/test/actions/session.test.ts index 963a839e7f..c4ba254010 100644 --- a/packages/core/test/actions/session.test.ts +++ b/packages/core/test/actions/session.test.ts @@ -1,9 +1,9 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" -import { parse } from "cookie" +import * as cookie from "../../src/lib/vendored/cookie.js" import { MemoryAdapter, initMemory } from "../memory-adapter.js" import { randomString } from "../../src/lib/utils/web.js" -import { AdapterUser } from "../../adapters.js" +import type { AdapterUser } from "../../src/adapters.js" import { decode, encode } from "../../src/jwt.js" import { callbacks, @@ -16,6 +16,8 @@ import { SESSION_COOKIE_NAME, } from "../utils.js" +const { parse: parseCookie } = cookie + describe("assert GET session action", () => { beforeEach(() => { vi.resetAllMocks() @@ -61,11 +63,9 @@ describe("assert GET session action", () => { }) const actualBodySession = await response.json() - let cookies = response.headers - .getSetCookie() - .reduce>((acc, cookie) => { - return { ...acc, ...parse(cookie) } - }, {}) + let cookies = response.headers.getSetCookie().reduce((acc, cookie) => { + return { ...acc, ...parseCookie(cookie) } + }, {}) const sessionToken = cookies[SESSION_COOKIE_NAME] const actualToken = await decode({ salt: SESSION_COOKIE_NAME, @@ -176,11 +176,9 @@ describe("assert GET session action", () => { const actualBodySession = await response.json() - let cookies = response.headers - .getSetCookie() - .reduce>((acc, cookie) => { - return { ...acc, ...parse(cookie) } - }, {}) + let cookies = response.headers.getSetCookie().reduce((acc, cookie) => { + return { ...acc, ...parseCookie(cookie) } + }, {}) const actualSessionToken = cookies[SESSION_COOKIE_NAME] expect(memory.users.get(expectedUserId)).toEqual(expectedUser) @@ -248,11 +246,9 @@ describe("assert GET session action", () => { const actualBodySession = await response.json() - let cookies = response.headers - .getSetCookie() - .reduce>((acc, cookie) => { - return { ...acc, ...parse(cookie) } - }, {}) + let cookies = response.headers.getSetCookie().reduce((acc, cookie) => { + return { ...acc, ...parseCookie(cookie) } + }, {}) const actualSessionToken = cookies[SESSION_COOKIE_NAME] expect(memory.users.get(expectedUserId)).toEqual(expectedUser) diff --git a/packages/core/test/merge.test.ts b/packages/core/test/merge.test.ts new file mode 100644 index 0000000000..f067b953de --- /dev/null +++ b/packages/core/test/merge.test.ts @@ -0,0 +1,111 @@ +import { describe, it, expect } from "vitest" +import { merge } from "../src/lib/utils/merge" + +describe("merge function", () => { + it("should merge objects correctly", () => { + expect(merge({ a: 1, b: { c: 2 } }, { b: { c: 3, d: 4 } })).toEqual({ + a: 1, + b: { c: 3, d: 4 }, + }) + }) + + it("should override primitive values", () => { + expect(merge({ a: 1, b: "old" }, { b: "new" })).toEqual({ a: 1, b: "new" }) + }) + + it("should override arrays", () => { + expect(merge({ a: [1, 2] }, { a: [3, 4] })).toEqual({ a: [3, 4] }) + }) + + it("should handle nested objects", () => { + expect(merge({ a: { b: { c: 1 } } }, { a: { b: { d: 2 } } })).toEqual({ + a: { b: { c: 1, d: 2 } }, + }) + }) + + it("should handle null and undefined", () => { + expect( + merge({ a: undefined, b: undefined }, { a: null, b: 2, c: 3 }) + ).toEqual({ a: null, b: 2, c: 3 }) + }) + + it("should merge multiple objects", () => { + expect(merge({ a: 1 }, { b: 2 }, { b: { d: 2 }, c: "new" })).toEqual({ + a: 1, + b: { d: 2 }, + c: "new", + }) + }) + + it("should handle empty objects", () => { + expect(merge({ a: 1 }, {})).toEqual({ a: 1 }) + }) + + it("should override functions", () => { + expect( + merge( + { + func: () => "original", + nested: { func: () => "original nested" }, + }, + { + func: () => "overridden", + nested: { func: () => "overridden nested" }, + } + ).func() + ).toBe("overridden") + expect( + merge( + { + func: () => "original", + nested: { func: () => "original nested" }, + }, + { + func: () => "overridden", + nested: { func: () => "overridden nested" }, + } + ).nested.func() + ).toBe("overridden nested") + }) + + it("should override default authorization config with user provided object", () => { + expect( + merge( + { + authorization: "https://example.com/default", + }, + { + authorization: { + url: "https://example.com/user-config", + params: { scope: "email,user_friends" }, + }, + } + ) + ).toEqual({ + authorization: { + url: "https://example.com/user-config", + params: { scope: "email,user_friends" }, + }, + }) + }) + + it("should correctly merge scopes in authorization params", () => { + expect( + merge( + { + authorization: { + url: "https://example.com/default", + params: { scope: "identify,email" }, + }, + defaultOptions: "", + }, + { + authorization: "https://example.com/user-config", + } + ) + ).toEqual({ + defaultOptions: "", + authorization: "https://example.com/user-config", + }) + }) +}) diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index f8ff1cf880..fb538f6a11 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "preact", diff --git a/packages/frameworks-express/package.json b/packages/frameworks-express/package.json index 75f9788842..8cc30c7a43 100644 --- a/packages/frameworks-express/package.json +++ b/packages/frameworks-express/package.json @@ -1,7 +1,7 @@ { "name": "@auth/express", "description": "Authentication for Express.", - "version": "0.6.0", + "version": "0.8.4", "type": "module", "files": [ "*.js", @@ -31,7 +31,7 @@ }, "scripts": { "build": "pnpm clean && pnpm providers && tsc", - "clean": "rm -rf lib index.* src/lib/providers", + "clean": "rm -rf lib *.js *.d.ts* src/lib/providers", "test": "vitest run -c ../utils/vitest.config.ts", "providers": "node ../utils/scripts/providers" }, @@ -42,7 +42,7 @@ "@auth/core": "workspace:*" }, "devDependencies": { - "@auth/core": "workspace:experimental", + "@auth/core": "workspace:*", "@types/express": "^4.17.17", "@types/supertest": "^2.0.12", "supertest": "^6.3.3" diff --git a/packages/frameworks-express/src/index.ts b/packages/frameworks-express/src/index.ts index 8b356afe80..95c72c28cd 100644 --- a/packages/frameworks-express/src/index.ts +++ b/packages/frameworks-express/src/index.ts @@ -138,11 +138,13 @@ import { type AuthConfig, setEnvDefaults, createActionURL, + customFetch, } from "@auth/core" import type { Session } from "@auth/core/types" import * as e from "express" import { toWebRequest, toExpressResponse } from "./lib/index.js" +export { customFetch } export { AuthError, CredentialsSignin } from "@auth/core/errors" export type { Account, diff --git a/packages/frameworks-express/tsconfig.json b/packages/frameworks-express/tsconfig.json index 887554cc03..1562070614 100644 --- a/packages/frameworks-express/tsconfig.json +++ b/packages/frameworks-express/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "lib": ["dom", "dom.iterable", "esnext"], "outDir": ".", diff --git a/packages/frameworks-qwik/package.json b/packages/frameworks-qwik/package.json index 77ad1f72bc..f9cff757c0 100644 --- a/packages/frameworks-qwik/package.json +++ b/packages/frameworks-qwik/package.json @@ -1,6 +1,6 @@ { "name": "@auth/qwik", - "version": "0.2.3", + "version": "0.5.4", "description": "Authentication for Qwik.", "license": "ISC", "author": "gioboa ", @@ -28,6 +28,9 @@ "types": "./index.d.ts", "import": "./index.qwik.js" }, + "./adapters": { + "types": "./adapters.d.ts" + }, "./providers": { "types": "./providers/index.d.ts" }, @@ -47,7 +50,7 @@ "scripts": { "build": "pnpm clean && pnpm providers && vite build --mode lib", "clean": "rm -rf *.mjs *.js *.d.ts* providers src/providers", - "providers": "node ../utils/scripts/providers --out src" + "providers": "node ../utils/scripts/providers" }, "dependencies": { "@auth/core": "workspace:*", diff --git a/packages/frameworks-qwik/src/adapters.ts b/packages/frameworks-qwik/src/adapters.ts new file mode 100644 index 0000000000..e907436642 --- /dev/null +++ b/packages/frameworks-qwik/src/adapters.ts @@ -0,0 +1 @@ +export type * from "@auth/core/adapters" diff --git a/packages/frameworks-qwik/src/index.ts b/packages/frameworks-qwik/src/index.ts index 2e1fdcfb00..4100cb3f5d 100644 --- a/packages/frameworks-qwik/src/index.ts +++ b/packages/frameworks-qwik/src/index.ts @@ -110,7 +110,7 @@ */ import type { AuthConfig } from "@auth/core" -import { Auth, isAuthAction, skipCSRFCheck } from "@auth/core" +import { Auth, isAuthAction, skipCSRFCheck, customFetch } from "@auth/core" import { AuthAction, Session } from "@auth/core/types" import { implicit$FirstArg, type QRL } from "@builder.io/qwik" import { @@ -124,6 +124,17 @@ import { EnvGetter } from "@builder.io/qwik-city/middleware/request-handler" import { isServer } from "@builder.io/qwik/build" import { parseString, splitCookiesString } from "set-cookie-parser" +export { customFetch } +export { AuthError, CredentialsSignin } from "@auth/core/errors" + +export type { + Account, + DefaultSession, + Profile, + Session, + User, +} from "@auth/core/types" + /** Configure the {@link QwikAuth$} method. */ export interface QwikAuthConfig extends Omit {} @@ -145,7 +156,7 @@ export function QwikAuthQrl( const authOpts = await authOptions(req) setEnvDefaults(req.env, authOpts) - const body = new URLSearchParams({ redirectTo }) + const body = new URLSearchParams({ callbackUrl: redirectTo }) Object.entries(rest).forEach(([key, value]) => { body.set(key, String(value)) }) @@ -159,18 +170,12 @@ export function QwikAuthQrl( const data = await authAction(body, req, signInUrl, authOpts) - // set authjs.callback-url cookie. Fix for https://github.com/QwikDev/qwik/issues/5227 - req.cookie.set("authjs.callback-url", redirectTo, { - path: "/", - }) - if (data.url) { throw req.redirect(301, data.url) } }, zod$({ providerId: z.string().optional(), - /** Yoooo */ redirectTo: z.string().optional(), options: z .object({ @@ -190,7 +195,7 @@ export function QwikAuthQrl( redirectTo ??= defaultRedirectTo(req) const authOpts = await authOptions(req) setEnvDefaults(req.env, authOpts) - const body = new URLSearchParams({ redirectTo }) + const body = new URLSearchParams({ callbackUrl: redirectTo }) await authAction(body, req, `/auth/signout`, authOpts) }, zod$({ diff --git a/packages/frameworks-qwik/tsconfig.json b/packages/frameworks-qwik/tsconfig.json index 887554cc03..1562070614 100644 --- a/packages/frameworks-qwik/tsconfig.json +++ b/packages/frameworks-qwik/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "lib": ["dom", "dom.iterable", "esnext"], "outDir": ".", diff --git a/packages/frameworks-solid-start/package.json b/packages/frameworks-solid-start/package.json index 515f60d3ee..cbd93399c7 100644 --- a/packages/frameworks-solid-start/package.json +++ b/packages/frameworks-solid-start/package.json @@ -1,6 +1,6 @@ { "name": "@auth/solid-start", - "version": "0.12.2", + "version": "0.15.4", "description": "Authentication for SolidStart.", "license": "ISC", "author": "OrJDev ", @@ -51,7 +51,7 @@ "scripts": { "build": "pnpm clean && pnpm providers && tsc", "test": "vitest run -c ../utils/vitest.config.ts", - "providers": "node ../utils/scripts/providers --out src", + "providers": "node ../utils/scripts/providers", "clean": "rm -rf *.js *.d.ts* providers src/providers" }, "dependencies": { diff --git a/packages/frameworks-solid-start/src/client.ts b/packages/frameworks-solid-start/src/client.ts index e52f3ede3a..ab809927fe 100644 --- a/packages/frameworks-solid-start/src/client.ts +++ b/packages/frameworks-solid-start/src/client.ts @@ -1,19 +1,30 @@ -import type { - BuiltInProviderType, - RedirectableProviderType, -} from "@auth/core/providers" +import type { ProviderId } from "@auth/core/providers" -type LiteralUnion = T | (U & Record) - -interface SignInOptions extends Record { +interface SignInOptions + extends Record { + /** @deprecated Use `redirectTo` instead. */ + callbackUrl?: string /** - * Specify to which URL the user will be redirected after signing in. Defaults to the page URL the sign-in is initiated from. + * Specify where the user should be redirected to after a successful signin. * - * [Documentation](https://next-auth.js.org/getting-started/client#specifying-a-callbackurl) + * By default, it is the page the sign-in was initiated from. */ - callbackUrl?: string - /** [Documentation](https://next-auth.js.org/getting-started/client#using-the-redirect-false-option) */ - redirect?: boolean + redirectTo?: string + /** + * You might want to deal with the signin response on the same page, instead of redirecting to another page. + * For example, if an error occurs (like wrong credentials given by the user), you might want to show an inline error message on the input field. + * + * For this purpose, you can set this to option `redirect: false`. + */ + redirect?: Redirect +} + +export interface SignInResponse { + error: string | undefined + code: string | undefined + status: number + ok: boolean + url: string | null } interface SignOutParams { @@ -41,59 +52,81 @@ export type SignInAuthorizationParams = * signIn("provider") // example: signIn("github") * ``` */ -export async function signIn< - P extends RedirectableProviderType | undefined = undefined, ->( - providerId?: LiteralUnion< - P extends RedirectableProviderType - ? P | BuiltInProviderType - : BuiltInProviderType - >, - options?: SignInOptions, + +/** + * Initiates a signin flow or sends the user to the signin page listing all possible providers. + * Handles CSRF protection. + * + * @note This method can only be used from Client Components ("use client" or Pages Router). + * For Server Actions, use the `signIn` method imported from the `auth` config. + */ +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, authorizationParams?: SignInAuthorizationParams -) { - const { callbackUrl = window.location.href, redirect = true } = options ?? {} +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise { + const { callbackUrl, ...rest } = options ?? {} + const { + redirect = true, + redirectTo = callbackUrl ?? window.location.href, + ...signInParams + } = rest - // TODO: Support custom providers - const isCredentials = providerId === "credentials" - const isEmail = providerId === "email" - const isSupportingReturn = isCredentials || isEmail + const isCredentials = provider === "credentials" - // TODO: Handle custom base path const signInUrl = `/api/auth/${ isCredentials ? "callback" : "signin" - }/${providerId}` - - const _signInUrl = `${signInUrl}?${new URLSearchParams(authorizationParams)}` + }/${provider}` // TODO: Handle custom base path const csrfTokenResponse = await fetch("/api/auth/csrf") const { csrfToken } = await csrfTokenResponse.json() + const res = await fetch( + `${signInUrl}?${new URLSearchParams(authorizationParams)}`, + { + method: "post", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + "X-Auth-Return-Redirect": "1", + }, + body: new URLSearchParams({ + ...signInParams, + csrfToken, + callbackUrl: redirectTo, + }), + } + ) - const res = await fetch(_signInUrl, { - method: "post", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - "X-Auth-Return-Redirect": "1", - }, - // @ts-ignore - body: new URLSearchParams({ - ...options, - csrfToken, - callbackUrl, - }), - }) + const data = await res.json() - const data = await res.clone().json() - const error = new URL(data.url).searchParams.get("error") - if (redirect || !isSupportingReturn || !error) { - // TODO: Do not redirect for Credentials and Email providers by default in next major - window.location.href = data.url ?? data.redirect ?? callbackUrl + if (redirect) { + const url = data.url ?? redirectTo + window.location.href = url // If url contains a hash, the browser does not reload the page. We reload manually - if (data.url.includes("#")) window.location.reload() + if (url.includes("#")) window.location.reload() return } - return res + + const error = new URL(data.url).searchParams.get("error") ?? undefined + const code = new URL(data.url).searchParams.get("code") ?? undefined + + return { + error, + code, + status: res.status, + ok: res.ok, + url: error ? null : data.url, + } } /** diff --git a/packages/frameworks-solid-start/src/index.ts b/packages/frameworks-solid-start/src/index.ts index adc264ab6c..ac80b3e77c 100644 --- a/packages/frameworks-solid-start/src/index.ts +++ b/packages/frameworks-solid-start/src/index.ts @@ -16,9 +16,10 @@ * @module @auth/solid-start */ -import { Auth, type AuthConfig } from "@auth/core" +import { Auth, type AuthConfig, customFetch } from "@auth/core" import type { AuthAction, Session } from "@auth/core/types" +export { customFetch } export { AuthError, CredentialsSignin } from "@auth/core/errors" export type { Account, diff --git a/packages/frameworks-solid-start/tsconfig.json b/packages/frameworks-solid-start/tsconfig.json index 675c4ec6ce..814f3354b5 100644 --- a/packages/frameworks-solid-start/tsconfig.json +++ b/packages/frameworks-solid-start/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "jsx": "preserve", "jsxImportSource": "solid-js", diff --git a/packages/frameworks-sveltekit/package.json b/packages/frameworks-sveltekit/package.json index 25444af28f..b4d8e7f9fb 100644 --- a/packages/frameworks-sveltekit/package.json +++ b/packages/frameworks-sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@auth/sveltekit", - "version": "1.4.2", + "version": "1.7.4", "description": "Authentication for SvelteKit.", "keywords": [ "authentication", @@ -38,27 +38,27 @@ "test": "vitest run -c ../utils/vitest.config.ts" }, "devDependencies": { - "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/kit": "^2.5.7", - "@sveltejs/package": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "@types/set-cookie-parser": "^2.4.7", - "svelte": "^4.0.0", - "svelte-check": "^3.4.3", - "tslib": "^2.4.1", + "@sveltejs/adapter-auto": "^3.2.5", + "@sveltejs/kit": "^2.6.4", + "@sveltejs/package": "^2.3.5", + "@sveltejs/vite-plugin-svelte": "^3.1.2", + "@types/set-cookie-parser": "^2.4.10", + "svelte": "^4.2.19", + "svelte-check": "^4.0.4", + "tslib": "^2.7.0", "typedoc": "^0.25.12", "typedoc-plugin-markdown": "4.0.0-next.53" }, "dependencies": { "@auth/core": "workspace:*", - "set-cookie-parser": "^2.6.0" + "set-cookie-parser": "^2.7.0" }, "peerDependencies": { "@simplewebauthn/browser": "^9.0.1", "@simplewebauthn/server": "^9.0.3", "@sveltejs/kit": "^1.0.0 || ^2.0.0", "nodemailer": "^6.6.5", - "svelte": "^3.54.0 || ^4.0.0 || ^5" + "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0-0" }, "peerDependenciesMeta": { "@simplewebauthn/browser": { diff --git a/packages/frameworks-sveltekit/src/lib/actions.ts b/packages/frameworks-sveltekit/src/lib/actions.ts index 81fa059a24..368eaf6272 100644 --- a/packages/frameworks-sveltekit/src/lib/actions.ts +++ b/packages/frameworks-sveltekit/src/lib/actions.ts @@ -4,6 +4,7 @@ import { parse } from "set-cookie-parser" import { env } from "$env/dynamic/private" import { Auth, createActionURL, raw } from "@auth/core" +import type { ProviderType } from "@auth/core/providers" import type { SvelteKitAuthConfig } from "./types" import { setEnvDefaults } from "./env" @@ -27,32 +28,37 @@ export async function signIn( } = options instanceof FormData ? Object.fromEntries(options) : options const callbackUrl = redirectTo?.toString() ?? headers.get("Referer") ?? "/" - const base = createActionURL("signin", protocol, headers, env, config) + const signInURL = createActionURL("signin", protocol, headers, env, config) if (!provider) { - const url = `${base}?${new URLSearchParams({ callbackUrl })}` - if (shouldRedirect) redirect(302, url) - return url + signInURL.searchParams.append("callbackUrl", callbackUrl) + if (shouldRedirect) redirect(302, signInURL.toString()) + return signInURL.toString() } - let url = `${base}/${provider}?${new URLSearchParams(authorizationParams)}` - let foundProvider: SignInParams[0] | undefined = undefined + let url = `${signInURL}/${provider}?${new URLSearchParams(authorizationParams)}` + let foundProvider: { id?: SignInParams[0]; type?: ProviderType } = {} - for (const _provider of config.providers) { - const { id } = typeof _provider === "function" ? _provider() : _provider + for (const providerConfig of config.providers) { + const { options, ...defaults } = + typeof providerConfig === "function" ? providerConfig() : providerConfig + const id = (options?.id as string | undefined) ?? defaults.id if (id === provider) { - foundProvider = id + foundProvider = { + id, + type: (options?.type as ProviderType | undefined) ?? defaults.type, + } break } } - if (!foundProvider) { - const url = `${base}?${new URLSearchParams({ callbackUrl })}` + if (!foundProvider.id) { + const url = `${signInURL}?${new URLSearchParams({ callbackUrl })}` if (shouldRedirect) redirect(302, url) return url } - if (foundProvider === "credentials") { + if (foundProvider.type === "credentials") { url = url.replace("signin", "callback") } diff --git a/packages/frameworks-sveltekit/src/lib/client.ts b/packages/frameworks-sveltekit/src/lib/client.ts index cac737e69d..5e708acdc3 100644 --- a/packages/frameworks-sveltekit/src/lib/client.ts +++ b/packages/frameworks-sveltekit/src/lib/client.ts @@ -1,29 +1,44 @@ import { base } from "$app/paths" -import type { - BuiltInProviderType, - RedirectableProviderType, -} from "@auth/core/providers" -import type { LiteralUnion } from "./types.js" - -/* - * @internal - */ -export interface SignInOptions extends Record { +import type { ProviderId } from "@auth/core/providers" + +export interface SignInOptions + extends Record { + /** @deprecated Use `redirectTo` instead. */ + callbackUrl?: string /** - * Specify to which URL the user will be redirected after signing in. Defaults to the page URL the sign-in is initiated from. + * Specify where the user should be redirected to after a successful signin. * - * [Documentation](https://next-auth.js.org/getting-started/client#specifying-a-callbackurl) + * By default, it is the page the sign-in was initiated from. */ - callbackUrl?: string - /** [Documentation](https://next-auth.js.org/getting-started/client#using-the-redirect-false-option) */ - redirect?: boolean + redirectTo?: string + /** + * You might want to deal with the signin response on the same page, instead of redirecting to another page. + * For example, if an error occurs (like wrong credentials given by the user), you might want to show an inline error message on the input field. + * + * For this purpose, you can set this to option `redirect: false`. + */ + redirect?: Redirect +} + +export interface SignInResponse { + error: string | undefined + code: string | undefined + status: number + ok: boolean + url: string | null } -interface SignOutParams { - /** [Documentation](https://next-auth.js.org/getting-started/client#specifying-a-callbackurl-1) */ +export interface SignOutParams { + /** @deprecated Use `redirectTo` instead. */ callbackUrl?: string + /** + * If you pass `redirect: false`, the page will not reload. + * The session will be deleted, and `useSession` is notified, so any indication about the user will be shown as logged out automatically. + * It can give a very nice experience for the user. + */ + redirectTo?: string /** [Documentation](https://next-auth.js.org/getting-started/client#using-the-redirect-false-option-1 */ - redirect?: R + redirect?: Redirect } /** Match `inputType` of `new URLSearchParams(inputType)` */ @@ -39,79 +54,122 @@ export type SignInAuthorizationParams = * * [Documentation](https://authjs.dev/reference/sveltekit/client#signin) */ -export async function signIn< - P extends RedirectableProviderType | undefined = undefined, ->( - providerId?: LiteralUnion< - P extends RedirectableProviderType - ? P | BuiltInProviderType - : BuiltInProviderType - >, - options?: SignInOptions, - authorizationParams?: SignInAuthorizationParams -) { - const { callbackUrl = window.location.href, redirect = true } = options ?? {} - // TODO: Support custom providers - const isCredentials = providerId === "credentials" - const isEmail = providerId === "email" - const isSupportingReturn = isCredentials || isEmail +/** + * Initiates a signin flow or sends the user to the signin page listing all possible providers. + * Handles CSRF protection. + * + * @note This method can only be used from Client Components ("use client" or Pages Router). + * For Server Actions, use the `signIn` method imported from the `auth` config. + */ +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise { + const { callbackUrl, ...rest } = options ?? {} + const { + redirect = true, + redirectTo = callbackUrl ?? window.location.href, + ...signInParams + } = rest - const basePath = base ?? "" - const signInUrl = `${basePath}/auth/${ - isCredentials ? "callback" : "signin" - }/${providerId}` + const baseUrl = base ?? "" - const _signInUrl = `${signInUrl}?${new URLSearchParams(authorizationParams)}` + const signInUrl = `${baseUrl}/${ + provider === "credentials" ? "callback" : "signin" + }/${provider}` - const res = await fetch(_signInUrl, { - method: "post", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - "X-Auth-Return-Redirect": "1", - }, - // @ts-ignore - body: new URLSearchParams({ - ...options, - callbackUrl, - }), - }) + const res = await fetch( + `${signInUrl}?${new URLSearchParams(authorizationParams)}`, + { + method: "post", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + "X-Auth-Return-Redirect": "1", + }, + body: new URLSearchParams({ + ...signInParams, + callbackUrl: redirectTo, + }), + } + ) - const data = await res.clone().json() + const data = await res.json() - if (redirect || !isSupportingReturn) { - // TODO: Do not redirect for Credentials and Email providers by default in next major - window.location.href = data.url ?? callbackUrl + if (redirect) { + const url = data.url ?? redirectTo + window.location.href = url // If url contains a hash, the browser does not reload the page. We reload manually - if (data.url.includes("#")) window.location.reload() + if (url.includes("#")) window.location.reload() return } - return res + const error = new URL(data.url).searchParams.get("error") ?? undefined + const code = new URL(data.url).searchParams.get("code") ?? undefined + + return { + error, + code, + status: res.status, + ok: res.ok, + url: error ? null : data.url, + } +} + +export interface SignOutResponse { + url: string } /** - * Signs the user out, by removing the session cookie. + * Initiate a signout, by destroying the current session. + * Handles CSRF protection. * - * [Documentation](https://authjs.dev/reference/sveltekit/client#signout) + * @note This method can only be used from Client Components ("use client" or Pages Router). + * For Server Actions, use the `signOut` method imported from the `auth` config. */ -export async function signOut(options?: SignOutParams) { - const { callbackUrl = window.location.href } = options ?? {} - const basePath = base ?? "" - const res = await fetch(`${basePath}/auth/signout`, { +export async function signOut(options?: SignOutParams): Promise +export async function signOut( + options?: SignOutParams +): Promise +export async function signOut( + options?: SignOutParams +): Promise { + const { + redirect = true, + redirectTo = options?.callbackUrl ?? window.location.href, + } = options ?? {} + + const baseUrl = base ?? "" + const res = await fetch(`${baseUrl}/signout`, { method: "post", headers: { "Content-Type": "application/x-www-form-urlencoded", "X-Auth-Return-Redirect": "1", }, body: new URLSearchParams({ - callbackUrl, + callbackUrl: redirectTo, }), }) const data = await res.json() - const url = data.url ?? callbackUrl - window.location.href = url - // If url contains a hash, the browser does not reload the page. We reload manually - if (url.includes("#")) window.location.reload() + if (redirect) { + const url = data.url ?? redirectTo + window.location.href = url + // If url contains a hash, the browser does not reload the page. We reload manually + if (url.includes("#")) window.location.reload() + return + } + + return data } diff --git a/packages/frameworks-sveltekit/src/lib/index.ts b/packages/frameworks-sveltekit/src/lib/index.ts index 2ebf1b77dd..e1007b4719 100644 --- a/packages/frameworks-sveltekit/src/lib/index.ts +++ b/packages/frameworks-sveltekit/src/lib/index.ts @@ -283,9 +283,10 @@ import { env } from "$env/dynamic/private" import type { SvelteKitAuthConfig } from "./types" import { setEnvDefaults } from "./env" import { auth, signIn, signOut } from "./actions" -import { Auth, isAuthAction } from "@auth/core" +import { Auth, isAuthAction, customFetch } from "@auth/core" import { building } from "$app/environment" +export { customFetch } export { AuthError, CredentialsSignin } from "@auth/core/errors" export type { diff --git a/packages/frameworks-sveltekit/src/lib/types.ts b/packages/frameworks-sveltekit/src/lib/types.ts index a1cfdff1d8..d57da40628 100644 --- a/packages/frameworks-sveltekit/src/lib/types.ts +++ b/packages/frameworks-sveltekit/src/lib/types.ts @@ -1,11 +1,7 @@ import type { AuthConfig } from "@auth/core" -import type { BuiltInProviderType } from "@auth/core/providers" +import type { ProviderId } from "@auth/core/providers" import type { Session } from "@auth/core/types" -export type LiteralUnion = - | T - | (U & Record) - /** Configure the {@link SvelteKitAuth} method. */ export interface SvelteKitAuthConfig extends Omit {} @@ -16,19 +12,16 @@ declare global { auth(): Promise /** @deprecated Use `auth` instead. */ getSession(): Promise - signIn: < - P extends BuiltInProviderType | (string & NonNullable), - R extends boolean = true, - >( + signIn: ( /** Provider to sign in to */ - provider?: P, // See: https://github.com/microsoft/TypeScript/issues/29729 + provider?: ProviderId, // See: https://github.com/microsoft/TypeScript/issues/29729 options?: | FormData | ({ /** The URL to redirect to after signing in. By default, the user is redirected to the current page. */ redirectTo?: string /** If set to `false`, the `signIn` method will return the URL to redirect to instead of redirecting automatically. */ - redirect?: R + redirect?: Redirect // eslint-disable-next-line @typescript-eslint/no-explicit-any } & Record), authorizationParams?: @@ -37,18 +30,18 @@ declare global { | string | URLSearchParams ) => Promise< - R extends false + Redirect extends false ? // eslint-disable-next-line @typescript-eslint/no-explicit-any any : never > - signOut: (options?: { + signOut: (options?: { /** The URL to redirect to after signing out. By default, the user is redirected to the current page. */ redirectTo?: string /** If set to `false`, the `signOut` method will return the URL to redirect to instead of redirecting automatically. */ - redirect?: R + redirect?: Redirect }) => Promise< - R extends false + Redirect extends false ? // eslint-disable-next-line @typescript-eslint/no-explicit-any any : never diff --git a/packages/frameworks-sveltekit/src/lib/webauthn.ts b/packages/frameworks-sveltekit/src/lib/webauthn.ts index 9ef4d4ed04..1847ea12eb 100644 --- a/packages/frameworks-sveltekit/src/lib/webauthn.ts +++ b/packages/frameworks-sveltekit/src/lib/webauthn.ts @@ -1,30 +1,36 @@ import { base } from "$app/paths" import { startAuthentication, startRegistration } from "@simplewebauthn/browser" -import type { - BuiltInProviderType, - RedirectableProviderType, -} from "@auth/core/providers" +import type { LoggerInstance } from "@auth/core/types" import type { WebAuthnOptionsResponseBody } from "@auth/core/types" -import type { SignInOptions, SignInAuthorizationParams } from "./client.js" -import type { LiteralUnion } from "./types.js" +import type { ProviderId } from "@auth/core/providers" +import type { + SignInAuthorizationParams, + SignInOptions, + SignInResponse, +} from "./client.js" + +const logger: LoggerInstance = { + debug: console.debug, + error: console.error, + warn: console.warn, +} /** * Fetch webauthn options from server and prompt user for authentication or registration. * Returns either the completed WebAuthn response or an error request. - * - * @param providerId provider ID - * @param options SignInOptions - * @returns WebAuthn response or error */ -async function webAuthnOptions(providerId: string, options?: SignInOptions) { - const baseUrl = `${base}/auth` +async function webAuthnOptions( + providerID: ProviderId, + options?: Omit +) { + const baseUrl = base ?? "" // @ts-expect-error const params = new URLSearchParams(options) const optionsResp = await fetch( - `${baseUrl}/webauthn-options/${providerId}?${params}` + `${baseUrl}/webauthn-options/${providerID}?${params}` ) if (!optionsResp.ok) { return { error: optionsResp } @@ -41,72 +47,84 @@ async function webAuthnOptions(providerId: string, options?: SignInOptions) { } /** - * Client-side method to initiate a webauthn signin flow - * or send the user to the signin page listing all possible providers. - * - * [Documentation](https://authjs.dev/reference/sveltekit/client#signin) + * Initiate a WebAuthn signin flow. + * @see https://authjs.dev/getting-started/authentication/webauthn */ -export async function signIn< - P extends RedirectableProviderType | undefined = undefined, ->( - providerId?: LiteralUnion< - P extends RedirectableProviderType - ? P | BuiltInProviderType - : BuiltInProviderType - >, - options?: SignInOptions, +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, authorizationParams?: SignInAuthorizationParams -) { - const { callbackUrl = window.location.href, redirect = true } = options ?? {} - - // TODO: Support custom providers - const isCredentials = providerId === "credentials" - const isEmail = providerId === "email" - const isWebAuthn = providerId === "webauthn" - const isSupportingReturn = isCredentials || isEmail || isWebAuthn +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise { + const { callbackUrl, ...rest } = options ?? {} + const { + redirectTo = callbackUrl ?? window.location.href, + redirect = true, + ...signInParams + } = rest - const basePath = base ?? "" - const signInUrl = `${basePath}/auth/${ - isCredentials || isWebAuthn ? "callback" : "signin" - }/${providerId}` + const baseUrl = base ?? "" - const _signInUrl = `${signInUrl}?${new URLSearchParams(authorizationParams)}` + if (!provider || provider !== "webauthn") { + // TODO: Add docs link with explanation + throw new TypeError( + [ + `Provider id "${provider}" does not refer to a WebAuthn provider.`, + 'Please use `import { signIn } from "@auth/sveltekit/client"` instead.', + ].join("\n") + ) + } - // Execute WebAuthn client flow if needed const webAuthnBody: Record = {} - if (isWebAuthn) { - const { data, error, action } = await webAuthnOptions(providerId, options) - if (error) { - // logger.error(new Error(await error.text())) - return - } - webAuthnBody.data = JSON.stringify(data) - webAuthnBody.action = action + const webAuthnResponse = await webAuthnOptions(provider, signInParams) + if (webAuthnResponse.error) { + logger.error(new Error(await webAuthnResponse.error.text())) + return } + webAuthnBody.data = JSON.stringify(webAuthnResponse.data) + webAuthnBody.action = webAuthnResponse.action - const res = await fetch(_signInUrl, { + const signInUrl = `${baseUrl}/callback/${provider}?${new URLSearchParams(authorizationParams)}` + const res = await fetch(signInUrl, { method: "post", headers: { "Content-Type": "application/x-www-form-urlencoded", "X-Auth-Return-Redirect": "1", }, - // @ts-ignore body: new URLSearchParams({ - ...options, - callbackUrl, + ...signInParams, ...webAuthnBody, + callbackUrl: redirectTo, }), }) - const data = await res.clone().json() + const data = await res.json() - if (redirect || !isSupportingReturn) { - // TODO: Do not redirect for Credentials and Email providers by default in next major - window.location.href = data.url ?? callbackUrl + if (redirect) { + const url = data.url ?? callbackUrl + window.location.href = url // If url contains a hash, the browser does not reload the page. We reload manually - if (data.url.includes("#")) window.location.reload() + if (url.includes("#")) window.location.reload() return } - return res + const error = new URL(data.url).searchParams.get("error") + const code = new URL(data.url).searchParams.get("code") + + return { + error, + code, + status: res.status, + ok: res.ok, + url: error ? null : data.url, + } as any } diff --git a/packages/frameworks-sveltekit/tsconfig.json b/packages/frameworks-sveltekit/tsconfig.json index b52c641cb8..86ec883d4e 100644 --- a/packages/frameworks-sveltekit/tsconfig.json +++ b/packages/frameworks-sveltekit/tsconfig.json @@ -8,10 +8,9 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "declaration": true, - "declarationMap": true, "strict": true, - "ignoreDeprecations": "5.0" // TODO: https://github.com/sveltejs/kit/issues/8650 + "declaration": true, + "declarationMap": true }, // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias // diff --git a/packages/frameworks-template/tsconfig.json b/packages/frameworks-template/tsconfig.json index 887554cc03..1562070614 100644 --- a/packages/frameworks-template/tsconfig.json +++ b/packages/frameworks-template/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "lib": ["dom", "dom.iterable", "esnext"], "outDir": ".", diff --git a/packages/frameworks-template/typedoc.config.cjs b/packages/frameworks-template/typedoc.config.cjs new file mode 100644 index 0000000000..7ddc7edddc --- /dev/null +++ b/packages/frameworks-template/typedoc.config.cjs @@ -0,0 +1,14 @@ +// @ts-check + +/** + * @type {import('typedoc').TypeDocOptions & import('typedoc-plugin-markdown').MarkdownTheme} + */ +module.exports = { + entryPoints: ["src/index.ts"], + entryPointStrategy: "expand", + tsconfig: "./tsconfig.json", + entryModule: "@auth/", + entryFileName: "../.mdx", + includeVersion: true, + readme: 'none', +} diff --git a/packages/next-auth/package.json b/packages/next-auth/package.json index d3103f38f2..9929b6cce0 100644 --- a/packages/next-auth/package.json +++ b/packages/next-auth/package.json @@ -1,6 +1,6 @@ { "name": "next-auth", - "version": "5.0.0-beta.20", + "version": "5.0.0-beta.25", "description": "Authentication for Next.js", "homepage": "https://nextjs.authjs.dev", "repository": "https://github.com/nextauthjs/next-auth.git", @@ -74,6 +74,7 @@ "dev": "pnpm providers && tsc -w", "test": "vitest run -c ../utils/vitest.config.ts", "test:watch": "vitest -c ../utils/vitest.config.ts", + "test:e2e": "playwright test", "providers": "node ../utils/scripts/providers" }, "files": [ @@ -107,7 +108,8 @@ }, "devDependencies": { "@types/react": "18.0.37", - "next": "14.2.3", + "dotenv": "^10.0.0", + "next": "15.0.0-rc.1", "nodemailer": "^6.9.3", "react": "^18.2.0" } diff --git a/packages/next-auth/playwright.config.ts b/packages/next-auth/playwright.config.ts new file mode 100644 index 0000000000..194a2e056c --- /dev/null +++ b/packages/next-auth/playwright.config.ts @@ -0,0 +1,53 @@ +// import { join } from "node:path" +import { defineConfig, devices } from "@playwright/test" +// import * as dotenv from "dotenv" + +// Use process.env.PORT by default and fallback to port 3000 +const PORT = process.env.PORT || 3000 + +// Set webServer.url and use.baseURL with the location of the WebServer respecting the correct set port +const baseURL = `http://localhost:${PORT}` + +// if (!process.env.CI) { +// const path = process.env.TEST_DOCKER +// ? join(process.cwd(), "..", "..", "..", "packages", "core", ".env") +// : join(process.cwd(), "..", "core", ".env") + +// dotenv.config({ path }) +// } + +/** See https://playwright.dev/docs/api/class-testconfig. */ +export default defineConfig({ + testDir: "../", + // Artifacts folder where screenshots, videos, and traces are stored. + outputDir: "test-results/", + testMatch: "**/test/e2e/**/*.spec.ts", + fullyParallel: true, + retries: process.env.CI ? 2 : 0, + workers: process.env.CI ? 1 : undefined, + reporter: process.env.CI + ? "dot" + : [["line"], ["html", { open: "on-failure" }]], + use: { + // Use baseURL so to make navigations relative. + // More information: https://playwright.dev/docs/api/class-testoptions#test-options-base-url + baseURL, + + // Retry a test if its failing with enabled tracing. This allows you to analyze the DOM, console logs, network traffic etc. + // More information: https://playwright.dev/docs/trace-viewer + trace: "retry-with-trace", + }, + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] }, + }, + ], + webServer: { + cwd: "../../apps/dev/nextjs", + command: "pnpm dev", + url: baseURL, + stdout: "pipe", + reuseExistingServer: !process.env.CI, + }, +}) diff --git a/packages/next-auth/scripts/generate-providers.js b/packages/next-auth/scripts/generate-providers.js deleted file mode 100644 index 21a6e4ce97..0000000000 --- a/packages/next-auth/scripts/generate-providers.js +++ /dev/null @@ -1,26 +0,0 @@ -import fs from "fs/promises" -import { resolve } from "path" - -const sourceDir = resolve(process.cwd(), "../core/src/providers") -const destinationDir = resolve(process.cwd(), "src/providers") -const nonProvider = ["oauth-types.ts", "oauth.ts"] -try { - await fs.mkdir(destinationDir, { recursive: true }) - const files = (await fs.readdir(sourceDir)).filter( - (file) => !nonProvider.includes(file) - ) - for (const file of files) { - const destinationPath = resolve(destinationDir, file) - const provider = file.substring(0, file.indexOf(".")) - let content = `export * from "@auth/core/providers/${provider}"` - if (provider !== "index") { - content += `\nexport { default } from "@auth/core/providers/${provider}"` - } - - content = content.replace(/\/index/g, "") - await fs.writeFile(destinationPath, content) - } - console.log("All files copied successfully!") -} catch (error) { - console.error("Error occurred while copying files:", error) -} diff --git a/packages/next-auth/src/index.ts b/packages/next-auth/src/index.ts index 7d18ce698f..e6e5f06db3 100644 --- a/packages/next-auth/src/index.ts +++ b/packages/next-auth/src/index.ts @@ -67,13 +67,13 @@ * @module next-auth */ -import { Auth } from "@auth/core" +import { Auth, customFetch } from "@auth/core" import { reqWithEnvURL, setEnvDefaults } from "./lib/env.js" import { initAuth } from "./lib/index.js" import { signIn, signOut, update } from "./lib/actions.js" import type { Awaitable, Session } from "@auth/core/types" -import type { BuiltInProviderType } from "@auth/core/providers" +import type { ProviderId } from "@auth/core/providers" import type { GetServerSidePropsContext, NextApiRequest, @@ -88,6 +88,8 @@ import type { NextRequest } from "next/server" import type { NextAuthConfig, NextAuthRequest } from "./lib/index.js" export { AuthError, CredentialsSignin } from "@auth/core/errors" +export { customFetch } + export type { Session, Account, @@ -287,10 +289,7 @@ export interface NextAuthResult { * ``` * */ - signIn: < - P extends BuiltInProviderType | (string & {}), - R extends boolean = true, - >( + signIn:

    ( /** Provider to sign in to */ provider?: P, // See: https://github.com/microsoft/TypeScript/issues/29729 options?: diff --git a/packages/next-auth/src/lib/actions.ts b/packages/next-auth/src/lib/actions.ts index ff0a732262..80081fa2e0 100644 --- a/packages/next-auth/src/lib/actions.ts +++ b/packages/next-auth/src/lib/actions.ts @@ -15,7 +15,7 @@ export async function signIn( authorizationParams: SignInParams[2], config: NextAuthConfig ) { - const headers = new Headers(nextHeaders()) + const headers = new Headers(await nextHeaders()) const { redirect: shouldRedirect = true, redirectTo, @@ -71,7 +71,8 @@ export async function signIn( const req = new Request(url, { method: "POST", headers, body }) const res = await Auth(req, { ...config, raw, skipCSRFCheck }) - for (const c of res?.cookies ?? []) cookies().set(c.name, c.value, c.options) + const cookieJar = await cookies() + for (const c of res?.cookies ?? []) cookieJar.set(c.name, c.value, c.options) const responseUrl = res instanceof Response ? res.headers.get("Location") : res.redirect @@ -90,7 +91,7 @@ export async function signOut( options: SignOutParams[0], config: NextAuthConfig ) { - const headers = new Headers(nextHeaders()) + const headers = new Headers(await nextHeaders()) headers.set("Content-Type", "application/x-www-form-urlencoded") const url = createActionURL( @@ -107,7 +108,8 @@ export async function signOut( const res = await Auth(req, { ...config, raw, skipCSRFCheck }) - for (const c of res?.cookies ?? []) cookies().set(c.name, c.value, c.options) + const cookieJar = await cookies() + for (const c of res?.cookies ?? []) cookieJar.set(c.name, c.value, c.options) if (options?.redirect ?? true) return redirect(res.redirect!) @@ -119,7 +121,7 @@ export async function update( data: UpdateParams[0], config: NextAuthConfig ): Promise { - const headers = new Headers(nextHeaders()) + const headers = new Headers(await nextHeaders()) headers.set("Content-Type", "application/json") const url = createActionURL( @@ -135,7 +137,8 @@ export async function update( const res: any = await Auth(req, { ...config, raw, skipCSRFCheck }) - for (const c of res?.cookies ?? []) cookies().set(c.name, c.value, c.options) + const cookieJar = await cookies() + for (const c of res?.cookies ?? []) cookieJar.set(c.name, c.value, c.options) return res.body } diff --git a/packages/next-auth/src/lib/client.ts b/packages/next-auth/src/lib/client.ts index 246894571b..22b0f0cbb2 100644 --- a/packages/next-auth/src/lib/client.ts +++ b/packages/next-auth/src/lib/client.ts @@ -1,7 +1,7 @@ "use client" import * as React from "react" -import type { BuiltInProviderType, ProviderType } from "@auth/core/providers" +import type { ProviderId, ProviderType } from "@auth/core/providers" import type { LoggerInstance, Session } from "@auth/core/types" import { AuthError } from "@auth/core/errors" @@ -33,29 +33,32 @@ export interface UseSessionOptions { onUnauthenticated?: () => void } -// Util type that matches some strings literally, but allows any other string as well. -// @source https://github.com/microsoft/TypeScript/issues/29729#issuecomment-832522611 -export type LiteralUnion = - | T - | (U & Record) - export interface ClientSafeProvider { - id: LiteralUnion + id: ProviderId name: string type: ProviderType signinUrl: string callbackUrl: string + redirectTo: string } -export interface SignInOptions extends Record { +export interface SignInOptions + extends Record { + /** @deprecated Use `redirectTo` instead. */ + callbackUrl?: string /** - * Specify to which URL the user will be redirected after signing in. Defaults to the page URL the sign-in is initiated from. + * Specify where the user should be redirected to after a successful signin. * - * [Documentation](https://next-auth.js.org/getting-started/client#specifying-a-callbackurl) + * By default, it is the page the sign-in was initiated from. */ - callbackUrl?: string - /** [Documentation](https://next-auth.js.org/getting-started/client#using-the-redirect-false-option) */ - redirect?: boolean + redirectTo?: string + /** + * You might want to deal with the signin response on the same page, instead of redirecting to another page. + * For example, if an error occurs (like wrong credentials given by the user), you might want to show an inline error message on the input field. + * + * For this purpose, you can set this to option `redirect: false`. + */ + redirect?: Redirect } export interface SignInResponse { @@ -81,11 +84,17 @@ export interface SignOutResponse { url: string } -export interface SignOutParams { - /** [Documentation](https://next-auth.js.org/getting-started/client#specifying-a-callbackurl-1) */ +export interface SignOutParams { + /** @deprecated Use `redirectTo` instead. */ callbackUrl?: string + /** + * If you pass `redirect: false`, the page will not reload. + * The session will be deleted, and `useSession` is notified, so any indication about the user will be shown as logged out automatically. + * It can give a very nice experience for the user. + */ + redirectTo?: string /** [Documentation](https://next-auth.js.org/getting-started/client#using-the-redirect-false-option-1 */ - redirect?: R + redirect?: Redirect } /** diff --git a/packages/next-auth/src/lib/index.ts b/packages/next-auth/src/lib/index.ts index efcd2d4faf..2223cdeaa3 100644 --- a/packages/next-auth/src/lib/index.ts +++ b/packages/next-auth/src/lib/index.ts @@ -127,7 +127,7 @@ export function initAuth( return async (...args: WithAuthArgs) => { if (!args.length) { // React Server Components - const _headers = headers() + const _headers = await headers() const _config = await config(undefined) // Review: Should we pass headers() here instead? onLazyLoad?.(_config) @@ -183,7 +183,9 @@ export function initAuth( return (...args: WithAuthArgs) => { if (!args.length) { // React Server Components - return getSession(headers(), config).then((r) => r.json()) + return Promise.resolve(headers()).then((h: Headers) => + getSession(h, config).then((r) => r.json()) + ) } if (args[0] instanceof Request) { // middleware.ts inline diff --git a/packages/next-auth/src/lib/types.ts b/packages/next-auth/src/lib/types.ts index 5617581780..e934a7a9e1 100644 --- a/packages/next-auth/src/lib/types.ts +++ b/packages/next-auth/src/lib/types.ts @@ -1,12 +1,13 @@ // @ts-expect-error Next.js does not yet correctly use the `package.json#exports` field import type { NextRequest } from "next/server" +import type { Awaitable } from "@auth/core/types" /** * AppRouteHandlerFnContext is the context that is passed to the handler as the * second argument. */ export type AppRouteHandlerFnContext = { - params?: Record + params: Awaitable> } /** * Handler function for app routes. If a non-Response value is returned, an error diff --git a/packages/next-auth/src/react.tsx b/packages/next-auth/src/react.tsx index c01da29364..a900155c68 100644 --- a/packages/next-auth/src/react.tsx +++ b/packages/next-auth/src/react.tsx @@ -1,6 +1,9 @@ /** * - * NextAuth.js methods and components that work in [Client components](https://nextjs.org/docs/app/building-your-application/rendering/client-components) and the [Pages Router](https://nextjs.org/docs/pages). + * NextAuth.js is the official integration of Auth.js for Next.js applications. It supports both + * [Client Components](https://nextjs.org/docs/app/building-your-application/rendering/client-components) and the + * [Pages Router](https://nextjs.org/docs/pages). It includes methods for signing in, signing out, hooks, and a React + * Context provider to wrap your application and make session data available anywhere. * * For use in [Server Actions](https://nextjs.org/docs/app/api-reference/functions/server-actions), check out [these methods](https://authjs.dev/guides/upgrade-to-v5#methods) * @@ -19,15 +22,11 @@ import { useOnline, } from "./lib/client.js" -import type { - BuiltInProviderType, - RedirectableProviderType, -} from "@auth/core/providers" +import type { ProviderId } from "@auth/core/providers" import type { LoggerInstance, Session } from "@auth/core/types" import type { AuthClientConfig, ClientSafeProvider, - LiteralUnion, SessionProviderProps, SignInAuthorizationParams, SignInOptions, @@ -39,7 +38,6 @@ import type { // TODO: Remove/move to core? export type { - LiteralUnion, SignInOptions, SignInAuthorizationParams, SignOutParams, @@ -206,59 +204,74 @@ export async function getCsrfToken() { return response?.csrfToken ?? "" } -type ProvidersType = Record< - LiteralUnion, - ClientSafeProvider -> - -/** - * Returns a client-safe configuration object of the currently - * available providers. - */ export async function getProviders() { - return fetchData("providers", __NEXTAUTH, logger) + return fetchData>( + "providers", + __NEXTAUTH, + logger + ) } /** - * Initiate a signin flow or send the user to the signin page listing all possible providers. + * Initiates a signin flow or sends the user to the signin page listing all possible providers. * Handles CSRF protection. + * + * @note This method can only be used from Client Components ("use client" or Pages Router). + * For Server Actions, use the `signIn` method imported from the `auth` config. */ -export async function signIn< - P extends RedirectableProviderType | undefined = undefined, ->( - provider?: LiteralUnion< - P extends RedirectableProviderType - ? P | BuiltInProviderType - : BuiltInProviderType - >, - options?: SignInOptions, +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, authorizationParams?: SignInAuthorizationParams -): Promise< - P extends RedirectableProviderType ? SignInResponse | undefined : undefined -> { - const { callbackUrl = window.location.href, redirect = true } = options ?? {} +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise { + const { callbackUrl, ...rest } = options ?? {} + const { + redirect = true, + redirectTo = callbackUrl ?? window.location.href, + ...signInParams + } = rest const baseUrl = apiBaseUrl(__NEXTAUTH) const providers = await getProviders() if (!providers) { - window.location.href = `${baseUrl}/error` - return + const url = `${baseUrl}/error` + window.location.href = url + return // TODO: Return error if `redirect: false` } - if (!provider || !(provider in providers)) { - window.location.href = `${baseUrl}/signin?${new URLSearchParams({ - callbackUrl, + if (!provider || !providers[provider]) { + const url = `${baseUrl}/signin?${new URLSearchParams({ + callbackUrl: redirectTo, })}` - return + window.location.href = url + return // TODO: Return error if `redirect: false` } - const isCredentials = providers[provider].type === "credentials" - const isEmail = providers[provider].type === "email" - const isSupportingReturn = isCredentials || isEmail + const providerType = providers[provider].type + + if (providerType === "webauthn") { + // TODO: Add docs link with explanation + throw new TypeError( + [ + `Provider id "${provider}" refers to a WebAuthn provider.`, + 'Please use `import { signIn } from "next-auth/webauthn"` instead.', + ].join("\n") + ) + } const signInUrl = `${baseUrl}/${ - isCredentials ? "callback" : "signin" + providerType === "credentials" ? "callback" : "signin" }/${provider}` const csrfToken = await getCsrfToken() @@ -270,28 +283,26 @@ export async function signIn< "Content-Type": "application/x-www-form-urlencoded", "X-Auth-Return-Redirect": "1", }, - // @ts-expect-error body: new URLSearchParams({ - ...options, + ...signInParams, csrfToken, - callbackUrl, + callbackUrl: redirectTo, }), } ) const data = await res.json() - // TODO: Do not redirect for Credentials and Email providers by default in next major - if (redirect || !isSupportingReturn) { - const url = data.url ?? callbackUrl + if (redirect) { + const url = data.url ?? redirectTo window.location.href = url // If url contains a hash, the browser does not reload the page. We reload manually if (url.includes("#")) window.location.reload() return } - const error = new URL(data.url).searchParams.get("error") - const code = new URL(data.url).searchParams.get("code") + const error = new URL(data.url).searchParams.get("error") ?? undefined + const code = new URL(data.url).searchParams.get("code") ?? undefined if (res.ok) { await __NEXTAUTH._getSession({ event: "storage" }) @@ -303,17 +314,28 @@ export async function signIn< status: res.status, ok: res.ok, url: error ? null : data.url, - } as any + } } /** * Initiate a signout, by destroying the current session. * Handles CSRF protection. + * + * @note This method can only be used from Client Components ("use client" or Pages Router). + * For Server Actions, use the `signOut` method imported from the `auth` config. */ +export async function signOut(options?: SignOutParams): Promise +export async function signOut( + options?: SignOutParams +): Promise export async function signOut( options?: SignOutParams -): Promise { - const { callbackUrl = window.location.href } = options ?? {} +): Promise { + const { + redirect = true, + redirectTo = options?.callbackUrl ?? window.location.href, + } = options ?? {} + const baseUrl = apiBaseUrl(__NEXTAUTH) const csrfToken = await getCsrfToken() const res = await fetch(`${baseUrl}/signout`, { @@ -322,18 +344,17 @@ export async function signOut( "Content-Type": "application/x-www-form-urlencoded", "X-Auth-Return-Redirect": "1", }, - body: new URLSearchParams({ csrfToken, callbackUrl }), + body: new URLSearchParams({ csrfToken, callbackUrl: redirectTo }), }) const data = await res.json() broadcast().postMessage({ event: "session", data: { trigger: "signout" } }) - if (options?.redirect ?? true) { - const url = data.url ?? callbackUrl + if (redirect) { + const url = data.url ?? redirectTo window.location.href = url // If url contains a hash, the browser does not reload the page. We reload manually if (url.includes("#")) window.location.reload() - // @ts-expect-error return } diff --git a/packages/next-auth/src/webauthn.ts b/packages/next-auth/src/webauthn.ts index c0511b3761..e1ed98a96b 100644 --- a/packages/next-auth/src/webauthn.ts +++ b/packages/next-auth/src/webauthn.ts @@ -4,13 +4,9 @@ import { getCsrfToken, getProviders, __NEXTAUTH } from "./react.js" import type { LoggerInstance } from "@auth/core/types" import type { WebAuthnOptionsResponseBody } from "@auth/core/types" -import type { - BuiltInProviderType, - RedirectableProviderType, -} from "@auth/core/providers" +import type { ProviderId } from "@auth/core/providers" import type { AuthClientConfig, - LiteralUnion, SignInAuthorizationParams, SignInOptions, SignInResponse, @@ -25,15 +21,11 @@ const logger: LoggerInstance = { /** * Fetch webauthn options from server and prompt user for authentication or registration. * Returns either the completed WebAuthn response or an error request. - * - * @param providerID provider ID - * @param options SignInOptions - * @returns WebAuthn response or error */ async function webAuthnOptions( - providerID: string, + providerID: ProviderId, nextAuthConfig: AuthClientConfig, - options?: SignInOptions + options?: Omit ) { const baseUrl = apiBaseUrl(nextAuthConfig) @@ -58,87 +50,84 @@ async function webAuthnOptions( } /** - * Initiate a signin flow or send the user to the signin page listing all possible providers. - * Handles CSRF protection. + * Initiate a WebAuthn signin flow. + * @see https://authjs.dev/getting-started/authentication/webauthn */ -export async function signIn< - P extends RedirectableProviderType | undefined = undefined, ->( - provider?: LiteralUnion< - P extends RedirectableProviderType - ? P | BuiltInProviderType - : BuiltInProviderType - >, - options?: SignInOptions, +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, authorizationParams?: SignInAuthorizationParams -): Promise< - P extends RedirectableProviderType ? SignInResponse | undefined : undefined -> { - const { callbackUrl = window.location.href, redirect = true } = options ?? {} +): Promise +export async function signIn( + provider?: ProviderId, + options?: SignInOptions, + authorizationParams?: SignInAuthorizationParams +): Promise { + const { callbackUrl, ...rest } = options ?? {} + const { + redirectTo = callbackUrl ?? window.location.href, + redirect = true, + ...signInParams + } = rest const baseUrl = apiBaseUrl(__NEXTAUTH) const providers = await getProviders() if (!providers) { window.location.href = `${baseUrl}/error` - return - } - - if (!provider || !(provider in providers)) { - window.location.href = `${baseUrl}/signin?${new URLSearchParams({ - callbackUrl, - })}` - return + return // TODO: Return error if `redirect: false` } - const isCredentials = providers[provider].type === "credentials" - const isEmail = providers[provider].type === "email" - const isWebAuthn = providers[provider].type === "webauthn" - const isSupportingReturn = isCredentials || isEmail || isWebAuthn - - const signInUrl = `${baseUrl}/${ - isCredentials || isWebAuthn ? "callback" : "signin" - }/${provider}` - - // Execute WebAuthn client flow if needed - const webAuthnBody: Record = {} - if (isWebAuthn) { - const { data, error, action } = await webAuthnOptions( - provider, - __NEXTAUTH, - options + if ( + !provider || + !providers[provider] || + providers[provider].type !== "webauthn" + ) { + // TODO: Add docs link with explanation + throw new TypeError( + [ + `Provider id "${provider}" does not refer to a WebAuthn provider.`, + 'Please use `import { signIn } from "next-auth/react"` instead.', + ].join("\n") ) - if (error) { - logger.error(new Error(await error.text())) - return - } - webAuthnBody.data = JSON.stringify(data) - webAuthnBody.action = action } - const csrfToken = await getCsrfToken() - const res = await fetch( - `${signInUrl}?${new URLSearchParams(authorizationParams)}`, - { - method: "post", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - "X-Auth-Return-Redirect": "1", - }, - // @ts-expect-error - body: new URLSearchParams({ - ...options, - ...webAuthnBody, - csrfToken, - callbackUrl, - }), - } + const webAuthnBody: Record = {} + const webAuthnResponse = await webAuthnOptions( + provider, + __NEXTAUTH, + signInParams ) + if (webAuthnResponse.error) { + logger.error(new Error(await webAuthnResponse.error.text())) + return + } + webAuthnBody.data = JSON.stringify(webAuthnResponse.data) + webAuthnBody.action = webAuthnResponse.action + + const signInUrl = `${baseUrl}/callback/${provider}?${new URLSearchParams(authorizationParams)}` + const res = await fetch(signInUrl, { + method: "post", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + "X-Auth-Return-Redirect": "1", + }, + body: new URLSearchParams({ + ...signInParams, + ...webAuthnBody, + csrfToken: await getCsrfToken(), + callbackUrl: redirectTo, + }), + }) const data = await res.json() - // TODO: Do not redirect for Credentials and Email providers by default in next major - if (redirect || !isSupportingReturn) { + if (redirect) { const url = data.url ?? callbackUrl window.location.href = url // If url contains a hash, the browser does not reload the page. We reload manually diff --git a/packages/core/test/e2e/fixtures/auth.ts b/packages/next-auth/test/e2e/fixtures/auth.ts similarity index 100% rename from packages/core/test/e2e/fixtures/auth.ts rename to packages/next-auth/test/e2e/fixtures/auth.ts diff --git a/packages/core/test/e2e/fixtures/webApp.ts b/packages/next-auth/test/e2e/fixtures/webApp.ts similarity index 96% rename from packages/core/test/e2e/fixtures/webApp.ts rename to packages/next-auth/test/e2e/fixtures/webApp.ts index ded42a39f7..c4d23bf73a 100644 --- a/packages/core/test/e2e/fixtures/webApp.ts +++ b/packages/next-auth/test/e2e/fixtures/webApp.ts @@ -72,7 +72,7 @@ export class WebApp { // Ensure we've landed back at the dev app logged in const session = await this.page.locator("pre").textContent() - expect(JSON.parse(session ?? "{}").user.email).toEqual("bob@alice.com") + expect(JSON.parse(session ?? "{}").user.name).toEqual("bob") this.isLoggedIn = true } diff --git a/packages/core/test/e2e/helpers/authTest.ts b/packages/next-auth/test/e2e/helpers/authTest.ts similarity index 100% rename from packages/core/test/e2e/helpers/authTest.ts rename to packages/next-auth/test/e2e/helpers/authTest.ts diff --git a/packages/core/test/e2e/poms/keycloakLoginPom.ts b/packages/next-auth/test/e2e/poms/keycloakLoginPom.ts similarity index 100% rename from packages/core/test/e2e/poms/keycloakLoginPom.ts rename to packages/next-auth/test/e2e/poms/keycloakLoginPom.ts diff --git a/packages/core/test/e2e/user.spec.ts b/packages/next-auth/test/e2e/tests/api/session.spec.ts similarity index 85% rename from packages/core/test/e2e/user.spec.ts rename to packages/next-auth/test/e2e/tests/api/session.spec.ts index 4b412333ff..6ee4641c31 100644 --- a/packages/core/test/e2e/user.spec.ts +++ b/packages/next-auth/test/e2e/tests/api/session.spec.ts @@ -1,4 +1,4 @@ -import { expect, test } from "./helpers/authTest" +import { expect, test } from "../../helpers/authTest" test.describe("user profile", () => { test("profile values", async ({ webapp }) => { diff --git a/packages/next-auth/test/e2e/tests/providers/credentials.spec.ts b/packages/next-auth/test/e2e/tests/providers/credentials.spec.ts new file mode 100644 index 0000000000..37e1b8f205 --- /dev/null +++ b/packages/next-auth/test/e2e/tests/providers/credentials.spec.ts @@ -0,0 +1,35 @@ +import { test, expect } from "@playwright/test" + +test.describe("Credentials Provider", () => { + test("Signin / Signout", async ({ page }) => { + await test.step("should login", async () => { + await page.goto("http://localhost:3000/auth/signin") + await page.getByLabel("Password").fill("password") + await page + .getByRole("button", { name: "Sign in with Credentials" }) + .click() + const session = await page.locator("pre").textContent() + + expect(JSON.parse(session ?? "{}")).toEqual({ + user: { + email: "test@example.com", + name: "Test User", + }, + expires: expect.any(String), + }) + }) + + await test.step("should logout", async () => { + await page + .getByRole("banner") + .getByRole("button", { name: "Sign out" }) + .click() + + // Wait on server-side signout req + await page.waitForTimeout(1000) + + const session = await page.locator("pre").textContent() + expect(JSON.parse(session ?? "{}")).toBeNull() + }) + }) +}) diff --git a/packages/core/test/e2e/basic-auth.spec.ts b/packages/next-auth/test/e2e/tests/providers/keycloak.spec.ts similarity index 51% rename from packages/core/test/e2e/basic-auth.spec.ts rename to packages/next-auth/test/e2e/tests/providers/keycloak.spec.ts index 681e082c9f..021f1d753a 100644 --- a/packages/core/test/e2e/basic-auth.spec.ts +++ b/packages/next-auth/test/e2e/tests/providers/keycloak.spec.ts @@ -1,39 +1,7 @@ import { test, expect } from "@playwright/test" -test.describe("Basic Auth", () => { - test("Credentials Signin / Signout", async ({ page }) => { - await test.step("should login", async () => { - await page.goto("http://localhost:3000/auth/signin") - await page.getByLabel("Password").fill("password") - await page - .getByRole("button", { name: "Sign in with Credentials" }) - .click() - const session = await page.locator("pre").textContent() - - expect(JSON.parse(session ?? "{}")).toEqual({ - user: { - email: "test@example.com", - name: "Test User", - }, - expires: expect.any(String), - }) - }) - - await test.step("should logout", async () => { - await page - .getByRole("banner") - .getByRole("button", { name: "Sign out" }) - .click() - - // Wait on server-side signout req - await page.waitForTimeout(1000) - - const session = await page.locator("pre").textContent() - expect(JSON.parse(session ?? "{}")).toBeNull() - }) - }) - - test("Keycloak Signin / Signout", async ({ page }) => { +test.describe("KeyCloak Provider", () => { + test("Signin / Signout", async ({ page }) => { if ( !process.env.TEST_KEYCLOAK_USERNAME || !process.env.TEST_KEYCLOAK_PASSWORD @@ -43,24 +11,31 @@ test.describe("Basic Auth", () => { await test.step("should login", async () => { await page.goto("http://localhost:3000/auth/signin") await page.getByText("Keycloak").click() + // Keycloak-hosted login form await page .getByLabel("Username or email") .fill(process.env.TEST_KEYCLOAK_USERNAME!) await page.locator("#password").fill(process.env.TEST_KEYCLOAK_PASSWORD!) await page.getByRole("button", { name: "Sign In" }).click() + + // Should return to dev app + await page.waitForTimeout(1000) const session = await page.locator("pre").textContent() expect(JSON.parse(session ?? "{}")).toEqual({ user: { - email: "bob@alice.com", - name: "Bob Alice", - image: "https://avatars.githubusercontent.com/u/67470890?s=200&v=4", + name: "bob", }, expires: expect.any(String), }) }) await test.step("should logout", async () => { + // TODO: Enable the test + test.skip( + true, + "The session isn't cleared after signout, until the next page load" + ) await page .getByRole("banner") .getByRole("button", { name: "Sign out" }) diff --git a/packages/next-auth/tsconfig.json b/packages/next-auth/tsconfig.json index 5a85db97d6..b04f5de2f4 100644 --- a/packages/next-auth/tsconfig.json +++ b/packages/next-auth/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "utils/tsconfig.json", + "extends": "../utils/tsconfig.json", "compilerOptions": { "lib": ["dom", "dom.iterable", "esnext"], "jsx": "react-jsx", diff --git a/packages/utils/adapter.ts b/packages/utils/adapter.ts index 9b759323ee..33de4c1187 100644 --- a/packages/utils/adapter.ts +++ b/packages/utils/adapter.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, expect, test } from "vitest" -import type { Adapter } from "@auth/core/adapters" +import type { Adapter, VerificationToken } from "@auth/core/adapters" import { createHash, randomInt, randomUUID } from "crypto" export interface TestOptions { @@ -287,7 +287,7 @@ export async function runBasicTests(options: TestOptions) { identifier, expires: options.fixtures?.verificationTokenExpires ?? FIFTEEN_MINUTES_FROM_NOW, - } + } satisfies VerificationToken await adapter.createVerificationToken?.(verificationToken) const dbVerificationToken1 = await adapter.useVerificationToken?.({ @@ -301,8 +301,26 @@ export async function runBasicTests(options: TestOptions) { expect(dbVerificationToken1).toEqual(verificationToken) - const dbVerificationToken2 = await adapter.useVerificationToken?.({ + const dbVerificationTokenSecondTry = await adapter.useVerificationToken?.({ + identifier, + token: hashedToken, + }) + + expect(dbVerificationTokenSecondTry).toBeNull() + + // Should only return if the identifier matches + + const verificationToken2 = { + token: hashedToken, identifier, + expires: + options.fixtures?.verificationTokenExpires ?? FIFTEEN_MINUTES_FROM_NOW, + } satisfies VerificationToken + + await adapter.createVerificationToken?.(verificationToken2) + + const dbVerificationToken2 = await adapter.useVerificationToken?.({ + identifier: "invalid@identifier.com", token: hashedToken, }) diff --git a/packages/utils/playwright.config.ts b/packages/utils/playwright.config.ts deleted file mode 100644 index 4b79d800c0..0000000000 --- a/packages/utils/playwright.config.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { join } from "node:path" -import { defineConfig, devices } from "@playwright/test" -import * as dotenv from "dotenv" - -if (!process.env.CI) { - const path = process.env.TEST_DOCKER - ? join(process.cwd(), "..", "..", "..", "packages", "core", ".env") - : join(process.cwd(), "..", "core", ".env") - - dotenv.config({ path }) -} - -/** See https://playwright.dev/docs/api/class-testconfig. */ -export default defineConfig({ - testDir: "../", - testMatch: "**/test/e2e/*.spec.ts", - fullyParallel: true, - retries: process.env.CI ? 2 : 0, - workers: process.env.CI ? 1 : undefined, - reporter: process.env.CI - ? "dot" - : [["line"], ["html", { open: "on-failure" }]], - use: { trace: "on" }, - projects: [ - { - name: "chromium", - use: { ...devices["Desktop Chrome"] }, - }, - ], - webServer: { - cwd: "../../", - command: "turbo run dev --filter=next-auth-app", - url: "http://localhost:3000", - timeout: 20_000, - stdout: process.env.CI ? "ignore" : "pipe", - stderr: "pipe", - reuseExistingServer: true, - }, -}) diff --git a/packages/utils/scripts/providers.js b/packages/utils/scripts/providers.js index 4ab14b501c..57691369e5 100644 --- a/packages/utils/scripts/providers.js +++ b/packages/utils/scripts/providers.js @@ -13,7 +13,7 @@ const args = parseArgs({ const { out } = args.values const destinationDir = resolve(process.cwd(), join(out, "providers")) -const nonProvider = ["oauth-types.ts", "oauth.ts"] +const nonProvider = ["provider-types.ts", "oauth.ts"] try { await fs.mkdir(destinationDir, { recursive: true }) const files = (await fs.readdir(sourceDir)).filter( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3eea07684d..cc553ae408 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,80 +29,83 @@ importers: specifier: ^9.9.1 version: 9.9.1 '@playwright/test': - specifier: 1.41.2 - version: 1.41.2 + specifier: 1.40.0 + version: 1.40.0 '@types/node': specifier: ^20.8.10 - version: 20.11.7 + version: 20.12.7 '@typescript-eslint/eslint-plugin': specifier: v6.19.1 - version: 6.19.1(@typescript-eslint/parser@6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3))(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) + version: 6.19.1(@typescript-eslint/parser@6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3))(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) '@typescript-eslint/parser': specifier: v6.19.1 - version: 6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) + version: 6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) '@vitest/coverage-v8': specifier: 1.2.1 - version: 1.2.1(vitest@1.2.2(@types/node@20.11.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0)) + version: 1.2.1(vitest@1.2.2(@types/node@20.12.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0)) '@vitest/ui': specifier: ^1.2.2 version: 1.2.2(vitest@1.2.2) eslint: specifier: 9.9.1 - version: 9.9.1(jiti@1.21.0) + version: 9.9.1(jiti@1.21.6) eslint-config-prettier: specifier: ^8.10.0 - version: 8.10.0(eslint@9.9.1(jiti@1.21.0)) + version: 8.10.0(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-import-x: specifier: ^4.1.1 - version: 4.1.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) + version: 4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) eslint-plugin-jsdoc: specifier: ^39.9.1 - version: 39.9.1(eslint@9.9.1(jiti@1.21.0)) + version: 39.9.1(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-promise: specifier: ^6.0.0 - version: 6.1.1(eslint@9.9.1(jiti@1.21.0)) + version: 6.1.1(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-react: specifier: ^7.33.2 - version: 7.33.2(eslint@9.9.1(jiti@1.21.0)) + version: 7.33.2(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@9.9.1(jiti@1.21.0))(svelte@4.2.9)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)) + version: 2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3)) fake-smtp-server: specifier: ^0.8.0 version: 0.8.0 globals: specifier: ^15.9.0 version: 15.9.0 + lefthook: + specifier: 1.7.15 + version: 1.7.15 prettier: specifier: 3.3.3 version: 3.3.3 prettier-plugin-svelte: specifier: ^3.2.6 - version: 3.2.6(prettier@3.3.3)(svelte@4.2.9) + version: 3.2.6(prettier@3.3.3)(svelte@4.2.19) prettier-plugin-tailwindcss: specifier: ^0.6.6 - version: 0.6.6(@prettier/plugin-pug@3.0.0(prettier@3.3.3))(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.9))(prettier@3.3.3) + version: 0.6.6(@prettier/plugin-pug@3.0.0(prettier@3.3.3))(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19))(prettier@3.3.3) svelte-eslint-parser: specifier: ^0.35.0 - version: 0.35.0(svelte@4.2.9) + version: 0.35.0(svelte@4.2.19) turbo: - specifier: ^2.0.14 - version: 2.0.14 + specifier: ^2.1.1 + version: 2.1.1 typescript: specifier: 5.3.3 version: 5.3.3 typescript-eslint: specifier: ^8.3.0 - version: 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) + version: 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) utils: specifier: workspace:* version: link:packages/utils vite: - specifier: ^5.0.13 - version: 5.0.13(@types/node@20.11.7)(sass@1.70.0)(terser@5.27.0) + specifier: ^5.1.8 + version: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) vitest: specifier: 1.2.2 - version: 1.2.2(@types/node@20.11.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0) + version: 1.2.2(@types/node@20.12.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0) apps/dev/express: dependencies: @@ -110,8 +113,8 @@ importers: specifier: workspace:* version: link:../../../packages/frameworks-express express: - specifier: ^4.19.2 - version: 4.19.2 + specifier: ^4.20.0 + version: 4.20.0 morgan: specifier: ^1.10.0 version: 1.10.0 @@ -140,40 +143,25 @@ importers: apps/dev/nextjs: dependencies: - '@auth/prisma-adapter': - specifier: workspace:* - version: link:../../../packages/adapter-prisma - '@prisma/client': - specifier: ^5 - version: 5.8.1(prisma@5.8.1) next: - specifier: 15.0.0-rc.0 - version: 15.0.0-rc.0(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522))(react@19.0.0-rc-4c2e457c7c-20240522)(sass@1.70.0) + specifier: 15.0.0-rc.1 + version: 15.0.0-rc.1(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@19.0.0-rc-4c58fce7-20240904(react@19.0.0-rc-4c58fce7-20240904))(react@19.0.0-rc-4c58fce7-20240904)(sass@1.70.0) next-auth: specifier: workspace:* version: link:../../../packages/next-auth - nodemailer: - specifier: ^6.9.3 - version: 6.9.8 react: - specifier: 19.0.0-rc-4c2e457c7c-20240522 - version: 19.0.0-rc-4c2e457c7c-20240522 + specifier: 19.0.0-rc-4c58fce7-20240904 + version: 19.0.0-rc-4c58fce7-20240904 react-dom: - specifier: 19.0.0-rc-4c2e457c7c-20240522 - version: 19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522) + specifier: 19.0.0-rc-4c58fce7-20240904 + version: 19.0.0-rc-4c58fce7-20240904(react@19.0.0-rc-4c58fce7-20240904) devDependencies: - '@libsql/client': - specifier: ^0.6.0 - version: 0.6.0 '@types/react': specifier: ^18.2.23 - version: 18.2.48 + version: 18.2.78 '@types/react-dom': specifier: ^18.2.8 version: 18.2.18 - prisma: - specifier: ^5 - version: 5.8.1 apps/dev/qwik: devDependencies: @@ -182,7 +170,7 @@ importers: version: link:../../../packages/frameworks-qwik '@builder.io/qwik': specifier: ^1.5.5 - version: 1.5.5(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)(undici@5.28.2) + version: 1.7.3(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) '@builder.io/qwik-city': specifier: ^1.5.5 version: 1.5.5(@types/node@20.12.7)(rollup@4.18.0)(sass@1.70.0)(terser@5.27.0) @@ -206,7 +194,7 @@ importers: version: 1.5.7(eslint@8.57.0) prettier: specifier: ^3.2.5 - version: 3.3.2 + version: 3.3.3 typescript: specifier: 5.4.5 version: 5.4.5 @@ -234,19 +222,19 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: next - version: 1.0.0-next.91(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0))) + version: 1.0.0-next.91(@sveltejs/kit@2.6.4(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0))) '@sveltejs/kit': specifier: ^2.5.7 - version: 2.5.7(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + version: 2.6.4(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + version: 3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) svelte: specifier: ^4 - version: 4.2.9 + version: 4.2.19 svelte-check: specifier: 2.10.2 - version: 2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)))(postcss@8.4.38)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.9) + version: 2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19) typescript: specifier: 5.2.2 version: 5.2.2 @@ -254,50 +242,47 @@ importers: docs: dependencies: '@ariakit/react': - specifier: ^0.4.5 - version: 0.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^0.4.13 + version: 0.4.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@inkeep/widgets': - specifier: ^0.2.272 - version: 0.2.272(@internationalized/date@3.5.2)(@types/react@18.2.78)(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + specifier: ^0.2.289 + version: 0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@next/third-parties': - specifier: ^14.2.1 - version: 14.2.1(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1) - '@oddbird/css-anchor-positioning': - specifier: ^0.0.5 - version: 0.0.5 + specifier: ^14.2.15 + version: 14.2.15(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1) '@radix-ui/react-accordion': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.2.1 + version: 1.2.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-tabs': - specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vercel/analytics': - specifier: ^1.2.2 - version: 1.2.2(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1) + specifier: ^1.3.1 + version: 1.3.1(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1) '@vercel/kv': specifier: ^1.0.1 version: 1.0.1 algoliasearch: - specifier: ^4.23.3 - version: 4.23.3 + specifier: ^4.24.0 + version: 4.24.0 classnames: specifier: ^2.5.1 version: 2.5.1 framer-motion: - specifier: ^11.2.6 - version: 11.2.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^11.11.8 + version: 11.11.8(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: - specifier: 14.2.3 - version: 14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) + specifier: 14.2.15 + version: 14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) next-sitemap: specifier: ^4.2.3 - version: 4.2.3(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0)) + version: 4.2.3(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0)) nextra: - specifier: 3.0.0-alpha.24 - version: 3.0.0-alpha.24(@types/react@18.2.78)(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + specifier: 3.0.15 + version: 3.0.15(@types/react@18.2.78)(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) nextra-theme-docs: - specifier: 3.0.0-alpha.24 - version: 3.0.0-alpha.24(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(nextra@3.0.0-alpha.24(@types/react@18.2.78)(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 3.0.15 + version: 3.0.15(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(nextra@3.0.15(@types/react@18.2.78)(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: 18.3.1 version: 18.3.1 @@ -305,11 +290,11 @@ importers: specifier: 18.3.1 version: 18.3.1(react@18.3.1) react-instantsearch: - specifier: ^7.7.2 - version: 7.7.2(algoliasearch@4.23.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.13.3 + version: 7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-instantsearch-nextjs: - specifier: ^0.2.2 - version: 0.2.2(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-instantsearch@7.7.2(algoliasearch@4.23.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + specifier: ^0.2.5 + version: 0.2.5(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-instantsearch@7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) devDependencies: '@types/node': specifier: 20.12.7 @@ -318,26 +303,26 @@ importers: specifier: 18.2.78 version: 18.2.78 autoprefixer: - specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.38) + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) postcss: - specifier: ^8.4.38 - version: 8.4.38 + specifier: ^8.4.47 + version: 8.4.47 shiki: - specifier: ^1.3.0 - version: 1.3.0 + specifier: ^1.22.0 + version: 1.22.0 tailwindcss: - specifier: ^3.4.3 - version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) + specifier: ^3.4.13 + version: 3.4.13(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3)) typedoc: specifier: ^0.25.13 - version: 0.25.13(typescript@5.4.5) + version: 0.25.13(typescript@5.6.3) typedoc-plugin-markdown: specifier: 4.0.0-next.54 - version: 4.0.0-next.54(typedoc@0.25.13(typescript@5.4.5)) + version: 4.0.0-next.54(typedoc@0.25.13(typescript@5.6.3)) typedoc-plugin-mdn-links: - specifier: ^3.2.7 - version: 3.2.7(typedoc@0.25.13(typescript@5.4.5)) + specifier: ^3.3.2 + version: 3.3.2(typedoc@0.25.13(typescript@5.6.3)) packages/adapter-azure-tables: dependencies: @@ -392,7 +377,7 @@ importers: version: 0.23.0 drizzle-orm: specifier: ^0.32.0 - version: 0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@opentelemetry/api@1.7.0)(@prisma/client@5.9.1)(@types/better-sqlite3@7.6.9)(@types/pg@8.11.0)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.3.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6))(kysely@0.24.2)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(react@18.3.1)(sqlite3@5.1.6) + version: 0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@opentelemetry/api@1.7.0)(@prisma/client@6.0.0(prisma@6.0.0))(@types/better-sqlite3@7.6.9)(@types/pg@8.11.0)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.6.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13)))(kysely@0.24.2)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(prisma@6.0.0)(react@18.3.1)(sqlite3@5.1.6(encoding@0.1.13)) libsql: specifier: ^0.3.18 version: 0.3.18 @@ -404,7 +389,7 @@ importers: version: 3.4.3 tsx: specifier: ^4.7.0 - version: 4.7.0 + version: 4.7.3 packages/adapter-dynamodb: dependencies: @@ -440,7 +425,7 @@ importers: version: 1.3.1 fauna-shell: specifier: 1.2.1 - version: 1.2.1(@swc/core@1.3.106)(@types/node@20.12.7)(encoding@0.1.13)(typescript@5.4.5) + version: 1.2.1(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(encoding@0.1.13)(typescript@5.6.3) packages/adapter-firebase: dependencies: @@ -460,7 +445,7 @@ importers: devDependencies: '@graphql-codegen/cli': specifier: ^5.0.0 - version: 5.0.0(@parcel/watcher@2.4.1)(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1)(typescript@5.4.5) + version: 5.0.0(@parcel/watcher@2.4.1)(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1)(typescript@5.6.3) '@graphql-codegen/client-preset': specifier: ^4.1.0 version: 4.1.0(encoding@0.1.13)(graphql@16.8.1) @@ -511,7 +496,7 @@ importers: devDependencies: mongodb: specifier: ^6.0.0 - version: 6.3.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0)(socks@2.7.1) + version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1) packages/adapter-neo4j: dependencies: @@ -565,17 +550,17 @@ importers: version: link:../core devDependencies: '@prisma/client': - specifier: ^5.9.1 - version: 5.9.1(prisma@5.9.1) + specifier: ^6.0.0 + version: 6.0.0(prisma@6.0.0) '@prisma/extension-accelerate': - specifier: ^0.6.3 - version: 0.6.3(@prisma/client@5.9.1(prisma@5.9.1)) + specifier: 1.1.0 + version: 1.1.0(@prisma/client@6.0.0(prisma@6.0.0)) mongodb: - specifier: ^4.17.0 - version: 4.17.2 + specifier: ^6.9.0 + version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1) prisma: - specifier: ^5.9.1 - version: 5.9.1 + specifier: ^6.0.0 + version: 6.0.0 packages/adapter-sequelize: dependencies: @@ -629,10 +614,10 @@ importers: version: 8.11.3 typeorm: specifier: 0.3.17 - version: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)) + version: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)) typeorm-naming-strategies: specifier: ^4.1.0 - version: 4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3))) + version: 4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3))) packages/adapter-unstorage: dependencies: @@ -645,7 +630,7 @@ importers: version: 4.6.12 unstorage: specifier: ^1.10.1 - version: 1.10.1(@azure/data-tables@13.2.2)(@upstash/redis@1.28.2) + version: 1.10.2(@azure/data-tables@13.2.2)(@vercel/kv@1.0.1)(ioredis@5.4.1) packages/adapter-upstash-redis: dependencies: @@ -671,34 +656,28 @@ importers: devDependencies: '@xata.io/client': specifier: ^0.28.0 - version: 0.28.0(typescript@5.4.5) + version: 0.28.0(typescript@5.6.3) packages/core: dependencies: '@panva/hkdf': - specifier: ^1.1.1 - version: 1.1.1 - '@types/cookie': - specifier: 0.6.0 - version: 0.6.0 - cookie: - specifier: 0.6.0 - version: 0.6.0 + specifier: ^1.2.1 + version: 1.2.1 jose: - specifier: ^5.1.3 - version: 5.2.0 + specifier: ^5.9.6 + version: 5.9.6 nodemailer: specifier: ^6.8.0 version: 6.9.8 oauth4webapi: - specifier: ^2.10.4 - version: 2.10.4 + specifier: ^3.1.3 + version: 3.1.3 preact: - specifier: 10.11.3 - version: 10.11.3 + specifier: 10.24.3 + version: 10.24.3 preact-render-to-string: - specifier: 5.2.3 - version: 5.2.3(preact@10.11.3) + specifier: 6.5.11 + version: 6.5.11(preact@10.24.3) devDependencies: '@simplewebauthn/browser': specifier: 9.0.1 @@ -725,14 +704,14 @@ importers: specifier: 8.4.19 version: 8.4.19 postcss-nesting: - specifier: ^12.0.2 - version: 12.0.2(postcss@8.4.19) + specifier: ^12.1.5 + version: 12.1.5(postcss@8.4.19) typedoc: specifier: ^0.25.12 - version: 0.25.12(typescript@5.4.5) + version: 0.25.13(typescript@5.6.3) typedoc-plugin-markdown: specifier: 4.0.0-next.53 - version: 4.0.0-next.53(typedoc@0.25.12(typescript@5.4.5)) + version: 4.0.0-next.53(typedoc@0.25.13(typescript@5.6.3)) packages/frameworks-express: dependencies: @@ -741,7 +720,7 @@ importers: version: link:../core express: specifier: ^4.18.2 - version: 4.18.2 + version: 4.20.0 devDependencies: '@types/express': specifier: ^4.17.17 @@ -760,26 +739,26 @@ importers: version: link:../core set-cookie-parser: specifier: ^2.6.0 - version: 2.6.0 + version: 2.7.0 devDependencies: '@builder.io/qwik': specifier: 1.7.3 - version: 1.7.3(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + version: 1.7.3(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) '@builder.io/qwik-city': specifier: 1.5.5 - version: 1.5.5(@types/node@20.12.7)(rollup@4.18.0)(sass@1.70.0)(terser@5.27.0) + version: 1.5.5(@types/node@22.7.5)(rollup@4.18.0)(sass@1.70.0)(terser@5.27.0) '@types/set-cookie-parser': specifier: ^2.4.7 - version: 2.4.7 + version: 2.4.10 typescript: specifier: ^5.4.5 version: 5.4.5 vite-plugin-dts: specifier: ^3.9.1 - version: 3.9.1(@types/node@20.12.7)(rollup@4.18.0)(typescript@5.4.5)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + version: 3.9.1(@types/node@22.7.5)(rollup@4.18.0)(typescript@5.4.5)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) vite-plugin-static-copy: specifier: ^1.0.5 - version: 1.0.5(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + version: 1.0.5(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) packages/frameworks-solid-start: dependencies: @@ -815,39 +794,39 @@ importers: specifier: ^6.6.5 version: 6.9.8 set-cookie-parser: - specifier: ^2.6.0 - version: 2.6.0 + specifier: ^2.7.0 + version: 2.7.0 devDependencies: '@sveltejs/adapter-auto': - specifier: ^3.0.0 - version: 3.1.1(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0))) + specifier: ^3.2.5 + version: 3.2.5(@sveltejs/kit@2.6.4(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0))) '@sveltejs/kit': - specifier: ^2.5.7 - version: 2.5.7(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + specifier: ^2.6.4 + version: 2.6.4(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) '@sveltejs/package': - specifier: ^2.0.0 - version: 2.2.6(svelte@4.2.9)(typescript@5.4.5) + specifier: ^2.3.5 + version: 2.3.5(svelte@4.2.19)(typescript@5.6.3) '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.0 - version: 3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + specifier: ^3.1.2 + version: 3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) '@types/set-cookie-parser': - specifier: ^2.4.7 - version: 2.4.7 + specifier: ^2.4.10 + version: 2.4.10 svelte: - specifier: ^4.0.0 - version: 4.2.9 + specifier: ^4.2.19 + version: 4.2.19 svelte-check: - specifier: ^3.4.3 - version: 3.6.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)))(postcss@8.4.38)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.9) + specifier: ^4.0.4 + version: 4.0.4(svelte@4.2.19)(typescript@5.6.3) tslib: - specifier: ^2.4.1 - version: 2.6.2 + specifier: ^2.7.0 + version: 2.7.0 typedoc: specifier: ^0.25.12 - version: 0.25.12(typescript@5.4.5) + version: 0.25.13(typescript@5.6.3) typedoc-plugin-markdown: specifier: 4.0.0-next.53 - version: 4.0.0-next.53(typedoc@0.25.12(typescript@5.4.5)) + version: 4.0.0-next.53(typedoc@0.25.13(typescript@5.6.3)) packages/frameworks-template: dependencies: @@ -865,33 +844,36 @@ importers: version: 9.0.1 '@simplewebauthn/server': specifier: ^9.0.2 - version: 9.0.2(encoding@0.1.13) + version: 9.0.3(encoding@0.1.13) devDependencies: '@types/react': specifier: 18.0.37 version: 18.0.37 + dotenv: + specifier: ^10.0.0 + version: 10.0.0 next: - specifier: 14.2.3 - version: 14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@19.0.0-rc-935180c7e0-20240524(react@18.2.0))(react@18.2.0)(sass@1.70.0) + specifier: 15.0.0-rc.1 + version: 15.0.0-rc.1(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@19.0.0-rc-935180c7e0-20240524(react@18.3.1))(react@18.3.1)(sass@1.70.0) nodemailer: specifier: ^6.9.3 version: 6.9.8 react: specifier: ^18.2.0 - version: 18.2.0 + version: 18.3.1 packages/utils: dependencies: unplugin-swc: specifier: ^1.4.4 - version: 1.4.4(@swc/core@1.3.106(@swc/helpers@0.5.11))(rollup@4.18.0) + version: 1.4.4(@swc/core@1.3.106(@swc/helpers@0.5.13))(rollup@4.18.0) devDependencies: '@auth/core': specifier: workspace:* version: link:../core '@preact/preset-vite': specifier: ^2.8.1 - version: 2.8.1(@babel/core@7.23.9)(preact@10.11.3)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + version: 2.8.1(@babel/core@7.23.9)(preact@10.24.3)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) dotenv: specifier: ^10.0.0 version: 10.0.0 @@ -908,53 +890,53 @@ packages: '@actions/http-client@2.2.0': resolution: {integrity: sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==} - '@algolia/cache-browser-local-storage@4.23.3': - resolution: {integrity: sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==} + '@algolia/cache-browser-local-storage@4.24.0': + resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} - '@algolia/cache-common@4.23.3': - resolution: {integrity: sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==} + '@algolia/cache-common@4.24.0': + resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} - '@algolia/cache-in-memory@4.23.3': - resolution: {integrity: sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==} + '@algolia/cache-in-memory@4.24.0': + resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} - '@algolia/client-account@4.23.3': - resolution: {integrity: sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==} + '@algolia/client-account@4.24.0': + resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} - '@algolia/client-analytics@4.23.3': - resolution: {integrity: sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==} + '@algolia/client-analytics@4.24.0': + resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} - '@algolia/client-common@4.23.3': - resolution: {integrity: sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==} + '@algolia/client-common@4.24.0': + resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} - '@algolia/client-personalization@4.23.3': - resolution: {integrity: sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==} + '@algolia/client-personalization@4.24.0': + resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} - '@algolia/client-search@4.23.3': - resolution: {integrity: sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==} + '@algolia/client-search@4.24.0': + resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} '@algolia/events@4.0.1': resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - '@algolia/logger-common@4.23.3': - resolution: {integrity: sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==} + '@algolia/logger-common@4.24.0': + resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} - '@algolia/logger-console@4.23.3': - resolution: {integrity: sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==} + '@algolia/logger-console@4.24.0': + resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} - '@algolia/recommend@4.23.3': - resolution: {integrity: sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==} + '@algolia/recommend@4.24.0': + resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} - '@algolia/requester-browser-xhr@4.23.3': - resolution: {integrity: sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==} + '@algolia/requester-browser-xhr@4.24.0': + resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} - '@algolia/requester-common@4.23.3': - resolution: {integrity: sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==} + '@algolia/requester-common@4.24.0': + resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} - '@algolia/requester-node-http@4.23.3': - resolution: {integrity: sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==} + '@algolia/requester-node-http@4.24.0': + resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} - '@algolia/transporter@4.23.3': - resolution: {integrity: sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==} + '@algolia/transporter@4.24.0': + resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} @@ -964,8 +946,11 @@ packages: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} - '@antfu/utils@0.7.7': - resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} '@apollo/client@3.9.5': resolution: {integrity: sha512-7y+c8MTPU+hhTwvcGVtMMGIgWduzrvG1mz5yJMRyqYbheBkkky3Lki6ADWVSBXG1lZoOtPYvB2zDgVfKb2HSsw==} @@ -995,20 +980,20 @@ packages: resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} engines: {node: '>=14'} - '@ariakit/core@0.4.5': - resolution: {integrity: sha512-e294+bEcyzt/H/kO4fS5/czLAlkF7PY+Kul3q2z54VY+GGay8NlVs9UezAB7L4jUBlYRAXwp7/1Sq3R7b+MZ7w==} + '@ariakit/core@0.4.12': + resolution: {integrity: sha512-+NNpy88tdP/w9mOBPuDrMTbtapPbo/8yVIzpQB7TAmN0sPh/Cq3nU1f2KCTCIujPmwRvAcMSW9UHOlFmbKEPOA==} - '@ariakit/react-core@0.4.5': - resolution: {integrity: sha512-ciTYPwpj/+mdA+EstveEnoygbx5e4PXQJxfkLKy4lkTkDJJUS9GcbYhdnIFJVUta6P1YFvzkIKo+/y9mcbMKJg==} + '@ariakit/react-core@0.4.13': + resolution: {integrity: sha512-iIjQeupP9d0pOubOzX4a0UPXbhXbp0ZCduDpkv7+u/pYP/utk/YRECD0M/QpZr6YSeltmDiNxKjdyK8r9Yhv4Q==} peerDependencies: - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@ariakit/react@0.4.5': - resolution: {integrity: sha512-GUHxaOY1JZrJUHkuV20IY4NWcgknhqTQM0qCQcVZDCi+pJiWchUjTG+UyIr/Of02hU569qnQ7yovskCf+V3tNg==} + '@ariakit/react@0.4.13': + resolution: {integrity: sha512-pTGYgoqCojfyt2xNJ5VQhejxXwwtcP7VDDqcnnVChv7TA2TWWyYerJ5m4oxViI1pgeNqnHZwKlQ79ZipF7W2kQ==} peerDependencies: - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 '@ark-ui/anatomy@0.1.0': resolution: {integrity: sha512-ZIBtFlmcIVAzm4OUh122XngdgTp++OvtqFmPskzFtyJaODFZvytYYZeP6g1XCxHmkLve2ci+MY76U7iMuk+wAQ==} @@ -1356,10 +1341,18 @@ packages: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.22.20': resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.23.5': resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} @@ -1381,6 +1374,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.25.8': + resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3': resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} @@ -1891,6 +1889,10 @@ packages: resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.25.8': + resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + engines: {node: '>=6.9.0'} + '@balazsorban/monorepo-release@0.5.1': resolution: {integrity: sha512-4FhT53KFZqnZYVPOcFOqsMECG+zaxXzArGILlyzCNz/uqm84P4xNNZ9a2a5RuiM9/3qK9zBomfaryoTEOnmsqQ==} engines: {node: '>=18.18.0'} @@ -1899,55 +1901,18 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@braintree/sanitize-url@6.0.4': - resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} + '@braintree/sanitize-url@7.1.0': + resolution: {integrity: sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==} '@builder.io/qwik-city@1.5.5': resolution: {integrity: sha512-Xi/1WqrB91CpZcAXs43OC87+7h89hJczJp43FXUMrvTHGeUsR/udhpz6SZWI/mHh0PFNx6f0A59tPmtDDzYl0Q==} engines: {node: '>=16.8.0 <18.0.0 || >=18.11'} - '@builder.io/qwik@1.5.5': - resolution: {integrity: sha512-ZgeWVfkgdBcv/SwfB0RJtSR6YCVBnFtZ4dH1yxDqeShzgFrVqeVIE7l7A5wwb0hXtA6ESxskLgui6ayZlKSnWQ==} - engines: {node: '>=16.8.0 <18.0.0 || >=18.11'} - hasBin: true - peerDependencies: - undici: '*' - '@builder.io/qwik@1.7.3': resolution: {integrity: sha512-lVRT4j9redY4X+iOy26U2vhychJgX24aaleu3IuBlEwD8MjCU5k46ApHq+cGqI24/kbqjirPH3SIxtVSByEG/A==} engines: {node: '>=16.8.0 <18.0.0 || >=18.11'} hasBin: true - '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': - resolution: {integrity: sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==} - cpu: [arm64] - os: [darwin] - - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': - resolution: {integrity: sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==} - cpu: [x64] - os: [darwin] - - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': - resolution: {integrity: sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==} - cpu: [arm64] - os: [linux] - - '@cbor-extract/cbor-extract-linux-arm@2.2.0': - resolution: {integrity: sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==} - cpu: [arm] - os: [linux] - - '@cbor-extract/cbor-extract-linux-x64@2.2.0': - resolution: {integrity: sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==} - cpu: [x64] - os: [linux] - - '@cbor-extract/cbor-extract-win32-x64@2.2.0': - resolution: {integrity: sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==} - cpu: [x64] - os: [win32] - '@changesets/get-dependents-graph@1.3.6': resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} @@ -1957,6 +1922,21 @@ packages: '@changesets/types@5.2.1': resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} + '@chevrotain/cst-dts-gen@11.0.3': + resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} + + '@chevrotain/gast@11.0.3': + resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} + + '@chevrotain/regexp-to-ast@11.0.3': + resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} + + '@chevrotain/types@11.0.3': + resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} + + '@chevrotain/utils@11.0.3': + resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + '@clack/core@0.3.4': resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} @@ -1983,8 +1963,14 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/selector-specificity@3.0.1': - resolution: {integrity: sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==} + '@csstools/selector-resolve-nested@1.1.0': + resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + + '@csstools/selector-specificity@3.1.1': + resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 @@ -2004,9 +1990,11 @@ packages: '@esbuild-kit/core-utils@3.3.2': resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' '@esbuild-kit/esm-loader@2.6.5': resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + deprecated: 'Merged into tsx: https://tsx.is' '@esbuild/aix-ppc64@0.19.12': resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} @@ -2014,8 +2002,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.20.1': - resolution: {integrity: sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==} + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -2044,8 +2032,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.20.1': - resolution: {integrity: sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==} + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2074,8 +2062,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.20.1': - resolution: {integrity: sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==} + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2104,8 +2092,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.20.1': - resolution: {integrity: sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==} + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2134,8 +2122,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.20.1': - resolution: {integrity: sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==} + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2164,8 +2152,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.20.1': - resolution: {integrity: sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==} + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2194,8 +2182,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.20.1': - resolution: {integrity: sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==} + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2224,8 +2212,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.1': - resolution: {integrity: sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==} + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2254,8 +2242,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.20.1': - resolution: {integrity: sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==} + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2284,8 +2272,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.20.1': - resolution: {integrity: sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==} + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2314,8 +2302,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.20.1': - resolution: {integrity: sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==} + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2344,8 +2332,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.20.1': - resolution: {integrity: sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==} + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2374,8 +2362,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.20.1': - resolution: {integrity: sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==} + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2404,8 +2392,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.20.1': - resolution: {integrity: sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==} + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2434,8 +2422,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.20.1': - resolution: {integrity: sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==} + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2464,8 +2452,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.20.1': - resolution: {integrity: sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==} + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2494,8 +2482,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.20.1': - resolution: {integrity: sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==} + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2524,8 +2512,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.20.1': - resolution: {integrity: sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==} + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2554,8 +2542,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.20.1': - resolution: {integrity: sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==} + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2584,8 +2572,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.20.1': - resolution: {integrity: sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==} + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2614,8 +2602,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.20.1': - resolution: {integrity: sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==} + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2644,8 +2632,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.20.1': - resolution: {integrity: sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==} + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2674,8 +2662,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.20.1': - resolution: {integrity: sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==} + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2692,10 +2680,6 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.11.0': resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -2766,20 +2750,41 @@ packages: '@floating-ui/core@1.6.0': resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + '@floating-ui/dom@1.5.1': resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==} '@floating-ui/dom@1.5.2': resolution: {integrity: sha512-6ArmenS6qJEWmwzczWyhvrXRdI/rI78poBcW0h/456+onlabit+2G+QxHx5xTOX60NBJQXjsCLFbW2CmsXpUog==} - '@floating-ui/dom@1.6.3': - resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + '@floating-ui/dom@1.6.11': + resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.26.25': + resolution: {integrity: sha512-hZOmgN0NTOzOuZxI1oIrDu3Gcl8WViIkvPMpB4xdd4QD6xAMtwgwr3VPoiyH/bLtRcS1cDnhxLSD1NsMJmwh/A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' '@floating-ui/utils@0.1.6': resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} - '@floating-ui/utils@0.2.1': - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + '@floating-ui/utils@0.2.7': + resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==} + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@formatjs/intl-localematcher@0.5.5': + resolution: {integrity: sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==} '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} @@ -3028,12 +3033,12 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@headlessui/react@1.7.18': - resolution: {integrity: sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==} + '@headlessui/react@2.1.10': + resolution: {integrity: sha512-6mLa2fjMDAFQi+/R10B+zU3edsUk/MDtENB2zHho0lqKU1uzhAfJLUduWds4nCo8wbl3vULtC5rJfZAQ1yqIng==} engines: {node: '>=10'} peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 + react: ^18 + react-dom: ^18 '@hexagon/base64@1.1.28': resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==} @@ -3058,149 +3063,147 @@ packages: '@iarna/toml@2.2.5': resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} - '@img/sharp-darwin-arm64@0.33.4': - resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.1.33': + resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.4': - resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.0.2': - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.2': - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.0.2': - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.0.2': - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-s390x@1.0.2': - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.0.2': - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.0.2': - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.33.4': - resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.33.4': - resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.33.4': - resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} - engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.33.4': - resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.33.4': - resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.33.4': - resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.33.4': - resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-ia32@0.33.4': - resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.33.4': - resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] - '@inkeep/color-mode@0.0.23': - resolution: {integrity: sha512-SbI4ubObRx+N/R/uJLQTBZNL/s5Y0h1MAeuZskRmU2A2ThBW0kT4qLC1tStOA1KhtCkFHO7obtzb7NdpNUc93A==} + '@inkeep/color-mode@0.0.24': + resolution: {integrity: sha512-P/ZqGqeKsSuVRk7vk2tucGZlmadY4XlrCF/BalFTdZ/i6CtRIrXaQWy1723/GVYabzvPAbzhZ89PI3YWXGL4Rw==} peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 - '@inkeep/components@0.0.23': - resolution: {integrity: sha512-JwMdEB2JoMNQwJocYq4ontMOlatYBSkv9AIgPBnxcO9+IkguIQTE5821mrRQJsOtpS58LuFzt+fYcuGX6sqtWw==} + '@inkeep/components@0.0.24': + resolution: {integrity: sha512-n10+DXRSyq0K/GgUQ4+vbWEbWyE7YyhhQ9jq3YI8ST8BwAm0mDfFodE8nAGbHrvT9c4Hjzp2l5s7WS99oqr5eg==} peerDependencies: '@ark-ui/react': '>=0.15.0' react: ^18.2.0 react-dom: ^18.2.0 - '@inkeep/preset-chakra@0.0.23': - resolution: {integrity: sha512-3RxQPV28mqBmOJliBJAZlL3lemcIGdZvYs7a2jGESjKUfD19ARNnCXZ+NaXjvdONGB/NiwNsFtBUKEn3YixvQg==} + '@inkeep/preset-chakra@0.0.24': + resolution: {integrity: sha512-kHzJunsKULuT2QrNnrzVdBrFR986LmO+YWZ4XAe5mRBxlNl+ODNyVZ/xWLC4xUcMnRlnVHHUhfIv9lYTrAR2fg==} - '@inkeep/preset@0.0.23': - resolution: {integrity: sha512-LGI6y3PZq/jJawDA8uUpudbmugKnEpJxvBwxBKpDZ1+DsqKeAx+45DUwLHv3Bd0yrPAZPqnhjumBhoD/uIjrgg==} + '@inkeep/preset@0.0.24': + resolution: {integrity: sha512-9pcnBejUz+gh9IrZLfEQye5hJDRUCOKvrcRzlwpypnx8dFWpUYaTNg+Ja3ySoj3yzr5Keuu/5ZRxzy1WF1CLQg==} - '@inkeep/shared@0.0.24': - resolution: {integrity: sha512-KMlb+b1bCH3YulCVxEnRojZPWgrble6kEv4pjz5H7jJQaEdIg0TdTWWmT6BrOmA8kb2n7GeKU0as+nhiqkyRAw==} + '@inkeep/shared@0.0.25': + resolution: {integrity: sha512-O4+vIgH12vwnMtD5RIv4y6jrKZTuIXFm7e7TkHtZTWNBRL8jPQuY73URbKCxaaGrcOY9XKKp+J4RZe5Wac07ug==} - '@inkeep/styled-system@0.0.37': - resolution: {integrity: sha512-6Bgnlw/QmNjmfT5y/tDOX5JG3DrroOOCm3gDPX7HOJya/Th8vn1P34pH4rQ6K2gQJ2avew2kB5A7Xi9R2IzVnA==} + '@inkeep/styled-system@0.0.44': + resolution: {integrity: sha512-dz2OjHGUD4C4ass6Rdzor0lmN1siYjFiboRMR9N7ACtVKbDgN6SYfNnb57K47jykIPFjhDNClg95R7x7ldDlpw==} - '@inkeep/styled-system@0.0.40': - resolution: {integrity: sha512-jQ8u/FMRa/7tTtF5uhKiVxSIQjLtazWFdPFr7+aI8Yj/O4ERqXaV98S7852neikQ3cxREYv5mAnaMH8bMMSqNg==} + '@inkeep/styled-system@0.0.46': + resolution: {integrity: sha512-nL3jywgLkiDPTbIgi195AEgw7W/JvLGw5FDqTVI+o28syjgqvEohCSSpiIBDYkUEoz1XRZDImva1jNg17qzfXw==} - '@inkeep/widgets@0.2.272': - resolution: {integrity: sha512-4uXGVqXGxMXAAx105QOCgWuhCa0JgALQICVcEF+Q/TBulZBKGwBJKoyb9TTAGLdB/cq6+8FFif1RizBqdf3jUw==} + '@inkeep/widgets@0.2.289': + resolution: {integrity: sha512-M4bET7C6ZAX1jlMoUkVcl8Rc/17J909sgeCP+KC3lBouf4H7MVUvtRUYypdIm1W3A7df/MjkbaAYFWUJsM22iQ==} peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 @@ -3252,6 +3255,9 @@ packages: '@internationalized/date@3.5.2': resolution: {integrity: sha512-vo1yOMUt2hzp63IutEaTUxROdvQg1qlMRsbCvbay2AK2Gai7wIgCyK5weEX3nHkiLgo4qCXHijFNC/ILhlRpOQ==} + '@internationalized/date@3.5.6': + resolution: {integrity: sha512-jLxQjefH9VI5P9UQuqB6qNKnvFt1Ky1TPIzHGsIlCi7sZZoMR8SdYbBGRvM0y+Jtb+ez4ieBzmiAUcpmPYpyOw==} + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -3286,11 +3292,11 @@ packages: '@jridgewell/source-map@0.3.5': resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/trace-mapping@0.3.22': - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -3310,24 +3316,35 @@ packages: '@libsql/client@0.6.0': resolution: {integrity: sha512-qhQzTG/y2IEVbL3+9PULDvlQFWJ/RnjFXECr/Nc3nRngGiiMysDaOV5VUzYk7DulUX98EA4wi+z3FspKrUplUA==} - '@libsql/core@0.6.0': - resolution: {integrity: sha512-affAB8vSqQwqI9NBDJ5uJCVaHoOAS2pOpbv1kWConh1SBbmJBnHHd4KG73RAJ2sgd2+NbT9WA+XJBqxgp28YSw==} + '@libsql/core@0.6.2': + resolution: {integrity: sha512-c2P4M+4u/4b2L02A0KjggO3UW51rGkhxr/7fzJO0fEAqsqrWGxuNj2YtRkina/oxfYvAof6xjp8RucNoIV/Odw==} '@libsql/darwin-arm64@0.3.18': resolution: {integrity: sha512-Zt49dt+cwhPCkuoWgvjbQd4ckNfCJR5xzIAyhgHl3CBZqZaEuaXTOGKLNQT7bnFRPuQcdLt5PBT1cenKu2N6pA==} cpu: [arm64] os: [darwin] + '@libsql/darwin-arm64@0.3.19': + resolution: {integrity: sha512-rmOqsLcDI65zzxlUOoEiPJLhqmbFsZF6p4UJQ2kMqB+Kc0Rt5/A1OAdOZ/Wo8fQfJWjR1IbkbpEINFioyKf+nQ==} + cpu: [arm64] + os: [darwin] + '@libsql/darwin-x64@0.3.18': resolution: {integrity: sha512-faq6HUGDaNaueeqPei5cypHaD/hhazUyfHo094CXiEeRZq6ZKtNl5PHdlr8jE/Uw8USNpVVQaLdnvSgKcpRPHw==} cpu: [x64] os: [darwin] - '@libsql/hrana-client@0.6.0': - resolution: {integrity: sha512-k+fqzdjqg3IvWfKmVJK5StsbjeTcyNAXFelUbXbGNz3yH1gEVT9mZ6kmhsIXP30ZSyVV0AE1Gi25p82mxC9hwg==} + '@libsql/darwin-x64@0.3.19': + resolution: {integrity: sha512-q9O55B646zU+644SMmOQL3FIfpmEvdWpRpzubwFc2trsa+zoBlSkHuzU9v/C+UNoPHQVRMP7KQctJ455I/h/xw==} + cpu: [x64] + os: [darwin] + + '@libsql/hrana-client@0.6.2': + resolution: {integrity: sha512-MWxgD7mXLNf9FXXiM0bc90wCjZSpErWKr5mGza7ERy2FJNNMXd7JIOv+DepBA1FQTIfI8TFO4/QDYgaQC0goNw==} - '@libsql/isomorphic-fetch@0.2.1': - resolution: {integrity: sha512-Sv07QP1Aw8A5OOrmKgRUBKe2fFhF2hpGJhtHe3d1aRnTESZCGkn//0zDycMKTGamVWb3oLYRroOsCV8Ukes9GA==} + '@libsql/isomorphic-fetch@0.2.5': + resolution: {integrity: sha512-8s/B2TClEHms2yb+JGpsVRTPBfy1ih/Pq6h6gvyaNcYnMVJvgQRY7wAa8U2nD0dppbCuDU5evTNMEhrQ17ZKKg==} + engines: {node: '>=18.0.0'} '@libsql/isomorphic-ws@0.1.5': resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} @@ -3337,26 +3354,51 @@ packages: cpu: [arm64] os: [linux] + '@libsql/linux-arm64-gnu@0.3.19': + resolution: {integrity: sha512-mgeAUU1oqqh57k7I3cQyU6Trpdsdt607eFyEmH5QO7dv303ti+LjUvh1pp21QWV6WX7wZyjeJV1/VzEImB+jRg==} + cpu: [arm64] + os: [linux] + '@libsql/linux-arm64-musl@0.3.18': resolution: {integrity: sha512-oYD5+oM2gPEalp+EoR5DVQBRtdGjLsocjsRbQs5O2m4WOBJKER7VUfDYZHsifLGZoBSc11Yo6s9IR9rjGWy20w==} cpu: [arm64] os: [linux] + '@libsql/linux-arm64-musl@0.3.19': + resolution: {integrity: sha512-VEZtxghyK6zwGzU9PHohvNxthruSxBEnRrX7BSL5jQ62tN4n2JNepJ6SdzXp70pdzTfwroOj/eMwiPt94gkVRg==} + cpu: [arm64] + os: [linux] + '@libsql/linux-x64-gnu@0.3.18': resolution: {integrity: sha512-QDSSP60nS8KIldGE7H3bpEflQHiL1erwED6huoVJdmDFxsyDJX2CYdWUWW8Za0ZUOvUbnEWAOyMhp6j1dBbZqw==} cpu: [x64] os: [linux] + '@libsql/linux-x64-gnu@0.3.19': + resolution: {integrity: sha512-2t/J7LD5w2f63wGihEO+0GxfTyYIyLGEvTFEsMO16XI5o7IS9vcSHrxsvAJs4w2Pf907uDjmc7fUfMg6L82BrQ==} + cpu: [x64] + os: [linux] + '@libsql/linux-x64-musl@0.3.18': resolution: {integrity: sha512-5SXwTlaLCUPzxYyq+P0c7Ko7tcEjpd1X6RZKe1DuRFmJPg6f7j2+LrPEhMSIbqKcrl5ACUUAyoKmGZqNYwz23w==} cpu: [x64] os: [linux] + '@libsql/linux-x64-musl@0.3.19': + resolution: {integrity: sha512-BLsXyJaL8gZD8+3W2LU08lDEd9MIgGds0yPy5iNPp8tfhXx3pV/Fge2GErN0FC+nzt4DYQtjL+A9GUMglQefXQ==} + cpu: [x64] + os: [linux] + '@libsql/win32-x64-msvc@0.3.18': resolution: {integrity: sha512-9EEIHz+e8tTbx9TMkb8ByZnzxc0pYFirK1nSbqC6cFEST95fiY0NCfQ/zAzJxe90KckbjifX6BbO69eWIi3TAg==} cpu: [x64] os: [win32] + '@libsql/win32-x64-msvc@0.3.19': + resolution: {integrity: sha512-ay1X9AobE4BpzG0XPw1gplyLZPGHIgJOovvW23gUrukRegiUP62uzhpRbKNogLlUOynyXeq//prHgPXiebUfWg==} + cpu: [x64] + os: [win32] + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -3379,9 +3421,6 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@mdx-js/mdx@3.0.0': - resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==} - '@mdx-js/mdx@3.0.1': resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} @@ -3391,6 +3430,9 @@ packages: '@types/react': '>=16' react: '>=16' + '@mermaid-js/parser@0.3.0': + resolution: {integrity: sha512-HsvL6zgE5sUPGgkIDlmAWR1HTNHz2Iy11BAWPTa4Jjabkpguy4Ze2gzfLrg6pdRuBvFwgUYyxiaNqZwrEEXepA==} + '@microsoft/api-extractor-model@7.28.13': resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} @@ -3507,8 +3549,8 @@ packages: resolution: {integrity: sha512-/TL0np4uYDl+6MdseDApZmDdlJ6Y7AY5iDY0TvUQJG9nyBoCjX6w0Zn4SiKDwO6660rPtSqZ5c7HzbPhGb5vsA==} engines: {node: '>=16.13'} - '@mongodb-js/saslprep@1.1.4': - resolution: {integrity: sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==} + '@mongodb-js/saslprep@1.1.9': + resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==} '@napi-rs/simple-git-android-arm-eabi@0.1.16': resolution: {integrity: sha512-dbrCL0Pl5KZG7x7tXdtVsA5CO6At5ohDX3myf5xIYn9kN4jDFxsocl8bNt6Vb/hZQoJd8fI+k5VlJt+rFhbdVw==} @@ -3586,122 +3628,116 @@ packages: '@next/env@13.5.6': resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} - '@next/env@14.2.3': - resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} + '@next/env@14.2.15': + resolution: {integrity: sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==} - '@next/env@15.0.0-rc.0': - resolution: {integrity: sha512-6W0ndQvHR9sXcqcKeR/inD2UTRCs9+VkSK3lfaGmEuZs7EjwwXMO2BPYjz9oBrtfPL3xuTjtXsHKSsalYQ5l1Q==} + '@next/env@15.0.0-rc.1': + resolution: {integrity: sha512-4neDwowyr+9DfgickGjNATp6Lm3rJ/Y83ulg8irVXUoN+mLikrInYSzFDnwpkflO/wokFR4z5A171RVPnapZ/Q==} - '@next/swc-darwin-arm64@14.2.3': - resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==} + '@next/swc-darwin-arm64@14.2.15': + resolution: {integrity: sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@15.0.0-rc.0': - resolution: {integrity: sha512-4OpTXvAWcSabXA5d688zdUwa3sfT9QrLnHMdpv4q2UDnnuqmOI0xLb6lrOxwpi+vHJNkneuNLqyc5HGBhkqL6A==} + '@next/swc-darwin-arm64@15.0.0-rc.1': + resolution: {integrity: sha512-YqDdpE3vgcDSiq9oJcFp0YUsLXCfIa3BpAHOZnVfbXNPBz1JcDtIGFsoz2w6l5jmjU9+41l7oeagY8KAWtYdpA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.3': - resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==} + '@next/swc-darwin-x64@14.2.15': + resolution: {integrity: sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@15.0.0-rc.0': - resolution: {integrity: sha512-/TD8M9DT244uhtFA8P/0DUbM7ftg2zio6yOo6ajV16vNjkcug9Kt9//Wa4SrJjWcsGZpViLctOlwn3/6JFAuAA==} + '@next/swc-darwin-x64@15.0.0-rc.1': + resolution: {integrity: sha512-mM7rwGB9xuPM9dIAcInlmHpIOaFyBkOsUjj9ytUBANPNEqPkW8C06RITiPJ3toKAiocEcGdLuJeaYPS8MDgf6g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.2.3': - resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==} + '@next/swc-linux-arm64-gnu@14.2.15': + resolution: {integrity: sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@15.0.0-rc.0': - resolution: {integrity: sha512-3VTO32938AcqOlOI/U61/MIpeYrblP22VU1GrgmMQJozsAXEJgLCgf3wxZtn61/FG4Yc0tp7rPZE2t1fIGe0+w==} + '@next/swc-linux-arm64-gnu@15.0.0-rc.1': + resolution: {integrity: sha512-4V3PSaqvjW00qac6Pd7rWAv+zE3HGXv02JAac7TpwOvNIYuneqUq82HLGZe9aZTDtT+zhOS2RnCUuXE7v3BO2Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.3': - resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==} + '@next/swc-linux-arm64-musl@14.2.15': + resolution: {integrity: sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.0.0-rc.0': - resolution: {integrity: sha512-0kDnxM3AfrrHFJ/wTkjkv7cVHIaGwv+CzDg9lL2BoLEM4kMQhH20DTsBOMqpTpo1K2KCg67LuTGd3QOITT5uFQ==} + '@next/swc-linux-arm64-musl@15.0.0-rc.1': + resolution: {integrity: sha512-0xUM0jRNgezRT0F/wCMs2HJ5uuV/WDajYWWeBDSSOLKB8zfTMho+QiZtLqsGG1OjALIPttpKr1E2IDNWoUgXZQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.3': - resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==} + '@next/swc-linux-x64-gnu@14.2.15': + resolution: {integrity: sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@15.0.0-rc.0': - resolution: {integrity: sha512-fPMNahzqYFjm5h0ncJ5+F3NrShmWhpusM+zrQl01MMU0Ed5xsL4pJJDSuXV4wPkNUSjCP3XstTjxR5kBdO4juQ==} + '@next/swc-linux-x64-gnu@15.0.0-rc.1': + resolution: {integrity: sha512-xCusIy4TN9tS5CoZVk1bs6XUqSy1H6/BMco71/LA64oPKO/MsnFv6tbmzVlBKmriASCdedrgPlREE6AXVANRaA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.3': - resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==} + '@next/swc-linux-x64-musl@14.2.15': + resolution: {integrity: sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.0.0-rc.0': - resolution: {integrity: sha512-7/FLgOqrrQAxOVQrxfr3bGgZ83pSCmc2S3TXBILnHw0S8qLxmFjhSjH5ogaDmjrES/PSYMaX1FsP5Af88hp7Gw==} + '@next/swc-linux-x64-musl@15.0.0-rc.1': + resolution: {integrity: sha512-eNiz8+boojGEVkTJYOC1BzuT2Wl9Nqoz91rHkZityAW2kd4KpeMEuxXj5Y+IPoRQXRFDfOi39hw7qpj+Nt0LXg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.2.3': - resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==} + '@next/swc-win32-arm64-msvc@14.2.15': + resolution: {integrity: sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@15.0.0-rc.0': - resolution: {integrity: sha512-5wcqoYHh7hbdghjH6Xs3i5/f0ov+i1Xw2E3O+BzZNESYVLgCM1q7KJu5gdGFoXA2gz5XaKF/VBcYHikLzyjgmA==} + '@next/swc-win32-arm64-msvc@15.0.0-rc.1': + resolution: {integrity: sha512-KcH0BWiFqinwfb8dBbIvAT51oWmZqiGHoPOP8yjkEzJK2pVxwKm4mk4WM4Y17EgCSmfAtdT0xklM9bcAm3cD3Q==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.3': - resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-ia32-msvc@15.0.0-rc.0': - resolution: {integrity: sha512-/hqOmYRTvtBPToE4Dbl9n+sLYU7DPd52R+TtjIrrEzTMgFo2/d7un3sD7GKmb2OwOj/ExyGv6Bd/JzytBVxXlw==} + '@next/swc-win32-ia32-msvc@14.2.15': + resolution: {integrity: sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@next/swc-win32-x64-msvc@14.2.3': - resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==} + '@next/swc-win32-x64-msvc@14.2.15': + resolution: {integrity: sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@15.0.0-rc.0': - resolution: {integrity: sha512-2Jly5nShvCUzzngP3RzdQ3JcuEcHcnIEvkvZDCXqFAK+bWks4+qOkEUO1QIAERQ99J5J9/1AN/8zFBme3Mm57A==} + '@next/swc-win32-x64-msvc@15.0.0-rc.1': + resolution: {integrity: sha512-mkw4njN+kXYJo1/+V3BxogTwVXRDdHzxBO9gTEEZzZVnxXTdD5TMiPPQuH5hdkZxdcx3O0qhob3j7wdH7gaZ2A==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@next/third-parties@14.2.1': - resolution: {integrity: sha512-iHVq3uHT1BLR4O8LXJ/AJeRCATnsxWNq5S223BYhrQMceMUr/5TtKIroQwJpXrbwxkOr7SFX72mZqPTXxd/TnQ==} + '@next/third-parties@14.2.15': + resolution: {integrity: sha512-15CvipE1p1GtlzVfbDfXPrAGIhzJJe75Yy6+GIBRTd36lu95BegRsUJwCxJYoKz47Q09stcU2gJDMduMGqrikw==} peerDependencies: next: ^13.0.0 || ^14.0.0 react: ^18.2.0 @@ -3755,9 +3791,6 @@ packages: engines: {node: '>=8.0.0'} deprecated: Deprecated in favor of @oclif/core - '@oddbird/css-anchor-positioning@0.0.5': - resolution: {integrity: sha512-/6hojpY9k3PxW8h235QhfoadB7nbMCTCJ16EXGO7rpJ70lzCb/rU3XwRejdX+JWCncocAzUvuZ6VjyAF86Rq4w==} - '@opentelemetry/api@1.7.0': resolution: {integrity: sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==} engines: {node: '>=8.0.0'} @@ -3811,14 +3844,8 @@ packages: '@pandacss/types@0.22.1': resolution: {integrity: sha512-WZCQrTa5wlenBStlu0gntKGi4dWA96LCft1oEqdh2u6VPK0sEfqk0wjyJGps/YN3pNjNKiQW3b4p1Wx+RshlYA==} - '@panva/hkdf@1.1.1': - resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} - - '@parcel/watcher-android-arm64@2.4.0': - resolution: {integrity: sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] + '@panva/hkdf@1.2.1': + resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} '@parcel/watcher-android-arm64@2.4.1': resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} @@ -3826,154 +3853,78 @@ packages: cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.4.0': - resolution: {integrity: sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - '@parcel/watcher-darwin-arm64@2.4.1': resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.4.0': - resolution: {integrity: sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - '@parcel/watcher-darwin-x64@2.4.1': resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.4.0': - resolution: {integrity: sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - '@parcel/watcher-freebsd-x64@2.4.1': resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.4.0': - resolution: {integrity: sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - '@parcel/watcher-linux-arm-glibc@2.4.1': resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.4.0': - resolution: {integrity: sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.4.1': resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.4.0': - resolution: {integrity: sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - '@parcel/watcher-linux-arm64-musl@2.4.1': resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.4.0': - resolution: {integrity: sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - '@parcel/watcher-linux-x64-glibc@2.4.1': resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.4.0': - resolution: {integrity: sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - '@parcel/watcher-linux-x64-musl@2.4.1': resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-wasm@2.3.0': - resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm - '@parcel/watcher-wasm@2.4.1': resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} engines: {node: '>= 10.0.0'} bundledDependencies: - napi-wasm - '@parcel/watcher-win32-arm64@2.4.0': - resolution: {integrity: sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - '@parcel/watcher-win32-arm64@2.4.1': resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.4.0': - resolution: {integrity: sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - '@parcel/watcher-win32-ia32@2.4.1': resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.4.0': - resolution: {integrity: sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - '@parcel/watcher-win32-x64@2.4.1': resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.4.0': - resolution: {integrity: sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==} - engines: {node: '>= 10.0.0'} - '@parcel/watcher@2.4.1': resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} engines: {node: '>= 10.0.0'} @@ -4005,6 +3956,12 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@playwright/test@1.40.0': + resolution: {integrity: sha512-PdW+kn4eV99iP5gxWNSDQCbhMaDVej+RXL5xr6t04nbKLCBwYtA046t7ofoczHOm8u6c+45hpDKQVZqtqwkeQg==} + engines: {node: '>=16'} + deprecated: Please update to the latest version of Playwright to test up-to-date browsers. + hasBin: true + '@playwright/test@1.41.2': resolution: {integrity: sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==} engines: {node: '>=16'} @@ -4013,9 +3970,6 @@ packages: '@polka/url@1.0.0-next.24': resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} - '@popperjs/core@2.11.8': - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@preact/preset-vite@2.8.1': resolution: {integrity: sha512-a9KV4opdj17X2gOFuGup0aE+sXYABX/tJi/QDptOrleX4FlnoZgDWvz45tHOdVfrZX+3uvVsIYPHxRsTerkDNA==} peerDependencies: @@ -4045,59 +3999,35 @@ packages: peerDependencies: prettier: ^3.0.0 - '@prisma/client@5.8.1': - resolution: {integrity: sha512-xQtMPfbIwLlbm0VVIVQY2yqQVOxPwRQhvIp7Z3m2900g1bu/zRHKhYZJQWELqmjl6d8YwBy0K2NvMqh47v1ubw==} - engines: {node: '>=16.13'} - peerDependencies: - prisma: '*' - peerDependenciesMeta: - prisma: - optional: true - - '@prisma/client@5.9.1': - resolution: {integrity: sha512-caSOnG4kxcSkhqC/2ShV7rEoWwd3XrftokxJqOCMVvia4NYV/TPtJlS9C2os3Igxw/Qyxumj9GBQzcStzECvtQ==} - engines: {node: '>=16.13'} + '@prisma/client@6.0.0': + resolution: {integrity: sha512-tOBhG35ozqZ/5Y6B0TNOa6cwULUW8ijXqBXcgb12bfozqf6eGMyGs+jphywCsj6uojv5lAZZnxVSoLMVebIP+g==} + engines: {node: '>=18.18'} peerDependencies: prisma: '*' peerDependenciesMeta: prisma: optional: true - '@prisma/debug@5.8.1': - resolution: {integrity: sha512-tjuw7eA0Us3T42jx9AmAgL58rzwzpFGYc3R7Y4Ip75EBYrKMBA1YihuWMcBC92ILmjlQ/u3p8VxcIE0hr+fZfg==} - - '@prisma/debug@5.9.1': - resolution: {integrity: sha512-yAHFSFCg8KVoL0oRUno3m60GAjsUKYUDkQ+9BA2X2JfVR3kRVSJFc/GpQ2fSORi4pSHZR9orfM4UC9OVXIFFTA==} + '@prisma/debug@6.0.0': + resolution: {integrity: sha512-eUjoNThlDXdyJ1iQ2d7U6aTVwm59EwvODb5zFVNJEokNoSiQmiYWNzZIwZyDmZ+j51j42/0iTaHIJ4/aZPKFRg==} - '@prisma/engines-version@5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2': - resolution: {integrity: sha512-f5C3JM3l9yhGr3cr4FMqWloFaSCpNpMi58Om22rjD2DOz3owci2mFdFXMgnAGazFPKrCbbEhcxdsRfspEYRoFQ==} + '@prisma/engines-version@5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e': + resolution: {integrity: sha512-JmIds0Q2/vsOmnuTJYxY4LE+sajqjYKhLtdOT6y4imojqv5d/aeVEfbBGC74t8Be1uSp0OP8lxIj2OqoKbLsfQ==} - '@prisma/engines-version@5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64': - resolution: {integrity: sha512-HFl7275yF0FWbdcNvcSRbbu9JCBSLMcurYwvWc8WGDnpu7APxQo2ONtZrUggU3WxLxUJ2uBX+0GOFIcJeVeOOQ==} + '@prisma/engines@6.0.0': + resolution: {integrity: sha512-ZZCVP3q22ifN6Ex6C8RIcTDBlRtMJS2H1ljV0knCiWNGArvvkEbE88W3uDdq/l4+UvyvHpGzdf9ZsCWSQR7ZQQ==} - '@prisma/engines@5.8.1': - resolution: {integrity: sha512-TJgYLRrZr56uhqcXO4GmP5be+zjCIHtLDK20Cnfg+o9d905hsN065QOL+3Z0zQAy6YD31Ol4u2kzSfRmbJv/uA==} - - '@prisma/engines@5.9.1': - resolution: {integrity: sha512-gkdXmjxQ5jktxWNdDA5aZZ6R8rH74JkoKq6LD5mACSvxd2vbqWeWIOV0Py5wFC8vofOYShbt6XUeCIUmrOzOnQ==} - - '@prisma/extension-accelerate@0.6.3': - resolution: {integrity: sha512-KnIfqbwCNMP3t1jgw76IVCE4HspRmWxagR0L4wJS+/74BgkRHrt/9ic8ONo7dir4AGGoHyg/Ej8yN+uGXNrXeg==} + '@prisma/extension-accelerate@1.1.0': + resolution: {integrity: sha512-sESjhBZ4ywQjAVpKzsfhxyNu+9txIM5I6M1MPBaJBq/xDlqmniIAhlwIEt9KLtO80zqPxqbZYes18zrkgYqNiQ==} engines: {node: '>=16'} peerDependencies: '@prisma/client': '>=4.16.1' - '@prisma/fetch-engine@5.8.1': - resolution: {integrity: sha512-+bgjjoSFa6uYEbAPlklfoVSStOEfcpheOjoBoNsNNSQdSzcwE2nM4Q0prun0+P8/0sCHo18JZ9xqa8gObvgOUw==} - - '@prisma/fetch-engine@5.9.1': - resolution: {integrity: sha512-l0goQOMcNVOJs1kAcwqpKq3ylvkD9F04Ioe1oJoCqmz05mw22bNAKKGWuDd3zTUoUZr97va0c/UfLNru+PDmNA==} - - '@prisma/get-platform@5.8.1': - resolution: {integrity: sha512-wnA+6HTFcY+tkykMokix9GiAkaauPC5W/gg0O5JB0J8tCTNWrqpnQ7AsaGRfkYUbeOIioh6woDjQrGTTRf1Zag==} + '@prisma/fetch-engine@6.0.0': + resolution: {integrity: sha512-j2m+iO5RDPRI7SUc7sHo8wX7SA4iTkJ+18Sxch8KinQM46YiCQD1iXKN6qU79C1Fliw5Bw/qDyTHaTsa3JMerA==} - '@prisma/get-platform@5.9.1': - resolution: {integrity: sha512-6OQsNxTyhvG+T2Ksr8FPFpuPeL4r9u0JF0OZHUBI/Uy9SS43sPyAIutt4ZEAyqWQt104ERh70EZedkHZKsnNbg==} + '@prisma/get-platform@6.0.0': + resolution: {integrity: sha512-PS6nYyIm9g8C03E4y7LknOfdCw/t2KyEJxntMPQHQZCOUgOpF82Ma60mdlOD08w90I3fjLiZZ0+MadenR3naDQ==} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -4129,172 +4059,212 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - '@radix-ui/react-accordion@1.1.2': - resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} + '@radix-ui/react-accordion@1.2.1': + resolution: {integrity: sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-collapsible@1.0.3': - resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} + '@radix-ui/react-collapsible@1.1.1': + resolution: {integrity: sha512-1///SnrfQHJEofLokyczERxQbWfCGQlQ2XsCZMucVs6it+lq9iw4vXy+uDn1edlb58cOZOWSldnfPAYcT4O/Yg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-collection@1.0.3': - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-direction@1.0.1': - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-presence@1.1.1': + resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.0.4': - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + '@radix-ui/react-roving-focus@1.1.0': + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-tabs@1.0.4': - resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} + '@radix-ui/react-tabs@1.1.1': + resolution: {integrity: sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} peerDependencies: '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@react-aria/focus@3.18.4': + resolution: {integrity: sha512-91J35077w9UNaMK1cpMUEFRkNNz0uZjnSwiyBCFuRdaVuivO53wNC9XtWSDNDdcO5cGy87vfJRVAiyoCn/mjqA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/interactions@3.22.4': + resolution: {integrity: sha512-E0vsgtpItmknq/MJELqYJwib+YN18Qag8nroqwjk1qOnBa9ROIkUhWJerLi1qs5diXq9LHKehZDXRlwPvdEFww==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/ssr@3.9.6': + resolution: {integrity: sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/utils@3.25.3': + resolution: {integrity: sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/utils@3.10.4': + resolution: {integrity: sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/shared@3.25.0': + resolution: {integrity: sha512-OZSyhzU6vTdW3eV/mz5i6hQwQUhkRs7xwY2d1aqPvTdMe0+2cY7Fwp45PAiwYLEj73i9ro2FxF9qC4DvHGSCgQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@redis/bloom@1.2.0': resolution: {integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==} peerDependencies: @@ -4345,51 +4315,26 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.9.6': - resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm64@4.18.0': resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.9.6': - resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} - cpu: [arm64] - os: [android] - '@rollup/rollup-darwin-arm64@4.18.0': resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.9.6': - resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.18.0': resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.9.6': - resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.9.6': - resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} - cpu: [arm] - os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.18.0': resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} cpu: [arm] @@ -4400,21 +4345,11 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.9.6': - resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} - cpu: [arm64] - os: [linux] - '@rollup/rollup-linux-arm64-musl@4.18.0': resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.9.6': - resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} - cpu: [arm64] - os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} cpu: [ppc64] @@ -4425,11 +4360,6 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.9.6': - resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} - cpu: [riscv64] - os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.18.0': resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} cpu: [s390x] @@ -4440,51 +4370,26 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.9.6': - resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} - cpu: [x64] - os: [linux] - '@rollup/rollup-linux-x64-musl@4.18.0': resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.9.6': - resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} - cpu: [x64] - os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.18.0': resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.9.6': - resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.18.0': resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.9.6': - resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.18.0': resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.9.6': - resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} - cpu: [x64] - os: [win32] - '@rushstack/node-core-library@4.0.2': resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} peerDependencies: @@ -4513,12 +4418,24 @@ packages: '@shikijs/core@1.2.4': resolution: {integrity: sha512-ClaUWpt8oTzjcF0MM1P81AeWyzc1sNSJlAjMG80CbwqbFqXSNz+NpQVUC0icobt3sZn43Sn27M4pHD/Jmp3zHw==} - '@shikijs/core@1.3.0': - resolution: {integrity: sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==} + '@shikijs/core@1.22.0': + resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} + + '@shikijs/engine-javascript@1.22.0': + resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} + + '@shikijs/engine-oniguruma@1.22.0': + resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} '@shikijs/twoslash@1.2.4': resolution: {integrity: sha512-4F2gNlCFN9HY0jV3J/IBfqkI7w2HBwycwUBx9fLYGYxzbfu0gYRJdQYWtvJC/sG2rYTYlJrS5BpWdXYoMHwbXw==} + '@shikijs/types@1.22.0': + resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} + + '@shikijs/vscode-textmate@9.3.0': + resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} + '@sideway/address@4.1.4': resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} @@ -4531,10 +4448,6 @@ packages: '@simplewebauthn/browser@9.0.1': resolution: {integrity: sha512-wD2WpbkaEP4170s13/HUxPcAV5y4ZXaKo1TfNklS5zDefPinIgXOpgz1kpEvobAsaLPa2KeH7AKKX/od1mrBJw==} - '@simplewebauthn/server@9.0.2': - resolution: {integrity: sha512-aaWA+qVOU4byk5IDb/l+M1+7dmrAJhTb4ISJHucpsgRQcMMEes76tbGIqO2JQuA7N50tc/OBrnGKBjoKYG1kSw==} - engines: {node: '>=16.0.0'} - '@simplewebauthn/server@9.0.3': resolution: {integrity: sha512-FMZieoBosrVLFxCnxPFD9Enhd1U7D8nidVDT4MsHc6l4fdVcjoeHjDueeXCloO1k5O/fZg1fsSXXPKbY2XTzDA==} engines: {node: '>=16.0.0'} @@ -4549,95 +4462,189 @@ packages: resolution: {integrity: sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==} engines: {node: '>=14.0.0'} + '@smithy/abort-controller@2.2.0': + resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} + engines: {node: '>=14.0.0'} + '@smithy/config-resolver@2.1.1': resolution: {integrity: sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==} engines: {node: '>=14.0.0'} + '@smithy/config-resolver@2.2.0': + resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} + engines: {node: '>=14.0.0'} + '@smithy/core@1.3.1': resolution: {integrity: sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==} engines: {node: '>=14.0.0'} + '@smithy/core@1.4.2': + resolution: {integrity: sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==} + engines: {node: '>=14.0.0'} + '@smithy/credential-provider-imds@2.2.1': resolution: {integrity: sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==} engines: {node: '>=14.0.0'} + '@smithy/credential-provider-imds@2.3.0': + resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} + engines: {node: '>=14.0.0'} + '@smithy/eventstream-codec@2.1.1': resolution: {integrity: sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==} '@smithy/fetch-http-handler@2.4.1': resolution: {integrity: sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==} + '@smithy/fetch-http-handler@2.5.0': + resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} + '@smithy/hash-node@2.1.1': resolution: {integrity: sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==} engines: {node: '>=14.0.0'} + '@smithy/hash-node@2.2.0': + resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} + engines: {node: '>=14.0.0'} + '@smithy/invalid-dependency@2.1.1': resolution: {integrity: sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==} + '@smithy/invalid-dependency@2.2.0': + resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} + '@smithy/is-array-buffer@2.1.1': resolution: {integrity: sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==} engines: {node: '>=14.0.0'} + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + '@smithy/middleware-content-length@2.1.1': resolution: {integrity: sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==} engines: {node: '>=14.0.0'} + '@smithy/middleware-content-length@2.2.0': + resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} + engines: {node: '>=14.0.0'} + '@smithy/middleware-endpoint@2.4.1': resolution: {integrity: sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==} engines: {node: '>=14.0.0'} + '@smithy/middleware-endpoint@2.5.1': + resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} + engines: {node: '>=14.0.0'} + '@smithy/middleware-retry@2.1.1': resolution: {integrity: sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==} engines: {node: '>=14.0.0'} + '@smithy/middleware-retry@2.3.1': + resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} + engines: {node: '>=14.0.0'} + '@smithy/middleware-serde@2.1.1': resolution: {integrity: sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==} engines: {node: '>=14.0.0'} + '@smithy/middleware-serde@2.3.0': + resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} + engines: {node: '>=14.0.0'} + '@smithy/middleware-stack@2.1.1': resolution: {integrity: sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==} engines: {node: '>=14.0.0'} + '@smithy/middleware-stack@2.2.0': + resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} + engines: {node: '>=14.0.0'} + '@smithy/node-config-provider@2.2.1': resolution: {integrity: sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==} engines: {node: '>=14.0.0'} + '@smithy/node-config-provider@2.3.0': + resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} + engines: {node: '>=14.0.0'} + '@smithy/node-http-handler@2.3.1': resolution: {integrity: sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==} engines: {node: '>=14.0.0'} + '@smithy/node-http-handler@2.5.0': + resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} + engines: {node: '>=14.0.0'} + '@smithy/property-provider@2.1.1': resolution: {integrity: sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==} engines: {node: '>=14.0.0'} + '@smithy/property-provider@2.2.0': + resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} + engines: {node: '>=14.0.0'} + '@smithy/protocol-http@3.1.1': resolution: {integrity: sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==} engines: {node: '>=14.0.0'} + '@smithy/protocol-http@3.3.0': + resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} + engines: {node: '>=14.0.0'} + '@smithy/querystring-builder@2.1.1': resolution: {integrity: sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==} engines: {node: '>=14.0.0'} + '@smithy/querystring-builder@2.2.0': + resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} + engines: {node: '>=14.0.0'} + '@smithy/querystring-parser@2.1.1': resolution: {integrity: sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==} engines: {node: '>=14.0.0'} + '@smithy/querystring-parser@2.2.0': + resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} + engines: {node: '>=14.0.0'} + '@smithy/service-error-classification@2.1.1': resolution: {integrity: sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==} engines: {node: '>=14.0.0'} + '@smithy/service-error-classification@2.1.5': + resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} + engines: {node: '>=14.0.0'} + '@smithy/shared-ini-file-loader@2.3.1': resolution: {integrity: sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==} engines: {node: '>=14.0.0'} + '@smithy/shared-ini-file-loader@2.4.0': + resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} + engines: {node: '>=14.0.0'} + '@smithy/signature-v4@2.1.1': resolution: {integrity: sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==} engines: {node: '>=14.0.0'} + '@smithy/signature-v4@2.3.0': + resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==} + engines: {node: '>=14.0.0'} + '@smithy/smithy-client@2.3.1': resolution: {integrity: sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==} engines: {node: '>=14.0.0'} + '@smithy/smithy-client@2.5.1': + resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} + engines: {node: '>=14.0.0'} + + '@smithy/types@2.12.0': + resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} + engines: {node: '>=14.0.0'} + '@smithy/types@2.9.1': resolution: {integrity: sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==} engines: {node: '>=14.0.0'} @@ -4645,61 +4652,119 @@ packages: '@smithy/url-parser@2.1.1': resolution: {integrity: sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==} + '@smithy/url-parser@2.2.0': + resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} + '@smithy/util-base64@2.1.1': resolution: {integrity: sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==} engines: {node: '>=14.0.0'} + '@smithy/util-base64@2.3.0': + resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} + engines: {node: '>=14.0.0'} + '@smithy/util-body-length-browser@2.1.1': resolution: {integrity: sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==} + '@smithy/util-body-length-browser@2.2.0': + resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} + '@smithy/util-body-length-node@2.2.1': resolution: {integrity: sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==} engines: {node: '>=14.0.0'} + '@smithy/util-body-length-node@2.3.0': + resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} + engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@2.1.1': resolution: {integrity: sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==} engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + '@smithy/util-config-provider@2.2.1': resolution: {integrity: sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==} engines: {node: '>=14.0.0'} + '@smithy/util-config-provider@2.3.0': + resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} + engines: {node: '>=14.0.0'} + '@smithy/util-defaults-mode-browser@2.1.1': resolution: {integrity: sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==} engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-browser@2.2.1': + resolution: {integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==} + engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-node@2.1.1': resolution: {integrity: sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==} engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-node@2.3.1': + resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==} + engines: {node: '>= 10.0.0'} + '@smithy/util-endpoints@1.1.1': resolution: {integrity: sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==} engines: {node: '>= 14.0.0'} + '@smithy/util-endpoints@1.2.0': + resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==} + engines: {node: '>= 14.0.0'} + '@smithy/util-hex-encoding@2.1.1': resolution: {integrity: sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==} engines: {node: '>=14.0.0'} + '@smithy/util-hex-encoding@2.2.0': + resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} + engines: {node: '>=14.0.0'} + '@smithy/util-middleware@2.1.1': resolution: {integrity: sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==} engines: {node: '>=14.0.0'} + '@smithy/util-middleware@2.2.0': + resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} + engines: {node: '>=14.0.0'} + '@smithy/util-retry@2.1.1': resolution: {integrity: sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==} engines: {node: '>= 14.0.0'} + '@smithy/util-retry@2.2.0': + resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} + engines: {node: '>= 14.0.0'} + '@smithy/util-stream@2.1.1': resolution: {integrity: sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==} engines: {node: '>=14.0.0'} + '@smithy/util-stream@2.2.0': + resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} + engines: {node: '>=14.0.0'} + '@smithy/util-uri-escape@2.1.1': resolution: {integrity: sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==} engines: {node: '>=14.0.0'} + '@smithy/util-uri-escape@2.2.0': + resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} + engines: {node: '>=14.0.0'} + '@smithy/util-utf8@2.1.1': resolution: {integrity: sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==} engines: {node: '>=14.0.0'} + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + '@smithy/util-waiter@2.1.1': resolution: {integrity: sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA==} engines: {node: '>=14.0.0'} @@ -4744,37 +4809,37 @@ packages: peerDependencies: '@sveltejs/kit': ^1.0.0-next.587 - '@sveltejs/adapter-auto@3.1.1': - resolution: {integrity: sha512-6LeZft2Fo/4HfmLBi5CucMYmgRxgcETweQl/yQoZo/895K3S9YWYN4Sfm/IhwlIpbJp3QNvhKmwCHbsqQNYQpw==} + '@sveltejs/adapter-auto@3.2.5': + resolution: {integrity: sha512-27LR+uKccZ62lgq4N/hvyU2G+hTP9fxWEAfnZcl70HnyfAjMSsGk1z/SjAPXNCD1mVJIE7IFu3TQ8cQ/UH3c0A==} peerDependencies: '@sveltejs/kit': ^2.0.0 - '@sveltejs/kit@2.5.7': - resolution: {integrity: sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==} + '@sveltejs/kit@2.6.4': + resolution: {integrity: sha512-qfcbyWw35cy6k9sQ1GUkhuE5qj+PgPKJx3/Aa3+veooWgN0DXZXqMS2PDgpgKDXRIFj6V1KWmMZYYPOhL45lXg==} engines: {node: '>=18.13'} hasBin: true peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 - '@sveltejs/package@2.2.6': - resolution: {integrity: sha512-rhKL/96M7LCvFI2xN94qsqHtEWr/ypcMGiii3s6dRW7ADt3tiDm8UfExjRR8v5jW3Femz0+VJ0TNevxI4Q9Quw==} + '@sveltejs/package@2.3.5': + resolution: {integrity: sha512-fxWSG+pJHxWwcKltG+JoQ+P1CPO7NHVuZD1Gchi/1mNN6C60yD/voHeeXlqr0HHGkvIrpAjRIHLjsavI77Qsiw==} engines: {node: ^16.14 || >=18} hasBin: true peerDependencies: svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 - '@sveltejs/vite-plugin-svelte-inspector@2.0.0': - resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} + '@sveltejs/vite-plugin-svelte-inspector@2.1.0': + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} peerDependencies: '@sveltejs/vite-plugin-svelte': ^3.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 - '@sveltejs/vite-plugin-svelte@3.0.1': - resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==} + '@sveltejs/vite-plugin-svelte@3.1.2': + resolution: {integrity: sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 @@ -4852,37 +4917,37 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.11': - resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - '@swc/types@0.1.5': - resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} + '@swc/types@0.1.12': + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} '@tanem/svg-injector@10.1.68': resolution: {integrity: sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==} - '@tanstack/react-virtual@3.1.3': - resolution: {integrity: sha512-YCzcbF/Ws/uZ0q3Z6fagH+JVhx4JLvbSflgldMgLsuvB8aXjZLLb3HvrEVxY480F9wFlBiXlvQxOyXb5ENPrNA==} + '@tanstack/react-virtual@3.10.7': + resolution: {integrity: sha512-yeP+M0G8D+15ZFPivpuQ5hoM4Fa/PzERBx8P8EGcfEsXX3JOb9G9UUrqc47ZXAxvK+YqzM9T5qlJUYUFOwCZJw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@tanstack/virtual-core@3.1.3': - resolution: {integrity: sha512-Y5B4EYyv1j9V8LzeAoOVeTg0LI7Fo5InYKgAjkY1Pu9GjtUwX/EKxNcU7ng3sKr99WEf+bPTcktAeybyMOYo+g==} + '@tanstack/virtual-core@3.10.7': + resolution: {integrity: sha512-ND5dfsU0n9F4gROzwNNDJmg6y8n9pI8YWxtgbfJ5UcNn7Hx+MxEXtXcQ189tS7sh8pmCObgz2qSiyRKTZxT4dg==} '@tediousjs/connection-string@0.3.0': resolution: {integrity: sha512-d/keJiNKfpHo+GmSB8QcsAwBx8h+V1UbdozA5TD+eSLXprNY53JAYub47J9evsSKWDdNG5uVj0FiMozLKuzowQ==} - '@theguild/remark-mermaid@0.0.5': - resolution: {integrity: sha512-e+ZIyJkEv9jabI4m7q29wZtZv+2iwPGsXJ2d46Zi7e+QcFudiyuqhLhHG/3gX3ZEB+hxTch+fpItyMS8jwbIcw==} + '@theguild/remark-mermaid@0.1.3': + resolution: {integrity: sha512-2FjVlaaKXK7Zj7UJAgOVTyaahn/3/EAfqYhyXg0BfDBVUl+lXcoIWRaxzqfnDr2rv8ax6GsC5mNh6hAaT86PDw==} peerDependencies: react: ^18.2.0 - '@theguild/remark-npm2yarn@0.3.0': - resolution: {integrity: sha512-Fofw+9airYgjBd9G6PiHHCrptjyUybQ50JH9/5o9LCH54kggJ7stpCofzHjICB8L7VQbQ1Gwu23P/3CMVY1R4Q==} + '@theguild/remark-npm2yarn@0.3.2': + resolution: {integrity: sha512-H9T/GOuS/+4H7AY1cfD5DJIIIcGIIw1zMCB8OeTgXk7azJULsnuOurZ/CR54rvuTD+Krx0MVQccaUCvCWfP+vw==} '@tootallnate/once@1.1.2': resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} @@ -4953,18 +5018,6 @@ packages: '@types/cookiejar@2.1.5': resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} - '@types/css-tree@2.3.7': - resolution: {integrity: sha512-LUlutQBpR2TgqZJdvXCPOx9EME7a4PHSEo2Y2c8POFpj1E9a6V94PUZNwjVdfHWyb8RQZoNHTYOKs980+sOi+g==} - - '@types/d3-scale-chromatic@3.0.3': - resolution: {integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==} - - '@types/d3-scale@4.0.8': - resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} - - '@types/d3-time@3.0.3': - resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} - '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -4986,11 +5039,11 @@ packages: '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - '@types/google.maps@3.55.7': - resolution: {integrity: sha512-SlWFx0vo7RSAOC63+PTz8FeqLDaRYs7PrS/L0bZSKswxIN5TnCuckbeIwZpgD/S+DWalPteXfDbg5JsUER5Cyw==} + '@types/google.maps@3.58.1': + resolution: {integrity: sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==} - '@types/hast@2.3.9': - resolution: {integrity: sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw==} + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -5037,8 +5090,8 @@ packages: '@types/mdast@4.0.3': resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} - '@types/mdx@2.0.10': - resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} @@ -5064,8 +5117,8 @@ packages: '@types/mute-stream@0.0.4': resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} - '@types/nlcst@1.0.4': - resolution: {integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==} + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} @@ -5076,12 +5129,12 @@ packages: '@types/node@18.11.10': resolution: {integrity: sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==} - '@types/node@20.11.7': - resolution: {integrity: sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A==} - '@types/node@20.12.7': resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + '@types/node@22.7.5': + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@types/nodemailer@6.4.6': resolution: {integrity: sha512-pD6fL5GQtUKvD2WnPmg5bC2e8kWCAPDwMPmHe/ohQbW+Dy0EcHgZ2oCSuPlWNqk74LS5BVMig1SymQbFMPPK3w==} @@ -5160,6 +5213,9 @@ packages: '@types/qs@6.9.11': resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + '@types/qs@6.9.16': + resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} + '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -5169,9 +5225,6 @@ packages: '@types/react@18.0.37': resolution: {integrity: sha512-4yaZZtkRN3ZIQD3KSEwkfcik8s0SWV+82dlJot1AbGYHCzJkWP3ENBY6wYeDRmKZ6HkrgoGAmR2HqdwYGp6OEw==} - '@types/react@18.2.48': - resolution: {integrity: sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==} - '@types/react@18.2.78': resolution: {integrity: sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==} @@ -5194,8 +5247,8 @@ packages: '@types/serve-static@1.15.5': resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} - '@types/set-cookie-parser@2.4.7': - resolution: {integrity: sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==} + '@types/set-cookie-parser@2.4.10': + resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} '@types/stoppable@1.1.3': resolution: {integrity: sha512-7wGKIBJGE4ZxFjk9NkjAxZMLlIXroETqP1FJCdoSvKmEznwmBxQFmTB1dsCkAvVcNemuSZM5qkkd9HE/NL2JTw==} @@ -5212,9 +5265,15 @@ packages: '@types/unist@2.0.10': resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/uuid@8.3.4': resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} @@ -5227,15 +5286,15 @@ packages: '@types/whatwg-url@11.0.4': resolution: {integrity: sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==} - '@types/whatwg-url@8.2.2': - resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} - '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} '@types/ws@8.5.10': resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + '@typescript-eslint/eslint-plugin@6.19.1': resolution: {integrity: sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -5421,8 +5480,8 @@ packages: '@upstash/redis@1.28.2': resolution: {integrity: sha512-e4HmmCji6kE6UnriU92sAVGLQcRYAB4fXSPXls08cjW7zdE/wFaDfhAGi1/T4/wUN50bAy/lpHwW4bMkI2EAcw==} - '@vercel/analytics@1.2.2': - resolution: {integrity: sha512-X0rctVWkQV1e5Y300ehVNqpOfSOufo7ieA5PIdna8yX/U7Vjz0GFsGf4qvAhxV02uQ2CVt7GYcrFfddXXK2Y4A==} + '@vercel/analytics@1.3.1': + resolution: {integrity: sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==} peerDependencies: next: '>= 13' react: ^18 || ^19 @@ -5473,14 +5532,20 @@ packages: '@vue/compiler-core@3.4.21': resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + '@vue/compiler-core@3.5.12': + resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} + '@vue/compiler-dom@3.4.21': resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} - '@vue/compiler-sfc@3.4.21': - resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + '@vue/compiler-dom@3.5.12': + resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} - '@vue/compiler-ssr@3.4.21': - resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + '@vue/compiler-sfc@3.5.12': + resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==} + + '@vue/compiler-ssr@3.5.12': + resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} '@vue/language-core@1.8.27': resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} @@ -5493,6 +5558,9 @@ packages: '@vue/shared@3.4.21': resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + '@vue/shared@3.5.12': + resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} + '@whatwg-node/events@0.0.3': resolution: {integrity: sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==} @@ -5937,11 +6005,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} @@ -5971,13 +6034,13 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - algoliasearch-helper@3.18.0: - resolution: {integrity: sha512-ZXvA8r6VG46V343jnIE7Tei8Xr0/9N8YhD27joC0BKxeogQyvNu7O37i510wA7FnrDjoa/tFhK90WUaBlkaqnw==} + algoliasearch-helper@3.22.5: + resolution: {integrity: sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==} peerDependencies: algoliasearch: '>= 3.1 < 6' - algoliasearch@4.23.3: - resolution: {integrity: sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==} + algoliasearch@4.24.0: + resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -6177,8 +6240,8 @@ packages: peerDependencies: postcss: ^8.1.0 - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -6291,12 +6354,8 @@ packages: bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} boolbase@1.0.0: @@ -6323,25 +6382,25 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} - browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - bson@4.7.2: - resolution: {integrity: sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==} - engines: {node: '>=6.9.0'} - - bson@6.2.0: - resolution: {integrity: sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==} + bson@6.8.0: + resolution: {integrity: sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==} engines: {node: '>=16.20.1'} btoa-lite@1.0.0: @@ -6396,8 +6455,9 @@ packages: resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} engines: {node: '>= 10'} - call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -6425,15 +6485,12 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001580: - resolution: {integrity: sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA==} - - caniuse-lite@1.0.30001594: - resolution: {integrity: sha512-VblSX6nYqyJVs8DKFMldE2IVCJjZ225LW00ydtUWwh5hk9IfkTOffO6r8gJNsH0qqqeAF8KrbMYA2VEwTlGW5g==} - caniuse-lite@1.0.30001609: resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} + caniuse-lite@1.0.30001668: + resolution: {integrity: sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==} + capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -6441,13 +6498,6 @@ packages: resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} hasBin: true - cbor-extract@2.2.0: - resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} - hasBin: true - - cbor-x@1.5.8: - resolution: {integrity: sha512-gc3bHBsvG6GClCY6c0/iip+ghlqizkVp+TtaL927lwvP4VP9xBdi1HmqPR5uj/Mj/0TOlngMkIYa25wKg+VNrQ==} - ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -6494,14 +6544,22 @@ packages: check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.0.3: + resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -6513,9 +6571,6 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - citty@0.1.5: - resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==} - citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} @@ -6735,6 +6790,9 @@ packages: confbox@0.1.7: resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} @@ -6778,10 +6836,6 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} @@ -6868,8 +6922,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-utils@4.0.1: - resolution: {integrity: sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==} + cssnano-utils@4.0.2: + resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -6900,8 +6954,8 @@ packages: peerDependencies: cytoscape: ^3.2.0 - cytoscape@3.28.1: - resolution: {integrity: sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==} + cytoscape@3.30.2: + resolution: {integrity: sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==} engines: {node: '>=0.10'} d3-array@2.12.1: @@ -7039,8 +7093,8 @@ packages: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} - d3@7.8.5: - resolution: {integrity: sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==} + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} engines: {node: '>=12'} dagre-d3-es@7.0.10: @@ -7095,6 +7149,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -7143,8 +7206,8 @@ packages: resolution: {integrity: sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==} engines: {node: '>=6'} - define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} define-lazy-prop@2.0.0: @@ -7188,9 +7251,6 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destr@2.0.2: - resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==} - destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} @@ -7215,8 +7275,8 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - devalue@5.0.0: - resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} + devalue@5.1.1: + resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -7267,8 +7327,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.0.8: - resolution: {integrity: sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ==} + dompurify@3.1.6: + resolution: {integrity: sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==} domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} @@ -7402,9 +7462,6 @@ packages: duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} - duplexify@4.1.3: resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} @@ -7427,14 +7484,11 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.4.647: - resolution: {integrity: sha512-Z/fTNGwc45WrYQhPaEcz5tAJuZZ8G7S/DBnhS6Kgp4BxnS40Z/HqlJ0hHg3Z79IGVzuVartIlTcjw/cQbPLgOw==} - electron-to-chromium@1.4.693: resolution: {integrity: sha512-/if4Ueg0GUQlhCrW2ZlXwDAm40ipuKo+OgeHInlL8sbjt+hzISxZK949fZeJaVsheamrzANXvw1zQTvbxTvSHw==} - elkjs@0.8.2: - resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} + electron-to-chromium@1.5.36: + resolution: {integrity: sha512-HYTX8tKge/VNp6FGO+f/uVDmUkq+cEfcxYhKf15Akc4M5yxt5YmorwlAitKWjWhWQnKcDRBAQKXkhqqXMqcrjw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -7446,6 +7500,10 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + encoding-down@6.3.0: resolution: {integrity: sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==} engines: {node: '>=6'} @@ -7488,6 +7546,14 @@ packages: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + es-iterator-helpers@1.0.15: resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} @@ -7534,8 +7600,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.20.1: - resolution: {integrity: sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==} + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} hasBin: true @@ -7548,6 +7614,10 @@ packages: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -7642,6 +7712,7 @@ packages: eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true eslint@9.9.1: @@ -7772,12 +7843,8 @@ packages: express-basic-auth@1.2.1: resolution: {integrity: sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==} - express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} - engines: {node: '>= 0.10.0'} - - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + express@4.20.0: + resolution: {integrity: sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==} engines: {node: '>= 0.10.0'} extend-shallow@2.0.1: @@ -7853,6 +7920,7 @@ packages: faunadb@4.8.0: resolution: {integrity: sha512-pjl5WUYQ8GqM4ESk3mv0RXfxtQMHWb92XWkxjf3nWiAkf2HVtsENfTbyGPunzw4zDbdhn9aQSSxbwahaLLDR7Q==} + deprecated: 'Fauna is decommissioning FQL v4. This driver is not compatible with FQL v10, the latest version. Fauna accounts created after August 21, 2024 must use FQL v10. Ensure you migrate existing projects to the official v10 driver by the v4 EOL date: https://github.com/fauna/fauna-js.' faye-websocket@0.11.4: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} @@ -7867,6 +7935,14 @@ packages: fbjs@3.0.5: resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + fdir@6.4.0: + resolution: {integrity: sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -7899,14 +7975,18 @@ packages: filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - filesize@10.1.0: - resolution: {integrity: sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==} + filesize@10.1.6: + resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} engines: {node: '>= 10.4.0'} fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + finalhandler@1.1.2: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} @@ -7951,9 +8031,6 @@ packages: focus-trap@7.5.2: resolution: {integrity: sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==} - focus-visible@5.2.0: - resolution: {integrity: sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==} - follow-redirects@1.15.5: resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} engines: {node: '>=4.0'} @@ -8007,8 +8084,8 @@ packages: react-dom: optional: true - framer-motion@11.2.6: - resolution: {integrity: sha512-XUrjjBt57e5YoHQtjwc3eNchFBuHvIgN/cS8SC4oIaAn2J/0+bLanUxXizidJKZVeHJam/JrmMnPRjYMglVn5g==} + framer-motion@11.11.8: + resolution: {integrity: sha512-mnGQNEoz99GtFXBBPw+Ag5K4FcfP5XrXxrxHz+iE4Lmg7W3sf2gKmGuvfkZCW/yIfcdv5vJd6KiSPETH1Pw68Q==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 @@ -8122,8 +8199,9 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} @@ -8152,9 +8230,6 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - get-tsconfig@4.8.0: resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} @@ -8278,12 +8353,12 @@ packages: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} - h3@1.10.1: - resolution: {integrity: sha512-UBAUp47hmm4BB5/njB4LrEa9gpuvZj4/Qf/ynSMzO6Ku2RXaouxEfiG2E2IFnv6fxbhAkzjasDxmo6DFdEeXRg==} - h3@1.11.1: resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -8303,8 +8378,8 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} @@ -8358,6 +8433,9 @@ packages: hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + hast-util-to-html@9.0.3: + resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + hast-util-to-jsx-runtime@2.3.0: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} @@ -8392,9 +8470,6 @@ packages: header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} - heap@0.2.7: - resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} - hexoid@1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} @@ -8527,10 +8602,6 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} - ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -8564,8 +8635,8 @@ packages: import-meta-resolve@2.2.2: resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} - import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -8606,11 +8677,11 @@ packages: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} - instantsearch-ui-components@0.4.0: - resolution: {integrity: sha512-Isa9Ankm89e9PUXsUto6TxYzcQpXKlWZMsKLXc//dO4i9q5JS8s0Es+c+U65jRLK2j1DiVlNx/Z6HshRIZwA8w==} + instantsearch-ui-components@0.9.0: + resolution: {integrity: sha512-ugQ+XdPx3i3Sxu+woRo6tPE0Fz/kWd4KblTUfZD1TZZBsm/8qFvcbg5dVBDvXX9v7ntoyugXCzC/XCZMzrSkig==} - instantsearch.js@4.67.0: - resolution: {integrity: sha512-RKbLBbpysAHOjOBtuSnxsYRnYydEB+Y/R/W0XMC+HZRro6FKUmLexXJR2MkVJXwuC3AG7RNC75jPx1WbVREWMA==} + instantsearch.js@4.75.0: + resolution: {integrity: sha512-sP2bCNORXb2Bu7IPZdUXmvSOA7JMzZ3iRl1sFsaBu0qP+vs7SclKs9GjkRBxHmJ8GeMfJGGjHuFEIAaiTwEVOA==} peerDependencies: algoliasearch: '>= 3.1 < 6' @@ -8629,9 +8700,6 @@ packages: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} engines: {node: '>= 0.10'} - intersection-observer@0.12.2: - resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} - invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -8948,6 +9016,10 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -8957,8 +9029,8 @@ packages: jose@4.15.4: resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} - jose@5.2.0: - resolution: {integrity: sha512-oW3PCnvyrcm1HMvGTzqjxxfnEs9EoFOFWi2HsEGhlFVOXxTE3K9GKWVMFoFw06yPUqwpvEWic1BmtUZBI/tIjw==} + jose@5.9.6: + resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} @@ -9027,6 +9099,9 @@ packages: jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -9134,6 +9209,10 @@ packages: resolution: {integrity: sha512-+7eaTJNUYm2yRq1x+lEOZc+78TO35dTZ9b0dh49+Z9CTt2byMSbMiOKpwPlOyCAaHD4kILkAYWYZNywFlmBwRA==} engines: {node: '>=14.0.0'} + langium@3.0.0: + resolution: {integrity: sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==} + engines: {node: '>=16.0.0'} + layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} @@ -9143,6 +9222,60 @@ packages: leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + lefthook-darwin-arm64@1.7.15: + resolution: {integrity: sha512-o8JgCnLM7UgF9g0MwarHJFoj6aVSSkUInHpsQZegV1c7CVQY/LIXgSeAWRb9XBvuUjByJ/HiHFMp9/hAALTwxQ==} + cpu: [arm64] + os: [darwin] + + lefthook-darwin-x64@1.7.15: + resolution: {integrity: sha512-nrdoex0icmXYl7AAvG7WtfEzjQtX/kWvM88jPu/gijH6VhAjp110Y8VScB7rWOcApb5kNNeqd1nKMAFgZ8KhAg==} + cpu: [x64] + os: [darwin] + + lefthook-freebsd-arm64@1.7.15: + resolution: {integrity: sha512-zl1TPynklJZZ/YsWb2H0gfErQbey318i2W85wIKGEk8kC2UzOgYTuPffnfi7kANei9ntZnhvGgilc6tqYOPuGQ==} + cpu: [arm64] + os: [freebsd] + + lefthook-freebsd-x64@1.7.15: + resolution: {integrity: sha512-/gKPwhWhZ3Q/efGs73/qw6nyR4WCT74oSTgn8wabAJO5+T/2FXTKzo7IiKkQmScmY5OcnD/0teJbJZ17VWSSOg==} + cpu: [x64] + os: [freebsd] + + lefthook-linux-arm64@1.7.15: + resolution: {integrity: sha512-re2f8WmYw19n8ojit0rnKbERAzD1/iCpU/Y8anXOjD/ROw/cpSfO88uKQrUCNY9Rp4XLtkkp9oDJs3Eg7JS7vA==} + cpu: [arm64] + os: [linux] + + lefthook-linux-x64@1.7.15: + resolution: {integrity: sha512-Kj6ieTlhFGlbPDyVFeOb296MS9x/Jj5y/xTPLBM+EKbdsTJSvUYu5FdtEWfhpLyWmPfkZtULHcTQE1hoo9Q4Cg==} + cpu: [x64] + os: [linux] + + lefthook-openbsd-arm64@1.7.15: + resolution: {integrity: sha512-85amE23mJ4BC9OThLkt+QCeVwue2Cr0ezN9LSwP0h8+royyj7YRcSu0VM/Et3B9LO50T2bpdI9norOqTcPZ9yA==} + cpu: [arm64] + os: [openbsd] + + lefthook-openbsd-x64@1.7.15: + resolution: {integrity: sha512-vXx/PpcalFgdvqkoHLI4KTGZp0ti+VCCL7RqDTA6n+GZpxPTWEXSOz3GuwNALX93Dn6MOYQYktKtXADwy24fcA==} + cpu: [x64] + os: [openbsd] + + lefthook-windows-arm64@1.7.15: + resolution: {integrity: sha512-jPKdQOLWQLRPO3VfI3ptpmdQBBsXTwaCLKXMo/gcSyU0xE/ltPD4QqvHzTAFJo00VcKRHjv9QeH69qhENjJtjw==} + cpu: [arm64] + os: [win32] + + lefthook-windows-x64@1.7.15: + resolution: {integrity: sha512-tlkSU669+b64AsqytGy1W3au7h8kFjt5ejLhTkErJpylTqThZIHm/GI0wUmpX+ud8kekM+9j407dweAHYOQ1XA==} + cpu: [x64] + os: [win32] + + lefthook@1.7.15: + resolution: {integrity: sha512-HW2mYkhg0a3RH2t57+ZJwacJiSIuDEhsXQAaCw6iGeN7zowdUV7g5QtnRdFdPkaK2eaNFpG6Rp0GsTrl/v0gNg==} + hasBin: true + level-codec@9.0.2: resolution: {integrity: sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==} engines: {node: '>=6'} @@ -9209,6 +9342,10 @@ packages: resolution: {integrity: sha512-lvhKr7WV3NLWRbXkjn/MeKqXOAqWKU0PX9QYrvDh7fneukapj+iUQ4qgJASrQyxcCrEsClXCQiiK5W6OoYPAlA==} os: [darwin, linux, win32] + libsql@0.3.19: + resolution: {integrity: sha512-Aj5cQ5uk/6fHdmeW0TiXK42FqUlwx7ytmMLPSaUQPin5HKKKuUPD62MAbN4OEweGBBI7q1BekoEN4gPUEL6MZA==} + os: [darwin, linux, win32] + lil-fp@1.4.5: resolution: {integrity: sha512-RrMQ2dB7SDXriFPZMMHEmroaSP6lFw3QEV7FOfSkf19kvJnDzHqKMc2P9HOf5uE8fOp5YxodSrq7XxWjdeC2sw==} @@ -9229,10 +9366,6 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - listhen@1.5.6: - resolution: {integrity: sha512-gTpEJhT5L85L0bFgmu+Boqu5rP4DwDtEb4Exq5gdQUxWRwx4jbzdInZkmyLONo5EwIcQB0k7ZpWlpCDPdL77EQ==} - hasBin: true - listhen@1.7.2: resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} hasBin: true @@ -9397,14 +9530,16 @@ packages: magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} - magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} - engines: {node: '>=12'} - magicast@0.3.3: resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} @@ -9448,6 +9583,11 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + marked@13.0.3: + resolution: {integrity: sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==} + engines: {node: '>= 18'} + hasBin: true + marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} @@ -9513,6 +9653,9 @@ packages: mdast-util-to-hast@13.1.0: resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -9546,8 +9689,8 @@ packages: resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} engines: {node: '>=12.13'} - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -9556,8 +9699,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - mermaid@10.6.0: - resolution: {integrity: sha512-Hcti+Q2NiWnb2ZCijSX89Bn2i7TCUwosBdIn/d+u63Sz7y40XU6EKMctT4UX4qZuZGfKGZpfOeim2/KTrdR7aQ==} + mermaid@11.3.0: + resolution: {integrity: sha512-fFmf2gRXLtlGzug4wpIGN+rQdZ30M8IZEB1D3eZkXNqC7puhqeURBcD/9tbwXsqBO+A6Nzzo3MSSepmnw5xSeg==} meros@1.3.0: resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} @@ -9575,8 +9718,8 @@ packages: mhchemparser@4.2.1: resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==} - microdiff@1.3.2: - resolution: {integrity: sha512-pKy60S2febliZIbwdfEQKTtL5bLNxOyiRRmD400gueYl9XcHyNGxzHSlJWn9IMHwYXT0yohPYL08+bGozVk8cQ==} + microdiff@1.4.0: + resolution: {integrity: sha512-OBKBOa1VBznvLPb/3ljeJaENVe0fO0lnWl77lR4vhPlQD71UpjEoRV5P0KdQkcjbFlBu1Oy2mEUBMU3wxcBAGg==} micromark-core-commonmark@1.1.0: resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} @@ -9756,6 +9899,10 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mikro-orm@5.9.7: resolution: {integrity: sha512-0AxNDxQWk45n5N5g5q/K2tVj1/Narf4h5+1fhFc0uYAp/tOGAGvjmVK43Xy4TisEm/1VpBNOtS7FYKvh14WVOQ==} engines: {node: '>= 14.0.0'} @@ -9821,10 +9968,6 @@ packages: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -9905,11 +10048,11 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.5.0: - resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} - mlly@1.7.0: - resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + mlly@1.7.2: + resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} mnemonist@0.38.3: resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} @@ -9920,18 +10063,11 @@ packages: moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - mongodb-connection-string-url@2.6.0: - resolution: {integrity: sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==} - mongodb-connection-string-url@3.0.0: resolution: {integrity: sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==} - mongodb@4.17.2: - resolution: {integrity: sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==} - engines: {node: '>=12.9.0'} - - mongodb@6.3.0: - resolution: {integrity: sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==} + mongodb@6.9.0: + resolution: {integrity: sha512-UMopBVx1LmEUbW/QE0Hw18u583PEDVQmUmVzzBRH0o/xtE9DBRA5ZYLOjpLIa03i8FXjzvQECJcqoMvCXftTUA==} engines: {node: '>=16.20.1'} peerDependencies: '@aws-sdk/credential-providers': ^3.188.0 @@ -10018,11 +10154,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.0.7: - resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} - engines: {node: ^18 || >=20} - hasBin: true - napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} @@ -10064,8 +10195,8 @@ packages: react: ^16.8 || ^17 || ^18 react-dom: ^16.8 || ^17 || ^18 - next@14.2.3: - resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} + next@14.2.15: + resolution: {integrity: sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -10082,16 +10213,16 @@ packages: sass: optional: true - next@15.0.0-rc.0: - resolution: {integrity: sha512-IWcCvxUSCAuOK5gig4+9yiyt/dLKpIa+WT01Qcx4CBE4TtwJljyTDnCVVn64jDZ4qmSzsaEYXpb4DTI8qbk03A==} - engines: {node: '>=18.17.0'} + next@15.0.0-rc.1: + resolution: {integrity: sha512-MUoMUM7u6lh5zx1fRbze2jGESj4VIqc0dplx03wN5cLbpW3RhrVD7I3+sDW1khJxi+bayAZuGx03R5qNV9y/EA==} + engines: {node: '>=18.18.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 '@playwright/test': ^1.41.2 babel-plugin-react-compiler: '*' - react: 19.0.0-rc-f994737d14-20240522 - react-dom: 19.0.0-rc-f994737d14-20240522 + react: ^18.2.0 || 19.0.0-rc-cd22717c-20241013 + react-dom: ^18.2.0 || 19.0.0-rc-cd22717c-20241013 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': @@ -10103,24 +10234,24 @@ packages: sass: optional: true - nextra-theme-docs@3.0.0-alpha.24: - resolution: {integrity: sha512-AUuv3o1xYzGGvUP/lxxf7i++Zyycy4bH22l6T8uDVez2n0j/RDbzqmSIdL4Jh4POUd0fyxEG+BUomKXKyj3L1g==} + nextra-theme-docs@3.0.15: + resolution: {integrity: sha512-AhvmgcjFYi7aT5nRjdozqCt1hW39tqCIRKi4+pIR62ri26miB3VxREBYlCTHezcML2VLunyYIjFiiQGUan09gA==} peerDependencies: next: '>=13' - nextra: 3.0.0-alpha.24 - react: '>=16.13.1' - react-dom: '>=16.13.1' + nextra: 3.0.15 + react: '>=18' + react-dom: '>=18' - nextra@3.0.0-alpha.24: - resolution: {integrity: sha512-KScl/DQG68JBGy6gfOFNdVcrlc24YvcegGnYwUXvpCoHx2YcBUSp6FE7LeaX/C/mI4PPIMmTJuEWIjGH9DXeCQ==} + nextra@3.0.15: + resolution: {integrity: sha512-iLKFNYwq8sciXPK9RPRmgifELSA2JLgEfL5y54stq7MvXuKn44MZJNzdhkJF4MXvx1HobzYLHl3/e37/Yf2htA==} engines: {node: '>=18'} peerDependencies: next: '>=13' - react: '>=16.13.1' - react-dom: '>=16.13.1' + react: '>=18' + react-dom: '>=18' - nlcst-to-string@3.1.1: - resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -10150,9 +10281,6 @@ packages: resolution: {integrity: sha512-Ap+L9HznXAVeJj3TJ1op6M6bg5xtTq8L5CU/PJxtkhea/DrIxdTknGKIECKd/v/Lgql95iuMAYvIzBNd0pmcMg==} engines: {node: '>= 4'} - node-fetch-native@1.6.1: - resolution: {integrity: sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==} - node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} @@ -10182,10 +10310,6 @@ packages: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - node-gyp-build-optional-packages@5.1.1: - resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} - hasBin: true - node-gyp-build@4.1.1: resolution: {integrity: sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==} hasBin: true @@ -10204,6 +10328,9 @@ packages: node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + nodemailer@6.9.4: resolution: {integrity: sha512-CXjQvrQZV4+6X5wP6ZIgdehJamI63MFoYFGGPtHudWym9qaEHDNdPzaj5bfMCvxG1vhAileSWW90q7nL0N36mA==} engines: {node: '>=6.0.0'} @@ -10212,9 +10339,6 @@ packages: resolution: {integrity: sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==} engines: {node: '>=6.0.0'} - non-layered-tidy-tree-layout@2.0.2: - resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} - nopt@1.0.10: resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} hasBin: true @@ -10259,8 +10383,8 @@ packages: resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npm-to-yarn@2.1.0: - resolution: {integrity: sha512-2C1IgJLdJngq1bSER7K7CGFszRr9s2rijEwvENPEgI0eK9xlD3tNwDc0UJnRj7FIT2aydWm72jB88uVswAhXHA==} + npm-to-yarn@3.0.0: + resolution: {integrity: sha512-76YnmsbfrYp0tMsWxM0RNX0Vs+x8JxpJGu6B/jDn4lW8+laiTcKmKi9MeMh4UikO4RkJ1oqURoDy9bXJmMXS6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} npmlog@5.0.1: @@ -10281,8 +10405,8 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - oauth4webapi@2.10.4: - resolution: {integrity: sha512-DSoj8QoChzOCQlJkRmYxAJCIpnXFW32R0Uq7avyghIeB6iJq0XAblOD7pcq3mx4WEBDwMuKr0Y1qveCBleG2Xw==} + oauth4webapi@3.1.3: + resolution: {integrity: sha512-dik5wEMdFL5p3JlijYvM7wMNCgaPhblLIDCZtdXcaZp5wgu5Iwmsu7lMzgFhIDTi5d0BJo03LVoOoFQvXMeOeQ==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -10364,6 +10488,9 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} + oniguruma-to-js@0.4.3: + resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} + open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} @@ -10410,14 +10537,14 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} + p-limit@6.1.0: + resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} + engines: {node: '>=18'} + p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -10434,6 +10561,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-manager-detector@0.2.2: + resolution: {integrity: sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==} + packet-reader@1.0.0: resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} @@ -10459,8 +10589,8 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-latin@5.0.1: - resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} + parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} parse-multipart-data@1.5.0: resolution: {integrity: sha512-ck5zaMF0ydjGfejNMnlo5YU2oJ+pT+80Jb1y4ybanT27j+zbVP/jkYmCrUGsEln0Ox/hZmuvgy8Ra7AxbXP2Mw==} @@ -10502,6 +10632,9 @@ packages: path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -10537,8 +10670,8 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -10610,6 +10743,9 @@ packages: picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -10636,11 +10772,24 @@ packages: pkg-types@1.1.1: resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + + playwright-core@1.40.0: + resolution: {integrity: sha512-fvKewVJpGeca8t0ipM56jkVSU6Eo0RmFvQ/MaCQNDYm+sdvKkMBBWTE1FdeMqIdumRaXXjZChWHvIzCGM/tA/Q==} + engines: {node: '>=16'} + hasBin: true + playwright-core@1.41.2: resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} engines: {node: '>=16'} hasBin: true + playwright@1.40.0: + resolution: {integrity: sha512-gyHAgQjiDf1m34Xpwzaqb76KgfzYrhK7iih+2IzcOCoZWr/8ZqmdBw+t0RU85ZmfJMgtgAiNtBQ/KS2325INXw==} + engines: {node: '>=16'} + hasBin: true + playwright@1.41.2: resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} engines: {node: '>=16'} @@ -10650,14 +10799,20 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - postcss-discard-duplicates@6.0.2: - resolution: {integrity: sha512-U2rsj4w6pAGROCCcD13LP2eBIi1whUsXs4kgE6xkIuGfkbxCBSKhkCTWyowFd66WdVlLv0uM1euJKIgmdmZObg==} + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + postcss-discard-duplicates@6.0.3: + resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 - postcss-discard-empty@6.0.2: - resolution: {integrity: sha512-rj6pVC2dVCJrP0Y2RkYTQEbYaCf4HEm+R/2StQgJqGHxAa3+KcYslNQhcRqjLHtl/4wpzipJluaJLqBj6d5eDQ==} + postcss-discard-empty@6.0.3: + resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -10698,14 +10853,14 @@ packages: ts-node: optional: true - postcss-merge-rules@6.0.4: - resolution: {integrity: sha512-97iF3UJ5v8N1BWy38y+0l+Z8o5/9uGlEgtWic2PJPzoRrLB6Gxg8TVG93O0EK52jcLeMsywre26AUlX1YAYeHA==} + postcss-merge-rules@6.1.1: + resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 - postcss-minify-selectors@6.0.2: - resolution: {integrity: sha512-0b+m+w7OAvZejPQdN2GjsXLv5o0jqYHX3aoV0e7RBKPCsB7TYG5KKWBFhGnB/iP3213Ts8c5H4wLPLMm7z28Sg==} + postcss-minify-selectors@6.0.4: + resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -10716,14 +10871,14 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-nesting@12.0.2: - resolution: {integrity: sha512-63PpJHSeNs93S3ZUIyi+7kKx4JqOIEJ6QYtG3x+0qA4J03+4n0iwsyA1GAHyWxsHYljQS4/4ZK1o2sMi70b5wQ==} + postcss-nesting@12.1.5: + resolution: {integrity: sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 - postcss-normalize-whitespace@6.0.1: - resolution: {integrity: sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==} + postcss-normalize-whitespace@6.0.2: + resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -10740,14 +10895,14 @@ packages: peerDependencies: postcss: ^8.4.29 - postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} - engines: {node: '>=4'} - postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -10759,12 +10914,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -10863,21 +11014,21 @@ packages: pouchdb@8.0.1: resolution: {integrity: sha512-xp5S83JOQn2NAL0ZQ5CU+DI26V9/YrYuVtkXnbGEIDrYiFfj5A8gAcfbxefXb/9O+Qn4n5RaT/19+8UBSZ42sw==} - preact-render-to-string@5.2.3: - resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} + preact-render-to-string@6.5.11: + resolution: {integrity: sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==} peerDependencies: preact: '>=10' - preact@10.11.3: - resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + preact@10.24.3: + resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==} prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} hasBin: true - preferred-pm@3.1.3: - resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} + preferred-pm@3.1.4: + resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} engines: {node: '>=10'} prelude-ls@1.1.2: @@ -10954,11 +11105,6 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.3.2: - resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} - engines: {node: '>=14'} - hasBin: true - prettier@3.3.3: resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} @@ -10968,22 +11114,14 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - prism-react-renderer@2.1.0: resolution: {integrity: sha512-I5cvXHjA1PVGbGm1MsWCpvBCRrYyxEri0MC7/JbfIfYfcXAxHyO5PaUjs3A8H5GW6kJcLhTHxxMaOZZpRZD2iQ==} peerDependencies: react: '>=16.0.0' - prisma@5.8.1: - resolution: {integrity: sha512-N6CpjzECnUHZ5beeYpDzkt2rYpEdAeqXX2dweu6BoQaeYkNZrC/WJHM+5MO/uidFHTak8QhkPKBWck1o/4MD4A==} - engines: {node: '>=16.13'} - hasBin: true - - prisma@5.9.1: - resolution: {integrity: sha512-Hy/8KJZz0ELtkw4FnG9MS9rNWlXcJhf98Z2QMqi0QiVMoS8PzsBkpla0/Y5hTlob8F3HeECYphBjqmBxrluUrQ==} - engines: {node: '>=16.13'} + prisma@6.0.0: + resolution: {integrity: sha512-RX7KtbW7IoEByf7MR32JK1PkVYLVYFqeODTtiIX3cqekq1aKdsF3Eud4zp2sUShMLjvdb5Jow0LbUjRq5LVxPw==} + engines: {node: '>=18.18'} hasBin: true prismjs@1.29.0: @@ -11014,14 +11152,13 @@ packages: property-information@6.4.1: resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + proto3-json-serializer@2.0.2: resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} engines: {node: '>=14.0.0'} - protobufjs@7.2.6: - resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==} - engines: {node: '>=12.0.0'} - protobufjs@7.3.2: resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} engines: {node: '>=12.0.0'} @@ -11099,8 +11236,8 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} - qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} qs@6.9.7: @@ -11127,10 +11264,6 @@ packages: rate-limiter-flexible@2.4.2: resolution: {integrity: sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw==} - raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} - raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} @@ -11144,10 +11277,10 @@ packages: peerDependencies: react: ^18.3.1 - react-dom@19.0.0-rc-4c2e457c7c-20240522: - resolution: {integrity: sha512-HXPEwX9ibB3OSzaU03Bh6uw7QFulRzyLJM3x+3WoF2j++D9tl2PoqiN6+ctH5Nrh6X11+oxH7Eq3RqkQhbQqKw==} + react-dom@19.0.0-rc-4c58fce7-20240904: + resolution: {integrity: sha512-Qmp34cw7mUxI6J7KaFn0LkA0GfwzvLM5Yb4tkM3cjPkSpaPEw2xgRNj2NIrjnbheWNEtCK8dJBgpV90Hv/HENA==} peerDependencies: - react: 19.0.0-rc-4c2e457c7c-20240522 + react: 19.0.0-rc-4c58fce7-20240904 react-dom@19.0.0-rc-935180c7e0-20240524: resolution: {integrity: sha512-17SL+9qxiLUZnaBWr+mO3hpz5ncP5NbJp6jnbA6cFbsWNdV3p4s8iMVALIcfZF1zPIiWQeYrZQK/Z8GY3xjihg==} @@ -11176,22 +11309,22 @@ packages: peerDependencies: react: '*' - react-instantsearch-core@7.7.2: - resolution: {integrity: sha512-jQXeVaLnk/P7O3NuldL+wgJI2QUntgZVvA5lVuqpqJ2u8dsOFwJFP+rfisFkgo2Q030lrn3sJTs6UGHIafdJqQ==} + react-instantsearch-core@7.13.3: + resolution: {integrity: sha512-eljDLrdHMw8Wbwpqc/5Sj77o+P6NWqlFuBSL0MMbBccXpbt4UfEw5Gf64AtwpO+oYF4L0BKOQpVEm6+poLd9Kw==} peerDependencies: - algoliasearch: '>= 3.1 < 5' + algoliasearch: '>= 3.1 < 6' react: '>= 16.8.0 < 19' - react-instantsearch-nextjs@0.2.2: - resolution: {integrity: sha512-tRyUVeQHcsv9mRiNR6d8pzmA1cQMZXXyAp0kNX/Y1D1l6mCkX0CkLkIupPfZPzsthCJ/oe1FfFbEiQ7lHkiqlg==} + react-instantsearch-nextjs@0.2.5: + resolution: {integrity: sha512-1NO/Us64tM6pWEQL4Qgisk/SnXDrrZ3+nNTe7USRT/KXQW9dkRXikeFb9vwjrqadYOBciWzBcf2T6ygqVV3Eiw==} peerDependencies: next: '>= 13.4 && < 15' react-instantsearch: '>= 7.1.0 && < 8' - react-instantsearch@7.7.2: - resolution: {integrity: sha512-YyJCrBOoEotd0IjsUJshmfkdGsABYSvB0ajHg2QXwqCToWprunLYrkFEboeDv+nfdb4PxbrltvNl/zXM4Ay3iA==} + react-instantsearch@7.13.3: + resolution: {integrity: sha512-an3nuqBELpXQb2fs016YgcosjmAfg24aR5eRxZjYDH+Sa3H/GnhzkYqyaLUpEVwGu5uDJvauHIBGZZKrrQ/lvw==} peerDependencies: - algoliasearch: '>= 3.1 < 5' + algoliasearch: '>= 3.1 < 6' react: '>= 16.8.0 < 19' react-dom: '>= 16.8.0 < 19' @@ -11210,13 +11343,6 @@ packages: react-property@2.0.0: resolution: {integrity: sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==} - react-shadow@20.4.0: - resolution: {integrity: sha512-sirvAmFja7Ss6MoyQbKWxaQ5IDTAW3Za3Tvegylfr5jXnwKZObHRIyiatefeNlskoGKfuPaZ8DNT052T0SUGcg==} - peerDependencies: - prop-types: ^15.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-svg@16.1.33: resolution: {integrity: sha512-XpKC3G1yZ+ay+lBy1KtJWKGEZGMI+291jEfHdyFfm6X3vMVg/mly2+JjPPCr4ihPElxaZI2z32n2RVV7+PFKVw==} peerDependencies: @@ -11229,16 +11355,12 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - react@19.0.0-rc-4c2e457c7c-20240522: - resolution: {integrity: sha512-jA9abMci6Z9xYDh07shOajSM5/wII9/lo8Cshk6zXo2Y6nc4LIvXqhjk0yOfiMlwMGEc+Ee1veGwa4ixjnzBJA==} + react@19.0.0-rc-4c58fce7-20240904: + resolution: {integrity: sha512-zyekIzYByBxumlv+VL5pN7Kk0153ud6ZA17IU54GrURWFXJsQzv/ZZ0zF8rsBasQ55VEm74VVeVefYOKbOZTQA==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -11280,6 +11402,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + reading-time@1.5.0: resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} @@ -11328,6 +11454,9 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regex@4.3.3: + resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} + regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} @@ -11357,11 +11486,11 @@ packages: rehype-parse@9.0.0: resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} - rehype-pretty-code@0.13.0: - resolution: {integrity: sha512-+22dz1StXlF7dlMyOySNaVxgcGhMI4BCxq0JxJJPWYGiKsI6cu5jyuIKGHXHvH18D8sv1rdKtvsY9UEfN3++SQ==} + rehype-pretty-code@0.14.0: + resolution: {integrity: sha512-hBeKF/Wkkf3zyUS8lal9RCUuhypDWLQc+h9UrP9Pav25FUm/AQAVh4m5gdvJxh4Oz+U+xKvdsV01p1LdvsZTiQ==} engines: {node: '>=18'} peerDependencies: - shiki: ^1.0.0 + shiki: ^1.3.0 rehype-raw@6.1.1: resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} @@ -11399,9 +11528,9 @@ packages: remark-rehype@11.1.0: resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} - remark-smartypants@2.1.0: - resolution: {integrity: sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + remark-smartypants@3.0.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} @@ -11455,17 +11584,17 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} - retext-latin@3.1.0: - resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} + retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} - retext-smartypants@5.2.0: - resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} + retext-smartypants@6.2.0: + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} - retext-stringify@3.1.0: - resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} + retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} - retext@8.1.0: - resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} + retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} retry-as-promised@7.0.4: resolution: {integrity: sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==} @@ -11533,10 +11662,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.9.6: - resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} route-sort@1.0.0: resolution: {integrity: sha512-SFgmvjoIhp5S4iBEDW3XnbT+7PRuZ55oRuNjY+CDB1SGZkyCG9bqQ3/dhaZTctTBYMAvDxd2Uy9dStuaUfgJqQ==} @@ -11598,8 +11725,8 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - scheduler@0.25.0-rc-4c2e457c7c-20240522: - resolution: {integrity: sha512-Vyzc3lN/cMuxvrMKtToIytTL6P2Xiz0zQlY+0KioteRSSgNORZ5gQX7MYEHpQ0QUm44mcpkZxSdZsI7YYNLpsQ==} + scheduler@0.25.0-rc-4c58fce7-20240904: + resolution: {integrity: sha512-eU7RBVIRjFNzLI3oWxMGUYy872yVmN7gDcJiNiWo8Jh+lKfh/k003fgFTZNBCE7DgVCIc6k6/afMuMDqDcUwcw==} scheduler@0.25.0-rc-935180c7e0-20240524: resolution: {integrity: sha512-YfkorLQDTfVArSlFsSmTFMWW2CoUtNhkveeEzfbyqi5bShsEyQxAPLBGOUoBxaXEcQSJ2bXhkz3ZSTJCO/Th8A==} @@ -11610,8 +11737,8 @@ packages: scuid@1.1.0: resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} - search-insights@2.13.0: - resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} + search-insights@2.17.2: + resolution: {integrity: sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==} section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} @@ -11633,11 +11760,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -11647,6 +11769,10 @@ packages: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} @@ -11700,8 +11826,8 @@ packages: resolution: {integrity: sha512-qQs/N+KfJu83rmszFQaTxcoJoPn6KNUruX4KmnmyD0oZkUoiNvJ1rpdYKDf4YHM05k+HOgCxa3yvf15QbVijGg==} engines: {node: '>=10'} - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + serve-static@1.16.0: + resolution: {integrity: sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==} engines: {node: '>= 0.8.0'} server-only@0.0.1: @@ -11710,11 +11836,11 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + set-cookie-parser@2.7.0: + resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==} - set-function-length@1.2.0: - resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} set-function-name@2.0.1: @@ -11731,9 +11857,9 @@ packages: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true - sharp@0.33.4: - resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} - engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -11757,11 +11883,12 @@ packages: shiki@0.14.7: resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==} - shiki@1.3.0: - resolution: {integrity: sha512-9aNdQy/etMXctnPzsje1h1XIGm9YfRcSksKOGqZWXA/qP9G18/8fpz5Bjpma8bOgz3tqIpjERAd6/lLjFyzoww==} + shiki@1.22.0: + resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -11873,22 +12000,14 @@ packages: resolution: {integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==} hasBin: true - sorcery@0.11.0: - resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} - hasBin: true - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - source-map-js@1.1.0: - resolution: {integrity: sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==} - engines: {node: '>=0.10.0'} - source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -12053,6 +12172,9 @@ packages: stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} @@ -12131,8 +12253,8 @@ packages: babel-plugin-macros: optional: true - styled-jsx@5.1.3: - resolution: {integrity: sha512-qLRShOWTE/Mf6Bvl72kFeKBl8N2Eq9WIFfoAuvbtP/6tqlnj1SCjv117n2MIjOPpa1jTorYqLJgsHKy5Y3ziww==} + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' @@ -12199,6 +12321,7 @@ packages: surrealdb.js@0.11.0: resolution: {integrity: sha512-x/Qd0UYyNilwY27JZlWgP8NsCdBzDtextRzP9oIm7xO27qsZvE5Rh4wnYN0xD68zgRAE4W8Jsufbm+hKbaGsTg==} + deprecated: Please visit https://www.npmjs.com/package/surrealdb for the updated SurrealDB SDK. svelte-check@2.10.2: resolution: {integrity: sha512-h1Tuiir0m8J5yqN+Vx6qgKKk1L871e6a9o7rMwVWfu8Qs6Wg7x2R+wcxS3SO3VpW5JCxCat90rxPsZMYgz+HaQ==} @@ -12206,11 +12329,13 @@ packages: peerDependencies: svelte: ^3.24.0 - svelte-check@3.6.3: - resolution: {integrity: sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==} + svelte-check@4.0.4: + resolution: {integrity: sha512-AcHWIPuZb1mh/jKoIrww0ebBPpAvwWd1bfXCnwC2dx4OkydNMaiG//+Xnry91RJMHFH7CiE+6Y2p332DRIaOXQ==} + engines: {node: '>= 18.0.0'} hasBin: true peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + typescript: '>=5.0.0' svelte-eslint-parser@0.35.0: resolution: {integrity: sha512-CtbPseajW0gjwEvHiuzYJkPDjAcHz2FaHt540j6RVYrZgnE6xWkzUBodQ4I3nV+G5AS0Svt8K6aIA/CIU9xT2Q==} @@ -12221,8 +12346,8 @@ packages: svelte: optional: true - svelte-hmr@0.15.3: - resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} + svelte-hmr@0.16.0: + resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 @@ -12267,51 +12392,14 @@ packages: typescript: optional: true - svelte-preprocess@5.1.3: - resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} - engines: {node: '>= 16.0.0', pnpm: ^8.0.0} - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true - - svelte2tsx@0.7.0: - resolution: {integrity: sha512-qAelcydnmuiDvD1HsrWi23RWx24RZTKRv6n4JaGC/pkoJfbLkJPQT2wa1qN0ZyfKTNLSyoj2FW9z62l/AUzUNA==} + svelte2tsx@0.7.21: + resolution: {integrity: sha512-cdYR5gYBK0Ys3/jzGu9yfW9oxGLtLAnxcKtS7oJy2pjLhLLYSZcWeeeuaY9SMULwlqMZ1HfngGH3n5VdquRC3Q==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@4.2.9: - resolution: {integrity: sha512-hsoB/WZGEPFXeRRLPhPrbRz67PhP6sqYgvwcAs+gWdSQSvNDw+/lTeUJSWe5h2xC97Fz/8QxAOqItwBzNJPU8w==} + svelte@4.2.19: + resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} engines: {node: '>=16'} svgo@3.3.2: @@ -12333,8 +12421,8 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + tailwindcss@3.4.13: + resolution: {integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==} engines: {node: '>=14.0.0'} hasBin: true @@ -12413,6 +12501,9 @@ packages: tinybench@2.6.0: resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + tinypool@0.8.2: resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} @@ -12473,10 +12564,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - tr46@4.1.1: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} @@ -12499,12 +12586,6 @@ packages: trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - ts-api-utils@1.0.3: - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -12581,17 +12662,9 @@ packages: tslib@2.5.3: resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - tsx@4.7.0: - resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} - engines: {node: '>=18.0.0'} - hasBin: true - tsx@4.7.3: resolution: {integrity: sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ==} engines: {node: '>=18.0.0'} @@ -12604,38 +12677,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.0.14: - resolution: {integrity: sha512-kwfDmjNwlNfvtrvT29+ZBg5n1Wvxl891bFHchMJyzMoR0HOE9N1NSNdSZb9wG3e7sYNIu4uDkNk+VBEqJW0HzQ==} + turbo-darwin-64@2.1.1: + resolution: {integrity: sha512-aYNuJpZlCoi0Htd79fl/2DywpewGKijdXeOfg9KzNuPVKzSMYlAXuAlNGh0MKjiOcyqxQGL7Mq9LFhwA0VpDpQ==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.0.14: - resolution: {integrity: sha512-m3LXYEshCx3wc4ZClM6gb01KYpFmtjQ9IBF3A7ofjb6ahux3xlYZJZ3uFCLAGHuvGLuJ3htfiPbwlDPTdknqqw==} + turbo-darwin-arm64@2.1.1: + resolution: {integrity: sha512-tifJKD8yHY48rHXPMcM8o1jI/Jk2KCaXiNjTKvvy9Zsim61BZksNVLelIbrRoCGwAN6PUBZO2lGU5iL/TQJ5Pw==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.0.14: - resolution: {integrity: sha512-7vBzCPdoTtR92SNn2JMgj1FlMmyonGmpMaQdgAB1OVYtuQ6NVGoh7/lODfaILqXjpvmFSVbpBIDrKOT6EvcprQ==} + turbo-linux-64@2.1.1: + resolution: {integrity: sha512-Js6d/bSQe9DuV9c7ITXYpsU/ADzFHABdz1UIHa7Oqjj9VOEbFeA9WpAn0c+mdJrVD+IXJFbbDZUjN7VYssmtcg==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.0.14: - resolution: {integrity: sha512-jwH+c0bfjpBf26K/tdEFatmnYyXwGROjbr6bZmNcL8R+IkGAc/cglL+OToqJnQZTgZvH7uDGbeSyUo7IsHyjuA==} + turbo-linux-arm64@2.1.1: + resolution: {integrity: sha512-LidzTCq0yvQ+N8w8Qub9FmhQ/mmEIeoqFi7DSupekEV2EjvE9jw/zYc9Pk67X+g7dHVfgOnvVzmrjChdxpFePw==} cpu: [arm64] os: [linux] - turbo-windows-64@2.0.14: - resolution: {integrity: sha512-w9/XwkHSzvLjmioo6cl3S1yRfI6swxsV1j1eJwtl66JM4/pn0H2rBa855R0n7hZnmI6H5ywLt/nLt6Ae8RTDmw==} + turbo-windows-64@2.1.1: + resolution: {integrity: sha512-GKc9ZywKwy4xLDhwXd6H07yzl0TB52HjXMrFLyHGhCVnf/w0oq4sLJv2sjbvuarPjsyx4xnCBJ3m3oyL2XmFtA==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.0.14: - resolution: {integrity: sha512-XaQlyYk+Rf4xS5XWCo8XCMIpssgGGy8blzLfolN6YBp4baElIWMlkLZHDbGyiFmCbNf9I9gJI64XGRG+LVyyjA==} + turbo-windows-arm64@2.1.1: + resolution: {integrity: sha512-oFKkMj11KKUv3xSK9/fhAEQTxLUp1Ol1EOktwc32+SFtEU0uls7kosAz0b+qe8k3pJGEMFdDPdqoEjyJidbxtQ==} cpu: [arm64] os: [win32] - turbo@2.0.14: - resolution: {integrity: sha512-00JjdCMD/cpsjP0Izkjcm8Oaor5yUCfDwODtaLb+WyblyadkaDEisGhy3Dbd5az9n+5iLSPiUgf+WjPbns6MRg==} + turbo@2.1.1: + resolution: {integrity: sha512-u9gUDkmR9dFS8b5kAYqIETK4OnzsS4l2ragJ0+soSMHh6VEeNHjTfSjk1tKxCqLyziCrPogadxP680J+v6yGHw==} hasBin: true twoslash-protocol@0.2.5: @@ -12711,18 +12784,11 @@ packages: peerDependencies: typedoc: 0.25.x - typedoc-plugin-mdn-links@3.2.7: - resolution: {integrity: sha512-niVge9QilZcnv2Y/zo49Y/J1VfIwDLXWk59S3HtpYIegfHdLgLYDt4XhQ8OjZXPgacnLKxOOch7TdKEi/uMurg==} + typedoc-plugin-mdn-links@3.3.2: + resolution: {integrity: sha512-5CGxkdfsG4Yki6UsFOvVN8vWXXDb25SozOlyThk9Dq8JvKcUgY+Ra+cZvkFWs3hLlO4W8xpFbYQxNngCLf9MMA==} peerDependencies: typedoc: '>= 0.23.14 || 0.24.x || 0.25.x || 0.26.x' - typedoc@0.25.12: - resolution: {integrity: sha512-F+qhkK2VoTweDXd1c42GS/By2DvI2uDF4/EpG424dTexSHdtCH52C6IcAvMA6jR3DzAWZjHpUOW+E02kyPNUNw==} - engines: {node: '>= 16'} - hasBin: true - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x - typedoc@0.25.13: resolution: {integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==} engines: {node: '>= 16'} @@ -12822,18 +12888,23 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} uc.micro@2.0.0: resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==} - ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -12850,6 +12921,9 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici@5.28.2: resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} engines: {node: '>=14.0'} @@ -12857,9 +12931,6 @@ packages: unenv@1.9.0: resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} - unherit@3.0.1: - resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} - unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -12879,8 +12950,8 @@ packages: unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} @@ -12900,8 +12971,8 @@ packages: unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - unist-util-modify-children@3.1.1: - resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} + unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} @@ -12924,8 +12995,8 @@ packages: unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - unist-util-visit-children@2.0.2: - resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==} + unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} unist-util-visit-parents@4.1.1: resolution: {integrity: sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==} @@ -12973,47 +13044,6 @@ packages: unplugin@1.6.0: resolution: {integrity: sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==} - unstorage@1.10.1: - resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} - peerDependencies: - '@azure/app-configuration': ^1.4.1 - '@azure/cosmos': ^4.0.0 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^3.3.2 - '@azure/keyvault-secrets': ^4.7.0 - '@azure/storage-blob': ^12.16.0 - '@capacitor/preferences': ^5.0.6 - '@netlify/blobs': ^6.2.0 - '@planetscale/database': ^1.11.0 - '@upstash/redis': ^1.23.4 - '@vercel/kv': ^0.2.3 - idb-keyval: ^6.2.1 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - unstorage@1.10.2: resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} peerDependencies: @@ -13078,6 +13108,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} @@ -13125,8 +13161,8 @@ packages: '@types/react': optional: true - use-sync-external-store@1.2.0: - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -13206,6 +13242,9 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vite-imagetools@6.2.9: resolution: {integrity: sha512-C4ZYhgj2vAj43/TpZ06XlDNP0p/7LIeYbgUYr+xG44nM++4HGX6YZBKAYpiBNgiCFUTJ6eXkRppWBrfPMevgmg==} engines: {node: '>=12.0.0'} @@ -13259,34 +13298,6 @@ packages: vite: optional: true - vite@5.0.13: - resolution: {integrity: sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@5.3.1: resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -13352,12 +13363,32 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + vue-template-compiler@2.7.16: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} @@ -13385,9 +13416,6 @@ packages: resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} engines: {node: '>= 8'} - web-worker@1.3.0: - resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==} - webcrypto-core@1.7.8: resolution: {integrity: sha512-eBR98r9nQXTqXt/yDRtInszPMjTaSAMJAFDg2AHsgrnczawT1asx9YNBX6k5p+MekbPF4+s/UJJrr88zsTqkSg==} @@ -13413,10 +13441,6 @@ packages: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - whatwg-url@13.0.0: resolution: {integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==} engines: {node: '>=16'} @@ -13437,8 +13461,8 @@ packages: which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + which-pm@2.2.0: + resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} engines: {node: '>=8.15'} which-typed-array@1.1.13: @@ -13517,6 +13541,18 @@ packages: utf-8-validate: optional: true + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xml2js@0.5.0: resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} engines: {node: '>=4.0.0'} @@ -13608,8 +13644,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} yoctocolors@1.0.0: @@ -13627,9 +13663,9 @@ packages: zen-observable@0.8.15: resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} - zod-validation-error@1.5.0: - resolution: {integrity: sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==} - engines: {node: '>=16.0.0'} + zod-validation-error@3.4.0: + resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==} + engines: {node: '>=18.0.0'} peerDependencies: zod: ^3.18.0 @@ -13653,92 +13689,97 @@ snapshots: tunnel: 0.0.6 undici: 5.28.2 - '@algolia/cache-browser-local-storage@4.23.3': + '@algolia/cache-browser-local-storage@4.24.0': dependencies: - '@algolia/cache-common': 4.23.3 + '@algolia/cache-common': 4.24.0 - '@algolia/cache-common@4.23.3': {} + '@algolia/cache-common@4.24.0': {} - '@algolia/cache-in-memory@4.23.3': + '@algolia/cache-in-memory@4.24.0': dependencies: - '@algolia/cache-common': 4.23.3 + '@algolia/cache-common': 4.24.0 - '@algolia/client-account@4.23.3': + '@algolia/client-account@4.24.0': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/client-analytics@4.23.3': + '@algolia/client-analytics@4.24.0': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/client-common@4.23.3': + '@algolia/client-common@4.24.0': dependencies: - '@algolia/requester-common': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/client-personalization@4.23.3': + '@algolia/client-personalization@4.24.0': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/client-search@4.23.3': + '@algolia/client-search@4.24.0': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 '@algolia/events@4.0.1': {} - '@algolia/logger-common@4.23.3': {} + '@algolia/logger-common@4.24.0': {} - '@algolia/logger-console@4.23.3': + '@algolia/logger-console@4.24.0': dependencies: - '@algolia/logger-common': 4.23.3 + '@algolia/logger-common': 4.24.0 - '@algolia/recommend@4.23.3': + '@algolia/recommend@4.24.0': dependencies: - '@algolia/cache-browser-local-storage': 4.23.3 - '@algolia/cache-common': 4.23.3 - '@algolia/cache-in-memory': 4.23.3 - '@algolia/client-common': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/logger-common': 4.23.3 - '@algolia/logger-console': 4.23.3 - '@algolia/requester-browser-xhr': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/requester-node-http': 4.23.3 - '@algolia/transporter': 4.23.3 + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 - '@algolia/requester-browser-xhr@4.23.3': + '@algolia/requester-browser-xhr@4.24.0': dependencies: - '@algolia/requester-common': 4.23.3 + '@algolia/requester-common': 4.24.0 - '@algolia/requester-common@4.23.3': {} + '@algolia/requester-common@4.24.0': {} - '@algolia/requester-node-http@4.23.3': + '@algolia/requester-node-http@4.24.0': dependencies: - '@algolia/requester-common': 4.23.3 + '@algolia/requester-common': 4.24.0 - '@algolia/transporter@4.23.3': + '@algolia/transporter@4.24.0': dependencies: - '@algolia/cache-common': 4.23.3 - '@algolia/logger-common': 4.23.3 - '@algolia/requester-common': 4.23.3 + '@algolia/cache-common': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/requester-common': 4.24.0 '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.2.1': dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/install-pkg@0.4.1': + dependencies: + package-manager-detector: 0.2.2 + tinyexec: 0.3.1 - '@antfu/utils@0.7.7': {} + '@antfu/utils@0.7.10': {} '@apollo/client@3.9.5(@types/react@18.2.78)(graphql-ws@5.14.3(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -13755,7 +13796,7 @@ snapshots: response-iterator: 0.2.6 symbol-observable: 4.0.0 ts-invariant: 0.10.3 - tslib: 2.6.2 + tslib: 2.7.0 zen-observable-ts: 1.2.5 optionalDependencies: graphql-ws: 5.14.3(graphql@16.8.1) @@ -13794,23 +13835,23 @@ snapshots: transitivePeerDependencies: - encoding - '@ariakit/core@0.4.5': {} + '@ariakit/core@0.4.12': {} - '@ariakit/react-core@0.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ariakit/react-core@0.4.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@ariakit/core': 0.4.5 - '@floating-ui/dom': 1.6.3 + '@ariakit/core': 0.4.12 + '@floating-ui/dom': 1.6.11 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - use-sync-external-store: 1.2.0(react@18.3.1) + use-sync-external-store: 1.2.2(react@18.3.1) - '@ariakit/react@0.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ariakit/react@0.4.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@ariakit/react-core': 0.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ariakit/react-core': 0.4.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.2)': + '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.6)': dependencies: '@zag-js/accordion': 0.20.0 '@zag-js/anatomy': 0.20.0 @@ -13821,7 +13862,7 @@ snapshots: '@zag-js/color-utils': 0.20.0 '@zag-js/combobox': 0.20.0 '@zag-js/date-picker': 0.20.0 - '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.2) + '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.6) '@zag-js/dialog': 0.20.0 '@zag-js/editable': 0.20.0 '@zag-js/hover-card': 0.20.0 @@ -13847,7 +13888,7 @@ snapshots: transitivePeerDependencies: - '@internationalized/date' - '@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@zag-js/accordion': 0.19.1 '@zag-js/anatomy': 0.19.1 @@ -13859,7 +13900,7 @@ snapshots: '@zag-js/combobox': 0.19.1 '@zag-js/core': 0.19.1 '@zag-js/date-picker': 0.19.1 - '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.2) + '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.6) '@zag-js/dialog': 0.19.1 '@zag-js/editable': 0.19.1 '@zag-js/hover-card': 0.19.1 @@ -13943,31 +13984,31 @@ snapshots: '@aws-sdk/util-endpoints': 3.496.0 '@aws-sdk/util-user-agent-browser': 3.496.0 '@aws-sdk/util-user-agent-node': 3.496.0 - '@smithy/config-resolver': 2.1.1 - '@smithy/core': 1.3.1 - '@smithy/fetch-http-handler': 2.4.1 - '@smithy/hash-node': 2.1.1 - '@smithy/invalid-dependency': 2.1.1 - '@smithy/middleware-content-length': 2.1.1 - '@smithy/middleware-endpoint': 2.4.1 - '@smithy/middleware-retry': 2.1.1 - '@smithy/middleware-serde': 2.1.1 - '@smithy/middleware-stack': 2.1.1 - '@smithy/node-config-provider': 2.2.1 - '@smithy/node-http-handler': 2.3.1 - '@smithy/protocol-http': 3.1.1 - '@smithy/smithy-client': 2.3.1 - '@smithy/types': 2.9.1 - '@smithy/url-parser': 2.1.1 - '@smithy/util-base64': 2.1.1 - '@smithy/util-body-length-browser': 2.1.1 - '@smithy/util-body-length-node': 2.2.1 - '@smithy/util-defaults-mode-browser': 2.1.1 - '@smithy/util-defaults-mode-node': 2.1.1 - '@smithy/util-endpoints': 1.1.1 - '@smithy/util-retry': 2.1.1 - '@smithy/util-utf8': 2.1.1 - tslib: 2.6.2 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.2 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt optional: true @@ -14015,7 +14056,7 @@ snapshots: '@smithy/util-retry': 2.1.1 '@smithy/util-utf8': 2.1.1 '@smithy/util-waiter': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 uuid: 8.3.2 transitivePeerDependencies: - aws-crt @@ -14058,7 +14099,7 @@ snapshots: '@smithy/util-endpoints': 1.1.1 '@smithy/util-retry': 2.1.1 '@smithy/util-utf8': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt @@ -14103,7 +14144,7 @@ snapshots: '@smithy/util-retry': 2.1.1 '@smithy/util-utf8': 2.1.1 fast-xml-parser: 4.2.5 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt @@ -14114,15 +14155,15 @@ snapshots: '@smithy/signature-v4': 2.1.1 '@smithy/smithy-client': 2.3.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/credential-provider-cognito-identity@3.499.0': dependencies: '@aws-sdk/client-cognito-identity': 3.499.0 '@aws-sdk/types': 3.496.0 - '@smithy/property-provider': 2.1.1 - '@smithy/types': 2.9.1 - tslib: 2.6.2 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt optional: true @@ -14132,19 +14173,19 @@ snapshots: '@aws-sdk/types': 3.496.0 '@smithy/property-provider': 2.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/credential-provider-http@3.496.0': dependencies: '@aws-sdk/types': 3.496.0 - '@smithy/fetch-http-handler': 2.4.1 - '@smithy/node-http-handler': 2.3.1 - '@smithy/property-provider': 2.1.1 - '@smithy/protocol-http': 3.1.1 - '@smithy/smithy-client': 2.3.1 - '@smithy/types': 2.9.1 - '@smithy/util-stream': 2.1.1 - tslib: 2.6.2 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 + tslib: 2.7.0 optional: true '@aws-sdk/credential-provider-ini@3.496.0': @@ -14158,7 +14199,7 @@ snapshots: '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt @@ -14174,7 +14215,7 @@ snapshots: '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt @@ -14184,7 +14225,7 @@ snapshots: '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/credential-provider-sso@3.496.0': dependencies: @@ -14194,7 +14235,7 @@ snapshots: '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt @@ -14203,7 +14244,7 @@ snapshots: '@aws-sdk/types': 3.496.0 '@smithy/property-provider': 2.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/credential-providers@3.499.0': dependencies: @@ -14219,10 +14260,10 @@ snapshots: '@aws-sdk/credential-provider-sso': 3.496.0 '@aws-sdk/credential-provider-web-identity': 3.496.0 '@aws-sdk/types': 3.496.0 - '@smithy/credential-provider-imds': 2.2.1 - '@smithy/property-provider': 2.1.1 - '@smithy/types': 2.9.1 - tslib: 2.6.2 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt optional: true @@ -14230,7 +14271,7 @@ snapshots: '@aws-sdk/endpoint-cache@3.495.0': dependencies: mnemonist: 0.38.3 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/lib-dynamodb@3.499.0(@aws-sdk/client-dynamodb@3.499.0)': dependencies: @@ -14238,7 +14279,7 @@ snapshots: '@aws-sdk/util-dynamodb': 3.499.0(@aws-sdk/client-dynamodb@3.499.0) '@smithy/smithy-client': 2.3.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/middleware-endpoint-discovery@3.496.0': dependencies: @@ -14247,37 +14288,37 @@ snapshots: '@smithy/node-config-provider': 2.2.1 '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/middleware-host-header@3.496.0': dependencies: '@aws-sdk/types': 3.496.0 '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/middleware-logger@3.496.0': dependencies: '@aws-sdk/types': 3.496.0 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/middleware-recursion-detection@3.496.0': dependencies: '@aws-sdk/types': 3.496.0 '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/middleware-signing@3.496.0': dependencies: '@aws-sdk/types': 3.496.0 - '@smithy/property-provider': 2.1.1 - '@smithy/protocol-http': 3.1.1 - '@smithy/signature-v4': 2.1.1 - '@smithy/types': 2.9.1 - '@smithy/util-middleware': 2.1.1 - tslib: 2.6.2 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.7.0 optional: true '@aws-sdk/middleware-user-agent@3.496.0': @@ -14286,7 +14327,7 @@ snapshots: '@aws-sdk/util-endpoints': 3.496.0 '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/region-config-resolver@3.496.0': dependencies: @@ -14295,7 +14336,7 @@ snapshots: '@smithy/types': 2.9.1 '@smithy/util-config-provider': 2.2.1 '@smithy/util-middleware': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/token-providers@3.496.0': dependencies: @@ -14335,58 +14376,58 @@ snapshots: '@smithy/util-endpoints': 1.1.1 '@smithy/util-retry': 2.1.1 '@smithy/util-utf8': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt '@aws-sdk/types@3.496.0': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/util-dynamodb@3.499.0(@aws-sdk/client-dynamodb@3.499.0)': dependencies: '@aws-sdk/client-dynamodb': 3.499.0 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/util-endpoints@3.496.0': dependencies: '@aws-sdk/types': 3.496.0 '@smithy/types': 2.9.1 '@smithy/util-endpoints': 1.1.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/util-locate-window@3.495.0': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/util-user-agent-browser@3.496.0': dependencies: '@aws-sdk/types': 3.496.0 '@smithy/types': 2.9.1 bowser: 2.11.0 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/util-user-agent-node@3.496.0': dependencies: '@aws-sdk/types': 3.496.0 '@smithy/node-config-provider': 2.2.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@aws-sdk/util-utf8-browser@3.259.0': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@azure/abort-controller@1.1.0': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-auth@1.5.0': dependencies: '@azure/abort-controller': 1.1.0 '@azure/core-util': 1.6.1 - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-client@1.7.3': dependencies: @@ -14396,7 +14437,7 @@ snapshots: '@azure/core-tracing': 1.0.1 '@azure/core-util': 1.6.1 '@azure/logger': 1.0.4 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - supports-color @@ -14413,11 +14454,11 @@ snapshots: '@azure/abort-controller': 1.1.0 '@azure/core-util': 1.6.1 '@azure/logger': 1.0.4 - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-paging@1.5.0': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-rest-pipeline@1.13.0': dependencies: @@ -14428,28 +14469,28 @@ snapshots: '@azure/logger': 1.0.4 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - supports-color '@azure/core-tracing@1.0.0-preview.12': dependencies: '@opentelemetry/api': 1.7.0 - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-tracing@1.0.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-util@1.6.1': dependencies: '@azure/abort-controller': 1.1.0 - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-xml@1.3.4': dependencies: fast-xml-parser: 4.3.3 - tslib: 2.6.2 + tslib: 2.7.0 '@azure/data-tables@13.2.2': dependencies: @@ -14460,28 +14501,28 @@ snapshots: '@azure/core-tracing': 1.0.1 '@azure/core-xml': 1.3.4 '@azure/logger': 1.0.4 - tslib: 2.6.2 + tslib: 2.7.0 uuid: 8.3.2 transitivePeerDependencies: - supports-color - '@azure/identity@1.5.2(debug@4.3.4)': + '@azure/identity@1.5.2(debug@4.3.7)': dependencies: '@azure/core-auth': 1.5.0 '@azure/core-client': 1.7.3 '@azure/core-rest-pipeline': 1.13.0 '@azure/core-tracing': 1.0.0-preview.12 '@azure/logger': 1.0.4 - '@azure/msal-node': 1.0.0-beta.6(debug@4.3.4) + '@azure/msal-node': 1.0.0-beta.6(debug@4.3.7) '@types/stoppable': 1.1.3 - axios: 0.21.4(debug@4.3.4) + axios: 0.21.4(debug@4.3.7) events: 3.3.0 jws: 4.0.0 msal: 1.4.18 open: 7.4.2 - qs: 6.11.2 + qs: 6.13.0 stoppable: 1.1.0 - tslib: 2.6.2 + tslib: 2.7.0 uuid: 8.3.2 optionalDependencies: keytar: 7.9.0 @@ -14501,13 +14542,13 @@ snapshots: '@azure/core-tracing': 1.0.1 '@azure/core-util': 1.6.1 '@azure/logger': 1.0.4 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - supports-color '@azure/logger@1.0.4': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@azure/ms-rest-azure-env@2.0.0': {} @@ -14524,25 +14565,25 @@ snapshots: transitivePeerDependencies: - encoding - '@azure/ms-rest-nodeauth@3.1.1(debug@4.3.4)(encoding@0.1.13)': + '@azure/ms-rest-nodeauth@3.1.1(debug@4.3.7)(encoding@0.1.13)': dependencies: '@azure/ms-rest-azure-env': 2.0.0 '@azure/ms-rest-js': 2.7.0(encoding@0.1.13) - adal-node: 0.2.4(debug@4.3.4) + adal-node: 0.2.4(debug@4.3.7) transitivePeerDependencies: - debug - encoding '@azure/msal-common@4.5.1': dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@azure/msal-node@1.0.0-beta.6(debug@4.3.4)': + '@azure/msal-node@1.0.0-beta.6(debug@4.3.7)': dependencies: '@azure/msal-common': 4.5.1 - axios: 0.21.4(debug@4.3.4) + axios: 0.21.4(debug@4.3.7) jsonwebtoken: 8.5.1 uuid: 8.3.2 transitivePeerDependencies: @@ -14569,7 +14610,7 @@ snapshots: '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -14580,7 +14621,7 @@ snapshots: dependencies: '@babel/types': 7.23.9 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/helper-annotate-as-pure@7.22.5': @@ -14595,7 +14636,7 @@ snapshots: dependencies: '@babel/compat-data': 7.23.5 '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 + browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -14624,7 +14665,7 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -14696,8 +14737,12 @@ snapshots: '@babel/helper-string-parser@7.23.4': {} + '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-option@7.23.5': {} '@babel/helper-wrap-function@7.22.20': @@ -14724,6 +14769,10 @@ snapshots: dependencies: '@babel/types': 7.23.9 + '@babel/parser@7.25.8': + dependencies: + '@babel/types': 7.25.8 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9)': dependencies: '@babel/core': 7.23.9 @@ -15321,7 +15370,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -15332,6 +15381,12 @@ snapshots: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + '@babel/types@7.25.8': + dependencies: + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + to-fast-properties: 2.0.0 + '@balazsorban/monorepo-release@0.5.1(patch_hash=cqvuvq5dn5jyeeoklla3tkfope)': dependencies: '@changesets/get-dependents-graph': 1.3.6 @@ -15343,7 +15398,7 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@braintree/sanitize-url@6.0.4': {} + '@braintree/sanitize-url@7.1.0': {} '@builder.io/qwik-city@1.5.5(@types/node@20.12.7)(rollup@4.18.0)(sass@1.70.0)(terser@5.27.0)': dependencies: @@ -15367,18 +15422,26 @@ snapshots: - supports-color - terser - '@builder.io/qwik@1.5.5(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)(undici@5.28.2)': + '@builder.io/qwik-city@1.5.5(@types/node@22.7.5)(rollup@4.18.0)(sass@1.70.0)(terser@5.27.0)': dependencies: - csstype: 3.1.3 + '@mdx-js/mdx': 3.0.1 + '@types/mdx': 2.0.13 + source-map: 0.7.4 + svgo: 3.3.2 undici: 5.28.2 - vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + vfile: 6.0.1 + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) + vite-imagetools: 6.2.9(rollup@4.18.0) + zod: 3.22.4 transitivePeerDependencies: - '@types/node' - less - lightningcss + - rollup - sass - stylus - sugarss + - supports-color - terser '@builder.io/qwik@1.7.3(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)': @@ -15394,23 +15457,18 @@ snapshots: - sugarss - terser - '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': - optional: true - - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': - optional: true - - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': - optional: true - - '@cbor-extract/cbor-extract-linux-arm@2.2.0': - optional: true - - '@cbor-extract/cbor-extract-linux-x64@2.2.0': - optional: true - - '@cbor-extract/cbor-extract-win32-x64@2.2.0': - optional: true + '@builder.io/qwik@1.7.3(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)': + dependencies: + csstype: 3.1.3 + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - terser '@changesets/get-dependents-graph@1.3.6': dependencies: @@ -15418,21 +15476,38 @@ snapshots: '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.5.4 + semver: 7.6.3 '@changesets/types@4.1.0': {} '@changesets/types@5.2.1': {} + '@chevrotain/cst-dts-gen@11.0.3': + dependencies: + '@chevrotain/gast': 11.0.3 + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/gast@11.0.3': + dependencies: + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/regexp-to-ast@11.0.3': {} + + '@chevrotain/types@11.0.3': {} + + '@chevrotain/utils@11.0.3': {} + '@clack/core@0.3.4': dependencies: - picocolors: 1.0.0 + picocolors: 1.1.0 sisteransi: 1.0.5 '@clack/prompts@0.6.3': dependencies: '@clack/core': 0.3.4 - picocolors: 1.0.0 + picocolors: 1.1.0 sisteransi: 1.0.5 '@cloudflare/workers-types@4.20240117.0': {} @@ -15453,13 +15528,17 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/selector-specificity@3.0.1(postcss-selector-parser@6.0.15)': + '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.2)': + dependencies: + postcss-selector-parser: 6.1.2 + + '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.2)': dependencies: - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.1.2 '@emnapi/runtime@1.2.0': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 optional: true '@emotion/is-prop-valid@0.8.8': @@ -15484,12 +15563,12 @@ snapshots: '@esbuild-kit/esm-loader@2.6.5': dependencies: '@esbuild-kit/core-utils': 3.3.2 - get-tsconfig: 4.7.2 + get-tsconfig: 4.8.0 '@esbuild/aix-ppc64@0.19.12': optional: true - '@esbuild/aix-ppc64@0.20.1': + '@esbuild/aix-ppc64@0.20.2': optional: true '@esbuild/aix-ppc64@0.21.5': @@ -15504,7 +15583,7 @@ snapshots: '@esbuild/android-arm64@0.19.12': optional: true - '@esbuild/android-arm64@0.20.1': + '@esbuild/android-arm64@0.20.2': optional: true '@esbuild/android-arm64@0.21.5': @@ -15519,7 +15598,7 @@ snapshots: '@esbuild/android-arm@0.19.12': optional: true - '@esbuild/android-arm@0.20.1': + '@esbuild/android-arm@0.20.2': optional: true '@esbuild/android-arm@0.21.5': @@ -15534,7 +15613,7 @@ snapshots: '@esbuild/android-x64@0.19.12': optional: true - '@esbuild/android-x64@0.20.1': + '@esbuild/android-x64@0.20.2': optional: true '@esbuild/android-x64@0.21.5': @@ -15549,7 +15628,7 @@ snapshots: '@esbuild/darwin-arm64@0.19.12': optional: true - '@esbuild/darwin-arm64@0.20.1': + '@esbuild/darwin-arm64@0.20.2': optional: true '@esbuild/darwin-arm64@0.21.5': @@ -15564,7 +15643,7 @@ snapshots: '@esbuild/darwin-x64@0.19.12': optional: true - '@esbuild/darwin-x64@0.20.1': + '@esbuild/darwin-x64@0.20.2': optional: true '@esbuild/darwin-x64@0.21.5': @@ -15579,7 +15658,7 @@ snapshots: '@esbuild/freebsd-arm64@0.19.12': optional: true - '@esbuild/freebsd-arm64@0.20.1': + '@esbuild/freebsd-arm64@0.20.2': optional: true '@esbuild/freebsd-arm64@0.21.5': @@ -15594,7 +15673,7 @@ snapshots: '@esbuild/freebsd-x64@0.19.12': optional: true - '@esbuild/freebsd-x64@0.20.1': + '@esbuild/freebsd-x64@0.20.2': optional: true '@esbuild/freebsd-x64@0.21.5': @@ -15609,7 +15688,7 @@ snapshots: '@esbuild/linux-arm64@0.19.12': optional: true - '@esbuild/linux-arm64@0.20.1': + '@esbuild/linux-arm64@0.20.2': optional: true '@esbuild/linux-arm64@0.21.5': @@ -15624,7 +15703,7 @@ snapshots: '@esbuild/linux-arm@0.19.12': optional: true - '@esbuild/linux-arm@0.20.1': + '@esbuild/linux-arm@0.20.2': optional: true '@esbuild/linux-arm@0.21.5': @@ -15639,7 +15718,7 @@ snapshots: '@esbuild/linux-ia32@0.19.12': optional: true - '@esbuild/linux-ia32@0.20.1': + '@esbuild/linux-ia32@0.20.2': optional: true '@esbuild/linux-ia32@0.21.5': @@ -15654,7 +15733,7 @@ snapshots: '@esbuild/linux-loong64@0.19.12': optional: true - '@esbuild/linux-loong64@0.20.1': + '@esbuild/linux-loong64@0.20.2': optional: true '@esbuild/linux-loong64@0.21.5': @@ -15669,7 +15748,7 @@ snapshots: '@esbuild/linux-mips64el@0.19.12': optional: true - '@esbuild/linux-mips64el@0.20.1': + '@esbuild/linux-mips64el@0.20.2': optional: true '@esbuild/linux-mips64el@0.21.5': @@ -15684,7 +15763,7 @@ snapshots: '@esbuild/linux-ppc64@0.19.12': optional: true - '@esbuild/linux-ppc64@0.20.1': + '@esbuild/linux-ppc64@0.20.2': optional: true '@esbuild/linux-ppc64@0.21.5': @@ -15699,7 +15778,7 @@ snapshots: '@esbuild/linux-riscv64@0.19.12': optional: true - '@esbuild/linux-riscv64@0.20.1': + '@esbuild/linux-riscv64@0.20.2': optional: true '@esbuild/linux-riscv64@0.21.5': @@ -15714,7 +15793,7 @@ snapshots: '@esbuild/linux-s390x@0.19.12': optional: true - '@esbuild/linux-s390x@0.20.1': + '@esbuild/linux-s390x@0.20.2': optional: true '@esbuild/linux-s390x@0.21.5': @@ -15729,7 +15808,7 @@ snapshots: '@esbuild/linux-x64@0.19.12': optional: true - '@esbuild/linux-x64@0.20.1': + '@esbuild/linux-x64@0.20.2': optional: true '@esbuild/linux-x64@0.21.5': @@ -15744,7 +15823,7 @@ snapshots: '@esbuild/netbsd-x64@0.19.12': optional: true - '@esbuild/netbsd-x64@0.20.1': + '@esbuild/netbsd-x64@0.20.2': optional: true '@esbuild/netbsd-x64@0.21.5': @@ -15759,7 +15838,7 @@ snapshots: '@esbuild/openbsd-x64@0.19.12': optional: true - '@esbuild/openbsd-x64@0.20.1': + '@esbuild/openbsd-x64@0.20.2': optional: true '@esbuild/openbsd-x64@0.21.5': @@ -15774,7 +15853,7 @@ snapshots: '@esbuild/sunos-x64@0.19.12': optional: true - '@esbuild/sunos-x64@0.20.1': + '@esbuild/sunos-x64@0.20.2': optional: true '@esbuild/sunos-x64@0.21.5': @@ -15789,7 +15868,7 @@ snapshots: '@esbuild/win32-arm64@0.19.12': optional: true - '@esbuild/win32-arm64@0.20.1': + '@esbuild/win32-arm64@0.20.2': optional: true '@esbuild/win32-arm64@0.21.5': @@ -15804,7 +15883,7 @@ snapshots: '@esbuild/win32-ia32@0.19.12': optional: true - '@esbuild/win32-ia32@0.20.1': + '@esbuild/win32-ia32@0.20.2': optional: true '@esbuild/win32-ia32@0.21.5': @@ -15819,7 +15898,7 @@ snapshots: '@esbuild/win32-x64@0.19.12': optional: true - '@esbuild/win32-x64@0.20.1': + '@esbuild/win32-x64@0.20.2': optional: true '@esbuild/win32-x64@0.21.5': @@ -15830,13 +15909,11 @@ snapshots: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.0))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.6))': dependencies: - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} - '@eslint-community/regexpp@4.11.0': {} '@eslint/compat@1.1.1': {} @@ -15844,7 +15921,7 @@ snapshots: '@eslint/config-array@0.18.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -15852,10 +15929,10 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -15866,7 +15943,7 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 @@ -15898,7 +15975,7 @@ snapshots: '@firebase/component@0.6.7': dependencies: '@firebase/util': 1.9.6 - tslib: 2.6.2 + tslib: 2.7.0 '@firebase/database-compat@1.0.5': dependencies: @@ -15907,7 +15984,7 @@ snapshots: '@firebase/database-types': 1.0.3 '@firebase/logger': 0.4.2 '@firebase/util': 1.9.6 - tslib: 2.6.2 + tslib: 2.7.0 '@firebase/database-types@1.0.3': dependencies: @@ -15922,19 +15999,23 @@ snapshots: '@firebase/logger': 0.4.2 '@firebase/util': 1.9.6 faye-websocket: 0.11.4 - tslib: 2.6.2 + tslib: 2.7.0 '@firebase/logger@0.4.2': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@firebase/util@1.9.6': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@floating-ui/core@1.6.0': dependencies: - '@floating-ui/utils': 0.2.1 + '@floating-ui/utils': 0.2.7 + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 '@floating-ui/dom@1.5.1': dependencies: @@ -15943,17 +16024,37 @@ snapshots: '@floating-ui/dom@1.5.2': dependencies: - '@floating-ui/core': 1.6.0 + '@floating-ui/core': 1.6.8 '@floating-ui/utils': 0.1.6 - '@floating-ui/dom@1.6.3': + '@floating-ui/dom@1.6.11': dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.11 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/react@0.26.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/utils': 0.2.8 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tabbable: 6.2.0 '@floating-ui/utils@0.1.6': {} - '@floating-ui/utils@0.2.1': {} + '@floating-ui/utils@0.2.7': {} + + '@floating-ui/utils@0.2.8': {} + + '@formatjs/intl-localematcher@0.5.5': + dependencies: + tslib: 2.7.0 '@gar/promisify@1.1.3': optional: true @@ -15963,7 +16064,7 @@ snapshots: fast-deep-equal: 3.1.3 functional-red-black-tree: 1.0.1 google-gax: 4.3.7(encoding@0.1.13) - protobufjs: 7.2.6 + protobufjs: 7.3.2 transitivePeerDependencies: - encoding - supports-color @@ -16009,7 +16110,7 @@ snapshots: graphql: 16.8.1 tslib: 2.5.3 - '@graphql-codegen/cli@5.0.0(@parcel/watcher@2.4.1)(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1)(typescript@5.4.5)': + '@graphql-codegen/cli@5.0.0(@parcel/watcher@2.4.1)(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1)(typescript@5.6.3)': dependencies: '@babel/generator': 7.23.6 '@babel/template': 7.23.9 @@ -16019,20 +16120,20 @@ snapshots: '@graphql-tools/apollo-engine-loader': 8.0.0(encoding@0.1.13)(graphql@16.8.1) '@graphql-tools/code-file-loader': 8.1.0(graphql@16.8.1) '@graphql-tools/git-loader': 8.0.4(graphql@16.8.1) - '@graphql-tools/github-loader': 8.0.0(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1) + '@graphql-tools/github-loader': 8.0.0(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1) '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/load': 8.0.1(graphql@16.8.1) - '@graphql-tools/prisma-loader': 8.0.2(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.1(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1) + '@graphql-tools/prisma-loader': 8.0.2(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@whatwg-node/fetch': 0.8.8 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.4.5) + cosmiconfig: 8.3.6(typescript@5.6.3) debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.8.1 - graphql-config: 5.0.3(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1)(typescript@5.4.5) + graphql-config: 5.0.3(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1)(typescript@5.6.3) inquirer: 8.2.6 is-glob: 4.0.3 jiti: 1.21.0 @@ -16043,7 +16144,7 @@ snapshots: shell-quote: 1.8.1 string-env-interpolation: 1.0.1 ts-log: 2.2.5 - tslib: 2.6.2 + tslib: 2.7.0 yaml: 2.3.4 yargs: 17.7.2 optionalDependencies: @@ -16174,7 +16275,7 @@ snapshots: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@whatwg-node/fetch': 0.9.16 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - encoding @@ -16183,7 +16284,7 @@ snapshots: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) dataloader: 2.2.2 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 value-or-promise: 1.0.12 '@graphql-tools/code-file-loader@8.1.0(graphql@16.8.1)': @@ -16192,7 +16293,7 @@ snapshots: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) globby: 11.1.0 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 unixify: 1.0.0 transitivePeerDependencies: - supports-color @@ -16205,13 +16306,13 @@ snapshots: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) dataloader: 2.2.2 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 '@graphql-tools/documents@1.0.0(graphql@16.8.1)': dependencies: graphql: 16.8.1 lodash.sortby: 4.7.0 - tslib: 2.6.2 + tslib: 2.7.0 '@graphql-tools/executor-graphql-ws@1.1.0(graphql@16.8.1)': dependencies: @@ -16220,21 +16321,21 @@ snapshots: graphql: 16.8.1 graphql-ws: 5.14.3(graphql@16.8.1) isomorphic-ws: 5.0.0(ws@8.16.0) - tslib: 2.6.2 + tslib: 2.7.0 ws: 8.16.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@graphql-tools/executor-http@1.0.7(@types/node@20.12.7)(graphql@16.8.1)': + '@graphql-tools/executor-http@1.0.7(@types/node@22.7.5)(graphql@16.8.1)': dependencies: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@repeaterjs/repeater': 3.0.5 '@whatwg-node/fetch': 0.9.16 extract-files: 11.0.0 graphql: 16.8.1 - meros: 1.3.0(@types/node@20.12.7) - tslib: 2.6.2 + meros: 1.3.0(@types/node@22.7.5) + tslib: 2.7.0 value-or-promise: 1.0.12 transitivePeerDependencies: - '@types/node' @@ -16245,7 +16346,7 @@ snapshots: '@types/ws': 8.5.10 graphql: 16.8.1 isomorphic-ws: 5.0.0(ws@8.16.0) - tslib: 2.6.2 + tslib: 2.7.0 ws: 8.16.0 transitivePeerDependencies: - bufferutil @@ -16257,7 +16358,7 @@ snapshots: '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) '@repeaterjs/repeater': 3.0.5 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 value-or-promise: 1.0.12 '@graphql-tools/git-loader@8.0.4(graphql@16.8.1)': @@ -16267,20 +16368,20 @@ snapshots: graphql: 16.8.1 is-glob: 4.0.3 micromatch: 4.0.5 - tslib: 2.6.2 + tslib: 2.7.0 unixify: 1.0.0 transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@8.0.0(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1)': + '@graphql-tools/github-loader@8.0.0(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1)': dependencies: '@ardatan/sync-fetch': 0.0.1(encoding@0.1.13) - '@graphql-tools/executor-http': 1.0.7(@types/node@20.12.7)(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.7(@types/node@22.7.5)(graphql@16.8.1) '@graphql-tools/graphql-tag-pluck': 8.2.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@whatwg-node/fetch': 0.9.16 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 value-or-promise: 1.0.12 transitivePeerDependencies: - '@types/node' @@ -16293,7 +16394,7 @@ snapshots: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) globby: 11.1.0 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 unixify: 1.0.0 '@graphql-tools/graphql-tag-pluck@8.2.0(graphql@16.8.1)': @@ -16305,7 +16406,7 @@ snapshots: '@babel/types': 7.23.9 '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - supports-color @@ -16314,14 +16415,14 @@ snapshots: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 resolve-from: 5.0.0 - tslib: 2.6.2 + tslib: 2.7.0 '@graphql-tools/json-file-loader@8.0.0(graphql@16.8.1)': dependencies: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) globby: 11.1.0 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 unixify: 1.0.0 '@graphql-tools/load@8.0.1(graphql@16.8.1)': @@ -16330,39 +16431,39 @@ snapshots: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 p-limit: 3.1.0 - tslib: 2.6.2 + tslib: 2.7.0 '@graphql-tools/merge@9.0.1(graphql@16.8.1)': dependencies: '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 '@graphql-tools/optimize@2.0.0(graphql@16.8.1)': dependencies: graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 - '@graphql-tools/prisma-loader@8.0.2(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1)': + '@graphql-tools/prisma-loader@8.0.2(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1)': dependencies: - '@graphql-tools/url-loader': 8.0.1(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@types/js-yaml': 4.0.9 '@types/json-stable-stringify': 1.0.36 '@whatwg-node/fetch': 0.9.16 chalk: 4.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) dotenv: 16.4.1 graphql: 16.8.1 graphql-request: 6.1.0(encoding@0.1.13)(graphql@16.8.1) http-proxy-agent: 7.0.0 https-proxy-agent: 7.0.2 - jose: 5.2.0 + jose: 5.9.6 js-yaml: 4.1.0 json-stable-stringify: 1.1.1 lodash: 4.17.21 scuid: 1.1.0 - tslib: 2.6.2 + tslib: 2.7.0 yaml-ast-parser: 0.0.43 transitivePeerDependencies: - '@types/node' @@ -16376,7 +16477,7 @@ snapshots: '@ardatan/relay-compiler': 12.0.0(encoding@0.1.13)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - encoding - supports-color @@ -16386,15 +16487,15 @@ snapshots: '@graphql-tools/merge': 9.0.1(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 value-or-promise: 1.0.12 - '@graphql-tools/url-loader@8.0.1(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1)': + '@graphql-tools/url-loader@8.0.1(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1)': dependencies: '@ardatan/sync-fetch': 0.0.1(encoding@0.1.13) '@graphql-tools/delegate': 10.0.3(graphql@16.8.1) '@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1) - '@graphql-tools/executor-http': 1.0.7(@types/node@20.12.7)(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.7(@types/node@22.7.5)(graphql@16.8.1) '@graphql-tools/executor-legacy-ws': 1.0.5(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@graphql-tools/wrap': 10.0.1(graphql@16.8.1) @@ -16402,7 +16503,7 @@ snapshots: '@whatwg-node/fetch': 0.9.16 graphql: 16.8.1 isomorphic-ws: 5.0.0(ws@8.16.0) - tslib: 2.6.2 + tslib: 2.7.0 value-or-promise: 1.0.12 ws: 8.16.0 transitivePeerDependencies: @@ -16417,7 +16518,7 @@ snapshots: cross-inspect: 1.0.0 dset: 3.1.3 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 '@graphql-tools/wrap@10.0.1(graphql@16.8.1)': dependencies: @@ -16425,7 +16526,7 @@ snapshots: '@graphql-tools/schema': 10.0.2(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 value-or-promise: 1.0.12 '@graphql-typed-document-node/core@3.2.0(graphql@16.8.1)': @@ -16452,10 +16553,12 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@headlessui/react@1.7.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@headlessui/react@2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/react-virtual': 3.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - client-only: 0.0.1 + '@floating-ui/react': 0.26.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-aria/focus': 3.18.4(react@18.3.1) + '@react-aria/interactions': 3.22.4(react@18.3.1) + '@tanstack/react-virtual': 3.10.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -16464,7 +16567,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -16477,94 +16580,108 @@ snapshots: '@iarna/toml@2.2.5': {} - '@img/sharp-darwin-arm64@0.33.4': + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.33': + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.3.7(supports-color@8.1.1) + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.7.2 + transitivePeerDependencies: + - supports-color + + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.2 + '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - '@img/sharp-darwin-x64@0.33.4': + '@img/sharp-darwin-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.2 + '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.0.2': + '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - '@img/sharp-libvips-darwin-x64@1.0.2': + '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm64@1.0.2': + '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm@1.0.2': + '@img/sharp-libvips-linux-arm@1.0.5': optional: true - '@img/sharp-libvips-linux-s390x@1.0.2': + '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - '@img/sharp-libvips-linux-x64@1.0.2': + '@img/sharp-libvips-linux-x64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.2': + '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - '@img/sharp-linux-arm64@0.33.4': + '@img/sharp-linux-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.2 + '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - '@img/sharp-linux-arm@0.33.4': + '@img/sharp-linux-arm@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.2 + '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - '@img/sharp-linux-s390x@0.33.4': + '@img/sharp-linux-s390x@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.2 + '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - '@img/sharp-linux-x64@0.33.4': + '@img/sharp-linux-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.2 + '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - '@img/sharp-linuxmusl-arm64@0.33.4': + '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - '@img/sharp-linuxmusl-x64@0.33.4': + '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - '@img/sharp-wasm32@0.33.4': + '@img/sharp-wasm32@0.33.5': dependencies: '@emnapi/runtime': 1.2.0 optional: true - '@img/sharp-win32-ia32@0.33.4': + '@img/sharp-win32-ia32@0.33.5': optional: true - '@img/sharp-win32-x64@0.33.4': + '@img/sharp-win32-x64@0.33.5': optional: true - '@inkeep/color-mode@0.0.23(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@inkeep/color-mode@0.0.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@inkeep/components@0.0.23(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': + '@inkeep/components@0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@inkeep/preset': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) - '@inkeep/preset-chakra': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) - '@inkeep/shared': 0.0.24 - '@inkeep/styled-system': 0.0.37 - '@pandacss/dev': 0.22.1(typescript@5.4.5) + '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/shared': 0.0.25 + '@inkeep/styled-system': 0.0.44 + '@pandacss/dev': 0.22.1(typescript@5.6.3) framer-motion: 10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -16573,48 +16690,49 @@ snapshots: - jsdom - typescript - '@inkeep/preset-chakra@0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5)': + '@inkeep/preset-chakra@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)': dependencies: - '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) - '@inkeep/shared': 0.0.24 - '@pandacss/dev': 0.22.1(typescript@5.4.5) + '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6) + '@inkeep/shared': 0.0.25 + '@pandacss/dev': 0.22.1(typescript@5.6.3) transitivePeerDependencies: - '@internationalized/date' - jsdom - typescript - '@inkeep/preset@0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5)': + '@inkeep/preset@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)': dependencies: - '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) - '@inkeep/preset-chakra': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) - '@inkeep/shared': 0.0.24 - '@pandacss/dev': 0.22.1(typescript@5.4.5) + '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/shared': 0.0.25 + '@pandacss/dev': 0.22.1(typescript@5.6.3) colorjs.io: 0.4.5 transitivePeerDependencies: - '@internationalized/date' - jsdom - typescript - '@inkeep/shared@0.0.24': {} + '@inkeep/shared@0.0.25': {} - '@inkeep/styled-system@0.0.37': {} + '@inkeep/styled-system@0.0.44': {} - '@inkeep/styled-system@0.0.40': {} + '@inkeep/styled-system@0.0.46': {} - '@inkeep/widgets@0.2.272(@internationalized/date@3.5.2)(@types/react@18.2.78)(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': + '@inkeep/widgets@0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: '@apollo/client': 3.9.5(@types/react@18.2.78)(graphql-ws@5.14.3(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@inkeep/color-mode': 0.0.23(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@inkeep/components': 0.0.23(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) - '@inkeep/preset': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) - '@inkeep/preset-chakra': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) - '@inkeep/shared': 0.0.24 - '@inkeep/styled-system': 0.0.40 + '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@inkeep/color-mode': 0.0.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@inkeep/components': 0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/shared': 0.0.25 + '@inkeep/styled-system': 0.0.46 '@types/lodash.isequal': 4.5.8 graphql: 16.8.1 graphql-ws: 5.14.3(graphql@16.8.1) html-react-parser: 3.0.16(react@18.3.1) + humps: 2.0.1 lodash.isequal: 4.5.0 prism-react-renderer: 2.1.0(react@18.3.1) prismjs: 1.29.0 @@ -16625,7 +16743,6 @@ snapshots: react-hotkeys-hook: 4.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-icons: 4.12.0(react@18.3.1) react-markdown: 8.0.7(@types/react@18.2.78)(react@18.3.1) - react-shadow: 20.4.0(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-svg: 16.1.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-textarea-autosize: 8.5.3(@types/react@18.2.78)(react@18.3.1) rehype-raw: 6.1.1 @@ -16634,7 +16751,6 @@ snapshots: - '@internationalized/date' - '@types/react' - jsdom - - prop-types - subscriptions-transport-ws - supports-color - typescript @@ -16727,9 +16843,14 @@ snapshots: '@internationalized/date@3.5.2': dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.13 + + '@internationalized/date@3.5.6': + dependencies: + '@swc/helpers': 0.5.13 - '@ioredis/commands@1.2.0': {} + '@ioredis/commands@1.2.0': + optional: true '@isaacs/cliui@8.0.2': dependencies: @@ -16753,8 +16874,8 @@ snapshots: '@jridgewell/gen-mapping@0.3.3': dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.1': {} @@ -16763,19 +16884,19 @@ snapshots: '@jridgewell/source-map@0.3.5': dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/trace-mapping@0.3.22': + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@js-joda/core@3.2.0': {} @@ -16788,59 +16909,85 @@ snapshots: '@libsql/client@0.6.0': dependencies: - '@libsql/core': 0.6.0 - '@libsql/hrana-client': 0.6.0 + '@libsql/core': 0.6.2 + '@libsql/hrana-client': 0.6.2 js-base64: 3.7.7 - libsql: 0.3.18 + libsql: 0.3.19 transitivePeerDependencies: - bufferutil - utf-8-validate + optional: true - '@libsql/core@0.6.0': + '@libsql/core@0.6.2': dependencies: js-base64: 3.7.7 + optional: true '@libsql/darwin-arm64@0.3.18': optional: true + '@libsql/darwin-arm64@0.3.19': + optional: true + '@libsql/darwin-x64@0.3.18': optional: true - '@libsql/hrana-client@0.6.0': + '@libsql/darwin-x64@0.3.19': + optional: true + + '@libsql/hrana-client@0.6.2': dependencies: - '@libsql/isomorphic-fetch': 0.2.1 + '@libsql/isomorphic-fetch': 0.2.5 '@libsql/isomorphic-ws': 0.1.5 js-base64: 3.7.7 node-fetch: 3.3.2 transitivePeerDependencies: - bufferutil - utf-8-validate + optional: true - '@libsql/isomorphic-fetch@0.2.1': {} + '@libsql/isomorphic-fetch@0.2.5': + optional: true '@libsql/isomorphic-ws@0.1.5': dependencies: - '@types/ws': 8.5.10 - ws: 8.16.0 + '@types/ws': 8.5.12 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - utf-8-validate + optional: true '@libsql/linux-arm64-gnu@0.3.18': optional: true + '@libsql/linux-arm64-gnu@0.3.19': + optional: true + '@libsql/linux-arm64-musl@0.3.18': optional: true + '@libsql/linux-arm64-musl@0.3.19': + optional: true + '@libsql/linux-x64-gnu@0.3.18': optional: true + '@libsql/linux-x64-gnu@0.3.19': + optional: true + '@libsql/linux-x64-musl@0.3.18': optional: true + '@libsql/linux-x64-musl@0.3.19': + optional: true + '@libsql/win32-x64-msvc@0.3.18': optional: true + '@libsql/win32-x64-msvc@0.3.19': + optional: true + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.23.9 @@ -16877,47 +17024,19 @@ snapshots: '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': dependencies: - detect-libc: 2.0.2 + detect-libc: 2.0.3 https-proxy-agent: 5.0.1 make-dir: 3.1.0 node-fetch: 2.7.0(encoding@0.1.13) nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.4 + semver: 7.6.3 tar: 6.2.0 transitivePeerDependencies: - encoding - supports-color - '@mdx-js/mdx@3.0.0': - dependencies: - '@types/estree': 1.0.5 - '@types/estree-jsx': 1.0.3 - '@types/hast': 3.0.4 - '@types/mdx': 2.0.10 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-build-jsx: 3.0.1 - estree-util-is-identifier-name: 3.0.0 - estree-util-to-js: 2.0.0 - estree-walker: 3.0.3 - hast-util-to-estree: 3.1.0 - hast-util-to-jsx-runtime: 2.3.0 - markdown-extensions: 2.0.0 - periscopic: 3.1.0 - remark-mdx: 3.0.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.0 - source-map: 0.7.4 - unified: 11.0.4 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - transitivePeerDependencies: - - supports-color - '@mdx-js/mdx@3.0.1': dependencies: '@types/estree': 1.0.5 @@ -16938,7 +17057,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.0 source-map: 0.7.4 - unified: 11.0.4 + unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 unist-util-visit: 5.0.0 @@ -16948,27 +17067,31 @@ snapshots: '@mdx-js/react@3.0.0(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@types/mdx': 2.0.10 + '@types/mdx': 2.0.13 '@types/react': 18.2.78 react: 18.3.1 - '@microsoft/api-extractor-model@7.28.13(@types/node@20.12.7)': + '@mermaid-js/parser@0.3.0': + dependencies: + langium: 3.0.0 + + '@microsoft/api-extractor-model@7.28.13(@types/node@22.7.5)': dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@20.12.7) + '@rushstack/node-core-library': 4.0.2(@types/node@22.7.5) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.43.0(@types/node@20.12.7)': + '@microsoft/api-extractor@7.43.0(@types/node@22.7.5)': dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@20.12.7) + '@microsoft/api-extractor-model': 7.28.13(@types/node@22.7.5) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@20.12.7) + '@rushstack/node-core-library': 4.0.2(@types/node@22.7.5) '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@20.12.7) - '@rushstack/ts-command-line': 4.19.1(@types/node@20.12.7) + '@rushstack/terminal': 0.10.0(@types/node@22.7.5) + '@rushstack/ts-command-line': 4.19.1(@types/node@22.7.5) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -17045,7 +17168,7 @@ snapshots: busboy: 1.6.0 dotenv: 10.0.0 kleur: 4.1.5 - set-cookie-parser: 2.6.0 + set-cookie-parser: 2.7.0 undici: 5.28.2 urlpattern-polyfill: 4.0.3 @@ -17069,7 +17192,7 @@ snapshots: dependencies: '@miniflare/shared': 2.14.2 - '@mongodb-js/saslprep@1.1.4': + '@mongodb-js/saslprep@1.1.9': dependencies: sparse-bitfield: 3.0.3 @@ -17124,67 +17247,64 @@ snapshots: '@next/env@13.5.6': {} - '@next/env@14.2.3': {} + '@next/env@14.2.15': {} - '@next/env@15.0.0-rc.0': {} - - '@next/swc-darwin-arm64@14.2.3': - optional: true + '@next/env@15.0.0-rc.1': {} - '@next/swc-darwin-arm64@15.0.0-rc.0': + '@next/swc-darwin-arm64@14.2.15': optional: true - '@next/swc-darwin-x64@14.2.3': + '@next/swc-darwin-arm64@15.0.0-rc.1': optional: true - '@next/swc-darwin-x64@15.0.0-rc.0': + '@next/swc-darwin-x64@14.2.15': optional: true - '@next/swc-linux-arm64-gnu@14.2.3': + '@next/swc-darwin-x64@15.0.0-rc.1': optional: true - '@next/swc-linux-arm64-gnu@15.0.0-rc.0': + '@next/swc-linux-arm64-gnu@14.2.15': optional: true - '@next/swc-linux-arm64-musl@14.2.3': + '@next/swc-linux-arm64-gnu@15.0.0-rc.1': optional: true - '@next/swc-linux-arm64-musl@15.0.0-rc.0': + '@next/swc-linux-arm64-musl@14.2.15': optional: true - '@next/swc-linux-x64-gnu@14.2.3': + '@next/swc-linux-arm64-musl@15.0.0-rc.1': optional: true - '@next/swc-linux-x64-gnu@15.0.0-rc.0': + '@next/swc-linux-x64-gnu@14.2.15': optional: true - '@next/swc-linux-x64-musl@14.2.3': + '@next/swc-linux-x64-gnu@15.0.0-rc.1': optional: true - '@next/swc-linux-x64-musl@15.0.0-rc.0': + '@next/swc-linux-x64-musl@14.2.15': optional: true - '@next/swc-win32-arm64-msvc@14.2.3': + '@next/swc-linux-x64-musl@15.0.0-rc.1': optional: true - '@next/swc-win32-arm64-msvc@15.0.0-rc.0': + '@next/swc-win32-arm64-msvc@14.2.15': optional: true - '@next/swc-win32-ia32-msvc@14.2.3': + '@next/swc-win32-arm64-msvc@15.0.0-rc.1': optional: true - '@next/swc-win32-ia32-msvc@15.0.0-rc.0': + '@next/swc-win32-ia32-msvc@14.2.15': optional: true - '@next/swc-win32-x64-msvc@14.2.3': + '@next/swc-win32-x64-msvc@14.2.15': optional: true - '@next/swc-win32-x64-msvc@15.0.0-rc.0': + '@next/swc-win32-x64-msvc@15.0.0-rc.1': optional: true - '@next/third-parties@14.2.1(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1)': + '@next/third-parties@14.2.15(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1)': dependencies: - next: 14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) + next: 14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) react: 18.3.1 third-party-capital: 1.0.20 @@ -17203,7 +17323,7 @@ snapshots: '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 - semver: 7.6.0 + semver: 7.6.3 optional: true '@npmcli/move-file@1.1.2': @@ -17218,9 +17338,9 @@ snapshots: chalk: 4.1.2 strip-ansi: 6.0.1 supports-color: 8.1.1 - tslib: 2.6.2 + tslib: 2.7.0 - '@oclif/core@2.15.0(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5)': + '@oclif/core@2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)': dependencies: '@types/cli-progress': 3.11.5 ansi-escapes: 4.3.2 @@ -17229,7 +17349,7 @@ snapshots: chalk: 4.1.2 clean-stack: 3.0.1 cli-progress: 3.12.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) ejs: 3.1.9 get-package-type: 0.1.0 globby: 11.1.0 @@ -17245,8 +17365,8 @@ snapshots: strip-ansi: 6.0.1 supports-color: 8.1.1 supports-hyperlinks: 2.3.0 - ts-node: 10.9.2(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5) - tslib: 2.6.2 + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) + tslib: 2.7.0 widest-line: 3.1.0 wordwrap: 1.0.0 wrap-ansi: 7.0.0 @@ -17266,27 +17386,27 @@ snapshots: '@oclif/linewrap@1.0.0': {} - '@oclif/plugin-help@5.2.20(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5)': + '@oclif/plugin-help@5.2.20(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)': dependencies: - '@oclif/core': 2.15.0(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5) + '@oclif/core': 2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' - '@types/node' - typescript - '@oclif/plugin-plugins@2.4.7(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5)': + '@oclif/plugin-plugins@2.4.7(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)': dependencies: '@oclif/color': 1.0.13 - '@oclif/core': 2.15.0(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5) + '@oclif/core': 2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) chalk: 4.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fs-extra: 9.1.0 http-call: 5.3.0 load-json-file: 5.3.0 npm-run-path: 4.0.1 - semver: 7.5.4 - tslib: 2.6.2 + semver: 7.6.3 + tslib: 2.7.0 yarn: 1.22.21 transitivePeerDependencies: - '@swc/core' @@ -17297,13 +17417,6 @@ snapshots: '@oclif/screen@1.0.4': {} - '@oddbird/css-anchor-positioning@0.0.5': - dependencies: - '@floating-ui/dom': 1.6.3 - '@types/css-tree': 2.3.7 - css-tree: 2.3.1 - nanoid: 5.0.7 - '@opentelemetry/api@1.7.0': {} '@pandacss/config@0.22.1': @@ -17316,9 +17429,9 @@ snapshots: '@pandacss/types': 0.22.1 bundle-n-require: 1.1.1 escalade: 3.1.1 - jiti: 1.21.0 + jiti: 1.21.6 merge-anything: 5.1.7 - typescript: 5.4.5 + typescript: 5.6.3 '@pandacss/core@0.22.1': dependencies: @@ -17327,27 +17440,27 @@ snapshots: '@pandacss/shared': 0.22.1 '@pandacss/token-dictionary': 0.22.1 '@pandacss/types': 0.22.1 - autoprefixer: 10.4.15(postcss@8.4.38) + autoprefixer: 10.4.15(postcss@8.4.47) hookable: 5.5.3 lodash.merge: 4.6.2 - postcss: 8.4.38 - postcss-discard-duplicates: 6.0.2(postcss@8.4.38) - postcss-discard-empty: 6.0.2(postcss@8.4.38) - postcss-merge-rules: 6.0.4(postcss@8.4.38) - postcss-minify-selectors: 6.0.2(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-normalize-whitespace: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-discard-duplicates: 6.0.3(postcss@8.4.47) + postcss-discard-empty: 6.0.3(postcss@8.4.47) + postcss-merge-rules: 6.1.1(postcss@8.4.47) + postcss-minify-selectors: 6.0.4(postcss@8.4.47) + postcss-nested: 6.0.1(postcss@8.4.47) + postcss-normalize-whitespace: 6.0.2(postcss@8.4.47) + postcss-selector-parser: 6.1.2 ts-pattern: 5.0.5 - '@pandacss/dev@0.22.1(typescript@5.4.5)': + '@pandacss/dev@0.22.1(typescript@5.6.3)': dependencies: '@clack/prompts': 0.6.3 '@pandacss/config': 0.22.1 '@pandacss/error': 0.22.1 '@pandacss/logger': 0.22.1 - '@pandacss/node': 0.22.1(typescript@5.4.5) - '@pandacss/postcss': 0.22.1(typescript@5.4.5) + '@pandacss/node': 0.22.1(typescript@5.6.3) + '@pandacss/postcss': 0.22.1(typescript@5.6.3) '@pandacss/preset-panda': 0.22.1 '@pandacss/shared': 0.22.1 '@pandacss/token-dictionary': 0.22.1 @@ -17361,9 +17474,9 @@ snapshots: '@pandacss/error@0.22.1': {} - '@pandacss/extractor@0.22.1(typescript@5.4.5)': + '@pandacss/extractor@0.22.1(typescript@5.6.3)': dependencies: - ts-evaluator: 1.2.0(typescript@5.4.5) + ts-evaluator: 1.2.0(typescript@5.6.3) ts-morph: 19.0.0 transitivePeerDependencies: - jsdom @@ -17381,7 +17494,7 @@ snapshots: lil-fp: 1.4.5 outdent: 0.8.0 pluralize: 8.0.0 - postcss: 8.4.38 + postcss: 8.4.47 ts-pattern: 5.0.5 '@pandacss/is-valid-prop@0.22.1': {} @@ -17391,23 +17504,23 @@ snapshots: kleur: 4.1.5 lil-fp: 1.4.5 - '@pandacss/node@0.22.1(typescript@5.4.5)': + '@pandacss/node@0.22.1(typescript@5.6.3)': dependencies: '@pandacss/config': 0.22.1 '@pandacss/core': 0.22.1 '@pandacss/error': 0.22.1 - '@pandacss/extractor': 0.22.1(typescript@5.4.5) + '@pandacss/extractor': 0.22.1(typescript@5.6.3) '@pandacss/generator': 0.22.1 '@pandacss/is-valid-prop': 0.22.1 '@pandacss/logger': 0.22.1 - '@pandacss/parser': 0.22.1(typescript@5.4.5) + '@pandacss/parser': 0.22.1(typescript@5.6.3) '@pandacss/shared': 0.22.1 '@pandacss/token-dictionary': 0.22.1 '@pandacss/types': 0.22.1 - chokidar: 3.5.3 + chokidar: 3.6.0 fast-glob: 3.3.2 file-size: 1.0.0 - filesize: 10.1.0 + filesize: 10.1.6 fs-extra: 11.1.1 glob-parent: 6.0.2 hookable: 5.5.3 @@ -17415,42 +17528,42 @@ snapshots: lil-fp: 1.4.5 lodash.merge: 4.6.2 look-it-up: 2.1.0 - microdiff: 1.3.2 + microdiff: 1.4.0 outdent: 0.8.0 - pathe: 1.1.2 + pathe: 1.1.1 pkg-types: 1.0.3 pluralize: 8.0.0 - postcss: 8.4.38 - preferred-pm: 3.1.3 + postcss: 8.4.47 + preferred-pm: 3.1.4 prettier: 2.8.8 ts-morph: 19.0.0 ts-pattern: 5.0.5 - tsconfck: 2.1.2(typescript@5.4.5) + tsconfck: 2.1.2(typescript@5.6.3) transitivePeerDependencies: - jsdom - typescript - '@pandacss/parser@0.22.1(typescript@5.4.5)': + '@pandacss/parser@0.22.1(typescript@5.6.3)': dependencies: '@pandacss/config': 0.22.1 - '@pandacss/extractor': 0.22.1(typescript@5.4.5) + '@pandacss/extractor': 0.22.1(typescript@5.6.3) '@pandacss/is-valid-prop': 0.22.1 '@pandacss/logger': 0.22.1 '@pandacss/shared': 0.22.1 '@pandacss/types': 0.22.1 - '@vue/compiler-sfc': 3.4.21 + '@vue/compiler-sfc': 3.5.12 lil-fp: 1.4.5 - magic-string: 0.30.8 + magic-string: 0.30.12 ts-morph: 19.0.0 ts-pattern: 5.0.5 transitivePeerDependencies: - jsdom - typescript - '@pandacss/postcss@0.22.1(typescript@5.4.5)': + '@pandacss/postcss@0.22.1(typescript@5.6.3)': dependencies: - '@pandacss/node': 0.22.1(typescript@5.4.5) - postcss: 8.4.38 + '@pandacss/node': 0.22.1(typescript@5.6.3) + postcss: 8.4.47 transitivePeerDependencies: - jsdom - typescript @@ -17473,110 +17586,49 @@ snapshots: '@pandacss/types@0.22.1': {} - '@panva/hkdf@1.1.1': {} - - '@parcel/watcher-android-arm64@2.4.0': - optional: true + '@panva/hkdf@1.2.1': {} '@parcel/watcher-android-arm64@2.4.1': optional: true - '@parcel/watcher-darwin-arm64@2.4.0': - optional: true - '@parcel/watcher-darwin-arm64@2.4.1': optional: true - '@parcel/watcher-darwin-x64@2.4.0': - optional: true - '@parcel/watcher-darwin-x64@2.4.1': optional: true - '@parcel/watcher-freebsd-x64@2.4.0': - optional: true - '@parcel/watcher-freebsd-x64@2.4.1': optional: true - '@parcel/watcher-linux-arm-glibc@2.4.0': - optional: true - '@parcel/watcher-linux-arm-glibc@2.4.1': optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.0': - optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.1': optional: true - '@parcel/watcher-linux-arm64-musl@2.4.0': - optional: true - '@parcel/watcher-linux-arm64-musl@2.4.1': optional: true - '@parcel/watcher-linux-x64-glibc@2.4.0': - optional: true - '@parcel/watcher-linux-x64-glibc@2.4.1': optional: true - '@parcel/watcher-linux-x64-musl@2.4.0': - optional: true - '@parcel/watcher-linux-x64-musl@2.4.1': optional: true - '@parcel/watcher-wasm@2.3.0': - dependencies: - is-glob: 4.0.3 - micromatch: 4.0.5 - '@parcel/watcher-wasm@2.4.1': dependencies: is-glob: 4.0.3 micromatch: 4.0.5 - '@parcel/watcher-win32-arm64@2.4.0': - optional: true - '@parcel/watcher-win32-arm64@2.4.1': optional: true - '@parcel/watcher-win32-ia32@2.4.0': - optional: true - '@parcel/watcher-win32-ia32@2.4.1': optional: true - '@parcel/watcher-win32-x64@2.4.0': - optional: true - '@parcel/watcher-win32-x64@2.4.1': optional: true - '@parcel/watcher@2.4.0': - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.5 - node-addon-api: 7.1.0 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.0 - '@parcel/watcher-darwin-arm64': 2.4.0 - '@parcel/watcher-darwin-x64': 2.4.0 - '@parcel/watcher-freebsd-x64': 2.4.0 - '@parcel/watcher-linux-arm-glibc': 2.4.0 - '@parcel/watcher-linux-arm64-glibc': 2.4.0 - '@parcel/watcher-linux-arm64-musl': 2.4.0 - '@parcel/watcher-linux-x64-glibc': 2.4.0 - '@parcel/watcher-linux-x64-musl': 2.4.0 - '@parcel/watcher-win32-arm64': 2.4.0 - '@parcel/watcher-win32-ia32': 2.4.0 - '@parcel/watcher-win32-x64': 2.4.0 - '@parcel/watcher@2.4.1': dependencies: detect-libc: 1.0.3 @@ -17601,27 +17653,27 @@ snapshots: dependencies: '@peculiar/asn1-schema': 2.3.8 asn1js: 3.0.5 - tslib: 2.6.2 + tslib: 2.7.0 '@peculiar/asn1-ecc@2.3.8': dependencies: '@peculiar/asn1-schema': 2.3.8 '@peculiar/asn1-x509': 2.3.8 asn1js: 3.0.5 - tslib: 2.6.2 + tslib: 2.7.0 '@peculiar/asn1-rsa@2.3.8': dependencies: '@peculiar/asn1-schema': 2.3.8 '@peculiar/asn1-x509': 2.3.8 asn1js: 3.0.5 - tslib: 2.6.2 + tslib: 2.7.0 '@peculiar/asn1-schema@2.3.8': dependencies: asn1js: 3.0.5 pvtsutils: 1.3.5 - tslib: 2.6.2 + tslib: 2.7.0 '@peculiar/asn1-x509@2.3.8': dependencies: @@ -17629,66 +17681,69 @@ snapshots: asn1js: 3.0.5 ipaddr.js: 2.1.0 pvtsutils: 1.3.5 - tslib: 2.6.2 + tslib: 2.7.0 '@peculiar/json-schema@1.1.12': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@peculiar/webcrypto@1.4.5': dependencies: '@peculiar/asn1-schema': 2.3.8 '@peculiar/json-schema': 1.1.12 pvtsutils: 1.3.5 - tslib: 2.6.2 + tslib: 2.7.0 webcrypto-core: 1.7.8 '@pkgjs/parseargs@0.11.0': optional: true + '@playwright/test@1.40.0': + dependencies: + playwright: 1.40.0 + '@playwright/test@1.41.2': dependencies: playwright: 1.41.2 + optional: true '@polka/url@1.0.0-next.24': {} - '@popperjs/core@2.11.8': {} - - '@preact/preset-vite@2.8.1(@babel/core@7.23.9)(preact@10.11.3)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0))': + '@preact/preset-vite@2.8.1(@babel/core@7.23.9)(preact@10.24.3)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0))': dependencies: '@babel/core': 7.23.9 '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.9) - '@prefresh/vite': 2.4.5(preact@10.11.3)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + '@prefresh/vite': 2.4.5(preact@10.24.3)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.23.9) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) kolorist: 1.8.0 magic-string: 0.30.5 node-html-parser: 6.1.12 resolve: 1.22.8 - vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) transitivePeerDependencies: - preact - supports-color '@prefresh/babel-plugin@0.5.1': {} - '@prefresh/core@1.5.2(preact@10.11.3)': + '@prefresh/core@1.5.2(preact@10.24.3)': dependencies: - preact: 10.11.3 + preact: 10.24.3 '@prefresh/utils@1.2.0': {} - '@prefresh/vite@2.4.5(preact@10.11.3)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0))': + '@prefresh/vite@2.4.5(preact@10.24.3)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0))': dependencies: '@babel/core': 7.23.9 '@prefresh/babel-plugin': 0.5.1 - '@prefresh/core': 1.5.2(preact@10.11.3) + '@prefresh/core': 1.5.2(preact@10.24.3) '@prefresh/utils': 1.2.0 '@rollup/pluginutils': 4.2.1 - preact: 10.11.3 - vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + preact: 10.24.3 + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) transitivePeerDependencies: - supports-color @@ -17697,59 +17752,34 @@ snapshots: prettier: 3.3.3 pug-lexer: 5.0.1 - '@prisma/client@5.8.1(prisma@5.8.1)': - optionalDependencies: - prisma: 5.8.1 - - '@prisma/client@5.9.1(prisma@5.9.1)': + '@prisma/client@6.0.0(prisma@6.0.0)': optionalDependencies: - prisma: 5.9.1 - - '@prisma/debug@5.8.1': {} - - '@prisma/debug@5.9.1': {} - - '@prisma/engines-version@5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2': {} - - '@prisma/engines-version@5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64': {} + prisma: 6.0.0 - '@prisma/engines@5.8.1': - dependencies: - '@prisma/debug': 5.8.1 - '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 - '@prisma/fetch-engine': 5.8.1 - '@prisma/get-platform': 5.8.1 - - '@prisma/engines@5.9.1': - dependencies: - '@prisma/debug': 5.9.1 - '@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 - '@prisma/fetch-engine': 5.9.1 - '@prisma/get-platform': 5.9.1 + '@prisma/debug@6.0.0': {} - '@prisma/extension-accelerate@0.6.3(@prisma/client@5.9.1(prisma@5.9.1))': - dependencies: - '@prisma/client': 5.9.1(prisma@5.9.1) + '@prisma/engines-version@5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e': {} - '@prisma/fetch-engine@5.8.1': + '@prisma/engines@6.0.0': dependencies: - '@prisma/debug': 5.8.1 - '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 - '@prisma/get-platform': 5.8.1 + '@prisma/debug': 6.0.0 + '@prisma/engines-version': 5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e + '@prisma/fetch-engine': 6.0.0 + '@prisma/get-platform': 6.0.0 - '@prisma/fetch-engine@5.9.1': + '@prisma/extension-accelerate@1.1.0(@prisma/client@6.0.0(prisma@6.0.0))': dependencies: - '@prisma/debug': 5.9.1 - '@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 - '@prisma/get-platform': 5.9.1 + '@prisma/client': 6.0.0(prisma@6.0.0) - '@prisma/get-platform@5.8.1': + '@prisma/fetch-engine@6.0.0': dependencies: - '@prisma/debug': 5.8.1 + '@prisma/debug': 6.0.0 + '@prisma/engines-version': 5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e + '@prisma/get-platform': 6.0.0 - '@prisma/get-platform@5.9.1': + '@prisma/get-platform@6.0.0': dependencies: - '@prisma/debug': 5.9.1 + '@prisma/debug': 6.0.0 '@protobufjs/aspromise@1.1.2': optional: true @@ -17784,173 +17814,202 @@ snapshots: '@protobufjs/utf8@1.1.0': optional: true - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.23.9 + '@radix-ui/primitive@1.1.0': {} - '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-accordion@1.2.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collapsible': 1.1.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.78 '@types/react-dom': 18.2.18 - '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collapsible@1.1.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.78 '@types/react-dom': 18.2.18 - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.78 '@types/react-dom': 18.2.18 - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.78)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 react: 18.3.1 optionalDependencies: '@types/react': 18.2.78 - '@radix-ui/react-context@1.0.1(@types/react@18.2.78)(react@18.3.1)': + '@radix-ui/react-context@1.1.0(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 react: 18.3.1 optionalDependencies: '@types/react': 18.2.78 - '@radix-ui/react-direction@1.0.1(@types/react@18.2.78)(react@18.3.1)': + '@radix-ui/react-context@1.1.1(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 react: 18.3.1 optionalDependencies: '@types/react': 18.2.78 - '@radix-ui/react-id@1.0.1(@types/react@18.2.78)(react@18.3.1)': + '@radix-ui/react-direction@1.1.0(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 18.2.78 - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-id@1.1.0(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.78)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.78 + + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.78 '@types/react-dom': 18.2.18 - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.78 '@types/react-dom': 18.2.18 - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.78 '@types/react-dom': 18.2.18 - '@radix-ui/react-slot@1.0.2(@types/react@18.2.78)(react@18.3.1)': + '@radix-ui/react-slot@1.1.0(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 18.2.78 - '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.78 '@types/react-dom': 18.2.18 - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.78)(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 react: 18.3.1 optionalDependencies: '@types/react': 18.2.78 - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.78)(react@18.3.1)': + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.78)(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 18.2.78 - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.78)(react@18.3.1)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.2.78)(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.9 react: 18.3.1 optionalDependencies: '@types/react': 18.2.78 + '@react-aria/focus@3.18.4(react@18.3.1)': + dependencies: + '@react-aria/interactions': 3.22.4(react@18.3.1) + '@react-aria/utils': 3.25.3(react@18.3.1) + '@react-types/shared': 3.25.0(react@18.3.1) + '@swc/helpers': 0.5.13 + clsx: 2.1.0 + react: 18.3.1 + + '@react-aria/interactions@3.22.4(react@18.3.1)': + dependencies: + '@react-aria/ssr': 3.9.6(react@18.3.1) + '@react-aria/utils': 3.25.3(react@18.3.1) + '@react-types/shared': 3.25.0(react@18.3.1) + '@swc/helpers': 0.5.13 + react: 18.3.1 + + '@react-aria/ssr@3.9.6(react@18.3.1)': + dependencies: + '@swc/helpers': 0.5.13 + react: 18.3.1 + + '@react-aria/utils@3.25.3(react@18.3.1)': + dependencies: + '@react-aria/ssr': 3.9.6(react@18.3.1) + '@react-stately/utils': 3.10.4(react@18.3.1) + '@react-types/shared': 3.25.0(react@18.3.1) + '@swc/helpers': 0.5.13 + clsx: 2.1.0 + react: 18.3.1 + + '@react-stately/utils@3.10.4(react@18.3.1)': + dependencies: + '@swc/helpers': 0.5.13 + react: 18.3.1 + + '@react-types/shared@3.25.0(react@18.3.1)': + dependencies: + react: 18.3.1 + '@redis/bloom@1.2.0(@redis/client@1.5.13)': dependencies: '@redis/client': 1.5.13 @@ -18003,91 +18062,52 @@ snapshots: '@rollup/rollup-android-arm-eabi@4.18.0': optional: true - '@rollup/rollup-android-arm-eabi@4.9.6': - optional: true - '@rollup/rollup-android-arm64@4.18.0': optional: true - '@rollup/rollup-android-arm64@4.9.6': - optional: true - '@rollup/rollup-darwin-arm64@4.18.0': optional: true - '@rollup/rollup-darwin-arm64@4.9.6': - optional: true - '@rollup/rollup-darwin-x64@4.18.0': optional: true - '@rollup/rollup-darwin-x64@4.9.6': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.9.6': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.18.0': optional: true '@rollup/rollup-linux-arm64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.9.6': - optional: true - '@rollup/rollup-linux-arm64-musl@4.18.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.9.6': - optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': optional: true '@rollup/rollup-linux-riscv64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.9.6': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.18.0': optional: true '@rollup/rollup-linux-x64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.9.6': - optional: true - '@rollup/rollup-linux-x64-musl@4.18.0': optional: true - '@rollup/rollup-linux-x64-musl@4.9.6': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.18.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.9.6': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.18.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.9.6': - optional: true - '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.9.6': - optional: true - - '@rushstack/node-core-library@4.0.2(@types/node@20.12.7)': + '@rushstack/node-core-library@4.0.2(@types/node@22.7.5)': dependencies: fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -18096,23 +18116,23 @@ snapshots: semver: 7.5.4 z-schema: 5.0.5 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 22.7.5 '@rushstack/rig-package@0.5.2': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.10.0(@types/node@20.12.7)': + '@rushstack/terminal@0.10.0(@types/node@22.7.5)': dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@20.12.7) + '@rushstack/node-core-library': 4.0.2(@types/node@22.7.5) supports-color: 8.1.1 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 22.7.5 - '@rushstack/ts-command-line@4.19.1(@types/node@20.12.7)': + '@rushstack/ts-command-line@4.19.1(@types/node@22.7.5)': dependencies: - '@rushstack/terminal': 0.10.0(@types/node@20.12.7) + '@rushstack/terminal': 0.10.0(@types/node@22.7.5) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -18126,16 +18146,41 @@ snapshots: '@shikijs/core@1.2.4': {} - '@shikijs/core@1.3.0': {} + '@shikijs/core@1.22.0': + dependencies: + '@shikijs/engine-javascript': 1.22.0 + '@shikijs/engine-oniguruma': 1.22.0 + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 + + '@shikijs/engine-javascript@1.22.0': + dependencies: + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + oniguruma-to-js: 0.4.3 + + '@shikijs/engine-oniguruma@1.22.0': + dependencies: + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 - '@shikijs/twoslash@1.2.4(typescript@5.4.5)': + '@shikijs/twoslash@1.2.4(typescript@5.6.3)': dependencies: '@shikijs/core': 1.2.4 - twoslash: 0.2.5(typescript@5.4.5) + twoslash: 0.2.5(typescript@5.6.3) transitivePeerDependencies: - supports-color - typescript + '@shikijs/types@1.22.0': + dependencies: + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@9.3.0': {} + '@sideway/address@4.1.4': dependencies: '@hapi/hoek': 9.3.0 @@ -18148,20 +18193,6 @@ snapshots: dependencies: '@simplewebauthn/types': 9.0.1 - '@simplewebauthn/server@9.0.2(encoding@0.1.13)': - dependencies: - '@hexagon/base64': 1.1.28 - '@peculiar/asn1-android': 2.3.10 - '@peculiar/asn1-ecc': 2.3.8 - '@peculiar/asn1-rsa': 2.3.8 - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/asn1-x509': 2.3.8 - '@simplewebauthn/types': 9.0.1 - cbor-x: 1.5.8 - cross-fetch: 4.0.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - '@simplewebauthn/server@9.0.3(encoding@0.1.13)': dependencies: '@hexagon/base64': 1.1.28 @@ -18183,7 +18214,13 @@ snapshots: '@smithy/abort-controller@2.1.1': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/abort-controller@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/config-resolver@2.1.1': dependencies: @@ -18191,7 +18228,16 @@ snapshots: '@smithy/types': 2.9.1 '@smithy/util-config-provider': 2.2.1 '@smithy/util-middleware': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/config-resolver@2.2.0': + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.7.0 + optional: true '@smithy/core@1.3.1': dependencies: @@ -18202,7 +18248,19 @@ snapshots: '@smithy/smithy-client': 2.3.1 '@smithy/types': 2.9.1 '@smithy/util-middleware': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/core@1.4.2': + dependencies: + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.7.0 + optional: true '@smithy/credential-provider-imds@2.2.1': dependencies: @@ -18210,14 +18268,23 @@ snapshots: '@smithy/property-provider': 2.1.1 '@smithy/types': 2.9.1 '@smithy/url-parser': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/credential-provider-imds@2.3.0': + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + tslib: 2.7.0 + optional: true '@smithy/eventstream-codec@2.1.1': dependencies: '@aws-crypto/crc32': 3.0.0 '@smithy/types': 2.9.1 '@smithy/util-hex-encoding': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 '@smithy/fetch-http-handler@2.4.1': dependencies: @@ -18225,29 +18292,64 @@ snapshots: '@smithy/querystring-builder': 2.1.1 '@smithy/types': 2.9.1 '@smithy/util-base64': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/fetch-http-handler@2.5.0': + dependencies: + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + tslib: 2.7.0 + optional: true '@smithy/hash-node@2.1.1': dependencies: '@smithy/types': 2.9.1 '@smithy/util-buffer-from': 2.1.1 '@smithy/util-utf8': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/hash-node@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + optional: true '@smithy/invalid-dependency@2.1.1': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/invalid-dependency@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/is-array-buffer@2.1.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.7.0 + optional: true '@smithy/middleware-content-length@2.1.1': dependencies: '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/middleware-content-length@2.2.0': + dependencies: + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/middleware-endpoint@2.4.1': dependencies: @@ -18257,7 +18359,18 @@ snapshots: '@smithy/types': 2.9.1 '@smithy/url-parser': 2.1.1 '@smithy/util-middleware': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/middleware-endpoint@2.5.1': + dependencies: + '@smithy/middleware-serde': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.7.0 + optional: true '@smithy/middleware-retry@2.1.1': dependencies: @@ -18268,25 +18381,58 @@ snapshots: '@smithy/types': 2.9.1 '@smithy/util-middleware': 2.1.1 '@smithy/util-retry': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 uuid: 8.3.2 + '@smithy/middleware-retry@2.3.1': + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/service-error-classification': 2.1.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + tslib: 2.7.0 + uuid: 9.0.1 + optional: true + '@smithy/middleware-serde@2.1.1': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/middleware-serde@2.3.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/middleware-stack@2.1.1': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/middleware-stack@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/node-config-provider@2.2.1': dependencies: '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/node-config-provider@2.3.0': + dependencies: + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/node-http-handler@2.3.1': dependencies: @@ -18294,37 +18440,82 @@ snapshots: '@smithy/protocol-http': 3.1.1 '@smithy/querystring-builder': 2.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/node-http-handler@2.5.0': + dependencies: + '@smithy/abort-controller': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/property-provider@2.1.1': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/property-provider@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/protocol-http@3.1.1': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/protocol-http@3.3.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/querystring-builder@2.1.1': dependencies: '@smithy/types': 2.9.1 '@smithy/util-uri-escape': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/querystring-builder@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + '@smithy/util-uri-escape': 2.2.0 + tslib: 2.7.0 + optional: true '@smithy/querystring-parser@2.1.1': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/querystring-parser@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/service-error-classification@2.1.1': dependencies: '@smithy/types': 2.9.1 + '@smithy/service-error-classification@2.1.5': + dependencies: + '@smithy/types': 2.12.0 + optional: true + '@smithy/shared-ini-file-loader@2.3.1': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/shared-ini-file-loader@2.4.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/signature-v4@2.1.1': dependencies: @@ -18335,7 +18526,18 @@ snapshots: '@smithy/util-middleware': 2.1.1 '@smithy/util-uri-escape': 2.1.1 '@smithy/util-utf8': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/signature-v4@2.3.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-uri-escape': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + optional: true '@smithy/smithy-client@2.3.1': dependencies: @@ -18344,39 +18546,89 @@ snapshots: '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 '@smithy/util-stream': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/smithy-client@2.5.1': + dependencies: + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-stack': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 + tslib: 2.7.0 + optional: true + + '@smithy/types@2.12.0': + dependencies: + tslib: 2.7.0 + optional: true '@smithy/types@2.9.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@smithy/url-parser@2.1.1': dependencies: '@smithy/querystring-parser': 2.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/url-parser@2.2.0': + dependencies: + '@smithy/querystring-parser': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/util-base64@2.1.1': dependencies: '@smithy/util-buffer-from': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-base64@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + optional: true '@smithy/util-body-length-browser@2.1.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-body-length-browser@2.2.0': + dependencies: + tslib: 2.7.0 + optional: true '@smithy/util-body-length-node@2.2.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-body-length-node@2.3.0': + dependencies: + tslib: 2.7.0 + optional: true '@smithy/util-buffer-from@2.1.1': dependencies: '@smithy/is-array-buffer': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.7.0 + optional: true '@smithy/util-config-provider@2.2.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-config-provider@2.3.0': + dependencies: + tslib: 2.7.0 + optional: true '@smithy/util-defaults-mode-browser@2.1.1': dependencies: @@ -18384,7 +18636,16 @@ snapshots: '@smithy/smithy-client': 2.3.1 '@smithy/types': 2.9.1 bowser: 2.11.0 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-defaults-mode-browser@2.2.1': + dependencies: + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + bowser: 2.11.0 + tslib: 2.7.0 + optional: true '@smithy/util-defaults-mode-node@2.1.1': dependencies: @@ -18394,28 +18655,64 @@ snapshots: '@smithy/property-provider': 2.1.1 '@smithy/smithy-client': 2.3.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-defaults-mode-node@2.3.1': + dependencies: + '@smithy/config-resolver': 2.2.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/util-endpoints@1.1.1': dependencies: '@smithy/node-config-provider': 2.2.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-endpoints@1.2.0': + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/util-hex-encoding@2.1.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-hex-encoding@2.2.0': + dependencies: + tslib: 2.7.0 + optional: true '@smithy/util-middleware@2.1.1': dependencies: '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-middleware@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/util-retry@2.1.1': dependencies: '@smithy/service-error-classification': 2.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-retry@2.2.0': + dependencies: + '@smithy/service-error-classification': 2.1.5 + '@smithy/types': 2.12.0 + tslib: 2.7.0 + optional: true '@smithy/util-stream@2.1.1': dependencies: @@ -18426,22 +18723,45 @@ snapshots: '@smithy/util-buffer-from': 2.1.1 '@smithy/util-hex-encoding': 2.1.1 '@smithy/util-utf8': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-stream@2.2.0': + dependencies: + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + optional: true '@smithy/util-uri-escape@2.1.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-uri-escape@2.2.0': + dependencies: + tslib: 2.7.0 + optional: true '@smithy/util-utf8@2.1.1': dependencies: '@smithy/util-buffer-from': 2.1.1 - tslib: 2.6.2 + tslib: 2.7.0 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.7.0 + optional: true '@smithy/util-waiter@2.1.1': dependencies: '@smithy/abort-controller': 2.1.1 '@smithy/types': 2.9.1 - tslib: 2.6.2 + tslib: 2.7.0 '@solidjs/meta@0.28.7(solid-js@1.8.12)': dependencies: @@ -18495,65 +18815,65 @@ snapshots: - bufferutil - utf-8-validate - '@sveltejs/adapter-auto@1.0.0-next.91(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))': + '@sveltejs/adapter-auto@1.0.0-next.91(@sveltejs/kit@2.6.4(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))': dependencies: - '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + '@sveltejs/kit': 2.6.4(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) import-meta-resolve: 2.2.2 - '@sveltejs/adapter-auto@3.1.1(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))': + '@sveltejs/adapter-auto@3.2.5(@sveltejs/kit@2.6.4(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))': dependencies: - '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) - import-meta-resolve: 4.0.0 + '@sveltejs/kit': 2.6.4(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) + import-meta-resolve: 4.1.0 - '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0))': + '@sveltejs/kit@2.6.4(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 - devalue: 5.0.0 + devalue: 5.1.1 esm-env: 1.0.0 - import-meta-resolve: 4.0.0 + import-meta-resolve: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.8 + magic-string: 0.30.11 mrmime: 2.0.0 sade: 1.8.1 - set-cookie-parser: 2.6.0 + set-cookie-parser: 2.7.0 sirv: 2.0.4 - svelte: 4.2.9 + svelte: 4.2.19 tiny-glob: 0.2.9 - vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) - '@sveltejs/package@2.2.6(svelte@4.2.9)(typescript@5.4.5)': + '@sveltejs/package@2.3.5(svelte@4.2.19)(typescript@5.6.3)': dependencies: - chokidar: 3.5.3 + chokidar: 4.0.1 kleur: 4.1.5 sade: 1.8.1 - semver: 7.5.4 - svelte: 4.2.9 - svelte2tsx: 0.7.0(svelte@4.2.9)(typescript@5.4.5) + semver: 7.6.3 + svelte: 4.2.19 + svelte2tsx: 0.7.21(svelte@4.2.19)(typescript@5.6.3) transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) - debug: 4.3.4(supports-color@8.1.1) - svelte: 4.2.9 - vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) + debug: 4.3.7(supports-color@8.1.1) + svelte: 4.2.19 + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0))': + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.9)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) - debug: 4.3.4(supports-color@8.1.1) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)))(svelte@4.2.19)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) + debug: 4.3.7(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.5 - svelte: 4.2.9 - svelte-hmr: 0.15.3(svelte@4.2.9) - vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) - vitefu: 0.2.5(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)) + magic-string: 0.30.11 + svelte: 4.2.19 + svelte-hmr: 0.16.0(svelte@4.2.19) + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) + vitefu: 0.2.5(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)) transitivePeerDependencies: - supports-color @@ -18587,10 +18907,10 @@ snapshots: '@swc/core-win32-x64-msvc@1.3.106': optional: true - '@swc/core@1.3.106(@swc/helpers@0.5.11)': + '@swc/core@1.3.106(@swc/helpers@0.5.13)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.5 + '@swc/types': 0.1.12 optionalDependencies: '@swc/core-darwin-arm64': 1.3.106 '@swc/core-darwin-x64': 1.3.106 @@ -18602,48 +18922,50 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.3.106 '@swc/core-win32-ia32-msvc': 1.3.106 '@swc/core-win32-x64-msvc': 1.3.106 - '@swc/helpers': 0.5.11 + '@swc/helpers': 0.5.13 '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.11': + '@swc/helpers@0.5.13': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 - tslib: 2.6.2 + tslib: 2.7.0 - '@swc/types@0.1.5': {} + '@swc/types@0.1.12': + dependencies: + '@swc/counter': 0.1.3 '@tanem/svg-injector@10.1.68': dependencies: '@babel/runtime': 7.23.9 content-type: 1.0.5 - tslib: 2.6.2 + tslib: 2.7.0 - '@tanstack/react-virtual@3.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-virtual@3.10.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/virtual-core': 3.1.3 + '@tanstack/virtual-core': 3.10.7 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/virtual-core@3.1.3': {} + '@tanstack/virtual-core@3.10.7': {} '@tediousjs/connection-string@0.3.0': {} - '@theguild/remark-mermaid@0.0.5(react@18.3.1)': + '@theguild/remark-mermaid@0.1.3(react@18.3.1)': dependencies: - mermaid: 10.6.0 + mermaid: 11.3.0 react: 18.3.1 unist-util-visit: 5.0.0 transitivePeerDependencies: - supports-color - '@theguild/remark-npm2yarn@0.3.0': + '@theguild/remark-npm2yarn@0.3.2': dependencies: - npm-to-yarn: 2.1.0 + npm-to-yarn: 3.0.0 unist-util-visit: 5.0.0 '@tootallnate/once@1.1.2': @@ -18721,16 +19043,6 @@ snapshots: '@types/cookiejar@2.1.5': {} - '@types/css-tree@2.3.7': {} - - '@types/d3-scale-chromatic@3.0.3': {} - - '@types/d3-scale@4.0.8': - dependencies: - '@types/d3-time': 3.0.3 - - '@types/d3-time@3.0.3': {} - '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 @@ -18762,15 +19074,15 @@ snapshots: '@types/qs': 6.9.11 '@types/serve-static': 1.15.5 - '@types/google.maps@3.55.7': {} + '@types/google.maps@3.58.1': {} - '@types/hast@2.3.9': + '@types/hast@2.3.10': dependencies: '@types/unist': 2.0.10 '@types/hast@3.0.4': dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 '@types/hogan.js@3.0.5': {} @@ -18811,7 +19123,9 @@ snapshots: dependencies: '@types/unist': 3.0.2 - '@types/mdx@2.0.10': {} + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 '@types/mdx@2.0.13': {} @@ -18833,9 +19147,9 @@ snapshots: dependencies: '@types/node': 20.12.7 - '@types/nlcst@1.0.4': + '@types/nlcst@2.0.3': dependencies: - '@types/unist': 2.0.10 + '@types/unist': 3.0.3 '@types/node@12.20.55': {} @@ -18843,13 +19157,13 @@ snapshots: '@types/node@18.11.10': {} - '@types/node@20.11.7': + '@types/node@20.12.7': dependencies: undici-types: 5.26.5 - '@types/node@20.12.7': + '@types/node@22.7.5': dependencies: - undici-types: 5.26.5 + undici-types: 6.19.8 '@types/nodemailer@6.4.6': dependencies: @@ -18970,6 +19284,8 @@ snapshots: '@types/qs@6.9.11': {} + '@types/qs@6.9.16': {} + '@types/range-parser@1.2.7': {} '@types/react-dom@18.2.18': @@ -18982,12 +19298,6 @@ snapshots: '@types/scheduler': 0.16.8 csstype: 3.1.3 - '@types/react@18.2.48': - dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 - '@types/react@18.2.78': dependencies: '@types/prop-types': 15.7.11 @@ -19020,7 +19330,7 @@ snapshots: '@types/mime': 3.0.4 '@types/node': 20.12.7 - '@types/set-cookie-parser@2.4.7': + '@types/set-cookie-parser@2.4.10': dependencies: '@types/node': 20.12.7 @@ -19043,8 +19353,12 @@ snapshots: '@types/unist@2.0.10': {} + '@types/unist@2.0.11': {} + '@types/unist@3.0.2': {} + '@types/unist@3.0.3': {} + '@types/uuid@8.3.4': {} '@types/validator@13.11.8': {} @@ -19055,32 +19369,32 @@ snapshots: dependencies: '@types/webidl-conversions': 7.0.3 - '@types/whatwg-url@8.2.2': - dependencies: - '@types/node': 20.12.7 - '@types/webidl-conversions': 7.0.3 - '@types/wrap-ansi@3.0.0': {} '@types/ws@8.5.10': dependencies: '@types/node': 20.12.7 - '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3))(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3)': + '@types/ws@8.5.12': + dependencies: + '@types/node': 20.12.7 + optional: true + + '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3))(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3)': dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) '@typescript-eslint/scope-manager': 6.19.1 - '@typescript-eslint/type-utils': 6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) - '@typescript-eslint/utils': 6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) + '@typescript-eslint/type-utils': 6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.19.1 - debug: 4.3.4(supports-color@8.1.1) - eslint: 9.9.1(jiti@1.21.0) + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.9.1(jiti@1.21.6) graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: @@ -19088,7 +19402,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.13.1(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.13.1 '@typescript-eslint/type-utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) @@ -19104,15 +19418,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3))(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3)': + '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3))(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) + '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) '@typescript-eslint/visitor-keys': 8.3.0 - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -19122,14 +19436,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3)': + '@typescript-eslint/parser@6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 6.19.1 '@typescript-eslint/types': 6.19.1 '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.19.1 - debug: 4.3.4(supports-color@8.1.1) - eslint: 9.9.1(jiti@1.21.0) + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.9.1(jiti@1.21.6) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: @@ -19141,21 +19455,21 @@ snapshots: '@typescript-eslint/types': 7.13.1 '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.13.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.0 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3)': + '@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 8.3.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 9.9.1(jiti@1.21.0) + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.9.1(jiti@1.21.6) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: @@ -19176,13 +19490,13 @@ snapshots: '@typescript-eslint/types': 8.3.0 '@typescript-eslint/visitor-keys': 8.3.0 - '@typescript-eslint/type-utils@6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3)': + '@typescript-eslint/type-utils@6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3)': dependencies: '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) - '@typescript-eslint/utils': 6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) - debug: 4.3.4(supports-color@8.1.1) - eslint: 9.9.1(jiti@1.21.0) - ts-api-utils: 1.0.3(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.9.1(jiti@1.21.6) + ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: @@ -19192,7 +19506,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: @@ -19200,11 +19514,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3)': + '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3)': dependencies: '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.3.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) + debug: 4.3.7(supports-color@8.1.1) ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 @@ -19222,12 +19536,12 @@ snapshots: dependencies: '@typescript-eslint/types': 6.19.1 '@typescript-eslint/visitor-keys': 6.19.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: @@ -19237,11 +19551,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.13.1 '@typescript-eslint/visitor-keys': 7.13.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 + minimatch: 9.0.5 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -19252,27 +19566,27 @@ snapshots: dependencies: '@typescript-eslint/types': 8.3.0 '@typescript-eslint/visitor-keys': 8.3.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.0 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.19.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3)': + '@typescript-eslint/utils@6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 6.19.1 '@typescript-eslint/types': 6.19.1 '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) - eslint: 9.9.1(jiti@1.21.0) - semver: 7.5.4 + eslint: 9.9.1(jiti@1.21.6) + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript @@ -19288,13 +19602,13 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3)': + '@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.3.0 '@typescript-eslint/types': 8.3.0 '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.3.3) - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript @@ -19316,7 +19630,7 @@ snapshots: '@typescript/vfs@1.5.0': dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -19330,33 +19644,33 @@ snapshots: dependencies: crypto-js: 4.2.0 - '@vercel/analytics@1.2.2(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1)': + '@vercel/analytics@1.3.1(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1)': dependencies: server-only: 0.0.1 optionalDependencies: - next: 14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) + next: 14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) react: 18.3.1 '@vercel/kv@1.0.1': dependencies: '@upstash/redis': 1.25.1 - '@vitest/coverage-v8@1.2.1(vitest@1.2.2(@types/node@20.11.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0))': + '@vitest/coverage-v8@1.2.1(vitest@1.2.2(@types/node@20.12.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0))': dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 - magic-string: 0.30.5 + magic-string: 0.30.11 magicast: 0.3.3 picocolors: 1.0.0 std-env: 3.7.0 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 - vitest: 1.2.2(@types/node@20.11.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0) + vitest: 1.2.2(@types/node@20.12.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0) transitivePeerDependencies: - supports-color @@ -19374,7 +19688,7 @@ snapshots: '@vitest/snapshot@1.2.2': dependencies: - magic-string: 0.30.5 + magic-string: 0.30.11 pathe: 1.1.2 pretty-format: 29.7.0 @@ -19391,7 +19705,7 @@ snapshots: pathe: 1.1.2 picocolors: 1.0.0 sirv: 2.0.4 - vitest: 1.2.2(@types/node@20.11.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0) + vitest: 1.2.2(@types/node@20.12.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0) '@vitest/utils@1.2.2': dependencies: @@ -19419,29 +19733,42 @@ snapshots: '@vue/shared': 3.4.21 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.2.0 + source-map-js: 1.2.1 + + '@vue/compiler-core@3.5.12': + dependencies: + '@babel/parser': 7.25.8 + '@vue/shared': 3.5.12 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 '@vue/compiler-dom@3.4.21': dependencies: '@vue/compiler-core': 3.4.21 '@vue/shared': 3.4.21 - '@vue/compiler-sfc@3.4.21': + '@vue/compiler-dom@3.5.12': dependencies: - '@babel/parser': 7.23.9 - '@vue/compiler-core': 3.4.21 - '@vue/compiler-dom': 3.4.21 - '@vue/compiler-ssr': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/compiler-core': 3.5.12 + '@vue/shared': 3.5.12 + + '@vue/compiler-sfc@3.5.12': + dependencies: + '@babel/parser': 7.25.8 + '@vue/compiler-core': 3.5.12 + '@vue/compiler-dom': 3.5.12 + '@vue/compiler-ssr': 3.5.12 + '@vue/shared': 3.5.12 estree-walker: 2.0.2 - magic-string: 0.30.8 - postcss: 8.4.38 - source-map-js: 1.2.0 + magic-string: 0.30.12 + postcss: 8.4.47 + source-map-js: 1.2.1 - '@vue/compiler-ssr@3.4.21': + '@vue/compiler-ssr@3.5.12': dependencies: - '@vue/compiler-dom': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/compiler-dom': 3.5.12 + '@vue/shared': 3.5.12 '@vue/language-core@1.8.27(typescript@5.4.5)': dependencies: @@ -19450,7 +19777,7 @@ snapshots: '@vue/compiler-dom': 3.4.21 '@vue/shared': 3.4.21 computeds: 0.0.1 - minimatch: 9.0.3 + minimatch: 9.0.5 muggle-string: 0.3.1 path-browserify: 1.0.1 vue-template-compiler: 2.7.16 @@ -19459,6 +19786,8 @@ snapshots: '@vue/shared@3.4.21': {} + '@vue/shared@3.5.12': {} + '@whatwg-node/events@0.0.3': {} '@whatwg-node/events@0.1.1': {} @@ -19482,7 +19811,7 @@ snapshots: busboy: 1.6.0 fast-querystring: 1.1.2 fast-url-parser: 1.1.3 - tslib: 2.6.2 + tslib: 2.7.0 '@whatwg-node/node-fetch@0.5.5': dependencies: @@ -19490,36 +19819,31 @@ snapshots: '@whatwg-node/events': 0.1.1 busboy: 1.6.0 fast-querystring: 1.1.2 - tslib: 2.6.2 + tslib: 2.7.0 '@wry/caches@1.0.1': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@wry/context@0.7.4': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@wry/equality@0.5.7': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@wry/trie@0.4.3': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@wry/trie@0.5.0': dependencies: - tslib: 2.6.2 - - '@xata.io/client@0.28.0(typescript@5.3.3)': - dependencies: - typescript: 5.3.3 - optional: true + tslib: 2.7.0 - '@xata.io/client@0.28.0(typescript@5.4.5)': + '@xata.io/client@0.28.0(typescript@5.6.3)': dependencies: - typescript: 5.4.5 + typescript: 5.6.3 '@xmldom/xmldom@0.8.10': {} @@ -19707,10 +20031,10 @@ snapshots: '@zag-js/date-picker@0.20.0': dependencies: - '@internationalized/date': 3.5.2 + '@internationalized/date': 3.5.6 '@zag-js/anatomy': 0.20.0 '@zag-js/core': 0.20.0 - '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.2) + '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.6) '@zag-js/dismissable': 0.20.0 '@zag-js/dom-event': 0.20.0 '@zag-js/dom-query': 0.20.0 @@ -19725,9 +20049,13 @@ snapshots: dependencies: '@internationalized/date': 3.5.2 - '@zag-js/date-utils@0.20.0(@internationalized/date@3.5.2)': + '@zag-js/date-utils@0.19.1(@internationalized/date@3.5.6)': dependencies: - '@internationalized/date': 3.5.2 + '@internationalized/date': 3.5.6 + + '@zag-js/date-utils@0.20.0(@internationalized/date@3.5.6)': + dependencies: + '@internationalized/date': 3.5.6 '@zag-js/dialog@0.19.1': dependencies: @@ -20394,17 +20722,13 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 acorn-loose@8.3.0: dependencies: - acorn: 8.11.3 + acorn: 8.12.1 acorn-walk@8.2.0: {} @@ -20412,15 +20736,13 @@ snapshots: acorn@7.4.1: {} - acorn@8.11.3: {} - acorn@8.12.1: {} - adal-node@0.2.4(debug@4.3.4): + adal-node@0.2.4(debug@4.3.7): dependencies: '@xmldom/xmldom': 0.8.10 async: 2.6.4 - axios: 0.21.4(debug@4.3.4) + axios: 0.21.4(debug@4.3.7) date-utils: 1.2.21 jws: 3.2.2 underscore: 1.13.6 @@ -20431,13 +20753,13 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color agent-base@7.1.0: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -20458,28 +20780,28 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algoliasearch-helper@3.18.0(algoliasearch@4.23.3): + algoliasearch-helper@3.22.5(algoliasearch@4.24.0): dependencies: '@algolia/events': 4.0.1 - algoliasearch: 4.23.3 - - algoliasearch@4.23.3: - dependencies: - '@algolia/cache-browser-local-storage': 4.23.3 - '@algolia/cache-common': 4.23.3 - '@algolia/cache-in-memory': 4.23.3 - '@algolia/client-account': 4.23.3 - '@algolia/client-analytics': 4.23.3 - '@algolia/client-common': 4.23.3 - '@algolia/client-personalization': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/logger-common': 4.23.3 - '@algolia/logger-console': 4.23.3 - '@algolia/recommend': 4.23.3 - '@algolia/requester-browser-xhr': 4.23.3 - '@algolia/requester-common': 4.23.3 - '@algolia/requester-node-http': 4.23.3 - '@algolia/transporter': 4.23.3 + algoliasearch: 4.24.0 + + algoliasearch@4.24.0: + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-account': 4.24.0 + '@algolia/client-analytics': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-personalization': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/recommend': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 ansi-align@3.0.1: dependencies: @@ -20559,7 +20881,7 @@ snapshots: array-buffer-byte-length@1.0.0: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-array-buffer: 3.0.2 array-flatten@1.1.1: {} @@ -20568,10 +20890,10 @@ snapshots: array-includes@3.1.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 is-string: 1.0.7 array-iterate@2.0.1: {} @@ -20580,33 +20902,33 @@ snapshots: array.prototype.flat@1.3.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 array.prototype.tosorted@1.1.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 arraybuffer.prototype.slice@1.0.2: dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 @@ -20621,7 +20943,7 @@ snapshots: dependencies: pvtsutils: 1.3.5 pvutils: 1.1.3 - tslib: 2.6.2 + tslib: 2.7.0 assert-never@1.2.1: {} @@ -20654,45 +20976,45 @@ snapshots: autoprefixer@10.4.13(postcss@8.4.19): dependencies: - browserslist: 4.22.2 - caniuse-lite: 1.0.30001580 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001609 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 postcss: 8.4.19 postcss-value-parser: 4.2.0 - autoprefixer@10.4.15(postcss@8.4.38): + autoprefixer@10.4.15(postcss@8.4.47): dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001609 + browserslist: 4.24.0 + caniuse-lite: 1.0.30001668 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 + picocolors: 1.1.0 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - autoprefixer@10.4.19(postcss@8.4.38): + autoprefixer@10.4.20(postcss@8.4.47): dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001609 + browserslist: 4.24.0 + caniuse-lite: 1.0.30001668 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 + picocolors: 1.1.0 + postcss: 8.4.47 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.5: {} - axios@0.21.4(debug@4.3.4): + axios@0.21.4(debug@4.3.7): dependencies: - follow-redirects: 1.15.5(debug@4.3.4) + follow-redirects: 1.15.5(debug@4.3.7) transitivePeerDependencies: - debug - axios@0.25.0(debug@4.3.4): + axios@0.25.0(debug@4.3.7): dependencies: - follow-redirects: 1.15.5(debug@4.3.4) + follow-redirects: 1.15.5(debug@4.3.7) transitivePeerDependencies: - debug @@ -20833,24 +21155,7 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.1: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - body-parser@1.20.2: + body-parser@1.20.3: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -20860,7 +21165,7 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -20899,29 +21204,29 @@ snapshots: dependencies: fill-range: 7.0.1 - browserslist@4.22.2: + braces@3.0.3: dependencies: - caniuse-lite: 1.0.30001580 - electron-to-chromium: 1.4.647 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) + fill-range: 7.1.1 browserslist@4.23.0: dependencies: - caniuse-lite: 1.0.30001594 + caniuse-lite: 1.0.30001609 electron-to-chromium: 1.4.693 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) - bser@2.1.1: + browserslist@4.24.0: dependencies: - node-int64: 0.4.0 + caniuse-lite: 1.0.30001668 + electron-to-chromium: 1.5.36 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.0) - bson@4.7.2: + bser@2.1.1: dependencies: - buffer: 5.7.1 + node-int64: 0.4.0 - bson@6.2.0: {} + bson@6.8.0: {} btoa-lite@1.0.0: {} @@ -20945,11 +21250,11 @@ snapshots: builtins@5.0.1: dependencies: - semver: 7.6.0 + semver: 7.6.3 bundle-n-require@1.1.1: dependencies: - esbuild: 0.20.1 + esbuild: 0.20.2 node-eval: 2.0.0 bundle-name@3.0.0: @@ -20990,18 +21295,20 @@ snapshots: - bluebird optional: true - call-bind@1.0.5: + call-bind@1.0.7: dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.2.0 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 callsites@3.1.0: {} camel-case@4.1.2: dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.7.0 camelcase-css@2.0.1: {} @@ -21017,21 +21324,19 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001609 + browserslist: 4.24.0 + caniuse-lite: 1.0.30001668 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001580: {} - - caniuse-lite@1.0.30001594: {} - caniuse-lite@1.0.30001609: {} + caniuse-lite@1.0.30001668: {} + capital-case@1.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 upper-case-first: 2.0.2 cardinal@2.1.1: @@ -21039,22 +21344,6 @@ snapshots: ansicolors: 0.3.2 redeyed: 2.1.1 - cbor-extract@2.2.0: - dependencies: - node-gyp-build-optional-packages: 5.1.1 - optionalDependencies: - '@cbor-extract/cbor-extract-darwin-arm64': 2.2.0 - '@cbor-extract/cbor-extract-darwin-x64': 2.2.0 - '@cbor-extract/cbor-extract-linux-arm': 2.2.0 - '@cbor-extract/cbor-extract-linux-arm64': 2.2.0 - '@cbor-extract/cbor-extract-linux-x64': 2.2.0 - '@cbor-extract/cbor-extract-win32-x64': 2.2.0 - optional: true - - cbor-x@1.5.8: - optionalDependencies: - cbor-extract: 2.2.0 - ccount@2.0.1: {} chai@4.4.1: @@ -21110,7 +21399,7 @@ snapshots: path-case: 3.0.4 sentence-case: 3.0.4 snake-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 character-entities-html4@2.1.0: {} @@ -21130,17 +21419,19 @@ snapshots: dependencies: get-func-name: 2.0.2 - chokidar@3.5.3: + chevrotain-allstar@0.3.1(chevrotain@11.0.3): dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + chevrotain: 11.0.3 + lodash-es: 4.17.21 + + chevrotain@11.0.3: + dependencies: + '@chevrotain/cst-dts-gen': 11.0.3 + '@chevrotain/gast': 11.0.3 + '@chevrotain/regexp-to-ast': 11.0.3 + '@chevrotain/types': 11.0.3 + '@chevrotain/utils': 11.0.3 + lodash-es: 4.17.21 chokidar@3.6.0: dependencies: @@ -21154,16 +21445,16 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + chownr@1.1.4: {} chownr@2.0.0: {} chownr@3.0.0: {} - citty@0.1.5: - dependencies: - consola: 3.2.3 - citty@0.1.6: dependencies: consola: 3.2.3 @@ -21286,7 +21577,7 @@ snapshots: code-red@1.0.4: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@types/estree': 1.0.5 acorn: 8.12.1 estree-walker: 3.0.3 @@ -21382,6 +21673,8 @@ snapshots: confbox@0.1.7: {} + confbox@0.1.8: {} + connect@3.7.0: dependencies: debug: 2.6.9 @@ -21398,7 +21691,7 @@ snapshots: constant-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 upper-case: 2.0.2 constantinople@4.0.1: @@ -21429,15 +21722,13 @@ snapshots: cookie-signature@1.0.6: {} - cookie@0.5.0: {} - cookie@0.6.0: {} cookiejar@2.1.4: {} core-js-compat@3.35.1: dependencies: - browserslist: 4.22.2 + browserslist: 4.24.0 core-js-pure@3.35.1: {} @@ -21451,14 +21742,14 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig@8.3.6(typescript@5.4.5): + cosmiconfig@8.3.6(typescript@5.6.3): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.6.3 create-require@1.1.1: {} @@ -21476,7 +21767,7 @@ snapshots: cross-inspect@1.0.0: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 cross-spawn@5.1.0: dependencies: @@ -21509,20 +21800,20 @@ snapshots: css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-what@6.1.0: {} cssesc@3.0.0: {} - cssnano-utils@4.0.1(postcss@8.4.38): + cssnano-utils@4.0.2(postcss@8.4.47): dependencies: - postcss: 8.4.38 + postcss: 8.4.47 csso@5.0.5: dependencies: @@ -21536,20 +21827,17 @@ snapshots: csv-stream@0.2.0: {} - cytoscape-cose-bilkent@4.1.0(cytoscape@3.28.1): + cytoscape-cose-bilkent@4.1.0(cytoscape@3.30.2): dependencies: cose-base: 1.0.3 - cytoscape: 3.28.1 + cytoscape: 3.30.2 - cytoscape-fcose@2.2.0(cytoscape@3.28.1): + cytoscape-fcose@2.2.0(cytoscape@3.30.2): dependencies: cose-base: 2.2.0 - cytoscape: 3.28.1 + cytoscape: 3.30.2 - cytoscape@3.28.1: - dependencies: - heap: 0.2.7 - lodash: 4.17.21 + cytoscape@3.30.2: {} d3-array@2.12.1: dependencies: @@ -21685,7 +21973,7 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - d3@7.8.5: + d3@7.9.0: dependencies: d3-array: 3.2.4 d3-axis: 3.0.0 @@ -21720,7 +22008,7 @@ snapshots: dagre-d3-es@7.0.10: dependencies: - d3: 7.8.5 + d3: 7.9.0 lodash-es: 4.17.21 data-uri-to-buffer@4.0.1: {} @@ -21747,9 +22035,13 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.4(supports-color@8.1.1): + debug@4.3.4: dependencies: ms: 2.1.2 + + debug@4.3.7(supports-color@8.1.1): + dependencies: + ms: 2.1.3 optionalDependencies: supports-color: 8.1.1 @@ -21801,11 +22093,11 @@ snapshots: abstract-leveldown: 6.2.3 inherits: 2.0.4 - define-data-property@1.1.1: + define-data-property@1.1.4: dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.1 define-lazy-prop@2.0.0: {} @@ -21813,8 +22105,8 @@ snapshots: define-properties@1.2.1: dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 defu@6.1.4: {} @@ -21835,8 +22127,6 @@ snapshots: dequal@2.0.3: {} - destr@2.0.2: {} - destr@2.0.3: {} destroy@1.2.0: {} @@ -21849,7 +22139,7 @@ snapshots: detect-libc@2.0.3: {} - devalue@5.0.0: {} + devalue@5.1.1: {} devlop@1.1.0: dependencies: @@ -21896,7 +22186,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.0.8: {} + dompurify@3.1.6: {} domutils@3.1.0: dependencies: @@ -21907,7 +22197,7 @@ snapshots: dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 dot-prop@5.3.0: dependencies: @@ -21933,22 +22223,23 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@opentelemetry/api@1.7.0)(@prisma/client@5.9.1)(@types/better-sqlite3@7.6.9)(@types/pg@8.11.0)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.3.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6))(kysely@0.24.2)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(react@18.3.1)(sqlite3@5.1.6): + drizzle-orm@0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@opentelemetry/api@1.7.0)(@prisma/client@6.0.0(prisma@6.0.0))(@types/better-sqlite3@7.6.9)(@types/pg@8.11.0)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.6.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13)))(kysely@0.24.2)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(prisma@6.0.0)(react@18.3.1)(sqlite3@5.1.6(encoding@0.1.13)): optionalDependencies: '@cloudflare/workers-types': 4.20240117.0 '@libsql/client': 0.6.0 '@opentelemetry/api': 1.7.0 - '@prisma/client': 5.9.1(prisma@5.9.1) + '@prisma/client': 6.0.0(prisma@6.0.0) '@types/better-sqlite3': 7.6.9 '@types/pg': 8.11.0 '@types/react': 18.2.78 - '@xata.io/client': 0.28.0(typescript@5.3.3) + '@xata.io/client': 0.28.0(typescript@5.6.3) better-sqlite3: 9.6.0 knex: 2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13)) kysely: 0.24.2 mysql2: 3.9.7 pg: 8.11.3 postgres: 3.4.3 + prisma: 6.0.0 react: 18.3.1 sqlite3: 5.1.6(encoding@0.1.13) @@ -21958,14 +22249,6 @@ snapshots: dependencies: readable-stream: 2.3.8 - duplexify@4.1.2: - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 3.6.2 - stream-shift: 1.0.3 - optional: true - duplexify@4.1.3: dependencies: end-of-stream: 1.4.4 @@ -21988,11 +22271,9 @@ snapshots: dependencies: jake: 10.8.7 - electron-to-chromium@1.4.647: {} - electron-to-chromium@1.4.693: {} - elkjs@0.8.2: {} + electron-to-chromium@1.5.36: {} emoji-regex@8.0.0: {} @@ -22000,6 +22281,8 @@ snapshots: encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + encoding-down@6.3.0: dependencies: abstract-leveldown: 6.3.0 @@ -22045,15 +22328,15 @@ snapshots: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + call-bind: 1.0.7 es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 @@ -22082,17 +22365,23 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.13 + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + es-iterator-helpers@1.0.15: dependencies: asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 es-set-tostringtag: 2.0.2 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 globalthis: 1.0.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 has-proto: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.6 @@ -22103,7 +22392,7 @@ snapshots: es-set-tostringtag@2.0.2: dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-tostringtag: 1.0.0 hasown: 2.0.0 @@ -22131,7 +22420,7 @@ snapshots: esbuild-register@3.5.0(esbuild@0.19.12): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) esbuild: 0.19.12 transitivePeerDependencies: - supports-color @@ -22212,31 +22501,31 @@ snapshots: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - esbuild@0.20.1: + esbuild@0.20.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.20.1 - '@esbuild/android-arm': 0.20.1 - '@esbuild/android-arm64': 0.20.1 - '@esbuild/android-x64': 0.20.1 - '@esbuild/darwin-arm64': 0.20.1 - '@esbuild/darwin-x64': 0.20.1 - '@esbuild/freebsd-arm64': 0.20.1 - '@esbuild/freebsd-x64': 0.20.1 - '@esbuild/linux-arm': 0.20.1 - '@esbuild/linux-arm64': 0.20.1 - '@esbuild/linux-ia32': 0.20.1 - '@esbuild/linux-loong64': 0.20.1 - '@esbuild/linux-mips64el': 0.20.1 - '@esbuild/linux-ppc64': 0.20.1 - '@esbuild/linux-riscv64': 0.20.1 - '@esbuild/linux-s390x': 0.20.1 - '@esbuild/linux-x64': 0.20.1 - '@esbuild/netbsd-x64': 0.20.1 - '@esbuild/openbsd-x64': 0.20.1 - '@esbuild/sunos-x64': 0.20.1 - '@esbuild/win32-arm64': 0.20.1 - '@esbuild/win32-ia32': 0.20.1 - '@esbuild/win32-x64': 0.20.1 + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 esbuild@0.21.5: optionalDependencies: @@ -22266,6 +22555,8 @@ snapshots: escalade@3.1.1: {} + escalade@3.2.0: {} + escape-html@1.0.3: {} escape-string-regexp@1.0.5: {} @@ -22283,14 +22574,14 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.5.0(eslint@9.9.1(jiti@1.21.0)): + eslint-compat-utils@0.5.0(eslint@9.9.1(jiti@1.21.6)): dependencies: - eslint: 9.9.1(jiti@1.21.0) - semver: 7.6.0 + eslint: 9.9.1(jiti@1.21.6) + semver: 7.6.3 - eslint-config-prettier@8.10.0(eslint@9.9.1(jiti@1.21.0)): + eslint-config-prettier@8.10.0(eslint@9.9.1(jiti@1.21.6)): dependencies: - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) eslint-import-resolver-node@0.3.9: dependencies: @@ -22300,13 +22591,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@4.1.1(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3): + eslint-plugin-import-x@4.1.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3): dependencies: '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.3.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) + debug: 4.3.7(supports-color@8.1.1) doctrine: 3.0.0 - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.8.0 is-glob: 4.0.3 @@ -22318,36 +22609,36 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@39.9.1(eslint@9.9.1(jiti@1.21.0)): + eslint-plugin-jsdoc@39.9.1(eslint@9.9.1(jiti@1.21.6)): dependencies: '@es-joy/jsdoccomment': 0.36.1 comment-parser: 1.3.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) esquery: 1.5.0 - semver: 7.5.4 + semver: 7.6.3 spdx-expression-parse: 3.0.1 transitivePeerDependencies: - supports-color - eslint-plugin-promise@6.1.1(eslint@9.9.1(jiti@1.21.0)): + eslint-plugin-promise@6.1.1(eslint@9.9.1(jiti@1.21.6)): dependencies: - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) eslint-plugin-qwik@1.5.7(eslint@8.57.0): dependencies: eslint: 8.57.0 jsx-ast-utils: 3.3.5 - eslint-plugin-react@7.33.2(eslint@9.9.1(jiti@1.21.0)): + eslint-plugin-react@7.33.2(eslint@9.9.1(jiti@1.21.6)): dependencies: array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 es-iterator-helpers: 1.0.15 - eslint: 9.9.1(jiti@1.21.0) + eslint: 9.9.1(jiti@1.21.6) estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -22360,23 +22651,23 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.10 - eslint-plugin-svelte@2.38.0(eslint@9.9.1(jiti@1.21.0))(svelte@4.2.9)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)): + eslint-plugin-svelte@2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) - '@jridgewell/sourcemap-codec': 1.4.15 - debug: 4.3.4(supports-color@8.1.1) - eslint: 9.9.1(jiti@1.21.0) - eslint-compat-utils: 0.5.0(eslint@9.9.1(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) + '@jridgewell/sourcemap-codec': 1.5.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.9.1(jiti@1.21.6) + eslint-compat-utils: 0.5.0(eslint@9.9.1(jiti@1.21.6)) esutils: 2.0.3 known-css-properties: 0.30.0 - postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)) - postcss-safe-parser: 6.0.0(postcss@8.4.38) + postcss: 8.4.47 + postcss-load-config: 3.1.4(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3)) + postcss-safe-parser: 6.0.0(postcss@8.4.47) postcss-selector-parser: 6.0.16 - semver: 7.6.0 - svelte-eslint-parser: 0.35.0(svelte@4.2.9) + semver: 7.6.3 + svelte-eslint-parser: 0.35.0(svelte@4.2.19) optionalDependencies: - svelte: 4.2.9 + svelte: 4.2.19 transitivePeerDependencies: - supports-color - ts-node @@ -22398,7 +22689,7 @@ snapshots: eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -22408,7 +22699,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -22422,7 +22713,7 @@ snapshots: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -22438,9 +22729,9 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.9.1(jiti@1.21.0): + eslint@9.9.1(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 @@ -22451,7 +22742,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 @@ -22475,7 +22766,7 @@ snapshots: strip-ansi: 6.0.1 text-table: 0.2.0 optionalDependencies: - jiti: 1.21.0 + jiti: 1.21.6 transitivePeerDependencies: - supports-color @@ -22491,8 +22782,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -22542,7 +22833,7 @@ snapshots: estree-util-visit@2.0.0: dependencies: '@types/estree-jsx': 1.0.3 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 estree-walker@2.0.2: {} @@ -22626,70 +22917,34 @@ snapshots: dependencies: basic-auth: 2.0.1 - express@4.18.2: + express@4.20.0: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - express@4.19.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 finalhandler: 1.2.0 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 qs: 6.11.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.0 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -22717,7 +22972,7 @@ snapshots: fake-smtp-server@0.8.0: dependencies: cli: 1.0.1 - express: 4.19.2 + express: 4.20.0 express-basic-auth: 1.2.1 lodash: 4.17.21 mailparser: 3.6.6 @@ -22768,12 +23023,12 @@ snapshots: dependencies: format: 0.2.2 - fauna-shell@1.2.1(@swc/core@1.3.106)(@types/node@20.12.7)(encoding@0.1.13)(typescript@5.4.5): + fauna-shell@1.2.1(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(encoding@0.1.13)(typescript@5.6.3): dependencies: '@inquirer/prompts': 3.3.2 - '@oclif/core': 2.15.0(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5) - '@oclif/plugin-help': 5.2.20(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5) - '@oclif/plugin-plugins': 2.4.7(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5) + '@oclif/core': 2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/plugin-help': 5.2.20(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/plugin-plugins': 2.4.7(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) chalk: 4.1.2 cli-table: 0.3.11 cli-ux: 4.9.3 @@ -22842,6 +23097,8 @@ snapshots: transitivePeerDependencies: - encoding + fdir@6.4.0: {} + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -22873,12 +23130,16 @@ snapshots: dependencies: minimatch: 5.1.6 - filesize@10.1.0: {} + filesize@10.1.6: {} fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + finalhandler@1.1.2: dependencies: debug: 2.6.9 @@ -22915,7 +23176,7 @@ snapshots: find-yarn-workspace-root2@1.2.16: dependencies: - micromatch: 4.0.5 + micromatch: 4.0.8 pkg-dir: 4.2.0 firebase-admin@12.0.0(encoding@0.1.13): @@ -22956,11 +23217,9 @@ snapshots: dependencies: tabbable: 6.2.0 - focus-visible@5.2.0: {} - - follow-redirects@1.15.5(debug@4.3.4): + follow-redirects@1.15.5(debug@4.3.7): optionalDependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) for-each@0.3.3: dependencies: @@ -22994,7 +23253,7 @@ snapshots: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - qs: 6.11.2 + qs: 6.13.0 forwarded@0.2.0: {} @@ -23002,15 +23261,15 @@ snapshots: framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - tslib: 2.6.2 + tslib: 2.7.0 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - framer-motion@11.2.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@11.11.8(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - tslib: 2.6.2 + tslib: 2.7.0 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 react: 18.3.1 @@ -23067,7 +23326,7 @@ snapshots: function.prototype.name@1.1.6: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 @@ -23100,7 +23359,7 @@ snapshots: wide-align: 1.1.5 optional: true - gaxios@5.1.3: + gaxios@5.1.3(encoding@0.1.13): dependencies: extend: 3.0.2 https-proxy-agent: 5.0.1 @@ -23123,9 +23382,9 @@ snapshots: - supports-color optional: true - gcp-metadata@5.3.0: + gcp-metadata@5.3.0(encoding@0.1.13): dependencies: - gaxios: 5.1.3 + gaxios: 5.1.3(encoding@0.1.13) json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -23153,8 +23412,9 @@ snapshots: get-func-name@2.0.2: {} - get-intrinsic@1.2.2: + get-intrinsic@1.2.4: dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -23174,12 +23434,8 @@ snapshots: get-symbol-description@1.0.0: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - - get-tsconfig@4.7.2: - dependencies: - resolve-pkg-maps: 1.0.0 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 get-tsconfig@4.8.0: dependencies: @@ -23212,8 +23468,8 @@ snapshots: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 5.0.0 + minimatch: 9.0.5 + minipass: 7.1.1 path-scurry: 1.10.1 glob@7.2.3: @@ -23254,7 +23510,7 @@ snapshots: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 @@ -23279,7 +23535,7 @@ snapshots: '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 abort-controller: 3.0.0 - duplexify: 4.1.2 + duplexify: 4.1.3 google-auth-library: 9.11.0(encoding@0.1.13) node-fetch: 2.7.0(encoding@0.1.13) object-hash: 3.0.0 @@ -23294,26 +23550,26 @@ snapshots: gopd@1.0.1: dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 graceful-fs@4.2.11: {} graphemer@1.4.0: {} - graphql-config@5.0.3(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1)(typescript@5.4.5): + graphql-config@5.0.3(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1)(typescript@5.6.3): dependencies: '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/load': 8.0.1(graphql@16.8.1) '@graphql-tools/merge': 9.0.1(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.1(@types/node@20.12.7)(encoding@0.1.13)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@22.7.5)(encoding@0.1.13)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) - cosmiconfig: 8.3.6(typescript@5.4.5) + cosmiconfig: 8.3.6(typescript@5.6.3) graphql: 16.8.1 jiti: 1.21.0 minimatch: 4.2.3 string-env-interpolation: 1.0.1 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - '@types/node' - bufferutil @@ -23332,7 +23588,7 @@ snapshots: graphql-tag@2.12.6(graphql@16.8.1): dependencies: graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.7.0 graphql-ws@5.14.3(graphql@16.8.1): dependencies: @@ -23356,18 +23612,6 @@ snapshots: - supports-color optional: true - h3@1.10.1: - dependencies: - cookie-es: 1.0.0 - defu: 6.1.4 - destr: 2.0.2 - iron-webcrypto: 1.0.0 - ohash: 1.1.3 - radix3: 1.1.0 - ufo: 1.3.2 - uncrypto: 0.1.3 - unenv: 1.9.0 - h3@1.11.1: dependencies: cookie-es: 1.0.0 @@ -23383,6 +23627,8 @@ snapshots: transitivePeerDependencies: - uWebSockets.js + hachure-fill@0.5.2: {} + hard-rejection@2.1.0: {} has-bigints@1.0.2: {} @@ -23393,9 +23639,9 @@ snapshots: has-flag@4.0.0: {} - has-property-descriptors@1.0.1: + has-property-descriptors@1.0.2: dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 has-proto@1.0.1: {} @@ -23430,13 +23676,13 @@ snapshots: devlop: 1.1.0 hast-util-from-parse5: 8.0.1 parse5: 7.1.2 - vfile: 6.0.1 + vfile: 6.0.3 vfile-message: 4.0.2 hast-util-from-parse5@7.1.2: dependencies: - '@types/hast': 2.3.9 - '@types/unist': 2.0.10 + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 hastscript: 7.2.0 property-information: 6.4.1 vfile: 5.3.7 @@ -23446,11 +23692,11 @@ snapshots: hast-util-from-parse5@8.0.1: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 8.0.0 - property-information: 6.4.1 - vfile: 6.0.1 + property-information: 6.5.0 + vfile: 6.0.3 vfile-location: 5.0.2 web-namespaces: 2.0.1 @@ -23460,7 +23706,7 @@ snapshots: hast-util-parse-selector@3.1.1: dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.10 hast-util-parse-selector@4.0.0: dependencies: @@ -23468,7 +23714,7 @@ snapshots: hast-util-raw@7.2.3: dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.10 '@types/parse5': 6.0.3 hast-util-from-parse5: 7.1.2 hast-util-to-parse5: 7.1.0 @@ -23483,16 +23729,16 @@ snapshots: hast-util-raw@9.0.2: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 '@ungap/structured-clone': 1.2.0 hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -23509,7 +23755,7 @@ snapshots: mdast-util-mdx-expression: 2.0.0 mdast-util-mdx-jsx: 3.0.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.1 + property-information: 6.5.0 space-separated-tokens: 2.0.2 style-to-object: 0.4.4 unist-util-position: 5.0.0 @@ -23517,11 +23763,25 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-html@9.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + hast-util-to-jsx-runtime@2.3.0: dependencies: '@types/estree': 1.0.5 '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -23539,7 +23799,7 @@ snapshots: hast-util-to-parse5@7.1.0: dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.10 comma-separated-tokens: 2.0.3 property-information: 6.4.1 space-separated-tokens: 2.0.2 @@ -23551,7 +23811,7 @@ snapshots: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.4.1 + property-information: 6.5.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -23563,7 +23823,7 @@ snapshots: hast-util-to-text@4.0.0: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 @@ -23575,7 +23835,7 @@ snapshots: hastscript@7.2.0: dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.10 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 property-information: 6.4.1 @@ -23586,7 +23846,7 @@ snapshots: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 6.4.1 + property-information: 6.5.0 space-separated-tokens: 2.0.2 he@1.2.0: {} @@ -23594,9 +23854,7 @@ snapshots: header-case@2.0.4: dependencies: capital-case: 1.0.4 - tslib: 2.6.2 - - heap@0.2.7: {} + tslib: 2.7.0 hexoid@1.0.0: {} @@ -23666,7 +23924,7 @@ snapshots: http-call@5.3.0: dependencies: content-type: 1.0.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) is-retry-allowed: 1.2.0 is-stream: 2.0.1 parse-json: 4.0.0 @@ -23688,7 +23946,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color optional: true @@ -23697,14 +23955,14 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.0: dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -23713,14 +23971,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -23751,13 +24009,11 @@ snapshots: ieee754@1.2.1: {} - ignore@5.3.0: {} - ignore@5.3.1: {} imagetools-core@6.0.4: dependencies: - sharp: 0.33.4 + sharp: 0.33.5 immediate@3.3.0: {} @@ -23776,7 +24032,7 @@ snapshots: import-meta-resolve@2.2.2: {} - import-meta-resolve@4.0.0: {} + import-meta-resolve@4.1.0: {} imurmurhash@0.1.4: {} @@ -23820,31 +24076,31 @@ snapshots: through: 2.3.8 wrap-ansi: 6.2.0 - instantsearch-ui-components@0.4.0: + instantsearch-ui-components@0.9.0: dependencies: '@babel/runtime': 7.23.9 - instantsearch.js@4.67.0(algoliasearch@4.23.3): + instantsearch.js@4.75.0(algoliasearch@4.24.0): dependencies: '@algolia/events': 4.0.1 '@types/dom-speech-recognition': 0.0.1 - '@types/google.maps': 3.55.7 + '@types/google.maps': 3.58.1 '@types/hogan.js': 3.0.5 - '@types/qs': 6.9.11 - algoliasearch: 4.23.3 - algoliasearch-helper: 3.18.0(algoliasearch@4.23.3) + '@types/qs': 6.9.16 + algoliasearch: 4.24.0 + algoliasearch-helper: 3.22.5(algoliasearch@4.24.0) hogan.js: 3.0.2 htm: 3.1.1 - instantsearch-ui-components: 0.4.0 - preact: 10.11.3 + instantsearch-ui-components: 0.9.0 + preact: 10.24.3 qs: 6.9.7 - search-insights: 2.13.0 + search-insights: 2.17.2 internal-slot@1.0.6: dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 hasown: 2.0.0 - side-channel: 1.0.4 + side-channel: 1.0.6 internmap@1.0.1: {} @@ -23852,8 +24108,6 @@ snapshots: interpret@2.2.0: {} - intersection-observer@0.12.2: {} - invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -23862,7 +24116,7 @@ snapshots: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -23871,8 +24125,10 @@ snapshots: standard-as-callback: 2.1.0 transitivePeerDependencies: - supports-color + optional: true - ip@2.0.0: {} + ip@2.0.0: + optional: true ipaddr.js@1.9.1: {} @@ -23896,8 +24152,8 @@ snapshots: is-array-buffer@3.0.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-typed-array: 1.1.12 is-arrayish@0.2.1: {} @@ -23918,7 +24174,7 @@ snapshots: is-boolean-object@1.1.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.0 is-buffer@2.0.5: {} @@ -23950,7 +24206,7 @@ snapshots: is-finalizationregistry@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-fullwidth-code-point@3.0.0: {} @@ -23975,7 +24231,7 @@ snapshots: is-lower-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 is-map@2.0.2: {} @@ -24007,7 +24263,7 @@ snapshots: is-regex@1.1.4: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.0 is-relative@1.0.0: @@ -24020,7 +24276,7 @@ snapshots: is-shared-array-buffer@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-stream@1.1.0: {} @@ -24052,18 +24308,18 @@ snapshots: is-upper-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 is-weakmap@2.0.1: {} is-weakref@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-weakset@2.0.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-what@4.1.16: {} @@ -24105,7 +24361,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -24119,7 +24375,7 @@ snapshots: iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 set-function-name: 2.0.1 @@ -24141,6 +24397,8 @@ snapshots: jiti@1.21.0: {} + jiti@1.21.6: {} + jju@1.4.0: {} joi@17.12.0: @@ -24153,9 +24411,10 @@ snapshots: jose@4.15.4: {} - jose@5.2.0: {} + jose@5.9.6: {} - js-base64@3.7.7: {} + js-base64@3.7.7: + optional: true js-stringify@1.0.2: {} @@ -24195,7 +24454,7 @@ snapshots: json-stable-stringify@1.1.1: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 isarray: 2.0.5 jsonify: 0.0.1 object-keys: 1.1.1 @@ -24209,6 +24468,8 @@ snapshots: jsonc-parser@3.2.1: {} + jsonc-parser@3.3.1: {} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -24247,7 +24508,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.5.4 + semver: 7.6.3 jstransformer@1.0.0: dependencies: @@ -24277,7 +24538,7 @@ snapshots: dependencies: '@types/express': 4.17.21 '@types/jsonwebtoken': 9.0.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) jose: 4.15.4 limiter: 1.1.5 lru-memoizer: 2.2.0 @@ -24320,7 +24581,7 @@ snapshots: dependencies: colorette: 2.0.19 commander: 10.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 escalade: 3.1.1 esm: 3.2.25 get-package-type: 0.1.0 @@ -24347,12 +24608,63 @@ snapshots: kysely@0.24.2: {} + langium@3.0.0: + dependencies: + chevrotain: 11.0.3 + chevrotain-allstar: 0.3.1(chevrotain@11.0.3) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.0.8 + layout-base@1.0.2: {} layout-base@2.0.1: {} leac@0.6.0: {} + lefthook-darwin-arm64@1.7.15: + optional: true + + lefthook-darwin-x64@1.7.15: + optional: true + + lefthook-freebsd-arm64@1.7.15: + optional: true + + lefthook-freebsd-x64@1.7.15: + optional: true + + lefthook-linux-arm64@1.7.15: + optional: true + + lefthook-linux-x64@1.7.15: + optional: true + + lefthook-openbsd-arm64@1.7.15: + optional: true + + lefthook-openbsd-x64@1.7.15: + optional: true + + lefthook-windows-arm64@1.7.15: + optional: true + + lefthook-windows-x64@1.7.15: + optional: true + + lefthook@1.7.15: + optionalDependencies: + lefthook-darwin-arm64: 1.7.15 + lefthook-darwin-x64: 1.7.15 + lefthook-freebsd-arm64: 1.7.15 + lefthook-freebsd-x64: 1.7.15 + lefthook-linux-arm64: 1.7.15 + lefthook-linux-x64: 1.7.15 + lefthook-openbsd-arm64: 1.7.15 + lefthook-openbsd-x64: 1.7.15 + lefthook-windows-arm64: 1.7.15 + lefthook-windows-x64: 1.7.15 + level-codec@9.0.2: dependencies: buffer: 5.7.1 @@ -24441,6 +24753,7 @@ snapshots: dependencies: '@neon-rs/load': 0.0.4 detect-libc: 2.0.2 + libsql: 0.3.19 optionalDependencies: '@libsql/darwin-arm64': 0.3.18 '@libsql/darwin-x64': 0.3.18 @@ -24450,6 +24763,19 @@ snapshots: '@libsql/linux-x64-musl': 0.3.18 '@libsql/win32-x64-msvc': 0.3.18 + libsql@0.3.19: + dependencies: + '@neon-rs/load': 0.0.4 + detect-libc: 2.0.2 + optionalDependencies: + '@libsql/darwin-arm64': 0.3.19 + '@libsql/darwin-x64': 0.3.19 + '@libsql/linux-arm64-gnu': 0.3.19 + '@libsql/linux-arm64-musl': 0.3.19 + '@libsql/linux-x64-gnu': 0.3.19 + '@libsql/linux-x64-musl': 0.3.19 + '@libsql/win32-x64-msvc': 0.3.19 + lil-fp@1.4.5: {} lilconfig@2.1.0: {} @@ -24464,26 +24790,6 @@ snapshots: dependencies: uc.micro: 2.0.0 - listhen@1.5.6: - dependencies: - '@parcel/watcher': 2.4.0 - '@parcel/watcher-wasm': 2.3.0 - citty: 0.1.5 - clipboardy: 4.0.0 - consola: 3.2.3 - defu: 6.1.4 - get-port-please: 3.1.2 - h3: 1.10.1 - http-shutdown: 1.2.2 - jiti: 1.21.0 - mlly: 1.5.0 - node-forge: 1.3.1 - pathe: 1.1.2 - std-env: 3.7.0 - ufo: 1.3.2 - untun: 0.1.3 - uqr: 0.1.2 - listhen@1.7.2: dependencies: '@parcel/watcher': 2.4.1 @@ -24497,7 +24803,7 @@ snapshots: h3: 1.11.1 http-shutdown: 1.2.2 jiti: 1.21.0 - mlly: 1.7.0 + mlly: 1.7.1 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 @@ -24537,8 +24843,8 @@ snapshots: local-pkg@0.5.0: dependencies: - mlly: 1.5.0 - pkg-types: 1.0.3 + mlly: 1.7.1 + pkg-types: 1.1.1 locate-character@3.0.0: {} @@ -24559,13 +24865,15 @@ snapshots: lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: {} + lodash.defaults@4.2.0: + optional: true lodash.get@4.4.2: {} lodash.includes@4.3.0: {} - lodash.isarguments@3.1.0: {} + lodash.isarguments@3.1.0: + optional: true lodash.isboolean@3.0.3: {} @@ -24619,11 +24927,11 @@ snapshots: lower-case-first@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 lower-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 lru-cache@10.2.0: {} @@ -24657,19 +24965,23 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 - magic-string@0.30.5: + magic-string@0.30.11: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.8: + magic-string@0.30.12: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 + + magic-string@0.30.5: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 magicast@0.3.3: dependencies: '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - source-map-js: 1.0.2 + source-map-js: 1.2.1 mailparser@3.6.6: dependencies: @@ -24695,7 +25007,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.5.4 + semver: 7.6.3 make-error@1.3.6: {} @@ -24732,6 +25044,8 @@ snapshots: markdown-table@3.0.3: {} + marked@13.0.3: {} + marked@4.3.0: {} mathjax-full@3.2.2: @@ -24749,7 +25063,7 @@ snapshots: mdast-util-find-and-replace@3.0.1: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -24790,7 +25104,7 @@ snapshots: mdast-util-frontmatter@2.0.1: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 mdast-util-from-markdown: 2.0.0 @@ -24801,7 +25115,7 @@ snapshots: mdast-util-gfm-autolink-literal@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 @@ -24809,7 +25123,7 @@ snapshots: mdast-util-gfm-footnote@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 @@ -24819,7 +25133,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: @@ -24827,7 +25141,7 @@ snapshots: mdast-util-gfm-table@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 mdast-util-from-markdown: 2.0.0 @@ -24837,7 +25151,7 @@ snapshots: mdast-util-gfm-task-list-item@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 @@ -24859,7 +25173,7 @@ snapshots: mdast-util-math@3.0.0: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 mdast-util-from-markdown: 2.0.0 @@ -24884,7 +25198,7 @@ snapshots: '@types/estree-jsx': 1.0.3 '@types/hast': 3.0.4 '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 @@ -24920,12 +25234,12 @@ snapshots: mdast-util-phrasing@4.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 unist-util-is: 6.0.0 mdast-util-to-hast@12.3.0: dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.10 '@types/mdast': 3.0.15 mdast-util-definitions: 5.1.2 micromark-util-sanitize-uri: 1.2.0 @@ -24946,6 +25260,18 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.1 + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + mdast-util-to-markdown@2.1.0: dependencies: '@types/mdast': 4.0.3 @@ -25000,46 +25326,45 @@ snapshots: dependencies: is-what: 4.1.16 - merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} merge2@1.4.1: {} - mermaid@10.6.0: + mermaid@11.3.0: dependencies: - '@braintree/sanitize-url': 6.0.4 - '@types/d3-scale': 4.0.8 - '@types/d3-scale-chromatic': 3.0.3 - cytoscape: 3.28.1 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.28.1) - cytoscape-fcose: 2.2.0(cytoscape@3.28.1) - d3: 7.8.5 + '@braintree/sanitize-url': 7.1.0 + '@iconify/utils': 2.1.33 + '@mermaid-js/parser': 0.3.0 + cytoscape: 3.30.2 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.30.2) + cytoscape-fcose: 2.2.0(cytoscape@3.30.2) + d3: 7.9.0 d3-sankey: 0.12.3 dagre-d3-es: 7.0.10 dayjs: 1.11.10 - dompurify: 3.0.8 - elkjs: 0.8.2 + dompurify: 3.1.6 + katex: 0.16.9 khroma: 2.1.0 lodash-es: 4.17.21 - mdast-util-from-markdown: 1.3.1 - non-layered-tidy-tree-layout: 2.0.2 + marked: 13.0.3 + roughjs: 4.6.6 stylis: 4.3.1 ts-dedent: 2.2.0 uuid: 9.0.1 - web-worker: 1.3.0 transitivePeerDependencies: - supports-color - meros@1.3.0(@types/node@20.12.7): + meros@1.3.0(@types/node@22.7.5): optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 22.7.5 methods@1.1.2: {} mhchemparser@4.2.1: {} - microdiff@1.3.2: {} + microdiff@1.4.0: {} micromark-core-commonmark@1.1.0: dependencies: @@ -25196,8 +25521,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.0 micromark-extension-mdx-md: 2.0.0 @@ -25350,7 +25675,7 @@ snapshots: dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.5 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 micromark-util-symbol: 2.0.0 @@ -25414,7 +25739,7 @@ snapshots: micromark@3.2.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -25436,7 +25761,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.0 @@ -25460,6 +25785,11 @@ snapshots: braces: 3.0.2 picomatch: 2.3.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mikro-orm@5.9.7: {} mime-db@1.52.0: {} @@ -25506,10 +25836,6 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -25585,19 +25911,19 @@ snapshots: mkdirp@3.0.1: {} - mlly@1.5.0: + mlly@1.7.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.1 pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.3.2 + pkg-types: 1.1.1 + ufo: 1.5.3 - mlly@1.7.0: + mlly@1.7.2: dependencies: - acorn: 8.11.3 + acorn: 8.12.1 pathe: 1.1.2 - pkg-types: 1.1.1 - ufo: 1.5.3 + pkg-types: 1.2.1 + ufo: 1.5.4 mnemonist@0.38.3: dependencies: @@ -25609,35 +25935,19 @@ snapshots: moment@2.30.1: {} - mongodb-connection-string-url@2.6.0: - dependencies: - '@types/whatwg-url': 8.2.2 - whatwg-url: 11.0.0 - mongodb-connection-string-url@3.0.0: dependencies: '@types/whatwg-url': 11.0.4 whatwg-url: 13.0.0 - mongodb@4.17.2: - dependencies: - bson: 4.7.2 - mongodb-connection-string-url: 2.6.0 - socks: 2.7.1 - optionalDependencies: - '@aws-sdk/credential-providers': 3.499.0 - '@mongodb-js/saslprep': 1.1.4 - transitivePeerDependencies: - - aws-crt - - mongodb@6.3.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0)(socks@2.7.1): + mongodb@6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1): dependencies: - '@mongodb-js/saslprep': 1.1.4 - bson: 6.2.0 + '@mongodb-js/saslprep': 1.1.9 + bson: 6.8.0 mongodb-connection-string-url: 3.0.0 optionalDependencies: '@aws-sdk/credential-providers': 3.499.0 - gcp-metadata: 5.3.0 + gcp-metadata: 5.3.0(encoding@0.1.13) socks: 2.7.1 morgan@1.10.0: @@ -25667,10 +25977,10 @@ snapshots: mssql@7.3.5(encoding@0.1.13): dependencies: '@tediousjs/connection-string': 0.3.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) rfdc: 1.3.1 tarn: 3.0.2 - tedious: 11.8.0(debug@4.3.4)(encoding@0.1.13) + tedious: 11.8.0(debug@4.3.7)(encoding@0.1.13) transitivePeerDependencies: - encoding - supports-color @@ -25711,8 +26021,6 @@ snapshots: nanoid@3.3.7: {} - nanoid@5.0.7: {} - napi-build-utils@1.0.2: {} napi-macros@2.0.0: {} @@ -25739,40 +26047,40 @@ snapshots: neo4j-driver-core: 5.16.0 rxjs: 7.8.1 - next-sitemap@4.2.3(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0)): + next-sitemap@4.2.3(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0)): dependencies: '@corex/deepmerge': 4.0.43 '@next/env': 13.5.6 fast-glob: 3.3.2 minimist: 1.2.8 - next: 14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) + next: 14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0): + next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0): dependencies: - '@next/env': 14.2.3 + '@next/env': 14.2.15 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001609 + caniuse-lite: 1.0.30001668 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.1(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.3 - '@next/swc-darwin-x64': 14.2.3 - '@next/swc-linux-arm64-gnu': 14.2.3 - '@next/swc-linux-arm64-musl': 14.2.3 - '@next/swc-linux-x64-gnu': 14.2.3 - '@next/swc-linux-x64-musl': 14.2.3 - '@next/swc-win32-arm64-msvc': 14.2.3 - '@next/swc-win32-ia32-msvc': 14.2.3 - '@next/swc-win32-x64-msvc': 14.2.3 + '@next/swc-darwin-arm64': 14.2.15 + '@next/swc-darwin-x64': 14.2.15 + '@next/swc-linux-arm64-gnu': 14.2.15 + '@next/swc-linux-arm64-musl': 14.2.15 + '@next/swc-linux-x64-gnu': 14.2.15 + '@next/swc-linux-x64-musl': 14.2.15 + '@next/swc-win32-arm64-msvc': 14.2.15 + '@next/swc-win32-ia32-msvc': 14.2.15 + '@next/swc-win32-x64-msvc': 14.2.15 '@opentelemetry/api': 1.7.0 '@playwright/test': 1.41.2 sass: 1.70.0 @@ -25780,89 +26088,86 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@19.0.0-rc-935180c7e0-20240524(react@18.2.0))(react@18.2.0)(sass@1.70.0): + next@15.0.0-rc.1(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@19.0.0-rc-4c58fce7-20240904(react@19.0.0-rc-4c58fce7-20240904))(react@19.0.0-rc-4c58fce7-20240904)(sass@1.70.0): dependencies: - '@next/env': 14.2.3 - '@swc/helpers': 0.5.5 + '@next/env': 15.0.0-rc.1 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.13 busboy: 1.6.0 - caniuse-lite: 1.0.30001609 - graceful-fs: 4.2.11 + caniuse-lite: 1.0.30001668 postcss: 8.4.31 - react: 18.2.0 - react-dom: 19.0.0-rc-935180c7e0-20240524(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + react: 19.0.0-rc-4c58fce7-20240904 + react-dom: 19.0.0-rc-4c58fce7-20240904(react@19.0.0-rc-4c58fce7-20240904) + styled-jsx: 5.1.6(react@19.0.0-rc-4c58fce7-20240904) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.3 - '@next/swc-darwin-x64': 14.2.3 - '@next/swc-linux-arm64-gnu': 14.2.3 - '@next/swc-linux-arm64-musl': 14.2.3 - '@next/swc-linux-x64-gnu': 14.2.3 - '@next/swc-linux-x64-musl': 14.2.3 - '@next/swc-win32-arm64-msvc': 14.2.3 - '@next/swc-win32-ia32-msvc': 14.2.3 - '@next/swc-win32-x64-msvc': 14.2.3 + '@next/swc-darwin-arm64': 15.0.0-rc.1 + '@next/swc-darwin-x64': 15.0.0-rc.1 + '@next/swc-linux-arm64-gnu': 15.0.0-rc.1 + '@next/swc-linux-arm64-musl': 15.0.0-rc.1 + '@next/swc-linux-x64-gnu': 15.0.0-rc.1 + '@next/swc-linux-x64-musl': 15.0.0-rc.1 + '@next/swc-win32-arm64-msvc': 15.0.0-rc.1 + '@next/swc-win32-x64-msvc': 15.0.0-rc.1 '@opentelemetry/api': 1.7.0 '@playwright/test': 1.41.2 sass: 1.70.0 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.0.0-rc.0(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522))(react@19.0.0-rc-4c2e457c7c-20240522)(sass@1.70.0): + next@15.0.0-rc.1(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@19.0.0-rc-935180c7e0-20240524(react@18.3.1))(react@18.3.1)(sass@1.70.0): dependencies: - '@next/env': 15.0.0-rc.0 - '@swc/helpers': 0.5.11 + '@next/env': 15.0.0-rc.1 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.13 busboy: 1.6.0 - caniuse-lite: 1.0.30001609 - graceful-fs: 4.2.11 + caniuse-lite: 1.0.30001668 postcss: 8.4.31 - react: 19.0.0-rc-4c2e457c7c-20240522 - react-dom: 19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522) - styled-jsx: 5.1.3(react@19.0.0-rc-4c2e457c7c-20240522) + react: 18.3.1 + react-dom: 19.0.0-rc-935180c7e0-20240524(react@18.3.1) + styled-jsx: 5.1.6(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.0.0-rc.0 - '@next/swc-darwin-x64': 15.0.0-rc.0 - '@next/swc-linux-arm64-gnu': 15.0.0-rc.0 - '@next/swc-linux-arm64-musl': 15.0.0-rc.0 - '@next/swc-linux-x64-gnu': 15.0.0-rc.0 - '@next/swc-linux-x64-musl': 15.0.0-rc.0 - '@next/swc-win32-arm64-msvc': 15.0.0-rc.0 - '@next/swc-win32-ia32-msvc': 15.0.0-rc.0 - '@next/swc-win32-x64-msvc': 15.0.0-rc.0 + '@next/swc-darwin-arm64': 15.0.0-rc.1 + '@next/swc-darwin-x64': 15.0.0-rc.1 + '@next/swc-linux-arm64-gnu': 15.0.0-rc.1 + '@next/swc-linux-arm64-musl': 15.0.0-rc.1 + '@next/swc-linux-x64-gnu': 15.0.0-rc.1 + '@next/swc-linux-x64-musl': 15.0.0-rc.1 + '@next/swc-win32-arm64-msvc': 15.0.0-rc.1 + '@next/swc-win32-x64-msvc': 15.0.0-rc.1 '@opentelemetry/api': 1.7.0 '@playwright/test': 1.41.2 sass: 1.70.0 - sharp: 0.33.4 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - nextra-theme-docs@3.0.0-alpha.24(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(nextra@3.0.0-alpha.24(@types/react@18.2.78)(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + nextra-theme-docs@3.0.15(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(nextra@3.0.15(@types/react@18.2.78)(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@headlessui/react': 1.7.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@popperjs/core': 2.11.8 + '@headlessui/react': 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) clsx: 2.1.0 escape-string-regexp: 5.0.0 flexsearch: 0.7.43 - focus-visible: 5.2.0 - intersection-observer: 0.12.2 - next: 14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) + next: 14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) next-themes: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - nextra: 3.0.0-alpha.24(@types/react@18.2.78)(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + nextra: 3.0.15(@types/react@18.2.78)(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 zod: 3.22.4 - nextra@3.0.0-alpha.24(@types/react@18.2.78)(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5): + nextra@3.0.15(@types/react@18.2.78)(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3): dependencies: - '@headlessui/react': 1.7.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mdx-js/mdx': 3.0.0 + '@formatjs/intl-localematcher': 0.5.5 + '@headlessui/react': 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mdx-js/mdx': 3.0.1 '@mdx-js/react': 3.0.0(@types/react@18.2.78)(react@18.3.1) '@napi-rs/simple-git': 0.1.16 - '@shikijs/twoslash': 1.2.4(typescript@5.4.5) - '@theguild/remark-mermaid': 0.0.5(react@18.3.1) - '@theguild/remark-npm2yarn': 0.3.0 + '@shikijs/twoslash': 1.2.4(typescript@5.6.3) + '@theguild/remark-mermaid': 0.1.3(react@18.3.1) + '@theguild/remark-npm2yarn': 0.3.2 better-react-mathjax: 2.0.3(react@18.3.1) clsx: 2.1.0 estree-util-to-js: 2.0.0 @@ -25872,43 +26177,44 @@ snapshots: gray-matter: 4.0.3 hast-util-to-estree: 3.1.0 katex: 0.16.9 - next: 14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) - p-limit: 4.0.0 + negotiator: 0.6.3 + next: 14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) + p-limit: 6.1.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) rehype-katex: 7.0.0 - rehype-pretty-code: 0.13.0(shiki@1.3.0) + rehype-pretty-code: 0.14.0(shiki@1.22.0) rehype-raw: 7.0.0 remark-frontmatter: 5.0.0 remark-gfm: 4.0.0 remark-math: 6.0.0 remark-reading-time: 2.0.1 - remark-smartypants: 2.1.0 - shiki: 1.3.0 + remark-smartypants: 3.0.2 + shiki: 1.22.0 slash: 5.1.0 title: 3.5.3 unist-util-remove: 4.0.0 unist-util-visit: 5.0.0 yaml: 2.3.4 zod: 3.22.4 - zod-validation-error: 1.5.0(zod@3.22.4) + zod-validation-error: 3.4.0(zod@3.22.4) transitivePeerDependencies: - '@types/react' - supports-color - typescript - nlcst-to-string@3.1.1: + nlcst-to-string@4.0.0: dependencies: - '@types/nlcst': 1.0.4 + '@types/nlcst': 2.0.3 no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.7.0 node-abi@3.54.0: dependencies: - semver: 7.6.0 + semver: 7.6.3 node-abort-controller@2.0.0: {} @@ -25924,8 +26230,6 @@ snapshots: dependencies: path-is-absolute: 1.0.1 - node-fetch-native@1.6.1: {} - node-fetch-native@1.6.4: {} node-fetch@2.6.7(encoding@0.1.13): @@ -25948,11 +26252,6 @@ snapshots: node-forge@1.3.1: {} - node-gyp-build-optional-packages@5.1.1: - dependencies: - detect-libc: 2.0.2 - optional: true - node-gyp-build@4.1.1: {} node-gyp@8.4.1: @@ -25964,7 +26263,7 @@ snapshots: nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.5.4 + semver: 7.6.3 tar: 6.2.0 which: 2.0.2 transitivePeerDependencies: @@ -25981,12 +26280,12 @@ snapshots: node-releases@2.0.14: {} + node-releases@2.0.18: {} + nodemailer@6.9.4: {} nodemailer@6.9.8: {} - non-layered-tidy-tree-layout@2.0.2: {} - nopt@1.0.10: dependencies: abbrev: 1.1.1 @@ -26006,7 +26305,7 @@ snapshots: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.13.1 - semver: 7.6.0 + semver: 7.6.3 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -26031,7 +26330,7 @@ snapshots: dependencies: path-key: 4.0.0 - npm-to-yarn@2.1.0: {} + npm-to-yarn@3.0.0: {} npmlog@5.0.1: dependencies: @@ -26052,7 +26351,7 @@ snapshots: dependencies: execa: 6.1.0 parse-package-name: 1.0.0 - semver: 7.5.4 + semver: 7.6.3 validate-npm-package-name: 4.0.0 nth-check@2.1.1: @@ -26061,7 +26360,7 @@ snapshots: nullthrows@1.1.1: {} - oauth4webapi@2.10.4: {} + oauth4webapi@3.1.3: {} object-assign@4.1.1: {} @@ -26081,20 +26380,20 @@ snapshots: object.assign@4.1.5: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 object.entries@1.1.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 object.fromentries@2.0.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 @@ -26105,7 +26404,7 @@ snapshots: object.values@1.1.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 @@ -26143,6 +26442,10 @@ snapshots: dependencies: mimic-fn: 4.0.0 + oniguruma-to-js@0.4.3: + dependencies: + regex: 4.3.3 + open@7.4.2: dependencies: is-docker: 2.2.1 @@ -26166,7 +26469,7 @@ snapshots: '@wry/caches': 1.0.1 '@wry/context': 0.7.4 '@wry/trie': 0.4.3 - tslib: 2.6.2 + tslib: 2.7.0 optionator@0.8.3: dependencies: @@ -26212,13 +26515,13 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: + p-limit@5.0.0: dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 - p-limit@5.0.0: + p-limit@6.1.0: dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 p-locate@4.1.0: dependencies: @@ -26234,12 +26537,14 @@ snapshots: p-try@2.2.0: {} + package-manager-detector@0.2.2: {} + packet-reader@1.0.0: {} param-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 parent-module@1.0.1: dependencies: @@ -26247,7 +26552,7 @@ snapshots: parse-entities@4.0.1: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 @@ -26274,11 +26579,14 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-latin@5.0.1: + parse-latin@7.0.0: dependencies: - nlcst-to-string: 3.1.1 - unist-util-modify-children: 3.1.1 - unist-util-visit-children: 2.0.2 + '@types/nlcst': 2.0.3 + '@types/unist': 3.0.3 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.3 parse-multipart-data@1.5.0: {} @@ -26308,7 +26616,7 @@ snapshots: pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 password-prompt@1.1.3: dependencies: @@ -26320,7 +26628,9 @@ snapshots: path-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 + + path-data-parser@0.1.0: {} path-exists@4.0.0: {} @@ -26343,9 +26653,9 @@ snapshots: path-scurry@1.10.1: dependencies: lru-cache: 10.2.0 - minipass: 5.0.0 + minipass: 7.1.1 - path-to-regexp@0.1.7: {} + path-to-regexp@0.1.10: {} path-type@4.0.0: {} @@ -26418,6 +26728,8 @@ snapshots: picocolors@1.0.0: {} + picocolors@1.1.0: {} + picomatch@2.3.1: {} pify@2.3.0: {} @@ -26432,114 +26744,138 @@ snapshots: pkg-types@1.0.3: dependencies: - jsonc-parser: 3.2.1 - mlly: 1.5.0 - pathe: 1.1.2 + jsonc-parser: 3.3.1 + mlly: 1.7.2 + pathe: 1.1.1 pkg-types@1.1.1: dependencies: confbox: 0.1.7 - mlly: 1.7.0 + mlly: 1.7.1 pathe: 1.1.2 - playwright-core@1.41.2: {} + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.2 + pathe: 1.1.2 + + playwright-core@1.40.0: {} + + playwright-core@1.41.2: + optional: true + + playwright@1.40.0: + dependencies: + playwright-core: 1.40.0 + optionalDependencies: + fsevents: 2.3.2 playwright@1.41.2: dependencies: playwright-core: 1.41.2 optionalDependencies: fsevents: 2.3.2 + optional: true pluralize@8.0.0: {} - postcss-discard-duplicates@6.0.2(postcss@8.4.38): + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: dependencies: - postcss: 8.4.38 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 - postcss-discard-empty@6.0.2(postcss@8.4.38): + postcss-discard-duplicates@6.0.3(postcss@8.4.47): dependencies: - postcss: 8.4.38 + postcss: 8.4.47 - postcss-import@15.1.0(postcss@8.4.38): + postcss-discard-empty@6.0.3(postcss@8.4.47): dependencies: - postcss: 8.4.38 + postcss: 8.4.47 + + postcss-import@15.1.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.38): + postcss-js@4.0.1(postcss@8.4.47): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.38 + postcss: 8.4.47 - postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)): + postcss-load-config@3.1.4(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - postcss: 8.4.38 - ts-node: 10.9.2(@types/node@20.11.7)(typescript@5.3.3) + postcss: 8.4.47 + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3) - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3)): dependencies: lilconfig: 3.1.1 yaml: 2.3.4 optionalDependencies: - postcss: 8.4.38 - ts-node: 10.9.2(@types/node@20.11.7)(typescript@5.3.3) - optional: true + postcss: 8.4.47 + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3) - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)): dependencies: lilconfig: 3.1.1 yaml: 2.3.4 optionalDependencies: - postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5) + postcss: 8.4.47 + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2) + optional: true - postcss-merge-rules@6.0.4(postcss@8.4.38): + postcss-merge-rules@6.1.1(postcss@8.4.47): dependencies: - browserslist: 4.23.0 + browserslist: 4.24.0 caniuse-api: 3.0.0 - cssnano-utils: 4.0.1(postcss@8.4.38) - postcss: 8.4.38 - postcss-selector-parser: 6.0.15 + cssnano-utils: 4.0.2(postcss@8.4.47) + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 - postcss-minify-selectors@6.0.2(postcss@8.4.38): + postcss-minify-selectors@6.0.4(postcss@8.4.47): dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 - postcss-nested@6.0.1(postcss@8.4.38): + postcss-nested@6.0.1(postcss@8.4.47): dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-selector-parser: 6.0.16 - postcss-nesting@12.0.2(postcss@8.4.19): + postcss-nesting@12.1.5(postcss@8.4.19): dependencies: - '@csstools/selector-specificity': 3.0.1(postcss-selector-parser@6.0.15) + '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.1.2) + '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2) postcss: 8.4.19 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.1.2 - postcss-normalize-whitespace@6.0.1(postcss@8.4.38): + postcss-normalize-whitespace@6.0.2(postcss@8.4.47): dependencies: - postcss: 8.4.38 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-safe-parser@6.0.0(postcss@8.4.38): + postcss-safe-parser@6.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.38 + postcss: 8.4.47 - postcss-scss@4.0.9(postcss@8.4.38): + postcss-scss@4.0.9(postcss@8.4.47): dependencies: - postcss: 8.4.38 + postcss: 8.4.47 - postcss-selector-parser@6.0.15: + postcss-selector-parser@6.0.16: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@6.0.16: + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -26547,28 +26883,22 @@ snapshots: postcss-value-parser@4.2.0: {} postcss@8.4.19: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - postcss@8.4.31: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.2.0 - postcss@8.4.33: + postcss@8.4.31: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.1.0 + picocolors: 1.1.0 + source-map-js: 1.2.1 - postcss@8.4.38: + postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 + picocolors: 1.1.0 + source-map-js: 1.2.1 postgres-array@2.0.0: {} @@ -26746,16 +27076,15 @@ snapshots: transitivePeerDependencies: - encoding - preact-render-to-string@5.2.3(preact@10.11.3): + preact-render-to-string@6.5.11(preact@10.24.3): dependencies: - preact: 10.11.3 - pretty-format: 3.8.0 + preact: 10.24.3 - preact@10.11.3: {} + preact@10.24.3: {} prebuild-install@7.1.1: dependencies: - detect-libc: 2.0.2 + detect-libc: 2.0.3 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 @@ -26768,33 +27097,31 @@ snapshots: tar-fs: 2.1.1 tunnel-agent: 0.6.0 - preferred-pm@3.1.3: + preferred-pm@3.1.4: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 - which-pm: 2.0.0 + which-pm: 2.2.0 prelude-ls@1.1.2: {} prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.9): + prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19): dependencies: prettier: 3.3.3 - svelte: 4.2.9 + svelte: 4.2.19 - prettier-plugin-tailwindcss@0.6.6(@prettier/plugin-pug@3.0.0(prettier@3.3.3))(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.9))(prettier@3.3.3): + prettier-plugin-tailwindcss@0.6.6(@prettier/plugin-pug@3.0.0(prettier@3.3.3))(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19))(prettier@3.3.3): dependencies: prettier: 3.3.3 optionalDependencies: '@prettier/plugin-pug': 3.0.0(prettier@3.3.3) - prettier-plugin-svelte: 3.2.6(prettier@3.3.3)(svelte@4.2.9) + prettier-plugin-svelte: 3.2.6(prettier@3.3.3)(svelte@4.2.19) prettier@2.8.8: {} - prettier@3.3.2: {} - prettier@3.3.3: {} pretty-format@29.7.0: @@ -26803,21 +27130,17 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.2.0 - pretty-format@3.8.0: {} - prism-react-renderer@2.1.0(react@18.3.1): dependencies: '@types/prismjs': 1.26.3 clsx: 1.2.1 react: 18.3.1 - prisma@5.8.1: - dependencies: - '@prisma/engines': 5.8.1 - - prisma@5.9.1: + prisma@6.0.0: dependencies: - '@prisma/engines': 5.9.1 + '@prisma/engines': 6.0.0 + optionalDependencies: + fsevents: 2.3.3 prismjs@1.29.0: {} @@ -26844,27 +27167,13 @@ snapshots: property-information@6.4.1: {} + property-information@6.5.0: {} + proto3-json-serializer@2.0.2: dependencies: protobufjs: 7.3.2 optional: true - protobufjs@7.2.6: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 20.12.7 - long: 5.2.3 - optional: true - protobufjs@7.3.2: dependencies: '@protobufjs/aspromise': 1.1.2 @@ -26972,17 +27281,17 @@ snapshots: pvtsutils@1.3.5: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 pvutils@1.1.3: {} qs@6.11.0: dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 - qs@6.11.2: + qs@6.13.0: dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 qs@6.9.7: {} @@ -26998,13 +27307,6 @@ snapshots: rate-limiter-flexible@2.4.2: {} - raw-body@2.5.1: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - raw-body@2.5.2: dependencies: bytes: 3.1.2 @@ -27025,14 +27327,14 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-dom@19.0.0-rc-4c2e457c7c-20240522(react@19.0.0-rc-4c2e457c7c-20240522): + react-dom@19.0.0-rc-4c58fce7-20240904(react@19.0.0-rc-4c58fce7-20240904): dependencies: - react: 19.0.0-rc-4c2e457c7c-20240522 - scheduler: 0.25.0-rc-4c2e457c7c-20240522 + react: 19.0.0-rc-4c58fce7-20240904 + scheduler: 0.25.0-rc-4c58fce7-20240904 - react-dom@19.0.0-rc-935180c7e0-20240524(react@18.2.0): + react-dom@19.0.0-rc-935180c7e0-20240524(react@18.3.1): dependencies: - react: 18.2.0 + react: 18.3.1 scheduler: 0.25.0-rc-935180c7e0-20240524 react-error-boundary@4.0.13(react@18.3.1): @@ -27053,29 +27355,29 @@ snapshots: dependencies: react: 18.3.1 - react-instantsearch-core@7.7.2(algoliasearch@4.23.3)(react@18.3.1): + react-instantsearch-core@7.13.3(algoliasearch@4.24.0)(react@18.3.1): dependencies: '@babel/runtime': 7.23.9 - algoliasearch: 4.23.3 - algoliasearch-helper: 3.18.0(algoliasearch@4.23.3) - instantsearch.js: 4.67.0(algoliasearch@4.23.3) + algoliasearch: 4.24.0 + algoliasearch-helper: 3.22.5(algoliasearch@4.24.0) + instantsearch.js: 4.75.0(algoliasearch@4.24.0) react: 18.3.1 - use-sync-external-store: 1.2.0(react@18.3.1) + use-sync-external-store: 1.2.2(react@18.3.1) - react-instantsearch-nextjs@0.2.2(next@14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-instantsearch@7.7.2(algoliasearch@4.23.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + react-instantsearch-nextjs@0.2.5(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react-instantsearch@7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: - next: 14.2.3(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) - react-instantsearch: 7.7.2(algoliasearch@4.23.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0) + react-instantsearch: 7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-instantsearch@7.7.2(algoliasearch@4.23.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-instantsearch@7.13.3(algoliasearch@4.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.23.9 - algoliasearch: 4.23.3 - instantsearch-ui-components: 0.4.0 - instantsearch.js: 4.67.0(algoliasearch@4.23.3) + algoliasearch: 4.24.0 + instantsearch-ui-components: 0.9.0 + instantsearch.js: 4.75.0(algoliasearch@4.24.0) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-instantsearch-core: 7.7.2(algoliasearch@4.23.3)(react@18.3.1) + react-instantsearch-core: 7.13.3(algoliasearch@4.24.0)(react@18.3.1) react-is@16.13.1: {} @@ -27083,7 +27385,7 @@ snapshots: react-markdown@8.0.7(@types/react@18.2.78)(react@18.3.1): dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.10 '@types/prop-types': 15.7.11 '@types/react': 18.2.78 '@types/unist': 2.0.10 @@ -27105,13 +27407,6 @@ snapshots: react-property@2.0.0: {} - react-shadow@20.4.0(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - humps: 2.0.1 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-svg@16.1.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.23.9 @@ -27127,18 +27422,14 @@ snapshots: react: 18.3.1 use-composed-ref: 1.3.0(react@18.3.1) use-latest: 1.2.1(@types/react@18.2.78)(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - react@18.2.0: - dependencies: - loose-envify: 1.4.0 + transitivePeerDependencies: + - '@types/react' react@18.3.1: dependencies: loose-envify: 1.4.0 - react@19.0.0-rc-4c2e457c7c-20240522: {} + react@19.0.0-rc-4c58fce7-20240904: {} read-cache@1.0.0: dependencies: @@ -27205,6 +27496,8 @@ snapshots: dependencies: picomatch: 2.3.1 + readdirp@4.0.2: {} + reading-time@1.5.0: {} rechoir@0.8.0: @@ -27220,11 +27513,13 @@ snapshots: dependencies: esprima: 4.0.1 - redis-errors@1.2.0: {} + redis-errors@1.2.0: + optional: true redis-parser@3.0.0: dependencies: redis-errors: 1.2.0 + optional: true redis@4.6.12: dependencies: @@ -27241,10 +27536,10 @@ snapshots: reflect.getprototypeof@1.0.4: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 @@ -27260,9 +27555,11 @@ snapshots: dependencies: '@babel/runtime': 7.23.9 + regex@4.3.3: {} + regexp.prototype.flags@1.5.1: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 set-function-name: 2.0.1 @@ -27292,27 +27589,27 @@ snapshots: hast-util-to-text: 4.0.0 katex: 0.16.9 unist-util-visit-parents: 6.0.1 - vfile: 6.0.1 + vfile: 6.0.3 rehype-parse@9.0.0: dependencies: '@types/hast': 3.0.4 hast-util-from-html: 2.0.1 - unified: 11.0.4 + unified: 11.0.5 - rehype-pretty-code@0.13.0(shiki@1.3.0): + rehype-pretty-code@0.14.0(shiki@1.22.0): dependencies: '@types/hast': 3.0.4 hast-util-to-string: 3.0.0 parse-numeric-range: 1.3.0 rehype-parse: 9.0.0 - shiki: 1.3.0 - unified: 11.0.4 + shiki: 1.22.0 + unified: 11.0.5 unist-util-visit: 5.0.0 rehype-raw@6.1.1: dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.10 hast-util-raw: 7.2.3 unified: 10.1.2 @@ -27320,7 +27617,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 hast-util-raw: 9.0.2 - vfile: 6.0.1 + vfile: 6.0.3 relay-runtime@12.0.0(encoding@0.1.13): dependencies: @@ -27332,30 +27629,30 @@ snapshots: remark-frontmatter@5.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-frontmatter: 2.0.1 micromark-extension-frontmatter: 2.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color remark-gfm@4.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color remark-math@6.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-math: 3.0.0 micromark-extension-math: 3.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -27379,7 +27676,7 @@ snapshots: '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 micromark-util-types: 2.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -27392,7 +27689,7 @@ snapshots: remark-rehype@10.1.0: dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.10 '@types/mdast': 3.0.15 mdast-util-to-hast: 12.3.0 unified: 10.1.2 @@ -27402,20 +27699,21 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.3 mdast-util-to-hast: 13.1.0 - unified: 11.0.4 + unified: 11.0.5 vfile: 6.0.1 - remark-smartypants@2.1.0: + remark-smartypants@3.0.2: dependencies: - retext: 8.1.0 - retext-smartypants: 5.2.0 + retext: 9.0.0 + retext-smartypants: 6.2.0 + unified: 11.0.5 unist-util-visit: 5.0.0 remark-stringify@11.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 - unified: 11.0.4 + unified: 11.0.5 remedial@1.0.8: {} @@ -27459,32 +27757,30 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - retext-latin@3.1.0: + retext-latin@4.0.0: dependencies: - '@types/nlcst': 1.0.4 - parse-latin: 5.0.1 - unherit: 3.0.1 - unified: 10.1.2 + '@types/nlcst': 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.5 - retext-smartypants@5.2.0: + retext-smartypants@6.2.0: dependencies: - '@types/nlcst': 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 - unist-util-visit: 4.1.2 + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.0.0 - retext-stringify@3.1.0: + retext-stringify@4.0.0: dependencies: - '@types/nlcst': 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.5 - retext@8.1.0: + retext@9.0.0: dependencies: - '@types/nlcst': 1.0.4 - retext-latin: 3.1.0 - retext-stringify: 3.1.0 - unified: 10.1.2 + '@types/nlcst': 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.5 retry-as-promised@7.0.4: {} @@ -27562,24 +27858,12 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 - rollup@4.9.6: + roughjs@4.6.6: dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.6 - '@rollup/rollup-android-arm64': 4.9.6 - '@rollup/rollup-darwin-arm64': 4.9.6 - '@rollup/rollup-darwin-x64': 4.9.6 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 - '@rollup/rollup-linux-arm64-gnu': 4.9.6 - '@rollup/rollup-linux-arm64-musl': 4.9.6 - '@rollup/rollup-linux-riscv64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-musl': 4.9.6 - '@rollup/rollup-win32-arm64-msvc': 4.9.6 - '@rollup/rollup-win32-ia32-msvc': 4.9.6 - '@rollup/rollup-win32-x64-msvc': 4.9.6 - fsevents: 2.3.3 + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 route-sort@1.0.0: {} @@ -27599,7 +27883,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 sade@1.8.1: dependencies: @@ -27607,8 +27891,8 @@ snapshots: safe-array-concat@1.1.0: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 @@ -27618,8 +27902,8 @@ snapshots: safe-regex-test@1.0.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-regex: 1.1.4 safer-buffer@2.1.2: {} @@ -27635,7 +27919,7 @@ snapshots: dependencies: chokidar: 3.6.0 immutable: 4.3.5 - source-map-js: 1.2.0 + source-map-js: 1.2.1 sax@1.3.0: {} @@ -27643,7 +27927,7 @@ snapshots: dependencies: loose-envify: 1.4.0 - scheduler@0.25.0-rc-4c2e457c7c-20240522: {} + scheduler@0.25.0-rc-4c58fce7-20240904: {} scheduler@0.25.0-rc-935180c7e0-20240524: {} @@ -27653,7 +27937,7 @@ snapshots: scuid@1.1.0: {} - search-insights@2.13.0: {} + search-insights@2.17.2: {} section-matter@1.0.0: dependencies: @@ -27672,10 +27956,6 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - semver@7.6.3: {} send@0.18.0: @@ -27696,10 +27976,28 @@ snapshots: transitivePeerDependencies: - supports-color + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + sentence-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 upper-case-first: 2.0.2 seq-queue@0.0.5: {} @@ -27710,7 +28008,7 @@ snapshots: dependencies: '@types/debug': 4.1.12 '@types/validator': 13.11.8 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) dottie: 2.0.6 inflection: 1.13.4 lodash: 4.17.21 @@ -27718,7 +28016,7 @@ snapshots: moment-timezone: 0.5.44 pg-connection-string: 2.6.2 retry-as-promised: 7.0.4 - semver: 7.5.4 + semver: 7.6.3 sequelize-pool: 7.1.0 toposort-class: 1.0.1 uuid: 8.3.2 @@ -27733,7 +28031,7 @@ snapshots: seroval@1.0.4: {} - serve-static@1.15.0: + serve-static@1.16.0: dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -27746,21 +28044,22 @@ snapshots: set-blocking@2.0.0: {} - set-cookie-parser@2.6.0: {} + set-cookie-parser@2.7.0: {} - set-function-length@1.2.0: + set-function-length@1.2.2: dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 set-function-name@2.0.1: dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 setimmediate@1.0.5: {} @@ -27771,31 +28070,31 @@ snapshots: inherits: 2.0.4 safe-buffer: 5.2.1 - sharp@0.33.4: + sharp@0.33.5: dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.6.0 + semver: 7.6.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.4 - '@img/sharp-darwin-x64': 0.33.4 - '@img/sharp-libvips-darwin-arm64': 1.0.2 - '@img/sharp-libvips-darwin-x64': 1.0.2 - '@img/sharp-libvips-linux-arm': 1.0.2 - '@img/sharp-libvips-linux-arm64': 1.0.2 - '@img/sharp-libvips-linux-s390x': 1.0.2 - '@img/sharp-libvips-linux-x64': 1.0.2 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - '@img/sharp-linux-arm': 0.33.4 - '@img/sharp-linux-arm64': 0.33.4 - '@img/sharp-linux-s390x': 0.33.4 - '@img/sharp-linux-x64': 0.33.4 - '@img/sharp-linuxmusl-arm64': 0.33.4 - '@img/sharp-linuxmusl-x64': 0.33.4 - '@img/sharp-wasm32': 0.33.4 - '@img/sharp-win32-ia32': 0.33.4 - '@img/sharp-win32-x64': 0.33.4 + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 shebang-command@1.2.0: dependencies: @@ -27818,14 +28117,20 @@ snapshots: vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 - shiki@1.3.0: + shiki@1.22.0: dependencies: - '@shikijs/core': 1.3.0 + '@shikijs/core': 1.22.0 + '@shikijs/engine-javascript': 1.22.0 + '@shikijs/engine-oniguruma': 1.22.0 + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 - side-channel@1.0.4: + side-channel@1.0.6: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 object-inspect: 1.13.1 siginfo@2.0.0: {} @@ -27872,7 +28177,8 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - smart-buffer@4.2.0: {} + smart-buffer@4.2.0: + optional: true smtp-server@3.13.0: dependencies: @@ -27883,12 +28189,12 @@ snapshots: snake-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.7.0 socks-proxy-agent@6.2.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -27898,6 +28204,7 @@ snapshots: dependencies: ip: 2.0.0 smart-buffer: 4.2.0 + optional: true solid-js@1.8.12: dependencies: @@ -27924,10 +28231,10 @@ snapshots: '@solidjs/router': 0.8.4(solid-js@1.8.12) '@types/cookie': 0.5.4 '@types/debug': 4.1.12 - chokidar: 3.5.3 + chokidar: 3.6.0 compression: 1.7.4 connect: 3.7.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) dequal: 2.0.3 dotenv: 16.4.1 es-module-lexer: 1.4.1 @@ -27941,7 +28248,7 @@ snapshots: rollup-plugin-visualizer: 5.12.0(rollup@3.29.4) rollup-route-manifest: 1.0.0(rollup@3.29.4) sade: 1.8.1 - set-cookie-parser: 2.6.0 + set-cookie-parser: 2.7.0 sirv: 2.0.4 solid-js: 1.8.12 terser: 5.27.0 @@ -27949,7 +28256,7 @@ snapshots: vite: 5.3.1(@types/node@18.11.10)(sass@1.70.0)(terser@5.27.0) vite-plugin-inspect: 0.7.42(rollup@3.29.4)(vite@5.3.1(@types/node@18.11.10)(sass@1.70.0)(terser@5.27.0)) vite-plugin-solid: 2.9.1(solid-js@1.8.12)(vite@5.3.1(@types/node@18.11.10)(sass@1.70.0)(terser@5.27.0)) - wait-on: 6.0.1(debug@4.3.4) + wait-on: 6.0.1(debug@4.3.7) transitivePeerDependencies: - '@nuxt/kit' - '@testing-library/jest-dom' @@ -27962,19 +28269,10 @@ snapshots: sander: 0.5.1 sourcemap-codec: 1.4.8 - sorcery@0.11.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - buffer-crc32: 0.2.13 - minimist: 1.2.8 - sander: 0.5.1 - - source-map-js@1.0.2: {} - - source-map-js@1.1.0: {} - source-map-js@1.2.0: {} + source-map-js@1.2.1: {} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -28028,7 +28326,7 @@ snapshots: sponge-case@1.0.1: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 sprintf-js@1.0.3: {} @@ -28061,7 +28359,8 @@ snapshots: stackback@0.0.2: {} - standard-as-callback@2.1.0: {} + standard-as-callback@2.1.0: + optional: true statuses@1.5.0: {} @@ -28110,31 +28409,31 @@ snapshots: string.prototype.matchall@4.0.10: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 internal-slot: 1.0.6 regexp.prototype.flags: 1.5.1 set-function-name: 2.0.1 - side-channel: 1.0.4 + side-channel: 1.0.6 string.prototype.trim@1.2.8: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 string.prototype.trimend@1.0.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 string.prototype.trimstart@1.0.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 @@ -28153,6 +28452,11 @@ snapshots: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@5.2.0: dependencies: ansi-regex: 4.1.1 @@ -28185,7 +28489,7 @@ snapshots: strip-literal@1.3.0: dependencies: - acorn: 8.11.3 + acorn: 8.12.1 strnum@1.0.5: {} @@ -28208,20 +28512,20 @@ snapshots: dependencies: inline-style-parser: 0.2.2 - styled-jsx@5.1.1(react@18.2.0): + styled-jsx@5.1.1(react@18.3.1): dependencies: client-only: 0.0.1 - react: 18.2.0 + react: 18.3.1 - styled-jsx@5.1.1(react@18.3.1): + styled-jsx@5.1.6(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 - styled-jsx@5.1.3(react@19.0.0-rc-4c2e457c7c-20240522): + styled-jsx@5.1.6(react@19.0.0-rc-4c58fce7-20240904): dependencies: client-only: 0.0.1 - react: 19.0.0-rc-4c2e457c7c-20240522 + react: 19.0.0-rc-4c58fce7-20240904 stylis@4.3.1: {} @@ -28254,14 +28558,14 @@ snapshots: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 2.1.2 methods: 1.1.2 mime: 2.6.0 - qs: 6.11.2 - semver: 7.5.4 + qs: 6.13.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -28309,16 +28613,16 @@ snapshots: - bufferutil - utf-8-validate - svelte-check@2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)))(postcss@8.4.38)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.9): + svelte-check@2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19): dependencies: - '@jridgewell/trace-mapping': 0.3.22 - chokidar: 3.5.3 + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 3.6.0 fast-glob: 3.3.2 import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.9 - svelte-preprocess: 4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)))(postcss@8.4.38)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.9)(typescript@5.4.5) + svelte: 4.2.19 + svelte-preprocess: 4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' @@ -28332,43 +28636,33 @@ snapshots: - stylus - sugarss - svelte-check@3.6.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)))(postcss@8.4.38)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.9): + svelte-check@4.0.4(svelte@4.2.19)(typescript@5.6.3): dependencies: - '@jridgewell/trace-mapping': 0.3.22 - chokidar: 3.5.3 - fast-glob: 3.3.2 - import-fresh: 3.3.0 + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 4.0.1 + fdir: 6.4.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.9 - svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)))(postcss@8.4.38)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.9)(typescript@5.4.5) - typescript: 5.4.5 + svelte: 4.2.19 + typescript: 5.6.3 transitivePeerDependencies: - - '@babel/core' - - coffeescript - - less - - postcss - - postcss-load-config - - pug - - sass - - stylus - - sugarss + - picomatch - svelte-eslint-parser@0.35.0(svelte@4.2.9): + svelte-eslint-parser@0.35.0(svelte@4.2.19): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.38 - postcss-scss: 4.0.9(postcss@8.4.38) + postcss: 8.4.47 + postcss-scss: 4.0.9(postcss@8.4.47) optionalDependencies: - svelte: 4.2.9 + svelte: 4.2.19 - svelte-hmr@0.15.3(svelte@4.2.9): + svelte-hmr@0.16.0(svelte@4.2.19): dependencies: - svelte: 4.2.9 + svelte: 4.2.19 - svelte-preprocess@4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)))(postcss@8.4.38)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.9)(typescript@5.4.5): + svelte-preprocess@4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5): dependencies: '@types/pug': 2.0.10 '@types/sass': 1.45.0 @@ -28376,43 +28670,27 @@ snapshots: magic-string: 0.25.9 sorcery: 0.10.0 strip-indent: 3.0.0 - svelte: 4.2.9 - optionalDependencies: - '@babel/core': 7.23.9 - postcss: 8.4.38 - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)) - pug: 3.0.2 - sass: 1.70.0 - typescript: 5.4.5 - - svelte-preprocess@5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)))(postcss@8.4.38)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.9)(typescript@5.4.5): - dependencies: - '@types/pug': 2.0.10 - detect-indent: 6.1.0 - magic-string: 0.30.5 - sorcery: 0.11.0 - strip-indent: 3.0.0 - svelte: 4.2.9 + svelte: 4.2.19 optionalDependencies: '@babel/core': 7.23.9 - postcss: 8.4.38 - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)) + postcss: 8.4.47 + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)) pug: 3.0.2 sass: 1.70.0 typescript: 5.4.5 - svelte2tsx@0.7.0(svelte@4.2.9)(typescript@5.4.5): + svelte2tsx@0.7.21(svelte@4.2.19)(typescript@5.6.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.9 - typescript: 5.4.5 + svelte: 4.2.19 + typescript: 5.6.3 - svelte@4.2.9: + svelte@4.2.19: dependencies: '@ampproject/remapping': 2.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.5 acorn: 8.12.1 aria-query: 5.3.0 @@ -28422,7 +28700,7 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.8 + magic-string: 0.30.11 periscopic: 3.1.0 svgo@3.3.2: @@ -28433,11 +28711,11 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.0.0 + picocolors: 1.1.0 swap-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 symbol-observable@4.0.0: {} @@ -28445,11 +28723,11 @@ snapshots: tabbable@6.2.0: {} - tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)): + tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 - chokidar: 3.5.3 + chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.3.2 @@ -28461,12 +28739,12 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.15 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3)) + postcss-nested: 6.0.1(postcss@8.4.47) + postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -28507,13 +28785,13 @@ snapshots: tarn@3.0.2: {} - tedious@11.8.0(debug@4.3.4)(encoding@0.1.13): + tedious@11.8.0(debug@4.3.7)(encoding@0.1.13): dependencies: - '@azure/identity': 1.5.2(debug@4.3.4) + '@azure/identity': 1.5.2(debug@4.3.7) '@azure/keyvault-keys': 4.7.2 - '@azure/ms-rest-nodeauth': 3.1.1(debug@4.3.4)(encoding@0.1.13) + '@azure/ms-rest-nodeauth': 3.1.1(debug@4.3.7)(encoding@0.1.13) '@js-joda/core': 3.2.0 - adal-node: 0.2.4(debug@4.3.4) + adal-node: 0.2.4(debug@4.3.7) bl: 5.1.0 depd: 2.0.0 iconv-lite: 0.6.3 @@ -28589,13 +28867,15 @@ snapshots: tinybench@2.6.0: {} + tinyexec@0.3.1: {} + tinypool@0.8.2: {} tinyspy@2.2.0: {} title-case@3.0.3: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 title@3.5.3: dependencies: @@ -28637,10 +28917,6 @@ snapshots: tr46@0.0.3: {} - tr46@3.0.0: - dependencies: - punycode: 2.3.1 - tr46@4.1.1: dependencies: punycode: 2.3.1 @@ -28655,10 +28931,6 @@ snapshots: trough@2.1.0: {} - ts-api-utils@1.0.3(typescript@5.3.3): - dependencies: - typescript: 5.3.3 - ts-api-utils@1.3.0(typescript@5.3.3): dependencies: typescript: 5.3.3 @@ -28669,18 +28941,18 @@ snapshots: ts-dedent@2.2.0: {} - ts-evaluator@1.2.0(typescript@5.4.5): + ts-evaluator@1.2.0(typescript@5.6.3): dependencies: ansi-colors: 4.1.3 crosspath: 2.0.0 object-path: 0.11.8 - typescript: 5.4.5 + typescript: 5.6.3 ts-interface-checker@0.1.13: {} ts-invariant@0.10.3: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 ts-log@2.2.5: {} @@ -28689,7 +28961,7 @@ snapshots: '@ts-morph/common': 0.20.0 code-block-writer: 12.0.0 - ts-node@10.9.2(@swc/core@1.3.106)(@types/node@20.12.7)(typescript@5.4.5): + ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -28697,42 +28969,86 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.12.7 - acorn: 8.11.3 + acorn: 8.12.1 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.5 + typescript: 5.3.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.3.106(@swc/helpers@0.5.11) + '@swc/core': 1.3.106(@swc/helpers@0.5.13) + optional: true - ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3): + ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.7 - acorn: 8.11.3 + '@types/node': 20.12.7 + acorn: 8.12.1 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.3 + typescript: 5.6.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.106(@swc/helpers@0.5.13) + optional: true + + ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.7.5 + acorn: 8.12.1 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.106(@swc/helpers@0.5.13) optional: true + ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.7.5 + acorn: 8.12.1 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.106(@swc/helpers@0.5.13) + ts-pattern@5.0.5: {} - tsconfck@2.1.2(typescript@5.4.5): + tsconfck@2.1.2(typescript@5.6.3): optionalDependencies: - typescript: 5.4.5 + typescript: 5.6.3 tsconfck@3.1.0(typescript@5.4.5): optionalDependencies: @@ -28742,21 +29058,12 @@ snapshots: tslib@2.5.3: {} - tslib@2.6.2: {} - tslib@2.7.0: {} - tsx@4.7.0: - dependencies: - esbuild: 0.19.12 - get-tsconfig: 4.7.2 - optionalDependencies: - fsevents: 2.3.3 - tsx@4.7.3: dependencies: esbuild: 0.19.12 - get-tsconfig: 4.7.2 + get-tsconfig: 4.8.0 optionalDependencies: fsevents: 2.3.3 @@ -28766,40 +29073,40 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.0.14: + turbo-darwin-64@2.1.1: optional: true - turbo-darwin-arm64@2.0.14: + turbo-darwin-arm64@2.1.1: optional: true - turbo-linux-64@2.0.14: + turbo-linux-64@2.1.1: optional: true - turbo-linux-arm64@2.0.14: + turbo-linux-arm64@2.1.1: optional: true - turbo-windows-64@2.0.14: + turbo-windows-64@2.1.1: optional: true - turbo-windows-arm64@2.0.14: + turbo-windows-arm64@2.1.1: optional: true - turbo@2.0.14: + turbo@2.1.1: optionalDependencies: - turbo-darwin-64: 2.0.14 - turbo-darwin-arm64: 2.0.14 - turbo-linux-64: 2.0.14 - turbo-linux-arm64: 2.0.14 - turbo-windows-64: 2.0.14 - turbo-windows-arm64: 2.0.14 + turbo-darwin-64: 2.1.1 + turbo-darwin-arm64: 2.1.1 + turbo-linux-64: 2.1.1 + turbo-linux-arm64: 2.1.1 + turbo-windows-64: 2.1.1 + turbo-windows-arm64: 2.1.1 twoslash-protocol@0.2.5: {} - twoslash@0.2.5(typescript@5.4.5): + twoslash@0.2.5(typescript@5.6.3): dependencies: '@typescript/vfs': 1.5.0 twoslash-protocol: 0.2.5 - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -28832,13 +29139,13 @@ snapshots: typed-array-buffer@1.0.0: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-typed-array: 1.1.12 typed-array-byte-length@1.0.0: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -28846,50 +29153,42 @@ snapshots: typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 typed-array-length@1.0.4: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 is-typed-array: 1.1.12 - typedoc-plugin-markdown@4.0.0-next.53(typedoc@0.25.12(typescript@5.4.5)): + typedoc-plugin-markdown@4.0.0-next.53(typedoc@0.25.13(typescript@5.6.3)): dependencies: - typedoc: 0.25.12(typescript@5.4.5) + typedoc: 0.25.13(typescript@5.6.3) - typedoc-plugin-markdown@4.0.0-next.54(typedoc@0.25.13(typescript@5.4.5)): + typedoc-plugin-markdown@4.0.0-next.54(typedoc@0.25.13(typescript@5.6.3)): dependencies: - typedoc: 0.25.13(typescript@5.4.5) + typedoc: 0.25.13(typescript@5.6.3) - typedoc-plugin-mdn-links@3.2.7(typedoc@0.25.13(typescript@5.4.5)): + typedoc-plugin-mdn-links@3.3.2(typedoc@0.25.13(typescript@5.6.3)): dependencies: - typedoc: 0.25.13(typescript@5.4.5) - - typedoc@0.25.12(typescript@5.4.5): - dependencies: - lunr: 2.3.9 - marked: 4.3.0 - minimatch: 9.0.3 - shiki: 0.14.7 - typescript: 5.4.5 + typedoc: 0.25.13(typescript@5.6.3) - typedoc@0.25.13(typescript@5.4.5): + typedoc@0.25.13(typescript@5.6.3): dependencies: lunr: 2.3.9 marked: 4.3.0 - minimatch: 9.0.3 + minimatch: 9.0.5 shiki: 0.14.7 - typescript: 5.4.5 + typescript: 5.6.3 - typeorm-naming-strategies@4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3))): + typeorm-naming-strategies@4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3))): dependencies: - typeorm: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)) + typeorm: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)) - typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.11.7)(typescript@5.3.3)): + typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)): dependencies: '@sqltools/formatter': 1.2.5 app-root-path: 3.1.0 @@ -28897,13 +29196,13 @@ snapshots: chalk: 4.1.2 cli-highlight: 2.1.11 date-fns: 2.30.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) dotenv: 16.4.1 glob: 8.1.0 mkdirp: 2.1.6 reflect-metadata: 0.1.14 sha.js: 2.4.11 - tslib: 2.6.2 + tslib: 2.7.0 uuid: 9.0.1 yargs: 17.7.2 optionalDependencies: @@ -28913,15 +29212,15 @@ snapshots: pg: 8.11.3 redis: 4.6.12 sqlite3: 5.1.6(encoding@0.1.13) - ts-node: 10.9.2(@types/node@20.11.7)(typescript@5.3.3) + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) transitivePeerDependencies: - supports-color - typescript-eslint@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3): + typescript-eslint@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3))(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) - '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.0))(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3))(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) + '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: @@ -28936,17 +29235,19 @@ snapshots: typescript@5.4.5: {} + typescript@5.6.3: {} + ua-parser-js@1.0.37: {} uc.micro@2.0.0: {} - ufo@1.3.2: {} - ufo@1.5.3: {} + ufo@1.5.4: {} + unbox-primitive@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -28959,6 +29260,8 @@ snapshots: undici-types@5.26.5: {} + undici-types@6.19.8: {} + undici@5.28.2: dependencies: '@fastify/busboy': 2.1.0 @@ -28971,8 +29274,6 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 - unherit@3.0.1: {} - unicode-canonical-property-names-ecmascript@2.0.0: {} unicode-match-property-ecmascript@2.0.0: @@ -28994,9 +29295,9 @@ snapshots: trough: 2.1.0 vfile: 5.3.7 - unified@11.0.4: + unified@11.0.5: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 bail: 2.0.2 devlop: 1.1.0 extend: 3.0.2 @@ -29016,7 +29317,7 @@ snapshots: unist-util-find-after@5.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-generated@2.0.1: {} @@ -29027,33 +29328,33 @@ snapshots: unist-util-is@6.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 - unist-util-modify-children@3.1.1: + unist-util-modify-children@4.0.0: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 3.0.3 array-iterate: 2.0.1 unist-util-position-from-estree@2.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-position@4.0.4: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-position@5.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-remove-position@5.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-visit: 5.0.0 unist-util-remove@4.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -29065,13 +29366,13 @@ snapshots: dependencies: '@types/unist': 3.0.2 - unist-util-visit-children@2.0.2: + unist-util-visit-children@3.0.0: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 3.0.3 unist-util-visit-parents@4.1.1: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-is: 5.2.1 unist-util-visit-parents@5.1.3: @@ -29081,12 +29382,12 @@ snapshots: unist-util-visit-parents@6.0.1: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit@3.1.0: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-is: 5.2.1 unist-util-visit-parents: 4.1.1 @@ -29098,7 +29399,7 @@ snapshots: unist-util-visit@5.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -29114,10 +29415,10 @@ snapshots: unpipe@1.0.0: {} - unplugin-swc@1.4.4(@swc/core@1.3.106(@swc/helpers@0.5.11))(rollup@4.18.0): + unplugin-swc@1.4.4(@swc/core@1.3.106(@swc/helpers@0.5.13))(rollup@4.18.0): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - '@swc/core': 1.3.106(@swc/helpers@0.5.11) + '@swc/core': 1.3.106(@swc/helpers@0.5.13) load-tsconfig: 0.2.5 unplugin: 1.6.0 transitivePeerDependencies: @@ -29125,30 +29426,11 @@ snapshots: unplugin@1.6.0: dependencies: - acorn: 8.11.3 - chokidar: 3.5.3 + acorn: 8.12.1 + chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.1 - unstorage@1.10.1(@azure/data-tables@13.2.2)(@upstash/redis@1.28.2): - dependencies: - anymatch: 3.1.3 - chokidar: 3.5.3 - destr: 2.0.2 - h3: 1.10.1 - ioredis: 5.4.1 - listhen: 1.5.6 - lru-cache: 10.2.0 - mri: 1.2.0 - node-fetch-native: 1.6.1 - ofetch: 1.3.3 - ufo: 1.3.2 - optionalDependencies: - '@azure/data-tables': 13.2.2 - '@upstash/redis': 1.28.2 - transitivePeerDependencies: - - supports-color - unstorage@1.10.2(@azure/data-tables@13.2.2)(@vercel/kv@1.0.1)(ioredis@5.4.1): dependencies: anymatch: 3.1.3 @@ -29172,7 +29454,7 @@ snapshots: untun@0.1.3: dependencies: - citty: 0.1.5 + citty: 0.1.6 consola: 3.2.3 pathe: 1.1.2 @@ -29180,25 +29462,25 @@ snapshots: dependencies: ws: 8.16.0 - update-browserslist-db@1.0.13(browserslist@4.22.2): - dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 - picocolors: 1.0.0 - update-browserslist-db@1.0.13(browserslist@4.23.0): dependencies: browserslist: 4.23.0 escalade: 3.1.1 picocolors: 1.0.0 + update-browserslist-db@1.1.1(browserslist@4.24.0): + dependencies: + browserslist: 4.24.0 + escalade: 3.2.0 + picocolors: 1.1.0 + upper-case-first@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 upper-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.7.0 uqr@0.1.2: {} @@ -29234,7 +29516,7 @@ snapshots: optionalDependencies: '@types/react': 18.2.78 - use-sync-external-store@1.2.0(react@18.3.1): + use-sync-external-store@1.2.2(react@18.3.1): dependencies: react: 18.3.1 @@ -29262,7 +29544,7 @@ snapshots: v8-to-istanbul@9.2.0: dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 @@ -29285,13 +29567,13 @@ snapshots: vfile-location@4.1.0: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 vfile: 5.3.7 vfile-location@5.0.2: dependencies: - '@types/unist': 3.0.2 - vfile: 6.0.1 + '@types/unist': 3.0.3 + vfile: 6.0.3 vfile-message@3.1.4: dependencies: @@ -29316,6 +29598,11 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + vite-imagetools@6.2.9(rollup@4.18.0): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -29323,13 +29610,13 @@ snapshots: transitivePeerDependencies: - rollup - vite-node@1.2.2(@types/node@20.11.7)(sass@1.70.0)(terser@5.27.0): + vite-node@1.2.2(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0): dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.3.1(@types/node@20.11.7)(sass@1.70.0)(terser@5.27.0) + vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) transitivePeerDependencies: - '@types/node' - less @@ -29340,18 +29627,18 @@ snapshots: - supports-color - terser - vite-plugin-dts@3.9.1(@types/node@20.12.7)(rollup@4.18.0)(typescript@5.4.5)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)): + vite-plugin-dts@3.9.1(@types/node@22.7.5)(rollup@4.18.0)(typescript@5.4.5)(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)): dependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@20.12.7) + '@microsoft/api-extractor': 7.43.0(@types/node@22.7.5) '@rollup/pluginutils': 5.1.0(rollup@4.18.0) '@vue/language-core': 1.8.27(typescript@5.4.5) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) kolorist: 1.8.0 - magic-string: 0.30.8 + magic-string: 0.30.11 typescript: 5.4.5 vue-tsc: 1.8.27(typescript@5.4.5) optionalDependencies: - vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) transitivePeerDependencies: - '@types/node' - rollup @@ -29359,9 +29646,9 @@ snapshots: vite-plugin-inspect@0.7.42(rollup@3.29.4)(vite@5.3.1(@types/node@18.11.10)(sass@1.70.0)(terser@5.27.0)): dependencies: - '@antfu/utils': 0.7.7 + '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) error-stack-parser-es: 0.1.1 fs-extra: 11.2.0 open: 9.1.0 @@ -29385,17 +29672,17 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-static-copy@1.0.5(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)): + vite-plugin-static-copy@1.0.5(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)): dependencies: chokidar: 3.6.0 fast-glob: 3.3.2 fs-extra: 11.2.0 picocolors: 1.0.0 - vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.1.0(typescript@5.4.5) optionalDependencies: @@ -29404,21 +29691,10 @@ snapshots: - supports-color - typescript - vite@5.0.13(@types/node@20.11.7)(sass@1.70.0)(terser@5.27.0): - dependencies: - esbuild: 0.19.12 - postcss: 8.4.33 - rollup: 4.9.6 - optionalDependencies: - '@types/node': 20.11.7 - fsevents: 2.3.3 - sass: 1.70.0 - terser: 5.27.0 - vite@5.3.1(@types/node@18.11.10)(sass@1.70.0)(terser@5.27.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.38 + postcss: 8.4.47 rollup: 4.18.0 optionalDependencies: '@types/node': 18.11.10 @@ -29426,24 +29702,24 @@ snapshots: sass: 1.70.0 terser: 5.27.0 - vite@5.3.1(@types/node@20.11.7)(sass@1.70.0)(terser@5.27.0): + vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.38 + postcss: 8.4.47 rollup: 4.18.0 optionalDependencies: - '@types/node': 20.11.7 + '@types/node': 20.12.7 fsevents: 2.3.3 sass: 1.70.0 terser: 5.27.0 - vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0): + vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.38 + postcss: 8.4.47 rollup: 4.18.0 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 22.7.5 fsevents: 2.3.3 sass: 1.70.0 terser: 5.27.0 @@ -29452,11 +29728,11 @@ snapshots: optionalDependencies: vite: 5.3.1(@types/node@18.11.10)(sass@1.70.0)(terser@5.27.0) - vitefu@0.2.5(vite@5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0)): + vitefu@0.2.5(vite@5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0)): optionalDependencies: - vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + vite: 5.3.1(@types/node@22.7.5)(sass@1.70.0)(terser@5.27.0) - vitest@1.2.2(@types/node@20.11.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0): + vitest@1.2.2(@types/node@20.12.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0): dependencies: '@vitest/expect': 1.2.2 '@vitest/runner': 1.2.2 @@ -29466,21 +29742,21 @@ snapshots: acorn-walk: 8.3.2 cac: 6.7.14 chai: 4.4.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) execa: 8.0.1 local-pkg: 0.5.0 - magic-string: 0.30.5 + magic-string: 0.30.11 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 strip-literal: 1.3.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.0.13(@types/node@20.11.7)(sass@1.70.0)(terser@5.27.0) - vite-node: 1.2.2(@types/node@20.11.7)(sass@1.70.0)(terser@5.27.0) + vite: 5.3.1(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) + vite-node: 1.2.2(@types/node@20.12.7)(sass@1.70.0)(terser@5.27.0) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.11.7 + '@types/node': 20.12.7 '@vitest/ui': 1.2.2(vitest@1.2.2) transitivePeerDependencies: - less @@ -29493,10 +29769,27 @@ snapshots: void-elements@3.1.0: {} + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + vscode-oniguruma@1.7.0: {} vscode-textmate@8.0.0: {} + vscode-uri@3.0.8: {} + vue-template-compiler@2.7.16: dependencies: de-indent: 1.0.2 @@ -29506,14 +29799,14 @@ snapshots: dependencies: '@volar/typescript': 1.11.1 '@vue/language-core': 1.8.27(typescript@5.4.5) - semver: 7.6.0 + semver: 7.6.3 typescript: 5.4.5 vuvuzela@1.0.3: {} - wait-on@6.0.1(debug@4.3.4): + wait-on@6.0.1(debug@4.3.7): dependencies: - axios: 0.25.0(debug@4.3.4) + axios: 0.25.0(debug@4.3.7) joi: 17.12.0 lodash: 4.17.21 minimist: 1.2.8 @@ -29529,15 +29822,13 @@ snapshots: web-streams-polyfill@3.3.2: {} - web-worker@1.3.0: {} - webcrypto-core@1.7.8: dependencies: '@peculiar/asn1-schema': 2.3.8 '@peculiar/json-schema': 1.1.12 asn1js: 3.0.5 pvtsutils: 1.3.5 - tslib: 2.6.2 + tslib: 2.7.0 webidl-conversions@3.0.1: {} @@ -29555,11 +29846,6 @@ snapshots: websocket-extensions@0.1.4: {} - whatwg-url@11.0.0: - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - whatwg-url@13.0.0: dependencies: tr46: 4.1.1 @@ -29602,7 +29888,7 @@ snapshots: which-module@2.0.1: {} - which-pm@2.0.0: + which-pm@2.2.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 @@ -29610,7 +29896,7 @@ snapshots: which-typed-array@1.1.13: dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 @@ -29684,6 +29970,9 @@ snapshots: ws@8.16.0: {} + ws@8.18.0: + optional: true + xml2js@0.5.0: dependencies: sax: 1.3.0 @@ -29768,7 +30057,7 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.0.0: {} + yocto-queue@1.1.1: {} yoctocolors@1.0.0: {} @@ -29786,7 +30075,7 @@ snapshots: zen-observable@0.8.15: {} - zod-validation-error@1.5.0(zod@3.22.4): + zod-validation-error@3.4.0(zod@3.22.4): dependencies: zod: 3.22.4 diff --git a/turbo.json b/turbo.json index 9c27a9859b..4836ab91ce 100644 --- a/turbo.json +++ b/turbo.json @@ -13,7 +13,7 @@ "*.d.ts", "*.d.ts.map", "src/lib/pages/styles.ts", - "src/providers/oauth-types.ts", + "src/providers/provider-types.ts", ".svelte-kit/**" ], "outputLogs": "new-only" @@ -30,15 +30,25 @@ "outputLogs": "new-only" }, "test:e2e": { + "dependsOn": ["next-auth#build"], "outputs": [ "blob-report/**", "playwright-report/**", "playwright/.cache/**", "test-results/**" + ], + "env": [ + "TEST_KEYCLOAK_PASSWORD", + "TEST_KEYCLOAK_USERNAME", + "AUTH_SECRET", + "AUTH_KEYCLOAK_ID", + "AUTH_KEYCLOAK_SECRET", + "AUTH_KEYCLOAK_ISSUER", + "AUTH_TRUST_HOST" ] }, "@auth/xata-adapter#test": { - "env": ["XATA_API_KEY", "XATA_DATABASE_URL"] + "passThroughEnv": ["XATA_API_KEY", "XATA_DATABASE_URL"] }, "@auth/hasura-adapter#build": { "dependsOn": ["@auth/core#build"], @@ -59,6 +69,7 @@ "@auth/solid-start#build", "@auth/qwik#build" ], + "persistent": true, "cache": false }, "docs#build": {