@remotion/lambda 4.0.20 → 4.0.22

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.
@@ -1,5 +1,5 @@
1
1
  import type { LambdaStartPayload, LambdaStatusPayload } from '../defaults';
2
2
  import type { GetRenderProgressInput } from './get-render-progress';
3
3
  import type { RenderMediaOnLambdaInput } from './render-media-on-lambda';
4
- export declare const makeLambdaRenderMediaPayload: ({ rendererFunctionName, frameRange, framesPerLambda, forceBucketName: bucketName, codec, composition, serveUrl, imageFormat, inputProps, region, crf, envVariables, pixelFormat, proResProfile, maxRetries, privacy, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, everyNthFrame, numberOfGifLoops, audioBitrate, concurrencyPerLambda, audioCodec, forceHeight, forceWidth, webhook, videoBitrate, downloadBehavior, muted, overwrite, dumpBrowserLogs, jpegQuality, quality, }: RenderMediaOnLambdaInput) => Promise<LambdaStartPayload>;
4
+ export declare const makeLambdaRenderMediaPayload: ({ rendererFunctionName, frameRange, framesPerLambda, forceBucketName: bucketName, codec, composition, serveUrl, imageFormat, inputProps, region, crf, envVariables, pixelFormat, proResProfile, x264Preset, maxRetries, privacy, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, everyNthFrame, numberOfGifLoops, audioBitrate, concurrencyPerLambda, audioCodec, forceHeight, forceWidth, webhook, videoBitrate, downloadBehavior, muted, overwrite, dumpBrowserLogs, jpegQuality, quality, }: RenderMediaOnLambdaInput) => Promise<LambdaStartPayload>;
5
5
  export declare const getRenderProgressPayload: ({ bucketName, renderId, s3OutputProvider, }: GetRenderProgressInput) => LambdaStatusPayload;
