Skip to content

Commit

Permalink
Introduced DatadogTracingContext
Browse files Browse the repository at this point in the history
  • Loading branch information
marco-saia-datadog committed Feb 10, 2025
1 parent 17229bf commit 8436efc
Show file tree
Hide file tree
Showing 8 changed files with 295 additions and 211 deletions.
6 changes: 1 addition & 5 deletions packages/core/jest/mock.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,7 @@ module.exports = {
),
setTimeProvider: jest.fn().mockImplementation(() => {}),
timeProvider: jest.fn().mockReturnValue(undefined),
getTracingHeaders: jest.fn().mockReturnValue([]),
injectTracingHeaders: jest.fn().mockImplementation(() => {}),
buildTracingHeadersInjector: jest.fn().mockReturnValue({
inject: (url, injectHeaders) => {}
}),
getTracingContext: jest.fn().mockReturnValue(undefined),
generateTraceId: jest.fn().mockReturnValue('mock-trace-id'),
generateSpanId: jest.fn().mockReturnValue('mock-span-id')
},
Expand Down
4 changes: 3 additions & 1 deletion packages/core/src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import {
TracingIdFormat
} from './rum/instrumentation/resourceTracking/distributedTracing/TracingIdentifier';
import { DatadogTracingIdentifier } from './rum/instrumentation/resourceTracking/distributedTracing/DatadogTracingIdentifier';
import { DatadogTracingContext } from './rum/instrumentation/resourceTracking/distributedTracing/DatadogTracingContext';

/* eslint-enable arca/import-ordering */

Expand Down Expand Up @@ -73,7 +74,8 @@ export {
DATADOG_GRAPH_QL_VARIABLES_HEADER,
TracingIdType,
TracingIdFormat,
DatadogTracingIdentifier
DatadogTracingIdentifier,
DatadogTracingContext
};

export type { Timestamp, TracingHeadersInjector };
46 changes: 6 additions & 40 deletions packages/core/src/rum/DdRum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,16 @@ import { generateErrorEventMapper } from './eventMappers/errorEventMapper';
import type { ErrorEventMapper } from './eventMappers/errorEventMapper';
import { generateResourceEventMapper } from './eventMappers/resourceEventMapper';
import type { ResourceEventMapper } from './eventMappers/resourceEventMapper';
import type { DatadogTracingContext } from './instrumentation/resourceTracking/distributedTracing/DatadogTracingContext';
import { DatadogTracingIdentifier } from './instrumentation/resourceTracking/distributedTracing/DatadogTracingIdentifier';
import { TracingIdentifier } from './instrumentation/resourceTracking/distributedTracing/TracingIdentifier';
import { getTracingHeaders } from './instrumentation/resourceTracking/distributedTracing/distributedTracingHeaders';
import { getTracingContext } from './instrumentation/resourceTracking/distributedTracing/distributedTracingHeaders';
import type {
ErrorSource,
DdRumType,
RumActionType,
ResourceKind,
FirstPartyHost,
TracingHeadersInjector
FirstPartyHost
} from './types';

const generateEmptyPromise = () => new Promise<void>(resolve => resolve());
Expand Down Expand Up @@ -300,48 +300,14 @@ class DdRumWrapper implements DdRumType {
return this.nativeRum.getCurrentSessionId();
}

getTracingHeaders = (
getTracingContext = (
url: string,
tracingSamplingRate: number,
firstPartyHosts: FirstPartyHost[]
): { header: string; value: string }[] => {
return getTracingHeaders(url, tracingSamplingRate, firstPartyHosts);
): DatadogTracingContext => {
return getTracingContext(url, tracingSamplingRate, firstPartyHosts);
};

injectTracingHeaders(
url: string,
tracingSamplingRate: number,
firstPartyHosts: FirstPartyHost[],
injectHeaders: (header: string, value: string) => void
) {
getTracingHeaders(url, tracingSamplingRate, firstPartyHosts).forEach(
({ header, value }) => {
injectHeaders(header, value);
}
);
}

buildTracingHeadersInjector(
tracingSamplingRate: number,
firstPartyHosts: FirstPartyHost[]
): TracingHeadersInjector {
const _firstPartyHosts = [...firstPartyHosts];
return {
inject: (
url: string,
injectHeaders: (header: string, value: string) => void
) => {
getTracingHeaders(
url,
tracingSamplingRate,
_firstPartyHosts
).forEach(({ header, value }) => {
injectHeaders(header, value);
});
}
};
}

generateTraceId(): DatadogTracingIdentifier {
return new DatadogTracingIdentifier(TracingIdentifier.createTraceId());
}
Expand Down
Loading

0 comments on commit 8436efc

Please sign in to comment.