From 5fbcf2d3518e8ba6f0ad9d2754236e740f97d571 Mon Sep 17 00:00:00 2001 From: JPeer264 Date: Tue, 17 Mar 2026 14:31:30 +0100 Subject: [PATCH] fix(cloudflare): Use correct env types for withSentry --- packages/cloudflare/src/withSentry.ts | 5 ++-- packages/cloudflare/test/withSentry.test.ts | 27 ++++++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/cloudflare/src/withSentry.ts b/packages/cloudflare/src/withSentry.ts index addc82429b85..4655ab1a154d 100644 --- a/packages/cloudflare/src/withSentry.ts +++ b/packages/cloudflare/src/withSentry.ts @@ -1,12 +1,13 @@ +import type { env } from 'cloudflare:workers'; import { setAsyncLocalStorageAsyncContextStrategy } from './async'; import type { CloudflareOptions } from './client'; import { isInstrumented, markAsInstrumented } from './instrument'; -import { getHonoIntegration } from './integrations/hono'; import { instrumentExportedHandlerEmail } from './instrumentations/worker/instrumentEmail'; import { instrumentExportedHandlerFetch } from './instrumentations/worker/instrumentFetch'; import { instrumentExportedHandlerQueue } from './instrumentations/worker/instrumentQueue'; import { instrumentExportedHandlerScheduled } from './instrumentations/worker/instrumentScheduled'; import { instrumentExportedHandlerTail } from './instrumentations/worker/instrumentTail'; +import { getHonoIntegration } from './integrations/hono'; /** * Wrapper for Cloudflare handlers. @@ -20,7 +21,7 @@ import { instrumentExportedHandlerTail } from './instrumentations/worker/instrum * @returns The wrapped handler. */ export function withSentry< - Env = unknown, + Env = typeof env, QueueHandlerMessage = unknown, CfHostMetadata = unknown, T extends ExportedHandler = ExportedHandler< diff --git a/packages/cloudflare/test/withSentry.test.ts b/packages/cloudflare/test/withSentry.test.ts index 5b1f3ca9b17d..95f312c9ec54 100644 --- a/packages/cloudflare/test/withSentry.test.ts +++ b/packages/cloudflare/test/withSentry.test.ts @@ -7,7 +7,15 @@ import { withSentry } from '../src/withSentry'; import { markAsInstrumented } from '../src/instrument'; import * as HonoIntegration from '../src/integrations/hono'; -type HonoLikeApp = ExportedHandler< +declare global { + namespace Cloudflare { + interface Env { + SENTRY_DSN: string; + } + } +} + +type HonoLikeApp = ExportedHandler< Env, QueueHandlerMessage, CfHostMetadata @@ -16,11 +24,6 @@ type HonoLikeApp Response; }; -const MOCK_ENV = { - SENTRY_DSN: 'https://public@dsn.ingest.sentry.io/1337', - SENTRY_RELEASE: '1.1.1', -}; - describe('withSentry', () => { beforeEach(() => { vi.clearAllMocks(); @@ -33,7 +36,7 @@ describe('withSentry', () => { const handleHonoException = vi.fn(); vi.spyOn(HonoIntegration, 'getHonoIntegration').mockReturnValue({ handleHonoException } as any); - const honoApp = { + const honoApp: HonoLikeApp = { fetch(_request, _env, _context) { return new Response('test'); }, @@ -41,7 +44,7 @@ describe('withSentry', () => { errorHandler(err: Error) { return new Response(`Error: ${err.message}`, { status: 500 }); }, - } satisfies HonoLikeApp; + }; withSentry(env => ({ dsn: env.SENTRY_DSN }), honoApp); @@ -59,13 +62,13 @@ describe('withSentry', () => { const error = new Error('test hono error'); - const honoApp = { + const honoApp: HonoLikeApp = { fetch(_request, _env, _context) { return new Response('test'); }, onError() {}, errorHandler: originalErrorHandlerSpy, - } satisfies HonoLikeApp; + }; withSentry(env => ({ dsn: env.SENTRY_DSN }), honoApp); @@ -86,13 +89,13 @@ describe('withSentry', () => { markAsInstrumented(originalErrorHandler); - const honoApp = { + const honoApp: HonoLikeApp = { fetch(_request, _env, _context) { return new Response('test'); }, onError() {}, errorHandler: originalErrorHandler, - } satisfies HonoLikeApp; + }; withSentry(env => ({ dsn: env.SENTRY_DSN }), honoApp);