UNPKG

@opentelemetry/api

Version:
1 lines • 3.4 kB
{"version":3,"file":"trace.mjs","names":[],"sources":["../../src/api/trace.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n isSpanContextValid,\n wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport type { Tracer } from '../trace/tracer';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport {\n deleteSpan,\n getActiveSpan,\n getSpan,\n getSpanContext,\n setSpan,\n setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n *\n * @since 1.0.0\n */\nexport class TraceAPI {\n private static _instance?: TraceAPI;\n\n private _proxyTracerProvider = new ProxyTracerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Trace API */\n public static getInstance(): TraceAPI {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n public setGlobalTracerProvider(provider: TracerProvider): boolean {\n const success = registerGlobal(\n API_NAME,\n this._proxyTracerProvider,\n DiagAPI.instance()\n );\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global tracer provider.\n */\n public getTracerProvider(): TracerProvider {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n }\n\n /**\n * Returns a tracer from the global tracer provider.\n */\n public getTracer(name: string, version?: string): Tracer {\n return this.getTracerProvider().getTracer(name, version);\n }\n\n /** Remove the global tracer provider */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n }\n\n public wrapSpanContext = wrapSpanContext;\n\n public isSpanContextValid = isSpanContextValid;\n\n public deleteSpan = deleteSpan;\n\n public getSpan = getSpan;\n\n /** @since 1.2.0 */\n public getActiveSpan = getActiveSpan;\n\n public getSpanContext = getSpanContext;\n\n public setSpan = setSpan;\n\n public setSpanContext = setSpanContext;\n}\n"],"mappings":";;;;;;AA2BA,MAAM,WAAW;;;;;;AAOjB,IAAa,WAAb,MAAa,SAAS;;CAMpB,cAAsB;EAHtB,KAAQ,uBAAuB,IAAI,oBAAoB;EAmDvD,KAAO,kBAAkB;EAEzB,KAAO,qBAAqB;EAE5B,KAAO,aAAa;EAEpB,KAAO,UAAU;EAGjB,KAAO,gBAAgB;EAEvB,KAAO,iBAAiB;EAExB,KAAO,UAAU;EAEjB,KAAO,iBAAiB;CA/DD;;CAGvB,OAAc,cAAwB;EACpC,IAAI,CAAC,KAAK,WACR,KAAK,YAAY,IAAI,SAAS;EAGhC,OAAO,KAAK;CACd;;;;;;CAOA,wBAA+B,UAAmC;EAChE,MAAM,UAAU,eACd,UACA,KAAK,sBACL,QAAQ,SAAS,CACnB;EACA,IAAI,SACF,KAAK,qBAAqB,YAAY,QAAQ;EAEhD,OAAO;CACT;;;;CAKA,oBAA2C;EACzC,OAAO,UAAU,QAAQ,KAAK,KAAK;CACrC;;;;CAKA,UAAiB,MAAc,SAA0B;EACvD,OAAO,KAAK,kBAAkB,CAAC,CAAC,UAAU,MAAM,OAAO;CACzD;;CAGA,UAAiB;EACf,iBAAiB,UAAU,QAAQ,SAAS,CAAC;EAC7C,KAAK,uBAAuB,IAAI,oBAAoB;CACtD;AAkBF"}