@embrace-io/web-sdk
Version:
40 lines (39 loc) • 1.21 kB
JavaScript
import { KEY_EMB_TYPE } from "../../constants/attributes.js";
import { isSessionPartSpan, isSoftNavigationSpan } from "../../utils/spanPredicates.js";
import { diag } from "@opentelemetry/api";
import { hrTimeToMilliseconds } from "@opentelemetry/core";
//#region src/processors/SignalCorrelationSpanProcessor/SignalCorrelationSpanProcessor.ts
/**
* Records eligible spans as they start into a shared buffer, so a
* soft-navigation span can later correlate the logs and spans that started
* within its window.
*/
var SignalCorrelationSpanProcessor = class {
_buffer;
constructor({ buffer }) {
this._buffer = buffer;
}
forceFlush() {
return Promise.resolve(void 0);
}
onStart(span) {
try {
if (isSoftNavigationSpan(span) || isSessionPartSpan(span)) return;
this._buffer.record({
kind: "span",
id: span.spanContext().spanId,
startTime: hrTimeToMilliseconds(span.startTime),
type: span.attributes[KEY_EMB_TYPE]
});
} catch (e) {
diag.error("failed to record span for correlation", e);
}
}
onEnd() {}
shutdown() {
return Promise.resolve(void 0);
}
};
//#endregion
export { SignalCorrelationSpanProcessor };
//# sourceMappingURL=SignalCorrelationSpanProcessor.js.map