@remotion/lambda 4.0.200 → 4.0.201
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 +2 -0
- package/dist/api/deploy-site.js +10 -2
- package/dist/cli/commands/sites/create.js +19 -1
- package/dist/cli/helpers/progress-bar.d.ts +5 -0
- package/dist/cli/helpers/progress-bar.js +19 -1
- package/dist/functions/helpers/check-if-render-exists.d.ts +3 -0
- package/dist/functions/helpers/check-if-render-exists.js +15 -0
- package/dist/functions/helpers/delete-chunks.d.ts +9 -0
- package/dist/functions/helpers/delete-chunks.js +25 -0
- package/dist/functions/helpers/expected-out-name.d.ts +1 -1
- package/dist/functions/helpers/get-browser-instance.d.ts +2 -3
- package/dist/functions/helpers/get-browser-instance.js +4 -3
- package/dist/functions/helpers/get-cleanup-progress.d.ts +10 -0
- package/dist/functions/helpers/get-cleanup-progress.js +35 -0
- package/dist/functions/helpers/get-custom-out-name.d.ts +1 -1
- package/dist/functions/helpers/get-encoding-metadata.d.ts +7 -0
- package/dist/functions/helpers/get-encoding-metadata.js +15 -0
- package/dist/functions/helpers/get-encoding-progress-step-size.d.ts +1 -0
- package/dist/functions/helpers/get-encoding-progress-step-size.js +7 -0
- package/dist/functions/helpers/get-files-to-delete.d.ts +10 -0
- package/dist/functions/helpers/get-files-to-delete.js +52 -0
- package/dist/functions/helpers/get-final-encoding-status.d.ts +6 -0
- package/dist/functions/helpers/get-final-encoding-status.js +18 -0
- package/dist/functions/helpers/get-folder-size.d.ts +1 -0
- package/dist/functions/helpers/get-folder-size.js +8 -0
- package/dist/functions/helpers/get-lambdas-invoked-stats.d.ts +8 -0
- package/dist/functions/helpers/get-lambdas-invoked-stats.js +14 -0
- package/dist/functions/helpers/get-post-render-data.d.ts +8 -0
- package/dist/functions/helpers/get-post-render-data.js +22 -0
- package/dist/functions/helpers/get-render-metadata.d.ts +8 -0
- package/dist/functions/helpers/get-render-metadata.js +17 -0
- package/dist/functions/helpers/get-rendered-frames-progress.d.ts +8 -0
- package/dist/functions/helpers/get-rendered-frames-progress.js +37 -0
- package/dist/functions/helpers/get-time-to-finish.d.ts +5 -0
- package/dist/functions/helpers/get-time-to-finish.js +13 -0
- package/dist/functions/helpers/io.d.ts +33 -3
- package/dist/functions/helpers/io.js +104 -3
- package/dist/functions/helpers/print-cloudwatch-helper.d.ts +1 -1
- package/dist/functions/helpers/print-cloudwatch-helper.js +3 -3
- package/dist/functions/helpers/streaming-payloads.d.ts +19 -0
- package/dist/functions/helpers/streaming-payloads.js +25 -0
- package/dist/functions/helpers/write-lambda-error.d.ts +3 -2
- package/dist/functions/helpers/write-lambda-error.js +2 -3
- package/dist/functions/helpers/write-post-render-data.d.ts +9 -0
- package/dist/functions/helpers/write-post-render-data.js +18 -0
- package/dist/functions/merge.d.ts +9 -0
- package/dist/functions/merge.js +61 -0
- package/dist/internals.d.ts +1 -0
- package/dist/shared/__mocks__/read-dir.js +2 -2
- package/dist/shared/chunk-progress.d.ts +9 -0
- package/dist/shared/chunk-progress.js +2034 -0
- package/dist/shared/compress-props.d.ts +6 -8
- package/dist/shared/compress-props.js +14 -11
- package/dist/shared/get-etag.d.ts +1 -1
- package/dist/shared/get-etag.js +33 -12
- package/dist/shared/get-s3-operations.d.ts +2 -1
- package/dist/shared/get-s3-operations.js +38 -20
- package/dist/shared/parse-chunk-key.d.ts +5 -0
- package/dist/shared/parse-chunk-key.js +15 -0
- package/dist/shared/parse-lambda-initialized-key.d.ts +5 -0
- package/dist/shared/parse-lambda-initialized-key.js +15 -0
- package/dist/shared/read-dir.d.ts +6 -5
- package/dist/shared/read-dir.js +9 -6
- package/dist/shared/serialize-props.d.ts +14 -0
- package/dist/shared/serialize-props.js +36 -0
- package/package.json +11 -11
- package/remotionlambda-arm64.zip +0 -0
- package/dist/functions/provider-implementation.d.ts +0 -0
- package/dist/functions/provider-implementation.js +0 -1
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
1
3
|
import type { _Object } from '@aws-sdk/client-s3';
|
|
2
|
-
import type { CustomCredentials } from '@remotion/serverless/client';
|
|
3
|
-
import type {
|
|
4
|
+
import type { AwsRegion, CustomCredentials, DownloadBehavior, Privacy } from '@remotion/serverless/client';
|
|
5
|
+
import type { ReadStream } from 'node:fs';
|
|
6
|
+
import type { Readable } from 'stream';
|
|
4
7
|
export type LambdaLSInput = {
|
|
5
8
|
bucketName: string;
|
|
6
9
|
prefix: string;
|
|
@@ -9,12 +12,39 @@ export type LambdaLSInput = {
|
|
|
9
12
|
continuationToken?: string;
|
|
10
13
|
};
|
|
11
14
|
export type LambdaLsReturnType = Promise<_Object[]>;
|
|
15
|
+
export declare const lambdaLs: ({ bucketName, prefix, region, expectedBucketOwner, continuationToken, }: LambdaLSInput) => LambdaLsReturnType;
|
|
16
|
+
export declare const lambdaDeleteFile: ({ bucketName, key, region, customCredentials, }: {
|
|
17
|
+
region: AwsRegion;
|
|
18
|
+
bucketName: string;
|
|
19
|
+
key: string;
|
|
20
|
+
customCredentials: CustomCredentials | null;
|
|
21
|
+
}) => Promise<void>;
|
|
22
|
+
type LambdaWriteFileInput = {
|
|
23
|
+
bucketName: string;
|
|
24
|
+
key: string;
|
|
25
|
+
body: ReadStream | string | Uint8Array;
|
|
26
|
+
region: AwsRegion;
|
|
27
|
+
privacy: Privacy;
|
|
28
|
+
expectedBucketOwner: string | null;
|
|
29
|
+
downloadBehavior: DownloadBehavior | null;
|
|
30
|
+
customCredentials: CustomCredentials | null;
|
|
31
|
+
};
|
|
32
|
+
export declare const lambdaWriteFile: (params: LambdaWriteFileInput & {
|
|
33
|
+
retries?: number;
|
|
34
|
+
}) => Promise<void>;
|
|
35
|
+
export declare const lambdaReadFile: ({ bucketName, key, region, expectedBucketOwner, }: {
|
|
36
|
+
bucketName: string;
|
|
37
|
+
key: string;
|
|
38
|
+
region: AwsRegion;
|
|
39
|
+
expectedBucketOwner: string;
|
|
40
|
+
}) => Promise<Readable>;
|
|
12
41
|
export declare const lambdaHeadCommand: ({ bucketName, key, region, customCredentials, }: {
|
|
13
42
|
bucketName: string;
|
|
14
43
|
key: string;
|
|
15
44
|
region: AwsRegion;
|
|
16
|
-
customCredentials: CustomCredentials
|
|
45
|
+
customCredentials: CustomCredentials | null;
|
|
17
46
|
}) => Promise<{
|
|
18
47
|
LastModified?: Date | undefined;
|
|
19
48
|
ContentLength?: number | undefined;
|
|
20
49
|
}>;
|
|
50
|
+
export {};
|
|
@@ -1,10 +1,111 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.lambdaHeadCommand = void 0;
|
|
6
|
+
exports.lambdaHeadCommand = exports.lambdaReadFile = exports.lambdaWriteFile = exports.lambdaDeleteFile = exports.lambdaLs = void 0;
|
|
4
7
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
|
-
const
|
|
8
|
+
const mime_types_1 = __importDefault(require("mime-types"));
|
|
9
|
+
const aws_clients_1 = require("../../shared/aws-clients");
|
|
10
|
+
const content_disposition_header_1 = require("../../shared/content-disposition-header");
|
|
11
|
+
const lambdaLs = async ({ bucketName, prefix, region, expectedBucketOwner, continuationToken, }) => {
|
|
12
|
+
var _a, _b, _c;
|
|
13
|
+
try {
|
|
14
|
+
const list = await (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.ListObjectsV2Command({
|
|
15
|
+
Bucket: bucketName,
|
|
16
|
+
Prefix: prefix,
|
|
17
|
+
ExpectedBucketOwner: expectedBucketOwner !== null && expectedBucketOwner !== void 0 ? expectedBucketOwner : undefined,
|
|
18
|
+
ContinuationToken: continuationToken,
|
|
19
|
+
}));
|
|
20
|
+
if (list.NextContinuationToken) {
|
|
21
|
+
return [
|
|
22
|
+
...((_a = list.Contents) !== null && _a !== void 0 ? _a : []),
|
|
23
|
+
...(await (0, exports.lambdaLs)({
|
|
24
|
+
bucketName,
|
|
25
|
+
prefix,
|
|
26
|
+
expectedBucketOwner,
|
|
27
|
+
region,
|
|
28
|
+
continuationToken: list.NextContinuationToken,
|
|
29
|
+
})),
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
return (_b = list.Contents) !== null && _b !== void 0 ? _b : [];
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
if (!expectedBucketOwner) {
|
|
36
|
+
throw err;
|
|
37
|
+
}
|
|
38
|
+
// Prevent from accessing a foreign bucket, retry without ExpectedBucketOwner and see if it works. If it works then it's an owner mismatch.
|
|
39
|
+
if ((_c = err.stack) === null || _c === void 0 ? void 0 : _c.includes('AccessDenied')) {
|
|
40
|
+
await (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.ListObjectsV2Command({
|
|
41
|
+
Bucket: bucketName,
|
|
42
|
+
Prefix: prefix,
|
|
43
|
+
}));
|
|
44
|
+
throw new Error(`Bucket owner mismatch: Expected the bucket ${bucketName} to be owned by you (AWS Account ID: ${expectedBucketOwner}) but it's not the case. Did you accidentially specify the wrong bucket?`);
|
|
45
|
+
}
|
|
46
|
+
throw err;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.lambdaLs = lambdaLs;
|
|
50
|
+
const lambdaDeleteFile = async ({ bucketName, key, region, customCredentials, }) => {
|
|
51
|
+
await (0, aws_clients_1.getS3Client)(region, customCredentials).send(new client_s3_1.DeleteObjectCommand({
|
|
52
|
+
Bucket: bucketName,
|
|
53
|
+
Key: key,
|
|
54
|
+
}));
|
|
55
|
+
};
|
|
56
|
+
exports.lambdaDeleteFile = lambdaDeleteFile;
|
|
57
|
+
const tryLambdaWriteFile = async ({ bucketName, key, body, region, privacy, expectedBucketOwner, downloadBehavior, customCredentials, }) => {
|
|
58
|
+
await (0, aws_clients_1.getS3Client)(region, customCredentials).send(new client_s3_1.PutObjectCommand({
|
|
59
|
+
Bucket: bucketName,
|
|
60
|
+
Key: key,
|
|
61
|
+
Body: body,
|
|
62
|
+
ACL: privacy === 'no-acl'
|
|
63
|
+
? undefined
|
|
64
|
+
: privacy === 'private'
|
|
65
|
+
? 'private'
|
|
66
|
+
: 'public-read',
|
|
67
|
+
ExpectedBucketOwner: customCredentials
|
|
68
|
+
? undefined
|
|
69
|
+
: expectedBucketOwner !== null && expectedBucketOwner !== void 0 ? expectedBucketOwner : undefined,
|
|
70
|
+
ContentType: mime_types_1.default.lookup(key) || 'application/octet-stream',
|
|
71
|
+
ContentDisposition: (0, content_disposition_header_1.getContentDispositionHeader)(downloadBehavior),
|
|
72
|
+
}));
|
|
73
|
+
};
|
|
74
|
+
const lambdaWriteFile = async (params) => {
|
|
75
|
+
var _a;
|
|
76
|
+
const remainingRetries = (_a = params.retries) !== null && _a !== void 0 ? _a : 2;
|
|
77
|
+
try {
|
|
78
|
+
await tryLambdaWriteFile(params);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
if (remainingRetries === 0) {
|
|
82
|
+
throw err;
|
|
83
|
+
}
|
|
84
|
+
const backoff = 2 ** (2 - remainingRetries) * 2000;
|
|
85
|
+
await new Promise((resolve) => {
|
|
86
|
+
setTimeout(resolve, backoff);
|
|
87
|
+
});
|
|
88
|
+
console.warn('Failed to write file to Lambda:');
|
|
89
|
+
console.warn(err);
|
|
90
|
+
console.warn(`Retrying (${remainingRetries} retries remaining)...`);
|
|
91
|
+
return (0, exports.lambdaWriteFile)({
|
|
92
|
+
...params,
|
|
93
|
+
retries: remainingRetries - 1,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
exports.lambdaWriteFile = lambdaWriteFile;
|
|
98
|
+
const lambdaReadFile = async ({ bucketName, key, region, expectedBucketOwner, }) => {
|
|
99
|
+
const { Body } = await (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.GetObjectCommand({
|
|
100
|
+
Bucket: bucketName,
|
|
101
|
+
Key: key,
|
|
102
|
+
ExpectedBucketOwner: expectedBucketOwner,
|
|
103
|
+
}));
|
|
104
|
+
return Body;
|
|
105
|
+
};
|
|
106
|
+
exports.lambdaReadFile = lambdaReadFile;
|
|
6
107
|
const lambdaHeadCommand = async ({ bucketName, key, region, customCredentials, }) => {
|
|
7
|
-
const head = await (0,
|
|
108
|
+
const head = await (0, aws_clients_1.getS3Client)(region, customCredentials).send(new client_s3_1.HeadObjectCommand({
|
|
8
109
|
Bucket: bucketName,
|
|
9
110
|
Key: key,
|
|
10
111
|
}));
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { LogLevel } from '@remotion/renderer';
|
|
2
2
|
import type { ServerlessRoutines } from '@remotion/serverless/client';
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const printLoggingGrepHelper: (type: ServerlessRoutines, data: Record<string, string | boolean>, logLevel: LogLevel) => void;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.printLoggingGrepHelper = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
5
|
-
const
|
|
5
|
+
const printLoggingGrepHelper = (type, data, logLevel) => {
|
|
6
6
|
const d = Object.keys(data).reduce((a, b) => {
|
|
7
7
|
return [...a, `${b}=${data[b]}`];
|
|
8
8
|
}, []);
|
|
9
9
|
const msg = [`method=${type}`, ...d].join(',');
|
|
10
10
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, msg);
|
|
11
11
|
};
|
|
12
|
-
exports.
|
|
12
|
+
exports.printLoggingGrepHelper = printLoggingGrepHelper;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ResponseStream } from './streamify-response';
|
|
3
|
+
declare const streamingPayloadSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
4
|
+
type: z.ZodLiteral<"render-id-determined">;
|
|
5
|
+
renderId: z.ZodString;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
type: "render-id-determined";
|
|
8
|
+
renderId: string;
|
|
9
|
+
}, {
|
|
10
|
+
type: "render-id-determined";
|
|
11
|
+
renderId: string;
|
|
12
|
+
}>]>;
|
|
13
|
+
export type StreamingPayloads = z.infer<typeof streamingPayloadSchema>;
|
|
14
|
+
export declare const isStreamingPayload: (str: string) => false | {
|
|
15
|
+
type: "render-id-determined";
|
|
16
|
+
renderId: string;
|
|
17
|
+
};
|
|
18
|
+
export declare const sendProgressEvent: (responseStream: ResponseStream, payload: StreamingPayloads) => void;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sendProgressEvent = exports.isStreamingPayload = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const streamingPayloadSchema = zod_1.z.discriminatedUnion('type', [
|
|
6
|
+
zod_1.z.object({
|
|
7
|
+
type: zod_1.z.literal('render-id-determined'),
|
|
8
|
+
renderId: zod_1.z.string(),
|
|
9
|
+
}),
|
|
10
|
+
]);
|
|
11
|
+
const isStreamingPayload = (str) => {
|
|
12
|
+
try {
|
|
13
|
+
const parsed = JSON.parse(str);
|
|
14
|
+
return streamingPayloadSchema.parse(parsed);
|
|
15
|
+
}
|
|
16
|
+
catch (_a) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.isStreamingPayload = isStreamingPayload;
|
|
21
|
+
const sendProgressEvent = (responseStream, payload) => {
|
|
22
|
+
const stringified = JSON.stringify(payload);
|
|
23
|
+
responseStream.write(stringified);
|
|
24
|
+
};
|
|
25
|
+
exports.sendProgressEvent = sendProgressEvent;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProviderSpecifics } from '@remotion/serverless';
|
|
2
|
+
import type { FileNameAndSize } from '@remotion/serverless/client';
|
|
2
3
|
export type LambdaErrorInfo = {
|
|
3
4
|
type: 'renderer' | 'browser' | 'stitcher' | 'webhook' | 'artifact';
|
|
4
5
|
message: string;
|
|
@@ -15,7 +16,7 @@ export type LambdaErrorInfo = {
|
|
|
15
16
|
total: number;
|
|
16
17
|
} | null;
|
|
17
18
|
};
|
|
18
|
-
export declare const getTmpDirStateIfENoSp: (err: string) => LambdaErrorInfo['tmpDir'];
|
|
19
|
+
export declare const getTmpDirStateIfENoSp: <Region extends string>(err: string, providerSpecifics: ProviderSpecifics<Region>) => LambdaErrorInfo['tmpDir'];
|
|
19
20
|
export type EnhancedErrorInfo = LambdaErrorInfo & {
|
|
20
21
|
/**
|
|
21
22
|
* @deprecated Will always be an empty string.
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getTmpDirStateIfENoSp = void 0;
|
|
4
|
-
const get_files_in_folder_1 = require("./get-files-in-folder");
|
|
5
4
|
const is_enosp_err_1 = require("./is-enosp-err");
|
|
6
|
-
const getTmpDirStateIfENoSp = (err) => {
|
|
5
|
+
const getTmpDirStateIfENoSp = (err, providerSpecifics) => {
|
|
7
6
|
if (!(0, is_enosp_err_1.errorIsOutOfSpaceError)(err)) {
|
|
8
7
|
return null;
|
|
9
8
|
}
|
|
10
|
-
const files =
|
|
9
|
+
const files = providerSpecifics.getFolderFiles('/tmp');
|
|
11
10
|
return {
|
|
12
11
|
files: files
|
|
13
12
|
.slice(0)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
2
|
+
import type { PostRenderData } from '../../shared/constants';
|
|
3
|
+
export declare const writePostRenderData: ({ bucketName, renderId, postRenderData, expectedBucketOwner, region, }: {
|
|
4
|
+
bucketName: string;
|
|
5
|
+
renderId: string;
|
|
6
|
+
postRenderData: PostRenderData;
|
|
7
|
+
expectedBucketOwner: string;
|
|
8
|
+
region: AwsRegion;
|
|
9
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.writePostRenderData = void 0;
|
|
4
|
+
const constants_1 = require("../../shared/constants");
|
|
5
|
+
const io_1 = require("./io");
|
|
6
|
+
const writePostRenderData = async ({ bucketName, renderId, postRenderData, expectedBucketOwner, region, }) => {
|
|
7
|
+
await (0, io_1.lambdaWriteFile)({
|
|
8
|
+
bucketName,
|
|
9
|
+
key: (0, constants_1.postRenderDataKey)(renderId),
|
|
10
|
+
privacy: 'private',
|
|
11
|
+
body: JSON.stringify(postRenderData),
|
|
12
|
+
expectedBucketOwner,
|
|
13
|
+
region,
|
|
14
|
+
downloadBehavior: null,
|
|
15
|
+
customCredentials: null,
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
exports.writePostRenderData = writePostRenderData;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LambdaPayload, PostRenderData } from '../defaults';
|
|
2
|
+
type Options = {
|
|
3
|
+
expectedBucketOwner: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const mergeHandler: (params: LambdaPayload, options: Options) => Promise<{
|
|
6
|
+
type: 'success';
|
|
7
|
+
postRenderData: PostRenderData;
|
|
8
|
+
}>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeHandler = void 0;
|
|
4
|
+
const renderer_1 = require("@remotion/renderer");
|
|
5
|
+
const defaults_1 = require("../defaults");
|
|
6
|
+
const expected_out_name_1 = require("./helpers/expected-out-name");
|
|
7
|
+
const get_current_region_1 = require("./helpers/get-current-region");
|
|
8
|
+
const get_render_metadata_1 = require("./helpers/get-render-metadata");
|
|
9
|
+
const merge_chunks_1 = require("./helpers/merge-chunks");
|
|
10
|
+
const mergeHandler = async (params, options) => {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
if (params.type !== defaults_1.LambdaRoutines.merge) {
|
|
13
|
+
throw new Error('Expected launch type');
|
|
14
|
+
}
|
|
15
|
+
renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'This function has been started because the previous main function has timed out while merging together the chunks.');
|
|
16
|
+
renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'The merging of chunks will now restart.');
|
|
17
|
+
const renderMetadata = await (0, get_render_metadata_1.getRenderMetadata)({
|
|
18
|
+
bucketName: params.bucketName,
|
|
19
|
+
expectedBucketOwner: options.expectedBucketOwner,
|
|
20
|
+
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
21
|
+
renderId: params.renderId,
|
|
22
|
+
});
|
|
23
|
+
if (!renderMetadata.codec) {
|
|
24
|
+
throw new Error('expected codec');
|
|
25
|
+
}
|
|
26
|
+
const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, params.bucketName, typeof params.outName === 'string' || typeof params.outName === 'undefined'
|
|
27
|
+
? null
|
|
28
|
+
: (_b = (_a = params.outName) === null || _a === void 0 ? void 0 : _a.s3OutputProvider) !== null && _b !== void 0 ? _b : null);
|
|
29
|
+
const frameCount = renderer_1.RenderInternals.getFramesToRender(renderMetadata.frameRange, renderMetadata.everyNthFrame);
|
|
30
|
+
const fps = renderMetadata.videoConfig.fps / renderMetadata.everyNthFrame;
|
|
31
|
+
const postRenderData = await (0, merge_chunks_1.mergeChunksAndFinishRender)({
|
|
32
|
+
audioCodec: renderMetadata.audioCodec,
|
|
33
|
+
bucketName: params.bucketName,
|
|
34
|
+
chunkCount: renderMetadata.totalChunks,
|
|
35
|
+
codec: renderMetadata.codec,
|
|
36
|
+
customCredentials,
|
|
37
|
+
downloadBehavior: renderMetadata.downloadBehavior,
|
|
38
|
+
expectedBucketOwner: options.expectedBucketOwner,
|
|
39
|
+
fps,
|
|
40
|
+
numberOfFrames: frameCount.length,
|
|
41
|
+
inputProps: params.inputProps,
|
|
42
|
+
key,
|
|
43
|
+
numberOfGifLoops: renderMetadata.numberOfGifLoops,
|
|
44
|
+
privacy: renderMetadata.privacy,
|
|
45
|
+
renderBucketName,
|
|
46
|
+
renderId: params.renderId,
|
|
47
|
+
renderMetadata,
|
|
48
|
+
serializedResolvedProps: params.serializedResolvedProps,
|
|
49
|
+
onAllChunks: () => {
|
|
50
|
+
renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'All chunks have been downloaded now.');
|
|
51
|
+
},
|
|
52
|
+
audioBitrate: renderMetadata.audioBitrate,
|
|
53
|
+
logLevel: params.logLevel,
|
|
54
|
+
framesPerLambda: params.framesPerLambda,
|
|
55
|
+
binariesDirectory: null,
|
|
56
|
+
preferLossless: params.preferLossless,
|
|
57
|
+
compositionStart: params.compositionStart,
|
|
58
|
+
});
|
|
59
|
+
return { type: 'success', postRenderData };
|
|
60
|
+
};
|
|
61
|
+
exports.mergeHandler = mergeHandler;
|
package/dist/internals.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export declare const LambdaInternals: {
|
|
|
37
37
|
options: {
|
|
38
38
|
onBundleProgress?: ((progress: number) => void) | undefined;
|
|
39
39
|
onUploadProgress?: ((upload: import("./api/upload-dir").UploadDirProgress) => void) | undefined;
|
|
40
|
+
onDiffingProgress?: ((bytes: number, done: boolean) => void) | undefined;
|
|
40
41
|
webpackOverride?: import("@remotion/bundler").WebpackOverrideFn | undefined;
|
|
41
42
|
ignoreRegisterRootWarning?: boolean | undefined;
|
|
42
43
|
enableCaching?: boolean | undefined;
|
|
@@ -6,8 +6,8 @@ const readDirectory = ({ dir }) => {
|
|
|
6
6
|
const files = (0, upload_dir_1.getDirFiles)(dir);
|
|
7
7
|
const obj = {};
|
|
8
8
|
for (const file of files) {
|
|
9
|
-
obj[file.name] = 'etag';
|
|
9
|
+
obj[file.name] = () => Promise.resolve('etag');
|
|
10
10
|
}
|
|
11
|
-
return
|
|
11
|
+
return obj;
|
|
12
12
|
};
|
|
13
13
|
exports.readDirectory = readDirectory;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const writeLambdaInitializedFile: ({ bucketName, expectedBucketOwner, attempt, chunk, renderId, framesRendered, }: {
|
|
2
|
+
bucketName: string;
|
|
3
|
+
expectedBucketOwner: string;
|
|
4
|
+
renderId: string;
|
|
5
|
+
chunk: number;
|
|
6
|
+
attempt: number;
|
|
7
|
+
framesRendered: number;
|
|
8
|
+
}) => Promise<void>;
|
|
9
|
+
export declare const getProgressOfChunk: (etag: string) => number;
|