@remotion/serverless 4.0.245 → 4.0.247
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.
- package/.turbo/turbo-make.log +1 -1
- package/dist/best-frames-per-function-param.js +5 -5
- package/dist/client.d.ts +9 -0
- package/dist/client.js +30 -12
- package/dist/compress-props.d.ts +6 -2
- package/dist/compress-props.js +5 -3
- package/dist/concat-videos.d.ts +3 -4
- package/dist/concat-videos.js +2 -2
- package/dist/constants.d.ts +39 -3
- package/dist/constants.js +8 -1
- package/dist/create-post-render-data.d.ts +1 -1
- package/dist/create-post-render-data.js +2 -2
- package/dist/estimate-price-from-bucket.d.ts +2 -2
- package/dist/estimate-price-from-bucket.js +4 -4
- package/dist/expected-out-name.d.ts +1 -1
- package/dist/get-browser-instance.d.ts +5 -12
- package/dist/get-browser-instance.js +9 -7
- package/dist/get-custom-out-name.d.ts +1 -1
- package/dist/get-or-create-bucket.d.ts +1 -1
- package/dist/handlers/check-version-mismatch.d.ts +8 -0
- package/dist/handlers/check-version-mismatch.js +23 -0
- package/dist/handlers/compositions.d.ts +7 -2
- package/dist/handlers/compositions.js +26 -25
- package/dist/handlers/launch.d.ts +3 -2
- package/dist/handlers/launch.js +30 -31
- package/dist/handlers/progress.d.ts +6 -2
- package/dist/handlers/progress.js +23 -20
- package/dist/handlers/renderer.d.ts +3 -2
- package/dist/handlers/renderer.js +14 -11
- package/dist/handlers/start.d.ts +7 -2
- package/dist/handlers/start.js +10 -11
- package/dist/handlers/still.d.ts +2 -1
- package/dist/handlers/still.js +69 -67
- package/dist/index.d.ts +21 -5
- package/dist/index.js +54 -7
- package/dist/info.d.ts +1 -1
- package/dist/inner-routine.d.ts +22 -0
- package/dist/inner-routine.js +267 -0
- package/dist/inspect-error.d.ts +2 -2
- package/dist/invoke-webhook.d.ts +14 -11
- package/dist/invoke-webhook.js +1 -1
- package/dist/is-warm.d.ts +2 -0
- package/dist/is-warm.js +10 -0
- package/dist/make-bucket-name.d.ts +1 -1
- package/dist/make-timeout-error.d.ts +1 -1
- package/dist/make-timeout-message.js +3 -2
- package/dist/merge-chunks.d.ts +2 -1
- package/dist/merge-chunks.js +3 -3
- package/dist/most-expensive-chunks.d.ts +2 -2
- package/dist/most-expensive-chunks.js +1 -1
- package/dist/overall-render-progress.d.ts +3 -3
- package/dist/plan-frame-ranges.d.ts +2 -2
- package/dist/plan-frame-ranges.js +4 -4
- package/dist/print-logging-grep-helper.d.ts +4 -0
- package/dist/print-logging-grep-helper.js +12 -0
- package/dist/progress.js +2 -2
- package/dist/provider-implementation.d.ts +152 -3
- package/dist/render-metadata.d.ts +1 -1
- package/dist/render-progress.d.ts +1 -1
- package/dist/streaming/streaming.d.ts +6 -6
- package/dist/streaming/streaming.js +3 -3
- package/dist/types.d.ts +3 -2
- package/dist/validate-composition.d.ts +1 -1
- package/dist/validate-composition.js +12 -1
- package/dist/validate-frames-per-function.d.ts +2 -2
- package/dist/validate-frames-per-function.js +13 -13
- package/dist/{write-lambda-error.d.ts → write-error-to-storage.d.ts} +4 -4
- package/package.json +6 -5
- package/tsconfig.tsbuildinfo +1 -1
- package/.turbo/turbo-formatting.log +0 -7
- package/.turbo/turbo-lint.log +0 -11
- package/dist/compositions.d.ts +0 -11
- package/dist/compositions.js +0 -82
- package/dist/still.d.ts +0 -28
- package/dist/still.js +0 -2
- package/dist/validate-frames-per-lambda.d.ts +0 -4
- package/dist/validate-frames-per-lambda.js +0 -29
- /package/dist/{write-lambda-error.js → write-error-to-storage.js} +0 -0
package/.turbo/turbo-make.log
CHANGED
|
@@ -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 `
|
|
12
|
-
const
|
|
13
|
-
// Evenly distribute: For 21 frames over 2
|
|
14
|
-
const
|
|
15
|
-
return Math.ceil(frameCount /
|
|
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
|
|
10
|
-
Object.defineProperty(exports, "REMOTION_BUCKET_PREFIX", { enumerable: true, get: function () { return
|
|
11
|
-
Object.defineProperty(exports, "ServerlessRoutines", { enumerable: true, get: function () { return
|
|
12
|
-
Object.defineProperty(exports, "artifactName", { enumerable: true, get: function () { return
|
|
13
|
-
Object.defineProperty(exports, "customOutName", { enumerable: true, get: function () { return
|
|
14
|
-
Object.defineProperty(exports, "expiryDays", { enumerable: true, get: function () { return
|
|
15
|
-
Object.defineProperty(exports, "outName", { enumerable: true, get: function () { return
|
|
16
|
-
Object.defineProperty(exports, "outStillName", { enumerable: true, get: function () { return
|
|
17
|
-
Object.defineProperty(exports, "overallProgressKey", { enumerable: true, get: function () { return
|
|
18
|
-
Object.defineProperty(exports, "rendersPrefix", { enumerable: true, get: function () { return
|
|
19
|
-
Object.defineProperty(exports, "serverlessCodecs", { enumerable: true, get: function () { return
|
|
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; } });
|
package/dist/compress-props.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import type { SerializedInputProps } from './constants';
|
|
2
2
|
import type { ProviderSpecifics } from './provider-implementation';
|
|
3
|
-
import type { CloudProvider } from './
|
|
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:
|
|
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"];
|
package/dist/compress-props.js
CHANGED
|
@@ -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'
|
|
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
|
|
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;
|
package/dist/concat-videos.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { AudioCodec, CancelSignal, LogLevel } from '@remotion/renderer';
|
|
2
2
|
import { type ServerlessCodec } from './constants';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
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
|
-
|
|
21
|
+
insideFunctionSpecifics: InsideFunctionSpecifics;
|
|
23
22
|
}) => Promise<{
|
|
24
23
|
outfile: string;
|
|
25
24
|
cleanupChunksProm: Promise<void>;
|
package/dist/concat-videos.js
CHANGED
|
@@ -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,
|
|
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 =
|
|
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({
|
package/dist/constants.d.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
3
|
+
exports.estimatePriceFromMetadata = void 0;
|
|
4
4
|
const calculate_chunk_times_1 = require("./calculate-chunk-times");
|
|
5
|
-
const
|
|
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.
|
|
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 './
|
|
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 {
|
|
1
|
+
import type { LogLevel, openBrowser } from '@remotion/renderer';
|
|
2
2
|
import type { Await } from './await';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
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
|
|
10
|
-
export declare const
|
|
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.
|
|
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
|
|
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.
|
|
40
|
-
const
|
|
39
|
+
exports.forgetBrowserEventLoopImplementation = forgetBrowserEventLoopImplementation;
|
|
40
|
+
const getBrowserInstanceImplementation = async ({ logLevel, indent, chromiumOptions, providerSpecifics, insideFunctionSpecifics, }) => {
|
|
41
41
|
var _a;
|
|
42
42
|
const actualChromiumOptions = {
|
|
43
43
|
...chromiumOptions,
|
|
@@ -69,11 +69,12 @@ const getBrowserInstance = async ({ logLevel, indent, chromiumOptions, providerS
|
|
|
69
69
|
onBrowserDownload: () => {
|
|
70
70
|
throw new Error('Should not download a browser in serverless');
|
|
71
71
|
},
|
|
72
|
+
chromeMode: 'headless-shell',
|
|
72
73
|
});
|
|
73
74
|
instance.on('disconnected', () => {
|
|
74
75
|
var _a;
|
|
75
76
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Browser disconnected or crashed.');
|
|
76
|
-
|
|
77
|
+
insideFunctionSpecifics.forgetBrowserEventLoop(logLevel);
|
|
77
78
|
(_a = _browserInstance === null || _browserInstance === void 0 ? void 0 : _browserInstance.instance) === null || _a === void 0 ? void 0 : _a.close(true, logLevel, indent).catch((err) => {
|
|
78
79
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Could not close browser instance', err);
|
|
79
80
|
});
|
|
@@ -91,15 +92,16 @@ const getBrowserInstance = async ({ logLevel, indent, chromiumOptions, providerS
|
|
|
91
92
|
_browserInstance.instance.runner.rememberEventLoop();
|
|
92
93
|
await _browserInstance.instance.close(true, logLevel, indent);
|
|
93
94
|
_browserInstance = null;
|
|
94
|
-
return
|
|
95
|
+
return insideFunctionSpecifics.getBrowserInstance({
|
|
95
96
|
logLevel,
|
|
96
97
|
indent,
|
|
97
98
|
chromiumOptions,
|
|
98
99
|
providerSpecifics,
|
|
100
|
+
insideFunctionSpecifics,
|
|
99
101
|
});
|
|
100
102
|
}
|
|
101
103
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Warm function, reusing browser instance');
|
|
102
104
|
_browserInstance.instance.runner.rememberEventLoop();
|
|
103
105
|
return _browserInstance;
|
|
104
106
|
};
|
|
105
|
-
exports.
|
|
107
|
+
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 './
|
|
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 './
|
|
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>(
|
|
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
|
}>;
|