Files
klz-cables.com/.pnpm-store/v10/files/d5/baec7e8c46d7de900eb2a3e2f3738cb26475d01440d9d33d295ae0d4360c47d320bfd271e99d095a9a0187759201081a2cdb85979d2290bac0f08fd3a82fb4
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
14 KiB
Plaintext

{"version":3,"file":"internal.js","sources":["../../../src/metrics/internal.ts"],"sourcesContent":["import { type RawAttributes, serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Metric, SerializedMetric } from '../types-hoist/metric';\nimport type { User } from '../types-hoist/user';\nimport { debug } from '../utils/debug-logger';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { createMetricEnvelope } from './envelope';\n\nconst MAX_METRIC_BUFFER_SIZE = 1000;\n\n/**\n * Sets a metric attribute if the value exists and the attribute key is not already present.\n *\n * @param metricAttributes - The metric attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setMetricAttribute(\n metricAttributes: Record<string, unknown>,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\n if (value && (setEvenIfPresent || !(key in metricAttributes))) {\n metricAttributes[key] = value;\n }\n}\n\n/**\n * Captures a serialized metric event and adds it to the metric buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedMetric - The serialized metric event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureSerializedMetric(client: Client, serializedMetric: SerializedMetric): void {\n const bufferMap = _getBufferMap();\n const metricBuffer = _INTERNAL_getMetricBuffer(client);\n\n if (metricBuffer === undefined) {\n bufferMap.set(client, [serializedMetric]);\n } else {\n if (metricBuffer.length >= MAX_METRIC_BUFFER_SIZE) {\n _INTERNAL_flushMetricsBuffer(client, metricBuffer);\n bufferMap.set(client, [serializedMetric]);\n } else {\n bufferMap.set(client, [...metricBuffer, serializedMetric]);\n }\n }\n}\n\n/**\n * Options for capturing a metric internally.\n */\nexport interface InternalCaptureMetricOptions {\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\n\n /**\n * A function to capture the serialized metric.\n */\n captureSerializedMetric?: (client: Client, metric: SerializedMetric) => void;\n}\n\n/**\n * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.)\n */\nfunction _enrichMetricAttributes(beforeMetric: Metric, client: Client, user: User): Metric {\n const { release, environment } = client.getOptions();\n\n const processedMetricAttributes = {\n ...beforeMetric.attributes,\n };\n\n // Add user attributes\n setMetricAttribute(processedMetricAttributes, 'user.id', user.id, false);\n setMetricAttribute(processedMetricAttributes, 'user.email', user.email, false);\n setMetricAttribute(processedMetricAttributes, 'user.name', user.username, false);\n\n // Add Sentry metadata\n setMetricAttribute(processedMetricAttributes, 'sentry.release', release);\n setMetricAttribute(processedMetricAttributes, 'sentry.environment', environment);\n\n // Add SDK metadata\n const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n setMetricAttribute(processedMetricAttributes, 'sentry.sdk.name', name);\n setMetricAttribute(processedMetricAttributes, 'sentry.sdk.version', version);\n\n // Add replay metadata\n const replay = client.getIntegrationByName<\n Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\n }\n >('Replay');\n\n const replayId = replay?.getReplayId(true);\n setMetricAttribute(processedMetricAttributes, 'sentry.replay_id', replayId);\n\n if (replayId && replay?.getRecordingMode() === 'buffer') {\n setMetricAttribute(processedMetricAttributes, 'sentry._internal.replay_is_buffering', true);\n }\n\n return {\n ...beforeMetric,\n attributes: processedMetricAttributes,\n };\n}\n\n/**\n * Creates a serialized metric ready to be sent to Sentry.\n */\nfunction _buildSerializedMetric(\n metric: Metric,\n client: Client,\n currentScope: Scope,\n scopeAttributes: RawAttributes<Record<string, unknown>> | undefined,\n): SerializedMetric {\n // Get trace context\n const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n const span = _getSpanForScope(currentScope);\n const traceId = span ? span.spanContext().traceId : traceContext?.trace_id;\n const spanId = span ? span.spanContext().spanId : undefined;\n\n return {\n timestamp: timestampInSeconds(),\n trace_id: traceId ?? '',\n span_id: spanId,\n name: metric.name,\n type: metric.type,\n unit: metric.unit,\n value: metric.value,\n attributes: {\n ...serializeAttributes(scopeAttributes),\n ...serializeAttributes(metric.attributes, 'skip-undefined'),\n },\n };\n}\n\n/**\n * Captures a metric event and sends it to Sentry.\n *\n * @param metric - The metric event to capture.\n * @param options - Options for capturing the metric.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureMetric(beforeMetric: Metric, options?: InternalCaptureMetricOptions): void {\n const currentScope = options?.scope ?? getCurrentScope();\n const captureSerializedMetric = options?.captureSerializedMetric ?? _INTERNAL_captureSerializedMetric;\n const client = currentScope?.getClient() ?? getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No client available to capture metric.');\n return;\n }\n\n const { _experiments, enableMetrics, beforeSendMetric } = client.getOptions();\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const metricsEnabled = enableMetrics ?? _experiments?.enableMetrics ?? true;\n\n if (!metricsEnabled) {\n DEBUG_BUILD && debug.warn('metrics option not enabled, metric will not be captured.');\n return;\n }\n\n // Enrich metric with contextual attributes\n const { user, attributes: scopeAttributes } = getCombinedScopeData(getIsolationScope(), currentScope);\n const enrichedMetric = _enrichMetricAttributes(beforeMetric, client, user);\n\n client.emit('processMetric', enrichedMetric);\n\n // todo(v11): Remove the experimental `beforeSendMetric`\n // eslint-disable-next-line deprecation/deprecation\n const beforeSendCallback = beforeSendMetric || _experiments?.beforeSendMetric;\n const processedMetric = beforeSendCallback ? beforeSendCallback(enrichedMetric) : enrichedMetric;\n\n if (!processedMetric) {\n DEBUG_BUILD && debug.log('`beforeSendMetric` returned `null`, will not send metric.');\n return;\n }\n\n const serializedMetric = _buildSerializedMetric(processedMetric, client, currentScope, scopeAttributes);\n\n DEBUG_BUILD && debug.log('[Metric]', serializedMetric);\n\n captureSerializedMetric(client, serializedMetric);\n\n client.emit('afterCaptureMetric', processedMetric);\n}\n\n/**\n * Flushes the metrics buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeMetricBuffer - A metric buffer. Uses the metric buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_flushMetricsBuffer(client: Client, maybeMetricBuffer?: Array<SerializedMetric>): void {\n const metricBuffer = maybeMetricBuffer ?? _INTERNAL_getMetricBuffer(client) ?? [];\n if (metricBuffer.length === 0) {\n return;\n }\n\n const clientOptions = client.getOptions();\n const envelope = createMetricEnvelope(metricBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n // Clear the metric buffer after envelopes have been constructed.\n _getBufferMap().set(client, []);\n\n client.emit('flushMetrics');\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the metric buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the metric buffer for.\n * @returns The metric buffer for the given client.\n */\nexport function _INTERNAL_getMetricBuffer(client: Client): Array<SerializedMetric> | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap<Client, Array<SerializedMetric>> {\n // The reference to the Client <> MetricBuffer map is stored on the carrier to ensure it's always the same\n return getGlobalSingleton('clientToMetricBufferMap', () => new WeakMap<Client, Array<SerializedMetric>>());\n}\n"],"names":[],"mappings":"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"}