@remotion/lambda 4.0.0-alpha.217 → 4.0.0-alpha4

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.
Files changed (65) hide show
  1. package/dist/admin/bundle-lambda.js +20 -15
  2. package/dist/admin/make-layer-public.js +87 -60
  3. package/dist/api/clean-items.js +1 -1
  4. package/dist/api/create-bucket.js +34 -1
  5. package/dist/api/create-function.d.ts +3 -1
  6. package/dist/api/create-function.js +4 -4
  7. package/dist/api/deploy-function.d.ts +3 -0
  8. package/dist/api/deploy-function.js +7 -1
  9. package/dist/api/deploy-site.js +8 -3
  10. package/dist/api/download-media.d.ts +4 -0
  11. package/dist/api/download-media.js +5 -1
  12. package/dist/api/estimate-price.d.ts +3 -1
  13. package/dist/api/estimate-price.js +9 -3
  14. package/dist/api/get-compositions-on-lambda.d.ts +2 -2
  15. package/dist/api/get-or-create-bucket.d.ts +1 -0
  16. package/dist/api/get-or-create-bucket.js +3 -0
  17. package/dist/api/iam-validation/simulate.js +2 -4
  18. package/dist/api/iam-validation/user-permissions.js +2 -0
  19. package/dist/api/render-media-on-lambda.d.ts +6 -10
  20. package/dist/api/render-media-on-lambda.js +3 -6
  21. package/dist/api/render-still-on-lambda.d.ts +3 -7
  22. package/dist/api/render-still-on-lambda.js +3 -6
  23. package/dist/cli/args.d.ts +2 -0
  24. package/dist/cli/commands/functions/deploy.js +9 -7
  25. package/dist/cli/commands/functions/ls.js +1 -4
  26. package/dist/cli/commands/functions/rm.js +2 -8
  27. package/dist/cli/commands/functions/rmall.js +2 -8
  28. package/dist/cli/commands/render/render.js +12 -22
  29. package/dist/cli/commands/sites/create.js +8 -7
  30. package/dist/cli/commands/sites/index.js +3 -0
  31. package/dist/cli/commands/still.js +5 -7
  32. package/dist/cli/helpers/progress-bar.d.ts +2 -1
  33. package/dist/cli/helpers/progress-bar.js +7 -3
  34. package/dist/cli/log.d.ts +0 -12
  35. package/dist/functions/chunk-optimization/plan-frame-ranges.d.ts +1 -4
  36. package/dist/functions/compositions.d.ts +1 -1
  37. package/dist/functions/compositions.js +2 -0
  38. package/dist/functions/helpers/calculate-price-from-bucket.d.ts +3 -1
  39. package/dist/functions/helpers/calculate-price-from-bucket.js +2 -1
  40. package/dist/functions/helpers/concat-videos.d.ts +4 -2
  41. package/dist/functions/helpers/concat-videos.js +5 -2
  42. package/dist/functions/helpers/create-post-render-data.js +2 -0
  43. package/dist/functions/helpers/get-progress.js +2 -0
  44. package/dist/functions/helpers/is-enosp-err.js +1 -1
  45. package/dist/functions/helpers/validate-composition.d.ts +5 -3
  46. package/dist/functions/helpers/validate-composition.js +3 -1
  47. package/dist/functions/index.d.ts +4 -15
  48. package/dist/functions/index.js +1 -1
  49. package/dist/functions/launch.js +6 -2
  50. package/dist/functions/renderer.js +9 -9
  51. package/dist/functions/start.js +1 -1
  52. package/dist/functions/still.js +5 -1
  53. package/dist/index.d.ts +6 -5
  54. package/dist/index.js +2 -1
  55. package/dist/shared/constants.d.ts +17 -20
  56. package/dist/shared/constants.js +2 -1
  57. package/dist/shared/function-zip-path.d.ts +1 -0
  58. package/dist/shared/function-zip-path.js +2 -1
  59. package/dist/shared/hosted-layers.d.ts +91 -2
  60. package/dist/shared/hosted-layers.js +300 -1
  61. package/dist/shared/invoke-webhook.d.ts +2 -0
  62. package/package.json +89 -90
  63. package/remotionlambda-arm64.zip +0 -0
  64. package/remotionlambda-x64.zip +0 -0
  65. package/remotionlambda.zip +0 -0
@@ -22,7 +22,7 @@ const validate_serveurl_1 = require("../shared/validate-serveurl");
22
22
  * @param params.crf The constant rate factor to be used during encoding.
23
23
  * @param params.envVariables Object containing environment variables to be inserted into the video environment
24
24
  * @param params.proResProfile The ProRes profile if rendering a ProRes video
25
- * @param params.jpegQuality JPEG quality if JPEG was selected as the image format.
25
+ * @param params.quality JPEG quality if JPEG was selected as the image format.
26
26
  * @param params.region The AWS region in which the media should be rendered.
27
27
  * @param params.maxRetries How often rendering a chunk may fail before the media render gets aborted. Default "1"
28
28
  * @param params.logLevel Level of logging that Lambda function should perform. Default "info".
@@ -30,11 +30,8 @@ const validate_serveurl_1 = require("../shared/validate-serveurl");
30
30
  * @param params.dumpBrowserLogs Whether to print browser logs to CloudWatch
31
31
  * @returns {Promise<RenderMediaOnLambdaOutput>} See documentation for detailed structure
32
32
  */
