78 lines
2.7 KiB
JavaScript
78 lines
2.7 KiB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
|
const utils = require('@sentry/utils');
|
|
|
|
/**
|
|
* Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.
|
|
* Merge with existing data if any.
|
|
**/
|
|
function enhanceEventWithSdkInfo(event, sdkInfo) {
|
|
if (!sdkInfo) {
|
|
return event;
|
|
}
|
|
event.sdk = event.sdk || {};
|
|
event.sdk.name = event.sdk.name || sdkInfo.name;
|
|
event.sdk.version = event.sdk.version || sdkInfo.version;
|
|
event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];
|
|
event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];
|
|
return event;
|
|
}
|
|
|
|
/** Creates an envelope from a Session */
|
|
function createSessionEnvelope(
|
|
session,
|
|
dsn,
|
|
metadata,
|
|
tunnel,
|
|
) {
|
|
const sdkInfo = utils.getSdkMetadataForEnvelopeHeader(metadata);
|
|
const envelopeHeaders = {
|
|
sent_at: new Date().toISOString(),
|
|
...(sdkInfo && { sdk: sdkInfo }),
|
|
...(!!tunnel && dsn && { dsn: utils.dsnToString(dsn) }),
|
|
};
|
|
|
|
const envelopeItem =
|
|
'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];
|
|
|
|
return utils.createEnvelope(envelopeHeaders, [envelopeItem]);
|
|
}
|
|
|
|
/**
|
|
* Create an Envelope from an event.
|
|
*/
|
|
function createEventEnvelope(
|
|
event,
|
|
dsn,
|
|
metadata,
|
|
tunnel,
|
|
) {
|
|
const sdkInfo = utils.getSdkMetadataForEnvelopeHeader(metadata);
|
|
|
|
/*
|
|
Note: Due to TS, event.type may be `replay_event`, theoretically.
|
|
In practice, we never call `createEventEnvelope` with `replay_event` type,
|
|
and we'd have to adjut a looot of types to make this work properly.
|
|
We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)
|
|
So the safe choice is to really guard against the replay_event type here.
|
|
*/
|
|
const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';
|
|
|
|
enhanceEventWithSdkInfo(event, metadata && metadata.sdk);
|
|
|
|
const envelopeHeaders = utils.createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);
|
|
|
|
// Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to
|
|
// sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may
|
|
// have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid
|
|
// of this `delete`, lest we miss putting it back in the next time the property is in use.)
|
|
delete event.sdkProcessingMetadata;
|
|
|
|
const eventItem = [{ type: eventType }, event];
|
|
return utils.createEnvelope(envelopeHeaders, [eventItem]);
|
|
}
|
|
|
|
exports.createEventEnvelope = createEventEnvelope;
|
|
exports.createSessionEnvelope = createSessionEnvelope;
|
|
//# sourceMappingURL=envelope.js.map
|