posthog-js 1.84.2 → 1.84.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array.full.js +1 -10
- package/dist/array.full.js.map +1 -1
- package/dist/array.js +1 -10
- package/dist/array.js.map +1 -1
- package/dist/es.js +1 -10
- package/dist/es.js.map +1 -1
- package/dist/module.d.ts +32 -148
- package/dist/module.js +1 -10
- package/dist/module.js.map +1 -1
- package/dist/recorder-v2.js +2 -2
- package/dist/recorder-v2.js.map +1 -1
- package/dist/recorder.js +1 -1
- package/dist/recorder.js.map +1 -1
- package/dist/surveys.js +1 -1
- package/dist/surveys.js.map +1 -1
- package/lib/package.json +9 -4
- package/lib/src/autocapture-utils.js +6 -6
- package/lib/src/autocapture-utils.js.map +1 -1
- package/lib/src/autocapture.js +5 -5
- package/lib/src/autocapture.js.map +1 -1
- package/lib/src/constants.d.ts +1 -0
- package/lib/src/constants.js +1 -0
- package/lib/src/constants.js.map +1 -1
- package/lib/src/extensions/exceptions/error-conversion.js +3 -2
- package/lib/src/extensions/exceptions/error-conversion.js.map +1 -1
- package/lib/src/extensions/exceptions/exception-autocapture.js +4 -7
- package/lib/src/extensions/exceptions/exception-autocapture.js.map +1 -1
- package/lib/src/extensions/exceptions/stack-trace.js +3 -2
- package/lib/src/extensions/exceptions/stack-trace.js.map +1 -1
- package/lib/src/extensions/exceptions/type-checking.js +3 -2
- package/lib/src/extensions/exceptions/type-checking.js.map +1 -1
- package/lib/src/extensions/{sessionrecording-utils.js → replay/sessionrecording-utils.js} +3 -2
- package/lib/src/extensions/replay/sessionrecording-utils.js.map +1 -0
- package/lib/src/extensions/{sessionrecording.d.ts → replay/sessionrecording.d.ts} +27 -19
- package/lib/src/extensions/{sessionrecording.js → replay/sessionrecording.js} +217 -92
- package/lib/src/extensions/replay/sessionrecording.js.map +1 -0
- package/lib/src/extensions/{web-performance.d.ts → replay/web-performance.d.ts} +2 -2
- package/lib/src/extensions/{web-performance.js → replay/web-performance.js} +3 -3
- package/lib/src/extensions/replay/web-performance.js.map +1 -0
- package/lib/src/extensions/surveys.js +3 -2
- package/lib/src/extensions/surveys.js.map +1 -1
- package/lib/src/loader-recorder-v2.js +2 -3
- package/lib/src/loader-recorder-v2.js.map +1 -1
- package/lib/src/loader-recorder.js +2 -1
- package/lib/src/loader-recorder.js.map +1 -1
- package/lib/src/loader-surveys.js +2 -1
- package/lib/src/loader-surveys.js.map +1 -1
- package/lib/src/posthog-core.d.ts +2 -2
- package/lib/src/posthog-core.js +14 -14
- package/lib/src/posthog-core.js.map +1 -1
- package/lib/src/posthog-featureflags.js +4 -4
- package/lib/src/posthog-featureflags.js.map +1 -1
- package/lib/src/posthog-persistence.js +4 -4
- package/lib/src/posthog-persistence.js.map +1 -1
- package/lib/src/request-queue.js +2 -2
- package/lib/src/request-queue.js.map +1 -1
- package/lib/src/retry-queue.js +7 -3
- package/lib/src/retry-queue.js.map +1 -1
- package/lib/src/send-request.js +3 -3
- package/lib/src/send-request.js.map +1 -1
- package/lib/src/sessionid.d.ts +6 -4
- package/lib/src/sessionid.js +17 -15
- package/lib/src/sessionid.js.map +1 -1
- package/lib/src/storage.js +7 -7
- package/lib/src/storage.js.map +1 -1
- package/lib/src/types.d.ts +3 -0
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils.d.ts +8 -10
- package/lib/src/utils.js +42 -31
- package/lib/src/utils.js.map +1 -1
- package/lib/src/uuidv7.js +6 -4
- package/lib/src/uuidv7.js.map +1 -1
- package/package.json +9 -4
- package/lib/src/extensions/sessionrecording-utils.js.map +0 -1
- package/lib/src/extensions/sessionrecording.js.map +0 -1
- package/lib/src/extensions/web-performance.js.map +0 -1
- /package/lib/src/extensions/{sessionrecording-utils.d.ts → replay/sessionrecording-utils.d.ts} +0 -0
package/dist/module.d.ts
CHANGED
|
@@ -49,18 +49,6 @@ type serializedNode = (documentNode | documentTypeNode | elementNode | textNode
|
|
|
49
49
|
type serializedNodeWithId = serializedNode & {
|
|
50
50
|
id: number;
|
|
51
51
|
};
|
|
52
|
-
interface IMirror<TNode> {
|
|
53
|
-
getId(n: TNode | undefined | null): number;
|
|
54
|
-
getNode(id: number): TNode | null;
|
|
55
|
-
getIds(): number[];
|
|
56
|
-
getMeta(n: TNode): serializedNodeWithId | null;
|
|
57
|
-
removeNodeFromMap(n: TNode): void;
|
|
58
|
-
has(id: number): boolean;
|
|
59
|
-
hasNode(node: TNode): boolean;
|
|
60
|
-
add(n: TNode, meta: serializedNodeWithId): void;
|
|
61
|
-
replace(id: number, n: TNode): void;
|
|
62
|
-
reset(): void;
|
|
63
|
-
}
|
|
64
52
|
type MaskInputOptions = Partial<{
|
|
65
53
|
color: boolean;
|
|
66
54
|
date: boolean;
|
|
@@ -91,27 +79,6 @@ type SlimDOMOptions = Partial<{
|
|
|
91
79
|
headMetaAuthorship: boolean;
|
|
92
80
|
headMetaVerification: boolean;
|
|
93
81
|
}>;
|
|
94
|
-
type DataURLOptions = Partial<{
|
|
95
|
-
type: string;
|
|
96
|
-
quality: number;
|
|
97
|
-
}>;
|
|
98
|
-
type MaskTextFn = (text: string) => string;
|
|
99
|
-
type MaskInputFn = (text: string, element: HTMLElement) => string;
|
|
100
|
-
|
|
101
|
-
declare class Mirror implements IMirror<Node> {
|
|
102
|
-
private idNodeMap;
|
|
103
|
-
private nodeMetaMap;
|
|
104
|
-
getId(n: Node | undefined | null): number;
|
|
105
|
-
getNode(id: number): Node | null;
|
|
106
|
-
getIds(): number[];
|
|
107
|
-
getMeta(n: Node): serializedNodeWithId | null;
|
|
108
|
-
removeNodeFromMap(n: Node): void;
|
|
109
|
-
has(id: number): boolean;
|
|
110
|
-
hasNode(node: Node): boolean;
|
|
111
|
-
add(n: Node, meta: serializedNodeWithId): void;
|
|
112
|
-
replace(id: number, n: Node): void;
|
|
113
|
-
reset(): void;
|
|
114
|
-
}
|
|
115
82
|
|
|
116
83
|
declare class RequestQueueScaffold {
|
|
117
84
|
isPolling: boolean;
|
|
@@ -355,6 +322,9 @@ interface DecideResponse {
|
|
|
355
322
|
endpoint?: string;
|
|
356
323
|
consoleLogRecordingEnabled?: boolean;
|
|
357
324
|
recorderVersion?: 'v1' | 'v2';
|
|
325
|
+
sampleRate?: string | null;
|
|
326
|
+
minimumDurationMilliseconds?: number;
|
|
327
|
+
linkedFlag?: string | null;
|
|
358
328
|
};
|
|
359
329
|
surveys?: boolean;
|
|
360
330
|
toolbarParams: ToolbarParams;
|
|
@@ -686,49 +656,6 @@ type eventWithTime = event & {
|
|
|
686
656
|
timestamp: number;
|
|
687
657
|
delay?: number;
|
|
688
658
|
};
|
|
689
|
-
type blockClass = string | RegExp;
|
|
690
|
-
type maskTextClass = string | RegExp;
|
|
691
|
-
type SamplingStrategy = Partial<{
|
|
692
|
-
mousemove: boolean | number;
|
|
693
|
-
mousemoveCallback: number;
|
|
694
|
-
mouseInteraction: boolean | Record<string, boolean | undefined>;
|
|
695
|
-
scroll: number;
|
|
696
|
-
media: number;
|
|
697
|
-
input: 'all' | 'last';
|
|
698
|
-
canvas: 'all' | number;
|
|
699
|
-
}>;
|
|
700
|
-
interface ICrossOriginIframeMirror {
|
|
701
|
-
getId(iframe: HTMLIFrameElement, remoteId: number, parentToRemoteMap?: Map<number, number>, remoteToParentMap?: Map<number, number>): number;
|
|
702
|
-
getIds(iframe: HTMLIFrameElement, remoteId: number[]): number[];
|
|
703
|
-
getRemoteId(iframe: HTMLIFrameElement, parentId: number, map?: Map<number, number>): number;
|
|
704
|
-
getRemoteIds(iframe: HTMLIFrameElement, parentId: number[]): number[];
|
|
705
|
-
reset(iframe?: HTMLIFrameElement): void;
|
|
706
|
-
}
|
|
707
|
-
type RecordPlugin<TOptions = unknown> = {
|
|
708
|
-
name: string;
|
|
709
|
-
observer?: (cb: (...args: Array<unknown>) => void, win: IWindow, options: TOptions) => listenerHandler;
|
|
710
|
-
eventProcessor?: <TExtend>(event: eventWithTime) => eventWithTime & TExtend;
|
|
711
|
-
getMirror?: (mirrors: {
|
|
712
|
-
nodeMirror: Mirror;
|
|
713
|
-
crossOriginIframeMirror: ICrossOriginIframeMirror;
|
|
714
|
-
crossOriginIframeStyleMirror: ICrossOriginIframeMirror;
|
|
715
|
-
}) => void;
|
|
716
|
-
options: TOptions;
|
|
717
|
-
};
|
|
718
|
-
type hooksParam = {
|
|
719
|
-
mutation?: mutationCallBack;
|
|
720
|
-
mousemove?: mousemoveCallBack;
|
|
721
|
-
mouseInteraction?: mouseInteractionCallBack;
|
|
722
|
-
scroll?: scrollCallback;
|
|
723
|
-
viewportResize?: viewportResizeCallback;
|
|
724
|
-
input?: inputCallback;
|
|
725
|
-
mediaInteaction?: mediaInteractionCallback;
|
|
726
|
-
styleSheetRule?: styleSheetRuleCallback;
|
|
727
|
-
styleDeclaration?: styleDeclarationCallback;
|
|
728
|
-
canvasMutation?: canvasMutationCallback;
|
|
729
|
-
font?: fontCallback;
|
|
730
|
-
selection?: selectionCallback;
|
|
731
|
-
};
|
|
732
659
|
type textMutation = {
|
|
733
660
|
id: number;
|
|
734
661
|
value: string | null;
|
|
@@ -761,8 +688,6 @@ type mutationCallbackParam = {
|
|
|
761
688
|
adds: addedNodeMutation[];
|
|
762
689
|
isAttachIframe?: true;
|
|
763
690
|
};
|
|
764
|
-
type mutationCallBack = (m: mutationCallbackParam) => void;
|
|
765
|
-
type mousemoveCallBack = (p: mousePosition[], source: IncrementalSource.MouseMove | IncrementalSource.TouchMove | IncrementalSource.Drag) => void;
|
|
766
691
|
type mousePosition = {
|
|
767
692
|
x: number;
|
|
768
693
|
y: number;
|
|
@@ -799,13 +724,11 @@ type mouseInteractionParam = {
|
|
|
799
724
|
y: number;
|
|
800
725
|
pointerType?: PointerTypes;
|
|
801
726
|
};
|
|
802
|
-
type mouseInteractionCallBack = (d: mouseInteractionParam) => void;
|
|
803
727
|
type scrollPosition = {
|
|
804
728
|
id: number;
|
|
805
729
|
x: number;
|
|
806
730
|
y: number;
|
|
807
731
|
};
|
|
808
|
-
type scrollCallback = (p: scrollPosition) => void;
|
|
809
732
|
type styleSheetAddRule = {
|
|
810
733
|
rule: string;
|
|
811
734
|
index?: number | number[];
|
|
@@ -821,7 +744,6 @@ type styleSheetRuleParam = {
|
|
|
821
744
|
replace?: string;
|
|
822
745
|
replaceSync?: string;
|
|
823
746
|
};
|
|
824
|
-
type styleSheetRuleCallback = (s: styleSheetRuleParam) => void;
|
|
825
747
|
type adoptedStyleSheetParam = {
|
|
826
748
|
id: number;
|
|
827
749
|
styles?: {
|
|
@@ -843,7 +765,6 @@ type styleDeclarationParam = {
|
|
|
843
765
|
property: string;
|
|
844
766
|
};
|
|
845
767
|
};
|
|
846
|
-
type styleDeclarationCallback = (s: styleDeclarationParam) => void;
|
|
847
768
|
type canvasMutationCommand = {
|
|
848
769
|
property: string;
|
|
849
770
|
args: Array<unknown>;
|
|
@@ -857,27 +778,21 @@ type canvasMutationParam = {
|
|
|
857
778
|
id: number;
|
|
858
779
|
type: CanvasContext;
|
|
859
780
|
} & canvasMutationCommand);
|
|
860
|
-
type canvasMutationCallback = (p: canvasMutationParam) => void;
|
|
861
781
|
type fontParam = {
|
|
862
782
|
family: string;
|
|
863
783
|
fontSource: string;
|
|
864
784
|
buffer: boolean;
|
|
865
785
|
descriptors?: FontFaceDescriptors;
|
|
866
786
|
};
|
|
867
|
-
type fontCallback = (p: fontParam) => void;
|
|
868
787
|
type viewportResizeDimension = {
|
|
869
788
|
width: number;
|
|
870
789
|
height: number;
|
|
871
790
|
};
|
|
872
|
-
type viewportResizeCallback = (d: viewportResizeDimension) => void;
|
|
873
791
|
type inputValue = {
|
|
874
792
|
text: string;
|
|
875
793
|
isChecked: boolean;
|
|
876
794
|
userTriggered?: boolean;
|
|
877
795
|
};
|
|
878
|
-
type inputCallback = (v: inputValue & {
|
|
879
|
-
id: number;
|
|
880
|
-
}) => void;
|
|
881
796
|
declare const enum MediaInteractions {
|
|
882
797
|
Play = 0,
|
|
883
798
|
Pause = 1,
|
|
@@ -893,7 +808,6 @@ type mediaInteractionParam = {
|
|
|
893
808
|
muted?: boolean;
|
|
894
809
|
playbackRate?: number;
|
|
895
810
|
};
|
|
896
|
-
type mediaInteractionCallback = (p: mediaInteractionParam) => void;
|
|
897
811
|
type SelectionRange = {
|
|
898
812
|
start: number;
|
|
899
813
|
startOffset: number;
|
|
@@ -903,57 +817,15 @@ type SelectionRange = {
|
|
|
903
817
|
type selectionParam = {
|
|
904
818
|
ranges: Array<SelectionRange>;
|
|
905
819
|
};
|
|
906
|
-
type selectionCallback = (p: selectionParam) => void;
|
|
907
|
-
type listenerHandler = () => void;
|
|
908
|
-
type KeepIframeSrcFn = (src: string) => boolean;
|
|
909
820
|
declare global {
|
|
910
821
|
interface Window {
|
|
911
822
|
FontFace: typeof FontFace;
|
|
912
823
|
}
|
|
913
824
|
}
|
|
914
|
-
type IWindow = Window & typeof globalThis;
|
|
915
|
-
|
|
916
|
-
declare type rrwebRecord = {
|
|
917
|
-
(options: recordOptions<eventWithTime>): listenerHandler;
|
|
918
|
-
addCustomEvent: (tag: string, payload: any) => void;
|
|
919
|
-
takeFullSnapshot: () => void;
|
|
920
|
-
mirror: Mirror;
|
|
921
|
-
};
|
|
922
|
-
declare type recordOptions<T> = {
|
|
923
|
-
emit?: (e: T, isCheckout?: boolean) => void;
|
|
924
|
-
checkoutEveryNth?: number;
|
|
925
|
-
checkoutEveryNms?: number;
|
|
926
|
-
blockClass?: blockClass;
|
|
927
|
-
blockSelector?: string;
|
|
928
|
-
ignoreClass?: string;
|
|
929
|
-
maskTextClass?: maskTextClass;
|
|
930
|
-
maskTextSelector?: string;
|
|
931
|
-
maskAllInputs?: boolean;
|
|
932
|
-
maskInputOptions?: MaskInputOptions;
|
|
933
|
-
maskInputFn?: MaskInputFn;
|
|
934
|
-
maskTextFn?: MaskTextFn;
|
|
935
|
-
slimDOMOptions?: SlimDOMOptions | 'all' | true;
|
|
936
|
-
ignoreCSSAttributes?: Set<string>;
|
|
937
|
-
inlineStylesheet?: boolean;
|
|
938
|
-
hooks?: hooksParam;
|
|
939
|
-
sampling?: SamplingStrategy;
|
|
940
|
-
dataURLOptions?: DataURLOptions;
|
|
941
|
-
recordCanvas?: boolean;
|
|
942
|
-
recordCrossOriginIframes?: boolean;
|
|
943
|
-
recordAfter?: 'DOMContentLoaded' | 'load';
|
|
944
|
-
userTriggeredOnInput?: boolean;
|
|
945
|
-
collectFonts?: boolean;
|
|
946
|
-
inlineImages?: boolean;
|
|
947
|
-
plugins?: RecordPlugin[];
|
|
948
|
-
mousemoveWait?: number;
|
|
949
|
-
keepIframeSrcFn?: KeepIframeSrcFn;
|
|
950
|
-
};
|
|
951
825
|
|
|
952
826
|
declare class SessionRecording {
|
|
953
|
-
|
|
954
|
-
get endpoint(): string;
|
|
827
|
+
private _linkedFlagSeen;
|
|
955
828
|
private instance;
|
|
956
|
-
private emit;
|
|
957
829
|
private _endpoint;
|
|
958
830
|
private windowId;
|
|
959
831
|
private sessionId;
|
|
@@ -961,21 +833,30 @@ declare class SessionRecording {
|
|
|
961
833
|
private flushBufferTimer?;
|
|
962
834
|
private buffer?;
|
|
963
835
|
private mutationRateLimiter?;
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
836
|
+
private _captureStarted;
|
|
837
|
+
private stopRrweb;
|
|
838
|
+
private receivedDecide;
|
|
839
|
+
private rrwebRecord;
|
|
840
|
+
private isIdle;
|
|
841
|
+
private _linkedFlag;
|
|
842
|
+
private _sampleRate;
|
|
843
|
+
private _minimumDuration;
|
|
844
|
+
get started(): boolean;
|
|
845
|
+
private get sessionManager();
|
|
846
|
+
private get isSampled();
|
|
847
|
+
private get sessionDuration();
|
|
848
|
+
private get isRecordingEnabled();
|
|
849
|
+
private get isConsoleLogCaptureEnabled();
|
|
850
|
+
private get recordingVersion();
|
|
851
|
+
/**
|
|
852
|
+
* defaults to buffering mode until a decide response is received
|
|
853
|
+
* once a decide response is received status can be disabled, active or sampled
|
|
854
|
+
*/
|
|
855
|
+
private get status();
|
|
971
856
|
constructor(instance: PostHog);
|
|
972
|
-
private getSessionManager;
|
|
973
857
|
startRecordingIfEnabled(): void;
|
|
974
|
-
started(): boolean;
|
|
975
858
|
stopRecording(): void;
|
|
976
|
-
|
|
977
|
-
isConsoleLogCaptureEnabled(): boolean;
|
|
978
|
-
getRecordingVersion(): any;
|
|
859
|
+
private makeSamplingDecision;
|
|
979
860
|
afterDecideResponse(response: DecideResponse): void;
|
|
980
861
|
log(message: string, level?: 'log' | 'warn' | 'error'): void;
|
|
981
862
|
private startCaptureAndTrySendingQueuedSnapshots;
|
|
@@ -986,6 +867,7 @@ declare class SessionRecording {
|
|
|
986
867
|
private _onScriptLoaded;
|
|
987
868
|
onRRwebEmit(rawEvent: eventWithTime): void;
|
|
988
869
|
private _maskUrl;
|
|
870
|
+
private clearBuffer;
|
|
989
871
|
private _flushBuffer;
|
|
990
872
|
private _captureSnapshotBuffered;
|
|
991
873
|
private _captureSnapshot;
|
|
@@ -1037,17 +919,19 @@ declare class RequestQueue extends RequestQueueScaffold {
|
|
|
1037
919
|
}
|
|
1038
920
|
|
|
1039
921
|
declare class SessionIdManager {
|
|
922
|
+
private readonly _sessionIdGenerator;
|
|
923
|
+
private readonly _windowIdGenerator;
|
|
1040
924
|
private config;
|
|
1041
925
|
private persistence;
|
|
1042
926
|
private _windowId;
|
|
1043
927
|
private _sessionId;
|
|
1044
|
-
private _window_id_storage_key;
|
|
1045
|
-
private _primary_window_exists_storage_key;
|
|
928
|
+
private readonly _window_id_storage_key;
|
|
929
|
+
private readonly _primary_window_exists_storage_key;
|
|
1046
930
|
private _sessionStartTimestamp;
|
|
1047
931
|
private _sessionActivityTimestamp;
|
|
1048
|
-
private _sessionTimeoutMs;
|
|
932
|
+
private readonly _sessionTimeoutMs;
|
|
1049
933
|
private _sessionIdChangedHandlers;
|
|
1050
|
-
constructor(config: Partial<PostHogConfig>, persistence: PostHogPersistence);
|
|
934
|
+
constructor(config: Partial<PostHogConfig>, persistence: PostHogPersistence, sessionIdGenerator?: () => string, windowIdGenerator?: () => string);
|
|
1051
935
|
onSessionId(callback: SessionIdChangedCallback): () => void;
|
|
1052
936
|
private _canUseSessionStorage;
|
|
1053
937
|
private _setWindowId;
|