// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { createTracingContext } from "./tracingContext.js"; import { state } from "./state.js"; export function createDefaultTracingSpan() { return { end: () => { // noop }, isRecording: () => false, recordException: () => { // noop }, setAttribute: () => { // noop }, setStatus: () => { // noop }, addEvent: () => { // noop }, }; } export function createDefaultInstrumenter() { return { createRequestHeaders: () => { return {}; }, parseTraceparentHeader: () => { return undefined; }, startSpan: (_name, spanOptions) => { return { span: createDefaultTracingSpan(), tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }), }; }, withContext(_context, callback, ...callbackArgs) { return callback(...callbackArgs); }, }; } /** * Extends the Azure SDK with support for a given instrumenter implementation. * * @param instrumenter - The instrumenter implementation to use. */ export function useInstrumenter(instrumenter) { state.instrumenterImplementation = instrumenter; } /** * Gets the currently set instrumenter, a No-Op instrumenter by default. * * @returns The currently set instrumenter */ export function getInstrumenter() { if (!state.instrumenterImplementation) { state.instrumenterImplementation = createDefaultInstrumenter(); } return state.instrumenterImplementation; } //# sourceMappingURL=instrumenter.js.map