Skip to content

Commit

Permalink
feat(replay): Add "maxCanvasSize" option for replay canvases
Browse files Browse the repository at this point in the history
We do not want to allow users to capture super large canvases, enforce a max size limit

Requires getsentry/rrweb#174
  • Loading branch information
billyvg committed Apr 18, 2024
1 parent b64b2ae commit d439404
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions packages/replay-canvas/src/canvas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ import type { IntegrationFn } from '@sentry/types';

interface ReplayCanvasOptions {
enableManualSnapshot?: boolean;
maxCanvasSize?: [width: number, height: number];
quality: 'low' | 'medium' | 'high';
}

type GetCanvasManager = (options: CanvasManagerOptions) => CanvasManagerInterface;
export interface ReplayCanvasIntegrationOptions {
enableManualSnapshot?: boolean;
maxCanvasSize?: number;
recordCanvas: true;
getCanvasManager: GetCanvasManager;
sampling: {
Expand Down Expand Up @@ -59,6 +61,7 @@ export const _replayCanvasIntegration = ((options: Partial<ReplayCanvasOptions>
const _canvasOptions = {
quality: options.quality || 'medium',
enableManualSnapshot: options.enableManualSnapshot,
maxCanvasSize: options.maxCanvasSize || [1280, 1280],
};

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

return {
enableManualSnapshot,
recordCanvas: true,
getCanvasManager: (options: CanvasManagerOptions) => {
getCanvasManager: (getCanvasManagerOptions: CanvasManagerOptions) => {
const manager = new CanvasManager({
...options,
...getCanvasManagerOptions,
enableManualSnapshot,
maxCanvasSize,
errorHandler: (err: unknown) => {
try {
if (typeof err === 'object') {
Expand Down

0 comments on commit d439404

Please sign in to comment.