Skip to content

Commit d439404

Browse files
committed
feat(replay): Add "maxCanvasSize" option for replay canvases
We do not want to allow users to capture super large canvases, enforce a max size limit Requires getsentry/rrweb#174
1 parent b64b2ae commit d439404

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

packages/replay-canvas/src/canvas.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import type { IntegrationFn } from '@sentry/types';
55

66
interface ReplayCanvasOptions {
77
enableManualSnapshot?: boolean;
8+
maxCanvasSize?: [width: number, height: number];
89
quality: 'low' | 'medium' | 'high';
910
}
1011

1112
type GetCanvasManager = (options: CanvasManagerOptions) => CanvasManagerInterface;
1213
export interface ReplayCanvasIntegrationOptions {
1314
enableManualSnapshot?: boolean;
15+
maxCanvasSize?: number;
1416
recordCanvas: true;
1517
getCanvasManager: GetCanvasManager;
1618
sampling: {
@@ -59,6 +61,7 @@ export const _replayCanvasIntegration = ((options: Partial<ReplayCanvasOptions>
5961
const _canvasOptions = {
6062
quality: options.quality || 'medium',
6163
enableManualSnapshot: options.enableManualSnapshot,
64+
maxCanvasSize: options.maxCanvasSize || [1280, 1280],
6265
};
6366

6467
let canvasManagerResolve: (value: CanvasManager) => void;
@@ -67,15 +70,16 @@ export const _replayCanvasIntegration = ((options: Partial<ReplayCanvasOptions>
6770
return {
6871
name: INTEGRATION_NAME,
6972
getOptions(): ReplayCanvasIntegrationOptions {
70-
const { quality, enableManualSnapshot } = _canvasOptions;
73+
const { quality, enableManualSnapshot, maxCanvasSize } = _canvasOptions;
7174

7275
return {
7376
enableManualSnapshot,
7477
recordCanvas: true,
75-
getCanvasManager: (options: CanvasManagerOptions) => {
78+
getCanvasManager: (getCanvasManagerOptions: CanvasManagerOptions) => {
7679
const manager = new CanvasManager({
77-
...options,
80+
...getCanvasManagerOptions,
7881
enableManualSnapshot,
82+
maxCanvasSize,
7983
errorHandler: (err: unknown) => {
8084
try {
8185
if (typeof err === 'object') {

0 commit comments

Comments
 (0)