@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
81 lines (80 loc) • 1.63 kB
text/typescript
import { InstanceType } from "./instance.mjs";
//#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 };