11import { CanvasManager } from '@sentry-internal/rrweb' ;
22import { convertIntegrationFnToClass } from '@sentry/core' ;
3- import type { CanvasManagerOptions } from '@sentry/replay' ;
3+ import type { CanvasManagerInterface , CanvasManagerOptions } from '@sentry/replay' ;
44import type { IntegrationFn } from '@sentry/types' ;
55
66interface ReplayCanvasOptions {
77 enableManualSnapshot ?: boolean ;
88 quality : 'low' | 'medium' | 'high' ;
99}
1010
11- type GetCanvasManager = ( options : CanvasManagerOptions ) => void ;
11+ type GetCanvasManager = ( options : CanvasManagerOptions ) => CanvasManagerInterface ;
1212export interface ReplayCanvasIntegrationOptions {
1313 enableManualSnapshot ?: boolean ;
1414 recordCanvas : true ;
@@ -64,7 +64,7 @@ const replayCanvasIntegration = ((options: Partial<ReplayCanvasOptions> = {}) =>
6464 } ;
6565
6666 let canvasManagerResolve : ( value : CanvasManager ) => void ;
67- const _canvasManager : Promise < CanvasManager > = new Promise ( ( resolve ) => canvasManagerResolve = resolve ) ;
67+ const _canvasManager : Promise < CanvasManager > = new Promise ( resolve => ( canvasManagerResolve = resolve ) ) ;
6868
6969 return {
7070 name : INTEGRATION_NAME ,
@@ -75,7 +75,11 @@ const replayCanvasIntegration = ((options: Partial<ReplayCanvasOptions> = {}) =>
7575
7676 return {
7777 recordCanvas : true ,
78- getCanvasManager : ( options : CanvasManagerOptions ) => ( canvasManagerResolve ( new CanvasManager ( { ...options , isManualSnapshot : enableManualSnapshot } ) ) ) ,
78+ getCanvasManager : ( options : CanvasManagerOptions ) => {
79+ const manager = new CanvasManager ( { ...options , isManualSnapshot : enableManualSnapshot } ) ;
80+ canvasManagerResolve ( manager ) ;
81+ return manager ;
82+ } ,
7983 ...( CANVAS_QUALITY [ quality || 'medium' ] || CANVAS_QUALITY . medium ) ,
8084 } ;
8185 } ,
0 commit comments