UNPKG

@sentry/core

Version:
169 lines (165 loc) 5.5 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const carrier = require('../carrier.js'); const dsn = require('./dsn.js'); const normalize = require('./normalize.js'); const worldwide = require('./worldwide.js'); function createEnvelope(headers, items = []) { return [headers, items]; } function addItemToEnvelope(envelope, newItem) { const [headers, items] = envelope; return [headers, [...items, newItem]]; } function forEachEnvelopeItem(envelope, callback) { const envelopeItems = envelope[1]; for (const envelopeItem of envelopeItems) { const envelopeItemType = envelopeItem[0].type; const result = callback(envelopeItem, envelopeItemType); if (result) { return true; } } return false; } function envelopeContainsItemType(envelope, types) { return forEachEnvelopeItem(envelope, (_, type) => types.includes(type)); } function encodeUTF8(input) { const carrier$1 = carrier.getSentryCarrier(worldwide.GLOBAL_OBJ); return carrier$1.encodePolyfill ? carrier$1.encodePolyfill(input) : new TextEncoder().encode(input); } function decodeUTF8(input) { const carrier$1 = carrier.getSentryCarrier(worldwide.GLOBAL_OBJ); return carrier$1.decodePolyfill ? carrier$1.decodePolyfill(input) : new TextDecoder().decode(input); } function serializeEnvelope(envelope) { const [envHeaders, items] = envelope; let parts = JSON.stringify(envHeaders); function append(next) { if (typeof parts === "string") { parts = typeof next === "string" ? parts + next : [encodeUTF8(parts), next]; } else { parts.push(typeof next === "string" ? encodeUTF8(next) : next); } } for (const item of items) { const [itemHeaders, payload] = item; append(` ${JSON.stringify(itemHeaders)} `); if (typeof payload === "string" || payload instanceof Uint8Array) { append(payload); } else { let stringifiedPayload; try { stringifiedPayload = JSON.stringify(payload); } catch { stringifiedPayload = JSON.stringify(normalize.normalize(payload)); } append(stringifiedPayload); } } return typeof parts === "string" ? parts : concatBuffers(parts); } function concatBuffers(buffers) { const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0); const merged = new Uint8Array(totalLength); let offset = 0; for (const buffer of buffers) { merged.set(buffer, offset); offset += buffer.length; } return merged; } function parseEnvelope(env) { let buffer = typeof env === "string" ? encodeUTF8(env) : env; function readBinary(length) { const bin = buffer.subarray(0, length); buffer = buffer.subarray(length + 1); return bin; } function readJson() { let i = buffer.indexOf(10); if (i < 0) { i = buffer.length; } return JSON.parse(decodeUTF8(readBinary(i))); } const envelopeHeader = readJson(); const items = []; while (buffer.length) { const itemHeader = readJson(); const binaryLength = typeof itemHeader.length === "number" ? itemHeader.length : void 0; items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]); } return [envelopeHeader, items]; } function createSpanEnvelopeItem(spanJson) { const spanHeaders = { type: "span" }; return [spanHeaders, spanJson]; } function createAttachmentEnvelopeItem(attachment) { const buffer = typeof attachment.data === "string" ? encodeUTF8(attachment.data) : attachment.data; return [ { type: "attachment", length: buffer.length, filename: attachment.filename, content_type: attachment.contentType, attachment_type: attachment.attachmentType }, buffer ]; } const DATA_CATEGORY_OVERRIDES = { sessions: "session", event: "error", client_report: "internal", user_report: "default", profile_chunk: "profile", replay_event: "replay", replay_recording: "replay", check_in: "monitor", raw_security: "security", log: "log_item", trace_metric: "metric" }; function _isOverriddenType(type) { return type in DATA_CATEGORY_OVERRIDES; } function envelopeItemTypeToDataCategory(type) { return _isOverriddenType(type) ? DATA_CATEGORY_OVERRIDES[type] : type; } function getSdkMetadataForEnvelopeHeader(metadataOrEvent) { if (!metadataOrEvent?.sdk) { return; } const { name, version } = metadataOrEvent.sdk; return { name, version }; } function createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn$1) { const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext; return { event_id: event.event_id, sent_at: (/* @__PURE__ */ new Date()).toISOString(), ...sdkInfo && { sdk: sdkInfo }, ...!!tunnel && dsn$1 && { dsn: dsn.dsnToString(dsn$1) }, ...dynamicSamplingContext && { trace: dynamicSamplingContext } }; } exports.addItemToEnvelope = addItemToEnvelope; exports.createAttachmentEnvelopeItem = createAttachmentEnvelopeItem; exports.createEnvelope = createEnvelope; exports.createEventEnvelopeHeaders = createEventEnvelopeHeaders; exports.createSpanEnvelopeItem = createSpanEnvelopeItem; exports.envelopeContainsItemType = envelopeContainsItemType; exports.envelopeItemTypeToDataCategory = envelopeItemTypeToDataCategory; exports.forEachEnvelopeItem = forEachEnvelopeItem; exports.getSdkMetadataForEnvelopeHeader = getSdkMetadataForEnvelopeHeader; exports.parseEnvelope = parseEnvelope; exports.serializeEnvelope = serializeEnvelope; //# sourceMappingURL=envelope.js.map