33
- const renderMediaOnLambda = async ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, jpegQuality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, audioBitrate, videoBitrate, webhook, forceHeight, forceWidth, rendererFunctionName, forceBucketName: bucketName, audioCodec, dumpBrowserLogs, }) => {
33
+ const renderMediaOnLambda = async ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, audioBitrate, videoBitrate, webhook, forceHeight, forceWidth, rendererFunctionName, forceBucketName: bucketName, audioCodec, dumpBrowserLogs, }) => {
34
34
  var _a;
35
- if (quality) {
36
- throw new Error(`"quality" has been renamed. Use "jpegQuality" instead.`);
37
- }
38
35
  const actualCodec = (0, validate_lambda_codec_1.validateLambdaCodec)(codec);
39
36
  (0, validate_serveurl_1.validateServeUrl)(serveUrl);
40
37
  (0, validate_frames_per_lambda_1.validateFramesPerLambda)({
@@ -64,7 +61,7 @@ const renderMediaOnLambda = async ({ functionName, serveUrl, inputProps, codec,
64
61
  envVariables,
65
62
  pixelFormat,
66
63
  proResProfile,
67
- jpegQuality,
64
+ quality,
68
65
  maxRetries: maxRetries !== null && maxRetries !== void 0 ? maxRetries : 1,
69
66
  privacy: privacy !== null && privacy !== void 0 ? privacy : 'public',
70
67
  logLevel: logLevel !== null && logLevel !== void 0 ? logLevel : 'info',
@@ -12,11 +12,7 @@ export declare type RenderStillOnLambdaInput = {
12
12
  privacy: Privacy;
13
13
  maxRetries?: number;
14
14
  envVariables?: Record<string, string>;
15
- /**
16
- * @deprecated Renamed to `jpegQuality`
17
- */
18
- quality?: never;
19
- jpegQuality?: number;
15
+ quality?: number;
20
16
  frame?: number;
21
17
  logLevel?: LogLevel;
22
18
  outName?: OutNameInput;
@@ -46,7 +42,7 @@ export declare type RenderStillOnLambdaOutput = {
46
42
  * @param params.inputProps The input props that should be passed to the composition.
47
43
  * @param params.imageFormat In which image format the frames should be rendered.
48
44
  * @param params.envVariables Object containing environment variables to be inserted into the video environment
49
- * @param params.jpegQuality JPEG quality if JPEG was selected as the image format.
45
+ * @param params.quality JPEG quality if JPEG was selected as the image format.
50
46
  * @param params.region The AWS region in which the video should be rendered.
51
47
  * @param params.maxRetries How often rendering a chunk may fail before the video render gets aborted.
52
48
  * @param params.frame Which frame should be used for the still image. Default 0.
@@ -54,4 +50,4 @@ export declare type RenderStillOnLambdaOutput = {
54
50
  * @param params.dumpBrowserLogs Whether to print browser logs to CloudWatch.
55
51
  * @returns {Promise<RenderStillOnLambdaOutput>} See documentation for exact response structure.
56
52
  */
57
- export declare const renderStillOnLambda: ({ functionName, serveUrl, inputProps, imageFormat, envVariables, quality, jpegQuality, region, maxRetries, composition, privacy, frame, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, downloadBehavior, forceHeight, forceWidth, forceBucketName, dumpBrowserLogs, }: RenderStillOnLambdaInput) => Promise<RenderStillOnLambdaOutput>;
53
+ export declare const renderStillOnLambda: ({ functionName, serveUrl, inputProps, imageFormat, envVariables, quality, region, maxRetries, composition, privacy, frame, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, downloadBehavior, forceHeight, forceWidth, forceBucketName, dumpBrowserLogs, }: RenderStillOnLambdaInput) => Promise<RenderStillOnLambdaOutput>;
@@ -15,7 +15,7 @@ const serialize_input_props_1 = require("../shared/serialize-input-props");
15
15
  * @param params.inputProps The input props that should be passed to the composition.
16
16
  * @param params.imageFormat In which image format the frames should be rendered.
17
17
  * @param params.envVariables Object containing environment variables to be inserted into the video environment
18
- * @param params.jpegQuality JPEG quality if JPEG was selected as the image format.
18
+ * @param params.quality JPEG quality if JPEG was selected as the image format.
19
19
  * @param params.region The AWS region in which the video should be rendered.
20
20
  * @param params.maxRetries How often rendering a chunk may fail before the video render gets aborted.
21
21
  * @param params.frame Which frame should be used for the still image. Default 0.
@@ -23,11 +23,8 @@ const serialize_input_props_1 = require("../shared/serialize-input-props");
23
23
  * @param params.dumpBrowserLogs Whether to print browser logs to CloudWatch.
24
24
  * @returns {Promise<RenderStillOnLambdaOutput>} See documentation for exact response structure.
25
25
  */
26
- const renderStillOnLambda = async ({ functionName, serveUrl, inputProps, imageFormat, envVariables, quality, jpegQuality, region, maxRetries, composition, privacy, frame, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, downloadBehavior, forceHeight, forceWidth, forceBucketName, dumpBrowserLogs, }) => {
26
+ const renderStillOnLambda = async ({ functionName, serveUrl, inputProps, imageFormat, envVariables, quality, region, maxRetries, composition, privacy, frame, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, downloadBehavior, forceHeight, forceWidth, forceBucketName, dumpBrowserLogs, }) => {
27
27
  var _a;
28
- if (quality) {
29
- throw new Error('The `quality` option is deprecated. Use `jpegQuality` instead.');
30
- }
31
28
  const serializedInputProps = await (0, serialize_input_props_1.serializeInputProps)({
32
29
  inputProps,
33
30
  region,
@@ -44,7 +41,7 @@ const renderStillOnLambda = async ({ functionName, serveUrl, inputProps, imageFo
44
41
  inputProps: serializedInputProps,
45
42
  imageFormat,
46
43
  envVariables,
47
- jpegQuality,
44
+ quality,
48
45
  maxRetries: maxRetries !== null && maxRetries !== void 0 ? maxRetries : constants_1.DEFAULT_MAX_RETRIES,
49
46
  frame: frame !== null && frame !== void 0 ? frame : 0,
50
47
  privacy,
@@ -1,6 +1,7 @@
1
1
  /// <reference types="minimist" />
2
2
  import type { AwsRegion } from '../pricing/aws-regions';
3
3
  import type { Privacy } from '../shared/constants';
4
+ import type { LambdaArchitecture } from '../shared/validate-architecture';
4
5
  declare type LambdaCommandLineOptions = {
5
6
  help: boolean;
6
7
  region: AwsRegion;
@@ -21,6 +22,7 @@ declare type LambdaCommandLineOptions = {
21
22
  ['frames-per-lambda']: number;
22
23
  ['concurrency-per-lambda']: number;
23
24
  ['out-name']: string | undefined;
25
+ ['architecture']: LambdaArchitecture;
24
26
  ['custom-role-arn']: string | undefined;
25
27
  privacy: Privacy;
26
28
  webhook: string | undefined;
@@ -5,6 +5,7 @@ const cli_1 = require("@remotion/cli");
5
5
  const version_1 = require("remotion/version");
6
6
  const deploy_function_1 = require("../../../api/deploy-function");
7
7
  const constants_1 = require("../../../shared/constants");
8
+ const validate_architecture_1 = require("../../../shared/validate-architecture");
8
9
  const validate_custom_role_arn_1 = require("../../../shared/validate-custom-role-arn");
9
10
  const validate_disk_size_in_mb_1 = require("../../../shared/validate-disk-size-in-mb");
10
11
  const validate_memory_size_1 = require("../../../shared/validate-memory-size");
@@ -13,16 +14,18 @@ const args_1 = require("../../args");
13
14
  const get_aws_region_1 = require("../../get-aws-region");
14
15
  exports.FUNCTIONS_DEPLOY_SUBCOMMAND = 'deploy';
15
16
  const functionsDeploySubcommand = async () => {
16
- var _a, _b, _c, _d, _e;
17
+ var _a, _b, _c, _d, _e, _f;
17
18
  const region = (0, get_aws_region_1.getAwsRegion)();
18
19
  const timeoutInSeconds = (_a = args_1.parsedLambdaCli.timeout) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_TIMEOUT;
19
20
  const memorySizeInMb = (_b = args_1.parsedLambdaCli.memory) !== null && _b !== void 0 ? _b : constants_1.DEFAULT_MEMORY_SIZE;
20
21
  const diskSizeInMb = (_c = args_1.parsedLambdaCli.disk) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_EPHEMERAL_STORAGE_IN_MB;
21
- const customRoleArn = (_d = args_1.parsedLambdaCli['custom-role-arn']) !== null && _d !== void 0 ? _d : undefined;
22
+ const architecture = (_d = args_1.parsedLambdaCli.architecture) !== null && _d !== void 0 ? _d : constants_1.DEFAULT_ARCHITECTURE;
23
+ const customRoleArn = (_e = args_1.parsedLambdaCli['custom-role-arn']) !== null && _e !== void 0 ? _e : undefined;
22
24
  const createCloudWatchLogGroup = !args_1.parsedLambdaCli['disable-cloudwatch'];
23
- const cloudWatchLogRetentionPeriodInDays = (_e = args_1.parsedLambdaCli['retention-period']) !== null && _e !== void 0 ? _e : constants_1.DEFAULT_CLOUDWATCH_RETENTION_PERIOD;
25
+ const cloudWatchLogRetentionPeriodInDays = (_f = args_1.parsedLambdaCli['retention-period']) !== null && _f !== void 0 ? _f : constants_1.DEFAULT_CLOUDWATCH_RETENTION_PERIOD;
24
26
  (0, validate_memory_size_1.validateMemorySize)(memorySizeInMb);
25
27
  (0, validate_timeout_1.validateTimeout)(timeoutInSeconds);
28
+ (0, validate_architecture_1.validateArchitecture)(architecture);
26
29
  (0, validate_disk_size_in_mb_1.validateDiskSizeInMb)(diskSizeInMb);
27
30
  (0, validate_custom_role_arn_1.validateCustomRoleArn)(customRoleArn);
28
31
  if (!cli_1.CliInternals.quietFlagProvided()) {
@@ -32,14 +35,12 @@ Memory = ${memorySizeInMb}MB
32
35
  Disk size = ${diskSizeInMb}MB
33
36
  Timeout = ${timeoutInSeconds}sec
34
37
  Version = ${version_1.VERSION}
38
+ Architecture = ${architecture}
35
39
  CloudWatch Logging Enabled = ${createCloudWatchLogGroup}
36
40
  CloudWatch Retention Period = ${cloudWatchLogRetentionPeriodInDays} days
37
41
  `.trim()));
38
42
  }
39
- const output = cli_1.CliInternals.createOverwriteableCliOutput({
40
- quiet: cli_1.CliInternals.quietFlagProvided(),
41
- cancelSignal: null,
42
- });
43
+ const output = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
43
44
  output.update('Deploying Lambda...');
44
45
  const { functionName, alreadyExisted } = await (0, deploy_function_1.deployFunction)({
45
46
  createCloudWatchLogGroup,
@@ -47,6 +48,7 @@ CloudWatch Retention Period = ${cloudWatchLogRetentionPeriodInDays} days
47
48
  timeoutInSeconds,
48
49
  memorySizeInMb,
49
50
  cloudWatchLogRetentionPeriodInDays,
51
+ architecture,
50
52
  diskSizeInMb,
51
53
  customRoleArn,
52
54
  });
@@ -12,10 +12,7 @@ const VERSION_COLS = 15;
12
12
  exports.FUNCTIONS_LS_SUBCOMMAND = 'ls';
13
13
  const functionsLsCommand = async () => {
14
14
  const region = (0, get_aws_region_1.getAwsRegion)();
15
- const fetchingOutput = cli_1.CliInternals.createOverwriteableCliOutput({
16
- quiet: cli_1.CliInternals.quietFlagProvided(),
17
- cancelSignal: null,
18
- });
15
+ const fetchingOutput = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
19
16
  fetchingOutput.update('Getting functions...');
20
17
  const functions = await (0, get_functions_1.getFunctions)({
21
18
  region,
@@ -26,10 +26,7 @@ const functionsRmCommand = async (args) => {
26
26
  }
27
27
  const region = (0, get_aws_region_1.getAwsRegion)();
28
28
  for (const functionName of args) {
29
- const infoOutput = cli_1.CliInternals.createOverwriteableCliOutput({
30
- quiet: cli_1.CliInternals.quietFlagProvided(),
31
- cancelSignal: null,
32
- });
29
+ const infoOutput = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
33
30
  infoOutput.update('Getting function info...');
34
31
  const info = await (0, get_function_info_1.getFunctionInfo)({
35
32
  region,
@@ -43,10 +40,7 @@ const functionsRmCommand = async (args) => {
43
40
  ].join('\n'));
44
41
  log_1.Log.info();
45
42
  await (0, confirm_1.confirmCli)({ delMessage: 'Delete? (Y/n)', allowForceFlag: true });
46
- const output = cli_1.CliInternals.createOverwriteableCliOutput({
47
- quiet: cli_1.CliInternals.quietFlagProvided(),
48
- cancelSignal: null,
49
- });
43
+ const output = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
50
44
  output.update('Deleting...');
51
45
  await (0, delete_function_1.deleteFunction)({ region, functionName });
52
46
  output.update('Deleted!\n');
@@ -17,10 +17,7 @@ const functionsRmallCommand = async () => {
17
17
  compatibleOnly: false,
18
18
  });
19
19
  for (const fun of functions) {
20
- const infoOutput = cli_1.CliInternals.createOverwriteableCliOutput({
21
- quiet: cli_1.CliInternals.quietFlagProvided(),
22
- cancelSignal: null,
23
- });
20
+ const infoOutput = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
24
21
  infoOutput.update('Getting function info...');
25
22
  const info = await (0, get_function_info_1.getFunctionInfo)({
26
23
  region,
@@ -34,10 +31,7 @@ const functionsRmallCommand = async () => {
34
31
  ].join('\n'));
35
32
  log_1.Log.info();
36
33
  await (0, confirm_1.confirmCli)({ delMessage: 'Delete? (Y/n)', allowForceFlag: true });
37
- const output = cli_1.CliInternals.createOverwriteableCliOutput({
38
- quiet: cli_1.CliInternals.quietFlagProvided(),
39
- cancelSignal: null,
40
- });
34
+ const output = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
41
35
  output.update('Deleting...');
42
36
  await (0, delete_function_1.deleteFunction)({ region, functionName: fun.functionName });
43
37
  output.update('Deleted!\n');
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renderCommand = exports.RENDER_COMMAND = void 0;
4
4
  const cli_1 = require("@remotion/cli");
5
- const config_1 = require("@remotion/cli/config");
6
5
  const renderer_1 = require("@remotion/renderer");
7
6
  const download_media_1 = require("../../../api/download-media");
8
7
  const get_render_progress_1 = require("../../../api/get-render-progress");
@@ -21,7 +20,7 @@ const log_1 = require("../../log");
21
20
  const progress_1 = require("./progress");
22
21
  exports.RENDER_COMMAND = 'render';
23
22
  const renderCommand = async (args, remotionRoot) => {
24
- var _a, _b, _c, _d, _e, _f, _g;
23
+ var _a, _b, _c, _d, _e, _f;
25
24
  const serveUrl = args[0];
26
25
  if (!serveUrl) {
27
26
  log_1.Log.error('No serve URL passed.');
@@ -41,28 +40,22 @@ const renderCommand = async (args, remotionRoot) => {
41
40
  }
42
41
  const outName = args_1.parsedLambdaCli['out-name'];
43
42
  const downloadName = (_a = args[2]) !== null && _a !== void 0 ? _a : null;
44
- const { codec, reason } = cli_1.CliInternals.getFinalOutputCodec({
45
- cliFlag: cli_1.CliInternals.parsedCli.codec,
43
+ const { codec, reason } = cli_1.CliInternals.getFinalCodec({
46
44
  downloadName,
47
45
  outName: outName !== null && outName !== void 0 ? outName : null,
48
- configFile: (_b = config_1.ConfigInternals.getOutputCodecOrUndefined()) !== null && _b !== void 0 ? _b : null,
49
- uiCodec: null,
50
46
  });
51
- const { chromiumOptions, crf, envVariables, frameRange, inputProps, logLevel, pixelFormat, proResProfile, puppeteerTimeout, jpegQuality, scale, everyNthFrame, numberOfGifLoops, muted, overwrite, audioBitrate, videoBitrate, height, width, } = await cli_1.CliInternals.getCliOptions({
47
+ const { chromiumOptions, crf, envVariables, frameRange, inputProps, logLevel, pixelFormat, proResProfile, puppeteerTimeout, quality, scale, everyNthFrame, numberOfGifLoops, muted, overwrite, audioBitrate, videoBitrate, height, width, } = await cli_1.CliInternals.getCliOptions({
52
48
  type: 'series',
53
49
  isLambda: true,
54
50
  remotionRoot,
55
51
  });
56
- const imageFormat = cli_1.CliInternals.getVideoImageFormat({
57
- codec,
58
- uiImageFormat: null,
59
- });
52
+ const imageFormat = cli_1.CliInternals.getImageFormat(codec);
60
53
  const functionName = await (0, find_function_name_1.findFunctionName)();
61
- const maxRetries = (_c = args_1.parsedLambdaCli['max-retries']) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_MAX_RETRIES;
54
+ const maxRetries = (_b = args_1.parsedLambdaCli['max-retries']) !== null && _b !== void 0 ? _b : constants_1.DEFAULT_MAX_RETRIES;
62
55
  (0, validate_retries_1.validateMaxRetries)(maxRetries);
63
- const privacy = (_d = args_1.parsedLambdaCli.privacy) !== null && _d !== void 0 ? _d : constants_1.DEFAULT_OUTPUT_PRIVACY;
56
+ const privacy = (_c = args_1.parsedLambdaCli.privacy) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_OUTPUT_PRIVACY;
64
57
  (0, validate_privacy_1.validatePrivacy)(privacy);
65
- const framesPerLambda = (_e = args_1.parsedLambdaCli['frames-per-lambda']) !== null && _e !== void 0 ? _e : undefined;
58
+ const framesPerLambda = (_d = args_1.parsedLambdaCli['frames-per-lambda']) !== null && _d !== void 0 ? _d : undefined;
66
59
  (0, validate_frames_per_lambda_1.validateFramesPerLambda)({ framesPerLambda, durationInFrames: 1 });
67
60
  const res = await (0, render_media_on_lambda_1.renderMediaOnLambda)({
68
61
  functionName,
@@ -74,7 +67,7 @@ const renderCommand = async (args, remotionRoot) => {
74
67
  envVariables,
75
68
  pixelFormat,
76
69
  proResProfile,
77
- jpegQuality,
70
+ quality,
78
71
  region,
79
72
  maxRetries,
80
73
  composition,
@@ -98,21 +91,18 @@ const renderCommand = async (args, remotionRoot) => {
98
91
  webhook: args_1.parsedLambdaCli.webhook
99
92
  ? {
100
93
  url: args_1.parsedLambdaCli.webhook,
101
- secret: (_f = args_1.parsedLambdaCli['webhook-secret']) !== null && _f !== void 0 ? _f : null,
94
+ secret: (_e = args_1.parsedLambdaCli['webhook-secret']) !== null && _e !== void 0 ? _e : null,
102
95
  }
103
96
  : undefined,
104
- rendererFunctionName: (_g = args_1.parsedLambdaCli['renderer-function-name']) !== null && _g !== void 0 ? _g : null,
97
+ rendererFunctionName: (_f = args_1.parsedLambdaCli['renderer-function-name']) !== null && _f !== void 0 ? _f : null,
105
98
  forceBucketName: args_1.parsedLambdaCli['force-bucket-name'],
106
99
  audioCodec: cli_1.CliInternals.parsedCli['audio-codec'],
107
100
  });
108
101
  const totalSteps = downloadName ? 6 : 5;
109
- const progressBar = cli_1.CliInternals.createOverwriteableCliOutput({
110
- quiet: cli_1.CliInternals.quietFlagProvided(),
111
- cancelSignal: null,
112
- });
102
+ const progressBar = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
113
103
  log_1.Log.info(cli_1.CliInternals.chalk.gray(`bucket = ${res.bucketName}, function = ${functionName}`));
114
104
  log_1.Log.info(cli_1.CliInternals.chalk.gray(`renderId = ${res.renderId}, codec = ${codec} (${reason})`));
115
- const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose');
105
+ const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(cli_1.ConfigInternals.Logging.getLogLevel(), 'verbose');
116
106
  log_1.Log.verbose(`CloudWatch logs (if enabled): ${res.cloudWatchLogs}`);
117
107
  log_1.Log.verbose(`Render folder: ${res.folderInS3Console}`);
118
108
  const status = await (0, get_render_progress_1.getRenderProgress)({
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sitesCreateSubcommand = exports.SITES_CREATE_SUBCOMMAND = void 0;
4
4
  const cli_1 = require("@remotion/cli");
5
- const config_1 = require("@remotion/cli/config");
6
5
  const remotion_1 = require("remotion");
7
6
  const deploy_site_1 = require("../../../api/deploy-site");
8
7
  const get_or_create_bucket_1 = require("../../../api/get-or-create-bucket");
@@ -30,16 +29,14 @@ const sitesCreateSubcommand = async (args, remotionRoot) => {
30
29
  if (desiredSiteName !== undefined) {
31
30
  (0, validate_site_name_1.validateSiteName)(desiredSiteName);
32
31
  }
33
- const progressBar = cli_1.CliInternals.createOverwriteableCliOutput({
34
- quiet: cli_1.CliInternals.quietFlagProvided(),
35
- cancelSignal: null,
36
- });
32
+ const progressBar = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
37
33
  const multiProgress = {
38
34
  bundleProgress: {
39
35
  doneIn: null,
40
36
  progress: 0,
41
37
  },
42
38
  bucketProgress: {
39
+ bucketCreated: false,
43
40
  doneIn: null,
44
41
  },
45
42
  deployProgress: {
@@ -60,6 +57,10 @@ const sitesCreateSubcommand = async (args, remotionRoot) => {
60
57
  const cliBucketName = (_b = args_1.parsedLambdaCli['force-bucket-name']) !== null && _b !== void 0 ? _b : null;
61
58
  const bucketName = cliBucketName !== null && cliBucketName !== void 0 ? cliBucketName : (await (0, get_or_create_bucket_1.getOrCreateBucket)({
62
59
  region: (0, get_aws_region_1.getAwsRegion)(),
60
+ onBucketEnsured: () => {
61
+ multiProgress.bucketProgress.bucketCreated = true;
62
+ updateProgress();
63
+ },
63
64
  })).bucketName;
64
65
  multiProgress.bucketProgress.doneIn = Date.now() - bucketStart;
65
66
  updateProgress();
@@ -85,8 +86,8 @@ const sitesCreateSubcommand = async (args, remotionRoot) => {
85
86
  };
86
87
  updateProgress();
87
88
  },
88
- enableCaching: config_1.ConfigInternals.getWebpackCaching(),
89
- webpackOverride: (_c = config_1.ConfigInternals.getWebpackOverrideFn()) !== null && _c !== void 0 ? _c : ((f) => f),
89
+ enableCaching: cli_1.ConfigInternals.getWebpackCaching(),
90
+ webpackOverride: (_c = cli_1.ConfigInternals.getWebpackOverrideFn()) !== null && _c !== void 0 ? _c : ((f) => f),
90
91
  },
91
92
  region: (0, get_aws_region_1.getAwsRegion)(),
92
93
  });
@@ -22,6 +22,9 @@ const printSitesHelp = () => {
22
22
  cli_1.CliInternals.Log.info();
23
23
  cli_1.CliInternals.Log.info(`${constants_1.BINARY_NAME} ${exports.SITES_COMMAND} ${rm_1.SITES_RM_COMMAND} <site-id>`);
24
24
  cli_1.CliInternals.Log.info(cli_1.CliInternals.chalk.gray('Remove a site from the S3 bucket.'));
25
+ cli_1.CliInternals.Log.info();
26
+ cli_1.CliInternals.Log.info(`${constants_1.BINARY_NAME} ${exports.SITES_COMMAND} ${rmall_1.SITES_RMALL_COMMAND}`);
27
+ cli_1.CliInternals.Log.info(cli_1.CliInternals.chalk.gray('Remove all sites from the S3 bucket.'));
25
28
  };
26
29
  const sitesCommand = (args, remotionRoot) => {
27
30
  if (args[0] === ls_1.SITES_LS_SUBCOMMAND) {
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.stillCommand = exports.STILL_COMMAND = void 0;
4
4
  const cli_1 = require("@remotion/cli");
5
- const config_1 = require("@remotion/cli/config");
6
5
  const renderer_1 = require("@remotion/renderer");
7
6
  const download_media_1 = require("../../api/download-media");
8
7
  const render_still_on_lambda_1 = require("../../api/render-still-on-lambda");
@@ -37,7 +36,7 @@ const stillCommand = async (args, remotionRoot) => {
37
36
  }
38
37
  const downloadName = (_a = args[2]) !== null && _a !== void 0 ? _a : null;
39
38
  const outName = args_1.parsedLambdaCli['out-name'];
40
- const { chromiumOptions, envVariables, inputProps, logLevel, puppeteerTimeout, jpegQuality, stillFrame, scale, height, width, } = await cli_1.CliInternals.getCliOptions({
39
+ const { chromiumOptions, envVariables, inputProps, logLevel, puppeteerTimeout, quality, stillFrame, scale, height, width, } = await cli_1.CliInternals.getCliOptions({
41
40
  type: 'still',
42
41
  isLambda: true,
43
42
  remotionRoot,
@@ -47,13 +46,12 @@ const stillCommand = async (args, remotionRoot) => {
47
46
  (0, validate_retries_1.validateMaxRetries)(maxRetries);
48
47
  const privacy = (_c = args_1.parsedLambdaCli.privacy) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_OUTPUT_PRIVACY;
49
48
  (0, validate_privacy_1.validatePrivacy)(privacy);
50
- const { format: imageFormat, source: imageFormatReason } = cli_1.CliInternals.determineFinalStillImageFormat({
49
+ const { format: imageFormat, source: imageFormatReason } = cli_1.CliInternals.determineFinalImageFormat({
51
50
  downloadName,
52
51
  outName: outName !== null && outName !== void 0 ? outName : null,
53
- cliFlag: (_d = cli_1.CliInternals.parsedCli['image-format']) !== null && _d !== void 0 ? _d : null,
52
+ configImageFormat: (_d = cli_1.ConfigInternals.getUserPreferredImageFormat()) !== null && _d !== void 0 ? _d : null,
53
+ cliFlag: (_e = cli_1.CliInternals.parsedCli['image-format']) !== null && _e !== void 0 ? _e : null,
54
54
  isLambda: true,
55
- fromUi: null,
56
- configImageFormat: (_e = config_1.ConfigInternals.getUserPreferredStillImageFormat()) !== null && _e !== void 0 ? _e : null,
57
55
  });
58
56
  try {
59
57
  log_1.Log.info(cli_1.CliInternals.chalk.gray(`functionName = ${functionName}, imageFormat = ${imageFormat} (${imageFormatReason})`));
@@ -68,7 +66,7 @@ const stillCommand = async (args, remotionRoot) => {
68
66
  maxRetries,
69
67
  envVariables,
70
68
  frame: stillFrame,
71
- jpegQuality,
69
+ quality,
72
70
  logLevel,
73
71
  outName,
74
72
  chromiumOptions,
@@ -4,9 +4,10 @@ export declare type BundleProgress = {
4
4
  };
5
5
  export declare const makeBundleProgress: ({ progress, doneIn }: BundleProgress) => string;
6
6
  export declare type BucketCreationProgress = {
7
+ bucketCreated: boolean;
7
8
  doneIn: number | null;
8
9
  };
9
- export declare const makeBucketProgress: ({ doneIn }: BucketCreationProgress) => string;
10
+ export declare const makeBucketProgress: ({ bucketCreated, doneIn, }: BucketCreationProgress) => string;
10
11
  declare type UploadStats = {
11
12
  addedFiles: number;
12
13
  removedFiles: number;
@@ -14,13 +14,17 @@ const makeBundleProgress = ({ progress, doneIn }) => {
14
14
  ].join(' ');
15
15
  };
16
16
  exports.makeBundleProgress = makeBundleProgress;
17
- const makeBucketProgress = ({ doneIn }) => {
18
- const progress = doneIn === null ? 0 : 1;
17
+ const makeBucketProgress = ({ bucketCreated, doneIn, }) => {
18
+ const states = [bucketCreated];
19
+ const statesFinished = states.filter(Boolean).map((p) => p).length;
20
+ const progress = statesFinished / states.length;
19
21
  return [
20
22
  `(2/3)`,
21
23
  cli_1.CliInternals.makeProgressBar(progress),
22
24
  `${doneIn === null ? 'Creating' : 'Created'} bucket`,
23
- doneIn === null ? `0/1` : cli_1.CliInternals.chalk.gray(`${doneIn}ms`),
25
+ doneIn === null
26
+ ? `${statesFinished} / ${states.length}`
27
+ : cli_1.CliInternals.chalk.gray(`${doneIn}ms`),
24
28
  ].join(' ');
25
29
  };
26
30
  exports.makeBucketProgress = makeBucketProgress;
package/dist/cli/log.d.ts CHANGED
@@ -1,18 +1,6 @@
1
1
  export declare const Log: {
2
2
  verbose: (message?: any, ...optionalParams: any[]) => void;
3
- verboseAdvanced: (options: {
4
- indent: boolean;
5
- logLevel: "verbose" | "info" | "warn" | "error";
6
- }, message?: any, ...optionalParams: any[]) => void;
7
3
  info: (message?: any, ...optionalParams: any[]) => void;
8
- infoAdvanced: (options: {
9
- indent: boolean;
10
- logLevel: "verbose" | "info" | "warn" | "error";
11
- }, message?: any, ...optionalParams: any[]) => void;
12
4
  warn: (message?: any, ...optionalParams: any[]) => void;
13
- warnAdvanced: (options: {
14
- indent: boolean;
15
- logLevel: "verbose" | "info" | "warn" | "error";
16
- }, message?: any, ...optionalParams: any[]) => void;
17
5
  error: (message?: any, ...optionalParams: any[]) => void;
18
6
  };
@@ -3,8 +3,5 @@ export declare const planFrameRanges: ({ framesPerLambda, frameRange, everyNthFr
3
3
  frameRange: [number, number];
4
4
  everyNthFrame: number;
5
5
  }) => {
6
- chunks: [
7
- number,
8
- number
9
- ][];
6
+ chunks: [number, number][];
10
7
  };
@@ -3,6 +3,6 @@ declare type Options = {
3
3
  expectedBucketOwner: string;
4
4
  };
5
5
  export declare const compositionsHandler: (lambdaParams: LambdaPayload, options: Options) => Promise<{
6
- compositions: import("remotion").AnyCompMetadata[];
6
+ compositions: import("remotion").TCompMetadata[];
7
7
  }>;
8
8
  export {};
@@ -43,6 +43,8 @@ const compositionsHandler = async (lambdaParams, options) => {
43
43
  puppeteerInstance: browserInstance,
44
44
  inputProps,
45
45
  envVariables: lambdaParams.envVariables,
46
+ ffmpegExecutable: null,
47
+ ffprobeExecutable: null,
46
48
  timeoutInMilliseconds: lambdaParams.timeoutInMilliseconds,
47
49
  chromiumOptions: lambdaParams.chromiumOptions,
48
50
  port: null,
@@ -1,11 +1,13 @@
1
1
  import type { _Object } from '@aws-sdk/client-s3';
2
2
  import type { RenderMetadata } from '../../shared/constants';
3
+ import type { LambdaArchitecture } from '../../shared/validate-architecture';
3
4
  import type { OutputFileMetadata } from './find-output-file-in-bucket';
4
- export declare const estimatePriceFromBucket: ({ contents, renderMetadata, memorySizeInMb, outputFileMetadata, diskSizeInMb, lambdasInvoked, }: {
5
+ export declare const estimatePriceFromBucket: ({ contents, renderMetadata, memorySizeInMb, outputFileMetadata, architecture, diskSizeInMb, lambdasInvoked, }: {
5
6
  contents: _Object[];
6
7
  renderMetadata: RenderMetadata | null;
7
8
  memorySizeInMb: number;
8
9
  outputFileMetadata: OutputFileMetadata | null;
10
+ architecture: LambdaArchitecture;
9
11
  diskSizeInMb: number;
10
12
  lambdasInvoked: number;
11
13
  }) => number | null;
@@ -7,7 +7,7 @@ const parse_lambda_timings_key_1 = require("../../shared/parse-lambda-timings-ke
7
7
  const calculate_chunk_times_1 = require("./calculate-chunk-times");
8
8
  const get_current_region_1 = require("./get-current-region");
9
9
  const get_time_to_finish_1 = require("./get-time-to-finish");
10
- const estimatePriceFromBucket = ({ contents, renderMetadata, memorySizeInMb, outputFileMetadata, diskSizeInMb, lambdasInvoked, }) => {
10
+ const estimatePriceFromBucket = ({ contents, renderMetadata, memorySizeInMb, outputFileMetadata, architecture, diskSizeInMb, lambdasInvoked, }) => {
11
11
  var _a, _b, _c;
12
12
  if (!renderMetadata) {
13
13
  return null;
@@ -35,6 +35,7 @@ const estimatePriceFromBucket = ({ contents, renderMetadata, memorySizeInMb, out
35
35
  type: 'combined-time-for-cost-calculation',
36
36
  }) + timeElapsedOfUnfinished,
37
37
  memorySizeInMb,
38
+ architecture,
38
39
  diskSizeInMb,
39
40
  lambdasInvoked,
40
41
  }).toPrecision(5));
@@ -1,4 +1,4 @@
1
- import type { AudioCodec } from '@remotion/renderer';
1
+ import type { AudioCodec, FfmpegExecutable } from '@remotion/renderer';
2
2
  import type { AwsRegion } from '../../pricing/aws-regions';
3
3
  import type { LambdaCodec } from '../../shared/validate-lambda-codec';
4
4
  import type { EnhancedErrorInfo } from './write-lambda-error';
@@ -11,12 +11,14 @@ export declare const getAllFilesS3: ({ bucket, expectedFiles, outdir, renderId,
11
11
  expectedBucketOwner: string;
12
12
  onErrors: (errors: EnhancedErrorInfo[]) => Promise<void>;
13
13
  }) => Promise<string[]>;
14
- export declare const concatVideosS3: ({ onProgress, numberOfFrames, codec, fps, numberOfGifLoops, files, outdir, audioCodec, }: {
14
+ export declare const concatVideosS3: ({ onProgress, numberOfFrames, codec, fps, numberOfGifLoops, ffmpegExecutable, remotionRoot, files, outdir, audioCodec, }: {
15
15
  onProgress: (frames: number) => void;
16
16
  numberOfFrames: number;
17
17
  codec: LambdaCodec;
18
18
  fps: number;
19
19
  numberOfGifLoops: number | null;
20
+ ffmpegExecutable: FfmpegExecutable;
21
+ remotionRoot: string;
20
22
  files: string[];
21
23
  outdir: string;
22
24
  audioCodec: AudioCodec | null;
@@ -128,7 +128,8 @@ const getAllFilesS3 = ({ bucket, expectedFiles, outdir, renderId, region, expect
128
128
  });
129
129
  };
130
130
  exports.getAllFilesS3 = getAllFilesS3;
131
- const concatVideosS3 = async ({ onProgress, numberOfFrames, codec, fps, numberOfGifLoops, files, outdir, audioCodec, }) => {
131
+ const concatVideosS3 = async ({ onProgress, numberOfFrames, codec, fps, numberOfGifLoops, ffmpegExecutable, remotionRoot, files, outdir, audioCodec, }) => {
132
+ var _a;
132
133
  const outfile = (0, path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.REMOTION_CONCATED_TOKEN), 'concat.' + renderer_1.RenderInternals.getFileExtensionFromCodec(codec, audioCodec));
133
134
  const combine = (0, timer_1.timer)('Combine videos');
134
135
  const filelistDir = renderer_1.RenderInternals.tmpDir(constants_1.REMOTION_FILELIST_TOKEN);
@@ -141,10 +142,12 @@ const concatVideosS3 = async ({ onProgress, numberOfFrames, codec, fps, numberOf
141
142
  codec,
142
143
  fps,
143
144
  numberOfGifLoops,
145
+ ffmpegExecutable,
146
+ remotionRoot,
144
147
  audioCodec,
145
148
  });
146
149
  combine.end();
147
- const cleanupChunksProm = fs_1.default.promises.rm(outdir, {
150
+ const cleanupChunksProm = ((_a = fs_1.default.promises.rm) !== null && _a !== void 0 ? _a : fs_1.default.promises.rmdir)(outdir, {
148
151
  recursive: true,
149
152
  });
150
153
  return { outfile, cleanupChunksProm };
@@ -6,6 +6,7 @@ const constants_1 = require("../../shared/constants");
6
6
  const get_most_expensive_chunks_1 = require("../../shared/get-most-expensive-chunks");
7
7
  const parse_lambda_timings_key_1 = require("../../shared/parse-lambda-timings-key");
8
8
  const calculate_chunk_times_1 = require("./calculate-chunk-times");
9
+ const get_current_architecture_1 = require("./get-current-architecture");
9
10
  const get_files_to_delete_1 = require("./get-files-to-delete");
10
11
  const get_retry_stats_1 = require("./get-retry-stats");
11
12
  const get_time_to_finish_1 = require("./get-time-to-finish");
@@ -19,6 +20,7 @@ const createPostRenderData = ({ renderId, region, memorySizeInMb, renderMetadata
19
20
  durationInMiliseconds: times,
20
21
  memorySizeInMb,
21
22
  region,
23
+ architecture: (0, get_current_architecture_1.getCurrentArchitecture)(),
22
24
  lambdasInvoked: renderMetadata.estimatedTotalLambdaInvokations,
23
25
  // We cannot determine the ephemeral storage size, so we
24
26
  // overestimate the price, but will only have a miniscule effect (~0.2%)
@@ -12,6 +12,7 @@ const expected_out_name_1 = require("./expected-out-name");
12
12
  const find_output_file_in_bucket_1 = require("./find-output-file-in-bucket");
13
13
  const format_costs_info_1 = require("./format-costs-info");
14
14
  const get_cleanup_progress_1 = require("./get-cleanup-progress");
15
+ const get_current_architecture_1 = require("./get-current-architecture");
15
16
  const get_current_region_1 = require("./get-current-region");
16
17
  const get_encoding_metadata_1 = require("./get-encoding-metadata");
17
18
  const get_final_encoding_status_1 = require("./get-final-encoding-status");
@@ -115,6 +116,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
115
116
  renderMetadata,
116
117
  memorySizeInMb,
117
118
  outputFileMetadata: outputFile,
119
+ architecture: (0, get_current_architecture_1.getCurrentArchitecture)(),
118
120
  lambdasInvoked: (_b = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.estimatedRenderLambdaInvokations) !== null && _b !== void 0 ? _b : 0,
119
121
  // We cannot determine the ephemeral storage size, so we
120
122
  // overestimate the price, but will only have a miniscule effect (~0.2%)
@@ -11,6 +11,6 @@ const isErrInsufficientResourcesErr = (err) => {
11
11
  };
12
12
  exports.isErrInsufficientResourcesErr = isErrInsufficientResourcesErr;
13
13
  const isBrowserCrashedError = (err) => {
14
- return err.includes('Target closed.') || err.includes('Session closed');
14
+ return err.includes('Target closed.');
15
15
  };
16
16
  exports.isBrowserCrashedError = isBrowserCrashedError;