diff --git a/apps/web/declarations/next-auth.d.ts b/apps/web/declarations/next-auth.d.ts index 746d9abfc..7eb69534e 100644 --- a/apps/web/declarations/next-auth.d.ts +++ b/apps/web/declarations/next-auth.d.ts @@ -3,7 +3,7 @@ import type { TimeFormat } from "@rallly/database"; import { extend } from "lodash"; import type { DefaultSession, DefaultUser } from "next-auth"; import NextAuth from "next-auth"; -import type { DefaultJWT} from "next-auth/jwt"; +import type { DefaultJWT } from "next-auth/jwt"; import { JWT } from "next-auth/jwt"; declare module "next-auth" { @@ -11,7 +11,7 @@ declare module "next-auth" { * Returned by `useSession`, `getSession` and received as a prop on the `SessionProvider` React Context */ interface Session { - user: { + user?: { id: string; timeZone?: string | null; timeFormat?: TimeFormat | null; diff --git a/apps/web/next.config.js b/apps/web/next.config.js index ea9f0f120..3383482dc 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -23,6 +23,7 @@ const nextConfig = { "@rallly/ui", "@rallly/tailwind-config", "@rallly/posthog", + "@rallly/guest-user", "@rallly/emails", ], webpack(config) { diff --git a/apps/web/package.json b/apps/web/package.json index a56337422..00c57581f 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -34,7 +34,7 @@ "@rallly/posthog": "*", "@rallly/tailwind-config": "*", "@rallly/ui": "*", - "@sentry/nextjs": "*", + "@sentry/nextjs": "^8.32.0", "@svgr/webpack": "^6.5.1", "@t3-oss/env-nextjs": "^0.11.0", "@tanstack/react-query": "^4.0.0", diff --git a/apps/web/src/app/[locale]/(admin)/pro-badge.tsx b/apps/web/src/app/[locale]/(admin)/pro-badge.tsx index 1f3715ef5..068a1f226 100644 --- a/apps/web/src/app/[locale]/(admin)/pro-badge.tsx +++ b/apps/web/src/app/[locale]/(admin)/pro-badge.tsx @@ -3,7 +3,7 @@ import { Badge } from "@rallly/ui/badge"; import { Trans } from "@/components/trans"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; export function ProBadge() { const { user } = useUser(); diff --git a/apps/web/src/app/[locale]/(admin)/settings/profile/profile-page.tsx b/apps/web/src/app/[locale]/(admin)/settings/profile/profile-page.tsx index 7858df7f7..694c1e023 100644 --- a/apps/web/src/app/[locale]/(admin)/settings/profile/profile-page.tsx +++ b/apps/web/src/app/[locale]/(admin)/settings/profile/profile-page.tsx @@ -12,13 +12,13 @@ import { useTranslation } from "next-i18next"; import { DeleteAccountDialog } from "@/app/[locale]/(admin)/settings/profile/delete-account-dialog"; import { ProfileSettings } from "@/app/[locale]/(admin)/settings/profile/profile-settings"; import { LogoutButton } from "@/app/components/logout-button"; +import { useUser } from "@/auth/client/user-provider"; import { Settings, SettingsContent, SettingsSection, } from "@/components/settings/settings"; import { Trans } from "@/components/trans"; -import { useUser } from "@/components/user-provider"; export const ProfilePage = () => { const { t } = useTranslation(); diff --git a/apps/web/src/app/[locale]/(admin)/settings/profile/profile-picture.tsx b/apps/web/src/app/[locale]/(admin)/settings/profile/profile-picture.tsx index 33dcc15b5..38f47633e 100644 --- a/apps/web/src/app/[locale]/(admin)/settings/profile/profile-picture.tsx +++ b/apps/web/src/app/[locale]/(admin)/settings/profile/profile-picture.tsx @@ -7,7 +7,7 @@ import { z } from "zod"; import { OptimizedAvatarImage } from "@/components/optimized-avatar-image"; import { Trans } from "@/components/trans"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { IfCloudHosted } from "@/contexts/environment"; import { useTranslation } from "@/i18n/client"; import { trpc } from "@/trpc/client"; diff --git a/apps/web/src/app/[locale]/(admin)/settings/profile/profile-settings.tsx b/apps/web/src/app/[locale]/(admin)/settings/profile/profile-settings.tsx index 40e12c58d..5b7a4e309 100644 --- a/apps/web/src/app/[locale]/(admin)/settings/profile/profile-settings.tsx +++ b/apps/web/src/app/[locale]/(admin)/settings/profile/profile-settings.tsx @@ -11,7 +11,7 @@ import { useForm } from "react-hook-form"; import { ProfilePicture } from "@/app/[locale]/(admin)/settings/profile/profile-picture"; import { Trans } from "@/components/trans"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { trpc } from "@/trpc/client"; export const ProfileSettings = () => { diff --git a/apps/web/src/app/[locale]/(admin)/sidebar.tsx b/apps/web/src/app/[locale]/(admin)/sidebar.tsx index e3ccec394..78d43c1d6 100644 --- a/apps/web/src/app/[locale]/(admin)/sidebar.tsx +++ b/apps/web/src/app/[locale]/(admin)/sidebar.tsx @@ -24,7 +24,7 @@ import { OptimizedAvatarImage } from "@/components/optimized-avatar-image"; import { PayWallDialog } from "@/components/pay-wall-dialog"; import { ProBadge } from "@/components/pro-badge"; import { Trans } from "@/components/trans"; -import { IfGuest, useUser } from "@/components/user-provider"; +import { IfGuest, useUser } from "@/auth/client/user-provider"; import { IfFreeUser } from "@/contexts/plan"; import type { IconComponent } from "@/types"; diff --git a/apps/web/src/app/[locale]/invite/[urlId]/invite-page.tsx b/apps/web/src/app/[locale]/invite/[urlId]/invite-page.tsx index 04681d726..747468aa6 100644 --- a/apps/web/src/app/[locale]/invite/[urlId]/invite-page.tsx +++ b/apps/web/src/app/[locale]/invite/[urlId]/invite-page.tsx @@ -11,7 +11,7 @@ import { ScheduledEvent } from "@/components/poll/scheduled-event"; import { useTouchBeacon } from "@/components/poll/use-touch-beacon"; import { VotingForm } from "@/components/poll/voting-form"; import { Trans } from "@/components/trans"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { usePoll } from "@/contexts/poll"; const GoToApp = () => { diff --git a/apps/web/src/app/[locale]/invite/[urlId]/nav.tsx b/apps/web/src/app/[locale]/invite/[urlId]/nav.tsx index 77983daed..bcf02dd50 100644 --- a/apps/web/src/app/[locale]/invite/[urlId]/nav.tsx +++ b/apps/web/src/app/[locale]/invite/[urlId]/nav.tsx @@ -6,7 +6,7 @@ import Link from "next/link"; import { PageHeader } from "@/app/components/page-layout"; import { Trans } from "@/components/trans"; import { UserDropdown } from "@/components/user-dropdown"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { usePoll } from "@/contexts/poll"; export const Nav = () => { diff --git a/apps/web/src/app/[locale]/layout.tsx b/apps/web/src/app/[locale]/layout.tsx index 8f9bfa913..bdd33177c 100644 --- a/apps/web/src/app/[locale]/layout.tsx +++ b/apps/web/src/app/[locale]/layout.tsx @@ -12,6 +12,8 @@ import React from "react"; import { TimeZoneChangeDetector } from "@/app/[locale]/timezone-change-detector"; import { Providers } from "@/app/providers"; import { getServerSession } from "@/auth"; +import { getGuestUser } from "@/auth/next"; +import type { User } from "@/auth/schema"; import { SessionProvider } from "@/auth/session-provider"; const PostHogPageView = dynamic(() => import("@rallly/posthog/next"), { @@ -38,8 +40,11 @@ export default async function Root({ params: { locale: string }; }) { let session: Session | null = null; + let guestUser: User | null = null; + try { session = await getServerSession(); + guestUser = await getGuestUser(); } catch (error) { console.error(error); } @@ -49,7 +54,7 @@ export default async function Root({ - + {children} diff --git a/apps/web/src/app/[locale]/poll/[urlId]/guest-poll-alert.tsx b/apps/web/src/app/[locale]/poll/[urlId]/guest-poll-alert.tsx index 0d6999663..455ccfec6 100644 --- a/apps/web/src/app/[locale]/poll/[urlId]/guest-poll-alert.tsx +++ b/apps/web/src/app/[locale]/poll/[urlId]/guest-poll-alert.tsx @@ -5,7 +5,7 @@ import { Trans } from "next-i18next"; import { LoginLink } from "@/components/login-link"; import { RegisterLink } from "@/components/register-link"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { usePoll } from "@/contexts/poll"; export const GuestPollAlert = () => { diff --git a/apps/web/src/app/guest.ts b/apps/web/src/app/guest.ts index 2072a8fa6..5ee833e6e 100644 --- a/apps/web/src/app/guest.ts +++ b/apps/web/src/app/guest.ts @@ -1,15 +1,17 @@ import languages from "@rallly/languages"; import { absoluteUrl } from "@rallly/utils/absolute-url"; +import { randomid } from "@rallly/utils/nanoid"; import languageParser from "accept-language-parser"; import type { NextRequest, NextResponse } from "next/server"; import type { JWT } from "next-auth/jwt"; -import { encode } from "next-auth/jwt"; +import { decode, encode } from "next-auth/jwt"; -import { randomid } from "@/utils/nanoid"; +import { GUEST_USER_COOKIE } from "@/auth/constants"; +import { createGuestUser } from "@/auth/lib/create-guest-user"; const supportedLocales = Object.keys(languages); -function getCookieSettings() { +function getNextAuthCookieSettings() { const secure = absoluteUrl().startsWith("https://"); const prefix = secure ? "__Secure-" : ""; const name = `${prefix}next-auth.session-token`; @@ -30,7 +32,7 @@ export async function getLocaleFromHeader(req: NextRequest) { } async function setCookie(res: NextResponse, jwt: JWT) { - const { name, secure } = getCookieSettings(); + const { name, secure } = getNextAuthCookieSettings(); const token = await encode({ token: jwt, @@ -47,6 +49,33 @@ async function setCookie(res: NextResponse, jwt: JWT) { }); } +export async function migrateGuestFromNextAuthCookie( + req: NextRequest, + res: NextResponse, +) { + const { name } = getNextAuthCookieSettings(); + if (req.cookies.has(name)) { + // get user session token + const token = req.cookies.get(name)?.value; + if (token) { + const jwt = await decode({ + token, + secret: process.env.SECRET_PASSWORD, + }); + if (jwt?.sub && jwt?.locale) { + const user = await createGuestUser({ + id: jwt.sub, + locale: jwt.locale, + timeZone: jwt.timeZone ?? undefined, + weekStart: jwt.weekStart ?? undefined, + timeFormat: jwt.timeFormat ?? undefined, + }); + res.cookies.set(GUEST_USER_COOKIE, JSON.stringify(user)); + } + } + } +} + export async function resetUser(req: NextRequest, res: NextResponse) { // resets to a new guest user const locale = await getLocaleFromHeader(req); @@ -61,7 +90,7 @@ export async function resetUser(req: NextRequest, res: NextResponse) { } export async function initGuest(req: NextRequest, res: NextResponse) { - const { name } = getCookieSettings(); + const { name } = getNextAuthCookieSettings(); if (req.cookies.has(name)) { // already has a session token diff --git a/apps/web/src/app/providers.tsx b/apps/web/src/app/providers.tsx index 22eb90834..4f0a34142 100644 --- a/apps/web/src/app/providers.tsx +++ b/apps/web/src/app/providers.tsx @@ -5,7 +5,7 @@ import { createTRPCReact } from "@trpc/react-query"; import { domMax, LazyMotion } from "framer-motion"; import { useState } from "react"; -import { UserProvider } from "@/components/user-provider"; +import { UserProvider } from "@/auth/client/user-provider"; import { I18nProvider } from "@/i18n/client"; import { trpcConfig } from "@/trpc/client/config"; import type { AppRouter } from "@/trpc/routers"; diff --git a/apps/web/src/auth.ts b/apps/web/src/auth.ts index e755f48c0..4de0c231b 100644 --- a/apps/web/src/auth.ts +++ b/apps/web/src/auth.ts @@ -1,6 +1,7 @@ import { prisma } from "@rallly/database"; import { posthog } from "@rallly/posthog/server"; import { absoluteUrl } from "@rallly/utils/absolute-url"; +import { generateOtp, randomid } from "@rallly/utils/nanoid"; import type { GetServerSidePropsContext, NextApiRequest, @@ -20,7 +21,6 @@ import { env } from "@/env"; import type { RegistrationTokenPayload } from "@/trpc/types"; import { getEmailClient } from "@/utils/emails"; import { getValueByPath } from "@/utils/get-value-by-path"; -import { generateOtp, randomid } from "@/utils/nanoid"; import { decryptToken } from "@/utils/session"; import { CustomPrismaAdapter } from "./auth/custom-prisma-adapter"; @@ -239,7 +239,7 @@ const getAuthOptions = (...args: GetServerSessionParams) => return false; } } else { - // merge guest user into newly logged in user + // merge guest user into newly logged in user` const session = await getServerSession(...args); if (session && session.user.email === null) { await mergeGuestsIntoUser(user.id, [session.user.id]); @@ -264,6 +264,9 @@ const getAuthOptions = (...args: GetServerSessionParams) => return token; }, async session({ session, token }) { + if (!session.user) { + return session; + } // If the user is a guest, we don't need to fetch them from the database if (token.sub?.startsWith("user-")) { session.user.id = token.sub as string; diff --git a/apps/web/src/auth/client/use-guest-user.tsx b/apps/web/src/auth/client/use-guest-user.tsx new file mode 100644 index 000000000..10aa88737 --- /dev/null +++ b/apps/web/src/auth/client/use-guest-user.tsx @@ -0,0 +1,13 @@ +import Cookies from "js-cookie"; + +import { GUEST_USER_COOKIE } from "../constants"; +import { safeParseGuestUser } from "../lib/parse-guest"; + +export function useGuestUser() { + const cookie = Cookies.get(GUEST_USER_COOKIE); + if (cookie) { + return safeParseGuestUser(cookie); + } + + return null; +} diff --git a/apps/web/src/components/user-provider.tsx b/apps/web/src/auth/client/user-provider.tsx similarity index 83% rename from apps/web/src/components/user-provider.tsx rename to apps/web/src/auth/client/user-provider.tsx index a0144779d..fb0a472a7 100644 --- a/apps/web/src/components/user-provider.tsx +++ b/apps/web/src/auth/client/user-provider.tsx @@ -5,12 +5,13 @@ import { useSession } from "next-auth/react"; import React from "react"; import { Spinner } from "@/components/spinner"; +import { useRequiredContext } from "@/components/use-required-context"; import { useSubscription } from "@/contexts/plan"; import { PreferencesProvider } from "@/contexts/preferences"; import { useTranslation } from "@/i18n/client"; import { trpc } from "@/trpc/client"; -import { useRequiredContext } from "./use-required-context"; +import { useGuestUser } from "./use-guest-user"; type UserData = { id: string; @@ -55,16 +56,28 @@ export const IfGuest = (props: { children?: React.ReactNode }) => { export const UserProvider = (props: { children?: React.ReactNode }) => { const session = useSession(); - const user = session.data?.user; + const guestUser = useGuestUser(); + const authenticatedUser = session.data?.user; const subscription = useSubscription(); const updatePreferences = trpc.user.updatePreferences.useMutation(); const { t, i18n } = useTranslation(); const posthog = usePostHog(); - const isGuest = !user?.email; + const isGuest = !authenticatedUser?.email; const tier = isGuest ? "guest" : subscription?.active ? "pro" : "hobby"; + const user = { + id: authenticatedUser?.id ?? guestUser?.id, + name: authenticatedUser?.name, + email: authenticatedUser?.email, + timeZone: authenticatedUser?.timeZone ?? guestUser?.timeZone, + timeFormat: authenticatedUser?.timeFormat ?? guestUser?.timeFormat, + weekStart: authenticatedUser?.weekStart ?? guestUser?.weekStart, + image: authenticatedUser?.image, + locale: authenticatedUser?.locale ?? guestUser?.locale, + }; + React.useEffect(() => { if (user) { posthog?.identify(user.id, { diff --git a/apps/web/src/auth/constants.ts b/apps/web/src/auth/constants.ts new file mode 100644 index 000000000..ca77954c0 --- /dev/null +++ b/apps/web/src/auth/constants.ts @@ -0,0 +1 @@ +export const GUEST_USER_COOKIE = "rallly-user"; diff --git a/apps/web/src/auth/edge.ts b/apps/web/src/auth/edge.ts new file mode 100644 index 000000000..be5379ab0 --- /dev/null +++ b/apps/web/src/auth/edge.ts @@ -0,0 +1,36 @@ +import type { NextRequest, NextResponse } from "next/server"; + +import { + getLocaleFromHeader, + migrateGuestFromNextAuthCookie, +} from "@/app/guest"; + +import { GUEST_USER_COOKIE } from "./constants"; +import { createGuestUser } from "./lib/create-guest-user"; +import { safeParseGuestUser } from "./lib/parse-guest"; +import { type User } from "./schema"; + +export async function initGuestUser( + req: NextRequest, + res: NextResponse, +): Promise { + await migrateGuestFromNextAuthCookie(req, res); + const cookie = req.cookies.get(GUEST_USER_COOKIE); + + if (cookie) { + const user = safeParseGuestUser(cookie.value); + if (user) { + return user; + } + } + + const user = await createGuestUser({ + locale: await getLocaleFromHeader(req), + }); + + res.cookies.set(GUEST_USER_COOKIE, JSON.stringify(user), { + httpOnly: false, + }); + + return user; +} diff --git a/apps/web/src/auth/lib/create-guest-user.ts b/apps/web/src/auth/lib/create-guest-user.ts new file mode 100644 index 000000000..c76c17fd3 --- /dev/null +++ b/apps/web/src/auth/lib/create-guest-user.ts @@ -0,0 +1,12 @@ +import { randomid } from "@rallly/utils/nanoid"; + +import type { User } from "../schema"; + +export async function createGuestUser(initialData: Partial) { + const user: User = { + id: initialData.id ?? `user-${randomid()}`, + createdAt: new Date().toISOString(), + locale: initialData.locale ?? "en", + }; + return user; +} diff --git a/apps/web/src/auth/lib/parse-guest.ts b/apps/web/src/auth/lib/parse-guest.ts new file mode 100644 index 000000000..ae0e278e0 --- /dev/null +++ b/apps/web/src/auth/lib/parse-guest.ts @@ -0,0 +1,13 @@ +import { userSchema } from "../schema"; + +export function safeParseGuestUser(serialized: string) { + try { + const res = userSchema.safeParse(JSON.parse(serialized)); + if (res.success) { + return res.data; + } + } catch (error) { + // TODO: Log error + } + return null; +} diff --git a/apps/web/src/auth/next.ts b/apps/web/src/auth/next.ts new file mode 100644 index 000000000..f9e690689 --- /dev/null +++ b/apps/web/src/auth/next.ts @@ -0,0 +1,31 @@ +import type { NextApiRequest } from "next"; +import { cookies } from "next/headers"; + +import { GUEST_USER_COOKIE } from "./constants"; +import { safeParseGuestUser } from "./lib/parse-guest"; +import { userSchema } from "./schema"; + +export async function getGuestUserFromApiRequest(req: NextApiRequest) { + const cookie = req.cookies[GUEST_USER_COOKIE]; + + if (cookie) { + try { + const res = userSchema.safeParse(JSON.parse(cookie)); + if (res.success) { + return res.data; + } + } catch (error) { + console.error("Error parsing guest user cookie", error); + } + } + + return null; +} + +export async function getGuestUser() { + const cookie = cookies().get(GUEST_USER_COOKIE)?.value; + if (cookie) { + return safeParseGuestUser(cookie); + } + return null; +} diff --git a/apps/web/src/auth/schema.ts b/apps/web/src/auth/schema.ts new file mode 100644 index 000000000..a061018da --- /dev/null +++ b/apps/web/src/auth/schema.ts @@ -0,0 +1,12 @@ +import { z } from "zod"; + +export const userSchema = z.object({ + id: z.string(), + locale: z.string(), + createdAt: z.string(), + timeZone: z.string().optional().catch(undefined), + weekStart: z.number().optional().catch(undefined), + timeFormat: z.enum(["hours12", "hours24"]).optional().catch(undefined), +}); + +export type User = z.infer; diff --git a/apps/web/src/components/create-poll.tsx b/apps/web/src/components/create-poll.tsx index 909417273..fe13f580f 100644 --- a/apps/web/src/components/create-poll.tsx +++ b/apps/web/src/components/create-poll.tsx @@ -17,11 +17,11 @@ import { useUnmount } from "react-use"; import { PollSettingsForm } from "@/components/forms/poll-settings"; import { Trans } from "@/components/trans"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { trpc } from "@/trpc/client"; import { setCookie } from "@/utils/cookies"; -import type { NewEventData} from "./forms"; +import type { NewEventData } from "./forms"; import { PollDetailsForm, PollOptionsForm } from "./forms"; const required = (v: T | undefined): T => { diff --git a/apps/web/src/components/discussion/discussion.tsx b/apps/web/src/components/discussion/discussion.tsx index 931650e6f..b8719ba98 100644 --- a/apps/web/src/components/discussion/discussion.tsx +++ b/apps/web/src/components/discussion/discussion.tsx @@ -41,7 +41,7 @@ import { trpc } from "@/trpc/client"; import { requiredString } from "../../utils/form-validation"; import TruncatedLinkify from "../poll/truncated-linkify"; -import { useUser } from "../user-provider"; +import { useUser } from "../../auth/client/user-provider"; interface CommentForm { authorName: string; diff --git a/apps/web/src/components/layouts/poll-layout.tsx b/apps/web/src/components/layouts/poll-layout.tsx index 1e33851f1..332a0c78c 100644 --- a/apps/web/src/components/layouts/poll-layout.tsx +++ b/apps/web/src/components/layouts/poll-layout.tsx @@ -29,7 +29,7 @@ import ManagePoll from "@/components/poll/manage-poll"; import NotificationsToggle from "@/components/poll/notifications-toggle"; import { LegacyPollContextProvider } from "@/components/poll/poll-context-provider"; import { Trans } from "@/components/trans"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { usePlan } from "@/contexts/plan"; import { usePoll } from "@/contexts/poll"; import { trpc } from "@/trpc/client"; diff --git a/apps/web/src/components/poll/desktop-poll/participant-row.tsx b/apps/web/src/components/poll/desktop-poll/participant-row.tsx index 6dd080795..d473e0895 100644 --- a/apps/web/src/components/poll/desktop-poll/participant-row.tsx +++ b/apps/web/src/components/poll/desktop-poll/participant-row.tsx @@ -11,7 +11,7 @@ import { Participant, ParticipantName } from "@/components/participant"; import { ParticipantDropdown } from "@/components/participant-dropdown"; import { usePoll } from "@/components/poll-context"; import { Trans } from "@/components/trans"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { usePermissions } from "@/contexts/permissions"; import type { Vote } from "@/trpc/client/types"; diff --git a/apps/web/src/components/poll/mobile-poll.tsx b/apps/web/src/components/poll/mobile-poll.tsx index 648c83f53..561e1662a 100644 --- a/apps/web/src/components/poll/mobile-poll.tsx +++ b/apps/web/src/components/poll/mobile-poll.tsx @@ -26,7 +26,7 @@ import { Trans } from "@/components/trans"; import { usePermissions } from "@/contexts/permissions"; import { useVisibleParticipants } from "../participants-provider"; -import { useUser } from "../user-provider"; +import { useUser } from "../../auth/client/user-provider"; import GroupedOptions from "./mobile-poll/grouped-options"; if (typeof window !== "undefined") { diff --git a/apps/web/src/components/poll/notifications-toggle.tsx b/apps/web/src/components/poll/notifications-toggle.tsx index 29fcfd336..8e9ff71b0 100644 --- a/apps/web/src/components/poll/notifications-toggle.tsx +++ b/apps/web/src/components/poll/notifications-toggle.tsx @@ -9,7 +9,7 @@ import * as React from "react"; import { Skeleton } from "@/components/skeleton"; import { Trans } from "@/components/trans"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { trpc } from "@/trpc/client"; import { usePoll } from "../poll-context"; diff --git a/apps/web/src/components/user-dropdown.tsx b/apps/web/src/components/user-dropdown.tsx index 7a6feafa4..f93136e40 100644 --- a/apps/web/src/components/user-dropdown.tsx +++ b/apps/web/src/components/user-dropdown.tsx @@ -34,7 +34,11 @@ import { IfCloudHosted, IfSelfHosted } from "@/contexts/environment"; import { Plan, usePlan } from "@/contexts/plan"; import { isFeedbackEnabled } from "@/utils/constants"; -import { IfAuthenticated, IfGuest, useUser } from "./user-provider"; +import { + IfAuthenticated, + IfGuest, + useUser, +} from "../auth/client/user-provider"; function logout() { // programmtically submit form with name="logout" diff --git a/apps/web/src/contexts/permissions.ts b/apps/web/src/contexts/permissions.ts index ac9cb806c..af7133c54 100644 --- a/apps/web/src/contexts/permissions.ts +++ b/apps/web/src/contexts/permissions.ts @@ -1,7 +1,7 @@ import React from "react"; import { useParticipants } from "@/components/participants-provider"; -import { useUser } from "@/components/user-provider"; +import { useUser } from "@/auth/client/user-provider"; import { usePoll } from "@/contexts/poll"; import { useRole } from "@/contexts/role"; diff --git a/apps/web/src/middleware.ts b/apps/web/src/middleware.ts index 23e50cdb6..41ada9700 100644 --- a/apps/web/src/middleware.ts +++ b/apps/web/src/middleware.ts @@ -2,7 +2,8 @@ import languages from "@rallly/languages"; import { NextResponse } from "next/server"; import withAuth from "next-auth/middleware"; -import { getLocaleFromHeader, initGuest } from "@/app/guest"; +import { getLocaleFromHeader } from "@/app/guest"; +import { initGuestUser } from "@/auth/edge"; import { isSelfHosted } from "@/utils/constants"; const supportedLocales = Object.keys(languages); @@ -34,7 +35,7 @@ export const middleware = withAuth( const res = NextResponse.rewrite(newUrl); - await initGuest(req, res); + await initGuestUser(req, res); return res; }, diff --git a/apps/web/src/pages/_app.tsx b/apps/web/src/pages/_app.tsx index 1abf3b4c1..18769c3d5 100644 --- a/apps/web/src/pages/_app.tsx +++ b/apps/web/src/pages/_app.tsx @@ -12,7 +12,7 @@ import { SessionProvider, signIn, useSession } from "next-auth/react"; import React from "react"; import Maintenance from "@/components/maintenance"; -import { UserProvider } from "@/components/user-provider"; +import { UserProvider } from "@/auth/client/user-provider"; import { I18nProvider } from "@/i18n/client"; import { trpc } from "@/trpc/client"; import { ConnectedDayjsProvider } from "@/utils/dayjs"; diff --git a/apps/web/src/pages/api/trpc/[trpc].ts b/apps/web/src/pages/api/trpc/[trpc].ts index fe3e4383a..5f21c445f 100644 --- a/apps/web/src/pages/api/trpc/[trpc].ts +++ b/apps/web/src/pages/api/trpc/[trpc].ts @@ -4,6 +4,7 @@ import { TRPCError } from "@trpc/server"; import { createNextApiHandler } from "@trpc/server/adapters/next"; import { getServerSession } from "@/auth"; +import { getGuestUserFromApiRequest } from "@/auth/next"; import type { AppRouter } from "@/trpc/routers"; import { appRouter } from "@/trpc/routers"; import { getEmailClient } from "@/utils/emails"; @@ -19,27 +20,28 @@ const trpcApiHandler = createNextApiHandler({ router: appRouter, createContext: async (opts) => { const session = await getServerSession(opts.req, opts.res); + const guestUser = await getGuestUserFromApiRequest(opts.req); - if (!session) { - throw new TRPCError({ - code: "UNAUTHORIZED", - message: "Unauthorized", - }); + const id = session?.user?.id || guestUser?.id; + const isGuest = !session?.user?.email; + const locale = session?.user?.locale ?? guestUser?.locale; + const image = session?.user?.image ?? undefined; + + if (!id) { + throw new TRPCError({ code: "UNAUTHORIZED" }); } - const res = { + return { user: { - id: session.user.id, - isGuest: session.user.email === null, - locale: session.user.locale ?? undefined, - image: session.user.image ?? undefined, - getEmailClient: () => getEmailClient(session.user.locale ?? undefined), + id, + isGuest, + locale, + image, + getEmailClient: () => getEmailClient(locale), }, req: opts.req, res: opts.res, }; - - return res; }, onError({ error }) { if (error.code === "INTERNAL_SERVER_ERROR") { diff --git a/apps/web/src/trpc/routers/auth.ts b/apps/web/src/trpc/routers/auth.ts index 3832f6711..7aea0c831 100644 --- a/apps/web/src/trpc/routers/auth.ts +++ b/apps/web/src/trpc/routers/auth.ts @@ -3,7 +3,7 @@ import { posthog } from "@rallly/posthog/server"; import { z } from "zod"; import { isEmailBlocked } from "@/auth"; -import { generateOtp } from "@/utils/nanoid"; +import { generateOtp } from "@rallly/utils/nanoid"; import { createToken, decryptToken } from "@/utils/session"; import { publicProcedure, rateLimitMiddleware, router } from "../trpc"; diff --git a/apps/web/src/trpc/routers/polls.ts b/apps/web/src/trpc/routers/polls.ts index b6db0914b..73df076ca 100644 --- a/apps/web/src/trpc/routers/polls.ts +++ b/apps/web/src/trpc/routers/polls.ts @@ -2,6 +2,7 @@ import type { PollStatus } from "@rallly/database"; import { prisma } from "@rallly/database"; import { posthog } from "@rallly/posthog/server"; import { absoluteUrl, shortUrl } from "@rallly/utils/absolute-url"; +import { nanoid } from "@rallly/utils/nanoid"; import { TRPCError } from "@trpc/server"; import dayjs from "dayjs"; import * as ics from "ics"; @@ -10,7 +11,6 @@ import { z } from "zod"; import { getEmailClient } from "@/utils/emails"; import { getTimeZoneAbbreviation } from "../../utils/date"; -import { nanoid } from "../../utils/nanoid"; import { possiblyPublicProcedure, proProcedure, diff --git a/packages/posthog/package.json b/packages/posthog/package.json index 1497730d3..c8fe97255 100644 --- a/packages/posthog/package.json +++ b/packages/posthog/package.json @@ -9,7 +9,8 @@ "exports": { "./server": "./src/server/index.ts", "./client": "./src/client/index.ts", - "./next": "./src/next.ts" + "./next": "./src/next.ts", + "./edge": "./src/edge.ts" }, "dependencies": { "posthog-js": "^1.180.1", diff --git a/packages/tsconfig/base.json b/packages/tsconfig/base.json index e35905d37..66373c9ff 100644 --- a/packages/tsconfig/base.json +++ b/packages/tsconfig/base.json @@ -3,10 +3,13 @@ "display": "Default", "extends": "@tsconfig/strictest/tsconfig.json", "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", "noPropertyAccessFromIndexSignature": false, "exactOptionalPropertyTypes": false, "noUncheckedIndexedAccess": false, "noImplicitReturns": false, - "verbatimModuleSyntax": true + "verbatimModuleSyntax": true, + "skipLibCheck": true } } diff --git a/packages/utils/package.json b/packages/utils/package.json index 11c1996f8..a2d804e66 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,5 +1,6 @@ { "name": "@rallly/utils", + "type": "module", "version": "0.0.0", "private": true, "scripts": { @@ -8,6 +9,9 @@ "exports": { "./*": "./src/*.ts" }, + "dependencies": { + "nanoid": "^4.0.0" + }, "devDependencies": { "vitest": "^2.1.1" } diff --git a/apps/web/src/utils/nanoid.ts b/packages/utils/src/nanoid.ts similarity index 100% rename from apps/web/src/utils/nanoid.ts rename to packages/utils/src/nanoid.ts diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 49bb37363..b6d0718e9 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -2,6 +2,6 @@ "compilerOptions": { "types": ["vitest/globals"], }, - "extends": "@rallly/tsconfig/react.json", + "extends": "@rallly/tsconfig/base.json", "include": ["**/*.ts", "**/*.tsx"], } diff --git a/yarn.lock b/yarn.lock index 9ff1da5db..19eadaa2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3137,16 +3137,6 @@ "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-connect@0.38.0": - version "0.38.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.38.0.tgz#1f4aa27894eac2538fb3c8fce7b1be92cae0217e" - integrity sha512-2/nRnx3pjYEmdPIaBwtgtSviTKHWnDZN3R+TkRUnhIVrvBKVcq+I5B2rtd6mr6Fe9cHlZ9Ojcuh7pkNh/xdWWg== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@types/connect" "3.4.36" - "@opentelemetry/instrumentation-connect@0.39.0": version "0.39.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.39.0.tgz#32bdbaac464cba061c95df6c850ee81efdd86f8b" @@ -3164,15 +3154,6 @@ dependencies: "@opentelemetry/instrumentation" "^0.53.0" -"@opentelemetry/instrumentation-express@0.41.1": - version "0.41.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.41.1.tgz#658561df6ffbae86f5ad33e8d7ef2abb7b4967fc" - integrity sha512-uRx0V3LPGzjn2bxAnV8eUsDT82vT7NTwI0ezEuPMBOTOsnPpGhWdhcdNdhH80sM4TrWrOfXm9HGEdfWE3TRIww== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@opentelemetry/instrumentation-express@0.42.0": version "0.42.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.42.0.tgz#279f195aa66baee2b98623a16666c6229c8e7564" @@ -3182,15 +3163,6 @@ "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-fastify@0.38.0": - version "0.38.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.38.0.tgz#0cb02ee1156197075e8a90e4fd18a6b6c94221ba" - integrity sha512-HBVLpTSYpkQZ87/Df3N0gAw7VzYZV3n28THIBrJWfuqw3Or7UqdhnjeuMIPQ04BKk3aZc0cWn2naSQObbh5vXw== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@opentelemetry/instrumentation-fastify@0.39.0": version "0.39.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.39.0.tgz#96a040e4944daf77c53a8fe5a128bc3b2568e4aa" @@ -3200,14 +3172,6 @@ "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-fs@0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.14.0.tgz#19f1cb38a8c2d05f3b96af67f1c8d43f0af2829b" - integrity sha512-pVc8P5AgliC1DphyyBUgsxXlm2XaPH4BpYvt7rAZDMIqUpRk8gs19SioABtKqqxvFzg5jPtgJfJsdxq0Y+maLw== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/instrumentation-fs@0.15.0": version "0.15.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.15.0.tgz#41658507860f39fee5209bca961cea8d24ca2a83" @@ -3223,13 +3187,6 @@ dependencies: "@opentelemetry/instrumentation" "^0.53.0" -"@opentelemetry/instrumentation-graphql@0.42.0": - version "0.42.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.42.0.tgz#588a18c39e3b3f655bc09243566172ab0b638d35" - integrity sha512-N8SOwoKL9KQSX7z3gOaw5UaTeVQcfDO1c21csVHnmnmGUoqsXbArK2B8VuwPWcv6/BC/i3io+xTo7QGRZ/z28Q== - dependencies: - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/instrumentation-graphql@0.43.0": version "0.43.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.43.0.tgz#71bb94ea775c70dbd388c739b397ec1418f3f170" @@ -3237,15 +3194,6 @@ dependencies: "@opentelemetry/instrumentation" "^0.53.0" -"@opentelemetry/instrumentation-hapi@0.40.0": - version "0.40.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.40.0.tgz#ae11190f0f57cdb4dc8d792cb8bca61e5343684c" - integrity sha512-8U/w7Ifumtd2bSN1OLaSwAAFhb9FyqWUki3lMMB0ds+1+HdSxYBe9aspEJEgvxAqOkrQnVniAPTEGf1pGM7SOw== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@opentelemetry/instrumentation-hapi@0.41.0": version "0.41.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz#de8711907256d8fae1b5faf71fc825cef4a7ddbb" @@ -3255,16 +3203,6 @@ "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-http@0.52.1": - version "0.52.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.52.1.tgz#12061501601838d1c912f9c29bdd40a13a7e44cf" - integrity sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q== - dependencies: - "@opentelemetry/core" "1.25.1" - "@opentelemetry/instrumentation" "0.52.1" - "@opentelemetry/semantic-conventions" "1.25.1" - semver "^7.5.2" - "@opentelemetry/instrumentation-http@0.53.0": version "0.53.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz#0d806adf1b3aba036bc46e16162e3c0dbb8a6b60" @@ -3275,15 +3213,6 @@ "@opentelemetry/semantic-conventions" "1.27.0" semver "^7.5.2" -"@opentelemetry/instrumentation-ioredis@0.42.0": - version "0.42.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.42.0.tgz#0f488ffc68af3caa474e2f67861759075170729c" - integrity sha512-P11H168EKvBB9TUSasNDOGJCSkpT44XgoM6d3gRIWAa9ghLpYhl0uRkS8//MqPzcJVHr3h3RmfXIpiYLjyIZTw== - dependencies: - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/redis-common" "^0.36.2" - "@opentelemetry/semantic-conventions" "^1.23.0" - "@opentelemetry/instrumentation-ioredis@0.43.0": version "0.43.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz#dbadabaeefc4cb47c406f878444f1bcac774fa89" @@ -3301,15 +3230,6 @@ "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-koa@0.42.0": - version "0.42.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.42.0.tgz#1c180f3605448c2e57a4ba073b69ffba7b2970b3" - integrity sha512-H1BEmnMhho8o8HuNRq5zEI4+SIHDIglNB7BPKohZyWG4fWNuR7yM4GTlR01Syq21vODAS7z5omblScJD/eZdKw== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@opentelemetry/instrumentation-koa@0.43.0": version "0.43.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz#963fd192a1b5f6cbae5dabf4ec82e3105cbb23b1" @@ -3319,15 +3239,6 @@ "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-mongodb@0.46.0": - version "0.46.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.46.0.tgz#e3720e8ca3ca9f228fbf02f0812f7518c030b05e" - integrity sha512-VF/MicZ5UOBiXrqBslzwxhN7TVqzu1/LN/QDpkskqM0Zm0aZ4CVRbUygL8d7lrjLn15x5kGIe8VsSphMfPJzlA== - dependencies: - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/sdk-metrics" "^1.9.1" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@opentelemetry/instrumentation-mongodb@0.47.0": version "0.47.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.47.0.tgz#f8107d878281433905e717f223fb4c0f10356a7b" @@ -3337,15 +3248,6 @@ "@opentelemetry/sdk-metrics" "^1.9.1" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-mongoose@0.40.0": - version "0.40.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.40.0.tgz#9c888312e524c381bfdf56a094c799150332dd51" - integrity sha512-niRi5ZUnkgzRhIGMOozTyoZIvJKNJyhijQI4nF4iFSb+FUx2v5fngfR+8XLmdQAO7xmsD8E5vEGdDVYVtKbZew== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@opentelemetry/instrumentation-mongoose@0.42.0": version "0.42.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz#375afd21adfcd897a8f521c1ffd2d91e6a428705" @@ -3355,15 +3257,6 @@ "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-mysql2@0.40.0": - version "0.40.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.40.0.tgz#fa2992c36d54427dccea68e5c69fff01103dabe6" - integrity sha512-0xfS1xcqUmY7WE1uWjlmI67Xg3QsSUlNT+AcXHeA4BDUPwZtWqF4ezIwLgpVZfHOnkAEheqGfNSWd1PIu3Wnfg== - dependencies: - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@opentelemetry/sql-common" "^0.40.1" - "@opentelemetry/instrumentation-mysql2@0.41.0": version "0.41.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz#6377b6e2d2487fd88e1d79aa03658db6c8d51651" @@ -3373,15 +3266,6 @@ "@opentelemetry/semantic-conventions" "^1.27.0" "@opentelemetry/sql-common" "^0.40.1" -"@opentelemetry/instrumentation-mysql@0.40.0": - version "0.40.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.40.0.tgz#bde5894c8eb447a4b8e940b030b2b73898da03fa" - integrity sha512-d7ja8yizsOCNMYIJt5PH/fKZXjb/mS48zLROO4BzZTtDfhNCl2UM/9VIomP2qkGIFVouSJrGr/T00EzY7bPtKA== - dependencies: - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@types/mysql" "2.15.22" - "@opentelemetry/instrumentation-mysql@0.41.0": version "0.41.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz#2d50691ead5219774bd36d66c35d5b4681485dd7" @@ -3391,14 +3275,6 @@ "@opentelemetry/semantic-conventions" "^1.27.0" "@types/mysql" "2.15.26" -"@opentelemetry/instrumentation-nestjs-core@0.39.0": - version "0.39.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.39.0.tgz#733fef4306c796951d7ea1951b45f9df0aed234d" - integrity sha512-mewVhEXdikyvIZoMIUry8eb8l3HUjuQjSjVbmLVTt4NQi35tkpnHQrG9bTRBrl3403LoWZ2njMPJyg4l6HfKvA== - dependencies: - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.23.0" - "@opentelemetry/instrumentation-nestjs-core@0.40.0": version "0.40.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz#2c0e6405b56caaec32747d55c57ff9a034668ea8" @@ -3407,17 +3283,6 @@ "@opentelemetry/instrumentation" "^0.53.0" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-pg@0.43.0": - version "0.43.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.43.0.tgz#3cd94ad5144e1fd326a921280fa8bb7b49005eb5" - integrity sha512-og23KLyoxdnAeFs1UWqzSonuCkePUzCX30keSYigIzJe/6WSYA8rnEI5lobcxPEzg+GcU06J7jzokuEHbjVJNw== - dependencies: - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@opentelemetry/sql-common" "^0.40.1" - "@types/pg" "8.6.1" - "@types/pg-pool" "2.0.4" - "@opentelemetry/instrumentation-pg@0.44.0": version "0.44.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.44.0.tgz#1e97a0aeb2dca068ee23ce75884a0a0063a7ce3f" @@ -3429,15 +3294,6 @@ "@types/pg" "8.6.1" "@types/pg-pool" "2.0.6" -"@opentelemetry/instrumentation-redis-4@0.41.0": - version "0.41.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.41.0.tgz#6c1b1a37c18478887f346a3bc7ef309ee9f726c0" - integrity sha512-H7IfGTqW2reLXqput4yzAe8YpDC0fmVNal95GHMLOrS89W+qWUKIqxolSh63hJyfmwPSFwXASzj7wpSk8Az+Dg== - dependencies: - "@opentelemetry/instrumentation" "^0.52.0" - "@opentelemetry/redis-common" "^0.36.2" - "@opentelemetry/semantic-conventions" "^1.22.0" - "@opentelemetry/instrumentation-redis-4@0.42.0": version "0.42.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.0.tgz#fc01104cfe884c7546385eaae03c57a47edd19d1" @@ -3455,18 +3311,6 @@ "@opentelemetry/core" "^1.8.0" "@opentelemetry/instrumentation" "^0.53.0" -"@opentelemetry/instrumentation@0.52.1", "@opentelemetry/instrumentation@^0.49 || ^0.50 || ^0.51 || ^0.52.0", "@opentelemetry/instrumentation@^0.52.0", "@opentelemetry/instrumentation@^0.52.1": - version "0.52.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz#2e7e46a38bd7afbf03cf688c862b0b43418b7f48" - integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== - dependencies: - "@opentelemetry/api-logs" "0.52.1" - "@types/shimmer" "^1.0.2" - import-in-the-middle "^1.8.1" - require-in-the-middle "^7.1.1" - semver "^7.5.2" - shimmer "^1.2.1" - "@opentelemetry/instrumentation@0.53.0", "@opentelemetry/instrumentation@^0.53.0": version "0.53.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz#e6369e4015eb5112468a4d45d38dcada7dad892d" @@ -3479,13 +3323,14 @@ semver "^7.5.2" shimmer "^1.2.1" -"@opentelemetry/instrumentation@^0.46.0": - version "0.46.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.46.0.tgz#a8a252306f82e2eace489312798592a14eb9830e" - integrity sha512-a9TijXZZbk0vI5TGLZl+0kxyFfrXHhX6Svtz7Pp2/VBlCSKrazuULEyoJQrOknJyFWNMEmbbJgOciHCCpQcisw== +"@opentelemetry/instrumentation@^0.49 || ^0.50 || ^0.51 || ^0.52.0": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz#2e7e46a38bd7afbf03cf688c862b0b43418b7f48" + integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== dependencies: + "@opentelemetry/api-logs" "0.52.1" "@types/shimmer" "^1.0.2" - import-in-the-middle "1.7.1" + import-in-the-middle "^1.8.1" require-in-the-middle "^7.1.1" semver "^7.5.2" shimmer "^1.2.1" @@ -3495,7 +3340,7 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== -"@opentelemetry/resources@1.25.1", "@opentelemetry/resources@^1.25.1": +"@opentelemetry/resources@1.25.1": version "1.25.1" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.25.1.tgz#bb9a674af25a1a6c30840b755bc69da2796fefbb" integrity sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ== @@ -3520,7 +3365,7 @@ "@opentelemetry/resources" "1.25.1" lodash.merge "^4.6.2" -"@opentelemetry/sdk-trace-base@^1.22", "@opentelemetry/sdk-trace-base@^1.25.1": +"@opentelemetry/sdk-trace-base@^1.22": version "1.25.1" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.1.tgz#cbc1e60af255655d2020aa14cde17b37bd13df37" integrity sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw== @@ -3538,7 +3383,7 @@ "@opentelemetry/resources" "1.26.0" "@opentelemetry/semantic-conventions" "1.27.0" -"@opentelemetry/semantic-conventions@1.25.1", "@opentelemetry/semantic-conventions@^1.17.0", "@opentelemetry/semantic-conventions@^1.22.0", "@opentelemetry/semantic-conventions@^1.23.0", "@opentelemetry/semantic-conventions@^1.25.1": +"@opentelemetry/semantic-conventions@1.25.1": version "1.25.1" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz#0deecb386197c5e9c2c28f2f89f51fb8ae9f145e" integrity sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ== @@ -3650,15 +3495,6 @@ dependencies: "@prisma/debug" "5.17.0" -"@prisma/instrumentation@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@prisma/instrumentation/-/instrumentation-5.18.0.tgz#8b49e25bf3f8f756eb0c4c199b4cf8b6631db891" - integrity sha512-r074avGkpPXItk+josQPhufZEmGhUCb16PQx4ITPS40vWTpTPET4VsgCBZB2alIN6SS7pRFod2vz2M2HHEEylQ== - dependencies: - "@opentelemetry/api" "^1.8" - "@opentelemetry/instrumentation" "^0.49 || ^0.50 || ^0.51 || ^0.52.0" - "@opentelemetry/sdk-trace-base" "^1.22" - "@prisma/instrumentation@5.19.1": version "5.19.1" resolved "https://registry.yarnpkg.com/@prisma/instrumentation/-/instrumentation-5.19.1.tgz#146319cf85f22b7a43296f0f40cfeac55516e66e" @@ -4877,15 +4713,6 @@ domhandler "^5.0.3" selderee "^0.11.0" -"@sentry-internal/browser-utils@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.27.0.tgz#b8fd1c5e6b8c01d76abbba7ac5017eebcf7d3ed2" - integrity sha512-YTIwQ1GM1NTRXgN4DvpFSQ2x4pjlqQ0FQAyHW5x2ZYv4z7VmqG4Xkid1P/srQUipECk6nxkebfD4WR19nLsvnQ== - dependencies: - "@sentry/core" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - "@sentry-internal/browser-utils@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.32.0.tgz#9bcea7d107d5adc82ed9331168468ee44eef8f2d" @@ -4895,15 +4722,6 @@ "@sentry/types" "8.32.0" "@sentry/utils" "8.32.0" -"@sentry-internal/feedback@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.27.0.tgz#46a4cbde49d7a1cb182792c28341a8c89249e6b1" - integrity sha512-b71PQc9aK1X9b/SO1DiJlrnAEx4n0MzPZQ/tKd9oRWDyGit6pJWZfQns9r2rvc96kJPMOTxFAa/upXRCkA723A== - dependencies: - "@sentry/core" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - "@sentry-internal/feedback@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.32.0.tgz#ac9a08b060d1016704e42f8c2726ead419f64061" @@ -4913,16 +4731,6 @@ "@sentry/types" "8.32.0" "@sentry/utils" "8.32.0" -"@sentry-internal/replay-canvas@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.27.0.tgz#24a154f37b200ed99bb99a39cf98c35f25c2b93b" - integrity sha512-uuEfiWbjwugB9M4KxXxovHYiKRqg/R6U4EF8xM/Ub4laUuEcWsfRp7lQ3MxL3qYojbca8ncIFic2bIoKMPeejA== - dependencies: - "@sentry-internal/replay" "8.27.0" - "@sentry/core" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - "@sentry-internal/replay-canvas@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.32.0.tgz#5d56161b0b62b22cbd49db120e3ea56b370ead8c" @@ -4933,16 +4741,6 @@ "@sentry/types" "8.32.0" "@sentry/utils" "8.32.0" -"@sentry-internal/replay@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.27.0.tgz#7762647930c3a9b3d99f6d4c486b28f9d3da70c2" - integrity sha512-Ofucncaon98dvlxte2L//hwuG9yILSxNrTz/PmO0k+HzB9q+oBic4667QF+azWR2qv4oKSWpc+vEovP3hVqveA== - dependencies: - "@sentry-internal/browser-utils" "8.27.0" - "@sentry/core" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - "@sentry-internal/replay@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.32.0.tgz#59e3ec7b51c9214eeae9fa617490b89ce6737e1c" @@ -4953,29 +4751,11 @@ "@sentry/types" "8.32.0" "@sentry/utils" "8.32.0" -"@sentry/babel-plugin-component-annotate@2.20.1": - version "2.20.1" - resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.20.1.tgz#204c63ed006a048f48f633876e1b8bacf87a9722" - integrity sha512-4mhEwYTK00bIb5Y9UWIELVUfru587Vaeg0DQGswv4aIRHIiMKLyNqCEejaaybQ/fNChIZOKmvyqXk430YVd7Qg== - "@sentry/babel-plugin-component-annotate@2.22.3": version "2.22.3" resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.3.tgz#de4970d51a54ef52b21f0d6ec49bd06bf37753c1" integrity sha512-OlHA+i+vnQHRIdry4glpiS/xTOtgjmpXOt6IBOUqynx5Jd/iK1+fj+t8CckqOx9wRacO/hru2wfW/jFq0iViLg== -"@sentry/browser@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.27.0.tgz#997eb6b3c298a659a109704a0fb660eae365cd3a" - integrity sha512-eL1eaHwoYUGkp4mpeYesH6WtCrm+0u9jYCW5Lm0MAeTmpx22BZKEmj0OljuUJXGnJwFbvPDlRjyz6QG11m8kZA== - dependencies: - "@sentry-internal/browser-utils" "8.27.0" - "@sentry-internal/feedback" "8.27.0" - "@sentry-internal/replay" "8.27.0" - "@sentry-internal/replay-canvas" "8.27.0" - "@sentry/core" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - "@sentry/browser@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.32.0.tgz#3944bc5178e6cfffc8c71ba05920fee7dec5bd38" @@ -4989,20 +4769,6 @@ "@sentry/types" "8.32.0" "@sentry/utils" "8.32.0" -"@sentry/bundler-plugin-core@2.20.1": - version "2.20.1" - resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.20.1.tgz#c9dd35e2177a4c22ecf675558eb84fbc2607e465" - integrity sha512-6ipbmGzHekxeRCbp7eoefr6bdd/lW4cNA9eNnrmd9+PicubweGaZZbH2NjhFHsaxzgOezwipDHjrTaap2kTHgw== - dependencies: - "@babel/core" "^7.18.5" - "@sentry/babel-plugin-component-annotate" "2.20.1" - "@sentry/cli" "^2.22.3" - dotenv "^16.3.1" - find-up "^5.0.0" - glob "^9.3.2" - magic-string "0.30.8" - unplugin "1.0.1" - "@sentry/bundler-plugin-core@2.22.3": version "2.22.3" resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.3.tgz#f8c0a25321216ae9777749c1a4b9d982ae1ec2e1" @@ -5017,95 +4783,41 @@ magic-string "0.30.8" unplugin "1.0.1" -"@sentry/cli-darwin@2.32.1": - version "2.32.1" - resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.32.1.tgz#9cb3b8cfb7068d40979514dee72e2bb3ad2c6d0a" - integrity sha512-z/lEwANTYPCzbWTZ2+eeeNYxRLllC8knd0h+vtAKlhmGw/fyc/N39cznIFyFu+dLJ6tTdjOWOeikHtKuS/7onw== - "@sentry/cli-darwin@2.36.3": version "2.36.3" resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.36.3.tgz#17798bb784d09dfa3c91cbe68366c6403527cd11" integrity sha512-U0Uean/tW99G5Ma3CjNDXg5bjd4Tmf91Sd/9JKK6dGcEsrWiQpn7ao70kkHy/fwMbeOWE37L7O+NPf86CxHzGA== -"@sentry/cli-linux-arm64@2.32.1": - version "2.32.1" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.32.1.tgz#785a5d5d3d2919c581bf5b4efc638c3695d8c3bf" - integrity sha512-hsGqHYuecUl1Yhq4MhiRejfh1gNlmhyNPcQEoO/DDRBnGnJyEAdiDpKXJcc2e/lT9k40B55Ob2CP1SeY040T2w== - "@sentry/cli-linux-arm64@2.36.3": version "2.36.3" resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.36.3.tgz#0133753bbd6fc624815bb34afa69f5fd3c703013" integrity sha512-bNr9GUYsn+VcK09FjE+llvxUwtPFAva6FMIcYiAKi6iY3wdmtaOou0Mtkd9dQXkxONAZ0T113x/WQANKBjl4+A== -"@sentry/cli-linux-arm@2.32.1": - version "2.32.1" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.32.1.tgz#7f9e8292850311bab263e7b84800eb407ff37998" - integrity sha512-m0lHkn+o4YKBq8KptGZvpT64FAwSl9mYvHZO9/ChnEGIJ/WyJwiN1X1r9JHVaW4iT5lD0Y5FAyq3JLkk0m0XHg== - "@sentry/cli-linux-arm@2.36.3": version "2.36.3" resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.36.3.tgz#673e0870561480bca034c4db389c374ceebf3dfb" integrity sha512-Kq8+TG/p/j0GLlJVxnLguAGcp3EqrU4msl4K+7g+6JYnOPLVbUzwZ6ah2WVGtWqlZ3QMFgeeXc7VgPY8KXViqw== -"@sentry/cli-linux-i686@2.32.1": - version "2.32.1" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.32.1.tgz#8e85fa58dee042e6a4642e960d226788f8e7288b" - integrity sha512-SuMLN1/ceFd3Q/B0DVyh5igjetTAF423txiABAHASenEev0lG0vZkRDXFclfgDtDUKRPmOXW7VDMirM3yZWQHQ== - "@sentry/cli-linux-i686@2.36.3": version "2.36.3" resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.36.3.tgz#2cb08f8aaf8a9f1e1207ea7ef00e5635a744698e" integrity sha512-5J5lOzZgvhcjbtuw/JD7jMq1liNbtYXvEuSd+qZa7D8i+Va5cFF8fQui3eev2RxqeYLLwkJWE/djLjeWjMZ7jQ== -"@sentry/cli-linux-x64@2.32.1": - version "2.32.1" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.32.1.tgz#b68ed9c4ba163b6730d386dbeca828114f1c979b" - integrity sha512-x4FGd6xgvFddz8V/dh6jii4wy9qjWyvYLBTz8Fhi9rIP+b8wQ3oxwHIdzntareetZP7C1ggx+hZheiYocNYVwA== - "@sentry/cli-linux-x64@2.36.3": version "2.36.3" resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.36.3.tgz#97587b3e4b65f36bfbe66823dabec98e723b5c17" integrity sha512-48pyk93yRiQ7x7ABobYupVfGg1f/vUrBZG7CcaIsDiQL66/kIRjYoh7d7kH8Da/x/LKMiVf/i8/rh2Vr1pcSEw== -"@sentry/cli-win32-i686@2.32.1": - version "2.32.1" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.32.1.tgz#e2532893f87f5d180f6e56f49904d4ac141c8788" - integrity sha512-i6aZma9mFzR+hqMY5VliQZEX6ypP/zUjPK0VtIMYWs5cC6PsQLRmuoeJmy3Z7d4nlh0CdK5NPC813Ej6RY6/vg== - "@sentry/cli-win32-i686@2.36.3": version "2.36.3" resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.36.3.tgz#c953ce5c91bd75618b21c7b50bf4326435863824" integrity sha512-IEuTCeQjgffvBjDGVYV9d2uWBzmFGmwWIyWUTEMjy76tRnIz0MJaW59Lxd7JdTd1s9xO1F2K7Iz+zxd/kufMRg== -"@sentry/cli-win32-x64@2.32.1": - version "2.32.1" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.32.1.tgz#6b60607cbba243f3708779443cd3f16e09d4289c" - integrity sha512-B58w/lRHLb4MUSjJNfMMw2cQykfimDCMLMmeK+1EiT2RmSeNQliwhhBxYcKk82a8kszH6zg3wT2vCea7LyPUyA== - "@sentry/cli-win32-x64@2.36.3": version "2.36.3" resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.36.3.tgz#01cf4dd581f0a7871397569fc459062a98a51e4f" integrity sha512-ygJLd3nazoNcDMJu1sl8xoSWmmjeBJMMUH6MnDhtQdM9T2j+ndqfL0fZZNO0/kyMv0Bo7/n5kRmKiX2m9Dsi/g== -"@sentry/cli@^2.22.3": - version "2.32.1" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.32.1.tgz#80932d3d58e6d3b52e2bd705673e08deeb9cb5b0" - integrity sha512-MWkbkzZfnlE7s2pPbg4VozRSAeMlIObfZlTIou9ye6XnPt6ZmmxCLOuOgSKMv4sXg6aeqKNzMNiadThxCWyvPg== - dependencies: - https-proxy-agent "^5.0.0" - node-fetch "^2.6.7" - progress "^2.0.3" - proxy-from-env "^1.1.0" - which "^2.0.2" - optionalDependencies: - "@sentry/cli-darwin" "2.32.1" - "@sentry/cli-linux-arm" "2.32.1" - "@sentry/cli-linux-arm64" "2.32.1" - "@sentry/cli-linux-i686" "2.32.1" - "@sentry/cli-linux-x64" "2.32.1" - "@sentry/cli-win32-i686" "2.32.1" - "@sentry/cli-win32-x64" "2.32.1" - "@sentry/cli@^2.33.1": version "2.36.3" resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.36.3.tgz#8f0545251c0cf90fe492ce8ca46869d17f5021cd" @@ -5125,14 +4837,6 @@ "@sentry/cli-win32-i686" "2.36.3" "@sentry/cli-win32-x64" "2.36.3" -"@sentry/core@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.27.0.tgz#a0ebe31cdd9313186a14d9738238ed9cf7a59c01" - integrity sha512-4frlXluHT3Du+Omw91K04jpvbfMtydvg4Bxj2+gt/DT19Swhm/fbEpzdUjgbAd3Jinj/n0qk/jFRXjr9JZKFjg== - dependencies: - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - "@sentry/core@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.32.0.tgz#7c4b74afa7a15bd31f5e6881aac82ccfd753e1d6" @@ -5141,27 +4845,6 @@ "@sentry/types" "8.32.0" "@sentry/utils" "8.32.0" -"@sentry/nextjs@*": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-8.27.0.tgz#c6fece7bf856777e3b4b9d67db67af84df68a29c" - integrity sha512-fJgyBZj+arrNDtmxyKlWBm9ApxyzU3ydZPviSK3ub9gJemk0YqW/IKjF3PojtqLvtBnT81heDb/cysBadb+WpA== - dependencies: - "@opentelemetry/instrumentation-http" "0.52.1" - "@opentelemetry/semantic-conventions" "^1.25.1" - "@rollup/plugin-commonjs" "26.0.1" - "@sentry/core" "8.27.0" - "@sentry/node" "8.27.0" - "@sentry/opentelemetry" "8.27.0" - "@sentry/react" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - "@sentry/vercel-edge" "8.27.0" - "@sentry/webpack-plugin" "2.20.1" - chalk "3.0.0" - resolve "1.22.8" - rollup "3.29.4" - stacktrace-parser "^0.1.10" - "@sentry/nextjs@^8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-8.32.0.tgz#33e1fed7e428e88591740e40abacb2c85336d19e" @@ -5184,43 +4867,6 @@ rollup "3.29.5" stacktrace-parser "^0.1.10" -"@sentry/node@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-8.27.0.tgz#91a56b907f4cf7f5d7b2cbb97dbee313383f2887" - integrity sha512-nE2VPSHOW/tzH/lB6CoBtYkmXqXncUuWMC56RLRiPyHEXDktZx8oFp364/3m117iKOjO0XHP57Kl5cdb90IM7g== - dependencies: - "@opentelemetry/api" "^1.9.0" - "@opentelemetry/context-async-hooks" "^1.25.1" - "@opentelemetry/core" "^1.25.1" - "@opentelemetry/instrumentation" "^0.52.1" - "@opentelemetry/instrumentation-connect" "0.38.0" - "@opentelemetry/instrumentation-express" "0.41.1" - "@opentelemetry/instrumentation-fastify" "0.38.0" - "@opentelemetry/instrumentation-fs" "0.14.0" - "@opentelemetry/instrumentation-graphql" "0.42.0" - "@opentelemetry/instrumentation-hapi" "0.40.0" - "@opentelemetry/instrumentation-http" "0.52.1" - "@opentelemetry/instrumentation-ioredis" "0.42.0" - "@opentelemetry/instrumentation-koa" "0.42.0" - "@opentelemetry/instrumentation-mongodb" "0.46.0" - "@opentelemetry/instrumentation-mongoose" "0.40.0" - "@opentelemetry/instrumentation-mysql" "0.40.0" - "@opentelemetry/instrumentation-mysql2" "0.40.0" - "@opentelemetry/instrumentation-nestjs-core" "0.39.0" - "@opentelemetry/instrumentation-pg" "0.43.0" - "@opentelemetry/instrumentation-redis-4" "0.41.0" - "@opentelemetry/resources" "^1.25.1" - "@opentelemetry/sdk-trace-base" "^1.25.1" - "@opentelemetry/semantic-conventions" "^1.25.1" - "@prisma/instrumentation" "5.18.0" - "@sentry/core" "8.27.0" - "@sentry/opentelemetry" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - import-in-the-middle "^1.11.0" - optionalDependencies: - opentelemetry-instrumentation-fetch-node "1.2.3" - "@sentry/node@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry/node/-/node-8.32.0.tgz#68822b3246fb2ed7418f21795ed539a18058cfa8" @@ -5261,15 +4907,6 @@ "@sentry/utils" "8.32.0" import-in-the-middle "^1.11.0" -"@sentry/opentelemetry@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-8.27.0.tgz#d5b55cf277ad1fc8111467887fd40ef428229a40" - integrity sha512-FRz7ApnyZYDFmi2CWUhKBux2N/0WswRLHwHDZ31FYCajujw7vQKucgdsxDW2RIRPWDwcMxHY1kvt6EzM1hIsxQ== - dependencies: - "@sentry/core" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - "@sentry/opentelemetry@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-8.32.0.tgz#4af02c17102635e4b34942d2e82d3620ddb7d95a" @@ -5279,17 +4916,6 @@ "@sentry/types" "8.32.0" "@sentry/utils" "8.32.0" -"@sentry/react@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-8.27.0.tgz#3ff4b8ece65af170fe32102ecb8847b53c675ffd" - integrity sha512-8pD+J9UVnSGmPnm5dHJup5OVsHTN/pL4Ozi01yyrpivLkQiMZNac3OXsc0C7zXnztfLQx0kmTyCOzbRROfbpnA== - dependencies: - "@sentry/browser" "8.27.0" - "@sentry/core" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - hoist-non-react-statics "^3.3.2" - "@sentry/react@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry/react/-/react-8.32.0.tgz#0f2cf7212df652653e32fa22778723035617f65d" @@ -5301,23 +4927,11 @@ "@sentry/utils" "8.32.0" hoist-non-react-statics "^3.3.2" -"@sentry/types@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.27.0.tgz#a5c7d2877c6c3620f812b2b31377b58d390b89d4" - integrity sha512-B6lrP46+m2x0lfqWc9F4VcUbN893mVGnPEd7KIMRk95mPzkFJ3sNxggTQF5/ZfNO7lDQYQb22uysB5sj/BqFiw== - "@sentry/types@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.32.0.tgz#dfd8aa9449a5f793b9c720888819a74a11f1790d" integrity sha512-hxckvN2MzS5SgGDgVQ0/QpZXk13Vrq4BtZLwXhPhyeTmZtUiUfWvcL5TFQqLinfKdTKPe9q2MxeAJ0D4LalhMg== -"@sentry/utils@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-8.27.0.tgz#308f6cc34acac175c500e4dd5b5007cdb621c79e" - integrity sha512-gyJM3SyLQe0A3mkQVVNdKYvk3ZoikkYgyA/D+5StFNLKdyUgEbJgXOGXrQSSYPF7BSX6Sc5b0KHCglPII0KuKw== - dependencies: - "@sentry/types" "8.27.0" - "@sentry/utils@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-8.32.0.tgz#99a4298ee8fd7208ade470931c19d71c571dfce8" @@ -5325,15 +4939,6 @@ dependencies: "@sentry/types" "8.32.0" -"@sentry/vercel-edge@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-8.27.0.tgz#ae2b91449c4676fff3c09e08b1feb5ef0069d9c9" - integrity sha512-ZBi8JHLQ1lUzw/nKMvGq1rFZTFkC3nhN4CeRLfFdTN3w3+76yejOnvSZZ6+Fl01kfdl6ThRnFdBvfNuXzjC9cQ== - dependencies: - "@sentry/core" "8.27.0" - "@sentry/types" "8.27.0" - "@sentry/utils" "8.27.0" - "@sentry/vercel-edge@8.32.0": version "8.32.0" resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-8.32.0.tgz#35d1eac12685ebd12619dfde10a494cc05eb8301" @@ -5343,15 +4948,6 @@ "@sentry/types" "8.32.0" "@sentry/utils" "8.32.0" -"@sentry/webpack-plugin@2.20.1": - version "2.20.1" - resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-2.20.1.tgz#285d325a0a1bd0a534126b97e0190da9486ff7f6" - integrity sha512-U6LzoE09Ndt0OCWROoRaZqqIHGxyMRdKpBhbqoBqyyfVwXN/zGW3I/cWZ1e8rreiKFj+2+c7+X0kOS+NGMTUrg== - dependencies: - "@sentry/bundler-plugin-core" "2.20.1" - unplugin "1.0.1" - uuid "^9.0.0" - "@sentry/webpack-plugin@2.22.3": version "2.22.3" resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-2.22.3.tgz#a9eeb4689c062eb6dc50671c09f06ec6875b9b02" @@ -6790,13 +6386,6 @@ resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== -"@types/mysql@2.15.22": - version "2.15.22" - resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.22.tgz#8705edb9872bf4aa9dbc004cd494e00334e5cdb4" - integrity sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ== - dependencies: - "@types/node" "*" - "@types/mysql@2.15.26": version "2.15.26" resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.26.tgz#f0de1484b9e2354d587e7d2bd17a873cc8300836" @@ -6857,13 +6446,6 @@ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/pg-pool@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/pg-pool/-/pg-pool-2.0.4.tgz#b5c60f678094ff3acf3442628a7f708928fcf263" - integrity sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ== - dependencies: - "@types/pg" "*" - "@types/pg-pool@2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/pg-pool/-/pg-pool-2.0.6.tgz#1376d9dc5aec4bb2ec67ce28d7e9858227403c77" @@ -7418,11 +7000,6 @@ acorn-dynamic-import@^4.0.0: resolved "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz" integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - acorn-import-attributes@^1.9.5: version "1.9.5" resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" @@ -10415,16 +9992,6 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-in-the-middle@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.7.1.tgz#3e111ff79c639d0bde459bd7ba29dd9fdf357364" - integrity sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg== - dependencies: - acorn "^8.8.2" - acorn-import-assertions "^1.9.0" - cjs-module-lexer "^1.2.2" - module-details-from-path "^1.0.3" - import-in-the-middle@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.11.0.tgz#a94c4925b8da18256cde3b3b7b38253e6ca5e708" @@ -12349,14 +11916,6 @@ openid-client@^5.4.0: object-hash "^2.2.0" oidc-token-hash "^5.0.3" -opentelemetry-instrumentation-fetch-node@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/opentelemetry-instrumentation-fetch-node/-/opentelemetry-instrumentation-fetch-node-1.2.3.tgz#beb24048bdccb1943ba2a5bbadca68020e448ea7" - integrity sha512-Qb11T7KvoCevMaSeuamcLsAD+pZnavkhDnlVL0kRozfhl42dKG5Q3anUklAFKJZjY3twLR+BnRa6DlwwkIE/+A== - dependencies: - "@opentelemetry/instrumentation" "^0.46.0" - "@opentelemetry/semantic-conventions" "^1.17.0" - optionator@^0.9.3: version "0.9.3" resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" @@ -13537,13 +13096,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rollup@3.29.4: - version "3.29.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" - integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== - optionalDependencies: - fsevents "~2.3.2" - rollup@3.29.5: version "3.29.5" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.5.tgz#8a2e477a758b520fb78daf04bca4c522c1da8a54"