@remotion/lambda 4.0.0-alpha4 → 4.0.0-alpha6

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 (86) hide show
  1. package/dist/admin/bundle-lambda.js +24 -30
  2. package/dist/admin/generate-etag-list.js +4 -4
  3. package/dist/admin/make-layer-public.js +59 -87
  4. package/dist/api/clean-items.js +1 -1
  5. package/dist/api/create-function.d.ts +1 -3
  6. package/dist/api/create-function.js +8 -8
  7. package/dist/api/deploy-function.d.ts +0 -3
  8. package/dist/api/deploy-function.js +1 -7
  9. package/dist/api/deploy-site.js +4 -9
  10. package/dist/api/download-media.d.ts +0 -4
  11. package/dist/api/download-media.js +3 -7
  12. package/dist/api/estimate-price.d.ts +1 -3
  13. package/dist/api/estimate-price.js +3 -9
  14. package/dist/api/get-compositions-on-lambda.d.ts +2 -2
  15. package/dist/api/get-or-create-bucket.d.ts +0 -1
  16. package/dist/api/get-or-create-bucket.js +0 -3
  17. package/dist/api/get-sites.d.ts +0 -1
  18. package/dist/api/iam-validation/simulate.js +4 -2
  19. package/dist/api/make-lambda-payload.d.ts +41 -0
  20. package/dist/api/make-lambda-payload.js +65 -0
  21. package/dist/api/render-media-on-lambda.d.ts +10 -6
  22. package/dist/api/render-media-on-lambda.js +5 -58
  23. package/dist/api/render-still-on-lambda.d.ts +7 -3
  24. package/dist/api/render-still-on-lambda.js +6 -3
  25. package/dist/api/upload-dir.js +7 -7
  26. package/dist/cli/args.d.ts +0 -2
  27. package/dist/cli/commands/functions/deploy.js +7 -9
  28. package/dist/cli/commands/functions/ls.js +4 -1
  29. package/dist/cli/commands/functions/rm.js +8 -2
  30. package/dist/cli/commands/functions/rmall.js +8 -2
  31. package/dist/cli/commands/quotas/increase.js +2 -2
  32. package/dist/cli/commands/render/render.js +22 -12
  33. package/dist/cli/commands/sites/create.js +7 -8
  34. package/dist/cli/commands/still.js +7 -5
  35. package/dist/cli/help.js +4 -0
  36. package/dist/cli/helpers/progress-bar.d.ts +1 -2
  37. package/dist/cli/helpers/progress-bar.js +3 -7
  38. package/dist/cli/index.js +3 -3
  39. package/dist/cli/log.d.ts +12 -0
  40. package/dist/functions/chunk-optimization/plan-frame-ranges.d.ts +4 -1
  41. package/dist/functions/compositions.d.ts +1 -1
  42. package/dist/functions/compositions.js +0 -2
  43. package/dist/functions/helpers/calculate-price-from-bucket.d.ts +1 -3
  44. package/dist/functions/helpers/calculate-price-from-bucket.js +1 -2
  45. package/dist/functions/helpers/clean-tmpdir.js +7 -7
  46. package/dist/functions/helpers/concat-videos.d.ts +2 -4
  47. package/dist/functions/helpers/concat-videos.js +8 -11
  48. package/dist/functions/helpers/create-post-render-data.js +0 -2
  49. package/dist/functions/helpers/get-chromium-executable-path.js +6 -1
  50. package/dist/functions/helpers/get-current-region.d.ts +1 -1
  51. package/dist/functions/helpers/get-files-in-folder.js +5 -5
  52. package/dist/functions/helpers/get-progress.js +0 -2
  53. package/dist/functions/helpers/io.d.ts +1 -1
  54. package/dist/functions/helpers/is-enosp-err.js +1 -1
  55. package/dist/functions/helpers/validate-composition.d.ts +3 -5
  56. package/dist/functions/helpers/validate-composition.js +1 -3
  57. package/dist/functions/index.d.ts +15 -4
  58. package/dist/functions/index.js +1 -1
  59. package/dist/functions/launch.js +10 -14
  60. package/dist/functions/renderer.js +15 -15
  61. package/dist/functions/start.js +1 -1
  62. package/dist/functions/still.js +7 -11
  63. package/dist/index.d.ts +5 -6
  64. package/dist/index.js +1 -2
  65. package/dist/internals.d.ts +40 -0
  66. package/dist/internals.js +2 -0
  67. package/dist/shared/aws-clients.js +2 -2
  68. package/dist/shared/call-lambda.js +11 -0
  69. package/dist/shared/constants.d.ts +20 -17
  70. package/dist/shared/constants.js +1 -2
  71. package/dist/shared/function-zip-path.d.ts +0 -1
  72. package/dist/shared/function-zip-path.js +3 -4
  73. package/dist/shared/get-etag.js +4 -4
  74. package/dist/shared/hosted-layers.d.ts +2 -91
  75. package/dist/shared/hosted-layers.js +64 -363
  76. package/dist/shared/invoke-webhook.d.ts +1 -3
  77. package/dist/shared/invoke-webhook.js +4 -4
  78. package/dist/shared/make-s3-key.js +2 -2
  79. package/dist/shared/make-s3-url.js +2 -2
  80. package/dist/shared/read-dir.js +2 -2
  81. package/dist/shared/serialize-input-props.js +1 -1
  82. package/dist/shared/validate-privacy.js +1 -1
  83. package/package.json +9 -10
  84. package/remotionlambda-arm64.zip +0 -0
  85. package/remotionlambda-x64.zip +0 -0
  86. package/remotionlambda.zip +0 -0
