autotel
Version:
Write Once, Observe Anywhere
34 lines (32 loc) • 1.03 kB
JavaScript
//#region src/correlated-events.ts
function sanitizeEventKey(input) {
return input.replaceAll(/[^a-zA-Z0-9_.-]/g, "_");
}
const sequenceByTarget = /* @__PURE__ */ new WeakMap();
function nextSequence(target) {
const n = (sequenceByTarget.get(target) ?? 0) + 1;
sequenceByTarget.set(target, n);
return n;
}
function emitCorrelatedEvent(ctx, name, attrs = {}) {
const eventName = sanitizeEventKey(name);
if (typeof ctx.addEvent === "function") {
ctx.addEvent.call(ctx, eventName, attrs);
return;
}
const prefix = `autotel.event.${nextSequence(ctx)}.${eventName}`;
const flattened = {
[`${prefix}.name`]: eventName,
[`${prefix}.ts`]: (/* @__PURE__ */ new Date()).toISOString()
};
for (const [k, v] of Object.entries(attrs)) flattened[`${prefix}.${sanitizeEventKey(k)}`] = v;
ctx.setAttributes(flattened);
}
//#endregion
Object.defineProperty(exports, 'emitCorrelatedEvent', {
enumerable: true,
get: function () {
return emitCorrelatedEvent;
}
});
//# sourceMappingURL=correlated-events-kSwLo3mi.cjs.map