@remotion/serverless 4.0.245 → 4.0.246

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 (78) hide show
  1. package/.turbo/turbo-make.log +1 -1
  2. package/dist/best-frames-per-function-param.js +5 -5
  3. package/dist/client.d.ts +9 -0
  4. package/dist/client.js +30 -12
  5. package/dist/compress-props.d.ts +6 -2
  6. package/dist/compress-props.js +5 -3
  7. package/dist/concat-videos.d.ts +3 -4
  8. package/dist/concat-videos.js +2 -2
  9. package/dist/constants.d.ts +39 -3
  10. package/dist/constants.js +8 -1
  11. package/dist/create-post-render-data.d.ts +1 -1
  12. package/dist/create-post-render-data.js +2 -2
  13. package/dist/estimate-price-from-bucket.d.ts +2 -2
  14. package/dist/estimate-price-from-bucket.js +4 -4
  15. package/dist/expected-out-name.d.ts +1 -1
  16. package/dist/get-browser-instance.d.ts +5 -12
  17. package/dist/get-browser-instance.js +8 -7
  18. package/dist/get-custom-out-name.d.ts +1 -1
  19. package/dist/get-or-create-bucket.d.ts +1 -1
  20. package/dist/handlers/check-version-mismatch.d.ts +8 -0
  21. package/dist/handlers/check-version-mismatch.js +23 -0
  22. package/dist/handlers/compositions.d.ts +7 -2
  23. package/dist/handlers/compositions.js +25 -25
  24. package/dist/handlers/launch.d.ts +3 -2
  25. package/dist/handlers/launch.js +30 -31
  26. package/dist/handlers/progress.d.ts +6 -2
  27. package/dist/handlers/progress.js +23 -20
  28. package/dist/handlers/renderer.d.ts +3 -2
  29. package/dist/handlers/renderer.js +13 -11
  30. package/dist/handlers/start.d.ts +7 -2
  31. package/dist/handlers/start.js +10 -11
  32. package/dist/handlers/still.d.ts +2 -1
  33. package/dist/handlers/still.js +68 -67
  34. package/dist/index.d.ts +21 -5
  35. package/dist/index.js +54 -7
  36. package/dist/info.d.ts +1 -1
  37. package/dist/inner-routine.d.ts +22 -0
  38. package/dist/inner-routine.js +267 -0
  39. package/dist/inspect-error.d.ts +2 -2
  40. package/dist/invoke-webhook.d.ts +14 -11
  41. package/dist/invoke-webhook.js +1 -1
  42. package/dist/is-warm.d.ts +2 -0
  43. package/dist/is-warm.js +10 -0
  44. package/dist/make-bucket-name.d.ts +1 -1
  45. package/dist/make-timeout-error.d.ts +1 -1
  46. package/dist/make-timeout-message.js +3 -2
  47. package/dist/merge-chunks.d.ts +2 -1
  48. package/dist/merge-chunks.js +3 -3
  49. package/dist/most-expensive-chunks.d.ts +2 -2
  50. package/dist/most-expensive-chunks.js +1 -1
  51. package/dist/overall-render-progress.d.ts +3 -3
  52. package/dist/plan-frame-ranges.d.ts +2 -2
  53. package/dist/plan-frame-ranges.js +4 -4
  54. package/dist/print-logging-grep-helper.d.ts +4 -0
  55. package/dist/print-logging-grep-helper.js +12 -0
  56. package/dist/progress.js +2 -2
  57. package/dist/provider-implementation.d.ts +152 -3
  58. package/dist/render-metadata.d.ts +1 -1
  59. package/dist/render-progress.d.ts +1 -1
  60. package/dist/streaming/streaming.d.ts +6 -6
  61. package/dist/streaming/streaming.js +3 -3
  62. package/dist/types.d.ts +3 -2
  63. package/dist/validate-composition.d.ts +1 -1
  64. package/dist/validate-composition.js +11 -1
  65. package/dist/validate-frames-per-function.d.ts +2 -2
  66. package/dist/validate-frames-per-function.js +13 -13
  67. package/dist/{write-lambda-error.d.ts → write-error-to-storage.d.ts} +4 -4
  68. package/package.json +6 -5
  69. package/tsconfig.tsbuildinfo +1 -1
  70. package/.turbo/turbo-formatting.log +0 -7
  71. package/.turbo/turbo-lint.log +0 -11
  72. package/dist/compositions.d.ts +0 -11
  73. package/dist/compositions.js +0 -82
  74. package/dist/still.d.ts +0 -28
  75. package/dist/still.js +0 -2
  76. package/dist/validate-frames-per-lambda.d.ts +0 -4
  77. package/dist/validate-frames-per-lambda.js +0 -29
  78. /package/dist/{write-lambda-error.js → write-error-to-storage.js} +0 -0
@@ -1,5 +1,5 @@
1
1
 
2
2
  
3
- > @remotion/serverless@4.0.244 make /Users/jonathanburger/remotion/packages/serverless
3
+ > @remotion/serverless@4.0.245 make /Users/jonathanburger/remotion/packages/serverless
4
4
  > tsc -d
5
5
 
@@ -8,10 +8,10 @@ const bestFramesPerFunctionParam = (frameCount) => {
8
8
  const concurrency = (0, no_react_1.interpolate)(frameCount, [0, 18000], [75, 150], {
9
9
  extrapolateRight: 'clamp',
10
10
  });
11
- // At least have 20 as a `framesPerLambda` value
12
- const framesPerLambda = Math.max(frameCount / concurrency, 20);
13
- // Evenly distribute: For 21 frames over 2 lambda functions, distribute as 11 + 10 ==> framesPerLambda = 11
14
- const lambdasNeeded = Math.ceil(frameCount / framesPerLambda);
15
- return Math.ceil(frameCount / lambdasNeeded);
11
+ // At least have 20 as a `framesPerFunction` value
12
+ const framesPerFunction = Math.max(frameCount / concurrency, 20);
13
+ // Evenly distribute: For 21 frames over 2 functions, distribute as 11 + 10 ==> framesPerLambda = 11
14
+ const functionsNeeded = Math.ceil(frameCount / framesPerFunction);
15
+ return Math.ceil(frameCount / functionsNeeded);
16
16
  };
17
17
  exports.bestFramesPerFunctionParam = bestFramesPerFunctionParam;
