UNPKG

@sentry/nextjs

Version:
69 lines (65 loc) 3.77 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const api = require('@opentelemetry/api'); const attributes = require('@sentry/conventions/attributes'); const core = require('@sentry/core'); const opentelemetry = require('@sentry/opentelemetry'); const nextSpanAttributes = require('../common/nextSpanAttributes.js'); const addHeadersAsAttributes = require('../common/utils/addHeadersAsAttributes.js'); const dropMiddlewareTunnelRequests = require('../common/utils/dropMiddlewareTunnelRequests.js'); const tracingUtils = require('../common/utils/tracingUtils.js'); const vercelCronsMonitoring = require('./vercelCronsMonitoring.js'); const vercelQueuesMonitoring = require('./vercelQueuesMonitoring.js'); function handleOnSpanStart(span) { const spanAttributes = core.spanToJSON(span).data; const rootSpan = core.getRootSpan(span); const rootSpanAttributes = core.spanToJSON(rootSpan).data; const isRootSpan = span === rootSpan; dropMiddlewareTunnelRequests.dropMiddlewareTunnelRequests(span, spanAttributes); if (typeof spanAttributes?.[nextSpanAttributes.ATTR_NEXT_ROUTE] === "string") { if ( // eslint-disable-next-line typescript/no-deprecated (rootSpanAttributes?.[attributes.HTTP_REQUEST_METHOD] || rootSpanAttributes?.[attributes.HTTP_METHOD]) && !rootSpanAttributes?.[attributes.HTTP_ROUTE] ) { const route = spanAttributes[nextSpanAttributes.ATTR_NEXT_ROUTE].replace(/\/route$/, ""); rootSpan.updateName(route); rootSpan.setAttribute(attributes.HTTP_ROUTE, route); rootSpan.setAttribute(nextSpanAttributes.ATTR_NEXT_ROUTE, route); const method = rootSpanAttributes?.[attributes.HTTP_REQUEST_METHOD] || rootSpanAttributes?.[attributes.HTTP_METHOD]; if (typeof method === "string") { core.getIsolationScope().setTransactionName(`${method} ${route}`); } vercelCronsMonitoring.maybeStartCronCheckIn(rootSpan, route); vercelQueuesMonitoring.maybeEnrichQueueConsumerSpan(rootSpan); } } if (spanAttributes?.[nextSpanAttributes.ATTR_NEXT_SPAN_TYPE] === "Middleware.execute") { const middlewareName = spanAttributes[nextSpanAttributes.ATTR_NEXT_SPAN_NAME]; if (typeof middlewareName === "string") { rootSpan.updateName(middlewareName); rootSpan.setAttribute(attributes.HTTP_ROUTE, middlewareName); rootSpan.setAttribute(nextSpanAttributes.ATTR_NEXT_SPAN_NAME, middlewareName); } span.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, "auto"); } if (spanAttributes?.[nextSpanAttributes.ATTR_NEXT_SPAN_TYPE] !== void 0) { span.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, "auto"); } if (isRootSpan) { const headers = core.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers; addHeadersAsAttributes.addHeadersAsAttributes(headers, rootSpan); } if ((spanAttributes?.[nextSpanAttributes.ATTR_NEXT_SPAN_TYPE] === "BaseServer.handleRequest" || spanAttributes?.[nextSpanAttributes.ATTR_NEXT_SPAN_TYPE] === "Middleware.execute") && isRootSpan) { const scopes = core.getCapturedScopesOnSpan(span); const isolationScope = (scopes.isolationScope || core.getIsolationScope()).clone(); const scope = scopes.scope || core.getCurrentScope(); const currentScopesPointer = opentelemetry.getScopesFromContext(api.context.active()); if (currentScopesPointer) { currentScopesPointer.isolationScope = isolationScope; } core.setCapturedScopesOnSpan(span, scope, isolationScope); } tracingUtils.maybeEnhanceServerComponentSpanName(span, spanAttributes, rootSpanAttributes); vercelQueuesMonitoring.maybeEnrichQueueProducerSpan(span); } exports.handleOnSpanStart = handleOnSpanStart; //# sourceMappingURL=handleOnSpanStart.js.map