From 89808338aee90e9c0006923d27c5c4bd88198f0f Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 18 Jun 2025 16:26:40 -0400 Subject: [PATCH 1/6] fix(cloudflare): Import types explicitly from worker-types --- .../cloudflare-hono/src/index.ts | 14 ++++++++++++ packages/cloudflare/package.json | 2 +- packages/cloudflare/src/durableobject.ts | 6 ++--- packages/cloudflare/src/handler.ts | 8 +++++++ packages/cloudflare/src/pages-plugin.ts | 1 + packages/cloudflare/src/request.ts | 22 +++++++++++++++---- packages/cloudflare/src/scope-utils.ts | 2 +- packages/cloudflare/tsconfig.json | 3 +-- yarn.lock | 9 ++++---- 9 files changed, 51 insertions(+), 16 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/cloudflare-hono/src/index.ts b/dev-packages/e2e-tests/test-applications/cloudflare-hono/src/index.ts index 7cd667c72408..7ac2f9248d01 100644 --- a/dev-packages/e2e-tests/test-applications/cloudflare-hono/src/index.ts +++ b/dev-packages/e2e-tests/test-applications/cloudflare-hono/src/index.ts @@ -1,4 +1,5 @@ import { Hono } from 'hono'; +import { DurableObject } from 'cloudflare:workers'; import * as Sentry from '@sentry/cloudflare'; const app = new Hono(); @@ -25,6 +26,19 @@ app.notFound(ctx => { return ctx.json({ message: 'Not Found' }, 404); }); +class MyDurableObjectBase extends DurableObject { + // impl +} + +// Typecheck that the instrumented durable object is valid +export const MyDurableObject = Sentry.instrumentDurableObjectWithSentry( + (env: Env) => ({ + dsn: env?.E2E_TEST_DSN, + tracesSampleRate: 1.0, + }), + MyDurableObjectBase, +); + export default Sentry.withSentry( (env: Env) => ({ dsn: env?.E2E_TEST_DSN, diff --git a/packages/cloudflare/package.json b/packages/cloudflare/package.json index 7df19ebc4636..93e08cf45c4e 100644 --- a/packages/cloudflare/package.json +++ b/packages/cloudflare/package.json @@ -60,7 +60,7 @@ } }, "devDependencies": { - "@cloudflare/workers-types": "4.20240725.0", + "@cloudflare/workers-types": "^4.20250618.0", "@types/node": "^18.19.1", "wrangler": "^3.67.1" }, diff --git a/packages/cloudflare/src/durableobject.ts b/packages/cloudflare/src/durableobject.ts index 35fbb5096a41..7a769213ebb4 100644 --- a/packages/cloudflare/src/durableobject.ts +++ b/packages/cloudflare/src/durableobject.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/unbound-method */ +import type { DurableObject, DurableObjectState, ExecutionContext, Rpc } from '@cloudflare/workers-types'; import { captureException, flush, @@ -9,7 +10,6 @@ import { withIsolationScope, withScope, } from '@sentry/core'; -import type { DurableObject } from 'cloudflare:workers'; import { setAsyncLocalStorageAsyncContextStrategy } from './async'; import type { CloudflareOptions } from './client'; import { isInstrumented, markAsInstrumented } from './instrument'; @@ -135,8 +135,8 @@ function wrapMethodWithSentry any>( */ export function instrumentDurableObjectWithSentry< E, - T extends DurableObject, - C extends new (state: DurableObjectState, env: E) => T, + T extends DurableObject & Rpc.DurableObjectBranded, + C extends new (ctx: DurableObjectState, env: E) => T, >(optionsCallback: (env: E) => CloudflareOptions, DurableObjectClass: C): C { return new Proxy(DurableObjectClass, { construct(target, [context, env]) { diff --git a/packages/cloudflare/src/handler.ts b/packages/cloudflare/src/handler.ts index d3d1f80dbbd5..b0919437ae67 100644 --- a/packages/cloudflare/src/handler.ts +++ b/packages/cloudflare/src/handler.ts @@ -1,3 +1,11 @@ +import type { + EmailExportedHandler, + ExportedHandler, + ExportedHandlerFetchHandler, + ExportedHandlerQueueHandler, + ExportedHandlerScheduledHandler, + ExportedHandlerTailHandler, +} from '@cloudflare/workers-types'; import { captureException, flush, diff --git a/packages/cloudflare/src/pages-plugin.ts b/packages/cloudflare/src/pages-plugin.ts index 8bdc806b5693..07a6c4bb456b 100644 --- a/packages/cloudflare/src/pages-plugin.ts +++ b/packages/cloudflare/src/pages-plugin.ts @@ -1,3 +1,4 @@ +import type { EventPluginContext, PagesPluginFunction } from '@cloudflare/workers-types'; import { setAsyncLocalStorageAsyncContextStrategy } from './async'; import type { CloudflareOptions } from './client'; import { wrapRequestHandler } from './request'; diff --git a/packages/cloudflare/src/request.ts b/packages/cloudflare/src/request.ts index f1905609fb94..3c8ce461b04c 100644 --- a/packages/cloudflare/src/request.ts +++ b/packages/cloudflare/src/request.ts @@ -1,4 +1,10 @@ -import type { ExecutionContext, IncomingRequestCfProperties } from '@cloudflare/workers-types'; +import type { + EventPluginContext, + ExecutionContext, + IncomingRequestCfProperties, + Request, + Response, +} from '@cloudflare/workers-types'; import { captureException, continueTrace, @@ -14,10 +20,18 @@ import type { CloudflareOptions } from './client'; import { addCloudResourceContext, addCultureContext, addRequest } from './scope-utils'; import { init } from './sdk'; -interface RequestHandlerWrapperOptions { +interface RequestHandlerWrapperOptions< + Env = unknown, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + Params extends string = any, + Data extends Record = Record, + // Although it is not ideal to use `any` here, it makes usage more flexible for different setups. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + PluginParams = any, +> { options: CloudflareOptions; request: Request>; - context: ExecutionContext; + context: ExecutionContext | EventPluginContext; } /** @@ -33,7 +47,7 @@ export function wrapRequestHandler( // In certain situations, the passed context can become undefined. // For example, for Astro while prerendering pages at build time. // see: https://github.com/getsentry/sentry-javascript/issues/13217 - const context = wrapperOptions.context as ExecutionContext | undefined; + const context = wrapperOptions.context as RequestHandlerWrapperOptions['context'] | undefined; const client = init(options); isolationScope.setClient(client); diff --git a/packages/cloudflare/src/scope-utils.ts b/packages/cloudflare/src/scope-utils.ts index 9a3f7d286dfc..25bf257416b8 100644 --- a/packages/cloudflare/src/scope-utils.ts +++ b/packages/cloudflare/src/scope-utils.ts @@ -1,4 +1,4 @@ -import type { IncomingRequestCfProperties } from '@cloudflare/workers-types'; +import type { IncomingRequestCfProperties, Request } from '@cloudflare/workers-types'; import type { Scope } from '@sentry/core'; import { winterCGRequestToRequestData } from '@sentry/core'; diff --git a/packages/cloudflare/tsconfig.json b/packages/cloudflare/tsconfig.json index ff89f0feaa23..13b4e62815ef 100644 --- a/packages/cloudflare/tsconfig.json +++ b/packages/cloudflare/tsconfig.json @@ -4,7 +4,6 @@ "include": ["src/**/*"], "compilerOptions": { - "module": "esnext", - "types": ["node", "@cloudflare/workers-types"] + "module": "esnext" } } diff --git a/yarn.lock b/yarn.lock index ce3e50da8c41..9d31bbcf7c07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2671,10 +2671,10 @@ resolved "https://registry.yarnpkg.com/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20240718.0.tgz#940893e62df7f5a8ec895572b834c95c1e256fbd" integrity sha512-YpCRvvT47XanFum7C3SedOZKK6BfVhqmwdAAVAQFyc4gsCdegZo0JkUkdloC/jwuWlbCACOG2HTADHOqyeolzQ== -"@cloudflare/workers-types@4.20240725.0": - version "4.20240725.0" - resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20240725.0.tgz#e151e0c069c0070b4d7168c7b0d4ae6c50d3f237" - integrity sha512-L6T/Bg50zm9IIACQVQ0CdVcQL+2nLkRXdPz6BsXF3SlzgjyWR5ndVctAbfr/HLV7aKYxWnnEZsIORsTWb+FssA== +"@cloudflare/workers-types@^4.20250618.0": + version "4.20250618.0" + resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20250618.0.tgz#58b794beab67c13a38fee987e7c7de078a519ab5" + integrity sha512-5c26+nZEXDRrlzsIaVt3npuElwLi6bhLZHyDfMX5JmcM9sogeBMyyXrU3gJG0DII3QenE7DuyMC8uFzJHTcnDA== "@cnakazawa/watch@^1.0.3": version "1.0.4" @@ -27148,7 +27148,6 @@ stylus@0.59.0, stylus@^0.59.0: sucrase@^3.27.0, sucrase@^3.35.0, sucrase@getsentry/sucrase#es2020-polyfills: version "3.36.0" - uid fd682f6129e507c00bb4e6319cc5d6b767e36061 resolved "https://codeload.github.com/getsentry/sucrase/tar.gz/fd682f6129e507c00bb4e6319cc5d6b767e36061" dependencies: "@jridgewell/gen-mapping" "^0.3.2" From 47ef00c419f2d2204c335cc8faf6e8d87aa5ce69 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 18 Jun 2025 19:54:52 -0400 Subject: [PATCH 2/6] adjust sveltekit --- packages/sveltekit/src/worker/cloudflare.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/sveltekit/src/worker/cloudflare.ts b/packages/sveltekit/src/worker/cloudflare.ts index 9508c331369e..2d6a92167a41 100644 --- a/packages/sveltekit/src/worker/cloudflare.ts +++ b/packages/sveltekit/src/worker/cloudflare.ts @@ -5,7 +5,7 @@ import { wrapRequestHandler, } from '@sentry/cloudflare'; import { addNonEnumerableProperty } from '@sentry/core'; -import type { Handle } from '@sveltejs/kit'; +import type { Handle, MaybePromise } from '@sveltejs/kit'; import { rewriteFramesIntegration } from '../server-common/rewriteFramesIntegration'; /** @@ -34,12 +34,16 @@ export function initCloudflareSentryHandle(options: CloudflareOptions): Handle { return wrapRequestHandler( { options: opts, + // @ts-expect-error This expects a cloudflare request, but we cannot type + // it in the sveltekit worker. request: event.request, // @ts-expect-error This will exist in Cloudflare context: event.platform.context, }, () => resolve(event), - ); + // We need to cast this because `wrapRequestHandler` returns a Cloudflare Response, + // which is not compatible with the regular Response type. + ) as unknown as MaybePromise; } return resolve(event); }; From c3868b9ce9634a5012d62d9759ed2aaab58dba90 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 19 Jun 2025 18:00:55 -0400 Subject: [PATCH 3/6] sync cloudflare versions --- .../test-applications/cloudflare-hono/package.json | 2 +- .../test-applications/cloudflare-workers/package.json | 2 +- packages/cloudflare/package.json | 2 +- yarn.lock | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/cloudflare-hono/package.json b/dev-packages/e2e-tests/test-applications/cloudflare-hono/package.json index b9667aeef85f..bbeb0f2888c9 100644 --- a/dev-packages/e2e-tests/test-applications/cloudflare-hono/package.json +++ b/dev-packages/e2e-tests/test-applications/cloudflare-hono/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.8.31", - "@cloudflare/workers-types": "^4.20250521.0", + "@cloudflare/workers-types": "^4.20250619.0", "vitest": "3.1.0", "wrangler": "^4.16.0" }, diff --git a/dev-packages/e2e-tests/test-applications/cloudflare-workers/package.json b/dev-packages/e2e-tests/test-applications/cloudflare-workers/package.json index e926cc164121..1b50583a8d4e 100644 --- a/dev-packages/e2e-tests/test-applications/cloudflare-workers/package.json +++ b/dev-packages/e2e-tests/test-applications/cloudflare-workers/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.4.5", - "@cloudflare/workers-types": "^4.20240725.0", + "@cloudflare/workers-types": "^4.20250619.0", "typescript": "^5.5.2", "vitest": "1.6.1", "wrangler": "^3.60.3" diff --git a/packages/cloudflare/package.json b/packages/cloudflare/package.json index 93e08cf45c4e..9b7dff1a6410 100644 --- a/packages/cloudflare/package.json +++ b/packages/cloudflare/package.json @@ -60,7 +60,7 @@ } }, "devDependencies": { - "@cloudflare/workers-types": "^4.20250618.0", + "@cloudflare/workers-types": "^4.20250619.0", "@types/node": "^18.19.1", "wrangler": "^3.67.1" }, diff --git a/yarn.lock b/yarn.lock index 9d31bbcf7c07..d70e9bfc40f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2671,10 +2671,10 @@ resolved "https://registry.yarnpkg.com/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20240718.0.tgz#940893e62df7f5a8ec895572b834c95c1e256fbd" integrity sha512-YpCRvvT47XanFum7C3SedOZKK6BfVhqmwdAAVAQFyc4gsCdegZo0JkUkdloC/jwuWlbCACOG2HTADHOqyeolzQ== -"@cloudflare/workers-types@^4.20250618.0": - version "4.20250618.0" - resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20250618.0.tgz#58b794beab67c13a38fee987e7c7de078a519ab5" - integrity sha512-5c26+nZEXDRrlzsIaVt3npuElwLi6bhLZHyDfMX5JmcM9sogeBMyyXrU3gJG0DII3QenE7DuyMC8uFzJHTcnDA== +"@cloudflare/workers-types@^4.20250619.0": + version "4.20250619.0" + resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20250619.0.tgz#8a46679df484f9bff03b8d76b6c7e68cda1e6353" + integrity sha512-OYmVTA45rEEsOmchtltDnrG6BBaOPB7LUGKoyE8AwkfanUOc3/wwuMZ50i1jq6NKrV1TZLsKUKzrwe1NtVGOzQ== "@cnakazawa/watch@^1.0.3": version "1.0.4" From 5ccfc7cf2208445999a33d6a92d06e0c569cd557 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Fri, 20 Jun 2025 00:03:31 -0400 Subject: [PATCH 4/6] clean up instrumentDurableObjectWithSentry generics --- packages/cloudflare/src/durableobject.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/cloudflare/src/durableobject.ts b/packages/cloudflare/src/durableobject.ts index 7a769213ebb4..4fe5f675c103 100644 --- a/packages/cloudflare/src/durableobject.ts +++ b/packages/cloudflare/src/durableobject.ts @@ -125,7 +125,7 @@ function wrapMethodWithSentry any>( * } * * export const MyDurableObject = instrumentDurableObjectWithSentry( - * env => ({ + * (env: Env) => ({ * dsn: env.SENTRY_DSN, * tracesSampleRate: 1.0, * }), @@ -133,18 +133,19 @@ function wrapMethodWithSentry any>( * ); * ``` */ -export function instrumentDurableObjectWithSentry< - E, - T extends DurableObject & Rpc.DurableObjectBranded, - C extends new (ctx: DurableObjectState, env: E) => T, ->(optionsCallback: (env: E) => CloudflareOptions, DurableObjectClass: C): C { - return new Proxy(DurableObjectClass, { +export function instrumentDurableObjectWithSentry( + optionsCallback: (env: E) => CloudflareOptions, + DurableObjectClass: C, +): C { + // We need to use `any` here because of type issues with the Durable Object constructor. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return new Proxy(DurableObjectClass as any, { construct(target, [context, env]) { setAsyncLocalStorageAsyncContextStrategy(); const options = getFinalOptions(optionsCallback(env), env); - const obj = new target(context, env); + const obj = new target(context, env) as DurableObject & Rpc.DurableObjectBranded; // These are the methods that are available on a Durable Object // ref: https://developers.cloudflare.com/durable-objects/api/base/ From cbc95ccfa81e5ad781b2d6f096c97d62f28cee4f Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Fri, 20 Jun 2025 13:40:11 -0400 Subject: [PATCH 5/6] relax request types --- packages/cloudflare/src/request.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/cloudflare/src/request.ts b/packages/cloudflare/src/request.ts index 3c8ce461b04c..1f10f1ab8cfa 100644 --- a/packages/cloudflare/src/request.ts +++ b/packages/cloudflare/src/request.ts @@ -2,8 +2,7 @@ import type { EventPluginContext, ExecutionContext, IncomingRequestCfProperties, - Request, - Response, + Request as CloudflareRequest, } from '@cloudflare/workers-types'; import { captureException, @@ -30,7 +29,7 @@ interface RequestHandlerWrapperOptions< PluginParams = any, > { options: CloudflareOptions; - request: Request>; + request: Request; context: ExecutionContext | EventPluginContext; } @@ -43,6 +42,7 @@ export function wrapRequestHandler( ): Promise { return withIsolationScope(async isolationScope => { const { options, request } = wrapperOptions; + const cloudflareRequest = request as unknown as CloudflareRequest; // In certain situations, the passed context can become undefined. // For example, for Astro while prerendering pages at build time. @@ -64,10 +64,10 @@ export function wrapRequestHandler( addCloudResourceContext(isolationScope); if (request) { - addRequest(isolationScope, request); - if (request.cf) { - addCultureContext(isolationScope, request.cf); - attributes['network.protocol.name'] = request.cf.httpProtocol; + addRequest(isolationScope, cloudflareRequest); + if (cloudflareRequest.cf) { + addCultureContext(isolationScope, cloudflareRequest.cf as IncomingRequestCfProperties); + attributes['network.protocol.name'] = cloudflareRequest.cf.httpProtocol; } } From fe970eea06007b6225059a7b5560b75f2e7b0384 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Fri, 20 Jun 2025 16:36:38 -0400 Subject: [PATCH 6/6] some more type fixes --- packages/cloudflare/src/pages-plugin.ts | 8 ++- packages/cloudflare/src/request.ts | 2 +- yarn.lock | 75 ++++++++++++++++++++++++- 3 files changed, 82 insertions(+), 3 deletions(-) diff --git a/packages/cloudflare/src/pages-plugin.ts b/packages/cloudflare/src/pages-plugin.ts index 07a6c4bb456b..dab0596733fb 100644 --- a/packages/cloudflare/src/pages-plugin.ts +++ b/packages/cloudflare/src/pages-plugin.ts @@ -50,6 +50,12 @@ export function sentryPagesPlugin< setAsyncLocalStorageAsyncContextStrategy(); return context => { const options = typeof handlerOrOptions === 'function' ? handlerOrOptions(context) : handlerOrOptions; - return wrapRequestHandler({ options, request: context.request, context }, () => context.next()); + return wrapRequestHandler( + { options, request: context.request, context }, + // Need to mark as any because of incompatibilities between Cloudflare and regular Request types + // This should still be fine because we don't expose this type externally in `sentryPagesPlugin`. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + () => context.next() as any, + ) as ReturnType>; }; } diff --git a/packages/cloudflare/src/request.ts b/packages/cloudflare/src/request.ts index 1f10f1ab8cfa..d7faac1964a1 100644 --- a/packages/cloudflare/src/request.ts +++ b/packages/cloudflare/src/request.ts @@ -29,7 +29,7 @@ interface RequestHandlerWrapperOptions< PluginParams = any, > { options: CloudflareOptions; - request: Request; + request: Request | CloudflareRequest; context: ExecutionContext | EventPluginContext; } diff --git a/yarn.lock b/yarn.lock index d70e9bfc40f6..055ea33f2e2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10264,6 +10264,11 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + autoprefixer@^10.4.13, autoprefixer@^10.4.19, autoprefixer@^10.4.20, autoprefixer@^10.4.8: version "10.4.20" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" @@ -15681,6 +15686,11 @@ fast-printf@^1.6.9: dependencies: boolean "^3.1.4" +fast-redact@^3.1.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4" + integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A== + fast-safe-stringify@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" @@ -22405,6 +22415,11 @@ ohash@^1.1.3, ohash@^1.1.4: resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.4.tgz#ae8d83014ab81157d2c285abf7792e2995fadd72" integrity sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g== +on-exit-leak-free@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" + integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== + on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -23319,6 +23334,35 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pino-abstract-transport@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" + integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== + dependencies: + split2 "^4.0.0" + +pino-std-serializers@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" + integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== + +pino@^9.0.0: + version "9.7.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.7.0.tgz#ff7cd86eb3103ee620204dbd5ca6ffda8b53f645" + integrity sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^2.0.0" + pino-std-serializers "^7.0.0" + process-warning "^5.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^4.0.1" + thread-stream "^3.0.0" + pirates@^4.0.1: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" @@ -24238,6 +24282,11 @@ process-relative-require@^1.0.0: dependencies: node-modules-path "^1.0.0" +process-warning@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" + integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA== + process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -24420,6 +24469,11 @@ queue-tick@^1.0.1: resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" @@ -24810,6 +24864,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +real-require@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== + realistic-structured-clone@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/realistic-structured-clone/-/realistic-structured-clone-3.0.0.tgz#7b518049ce2dad41ac32b421cd297075b00e3e35" @@ -26427,6 +26486,13 @@ solid-use@^0.8.0: resolved "https://registry.yarnpkg.com/solid-use/-/solid-use-0.8.0.tgz#d46258c45edb0f4c621285e0ad1aa6b6a674d79b" integrity sha512-YX+XmcKLvSx3bwMimMhFy40ZkDnShnUcEw6cW6fSscwKEgl1TG3GlgAvkBmQ3AeWjvQSd8+HGTr82ImsrjkkqA== +sonic-boom@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d" + integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww== + dependencies: + atomic-sleep "^1.0.0" + sorcery@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-1.0.0.tgz#b5bb81fb9706c0c240f5f2d3214b4d2be649e07f" @@ -26675,7 +26741,7 @@ split2@^3.2.2: dependencies: readable-stream "^3.0.0" -split2@^4.1.0: +split2@^4.0.0, split2@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== @@ -27565,6 +27631,13 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +thread-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" + integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== + dependencies: + real-require "^0.2.0" + throttleit@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-2.1.0.tgz#a7e4aa0bf4845a5bd10daa39ea0c783f631a07b4"