package/dist/client.d.ts CHANGED
@@ -1,15 +1,24 @@
1
+ export { COMMAND_NOT_FOUND } from './constants';
1
2
  export { Await } from './await';
2
3
  export { compressInputProps, decompressInputProps, getNeedsToUpload, serializeOrThrow, } from './compress-props';
3
4
  export { REMOTION_BUCKET_PREFIX, ServerlessCodec, ServerlessPayload, ServerlessPayloads, ServerlessRoutines, ServerlessStartPayload, ServerlessStatusPayload, artifactName, customOutName, expiryDays, outName, outStillName, overallProgressKey, rendersPrefix, serverlessCodecs, type CustomCredentials, type CustomCredentialsWithoutSensitiveData, type DeleteAfter, type DownloadBehavior, type OutNameInput, type OutNameInputWithoutCredentials, type OutNameOutput, type Privacy, type SerializedInputProps, type WebhookOption, } from './constants';
4
5
  export { GetOrCreateBucketInput, GetOrCreateBucketOutput, internalGetOrCreateBucket, } from './get-or-create-bucket';
6
+ export { validateDownloadBehavior } from './validate-download-behavior';
7
+ export { validateFramesPerFunction } from './validate-frames-per-function';
5
8
  export { errorIsOutOfSpaceError, isBrowserCrashedError, isErrInsufficientResourcesErr, } from './error-category';
9
+ export { calculateChunkTimes } from './calculate-chunk-times';
10
+ export { MAX_FUNCTIONS_PER_RENDER } from './constants';
11
+ export { DOCS_URL } from './docs-url';
6
12
  export { getExpectedOutName } from './expected-out-name';
7
13
  export { FileNameAndSize, GetFolderFiles } from './get-files-in-folder';
14
+ export { getOverallProgressFromStorage } from './get-overall-progress-from-storage';
8
15
  export { inputPropsKey, resolvedPropsKey } from './input-props-keys';
9
16
  export { makeBucketName } from './make-bucket-name';
17
+ export { getProgress } from './progress';
10
18
  export { RenderMetadata } from './render-metadata';
11
19
  export { streamToString } from './stream-to-string';
12
20
  export { MessageTypeId, formatMap, makeStreamPayload, messageTypeIdToMessageType, } from './streaming/streaming';
13
21
  export { truthy } from './truthy';
14
22
  export { validateBucketName } from './validate-bucket-name';
23
+ export { validatePrivacy } from './validate-privacy';
15
24
  export { validateWebhook } from './validate-webhook';
package/dist/client.js CHANGED
@@ -1,35 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateWebhook = exports.validateBucketName = exports.truthy = exports.messageTypeIdToMessageType = exports.makeStreamPayload = exports.formatMap = exports.streamToString = exports.makeBucketName = exports.resolvedPropsKey = exports.inputPropsKey = exports.getExpectedOutName = exports.isErrInsufficientResourcesErr = exports.isBrowserCrashedError = exports.errorIsOutOfSpaceError = exports.internalGetOrCreateBucket = exports.serverlessCodecs = exports.rendersPrefix = exports.overallProgressKey = exports.outStillName = exports.outName = exports.expiryDays = exports.customOutName = exports.artifactName = exports.ServerlessRoutines = exports.REMOTION_BUCKET_PREFIX = exports.serializeOrThrow = exports.getNeedsToUpload = exports.decompressInputProps = exports.compressInputProps = void 0;
3
+ exports.validateWebhook = exports.validatePrivacy = exports.validateBucketName = exports.truthy = exports.messageTypeIdToMessageType = exports.makeStreamPayload = exports.formatMap = exports.streamToString = exports.getProgress = exports.makeBucketName = exports.resolvedPropsKey = exports.inputPropsKey = exports.getOverallProgressFromStorage = exports.getExpectedOutName = exports.DOCS_URL = exports.MAX_FUNCTIONS_PER_RENDER = exports.calculateChunkTimes = exports.isErrInsufficientResourcesErr = exports.isBrowserCrashedError = exports.errorIsOutOfSpaceError = exports.validateFramesPerFunction = exports.validateDownloadBehavior = exports.internalGetOrCreateBucket = exports.serverlessCodecs = exports.rendersPrefix = exports.overallProgressKey = exports.outStillName = exports.outName = exports.expiryDays = exports.customOutName = exports.artifactName = exports.ServerlessRoutines = exports.REMOTION_BUCKET_PREFIX = exports.serializeOrThrow = exports.getNeedsToUpload = exports.decompressInputProps = exports.compressInputProps = exports.COMMAND_NOT_FOUND = void 0;
4
+ var constants_1 = require("./constants");
5
+ Object.defineProperty(exports, "COMMAND_NOT_FOUND", { enumerable: true, get: function () { return constants_1.COMMAND_NOT_FOUND; } });
4
6
  var compress_props_1 = require("./compress-props");
5
7
  Object.defineProperty(exports, "compressInputProps", { enumerable: true, get: function () { return compress_props_1.compressInputProps; } });
6
8
  Object.defineProperty(exports, "decompressInputProps", { enumerable: true, get: function () { return compress_props_1.decompressInputProps; } });
7
9
  Object.defineProperty(exports, "getNeedsToUpload", { enumerable: true, get: function () { return compress_props_1.getNeedsToUpload; } });
8
10
  Object.defineProperty(exports, "serializeOrThrow", { enumerable: true, get: function () { return compress_props_1.serializeOrThrow; } });
