From a57e4c9e0ab6d804b277934a924552dcd2a85e9a Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 23 May 2024 10:05:14 +0000 Subject: [PATCH 1/2] fix(node): Change import of `@prisma/instrumentation` to use default import --- packages/node/src/integrations/tracing/prisma.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/node/src/integrations/tracing/prisma.ts b/packages/node/src/integrations/tracing/prisma.ts index 7652ea793530..5e7dd3af9c94 100644 --- a/packages/node/src/integrations/tracing/prisma.ts +++ b/packages/node/src/integrations/tracing/prisma.ts @@ -1,5 +1,6 @@ -// When importing CJS modules into an ESM module, we cannot import the named exports directly. -import * as prismaInstrumentation from '@prisma/instrumentation'; +// The "@prisma/instrumentation" package is CJS, meaning we cannot use named exports, or the "import * as" syntax, otherwise we will break people on ESM, importing `prismaIntegration`. +import prismaInstrumentation from '@prisma/instrumentation'; + import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, defineIntegration, spanToJSON } from '@sentry/core'; import { addOpenTelemetryInstrumentation } from '@sentry/opentelemetry'; import type { IntegrationFn } from '@sentry/types'; From f2c6e8ab46be7c47b3a8611278bf3fcd584e4605 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Fri, 24 May 2024 12:27:27 +0000 Subject: [PATCH 2/2] access default --- packages/node/src/integrations/tracing/prisma.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/node/src/integrations/tracing/prisma.ts b/packages/node/src/integrations/tracing/prisma.ts index 5e7dd3af9c94..c2874a89f19b 100644 --- a/packages/node/src/integrations/tracing/prisma.ts +++ b/packages/node/src/integrations/tracing/prisma.ts @@ -1,6 +1,5 @@ -// The "@prisma/instrumentation" package is CJS, meaning we cannot use named exports, or the "import * as" syntax, otherwise we will break people on ESM, importing `prismaIntegration`. -import prismaInstrumentation from '@prisma/instrumentation'; - +// When importing CJS modules into an ESM module, we cannot import the named exports directly. +import * as prismaInstrumentation from '@prisma/instrumentation'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, defineIntegration, spanToJSON } from '@sentry/core'; import { addOpenTelemetryInstrumentation } from '@sentry/opentelemetry'; import type { IntegrationFn } from '@sentry/types'; @@ -9,9 +8,14 @@ const _prismaIntegration = (() => { return { name: 'Prisma', setupOnce() { + const EsmInteropPrismaInstrumentation: typeof prismaInstrumentation.PrismaInstrumentation = + // @ts-expect-error We need to do the following for interop reasons + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + prismaInstrumentation.default?.PrismaInstrumentation || prismaInstrumentation.PrismaInstrumentation; + addOpenTelemetryInstrumentation( // does not have a hook to adjust spans & add origin - new prismaInstrumentation.PrismaInstrumentation({}), + new EsmInteropPrismaInstrumentation({}), ); },