Skip to content

Commit b265424

Browse files
committed
feat: Remove getCanvasManager, export CanvasManager class directly
This simplifies the code a bit by exporting the CanvasManager directly. With [ReplayCanvas](getsentry/sentry-javascript#10112), we can rely on it for complex setup, but keeps it simple for our users.
1 parent 6390071 commit b265424

File tree

2 files changed

+18
-44
lines changed

2 files changed

+18
-44
lines changed

packages/rrweb/src/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,7 @@ export {
3131
mirror,
3232
freezePage,
3333
addCustomEvent,
34-
getCanvasManager,
3534
} from './record';
35+
36+
export {CanvasManager} from './record/observers/canvas/canvas-manager';
37+
export type {CanvasManagerConstructorOptions} from './record/observers/canvas/canvas-manager';

packages/rrweb/src/record/index.ts

Lines changed: 15 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
MaskInputOptions,
44
SlimDOMOptions,
55
createMirror,
6-
DataURLOptions,
76
} from '@sentry-internal/rrweb-snapshot';
87
import { initObservers, mutationBuffers } from './observer';
98
import {
@@ -41,7 +40,6 @@ import {
4140
ShadowDomManagerNoop,
4241
} from './shadow-dom-manager';
4342
import {
44-
CanvasManager,
4543
CanvasManagerConstructorOptions,
4644
CanvasManagerInterface,
4745
CanvasManagerNoop,
@@ -340,6 +338,18 @@ function record<T = eventWithTime>(
340338
const canvasManager: CanvasManagerInterface = _getCanvasManager(
341339
getCanvasManager,
342340
{
341+
mirror,
342+
win: window,
343+
mutationCb: (p: canvasMutationParam) =>
344+
wrappedEmit(
345+
wrapEvent({
346+
type: EventType.IncrementalSnapshot,
347+
data: {
348+
source: IncrementalSource.CanvasMutation,
349+
...p,
350+
},
351+
}),
352+
),
343353
recordCanvas,
344354
blockClass,
345355
blockSelector,
@@ -717,14 +727,6 @@ export function takeFullSnapshot(isCheckout?: boolean) {
717727
_takeFullSnapshot(isCheckout);
718728
}
719729

720-
function wrappedEmit(e: eventWithTime) {
721-
if (!_wrappedEmit) {
722-
return;
723-
}
724-
725-
_wrappedEmit(e);
726-
}
727-
728730
// record.addCustomEvent is removed because Sentry Session Replay does not use it
729731
// record.freezePage is removed because Sentry Session Replay does not use it
730732

@@ -734,48 +736,18 @@ record.takeFullSnapshot = takeFullSnapshot;
734736

735737
export default record;
736738

737-
type PrivateOptions = 'mutationCb' | 'win' | 'mirror';
738-
type PublicGetCanvasManagerOptions = Omit<
739-
CanvasManagerConstructorOptions,
740-
PrivateOptions
741-
>;
742-
743-
interface PrivateGetCanvasManagerOptions
744-
extends PublicGetCanvasManagerOptions,
745-
Pick<CanvasManagerConstructorOptions, PrivateOptions> {}
746-
747739
function _getCanvasManager(
748740
getCanvasManagerFn:
749741
| undefined
750-
| ((options: PrivateGetCanvasManagerOptions) => CanvasManagerInterface),
751-
options: PublicGetCanvasManagerOptions,
742+
| ((options: Partial<CanvasManagerConstructorOptions>) => CanvasManagerInterface),
743+
options: CanvasManagerConstructorOptions,
752744
) {
753745
try {
754746
return getCanvasManagerFn
755-
? getCanvasManagerFn({
756-
...options,
757-
mirror,
758-
win: window,
759-
mutationCb: (p: canvasMutationParam) =>
760-
wrappedEmit(
761-
wrapEvent({
762-
type: EventType.IncrementalSnapshot,
763-
data: {
764-
source: IncrementalSource.CanvasMutation,
765-
...p,
766-
},
767-
}),
768-
),
769-
})
747+
? getCanvasManagerFn(options)
770748
: new CanvasManagerNoop();
771749
} catch {
772750
console.warn('Unable to initialize CanvasManager');
773751
return new CanvasManagerNoop();
774752
}
775753
}
776-
777-
export function getCanvasManager(
778-
options: PublicGetCanvasManagerOptions,
779-
): CanvasManagerInterface {
780-
return new CanvasManager(options as CanvasManagerConstructorOptions);
781-
}

0 commit comments

Comments
 (0)