@@ -0,0 +1,41 @@
1
+ import type { RenderMediaOnLambdaInput } from './render-media-on-lambda';
2
+ export declare const makeLambdaPayload: ({ 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<{
3
+ rendererFunctionName: string | null;
4
+ framesPerLambda: number | null;
5
+ composition: string;
6
+ serveUrl: string;
7
+ inputProps: import("../defaults").SerializedInputProps;
8
+ codec: "h264" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "gif" | "prores";
9
+ imageFormat: "png" | "jpeg" | "none";
10
+ crf: number | undefined;
11
+ envVariables: Record<string, string> | undefined;
12
+ pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le" | undefined;
13
+ proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined;
14
+ jpegQuality: number | undefined;
15
+ maxRetries: number;
16
+ privacy: import("../defaults").Privacy;
17
+ logLevel: "verbose" | "info" | "warn" | "error";
18
+ frameRange: import("@remotion/renderer").FrameRange | null;
19
+ outName: import("../defaults").OutNameInput | null;
20
+ timeoutInMilliseconds: number;
21
+ chromiumOptions: import("@remotion/renderer").ChromiumOptions;
22
+ scale: number;
23
+ everyNthFrame: number;
24
+ numberOfGifLoops: number;
25
+ concurrencyPerLambda: number;
26
+ downloadBehavior: import("../shared/content-disposition-header").DownloadBehavior;
27
+ muted: boolean;
28
+ version: string;
29
+ overwrite: boolean;
30
+ audioBitrate: string | null;
31
+ videoBitrate: string | null;
32
+ webhook: {
33
+ url: string;
34
+ secret: string | null;
35
+ } | null;
36
+ forceHeight: number | null;
37
+ forceWidth: number | null;
38
+ bucketName: string | null;
39
+ audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
40
+ dumpBrowserLogs: boolean;
41
+ }>;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeLambdaPayload = void 0;
4
+ const version_1 = require("remotion/version");
5
+ const serialize_input_props_1 = require("../shared/serialize-input-props");
6
+ const validate_download_behavior_1 = require("../shared/validate-download-behavior");
7
+ const validate_frames_per_lambda_1 = require("../shared/validate-frames-per-lambda");
8
+ const validate_lambda_codec_1 = require("../shared/validate-lambda-codec");
9
+ const validate_serveurl_1 = require("../shared/validate-serveurl");
10
+ const makeLambdaPayload = 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
+ if (quality) {
12
+ throw new Error('quality has been renamed to jpegQuality. Please rename the option.');
13
+ }
14
+ const actualCodec = (0, validate_lambda_codec_1.validateLambdaCodec)(codec);
15
+ (0, validate_serveurl_1.validateServeUrl)(serveUrl);
16
+ (0, validate_frames_per_lambda_1.validateFramesPerLambda)({
17
+ framesPerLambda: framesPerLambda !== null && framesPerLambda !== void 0 ? framesPerLambda : null,
18
+ durationInFrames: 1,
19
+ });
20
+ (0, validate_download_behavior_1.validateDownloadBehavior)(downloadBehavior);
21
+ const serializedInputProps = await (0, serialize_input_props_1.serializeInputProps)({
22
+ inputProps,
23
+ region,
24
+ type: 'video-or-audio',
25
+ userSpecifiedBucketName: bucketName !== null && bucketName !== void 0 ? bucketName : null,
26
+ });
27
+ return {
28
+ rendererFunctionName: rendererFunctionName !== null && rendererFunctionName !== void 0 ? rendererFunctionName : null,
29
+ framesPerLambda: framesPerLambda !== null && framesPerLambda !== void 0 ? framesPerLambda : null,
30
+ composition,
31
+ serveUrl,
32
+ inputProps: serializedInputProps,
33
+ codec: actualCodec,
34
+ imageFormat: imageFormat !== null && imageFormat !== void 0 ? imageFormat : 'jpeg',
35
+ crf,
36
+ envVariables,
37
+ pixelFormat,
38
+ proResProfile,
39
+ jpegQuality,
40
+ maxRetries: maxRetries !== null && maxRetries !== void 0 ? maxRetries : 1,
41
+ privacy: privacy !== null && privacy !== void 0 ? privacy : 'public',
42
+ logLevel: logLevel !== null && logLevel !== void 0 ? logLevel : 'info',
43
+ frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : null,
44
+ outName: outName !== null && outName !== void 0 ? outName : null,
45
+ timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : 30000,
46
+ chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
47
+ scale: scale !== null && scale !== void 0 ? scale : 1,
48
+ everyNthFrame: everyNthFrame !== null && everyNthFrame !== void 0 ? everyNthFrame : 1,
49
+ numberOfGifLoops: numberOfGifLoops !== null && numberOfGifLoops !== void 0 ? numberOfGifLoops : 0,
50
+ concurrencyPerLambda: concurrencyPerLambda !== null && concurrencyPerLambda !== void 0 ? concurrencyPerLambda : 1,
51
+ downloadBehavior: downloadBehavior !== null && downloadBehavior !== void 0 ? downloadBehavior : { type: 'play-in-browser' },
52
+ muted: muted !== null && muted !== void 0 ? muted : false,
53
+ version: version_1.VERSION,
54
+ overwrite: overwrite !== null && overwrite !== void 0 ? overwrite : false,
55
+ audioBitrate: audioBitrate !== null && audioBitrate !== void 0 ? audioBitrate : null,
56
+ videoBitrate: videoBitrate !== null && videoBitrate !== void 0 ? videoBitrate : null,
57
+ webhook: webhook !== null && webhook !== void 0 ? webhook : null,
58
+ forceHeight: forceHeight !== null && forceHeight !== void 0 ? forceHeight : null,
59
+ forceWidth: forceWidth !== null && forceWidth !== void 0 ? forceWidth : null,
60
+ bucketName: bucketName !== null && bucketName !== void 0 ? bucketName : null,
61
+ audioCodec: audioCodec !== null && audioCodec !== void 0 ? audioCodec : null,
62
+ dumpBrowserLogs: dumpBrowserLogs !== null && dumpBrowserLogs !== void 0 ? dumpBrowserLogs : false,
63
+ };
64
+ };
65
+ exports.makeLambdaPayload = makeLambdaPayload;
@@ -1,4 +1,4 @@
1
- import type { AudioCodec, ChromiumOptions, FrameRange, ImageFormat, LogLevel, PixelFormat, ProResProfile } from '@remotion/renderer';
1
+ import type { AudioCodec, ChromiumOptions, FrameRange, LogLevel, PixelFormat, ProResProfile, VideoImageFormat } 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';
@@ -10,13 +10,17 @@ export declare type RenderMediaOnLambdaInput = {
10
10
  composition: string;
11
11
  inputProps?: unknown;
12
12
  codec: LambdaCodec;
13
- imageFormat?: ImageFormat;
13
+ imageFormat?: VideoImageFormat;
14
14
  crf?: number | undefined;
15
15
  envVariables?: Record<string, string>;
16
16
  pixelFormat?: PixelFormat;
17
17
  proResProfile?: ProResProfile;
18
18
  privacy?: Privacy;
19
- quality?: number;
19
+ /**
20
+ * @deprecated Renamed to `jpegQuality`
21
+ */
22
+ quality?: never;
23
+ jpegQuality?: number;
20
24
  maxRetries?: number;
21
25
  framesPerLambda?: number;
22
26
  logLevel?: LogLevel;
@@ -62,7 +66,7 @@ export declare type RenderMediaOnLambdaOutput = {
62
66
  * @param params.crf The constant rate factor to be used during encoding.
63
67
  * @param params.envVariables Object containing environment variables to be inserted into the video environment
64
68
  * @param params.proResProfile The ProRes profile if rendering a ProRes video
65
- * @param params.quality JPEG quality if JPEG was selected as the image format.
69
+ * @param params.jpegQuality JPEG quality if JPEG was selected as the image format.
66
70
  * @param params.region The AWS region in which the media should be rendered.
67
71
  * @param params.maxRetries How often rendering a chunk may fail before the media render gets aborted. Default "1"
68
72
  * @param params.logLevel Level of logging that Lambda function should perform. Default "info".
@@ -70,8 +74,8 @@ export declare type RenderMediaOnLambdaOutput = {
70
74
  * @param params.dumpBrowserLogs Whether to print browser logs to CloudWatch
71
75
  * @returns {Promise<RenderMediaOnLambdaOutput>} See documentation for detailed structure
72
76
  */
73
- export declare const renderMediaOnLambda: ({ 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, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
77
+ export declare const renderMediaOnLambda: (input: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
74
78
  /**
75
79
  * @deprecated Renamed to renderMediaOnLambda()
76
80
  */
77
- export declare const renderVideoOnLambda: ({ 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, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
81
+ export declare const renderVideoOnLambda: (input: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
@@ -1,15 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renderVideoOnLambda = exports.renderMediaOnLambda = void 0;
4
- const version_1 = require("remotion/version");
5
4
  const call_lambda_1 = require("../shared/call-lambda");
6
5
  const constants_1 = require("../shared/constants");
7
6
  const get_aws_urls_1 = require("../shared/get-aws-urls");
8
- const serialize_input_props_1 = require("../shared/serialize-input-props");
9
- const validate_download_behavior_1 = require("../shared/validate-download-behavior");
10
- const validate_frames_per_lambda_1 = require("../shared/validate-frames-per-lambda");
11
- const validate_lambda_codec_1 = require("../shared/validate-lambda-codec");
12
- const validate_serveurl_1 = require("../shared/validate-serveurl");
7
+ const make_lambda_payload_1 = require("./make-lambda-payload");
13
8
  /**
14
9
  * @description Triggers a render on a lambda given a composition and a lambda function.
15
10
  * @see [Documentation](https://remotion.dev/docs/lambda/rendermediaonlambda)
@@ -22,7 +17,7 @@ const validate_serveurl_1 = require("../shared/validate-serveurl");
22
17
  * @param params.crf The constant rate factor to be used during encoding.
23
18
  * @param params.envVariables Object containing environment variables to be inserted into the video environment
24
19
  * @param params.proResProfile The ProRes profile if rendering a ProRes video
25
- * @param params.quality JPEG quality if JPEG was selected as the image format.
20
+ * @param params.jpegQuality JPEG quality if JPEG was selected as the image format.
26
21
  * @param params.region The AWS region in which the media should be rendered.
27
22
  * @param params.maxRetries How often rendering a chunk may fail before the media render gets aborted. Default "1"
28
23
  * @param params.logLevel Level of logging that Lambda function should perform. Default "info".
@@ -30,62 +25,14 @@ const validate_serveurl_1 = require("../shared/validate-serveurl");
30
25
  * @param params.dumpBrowserLogs Whether to print browser logs to CloudWatch
31
26
  * @returns {Promise<RenderMediaOnLambdaOutput>} See documentation for detailed structure
32
27
  */
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, }) => {
28
+ const renderMediaOnLambda = async (input) => {
34
29
  var _a;
35
- const actualCodec = (0, validate_lambda_codec_1.validateLambdaCodec)(codec);
36
- (0, validate_serveurl_1.validateServeUrl)(serveUrl);
37
- (0, validate_frames_per_lambda_1.validateFramesPerLambda)({
38
- framesPerLambda: framesPerLambda !== null && framesPerLambda !== void 0 ? framesPerLambda : null,
39
- durationInFrames: 1,
40
- });
41
- (0, validate_download_behavior_1.validateDownloadBehavior)(downloadBehavior);
42
- const serializedInputProps = await (0, serialize_input_props_1.serializeInputProps)({
43
- inputProps,
44
- region,
45
- type: 'video-or-audio',
46
- userSpecifiedBucketName: bucketName !== null && bucketName !== void 0 ? bucketName : null,
47
- });
30
+ const { functionName, region, rendererFunctionName } = input;
48
31
  try {
49
32
  const res = await (0, call_lambda_1.callLambda)({
50
33
  functionName,
51
34
  type: constants_1.LambdaRoutines.start,
52
- payload: {
53
- rendererFunctionName: rendererFunctionName !== null && rendererFunctionName !== void 0 ? rendererFunctionName : null,
54
- framesPerLambda: framesPerLambda !== null && framesPerLambda !== void 0 ? framesPerLambda : null,
55
- composition,
56
- serveUrl,
57
- inputProps: serializedInputProps,
58
- codec: actualCodec,
59
- imageFormat: imageFormat !== null && imageFormat !== void 0 ? imageFormat : 'jpeg',
60
- crf,
61
- envVariables,
62
- pixelFormat,
63
- proResProfile,
64
- quality,
65
- maxRetries: maxRetries !== null && maxRetries !== void 0 ? maxRetries : 1,
66
- privacy: privacy !== null && privacy !== void 0 ? privacy : 'public',
67
- logLevel: logLevel !== null && logLevel !== void 0 ? logLevel : 'info',
68
- frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : null,
69
- outName: outName !== null && outName !== void 0 ? outName : null,
70
- timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : 30000,
71
- chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
72
- scale: scale !== null && scale !== void 0 ? scale : 1,
73
- everyNthFrame: everyNthFrame !== null && everyNthFrame !== void 0 ? everyNthFrame : 1,
74
- numberOfGifLoops: numberOfGifLoops !== null && numberOfGifLoops !== void 0 ? numberOfGifLoops : 0,
75
- concurrencyPerLambda: concurrencyPerLambda !== null && concurrencyPerLambda !== void 0 ? concurrencyPerLambda : 1,
76
- downloadBehavior: downloadBehavior !== null && downloadBehavior !== void 0 ? downloadBehavior : { type: 'play-in-browser' },
77
- muted: muted !== null && muted !== void 0 ? muted : false,
78
- version: version_1.VERSION,
79
- overwrite: overwrite !== null && overwrite !== void 0 ? overwrite : false,
80
- audioBitrate: audioBitrate !== null && audioBitrate !== void 0 ? audioBitrate : null,
81
- videoBitrate: videoBitrate !== null && videoBitrate !== void 0 ? videoBitrate : null,
82
- webhook: webhook !== null && webhook !== void 0 ? webhook : null,
83
- forceHeight: forceHeight !== null && forceHeight !== void 0 ? forceHeight : null,
84
- forceWidth: forceWidth !== null && forceWidth !== void 0 ? forceWidth : null,
85
- bucketName: bucketName !== null && bucketName !== void 0 ? bucketName : null,
86
- audioCodec: audioCodec !== null && audioCodec !== void 0 ? audioCodec : null,
87
- dumpBrowserLogs: dumpBrowserLogs !== null && dumpBrowserLogs !== void 0 ? dumpBrowserLogs : false,
88
- },
35
+ payload: await (0, make_lambda_payload_1.makeLambdaPayload)(input),
89
36
  region,
90
37
  });
91
38
  return {
@@ -12,7 +12,11 @@ export declare type RenderStillOnLambdaInput = {
12
12
  privacy: Privacy;
13
13
  maxRetries?: number;
14
14
  envVariables?: Record<string, string>;
15
- quality?: number;
15
+ /**
16
+ * @deprecated Renamed to `jpegQuality`
17
+ */
18
+ quality?: never;
19
+ jpegQuality?: number;
16
20
  frame?: number;
17
21
  logLevel?: LogLevel;
18
22
  outName?: OutNameInput;
@@ -42,7 +46,7 @@ export declare type RenderStillOnLambdaOutput = {
42
46
  * @param params.inputProps The input props that should be passed to the composition.
43
47
  * @param params.imageFormat In which image format the frames should be rendered.
44
48
  * @param params.envVariables Object containing environment variables to be inserted into the video environment
45
- * @param params.quality JPEG quality if JPEG was selected as the image format.
49
+ * @param params.jpegQuality JPEG quality if JPEG was selected as the image format.
46
50
  * @param params.region The AWS region in which the video should be rendered.
47
51
  * @param params.maxRetries How often rendering a chunk may fail before the video render gets aborted.
48
52
  * @param params.frame Which frame should be used for the still image. Default 0.
@@ -50,4 +54,4 @@ export declare type RenderStillOnLambdaOutput = {
50
54
  * @param params.dumpBrowserLogs Whether to print browser logs to CloudWatch.
51
55
  * @returns {Promise<RenderStillOnLambdaOutput>} See documentation for exact response structure.
52
56
  */
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>;
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>;
@@ -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.quality JPEG quality if JPEG was selected as the image format.
18
+ * @param params.jpegQuality 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,8 +23,11 @@ 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, 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, jpegQuality, 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
+ }
28
31
  const serializedInputProps = await (0, serialize_input_props_1.serializeInputProps)({
29
32
  inputProps,
30
33
  region,
@@ -41,7 +44,7 @@ const renderStillOnLambda = async ({ functionName, serveUrl, inputProps, imageFo
41
44
  inputProps: serializedInputProps,
42
45
  imageFormat,
43
46
  envVariables,
44
- quality,
47
+ jpegQuality,
45
48
  maxRetries: maxRetries !== null && maxRetries !== void 0 ? maxRetries : constants_1.DEFAULT_MAX_RETRIES,
46
49
  frame: frame !== null && frame !== void 0 ? frame : 0,
47
50
  privacy,
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.uploadDir = exports.getDirFiles = void 0;
7
7
  const lib_storage_1 = require("@aws-sdk/lib-storage");
8
- const fs_1 = require("fs");
9
8
  const mime_types_1 = __importDefault(require("mime-types"));
10
- const path_1 = __importDefault(require("path"));
9
+ const node_fs_1 = require("node:fs");
10
+ const node_path_1 = __importDefault(require("node:path"));
11
11
  const aws_clients_1 = require("../shared/aws-clients");
12
12
  const make_s3_key_1 = require("../shared/make-s3-key");
13
13
  const getDirFiles = (entry) => {
@@ -15,14 +15,14 @@ const getDirFiles = (entry) => {
15
15
  };
16
16
  exports.getDirFiles = getDirFiles;
17
17
  async function getFiles(directory, originalDirectory, toUpload) {
18
- const dirents = await fs_1.promises.readdir(directory, { withFileTypes: true });
18
+ const dirents = await node_fs_1.promises.readdir(directory, { withFileTypes: true });
19
19
  const _files = await Promise.all(dirents
20
20
  .map((dirent) => {
21
- const res = path_1.default.resolve(directory, dirent.name);
21
+ const res = node_path_1.default.resolve(directory, dirent.name);
22
22
  return [dirent, res];
23
23
  })
24
24
  .filter(([dirent, res]) => {
25
- const relative = path_1.default.relative(originalDirectory, res);
25
+ const relative = node_path_1.default.relative(originalDirectory, res);
26
26
  if (dirent.isDirectory()) {
27
27
  return true;
28
28
  }
@@ -32,7 +32,7 @@ async function getFiles(directory, originalDirectory, toUpload) {
32
32
  return true;
33
33
  })
34
34
  .map(async ([dirent, res]) => {
35
- const { size } = await fs_1.promises.stat(res);
35
+ const { size } = await node_fs_1.promises.stat(res);
36
36
  return dirent.isDirectory()
37
37
  ? getFiles(res, originalDirectory, toUpload)
38
38
  : [
@@ -53,7 +53,7 @@ const uploadDir = async ({ bucket, region, localDir, onProgress, keyPrefix, priv
53
53
  const client = (0, aws_clients_1.getS3Client)(region, null);
54
54
  const uploads = files.map((filePath) => {
55
55
  const Key = (0, make_s3_key_1.makeS3Key)(keyPrefix, localDir, filePath.name);
56
- const Body = (0, fs_1.createReadStream)(filePath.name);
56
+ const Body = (0, node_fs_1.createReadStream)(filePath.name);
57
57
  const ContentType = mime_types_1.default.lookup(Key) || 'application/octet-stream';
58
58
  const ACL = privacy === 'no-acl'
59
59
  ? undefined
@@ -1,7 +1,6 @@
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';
5
4
  declare type LambdaCommandLineOptions = {
6
5
  help: boolean;
7
6
  region: AwsRegion;
@@ -22,7 +21,6 @@ declare type LambdaCommandLineOptions = {
22
21
  ['frames-per-lambda']: number;
23
22
  ['concurrency-per-lambda']: number;
24
23
  ['out-name']: string | undefined;
25
- ['architecture']: LambdaArchitecture;
26
24
  ['custom-role-arn']: string | undefined;
27
25
  privacy: Privacy;
28
26
  webhook: string | undefined;
@@ -5,7 +5,6 @@ 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");
9
8
  const validate_custom_role_arn_1 = require("../../../shared/validate-custom-role-arn");
10
9
  const validate_disk_size_in_mb_1 = require("../../../shared/validate-disk-size-in-mb");
11
10
  const validate_memory_size_1 = require("../../../shared/validate-memory-size");
@@ -14,18 +13,16 @@ const args_1 = require("../../args");
14
13
  const get_aws_region_1 = require("../../get-aws-region");
15
14
  exports.FUNCTIONS_DEPLOY_SUBCOMMAND = 'deploy';
16
15
  const functionsDeploySubcommand = async () => {
17
- var _a, _b, _c, _d, _e, _f;
16
+ var _a, _b, _c, _d, _e;
18
17
  const region = (0, get_aws_region_1.getAwsRegion)();
19
18
  const timeoutInSeconds = (_a = args_1.parsedLambdaCli.timeout) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_TIMEOUT;
20
19
  const memorySizeInMb = (_b = args_1.parsedLambdaCli.memory) !== null && _b !== void 0 ? _b : constants_1.DEFAULT_MEMORY_SIZE;
21
20
  const diskSizeInMb = (_c = args_1.parsedLambdaCli.disk) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_EPHEMERAL_STORAGE_IN_MB;
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;
21
+ const customRoleArn = (_d = args_1.parsedLambdaCli['custom-role-arn']) !== null && _d !== void 0 ? _d : undefined;
24
22
  const createCloudWatchLogGroup = !args_1.parsedLambdaCli['disable-cloudwatch'];
25
- const cloudWatchLogRetentionPeriodInDays = (_f = args_1.parsedLambdaCli['retention-period']) !== null && _f !== void 0 ? _f : constants_1.DEFAULT_CLOUDWATCH_RETENTION_PERIOD;
23
+ const cloudWatchLogRetentionPeriodInDays = (_e = args_1.parsedLambdaCli['retention-period']) !== null && _e !== void 0 ? _e : constants_1.DEFAULT_CLOUDWATCH_RETENTION_PERIOD;
26
24
  (0, validate_memory_size_1.validateMemorySize)(memorySizeInMb);
27
25
  (0, validate_timeout_1.validateTimeout)(timeoutInSeconds);
28
- (0, validate_architecture_1.validateArchitecture)(architecture);
29
26
  (0, validate_disk_size_in_mb_1.validateDiskSizeInMb)(diskSizeInMb);
30
27
  (0, validate_custom_role_arn_1.validateCustomRoleArn)(customRoleArn);
31
28
  if (!cli_1.CliInternals.quietFlagProvided()) {
@@ -35,12 +32,14 @@ Memory = ${memorySizeInMb}MB
35
32
  Disk size = ${diskSizeInMb}MB
36
33
  Timeout = ${timeoutInSeconds}sec
37
34
  Version = ${version_1.VERSION}
38
- Architecture = ${architecture}
39
35
  CloudWatch Logging Enabled = ${createCloudWatchLogGroup}
40
36
  CloudWatch Retention Period = ${cloudWatchLogRetentionPeriodInDays} days
41
37
  `.trim()));
42
38
  }
43
- const output = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
39
+ const output = cli_1.CliInternals.createOverwriteableCliOutput({
40
+ quiet: cli_1.CliInternals.quietFlagProvided(),
41
+ cancelSignal: null,
42
+ });
44
43
  output.update('Deploying Lambda...');
45
44
  const { functionName, alreadyExisted } = await (0, deploy_function_1.deployFunction)({
46
45
  createCloudWatchLogGroup,
@@ -48,7 +47,6 @@ CloudWatch Retention Period = ${cloudWatchLogRetentionPeriodInDays} days
48
47
  timeoutInSeconds,
49
48
  memorySizeInMb,
50
49
  cloudWatchLogRetentionPeriodInDays,
51
- architecture,
52
50
  diskSizeInMb,
53
51
  customRoleArn,
54
52
  });
@@ -12,7 +12,10 @@ 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(cli_1.CliInternals.quietFlagProvided());
15
+ const fetchingOutput = cli_1.CliInternals.createOverwriteableCliOutput({
16
+ quiet: cli_1.CliInternals.quietFlagProvided(),
17
+ cancelSignal: null,
18
+ });
16
19
  fetchingOutput.update('Getting functions...');
17
20
  const functions = await (0, get_functions_1.getFunctions)({
18
21
  region,
@@ -26,7 +26,10 @@ 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(cli_1.CliInternals.quietFlagProvided());
29
+ const infoOutput = cli_1.CliInternals.createOverwriteableCliOutput({
30
+ quiet: cli_1.CliInternals.quietFlagProvided(),
31
+ cancelSignal: null,
32
+ });
30
33
  infoOutput.update('Getting function info...');
31
34
  const info = await (0, get_function_info_1.getFunctionInfo)({
32
35
  region,
@@ -40,7 +43,10 @@ const functionsRmCommand = async (args) => {
40
43
  ].join('\n'));
41
44
  log_1.Log.info();
42
45
  await (0, confirm_1.confirmCli)({ delMessage: 'Delete? (Y/n)', allowForceFlag: true });
43
- const output = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
46
+ const output = cli_1.CliInternals.createOverwriteableCliOutput({
47
+ quiet: cli_1.CliInternals.quietFlagProvided(),
48
+ cancelSignal: null,
49
+ });
44
50
  output.update('Deleting...');
45
51
  await (0, delete_function_1.deleteFunction)({ region, functionName });
46
52
  output.update('Deleted!\n');
@@ -17,7 +17,10 @@ const functionsRmallCommand = async () => {
17
17
  compatibleOnly: false,
18
18
  });
19
19
  for (const fun of functions) {
20
- const infoOutput = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
20
+ const infoOutput = cli_1.CliInternals.createOverwriteableCliOutput({
21
+ quiet: cli_1.CliInternals.quietFlagProvided(),
22
+ cancelSignal: null,
23
+ });
21
24
  infoOutput.update('Getting function info...');
22
25
  const info = await (0, get_function_info_1.getFunctionInfo)({
23
26
  region,
@@ -31,7 +34,10 @@ const functionsRmallCommand = async () => {
31
34
  ].join('\n'));
32
35
  log_1.Log.info();
33
36
  await (0, confirm_1.confirmCli)({ delMessage: 'Delete? (Y/n)', allowForceFlag: true });
34
- const output = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
37
+ const output = cli_1.CliInternals.createOverwriteableCliOutput({
38
+ quiet: cli_1.CliInternals.quietFlagProvided(),
39
+ cancelSignal: null,
40
+ });
35
41
  output.update('Deleting...');
36
42
  await (0, delete_function_1.deleteFunction)({ region, functionName: fun.functionName });
37
43
  output.update('Deleted!\n');
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.quotasIncreaseCommand = exports.INCREASE_SUBCOMMAND = void 0;
4
4
  const client_service_quotas_1 = require("@aws-sdk/client-service-quotas");
5
- const process_1 = require("process");
5
+ const node_process_1 = require("node:process");
6
6
  const _1 = require(".");
7
7
  const defaults_1 = require("../../../defaults");
8
8
  const aws_clients_1 = require("../../../shared/aws-clients");
@@ -36,7 +36,7 @@ const quotasIncreaseCommand = async () => {
36
36
  if (openCase) {
37
37
  log_1.Log.warn(`A request to increase it to ${openCase.DesiredValue} is already pending:`);
38
38
  log_1.Log.warn(`https://${region}.console.aws.amazon.com/support/home#/case/?displayId=${openCase.CaseId}`);
39
- (0, process_1.exit)(1);
39
+ (0, node_process_1.exit)(1);
40
40
  }
41
41
  const concurrencyCurrent = (_b = concurrencyLimit.Quota) === null || _b === void 0 ? void 0 : _b.Value;
42
42
  const defaultConcurrency = (_c = defaultConcurrencyLimit.Quota) === null || _c === void 0 ? void 0 : _c.Value;
@@ -2,6 +2,7 @@
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");
5
6
  const renderer_1 = require("@remotion/renderer");
6
7
  const download_media_1 = require("../../../api/download-media");
7
8
  const get_render_progress_1 = require("../../../api/get-render-progress");
@@ -20,7 +21,7 @@ const log_1 = require("../../log");
20
21
  const progress_1 = require("./progress");
21
22
  exports.RENDER_COMMAND = 'render';
22
23
  const renderCommand = async (args, remotionRoot) => {
23
- var _a, _b, _c, _d, _e, _f;
24
+ var _a, _b, _c, _d, _e, _f, _g;
24
25
  const serveUrl = args[0];
25
26
  if (!serveUrl) {
26
27
  log_1.Log.error('No serve URL passed.');
@@ -40,22 +41,28 @@ const renderCommand = async (args, remotionRoot) => {
40
41
  }
41
42
  const outName = args_1.parsedLambdaCli['out-name'];
42
43
  const downloadName = (_a = args[2]) !== null && _a !== void 0 ? _a : null;
43
- const { codec, reason } = cli_1.CliInternals.getFinalCodec({
44
+ const { codec, reason } = cli_1.CliInternals.getFinalOutputCodec({
45
+ cliFlag: cli_1.CliInternals.parsedCli.codec,
44
46
  downloadName,
45
47
  outName: outName !== null && outName !== void 0 ? outName : null,
48
+ configFile: (_b = config_1.ConfigInternals.getOutputCodecOrUndefined()) !== null && _b !== void 0 ? _b : null,
49
+ uiCodec: null,
46
50
  });
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({
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({
48
52
  type: 'series',
49
53
  isLambda: true,
50
54
  remotionRoot,
51
55
  });
52
- const imageFormat = cli_1.CliInternals.getImageFormat(codec);
56
+ const imageFormat = cli_1.CliInternals.getVideoImageFormat({
57
+ codec,
58
+ uiImageFormat: null,
59
+ });
53
60
  const functionName = await (0, find_function_name_1.findFunctionName)();
54
- const maxRetries = (_b = args_1.parsedLambdaCli['max-retries']) !== null && _b !== void 0 ? _b : constants_1.DEFAULT_MAX_RETRIES;
61
+ const maxRetries = (_c = args_1.parsedLambdaCli['max-retries']) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_MAX_RETRIES;
55
62
  (0, validate_retries_1.validateMaxRetries)(maxRetries);
56
- const privacy = (_c = args_1.parsedLambdaCli.privacy) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_OUTPUT_PRIVACY;
63
+ const privacy = (_d = args_1.parsedLambdaCli.privacy) !== null && _d !== void 0 ? _d : constants_1.DEFAULT_OUTPUT_PRIVACY;
57
64
  (0, validate_privacy_1.validatePrivacy)(privacy);
58
- const framesPerLambda = (_d = args_1.parsedLambdaCli['frames-per-lambda']) !== null && _d !== void 0 ? _d : undefined;
65
+ const framesPerLambda = (_e = args_1.parsedLambdaCli['frames-per-lambda']) !== null && _e !== void 0 ? _e : undefined;
59
66
  (0, validate_frames_per_lambda_1.validateFramesPerLambda)({ framesPerLambda, durationInFrames: 1 });
60
67
  const res = await (0, render_media_on_lambda_1.renderMediaOnLambda)({
61
68
  functionName,
@@ -67,7 +74,7 @@ const renderCommand = async (args, remotionRoot) => {
67
74
  envVariables,
68
75
  pixelFormat,
69
76
  proResProfile,
70
- quality,
77
+ jpegQuality,
71
78
  region,
72
79
  maxRetries,
73
80
  composition,
@@ -91,18 +98,21 @@ const renderCommand = async (args, remotionRoot) => {
91
98
  webhook: args_1.parsedLambdaCli.webhook
92
99
  ? {
93
100
  url: args_1.parsedLambdaCli.webhook,
94
- secret: (_e = args_1.parsedLambdaCli['webhook-secret']) !== null && _e !== void 0 ? _e : null,
101
+ secret: (_f = args_1.parsedLambdaCli['webhook-secret']) !== null && _f !== void 0 ? _f : null,
95
102
  }
96
103
  : undefined,
97
- rendererFunctionName: (_f = args_1.parsedLambdaCli['renderer-function-name']) !== null && _f !== void 0 ? _f : null,
104
+ rendererFunctionName: (_g = args_1.parsedLambdaCli['renderer-function-name']) !== null && _g !== void 0 ? _g : null,
98
105
  forceBucketName: args_1.parsedLambdaCli['force-bucket-name'],
99
106
  audioCodec: cli_1.CliInternals.parsedCli['audio-codec'],
100
107
  });
101
108
  const totalSteps = downloadName ? 6 : 5;
102
- const progressBar = cli_1.CliInternals.createOverwriteableCliOutput(cli_1.CliInternals.quietFlagProvided());
109
+ const progressBar = cli_1.CliInternals.createOverwriteableCliOutput({
110
+ quiet: cli_1.CliInternals.quietFlagProvided(),
111
+ cancelSignal: null,
112
+ });
103
113
  log_1.Log.info(cli_1.CliInternals.chalk.gray(`bucket = ${res.bucketName}, function = ${functionName}`));
104
114
  log_1.Log.info(cli_1.CliInternals.chalk.gray(`renderId = ${res.renderId}, codec = ${codec} (${reason})`));
105
- const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(cli_1.ConfigInternals.Logging.getLogLevel(), 'verbose');
115
+ const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(config_1.ConfigInternals.Logging.getLogLevel(), 'verbose');
106
116
  log_1.Log.verbose(`CloudWatch logs (if enabled): ${res.cloudWatchLogs}`);
107
117
  log_1.Log.verbose(`Render folder: ${res.folderInS3Console}`);
108
118
  const status = await (0, get_render_progress_1.getRenderProgress)({