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
1 line
4.9 KiB
Plaintext
1 line
4.9 KiB
Plaintext
{"version":3,"file":"wrapGenerationFunctionWithSentry.js","sources":["../../../src/common/wrapGenerationFunctionWithSentry.ts"],"sourcesContent":["import type { RequestEventData } from '@sentry/core';\nimport {\n captureException,\n getActiveSpan,\n getIsolationScope,\n handleCallbackErrors,\n SPAN_STATUS_ERROR,\n SPAN_STATUS_OK,\n winterCGHeadersToDict,\n} from '@sentry/core';\nimport type { GenerationFunctionContext } from '../common/types';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\n\n/**\n * Wraps a generation function (e.g. generateMetadata) with Sentry error instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapGenerationFunctionWithSentry<F extends (...args: any[]) => any>(\n generationFunction: F,\n context: GenerationFunctionContext,\n): F {\n return new Proxy(generationFunction, {\n apply: (originalFunction, thisArg, args) => {\n const isolationScope = getIsolationScope();\n\n let headers = undefined;\n // We try-catch here just in case anything goes wrong with the async storage since it is Next.js internal API\n try {\n headers = context.requestAsyncStorage?.getStore()?.headers;\n } catch {\n /** empty */\n }\n\n const headersDict = headers ? winterCGHeadersToDict(headers) : undefined;\n\n isolationScope.setSDKProcessingMetadata({\n normalizedRequest: {\n headers: headersDict,\n } satisfies RequestEventData,\n });\n\n return handleCallbackErrors(\n () => originalFunction.apply(thisArg, args),\n error => {\n const span = getActiveSpan();\n const { componentRoute, componentType, generationFunctionIdentifier } = context;\n let shouldCapture = true;\n isolationScope.setTransactionName(`${componentType}.${generationFunctionIdentifier} (${componentRoute})`);\n\n if (span) {\n if (isNotFoundNavigationError(error)) {\n // We don't want to report \"not-found\"s\n shouldCapture = false;\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n } else if (isRedirectNavigationError(error)) {\n // We don't want to report redirects\n shouldCapture = false;\n span.setStatus({ code: SPAN_STATUS_OK });\n } else {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n }\n\n if (shouldCapture) {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.function.nextjs.generation_function',\n data: {\n function: generationFunctionIdentifier,\n },\n },\n });\n }\n },\n () => {\n waitUntil(flushSafelyWithTimeout());\n },\n );\n },\n });\n}\n"],"names":["getIsolationScope","winterCGHeadersToDict","handleCallbackErrors","getActiveSpan","isNotFoundNavigationError","SPAN_STATUS_ERROR","isRedirectNavigationError","SPAN_STATUS_OK","captureException","waitUntil","flushSafelyWithTimeout"],"mappings":";;;;;;AAcA;AACA;AACA;AACA;AACO,SAAS,gCAAgC;AAChD,EAAE,kBAAkB;AACpB,EAAE,OAAO;AACT,EAAK;AACL,EAAE,OAAO,IAAI,KAAK,CAAC,kBAAkB,EAAE;AACvC,IAAI,KAAK,EAAE,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,KAAK;AAChD,MAAM,MAAM,cAAA,GAAiBA,sBAAiB,EAAE;;AAEhD,MAAM,IAAI,OAAA,GAAU,SAAS;AAC7B;AACA,MAAM,IAAI;AACV,QAAQ,OAAA,GAAU,OAAO,CAAC,mBAAmB,EAAE,QAAQ,EAAE,EAAE,OAAO;AAClE,MAAM,EAAE,MAAM;AACd;AACA,MAAM;;AAEN,MAAM,MAAM,WAAA,GAAc,OAAA,GAAUC,0BAAqB,CAAC,OAAO,CAAA,GAAI,SAAS;;AAE9E,MAAM,cAAc,CAAC,wBAAwB,CAAC;AAC9C,QAAQ,iBAAiB,EAAE;AAC3B,UAAU,OAAO,EAAE,WAAW;AAC9B,SAAQ;AACR,OAAO,CAAC;;AAER,MAAM,OAAOC,yBAAoB;AACjC,QAAQ,MAAM,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnD,QAAQ,SAAS;AACjB,UAAU,MAAM,IAAA,GAAOC,kBAAa,EAAE;AACtC,UAAU,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,4BAAA,EAA6B,GAAI,OAAO;AACzF,UAAU,IAAI,aAAA,GAAgB,IAAI;AAClC,UAAU,cAAc,CAAC,kBAAkB,CAAC,CAAC,EAAA,aAAA,CAAA,CAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,cAAA,CAAA,CAAA,CAAA,CAAA;;AAEA,UAAA,IAAA,IAAA,EAAA;AACA,YAAA,IAAAC,kDAAA,CAAA,KAAA,CAAA,EAAA;AACA;AACA,cAAA,aAAA,GAAA,KAAA;AACA,cAAA,IAAA,CAAA,SAAA,CAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,CAAA;AACA,YAAA,CAAA,MAAA,IAAAC,kDAAA,CAAA,KAAA,CAAA,EAAA;AACA;AACA,cAAA,aAAA,GAAA,KAAA;AACA,cAAA,IAAA,CAAA,SAAA,CAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,CAAA;AACA,YAAA,CAAA,MAAA;AACA,cAAA,IAAA,CAAA,SAAA,CAAA,EAAA,IAAA,EAAAF,sBAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,CAAA;AACA,YAAA;AACA,UAAA;;AAEA,UAAA,IAAA,aAAA,EAAA;AACA,YAAAG,qBAAA,CAAA,KAAA,EAAA;AACA,cAAA,SAAA,EAAA;AACA,gBAAA,OAAA,EAAA,KAAA;AACA,gBAAA,IAAA,EAAA,0CAAA;AACA,gBAAA,IAAA,EAAA;AACA,kBAAA,QAAA,EAAA,4BAAA;AACA,iBAAA;AACA,eAAA;AACA,aAAA,CAAA;AACA,UAAA;AACA,QAAA,CAAA;AACA,QAAA,MAAA;AACA,UAAAC,qBAAA,CAAAC,kCAAA,EAAA,CAAA;AACA,QAAA,CAAA;AACA,OAAA;AACA,IAAA,CAAA;AACA,GAAA,CAAA;AACA;;;;"} |