diff --git a/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx b/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx index 4dd25698aa..253105fecf 100644 --- a/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx +++ b/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx @@ -1,8 +1,12 @@ import type { Prisma } from "@prisma/client"; import type { GetServerSidePropsContext } from "next"; +import type { ParsedUrlQuery } from "querystring"; import { z } from "zod"; import { getCRMContactOwnerForRRLeadSkip } from "@calcom/app-store/_utils/CRMRoundRobinSkip"; +import { ROUTING_FORM_RESPONSE_ID_QUERY_STRING } from "@calcom/app-store/routing-forms/lib/constants"; +import { enabledAppSlugs } from "@calcom/app-store/routing-forms/lib/enabledApps"; +import { zodRoutes as routesSchema } from "@calcom/app-store/routing-forms/zod"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import type { GetBookingType } from "@calcom/features/bookings/lib/get-booking"; import { getBookingForReschedule } from "@calcom/features/bookings/lib/get-booking"; @@ -79,6 +83,7 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) => } const eventData = team.eventTypes[0]; + const eventTypeId = eventData.id; let booking: GetBookingType | null = null; if (rescheduleUid) { @@ -92,7 +97,7 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) => return { props: { eventData: { - eventTypeId: eventData.id, + eventTypeId, entity: { fromRedirectOfNonOrgLink, considerUnpublished: isUnpublished && !fromRedirectOfNonOrgLink, @@ -112,21 +117,133 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) => isInstantMeeting: eventData && queryIsInstantMeeting ? true : false, themeBasis: null, orgBannerUrl: team.parent?.bannerUrl ?? "", - teamMemberEmail: await getTeamMemberEmail(eventData, email as string), + teamMemberEmail: await handleGettingTeamMemberEmail(query, eventTypeId, eventData), }, }; }; -async function getTeamMemberEmail( - eventData: { - id: number; - isInstantEvent: boolean; - schedulingType: SchedulingType | null; - metadata: Prisma.JsonValue | null; - length: number; - }, - email?: string -): Promise { +interface EventData { + id: number; + isInstantEvent: boolean; + schedulingType: SchedulingType | null; + metadata: Prisma.JsonValue | null; + length: number; +} + +async function handleGettingTeamMemberEmail( + query: ParsedUrlQuery, + eventTypeId: number, + eventData: EventData +) { + if ( + !query.email || + typeof query.email !== "string" || + eventData.schedulingType !== SchedulingType.ROUND_ROBIN + ) + return null; + + // Check if a routing form was completed and an routing form option is enabled + if ( + ROUTING_FORM_RESPONSE_ID_QUERY_STRING in query && + Object.values(query).some((value) => value === "true") + ) { + const { email, skipContactOwner } = await handleRoutingFormOption(query, eventTypeId); + + if (skipContactOwner) return null; + if (email) return email; + } else { + return await getTeamMemberEmail(eventData, query.email); + } + + return null; +} + +async function handleRoutingFormOption(query: ParsedUrlQuery, eventTypeId: number) { + const nullReturnValue = { email: null, skipContactOwner: false }; + + if (typeof query.email !== "string") return nullReturnValue; + + const routingFormQuery = await prisma.app_RoutingForms_Form.findFirst({ + where: { + responses: { + some: { + id: Number(query[ROUTING_FORM_RESPONSE_ID_QUERY_STRING]), + }, + }, + }, + select: { + routes: true, + }, + }); + + if (!routingFormQuery || !routingFormQuery?.routes) return nullReturnValue; + + const parsedRoutes = routesSchema.safeParse(routingFormQuery.routes); + + if (!parsedRoutes.success || !parsedRoutes.data) return nullReturnValue; + + // Find the route with the attributeRoutingConfig + const route = parsedRoutes.data.find((route) => { + if ("action" in route) { + return route.action.eventTypeId === eventTypeId; + } + }); + + if (!route || !("attributeRoutingConfig" in route)) return nullReturnValue; + + // Get attributeRoutingConfig for the form + const attributeRoutingConfig = route.attributeRoutingConfig; + + if (!attributeRoutingConfig) return nullReturnValue; + + // If the skipContactOwner is enabled then don't return an team member email + if (attributeRoutingConfig?.skipContactOwner) return { ...nullReturnValue, skipContactOwner: true }; + + // Determine if a routing form enabled app is in the query. Then pass it to the proper handler + // Routing form apps will have the format cal.appSlug + let enabledRoutingFormApp; + + for (const key of Object.keys(query)) { + const keySplit = key.split("."); + + const appSlug = keySplit[1]; + + if (enabledAppSlugs.includes(appSlug)) { + enabledRoutingFormApp = appSlug; + break; + } + } + + if (!enabledRoutingFormApp) return nullReturnValue; + + const appBookingFormHandler = (await import("@calcom/app-store/routing-forms/appBookingFormHandler")) + .default; + const appHandler = appBookingFormHandler[enabledRoutingFormApp]; + + if (!appHandler) return nullReturnValue; + + const { email: userEmail } = await appHandler(query.email, attributeRoutingConfig, eventTypeId); + + if (!userEmail) return nullReturnValue; + + // Determine if the user is a part of the event type + const userQuery = await await prisma.user.findFirst({ + where: { + email: userEmail, + hosts: { + some: { + eventTypeId: eventTypeId, + }, + }, + }, + }); + + if (!userQuery) return nullReturnValue; + + return { ...nullReturnValue, email: userEmail }; +} + +async function getTeamMemberEmail(eventData: EventData, email: string): Promise { // Pre-requisites if (!eventData || !email || eventData.schedulingType !== SchedulingType.ROUND_ROBIN) return null; const crmContactOwnerEmail = await getCRMContactOwnerForRRLeadSkip(email, eventData.metadata); diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json index 341c50482c..8d9475de71 100644 --- a/apps/web/public/static/locales/en/common.json +++ b/apps/web/public/static/locales/en/common.json @@ -2764,5 +2764,10 @@ "booking_created_date": "Booking created date", "booking_reassigned_to_host": "Booking reassigned to {{host}}", "access_denied": "Access Denied", + "salesforce_route_to_owner": "Contact owner will be the Round Robin host if available", + "salesforce_do_not_route_to_owner": "Contact owner will not be forced (can still be host if it matches the attributes and Round Robin criteria)", + "salesforce_route_to_custom_lookup_field": "Route to a user that matches a lookup field on an account", + "salesforce_option": "Salesforce Option", + "lookup_field_name": "Lookup Field Name", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/packages/app-store/googlecalendar/api/callback.ts b/packages/app-store/googlecalendar/api/callback.ts index 3e78b11a15..8e7754599a 100644 --- a/packages/app-store/googlecalendar/api/callback.ts +++ b/packages/app-store/googlecalendar/api/callback.ts @@ -9,7 +9,6 @@ import { HttpError } from "@calcom/lib/http-error"; import { defaultHandler, defaultResponder } from "@calcom/lib/server"; import { CredentialRepository } from "@calcom/lib/server/repository/credential"; import { GoogleRepository } from "@calcom/lib/server/repository/google"; -import { SelectedCalendarRepository } from "@calcom/lib/server/repository/selectedCalendar"; import { Prisma } from "@calcom/prisma/client"; import getInstalledAppPath from "../../_utils/getInstalledAppPath"; diff --git a/packages/app-store/routing-forms/appBookingFormHandler.ts b/packages/app-store/routing-forms/appBookingFormHandler.ts new file mode 100644 index 0000000000..3901d82ef5 --- /dev/null +++ b/packages/app-store/routing-forms/appBookingFormHandler.ts @@ -0,0 +1,14 @@ +import routingFormBookingFormHandler from "../salesforce/lib/routingFormBookingFormHandler"; +import type { AttributeRoutingConfig } from "./types/types"; + +type AppBookingFormHandler = ( + attendeeEmail: string, + attributeRoutingConfig: AttributeRoutingConfig, + eventTypeId: number +) => Promise<{ email: string | null }>; + +const appBookingFormHandler: Record = { + salesforce: routingFormBookingFormHandler, +}; + +export default appBookingFormHandler; diff --git a/packages/app-store/routing-forms/appComponents.ts b/packages/app-store/routing-forms/appComponents.ts new file mode 100644 index 0000000000..9c94b8df21 --- /dev/null +++ b/packages/app-store/routing-forms/appComponents.ts @@ -0,0 +1,5 @@ +import dynamic from "next/dynamic"; + +export const routingFormAppComponents = { + salesforce: dynamic(() => import("../salesforce/components/RoutingFormOptions")), +}; diff --git a/packages/app-store/routing-forms/appDataSchemas.ts b/packages/app-store/routing-forms/appDataSchemas.ts new file mode 100644 index 0000000000..bb9fa7197f --- /dev/null +++ b/packages/app-store/routing-forms/appDataSchemas.ts @@ -0,0 +1,5 @@ +import { routingFormOptions as salesforce_routing_form_schema } from "../salesforce/zod"; + +export const routingFormAppDataSchemas = { + salesforce: salesforce_routing_form_schema, +}; diff --git a/packages/app-store/routing-forms/components/DynamicAppComponent.tsx b/packages/app-store/routing-forms/components/DynamicAppComponent.tsx new file mode 100644 index 0000000000..7551c9cd9d --- /dev/null +++ b/packages/app-store/routing-forms/components/DynamicAppComponent.tsx @@ -0,0 +1,29 @@ +import type { Route, AttributeRoutingConfig } from "../types/types"; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export default function DynamicAppComponent>>(props: { + componentMap: T; + slug: string; + appData: any; + route: Route; + setAttributeRoutingConfig: (id: string, attributeRoutingConfig: Partial) => void; + wrapperClassName?: string; +}) { + const { componentMap, slug, wrapperClassName, appData, route, setAttributeRoutingConfig, ...rest } = props; + + // There can be apps with no matching component + if (!componentMap[slug]) return null; + + const Component = componentMap[slug]; + + return ( +
+ +
+ ); +} diff --git a/packages/app-store/routing-forms/lib/constants.ts b/packages/app-store/routing-forms/lib/constants.ts new file mode 100644 index 0000000000..ce24478d6f --- /dev/null +++ b/packages/app-store/routing-forms/lib/constants.ts @@ -0,0 +1 @@ +export const ROUTING_FORM_RESPONSE_ID_QUERY_STRING = "cal.routingFormResponseId"; diff --git a/packages/app-store/routing-forms/lib/enabledApps.ts b/packages/app-store/routing-forms/lib/enabledApps.ts new file mode 100644 index 0000000000..7c62383380 --- /dev/null +++ b/packages/app-store/routing-forms/lib/enabledApps.ts @@ -0,0 +1,2 @@ +/** This is a list of apps which have functionality in routing forms */ +export const enabledAppSlugs = ["salesforce"]; diff --git a/packages/app-store/routing-forms/lib/getEventTypeAppMetadata.ts b/packages/app-store/routing-forms/lib/getEventTypeAppMetadata.ts new file mode 100644 index 0000000000..ed175f5e5a --- /dev/null +++ b/packages/app-store/routing-forms/lib/getEventTypeAppMetadata.ts @@ -0,0 +1,26 @@ +import { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils"; + +import { enabledAppSlugs } from "./enabledApps"; +import type { Prisma } from ".prisma/client"; + +const getEventTypeAppMetadata = (metadata: Prisma.JsonValue) => { + const eventTypeMetadataParse = EventTypeMetaDataSchema.safeParse(metadata); + + if (!eventTypeMetadataParse.success || !eventTypeMetadataParse.data) return; + + const appMetadata = eventTypeMetadataParse.data.apps; + + const eventTypeAppMetadata: Record = {}; + + if (appMetadata) { + for (const appSlug of Object.keys(appMetadata)) { + if (enabledAppSlugs.includes(appSlug)) { + eventTypeAppMetadata[appSlug] = appMetadata[appSlug as keyof typeof appMetadata]; + } + } + } + + return eventTypeAppMetadata; +}; + +export default getEventTypeAppMetadata; diff --git a/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx b/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx index ea492e152f..0ff64ed93f 100644 --- a/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx +++ b/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx @@ -23,9 +23,10 @@ import { TextField, Badge, Divider, - Switch, } from "@calcom/ui"; +import { routingFormAppComponents } from "../../appComponents"; +import DynamicAppComponent from "../../components/DynamicAppComponent"; import type { RoutingFormWithResponseCount } from "../../components/SingleForm"; import SingleForm, { getServerSidePropsForSingleFormView as getServerSideProps, @@ -33,6 +34,7 @@ import SingleForm, { import "../../components/react-awesome-query-builder/styles.css"; import { RoutingPages } from "../../lib/RoutingPages"; import { createFallbackRoute } from "../../lib/createFallbackRoute"; +import getEventTypeAppMetadata from "../../lib/getEventTypeAppMetadata"; import { getQueryBuilderConfigForFormFields, getQueryBuilderConfigForAttributes, @@ -41,62 +43,24 @@ import { } from "../../lib/getQueryBuilderConfig"; import isRouter from "../../lib/isRouter"; import type { SerializableForm } from "../../types/types"; -import type { GlobalRoute, LocalRoute, SerializableRoute, Attribute } from "../../types/types"; +import type { + GlobalRoute, + LocalRoute, + SerializableRoute, + Attribute, + EditFormRoute, + AttributeRoutingConfig, +} from "../../types/types"; import { RouteActionType } from "../../zod"; -type FormFieldsQueryBuilderState = { - tree: ImmutableTree; - config: FormFieldsQueryBuilderConfigWithRaqbFields; -}; - -type AttributesQueryBuilderState = { - tree: ImmutableTree; - config: AttributesQueryBuilderConfigWithRaqbFields; -}; - -type LocalRouteWithRaqbStates = LocalRoute & { - formFieldsQueryBuilderState: FormFieldsQueryBuilderState; - attributesQueryBuilderState: AttributesQueryBuilderState | null; - fallbackAttributesQueryBuilderState: AttributesQueryBuilderState | null; -}; - type EventTypesByGroup = RouterOutputs["viewer"]["eventTypes"]["getByViewer"]; type Form = inferSSRProps["form"]; -type Route = LocalRouteWithRaqbStates | GlobalRoute; -type SetRoute = (id: string, route: Partial) => void; - -const RoundRobinContactOwnerOverrideSwitch = ({ - route, - setAttributeRoutingConfig, -}: { - route: LocalRouteWithRaqbStates; - setAttributeRoutingConfig: (id: string, attributeRoutingConfig: Partial) => void; -}) => { - return ( -
- { - setAttributeRoutingConfig(route.id, { - skipContactOwner, - }); - }} - /> -
- ); -}; +type SetRoute = (id: string, route: Partial) => void; type AttributesQueryValue = NonNullable; type FormFieldsQueryValue = LocalRoute["queryValue"]; -type AttributeRoutingConfig = NonNullable; /** * We need eventTypeId in every redirect url action now for Rerouting to work smoothly. @@ -107,7 +71,7 @@ function useEnsureEventTypeIdInRedirectUrlAction({ eventOptions, setRoute, }: { - route: Route; + route: EditFormRoute; eventOptions: { label: string; value: string; eventTypeId: number }[]; setRoute: SetRoute; }) { @@ -134,7 +98,7 @@ function useEnsureEventTypeIdInRedirectUrlAction({ }, [eventOptions, setRoute, route.id, (route as unknown as any).action?.value]); } -const hasRules = (route: Route) => { +const hasRules = (route: EditFormRoute) => { if (isRouter(route)) return false; route.queryValue.children1 && Object.keys(route.queryValue.children1).length; }; @@ -169,13 +133,19 @@ const buildEventsData = ({ }: { eventTypesByGroup: EventTypesByGroup | undefined; form: Form; - route: Route; + route: EditFormRoute; }) => { - const eventOptions: { label: string; value: string; eventTypeId: number }[] = []; + const eventOptions: { + label: string; + value: string; + eventTypeId: number; + eventTypeAppMetadata?: Record; + }[] = []; const eventTypesMap = new Map< number, { schedulingType: SchedulingType | null; + eventTypeAppMetadata?: Record; } >(); eventTypesByGroup?.eventTypeGroups.forEach((group) => { @@ -199,13 +169,19 @@ const buildEventsData = ({ if (!isRouteAlreadyInUse && !eventTypeValidInContext) { return; } + + // Pass app data that works with routing forms + const eventTypeAppMetadata = getEventTypeAppMetadata(eventType.metadata); + eventTypesMap.set(eventType.id, { + eventTypeAppMetadata, schedulingType: eventType.schedulingType, }); eventOptions.push({ label: uniqueSlug, value: uniqueSlug, eventTypeId: eventType.id, + eventTypeAppMetadata, }); }); }); @@ -230,13 +206,13 @@ const Route = ({ eventTypesByGroup, }: { form: Form; - route: Route; - routes: Route[]; + route: EditFormRoute; + routes: EditFormRoute[]; setRoute: SetRoute; setAttributeRoutingConfig: (id: string, attributeRoutingConfig: Partial) => void; formFieldsQueryBuilderConfig: FormFieldsQueryBuilderConfigWithRaqbFields; attributesQueryBuilderConfig: AttributesQueryBuilderConfigWithRaqbFields | null; - setRoutes: React.Dispatch>; + setRoutes: React.Dispatch>; fieldIdentifiers: string[]; moveUp?: { fn: () => void; check: () => boolean } | null; moveDown?: { fn: () => void; check: () => boolean } | null; @@ -271,7 +247,7 @@ const Route = ({ }); const onChangeFormFieldsQuery = ( - route: Route, + route: EditFormRoute, immutableTree: ImmutableTree, config: FormFieldsQueryBuilderConfigWithRaqbFields ) => { @@ -283,7 +259,7 @@ const Route = ({ }; const onChangeTeamMembersQuery = ( - route: Route, + route: EditFormRoute, immutableTree: ImmutableTree, config: AttributesQueryBuilderConfigWithRaqbFields ) => { @@ -295,7 +271,7 @@ const Route = ({ }; const onChangeFallbackTeamMembersQuery = ( - route: Route, + route: EditFormRoute, immutableTree: ImmutableTree, config: AttributesQueryBuilderConfigWithRaqbFields ) => { @@ -401,11 +377,17 @@ const Route = ({ and use only the Team Members that match the following criteria (matches all by default) - {isRoundRobinEventSelectedForRedirect ? ( - + {eventTypeRedirectUrlSelectedOption?.eventTypeAppMetadata && + "salesforce" in eventTypeRedirectUrlSelectedOption.eventTypeAppMetadata ? ( +
+ +
) : null}
@@ -544,11 +526,13 @@ const Route = ({ if (option.value !== "custom") { setRoute(route.id, { action: { ...route.action, value: option.value, eventTypeId: option.eventTypeId }, + attributeRoutingConfig: {}, }); setCustomEventTypeSlug(""); } else { setRoute(route.id, { action: { ...route.action, value: "custom", eventTypeId: 0 }, + attributeRoutingConfig: {}, }); setCustomEventTypeSlug(""); } @@ -628,7 +612,7 @@ const deserializeRoute = ({ route: Exclude; formFieldsQueryBuilderConfig: FormFieldsQueryBuilderConfigWithRaqbFields; attributesQueryBuilderConfig: AttributesQueryBuilderConfigWithRaqbFields | null; -}): Route => { +}): EditFormRoute => { const attributesQueryBuilderState = route.attributesQueryValue && attributesQueryBuilderConfig ? buildState({ @@ -710,7 +694,7 @@ function useRoutes({ return newRoutes; }); - function getRoutesToSave(routes: Route[]) { + function getRoutesToSave(routes: EditFormRoute[]) { return routes.map((route) => { if (isRouter(route)) { return route; @@ -872,7 +856,7 @@ const Routes = ({ }); } - const setRoute = (id: string, route: Partial) => { + const setRoute = (id: string, route: Partial) => { const index = routes.findIndex((route) => route.id === id); const existingRoute = routes[index]; const newRoutes = [...routes]; @@ -994,7 +978,7 @@ const Routes = ({ id: routerId, name: option.name, description: option.description, - } as Route, + } as EditFormRoute, ]); } }} diff --git a/packages/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward.ts b/packages/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward.ts index 3ca6067cd4..a7ee79960b 100644 --- a/packages/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward.ts +++ b/packages/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward.ts @@ -1,5 +1,6 @@ import type { inferSSRProps } from "@calcom/types/inferSSRProps"; +import { ROUTING_FORM_RESPONSE_ID_QUERY_STRING } from "../../lib/constants"; import getFieldIdentifier from "../../lib/getFieldIdentifier"; import type { FormResponse, LocalRoute } from "../../types/types"; import type { getServerSideProps } from "./getServerSideProps"; @@ -80,6 +81,25 @@ export function getUrlSearchParamsToForward({ } } + const attributeRoutingConfigParams: Record = {}; + + if (attributeRoutingConfig) { + for (const key of Object.keys(attributeRoutingConfig)) { + if (key === "skipContactOwner" && attributeRoutingConfig[key]) { + attributeRoutingConfigParams["cal.skipContactOwner"] = "true"; + } + + // TODO: How do we move this logic to their respective app packages + if (key === "salesforce") { + const salesforceData = attributeRoutingConfig[key]; + + if (salesforceData?.rrSkipToAccountLookupField && salesforceData.rrSKipToAccountLookupFieldName) { + attributeRoutingConfigParams["cal.salesforce.rrSkipToAccountLookupField"] = "true"; + } + } + } + } + const allQueryParams: Params = { ...paramsFromCurrentUrl, // In case of conflict b/w paramsFromResponse and paramsFromCurrentUrl, paramsFromResponse should win as the booker probably improved upon the prefilled value. @@ -87,8 +107,8 @@ export function getUrlSearchParamsToForward({ ...(teamMembersMatchingAttributeLogic ? { ["cal.routedTeamMemberIds"]: teamMembersMatchingAttributeLogic.join(",") } : null), - ["cal.routingFormResponseId"]: String(formResponseId), - ...(attributeRoutingConfig?.skipContactOwner ? { ["cal.skipContactOwner"]: "true" } : {}), + [ROUTING_FORM_RESPONSE_ID_QUERY_STRING]: String(formResponseId), + ...attributeRoutingConfigParams, ...(reroutingFormResponses ? { ["cal.reroutingFormResponses"]: JSON.stringify(reroutingFormResponses) } : null), diff --git a/packages/app-store/routing-forms/playwright/tests/basic.e2e.ts b/packages/app-store/routing-forms/playwright/tests/basic.e2e.ts index 3263b29a37..d95fc18a14 100644 --- a/packages/app-store/routing-forms/playwright/tests/basic.e2e.ts +++ b/packages/app-store/routing-forms/playwright/tests/basic.e2e.ts @@ -28,7 +28,7 @@ const Identifiers = { }; async function enableContactOwnerOverride(page: Page) { - await page.click("text=Contact owner will be the Round Robin host"); + await page.click("text=Contact owner will be the Round Robin host if available"); } async function selectFirstAttributeOption({ fromLocator }: { fromLocator: Locator }) { @@ -575,7 +575,6 @@ test.describe("Routing Forms", () => { await selectNewRoute(page); // This would select Round Robin event that we created above await selectFirstEventRedirectOption(page); - await enableContactOwnerOverride(page); await addAttributeRoutingRule(page); await saveCurrentForm(page); diff --git a/packages/app-store/routing-forms/types/types.d.ts b/packages/app-store/routing-forms/types/types.d.ts index 2ffc92450a..13da8303bb 100644 --- a/packages/app-store/routing-forms/types/types.d.ts +++ b/packages/app-store/routing-forms/types/types.d.ts @@ -1,10 +1,15 @@ import type { App_RoutingForms_Form } from "@prisma/client"; +import type { ImmutableTree, Config } from "react-awesome-query-builder"; import type z from "zod"; import type { AttributeType } from "@calcom/prisma/client"; import type { RoutingFormSettings } from "@calcom/prisma/zod-utils"; import type QueryBuilderInitialConfig from "../components/react-awesome-query-builder/config/config"; +import type { + FormFieldsQueryBuilderConfigWithRaqbFields, + AttributesQueryBuilderConfigWithRaqbFields, +} from "../lib/getQueryBuilderConfig"; import type { zodRouterRouteView, zodNonRouterRoute, zodFieldsView, zodRoutesView } from "../zod"; export type RoutingForm = SerializableForm; @@ -74,3 +79,23 @@ export type Attribute = { export type AttributesQueryValue = NonNullable; export type FormFieldsQueryValue = LocalRoute["queryValue"]; export type SerializableField = NonNullable["fields"]>[number]; + +export type AttributeRoutingConfig = NonNullable; + +export type FormFieldsQueryBuilderState = { + tree: ImmutableTree; + config: FormFieldsQueryBuilderConfigWithRaqbFields; +}; + +export type AttributesQueryBuilderState = { + tree: ImmutableTree; + config: AttributesQueryBuilderConfigWithRaqbFields; +}; + +export type LocalRouteWithRaqbStates = LocalRoute & { + formFieldsQueryBuilderState: FormFieldsQueryBuilderState; + attributesQueryBuilderState: AttributesQueryBuilderState | null; + fallbackAttributesQueryBuilderState: AttributesQueryBuilderState | null; +}; + +export type EditFormRoute = LocalRouteWithRaqbStates | GlobalRoute; diff --git a/packages/app-store/routing-forms/zod.ts b/packages/app-store/routing-forms/zod.ts index 4f62a9326d..a585ce4b63 100644 --- a/packages/app-store/routing-forms/zod.ts +++ b/packages/app-store/routing-forms/zod.ts @@ -1,5 +1,7 @@ import { z } from "zod"; +import { routingFormAppDataSchemas } from "./appDataSchemas"; + export const zodNonRouterField = z.object({ id: z.string(), label: z.string(), @@ -128,14 +130,17 @@ export const queryValueSaveValidationSchema = queryValueSchema ) .nullish(); +export const attributeRoutingConfigSchema = z + .object({ + skipContactOwner: z.boolean().optional(), + salesforce: routingFormAppDataSchemas["salesforce"], + }) + .nullish(); + export const zodNonRouterRoute = z.object({ id: z.string(), name: z.string().optional(), - attributeRoutingConfig: z - .object({ - skipContactOwner: z.boolean().optional(), - }) - .nullish(), + attributeRoutingConfig: attributeRoutingConfigSchema, // TODO: It should be renamed to formFieldsQueryValue but it would take some effort /** diff --git a/packages/app-store/salesforce/components/RoutingFormOptions.tsx b/packages/app-store/salesforce/components/RoutingFormOptions.tsx new file mode 100644 index 0000000000..36760f07cb --- /dev/null +++ b/packages/app-store/salesforce/components/RoutingFormOptions.tsx @@ -0,0 +1,152 @@ +import { useState, useEffect } from "react"; + +import { useLocale } from "@calcom/lib/hooks/useLocale"; +import { Select, Input, Label } from "@calcom/ui"; + +import type { LocalRouteWithRaqbStates, AttributeRoutingConfig } from "../../routing-forms/types/types"; +import { appDataSchema } from "../zod"; + +enum SalesforceRoutingConfig { + ROUTE_OWNER = "route_owner", + SKIP_OWNER = "skip_owner", + ACCOUNT_FIELD_LOOKUP = "account_field_lookup", +} + +const RoutingFormOptions = ({ + appData, + route, + setAttributeRoutingConfig, +}: { + appData: any; + route: LocalRouteWithRaqbStates; + setAttributeRoutingConfig: (id: string, attributeRoutingConfig: Partial) => void; +}) => { + const { t } = useLocale(); + const salesforceRoutingOptions = [ + { + label: t("salesforce_route_to_owner"), + value: SalesforceRoutingConfig.ROUTE_OWNER, + }, + { + label: t("salesforce_do_not_route_to_owner"), + value: SalesforceRoutingConfig.SKIP_OWNER, + }, + { + label: t("salesforce_route_to_custom_lookup_field"), + value: SalesforceRoutingConfig.ACCOUNT_FIELD_LOOKUP, + }, + ]; + + const getInitialOption = () => { + if (route.attributeRoutingConfig?.salesforce?.rrSkipToAccountLookupField) { + return salesforceRoutingOptions.find( + (option) => option.value === SalesforceRoutingConfig.ACCOUNT_FIELD_LOOKUP + ); + } + + if (route.attributeRoutingConfig?.skipContactOwner) { + return salesforceRoutingOptions.find((option) => option.value === SalesforceRoutingConfig.SKIP_OWNER); + } else { + return salesforceRoutingOptions.find((option) => option.value === SalesforceRoutingConfig.ROUTE_OWNER); + } + }; + + const [selectedRoutingOption, setSelectedRoutingOption] = useState(getInitialOption()); + + useEffect(() => { + setSelectedRoutingOption(getInitialOption()); + }, [route]); + + const [rrSkipToAccountLookupFieldName, setRRSkipToAccountLookupFieldName] = useState( + route.attributeRoutingConfig?.salesforce?.rrSKipToAccountLookupFieldName ?? "" + ); + + const parsedAppData = appDataSchema.safeParse(appData); + + if (!parsedAppData.success) return null; + + appData = parsedAppData.data; + + const isAppDisabled = !appData?.enabled; + + const appDisabledOption = { + label: "Salesforce is not enabled on event type", + value: "disabled", + }; + + const onRRSkipToAccountLookupFieldNameChange = (value: string) => { + setAttributeRoutingConfig(route.id, { + ...route.attributeRoutingConfig, + salesforce: { ...route.attributeRoutingConfig?.salesforce, rrSKipToAccountLookupFieldName: value }, + }); + }; + + const onOptionChange = (value: SalesforceRoutingConfig) => { + switch (value) { + case SalesforceRoutingConfig.ROUTE_OWNER: + setAttributeRoutingConfig(route.id, { + skipContactOwner: false, + salesforce: { + rrSkipToAccountLookupField: false, + }, + }); + break; + case SalesforceRoutingConfig.SKIP_OWNER: + setAttributeRoutingConfig(route.id, { + skipContactOwner: true, + salesforce: { + rrSkipToAccountLookupField: false, + }, + }); + break; + case SalesforceRoutingConfig.ACCOUNT_FIELD_LOOKUP: + setAttributeRoutingConfig(route.id, { + skipContactOwner: false, + salesforce: { + rrSkipToAccountLookupField: true, + rrSKipToAccountLookupFieldName: rrSkipToAccountLookupFieldName, + }, + }); + break; + } + }; + + return ( +
+
+ + {t("salesforce_option")} + + {isAppDisabled ? ( + { + if (e) { + onOptionChange(e.value); + setSelectedRoutingOption(e); + } + }} + className="ml-2 w-full" + /> + )} +
+ {selectedRoutingOption?.value === SalesforceRoutingConfig.ACCOUNT_FIELD_LOOKUP ? ( +
+ + { + setRRSkipToAccountLookupFieldName(e.target.value); + onRRSkipToAccountLookupFieldNameChange(e.target.value); + }} + /> +
+ ) : null} +
+ ); +}; + +export default RoutingFormOptions; diff --git a/packages/app-store/salesforce/lib/CrmService.ts b/packages/app-store/salesforce/lib/CrmService.ts index 2303d3efcc..f3dbd5afb8 100644 --- a/packages/app-store/salesforce/lib/CrmService.ts +++ b/packages/app-store/salesforce/lib/CrmService.ts @@ -85,7 +85,6 @@ export default class SalesforceCRMService implements CRM { throw new HttpError({ statusCode: 400, message: "Salesforce consumer secret missing." }); const credentialKey = credential.key as unknown as ExtendedTokenResponse; - try { /* XXX: This code results in 'Bad Request', which indicates something is wrong with our salesforce integration. Needs further investigation ASAP */ @@ -137,10 +136,10 @@ export default class SalesforceCRMService implements CRM { } }; - private getSalesforceUserFromOwnerId = async (ownerId: string) => { + private getSalesforceUserFromUserId = async (userId: string) => { const conn = await this.conn; - return await conn.query(`SELECT Id, Email, Name FROM User WHERE Id = '${ownerId}' AND IsActive = true`); + return await conn.query(`SELECT Id, Email, Name FROM User WHERE Id = '${userId}' AND IsActive = true`); }; private getSalesforceEventBody = (event: CalendarEvent): string => { @@ -380,7 +379,7 @@ export default class SalesforceCRMService implements CRM { const ownersQuery = (await Promise.all( Array.from(ownerIds).map(async (ownerId) => { - return this.getSalesforceUserFromOwnerId(ownerId); + return this.getSalesforceUserFromUserId(ownerId); }) )) as { records: ContactRecord[] }[]; const contactsWithOwners = records.map((record) => { @@ -691,7 +690,7 @@ export default class SalesforceCRMService implements CRM { const ownerId = recordQuery.records[0].OwnerId; - const ownerQuery = await this.getSalesforceUserFromOwnerId(ownerId); + const ownerQuery = await this.getSalesforceUserFromUserId(ownerId); if (!ownerQuery || !ownerQuery.records.length) return; @@ -864,4 +863,45 @@ export default class SalesforceCRMService implements CRM { return query.records[0] as Record; } + + async findUserEmailFromLookupField( + attendeeEmail: string, + fieldName: string, + salesforceObject: SalesforceRecordEnum + ) { + const conn = await this.conn; + + // Ensure the field exists on the record + const existingFields = await this.ensureFieldsExistOnObject([fieldName], salesforceObject); + + if (!existingFields.length) return; + + const lookupField = existingFields[0]; + + if (salesforceObject === SalesforceRecordEnum.ACCOUNT) { + const accountId = await this.getAccountIdBasedOnEmailDomainOfContacts(attendeeEmail); + + if (!accountId) return; + + const accountQuery = (await conn.query( + `SELECT ${lookupField.name} FROM ${SalesforceRecordEnum.ACCOUNT} WHERE Id = '${accountId}'` + )) as { + records: { [key: string]: any }; + }; + + if (!accountQuery.records.length) return; + + const lookupFieldUserId = accountQuery.records[0][lookupField.name]; + + if (!lookupFieldUserId) return; + + const userQuery = await this.getSalesforceUserFromUserId(lookupFieldUserId); + + if (!userQuery.records.length) return; + + const user = userQuery.records[0] as { Email: string }; + + return user.Email; + } + } } diff --git a/packages/app-store/salesforce/lib/routingFormBookingFormHandler.ts b/packages/app-store/salesforce/lib/routingFormBookingFormHandler.ts new file mode 100644 index 0000000000..cacfe21a3c --- /dev/null +++ b/packages/app-store/salesforce/lib/routingFormBookingFormHandler.ts @@ -0,0 +1,40 @@ +import { CredentialRepository } from "../../../lib/server/repository/credential"; +import { EventTypeService } from "../../../lib/server/service/eventType"; +import type { AttributeRoutingConfig } from "../../routing-forms/types/types"; +import SalesforceCRMService from "./CrmService"; +import { SalesforceRecordEnum } from "./enums"; + +const routingFormBookingFormHandler = async ( + attendeeEmail: string, + attributeRoutingConfig: AttributeRoutingConfig, + eventTypeId: number +) => { + const salesforceSettings = attributeRoutingConfig?.salesforce; + + if ( + !salesforceSettings || + !salesforceSettings.rrSkipToAccountLookupField || + !salesforceSettings.rrSKipToAccountLookupFieldName + ) + return { email: null }; + + const appData = await EventTypeService.getEventTypeAppDataFromId(eventTypeId, "salesforce"); + + const credentialId = appData.credentialId; + + const credential = await CredentialRepository.findFirstByIdWithKeyAndUser({ id: credentialId }); + + if (!credential) return { email: null }; + + const crm = new SalesforceCRMService(credential, {}); + + const userLookupEmail = await crm.findUserEmailFromLookupField( + attendeeEmail, + salesforceSettings.rrSKipToAccountLookupFieldName, + SalesforceRecordEnum.ACCOUNT + ); + + return { email: userLookupEmail ?? null }; +}; + +export default routingFormBookingFormHandler; diff --git a/packages/app-store/salesforce/zod.ts b/packages/app-store/salesforce/zod.ts index bfbeb8368a..63ad4cf343 100644 --- a/packages/app-store/salesforce/zod.ts +++ b/packages/app-store/salesforce/zod.ts @@ -9,6 +9,13 @@ const writeToRecordEntry = z.object({ whenToWrite: z.nativeEnum(WhenToWriteToRecord), }); +export const routingFormOptions = z + .object({ + rrSkipToAccountLookupField: z.boolean().optional(), + rrSKipToAccountLookupFieldName: z.string().optional(), + }) + .optional(); + export const appDataSchema = eventTypeAppCardZod.extend({ roundRobinLeadSkip: z.boolean().optional(), roundRobinSkipCheckRecordOn: z diff --git a/packages/features/settings/layouts/SettingsLayout.tsx b/packages/features/settings/layouts/SettingsLayout.tsx index ff45ec578d..35098e1241 100644 --- a/packages/features/settings/layouts/SettingsLayout.tsx +++ b/packages/features/settings/layouts/SettingsLayout.tsx @@ -230,7 +230,7 @@ const BackButtonInSidebar = ({ name }: { name: string }) => { data-testid={`vertical-tab-${name}`}> {name} @@ -313,7 +313,7 @@ const TeamListCollapsible = () => { {!team.parentId && ( {team.name )} @@ -460,7 +460,7 @@ const SettingsSidebarContainer = ({ {tab && tab.icon && ( )} {!tab.icon && tab?.avatar && ( @@ -505,7 +505,7 @@ const SettingsSidebarContainer = ({ {tab && tab.icon && ( )} )} )} diff --git a/packages/lib/server/repository/credential.ts b/packages/lib/server/repository/credential.ts index 1475ce8d16..e858a3fc67 100644 --- a/packages/lib/server/repository/credential.ts +++ b/packages/lib/server/repository/credential.ts @@ -1,5 +1,3 @@ -import type { Prisma } from "@prisma/client"; - import { prisma } from "@calcom/prisma"; import { safeCredentialSelect } from "@calcom/prisma/selects/credential"; diff --git a/packages/lib/server/service/eventType.ts b/packages/lib/server/service/eventType.ts new file mode 100644 index 0000000000..28f472e21e --- /dev/null +++ b/packages/lib/server/service/eventType.ts @@ -0,0 +1,34 @@ +import type { Prisma } from "@prisma/client"; + +import type { appDataSchemas } from "@calcom/app-store/apps.schemas.generated"; +import { prisma } from "@calcom/prisma"; +import { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils"; + +export class EventTypeService { + static async getEventTypeAppDataFromId(eventTypeId: number, appSlug: keyof typeof appDataSchemas) { + const eventType = await prisma.eventType.findFirst({ + where: { + id: eventTypeId, + }, + select: { + metadata: true, + }, + }); + + if (!eventType) return null; + + return this.getEventTypeAppDataFromMetadata(eventType.metadata, appSlug); + } + + static getEventTypeAppDataFromMetadata(metadata: Prisma.JsonValue, appSlug: keyof typeof appDataSchemas) { + const parseEventTypeAppMetadata = EventTypeMetaDataSchema.safeParse(metadata); + + if (!parseEventTypeAppMetadata.success || !parseEventTypeAppMetadata.data?.apps) return null; + + const eventTypeAppMetadata = parseEventTypeAppMetadata.data.apps; + + const appMetadata = eventTypeAppMetadata[appSlug]; + + return appMetadata; + } +} diff --git a/yarn.lock b/yarn.lock index 48d9ba4530..9455ae32f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4145,7 +4145,9 @@ __metadata: "@nestjs/swagger": ^7.3.0 "@nestjs/testing": ^10.0.0 "@nestjs/throttler": 6.2.1 + "@sentry/nestjs": ^8.37.1 "@sentry/node": ^8.8.0 + "@sentry/profiling-node": ^8.37.1 "@types/cookie-parser": ^1.4.6 "@types/express": ^4.17.21 "@types/fs-extra": ^11.0.4 @@ -4318,6 +4320,28 @@ __metadata: languageName: unknown linkType: soft +"@calcom/atoms@npm:1.0.60": + version: 1.0.60 + resolution: "@calcom/atoms@npm:1.0.60" + dependencies: + "@radix-ui/react-dialog": ^1.0.4 + "@radix-ui/react-slot": ^1.0.2 + "@radix-ui/react-switch": ^1.1.0 + "@radix-ui/react-toast": ^1.1.5 + "@tanstack/react-query": ^5.17.15 + class-variance-authority: ^0.7.0 + clsx: ^2.0.0 + react-use: ^17.4.2 + tailwind-merge: ^1.13.2 + tailwindcss: ^3.3.3 + tailwindcss-animate: ^1.0.6 + peerDependencies: + react: ">=18.0.0" + typescript: ">=5.4.5" + checksum: b216d40948ca1a96d8374c0f9878c1c9b5776b2b6cc569ba7fb344fec360fe4a43f23f97a4d82e4c5ad75c83ea6c8b63de079088598594564bf44d00d7cb9b42 + languageName: node + linkType: hard + "@calcom/autocheckin@workspace:packages/app-store/autocheckin": version: 0.0.0-use.local resolution: "@calcom/autocheckin@workspace:packages/app-store/autocheckin" @@ -4475,7 +4499,7 @@ __metadata: chart.js: ^3.7.1 client-only: ^0.0.1 eslint: ^8.34.0 - next: ^13.5.4 + next: ^13.5.6 next-auth: ^4.22.1 next-i18next: ^13.2.2 postcss: ^8.4.18 @@ -5819,6 +5843,7 @@ __metadata: dependencies: "@algora/sdk": ^0.1.2 "@calcom/app-store": "*" + "@calcom/atoms": 1.0.60 "@calcom/config": "*" "@calcom/dayjs": "*" "@calcom/embed-react": "workspace:^" @@ -5828,6 +5853,8 @@ __metadata: "@calcom/tsconfig": "*" "@calcom/ui": "*" "@datocms/cma-client-node": ^2.0.0 + "@dub/analytics": ^0.0.15 + "@eslint/js": ^9.9.0 "@floating-ui/react-dom": ^1.0.0 "@flodlc/nebula": ^1.0.56 "@graphql-codegen/cli": ^5.0.0 @@ -5845,6 +5872,7 @@ __metadata: "@radix-ui/react-dropdown-menu": ^2.0.5 "@radix-ui/react-navigation-menu": ^1.0.0 "@radix-ui/react-portal": ^1.0.0 + "@radix-ui/react-select": ^2.1.1 "@radix-ui/react-slider": ^1.0.0 "@radix-ui/react-tabs": ^1.0.0 "@radix-ui/react-tooltip": ^1.0.0 @@ -5864,6 +5892,7 @@ __metadata: "@vercel/og": ^0.5.0 autoprefixer: ^10.4.12 bcryptjs: ^2.4.3 + class-variance-authority: ^0.7.0 clsx: ^1.2.1 cobe: ^0.4.1 concurrently: ^7.6.0 @@ -5872,10 +5901,14 @@ __metadata: datocms-structured-text-utils: ^2.0.4 debounce: ^1.2.1 dotenv: ^16.3.1 + embla-carousel-react: ^8.1.8 enquirer: ^2.4.1 env-cmd: ^10.1.0 - eslint: ^8.34.0 + eslint: ^9.9.0 + eslint-plugin-react: ^7.35.0 fathom-client: ^3.5.0 + framer-motion: ^11.0.25 + globals: ^15.9.0 globby: ^13.1.3 graphql: ^16.8.0 graphql-codegen: ^0.4.0 @@ -5885,7 +5918,7 @@ __metadata: i18n-unused: ^0.13.0 iframe-resizer-react: ^1.1.0 keen-slider: ^6.8.0 - lucide-react: ^0.171.0 + lucide-react: ^0.364.0 micro: ^10.0.1 next: ^14.1.3 next-auth: ^4.22.1 @@ -5894,10 +5927,11 @@ __metadata: next-seo: ^6.0.0 playwright-core: ^1.38.1 postcss: ^8.4.18 + prettier: 3.3.3 prism-react-renderer: ^1.3.5 react: ^18.2.0 react-confetti: ^6.0.1 - react-datocms: ^3.1.0 + react-datocms: ^5.0.3 react-device-detect: ^2.2.2 react-dom: ^18.2.0 react-fast-marquee: ^1.6.4 @@ -5907,8 +5941,10 @@ __metadata: react-live-chat-loader: ^2.8.1 react-markdown: ^9.0.1 react-merge-refs: 1.1.0 + react-parallax-tilt: ^1.7.226 react-resize-detector: ^9.1.0 react-twemoji: ^0.3.0 + react-twitter-embed: ^4.0.4 react-use-measure: ^2.1.1 react-wrap-balancer: ^1.0.0 remark: ^14.0.2 @@ -5918,7 +5954,8 @@ __metadata: tailwind-merge: ^1.13.2 tailwindcss: ^3.3.3 ts-node: ^10.9.1 - typescript: ^4.9.4 + typescript: ^5.0.0 + typescript-eslint: ^8.2.0 wait-on: ^7.0.1 xml2js: ^0.6.0 zod: ^3.22.2 @@ -7030,6 +7067,24 @@ __metadata: languageName: node linkType: hard +"@eslint-community/eslint-utils@npm:^4.4.0": + version: 4.4.1 + resolution: "@eslint-community/eslint-utils@npm:4.4.1" + dependencies: + eslint-visitor-keys: ^3.4.3 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: a7ffc838eb6a9ef594cda348458ccf38f34439ac77dc090fa1c120024bcd4eb911dfd74d5ef44d42063e7949fa7c5123ce714a015c4abb917d4124be1bd32bfe + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 + languageName: node + linkType: hard + "@eslint-community/regexpp@npm:^4.6.1": version: 4.10.0 resolution: "@eslint-community/regexpp@npm:4.10.0" @@ -7037,6 +7092,24 @@ __metadata: languageName: node linkType: hard +"@eslint/config-array@npm:^0.18.0": + version: 0.18.0 + resolution: "@eslint/config-array@npm:0.18.0" + dependencies: + "@eslint/object-schema": ^2.1.4 + debug: ^4.3.1 + minimatch: ^3.1.2 + checksum: 5ff748e1788745bfb3160c3b3151d62a7c054e336e9fe8069e86cfa6106f3abbd59b24f1253122268295f98c66803e9a7b23d7f947a8c00f62d2060cc44bc7fc + languageName: node + linkType: hard + +"@eslint/core@npm:^0.7.0": + version: 0.7.0 + resolution: "@eslint/core@npm:0.7.0" + checksum: 91d4aa2805f356fb0bba693411deab91590472666e22c9c03304ba03b288b74403a5e120db16d0926ea94281e15563a8d4d519cd1e565d514e2d5015a84b8575 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^1.4.1": version: 1.4.1 resolution: "@eslint/eslintrc@npm:1.4.1" @@ -7071,6 +7144,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^3.1.0": + version: 3.1.0 + resolution: "@eslint/eslintrc@npm:3.1.0" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^10.0.1 + globals: ^14.0.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: b0a9bbd98c8b9e0f4d975b042ff9b874dde722b20834ea2ff46551c3de740d4f10f56c449b790ef34d7f82147cbddfc22b004a43cc885dbc2664bb134766b5e4 + languageName: node + linkType: hard + "@eslint/js@npm:8.57.0": version: 8.57.0 resolution: "@eslint/js@npm:8.57.0" @@ -7078,6 +7168,29 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:9.14.0, @eslint/js@npm:^9.9.0": + version: 9.14.0 + resolution: "@eslint/js@npm:9.14.0" + checksum: 727767d3c80bf88e08565af10cc3732ca0d272c729bbd39043722a203eea289ec6149ab42d977d2d28a81d99329dceeed091b70db37b868e6659913a0840e17b + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/object-schema@npm:2.1.4" + checksum: 5a03094115bcdab7991dbbc5d17a9713f394cebb4b44d3eaf990d7487b9b8e1877b817997334ab40be52e299a0384595c6f6ba91b389901e5e1d21efda779271 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.2.0": + version: 0.2.2 + resolution: "@eslint/plugin-kit@npm:0.2.2" + dependencies: + levn: ^0.4.1 + checksum: 08935d81f59f8b2ccc6df1e2517684d6cb9911390e210dacd861be60a000224b0b2f5aa9364ff78e4b14152d1d777aa621f587479aae07d0670b2e14a5a18ef6 + languageName: node + linkType: hard + "@ewsjs/ntlm-client@npm:^3.0.1": version: 3.0.1 resolution: "@ewsjs/ntlm-client@npm:3.0.1" @@ -8081,6 +8194,23 @@ __metadata: languageName: node linkType: hard +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 611e0545146f55ddfdd5c20239cfb7911f9d0e28258787c4fc1a1f6214250830c9367aaaeace0096ed90b6739bee1e9c52ad5ba8adaf74ab8b449119303babfe + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" + dependencies: + "@humanfs/core": ^0.19.1 + "@humanwhocodes/retry": ^0.3.0 + checksum: f9cb52bb235f8b9c6fcff43a7e500669a38f8d6ce26593404a9b56365a1644e0ed60c720dc65ff6a696b1f85f3563ab055bb554ec8674f2559085ba840e47710 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.11.14": version: 0.11.14 resolution: "@humanwhocodes/config-array@npm:0.11.14" @@ -8124,6 +8254,20 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 7e5517bb51dbea3e02ab6cacef59a8f4b0ca023fc4b0b8cbc40de0ad29f46edd50b897c6e7fba79366a0217e3f48e2da8975056f6c35cfe19d9cc48f1d03c1dd + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.0": + version: 0.4.1 + resolution: "@humanwhocodes/retry@npm:0.4.1" + checksum: f11167c28e8266faba470fd273cbaafe2827523492bc18c5623015adb7ed66f46b2e542e3d756fed9ca614300249267814220c2f5f03a59e07fdfa64fc14ad52 + languageName: node + linkType: hard + "@iarna/toml@npm:2.2.5": version: 2.2.5 resolution: "@iarna/toml@npm:2.2.5" @@ -9518,6 +9662,60 @@ __metadata: languageName: node linkType: hard +"@mux/mux-player-react@npm:*": + version: 3.1.0 + resolution: "@mux/mux-player-react@npm:3.1.0" + dependencies: + "@mux/mux-player": 3.1.0 + "@mux/playback-core": 0.27.0 + prop-types: ^15.7.2 + peerDependencies: + "@types/react": ^17.0.0 || ^17.0.0-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0 + react: ^17.0.2 || ^17.0.0-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0 + react-dom: ^17.0.2 || ^17.0.2-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 4e742c1d0fed4409af9257a227355d9adab62a7097c476e90b2d253607ed3751638de564bd4c93b1af5bd797118486a8effdae7bd4a2d360ea5e65bf82ce9563 + languageName: node + linkType: hard + +"@mux/mux-player@npm:3.1.0": + version: 3.1.0 + resolution: "@mux/mux-player@npm:3.1.0" + dependencies: + "@mux/mux-video": 0.22.0 + "@mux/playback-core": 0.27.0 + media-chrome: ~4.2.1 + player.style: ^0.0.8 + checksum: 915c8ca73a0f07db3bc371fcf9a2ab282cbef73cf8d697ff241daf1bda997b835d0dfa59510c3ca5554d115221ca51051fbd93773a105fb9254e73676e966560 + languageName: node + linkType: hard + +"@mux/mux-video@npm:0.22.0": + version: 0.22.0 + resolution: "@mux/mux-video@npm:0.22.0" + dependencies: + "@mux/playback-core": 0.27.0 + castable-video: ~1.1.0 + custom-media-element: ~1.3.1 + media-tracks: ~0.3.2 + checksum: 319793a42d7c4a19760fa2d1ec5d22f3db895382c8970a94945d37ed324555796e7461c05dcbc4e5fbed642c0302f049de4e41459b0e1a38070c5519ba3c89bc + languageName: node + linkType: hard + +"@mux/playback-core@npm:0.27.0": + version: 0.27.0 + resolution: "@mux/playback-core@npm:0.27.0" + dependencies: + hls.js: ~1.5.11 + mux-embed: ^5.3.1 + checksum: 4452b4f693b0cedb20510ef9eab3977c5bbcde2f17d32ce577d706c0bc731a7de32c09a2ff3064104ec70a4183d1d556a24d262eec0824667474365a6fdb0db3 + languageName: node + linkType: hard + "@ndelangen/get-tarball@npm:^3.0.7": version: 3.0.9 resolution: "@ndelangen/get-tarball@npm:3.0.9" @@ -10527,6 +10725,33 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/api-logs@npm:0.52.1": + version: 0.52.1 + resolution: "@opentelemetry/api-logs@npm:0.52.1" + dependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 500cd35527580732921d198bd7007224402cb89fef791f0b64bea839c9f2ad796d54486ee9aee0ee6422ded3963cba793408086eda0adfec2bd1d66f9114d96c + languageName: node + linkType: hard + +"@opentelemetry/api-logs@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/api-logs@npm:0.53.0" + dependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 3383ff75f94a77402370a655f8edf049f9864ad60140f70821a1b775ce43bdb9ca6fade533a1faf46dbca19f3189bcbf1f8805062f5a68bfe2a00281b1712d1f + languageName: node + linkType: hard + +"@opentelemetry/api-logs@npm:0.54.2": + version: 0.54.2 + resolution: "@opentelemetry/api-logs@npm:0.54.2" + dependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 6af14100932147d2296c7de1a16e14be528e0cb85cde79884967a777c0f0e2610aa130b04e48e5deec0a442c5a3966863a9da82ac40631755014f45cec5c8973 + languageName: node + linkType: hard + "@opentelemetry/api@npm:1.4.1": version: 1.4.1 resolution: "@opentelemetry/api@npm:1.4.1" @@ -10541,7 +10766,7 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/api@npm:^1.6.0, @opentelemetry/api@npm:^1.8, @opentelemetry/api@npm:^1.9.0": +"@opentelemetry/api@npm:^1.3.0, @opentelemetry/api@npm:^1.6.0, @opentelemetry/api@npm:^1.8, @opentelemetry/api@npm:^1.9.0": version: 1.9.0 resolution: "@opentelemetry/api@npm:1.9.0" checksum: 9e88e59d53ced668f3daaecfd721071c5b85a67dd386f1c6f051d1be54375d850016c881f656ffbe9a03bedae85f7e89c2f2b635313f9c9b195ad033cdc31020 @@ -10557,6 +10782,15 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/context-async-hooks@npm:^1.25.1": + version: 1.27.0 + resolution: "@opentelemetry/context-async-hooks@npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: d0fb0dd9e9de9b5404c50b48aa982c096f1f58aa518e472a3e48bd8d404354700132005886a497b7067cae6e813dab374a6c1483e344e53e396274c5b00f2a31 + languageName: node + linkType: hard + "@opentelemetry/core@npm:1.18.1": version: 1.18.1 resolution: "@opentelemetry/core@npm:1.18.1" @@ -10579,6 +10813,28 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/core@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/core@npm:1.26.0" + dependencies: + "@opentelemetry/semantic-conventions": 1.27.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: e5b06b4d69605927b850109c6b898f00a6a921171b3bf62335a4e00b9a170c1b93ddef6d7f8cc480a551faeaf81074b594f4462a91d4fbc4b313e64ff9ebd717 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:1.27.0, @opentelemetry/core@npm:^1.25.1": + version: 1.27.0 + resolution: "@opentelemetry/core@npm:1.27.0" + dependencies: + "@opentelemetry/semantic-conventions": 1.27.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 33ff551f89f0bb95830c9f9464c43b11adf88882ec1d3a03a5b9afcc89d2aafab33c36cb5047f18667d7929d6ab40ed0121649c42d0105f1cb33ffdca48f8b13 + languageName: node + linkType: hard + "@opentelemetry/exporter-metrics-otlp-grpc@npm:0.45.1": version: 0.45.1 resolution: "@opentelemetry/exporter-metrics-otlp-grpc@npm:0.45.1" @@ -10611,6 +10867,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-amqplib@npm:^0.42.0": + version: 0.42.0 + resolution: "@opentelemetry/instrumentation-amqplib@npm:0.42.0" + dependencies: + "@opentelemetry/core": ^1.8.0 + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 64c5a07cca54f2673aa9708638ba8a3dce864d69686924acb926a08f981941b080d68dcfc465b3139dc6824f239f1be9fc49257557c9bfcb460cb2c1f3b4dc80 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-connect@npm:0.37.0": version: 0.37.0 resolution: "@opentelemetry/instrumentation-connect@npm:0.37.0" @@ -10625,6 +10894,31 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-connect@npm:0.40.0": + version: 0.40.0 + resolution: "@opentelemetry/instrumentation-connect@npm:0.40.0" + dependencies: + "@opentelemetry/core": ^1.8.0 + "@opentelemetry/instrumentation": ^0.54.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + "@types/connect": 3.4.36 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 3fe2f82105abc740c813765594f0cce37cbcced2610ac2d48d97311e2bc853695c4953cedb88ed620c163e39492f4549476b3fa1b2b65034abd0fd5b2a1bb1b2 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-dataloader@npm:0.12.0": + version: 0.12.0 + resolution: "@opentelemetry/instrumentation-dataloader@npm:0.12.0" + dependencies: + "@opentelemetry/instrumentation": ^0.53.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 7d502bd4ca6eac448bebc971d7b7b85b1e1e959bfcbf4b7927ea3fe90784aec8132d147fef2e773e468a8d20241df825edec6e0753be824b155a15d89e6f57a1 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-express@npm:0.40.0": version: 0.40.0 resolution: "@opentelemetry/instrumentation-express@npm:0.40.0" @@ -10638,6 +10932,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-express@npm:0.44.0": + version: 0.44.0 + resolution: "@opentelemetry/instrumentation-express@npm:0.44.0" + dependencies: + "@opentelemetry/core": ^1.8.0 + "@opentelemetry/instrumentation": ^0.54.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 0ab8be80c817021b7a96fa94bf55c635fa664d2c03058e1485311f4f4bf964e5cf7756185c9003a4d59ac6fc766eff52a7b390a91ca3946ce3d371f3135ea4d5 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-fastify@npm:0.37.0": version: 0.37.0 resolution: "@opentelemetry/instrumentation-fastify@npm:0.37.0" @@ -10651,6 +10958,42 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-fastify@npm:0.41.0": + version: 0.41.0 + resolution: "@opentelemetry/instrumentation-fastify@npm:0.41.0" + dependencies: + "@opentelemetry/core": ^1.8.0 + "@opentelemetry/instrumentation": ^0.54.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: dc790cd6ee7ea2322be2e35ce259e10a1f42827970b0b83a6ca7a5a934a986dea7239fe1a29cc772529c1504f24d3afe91c0923a87efc12e8ea1b1321df18514 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-fs@npm:0.16.0": + version: 0.16.0 + resolution: "@opentelemetry/instrumentation-fs@npm:0.16.0" + dependencies: + "@opentelemetry/core": ^1.8.0 + "@opentelemetry/instrumentation": ^0.54.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: d74b3ab430c909b7840322540ab51664c29e8ff43fd4eaa77edf11828e5b2234b519771f8d64d051d6a508c1c20c377e606f032fa758ef08eb23e0336e3746bc + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-generic-pool@npm:0.39.0": + version: 0.39.0 + resolution: "@opentelemetry/instrumentation-generic-pool@npm:0.39.0" + dependencies: + "@opentelemetry/instrumentation": ^0.53.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 2d094b217afe9c1d388f06cdaca07f9801b70f0d01ee3db374f1b4f07cd18efba55e90679f0237c1f2a7db22f9ee0e564e8583161bb7d578ecea779b874e967e + languageName: node + linkType: hard + "@opentelemetry/instrumentation-graphql@npm:0.41.0": version: 0.41.0 resolution: "@opentelemetry/instrumentation-graphql@npm:0.41.0" @@ -10662,6 +11005,17 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-graphql@npm:0.44.0": + version: 0.44.0 + resolution: "@opentelemetry/instrumentation-graphql@npm:0.44.0" + dependencies: + "@opentelemetry/instrumentation": ^0.54.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: c4f0f771e1d939de844a97b0e5c0416d5c0d12d2d94e369566b61ec3819193c7eb113c9b3101581c83bb44bdb2b289a33623488ab7446be370e3577ebe37a198 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-hapi@npm:0.39.0": version: 0.39.0 resolution: "@opentelemetry/instrumentation-hapi@npm:0.39.0" @@ -10675,6 +11029,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-hapi@npm:0.41.0": + version: 0.41.0 + resolution: "@opentelemetry/instrumentation-hapi@npm:0.41.0" + dependencies: + "@opentelemetry/core": ^1.8.0 + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 2195c8366d9b81a40dd6d8db041c13687932ab7ec761c9dfea13162c4000638c699dfebf384e22f985aea2d7692c742ed8090cb5bad056e5137d2db79a615380 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-http@npm:0.52.0": version: 0.52.0 resolution: "@opentelemetry/instrumentation-http@npm:0.52.0" @@ -10689,6 +11056,20 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-http@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/instrumentation-http@npm:0.53.0" + dependencies: + "@opentelemetry/core": 1.26.0 + "@opentelemetry/instrumentation": 0.53.0 + "@opentelemetry/semantic-conventions": 1.27.0 + semver: ^7.5.2 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 4ee569f7fc8c7ce50fabaff016d33577f36e63272b0634ac45806d70bffdf38fcf09db3cd9dd27c3150f6c4547fec673c356c419a6ed2399ff2849b9487a6e89 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-ioredis@npm:0.41.0": version: 0.41.0 resolution: "@opentelemetry/instrumentation-ioredis@npm:0.41.0" @@ -10702,6 +11083,31 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-ioredis@npm:0.43.0": + version: 0.43.0 + resolution: "@opentelemetry/instrumentation-ioredis@npm:0.43.0" + dependencies: + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/redis-common": ^0.36.2 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 16ae17687db3b4bbe78d92667ce86f3afb212adb5eda8f17b549a06ff9e1ba3e0f146ded9e943cb781780b64853a6b7fa3b85d2c2f5e4f42fd76d651c90aa71f + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-kafkajs@npm:0.4.0": + version: 0.4.0 + resolution: "@opentelemetry/instrumentation-kafkajs@npm:0.4.0" + dependencies: + "@opentelemetry/instrumentation": ^0.54.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 23d8d8aa2945f372aaab8ab9a583821339c523d8203090e29652eb90c9600fc273e131d5a0b9464fe09cacde6b35f44e3046effa1b20f936a064872ba18352ec + languageName: node + linkType: hard + "@opentelemetry/instrumentation-koa@npm:0.41.0": version: 0.41.0 resolution: "@opentelemetry/instrumentation-koa@npm:0.41.0" @@ -10717,6 +11123,30 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-koa@npm:0.43.0": + version: 0.43.0 + resolution: "@opentelemetry/instrumentation-koa@npm:0.43.0" + dependencies: + "@opentelemetry/core": ^1.8.0 + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 7b30d11f8cbabc1570eeca771f421c65f014d87b850cf17a8f2aec98dc84a8a43ce6fe15634f5d16944466f8da1011508367498e215b3f6378e8f8d618a12ec9 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-lru-memoizer@npm:0.40.0": + version: 0.40.0 + resolution: "@opentelemetry/instrumentation-lru-memoizer@npm:0.40.0" + dependencies: + "@opentelemetry/instrumentation": ^0.53.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 1a65e7c397707f9d09fe11f9fbd127d5094406ec98f84e74309c1d9869da23173c3895c851bccf9c5c1b8aeef6fc516340311f87d154832c74a344a0ed4ac9ef + languageName: node + linkType: hard + "@opentelemetry/instrumentation-mongodb@npm:0.44.0": version: 0.44.0 resolution: "@opentelemetry/instrumentation-mongodb@npm:0.44.0" @@ -10730,6 +11160,18 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-mongodb@npm:0.48.0": + version: 0.48.0 + resolution: "@opentelemetry/instrumentation-mongodb@npm:0.48.0" + dependencies: + "@opentelemetry/instrumentation": ^0.54.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 910925d26cf7af63001c483c790deb75365bdeb314ecbf8d84b908eea4d3ecb1025a53b0f86a903c367a538a47756e423d6f697418782dc84d06dff49b483494 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-mongoose@npm:0.39.0": version: 0.39.0 resolution: "@opentelemetry/instrumentation-mongoose@npm:0.39.0" @@ -10743,6 +11185,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-mongoose@npm:0.42.0": + version: 0.42.0 + resolution: "@opentelemetry/instrumentation-mongoose@npm:0.42.0" + dependencies: + "@opentelemetry/core": ^1.8.0 + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 77d36437073ee589ccd73f4a10a4602afd0f4a3a89a9c572be18b2df75941f5a6885d4823094d8ffe8859801d827d0b46f93dee03f39286d89eead373edf76bb + languageName: node + linkType: hard + "@opentelemetry/instrumentation-mysql2@npm:0.39.0": version: 0.39.0 resolution: "@opentelemetry/instrumentation-mysql2@npm:0.39.0" @@ -10756,6 +11211,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-mysql2@npm:0.41.0": + version: 0.41.0 + resolution: "@opentelemetry/instrumentation-mysql2@npm:0.41.0" + dependencies: + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + "@opentelemetry/sql-common": ^0.40.1 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 37c8a57fb6591ae1db353e149ad5f38ac68c5f727e313ba6d1cc403d910ae8e3b743c3234500272012ea6eecb5b838803ee493ce5096ad40bb285b09090f4a65 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-mysql@npm:0.39.0": version: 0.39.0 resolution: "@opentelemetry/instrumentation-mysql@npm:0.39.0" @@ -10769,6 +11237,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-mysql@npm:0.41.0": + version: 0.41.0 + resolution: "@opentelemetry/instrumentation-mysql@npm:0.41.0" + dependencies: + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + "@types/mysql": 2.15.26 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: c8c23a1273e900902867ca4da8c026581d3f584e420a5f26ec738ace20c1a85695a411721541e63e0639d9ddbb8c3713a2bc25621886f81912014882395d3531 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-nestjs-core@npm:0.38.0": version: 0.38.0 resolution: "@opentelemetry/instrumentation-nestjs-core@npm:0.38.0" @@ -10781,6 +11262,18 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-nestjs-core@npm:0.40.0": + version: 0.40.0 + resolution: "@opentelemetry/instrumentation-nestjs-core@npm:0.40.0" + dependencies: + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: ce6b2d9186d95e5fa5c65efd902254c724e296172787d1fa9382a6204ae9d089e861ce8831ba6e6865d449a96a8aada7b1049568217f1bda21af3f36e01b9512 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-pg@npm:0.42.0": version: 0.42.0 resolution: "@opentelemetry/instrumentation-pg@npm:0.42.0" @@ -10796,6 +11289,46 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-pg@npm:0.44.0": + version: 0.44.0 + resolution: "@opentelemetry/instrumentation-pg@npm:0.44.0" + dependencies: + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + "@opentelemetry/sql-common": ^0.40.1 + "@types/pg": 8.6.1 + "@types/pg-pool": 2.0.6 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 13cf8bacee1139b551622cb76670c627e87b37ee5ad2b6c63417d985812c7db53ce7aae23bd04156cb5c0d1a214bb8c65890fde43fbd99aac540c625216703b7 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-redis-4@npm:0.42.0": + version: 0.42.0 + resolution: "@opentelemetry/instrumentation-redis-4@npm:0.42.0" + dependencies: + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/redis-common": ^0.36.2 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: b6d92ad302c31add32b1cdfe6f6ea836367a777737beb187b178bfb65047f84263b38855cda56746b793582eb6012942c03ed91f6e8e6710058bf3eb427fba2d + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-undici@npm:0.6.0": + version: 0.6.0 + resolution: "@opentelemetry/instrumentation-undici@npm:0.6.0" + dependencies: + "@opentelemetry/core": ^1.8.0 + "@opentelemetry/instrumentation": ^0.53.0 + peerDependencies: + "@opentelemetry/api": ^1.7.0 + checksum: b16b9ff23fbca13a18889fc302ddae3db8b22ebd9d8224b0297bd45014bb914d6bea89e55aedda6879cee1760c93bcedc2eaa12e60e88f45dd8c9e5f61a0aefd + languageName: node + linkType: hard + "@opentelemetry/instrumentation@npm:0.52.0, @opentelemetry/instrumentation@npm:^0.52.0": version: 0.52.0 resolution: "@opentelemetry/instrumentation@npm:0.52.0" @@ -10812,6 +11345,22 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation@npm:0.53.0, @opentelemetry/instrumentation@npm:^0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/instrumentation@npm:0.53.0" + dependencies: + "@opentelemetry/api-logs": 0.53.0 + "@types/shimmer": ^1.2.0 + import-in-the-middle: ^1.8.1 + require-in-the-middle: ^7.1.1 + semver: ^7.5.2 + shimmer: ^1.2.1 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: a386fe066eab71129a6edbc883ab407b1022850e8acc4750029a12e8730588a8b81442d0b008aaddb46f7614af40d19d331e7348790ca2d08ba8eed6d23ffdae + languageName: node + linkType: hard + "@opentelemetry/instrumentation@npm:^0.43.0": version: 0.43.0 resolution: "@opentelemetry/instrumentation@npm:0.43.0" @@ -10843,6 +11392,38 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation@npm:^0.49 || ^0.50 || ^0.51 || ^0.52.0": + version: 0.52.1 + resolution: "@opentelemetry/instrumentation@npm:0.52.1" + 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 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: e8b4f202dc9355ca46714349a5e1663346e162f79706eed38015edf38fc536330fde4cc19ed7d3d6b03258c890c1dc0ba6d658d7aac3f41f1803bd03699d2701 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation@npm:^0.54.0": + version: 0.54.2 + resolution: "@opentelemetry/instrumentation@npm:0.54.2" + dependencies: + "@opentelemetry/api-logs": 0.54.2 + "@types/shimmer": ^1.2.0 + import-in-the-middle: ^1.8.1 + require-in-the-middle: ^7.1.1 + semver: ^7.5.2 + shimmer: ^1.2.1 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: c8ebf9eab5dc16c51a937367f6c21e22068b863d44d72c8b1f7615750ad526218229c30ab3c90c376c2cc03ee17cae3949a6f6ed987486511a13a3bef100e6b6 + languageName: node + linkType: hard + "@opentelemetry/otlp-exporter-base@npm:0.45.1": version: 0.45.1 resolution: "@opentelemetry/otlp-exporter-base@npm:0.45.1" @@ -10915,6 +11496,18 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/resources@npm:1.27.0, @opentelemetry/resources@npm:^1.26.0": + version: 1.27.0 + resolution: "@opentelemetry/resources@npm:1.27.0" + dependencies: + "@opentelemetry/core": 1.27.0 + "@opentelemetry/semantic-conventions": 1.27.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 43d298afea7daf7524e6b98c1441bcce9fa73b76aecf17e36cabb1a4cfaae6818acf9759d3e42706b1fd91243644076d2291e78c3ed81641d3b351fcff6cb9a9 + languageName: node + linkType: hard + "@opentelemetry/sdk-logs@npm:0.45.1": version: 0.45.1 resolution: "@opentelemetry/sdk-logs@npm:0.45.1" @@ -10980,6 +11573,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/sdk-trace-base@npm:^1.26.0": + version: 1.27.0 + resolution: "@opentelemetry/sdk-trace-base@npm:1.27.0" + dependencies: + "@opentelemetry/core": 1.27.0 + "@opentelemetry/resources": 1.27.0 + "@opentelemetry/semantic-conventions": 1.27.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: d28c36724aeaf4884f7957e2ab138d9a0ca715a68b2ad23e2935ff0e39cd438c57fd0c8cc85fd5e280464857ede1ae8f9c8e40a37088a1e34d2e625e77276fee + languageName: node + linkType: hard + "@opentelemetry/semantic-conventions@npm:1.18.1": version: 1.18.1 resolution: "@opentelemetry/semantic-conventions@npm:1.18.1" @@ -10994,6 +11600,13 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/semantic-conventions@npm:1.27.0, @opentelemetry/semantic-conventions@npm:^1.27.0": + version: 1.27.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.27.0" + checksum: 26d85f8d13c8c64024f7a84528cff41d56afc9829e7ff8a654576404f8b2c1a9c264adcc6fa5a9551bacdd938a4a464041fa9493e0a722e5605f2c2ae6752398 + languageName: node + linkType: hard + "@opentelemetry/sql-common@npm:^0.40.1": version: 0.40.1 resolution: "@opentelemetry/sql-common@npm:0.40.1" @@ -11530,6 +12143,17 @@ __metadata: languageName: node linkType: hard +"@prisma/instrumentation@npm:5.19.1": + version: 5.19.1 + resolution: "@prisma/instrumentation@npm:5.19.1" + dependencies: + "@opentelemetry/api": ^1.8 + "@opentelemetry/instrumentation": ^0.49 || ^0.50 || ^0.51 || ^0.52.0 + "@opentelemetry/sdk-trace-base": ^1.22 + checksum: eff7f0b3737d0253e12f9b8df65f7a4b0c793ec3f459a792b7b553e0b706953ffc6117953537b4f3e0627385a3ee360b5758dec32f2d2e042d158489ae987ec5 + languageName: node + linkType: hard + "@prisma/internals@npm:5.1.1": version: 5.1.1 resolution: "@prisma/internals@npm:5.1.1" @@ -11735,6 +12359,13 @@ __metadata: languageName: node linkType: hard +"@radix-ui/number@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/number@npm:1.1.0" + checksum: e4fc7483c19141c25dbaf3d140b75e2b7fed0bfa3ad969f4441f0266ed34b35413f57a35df7b025e2a977152bbe6131849d3444fc6f15a73345dfc2bfdc105fa + languageName: node + linkType: hard + "@radix-ui/primitive@npm:0.1.0": version: 0.1.0 resolution: "@radix-ui/primitive@npm:0.1.0" @@ -11816,6 +12447,25 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-arrow@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-arrow@npm:1.1.0" + dependencies: + "@radix-ui/react-primitive": 2.0.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 8522e0a8095ecc32d3a719f9c3bc0514c677a9c9d5ac26985d5416576dbc487c2a49ba2484397d9de502b54657856cb41ca3ea0b2165563eeeae45a83750885b + languageName: node + linkType: hard + "@radix-ui/react-avatar@npm:^1.0.4": version: 1.0.4 resolution: "@radix-ui/react-avatar@npm:1.0.4" @@ -12079,6 +12729,19 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-context@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-context@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 9a04db236685dacc2f5ab2bdcfc4c82b974998e712ab97d79b11d5b4ef073d24aa9392398c876ef6cb3c59f40299285ceee3646187ad818cdad4fe1c74469d3f + languageName: node + linkType: hard + "@radix-ui/react-dialog@npm:1.0.0": version: 1.0.0 resolution: "@radix-ui/react-dialog@npm:1.0.0" @@ -12271,6 +12934,29 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-dismissable-layer@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-dismissable-layer@npm:1.1.1" + dependencies: + "@radix-ui/primitive": 1.1.0 + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-use-callback-ref": 1.1.0 + "@radix-ui/react-use-escape-keydown": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 18450111de16435a6e98661c8530bf87d8dfe51aa8649fea4f420db389642800792bc454669cab010c35cd402e9ae945c882e78e4cf2ce209d9c701f7a9b940f + languageName: node + linkType: hard + "@radix-ui/react-dropdown-menu@npm:^2.0.5": version: 2.0.5 resolution: "@radix-ui/react-dropdown-menu@npm:2.0.5" @@ -12323,6 +13009,19 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-focus-guards@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-focus-guards@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: ac8dd31f48fa0500bafd9368f2f06c5a06918dccefa89fa5dc77ca218dc931a094a81ca57f6b181138029822f7acdd5280dceccf5ba4d9263c754fb8f7961879 + languageName: node + linkType: hard + "@radix-ui/react-focus-scope@npm:0.1.4": version: 0.1.4 resolution: "@radix-ui/react-focus-scope@npm:0.1.4" @@ -12374,6 +13073,27 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-focus-scope@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-focus-scope@npm:1.1.0" + dependencies: + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-use-callback-ref": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: bea6c993752780c46c69f0c21a0fd96f11b9ed7edac23deb0953fbd8524d90938bf4c8060ccac7cad14caba3eb493f2642be7f8933910f4b6fa184666b7fcb40 + languageName: node + linkType: hard + "@radix-ui/react-hover-card@npm:^1.0.7": version: 1.0.7 resolution: "@radix-ui/react-hover-card@npm:1.0.7" @@ -12633,6 +13353,34 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-popper@npm:1.2.0": + version: 1.2.0 + resolution: "@radix-ui/react-popper@npm:1.2.0" + dependencies: + "@floating-ui/react-dom": ^2.0.0 + "@radix-ui/react-arrow": 1.1.0 + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-context": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-use-callback-ref": 1.1.0 + "@radix-ui/react-use-layout-effect": 1.1.0 + "@radix-ui/react-use-rect": 1.1.0 + "@radix-ui/react-use-size": 1.1.0 + "@radix-ui/rect": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 95b2390181abe3296274b3e3836d295dc7b1624462ca88cc283b70c4efa25b1a640ff56cfe2cc8606bfe493f81b57a86345f962d86a027ad673aed58390545c6 + languageName: node + linkType: hard + "@radix-ui/react-portal@npm:0.1.4": version: 0.1.4 resolution: "@radix-ui/react-portal@npm:0.1.4" @@ -12700,6 +13448,26 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-portal@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-portal@npm:1.1.2" + dependencies: + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-use-layout-effect": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 2f737dc0445f02f512f814ba140227e1a049b3d215d79e22ead412c9befe830292c48a559a8ad1514a474ae8f0c4c43954dfbe294b93a0279d8747d08f7b7924 + languageName: node + linkType: hard + "@radix-ui/react-presence@npm:1.0.0": version: 1.0.0 resolution: "@radix-ui/react-presence@npm:1.0.0" @@ -12973,6 +13741,45 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-select@npm:^2.1.1": + version: 2.1.2 + resolution: "@radix-ui/react-select@npm:2.1.2" + dependencies: + "@radix-ui/number": 1.1.0 + "@radix-ui/primitive": 1.1.0 + "@radix-ui/react-collection": 1.1.0 + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-context": 1.1.1 + "@radix-ui/react-direction": 1.1.0 + "@radix-ui/react-dismissable-layer": 1.1.1 + "@radix-ui/react-focus-guards": 1.1.1 + "@radix-ui/react-focus-scope": 1.1.0 + "@radix-ui/react-id": 1.1.0 + "@radix-ui/react-popper": 1.2.0 + "@radix-ui/react-portal": 1.1.2 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-slot": 1.1.0 + "@radix-ui/react-use-callback-ref": 1.1.0 + "@radix-ui/react-use-controllable-state": 1.1.0 + "@radix-ui/react-use-layout-effect": 1.1.0 + "@radix-ui/react-use-previous": 1.1.0 + "@radix-ui/react-visually-hidden": 1.1.0 + aria-hidden: ^1.1.1 + react-remove-scroll: 2.6.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: cd662a5f0b1cc77dd81df51997ddc1dd47cc0025551e4ffa0c2675c056b3609257096d4f4e27189ddac98771a0191d68323c97d61fa0991d6fae78e708650959 + languageName: node + linkType: hard + "@radix-ui/react-separator@npm:1.0.3": version: 1.0.3 resolution: "@radix-ui/react-separator@npm:1.0.3" @@ -13568,6 +14375,21 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-use-rect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-rect@npm:1.1.0" + dependencies: + "@radix-ui/rect": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: facc9528af43df3b01952dbb915ff751b5924db2c31d41f053ddea19a7cc5cac5b096c4d7a2059e8f564a3f0d4a95bcd909df8faed52fa01709af27337628e2c + languageName: node + linkType: hard + "@radix-ui/react-use-size@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/react-use-size@npm:1.0.1" @@ -13659,6 +14481,13 @@ __metadata: languageName: node linkType: hard +"@radix-ui/rect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/rect@npm:1.1.0" + checksum: 1ad93efbc9fc3b878bae5e8bb26ffa1005235d8b5b9fca8339eb5dbcf7bf53abc9ccd2a8ce128557820168c8600521e48e0ea4dda96aa5f116381f66f46aeda3 + languageName: node + linkType: hard + "@reach/observe-rect@npm:^1.1.0": version: 1.2.0 resolution: "@reach/observe-rect@npm:1.2.0" @@ -14600,6 +15429,16 @@ __metadata: languageName: node linkType: hard +"@sentry/core@npm:8.37.1": + version: 8.37.1 + resolution: "@sentry/core@npm:8.37.1" + dependencies: + "@sentry/types": 8.37.1 + "@sentry/utils": 8.37.1 + checksum: a72218c0234beaf5f177cfa6a195291387fbe3e255a385aaad9ec54d90aa258efcf2f04be5f024cd49670389f260a2a69b482334f5be131078b67502989e8a49 + languageName: node + linkType: hard + "@sentry/core@npm:8.8.0": version: 8.8.0 resolution: "@sentry/core@npm:8.8.0" @@ -14610,6 +15449,21 @@ __metadata: languageName: node linkType: hard +"@sentry/nestjs@npm:^8.37.1": + version: 8.37.1 + resolution: "@sentry/nestjs@npm:8.37.1" + dependencies: + "@sentry/core": 8.37.1 + "@sentry/node": 8.37.1 + "@sentry/types": 8.37.1 + "@sentry/utils": 8.37.1 + peerDependencies: + "@nestjs/common": ^8.0.0 || ^9.0.0 || ^10.0.0 + "@nestjs/core": ^8.0.0 || ^9.0.0 || ^10.0.0 + checksum: 002df4421ded291249e2e5aba76c984c9542b8a7d4e1fc8084969ffaeb6aee56e7f439dfa9cf4e8438852396b1ba435a83058ad73287abce8217aa1d45947271 + languageName: node + linkType: hard + "@sentry/nextjs@npm:^8.8.0": version: 8.8.0 resolution: "@sentry/nextjs@npm:8.8.0" @@ -14639,6 +15493,49 @@ __metadata: languageName: node linkType: hard +"@sentry/node@npm:8.37.1": + version: 8.37.1 + resolution: "@sentry/node@npm:8.37.1" + dependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/context-async-hooks": ^1.25.1 + "@opentelemetry/core": ^1.25.1 + "@opentelemetry/instrumentation": ^0.54.0 + "@opentelemetry/instrumentation-amqplib": ^0.42.0 + "@opentelemetry/instrumentation-connect": 0.40.0 + "@opentelemetry/instrumentation-dataloader": 0.12.0 + "@opentelemetry/instrumentation-express": 0.44.0 + "@opentelemetry/instrumentation-fastify": 0.41.0 + "@opentelemetry/instrumentation-fs": 0.16.0 + "@opentelemetry/instrumentation-generic-pool": 0.39.0 + "@opentelemetry/instrumentation-graphql": 0.44.0 + "@opentelemetry/instrumentation-hapi": 0.41.0 + "@opentelemetry/instrumentation-http": 0.53.0 + "@opentelemetry/instrumentation-ioredis": 0.43.0 + "@opentelemetry/instrumentation-kafkajs": 0.4.0 + "@opentelemetry/instrumentation-koa": 0.43.0 + "@opentelemetry/instrumentation-lru-memoizer": 0.40.0 + "@opentelemetry/instrumentation-mongodb": 0.48.0 + "@opentelemetry/instrumentation-mongoose": 0.42.0 + "@opentelemetry/instrumentation-mysql": 0.41.0 + "@opentelemetry/instrumentation-mysql2": 0.41.0 + "@opentelemetry/instrumentation-nestjs-core": 0.40.0 + "@opentelemetry/instrumentation-pg": 0.44.0 + "@opentelemetry/instrumentation-redis-4": 0.42.0 + "@opentelemetry/instrumentation-undici": 0.6.0 + "@opentelemetry/resources": ^1.26.0 + "@opentelemetry/sdk-trace-base": ^1.26.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + "@prisma/instrumentation": 5.19.1 + "@sentry/core": 8.37.1 + "@sentry/opentelemetry": 8.37.1 + "@sentry/types": 8.37.1 + "@sentry/utils": 8.37.1 + import-in-the-middle: ^1.11.2 + checksum: 3cfe357fd5243fc428b01493e6bef164a4a4afbbba42cfe55bc0b5952dda3ec78bcf9351c498ddca69943b4fa23cabd29c65a4a6eea3b52790b7cb3fe81ab786 + languageName: node + linkType: hard + "@sentry/node@npm:8.8.0, @sentry/node@npm:^8.8.0": version: 8.8.0 resolution: "@sentry/node@npm:8.8.0" @@ -14677,6 +15574,23 @@ __metadata: languageName: node linkType: hard +"@sentry/opentelemetry@npm:8.37.1": + version: 8.37.1 + resolution: "@sentry/opentelemetry@npm:8.37.1" + dependencies: + "@sentry/core": 8.37.1 + "@sentry/types": 8.37.1 + "@sentry/utils": 8.37.1 + peerDependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/core": ^1.25.1 + "@opentelemetry/instrumentation": ^0.54.0 + "@opentelemetry/sdk-trace-base": ^1.26.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + checksum: 217d2375d8d2a65d65a6c4657768debf25f6fd3b7a8dea997ca942f6831485f7e0b386e904d74bf9fb51e2fb1d962b0775d7418c64085177d32655e33c642e29 + languageName: node + linkType: hard + "@sentry/opentelemetry@npm:8.8.0": version: 8.8.0 resolution: "@sentry/opentelemetry@npm:8.8.0" @@ -14694,6 +15608,23 @@ __metadata: languageName: node linkType: hard +"@sentry/profiling-node@npm:^8.37.1": + version: 8.37.1 + resolution: "@sentry/profiling-node@npm:8.37.1" + dependencies: + "@sentry/core": 8.37.1 + "@sentry/node": 8.37.1 + "@sentry/types": 8.37.1 + "@sentry/utils": 8.37.1 + detect-libc: ^2.0.2 + node-abi: ^3.61.0 + node-gyp: latest + bin: + sentry-prune-profiler-binaries: scripts/prune-profiler-binaries.js + checksum: 0de0b5bf389bb718e6f44333f66655fbc9d8592e6bc1c606daff66f25776b98a7c23403d4b99beb1364a83c48a1cf80384c5fb0607db1fa41a169b67f8d73eb5 + languageName: node + linkType: hard + "@sentry/react@npm:8.8.0": version: 8.8.0 resolution: "@sentry/react@npm:8.8.0" @@ -14728,6 +15659,13 @@ __metadata: languageName: node linkType: hard +"@sentry/types@npm:8.37.1": + version: 8.37.1 + resolution: "@sentry/types@npm:8.37.1" + checksum: 531d61279797beb6b884a85049c1a9627cda829653976dc333fe5dcef081276dcbfd1f0aee7b9c8c64f243888989b2a550b5b1cdbd064184a35aa03662a437b2 + languageName: node + linkType: hard + "@sentry/types@npm:8.8.0": version: 8.8.0 resolution: "@sentry/types@npm:8.8.0" @@ -14744,6 +15682,15 @@ __metadata: languageName: node linkType: hard +"@sentry/utils@npm:8.37.1": + version: 8.37.1 + resolution: "@sentry/utils@npm:8.37.1" + dependencies: + "@sentry/types": 8.37.1 + checksum: ab47148790d89a7a0f957c618e2e20f0e9b2891495993b54c724feb76baec264a2cd4e1e39230823e098076f66262ca9d0f134767c7f09c0e34059890d27b3c3 + languageName: node + linkType: hard + "@sentry/utils@npm:8.8.0": version: 8.8.0 resolution: "@sentry/utils@npm:8.8.0" @@ -17466,6 +18413,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:^1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 + languageName: node + linkType: hard + "@types/express-jwt@npm:0.0.42": version: 0.0.42 resolution: "@types/express-jwt@npm:0.0.42" @@ -17746,6 +18700,13 @@ __metadata: languageName: node linkType: hard +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 + languageName: node + linkType: hard + "@types/json5@npm:^0.0.29": version: 0.0.29 resolution: "@types/json5@npm:0.0.29" @@ -18013,6 +18974,15 @@ __metadata: languageName: node linkType: hard +"@types/mysql@npm:2.15.26": + version: 2.15.26 + resolution: "@types/mysql@npm:2.15.26" + dependencies: + "@types/node": "*" + checksum: c43395643aca3565492a12f7bb7168cea7f5fa1b6539caabc99e657bbbea3ef330d65e8d8fc873fedfbbbed48a01ac8c1ce0d31c7989cd44a4845b32253daf6c + languageName: node + linkType: hard + "@types/node-fetch@npm:^2.6.4": version: 2.6.4 resolution: "@types/node-fetch@npm:2.6.4" @@ -18108,6 +19078,15 @@ __metadata: languageName: node linkType: hard +"@types/pg-pool@npm:2.0.6": + version: 2.0.6 + resolution: "@types/pg-pool@npm:2.0.6" + dependencies: + "@types/pg": "*" + checksum: cc54ce97115effc982bd052f79901a78215e76554aca0ecc92e78eb907e4fb2962924039369cd9aaf48075f1637593ce14647c62d3a2eb03789ce5d1c6df750b + languageName: node + linkType: hard + "@types/pg@npm:*": version: 8.11.6 resolution: "@types/pg@npm:8.11.6" @@ -18354,6 +19333,13 @@ __metadata: languageName: node linkType: hard +"@types/shimmer@npm:^1.2.0": + version: 1.2.0 + resolution: "@types/shimmer@npm:1.2.0" + checksum: f081a31d826ce7bfe8cc7ba8129d2b1dffae44fd580eba4fcf741237646c4c2494ae6de2cada4b7713d138f35f4bc512dbf01311d813dee82020f97d7d8c491c + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.0": version: 2.0.1 resolution: "@types/stack-utils@npm:2.0.1" @@ -18567,6 +19553,29 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.14.0" + dependencies: + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 8.14.0 + "@typescript-eslint/type-utils": 8.14.0 + "@typescript-eslint/utils": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 + graphemer: ^1.4.0 + ignore: ^5.3.1 + natural-compare: ^1.4.0 + ts-api-utils: ^1.3.0 + peerDependencies: + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 5ba1dc4eef2fcf8edfe878a5f254ff2dde882f996cfc66312ccd66c54da701a7f3b79c27e3935569b428f1b397c5b3475cd9202ce253bc30aa343a70bfea2c03 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^5.52.0": version: 5.52.0 resolution: "@typescript-eslint/eslint-plugin@npm:5.52.0" @@ -18591,6 +19600,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/parser@npm:8.14.0" + dependencies: + "@typescript-eslint/scope-manager": 8.14.0 + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/typescript-estree": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 11a2c52efc5813e615c60d13a548e5c13d75a54ab359f64fa7a8d1739b3179ff98f716c6f7789efa293b24e7a1906db1a7331f8a32d8f6405115d50f557af7ea + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^5.4.2 || ^6.0.0": version: 6.21.0 resolution: "@typescript-eslint/parser@npm:6.21.0" @@ -18673,6 +19700,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/scope-manager@npm:8.14.0" + dependencies: + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 + checksum: 9c4011771e6795d00328ebfb70b1cdfc706139f0803244adf4bdf46bea5033f1508a0e19136f1d3743eb2c6b5b23d3af6de2b79db8317147c300f61a3335788e + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:5.52.0": version: 5.52.0 resolution: "@typescript-eslint/type-utils@npm:5.52.0" @@ -18690,6 +19727,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/type-utils@npm:8.14.0" + dependencies: + "@typescript-eslint/typescript-estree": 8.14.0 + "@typescript-eslint/utils": 8.14.0 + debug: ^4.3.4 + ts-api-utils: ^1.3.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 5717b26ddf285be0f1caf7877592c58bff6dfe2ba184bb28cd9e8f1546f68557d5a5d8719cd402cfb5f228666a6c24f0713b06a102b05ebeb00fb82c7c4582ee + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.48.0": version: 5.48.0 resolution: "@typescript-eslint/types@npm:5.48.0" @@ -18718,6 +19770,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/types@npm:8.14.0" + checksum: 032f1adb483a7e306ba31042afbfc219ff8471458f33529e2a1124feb7b6bfad6c7feac5c4ff07320eda5d1019ac4aa634036716f16cf6e25d4fdf0f755764e1 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.48.0": version: 5.48.0 resolution: "@typescript-eslint/typescript-estree@npm:5.48.0" @@ -18791,6 +19850,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.14.0" + dependencies: + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 + debug: ^4.3.4 + fast-glob: ^3.3.2 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^1.3.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 9412bd801fb45dd3a778f030afd871e2c5010bbd7d4bf54cb2f6e2fecaabb7e2d94960e306737b8ad48a9a0a04297e43aee03741977ecceb3a713560f5927e5a + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:5.52.0, @typescript-eslint/utils@npm:^5.52.0": version: 5.52.0 resolution: "@typescript-eslint/utils@npm:5.52.0" @@ -18809,6 +19887,20 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/utils@npm:8.14.0" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@typescript-eslint/scope-manager": 8.14.0 + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/typescript-estree": 8.14.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + checksum: 7c432f2e29f94e6d4a3303bf841f6e3fbbf708c697df4506c9037d0be6379090b0a6d1a077dda43a27850a6bd2bfd5cb523b15450e3025b301ce24ef41b19251 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:5.48.0": version: 5.48.0 resolution: "@typescript-eslint/visitor-keys@npm:5.48.0" @@ -18849,6 +19941,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.14.0" + dependencies: + "@typescript-eslint/types": 8.14.0 + eslint-visitor-keys: ^3.4.3 + checksum: 5f1279bf7cd830ed96a2769b3f27d6102bce630fc4f72c03fee92d06c599ce4e35b9648d0643d7bc9f2613d6587104731c97126bb23805548717bf99854f1094 + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" @@ -19660,6 +20762,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.14.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" + bin: + acorn: bin/acorn + checksum: 8755074ba55fff94e84e81c72f1013c2d9c78e973c31231c8ae505a5f966859baf654bddd75046bffd73ce816b149298977fff5077a3033dedba0ae2aad152d4 + languageName: node + linkType: hard + "acorn@npm:^8.5.0": version: 8.7.1 resolution: "acorn@npm:8.7.1" @@ -20264,6 +21375,20 @@ __metadata: languageName: node linkType: hard +"array-includes@npm:^3.1.8": + version: 3.1.8 + resolution: "array-includes@npm:3.1.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.4 + is-string: ^1.0.7 + checksum: eb39ba5530f64e4d8acab39297c11c1c5be2a4ea188ab2b34aba5fb7224d918f77717a9d57a3e2900caaa8440e59431bdaf5c974d5212ef65d97f132e38e2d91 + languageName: node + linkType: hard + "array-timsort@npm:^1.0.3": version: 1.0.3 resolution: "array-timsort@npm:1.0.3" @@ -20304,6 +21429,20 @@ __metadata: languageName: node linkType: hard +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-shim-unscopables: ^1.0.2 + checksum: 83ce4ad95bae07f136d316f5a7c3a5b911ac3296c3476abe60225bc4a17938bf37541972fcc37dd5adbc99cbb9c928c70bbbfc1c1ce549d41a415144030bb446 + languageName: node + linkType: hard + "array.prototype.findlastindex@npm:^1.2.3": version: 1.2.4 resolution: "array.prototype.findlastindex@npm:1.2.4" @@ -20440,6 +21579,19 @@ __metadata: languageName: node linkType: hard +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.3 + es-errors: ^1.3.0 + es-shim-unscopables: ^1.0.2 + checksum: e4142d6f556bcbb4f393c02e7dbaea9af8f620c040450c2be137c9cbbd1a17f216b9c688c5f2c08fbb038ab83f55993fa6efdd9a05881d84693c7bcb5422127a + languageName: node + linkType: hard + "arraybuffer.prototype.slice@npm:^1.0.2": version: 1.0.2 resolution: "arraybuffer.prototype.slice@npm:1.0.2" @@ -22192,6 +23344,15 @@ __metadata: languageName: node linkType: hard +"castable-video@npm:~1.1.0": + version: 1.1.0 + resolution: "castable-video@npm:1.1.0" + dependencies: + custom-media-element: ~1.3.2 + checksum: 0b7280140e2e855f66ad824c8352d8422695f3a0195757341e8c0b5828df9c0279af70154d7ef514e9d7849814b74625c4df7a652853bd624ecb205a232c295e + languageName: node + linkType: hard + "ccount@npm:^2.0.0": version: 2.0.1 resolution: "ccount@npm:2.0.1" @@ -22652,6 +23813,15 @@ __metadata: languageName: node linkType: hard +"class-variance-authority@npm:^0.7.0": + version: 0.7.0 + resolution: "class-variance-authority@npm:0.7.0" + dependencies: + clsx: 2.0.0 + checksum: e7fd1fab433ef06f52a1b7b241b70b4a185864deef199d3b0a2c3412f1cc179517288264c383f3b971a00d76811625fc8f7ffe709e6170219e88cd7368f08a20 + languageName: node + linkType: hard + "classnames@npm:^2.2.5, classnames@npm:^2.2.6": version: 2.3.2 resolution: "classnames@npm:2.3.2" @@ -22924,6 +24094,13 @@ __metadata: languageName: node linkType: hard +"clsx@npm:2.0.0": + version: 2.0.0 + resolution: "clsx@npm:2.0.0" + checksum: a2cfb2351b254611acf92faa0daf15220f4cd648bdf96ce369d729813b85336993871a4bf6978ddea2b81b5a130478339c20d9d0b5c6fc287e5147f0c059276e + languageName: node + linkType: hard + "clsx@npm:^1.1.1": version: 1.1.1 resolution: "clsx@npm:1.1.1" @@ -24248,6 +25425,13 @@ __metadata: languageName: node linkType: hard +"custom-media-element@npm:~1.3.1, custom-media-element@npm:~1.3.2": + version: 1.3.2 + resolution: "custom-media-element@npm:1.3.2" + checksum: 9ec2ff88c3c5ba7d20b9484c0359b4cfe08ad6804f3116934ffbae2f2e0e04d2a832beb6f0bec56027a969ab366727d217406f750890613c988de6de5330cb4f + languageName: node + linkType: hard + "d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:^3.1.6": version: 3.2.3 resolution: "d3-array@npm:3.2.3" @@ -25539,6 +26723,34 @@ __metadata: languageName: node linkType: hard +"embla-carousel-react@npm:^8.1.8": + version: 8.3.1 + resolution: "embla-carousel-react@npm:8.3.1" + dependencies: + embla-carousel: 8.3.1 + embla-carousel-reactive-utils: 8.3.1 + peerDependencies: + react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + checksum: ddcd84dba2be2c60bf18a0b107fe8f37104677fc35f2e32e37d7f669ad528c0e7f2e7f83ea5680490b2e8db7bcc14b6b1bd590260dc7f74fe6e7295129dc28cb + languageName: node + linkType: hard + +"embla-carousel-reactive-utils@npm:8.3.1": + version: 8.3.1 + resolution: "embla-carousel-reactive-utils@npm:8.3.1" + peerDependencies: + embla-carousel: 8.3.1 + checksum: d188d8b4a602baf42df47bdfa40cdaaf3af2a43283971ddb8137b6779cee32254143c1b0f7f9a180aa236714aaf64e38c5199cd743f775f5dda08cfde41993f7 + languageName: node + linkType: hard + +"embla-carousel@npm:8.3.1": + version: 8.3.1 + resolution: "embla-carousel@npm:8.3.1" + checksum: 73e7da74dcb60ddb9d3d8ced309208af62b1175523293a1a7cb49ea43cb1e681182c08ad3eff15a8a04d90d59566b38d663a5ba1fab690a0427c07b8cb2c9e47 + languageName: node + linkType: hard + "emittery@npm:^0.13.1": version: 0.13.1 resolution: "emittery@npm:0.13.1" @@ -25798,6 +27010,60 @@ __metadata: languageName: node linkType: hard +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.3": + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" + dependencies: + array-buffer-byte-length: ^1.0.1 + arraybuffer.prototype.slice: ^1.0.3 + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.7 + data-view-buffer: ^1.0.1 + data-view-byte-length: ^1.0.1 + data-view-byte-offset: ^1.0.0 + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-set-tostringtag: ^2.0.3 + es-to-primitive: ^1.2.1 + function.prototype.name: ^1.1.6 + get-intrinsic: ^1.2.4 + get-symbol-description: ^1.0.2 + globalthis: ^1.0.3 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.2 + has-proto: ^1.0.3 + has-symbols: ^1.0.3 + hasown: ^2.0.2 + internal-slot: ^1.0.7 + is-array-buffer: ^3.0.4 + is-callable: ^1.2.7 + is-data-view: ^1.0.1 + is-negative-zero: ^2.0.3 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.3 + is-string: ^1.0.7 + is-typed-array: ^1.1.13 + is-weakref: ^1.0.2 + object-inspect: ^1.13.1 + object-keys: ^1.1.1 + object.assign: ^4.1.5 + regexp.prototype.flags: ^1.5.2 + safe-array-concat: ^1.1.2 + safe-regex-test: ^1.0.3 + string.prototype.trim: ^1.2.9 + string.prototype.trimend: ^1.0.8 + string.prototype.trimstart: ^1.0.8 + typed-array-buffer: ^1.0.2 + typed-array-byte-length: ^1.0.1 + typed-array-byte-offset: ^1.0.2 + typed-array-length: ^1.0.6 + unbox-primitive: ^1.0.2 + which-typed-array: ^1.1.15 + checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae + languageName: node + linkType: hard + "es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1": version: 1.19.2 resolution: "es-abstract@npm:1.19.2" @@ -26122,6 +27388,29 @@ __metadata: languageName: node linkType: hard +"es-iterator-helpers@npm:^1.1.0": + version: 1.2.0 + resolution: "es-iterator-helpers@npm:1.2.0" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.3 + es-errors: ^1.3.0 + es-set-tostringtag: ^2.0.3 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.4 + globalthis: ^1.0.4 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.2 + has-proto: ^1.0.3 + has-symbols: ^1.0.3 + internal-slot: ^1.0.7 + iterator.prototype: ^1.1.3 + safe-array-concat: ^1.1.2 + checksum: c5f5ff10d57f956539581aca7a2d8726c5a8a3e49e6285700d74dcd8b64c7a337b9ab5e81b459b079dac745d2fe02e4f6b80a842e3df45d9cfe3f12325fda8c0 + languageName: node + linkType: hard + "es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.4.1": version: 1.4.1 resolution: "es-module-lexer@npm:1.4.1" @@ -26881,6 +28170,34 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-react@npm:^7.35.0": + version: 7.37.2 + resolution: "eslint-plugin-react@npm:7.37.2" + dependencies: + array-includes: ^3.1.8 + array.prototype.findlast: ^1.2.5 + array.prototype.flatmap: ^1.3.2 + array.prototype.tosorted: ^1.1.4 + doctrine: ^2.1.0 + es-iterator-helpers: ^1.1.0 + estraverse: ^5.3.0 + hasown: ^2.0.2 + jsx-ast-utils: ^2.4.1 || ^3.0.0 + minimatch: ^3.1.2 + object.entries: ^1.1.8 + object.fromentries: ^2.0.8 + object.values: ^1.2.0 + prop-types: ^15.8.1 + resolve: ^2.0.0-next.5 + semver: ^6.3.1 + string.prototype.matchall: ^4.0.11 + string.prototype.repeat: ^1.0.0 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 7f5203afee7fbe3702b27fdd2b9a3c0ccbbb47d0672f58311b9d8a08dea819c9da4a87c15e8bd508f2562f327a9d29ee8bd9cd189bf758d8dc903de5648b0bfa + languageName: node + linkType: hard + "eslint-plugin-turbo@npm:0.0.7": version: 0.0.7 resolution: "eslint-plugin-turbo@npm:0.0.7" @@ -26951,6 +28268,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^8.2.0": + version: 8.2.0 + resolution: "eslint-scope@npm:8.2.0" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: 750eff4672ca2bf274ec0d1bbeae08aadd53c1907d5c6aff5564d8e047a5f49afa8ae6eee333cab637fd3ebcab2141659d8f2f040f6fdc982b0f61f8bf03136f + languageName: node + linkType: hard + "eslint-utils@npm:^3.0.0": version: 3.0.0 resolution: "eslint-utils@npm:3.0.0" @@ -26983,6 +28310,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 779c604672b570bb4da84cef32f6abb085ac78379779c1122d7879eade8bb38ae715645324597cf23232d03cef06032c9844d25c73625bc282a5bfd30247e5b5 + languageName: node + linkType: hard + "eslint@npm:^8": version: 8.57.0 resolution: "eslint@npm:8.57.0" @@ -27080,6 +28414,56 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^9.9.0": + version: 9.14.0 + resolution: "eslint@npm:9.14.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.12.1 + "@eslint/config-array": ^0.18.0 + "@eslint/core": ^0.7.0 + "@eslint/eslintrc": ^3.1.0 + "@eslint/js": 9.14.0 + "@eslint/plugin-kit": ^0.2.0 + "@humanfs/node": ^0.16.6 + "@humanwhocodes/module-importer": ^1.0.1 + "@humanwhocodes/retry": ^0.4.0 + "@types/estree": ^1.0.6 + "@types/json-schema": ^7.0.15 + ajv: ^6.12.4 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + escape-string-regexp: ^4.0.0 + eslint-scope: ^8.2.0 + eslint-visitor-keys: ^4.2.0 + espree: ^10.3.0 + esquery: ^1.5.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^8.0.0 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + ignore: ^5.2.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + json-stable-stringify-without-jsonify: ^1.0.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.3 + text-table: ^0.2.0 + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 1b54112da245f4175fbcf31ea5f71da38dda1bb8f5d645f3b2420035a4310949fda57af14ca7f7992e36374da8c06b94bf20ec8bda64a09409d818aefd0bf09c + languageName: node + linkType: hard + "esm@npm:^3.2.25": version: 3.2.25 resolution: "esm@npm:3.2.25" @@ -27087,6 +28471,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" + dependencies: + acorn: ^8.14.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^4.2.0 + checksum: 63e8030ff5a98cea7f8b3e3a1487c998665e28d674af08b9b3100ed991670eb3cbb0e308c4548c79e03762753838fbe530c783f17309450d6b47a889fee72bef + languageName: node + linkType: hard + "espree@npm:^9.4.0": version: 9.4.1 resolution: "espree@npm:9.4.1" @@ -27137,6 +28532,15 @@ __metadata: languageName: node linkType: hard +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: ^5.1.0 + checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 + languageName: node + linkType: hard + "esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" @@ -27912,6 +29316,15 @@ __metadata: languageName: node linkType: hard +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: ^4.0.0 + checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f + languageName: node + linkType: hard + "file-system-cache@npm:2.3.0": version: 2.3.0 resolution: "file-system-cache@npm:2.3.0" @@ -28108,6 +29521,16 @@ __metadata: languageName: node linkType: hard +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: ^3.2.9 + keyv: ^4.5.4 + checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6 + languageName: node + linkType: hard + "flatted@npm:^3.1.0": version: 3.2.5 resolution: "flatted@npm:3.2.5" @@ -28115,7 +29538,7 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.3.1": +"flatted@npm:^3.2.9, flatted@npm:^3.3.1": version: 3.3.1 resolution: "flatted@npm:3.3.1" checksum: 85ae7181650bb728c221e7644cbc9f4bf28bc556f2fc89bb21266962bdf0ce1029cc7acc44bb646cd469d9baac7c317f64e841c4c4c00516afa97320cdac7f94 @@ -28466,6 +29889,26 @@ __metadata: languageName: node linkType: hard +"framer-motion@npm:^11.0.25": + version: 11.11.11 + resolution: "framer-motion@npm:11.11.11" + dependencies: + tslib: ^2.4.0 + peerDependencies: + "@emotion/is-prop-valid": "*" + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + "@emotion/is-prop-valid": + optional: true + react: + optional: true + react-dom: + optional: true + checksum: 12a358dafdd5239ea6eaad87fa7783dad7c009b639b6e087574f3515dfa4c4bd02ed4fcde61522f6db3a311e353333455d0b0e9d413a2662265330055672eeb6 + languageName: node + linkType: hard + "fresh@npm:0.5.2, fresh@npm:^0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" @@ -29259,6 +30702,20 @@ __metadata: languageName: node linkType: hard +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac + languageName: node + linkType: hard + +"globals@npm:^15.9.0": + version: 15.12.0 + resolution: "globals@npm:15.12.0" + checksum: 2a134cc876dd73192489561e3c85be348dc1408fef043ebef605cdc437f64cd2fc922268db02e3348683d05d06bed10fb1c3653b3d4399a204a7ecd59e742a07 + languageName: node + linkType: hard + "globalthis@npm:^1.0.3": version: 1.0.3 resolution: "globalthis@npm:1.0.3" @@ -29268,6 +30725,16 @@ __metadata: languageName: node linkType: hard +"globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: ^1.2.1 + gopd: ^1.0.1 + checksum: 39ad667ad9f01476474633a1834a70842041f70a55571e8dcef5fb957980a92da5022db5430fca8aecc5d47704ae30618c0bc877a579c70710c904e9ef06108a + languageName: node + linkType: hard + "globalyzer@npm:0.1.0": version: 0.1.0 resolution: "globalyzer@npm:0.1.0" @@ -30166,6 +31633,13 @@ __metadata: languageName: node linkType: hard +"hls.js@npm:~1.5.11": + version: 1.5.17 + resolution: "hls.js@npm:1.5.17" + checksum: 8b50865f3f96664c55a3dcc4a843abdcdfa7e2fddb57afbed843f5aa0c4ff02a0b275ce2b1926d7c8cd351d8da3df5cc908b02c09449a471d0e80a850b1cde83 + languageName: node + linkType: hard + "hmac-drbg@npm:^1.0.1": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -30787,6 +32261,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^5.3.1": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be + languageName: node + linkType: hard + "image-q@npm:^4.0.0": version: 4.0.0 resolution: "image-q@npm:4.0.0" @@ -30881,6 +32362,18 @@ __metadata: languageName: node linkType: hard +"import-in-the-middle@npm:^1.11.2, import-in-the-middle@npm:^1.8.1": + version: 1.11.2 + resolution: "import-in-the-middle@npm:1.11.2" + dependencies: + acorn: ^8.8.2 + acorn-import-attributes: ^1.9.5 + cjs-module-lexer: ^1.2.2 + module-details-from-path: ^1.0.3 + checksum: 06fb73100a918e00778779713119236cc8d3d4656aae9076a18159cfcd28eb0cc26e0a5040d11da309c5f8f8915c143b8d74e73c0734d3f5549b1813d1008bb9 + languageName: node + linkType: hard + "import-lazy@npm:^4.0.0, import-lazy@npm:~4.0.0": version: 4.0.0 resolution: "import-lazy@npm:4.0.0" @@ -32434,6 +33927,19 @@ __metadata: languageName: node linkType: hard +"iterator.prototype@npm:^1.1.3": + version: 1.1.3 + resolution: "iterator.prototype@npm:1.1.3" + dependencies: + define-properties: ^1.2.1 + get-intrinsic: ^1.2.1 + has-symbols: ^1.0.3 + reflect.getprototypeof: ^1.0.4 + set-function-name: ^2.0.1 + checksum: 7d2a1f8bcbba7b76f72e956faaf7b25405f4de54430c9d099992e6fb9d571717c3044604e8cdfb8e624cb881337d648030ee8b1541d544af8b338835e3f47ebe + languageName: node + linkType: hard + "jackspeak@npm:^2.0.3, jackspeak@npm:^2.3.5": version: 2.3.6 resolution: "jackspeak@npm:2.3.6" @@ -33677,7 +35183,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.0.0, keyv@npm:^4.5.3": +"keyv@npm:^4.0.0, keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -34732,12 +36238,12 @@ __metadata: languageName: node linkType: hard -"lucide-react@npm:^0.171.0": - version: 0.171.0 - resolution: "lucide-react@npm:0.171.0" +"lucide-react@npm:^0.364.0": + version: 0.364.0 + resolution: "lucide-react@npm:0.364.0" peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 - checksum: 768ffe368c52a518ee339203d86ff4479989ab4d79c0716f721900c4bb7392ef6ff7a14807f6a685abd74d27f4c1778170bff77a0ab4c3e06c17944b557d8300 + checksum: 954f6274df46ffa172130d9e60eb630a377435c7dbf0ddb5ceebf284602dde3b99755dcd5c0757e697ee734a32c808a3cd2c25ad88fec1d8f627a2317f00e3e6 languageName: node linkType: hard @@ -35288,6 +36794,20 @@ __metadata: languageName: node linkType: hard +"media-chrome@npm:^4.1.0, media-chrome@npm:~4.2.1": + version: 4.2.3 + resolution: "media-chrome@npm:4.2.3" + checksum: 0ce716e2151c6c8c2b4d3152e5dd766f8ba0f9d62d0d2f3c1d46d742f65c37286a812cab5ae0e45da9ea60b89e349c411f8fd7ea8259787646b1021f0bc1afb2 + languageName: node + linkType: hard + +"media-tracks@npm:~0.3.2": + version: 0.3.3 + resolution: "media-tracks@npm:0.3.3" + checksum: 4795af3f171d7ad3a68d1ac1c1e8166a735244fe57d3fc0ec53b1c7410799e524756fc0bfb389632aebb148436b03baade36ca34a3f5377776c3968f6d2cc580 + languageName: node + linkType: hard + "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -36660,6 +38180,13 @@ __metadata: languageName: node linkType: hard +"mux-embed@npm:^5.3.1": + version: 5.4.1 + resolution: "mux-embed@npm:5.4.1" + checksum: b414fa30d810ba71db9fdd780816a4cc940ddb7d348678931b8db074093d9314c61f3206b56d08b1759efe9c6ac3fdf1ed2532e8241100f422a674a4dcc0f748 + languageName: node + linkType: hard + "mysql2@npm:3.9.1": version: 3.9.1 resolution: "mysql2@npm:3.9.1" @@ -37060,7 +38587,7 @@ __metadata: languageName: node linkType: hard -"next@npm:^13.5.4, next@npm:^13.5.6": +"next@npm:^13.5.6": version: 13.5.7 resolution: "next@npm:13.5.7" dependencies: @@ -37208,6 +38735,15 @@ __metadata: languageName: node linkType: hard +"node-abi@npm:^3.61.0": + version: 3.71.0 + resolution: "node-abi@npm:3.71.0" + dependencies: + semver: ^7.3.5 + checksum: d7f34c294c0351b636688a792e41493840cc195f64a76ecdc35eb0c1682d86e633a932b03e924395b0d2f52ca1db5046898839d57bcfb5819226e64e922b0617 + languageName: node + linkType: hard + "node-abort-controller@npm:^3.0.1": version: 3.0.1 resolution: "node-abort-controller@npm:3.0.1" @@ -37977,6 +39513,17 @@ __metadata: languageName: node linkType: hard +"object.entries@npm:^1.1.8": + version: 1.1.8 + resolution: "object.entries@npm:1.1.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: 5314877cb637ef3437a30bba61d9bacdb3ce74bf73ac101518be0633c37840c8cc67407edb341f766e8093b3d7516d5c3358f25adfee4a2c697c0ec4c8491907 + languageName: node + linkType: hard + "object.fromentries@npm:^2.0.5": version: 2.0.5 resolution: "object.fromentries@npm:2.0.5" @@ -38010,6 +39557,18 @@ __metadata: languageName: node linkType: hard +"object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + checksum: 29b2207a2db2782d7ced83f93b3ff5d425f901945f3665ffda1821e30a7253cd1fd6b891a64279976098137ddfa883d748787a6fea53ecdb51f8df8b8cec0ae1 + languageName: node + linkType: hard + "object.groupby@npm:^1.0.1": version: 1.0.2 resolution: "object.groupby@npm:1.0.2" @@ -38086,6 +39645,17 @@ __metadata: languageName: node linkType: hard +"object.values@npm:^1.2.0": + version: 1.2.0 + resolution: "object.values@npm:1.2.0" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: 51fef456c2a544275cb1766897f34ded968b22adfc13ba13b5e4815fdaf4304a90d42a3aee114b1f1ede048a4890381d47a5594d84296f2767c6a0364b9da8fa + languageName: node + linkType: hard + "objectorarray@npm:^1.0.5": version: 1.0.5 resolution: "objectorarray@npm:1.0.5" @@ -39578,6 +41148,15 @@ __metadata: languageName: node linkType: hard +"player.style@npm:^0.0.8": + version: 0.0.8 + resolution: "player.style@npm:0.0.8" + dependencies: + media-chrome: ^4.1.0 + checksum: 009f59bc8e7f84e82adcacec4df3ea11094d7097413a5755bb6a586150c9aa6114f7d7840f215b8b98c20f3eabbf40b7eb1d20731384253fea3122bd62b9512e + languageName: node + linkType: hard + "playwright-core@npm:1.45.3": version: 1.45.3 resolution: "playwright-core@npm:1.45.3" @@ -40169,6 +41748,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:3.3.3": + version: 3.3.3 + resolution: "prettier@npm:3.3.3" + bin: + prettier: bin/prettier.cjs + checksum: bc8604354805acfdde6106852d14b045bb20827ad76a5ffc2455b71a8257f94de93f17f14e463fe844808d2ccc87248364a5691488a3304f1031326e62d9276e + languageName: node + linkType: hard + "prettier@npm:^2.7.1": version: 2.8.7 resolution: "prettier@npm:2.8.7" @@ -41093,20 +42681,21 @@ __metadata: languageName: node linkType: hard -"react-datocms@npm:^3.1.0": - version: 3.1.4 - resolution: "react-datocms@npm:3.1.4" +"react-datocms@npm:^5.0.3": + version: 5.0.3 + resolution: "react-datocms@npm:5.0.3" dependencies: + "@mux/mux-player-react": "*" datocms-listen: ^0.1.9 datocms-structured-text-generic-html-renderer: ^2.0.1 datocms-structured-text-utils: ^2.0.1 - react-intersection-observer: ^8.33.1 + react-intersection-observer: ^9.4.3 react-string-replace: ^1.1.0 universal-base64: ^2.1.0 use-deep-compare-effect: ^1.6.1 peerDependencies: react: ">= 16.12.0" - checksum: 54aba12aef4937175c2011548a8a576c96c8d8a596e84d191826910624c1d596e76a49782689dc236388a10803b02e700ac820cb7500cca7fd147a81f6c544c3 + checksum: 22c20152afb54424acfe967a2c8c525cd9f132a33374f2aba0231f16ea64dade389b096e2dac8de9ffded612bc32e9891d725609ee947639fe1cef907cb143f5 languageName: node linkType: hard @@ -41367,12 +42956,16 @@ __metadata: languageName: node linkType: hard -"react-intersection-observer@npm:^8.33.1": - version: 8.34.0 - resolution: "react-intersection-observer@npm:8.34.0" +"react-intersection-observer@npm:^9.4.3": + version: 9.13.1 + resolution: "react-intersection-observer@npm:9.13.1" peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0|| ^18.0.0 - checksum: 7713fecfd1512c7f5a60f9f0bf15403b8f8bbd4110bcafaeaea6de36a0e0eb60368c3638f99e9c97b75ad8fc787ea48c241dcb5c694f821d7f2976f709082cc5 + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + react-dom: + optional: true + checksum: 92b3e7d9293365635bf5ede89b912a670030c6244879dce36fa9437e6749c637151087fbcaa72cc160b2fa7045bd5ac861a8535e0a2b7b8f230f11f2e0391005 languageName: node linkType: hard @@ -41482,6 +43075,16 @@ __metadata: languageName: node linkType: hard +"react-parallax-tilt@npm:^1.7.226": + version: 1.7.253 + resolution: "react-parallax-tilt@npm:1.7.253" + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: 7b60de0a325cafcaeb708702c98f028ac3c291dd02d1447a1710383f26117595ca5d0575a9b2231e9aa5571e81510db7e0b81d1e100842449241802e826f7551 + languageName: node + linkType: hard + "react-phone-input-2@npm:^2.15.1": version: 2.15.1 resolution: "react-phone-input-2@npm:2.15.1" @@ -41604,6 +43207,22 @@ __metadata: languageName: node linkType: hard +"react-remove-scroll-bar@npm:^2.3.6": + version: 2.3.6 + resolution: "react-remove-scroll-bar@npm:2.3.6" + dependencies: + react-style-singleton: ^2.2.1 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: e793fe110e2ea60d5724d0b60f09de1f6cd1b080df00df9e68bb9a1b985895830e703194647059fdc22402a67a89b7673a5260773b89bcd98031fd99bc91aefa + languageName: node + linkType: hard + "react-remove-scroll@npm:2.5.4": version: 2.5.4 resolution: "react-remove-scroll@npm:2.5.4" @@ -41642,6 +43261,25 @@ __metadata: languageName: node linkType: hard +"react-remove-scroll@npm:2.6.0": + version: 2.6.0 + resolution: "react-remove-scroll@npm:2.6.0" + dependencies: + react-remove-scroll-bar: ^2.3.6 + react-style-singleton: ^2.2.1 + tslib: ^2.1.0 + use-callback-ref: ^1.3.0 + use-sidecar: ^1.1.2 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: e7ad2383ce20d63cf28f3ed14e63f684e139301fc4a5c1573da330d4465b733e6084c33b2bfcaee448c9b1df0e37993a15d6cba8a1dd80fe631f803e48e9f798 + languageName: node + linkType: hard + "react-remove-scroll@npm:^2.4.0": version: 2.4.4 resolution: "react-remove-scroll@npm:2.4.4" @@ -41898,6 +43536,18 @@ __metadata: languageName: node linkType: hard +"react-twitter-embed@npm:^4.0.4": + version: 4.0.4 + resolution: "react-twitter-embed@npm:4.0.4" + dependencies: + scriptjs: ^2.5.9 + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: cdb3c5bd04c4da0efa767476be47c0a3865fb6335f2a1b9e242170167b51615c38164223278cef60c77143c4bac27ba582cbea054d0af3f138104fa5ec537c4c + languageName: node + linkType: hard + "react-universal-interface@npm:^0.6.2": version: 0.6.2 resolution: "react-universal-interface@npm:0.6.2" @@ -43785,6 +45435,13 @@ __metadata: languageName: node linkType: hard +"scriptjs@npm:^2.5.9": + version: 2.5.9 + resolution: "scriptjs@npm:2.5.9" + checksum: fc84cb6b60b6fb9aa6f1b3bc59fc94b233bd5241ed3a04233579014382b5eb60640269c87d8657902acc09f9b785ee33230c218627cea00e653564bda8f5acb6 + languageName: node + linkType: hard + "scuid@npm:^1.1.0": version: 1.1.0 resolution: "scuid@npm:1.1.0" @@ -43891,6 +45548,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.6.0": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + languageName: node + linkType: hard + "semver@npm:~2.3.1": version: 2.3.2 resolution: "semver@npm:2.3.2" @@ -44062,6 +45728,18 @@ __metadata: languageName: node linkType: hard +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: ^1.1.4 + es-errors: ^1.3.0 + functions-have-names: ^1.2.3 + has-property-descriptors: ^1.0.2 + checksum: d6229a71527fd0404399fc6227e0ff0652800362510822a291925c9d7b48a1ca1a468b11b281471c34cd5a2da0db4f5d7ff315a61d26655e77f6e971e6d0c80f + languageName: node + linkType: hard + "set-harmonic-interval@npm:^1.0.1": version: 1.0.1 resolution: "set-harmonic-interval@npm:1.0.1" @@ -45164,6 +46842,26 @@ __metadata: languageName: node linkType: hard +"string.prototype.matchall@npm:^4.0.11": + version: 4.0.11 + resolution: "string.prototype.matchall@npm:4.0.11" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.4 + gopd: ^1.0.1 + has-symbols: ^1.0.3 + internal-slot: ^1.0.7 + regexp.prototype.flags: ^1.5.2 + set-function-name: ^2.0.2 + side-channel: ^1.0.6 + checksum: 6ac6566ed065c0c8489c91156078ca077db8ff64d683fda97ae652d00c52dfa5f39aaab0a710d8243031a857fd2c7c511e38b45524796764d25472d10d7075ae + languageName: node + linkType: hard + "string.prototype.matchall@npm:^4.0.7": version: 4.0.7 resolution: "string.prototype.matchall@npm:4.0.7" @@ -45207,6 +46905,16 @@ __metadata: languageName: node linkType: hard +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: ^1.1.3 + es-abstract: ^1.17.5 + checksum: 95dfc514ed7f328d80a066dabbfbbb1615c3e51490351085409db2eb7cbfed7ea29fdadaf277647fbf9f4a1e10e6dd9e95e78c0fd2c4e6bb6723ea6e59401004 + languageName: node + linkType: hard + "string.prototype.trim@npm:^1.2.8": version: 1.2.8 resolution: "string.prototype.trim@npm:1.2.8" @@ -45305,6 +47013,17 @@ __metadata: languageName: node linkType: hard +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: df1007a7f580a49d692375d996521dc14fd103acda7f3034b3c558a60b82beeed3a64fa91e494e164581793a8ab0ae2f59578a49896a7af6583c1f20472bce96 + languageName: node + linkType: hard + "string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -46739,6 +48458,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^1.3.0": + version: 1.4.0 + resolution: "ts-api-utils@npm:1.4.0" + peerDependencies: + typescript: ">=4.2.0" + checksum: 477601317dc8a6d961788663ee76984005ed20c70689bd6f807eed2cad258d3731edcc4162d438ce04782ca62a05373ba51e484180fc2a081d8dab2bf693a5af + languageName: node + linkType: hard + "ts-dedent@npm:^2.0.0, ts-dedent@npm:^2.2.0": version: 2.2.0 resolution: "ts-dedent@npm:2.2.0" @@ -47519,6 +49247,20 @@ __metadata: languageName: node linkType: hard +"typed-array-length@npm:^1.0.6": + version: 1.0.6 + resolution: "typed-array-length@npm:1.0.6" + dependencies: + call-bind: ^1.0.7 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-proto: ^1.0.3 + is-typed-array: ^1.1.13 + possible-typed-array-names: ^1.0.0 + checksum: f0315e5b8f0168c29d390ff410ad13e4d511c78e6006df4a104576844812ee447fcc32daab1f3a76c9ef4f64eff808e134528b5b2439de335586b392e9750e5c + languageName: node + linkType: hard + "typedarray-to-buffer@npm:^3.1.5": version: 3.1.5 resolution: "typedarray-to-buffer@npm:3.1.5" @@ -47622,6 +49364,20 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.2.0": + version: 8.14.0 + resolution: "typescript-eslint@npm:8.14.0" + dependencies: + "@typescript-eslint/eslint-plugin": 8.14.0 + "@typescript-eslint/parser": 8.14.0 + "@typescript-eslint/utils": 8.14.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: b9192c567126d0800b4e8a9b106360d14b0ecd562203e636e594c5629e8a57ced7a342b3a793a7862ab7f85700e737584c686d0021a10db5bb81dba61be81cd7 + languageName: node + linkType: hard + "typescript@npm:5.3.3": version: 5.3.3 resolution: "typescript@npm:5.3.3" @@ -47642,6 +49398,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:^5.0.0": + version: 5.6.3 + resolution: "typescript@npm:5.6.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: ba302f8822777ebefb28b554105f3e074466b671e7444ec6b75dadc008a62f46f373d9e57ceced1c433756d06c8b7dc569a7eefdf3a9573122a49205ff99021a + languageName: node + linkType: hard + "typescript@npm:^5.2.2, typescript@npm:^5.3.3": version: 5.4.2 resolution: "typescript@npm:5.4.2" @@ -47672,6 +49438,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@^5.0.0#~builtin": + version: 5.6.3 + resolution: "typescript@patch:typescript@npm%3A5.6.3#~builtin::version=5.6.3&hash=1f5320" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: ade87bce2363ee963eed0e4ca8a312ea02c81873ebd53609bc3f6dc0a57f6e61ad7e3fb8cbb7f7ab8b5081cbee801b023f7c4823ee70b1c447eae050e6c7622b + languageName: node + linkType: hard + "typescript@patch:typescript@^5.2.2#~builtin, typescript@patch:typescript@^5.3.3#~builtin": version: 5.4.2 resolution: "typescript@patch:typescript@npm%3A5.4.2#~builtin::version=5.4.2&hash=1f5320"