diff --git a/.gitignore b/.gitignore index f8b0d9f6cdb0..c5bb33e003d1 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,4 @@ storybook-static .eslintcache .nyc_output test-results/ - +dump.rdb diff --git a/package.json b/package.json index 6c53c43d932c..640ba3bb5c96 100644 --- a/package.json +++ b/package.json @@ -46,10 +46,9 @@ "@ptc-org/nestjs-query-typeorm": "4.2.1-alpha.2", "@react-email/components": "0.0.12", "@react-email/render": "0.0.10", - "@sentry/node": "^7.99.0", - "@sentry/profiling-node": "^1.3.4", - "@sentry/react": "^7.88.0", - "@sentry/tracing": "^7.99.0", + "@sentry/node": "^8", + "@sentry/profiling-node": "^8", + "@sentry/react": "^8", "@sniptt/guards": "^0.2.0", "@stoplight/elements": "^8.0.5", "@swc/jest": "^0.2.29", diff --git a/packages/twenty-front/src/modules/error-handler/components/ExceptionHandlerProvider.tsx b/packages/twenty-front/src/modules/error-handler/components/ExceptionHandlerProvider.tsx index 16cec36df180..5ca6eb72cd44 100644 --- a/packages/twenty-front/src/modules/error-handler/components/ExceptionHandlerProvider.tsx +++ b/packages/twenty-front/src/modules/error-handler/components/ExceptionHandlerProvider.tsx @@ -1,4 +1,4 @@ -import { SentryInitEffect } from '@/error-handler/components/SentryInitiEffect'; +import { SentryInitEffect } from '@/error-handler/components/SentryInitEffect'; export const ExceptionHandlerProvider: React.FC = ({ children, diff --git a/packages/twenty-front/src/modules/error-handler/components/SentryInitiEffect.tsx b/packages/twenty-front/src/modules/error-handler/components/SentryInitEffect.tsx similarity index 89% rename from packages/twenty-front/src/modules/error-handler/components/SentryInitiEffect.tsx rename to packages/twenty-front/src/modules/error-handler/components/SentryInitEffect.tsx index 16b1ed014e48..f97336d14146 100644 --- a/packages/twenty-front/src/modules/error-handler/components/SentryInitiEffect.tsx +++ b/packages/twenty-front/src/modules/error-handler/components/SentryInitEffect.tsx @@ -1,6 +1,6 @@ -import { useEffect, useState } from 'react'; import * as Sentry from '@sentry/react'; import { isNonEmptyString } from '@sniptt/guards'; +import { useEffect, useState } from 'react'; import { useRecoilValue } from 'recoil'; import { currentUserState } from '@/auth/states/currentUserState'; @@ -26,14 +26,10 @@ export const SentryInitEffect = () => { release: sentryConfig?.release ?? undefined, dsn: sentryConfig?.dsn, integrations: [ - new Sentry.BrowserTracing({ - tracePropagationTargets: [ - 'localhost:3001', - REACT_APP_SERVER_BASE_URL, - ], - }), - new Sentry.Replay(), + Sentry.browserTracingIntegration({}), + Sentry.replayIntegration(), ], + tracePropagationTargets: ['localhost:3001', REACT_APP_SERVER_BASE_URL], tracesSampleRate: 1.0, replaysSessionSampleRate: 0.1, replaysOnErrorSampleRate: 1.0, diff --git a/packages/twenty-server/src/engine/core-modules/cron/sentry-cron-monitor.decorator.ts b/packages/twenty-server/src/engine/core-modules/cron/sentry-cron-monitor.decorator.ts new file mode 100644 index 000000000000..99d1091f949e --- /dev/null +++ b/packages/twenty-server/src/engine/core-modules/cron/sentry-cron-monitor.decorator.ts @@ -0,0 +1,51 @@ +import * as Sentry from '@sentry/node'; + +export function SentryCronMonitor(monitorSlug: string, schedule: string) { + return function ( + target: any, + propertyKey: string, + descriptor: PropertyDescriptor, + ) { + if (!Sentry.isInitialized()) { + return descriptor; + } + + const originalMethod = descriptor.value; + + descriptor.value = async function (...args: any[]) { + try { + Sentry.captureCheckIn( + { + monitorSlug, + status: 'in_progress', + }, + { + schedule: { + type: 'crontab', + value: schedule, + }, + checkinMargin: 1, + maxRuntime: 1, + timezone: 'UTC', + }, + ); + const result = await originalMethod.apply(this, args); + + Sentry.captureCheckIn({ + monitorSlug, + status: 'ok', + }); + + return result; + } catch (error) { + Sentry.captureCheckIn({ + monitorSlug, + status: 'error', + }); + throw error; + } + }; + + return descriptor; + }; +} diff --git a/packages/twenty-server/src/engine/core-modules/exception-handler/drivers/sentry.driver.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/drivers/sentry.driver.ts index 6d252c3615f8..c32701e5b10c 100644 --- a/packages/twenty-server/src/engine/core-modules/exception-handler/drivers/sentry.driver.ts +++ b/packages/twenty-server/src/engine/core-modules/exception-handler/drivers/sentry.driver.ts @@ -1,13 +1,14 @@ import * as Sentry from '@sentry/node'; -import { ProfilingIntegration } from '@sentry/profiling-node'; +import { nodeProfilingIntegration } from '@sentry/profiling-node'; -import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface'; import { ExceptionHandlerOptions } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface'; +import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface'; import { ExceptionHandlerDriverInterface, ExceptionHandlerSentryDriverFactoryOptions, } from 'src/engine/core-modules/exception-handler/interfaces'; +import { WorkspaceCacheKeys } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; export class ExceptionHandlerSentryDriver implements ExceptionHandlerDriverInterface @@ -18,11 +19,17 @@ export class ExceptionHandlerSentryDriver release: options.release, dsn: options.dsn, integrations: [ - new Sentry.Integrations.Http({ tracing: true }), - new Sentry.Integrations.Express({ app: options.serverInstance }), - new Sentry.Integrations.GraphQL(), - new Sentry.Integrations.Postgres(), - new ProfilingIntegration(), + // TODO: Redis integration doesn't seem to work - investigate why + Sentry.redisIntegration({ + cachePrefixes: Object.values(WorkspaceCacheKeys).map( + (key) => `engine:${key}:`, + ), + }), + Sentry.httpIntegration(), + Sentry.expressIntegration(), + Sentry.graphqlIntegration(), + Sentry.postgresIntegration(), + nodeProfilingIntegration(), ], tracesSampleRate: 0.1, profilesSampleRate: 0.3, diff --git a/packages/twenty-server/src/engine/twenty-orm/storage/cache-manager.storage.ts b/packages/twenty-server/src/engine/twenty-orm/storage/cache-manager.storage.ts index 83c30080b39b..d73b61a36f62 100644 --- a/packages/twenty-server/src/engine/twenty-orm/storage/cache-manager.storage.ts +++ b/packages/twenty-server/src/engine/twenty-orm/storage/cache-manager.storage.ts @@ -13,8 +13,6 @@ export class CacheManager { const [workspaceId] = cacheKey.split('-'); if (this.cache.has(cacheKey)) { - console.log('Cache hit for key:', cacheKey); - return this.cache.get(cacheKey)!; } @@ -25,7 +23,6 @@ export class CacheManager { } } - console.log('Cache miss for key:', cacheKey); const value = await factory(); if (!value) { diff --git a/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts b/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts index 455a7109fe9f..9d3da728566f 100644 --- a/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts +++ b/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts @@ -7,7 +7,7 @@ import { CacheStorageService } from 'src/engine/core-modules/cache-storage/servi import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum'; import { ObjectMetadataMap } from 'src/engine/metadata-modules/utils/generate-object-metadata-map.util'; -enum WorkspaceCacheKeys { +export enum WorkspaceCacheKeys { GraphQLTypeDefs = 'graphql:type-defs', GraphQLUsedScalarNames = 'graphql:used-scalar-names', GraphQLOperations = 'graphql:operations', diff --git a/packages/twenty-server/src/main.ts b/packages/twenty-server/src/main.ts index af97bdb34497..55cf4d2a6263 100644 --- a/packages/twenty-server/src/main.ts +++ b/packages/twenty-server/src/main.ts @@ -3,13 +3,12 @@ import { NestFactory } from '@nestjs/core'; import { NestExpressApplication } from '@nestjs/platform-express'; import * as Sentry from '@sentry/node'; -import '@sentry/tracing'; import bytes from 'bytes'; import { useContainer } from 'class-validator'; import { graphqlUploadExpress } from 'graphql-upload'; -import { ApplyCorsToExceptions } from 'src/utils/apply-cors-to-exceptions'; import { LoggerService } from 'src/engine/core-modules/logger/logger.service'; +import { ApplyCorsToExceptions } from 'src/utils/apply-cors-to-exceptions'; import { AppModule } from './app.module'; @@ -36,8 +35,7 @@ const bootstrap = async () => { app.useLogger(logger); if (Sentry.isInitialized()) { - app.use(Sentry.Handlers.requestHandler()); - app.use(Sentry.Handlers.tracingHandler()); + Sentry.setupExpressErrorHandler(app); } app.useGlobalFilters(new ApplyCorsToExceptions()); diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command.ts index 3fd865ad6e44..d49131893a42 100644 --- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command.ts +++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command.ts @@ -3,9 +3,10 @@ import { Command, CommandRunner } from 'nest-commander'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; -import { CalendarEventListFetchCronJob } from 'src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job'; - -const CALENDAR_EVENTS_IMPORT_CRON_PATTERN = '*/5 * * * *'; +import { + CALENDAR_EVENTS_IMPORT_CRON_PATTERN, + CalendarEventListFetchCronJob, +} from 'src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job'; @Command({ name: 'cron:calendar:calendar-event-list-fetch', diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command.ts index bc903f877ee1..133077ce6f96 100644 --- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command.ts +++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command.ts @@ -3,9 +3,10 @@ import { Command, CommandRunner } from 'nest-commander'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; -import { CalendarOngoingStaleCronJob } from 'src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job'; - -const CALENDAR_ONGOING_STALE_CRON_PATTERN = '0 * * * *'; +import { + CALENDAR_ONGOING_STALE_CRON_PATTERN, + CalendarOngoingStaleCronJob, +} from 'src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job'; @Command({ name: 'cron:calendar:ongoing-stale', diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job.ts index 89836b514114..d59e9db71dc0 100644 --- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job.ts +++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-event-list-fetch.cron.job.ts @@ -2,16 +2,17 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Any, Repository } from 'typeorm'; -import { - Workspace, - WorkspaceActivationStatus, -} from 'src/engine/core-modules/workspace/workspace.entity'; +import { SentryCronMonitor } from 'src/engine/core-modules/cron/sentry-cron-monitor.decorator'; import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; +import { + Workspace, + WorkspaceActivationStatus, +} from 'src/engine/core-modules/workspace/workspace.entity'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { CalendarEventListFetchJob, @@ -19,6 +20,8 @@ import { } from 'src/modules/calendar/calendar-event-import-manager/jobs/calendar-event-list-fetch.job'; import { CalendarChannelSyncStage } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity'; +export const CALENDAR_EVENTS_IMPORT_CRON_PATTERN = '*/5 * * * *'; + @Processor({ queueName: MessageQueue.cronQueue, }) @@ -33,6 +36,10 @@ export class CalendarEventListFetchCronJob { ) {} @Process(CalendarEventListFetchCronJob.name) + @SentryCronMonitor( + CalendarEventListFetchCronJob.name, + CALENDAR_EVENTS_IMPORT_CRON_PATTERN, + ) async handle(): Promise { console.time('CalendarEventListFetchCronJob time'); diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job.ts index d163c782dad6..7987a8f1c718 100644 --- a/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job.ts +++ b/packages/twenty-server/src/modules/calendar/calendar-event-import-manager/crons/jobs/calendar-ongoing-stale.cron.job.ts @@ -2,21 +2,24 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { - Workspace, - WorkspaceActivationStatus, -} from 'src/engine/core-modules/workspace/workspace.entity'; +import { SentryCronMonitor } from 'src/engine/core-modules/cron/sentry-cron-monitor.decorator'; import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; +import { + Workspace, + WorkspaceActivationStatus, +} from 'src/engine/core-modules/workspace/workspace.entity'; import { CalendarOngoingStaleJob, CalendarOngoingStaleJobData, } from 'src/modules/calendar/calendar-event-import-manager/jobs/calendar-ongoing-stale.job'; +export const CALENDAR_ONGOING_STALE_CRON_PATTERN = '0 * * * *'; + @Processor(MessageQueue.cronQueue) export class CalendarOngoingStaleCronJob { constructor( @@ -28,6 +31,10 @@ export class CalendarOngoingStaleCronJob { ) {} @Process(CalendarOngoingStaleCronJob.name) + @SentryCronMonitor( + CalendarOngoingStaleCronJob.name, + CALENDAR_ONGOING_STALE_CRON_PATTERN, + ) async handle(): Promise { const activeWorkspaces = await this.workspaceRepository.find({ where: { diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-message-list-fetch.cron.command.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-message-list-fetch.cron.command.ts index a6dc37e7bd52..d0a721ccc367 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-message-list-fetch.cron.command.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-message-list-fetch.cron.command.ts @@ -3,9 +3,10 @@ import { Command, CommandRunner } from 'nest-commander'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; -import { MessagingMessageListFetchCronJob } from 'src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job'; - -const MESSAGING_MESSAGE_LIST_FETCH_CRON_PATTERN = '*/5 * * * *'; +import { + MESSAGING_MESSAGE_LIST_FETCH_CRON_PATTERN, + MessagingMessageListFetchCronJob, +} from 'src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job'; @Command({ name: 'cron:messaging:message-list-fetch', diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-messages-import.cron.command.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-messages-import.cron.command.ts index 03196cd83296..9e115565f470 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-messages-import.cron.command.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-messages-import.cron.command.ts @@ -3,9 +3,10 @@ import { Command, CommandRunner } from 'nest-commander'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; -import { MessagingMessagesImportCronJob } from 'src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job'; - -const MESSAGING_MESSAGES_IMPORT_CRON_PATTERN = '*/1 * * * *'; +import { + MESSAGING_MESSAGES_IMPORT_CRON_PATTERN, + MessagingMessagesImportCronJob, +} from 'src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job'; @Command({ name: 'cron:messaging:messages-import', diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-ongoing-stale.cron.command.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-ongoing-stale.cron.command.ts index 5986a33ce34b..1df4ef8ce12b 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-ongoing-stale.cron.command.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/commands/messaging-ongoing-stale.cron.command.ts @@ -3,9 +3,10 @@ import { Command, CommandRunner } from 'nest-commander'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; -import { MessagingOngoingStaleCronJob } from 'src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job'; - -const MESSAGING_ONGOING_STALE_CRON_PATTERN = '0 * * * *'; +import { + MESSAGING_ONGOING_STALE_CRON_PATTERN, + MessagingOngoingStaleCronJob, +} from 'src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job'; @Command({ name: 'cron:messaging:ongoing-stale', diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job.ts index b3f433fee36f..30c41ab7424f 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-message-list-fetch.cron.job.ts @@ -2,16 +2,17 @@ import { InjectRepository } from '@nestjs/typeorm'; import { In, Repository } from 'typeorm'; -import { - Workspace, - WorkspaceActivationStatus, -} from 'src/engine/core-modules/workspace/workspace.entity'; +import { SentryCronMonitor } from 'src/engine/core-modules/cron/sentry-cron-monitor.decorator'; import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; +import { + Workspace, + WorkspaceActivationStatus, +} from 'src/engine/core-modules/workspace/workspace.entity'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { MessageChannelSyncStage, @@ -22,6 +23,8 @@ import { MessagingMessageListFetchJobData, } from 'src/modules/messaging/message-import-manager/jobs/messaging-message-list-fetch.job'; +export const MESSAGING_MESSAGE_LIST_FETCH_CRON_PATTERN = '*/5 * * * *'; + @Processor(MessageQueue.cronQueue) export class MessagingMessageListFetchCronJob { constructor( @@ -34,6 +37,10 @@ export class MessagingMessageListFetchCronJob { ) {} @Process(MessagingMessageListFetchCronJob.name) + @SentryCronMonitor( + MessagingMessageListFetchCronJob.name, + MESSAGING_MESSAGE_LIST_FETCH_CRON_PATTERN, + ) async handle(): Promise { console.time('MessagingMessageListFetchCronJob time'); diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job.ts index efcbc54cafa4..c580e5df67fc 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-messages-import.cron.job.ts @@ -2,16 +2,17 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { - Workspace, - WorkspaceActivationStatus, -} from 'src/engine/core-modules/workspace/workspace.entity'; +import { SentryCronMonitor } from 'src/engine/core-modules/cron/sentry-cron-monitor.decorator'; import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; +import { + Workspace, + WorkspaceActivationStatus, +} from 'src/engine/core-modules/workspace/workspace.entity'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { MessageChannelSyncStage, @@ -22,6 +23,8 @@ import { MessagingMessagesImportJobData, } from 'src/modules/messaging/message-import-manager/jobs/messaging-messages-import.job'; +export const MESSAGING_MESSAGES_IMPORT_CRON_PATTERN = '*/1 * * * *'; + @Processor(MessageQueue.cronQueue) export class MessagingMessagesImportCronJob { constructor( @@ -34,6 +37,10 @@ export class MessagingMessagesImportCronJob { ) {} @Process(MessagingMessagesImportCronJob.name) + @SentryCronMonitor( + MessagingMessagesImportCronJob.name, + MESSAGING_MESSAGES_IMPORT_CRON_PATTERN, + ) async handle(): Promise { console.time('MessagingMessagesImportCronJob time'); diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job.ts index f3b6b96fcaf4..3dcdb3bac311 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/crons/jobs/messaging-ongoing-stale.cron.job.ts @@ -2,21 +2,24 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { - Workspace, - WorkspaceActivationStatus, -} from 'src/engine/core-modules/workspace/workspace.entity'; +import { SentryCronMonitor } from 'src/engine/core-modules/cron/sentry-cron-monitor.decorator'; import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; +import { + Workspace, + WorkspaceActivationStatus, +} from 'src/engine/core-modules/workspace/workspace.entity'; import { MessagingOngoingStaleJob, MessagingOngoingStaleJobData, } from 'src/modules/messaging/message-import-manager/jobs/messaging-ongoing-stale.job'; +export const MESSAGING_ONGOING_STALE_CRON_PATTERN = '0 * * * *'; + @Processor(MessageQueue.cronQueue) export class MessagingOngoingStaleCronJob { constructor( @@ -28,6 +31,10 @@ export class MessagingOngoingStaleCronJob { ) {} @Process(MessagingOngoingStaleCronJob.name) + @SentryCronMonitor( + MessagingOngoingStaleCronJob.name, + MESSAGING_ONGOING_STALE_CRON_PATTERN, + ) async handle(): Promise { const activeWorkspaces = await this.workspaceRepository.find({ where: { diff --git a/packages/twenty-server/src/modules/messaging/monitoring/crons/commands/messaging-message-channel-sync-status-monitoring.cron.command.ts b/packages/twenty-server/src/modules/messaging/monitoring/crons/commands/messaging-message-channel-sync-status-monitoring.cron.command.ts index cf2c654840c9..9a91699fb608 100644 --- a/packages/twenty-server/src/modules/messaging/monitoring/crons/commands/messaging-message-channel-sync-status-monitoring.cron.command.ts +++ b/packages/twenty-server/src/modules/messaging/monitoring/crons/commands/messaging-message-channel-sync-status-monitoring.cron.command.ts @@ -3,10 +3,10 @@ import { Command, CommandRunner } from 'nest-commander'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; -import { MessagingMessageChannelSyncStatusMonitoringCronJob } from 'src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron'; - -const MESSAGING_MESSAGE_CHANNEL_SYNC_STATUS_MONITORING_CRON_PATTERN = - '2/10 * * * *'; //Every 10 minutes, starting at 2 minutes past the hour +import { + MESSAGING_MESSAGE_CHANNEL_SYNC_STATUS_MONITORING_CRON_PATTERN, + MessagingMessageChannelSyncStatusMonitoringCronJob, +} from 'src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron'; @Command({ name: 'cron:messaging:monitoring:message-channel-sync-status', diff --git a/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.ts b/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.ts index 83552b8568cf..8a03a5946dc6 100644 --- a/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.ts +++ b/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.ts @@ -4,17 +4,21 @@ import { InjectRepository } from '@nestjs/typeorm'; import snakeCase from 'lodash.snakecase'; import { Repository } from 'typeorm'; +import { SentryCronMonitor } from 'src/engine/core-modules/cron/sentry-cron-monitor.decorator'; +import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; +import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; +import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { Workspace, WorkspaceActivationStatus, } from 'src/engine/core-modules/workspace/workspace.entity'; -import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; -import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; -import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity'; import { MessagingTelemetryService } from 'src/modules/messaging/monitoring/services/messaging-telemetry.service'; +export const MESSAGING_MESSAGE_CHANNEL_SYNC_STATUS_MONITORING_CRON_PATTERN = + '2/10 * * * *'; //Every 10 minutes, starting at 2 minutes past the hour + @Processor(MessageQueue.cronQueue) export class MessagingMessageChannelSyncStatusMonitoringCronJob { private readonly logger = new Logger( @@ -28,6 +32,10 @@ export class MessagingMessageChannelSyncStatusMonitoringCronJob { private readonly twentyORMGlobalManager: TwentyORMGlobalManager, ) {} + @SentryCronMonitor( + MessagingMessageChannelSyncStatusMonitoringCronJob.name, + MESSAGING_MESSAGE_CHANNEL_SYNC_STATUS_MONITORING_CRON_PATTERN, + ) @Process(MessagingMessageChannelSyncStatusMonitoringCronJob.name) async handle(): Promise { this.logger.log('Starting message channel sync status monitoring...'); diff --git a/yarn.lock b/yarn.lock index 0c03216bc207..73c64fd29ccf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9356,6 +9356,388 @@ __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": "npm:^1.0.0" + checksum: 10c0/fddecb2211f987bf1a7f104594e58227655c887a6a22b41e9ead5ed925a4594b56186b38fca8e24db33058a924d8b54ddd6b315eca915c469f9653ce7813c31a + 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": "npm:^1.0.0" + checksum: 10c0/969ad3bbb74e3de6fdfe8eb9b3ab86d3dc284ca7bffd0ca67eef64efd08c97a4305696afe0b7b03e5d356f15d0a1a67ac517e5fa7d1ddee6fdc249eef2209fcb + languageName: node + linkType: hard + +"@opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.8, @opentelemetry/api@npm:^1.9.0": + version: 1.9.0 + resolution: "@opentelemetry/api@npm:1.9.0" + checksum: 10c0/9aae2fe6e8a3a3eeb6c1fdef78e1939cf05a0f37f8a4fae4d6bf2e09eb1e06f966ece85805626e01ba5fab48072b94f19b835449e58b6d26720ee19a58298add + languageName: node + linkType: hard + +"@opentelemetry/context-async-hooks@npm:^1.25.1": + version: 1.26.0 + resolution: "@opentelemetry/context-async-hooks@npm:1.26.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/76ed53be50a472cbfe26a62620cb2a34f031474d08d302d31eb95d71cac2ed1567c6fa302c7ac5498e9d467d7d8e64f8d0e58c5c8b7bd987a352baafe5d9b213 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:1.26.0, @opentelemetry/core@npm:^1.1.0, @opentelemetry/core@npm:^1.25.1, @opentelemetry/core@npm:^1.8.0": + version: 1.26.0 + resolution: "@opentelemetry/core@npm:1.26.0" + dependencies: + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/8038a3b9124a0b3b48dceb3949f88726c6853eac33b79fc049856f78dcf4b7ee453db1e6f4d5205a79b315caba809cb7d2f853946cf14773e50ce6a87fd5260e + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-connect@npm:0.39.0": + version: 0.39.0 + resolution: "@opentelemetry/instrumentation-connect@npm:0.39.0" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@types/connect": "npm:3.4.36" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/c137f64b32d2bf916c0e928428ece7313682c9e845052d1f3884e807dcc0417c7751577e04451200c8d49448789c197f459dbbaad3ccb3748342cdfd242b3b51 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-express@npm:0.42.0": + version: 0.42.0 + resolution: "@opentelemetry/instrumentation-express@npm:0.42.0" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/ba0749ba7e74898a1cb361fdef65661eb84218d827d3e53ab5b4fa46a2e5a35b944e64bb5f5391ead0e0578f94a7624d953b06b66de0467a64d43bcf24d20f3c + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-fastify@npm:0.39.0": + version: 0.39.0 + resolution: "@opentelemetry/instrumentation-fastify@npm:0.39.0" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/2363868111029b2c874f64c31fe41232b21922dfba62892e422cab8af19f0d2995807afba7112c570d93a2a8634e3ad79ea4171f010ecd869439cf863967f939 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-fs@npm:0.15.0": + version: 0.15.0 + resolution: "@opentelemetry/instrumentation-fs@npm:0.15.0" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.53.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/d06508e7c36fe9ed8db920f2481bcaafb5cc22d6f3d0c95dd97b098ca326a8b6089e2bf3b77c106f275ed3e019576e49c5b16036943e76675b1ce80a4d427a2b + 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": "npm:^0.53.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/962b19814aa06d5dca42a94f6c94d29ab7ab81a64e951f18d712055343aed11f6ed40df95f39f71ba92ab34c47b21eec514ab93dc8323bbd7567caeebe3a2752 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-graphql@npm:0.43.0": + version: 0.43.0 + resolution: "@opentelemetry/instrumentation-graphql@npm:0.43.0" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.53.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/d1db48ea4af5f9352da5c644a04253908c4df1d386176ee2d2679a7f22769411a2ce10a53fd9910c11ea2d80307d0bd613ba64193b77329648e2e2da08edabf5 + 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": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/cbfecb84de7b79d9c54d2d60d881a6bbfa8cca6e2b54d4eaa3ea093b99b3fa990a03c4641bc76b36367af1c793e4f639ce0c09e3b5aed9f20f04c08076c5e31e + 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": "npm:1.26.0" + "@opentelemetry/instrumentation": "npm:0.53.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + semver: "npm:^7.5.2" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/421d5d9d0725dab6d2e77bf1464e0a76c22a88415854ce703d9cce7f795e4b11653d1705e7e060c61f6dba8019dd365f527b0d6332e4a8ef473f5101b5637a9c + 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": "npm:^0.53.0" + "@opentelemetry/redis-common": "npm:^0.36.2" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/81f3988baa1cd78819951eab2e2a889d0f758a8cf3ecdacb8581ee362a339050cfd3e2bf1d56cae2fdfd055ded6975b74a1a1bea793ef2ca4c1953537e63f12c + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-kafkajs@npm:0.3.0": + version: 0.3.0 + resolution: "@opentelemetry/instrumentation-kafkajs@npm:0.3.0" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/e29b0a0010a004418ada1277018aca316eb38de304afe7c5f5e56c60bbfd714fc7e8f0ddcd53c9a87233d1d31c57761292a0b1292496a08ccbfd954df0635a5b + 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": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/d9596de9915ced84d8db2f244376420700dbb2731e044cd2091f8b32938a732e41525e50f9fa32cb95dc2f4fd560bb9a327061a44a993db034dd89a7d2e0495b + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-mongodb@npm:0.47.0": + version: 0.47.0 + resolution: "@opentelemetry/instrumentation-mongodb@npm:0.47.0" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.53.0" + "@opentelemetry/sdk-metrics": "npm:^1.9.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/aa3238c3fd4d8f58bb22255051b4203ca6fb2d6e45ef16fc6c3e34bd79230e9faa3f4753b5c1dbc154d50f4be832107623781ab070c63c5ae46713d0e1a65e45 + 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": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/993fe0a0c8eda24bf2e650a78131fcc80227b850b0c70e0a4242ed0110e0b24c2ea23125bc9bd071b5f9ac9f3c46df84e8988e7edd5f27f79b0a8a8567f2f5ad + 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": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/sql-common": "npm:^0.40.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/a51217ff9da3ee9aca9ff956755b67068813fdd6f266b605bff5c9fe8f8b67d40ec0293c01d1817c69abc41c19e7589f7bcb24535f259cc539d42d7d32fd2232 + 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": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@types/mysql": "npm:2.15.26" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/f472b0a8f5ea240da3c616d2eb2ed14d6a6d50e98e3c40eb773894d38eff3b5f1bc2d2426240c9228eb8b3eb3717e605822a7506025dea4549055b13807680f2 + 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": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/d362daf6eb77fc716159f0bfbbf5685699ed7e85c14a8f241c316daa5ebc2c80a9e20dda8245e7acfbc7bcc7c95ab2d01c2c637b8d428352673fc77f862c87c6 + 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": "npm:^0.53.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/sql-common": "npm:^0.40.1" + "@types/pg": "npm:8.6.1" + "@types/pg-pool": "npm:2.0.6" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/d20db7b7791d40cf65751dc9d79feae8694b2eb156985ef1dc1ee3ff9a230424305b24534192d9f234b87465b47d6b622e8f9e001e4665ea17d9017825835b80 + 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": "npm:^0.53.0" + "@opentelemetry/redis-common": "npm:^0.36.2" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/4bb5408daeefc10395443fd10bd2b933c88f18658f181bd80c240f49e896c14bb520b71f2eca31fa27a4f1d82448ffceb88c2ee419eec1041f997f8a1d9a6818 + 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": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.53.0" + peerDependencies: + "@opentelemetry/api": ^1.7.0 + checksum: 10c0/eafaf213f6da1ad479ee56c8cf884cf27871a40749444784ca03d77fd0c4418164f3fffaec42ad07b81a4613cdf076594e305917698663424a081b50d0c6b481 + 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": "npm:0.53.0" + "@types/shimmer": "npm:^1.2.0" + import-in-the-middle: "npm:^1.8.1" + require-in-the-middle: "npm:^7.1.1" + semver: "npm:^7.5.2" + shimmer: "npm:^1.2.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/943e289926812272cb77cda5e0a6b662bc6a92812b66420ceeca1c764f2e3a13364f6bbed7c9e84a17ad677474101ea3c598ef6a6cca982c35bfd24be6f6a25e + 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": "npm:0.52.1" + "@types/shimmer": "npm:^1.0.2" + import-in-the-middle: "npm:^1.8.1" + require-in-the-middle: "npm:^7.1.1" + semver: "npm:^7.5.2" + shimmer: "npm:^1.2.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/1d4946b470ac31358ba8d81a9f9653a1d705db96ffb8958fef873340c3d3c9699cfd8ff617c313ea8c6a8ece51aa7cf8af37d87a60813c31ed2207e5c14a33ba + languageName: node + linkType: hard + +"@opentelemetry/redis-common@npm:^0.36.2": + version: 0.36.2 + resolution: "@opentelemetry/redis-common@npm:0.36.2" + checksum: 10c0/4cb831628551b9f13dca8d65897e300ff7be0e256b77f455a26fb053bbdfc7997b27d066ab1402ca929e7ac77598e0d593f91762d8af9f798c19ba1524e9d078 + languageName: node + linkType: hard + +"@opentelemetry/resources@npm:1.26.0, @opentelemetry/resources@npm:^1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/resources@npm:1.26.0" + dependencies: + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/62ffbf7edee8676055661cf608b32a52bfa46fedb1a88830b4d4d0faf6664edbcbf7922034d3690d11fe9ebef9d9f5ffcb05645e8c7b27c707bf57d5289617e9 + languageName: node + linkType: hard + +"@opentelemetry/sdk-metrics@npm:^1.9.1": + version: 1.26.0 + resolution: "@opentelemetry/sdk-metrics@npm:1.26.0" + dependencies: + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/resources": "npm:1.26.0" + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: 10c0/640a0dcfa4af73a029ef57b51f8ecc1d08dfb0c3a5242552876fab36c7f9ae7c410fa52dbc5202a2d8675fcfe61df3c49205079963f1c11acfe42981d1d01a76 + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:^1.22, @opentelemetry/sdk-trace-base@npm:^1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/sdk-trace-base@npm:1.26.0" + dependencies: + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/resources": "npm:1.26.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/0d5fc19179375f1599edae91b7232f432faf8631746835a10d0cd0c4907d0ca3ed156cc8087d4e78efdfbd9ba5ba414cc9e1399172c2aa68d7e0cd5190394d87 + 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: 10c0/b859773ba06b7e53dd9c6b45a171bf3000e405733adbf462ae91004ed011bc80edb5beecb817fb344a085adfd06045ab5b729c9bd0f1479650ad377134fb798c + languageName: node + linkType: hard + +"@opentelemetry/sql-common@npm:^0.40.1": + version: 0.40.1 + resolution: "@opentelemetry/sql-common@npm:0.40.1" + dependencies: + "@opentelemetry/core": "npm:^1.1.0" + peerDependencies: + "@opentelemetry/api": ^1.1.0 + checksum: 10c0/60a70358f0c94f610e2995333e96b406626d67d03d38ed03b15a3461ad0f8d64afbf6275cca7cb58fe955ecdce832f3ffc9b73f9d88503bba5d2a620bbd6d351 + languageName: node + linkType: hard + "@parcel/watcher-android-arm64@npm:2.4.1": version: 2.4.1 resolution: "@parcel/watcher-android-arm64@npm:2.4.1" @@ -9600,6 +9982,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": "npm:^1.8" + "@opentelemetry/instrumentation": "npm:^0.49 || ^0.50 || ^0.51 || ^0.52.0" + "@opentelemetry/sdk-trace-base": "npm:^1.22" + checksum: 10c0/437ca8b61815642cb511bfbe9d5ba64a94accbd4902a037ab12b68e9ca77a9bf74c9269b6b3fd02a4bfd7474209e151accc24f051dd99828568c9df5f57d4a0d + languageName: node + linkType: hard + "@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/aspromise@npm:1.1.2" @@ -11685,37 +12078,49 @@ __metadata: languageName: node linkType: hard -"@sentry-internal/feedback@npm:7.118.0": - version: 7.118.0 - resolution: "@sentry-internal/feedback@npm:7.118.0" +"@sentry-internal/browser-utils@npm:8.30.0": + version: 8.30.0 + resolution: "@sentry-internal/browser-utils@npm:8.30.0" dependencies: - "@sentry/core": "npm:7.118.0" - "@sentry/types": "npm:7.118.0" - "@sentry/utils": "npm:7.118.0" - checksum: 10c0/b6d9dc372771b2ae4895dda14ad6e0925d52377af2f6ae815c373f67a9d3667062bb86328ec64d8437a8d935b59084b8f3e01164454cc0f5b4403aee46cae8b0 + "@sentry/core": "npm:8.30.0" + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" + checksum: 10c0/f7ca0a528b4d30cfbdc54d117068cdf1647f0c2b88d39f17e79cf2be2122819592814c07226628d52b817bf6744d33b2bcb0e25b389784cf7425f5d096ff1270 languageName: node linkType: hard -"@sentry-internal/replay-canvas@npm:7.118.0": - version: 7.118.0 - resolution: "@sentry-internal/replay-canvas@npm:7.118.0" +"@sentry-internal/feedback@npm:8.30.0": + version: 8.30.0 + resolution: "@sentry-internal/feedback@npm:8.30.0" dependencies: - "@sentry/core": "npm:7.118.0" - "@sentry/replay": "npm:7.118.0" - "@sentry/types": "npm:7.118.0" - "@sentry/utils": "npm:7.118.0" - checksum: 10c0/6b9c1e9e72687454c4d80ff95038bc36695885a06069845831946e3710b69a9f3e625cf03010afa0af311e4fd1b20e51d7c4a66f82be9e5c80184cfec8930926 + "@sentry/core": "npm:8.30.0" + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" + checksum: 10c0/c6061721ef7d9faee3e54477a7554b3221c90e7eda473ce2215dd438939efeada0c9dab3b745402553b7cc5f37c79f3994a9123356596dddea0c6e5f9c4d6ebc languageName: node linkType: hard -"@sentry-internal/tracing@npm:7.118.0": - version: 7.118.0 - resolution: "@sentry-internal/tracing@npm:7.118.0" +"@sentry-internal/replay-canvas@npm:8.30.0": + version: 8.30.0 + resolution: "@sentry-internal/replay-canvas@npm:8.30.0" dependencies: - "@sentry/core": "npm:7.118.0" - "@sentry/types": "npm:7.118.0" - "@sentry/utils": "npm:7.118.0" - checksum: 10c0/335c5918a34ecfafb1c56f90ca83be94489a2fb1d71b3ed5f74c3349c00b93dcd2c0775b612cc190a2dfce5baac061224761143ffe33895b93ddf34a3ff76389 + "@sentry-internal/replay": "npm:8.30.0" + "@sentry/core": "npm:8.30.0" + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" + checksum: 10c0/918d85ae873fcbb4592ea8672e3cf17f7300388e4b2dbb6c1c0d190fb62b18ed4d23c2a5090253e1d4290883bc895873c8b47877e5b9dbb0ca7c96da050b5632 + languageName: node + linkType: hard + +"@sentry-internal/replay@npm:8.30.0": + version: 8.30.0 + resolution: "@sentry-internal/replay@npm:8.30.0" + dependencies: + "@sentry-internal/browser-utils": "npm:8.30.0" + "@sentry/core": "npm:8.30.0" + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" + checksum: 10c0/68045de057dda34e3693b855586d2f3d52fb01947173937aebac07b23cf64d51b4ccb188d4a60f71d891e29d5fd9e6a452999f6aa384ffa981daf4affa2b42a1 languageName: node linkType: hard @@ -11731,19 +12136,18 @@ __metadata: languageName: node linkType: hard -"@sentry/browser@npm:7.118.0": - version: 7.118.0 - resolution: "@sentry/browser@npm:7.118.0" +"@sentry/browser@npm:8.30.0": + version: 8.30.0 + resolution: "@sentry/browser@npm:8.30.0" dependencies: - "@sentry-internal/feedback": "npm:7.118.0" - "@sentry-internal/replay-canvas": "npm:7.118.0" - "@sentry-internal/tracing": "npm:7.118.0" - "@sentry/core": "npm:7.118.0" - "@sentry/integrations": "npm:7.118.0" - "@sentry/replay": "npm:7.118.0" - "@sentry/types": "npm:7.118.0" - "@sentry/utils": "npm:7.118.0" - checksum: 10c0/eeff411162c5b64abfbdb1477a026cd327f3219dbb64954b0b4a19068e603633c440087f65c0d4e1c7e0a4a6aec334eb539401075ef00e2d5925d3100e1b3857 + "@sentry-internal/browser-utils": "npm:8.30.0" + "@sentry-internal/feedback": "npm:8.30.0" + "@sentry-internal/replay": "npm:8.30.0" + "@sentry-internal/replay-canvas": "npm:8.30.0" + "@sentry/core": "npm:8.30.0" + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" + checksum: 10c0/34c89d1db837ab2b73cea1c58d6bba090edf3c88875e1d0aa9ab9f6d662183b78b9d3fcf8b5351f932b6f3f8b7e60a5edb99943c8f03682f886563bedb750e60 languageName: node linkType: hard @@ -11760,13 +12164,13 @@ __metadata: languageName: node linkType: hard -"@sentry/core@npm:7.118.0": - version: 7.118.0 - resolution: "@sentry/core@npm:7.118.0" +"@sentry/core@npm:8.30.0": + version: 8.30.0 + resolution: "@sentry/core@npm:8.30.0" dependencies: - "@sentry/types": "npm:7.118.0" - "@sentry/utils": "npm:7.118.0" - checksum: 10c0/560114a6ee97f054f2bb461656e57447c5f0d0f79820ee263a191365119ac236d20cc9ddde1b33768d30d481e3e20796c038c8a4e3f7f9cde52ec96755ebadc8 + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" + checksum: 10c0/5a0b9abbd30543417aa6a3e1fe7583084ec15d5cf52c271893032951e40ec04b620d68b67696e85496831dac942eb2a47fb01c6d97f63017a426a3b13fe7c5f5 languageName: node linkType: hard @@ -11781,18 +12185,6 @@ __metadata: languageName: node linkType: hard -"@sentry/integrations@npm:7.118.0": - version: 7.118.0 - resolution: "@sentry/integrations@npm:7.118.0" - dependencies: - "@sentry/core": "npm:7.118.0" - "@sentry/types": "npm:7.118.0" - "@sentry/utils": "npm:7.118.0" - localforage: "npm:^1.8.1" - checksum: 10c0/4256662bc7b28474eda1d284c5aa87091f588c0bcf6ea05cdf45b99fae9ab401e486ee8518b6911e9412331668ec5b74f192bcd45b7e627d3320d3931a88324d - languageName: node - linkType: hard - "@sentry/minimal@npm:6.19.7": version: 6.19.7 resolution: "@sentry/minimal@npm:6.19.7" @@ -11804,31 +12196,77 @@ __metadata: languageName: node linkType: hard -"@sentry/node@npm:^7.99.0": - version: 7.118.0 - resolution: "@sentry/node@npm:7.118.0" - dependencies: - "@sentry-internal/tracing": "npm:7.118.0" - "@sentry/core": "npm:7.118.0" - "@sentry/integrations": "npm:7.118.0" - "@sentry/types": "npm:7.118.0" - "@sentry/utils": "npm:7.118.0" - checksum: 10c0/41d67d67201526038eac03dc81e8ee6341908ce1f4a6d64c0f745f63272e6ea9fdd8ed651f30b173ef73ab39c4234360e2ec6416de5abdf6ba3f43f587fbc0df - languageName: node - linkType: hard - -"@sentry/profiling-node@npm:^1.3.4": - version: 1.3.5 - resolution: "@sentry/profiling-node@npm:1.3.5" - dependencies: +"@sentry/node@npm:8.30.0, @sentry/node@npm:^8": + version: 8.30.0 + resolution: "@sentry/node@npm:8.30.0" + dependencies: + "@opentelemetry/api": "npm:^1.9.0" + "@opentelemetry/context-async-hooks": "npm:^1.25.1" + "@opentelemetry/core": "npm:^1.25.1" + "@opentelemetry/instrumentation": "npm:^0.53.0" + "@opentelemetry/instrumentation-connect": "npm:0.39.0" + "@opentelemetry/instrumentation-express": "npm:0.42.0" + "@opentelemetry/instrumentation-fastify": "npm:0.39.0" + "@opentelemetry/instrumentation-fs": "npm:0.15.0" + "@opentelemetry/instrumentation-generic-pool": "npm:0.39.0" + "@opentelemetry/instrumentation-graphql": "npm:0.43.0" + "@opentelemetry/instrumentation-hapi": "npm:0.41.0" + "@opentelemetry/instrumentation-http": "npm:0.53.0" + "@opentelemetry/instrumentation-ioredis": "npm:0.43.0" + "@opentelemetry/instrumentation-kafkajs": "npm:0.3.0" + "@opentelemetry/instrumentation-koa": "npm:0.43.0" + "@opentelemetry/instrumentation-mongodb": "npm:0.47.0" + "@opentelemetry/instrumentation-mongoose": "npm:0.42.0" + "@opentelemetry/instrumentation-mysql": "npm:0.41.0" + "@opentelemetry/instrumentation-mysql2": "npm:0.41.0" + "@opentelemetry/instrumentation-nestjs-core": "npm:0.40.0" + "@opentelemetry/instrumentation-pg": "npm:0.44.0" + "@opentelemetry/instrumentation-redis-4": "npm:0.42.0" + "@opentelemetry/instrumentation-undici": "npm:0.6.0" + "@opentelemetry/resources": "npm:^1.26.0" + "@opentelemetry/sdk-trace-base": "npm:^1.26.0" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@prisma/instrumentation": "npm:5.19.1" + "@sentry/core": "npm:8.30.0" + "@sentry/opentelemetry": "npm:8.30.0" + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" + import-in-the-middle: "npm:^1.11.0" + checksum: 10c0/54ec05c004424eb03ed7d5ad352d0e0a0c929085f9ff07b47de0046014f1293499f746ccbf68910fc62fd0bfe2f53c3deda27feeb773f94b8a3ced090b0471b1 + languageName: node + linkType: hard + +"@sentry/opentelemetry@npm:8.30.0": + version: 8.30.0 + resolution: "@sentry/opentelemetry@npm:8.30.0" + dependencies: + "@sentry/core": "npm:8.30.0" + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" + peerDependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/core": ^1.25.1 + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/sdk-trace-base": ^1.26.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + checksum: 10c0/71bebf23a6334d1d4655536bb0c7be1208b0b8b84446baec32e336b946d4e4f20f848d648ac7d9624002b6cb5ba335a1bd546f04f082e49e31406aa5f1095786 + languageName: node + linkType: hard + +"@sentry/profiling-node@npm:^8": + version: 8.30.0 + resolution: "@sentry/profiling-node@npm:8.30.0" + dependencies: + "@sentry/core": "npm:8.30.0" + "@sentry/node": "npm:8.30.0" + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" detect-libc: "npm:^2.0.2" - node-abi: "npm:^3.52.0" + node-abi: "npm:^3.61.0" node-gyp: "npm:latest" - peerDependencies: - "@sentry/node": ^7.44.1 bin: - sentry-prune-profiler-binaries: scripts/prune-profiler-binaries.mjs - checksum: 10c0/7d4613ea702a1ed455e63ce063aa91a2f84666311c1d0139479810e84061cf5b7d49f790316efbc4d70f4b0e8424481d0e57bf082de073fb89b3139646cf7057 + sentry-prune-profiler-binaries: scripts/prune-profiler-binaries.js + checksum: 10c0/2e6153e45682529f3aa6c51e3475c0e1a124bb57b268e024b376f23b31ae5a51e5bdf2e9b215ec54e992057d8f0d5c06593e773774b88f7fa114e50208c3ffec languageName: node linkType: hard @@ -11848,39 +12286,18 @@ __metadata: languageName: node linkType: hard -"@sentry/react@npm:^7.88.0": - version: 7.118.0 - resolution: "@sentry/react@npm:7.118.0" +"@sentry/react@npm:^8": + version: 8.30.0 + resolution: "@sentry/react@npm:8.30.0" dependencies: - "@sentry/browser": "npm:7.118.0" - "@sentry/core": "npm:7.118.0" - "@sentry/types": "npm:7.118.0" - "@sentry/utils": "npm:7.118.0" + "@sentry/browser": "npm:8.30.0" + "@sentry/core": "npm:8.30.0" + "@sentry/types": "npm:8.30.0" + "@sentry/utils": "npm:8.30.0" hoist-non-react-statics: "npm:^3.3.2" peerDependencies: - react: 15.x || 16.x || 17.x || 18.x - checksum: 10c0/e3e61469ee6e38033b84db47d01ce622c81cd6fd42059937241f4f228b3b15371f82f41b7601d447cdfedd064507039d2fb02e6ff729c6edd4715a7ea42b3e09 - languageName: node - linkType: hard - -"@sentry/replay@npm:7.118.0": - version: 7.118.0 - resolution: "@sentry/replay@npm:7.118.0" - dependencies: - "@sentry-internal/tracing": "npm:7.118.0" - "@sentry/core": "npm:7.118.0" - "@sentry/types": "npm:7.118.0" - "@sentry/utils": "npm:7.118.0" - checksum: 10c0/e1af72a4fce1a970b6bc5fb4010405b3b405bf55661bab1a3c0d3f55f2063925192785f4ad454c4190cc8a08b6706906562f2b1b1dae8288aed15ac438770b24 - languageName: node - linkType: hard - -"@sentry/tracing@npm:^7.99.0": - version: 7.118.0 - resolution: "@sentry/tracing@npm:7.118.0" - dependencies: - "@sentry-internal/tracing": "npm:7.118.0" - checksum: 10c0/68a93f3eb5d6d4890bde1bf3393ce53290d3b001297f26bc19ce8e32414ea6b9e35adf4dbd1661560be4f9baba1ea21ea0da8a39c475c17877e685746e924305 + react: ^16.14.0 || 17.x || 18.x || 19.x + checksum: 10c0/089f0bc47efba9f4c912b46e143ad3de97da09c40e046395b6847ff81e850ac722a04c6deec98d5b4fcc687aa89eeaf51dc5b4287b0f5ad8be37be7ce13e018c languageName: node linkType: hard @@ -11891,7 +12308,14 @@ __metadata: languageName: node linkType: hard -"@sentry/types@npm:7.118.0, @sentry/types@npm:^7.109.0": +"@sentry/types@npm:8.30.0": + version: 8.30.0 + resolution: "@sentry/types@npm:8.30.0" + checksum: 10c0/9cc57d19ebcb7b06f922373f832a268fa0023c20493370a0145def3bb0d1aa6ace7340a09e2abd28ef622eb17b4e7722d054a2a140b0a5f077c3a58614a42b0e + languageName: node + linkType: hard + +"@sentry/types@npm:^7.109.0": version: 7.118.0 resolution: "@sentry/types@npm:7.118.0" checksum: 10c0/3c9f1c301cd0a2b51fadd6105ee80e7cb39d47631c75bf5ecef3a1251b8eabc237533654e8afeaf77b44f7074c195c01e70e7b6e73f93277c63ada1f2b2c4a30 @@ -11908,12 +12332,12 @@ __metadata: languageName: node linkType: hard -"@sentry/utils@npm:7.118.0": - version: 7.118.0 - resolution: "@sentry/utils@npm:7.118.0" +"@sentry/utils@npm:8.30.0": + version: 8.30.0 + resolution: "@sentry/utils@npm:8.30.0" dependencies: - "@sentry/types": "npm:7.118.0" - checksum: 10c0/64d5581344bc4435fc09b518a5a2b06605cf0df2aaf60b0f3c5f3b2b7f64bbc86bb1f967a5a52b40f3fbfe2898ed37e436b4aa51d018ff403d945a1232b1713d + "@sentry/types": "npm:8.30.0" + checksum: 10c0/f65fac0f8d7ab64697b536e9399a43727056f18c4699514ef4bca2a0ef0e52eb679967b875ae42a7cd96e429baf23ee97aa84ab41bc416541d3a60c4c526e258 languageName: node linkType: hard @@ -15450,6 +15874,15 @@ __metadata: languageName: node linkType: hard +"@types/connect@npm:3.4.36": + version: 3.4.36 + resolution: "@types/connect@npm:3.4.36" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/0dd8fcf576e178e69cbc00d47be69d3198dca4d86734a00fc55de0df147982e0a5f34592117571c5979e92ce8f3e0596e31aa454496db8a43ab90c5ab1068f40 + languageName: node + linkType: hard + "@types/content-disposition@npm:*": version: 0.5.8 resolution: "@types/content-disposition@npm:0.5.8" @@ -16646,6 +17079,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": "npm:*" + checksum: 10c0/3cf279e7db05d56c0544532a4380b9079f579092379a04c8138bd5cf88dda5b31208ac2d23ce7dbf4e3a3f43aaeed44e72f9f19f726518f308efe95a7435619a + languageName: node + linkType: hard + "@types/node-fetch@npm:^2.6.1, @types/node-fetch@npm:^2.6.4": version: 2.6.11 resolution: "@types/node-fetch@npm:2.6.11" @@ -16822,6 +17264,37 @@ __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": "npm:*" + checksum: 10c0/41965d4d0b677c54ce45d36add760e496d356b78019cb062d124af40287cf6b0fd4d86e3b0085f443856c185983a60c8b0795ff76d15683e2a93c62f5ac0125f + languageName: node + linkType: hard + +"@types/pg@npm:*": + version: 8.11.10 + resolution: "@types/pg@npm:8.11.10" + dependencies: + "@types/node": "npm:*" + pg-protocol: "npm:*" + pg-types: "npm:^4.0.1" + checksum: 10c0/c8800d0ab2c6424308e6c6b40c73f19583ee1aed758462bd07694844b0a551b5841442205a4ee05207b80109ba502f33f20241b1bd9b4902e713611fb9e08f6c + languageName: node + linkType: hard + +"@types/pg@npm:8.6.1": + version: 8.6.1 + resolution: "@types/pg@npm:8.6.1" + dependencies: + "@types/node": "npm:*" + pg-protocol: "npm:*" + pg-types: "npm:^2.2.0" + checksum: 10c0/8d16660c9a4f050d6d5e391c59f9a62e9d377a2a6a7eb5865f8828082dbdfeab700fd707e585f42d67b29e796b32863aea5bd6d5cbb8ceda2d598da5d0c61693 + languageName: node + linkType: hard + "@types/pretty-hrtime@npm:^1.0.0": version: 1.0.3 resolution: "@types/pretty-hrtime@npm:1.0.3" @@ -17031,6 +17504,13 @@ __metadata: languageName: node linkType: hard +"@types/shimmer@npm:^1.0.2, @types/shimmer@npm:^1.2.0": + version: 1.2.0 + resolution: "@types/shimmer@npm:1.2.0" + checksum: 10c0/6f7bfe1b55601cfc3ae713fc74a03341f3834253b8b91cb2add926d5949e4a63f7e666f59c2a6e40a883a5f9e2f3e3af10f9d3aed9b60fced0bda87659e58d8d + languageName: node + linkType: hard + "@types/sockjs@npm:^0.3.33": version: 0.3.36 resolution: "@types/sockjs@npm:0.3.36" @@ -22004,6 +22484,13 @@ __metadata: languageName: node linkType: hard +"cjs-module-lexer@npm:^1.2.2": + version: 1.4.1 + resolution: "cjs-module-lexer@npm:1.4.1" + checksum: 10c0/5a7d8279629c9ba8ccf38078c2fed75b7737973ced22b9b5a54180efa57fb2fe2bb7bec6aec55e3b8f3f5044f5d7b240347ad9bd285e7c3d0ee5b0a1d0504dfc + languageName: node + linkType: hard + "class-transformer@npm:^0.5.1": version: 0.5.1 resolution: "class-transformer@npm:0.5.1" @@ -30575,13 +31062,6 @@ __metadata: languageName: node linkType: hard -"immediate@npm:~3.0.5": - version: 3.0.6 - resolution: "immediate@npm:3.0.6" - checksum: 10c0/f8ba7ede69bee9260241ad078d2d535848745ff5f6995c7c7cb41cfdc9ccc213f66e10fa5afb881f90298b24a3f7344b637b592beb4f54e582770cdce3f1f039 - languageName: node - linkType: hard - "immer@npm:^10.0.2": version: 10.1.1 resolution: "immer@npm:10.1.1" @@ -30620,6 +31100,18 @@ __metadata: languageName: node linkType: hard +"import-in-the-middle@npm:^1.11.0, import-in-the-middle@npm:^1.8.1": + version: 1.11.0 + resolution: "import-in-the-middle@npm:1.11.0" + dependencies: + acorn: "npm:^8.8.2" + acorn-import-attributes: "npm:^1.9.5" + cjs-module-lexer: "npm:^1.2.2" + module-details-from-path: "npm:^1.0.3" + checksum: 10c0/b5b52b635450f69640289b9b597fef796ef9aa6c231ae22583a1c2e97bd1b61aa0048d7fc143b4af3ec5bffb7d64131302ed0882f62e0e2d60f0a4f009daff3f + languageName: node + linkType: hard + "import-lazy@npm:^2.1.0": version: 2.1.0 resolution: "import-lazy@npm:2.1.0" @@ -33852,15 +34344,6 @@ __metadata: languageName: node linkType: hard -"lie@npm:3.1.1": - version: 3.1.1 - resolution: "lie@npm:3.1.1" - dependencies: - immediate: "npm:~3.0.5" - checksum: 10c0/d62685786590351b8e407814acdd89efe1cb136f05cb9236c5a97b2efdca1f631d2997310ad2d565c753db7596799870140e4777c9c9b8c44a0f6bf42d1804a1 - languageName: node - linkType: hard - "lilconfig@npm:^3.1.1": version: 3.1.2 resolution: "lilconfig@npm:3.1.2" @@ -33980,15 +34463,6 @@ __metadata: languageName: node linkType: hard -"localforage@npm:^1.8.1": - version: 1.10.0 - resolution: "localforage@npm:1.10.0" - dependencies: - lie: "npm:3.1.1" - checksum: 10c0/00f19f1f97002e6721587ed5017f502d58faf80dae567d5065d4d1ee0caf0762f40d2e2dba7f0ef7d3f14ee6203242daae9ecad97359bfc10ecff36df11d85a3 - languageName: node - linkType: hard - "locate-path@npm:^3.0.0": version: 3.0.0 resolution: "locate-path@npm:3.0.0" @@ -37140,6 +37614,13 @@ __metadata: languageName: node linkType: hard +"module-details-from-path@npm:^1.0.3": + version: 1.0.3 + resolution: "module-details-from-path@npm:1.0.3" + checksum: 10c0/3d881f3410c142e4c2b1307835a2862ba04e5b3ec6e90655614a0ee2c4b299b4c1d117fb525d2435bf436990026f18d338a197b54ad6bd36252f465c336ff423 + languageName: node + linkType: hard + "moize@npm:^6.1.6": version: 6.1.6 resolution: "moize@npm:6.1.6" @@ -37648,7 +38129,7 @@ __metadata: languageName: node linkType: hard -"node-abi@npm:^3.3.0, node-abi@npm:^3.52.0": +"node-abi@npm:^3.3.0": version: 3.65.0 resolution: "node-abi@npm:3.65.0" dependencies: @@ -37657,6 +38138,15 @@ __metadata: languageName: node linkType: hard +"node-abi@npm:^3.61.0": + version: 3.67.0 + resolution: "node-abi@npm:3.67.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/72ce2edbdfb84745bc201a4e48aa7146fd88a0d2c80046b6b17f28439c9a7683eab846f40f1e819349c31f7d9331ed5c50d1e741208d938dd5f38b29cab2275e + languageName: node + linkType: hard + "node-abort-controller@npm:3.1.1, node-abort-controller@npm:^3.0.1, node-abort-controller@npm:^3.1.1": version: 3.1.1 resolution: "node-abort-controller@npm:3.1.1" @@ -38580,7 +39070,7 @@ __metadata: languageName: node linkType: hard -"obuf@npm:^1.0.0, obuf@npm:^1.1.2": +"obuf@npm:^1.0.0, obuf@npm:^1.1.2, obuf@npm:~1.1.2": version: 1.1.2 resolution: "obuf@npm:1.1.2" checksum: 10c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 @@ -39763,6 +40253,13 @@ __metadata: languageName: node linkType: hard +"pg-numeric@npm:1.0.2": + version: 1.0.2 + resolution: "pg-numeric@npm:1.0.2" + checksum: 10c0/43dd9884e7b52c79ddc28d2d282d7475fce8bba13452d33c04ceb2e0a65f561edf6699694e8e1c832ff9093770496363183c950dd29608e1bdd98f344b25bca9 + languageName: node + linkType: hard + "pg-pool@npm:^3.6.2": version: 3.6.2 resolution: "pg-pool@npm:3.6.2" @@ -39772,6 +40269,13 @@ __metadata: languageName: node linkType: hard +"pg-protocol@npm:*": + version: 1.7.0 + resolution: "pg-protocol@npm:1.7.0" + checksum: 10c0/c4af854d9b843c808231c0040fed89f2b9101006157df8da2bb2f62a7dde702de748d852228dc22df41cc7ffddfb526af3bcb34b278b581e9f76a060789186c1 + languageName: node + linkType: hard + "pg-protocol@npm:^1.6.1": version: 1.6.1 resolution: "pg-protocol@npm:1.6.1" @@ -39779,7 +40283,7 @@ __metadata: languageName: node linkType: hard -"pg-types@npm:^2.1.0": +"pg-types@npm:^2.1.0, pg-types@npm:^2.2.0": version: 2.2.0 resolution: "pg-types@npm:2.2.0" dependencies: @@ -39792,6 +40296,21 @@ __metadata: languageName: node linkType: hard +"pg-types@npm:^4.0.1": + version: 4.0.2 + resolution: "pg-types@npm:4.0.2" + dependencies: + pg-int8: "npm:1.0.1" + pg-numeric: "npm:1.0.2" + postgres-array: "npm:~3.0.1" + postgres-bytea: "npm:~3.0.0" + postgres-date: "npm:~2.1.0" + postgres-interval: "npm:^3.0.0" + postgres-range: "npm:^1.1.1" + checksum: 10c0/780fccda2f3fa2a34e85a72e8e7dadb7d88fbe71ce88f126cb3313f333ad836d02488ec4ff3d94d0c1e5846f735d6e6c6281f8059e6b8919d2180429acaec3e2 + languageName: node + linkType: hard + "pg@npm:^8.11.3, pg@npm:^8.5.1": version: 8.12.0 resolution: "pg@npm:8.12.0" @@ -40528,6 +41047,13 @@ __metadata: languageName: node linkType: hard +"postgres-array@npm:~3.0.1": + version: 3.0.2 + resolution: "postgres-array@npm:3.0.2" + checksum: 10c0/644aa071f67a66a59f641f8e623887d2b915bc102a32643e2aa8b54c11acd343c5ad97831ea444dd37bd4b921ba35add4aa2cb0c6b76700a8252c2324aeba5b4 + languageName: node + linkType: hard + "postgres-bytea@npm:~1.0.0": version: 1.0.0 resolution: "postgres-bytea@npm:1.0.0" @@ -40535,6 +41061,15 @@ __metadata: languageName: node linkType: hard +"postgres-bytea@npm:~3.0.0": + version: 3.0.0 + resolution: "postgres-bytea@npm:3.0.0" + dependencies: + obuf: "npm:~1.1.2" + checksum: 10c0/41c79cc48aa730c5ba3eda6ab989a940034f07a1f57b8f2777dce56f1b8cca16c5870582932b5b10cc605048aef9b6157e06253c871b4717cafc6d00f55376aa + languageName: node + linkType: hard + "postgres-date@npm:~1.0.4": version: 1.0.7 resolution: "postgres-date@npm:1.0.7" @@ -40542,6 +41077,13 @@ __metadata: languageName: node linkType: hard +"postgres-date@npm:~2.1.0": + version: 2.1.0 + resolution: "postgres-date@npm:2.1.0" + checksum: 10c0/00a7472c10788f6b0d08d24108bf1eb80858de1bd6317740198a564918ea4a69b80c98148167b92ae688abd606483020d0de0dd3a36f3ea9a3e26bbeef3464f4 + languageName: node + linkType: hard + "postgres-interval@npm:^1.1.0": version: 1.2.0 resolution: "postgres-interval@npm:1.2.0" @@ -40551,6 +41093,20 @@ __metadata: languageName: node linkType: hard +"postgres-interval@npm:^3.0.0": + version: 3.0.0 + resolution: "postgres-interval@npm:3.0.0" + checksum: 10c0/8b570b30ea37c685e26d136d34460f246f98935a1533defc4b53bb05ee23ae3dc7475b718ec7ea607a57894d8c6b4f1adf67ca9cc83a75bdacffd427d5c68de8 + languageName: node + linkType: hard + +"postgres-range@npm:^1.1.1": + version: 1.1.4 + resolution: "postgres-range@npm:1.1.4" + checksum: 10c0/254494ef81df208e0adeae6b66ce394aba37914ea14c7ece55a45fb6691b7db04bee74c825380a47c887a9f87158fd3d86f758f9cc60b76d3a38ce5aca7912e8 + languageName: node + linkType: hard + "postgres@npm:^3.4.3": version: 3.4.4 resolution: "postgres@npm:3.4.4" @@ -43215,6 +43771,17 @@ __metadata: languageName: node linkType: hard +"require-in-the-middle@npm:^7.1.1": + version: 7.4.0 + resolution: "require-in-the-middle@npm:7.4.0" + dependencies: + debug: "npm:^4.3.5" + module-details-from-path: "npm:^1.0.3" + resolve: "npm:^1.22.8" + checksum: 10c0/67c2242ea5b059c2a10c01d4f409233c67278051b47b9bf83198ab7e3ea591ffe3fa1d97912180d7d3d9a5e44490c00c55882b702849d61ac4db87d2c3823cb0 + languageName: node + linkType: hard + "require-like@npm:>= 0.1.1": version: 0.1.2 resolution: "require-like@npm:0.1.2" @@ -43978,7 +44545,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.6.3, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.0, semver@npm:^7.5.1, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": +"semver@npm:7.6.3, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.0, semver@npm:^7.5.1, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -44291,6 +44858,13 @@ __metadata: languageName: node linkType: hard +"shimmer@npm:^1.2.1": + version: 1.2.1 + resolution: "shimmer@npm:1.2.1" + checksum: 10c0/ae8b27c389db2a00acfc8da90240f11577685a8f3e40008f826a3bea8b4f3b3ecd305c26be024b4a0fd3b123d132c1569d6e238097960a9a543b6c60760fb46a + languageName: node + linkType: hard + "side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": version: 1.0.6 resolution: "side-channel@npm:1.0.6" @@ -47034,10 +47608,9 @@ __metadata: "@ptc-org/nestjs-query-typeorm": "npm:4.2.1-alpha.2" "@react-email/components": "npm:0.0.12" "@react-email/render": "npm:0.0.10" - "@sentry/node": "npm:^7.99.0" - "@sentry/profiling-node": "npm:^1.3.4" - "@sentry/react": "npm:^7.88.0" - "@sentry/tracing": "npm:^7.99.0" + "@sentry/node": "npm:^8" + "@sentry/profiling-node": "npm:^8" + "@sentry/react": "npm:^8" "@sentry/types": "npm:^7.109.0" "@sniptt/guards": "npm:^0.2.0" "@stoplight/elements": "npm:^8.0.5"