posthog-js
Version:
Posthog-js allows you to automatically capture usage and send events to PostHog.
500 lines (422 loc) • 11.8 kB
TypeScript
declare type addedNodeMutation = {
parentId: number;
previousId?: number | null;
nextId: number | null;
node: serializedNodeWithId;
};
declare type adoptedStyleSheetData = {
source: IncrementalSource.AdoptedStyleSheet;
} & adoptedStyleSheetParam;
declare type adoptedStyleSheetParam = {
id: number;
styles?: {
styleId: number;
rules: styleSheetAddRule[];
}[];
styleIds: number[];
};
declare type attributeMutation = {
id: number;
attributes: {
[key: string]: string | styleOMValue | null;
};
};
declare type attributes = cssTextKeyAttr & {
[key: string]: string | number | true | null;
};
declare enum CanvasContext {
'2D' = 0,
WebGL = 1,
WebGL2 = 2
}
declare type canvasMutationCommand = {
property: string;
args: Array<unknown>;
setter?: true;
};
declare type canvasMutationData = {
source: IncrementalSource.CanvasMutation;
} & canvasMutationParam;
declare type canvasMutationParam = {
id: number;
type: CanvasContext;
commands: canvasMutationCommand[];
displayWidth?: number;
displayHeight?: number;
} | ({
id: number;
type: CanvasContext;
displayWidth?: number;
displayHeight?: number;
} & canvasMutationCommand);
declare type cdataNode = {
type: NodeType.CDATA;
textContent: '';
};
declare type commentNode = {
type: NodeType.Comment;
textContent: string;
};
declare type cssTextKeyAttr = {
_cssText?: string;
};
declare type customElementData = {
source: IncrementalSource.CustomElement;
} & customElementParam;
declare type customElementParam = {
define?: {
name: string;
};
};
declare type customEvent<T = unknown> = {
type: EventType.Custom;
data: {
tag: string;
payload: T;
};
};
declare type documentNode = {
type: NodeType.Document;
childNodes: serializedNodeWithId[];
compatMode?: string;
};
declare type documentTypeNode = {
type: NodeType.DocumentType;
name: string;
publicId: string;
systemId: string;
};
declare type domContentLoadedEvent = {
type: EventType.DomContentLoaded;
data: unknown;
};
declare type elementNode = {
type: NodeType.Element;
tagName: string;
attributes: attributes;
childNodes: serializedNodeWithId[];
isSVG?: true;
needBlock?: boolean;
isCustom?: true;
};
declare enum EventType {
DomContentLoaded = 0,
Load = 1,
FullSnapshot = 2,
IncrementalSnapshot = 3,
Meta = 4,
Custom = 5,
Plugin = 6
}
declare type eventWithoutTime = domContentLoadedEvent | loadedEvent | fullSnapshotEvent | incrementalSnapshotEvent | metaEvent | customEvent | pluginEvent;
declare type eventWithTime = eventWithoutTime & {
timestamp: number;
delay?: number;
};
declare type fontData = {
source: IncrementalSource.Font;
} & fontParam;
declare type fontParam = {
family: string;
fontSource: string;
buffer: boolean;
descriptors?: FontFaceDescriptors;
};
declare type fullSnapshotEvent = {
type: EventType.FullSnapshot;
data: {
node: serializedNodeWithId;
initialOffset: {
top: number;
left: number;
};
};
};
declare interface ICrossOriginIframeMirror {
getId(iframe: HTMLIFrameElement, remoteId: number, parentToRemoteMap?: Map<number, number>, remoteToParentMap?: Map<number, number>): number;
getIds(iframe: HTMLIFrameElement, remoteId: number[]): number[];
getRemoteId(iframe: HTMLIFrameElement, parentId: number, map?: Map<number, number>): number;
getRemoteIds(iframe: HTMLIFrameElement, parentId: number[]): number[];
reset(iframe?: HTMLIFrameElement): void;
}
declare interface IMirror<TNode> {
getId(n: TNode | undefined | null): number;
getNode(id: number): TNode | null;
getIds(): number[];
getMeta(n: TNode): serializedNodeWithId | null;
removeNodeFromMap(n: TNode): void;
has(id: number): boolean;
hasNode(node: TNode): boolean;
add(n: TNode, meta: serializedNodeWithId): void;
replace(id: number, n: TNode): void;
reset(): void;
}
declare type incrementalData = mutationData | mousemoveData | mouseInteractionData | scrollData | viewportResizeData | inputData | mediaInteractionData | styleSheetRuleData | canvasMutationData | fontData | selectionData | styleDeclarationData | adoptedStyleSheetData | customElementData;
declare type incrementalSnapshotEvent = {
type: EventType.IncrementalSnapshot;
data: incrementalData;
};
declare enum IncrementalSource {
Mutation = 0,
MouseMove = 1,
MouseInteraction = 2,
Scroll = 3,
ViewportResize = 4,
Input = 5,
TouchMove = 6,
MediaInteraction = 7,
StyleSheetRule = 8,
CanvasMutation = 9,
Font = 10,
Log = 11,
Drag = 12,
StyleDeclaration = 13,
Selection = 14,
AdoptedStyleSheet = 15,
CustomElement = 16
}
declare type inputData = {
source: IncrementalSource.Input;
id: number;
} & inputValue;
declare type inputValue = {
text: string;
isChecked: boolean;
userTriggered?: boolean;
};
declare type IWindow = Window & typeof globalThis;
declare type listenerHandler = () => void;
declare type loadedEvent = {
type: EventType.Load;
data: unknown;
};
declare type mediaInteractionData = {
source: IncrementalSource.MediaInteraction;
} & mediaInteractionParam;
declare type mediaInteractionParam = {
type: MediaInteractions;
id: number;
currentTime?: number;
volume?: number;
muted?: boolean;
loop?: boolean;
playbackRate?: number;
};
declare enum MediaInteractions {
Play = 0,
Pause = 1,
Seeked = 2,
VolumeChange = 3,
RateChange = 4
}
declare type metaEvent = {
type: EventType.Meta;
data: {
href: string;
width: number;
height: number;
};
};
declare type mouseInteractionData = {
source: IncrementalSource.MouseInteraction;
} & mouseInteractionParam;
declare type mouseInteractionParam = {
type: MouseInteractions;
id: number;
x?: number;
y?: number;
pointerType?: PointerTypes;
};
declare enum MouseInteractions {
MouseUp = 0,
MouseDown = 1,
Click = 2,
ContextMenu = 3,
DblClick = 4,
Focus = 5,
Blur = 6,
TouchStart = 7,
TouchMove_Departed = 8,
TouchEnd = 9,
TouchCancel = 10
}
declare type mousemoveData = {
source: IncrementalSource.MouseMove | IncrementalSource.TouchMove | IncrementalSource.Drag;
positions: mousePosition[];
};
declare type mousePosition = {
x: number;
y: number;
id: number;
timeOffset: number;
};
declare type mutationCallbackParam = {
texts: textMutation[];
attributes: attributeMutation[];
removes: removedNodeMutation[];
adds: addedNodeMutation[];
isAttachIframe?: true;
};
declare type mutationData = {
source: IncrementalSource.Mutation;
} & mutationCallbackParam;
declare enum NodeType {
Document = 0,
DocumentType = 1,
Element = 2,
Text = 3,
CDATA = 4,
Comment = 5
}
declare type pluginEvent<T = unknown> = {
type: EventType.Plugin;
data: {
plugin: string;
payload: T;
};
};
declare enum PointerTypes {
Mouse = 0,
Pen = 1,
Touch = 2
}
declare type RecordPlugin<TOptions = unknown> = {
name: string;
observer?: (cb: (...args: Array<unknown>) => void, win: IWindow, options: TOptions) => listenerHandler;
eventProcessor?: <TExtend>(event: eventWithTime) => eventWithTime & TExtend;
getMirror?: (mirrors: {
nodeMirror: IMirror<Node>;
crossOriginIframeMirror: ICrossOriginIframeMirror;
crossOriginIframeStyleMirror: ICrossOriginIframeMirror;
}) => void;
options: TOptions;
};
declare type removedNodeMutation = {
parentId: number;
id: number;
isShadow?: boolean;
};
declare type scrollData = {
source: IncrementalSource.Scroll;
} & scrollPosition;
declare type scrollPosition = {
id: number;
x: number;
y: number;
};
declare type selectionData = {
source: IncrementalSource.Selection;
} & selectionParam;
declare type selectionParam = {
ranges: Array<SelectionRange>;
};
declare type SelectionRange = {
start: number;
startOffset: number;
end: number;
endOffset: number;
};
declare type serializedNode = (documentNode | documentTypeNode | elementNode | textNode | cdataNode | commentNode) & {
rootId?: number;
isShadowHost?: boolean;
isShadow?: boolean;
};
declare type serializedNodeWithId = serializedNode & {
id: number;
};
declare type styleDeclarationData = {
source: IncrementalSource.StyleDeclaration;
} & styleDeclarationParam;
declare type styleDeclarationParam = {
id?: number;
styleId?: number;
index: number[];
set?: {
property: string;
value: string | null;
priority: string | undefined;
};
remove?: {
property: string;
};
};
declare type styleOMValue = {
[key: string]: styleValueWithPriority | string | false;
};
declare type styleSheetAddRule = {
rule: string;
index?: number | number[];
};
declare type styleSheetDeleteRule = {
index: number | number[];
};
declare type styleSheetRuleData = {
source: IncrementalSource.StyleSheetRule;
} & styleSheetRuleParam;
declare type styleSheetRuleParam = {
id?: number;
styleId?: number;
removes?: styleSheetDeleteRule[];
adds?: styleSheetAddRule[];
replace?: string;
replaceSync?: string;
};
declare type styleValueWithPriority = [string, string];
declare type textMutation = {
id: number;
value: string | null;
};
declare type textNode = {
type: NodeType.Text;
textContent: string;
isStyle?: true;
};
declare type viewportResizeData = {
source: IncrementalSource.ViewportResize;
} & viewportResizeDimension;
declare type viewportResizeDimension = {
width: number;
height: number;
};
declare const getRecordConsolePlugin: (options?: LogRecordOptions) => RecordPlugin;
declare type LogData = {
level: LogLevel;
trace: string[];
payload: string[];
};
declare type Logger = {
assert?: typeof console.assert;
clear?: typeof console.clear;
count?: typeof console.count;
countReset?: typeof console.countReset;
debug?: typeof console.debug;
dir?: typeof console.dir;
dirxml?: typeof console.dirxml;
error?: typeof console.error;
group?: typeof console.group;
groupCollapsed?: typeof console.groupCollapsed;
groupEnd?: () => void;
info?: typeof console.info;
log?: typeof console.log;
table?: typeof console.table;
time?: typeof console.time;
timeEnd?: typeof console.timeEnd;
timeLog?: typeof console.timeLog;
trace?: typeof console.trace;
warn?: typeof console.warn;
};
declare type LogLevel = keyof Logger;
declare type LogRecordOptions = {
level?: LogLevel[];
lengthThreshold?: number;
stringifyOptions?: StringifyOptions;
logger?: Logger | 'console';
};
declare const PLUGIN_NAME = "rrweb/console@1";
declare type StringifyOptions = {
stringLengthLimit?: number;
numOfKeysLimit: number;
depthOfLimit: number;
};
export { PLUGIN_NAME, getRecordConsolePlugin };
export type { LogData, LogLevel, Logger, StringifyOptions };