TypeScript Types
All types exported from litetics and litetics/tracker.
litetics Types
Import everything from the root package:
ts
import type {
EventData,
MaybePromise,
Primitive,
EventRequestHandlerLoadRequestBody,
EventRequestHandlerUnloadRequestBody,
EventRequestHandlerLoadResult,
EventRequestHandlerUnloadResult,
EventRequestHandlerParsers,
EventRequestHandlerOptions,
EventRequestHandlerTrackOptions,
EventRequestHandlerTrackPayload,
PingRequestHandlerResult,
PingRequestHandlerOptions,
PingRequestHandlerPayload,
} from 'litetics';EventData
The full enriched event object. See Event Data for details.
ts
interface EventData {
bid: string;
receivedAt: Date;
host: string;
path: string;
queryString: string | null;
hash: string | null;
isUniqueUser: boolean;
isUniquePage: boolean;
type: 'pageview' | (string & { _?: never });
durationMs: number | null;
timeZone: string | null;
country: string | null;
userAgent: string | null;
browserName: string | null;
browserVersion: string | null;
browserEngineName: string | null;
browserEngineVersion: string | null;
deviceType: string | null;
deviceVendor: string | null;
deviceModel: string | null;
cpuArchitecture: string | null;
osName: string | null;
osVersion: string | null;
referrer: string | null;
referrerHost: string | null;
referrerPath: string | null;
referrerQueryString: string | null;
referrerKnown: boolean | null;
referrerMedium: string | null;
referrerName: string | null;
referrerSearchParameter: string | null;
referrerSearchTerm: string | null;
acceptLanguage: string | null;
languageCode: string | null;
languageScript: string | null;
languageRegion: string | null;
secondaryLanguageCode: string | null;
secondaryLanguageScript: string | null;
secondaryLanguageRegion: string | null;
utmCampaign: string | null;
utmMedium: string | null;
utmSource: string | null;
utmTerm: string | null;
utmContent: string | null;
utmId: string | null;
utmSourcePlatform: string | null;
properties: Record<string, Primitive> | null;
}Helper Types
Shared utility types used throughout the handler interfaces:
ts
type Primitive = string | number | boolean | null | undefined;
type MaybePromise<T> = T | Promise<T>;Request Body Types
The shapes sent by the tracker in POST /event requests:
ts
interface EventRequestHandlerLoadRequestBody {
e: 'load';
b: string;
u: string;
p: boolean;
q: boolean;
a: 'pageview' | (string & { _?: never });
r?: string;
t?: string;
d?: Record<string, Primitive>;
}
interface EventRequestHandlerUnloadRequestBody {
e: 'unload';
b: string;
m: number;
}Result Types
What gets passed to your persist and update callbacks:
ts
type EventRequestHandlerLoadResult = EventData;
type EventRequestHandlerUnloadResult = {
bid: string;
durationMs: number;
};Handler Options
Options passed to createLitetics:
ts
interface EventRequestHandlerParsers {
userAgent?: (ua: string) => ParsedUserAgent;
referrer?: (referrerUrl: string, currentUrl: string) => ParsedReferrer;
acceptLanguage?: (header: string) => ParsedAcceptLanguage;
utm?: (url: URL) => ParsedUTMParams;
}
interface EventRequestHandlerOptions<
TProperties extends Record<string, Primitive> = Record<string, Primitive>,
> {
persist: (
data: EventRequestHandlerLoadResult & { properties: TProperties | null },
) => MaybePromise<void>;
update: (data: EventRequestHandlerUnloadResult) => MaybePromise<void>;
debug?: boolean;
parsers?: EventRequestHandlerParsers;
shouldIgnoreUserAgent?: (ua: string) => boolean;
}
interface EventRequestHandlerTrackOptions {
getRequestBody: () => MaybePromise<
EventRequestHandlerLoadRequestBody | EventRequestHandlerUnloadRequestBody
>;
getRequestHeader: (name: string) => MaybePromise<string | null | undefined>;
}
interface EventRequestHandlerTrackPayload {
requestBody: EventRequestHandlerLoadRequestBody | EventRequestHandlerUnloadRequestBody;
requestHeaders: Record<string, string | null | undefined>;
}Ping Types
Types related to the ping handler and its results:
ts
interface PingRequestHandlerResult {
status: number;
headers: Record<string, string>;
body: '0' | '1' | null;
error?: string;
}
interface PingRequestHandlerOptions {
getRequestHeader: (name: string) => MaybePromise<string | null | undefined>;
}
interface PingRequestHandlerPayload {
requestHeaders: Record<string, string | null | undefined>;
}litetics/tracker Types
Import from the tracker subpath:
ts
import type {
RuntimeAdapter,
BrowserAdapterOptions,
SendOptions,
EnvironmentContext,
CreateTrackerOptions,
} from 'litetics/tracker';Adapter Types
The interface used to run the tracker in any JavaScript environment:
ts
interface RuntimeAdapter {
send: (url: string, options: SendOptions) => Promise<string | void>;
context: () => EnvironmentContext;
hooks: {
onUnload: (fn: () => void) => () => void;
onVisibilityChange: (fn: (hidden: boolean) => void) => () => void;
onInteract: (fn: () => void) => () => void;
onNavigate: (fn: (url: string) => void) => () => void;
};
}
interface SendOptions {
method: 'GET' | 'POST';
body?: string;
mode?: 'no-cors' | 'cors' | 'same-origin';
keepalive?: boolean;
}
interface EnvironmentContext {
timeZone: string;
userAgent: string;
referrer: string;
location: {
host: string;
hostname: string;
pathname: string;
href: string;
};
}
interface BrowserAdapterOptions {
mode?: 'history' | 'hash';
}Tracker Types
Options passed when creating a tracker instance:
ts
interface CreateTrackerOptions {
apiEndpoint: {
track: string;
ping: string;
};
adapter?: RuntimeAdapter;
sessionTimeoutDuration?: number;
fetchMode?: 'no-cors' | 'cors' | 'same-origin';
}AnalyticsEvent Constants
Exported from litetics/tracker:
ts
const AnalyticsEvent = {
LOAD: 'load',
UNLOAD: 'unload',
} as const;