9
- var constants_1 = require("./constants");
10
- Object.defineProperty(exports, "REMOTION_BUCKET_PREFIX", { enumerable: true, get: function () { return constants_1.REMOTION_BUCKET_PREFIX; } });
11
- Object.defineProperty(exports, "ServerlessRoutines", { enumerable: true, get: function () { return constants_1.ServerlessRoutines; } });
12
- Object.defineProperty(exports, "artifactName", { enumerable: true, get: function () { return constants_1.artifactName; } });
13
- Object.defineProperty(exports, "customOutName", { enumerable: true, get: function () { return constants_1.customOutName; } });
14
- Object.defineProperty(exports, "expiryDays", { enumerable: true, get: function () { return constants_1.expiryDays; } });
15
- Object.defineProperty(exports, "outName", { enumerable: true, get: function () { return constants_1.outName; } });
16
- Object.defineProperty(exports, "outStillName", { enumerable: true, get: function () { return constants_1.outStillName; } });
17
- Object.defineProperty(exports, "overallProgressKey", { enumerable: true, get: function () { return constants_1.overallProgressKey; } });
18
- Object.defineProperty(exports, "rendersPrefix", { enumerable: true, get: function () { return constants_1.rendersPrefix; } });
19
- Object.defineProperty(exports, "serverlessCodecs", { enumerable: true, get: function () { return constants_1.serverlessCodecs; } });
11
+ var constants_2 = require("./constants");
12
+ Object.defineProperty(exports, "REMOTION_BUCKET_PREFIX", { enumerable: true, get: function () { return constants_2.REMOTION_BUCKET_PREFIX; } });
13
+ Object.defineProperty(exports, "ServerlessRoutines", { enumerable: true, get: function () { return constants_2.ServerlessRoutines; } });
14
+ Object.defineProperty(exports, "artifactName", { enumerable: true, get: function () { return constants_2.artifactName; } });
15
+ Object.defineProperty(exports, "customOutName", { enumerable: true, get: function () { return constants_2.customOutName; } });
16
+ Object.defineProperty(exports, "expiryDays", { enumerable: true, get: function () { return constants_2.expiryDays; } });
17
+ Object.defineProperty(exports, "outName", { enumerable: true, get: function () { return constants_2.outName; } });
18
+ Object.defineProperty(exports, "outStillName", { enumerable: true, get: function () { return constants_2.outStillName; } });
19
+ Object.defineProperty(exports, "overallProgressKey", { enumerable: true, get: function () { return constants_2.overallProgressKey; } });
20
+ Object.defineProperty(exports, "rendersPrefix", { enumerable: true, get: function () { return constants_2.rendersPrefix; } });
21
+ Object.defineProperty(exports, "serverlessCodecs", { enumerable: true, get: function () { return constants_2.serverlessCodecs; } });
20
22
  var get_or_create_bucket_1 = require("./get-or-create-bucket");
21
23
  Object.defineProperty(exports, "internalGetOrCreateBucket", { enumerable: true, get: function () { return get_or_create_bucket_1.internalGetOrCreateBucket; } });
24
+ var validate_download_behavior_1 = require("./validate-download-behavior");
25
+ Object.defineProperty(exports, "validateDownloadBehavior", { enumerable: true, get: function () { return validate_download_behavior_1.validateDownloadBehavior; } });
26
+ var validate_frames_per_function_1 = require("./validate-frames-per-function");
27
+ Object.defineProperty(exports, "validateFramesPerFunction", { enumerable: true, get: function () { return validate_frames_per_function_1.validateFramesPerFunction; } });
22
28
  var error_category_1 = require("./error-category");
23
29
  Object.defineProperty(exports, "errorIsOutOfSpaceError", { enumerable: true, get: function () { return error_category_1.errorIsOutOfSpaceError; } });
24
30
  Object.defineProperty(exports, "isBrowserCrashedError", { enumerable: true, get: function () { return error_category_1.isBrowserCrashedError; } });
25
31
  Object.defineProperty(exports, "isErrInsufficientResourcesErr", { enumerable: true, get: function () { return error_category_1.isErrInsufficientResourcesErr; } });
32
+ var calculate_chunk_times_1 = require("./calculate-chunk-times");
33
+ Object.defineProperty(exports, "calculateChunkTimes", { enumerable: true, get: function () { return calculate_chunk_times_1.calculateChunkTimes; } });
34
+ var constants_3 = require("./constants");
35
+ Object.defineProperty(exports, "MAX_FUNCTIONS_PER_RENDER", { enumerable: true, get: function () { return constants_3.MAX_FUNCTIONS_PER_RENDER; } });
36
+ var docs_url_1 = require("./docs-url");
37
+ Object.defineProperty(exports, "DOCS_URL", { enumerable: true, get: function () { return docs_url_1.DOCS_URL; } });
26
38
  var expected_out_name_1 = require("./expected-out-name");
27
39
  Object.defineProperty(exports, "getExpectedOutName", { enumerable: true, get: function () { return expected_out_name_1.getExpectedOutName; } });
40
+ var get_overall_progress_from_storage_1 = require("./get-overall-progress-from-storage");
41
+ Object.defineProperty(exports, "getOverallProgressFromStorage", { enumerable: true, get: function () { return get_overall_progress_from_storage_1.getOverallProgressFromStorage; } });
28
42
  var input_props_keys_1 = require("./input-props-keys");
29
43
  Object.defineProperty(exports, "inputPropsKey", { enumerable: true, get: function () { return input_props_keys_1.inputPropsKey; } });
30
44
  Object.defineProperty(exports, "resolvedPropsKey", { enumerable: true, get: function () { return input_props_keys_1.resolvedPropsKey; } });
31
45
  var make_bucket_name_1 = require("./make-bucket-name");
32
46
  Object.defineProperty(exports, "makeBucketName", { enumerable: true, get: function () { return make_bucket_name_1.makeBucketName; } });
47
+ var progress_1 = require("./progress");
48
+ Object.defineProperty(exports, "getProgress", { enumerable: true, get: function () { return progress_1.getProgress; } });
33
49
  var stream_to_string_1 = require("./stream-to-string");
34
50
  Object.defineProperty(exports, "streamToString", { enumerable: true, get: function () { return stream_to_string_1.streamToString; } });
35
51
  var streaming_1 = require("./streaming/streaming");
@@ -40,5 +56,7 @@ var truthy_1 = require("./truthy");
40
56
  Object.defineProperty(exports, "truthy", { enumerable: true, get: function () { return truthy_1.truthy; } });
41
57
  var validate_bucket_name_1 = require("./validate-bucket-name");
42
58
  Object.defineProperty(exports, "validateBucketName", { enumerable: true, get: function () { return validate_bucket_name_1.validateBucketName; } });
59
+ var validate_privacy_1 = require("./validate-privacy");
60
+ Object.defineProperty(exports, "validatePrivacy", { enumerable: true, get: function () { return validate_privacy_1.validatePrivacy; } });
43
61
  var validate_webhook_1 = require("./validate-webhook");
44
62
  Object.defineProperty(exports, "validateWebhook", { enumerable: true, get: function () { return validate_webhook_1.validateWebhook; } });
