From 21f42f14cef7d772c90c5fe7766313de120aefce Mon Sep 17 00:00:00 2001 From: Giancarlo Buomprisco Date: Thu, 11 Jul 2024 13:59:14 +0800 Subject: [PATCH] Invite prefill email (#43) * Add prepopulation of email field in sign-up form * Updated packages --- apps/web/app/join/page.tsx | 11 ++- apps/web/package.json | 6 +- .../lemon-squeezy-webhook-handler.service.ts | 11 +-- packages/features/accounts/package.json | 2 +- .../features/accounts/src/components/index.ts | 2 +- packages/features/admin/package.json | 2 +- .../src/components/admin-account-page.tsx | 1 - packages/features/auth/package.json | 4 +- .../components/magic-link-auth-container.tsx | 6 +- .../components/password-sign-up-container.tsx | 11 ++- .../src/components/password-sign-up-form.tsx | 7 +- .../components/sign-up-methods-container.tsx | 26 ++++- packages/features/notifications/package.json | 2 +- packages/features/team-accounts/package.json | 2 +- .../team-accounts/src/components/index.ts | 2 +- .../account-invitations-webhook.service.ts | 14 ++- packages/i18n/package.json | 2 +- packages/supabase/package.json | 2 +- .../supabase/src/auth-callback.service.ts | 15 ++- packages/ui/package.json | 2 +- packages/ui/src/makerkit/global-loader.tsx | 2 +- packages/ui/src/makerkit/multi-step-form.tsx | 4 +- packages/ui/src/makerkit/stepper.tsx | 2 +- pnpm-lock.yaml | 98 +++++++++---------- 24 files changed, 151 insertions(+), 85 deletions(-) diff --git a/apps/web/app/join/page.tsx b/apps/web/app/join/page.tsx index 54395dd5b..6aeb5568a 100644 --- a/apps/web/app/join/page.tsx +++ b/apps/web/app/join/page.tsx @@ -20,6 +20,7 @@ import { withI18n } from '~/lib/i18n/with-i18n'; interface Context { searchParams: { invite_token?: string; + email?: string; }; } @@ -46,9 +47,15 @@ async function JoinTeamAccountPage({ searchParams }: Context) { // redirect to the sign up page with the invite token // so that they will get back to this page after signing up if (auth.error ?? !auth.data) { - const path = `${pathsConfig.auth.signUp}?invite_token=${token}`; + const urlParams = new URLSearchParams({ + invite_token: token, + email: searchParams.email ?? '', + }); - redirect(path); + const signUpPath = `${pathsConfig.auth.signUp}?${urlParams.toString()}`; + + // redirect to the sign up page with the invite token + redirect(signUpPath); } // get api to interact with team accounts diff --git a/apps/web/package.json b/apps/web/package.json index 5ca451a55..b42c3d467 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -52,11 +52,11 @@ "@kit/ui": "workspace:^", "@makerkit/data-loader-supabase-core": "^0.0.8", "@makerkit/data-loader-supabase-nextjs": "^1.2.3", - "@marsidev/react-turnstile": "^0.7.1", + "@marsidev/react-turnstile": "^0.7.2", "@radix-ui/react-icons": "^1.3.0", "@supabase/supabase-js": "^2.44.3", - "@tanstack/react-query": "5.50.1", - "@tanstack/react-query-next-experimental": "^5.50.1", + "@tanstack/react-query": "5.51.1", + "@tanstack/react-query-next-experimental": "^5.51.1", "@tanstack/react-table": "^8.19.2", "date-fns": "^3.6.0", "lucide-react": "^0.407.0", diff --git a/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts b/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts index 343384b53..0864da2c4 100644 --- a/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts +++ b/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts @@ -1,13 +1,13 @@ -import { getOrder, getSubscription, getVariant } from '@lemonsqueezy/lemonsqueezy.js'; - - +import { + getOrder, + getSubscription, + getVariant, +} from '@lemonsqueezy/lemonsqueezy.js'; import { BillingConfig, BillingWebhookHandlerService } from '@kit/billing'; import { getLogger } from '@kit/shared/logger'; import { Database } from '@kit/supabase/database'; - - import { getLemonSqueezyEnv } from '../schema/lemon-squeezy-server-env.schema'; import { OrderWebhook } from '../types/order-webhook'; import { SubscriptionInvoiceWebhook } from '../types/subscription-invoice-webhook'; @@ -16,7 +16,6 @@ import { initializeLemonSqueezyClient } from './lemon-squeezy-sdk'; import { createLemonSqueezySubscriptionPayloadBuilderService } from './lemon-squeezy-subscription-payload-builder.service'; import { createHmac } from './verify-hmac'; - type UpsertSubscriptionParams = Database['public']['Functions']['upsert_subscription']['Args'] & { line_items: Array; diff --git a/packages/features/accounts/package.json b/packages/features/accounts/package.json index 776779c07..2bc1177dc 100644 --- a/packages/features/accounts/package.json +++ b/packages/features/accounts/package.json @@ -35,7 +35,7 @@ "@kit/ui": "workspace:^", "@radix-ui/react-icons": "^1.3.0", "@supabase/supabase-js": "^2.44.3", - "@tanstack/react-query": "5.50.1", + "@tanstack/react-query": "5.51.1", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "lucide-react": "^0.407.0", diff --git a/packages/features/accounts/src/components/index.ts b/packages/features/accounts/src/components/index.ts index a5795bec0..aedb53307 100644 --- a/packages/features/accounts/src/components/index.ts +++ b/packages/features/accounts/src/components/index.ts @@ -1 +1 @@ -export * from './user-workspace-context'; \ No newline at end of file +export * from './user-workspace-context'; diff --git a/packages/features/admin/package.json b/packages/features/admin/package.json index c0ab03188..8f4260685 100644 --- a/packages/features/admin/package.json +++ b/packages/features/admin/package.json @@ -22,7 +22,7 @@ "@makerkit/data-loader-supabase-core": "^0.0.8", "@makerkit/data-loader-supabase-nextjs": "^1.2.3", "@supabase/supabase-js": "^2.44.3", - "@tanstack/react-query": "5.50.1", + "@tanstack/react-query": "5.51.1", "@tanstack/react-table": "^8.19.2", "@types/react": "^18.3.3", "lucide-react": "^0.407.0", diff --git a/packages/features/admin/src/components/admin-account-page.tsx b/packages/features/admin/src/components/admin-account-page.tsx index 687014633..602e16771 100644 --- a/packages/features/admin/src/components/admin-account-page.tsx +++ b/packages/features/admin/src/components/admin-account-page.tsx @@ -8,7 +8,6 @@ import { Button } from '@kit/ui/button'; import { Heading } from '@kit/ui/heading'; import { If } from '@kit/ui/if'; import { ProfileAvatar } from '@kit/ui/profile-avatar'; - import { Table, TableBody, diff --git a/packages/features/auth/package.json b/packages/features/auth/package.json index 2a3cc69ee..f180dc183 100644 --- a/packages/features/auth/package.json +++ b/packages/features/auth/package.json @@ -26,10 +26,10 @@ "@kit/tailwind-config": "workspace:*", "@kit/tsconfig": "workspace:*", "@kit/ui": "workspace:^", - "@marsidev/react-turnstile": "^0.7.1", + "@marsidev/react-turnstile": "^0.7.2", "@radix-ui/react-icons": "^1.3.0", "@supabase/supabase-js": "^2.44.3", - "@tanstack/react-query": "5.50.1", + "@tanstack/react-query": "5.51.1", "@types/react": "^18.3.3", "lucide-react": "^0.407.0", "next": "14.2.5", diff --git a/packages/features/auth/src/components/magic-link-auth-container.tsx b/packages/features/auth/src/components/magic-link-auth-container.tsx index bb48bc910..33f5e7260 100644 --- a/packages/features/auth/src/components/magic-link-auth-container.tsx +++ b/packages/features/auth/src/components/magic-link-auth-container.tsx @@ -28,10 +28,14 @@ export function MagicLinkAuthContainer({ inviteToken, redirectUrl, shouldCreateUser, + defaultValues, }: { inviteToken?: string; redirectUrl: string; shouldCreateUser: boolean; + defaultValues?: { + email: string; + }; }) { const { captchaToken, resetCaptchaToken } = useCaptchaToken(); const { t } = useTranslation(); @@ -44,7 +48,7 @@ export function MagicLinkAuthContainer({ }), ), defaultValues: { - email: '', + email: defaultValues?.email ?? '' }, }); diff --git a/packages/features/auth/src/components/password-sign-up-container.tsx b/packages/features/auth/src/components/password-sign-up-container.tsx index 56dce60d7..57324814f 100644 --- a/packages/features/auth/src/components/password-sign-up-container.tsx +++ b/packages/features/auth/src/components/password-sign-up-container.tsx @@ -14,11 +14,16 @@ import { AuthErrorAlert } from './auth-error-alert'; import { PasswordSignUpForm } from './password-sign-up-form'; interface EmailPasswordSignUpContainerProps { + defaultValues?: { + email: string; + }; + onSignUp?: (userId?: string) => unknown; emailRedirectTo: string; } export function EmailPasswordSignUpContainer({ + defaultValues, onSignUp, emailRedirectTo, }: EmailPasswordSignUpContainerProps) { @@ -72,7 +77,11 @@ export function EmailPasswordSignUpContainer({ - + ); diff --git a/packages/features/auth/src/components/password-sign-up-form.tsx b/packages/features/auth/src/components/password-sign-up-form.tsx index c726dcb17..47ce2ed39 100644 --- a/packages/features/auth/src/components/password-sign-up-form.tsx +++ b/packages/features/auth/src/components/password-sign-up-form.tsx @@ -22,9 +22,14 @@ import { Trans } from '@kit/ui/trans'; import { PasswordSignUpSchema } from '../schemas/password-sign-up.schema'; export function PasswordSignUpForm({ + defaultValues, onSubmit, loading, }: { + defaultValues?: { + email: string; + }; + onSubmit: (params: { email: string; password: string; @@ -37,7 +42,7 @@ export function PasswordSignUpForm({ const form = useForm({ resolver: zodResolver(PasswordSignUpSchema), defaultValues: { - email: '', + email: defaultValues?.email ?? '', password: '', repeatPassword: '', }, diff --git a/packages/features/auth/src/components/sign-up-methods-container.tsx b/packages/features/auth/src/components/sign-up-methods-container.tsx index 697ede916..17802db84 100644 --- a/packages/features/auth/src/components/sign-up-methods-container.tsx +++ b/packages/features/auth/src/components/sign-up-methods-container.tsx @@ -27,7 +27,8 @@ export function SignUpMethodsContainer(props: { inviteToken?: string; }) { const redirectUrl = getCallbackUrl(props); - + const defaultValues = getDefaultValues(); + return ( <> @@ -35,7 +36,10 @@ export function SignUpMethodsContainer(props: { - + @@ -43,6 +47,7 @@ export function SignUpMethodsContainer(props: { inviteToken={props.inviteToken} redirectUrl={redirectUrl} shouldCreateUser={true} + defaultValues={defaultValues} /> @@ -93,6 +98,23 @@ function getCallbackUrl(props: { return url.href; } +function getDefaultValues() { + if (!isBrowser()) { + return { email: '' }; + } + + const searchParams = new URLSearchParams(window.location.search); + const inviteToken = searchParams.get('invite_token'); + + if (!inviteToken) { + return { email: '' }; + } + + return { + email: searchParams.get('email') ?? '', + }; +} + function InviteAlert() { return ( diff --git a/packages/features/notifications/package.json b/packages/features/notifications/package.json index 02b7ed655..52d738eae 100644 --- a/packages/features/notifications/package.json +++ b/packages/features/notifications/package.json @@ -21,7 +21,7 @@ "@kit/tsconfig": "workspace:*", "@kit/ui": "workspace:*", "@supabase/supabase-js": "^2.44.3", - "@tanstack/react-query": "5.50.1", + "@tanstack/react-query": "5.51.1", "@types/react": "^18.3.3", "lucide-react": "^0.407.0", "react": "18.3.1", diff --git a/packages/features/team-accounts/package.json b/packages/features/team-accounts/package.json index ad539e09a..472864128 100644 --- a/packages/features/team-accounts/package.json +++ b/packages/features/team-accounts/package.json @@ -33,7 +33,7 @@ "@kit/tsconfig": "workspace:*", "@kit/ui": "workspace:^", "@supabase/supabase-js": "^2.44.3", - "@tanstack/react-query": "5.50.1", + "@tanstack/react-query": "5.51.1", "@tanstack/react-table": "^8.19.2", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/packages/features/team-accounts/src/components/index.ts b/packages/features/team-accounts/src/components/index.ts index afa8a53b9..63d3ecefd 100644 --- a/packages/features/team-accounts/src/components/index.ts +++ b/packages/features/team-accounts/src/components/index.ts @@ -5,4 +5,4 @@ export * from './invitations/account-invitations-table'; export * from './settings/team-account-settings-container'; export * from './invitations/accept-invitation-container'; export * from './create-team-account-dialog'; -export * from './team-account-workspace-context'; \ No newline at end of file +export * from './team-account-workspace-context'; diff --git a/packages/features/team-accounts/src/server/services/webhooks/account-invitations-webhook.service.ts b/packages/features/team-accounts/src/server/services/webhooks/account-invitations-webhook.service.ts index 5042c115b..c44fcf459 100644 --- a/packages/features/team-accounts/src/server/services/webhooks/account-invitations-webhook.service.ts +++ b/packages/features/team-accounts/src/server/services/webhooks/account-invitations-webhook.service.ts @@ -102,9 +102,10 @@ class AccountInvitationsWebhookService { const { getMailer } = await import('@kit/mailers'); const mailer = await getMailer(); + const link = this.getInvitationLink(invitation.invite_token, invitation.email); const { html, subject } = await renderInviteEmail({ - link: this.getInvitationLink(invitation.invite_token), + link, invitedUserEmail: invitation.email, inviter: inviter.data.name ?? inviter.data.email ?? '', productName: env.productName, @@ -141,7 +142,14 @@ class AccountInvitationsWebhookService { } } - private getInvitationLink(token: string) { - return new URL(env.invitePath, env.siteURL).href + `?invite_token=${token}`; + private getInvitationLink(token: string, email: string) { + const searchParams = new URLSearchParams({ + invite_token: token, + email, + }).toString(); + + const href = new URL(env.invitePath, env.siteURL).href; + + return `${href}?${searchParams}`; } } diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 2dd7f4934..9c03155d5 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -21,7 +21,7 @@ "@kit/shared": "workspace:^", "@kit/tailwind-config": "workspace:*", "@kit/tsconfig": "workspace:*", - "@tanstack/react-query": "5.50.1", + "@tanstack/react-query": "5.51.1", "react-i18next": "^14.1.2" }, "dependencies": { diff --git a/packages/supabase/package.json b/packages/supabase/package.json index 361f668f6..d602ceffe 100644 --- a/packages/supabase/package.json +++ b/packages/supabase/package.json @@ -29,7 +29,7 @@ "@supabase/gotrue-js": "2.64.3", "@supabase/ssr": "^0.4.0", "@supabase/supabase-js": "^2.44.3", - "@tanstack/react-query": "5.50.1", + "@tanstack/react-query": "5.51.1", "@types/react": "^18.3.3", "next": "14.2.5", "react": "18.3.1", diff --git a/packages/supabase/src/auth-callback.service.ts b/packages/supabase/src/auth-callback.service.ts index 1cefaf2e0..b8fa7d570 100644 --- a/packages/supabase/src/auth-callback.service.ts +++ b/packages/supabase/src/auth-callback.service.ts @@ -87,6 +87,12 @@ class AuthCallbackService { // correct page. url.pathname = params.joinTeamPath; searchParams.set('invite_token', inviteToken); + + const emailParam = callbackUrl?.searchParams.get('email'); + + if (emailParam) { + searchParams.set('email', emailParam); + } } if (token_hash && type) { @@ -138,7 +144,14 @@ class AuthCallbackService { // to join a team and we want to make sure they are redirected to the // correct page. if (inviteToken) { - nextUrl = `${params.joinTeamPath}?invite_token=${inviteToken}`; + const emailParam = searchParams.get('email'); + + const urlParams = new URLSearchParams({ + invite_token: inviteToken, + email: emailParam ?? '' + }); + + nextUrl = `${params.joinTeamPath}?${urlParams.toString()}`; } if (authCode) { diff --git a/packages/ui/package.json b/packages/ui/package.json index 6701bf04c..6b5075e96 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -41,7 +41,7 @@ "@kit/tailwind-config": "workspace:*", "@kit/tsconfig": "workspace:*", "@radix-ui/react-icons": "^1.3.0", - "@tanstack/react-query": "5.50.1", + "@tanstack/react-query": "5.51.1", "@tanstack/react-table": "^8.19.2", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", diff --git a/packages/ui/src/makerkit/global-loader.tsx b/packages/ui/src/makerkit/global-loader.tsx index c15e738dd..dbccbbfa3 100644 --- a/packages/ui/src/makerkit/global-loader.tsx +++ b/packages/ui/src/makerkit/global-loader.tsx @@ -22,7 +22,7 @@ export function GlobalLoader({
diff --git a/packages/ui/src/makerkit/multi-step-form.tsx b/packages/ui/src/makerkit/multi-step-form.tsx index b3f8c8f44..4a0b56c62 100644 --- a/packages/ui/src/makerkit/multi-step-form.tsx +++ b/packages/ui/src/makerkit/multi-step-form.tsx @@ -12,11 +12,11 @@ import React, { } from 'react'; import { Slot, Slottable } from '@radix-ui/react-slot'; +import { useMutation } from '@tanstack/react-query'; import { Path, UseFormReturn } from 'react-hook-form'; import { z } from 'zod'; import { cn } from '../utils'; -import {useMutation} from "@tanstack/react-query"; interface MultiStepFormProps { schema: T; @@ -287,7 +287,7 @@ export function useMultiStepForm( const mutation = useMutation({ mutationFn: () => { return form.handleSubmit(onSubmit)(); - } + }, }); return useMemo( diff --git a/packages/ui/src/makerkit/stepper.tsx b/packages/ui/src/makerkit/stepper.tsx index 6fa8366fa..0c86082db 100644 --- a/packages/ui/src/makerkit/stepper.tsx +++ b/packages/ui/src/makerkit/stepper.tsx @@ -165,7 +165,7 @@ function getClassNameBuilder() { selected: false, complete: false, className: 'bg-muted', - } + }, ], defaultVariants: { variant: 'default', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a5f8da67..0c6eb645a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -110,10 +110,10 @@ importers: version: 0.0.8(@supabase/postgrest-js@1.15.8)(@supabase/supabase-js@2.44.3) '@makerkit/data-loader-supabase-nextjs': specifier: ^1.2.3 - version: 1.2.3(@supabase/postgrest-js@1.15.8)(@supabase/supabase-js@2.44.3)(@tanstack/react-query@5.50.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 1.2.3(@supabase/postgrest-js@1.15.8)(@supabase/supabase-js@2.44.3)(@tanstack/react-query@5.51.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@marsidev/react-turnstile': - specifier: ^0.7.1 - version: 0.7.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^0.7.2 + version: 0.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-icons': specifier: ^1.3.0 version: 1.3.0(react@18.3.1) @@ -121,11 +121,11 @@ importers: specifier: ^2.44.3 version: 2.44.3 '@tanstack/react-query': - specifier: 5.50.1 - version: 5.50.1(react@18.3.1) + specifier: 5.51.1 + version: 5.51.1(react@18.3.1) '@tanstack/react-query-next-experimental': - specifier: ^5.50.1 - version: 5.50.1(@tanstack/react-query@5.50.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + specifier: ^5.51.1 + version: 5.51.1(@tanstack/react-query@5.51.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@tanstack/react-table': specifier: ^8.19.2 version: 8.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -592,8 +592,8 @@ importers: specifier: ^2.44.3 version: 2.44.3 '@tanstack/react-query': - specifier: 5.50.1 - version: 5.50.1(react@18.3.1) + specifier: 5.51.1 + version: 5.51.1(react@18.3.1) '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -662,13 +662,13 @@ importers: version: 0.0.8(@supabase/postgrest-js@1.15.8)(@supabase/supabase-js@2.44.3) '@makerkit/data-loader-supabase-nextjs': specifier: ^1.2.3 - version: 1.2.3(@supabase/postgrest-js@1.15.8)(@supabase/supabase-js@2.44.3)(@tanstack/react-query@5.50.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 1.2.3(@supabase/postgrest-js@1.15.8)(@supabase/supabase-js@2.44.3)(@tanstack/react-query@5.51.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@supabase/supabase-js': specifier: ^2.44.3 version: 2.44.3 '@tanstack/react-query': - specifier: 5.50.1 - version: 5.50.1(react@18.3.1) + specifier: 5.51.1 + version: 5.51.1(react@18.3.1) '@tanstack/react-table': specifier: ^8.19.2 version: 8.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -721,8 +721,8 @@ importers: specifier: workspace:^ version: link:../../ui '@marsidev/react-turnstile': - specifier: ^0.7.1 - version: 0.7.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^0.7.2 + version: 0.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-icons': specifier: ^1.3.0 version: 1.3.0(react@18.3.1) @@ -730,8 +730,8 @@ importers: specifier: ^2.44.3 version: 2.44.3 '@tanstack/react-query': - specifier: 5.50.1 - version: 5.50.1(react@18.3.1) + specifier: 5.51.1 + version: 5.51.1(react@18.3.1) '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -778,8 +778,8 @@ importers: specifier: ^2.44.3 version: 2.44.3 '@tanstack/react-query': - specifier: 5.50.1 - version: 5.50.1(react@18.3.1) + specifier: 5.51.1 + version: 5.51.1(react@18.3.1) '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -848,8 +848,8 @@ importers: specifier: ^2.44.3 version: 2.44.3 '@tanstack/react-query': - specifier: 5.50.1 - version: 5.50.1(react@18.3.1) + specifier: 5.51.1 + version: 5.51.1(react@18.3.1) '@tanstack/react-table': specifier: ^8.19.2 version: 8.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -918,8 +918,8 @@ importers: specifier: workspace:* version: link:../../tooling/typescript '@tanstack/react-query': - specifier: 5.50.1 - version: 5.50.1(react@18.3.1) + specifier: 5.51.1 + version: 5.51.1(react@18.3.1) react-i18next: specifier: ^14.1.2 version: 14.1.2(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1041,7 +1041,7 @@ importers: dependencies: '@sentry/nextjs': specifier: ^8.17.0 - version: 8.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.5(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.1) + version: 8.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.1) devDependencies: '@kit/eslint-config': specifier: workspace:* @@ -1144,8 +1144,8 @@ importers: specifier: ^2.44.3 version: 2.44.3 '@tanstack/react-query': - specifier: 5.50.1 - version: 5.50.1(react@18.3.1) + specifier: 5.51.1 + version: 5.51.1(react@18.3.1) '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -1256,8 +1256,8 @@ importers: specifier: ^1.3.0 version: 1.3.0(react@18.3.1) '@tanstack/react-query': - specifier: 5.50.1 - version: 5.50.1(react@18.3.1) + specifier: 5.51.1 + version: 5.51.1(react@18.3.1) '@tanstack/react-table': specifier: ^8.19.2 version: 8.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1825,8 +1825,8 @@ packages: react: optional: true - '@marsidev/react-turnstile@0.7.1': - resolution: {integrity: sha512-SGa0cweJ2mP1RRi9oJJrlPpZHvlklLqu8tlXDLEbsQ/WExM8Ng9cr9439lZcnu8+tfeVpQIe8qFB1UU5uE+KlQ==} + '@marsidev/react-turnstile@0.7.2': + resolution: {integrity: sha512-0jwLvAUkcLkaYaS6jBOZB3zzUiKi5dU3kZtlaeBX6yV7Y4CbFEtfHCY352ovphNz1v0ZjpOj6+3QUczJvD56VA==} peerDependencies: react: 18.3.1 react-dom: 18.3.1 @@ -3807,18 +3807,18 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} - '@tanstack/query-core@5.50.1': - resolution: {integrity: sha512-lpfhKPrJlyV2DSVcQb/HuozH3Av3kws4ge22agx+lNGpFkS4vLZ7St0l3GLwlAD+bqB+qXGex3JdRKUNtMviEQ==} + '@tanstack/query-core@5.51.1': + resolution: {integrity: sha512-fJBMQMpo8/KSsWW5ratJR5+IFr7YNJ3K2kfP9l5XObYHsgfVy1w3FJUWU4FT2fj7+JMaEg33zOcNDBo0LMwHnw==} - '@tanstack/react-query-next-experimental@5.50.1': - resolution: {integrity: sha512-AgMhRPYbNRvol44orcKcf1KToGJcHTNDcKp7RRkEZ7FBNQZoQeNnWmKQBjaEgrC52mbj6rf5QOy1B2FqFZzQDw==} + '@tanstack/react-query-next-experimental@5.51.1': + resolution: {integrity: sha512-0rhmO2ZWx6w5eOiLCIVuayJQAkuVCDOEN+oCU1GDQCLCRhRAt1XWtR706ZNY+cWmQF28AVenNNb3HDKPlC4bwg==} peerDependencies: - '@tanstack/react-query': ^5.50.1 + '@tanstack/react-query': ^5.51.1 next: ^13 || ^14 || ^15 react: 18.3.1 - '@tanstack/react-query@5.50.1': - resolution: {integrity: sha512-s0DW3rVBDPReDDovUjVqItVa3R2nPfUANK9nqGvarO2DwTiY9U4EBTsqizMxItRCoGgK5apeM7D3mxlHrSKpdQ==} + '@tanstack/react-query@5.51.1': + resolution: {integrity: sha512-s47HKFnQ4HOJAHoIiXcpna/roMMPZJPy6fJ6p4ZNVn8+/onlLBEDd1+xc8OnDuwgvecqkZD7Z2mnSRbcWefrKw==} peerDependencies: react: 18.3.1 @@ -4854,8 +4854,8 @@ packages: electron-to-chromium@1.4.812: resolution: {integrity: sha512-7L8fC2Ey/b6SePDFKR2zHAy4mbdp1/38Yk5TsARO66W3hC5KEaeKMMHoxwtuH+jcu2AYLSn9QX04i95t6Fl1Hg==} - electron-to-chromium@1.4.823: - resolution: {integrity: sha512-4h+oPeAiGQOHFyUJOqpoEcPj/xxlicxBzOErVeYVMMmAiXUXsGpsFd0QXBMaUUbnD8hhSfLf9uw+MlsoIA7j5w==} + electron-to-chromium@1.4.824: + resolution: {integrity: sha512-GTQnZOP1v0wCuoWzKOxL8rurg9T13QRYISkoICGaZzskBf9laC3V8g9BHTpJv+j9vBRcKOulbGXwMzuzNdVrAA==} emery@1.4.3: resolution: {integrity: sha512-DrP24dscOZx5BJpOo32X1CjaWgbFojS4sAXKtlmTQmCJ01Vv2brjeWKIS6cQ4Rblt/hZIN+6pdV2L7Y9Rsh8EA==} @@ -8416,11 +8416,11 @@ snapshots: '@supabase/supabase-js': 2.44.3 ts-case-convert: 2.0.7 - '@makerkit/data-loader-supabase-nextjs@1.2.3(@supabase/postgrest-js@1.15.8)(@supabase/supabase-js@2.44.3)(@tanstack/react-query@5.50.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@makerkit/data-loader-supabase-nextjs@1.2.3(@supabase/postgrest-js@1.15.8)(@supabase/supabase-js@2.44.3)(@tanstack/react-query@5.51.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@makerkit/data-loader-supabase-core': 0.0.8(@supabase/postgrest-js@1.15.8)(@supabase/supabase-js@2.44.3) '@supabase/supabase-js': 2.44.3 - '@tanstack/react-query': 5.50.1(react@18.3.1) + '@tanstack/react-query': 5.51.1(react@18.3.1) next: 14.2.5(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 transitivePeerDependencies: @@ -8466,7 +8466,7 @@ snapshots: '@types/react': 18.3.3 react: 18.3.1 - '@marsidev/react-turnstile@0.7.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@marsidev/react-turnstile@0.7.2(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) @@ -10817,7 +10817,7 @@ snapshots: '@sentry/types': 8.17.0 '@sentry/utils': 8.17.0 - '@sentry/nextjs@8.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.5(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.1)': + '@sentry/nextjs@8.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.1)': dependencies: '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.25.1 @@ -11011,17 +11011,17 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tanstack/query-core@5.50.1': {} + '@tanstack/query-core@5.51.1': {} - '@tanstack/react-query-next-experimental@5.50.1(@tanstack/react-query@5.50.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@tanstack/react-query-next-experimental@5.51.1(@tanstack/react-query@5.51.1(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/react-query': 5.50.1(react@18.3.1) + '@tanstack/react-query': 5.51.1(react@18.3.1) next: 14.2.5(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 - '@tanstack/react-query@5.50.1(react@18.3.1)': + '@tanstack/react-query@5.51.1(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.50.1 + '@tanstack/query-core': 5.51.1 react: 18.3.1 '@tanstack/react-table@8.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -11721,7 +11721,7 @@ snapshots: browserslist@4.23.2: dependencies: caniuse-lite: 1.0.30001641 - electron-to-chromium: 1.4.823 + electron-to-chromium: 1.4.824 node-releases: 2.0.14 update-browserslist-db: 1.1.0(browserslist@4.23.2) @@ -12187,7 +12187,7 @@ snapshots: electron-to-chromium@1.4.812: {} - electron-to-chromium@1.4.823: {} + electron-to-chromium@1.4.824: {} emery@1.4.3: {}