@@ -8,7 +8,7 @@ const validate_download_behavior_1 = require("../shared/validate-download-behavi
8
8
  const validate_frames_per_lambda_1 = require("../shared/validate-frames-per-lambda");
9
9
  const validate_lambda_codec_1 = require("../shared/validate-lambda-codec");
10
10
  const validate_serveurl_1 = require("../shared/validate-serveurl");
11
- const makeLambdaRenderMediaPayload = async ({ rendererFunctionName, frameRange, framesPerLambda, forceBucketName: bucketName, codec, composition, serveUrl, imageFormat, inputProps, region, crf, envVariables, pixelFormat, proResProfile, maxRetries, privacy, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, everyNthFrame, numberOfGifLoops, audioBitrate, concurrencyPerLambda, audioCodec, forceHeight, forceWidth, webhook, videoBitrate, downloadBehavior, muted, overwrite, dumpBrowserLogs, jpegQuality, quality, }) => {
11
+ const makeLambdaRenderMediaPayload = async ({ rendererFunctionName, frameRange, framesPerLambda, forceBucketName: bucketName, codec, composition, serveUrl, imageFormat, inputProps, region, crf, envVariables, pixelFormat, proResProfile, x264Preset, maxRetries, privacy, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, everyNthFrame, numberOfGifLoops, audioBitrate, concurrencyPerLambda, audioCodec, forceHeight, forceWidth, webhook, videoBitrate, downloadBehavior, muted, overwrite, dumpBrowserLogs, jpegQuality, quality, }) => {
12
12
  if (quality) {
13
13
  throw new Error('quality has been renamed to jpegQuality. Please rename the option.');
14
14
  }
@@ -41,6 +41,7 @@ const makeLambdaRenderMediaPayload = async ({ rendererFunctionName, frameRange,
41
41
  envVariables,
42
42
  pixelFormat,
43
43
  proResProfile,
44
+ x264Preset: x264Preset !== null && x264Preset !== void 0 ? x264Preset : null,
44
45
  jpegQuality,
45
46
  maxRetries: maxRetries !== null && maxRetries !== void 0 ? maxRetries : 1,
46
47
  privacy: privacy !== null && privacy !== void 0 ? privacy : 'public',
@@ -1,4 +1,4 @@
1
- import type { AudioCodec, ChromiumOptions, FrameRange, LogLevel, PixelFormat, ProResProfile, VideoImageFormat } from '@remotion/renderer';
1
+ import type { AudioCodec, ChromiumOptions, FrameRange, LogLevel, PixelFormat, ProResProfile, VideoImageFormat, X264Preset } from '@remotion/renderer';
2
2
  import type { AwsRegion } from '../pricing/aws-regions';
3
3
  import type { OutNameInput, Privacy } from '../shared/constants';
4
4
  import type { DownloadBehavior } from '../shared/content-disposition-header';
@@ -15,6 +15,7 @@ export type RenderMediaOnLambdaInput = {
15
15
  envVariables?: Record<string, string>;
16
16
  pixelFormat?: PixelFormat;
17
17
  proResProfile?: ProResProfile;
18
+ x264Preset?: X264Preset;
18
19
  privacy?: Privacy;
19
20
  /**
20
21
  * @deprecated Renamed to `jpegQuality`
@@ -45,7 +45,9 @@ const functionsRmCommand = async (args) => {
45
45
  'Timeout: '.padEnd(LEFT_COL, ' ') + ' ' + info.timeoutInSeconds + 'sec',
46
46
  'Version: '.padEnd(LEFT_COL, ' ') + ' ' + info.version,
47
47
  ].join('\n'), true);
48
- await (0, confirm_1.confirmCli)({ delMessage: 'Delete? (Y/n)', allowForceFlag: true });
48
+ if (!(await (0, confirm_1.confirmCli)({ delMessage: 'Delete? (Y/n)', allowForceFlag: true }))) {
49
+ (0, quit_1.quit)(1);
50
+ }
49
51
  const output = cli_1.CliInternals.createOverwriteableCliOutput({
50
52
  quiet: cli_1.CliInternals.quietFlagProvided(),
51
53
  cancelSignal: null,
@@ -35,7 +35,9 @@ const functionsRmallCommand = async () => {
35
35
  'Timeout: '.padEnd(LEFT_COL, ' ') + ' ' + info.timeoutInSeconds + 'sec',
36
36
  'Version: '.padEnd(LEFT_COL, ' ') + ' ' + info.version,
37
37
  ].join('\n'), true);
38
- await (0, confirm_1.confirmCli)({ delMessage: 'Delete? (Y/n)', allowForceFlag: true });
38
+ if (!(await (0, confirm_1.confirmCli)({ delMessage: 'Delete? (Y/n)', allowForceFlag: true }))) {
39
+ continue;
40
+ }
39
41
  const output = cli_1.CliInternals.createOverwriteableCliOutput({
40
42
  quiet: cli_1.CliInternals.quietFlagProvided(),
41
43
  cancelSignal: null,
@@ -50,10 +50,12 @@ const quotasIncreaseCommand = async () => {
50
50
  }
51
51
  const newLimit = Math.floor(concurrencyCurrent / 5000) * 5000 + 5000;
52
52
  log_1.Log.info(`Sending request to AWS to increase concurrency limit from ${concurrencyCurrent} to ${newLimit}.`);
53
- await (0, confirm_1.confirmCli)({
53
+ if (!(await (0, confirm_1.confirmCli)({
54
54
  allowForceFlag: true,
55
55
  delMessage: 'Send? (Y/n)',
56
- });
56
+ }))) {
57
+ (0, quit_1.quit)(1);
58
+ }
57
59
  try {
58
60
  await (0, aws_clients_1.getServiceQuotasClient)(region).send(new client_service_quotas_1.RequestServiceQuotaIncreaseCommand({
59
61
  QuotaCode: defaults_1.LAMBDA_CONCURRENCY_LIMIT_QUOTA,
@@ -281,6 +281,9 @@ const renderCommand = async (args, remotionRoot) => {
281
281
  });
282
282
  await cli_1.CliInternals.handleCommonError(errorWithStackFrame, logLevel);
283
283
  }
284
+ log_1.Log.info();
285
+ log_1.Log.info(`Accrued costs until error was thrown: ${newStatus.costs.displayCost}.`);
286
+ log_1.Log.info('This is an estimate and continuing Lambda functions may incur additional costs.');
284
287
  (0, quit_1.quit)(1);
285
288
  }
286
289
  }
@@ -67,7 +67,7 @@ const sitesCreateSubcommand = async (args, remotionRoot) => {
67
67
  multiProgress.bucketProgress.doneIn = Date.now() - bucketStart;
68
68
  updateProgress();
69
69
  const bundleStart = Date.now();
70
- const uploadStart = Date.now();
70
+ let uploadStart = Date.now();
71
71
  const { serveUrl, siteName, stats } = await (0, deploy_site_1.deploySite)({
72
72
  entryPoint: file,
73
73
  siteName: desiredSiteName,
@@ -78,6 +78,9 @@ const sitesCreateSubcommand = async (args, remotionRoot) => {
78
78
  progress,
79
79
  doneIn: progress === 100 ? Date.now() - bundleStart : null,
80
80
  };
81
+ if (progress === 100) {
82
+ uploadStart = Date.now();
83
+ }
81
84
  },
82
85
  onUploadProgress: (p) => {
83
86
  multiProgress.deployProgress = {
@@ -33,10 +33,12 @@ const sitesRmSubcommand = async (args) => {
33
33
  log_1.Log.error(`No site ${siteName.trim()} was found in your bucket ${bucketName}.`);
34
34
  return (0, quit_1.quit)(1);
35
35
  }
36
- await (0, confirm_1.confirmCli)({
36
+ if (!(await (0, confirm_1.confirmCli)({
37
37
  delMessage: `Site ${site.id} in bucket ${site.bucketName} (${cli_1.CliInternals.formatBytes(site.sizeInBytes)}): Delete? (Y/n)`,
38
38
  allowForceFlag: true,
39
- });
39
+ }))) {
40
+ (0, quit_1.quit)(1);
41
+ }
40
42
  const { totalSizeInBytes: totalSize } = await (0, delete_site_1.deleteSite)({
41
43
  bucketName,
42
44
  siteName,
@@ -18,10 +18,12 @@ const sitesRmallSubcommand = async () => {
18
18
  });
19
19
  const bucketName = (_a = args_1.parsedLambdaCli['force-bucket-name']) !== null && _a !== void 0 ? _a : (await (0, get_or_create_bucket_1.getOrCreateBucket)({ region })).bucketName;
20
20
  for (const site of deployedSites.sites) {
21
- await (0, confirm_1.confirmCli)({
21
+ if (!(await (0, confirm_1.confirmCli)({
22
22
  delMessage: `Site ${site.id} in bucket ${site.bucketName} (${cli_1.CliInternals.formatBytes(site.sizeInBytes)}): Delete? (Y/n)`,
23
23
  allowForceFlag: true,
24
- });
24
+ }))) {
25
+ continue;
26
+ }
25
27
  const { totalSizeInBytes: totalSize } = await (0, delete_site_1.deleteSite)({
26
28
  bucketName,
27
29
  siteName: site.id,
@@ -1,4 +1,4 @@
1
1
  export declare const confirmCli: ({ delMessage, allowForceFlag, }: {
2
2
  delMessage: string;
3
3
  allowForceFlag: boolean;
4
- }) => Promise<void>;
4
+ }) => Promise<boolean>;
@@ -2,15 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.confirmCli = void 0;
4
4
  const args_1 = require("../args");
5
- const quit_1 = require("./quit");
6
5
  const yes_or_no_1 = require("./yes-or-no");
7
6
  const confirmCli = async ({ delMessage, allowForceFlag, }) => {
8
7
  if (allowForceFlag && args_1.forceFlagProvided) {
9
- return;
8
+ return true;
10
9
  }
11
10
  const result = await (0, yes_or_no_1.yesOrNo)({ question: delMessage, defaultValue: true });
12
- if (result === false) {
13
- (0, quit_1.quit)(1);
14
- }
11
+ return result;
15
12
  };
16
13
  exports.confirmCli = confirmCli;
package/dist/cli/log.d.ts CHANGED
@@ -2,24 +2,24 @@ export declare const Log: {
2
2
  verbose: (message?: any, ...optionalParams: any[]) => void;
3
3
  verboseAdvanced: (options: {
4
4
  indent: boolean;
5
- logLevel: "error" | "verbose" | "info" | "warn";
5
+ logLevel: "verbose" | "info" | "warn" | "error";
6
6
  } & {
7
7
  tag?: string | undefined;
8
8
  }, message?: any, ...optionalParams: any[]) => void;
9
9
  info: (message?: any, ...optionalParams: any[]) => void;
10
10
  infoAdvanced: (options: {
11
11
  indent: boolean;
12
- logLevel: "error" | "verbose" | "info" | "warn";
12
+ logLevel: "verbose" | "info" | "warn" | "error";
13
13
  }, message?: any, ...optionalParams: any[]) => void;
14
14
  warn: (message?: any, ...optionalParams: any[]) => void;
15
15
  warnAdvanced: (options: {
16
16
  indent: boolean;
17
- logLevel: "error" | "verbose" | "info" | "warn";
17
+ logLevel: "verbose" | "info" | "warn" | "error";
18
18
  }, message?: any, ...optionalParams: any[]) => void;
19
19
  error: (message?: any, ...optionalParams: any[]) => void;
20
20
  errorAdvanced: (options: {
21
21
  indent: boolean;
22
- logLevel: "error" | "verbose" | "info" | "warn";
22
+ logLevel: "verbose" | "info" | "warn" | "error";
23
23
  } & {
24
24
  tag?: string | undefined;
25
25
  }, message?: any, ...optionalParams: any[]) => void;
@@ -69,7 +69,7 @@ const createPostRenderData = ({ renderId, region, memorySizeInMb, renderMetadata
69
69
  type: 'absolute-time',
70
70
  }),
71
71
  retriesInfo,
72
- mostExpensiveFrameRanges: (0, get_most_expensive_chunks_1.getMostExpensiveChunks)(parsedTimings, renderMetadata.framesPerLambda, renderMetadata.frameRange[1]),
72
+ mostExpensiveFrameRanges: (0, get_most_expensive_chunks_1.getMostExpensiveChunks)(parsedTimings, renderMetadata.framesPerLambda, renderMetadata.frameRange[0], renderMetadata.frameRange[1]),
73
73
  };
74
74
  };
75
75
  exports.createPostRenderData = createPostRenderData;
@@ -4,16 +4,16 @@ declare const streamingPayloadSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObje
4
4
  type: z.ZodLiteral<"render-id-determined">;
5
5
  renderId: z.ZodString;
6
6
  }, "strip", z.ZodTypeAny, {
7
- renderId: string;
8
7
  type: "render-id-determined";
9
- }, {
10
8
  renderId: string;
9
+ }, {
11
10
  type: "render-id-determined";
11
+ renderId: string;
12
12
  }>]>;
13
13
  export type StreamingPayloads = z.infer<typeof streamingPayloadSchema>;
14
14
  export declare const isStreamingPayload: (str: string) => false | {
15
- renderId: string;
16
15
  type: "render-id-determined";
16
+ renderId: string;
17
17
  };
18
18
  export declare const sendProgressEvent: (responseStream: ResponseStream, payload: StreamingPayloads) => void;
19
19
  export {};
@@ -181,6 +181,7 @@ const innerLaunchHandler = async (params, options) => {
181
181
  envVariables: params.envVariables,
182
182
  pixelFormat: params.pixelFormat,
183
183
  proResProfile: params.proResProfile,
184
+ x264Preset: params.x264Preset,
184
185
  jpegQuality: params.jpegQuality,
185
186
  privacy: params.privacy,
186
187
  logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a : 'info',
@@ -68,7 +68,7 @@ const renderHandler = async (params, options, logs) => {
68
68
  const resolvedProps = await resolvedPropsPromise;
69
69
  const serializedInputPropsWithCustomSchema = await inputPropsPromise;
70
70
  await new Promise((resolve, reject) => {
71
- var _a, _b, _c, _d;
71
+ var _a, _b, _c, _d, _e;
72
72
  renderer_1.RenderInternals.internalRenderMedia({
73
73
  composition: {
74
74
  id: params.composition,
@@ -128,6 +128,7 @@ const renderHandler = async (params, options, logs) => {
128
128
  crf: (_c = params.crf) !== null && _c !== void 0 ? _c : null,
129
129
  pixelFormat: (_d = params.pixelFormat) !== null && _d !== void 0 ? _d : renderer_1.RenderInternals.DEFAULT_PIXEL_FORMAT,
130
130
  proResProfile: params.proResProfile,
131
+ x264Preset: (_e = params.x264Preset) !== null && _e !== void 0 ? _e : undefined,
131
132
  onDownload: (0, on_downloads_logger_1.onDownloadsHelper)(),
132
133
  overwrite: false,
133
134
  chromiumOptions: params.chromiumOptions,
@@ -55,6 +55,7 @@ const startHandler = async (params, options) => {
55
55
  envVariables: params.envVariables,
56
56
  pixelFormat: params.pixelFormat,
57
57
  proResProfile: params.proResProfile,
58
+ x264Preset: params.x264Preset,
58
59
  jpegQuality: params.jpegQuality,
59
60
  maxRetries: params.maxRetries,
60
61
  privacy: params.privacy,
@@ -1,5 +1,5 @@
1
1
  export declare const LambdaInternals: {
2
2
  executeCommand: (args: string[], remotionRoot: string) => Promise<void>;
3
- makeLambdaRenderMediaPayload: ({ rendererFunctionName, frameRange, framesPerLambda, forceBucketName: bucketName, codec, composition, serveUrl, imageFormat, inputProps, region, crf, envVariables, pixelFormat, proResProfile, maxRetries, privacy, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, everyNthFrame, numberOfGifLoops, audioBitrate, concurrencyPerLambda, audioCodec, forceHeight, forceWidth, webhook, videoBitrate, downloadBehavior, muted, overwrite, dumpBrowserLogs, jpegQuality, quality, }: import(".").RenderMediaOnLambdaInput) => Promise<import("./defaults").LambdaStartPayload>;
3
+ makeLambdaRenderMediaPayload: ({ rendererFunctionName, frameRange, framesPerLambda, forceBucketName: bucketName, codec, composition, serveUrl, imageFormat, inputProps, region, crf, envVariables, pixelFormat, proResProfile, x264Preset, maxRetries, privacy, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, everyNthFrame, numberOfGifLoops, audioBitrate, concurrencyPerLambda, audioCodec, forceHeight, forceWidth, webhook, videoBitrate, downloadBehavior, muted, overwrite, dumpBrowserLogs, jpegQuality, quality, }: import(".").RenderMediaOnLambdaInput) => Promise<import("./defaults").LambdaStartPayload>;
4
4
  getRenderProgressPayload: ({ bucketName, renderId, s3OutputProvider, }: import(".").GetRenderProgressInput) => import("./defaults").LambdaStatusPayload;
5
5
  };
@@ -1,4 +1,4 @@
1
- import type { AudioCodec, ChromiumOptions, Codec, FrameRange, LogLevel, PixelFormat, ProResProfile, StillImageFormat, VideoImageFormat } from '@remotion/renderer';
1
+ import type { AudioCodec, ChromiumOptions, Codec, FrameRange, LogLevel, PixelFormat, ProResProfile, StillImageFormat, VideoImageFormat, X264Preset } from '@remotion/renderer';
2
2
  import type { VideoConfig } from 'remotion';
3
3
  import type { ChunkRetry } from '../functions/helpers/get-retry-stats';
4
4
  import type { EnhancedErrorInfo } from '../functions/helpers/write-lambda-error';
@@ -120,6 +120,7 @@ export type LambdaStartPayload = {
120
120
  envVariables: Record<string, string> | undefined;
121
121
  pixelFormat: PixelFormat | undefined;
122
122
  proResProfile: ProResProfile | undefined;
123
+ x264Preset: X264Preset | null;
123
124
  jpegQuality: number | undefined;
124
125
  maxRetries: number;
125
126
  privacy: Privacy;
@@ -171,6 +172,7 @@ export type LambdaPayloads = {
171
172
  envVariables: Record<string, string> | undefined;
172
173
  pixelFormat: PixelFormat | undefined;
173
174
  proResProfile: ProResProfile | undefined;
175
+ x264Preset: X264Preset | null;
174
176
  jpegQuality: number | undefined;
175
177
  maxRetries: number;
176
178
  privacy: Privacy;
@@ -212,6 +214,7 @@ export type LambdaPayloads = {
212
214
  codec: LambdaCodec;
213
215
  crf: number | undefined;
214
216
  proResProfile: ProResProfile | undefined;
217
+ x264Preset: X264Preset | null;
215
218
  pixelFormat: PixelFormat | undefined;
216
219
  jpegQuality: number | undefined;
217
220
  envVariables: Record<string, string> | undefined;
@@ -5,4 +5,4 @@ export type ExpensiveChunk = {
5
5
  frameRange: [number, number];
6
6
  timeInMilliseconds: number;
7
7
  };
8
- export declare const getMostExpensiveChunks: (parsedTimings: ParsedTiming[], framesPerLambda: number, lastFrame: number) => ExpensiveChunk[];
8
+ export declare const getMostExpensiveChunks: (parsedTimings: ParsedTiming[], framesPerLambda: number, firstFrame: number, lastFrame: number) => ExpensiveChunk[];
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getMostExpensiveChunks = exports.OVERHEAD_TIME_PER_LAMBDA = void 0;
4
4
  exports.OVERHEAD_TIME_PER_LAMBDA = 100;
5
- const getMostExpensiveChunks = (parsedTimings, framesPerLambda, lastFrame) => {
5
+ const getMostExpensiveChunks = (parsedTimings, framesPerLambda, firstFrame, lastFrame) => {
6
6
  const mostExpensiveChunks = parsedTimings
7
7
  .slice(0)
8
8
  .sort((a, b) => {
@@ -17,8 +17,10 @@ const getMostExpensiveChunks = (parsedTimings, framesPerLambda, lastFrame) => {
17
17
  timeInMilliseconds: c.rendered - c.start,
18
18
  chunk: c.chunk,
19
19
  frameRange: [
20
- framesPerLambda * c.chunk,
21
- isLastChunk ? lastFrame : framesPerLambda * (c.chunk + 1) - 1,
20
+ framesPerLambda * c.chunk + firstFrame,
21
+ isLastChunk
22
+ ? lastFrame
23
+ : framesPerLambda * (c.chunk + 1) - 1 + firstFrame,
22
24
  ],
23
25
  };
24
26
  });
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isFlakyError = void 0;
4
4
  const isFlakyError = (err) => {
5
- const { message } = err;
5
+ var _a;
6
+ const message = (_a = err.stack) !== null && _a !== void 0 ? _a : '';
6
7
  // storage.googleapis.com sometimes returns 500s, and Video does not have retry on its own
7
8
  if ((message.includes('Format error') || message.includes('audio metadata')) &&
8
9
  message.includes('storage.googleapis.com')) {
@@ -26,6 +27,14 @@ const isFlakyError = (err) => {
26
27
  if (message.includes('Timed out while setting up the headless browser')) {
27
28
  return true;
28
29
  }
30
+ // https://github.com/remotion-dev/remotion/issues/2742
31
+ if (message.includes('while trying to connect to the browser')) {
32
+ return true;
33
+ }
34
+ // https://discord.com/channels/809501355504959528/1131234931863998665/1131998442219118622
35
+ if (message.includes('RequestTimeout: Your socket connection to the server')) {
36
+ return true;
37
+ }
29
38
  return false;
30
39
  };
31
40
  exports.isFlakyError = isFlakyError;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/lambda",
3
- "version": "4.0.20",
3
+ "version": "4.0.22",
4
4
  "description": "Distributed renderer for Remotion based on AWS Lambda",
5
5
  "main": "dist/index.js",
6
6
  "sideEffects": false,
@@ -26,10 +26,10 @@
26
26
  "aws-policies": "^1.0.1",
27
27
  "mime-types": "2.1.34",
28
28
  "zod": "3.21.4",
29
- "remotion": "4.0.20",
30
- "@remotion/bundler": "4.0.20",
31
- "@remotion/renderer": "4.0.20",
32
- "@remotion/cli": "4.0.20"
29
+ "@remotion/bundler": "4.0.22",
30
+ "@remotion/renderer": "4.0.22",
31
+ "@remotion/cli": "4.0.22",
32
+ "remotion": "4.0.22"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@jonny/eslint-config": "3.0.266",
@@ -43,11 +43,11 @@
43
43
  "ts-node": "^10.8.0",
44
44
  "vitest": "0.31.1",
45
45
  "zip-lib": "^0.7.2",
46
- "@remotion/bundler": "4.0.20",
47
- "@remotion/compositor-linux-arm64-gnu": "4.0.20"
46
+ "@remotion/bundler": "4.0.22",
47
+ "@remotion/compositor-linux-arm64-gnu": "4.0.22"
48
48
  },
49
49
  "peerDependencies": {
50
- "@remotion/bundler": "4.0.20"
50
+ "@remotion/bundler": "4.0.22"
51
51
  },
52
52
  "publishConfig": {
53
53
  "access": "public"
Binary file