autotel
Version:
Write Once, Observe Anywhere
57 lines (55 loc) • 1.67 kB
JavaScript
import { trace } from '@opentelemetry/api';
// src/tracer-provider.ts
var AUTOTEL_GLOBAL_SYMBOL = /* @__PURE__ */ Symbol.for("autotel");
function createState() {
return {
isolatedTracerProvider: null
};
}
function getGlobalState() {
const initialState = createState();
try {
const g = globalThis;
if (typeof g !== "object" || g === null) {
console.warn(
"[autotel] globalThis is not available, using fallback state"
);
return initialState;
}
if (!g[AUTOTEL_GLOBAL_SYMBOL]) {
Object.defineProperty(g, AUTOTEL_GLOBAL_SYMBOL, {
value: initialState,
writable: false,
// Lock the slot (not the contents)
configurable: false,
enumerable: false
});
}
return g[AUTOTEL_GLOBAL_SYMBOL];
} catch (error) {
if (error instanceof Error) {
console.error(
`[autotel] Failed to access global state: ${error.message}`
);
} else {
console.error(
`[autotel] Failed to access global state: ${String(error)}`
);
}
return initialState;
}
}
function setAutotelTracerProvider(provider) {
getGlobalState().isolatedTracerProvider = provider;
}
function getAutotelTracerProvider() {
const { isolatedTracerProvider } = getGlobalState();
if (isolatedTracerProvider) return isolatedTracerProvider;
return trace.getTracerProvider();
}
function getAutotelTracer(name = "autotel", version) {
return getAutotelTracerProvider().getTracer(name, version);
}
export { getAutotelTracer, getAutotelTracerProvider, setAutotelTracerProvider };
//# sourceMappingURL=chunk-HA2WBOGQ.js.map
//# sourceMappingURL=chunk-HA2WBOGQ.js.map