clarity-js
Version:
An analytics library that uses web page interactions to generate aggregated insights
151 lines (128 loc) • 2.81 kB
TypeScript
import type * as Data from "./data";
type TaskFunction = () => Promise<void>;
type TaskResolve = () => void;
type UploadCallback = (data: string) => void;
type Region = [number /* RegionId */, string /* Query Selector */];
type Checksum = [number /* FraudId */, string /* Query Selector */];
/* Enum */
export const enum Priority {
Normal = 0,
High = 1,
}
export const enum Time {
Second = 1000,
Minute = 60 * 1000,
Hour = 60 * 60 * 1000,
Day = 24 * 60 * 60 * 1000,
}
export const enum Task {
Wait = 0,
Run = 1,
Stop = 2,
}
export const enum ExtractSource {
Javascript = 0,
Cookie = 1,
Text = 2,
Fragment = 3,
Hash = 4,
}
export const enum Type {
Array = 1,
Object = 2,
Simple = 3,
}
export type Syntax = {
name: string;
type: Type;
condition: string;
};
export const enum Privacy {
None = 0,
Sensitive = 1,
Text = 2,
TextImage = 3,
Exclude = 4,
Snapshot = 5,
}
/* Helper Interfaces */
export interface Module {
start: () => void;
stop: () => void;
}
export interface Tasks {
[key: number]: TaskInfo;
}
export interface TaskInfo {
start: number;
calls: number;
yield: number;
}
export interface Timer {
id: string;
cost: Data.Metric;
}
export interface RequestIdleCallbackOptions {
timeout: number;
}
export interface RequestIdleCallbackDeadline {
didTimeout: boolean;
timeRemaining: () => number;
}
export interface AsyncTask {
task: TaskFunction;
resolve: TaskResolve;
id: string;
}
export interface OffsetDistance {
x: number;
y: number;
}
export interface BrowserEvent {
event: string;
listener: EventListener;
options: {
capture: boolean;
passive: boolean;
};
}
export interface Report {
v: string; // Version
p: string; // Project Id
u: string; // User Id
s: string; // Session Id
n: number; // Page Number
m?: string; // Message, optional
e?: string; // Error Stack, optional
}
export interface Config {
projectId?: string;
delay?: number;
lean?: boolean;
lite?: boolean;
track?: boolean;
content?: boolean;
drop?: string[];
mask?: string[];
unmask?: string[];
regions?: Region[];
cookies?: string[];
fraud?: boolean;
checksum?: Checksum[];
report?: string;
upload?: string | UploadCallback;
fallback?: string;
upgrade?: (key: string) => void;
action?: (key: string) => void;
dob?: number;
delayDom?: boolean;
throttleDom?: boolean;
conversions?: boolean;
includeSubdomains?: boolean;
}
export const enum Constant {
Zone = "Zone",
Symbol = "__symbol__",
AddEventListener = "addEventListener",
RemoveEventListener = "removeEventListener",
}