// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. /** @internal */ export const knownContextKeys = { span: Symbol.for("@azure/core-tracing span"), namespace: Symbol.for("@azure/core-tracing namespace"), }; /** * Creates a new {@link TracingContext} with the given options. * @param options - A set of known keys that may be set on the context. * @returns A new {@link TracingContext} with the given options. * * @internal */ export function createTracingContext(options = {}) { let context = new TracingContextImpl(options.parentContext); if (options.span) { context = context.setValue(knownContextKeys.span, options.span); } if (options.namespace) { context = context.setValue(knownContextKeys.namespace, options.namespace); } return context; } /** @internal */ export class TracingContextImpl { _contextMap; constructor(initialContext) { this._contextMap = initialContext instanceof TracingContextImpl ? new Map(initialContext._contextMap) : new Map(); } setValue(key, value) { const newContext = new TracingContextImpl(this); newContext._contextMap.set(key, value); return newContext; } getValue(key) { return this._contextMap.get(key); } deleteValue(key) { const newContext = new TracingContextImpl(this); newContext._contextMap.delete(key); return newContext; } } //# sourceMappingURL=tracingContext.js.map