@@ -1,9 +1,13 @@
1
1
  import type { SerializedInputProps } from './constants';
2
2
  import type { ProviderSpecifics } from './provider-implementation';
3
- import type { CloudProvider } from './still';
3
+ import type { CloudProvider } from './types';
4
4
  type PropsType = 'input-props' | 'resolved-props';
5
5
  export declare const serializeOrThrow: (inputProps: Record<string, unknown>, propsType: PropsType) => string;
6
- export declare const getNeedsToUpload: (type: "still" | "video-or-audio", sizes: number[]) => boolean;
6
+ export declare const getNeedsToUpload: <Provider extends CloudProvider>({ type, sizes, providerSpecifics, }: {
7
+ type: "still" | "video-or-audio";
8
+ sizes: number[];
9
+ providerSpecifics: ProviderSpecifics<Provider>;
10
+ }) => boolean;
7
11
  export declare const compressInputProps: <Provider extends CloudProvider>({ stringifiedInputProps, region, userSpecifiedBucketName, propsType, needsToUpload, providerSpecifics, forcePathStyle, skipPutAcl, }: {
8
12
  stringifiedInputProps: string;
9
13
  region: Provider["region"];
@@ -26,13 +26,15 @@ const serializeOrThrow = (inputProps, propsType) => {
26
26
  }
27
27
  };
28
28
  exports.serializeOrThrow = serializeOrThrow;
29
- const getNeedsToUpload = (type, sizes) => {
29
+ const getNeedsToUpload = ({ type, sizes, providerSpecifics, }) => {
30
30
  const MARGIN = 5000 + validate_webhook_1.MAX_WEBHOOK_CUSTOM_DATA_SIZE;
31
- const MAX_INLINE_PAYLOAD_SIZE = (type === 'still' ? 5000000 : 200000) - MARGIN;
31
+ const MAX_INLINE_PAYLOAD_SIZE = (type === 'still'
32
+ ? providerSpecifics.getMaxStillInlinePayloadSize()
33
+ : providerSpecifics.getMaxNonInlinePayloadSizePerFunction()) - MARGIN;
32
34
  const sizesAlreadyUsed = sizes.reduce((a, b) => a + b);
33
35
  if (sizesAlreadyUsed > MAX_INLINE_PAYLOAD_SIZE) {
34
36
  // eslint-disable-next-line no-console
35
- console.warn(`Warning: The props are over ${Math.round(MAX_INLINE_PAYLOAD_SIZE / 1000)}KB (${Math.ceil(sizesAlreadyUsed / 1024)}KB) in size. Uploading them to S3 to circumvent AWS Lambda payload size, which may lead to slowdown.`);
37
+ console.warn(`Warning: The props are over ${Math.round(MAX_INLINE_PAYLOAD_SIZE / 1000)}KB (${Math.ceil(sizesAlreadyUsed / 1024)}KB) in size. Uploading them to ${providerSpecifics.serverStorageProductName()} to circumvent AWS Lambda payload size, which may lead to slowdown.`);
36
38
  return true;
37
39
  }
38
40
  return false;
@@ -1,8 +1,7 @@
1
1
  import type { AudioCodec, CancelSignal, LogLevel } from '@remotion/renderer';
2
2
  import { type ServerlessCodec } from './constants';
3
- import type { ProviderSpecifics } from './provider-implementation';
4
- import type { CloudProvider } from './types';
5
- export declare const concatVideos: <Provider extends CloudProvider>({ onProgress, numberOfFrames, codec, fps, numberOfGifLoops, files, outdir, audioCodec, audioBitrate, logLevel, framesPerLambda, binariesDirectory, cancelSignal, preferLossless, muted, metadata, providerSpecifics, }: {
3
+ import type { InsideFunctionSpecifics } from './provider-implementation';
4
+ export declare const concatVideos: ({ onProgress, numberOfFrames, codec, fps, numberOfGifLoops, files, outdir, audioCodec, audioBitrate, logLevel, framesPerLambda, binariesDirectory, cancelSignal, preferLossless, muted, metadata, insideFunctionSpecifics, }: {
6
5
  onProgress: (frames: number) => void;
7
6
  numberOfFrames: number;
8
7
  codec: ServerlessCodec;
@@ -19,7 +18,7 @@ export declare const concatVideos: <Provider extends CloudProvider>({ onProgress
19
18
  preferLossless: boolean;
20
19
  muted: boolean;
21
20
  metadata: Record<string, string> | null;
22
- providerSpecifics: ProviderSpecifics<Provider>;
21
+ insideFunctionSpecifics: InsideFunctionSpecifics;
23
22
  }) => Promise<{
24
23
  outfile: string;
25
24
  cleanupChunksProm: Promise<void>;
@@ -9,9 +9,9 @@ const node_fs_1 = __importDefault(require("node:fs"));
9
9
  const node_path_1 = require("node:path");
10
10
  const can_concat_seamlessly_1 = require("./can-concat-seamlessly");
11
11
  const constants_1 = require("./constants");
12
- const concatVideos = async ({ onProgress, numberOfFrames, codec, fps, numberOfGifLoops, files, outdir, audioCodec, audioBitrate, logLevel, framesPerLambda, binariesDirectory, cancelSignal, preferLossless, muted, metadata, providerSpecifics, }) => {
12
+ const concatVideos = async ({ onProgress, numberOfFrames, codec, fps, numberOfGifLoops, files, outdir, audioCodec, audioBitrate, logLevel, framesPerLambda, binariesDirectory, cancelSignal, preferLossless, muted, metadata, insideFunctionSpecifics, }) => {
13
13
  const outfile = (0, node_path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.REMOTION_CONCATED_TOKEN), `concat.${renderer_1.RenderInternals.getFileExtensionFromCodec(codec, audioCodec)}`);
14
- const combine = providerSpecifics.timer('Combine chunks', logLevel);
14
+ const combine = insideFunctionSpecifics.timer('Combine chunks', logLevel);
15
15
  const filelistDir = renderer_1.RenderInternals.tmpDir(constants_1.REMOTION_FILELIST_TOKEN);
16
16
  const chunkDurationInSeconds = framesPerLambda / fps;
17
17
  const resolvedAudioCodec = renderer_1.RenderInternals.resolveAudioCodec({
@@ -1,6 +1,8 @@
1
1
  import type { AudioCodec, ChromiumOptions, ColorSpace, FrameRange, LogLevel, PixelFormat, ProResProfile, StillImageFormat, ToOptions, VideoImageFormat, X264Preset } from '@remotion/renderer';
2
2
  import type { BrowserSafeApis } from '@remotion/renderer/client';
3
- import type { CloudProvider } from './still';
3
+ import type { ExpensiveChunk } from './most-expensive-chunks';
4
+ import type { ChunkRetry, CloudProvider, ReceivedArtifact } from './types';
5
+ import type { EnhancedErrorInfo } from './write-error-to-storage';
4
6
  export declare const expiryDays: {
5
7
  readonly '1-day': 1;
6
8
  readonly '3-days': 3;
@@ -122,7 +124,7 @@ export type ServerlessPayloads<Provider extends CloudProvider> = {
122
124
  type: ServerlessRoutines.launch;
123
125
  serveUrl: string;
124
126
  composition: string;
125
- framesPerLambda: number | null;
127
+ framesPerFunction: number | null;
126
128
  bucketName: string;
127
129
  inputProps: SerializedInputProps;
128
130
  renderId: string;
@@ -145,7 +147,7 @@ export type ServerlessPayloads<Provider extends CloudProvider> = {
145
147
  scale: number;
146
148
  everyNthFrame: number;
147
149
  numberOfGifLoops: number | null;
148
- concurrencyPerLambda: number;
150
+ concurrencyPerFunction: number;
149
151
  downloadBehavior: DownloadBehavior;
150
152
  muted: boolean;
151
153
  overwrite: boolean;
@@ -272,4 +274,38 @@ export declare const outName: (renderId: string, extension: string) => string;
272
274
  export declare const customOutName: <Provider extends CloudProvider>(renderId: string, bucketName: string, name: OutNameInput<Provider>) => OutNameOutput<Provider>;
273
275
  export declare const overallProgressKey: (renderId: string) => string;
274
276
  export declare const artifactName: (renderId: string, name: string) => string;
277
+ export type PostRenderData<Provider extends CloudProvider> = {
278
+ cost: AfterRenderCost;
279
+ outputFile: string;
280
+ outputSize: number;
281
+ renderSize: number;
282
+ timeToFinish: number;
283
+ timeToRenderFrames: number;
284
+ errors: EnhancedErrorInfo[];
285
+ startTime: number;
286
+ endTime: number;
287
+ filesCleanedUp: number;
288
+ timeToEncode: number;
289
+ timeToCleanUp: number;
290
+ timeToRenderChunks: number;
291
+ retriesInfo: ChunkRetry[];
292
+ mostExpensiveFrameRanges: ExpensiveChunk[] | undefined;
293
+ estimatedBillingDurationInMilliseconds: number;
294
+ deleteAfter: DeleteAfter | null;
295
+ timeToCombine: number | null;
296
+ artifactProgress: ReceivedArtifact<Provider>[];
297
+ };
298
+ export type AfterRenderCost = {
299
+ estimatedCost: number;
300
+ estimatedDisplayCost: string;
301
+ currency: string;
302
+ disclaimer: string;
303
+ };
304
+ export declare const CONCAT_FOLDER_TOKEN = "remotion-concat";
305
+ export declare const MAX_FUNCTIONS_PER_RENDER = 200;
306
+ export declare const MINIMUM_FRAMES_PER_LAMBDA = 4;
307
+ export declare const REMOTION_CONCATED_TOKEN = "remotion-concated-token";
308
+ export declare const REMOTION_FILELIST_TOKEN = "remotion-filelist";
309
+ export declare const RENDERER_PATH_TOKEN = "remotion-bucket";
310
+ export declare const COMMAND_NOT_FOUND = "Command not found";
275
311
  export {};
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.artifactName = exports.overallProgressKey = exports.customOutName = exports.outName = exports.outStillName = exports.rendersPrefix = exports.REMOTION_BUCKET_PREFIX = exports.serverlessCodecs = exports.ServerlessRoutines = exports.expiryDays = void 0;
3
+ exports.COMMAND_NOT_FOUND = exports.RENDERER_PATH_TOKEN = exports.REMOTION_FILELIST_TOKEN = exports.REMOTION_CONCATED_TOKEN = exports.MINIMUM_FRAMES_PER_LAMBDA = exports.MAX_FUNCTIONS_PER_RENDER = exports.CONCAT_FOLDER_TOKEN = exports.artifactName = exports.overallProgressKey = exports.customOutName = exports.outName = exports.outStillName = exports.rendersPrefix = exports.REMOTION_BUCKET_PREFIX = exports.serverlessCodecs = exports.ServerlessRoutines = exports.expiryDays = void 0;
4
4
  // Needs to be in sync with renderer/src/options/delete-after.ts#L7
5
5
  exports.expiryDays = {
6
6
  '1-day': 1,
@@ -56,3 +56,10 @@ const overallProgressKey = (renderId) => `${(0, exports.rendersPrefix)(renderId)
56
56
  exports.overallProgressKey = overallProgressKey;
57
57
  const artifactName = (renderId, name) => `${(0, exports.rendersPrefix)(renderId)}/artifacts/${name}`;
58
58
  exports.artifactName = artifactName;
59
+ exports.CONCAT_FOLDER_TOKEN = 'remotion-concat';
60
+ exports.MAX_FUNCTIONS_PER_RENDER = 200;
61
+ exports.MINIMUM_FRAMES_PER_LAMBDA = 4;
62
+ exports.REMOTION_CONCATED_TOKEN = 'remotion-concated-token';
63
+ exports.REMOTION_FILELIST_TOKEN = 'remotion-filelist';
64
+ exports.RENDERER_PATH_TOKEN = 'remotion-bucket';
65
+ exports.COMMAND_NOT_FOUND = 'Command not found';
@@ -4,7 +4,7 @@ import type { OverallRenderProgress } from './overall-render-progress';
4
4
  import type { ProviderSpecifics } from './provider-implementation';
5
5
  import type { RenderMetadata } from './render-metadata';
6
6
  import type { CloudProvider } from './types';
7
- import type { EnhancedErrorInfo } from './write-lambda-error';
7
+ import type { EnhancedErrorInfo } from './write-error-to-storage';
8
8
  export declare const createPostRenderData: <Provider extends CloudProvider>({ region, memorySizeInMb, renderMetadata, errorExplanations, timeToDelete, outputFile, timeToCombine, overallProgress, timeToFinish, outputSize, providerSpecifics, }: {
9
9
  region: Provider["region"];
10
10
  memorySizeInMb: number;
@@ -28,7 +28,7 @@ const createPostRenderData = ({ region, memorySizeInMb, renderMetadata, errorExp
28
28
  return {
29
29
  cost: {
30
30
  currency: 'USD',
31
- disclaimer: 'Estimated cost for lambda invocations only. Does not include cost for S3 storage and data transfer.',
31
+ disclaimer: 'Estimated cost for function invocations only. Does not include cost for storage and data transfer.',
32
32
  estimatedCost: cost,
33
33
  estimatedDisplayCost: `$${new Intl.NumberFormat('en-US', {
34
34
  currency: 'USD',
@@ -55,7 +55,7 @@ const createPostRenderData = ({ region, memorySizeInMb, renderMetadata, errorExp
55
55
  ? []
56
56
  : (0, most_expensive_chunks_1.getMostExpensiveChunks)({
57
57
  parsedTimings,
58
- framesPerLambda: renderMetadata.framesPerLambda,
58
+ framesPerFunction: renderMetadata.framesPerLambda,
59
59
  firstFrame: renderMetadata.frameRange[0],
60
60
  lastFrame: renderMetadata.frameRange[1],
61
61
  }),
@@ -1,11 +1,11 @@
1
1
  import type { ProviderSpecifics } from './provider-implementation';
2
2
  import type { RenderMetadata } from './render-metadata';
3
3
  import type { CloudProvider, ParsedTiming } from './types';
4
- export declare const estimatePriceFromBucket: <Provider extends CloudProvider>({ renderMetadata, memorySizeInMb, diskSizeInMb, lambdasInvoked, timings, region, providerSpecifics, }: {
4
+ export declare const estimatePriceFromMetadata: <Provider extends CloudProvider>({ renderMetadata, memorySizeInMb, diskSizeInMb, functionsInvoked, timings, region, providerSpecifics, }: {
5
5
  renderMetadata: RenderMetadata<Provider> | null;
6
6
  memorySizeInMb: number;
7
7
  diskSizeInMb: number;
8
- lambdasInvoked: number;
8
+ functionsInvoked: number;
9
9
  timings: ParsedTiming[];
10
10
  region: Provider["region"];
11
11
  providerSpecifics: ProviderSpecifics<Provider>;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.estimatePriceFromBucket = void 0;
3
+ exports.estimatePriceFromMetadata = void 0;
4
4
  const calculate_chunk_times_1 = require("./calculate-chunk-times");
5
- const estimatePriceFromBucket = ({ renderMetadata, memorySizeInMb, diskSizeInMb, lambdasInvoked, timings, region, providerSpecifics, }) => {
5
+ const estimatePriceFromMetadata = ({ renderMetadata, memorySizeInMb, diskSizeInMb, functionsInvoked, timings, region, providerSpecifics, }) => {
6
6
  var _a, _b;
7
7
  if (!renderMetadata) {
8
8
  return null;
@@ -23,9 +23,9 @@ const estimatePriceFromBucket = ({ renderMetadata, memorySizeInMb, diskSizeInMb,
23
23
  durationInMilliseconds: estimatedBillingDurationInMilliseconds,
24
24
  memorySizeInMb,
25
25
  diskSizeInMb,
26
- lambdasInvoked,
26
+ lambdasInvoked: functionsInvoked,
27
27
  })
28
28
  .toPrecision(5));
29
29
  return { accruedSoFar, estimatedBillingDurationInMilliseconds };
30
30
  };
31
- exports.estimatePriceFromBucket = estimatePriceFromBucket;
31
+ exports.estimatePriceFromMetadata = estimatePriceFromMetadata;
@@ -1,5 +1,5 @@
1
1
  import { type CustomCredentials, type OutNameInput, type OutNameOutput } from './constants';
2
2
  import type { RenderMetadata } from './render-metadata';
3
- import type { CloudProvider } from './still';
3
+ import type { CloudProvider } from './types';
4
4
  export declare const getCredentialsFromOutName: <Provider extends CloudProvider>(name: OutNameInput<Provider> | null) => CustomCredentials<Provider> | null;
5
5
  export declare const getExpectedOutName: <Provider extends CloudProvider>(renderMetadata: RenderMetadata<Provider>, bucketName: string, customCredentials: CustomCredentials<Provider> | null) => OutNameOutput<Provider>;
@@ -1,16 +1,9 @@
1
- import type { ChromiumOptions, LogLevel, openBrowser } from '@remotion/renderer';
1
+ import type { LogLevel, openBrowser } from '@remotion/renderer';
2
2
  import type { Await } from './await';
3
- import type { ProviderSpecifics } from './provider-implementation';
4
- import type { CloudProvider } from './still';
5
- type LaunchedBrowser = {
3
+ import type { GetBrowserInstance } from './provider-implementation';
4
+ export type LaunchedBrowser = {
6
5
  instance: Await<ReturnType<typeof openBrowser>>;
7
6
  configurationString: string;
8
7
  };
9
- export declare const forgetBrowserEventLoop: (logLevel: LogLevel) => void;
10
- export declare const getBrowserInstance: <Provider extends CloudProvider>({ logLevel, indent, chromiumOptions, providerSpecifics, }: {
11
- logLevel: LogLevel;
12
- indent: boolean;
13
- chromiumOptions: ChromiumOptions;
14
- providerSpecifics: ProviderSpecifics<Provider>;
15
- }) => Promise<LaunchedBrowser>;
16
- export {};
8
+ export declare const forgetBrowserEventLoopImplementation: (logLevel: LogLevel) => void;
9
+ export declare const getBrowserInstanceImplementation: GetBrowserInstance;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getBrowserInstance = exports.forgetBrowserEventLoop = void 0;
3
+ exports.getBrowserInstanceImplementation = exports.forgetBrowserEventLoopImplementation = void 0;
4
4
  const renderer_1 = require("@remotion/renderer");
5
5
  const version_1 = require("remotion/version");
6
6
  const makeConfigurationString = (options, logLevel) => {
@@ -31,13 +31,13 @@ const waitForLaunched = () => {
31
31
  check();
32
32
  });
33
33
  };
34
- const forgetBrowserEventLoop = (logLevel) => {
34
+ const forgetBrowserEventLoopImplementation = (logLevel) => {
35
35
  renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Keeping browser open for next invocation');
36
36
  _browserInstance === null || _browserInstance === void 0 ? void 0 : _browserInstance.instance.runner.forgetEventLoop();
37
37
  _browserInstance === null || _browserInstance === void 0 ? void 0 : _browserInstance.instance.runner.deleteBrowserCaches();
38
38
  };
39
- exports.forgetBrowserEventLoop = forgetBrowserEventLoop;
40
- const getBrowserInstance = async ({ logLevel, indent, chromiumOptions, providerSpecifics, }) => {
39
+ exports.forgetBrowserEventLoopImplementation = forgetBrowserEventLoopImplementation;
40
+ const getBrowserInstanceImplementation = async ({ logLevel, indent, chromiumOptions, providerSpecifics, insideFunctionSpecifics, }) => {
41
41
  var _a;
42
42
  const actualChromiumOptions = {
43
43
  ...chromiumOptions,
@@ -73,7 +73,7 @@ const getBrowserInstance = async ({ logLevel, indent, chromiumOptions, providerS
73
73
  instance.on('disconnected', () => {
74
74
  var _a;
75
75
  renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Browser disconnected or crashed.');
76
- (0, exports.forgetBrowserEventLoop)(logLevel);
76
+ insideFunctionSpecifics.forgetBrowserEventLoop(logLevel);
77
77
  (_a = _browserInstance === null || _browserInstance === void 0 ? void 0 : _browserInstance.instance) === null || _a === void 0 ? void 0 : _a.close(true, logLevel, indent).catch((err) => {
78
78
  renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Could not close browser instance', err);
79
79
  });
@@ -91,15 +91,16 @@ const getBrowserInstance = async ({ logLevel, indent, chromiumOptions, providerS
91
91
  _browserInstance.instance.runner.rememberEventLoop();
92
92
  await _browserInstance.instance.close(true, logLevel, indent);
93
93
  _browserInstance = null;
94
- return (0, exports.getBrowserInstance)({
94
+ return insideFunctionSpecifics.getBrowserInstance({
95
95
  logLevel,
96
96
  indent,
97
97
  chromiumOptions,
98
98
  providerSpecifics,
99
+ insideFunctionSpecifics,
99
100
  });
100
101
  }
101
102
  renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Warm function, reusing browser instance');
102
103
  _browserInstance.instance.runner.rememberEventLoop();
103
104
  return _browserInstance;
104
105
  };
105
- exports.getBrowserInstance = getBrowserInstance;
106
+ exports.getBrowserInstanceImplementation = getBrowserInstanceImplementation;
@@ -1,6 +1,6 @@
1
1
  import type { CustomCredentials, OutNameInput } from './constants';
2
2
  import type { RenderMetadata } from './render-metadata';
3
- import type { CloudProvider } from './still';
3
+ import type { CloudProvider } from './types';
4
4
  export declare const getCustomOutName: <Provider extends CloudProvider>({ renderMetadata, customCredentials, }: {
5
5
  renderMetadata: RenderMetadata<Provider>;
6
6
  customCredentials: CustomCredentials<Provider> | null;
@@ -1,6 +1,6 @@
1
1
  import type { CustomCredentials } from './constants';
2
2
  import type { ProviderSpecifics } from './provider-implementation';
3
- import type { CloudProvider } from './still';
3
+ import type { CloudProvider } from './types';
4
4
  type GetOrCreateBucketInputInner<Provider extends CloudProvider> = {
5
5
  region: Provider['region'];
6
6
  enableFolderExpiry: boolean | null;
@@ -0,0 +1,8 @@
1
+ import { type ServerlessPayload } from '../constants';
2
+ import type { InsideFunctionSpecifics } from '../provider-implementation';
3
+ import type { CloudProvider } from '../types';
4
+ export declare const checkVersionMismatch: <Provider extends CloudProvider>({ params, insideFunctionSpecifics, apiName, }: {
5
+ params: ServerlessPayload<Provider>;
6
+ insideFunctionSpecifics: InsideFunctionSpecifics;
7
+ apiName: string;
8
+ }) => void;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkVersionMismatch = void 0;
4
+ const version_1 = require("remotion/version");
5
+ const constants_1 = require("../constants");
6
+ const checkVersionMismatch = ({ params, insideFunctionSpecifics, apiName, }) => {
7
+ if (params.type === constants_1.ServerlessRoutines.info) {
8
+ return;
9
+ }
10
+ if (params.type === constants_1.ServerlessRoutines.renderer) {
11
+ return;
12
+ }
13
+ if (params.type === constants_1.ServerlessRoutines.launch) {
14
+ return;
15
+ }
16
+ if (params.version !== version_1.VERSION) {
17
+ if (!params.version) {
18
+ throw new Error(`Version mismatch: When calling ${apiName}, you called the function ${insideFunctionSpecifics.getCurrentFunctionName()} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call ${apiName}. See: https://www.remotion.dev/docs/lambda/upgrading`);
19
+ }
20
+ throw new Error(`Version mismatch: When calling ${apiName}, you passed ${insideFunctionSpecifics.getCurrentFunctionName()} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${params.version}. Deploy a new function and use it to call getRenderProgress(). See: https://www.remotion.dev/docs/lambda/upgrading`);
21
+ }
22
+ };
23
+ exports.checkVersionMismatch = checkVersionMismatch;
@@ -1,10 +1,15 @@
1
1
  import type { ServerlessPayload } from '../constants';
2
- import type { ProviderSpecifics } from '../provider-implementation';
2
+ import type { InsideFunctionSpecifics, ProviderSpecifics } from '../provider-implementation';
3
3
  import type { CloudProvider } from '../types';
4
4
  type Options = {
5
5
  expectedBucketOwner: string;
6
6
  };
7
- export declare const compositionsHandler: <Provider extends CloudProvider>(lambdaParams: ServerlessPayload<Provider>, options: Options, providerSpecifics: ProviderSpecifics<Provider>) => Promise<{
7
+ export declare const compositionsHandler: <Provider extends CloudProvider>({ params, options, providerSpecifics, insideFunctionSpecifics, }: {
8
+ params: ServerlessPayload<Provider>;
9
+ options: Options;
10
+ providerSpecifics: ProviderSpecifics<Provider>;
11
+ insideFunctionSpecifics: InsideFunctionSpecifics;
12
+ }) => Promise<{
8
13
  compositions: import("remotion").VideoConfig[];
9
14
  type: "success";
10
15
  }>;
@@ -2,37 +2,37 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.compositionsHandler = void 0;
4
4
  const renderer_1 = require("@remotion/renderer");
5
- const version_1 = require("remotion/version");
6
5
  const compress_props_1 = require("../compress-props");
7
6
  const constants_1 = require("../constants");
8
7
  const get_or_create_bucket_1 = require("../get-or-create-bucket");
9
- const compositionsHandler = async (lambdaParams, options, providerSpecifics) => {
8
+ const check_version_mismatch_1 = require("./check-version-mismatch");
9
+ const compositionsHandler = async ({ params, options, providerSpecifics, insideFunctionSpecifics, }) => {
10
10
  var _a;
11
- if (lambdaParams.type !== constants_1.ServerlessRoutines.compositions) {
11
+ if (params.type !== constants_1.ServerlessRoutines.compositions) {
12
12
  throw new TypeError('Expected info compositions');
13
13
  }
14
- if (lambdaParams.version !== version_1.VERSION) {
15
- if (!lambdaParams.version) {
16
- throw new Error(`Version mismatch: When calling getCompositionsOnLambda(), you called the function ${process.env.AWS_LAMBDA_FUNCTION_NAME} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call getCompositionsOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
17
- }
18
- throw new Error(`Version mismatch: When calling getCompositionsOnLambda(), you passed ${process.env.AWS_LAMBDA_FUNCTION_NAME} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${lambdaParams.version}. Deploy a new function and use it to call getCompositionsOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
19
- }
14
+ (0, check_version_mismatch_1.checkVersionMismatch)({
15
+ apiName: 'getCompositionsOnLambda()',
16
+ insideFunctionSpecifics,
17
+ params,
18
+ });
20
19
  try {
21
20
  const region = providerSpecifics.getCurrentRegionInFunction();
22
- const browserInstancePromise = providerSpecifics.getBrowserInstance({
23
- logLevel: lambdaParams.logLevel,
21
+ const browserInstancePromise = insideFunctionSpecifics.getBrowserInstance({
22
+ logLevel: params.logLevel,
24
23
  indent: false,
25
- chromiumOptions: lambdaParams.chromiumOptions,
24
+ chromiumOptions: params.chromiumOptions,
26
25
  providerSpecifics,
26
+ insideFunctionSpecifics,
27
27
  });
28
- const bucketNamePromise = lambdaParams.bucketName
29
- ? Promise.resolve(lambdaParams.bucketName)
28
+ const bucketNamePromise = params.bucketName
29
+ ? Promise.resolve(params.bucketName)
30
30
  : (0, get_or_create_bucket_1.internalGetOrCreateBucket)({
31
31
  region,
32
32
  enableFolderExpiry: null,
33
33
  customCredentials: null,
34
34
  providerSpecifics,
35
- forcePathStyle: lambdaParams.forcePathStyle,
35
+ forcePathStyle: params.forcePathStyle,
36
36
  skipPutAcl: false,
37
37
  }).then((b) => b.bucketName);
38
38
  const bucketName = await bucketNamePromise;
@@ -40,13 +40,13 @@ const compositionsHandler = async (lambdaParams, options, providerSpecifics) =>
40
40
  bucketName: await bucketNamePromise,
41
41
  expectedBucketOwner: options.expectedBucketOwner,
42
42
  region: providerSpecifics.getCurrentRegionInFunction(),
43
- serialized: lambdaParams.inputProps,
43
+ serialized: params.inputProps,
44
44
  propsType: 'input-props',
45
45
  providerSpecifics,
46
- forcePathStyle: lambdaParams.forcePathStyle,
46
+ forcePathStyle: params.forcePathStyle,
47
47
  });
48
48
  const realServeUrl = providerSpecifics.convertToServeUrl({
49
- urlOrId: lambdaParams.serveUrl,
49
+ urlOrId: params.serveUrl,
50
50
  region,
51
51
  bucketName,
52
52
  });
@@ -54,19 +54,19 @@ const compositionsHandler = async (lambdaParams, options, providerSpecifics) =>
54
54
  serveUrlOrWebpackUrl: realServeUrl,
55
55
  puppeteerInstance: (await browserInstancePromise).instance,
56
56
  serializedInputPropsWithCustomSchema,
57
- envVariables: (_a = lambdaParams.envVariables) !== null && _a !== void 0 ? _a : {},
58
- timeoutInMilliseconds: lambdaParams.timeoutInMilliseconds,
59
- chromiumOptions: lambdaParams.chromiumOptions,
57
+ envVariables: (_a = params.envVariables) !== null && _a !== void 0 ? _a : {},
58
+ timeoutInMilliseconds: params.timeoutInMilliseconds,
59
+ chromiumOptions: params.chromiumOptions,
60
60
  port: null,
61
61
  server: undefined,
62
- logLevel: lambdaParams.logLevel,
62
+ logLevel: params.logLevel,
63
63
  indent: false,
64
64
  browserExecutable: null,
65
65
  onBrowserLog: null,
66
- offthreadVideoCacheSizeInBytes: lambdaParams.offthreadVideoCacheSizeInBytes,
66
+ offthreadVideoCacheSizeInBytes: params.offthreadVideoCacheSizeInBytes,
67
67
  binariesDirectory: null,
68
68
  onBrowserDownload: () => {
69
- throw new Error('Should not download a browser in Lambda');
69
+ throw new Error('Should not download a browser in a function');
70
70
  },
71
71
  });
72
72
  return Promise.resolve({
@@ -75,7 +75,7 @@ const compositionsHandler = async (lambdaParams, options, providerSpecifics) =>
75
75
  });
76
76
  }
77
77
  finally {
78
- providerSpecifics.forgetBrowserEventLoop(lambdaParams.logLevel);
78
+ insideFunctionSpecifics.forgetBrowserEventLoop(params.logLevel);
79
79
  }
80
80
  };
81
81
  exports.compositionsHandler = compositionsHandler;