UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

81 lines (80 loc) 1.63 kB
import { InstanceType } from "./instance.js"; //#region src/types/telemetry.d.ts type JSONValue = string | number | boolean | null | JSONValue[] | { [key: string]: JSONValue; }; /** * @internal */ type TelemetryEvent = { event: string; /** * publishableKey */ pk?: string; /** * secretKey */ sk?: string; /** * instanceType */ it: InstanceType; /** * clerkVersion */ cv: string; /** * SDK */ sdk?: string; /** * SDK Version */ sdkv?: string; payload: Record<string, JSONValue>; }; /** * @internal */ type TelemetryEventRaw<Payload = TelemetryEvent['payload']> = { event: TelemetryEvent['event']; eventSamplingRate?: number; payload: Payload; }; /** * Debug log entry interface for telemetry collector */ interface TelemetryLogEntry { readonly context?: Record<string, unknown>; readonly level: 'error' | 'warn' | 'info' | 'debug' | 'trace'; readonly message: string; readonly organizationId?: string; readonly sessionId?: string; readonly source?: string; readonly timestamp: number; readonly userId?: string; } /** * @inline */ interface TelemetryCollector { /** * Indicates whether telemetry is enabled. */ isEnabled: boolean; /** * If `true`, telemetry events are only logged to the console and not sent to Clerk. */ isDebug: boolean; /** * Records a telemetry event. */ record(event: TelemetryEventRaw): void; /** * Records a telemetry log entry. */ recordLog(entry: TelemetryLogEntry): void; } //#endregion export { TelemetryCollector, TelemetryEvent, TelemetryEventRaw, TelemetryLogEntry };