learning_ai_common_plat/packages/backend-telemetry/src/index.ts
saravanakumardb1 0d8c0a5ffe feat(backend-flags,backend-telemetry): create shared flag registry + telemetry buffer packages
- @bytelyst/backend-flags: createFlagRegistry() with defaults, 6 tests
- @bytelyst/backend-telemetry: createTelemetryBuffer() with enabled switch, 5 tests
2026-03-20 08:02:17 -07:00

51 lines
1.2 KiB
TypeScript

/**
* In-memory telemetry event buffer for product backends.
*
* Products call createTelemetryBuffer() with an enabled flag,
* then use trackEvent/getBufferedEvents/flushEvents as needed.
*/
export interface TelemetryEvent {
event: string;
userId?: string;
properties?: Record<string, unknown>;
timestamp?: string;
}
export interface TelemetryBuffer {
trackEvent(event: string, userId?: string, properties?: Record<string, unknown>): void;
getBufferedEvents(): TelemetryEvent[];
flushEvents(): TelemetryEvent[];
}
export interface TelemetryBufferOptions {
/** Master switch — when false, trackEvent is a no-op. */
enabled: boolean;
}
export function createTelemetryBuffer(opts: TelemetryBufferOptions): TelemetryBuffer {
const buffer: TelemetryEvent[] = [];
return {
trackEvent(event: string, userId?: string, properties?: Record<string, unknown>): void {
if (!opts.enabled) return;
buffer.push({
event,
userId,
properties,
timestamp: new Date().toISOString(),
});
},
getBufferedEvents(): TelemetryEvent[] {
return [...buffer];
},
flushEvents(): TelemetryEvent[] {
const flushed = [...buffer];
buffer.length = 0;
return flushed;
},
};
}