From b4cee66ab943fbfadc9e38046313045c3eefc3a0 Mon Sep 17 00:00:00 2001 From: JPeer264 Date: Thu, 30 Jul 2026 19:04:15 +0200 Subject: [PATCH 1/2] ref(cloudflare)!: Remove wrapRequestHandler from main entrypoint --- packages/cloudflare/src/index.ts | 2 -- packages/nuxt/src/runtime/plugins/sentry-cloudflare.server.ts | 3 ++- packages/sveltekit/src/worker/cloudflare.ts | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/cloudflare/src/index.ts b/packages/cloudflare/src/index.ts index a95da03e25ec..de232a39751e 100644 --- a/packages/cloudflare/src/index.ts +++ b/packages/cloudflare/src/index.ts @@ -121,8 +121,6 @@ export { defineCloudflareOptions } from './defineCloudflareOptions'; export { instrumentAgentWithSentry, instrumentDurableObjectWithSentry } from './durableobject'; export { sentryPagesPlugin } from './pages-plugin'; -export { wrapRequestHandler } from './request'; - export { CloudflareClient } from './client'; export { getDefaultIntegrations } from './sdk'; diff --git a/packages/nuxt/src/runtime/plugins/sentry-cloudflare.server.ts b/packages/nuxt/src/runtime/plugins/sentry-cloudflare.server.ts index d45d45d0d4ed..e16dc5bf4d4a 100644 --- a/packages/nuxt/src/runtime/plugins/sentry-cloudflare.server.ts +++ b/packages/nuxt/src/runtime/plugins/sentry-cloudflare.server.ts @@ -1,5 +1,6 @@ import type { CloudflareOptions } from '@sentry/cloudflare'; -import { setAsyncLocalStorageAsyncContextStrategy, wrapRequestHandler } from '@sentry/cloudflare'; +import { setAsyncLocalStorageAsyncContextStrategy } from '@sentry/cloudflare'; +import { wrapRequestHandler } from '@sentry/cloudflare/request'; import { debug, getDefaultIsolationScope, getIsolationScope, getTraceData } from '@sentry/core'; import type { H3Event } from 'h3'; import type { NitroApp, NitroAppPlugin } from 'nitropack'; diff --git a/packages/sveltekit/src/worker/cloudflare.ts b/packages/sveltekit/src/worker/cloudflare.ts index 9cacad6f4cb8..4f489496876e 100644 --- a/packages/sveltekit/src/worker/cloudflare.ts +++ b/packages/sveltekit/src/worker/cloudflare.ts @@ -2,8 +2,8 @@ import { type CloudflareOptions, getDefaultIntegrations as getDefaultCloudflareIntegrations, setAsyncLocalStorageAsyncContextStrategy, - wrapRequestHandler, } from '@sentry/cloudflare'; +import { wrapRequestHandler } from '@sentry/cloudflare/request'; import { addNonEnumerableProperty } from '@sentry/core'; import type { Handle } from '@sveltejs/kit'; import { rewriteFramesIntegration } from '../server-common/integrations/rewriteFramesIntegration'; From 8b571d04012d3a968c3d53eb679cdaec74de81ec Mon Sep 17 00:00:00 2001 From: JPeer264 Date: Fri, 31 Jul 2026 10:22:10 +0200 Subject: [PATCH 2/2] fixup! ref(cloudflare)!: Remove wrapRequestHandler from main entrypoint --- .../sveltekit/test/worker/cloudflare.test.ts | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/sveltekit/test/worker/cloudflare.test.ts b/packages/sveltekit/test/worker/cloudflare.test.ts index e271e27aea36..75fb9e8727d8 100644 --- a/packages/sveltekit/test/worker/cloudflare.test.ts +++ b/packages/sveltekit/test/worker/cloudflare.test.ts @@ -1,9 +1,15 @@ -import { beforeEach } from 'node:test'; import * as SentryCloudflare from '@sentry/cloudflare'; +import { wrapRequestHandler } from '@sentry/cloudflare/request'; +import type * as SentryCloudflareRequest from '@sentry/cloudflare/request'; import type { Carrier, GLOBAL_OBJ } from '@sentry/core'; -import { describe, expect, it, vi } from 'vitest'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { initCloudflareSentryHandle } from '../../src/worker'; +vi.mock('@sentry/cloudflare/request', async importOriginal => { + const actual = await importOriginal(); + return { ...actual, wrapRequestHandler: vi.fn(actual.wrapRequestHandler) }; +}); + const globalWithSentry = globalThis as typeof GLOBAL_OBJ & Carrier; function getHandlerInput() { @@ -19,6 +25,7 @@ function getHandlerInput() { describe('initCloudflareSentryHandle', () => { beforeEach(() => { delete globalWithSentry.__SENTRY__; + vi.mocked(wrapRequestHandler).mockClear(); }); it('sets the async context strategy when called', () => { @@ -36,15 +43,15 @@ describe('initCloudflareSentryHandle', () => { const { options, event, resolve, request, context } = getHandlerInput(); // @ts-expect-error - resolving an empty object is enough for this test - vi.spyOn(SentryCloudflare, 'wrapRequestHandler').mockImplementationOnce((_, cb) => cb()); + vi.mocked(wrapRequestHandler).mockImplementationOnce((_, cb) => cb()); const handle = initCloudflareSentryHandle(options); // @ts-expect-error - only passing a partial event object await handle({ event, resolve }); - expect(SentryCloudflare.wrapRequestHandler).toHaveBeenCalledTimes(1); - expect(SentryCloudflare.wrapRequestHandler).toHaveBeenCalledWith( + expect(wrapRequestHandler).toHaveBeenCalledTimes(1); + expect(wrapRequestHandler).toHaveBeenCalledWith( { options: expect.objectContaining({ dsn: options.dsn }), request, context, captureErrors: false }, expect.any(Function), ); @@ -57,7 +64,7 @@ describe('initCloudflareSentryHandle', () => { const locals = {}; // @ts-expect-error - resolving an empty object is enough for this test - vi.spyOn(SentryCloudflare, 'wrapRequestHandler').mockImplementationOnce((_, cb) => cb()); + vi.mocked(wrapRequestHandler).mockImplementationOnce((_, cb) => cb()); const handle = initCloudflareSentryHandle(options); @@ -74,14 +81,14 @@ describe('initCloudflareSentryHandle', () => { delete event.platform; // @ts-expect-error - resolving an empty object is enough for this test - vi.spyOn(SentryCloudflare, 'wrapRequestHandler').mockImplementationOnce((_, cb) => cb()); + vi.mocked(wrapRequestHandler).mockImplementationOnce((_, cb) => cb()); const handle = initCloudflareSentryHandle(options); // @ts-expect-error - only passing a partial event object await handle({ event, resolve }); - expect(SentryCloudflare.wrapRequestHandler).not.toHaveBeenCalled(); + expect(wrapRequestHandler).not.toHaveBeenCalled(); expect(resolve).toHaveBeenCalledTimes(1); }); });