1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- Object.defineProperty(exports, '__esModule', { value: true });
- const utils = require('@sentry/utils');
- const constants = require('../constants.js');
- const exports$1 = require('../exports.js');
- const getRootSpan = require('../utils/getRootSpan.js');
- const spanUtils = require('../utils/spanUtils.js');
- /**
- * Creates a dynamic sampling context from a client.
- *
- * Dispatches the `createDsc` lifecycle hook as a side effect.
- */
- function getDynamicSamplingContextFromClient(
- trace_id,
- client,
- scope,
- ) {
- const options = client.getOptions();
- const { publicKey: public_key } = client.getDsn() || {};
- // TODO(v8): Remove segment from User
- // eslint-disable-next-line deprecation/deprecation
- const { segment: user_segment } = (scope && scope.getUser()) || {};
- const dsc = utils.dropUndefinedKeys({
- environment: options.environment || constants.DEFAULT_ENVIRONMENT,
- release: options.release,
- user_segment,
- public_key,
- trace_id,
- }) ;
- client.emit && client.emit('createDsc', dsc);
- return dsc;
- }
- /**
- * A Span with a frozen dynamic sampling context.
- */
- /**
- * Creates a dynamic sampling context from a span (and client and scope)
- *
- * @param span the span from which a few values like the root span name and sample rate are extracted.
- *
- * @returns a dynamic sampling context
- */
- function getDynamicSamplingContextFromSpan(span) {
- const client = exports$1.getClient();
- if (!client) {
- return {};
- }
- // passing emit=false here to only emit later once the DSC is actually populated
- const dsc = getDynamicSamplingContextFromClient(spanUtils.spanToJSON(span).trace_id || '', client, exports$1.getCurrentScope());
- // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext
- const txn = getRootSpan.getRootSpan(span) ;
- if (!txn) {
- return dsc;
- }
- // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext
- // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.
- // @see Transaction class constructor
- const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;
- if (v7FrozenDsc) {
- return v7FrozenDsc;
- }
- // TODO (v8): Replace txn.metadata with txn.attributes[]
- // We can't do this yet because attributes aren't always set yet.
- // eslint-disable-next-line deprecation/deprecation
- const { sampleRate: maybeSampleRate, source } = txn.metadata;
- if (maybeSampleRate != null) {
- dsc.sample_rate = `${maybeSampleRate}`;
- }
- // We don't want to have a transaction name in the DSC if the source is "url" because URLs might contain PII
- const jsonSpan = spanUtils.spanToJSON(txn);
- // after JSON conversion, txn.name becomes jsonSpan.description
- if (source && source !== 'url') {
- dsc.transaction = jsonSpan.description;
- }
- dsc.sampled = String(spanUtils.spanIsSampled(txn));
- client.emit && client.emit('createDsc', dsc);
- return dsc;
- }
- exports.getDynamicSamplingContextFromClient = getDynamicSamplingContextFromClient;
- exports.getDynamicSamplingContextFromSpan = getDynamicSamplingContextFromSpan;
- //# sourceMappingURL=dynamicSamplingContext.js.map
|