@screeb/rrweb 1.0.21 → 2.1.6-screeb.1

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/rrweb.d.cts CHANGED
@@ -1,120 +1,49 @@
1
- import { actionWithDelay } from '@sentry-internal/rrweb-types';
2
- import { addedNodeMutation } from '@sentry-internal/rrweb-types';
3
- import { blockClass } from '@sentry-internal/rrweb-types';
4
- import { CanvasArg } from '@sentry-internal/rrweb-types';
5
- import { canvasMutationCallback } from '@sentry-internal/rrweb-types';
6
- import { canvasMutationData } from '@sentry-internal/rrweb-types';
7
- import { canvasMutationParam } from '@sentry-internal/rrweb-types';
8
- import { DataURLOptions } from '@sentry-internal/rrweb-snapshot';
9
- import { DeprecatedMirror } from '@sentry-internal/rrweb-types';
10
- import { DocumentDimension } from '@sentry-internal/rrweb-types';
11
- import { Emitter } from '@sentry-internal/rrweb-types';
12
- import { EventType } from '@sentry-internal/rrweb-types';
13
- import { eventWithTime } from '@sentry-internal/rrweb-types';
14
- import { fullSnapshotEvent } from '@sentry-internal/rrweb-types';
15
- import { Handler } from '@sentry-internal/rrweb-types';
16
- import { hookResetter } from '@sentry-internal/rrweb-types';
17
- import { hooksParam } from '@sentry-internal/rrweb-types';
18
- import { IMirror } from '@sentry-internal/rrweb-snapshot';
19
- import { incrementalSnapshotEvent } from '@sentry-internal/rrweb-types';
20
- import { IncrementalSource } from '@sentry-internal/rrweb-types';
21
- import { inputData } from '@sentry-internal/rrweb-types';
22
- import { IWindow } from '@sentry-internal/rrweb-types';
23
- import { KeepIframeSrcFn } from '@sentry-internal/rrweb-types';
24
- import { listenerHandler } from '@sentry-internal/rrweb-types';
25
- import { MaskAttributeFn } from '@sentry-internal/rrweb-snapshot';
26
- import { MaskInputFn } from '@sentry-internal/rrweb-snapshot';
27
- import { MaskInputOptions } from '@sentry-internal/rrweb-snapshot';
28
- import { maskTextClass } from '@sentry-internal/rrweb-types';
29
- import { MaskTextFn } from '@sentry-internal/rrweb-snapshot';
30
- import { Mirror } from '@sentry-internal/rrweb-snapshot';
31
- import { MouseInteractions } from '@sentry-internal/rrweb-types';
32
- import { PackFn } from '@sentry-internal/rrweb-types';
33
- import { playerMetaData } from '@sentry-internal/rrweb-types';
34
- import { RecordPlugin } from '@sentry-internal/rrweb-types';
35
- import { ReplayerEvents } from '@sentry-internal/rrweb-types';
36
- import { RRDocument } from '@sentry-internal/rrdom';
37
- import { RRIFrameElement } from '@sentry-internal/rrdom';
38
- import { RRNode } from '@sentry-internal/rrdom';
39
- import { SamplingStrategy } from '@sentry-internal/rrweb-types';
40
- import { SlimDOMOptions } from '@sentry-internal/rrweb-snapshot';
1
+ import { actionWithDelay } from '@rrweb/types';
2
+ import { addedNodeMutation } from '@rrweb/types';
3
+ import { blockClass } from '@rrweb/types';
4
+ import { canvasMutationData } from '@rrweb/types';
5
+ import { DataURLOptions } from '@rrweb/types';
6
+ import { DeprecatedMirror } from '@rrweb/types';
7
+ import { DocumentDimension } from '@rrweb/types';
8
+ import { Emitter } from '@rrweb/types';
9
+ import { EventType } from '@rrweb/types';
10
+ import { eventWithTime } from '@rrweb/types';
11
+ import { Handler } from '@rrweb/types';
12
+ import { hookResetter } from '@rrweb/types';
13
+ import { hooksParam } from '@rrweb/types';
14
+ import { IMirror } from '@rrweb/types';
15
+ import { IncrementalSource } from '@rrweb/types';
16
+ import { IWindow } from '@rrweb/types';
17
+ import { KeepIframeSrcFn } from '@rrweb/types';
18
+ import { listenerHandler } from '@rrweb/types';
19
+ import { MaskInputFn } from 'rrweb-snapshot';
20
+ import { MaskInputOptions } from 'rrweb-snapshot';
21
+ import { maskTextClass } from '@rrweb/types';
22
+ import { MaskTextFn } from 'rrweb-snapshot';
23
+ import { Mirror } from 'rrweb-snapshot';
24
+ import { MouseInteractions } from '@rrweb/types';
25
+ import { nowTimestamp } from '@rrweb/utils';
26
+ import { PackFn } from '@rrweb/types';
27
+ import { playerMetaData } from '@rrweb/types';
28
+ import { RecordPlugin } from '@rrweb/types';
29
+ import { ReplayerEvents } from '@rrweb/types';
30
+ import { RRDocument } from 'rrdom';
31
+ import { RRIFrameElement } from 'rrdom';
32
+ import { RRNode } from 'rrdom';
33
+ import { SamplingStrategy } from '@rrweb/types';
34
+ import { SlimDOMOptions } from 'rrweb-snapshot';
41
35
  import { StateMachine } from '@xstate/fsm';
