UNPKG

better-analytics

Version:

Zero-dependency micro-analytics JavaScript SDK < 3KB gzipped with React/Next.js/Expo support

72 lines (69 loc) 2.42 kB
import { b as BaseEventData } from './types-DzHHnKL8.js'; interface ServerEventData extends BaseEventData { server: { userAgent?: string; ip?: string; country?: string; region?: string; city?: string; referer?: string; origin: string; runtime?: 'node' | 'edge' | 'cloudflare' | 'deno'; framework?: string; }; user?: { id?: string; email?: string; name?: string; sessionId?: string; deviceId?: string; }; } interface ServerTrackOptions { headers?: Headers | Record<string, string | string[] | undefined>; request?: Request | { headers: Headers | Record<string, string | string[] | undefined>; }; user?: ServerEventData['user']; waitUntil?: (promise: Promise<unknown>) => void; meta?: Record<string, unknown>; } interface ServerAnalyticsConfig { site: string; endpoint?: string; apiKey?: string; debug?: boolean; batch?: { size?: number; interval?: number; maxRetries?: number; }; runtime?: ServerEventData['server']['runtime']; } /** * Initialize server-side analytics */ declare function initServer(config: ServerAnalyticsConfig): void; /** * Track event from server */ declare function trackServer(eventName: string, props?: Record<string, unknown>, options?: ServerTrackOptions): Promise<void>; /** * Track pageview from server (useful for SSR) */ declare function trackPageviewServer(path: string, options?: ServerTrackOptions): Promise<void>; /** * Identify user for server-side tracking */ declare function identifyServer(userId: string, traits?: Record<string, unknown>, options?: ServerTrackOptions): Promise<void>; declare function stitchSession(clientSessionId?: string, clientDeviceId?: string): ServerEventData['user']; interface ExpressRequest extends Record<string, unknown> { headers: Record<string, string | string[] | undefined>; cookies?: Record<string, string>; user?: { id?: string; }; track?: (event: string, props?: Record<string, unknown>) => Promise<void>; } declare function expressMiddleware(): (req: ExpressRequest, res: unknown, next: () => void) => void; export { type ServerAnalyticsConfig, type ServerEventData, type ServerTrackOptions, expressMiddleware, identifyServer, initServer, stitchSession, trackPageviewServer, trackServer };