@remotion/lambda 4.0.161 → 4.0.164
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/dist/api/deploy-site.d.ts +3 -3
- package/dist/cli/args.d.ts +1 -0
- package/dist/cli/commands/functions/ls.js +3 -1
- package/dist/functions/helpers/get-current-region.d.ts +1 -1
- package/dist/functions/helpers/get-overall-progress-s3.d.ts +6 -0
- package/dist/functions/helpers/get-overall-progress-s3.js +23 -0
- package/dist/functions/helpers/merge-chunks.d.ts +0 -7
- package/dist/functions/helpers/merge-chunks.js +0 -6
- package/dist/functions/helpers/overall-render-progress.d.ts +27 -0
- package/dist/functions/helpers/overall-render-progress.js +75 -0
- package/dist/functions/helpers/stream-renderer.d.ts +11 -0
- package/dist/functions/helpers/stream-renderer.js +121 -0
- package/dist/functions/helpers/streaming-payloads.d.ts +3 -3
- package/dist/functions/index.js +0 -13
- package/dist/functions/launch.js +1 -68
- package/dist/functions/streaming/stream-writer.d.ts +6 -0
- package/dist/functions/streaming/stream-writer.js +35 -0
- package/dist/functions/streaming/streaming.d.ts +79 -0
- package/dist/functions/streaming/streaming.js +56 -0
- package/dist/internals.d.ts +6 -6
- package/dist/shared/constants.d.ts +1 -14
- package/dist/shared/constants.js +0 -1
- package/dist/shared/return-values.d.ts +0 -2
- package/package.json +8 -8
- package/remotionlambda-arm64.zip +0 -0
|
@@ -59,11 +59,11 @@ export declare const internalDeploySite: (args_0: MandatoryParameters & {
|
|
|
59
59
|
getValue: ({ commandLine }: {
|
|
60
60
|
commandLine: Record<string, unknown>;
|
|
61
61
|
}) => {
|
|
62
|
-
value: "error" | "
|
|
62
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
63
63
|
source: string;
|
|
64
64
|
};
|
|
65
|
-
setConfig: (newLogLevel: "error" | "
|
|
66
|
-
type: "error" | "
|
|
65
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
66
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
67
67
|
};
|
|
68
68
|
readonly throwIfSiteExists: {
|
|
69
69
|
cliFlag: string;
|
package/dist/cli/args.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ type LambdaCommandLineOptions = {
|
|
|
36
36
|
[BrowserSafeApis.options.folderExpiryOption.cliFlag]: boolean | undefined;
|
|
37
37
|
['vpc-subnet-ids']: string | undefined;
|
|
38
38
|
['vpc-security-group-ids']: string | undefined;
|
|
39
|
+
['compatible-only']: boolean;
|
|
39
40
|
};
|
|
40
41
|
export declare const parsedLambdaCli: LambdaCommandLineOptions & import("minimist").ParsedArgs;
|
|
41
42
|
export declare const forceFlagProvided: boolean;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.functionsLsCommand = exports.FUNCTIONS_LS_SUBCOMMAND = void 0;
|
|
4
4
|
const cli_1 = require("@remotion/cli");
|
|
5
5
|
const get_functions_1 = require("../../../api/get-functions");
|
|
6
|
+
const args_1 = require("../../args");
|
|
6
7
|
const get_aws_region_1 = require("../../get-aws-region");
|
|
7
8
|
const NAME_COLS = 70;
|
|
8
9
|
const MEMORY_COLS = 15;
|
|
@@ -21,9 +22,10 @@ const functionsLsCommand = async (logLevel) => {
|
|
|
21
22
|
indent: false,
|
|
22
23
|
});
|
|
23
24
|
fetchingOutput.update('Getting functions...', false);
|
|
25
|
+
const compatibleOnly = args_1.parsedLambdaCli['compatible-only'] || false;
|
|
24
26
|
const functions = await (0, get_functions_1.getFunctions)({
|
|
25
27
|
region,
|
|
26
|
-
compatibleOnly
|
|
28
|
+
compatibleOnly,
|
|
27
29
|
});
|
|
28
30
|
if (cli_1.CliInternals.quietFlagProvided()) {
|
|
29
31
|
if (functions.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getCurrentRegionInFunction: () => "eu-central-1" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "eu-north-1" | "us-east-1" | "us-east-2" | "us-west-1" | "us-west-2" | "
|
|
1
|
+
export declare const getCurrentRegionInFunction: () => "eu-central-1" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "eu-south-1" | "eu-north-1" | "us-east-1" | "us-east-2" | "us-west-1" | "us-west-2" | "af-south-1" | "ap-south-1" | "ap-east-1" | "ap-southeast-1" | "ap-southeast-2" | "ap-northeast-1" | "ap-northeast-2" | "ap-northeast-3" | "ca-central-1" | "me-south-1" | "sa-east-1";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { OverallRenderProgress } from './overall-render-progress';
|
|
2
|
+
export declare const getOverallProgressS3: ({ renderId, bucketName, expectedBucketOwner, }: {
|
|
3
|
+
renderId: string;
|
|
4
|
+
expectedBucketOwner: string;
|
|
5
|
+
bucketName: string;
|
|
6
|
+
}) => Promise<OverallRenderProgress | null>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOverallProgressS3 = void 0;
|
|
4
|
+
const defaults_1 = require("../../defaults");
|
|
5
|
+
const stream_to_string_1 = require("../../shared/stream-to-string");
|
|
6
|
+
const get_current_region_1 = require("./get-current-region");
|
|
7
|
+
const io_1 = require("./io");
|
|
8
|
+
const getOverallProgressS3 = async ({ renderId, bucketName, expectedBucketOwner, }) => {
|
|
9
|
+
try {
|
|
10
|
+
const Body = await (0, io_1.lambdaReadFile)({
|
|
11
|
+
bucketName,
|
|
12
|
+
key: (0, defaults_1.overallProgressKey)(renderId),
|
|
13
|
+
expectedBucketOwner,
|
|
14
|
+
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
15
|
+
});
|
|
16
|
+
const str = await (0, stream_to_string_1.streamToString)(Body);
|
|
17
|
+
return JSON.parse(str);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
exports.getOverallProgressS3 = getOverallProgressS3;
|
|
@@ -3,12 +3,6 @@ import type { CustomCredentials } from '../../shared/aws-clients';
|
|
|
3
3
|
import type { PostRenderData, Privacy, RenderMetadata, SerializedInputProps } from '../../shared/constants';
|
|
4
4
|
import type { DownloadBehavior } from '../../shared/content-disposition-header';
|
|
5
5
|
import type { LambdaCodec } from '../../shared/validate-lambda-codec';
|
|
6
|
-
export type OnAllChunksAvailable = (options: {
|
|
7
|
-
inputProps: SerializedInputProps;
|
|
8
|
-
serializedResolvedProps: SerializedInputProps;
|
|
9
|
-
framesPerLambda: number;
|
|
10
|
-
compositionStart: number;
|
|
11
|
-
}) => void;
|
|
12
6
|
export declare const mergeChunksAndFinishRender: (options: {
|
|
13
7
|
bucketName: string;
|
|
14
8
|
renderId: string;
|
|
@@ -27,7 +21,6 @@ export declare const mergeChunksAndFinishRender: (options: {
|
|
|
27
21
|
inputProps: SerializedInputProps;
|
|
28
22
|
serializedResolvedProps: SerializedInputProps;
|
|
29
23
|
renderMetadata: RenderMetadata;
|
|
30
|
-
onAllChunks: OnAllChunksAvailable;
|
|
31
24
|
audioBitrate: string | null;
|
|
32
25
|
logLevel: LogLevel;
|
|
33
26
|
framesPerLambda: number;
|
|
@@ -94,12 +94,6 @@ const mergeChunksAndFinishRender = async (options) => {
|
|
|
94
94
|
onErrors,
|
|
95
95
|
logLevel: options.logLevel,
|
|
96
96
|
});
|
|
97
|
-
options.onAllChunks({
|
|
98
|
-
inputProps: options.inputProps,
|
|
99
|
-
serializedResolvedProps: options.serializedResolvedProps,
|
|
100
|
-
framesPerLambda: options.framesPerLambda,
|
|
101
|
-
compositionStart: options.compositionStart,
|
|
102
|
-
});
|
|
103
97
|
const encodingStart = Date.now();
|
|
104
98
|
if (options.renderMetadata.type === 'still') {
|
|
105
99
|
throw new Error('Cannot merge stills');
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AwsRegion } from '../../client';
|
|
2
|
+
export type OverallRenderProgress = {
|
|
3
|
+
chunks: number[];
|
|
4
|
+
framesRendered: number;
|
|
5
|
+
framesEncoded: number;
|
|
6
|
+
combinedFrames: number;
|
|
7
|
+
timeToCombine: number | null;
|
|
8
|
+
};
|
|
9
|
+
export type OverallProgressHelper = {
|
|
10
|
+
upload: () => Promise<void>;
|
|
11
|
+
finishUploading: () => void;
|
|
12
|
+
setFrames: ({ encoded, rendered, index, }: {
|
|
13
|
+
rendered: number;
|
|
14
|
+
encoded: number;
|
|
15
|
+
index: number;
|
|
16
|
+
}) => void;
|
|
17
|
+
addChunkCompleted: (chunkIndex: number) => void;
|
|
18
|
+
setCombinedFrames: (framesEncoded: number) => void;
|
|
19
|
+
setTimeToCombine: (timeToCombine: number) => void;
|
|
20
|
+
};
|
|
21
|
+
export declare const makeOverallRenderProgress: ({ renderId, bucketName, expectedBucketOwner, region, expectedChunks, }: {
|
|
22
|
+
renderId: string;
|
|
23
|
+
bucketName: string;
|
|
24
|
+
expectedBucketOwner: string;
|
|
25
|
+
region: AwsRegion;
|
|
26
|
+
expectedChunks: number;
|
|
27
|
+
}) => OverallProgressHelper;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeOverallRenderProgress = void 0;
|
|
4
|
+
const constants_1 = require("../../shared/constants");
|
|
5
|
+
const io_1 = require("./io");
|
|
6
|
+
const makeOverallRenderProgress = ({ renderId, bucketName, expectedBucketOwner, region, expectedChunks, }) => {
|
|
7
|
+
const framesRendered = new Array(expectedChunks).fill(0);
|
|
8
|
+
const framesEncoded = new Array(expectedChunks).fill(0);
|
|
9
|
+
const renderProgress = {
|
|
10
|
+
chunks: [],
|
|
11
|
+
framesRendered: 0,
|
|
12
|
+
framesEncoded: 0,
|
|
13
|
+
combinedFrames: 0,
|
|
14
|
+
timeToCombine: null,
|
|
15
|
+
};
|
|
16
|
+
let currentUploadPromise = null;
|
|
17
|
+
let lastUpload = null;
|
|
18
|
+
let stopUploading = false;
|
|
19
|
+
const finishUploading = () => {
|
|
20
|
+
stopUploading = true;
|
|
21
|
+
};
|
|
22
|
+
// TODO: What if upload fails?
|
|
23
|
+
const upload = async () => {
|
|
24
|
+
if (stopUploading) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (lastUpload === JSON.stringify(renderProgress)) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (currentUploadPromise) {
|
|
31
|
+
currentUploadPromise = currentUploadPromise.then(() => {
|
|
32
|
+
currentUploadPromise = null;
|
|
33
|
+
return upload();
|
|
34
|
+
});
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
currentUploadPromise = (0, io_1.lambdaWriteFile)({
|
|
38
|
+
body: JSON.stringify(renderProgress),
|
|
39
|
+
bucketName,
|
|
40
|
+
customCredentials: null,
|
|
41
|
+
downloadBehavior: null,
|
|
42
|
+
expectedBucketOwner,
|
|
43
|
+
key: (0, constants_1.overallProgressKey)(renderId),
|
|
44
|
+
privacy: 'private',
|
|
45
|
+
region,
|
|
46
|
+
});
|
|
47
|
+
await currentUploadPromise;
|
|
48
|
+
lastUpload = JSON.stringify(renderProgress);
|
|
49
|
+
currentUploadPromise = null;
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
upload,
|
|
53
|
+
finishUploading,
|
|
54
|
+
setFrames: ({ encoded, rendered, index, }) => {
|
|
55
|
+
framesRendered[index] = rendered;
|
|
56
|
+
framesEncoded[index] = encoded;
|
|
57
|
+
renderProgress.framesRendered = framesRendered.reduce((a, b) => a + b, 0);
|
|
58
|
+
renderProgress.framesEncoded = framesEncoded.reduce((a, b) => a + b, 0);
|
|
59
|
+
upload();
|
|
60
|
+
},
|
|
61
|
+
addChunkCompleted: (chunkIndex) => {
|
|
62
|
+
renderProgress.chunks.push(chunkIndex);
|
|
63
|
+
upload();
|
|
64
|
+
},
|
|
65
|
+
setCombinedFrames: (frames) => {
|
|
66
|
+
renderProgress.combinedFrames = frames;
|
|
67
|
+
upload();
|
|
68
|
+
},
|
|
69
|
+
setTimeToCombine: (timeToCombine) => {
|
|
70
|
+
renderProgress.timeToCombine = timeToCombine;
|
|
71
|
+
upload();
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
exports.makeOverallRenderProgress = makeOverallRenderProgress;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LogLevel } from '@remotion/renderer';
|
|
2
|
+
import type { LambdaPayload } from '../../defaults';
|
|
3
|
+
import type { OverallProgressHelper } from './overall-render-progress';
|
|
4
|
+
export declare const streamRendererFunctionWithRetry: ({ payload, files, functionName, outdir, overallProgress, logLevel, }: {
|
|
5
|
+
payload: LambdaPayload;
|
|
6
|
+
functionName: string;
|
|
7
|
+
outdir: string;
|
|
8
|
+
overallProgress: OverallProgressHelper;
|
|
9
|
+
files: string[];
|
|
10
|
+
logLevel: LogLevel;
|
|
11
|
+
}) => Promise<unknown>;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.streamRendererFunctionWithRetry = void 0;
|
|
4
|
+
const renderer_1 = require("@remotion/renderer");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const defaults_1 = require("../../defaults");
|
|
8
|
+
const call_lambda_1 = require("../../shared/call-lambda");
|
|
9
|
+
const get_current_region_1 = require("./get-current-region");
|
|
10
|
+
const streamRenderer = ({ payload, functionName, outdir, overallProgress, files, logLevel, }) => {
|
|
11
|
+
if (payload.type !== defaults_1.LambdaRoutines.renderer) {
|
|
12
|
+
throw new Error('Expected renderer type');
|
|
13
|
+
}
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
const receivedStreamingPayload = ({ message }) => {
|
|
16
|
+
if (message.type === 'frames-rendered') {
|
|
17
|
+
overallProgress.setFrames({
|
|
18
|
+
index: payload.chunk,
|
|
19
|
+
encoded: message.payload.encoded,
|
|
20
|
+
rendered: message.payload.rendered,
|
|
21
|
+
});
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (message.type === 'video-chunk-rendered') {
|
|
25
|
+
const filename = (0, path_1.join)(outdir, (0, defaults_1.chunkKeyForIndex)({
|
|
26
|
+
index: payload.chunk,
|
|
27
|
+
type: 'video',
|
|
28
|
+
}));
|
|
29
|
+
(0, fs_1.writeFileSync)(filename, message.payload);
|
|
30
|
+
files.push(filename);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (message.type === 'audio-chunk-rendered') {
|
|
34
|
+
const filename = (0, path_1.join)(outdir, (0, defaults_1.chunkKeyForIndex)({
|
|
35
|
+
index: payload.chunk,
|
|
36
|
+
type: 'audio',
|
|
37
|
+
}));
|
|
38
|
+
(0, fs_1.writeFileSync)(filename, message.payload);
|
|
39
|
+
files.push(filename);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (message.type === 'chunk-complete') {
|
|
43
|
+
overallProgress.addChunkCompleted(payload.chunk);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (message.type === 'error-occurred') {
|
|
47
|
+
overallProgress.setFrames({
|
|
48
|
+
encoded: 0,
|
|
49
|
+
index: payload.chunk,
|
|
50
|
+
rendered: 0,
|
|
51
|
+
});
|
|
52
|
+
renderer_1.RenderInternals.Log.error({
|
|
53
|
+
indent: false,
|
|
54
|
+
logLevel,
|
|
55
|
+
}, `Renderer function of chunk ${payload.chunk} failed with error: ${message.payload.error}`);
|
|
56
|
+
renderer_1.RenderInternals.Log.error({
|
|
57
|
+
indent: false,
|
|
58
|
+
logLevel,
|
|
59
|
+
}, `Will retry chunk = ${message.payload.shouldRetry}`);
|
|
60
|
+
resolve({
|
|
61
|
+
type: 'error',
|
|
62
|
+
error: message.payload.error,
|
|
63
|
+
shouldRetry: message.payload.shouldRetry,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`Unknown message type ${message.type}`);
|
|
67
|
+
};
|
|
68
|
+
(0, call_lambda_1.callLambdaWithStreaming)({
|
|
69
|
+
functionName,
|
|
70
|
+
payload,
|
|
71
|
+
retriesRemaining: 1,
|
|
72
|
+
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
73
|
+
timeoutInTest: 12000,
|
|
74
|
+
type: defaults_1.LambdaRoutines.renderer,
|
|
75
|
+
receivedStreamingPayload,
|
|
76
|
+
})
|
|
77
|
+
.then(() => {
|
|
78
|
+
resolve({
|
|
79
|
+
type: 'success',
|
|
80
|
+
});
|
|
81
|
+
})
|
|
82
|
+
.catch((err) => {
|
|
83
|
+
resolve({
|
|
84
|
+
type: 'error',
|
|
85
|
+
error: err.stack,
|
|
86
|
+
shouldRetry: false,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
const streamRendererFunctionWithRetry = async ({ payload, files, functionName, outdir, overallProgress, logLevel, }) => {
|
|
92
|
+
if (payload.type !== defaults_1.LambdaRoutines.renderer) {
|
|
93
|
+
throw new Error('Expected renderer type');
|
|
94
|
+
}
|
|
95
|
+
const result = await streamRenderer({
|
|
96
|
+
files,
|
|
97
|
+
functionName,
|
|
98
|
+
outdir,
|
|
99
|
+
overallProgress,
|
|
100
|
+
payload,
|
|
101
|
+
logLevel,
|
|
102
|
+
});
|
|
103
|
+
if (result.type === 'error') {
|
|
104
|
+
if (!result.shouldRetry) {
|
|
105
|
+
throw result.error;
|
|
106
|
+
}
|
|
107
|
+
return (0, exports.streamRendererFunctionWithRetry)({
|
|
108
|
+
files,
|
|
109
|
+
functionName,
|
|
110
|
+
outdir,
|
|
111
|
+
overallProgress,
|
|
112
|
+
payload: {
|
|
113
|
+
...payload,
|
|
114
|
+
attempt: payload.attempt + 1,
|
|
115
|
+
retriesLeft: payload.retriesLeft - 1,
|
|
116
|
+
},
|
|
117
|
+
logLevel,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
exports.streamRendererFunctionWithRetry = streamRendererFunctionWithRetry;
|
|
@@ -4,16 +4,16 @@ declare const streamingPayloadSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObje
|
|
|
4
4
|
type: z.ZodLiteral<"render-id-determined">;
|
|
5
5
|
renderId: z.ZodString;
|
|
6
6
|
}, "strip", z.ZodTypeAny, {
|
|
7
|
-
renderId: string;
|
|
8
7
|
type: "render-id-determined";
|
|
9
|
-
}, {
|
|
10
8
|
renderId: string;
|
|
9
|
+
}, {
|
|
11
10
|
type: "render-id-determined";
|
|
11
|
+
renderId: string;
|
|
12
12
|
}>]>;
|
|
13
13
|
export type StreamingPayloads = z.infer<typeof streamingPayloadSchema>;
|
|
14
14
|
export declare const isStreamingPayload: (str: string) => false | {
|
|
15
|
-
renderId: string;
|
|
16
15
|
type: "render-id-determined";
|
|
16
|
+
renderId: string;
|
|
17
17
|
};
|
|
18
18
|
export declare const sendProgressEvent: (responseStream: ResponseStream, payload: StreamingPayloads) => void;
|
|
19
19
|
export {};
|
package/dist/functions/index.js
CHANGED
|
@@ -13,7 +13,6 @@ const streamify_response_1 = require("./helpers/streamify-response");
|
|
|
13
13
|
const streaming_payloads_1 = require("./helpers/streaming-payloads");
|
|
14
14
|
const info_1 = require("./info");
|
|
15
15
|
const launch_1 = require("./launch");
|
|
16
|
-
const merge_1 = require("./merge");
|
|
17
16
|
const progress_1 = require("./progress");
|
|
18
17
|
const renderer_2 = require("./renderer");
|
|
19
18
|
const start_1 = require("./start");
|
|
@@ -124,18 +123,6 @@ const innerHandler = async (params, responseStream, context) => {
|
|
|
124
123
|
});
|
|
125
124
|
return;
|
|
126
125
|
}
|
|
127
|
-
if (params.type === constants_1.LambdaRoutines.merge) {
|
|
128
|
-
(0, print_cloudwatch_helper_1.printCloudwatchHelper)(constants_1.LambdaRoutines.merge, {
|
|
129
|
-
renderId: params.renderId,
|
|
130
|
-
isWarm,
|
|
131
|
-
}, params.logLevel);
|
|
132
|
-
const response = await (0, merge_1.mergeHandler)(params, {
|
|
133
|
-
expectedBucketOwner: currentUserId,
|
|
134
|
-
});
|
|
135
|
-
responseStream.write(JSON.stringify(response), () => {
|
|
136
|
-
responseStream.end();
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
126
|
if (params.type === constants_1.LambdaRoutines.compositions) {
|
|
140
127
|
(0, print_cloudwatch_helper_1.printCloudwatchHelper)(constants_1.LambdaRoutines.compositions, {
|
|
141
128
|
isWarm,
|
package/dist/functions/launch.js
CHANGED
|
@@ -9,7 +9,6 @@ const aws_clients_1 = require("../shared/aws-clients");
|
|
|
9
9
|
const compress_props_1 = require("../shared/compress-props");
|
|
10
10
|
const constants_1 = require("../shared/constants");
|
|
11
11
|
const docs_url_1 = require("../shared/docs-url");
|
|
12
|
-
const get_aws_urls_1 = require("../shared/get-aws-urls");
|
|
13
12
|
const invoke_webhook_1 = require("../shared/invoke-webhook");
|
|
14
13
|
const validate_1 = require("../shared/validate");
|
|
15
14
|
const validate_frames_per_lambda_1 = require("../shared/validate-frames-per-lambda");
|
|
@@ -54,7 +53,7 @@ const callFunctionWithRetry = async ({ payload, retries, functionName, }) => {
|
|
|
54
53
|
throw err;
|
|
55
54
|
}
|
|
56
55
|
};
|
|
57
|
-
const innerLaunchHandler = async ({ functionName, params, options,
|
|
56
|
+
const innerLaunchHandler = async ({ functionName, params, options, }) => {
|
|
58
57
|
var _a, _b, _c, _d, _e;
|
|
59
58
|
if (params.type !== constants_1.LambdaRoutines.launch) {
|
|
60
59
|
throw new Error('Expected launch type');
|
|
@@ -288,7 +287,6 @@ const innerLaunchHandler = async ({ functionName, params, options, onAllChunksAv
|
|
|
288
287
|
inputProps: params.inputProps,
|
|
289
288
|
serializedResolvedProps,
|
|
290
289
|
renderMetadata,
|
|
291
|
-
onAllChunks: onAllChunksAvailable,
|
|
292
290
|
audioBitrate: params.audioBitrate,
|
|
293
291
|
logLevel: params.logLevel,
|
|
294
292
|
framesPerLambda,
|
|
@@ -303,7 +301,6 @@ const launchHandler = async (params, options) => {
|
|
|
303
301
|
if (params.type !== constants_1.LambdaRoutines.launch) {
|
|
304
302
|
throw new Error('Expected launch type');
|
|
305
303
|
}
|
|
306
|
-
let allChunksAvailable = null;
|
|
307
304
|
const functionName = (_a = params.rendererFunctionName) !== null && _a !== void 0 ? _a : process.env.AWS_LAMBDA_FUNCTION_NAME;
|
|
308
305
|
const logOptions = {
|
|
309
306
|
indent: false,
|
|
@@ -311,62 +308,6 @@ const launchHandler = async (params, options) => {
|
|
|
311
308
|
};
|
|
312
309
|
const onTimeout = async () => {
|
|
313
310
|
var _a;
|
|
314
|
-
if (allChunksAvailable) {
|
|
315
|
-
renderer_1.RenderInternals.Log.info(logOptions, 'All chunks are available, but the function is about to time out.');
|
|
316
|
-
renderer_1.RenderInternals.Log.info(logOptions, 'Spawning another function to merge chunks.');
|
|
317
|
-
try {
|
|
318
|
-
await callFunctionWithRetry({
|
|
319
|
-
functionName,
|
|
320
|
-
payload: {
|
|
321
|
-
type: constants_1.LambdaRoutines.merge,
|
|
322
|
-
renderId: params.renderId,
|
|
323
|
-
bucketName: params.bucketName,
|
|
324
|
-
outName: params.outName,
|
|
325
|
-
serializedResolvedProps: allChunksAvailable.serializedResolvedProps,
|
|
326
|
-
inputProps: allChunksAvailable.inputProps,
|
|
327
|
-
logLevel: params.logLevel,
|
|
328
|
-
framesPerLambda: allChunksAvailable.framesPerLambda,
|
|
329
|
-
preferLossless: params.preferLossless,
|
|
330
|
-
compositionStart: allChunksAvailable.compositionStart,
|
|
331
|
-
},
|
|
332
|
-
retries: 2,
|
|
333
|
-
});
|
|
334
|
-
renderer_1.RenderInternals.Log.info(logOptions, `New function successfully invoked. See the CloudWatch logs for it:`);
|
|
335
|
-
renderer_1.RenderInternals.Log.info(logOptions, (0, get_aws_urls_1.getCloudwatchMethodUrl)({
|
|
336
|
-
functionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
|
|
337
|
-
method: constants_1.LambdaRoutines.merge,
|
|
338
|
-
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
339
|
-
rendererFunctionName: params.rendererFunctionName,
|
|
340
|
-
renderId: params.renderId,
|
|
341
|
-
}));
|
|
342
|
-
renderer_1.RenderInternals.Log.info(logOptions, 'This function will now time out.');
|
|
343
|
-
}
|
|
344
|
-
catch (err) {
|
|
345
|
-
if (process.env.NODE_ENV === 'test') {
|
|
346
|
-
throw err;
|
|
347
|
-
}
|
|
348
|
-
renderer_1.RenderInternals.Log.error({ indent: false, logLevel: params.logLevel }, 'Failed to invoke additional function to merge videos:');
|
|
349
|
-
renderer_1.RenderInternals.Log.error({ indent: false, logLevel: params.logLevel }, err);
|
|
350
|
-
await (0, write_lambda_error_1.writeLambdaError)({
|
|
351
|
-
bucketName: params.bucketName,
|
|
352
|
-
errorInfo: {
|
|
353
|
-
type: 'stitcher',
|
|
354
|
-
message: err.message,
|
|
355
|
-
name: err.name,
|
|
356
|
-
stack: err.stack,
|
|
357
|
-
tmpDir: null,
|
|
358
|
-
frame: 0,
|
|
359
|
-
chunk: 0,
|
|
360
|
-
isFatal: false,
|
|
361
|
-
attempt: 1,
|
|
362
|
-
willRetry: false,
|
|
363
|
-
totalAttempts: 1,
|
|
364
|
-
},
|
|
365
|
-
renderId: params.renderId,
|
|
366
|
-
expectedBucketOwner: options.expectedBucketOwner,
|
|
367
|
-
});
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
311
|
if (!params.webhook) {
|
|
371
312
|
return;
|
|
372
313
|
}
|
|
@@ -422,14 +363,6 @@ const launchHandler = async (params, options) => {
|
|
|
422
363
|
functionName,
|
|
423
364
|
params,
|
|
424
365
|
options,
|
|
425
|
-
onAllChunksAvailable: ({ inputProps, serializedResolvedProps, framesPerLambda, compositionStart, }) => {
|
|
426
|
-
allChunksAvailable = {
|
|
427
|
-
inputProps,
|
|
428
|
-
serializedResolvedProps,
|
|
429
|
-
framesPerLambda,
|
|
430
|
-
compositionStart,
|
|
431
|
-
};
|
|
432
|
-
},
|
|
433
366
|
});
|
|
434
367
|
clearTimeout(webhookDueToTimeout);
|
|
435
368
|
if (!params.webhook || webhookInvoked) {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ResponseStream } from '../helpers/streamify-response';
|
|
2
|
+
export type ResponseStreamWriter = {
|
|
3
|
+
write: (message: Uint8Array) => Promise<void>;
|
|
4
|
+
end: () => Promise<void>;
|
|
5
|
+
};
|
|
6
|
+
export declare const streamWriter: (responseStream: ResponseStream) => ResponseStreamWriter;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.streamWriter = void 0;
|
|
4
|
+
// Ensures that the previous write is finished before the next one is started
|
|
5
|
+
// Genius solution by ChatGPT
|
|
6
|
+
const streamWriter = (responseStream) => {
|
|
7
|
+
let promiseChain = Promise.resolve();
|
|
8
|
+
const write = (message) => {
|
|
9
|
+
promiseChain = promiseChain.then(() => {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
responseStream.write(message, (err) => {
|
|
12
|
+
if (err) {
|
|
13
|
+
reject(err);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
resolve();
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
return promiseChain;
|
|
22
|
+
};
|
|
23
|
+
const end = () => {
|
|
24
|
+
promiseChain = promiseChain.then(() => {
|
|
25
|
+
return new Promise((resolve) => {
|
|
26
|
+
responseStream.end(() => {
|
|
27
|
+
resolve();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
return promiseChain;
|
|
32
|
+
};
|
|
33
|
+
return { write, end };
|
|
34
|
+
};
|
|
35
|
+
exports.streamWriter = streamWriter;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { RenderStillLambdaResponsePayload } from '../still';
|
|
3
|
+
declare const framesRendered: "frames-rendered";
|
|
4
|
+
declare const errorOccurred: "error-occurred";
|
|
5
|
+
declare const renderIdDetermined: "render-id-determined";
|
|
6
|
+
declare const videoChunkRendered: "video-chunk-rendered";
|
|
7
|
+
declare const audioChunkRendered: "audio-chunk-rendered";
|
|
8
|
+
declare const chunkComplete: "chunk-complete";
|
|
9
|
+
declare const stillRendered: "still-rendered";
|
|
10
|
+
declare const messageTypes: {
|
|
11
|
+
readonly '1': {
|
|
12
|
+
readonly type: "frames-rendered";
|
|
13
|
+
};
|
|
14
|
+
readonly '2': {
|
|
15
|
+
readonly type: "error-occurred";
|
|
16
|
+
};
|
|
17
|
+
readonly '3': {
|
|
18
|
+
readonly type: "render-id-determined";
|
|
19
|
+
};
|
|
20
|
+
readonly '4': {
|
|
21
|
+
readonly type: "video-chunk-rendered";
|
|
22
|
+
};
|
|
23
|
+
readonly '5': {
|
|
24
|
+
readonly type: "audio-chunk-rendered";
|
|
25
|
+
};
|
|
26
|
+
readonly '6': {
|
|
27
|
+
readonly type: "still-rendered";
|
|
28
|
+
};
|
|
29
|
+
readonly '7': {
|
|
30
|
+
readonly type: "chunk-complete";
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export type MessageTypeId = keyof typeof messageTypes;
|
|
34
|
+
type MessageType = (typeof messageTypes)[MessageTypeId]['type'];
|
|
35
|
+
export declare const formatMap: {
|
|
36
|
+
[key in MessageType]: 'json' | 'binary';
|
|
37
|
+
};
|
|
38
|
+
export type StreamingPayload = {
|
|
39
|
+
type: typeof framesRendered;
|
|
40
|
+
payload: {
|
|
41
|
+
rendered: number;
|
|
42
|
+
encoded: number;
|
|
43
|
+
};
|
|
44
|
+
} | {
|
|
45
|
+
type: typeof videoChunkRendered;
|
|
46
|
+
payload: Buffer;
|
|
47
|
+
} | {
|
|
48
|
+
type: typeof audioChunkRendered;
|
|
49
|
+
payload: Buffer;
|
|
50
|
+
} | {
|
|
51
|
+
type: typeof errorOccurred;
|
|
52
|
+
payload: {
|
|
53
|
+
error: string;
|
|
54
|
+
shouldRetry: boolean;
|
|
55
|
+
};
|
|
56
|
+
} | {
|
|
57
|
+
type: typeof renderIdDetermined;
|
|
58
|
+
payload: {
|
|
59
|
+
renderId: string;
|
|
60
|
+
};
|
|
61
|
+
} | {
|
|
62
|
+
type: typeof stillRendered;
|
|
63
|
+
payload: RenderStillLambdaResponsePayload;
|
|
64
|
+
} | {
|
|
65
|
+
type: typeof chunkComplete;
|
|
66
|
+
payload: {};
|
|
67
|
+
};
|
|
68
|
+
export declare const messageTypeIdToMessageType: (messageTypeId: MessageTypeId) => MessageType;
|
|
69
|
+
export declare const messageTypeToMessageId: (messageType: MessageType) => MessageTypeId;
|
|
70
|
+
export type StreamingMessage = {
|
|
71
|
+
successType: 'error' | 'success';
|
|
72
|
+
message: StreamingPayload;
|
|
73
|
+
};
|
|
74
|
+
export type OnMessage = (options: StreamingMessage) => void;
|
|
75
|
+
export type OnStream = (payload: StreamingPayload) => void;
|
|
76
|
+
export declare const makeStreamPayload: ({ message }: {
|
|
77
|
+
message: StreamingPayload;
|
|
78
|
+
}) => Uint8Array;
|
|
79
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeStreamPayload = exports.messageTypeToMessageId = exports.messageTypeIdToMessageType = exports.formatMap = void 0;
|
|
4
|
+
const client_1 = require("@remotion/renderer/client");
|
|
5
|
+
const framesRendered = 'frames-rendered';
|
|
6
|
+
const errorOccurred = 'error-occurred';
|
|
7
|
+
const renderIdDetermined = 'render-id-determined';
|
|
8
|
+
const videoChunkRendered = 'video-chunk-rendered';
|
|
9
|
+
const audioChunkRendered = 'audio-chunk-rendered';
|
|
10
|
+
const chunkComplete = 'chunk-complete';
|
|
11
|
+
const stillRendered = 'still-rendered';
|
|
12
|
+
const messageTypes = {
|
|
13
|
+
'1': { type: framesRendered },
|
|
14
|
+
'2': { type: errorOccurred },
|
|
15
|
+
'3': { type: renderIdDetermined },
|
|
16
|
+
'4': { type: videoChunkRendered },
|
|
17
|
+
'5': { type: audioChunkRendered },
|
|
18
|
+
'6': { type: stillRendered },
|
|
19
|
+
'7': { type: chunkComplete },
|
|
20
|
+
};
|
|
21
|
+
exports.formatMap = {
|
|
22
|
+
[framesRendered]: 'json',
|
|
23
|
+
[errorOccurred]: 'json',
|
|
24
|
+
[renderIdDetermined]: 'json',
|
|
25
|
+
[videoChunkRendered]: 'binary',
|
|
26
|
+
[audioChunkRendered]: 'binary',
|
|
27
|
+
[stillRendered]: 'json',
|
|
28
|
+
[chunkComplete]: 'json',
|
|
29
|
+
};
|
|
30
|
+
const messageTypeIdToMessageType = (messageTypeId) => {
|
|
31
|
+
const types = messageTypes[messageTypeId];
|
|
32
|
+
if (!types) {
|
|
33
|
+
throw new Error(`Unknown message type id ${messageTypeId}`);
|
|
34
|
+
}
|
|
35
|
+
return types.type;
|
|
36
|
+
};
|
|
37
|
+
exports.messageTypeIdToMessageType = messageTypeIdToMessageType;
|
|
38
|
+
const messageTypeToMessageId = (messageType) => {
|
|
39
|
+
const id = Object.keys(messageTypes).find((key) => messageTypes[key].type === messageType);
|
|
40
|
+
if (!id) {
|
|
41
|
+
throw new Error(`Unknown message type ${messageType}`);
|
|
42
|
+
}
|
|
43
|
+
return id;
|
|
44
|
+
};
|
|
45
|
+
exports.messageTypeToMessageId = messageTypeToMessageId;
|
|
46
|
+
const makeStreamPayload = ({ message }) => {
|
|
47
|
+
const body = exports.formatMap[message.type] === 'json'
|
|
48
|
+
? Buffer.from(JSON.stringify(message.payload))
|
|
49
|
+
: message.payload;
|
|
50
|
+
return client_1.BrowserSafeApis.makeStreamPayloadMessage({
|
|
51
|
+
body,
|
|
52
|
+
nonce: (0, exports.messageTypeToMessageId)(message.type),
|
|
53
|
+
status: 0,
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
exports.makeStreamPayload = makeStreamPayload;
|
package/dist/internals.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const LambdaInternals: {
|
|
2
|
-
executeCommand: (args: string[], remotionRoot: string, logLevel: "error" | "
|
|
2
|
+
executeCommand: (args: string[], remotionRoot: string, logLevel: "error" | "verbose" | "info" | "warn") => Promise<void>;
|
|
3
3
|
makeLambdaRenderMediaPayload: ({ rendererFunctionName, frameRange, framesPerLambda, forceBucketName: bucketName, codec, composition, serveUrl, imageFormat, inputProps, region, crf, envVariables, pixelFormat, proResProfile, x264Preset, maxRetries, privacy, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, everyNthFrame, numberOfGifLoops, audioBitrate, concurrencyPerLambda, audioCodec, forceHeight, forceWidth, webhook, videoBitrate, encodingMaxRate, encodingBufferSize, downloadBehavior, muted, overwrite, jpegQuality, offthreadVideoCacheSizeInBytes, deleteAfter, colorSpace, preferLossless, }: import("./api/make-lambda-payload").InnerRenderMediaOnLambdaInput) => Promise<import("./defaults").LambdaStartPayload>;
|
|
4
4
|
getRenderProgressPayload: ({ bucketName, renderId, s3OutputProvider, logLevel, }: import(".").GetRenderProgressInput) => import("./defaults").LambdaStatusPayload;
|
|
5
5
|
makeLambdaRenderStillPayload: ({ serveUrl, inputProps, imageFormat, envVariables, quality, jpegQuality, region, maxRetries, composition, privacy, frame, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, downloadBehavior, forceHeight, forceWidth, forceBucketName, offthreadVideoCacheSizeInBytes, deleteAfter, }: import("./api/render-still-on-lambda").RenderStillOnLambdaNonNullInput) => Promise<{
|
|
@@ -14,7 +14,7 @@ export declare const LambdaInternals: {
|
|
|
14
14
|
maxRetries: number;
|
|
15
15
|
frame: number;
|
|
16
16
|
privacy: import("./defaults").Privacy;
|
|
17
|
-
logLevel: "error" | "
|
|
17
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
18
18
|
outName: import("./defaults").OutNameInput | null;
|
|
19
19
|
timeoutInMilliseconds: number;
|
|
20
20
|
chromiumOptions: import("@remotion/renderer").ChromiumOptions;
|
|
@@ -30,7 +30,7 @@ export declare const LambdaInternals: {
|
|
|
30
30
|
internalDeploySite: (args_0: {
|
|
31
31
|
entryPoint: string;
|
|
32
32
|
bucketName: string;
|
|
33
|
-
region: "eu-central-1" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "eu-north-1" | "us-east-1" | "us-east-2" | "us-west-1" | "us-west-2" | "
|
|
33
|
+
region: "eu-central-1" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "eu-south-1" | "eu-north-1" | "us-east-1" | "us-east-2" | "us-west-1" | "us-west-2" | "af-south-1" | "ap-south-1" | "ap-east-1" | "ap-southeast-1" | "ap-southeast-2" | "ap-northeast-1" | "ap-northeast-2" | "ap-northeast-3" | "ca-central-1" | "me-south-1" | "sa-east-1";
|
|
34
34
|
} & {
|
|
35
35
|
siteName: string;
|
|
36
36
|
options: {
|
|
@@ -56,11 +56,11 @@ export declare const LambdaInternals: {
|
|
|
56
56
|
getValue: ({ commandLine }: {
|
|
57
57
|
commandLine: Record<string, unknown>;
|
|
58
58
|
}) => {
|
|
59
|
-
value: "error" | "
|
|
59
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
60
60
|
source: string;
|
|
61
61
|
};
|
|
62
|
-
setConfig: (newLogLevel: "error" | "
|
|
63
|
-
type: "error" | "
|
|
62
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
63
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
64
64
|
};
|
|
65
65
|
readonly throwIfSiteExists: {
|
|
66
66
|
cliFlag: string;
|
|
@@ -96,8 +96,7 @@ export declare enum LambdaRoutines {
|
|
|
96
96
|
status = "status",
|
|
97
97
|
renderer = "renderer",
|
|
98
98
|
still = "still",
|
|
99
|
-
compositions = "compositions"
|
|
100
|
-
merge = "merge"
|
|
99
|
+
compositions = "compositions"
|
|
101
100
|
}
|
|
102
101
|
type Prettify<T> = {
|
|
103
102
|
[K in keyof T]: T[K];
|
|
@@ -301,18 +300,6 @@ export type LambdaPayloads = {
|
|
|
301
300
|
bucketName: string | null;
|
|
302
301
|
offthreadVideoCacheSizeInBytes: number | null;
|
|
303
302
|
};
|
|
304
|
-
merge: {
|
|
305
|
-
type: LambdaRoutines.merge;
|
|
306
|
-
bucketName: string;
|
|
307
|
-
renderId: string;
|
|
308
|
-
outName: OutNameInput | null;
|
|
309
|
-
inputProps: SerializedInputProps;
|
|
310
|
-
serializedResolvedProps: SerializedInputProps;
|
|
311
|
-
logLevel: LogLevel;
|
|
312
|
-
framesPerLambda: number;
|
|
313
|
-
preferLossless: boolean;
|
|
314
|
-
compositionStart: number;
|
|
315
|
-
};
|
|
316
303
|
};
|
|
317
304
|
export type LambdaPayload = LambdaPayloads[LambdaRoutines];
|
|
318
305
|
export type EncodingProgress = {
|
package/dist/shared/constants.js
CHANGED
|
@@ -102,6 +102,5 @@ var LambdaRoutines;
|
|
|
102
102
|
LambdaRoutines["renderer"] = "renderer";
|
|
103
103
|
LambdaRoutines["still"] = "still";
|
|
104
104
|
LambdaRoutines["compositions"] = "compositions";
|
|
105
|
-
LambdaRoutines["merge"] = "merge";
|
|
106
105
|
})(LambdaRoutines || (exports.LambdaRoutines = LambdaRoutines = {}));
|
|
107
106
|
exports.LAMBDA_CONCURRENCY_LIMIT_QUOTA = 'L-B99A9384';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { compositionsHandler } from '../functions/compositions';
|
|
2
2
|
import type { infoHandler } from '../functions/info';
|
|
3
3
|
import type { launchHandler } from '../functions/launch';
|
|
4
|
-
import type { mergeHandler } from '../functions/merge';
|
|
5
4
|
import type { progressHandler } from '../functions/progress';
|
|
6
5
|
import type { rendererHandler } from '../functions/renderer';
|
|
7
6
|
import type { startHandler } from '../functions/start';
|
|
@@ -20,5 +19,4 @@ export interface LambdaReturnValues {
|
|
|
20
19
|
[LambdaRoutines.info]: ReturnType<typeof infoHandler>;
|
|
21
20
|
[LambdaRoutines.still]: ReturnType<typeof stillHandler>;
|
|
22
21
|
[LambdaRoutines.compositions]: ReturnType<typeof compositionsHandler>;
|
|
23
|
-
[LambdaRoutines.merge]: ReturnType<typeof mergeHandler>;
|
|
24
22
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/lambda",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.164",
|
|
4
4
|
"description": "Distributed renderer for Remotion based on AWS Lambda",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"@aws-sdk/s3-request-presigner": "3.382.0",
|
|
26
26
|
"mime-types": "2.1.34",
|
|
27
27
|
"zod": "3.22.3",
|
|
28
|
-
"@remotion/bundler": "4.0.
|
|
29
|
-
"@remotion/
|
|
30
|
-
"@remotion/
|
|
31
|
-
"remotion": "4.0.
|
|
28
|
+
"@remotion/bundler": "4.0.164",
|
|
29
|
+
"@remotion/renderer": "4.0.164",
|
|
30
|
+
"@remotion/cli": "4.0.164",
|
|
31
|
+
"remotion": "4.0.164"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@jonny/eslint-config": "3.0.281",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"ts-node": "10.9.2",
|
|
45
45
|
"vitest": "0.31.1",
|
|
46
46
|
"zip-lib": "^0.7.2",
|
|
47
|
-
"@remotion/bundler": "4.0.
|
|
48
|
-
"@remotion/compositor-linux-arm64-gnu": "4.0.
|
|
47
|
+
"@remotion/bundler": "4.0.164",
|
|
48
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.164"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
|
-
"@remotion/bundler": "4.0.
|
|
51
|
+
"@remotion/bundler": "4.0.164"
|
|
52
52
|
},
|
|
53
53
|
"publishConfig": {
|
|
54
54
|
"access": "public"
|
package/remotionlambda-arm64.zip
CHANGED
|
Binary file
|