better-analytics
Version:
Zero-dependency micro-analytics JavaScript SDK < 3KB gzipped with React/Next.js/Expo support
72 lines (69 loc) • 2.42 kB
TypeScript
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 };