42
- import { textMutation } from '@sentry-internal/rrweb-types';
43
- import { throttleOptions } from '@sentry-internal/rrweb-types';
44
- import { unmaskTextClass } from '@sentry-internal/rrweb-types';
45
- import { UnpackFn } from '@sentry-internal/rrweb-types';
36
+ import { textMutation } from '@rrweb/types';
37
+ import { throttleOptions } from '@rrweb/types';
38
+ import { UnpackFn } from '@rrweb/types';
46
39
 
47
- export declare function addCustomEvent<T>(tag: string, payload: T): void;
40
+ export declare const addCustomEvent: <T>(tag: string, payload: T) => void;
48
41
 
49
42
  declare type AppendedIframe = {
50
43
  mutationInQueue: addedNodeMutation;
51
44
  builtNode: HTMLIFrameElement | RRIFrameElement;
52
45
  };
53
46
 
54
- export declare class CanvasManager implements CanvasManagerInterface {
55
- private pendingCanvasMutations;
56
- private rafStamps;
57
- private options;
58
- private mirror;
59
- private shadowDoms;
60
- private windowsSet;
61
- private windows;
62
- private mutationCb;
63
- private restoreHandlers;
64
- private frozen;
65
- private locked;
66
- private snapshotInProgressMap;
67
- private worker;
68
- private lastSnapshotTime;
69
- reset(): void;
70
- freeze(): void;
71
- unfreeze(): void;
72
- lock(): void;
73
- unlock(): void;
74
- constructor(options: CanvasManagerConstructorOptions);
75
- addWindow(win: IWindow): void;
76
- addShadowRoot(shadowRoot: ShadowRoot): void;
77
- resetShadowRoots(): void;
78
- snapshot(canvasElement?: HTMLCanvasElement, options?: SnapshotOptions): void;
79
- private initFPSWorker;
80
- private processMutation;
81
- private initCanvasFPSObserver;
82
- private initCanvasMutationObserver;
83
- private getCanvasElements;
84
- private takeSnapshot;
85
- private startPendingCanvasMutationFlusher;
86
- private startRAFTimestamping;
87
- flushPendingCanvasMutations(): void;
88
- flushPendingCanvasMutationFor(canvas: HTMLCanvasElement, id: number): void;
89
- }
90
-
91
- export declare interface CanvasManagerConstructorOptions {
92
- recordCanvas: boolean;
93
- enableManualSnapshot?: boolean;
94
- mutationCb: canvasMutationCallback;
95
- win: IWindow;
96
- blockClass: blockClass;
97
- blockSelector: string | null;
98
- unblockSelector: string | null;
99
- maxCanvasSize?: MaxCanvasSize | null;
100
- mirror: Mirror;
101
- dataURLOptions: DataURLOptions;
102
- errorHandler?: ErrorHandler;
103
- sampling?: 'all' | number;
104
- }
105
-
106
- declare interface CanvasManagerInterface {
107
- reset(): void;
108
- freeze(): void;
109
- unfreeze(): void;
110
- lock(): void;
111
- unlock(): void;
112
- snapshot(canvasElement?: HTMLCanvasElement, options?: SnapshotOptions): void;
113
- addWindow(win: IWindow): void;
114
- addShadowRoot(shadowRoot: ShadowRoot): void;
115
- resetShadowRoots(): void;
116
- }
117
-
118
47
  export declare function canvasMutation({ event, mutation, target, imageMap, canvasEventMap, errorHandler, }: {
119
48
  event: Parameters<Replayer['applyIncremental']>[0];
120
49
  mutation: canvasMutationData;
@@ -124,35 +53,23 @@ export declare function canvasMutation({ event, mutation, target, imageMap, canv
124
53
  errorHandler: Replayer['warnCanvasMutationFailed'];
125
54
  }): Promise<void>;
126
55
 
127
- export { canvasMutationData }
128
-
129
- export { canvasMutationParam }
130
-
131
- declare function clearTimeout_2(...rest: Parameters<typeof window.clearTimeout>): ReturnType<typeof window.clearTimeout>;
132
-
133
56
  declare function closestElementOfNode(node: Node | null): HTMLElement | null;
134
57
 
135
58
  declare function createPlayerService(context: PlayerContext, { getCastFn, applyEventsSynchronously, emitter }: PlayerAssets): StateMachine.Service<PlayerContext, PlayerEvent, PlayerState>;
136
59
 
137
60
  declare function createSpeedService(context: SpeedContext): StateMachine.Service<SpeedContext, SpeedEvent, SpeedState>;
138
61
 
139
- export declare function deserializeArg(imageMap: Replayer['imageMap'], ctx: CanvasRenderingContext2D | WebGLRenderingContext | WebGL2RenderingContext | null, preload?: {
140
- isUnchanged: boolean;
141
- }): (arg: CanvasArg) => Promise<any>;
142
-
143
62
  declare type ErrorHandler = (error: unknown) => void | boolean;
144
63
 
145
64
  export { EventType }
146
65
 
147
66
  export { eventWithTime }
148
67
 
149
- export declare function freezePage(): void;
150
-
151
- export { fullSnapshotEvent }
68
+ export declare const freezePage: () => void;
152
69
 
153
70
  declare function getBaseDimension(node: Node, rootIframe: Node): DocumentDimension;
154
71
 
155
- declare function getNestedRule(rules: CSSRuleList, position: number[]): CSSGroupingRule;
72
+ declare function getNestedRule(rules: CSSRuleList, position: number[]): CSSGroupingRule | null;
156
73
 
157
74
  declare function getPositionsAndIndex(nestedIndex: number[]): {
158
75
  positions: number[];
@@ -178,19 +95,15 @@ declare function hasShadowRoot<T extends Node | RRNode>(n: T): n is T & {
178
95
 
179
96
  declare function hookSetter<T>(target: T, key: string | number | symbol, d: PropertyDescriptor, isRevoked?: boolean, win?: Window & typeof globalThis): hookResetter;
180
97
 
181
- export { incrementalSnapshotEvent }
182
-
183
98
  export { IncrementalSource }
184
99
 
185
100
  declare function inDom(n: Node): boolean;
186
101
 
187
- export { inputData }
188
-
189
102
  declare function isAncestorRemoved(target: Node, mirror: Mirror): boolean;
190
103
 
191
- declare function isBlocked(node: Node | null, blockClass: blockClass, blockSelector: string | null, unblockSelector: string | null, checkAncestors: boolean): boolean;
104
+ declare function isBlocked(node: Node | null, blockClass: blockClass, blockSelector: string | null, checkAncestors: boolean): boolean;
192
105
 
193
- declare function isIgnored(n: Node, mirror: Mirror): boolean;
106
+ declare function isIgnored(n: Node, mirror: Mirror, slimDOMOptions: SlimDOMOptions): boolean;
194
107
 
195
108
  declare function isSerialized(n: Node, mirror: Mirror): boolean;
196
109
 
@@ -202,22 +115,12 @@ declare function iterateResolveTree(tree: ResolveTree, cb: (mutation: addedNodeM
202
115
 
203
116
  declare function legacy_isTouchEvent(event: MouseEvent | TouchEvent | PointerEvent): event is TouchEvent;
204
117
 
205
- declare type MaxCanvasSize = [number, number];
206
-
207
- declare let _mirror: DeprecatedMirror;
118
+ export declare let mirror: DeprecatedMirror;
208
119
 
209
120
  export { MouseInteractions }
210
121
 
211
- declare let nowTimestamp: () => number;
212
-
213
122
  declare function on(type: string, fn: EventListenerOrEventListenerObject, target?: Document | IWindow): listenerHandler;
214
123
 
215
- declare function onRequestAnimationFrame(...rest: Parameters<typeof requestAnimationFrame>): ReturnType<typeof requestAnimationFrame>;
216
-
217
- declare function patch(source: {
218
- [key: string]: any;
219
- }, name: string, replacement: (...args: unknown[]) => unknown): () => void;
220
-
221
124
  declare type PlayerAssets = {
222
125
  emitter: Emitter;
223
126
  applyEventsSynchronously(events: Array<eventWithTime>): void;
@@ -290,7 +193,7 @@ declare type PlayerEvent = {
290
193
 
291
194
  export declare type PlayerMachineState = StateMachine.State<PlayerContext, PlayerEvent, PlayerState>;
292
195
 
293
- export declare type PlayerState = {
196
+ declare type PlayerState = {
294
197
  value: 'playing';
295
198
  context: PlayerContext;
296
199
  } | {
@@ -308,8 +211,10 @@ declare function queueToResolveTrees(queue: addedNodeMutation[]): ResolveTree[];
308
211
  export declare function record<T = eventWithTime>(options?: recordOptions<T>): listenerHandler | undefined;
309
212
 
310
213
  export declare namespace record {
214
+ var addCustomEvent: <T>(tag: string, payload: T) => void;
215
+ var freezePage: () => void;
216
+ var takeFullSnapshot: (isCheckout?: boolean | undefined) => void;
311
217
  var mirror: Mirror;
312
- var takeFullSnapshot: takeFullSnapshot;
313
218
  }
314
219
 
315
220
  export declare type recordOptions<T> = {
@@ -318,20 +223,14 @@ export declare type recordOptions<T> = {
318
223
  checkoutEveryNms?: number;
319
224
  blockClass?: blockClass;
320
225
  blockSelector?: string;
321
- unblockSelector?: string;
322
226
  ignoreClass?: string;
323
227
  ignoreSelector?: string;
324
- maskAllText?: boolean;
325
228
  maskTextClass?: maskTextClass;
326
- unmaskTextClass?: unmaskTextClass;
327
229
  maskTextSelector?: string;
328
- unmaskTextSelector?: string;
329
230
  maskAllInputs?: boolean;
330
231
  maskInputOptions?: MaskInputOptions;
331
- maskAttributeFn?: MaskAttributeFn;
332
232
  maskInputFn?: MaskInputFn;
333
233
  maskTextFn?: MaskTextFn;
334
- maxCanvasSize?: [number, number];
335
234
  slimDOMOptions?: SlimDOMOptions | 'all' | true;
336
235
  ignoreCSSAttributes?: Set<string>;
337
236
  inlineStylesheet?: boolean;
@@ -351,19 +250,22 @@ export declare type recordOptions<T> = {
351
250
  mousemoveWait?: number;
352
251
  keepIframeSrcFn?: KeepIframeSrcFn;
353
252
  errorHandler?: ErrorHandler;
354
- onMutation?: (mutations: MutationRecord[]) => boolean;
355
- getCanvasManager?: (options: CanvasManagerConstructorOptions) => CanvasManagerInterface;
356
253
  };
357
254
 
358
255
  export declare class Replayer {
359
256
  wrapper: HTMLDivElement;
360
257
  iframe: HTMLIFrameElement;
258
+ private UNSAFE_replayCanvas;
361
259
  service: ReturnType<typeof createPlayerService>;
362
260
  speedService: ReturnType<typeof createSpeedService>;
363
261
  get timer(): Timer;
364
262
  config: playerConfig;
365
263
  usingVirtualDom: boolean;
366
264
  virtualDom: RRDocument;
265
+ private mouse;
266
+ private mouseTail;
267
+ private tailPositions;
268
+ private mouseTailFrame;
367
269
  private emitter;
368
270
  private nextUserInteractionEvent;
369
271
  private legacy_missingNodeRetryMap;
@@ -372,17 +274,17 @@ export declare class Replayer {
372
274
  private canvasEventMap;
373
275
  private mirror;
374
276
  private styleMirror;
277
+ private mediaManager;
375
278
  private firstFullSnapshot;
376
279
  private newDocumentQueue;
377
- private pointers;
378
- private mouseTailAnimationFrame;
280
+ private mousePos;
281
+ private touchActive;
379
282
  private lastMouseDownEvent;
380
283
  private lastHoveredRootNode;
381
284
  private lastSelectionData;
382
285
  private constructedStyleMutations;
383
286
  private adoptedStyleSheets;
384
287
  constructor(events: Array<eventWithTime | string>, config?: Partial<playerConfig>);
385
- private createPointer;
386
288
  on(event: string, handler: Handler): this;
387
289
  off(event: string, handler: Handler): this;
388
290
  setConfig(config: Partial<playerConfig>): void;
@@ -399,7 +301,6 @@ export declare class Replayer {
399
301
  enableInteract(): void;
400
302
  disableInteract(): void;
401
303
  resetCache(): void;
402
- private reevaluateFastForward;
403
304
  private setupDom;
404
305
  private handleResize;
405
306
  private applyEventsSynchronously;
@@ -424,7 +325,7 @@ export declare class Replayer {
424
325
  private legacy_resolveMissingNode;
425
326
  private moveAndHover;
426
327
  private drawMouseTail;
427
- private stepMouseTails;
328
+ private stepMouseTail;
428
329
  private hoverElements;
429
330
  private isUserInteraction;
430
331
  private backToNormal;
@@ -450,20 +351,16 @@ export declare type ReplayPlugin = {
450
351
  }) => void;
451
352
  };
452
353
 
354
+ declare function requestAnimationFrameIn(win: IWindow, callback: FrameRequestCallback): number;
355
+
453
356
  declare type ResolveTree = {
454
357
  value: addedNodeMutation;
455
358
  children: ResolveTree[];
456
359
  parent: ResolveTree | null;
457
360
  };
458
361
 
459
- declare function setTimeout_2(...rest: Parameters<typeof window.setTimeout>): ReturnType<typeof window.setTimeout>;
460
-
461
362
  declare function shadowHostInDom(n: Node): boolean;
462
363
 
463
- declare type SnapshotOptions = {
464
- skipRequestAnimationFrame?: boolean;
465
- };
466
-
467
364
  declare type SpeedContext = {
468
365
  normalSpeed: playerConfig['speed'];
469
366
  timer: Timer;
@@ -485,7 +382,7 @@ declare type SpeedEvent = {
485
382
 
486
383
  export declare type SpeedMachineState = StateMachine.State<SpeedContext, SpeedEvent, SpeedState>;
487
384
 
488
- export declare type SpeedState = {
385
+ declare type SpeedState = {
489
386
  value: 'normal';
490
387
  context: SpeedContext;
491
388
  } | {
@@ -505,7 +402,7 @@ declare class StyleSheetMirror {
505
402
  generateId(): number;
506
403
  }
507
404
 
508
- export declare function takeFullSnapshot(isCheckout?: boolean): void;
405
+ export declare const takeFullSnapshot: (isCheckout?: boolean | undefined) => void;
509
406
 
510
407
  declare function throttle<T>(func: (arg: T) => void, wait: number, options?: throttleOptions): (...args: T[]) => void;
511
408
 
@@ -520,6 +417,7 @@ declare class Timer {
520
417
  });
521
418
  addAction(action: actionWithDelay): void;
522
419
  start(): void;
420
+ updateLiveTime(): void;
523
421
  private rafCheck;
524
422
  clear(): void;
525
423
  setSpeed(speed: number): void;
@@ -534,7 +432,6 @@ declare namespace utils {
534
432
  on,
535
433
  throttle,
536
434
  hookSetter,
537
- patch,
538
435
  getWindowScroll,
539
436
  getWindowHeight,
540
437
  getWindowWidth,
@@ -544,6 +441,7 @@ declare namespace utils {
544
441
  isIgnored,
545
442
  isAncestorRemoved,
546
443
  legacy_isTouchEvent,
444
+ requestAnimationFrameIn,
547
445
  polyfill,
548
446
  queueToResolveTrees,
549
447
  iterateResolveTree,
@@ -558,11 +456,8 @@ declare namespace utils {
558
456
  getRootShadowHost,
559
457
  shadowHostInDom,
560
458
  inDom,
561
- onRequestAnimationFrame,
562
- setTimeout_2 as setTimeout,
563
- clearTimeout_2 as clearTimeout,
564
- _mirror,
565
459
  nowTimestamp,
460
+ mirror as _mirror,
566
461
  AppendedIframe,
567
462
  StyleSheetMirror
568
463
  }
@@ -572,15 +467,28 @@ export { utils }
572
467
  export { }
573
468
 
574
469
 
470
+ declare namespace record {
471
+ var addCustomEvent: <T>(tag: string, payload: T) => void;
472
+ var freezePage: () => void;
473
+ var takeFullSnapshot: (isCheckout?: boolean | undefined) => void;
474
+ var mirror: import("rrweb-snapshot").Mirror;
475
+ }
476
+
477
+
575
478
  declare global {
576
- const __RRWEB_EXCLUDE_SHADOW_DOM__: boolean;
577
- const __RRWEB_EXCLUDE_IFRAME__: boolean;
479
+ interface Window {
480
+ FontFace: typeof FontFace;
481
+ Array: typeof Array;
482
+ }
578
483
  }
579
484
 
580
485
 
486
+
581
487
  declare namespace record {
582
- var mirror: import("@sentry-internal/rrweb-snapshot").Mirror;
583
- var takeFullSnapshot: typeof import(".").takeFullSnapshot;
488
+ var addCustomEvent: <T>(tag: string, payload: T) => void;
489
+ var freezePage: () => void;
490
+ var takeFullSnapshot: (isCheckout?: boolean | undefined) => void;
491
+ var mirror: import("rrweb-snapshot").Mirror;
584
492
  }
585
493
 
586
494