Files
klz-cables.com/.pnpm-store/v10/files/38/763cb08a5709af77770424e094131fb8d53fd8aaad7d966aa01b58ebb696b8f82f3dfc02354d4d81b506cf3cd2225092636178462c6af6e7f88ead15124a20
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

1 line
7.7 KiB
Plaintext

{"version":3,"file":"wrapRouteHandlerWithSentry.js","sources":["../../../src/common/wrapRouteHandlerWithSentry.ts"],"sourcesContent":["import type { RequestEventData } from '@sentry/core';\nimport {\n captureException,\n getActiveSpan,\n getCapturedScopesOnSpan,\n getIsolationScope,\n getRootSpan,\n handleCallbackErrors,\n propagationContextFromHeaders,\n Scope,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n setCapturedScopesOnSpan,\n setHttpStatus,\n winterCGHeadersToDict,\n withIsolationScope,\n withScope,\n} from '@sentry/core';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\nimport type { RouteHandlerContext } from './types';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\nimport { commonObjectToIsolationScope } from './utils/tracingUtils';\n\n/**\n * Wraps a Next.js App Router Route handler with Sentry error and performance instrumentation.\n *\n * NOTICE: This wrapper is for App Router API routes. If you are looking to wrap Pages Router API routes use `wrapApiHandlerWithSentry` instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapRouteHandlerWithSentry<F extends (...args: any[]) => any>(\n routeHandler: F,\n context: RouteHandlerContext,\n): (...args: Parameters<F>) => ReturnType<F> extends Promise<unknown> ? ReturnType<F> : Promise<ReturnType<F>> {\n const { method, parameterizedRoute, headers } = context;\n\n return new Proxy(routeHandler, {\n apply: async (originalFunction, thisArg, args) => {\n const activeSpan = getActiveSpan();\n const rootSpan = activeSpan ? getRootSpan(activeSpan) : undefined;\n\n let edgeRuntimeIsolationScopeOverride: Scope | undefined;\n if (rootSpan && process.env.NEXT_RUNTIME === 'edge') {\n const isolationScope = commonObjectToIsolationScope(headers);\n const { scope } = getCapturedScopesOnSpan(rootSpan);\n setCapturedScopesOnSpan(rootSpan, scope ?? new Scope(), isolationScope);\n\n edgeRuntimeIsolationScopeOverride = isolationScope;\n\n rootSpan.updateName(`${method} ${parameterizedRoute}`);\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'route');\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'http.server');\n }\n\n return withIsolationScope(\n process.env.NEXT_RUNTIME === 'edge' ? edgeRuntimeIsolationScopeOverride : getIsolationScope(),\n () => {\n return withScope(async scope => {\n scope.setTransactionName(`${method} ${parameterizedRoute}`);\n\n if (process.env.NEXT_RUNTIME === 'edge') {\n const completeHeadersDict: Record<string, string> = headers ? winterCGHeadersToDict(headers) : {};\n const incomingPropagationContext = propagationContextFromHeaders(\n completeHeadersDict['sentry-trace'],\n completeHeadersDict['baggage'],\n );\n scope.setPropagationContext(incomingPropagationContext);\n scope.setSDKProcessingMetadata({\n normalizedRequest: {\n method,\n headers: completeHeadersDict,\n } satisfies RequestEventData,\n });\n }\n\n const response: Response = await handleCallbackErrors(\n () => originalFunction.apply(thisArg, args),\n error => {\n // Next.js throws errors when calling `redirect()`. We don't wanna report these.\n if (isRedirectNavigationError(error)) {\n // Don't do anything\n } else if (isNotFoundNavigationError(error)) {\n if (activeSpan) {\n setHttpStatus(activeSpan, 404);\n }\n if (rootSpan) {\n setHttpStatus(rootSpan, 404);\n }\n } else {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.function.nextjs.route_handler',\n },\n });\n }\n },\n () => {\n waitUntil(flushSafelyWithTimeout());\n },\n );\n\n try {\n if (response.status) {\n if (activeSpan) {\n setHttpStatus(activeSpan, response.status);\n }\n if (rootSpan) {\n setHttpStatus(rootSpan, response.status);\n }\n }\n } catch {\n // best effort - response may be undefined?\n }\n\n return response;\n });\n },\n );\n },\n });\n}\n"],"names":["getActiveSpan","getRootSpan","commonObjectToIsolationScope","getCapturedScopesOnSpan","setCapturedScopesOnSpan","Scope","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_OP","withIsolationScope","getIsolationScope","withScope","winterCGHeadersToDict","propagationContextFromHeaders","handleCallbackErrors","isRedirectNavigationError","isNotFoundNavigationError","setHttpStatus","captureException","waitUntil","flushSafelyWithTimeout"],"mappings":"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"}