"use strict"; // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. Object.defineProperty(exports, "__esModule", { value: true }); exports.TracingContextImpl = exports.knownContextKeys = void 0; exports.createTracingContext = createTracingContext; /** @internal */ exports.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 */ function createTracingContext(options = {}) { let context = new TracingContextImpl(options.parentContext); if (options.span) { context = context.setValue(exports.knownContextKeys.span, options.span); } if (options.namespace) { context = context.setValue(exports.knownContextKeys.namespace, options.namespace); } return context; } /** @internal */ 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; } } exports.TracingContextImpl = TracingContextImpl; //# sourceMappingURL=tracingContext.js.map