UNPKG

dd-trace

Version:

Datadog APM tracing client for JavaScript

48 lines (33 loc) 1.21 kB
'use strict' const pick = require('../../../../datadog-core/src/utils/src/pick') const log = require('../../log') const { DsmPathwayCodec } = require('../../datastreams') const base64Key = 'dd-pathway-ctx-base64' const logKeys = [base64Key] class DSMTextMapPropagator { constructor (config) { this.config = config } inject (ctx, carrier) { if (!this.config.dsmEnabled) return this._injectDatadogDSMContext(ctx, carrier) // eslint-disable-next-line eslint-rules/eslint-log-printf-style log.debug(() => `Inject into carrier (DSM): ${JSON.stringify(pick(carrier, logKeys))}.`) } extract (carrier) { if (!this.config.dsmEnabled) return const dsmContext = this._extractDatadogDSMContext(carrier) if (!dsmContext) return dsmContext // eslint-disable-next-line eslint-rules/eslint-log-printf-style log.debug(() => `Extract from carrier (DSM): ${JSON.stringify(pick(carrier, logKeys))}.`) return dsmContext } _injectDatadogDSMContext (ctx, carrier) { DsmPathwayCodec.encode(ctx, carrier) } _extractDatadogDSMContext (carrier) { const ctx = DsmPathwayCodec.decode(carrier) return ctx } } module.exports = DSMTextMapPropagator