autotel
Version:
Write Once, Observe Anywhere
61 lines (58 loc) • 1.78 kB
JavaScript
;
var api = require('@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 api.trace.getTracerProvider();
}
function getAutotelTracer(name = "autotel", version) {
return getAutotelTracerProvider().getTracer(name, version);
}
exports.getAutotelTracer = getAutotelTracer;
exports.getAutotelTracerProvider = getAutotelTracerProvider;
exports.setAutotelTracerProvider = setAutotelTracerProvider;
//# sourceMappingURL=chunk-YREV3LGG.cjs.map
//# sourceMappingURL=chunk-YREV3LGG.cjs.map