@remotion/lambda 4.0.202 → 4.0.205
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/admin/make-layer-public.js +19 -5
- package/dist/api/create-function.d.ts +3 -1
- package/dist/api/create-function.js +7 -5
- package/dist/api/deploy-function.d.ts +3 -1
- package/dist/api/deploy-function.js +6 -4
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/commands/functions/deploy.js +3 -1
- package/dist/functions/helpers/cleanup-props.d.ts +1 -4
- package/dist/functions/helpers/expected-out-name.d.ts +1 -1
- package/dist/functions/helpers/get-browser-instance.d.ts +3 -2
- package/dist/functions/helpers/get-browser-instance.js +3 -4
- package/dist/functions/helpers/get-custom-out-name.d.ts +1 -1
- package/dist/functions/helpers/io.d.ts +3 -33
- package/dist/functions/helpers/io.js +3 -104
- 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/write-lambda-error.d.ts +2 -3
- package/dist/functions/helpers/write-lambda-error.js +3 -2
- package/dist/functions/provider-implementation.d.ts +0 -0
- package/dist/functions/provider-implementation.js +1 -0
- package/dist/shared/compress-props.d.ts +8 -6
- package/dist/shared/compress-props.js +11 -14
- package/dist/shared/get-layers.d.ts +11 -0
- package/dist/shared/get-layers.js +38 -0
- package/dist/shared/hosted-layers.d.ts +5 -4
- package/dist/shared/hosted-layers.js +588 -84
- package/package.json +11 -11
- package/remotionlambda-arm64.zip +0 -0
- package/dist/functions/helpers/check-if-render-exists.d.ts +0 -3
- package/dist/functions/helpers/check-if-render-exists.js +0 -15
- package/dist/functions/helpers/delete-chunks.d.ts +0 -9
- package/dist/functions/helpers/delete-chunks.js +0 -25
- package/dist/functions/helpers/get-cleanup-progress.d.ts +0 -10
- package/dist/functions/helpers/get-cleanup-progress.js +0 -35
- package/dist/functions/helpers/get-encoding-metadata.d.ts +0 -7
- package/dist/functions/helpers/get-encoding-metadata.js +0 -15
- package/dist/functions/helpers/get-encoding-progress-step-size.d.ts +0 -1
- package/dist/functions/helpers/get-encoding-progress-step-size.js +0 -7
- package/dist/functions/helpers/get-files-to-delete.d.ts +0 -10
- package/dist/functions/helpers/get-files-to-delete.js +0 -52
- package/dist/functions/helpers/get-final-encoding-status.d.ts +0 -6
- package/dist/functions/helpers/get-final-encoding-status.js +0 -18
- package/dist/functions/helpers/get-folder-size.d.ts +0 -1
- package/dist/functions/helpers/get-folder-size.js +0 -8
- package/dist/functions/helpers/get-lambdas-invoked-stats.d.ts +0 -8
- package/dist/functions/helpers/get-lambdas-invoked-stats.js +0 -14
- package/dist/functions/helpers/get-post-render-data.d.ts +0 -8
- package/dist/functions/helpers/get-post-render-data.js +0 -22
- package/dist/functions/helpers/get-render-metadata.d.ts +0 -8
- package/dist/functions/helpers/get-render-metadata.js +0 -17
- package/dist/functions/helpers/get-rendered-frames-progress.d.ts +0 -8
- package/dist/functions/helpers/get-rendered-frames-progress.js +0 -37
- package/dist/functions/helpers/get-time-to-finish.d.ts +0 -5
- package/dist/functions/helpers/get-time-to-finish.js +0 -13
- package/dist/functions/helpers/streaming-payloads.d.ts +0 -19
- package/dist/functions/helpers/streaming-payloads.js +0 -25
- package/dist/functions/helpers/write-post-render-data.d.ts +0 -9
- package/dist/functions/helpers/write-post-render-data.js +0 -18
- package/dist/functions/merge.d.ts +0 -9
- package/dist/functions/merge.js +0 -61
- package/dist/shared/chunk-progress.d.ts +0 -9
- package/dist/shared/chunk-progress.js +0 -2034
- package/dist/shared/parse-chunk-key.d.ts +0 -5
- package/dist/shared/parse-chunk-key.js +0 -15
- package/dist/shared/parse-lambda-initialized-key.d.ts +0 -5
- package/dist/shared/parse-lambda-initialized-key.js +0 -15
- package/dist/shared/serialize-props.d.ts +0 -14
- package/dist/shared/serialize-props.js +0 -36
|
@@ -31,23 +31,37 @@ const layerInfo = {
|
|
|
31
31
|
const V5_RUNTIME = true;
|
|
32
32
|
const makeLayerPublic = async () => {
|
|
33
33
|
const runtimes = [V5_RUNTIME ? 'nodejs20.x' : 'nodejs18.x'];
|
|
34
|
-
const layers = [
|
|
34
|
+
const layers = [
|
|
35
|
+
'fonts',
|
|
36
|
+
'chromium',
|
|
37
|
+
'emoji-apple',
|
|
38
|
+
'emoji-google',
|
|
39
|
+
'cjk',
|
|
40
|
+
];
|
|
35
41
|
for (const region of (0, get_regions_1.getRegions)()) {
|
|
36
42
|
for (const layer of layers) {
|
|
37
43
|
const layerName = `remotion-binaries-${layer}-arm64`;
|
|
38
44
|
const { Version, LayerArn } = await (0, aws_clients_1.getLambdaClient)(region).send(new client_lambda_1.PublishLayerVersionCommand({
|
|
39
45
|
Content: {
|
|
40
46
|
S3Bucket: 'remotionlambda-binaries-' + region,
|
|
41
|
-
S3Key:
|
|
42
|
-
?
|
|
43
|
-
:
|
|
47
|
+
S3Key: layer === 'emoji-apple'
|
|
48
|
+
? 'remotion-layer-emoji-v1-arm64.zip'
|
|
49
|
+
: V5_RUNTIME
|
|
50
|
+
? `remotion-layer-${layer}-v11-arm64.zip`
|
|
51
|
+
: `remotion-layer-${layer}-v10-arm64.zip`,
|
|
44
52
|
},
|
|
45
53
|
LayerName: layerName,
|
|
46
54
|
LicenseInfo: layer === 'chromium'
|
|
47
55
|
? V5_RUNTIME
|
|
48
56
|
? 'Chromium 123.0.6312.86, compiled from source. Read Chromium License: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/LICENSE'
|
|
49
57
|
: 'Chromium 114, compiled from source. Read Chromium License: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/LICENSE'
|
|
50
|
-
:
|
|
58
|
+
: layer === 'emoji-apple'
|
|
59
|
+
? 'Apple Emojis (https://github.com/samuelngs/apple-emoji-linux). For educational purposes only - Apple is a trademark of Apple Inc., registered in the U.S. and other countries.'
|
|
60
|
+
: layer === 'emoji-google'
|
|
61
|
+
? 'Google Emojis (https://github.com/googlefonts/noto-emoji)'
|
|
62
|
+
: layer === 'cjk'
|
|
63
|
+
? 'Noto Sans (Chinese, Japanese, Korean)'
|
|
64
|
+
: 'Contains Noto Sans font. Read Noto Sans License: https://fonts.google.com/noto/specimen/Noto+Sans/about',
|
|
51
65
|
CompatibleRuntimes: runtimes,
|
|
52
66
|
Description: version_1.VERSION,
|
|
53
67
|
}));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { LogLevel } from '@remotion/renderer';
|
|
2
2
|
import type { AwsRegion } from '../regions';
|
|
3
|
-
|
|
3
|
+
import type { RuntimePreference } from '../shared/get-layers';
|
|
4
|
+
export declare const createFunction: ({ createCloudWatchLogGroup, region, zipFile, functionName, accountId, memorySizeInMb, timeoutInSeconds, alreadyCreated, retentionInDays, ephemerealStorageInMb, customRoleArn, enableLambdaInsights, enableV5Runtime, logLevel, vpcSubnetIds, vpcSecurityGroupIds, runtimePreference, }: {
|
|
4
5
|
createCloudWatchLogGroup: boolean;
|
|
5
6
|
region: AwsRegion;
|
|
6
7
|
zipFile: string;
|
|
@@ -17,6 +18,7 @@ export declare const createFunction: ({ createCloudWatchLogGroup, region, zipFil
|
|
|
17
18
|
logLevel: LogLevel;
|
|
18
19
|
vpcSubnetIds: string;
|
|
19
20
|
vpcSecurityGroupIds: string;
|
|
21
|
+
runtimePreference: RuntimePreference;
|
|
20
22
|
}) => Promise<{
|
|
21
23
|
FunctionName: string;
|
|
22
24
|
}>;
|
|
@@ -8,10 +8,10 @@ const node_fs_1 = require("node:fs");
|
|
|
8
8
|
const version_1 = require("remotion/version");
|
|
9
9
|
const defaults_1 = require("../defaults");
|
|
10
10
|
const aws_clients_1 = require("../shared/aws-clients");
|
|
11
|
-
const
|
|
11
|
+
const get_layers_1 = require("../shared/get-layers");
|
|
12
12
|
const lambda_insights_extensions_1 = require("../shared/lambda-insights-extensions");
|
|
13
13
|
const suggested_policy_1 = require("./iam-validation/suggested-policy");
|
|
14
|
-
const createFunction = async ({ createCloudWatchLogGroup, region, zipFile, functionName, accountId, memorySizeInMb, timeoutInSeconds, alreadyCreated, retentionInDays, ephemerealStorageInMb, customRoleArn, enableLambdaInsights, enableV5Runtime, logLevel, vpcSubnetIds, vpcSecurityGroupIds, }) => {
|
|
14
|
+
const createFunction = async ({ createCloudWatchLogGroup, region, zipFile, functionName, accountId, memorySizeInMb, timeoutInSeconds, alreadyCreated, retentionInDays, ephemerealStorageInMb, customRoleArn, enableLambdaInsights, enableV5Runtime, logLevel, vpcSubnetIds, vpcSecurityGroupIds, runtimePreference, }) => {
|
|
15
15
|
var _a;
|
|
16
16
|
if (createCloudWatchLogGroup) {
|
|
17
17
|
renderer_1.RenderInternals.Log.verbose({ indent: false, logLevel }, 'Creating CloudWatch group');
|
|
@@ -42,9 +42,11 @@ const createFunction = async ({ createCloudWatchLogGroup, region, zipFile, funct
|
|
|
42
42
|
return { FunctionName: functionName };
|
|
43
43
|
}
|
|
44
44
|
const defaultRoleName = `arn:aws:iam::${accountId}:role/${suggested_policy_1.ROLE_NAME}`;
|
|
45
|
-
const layers =
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
const layers = (0, get_layers_1.getLayers)({
|
|
46
|
+
option: runtimePreference,
|
|
47
|
+
region,
|
|
48
|
+
enableV5Runtime,
|
|
49
|
+
});
|
|
48
50
|
if (enableV5Runtime) {
|
|
49
51
|
renderer_1.RenderInternals.Log.verbose({ indent: false, logLevel }, 'New V5 runtime enabled https://remotion.dev/docs/lambda/runtime#runtime-changes-in-remotion-50');
|
|
50
52
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { LogLevel } from '@remotion/renderer';
|
|
2
2
|
import type { AwsRegion } from '../regions';
|
|
3
|
+
import { type RuntimePreference } from '../shared/get-layers';
|
|
3
4
|
type MandatoryParameters = {
|
|
4
5
|
createCloudWatchLogGroup: boolean;
|
|
5
6
|
cloudWatchLogRetentionPeriodInDays?: number;
|
|
@@ -16,6 +17,7 @@ type OptionalParameters = {
|
|
|
16
17
|
enableV5Runtime: boolean;
|
|
17
18
|
vpcSubnetIds: string | undefined;
|
|
18
19
|
vpcSecurityGroupIds: string | undefined;
|
|
20
|
+
runtimePreference: RuntimePreference;
|
|
19
21
|
};
|
|
20
22
|
export type DeployFunctionInput = MandatoryParameters & Partial<OptionalParameters>;
|
|
21
23
|
export type DeployFunctionOutput = {
|
|
@@ -35,5 +37,5 @@ export declare const internalDeployFunction: (params: MandatoryParameters & Opti
|
|
|
35
37
|
* @param params.diskSizeInMb The amount of storage the function should be allocated. The higher, the longer videos you can render. Default 512.
|
|
36
38
|
* @returns {Promise<DeployFunctionOutput>} An object that contains the `functionName` property
|
|
37
39
|
*/
|
|
38
|
-
export declare const deployFunction: ({ createCloudWatchLogGroup, memorySizeInMb, region, timeoutInSeconds, cloudWatchLogRetentionPeriodInDays, customRoleArn, enableLambdaInsights, indent, logLevel, enableV5Runtime, vpcSubnetIds, vpcSecurityGroupIds,
|
|
40
|
+
export declare const deployFunction: ({ createCloudWatchLogGroup, memorySizeInMb, region, timeoutInSeconds, cloudWatchLogRetentionPeriodInDays, customRoleArn, enableLambdaInsights, indent, logLevel, enableV5Runtime, vpcSubnetIds, vpcSecurityGroupIds, runtimePreference, diskSizeInMb, }: DeployFunctionInput) => Promise<DeployFunctionOutput>;
|
|
39
41
|
export {};
|
|
@@ -8,6 +8,7 @@ const get_functions_1 = require("../api/get-functions");
|
|
|
8
8
|
const constants_1 = require("../shared/constants");
|
|
9
9
|
const function_zip_path_1 = require("../shared/function-zip-path");
|
|
10
10
|
const get_account_id_1 = require("../shared/get-account-id");
|
|
11
|
+
const get_layers_1 = require("../shared/get-layers");
|
|
11
12
|
const lambda_version_string_1 = require("../shared/lambda-version-string");
|
|
12
13
|
const validate_aws_region_1 = require("../shared/validate-aws-region");
|
|
13
14
|
const validate_custom_role_arn_1 = require("../shared/validate-custom-role-arn");
|
|
@@ -24,6 +25,7 @@ const internalDeployFunction = async (params) => {
|
|
|
24
25
|
(0, validate_retention_period_1.validateCloudWatchRetentionPeriod)(params.cloudWatchLogRetentionPeriodInDays);
|
|
25
26
|
(0, validate_disk_size_in_mb_1.validateDiskSizeInMb)(params.diskSizeInMb);
|
|
26
27
|
(0, validate_custom_role_arn_1.validateCustomRoleArn)(params.customRoleArn);
|
|
28
|
+
(0, get_layers_1.validateRuntimePreference)(params.runtimePreference);
|
|
27
29
|
const fnNameRender = [
|
|
28
30
|
`${constants_1.RENDER_FN_PREFIX}${lambda_version_string_1.LAMBDA_VERSION_STRING}`,
|
|
29
31
|
`mem${params.memorySizeInMb}mb`,
|
|
@@ -56,6 +58,7 @@ const internalDeployFunction = async (params) => {
|
|
|
56
58
|
logLevel: params.logLevel,
|
|
57
59
|
vpcSubnetIds: params.vpcSubnetIds,
|
|
58
60
|
vpcSecurityGroupIds: params.vpcSecurityGroupIds,
|
|
61
|
+
runtimePreference: params.runtimePreference,
|
|
59
62
|
});
|
|
60
63
|
if (!created.FunctionName) {
|
|
61
64
|
throw new Error('Lambda was created but has no name');
|
|
@@ -79,15 +82,13 @@ const errorHandled = (0, error_handling_1.wrapWithErrorHandling)(exports.interna
|
|
|
79
82
|
* @param params.diskSizeInMb The amount of storage the function should be allocated. The higher, the longer videos you can render. Default 512.
|
|
80
83
|
* @returns {Promise<DeployFunctionOutput>} An object that contains the `functionName` property
|
|
81
84
|
*/
|
|
82
|
-
const deployFunction = ({ createCloudWatchLogGroup, memorySizeInMb, region, timeoutInSeconds, cloudWatchLogRetentionPeriodInDays, customRoleArn, enableLambdaInsights, indent, logLevel, enableV5Runtime, vpcSubnetIds, vpcSecurityGroupIds,
|
|
83
|
-
var _a;
|
|
84
|
-
const diskSizeInMb = (_a = options.diskSizeInMb) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_EPHEMERAL_STORAGE_IN_MB;
|
|
85
|
+
const deployFunction = ({ createCloudWatchLogGroup, memorySizeInMb, region, timeoutInSeconds, cloudWatchLogRetentionPeriodInDays, customRoleArn, enableLambdaInsights, indent, logLevel, enableV5Runtime, vpcSubnetIds, vpcSecurityGroupIds, runtimePreference, diskSizeInMb, }) => {
|
|
85
86
|
return errorHandled({
|
|
86
87
|
indent: indent !== null && indent !== void 0 ? indent : false,
|
|
87
88
|
logLevel: logLevel !== null && logLevel !== void 0 ? logLevel : 'info',
|
|
88
89
|
createCloudWatchLogGroup,
|
|
89
90
|
customRoleArn: customRoleArn !== null && customRoleArn !== void 0 ? customRoleArn : undefined,
|
|
90
|
-
diskSizeInMb,
|
|
91
|
+
diskSizeInMb: diskSizeInMb !== null && diskSizeInMb !== void 0 ? diskSizeInMb : constants_1.DEFAULT_EPHEMERAL_STORAGE_IN_MB,
|
|
91
92
|
enableLambdaInsights: enableLambdaInsights !== null && enableLambdaInsights !== void 0 ? enableLambdaInsights : false,
|
|
92
93
|
memorySizeInMb,
|
|
93
94
|
region,
|
|
@@ -96,6 +97,7 @@ const deployFunction = ({ createCloudWatchLogGroup, memorySizeInMb, region, time
|
|
|
96
97
|
enableV5Runtime: enableV5Runtime !== null && enableV5Runtime !== void 0 ? enableV5Runtime : no_react_1.NoReactInternals.ENABLE_V5_BREAKING_CHANGES,
|
|
97
98
|
vpcSubnetIds,
|
|
98
99
|
vpcSecurityGroupIds,
|
|
100
|
+
runtimePreference: runtimePreference !== null && runtimePreference !== void 0 ? runtimePreference : 'default',
|
|
99
101
|
});
|
|
100
102
|
};
|
|
101
103
|
exports.deployFunction = deployFunction;
|
package/dist/cli/args.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import type { BrowserSafeApis } from '@remotion/renderer/client';
|
|
3
3
|
import type { AwsRegion, DeleteAfter } from '../client';
|
|
4
4
|
import type { Privacy } from '@remotion/serverless/client';
|
|
5
|
+
import type { RuntimePreference } from '../shared/get-layers';
|
|
5
6
|
type LambdaCommandLineOptions = {
|
|
6
7
|
help: boolean;
|
|
7
8
|
region: AwsRegion;
|
|
@@ -37,6 +38,7 @@ type LambdaCommandLineOptions = {
|
|
|
37
38
|
['vpc-security-group-ids']: string | undefined;
|
|
38
39
|
['compatible-only']: boolean;
|
|
39
40
|
['force-path-style']: boolean;
|
|
41
|
+
['runtime-preference']: RuntimePreference;
|
|
40
42
|
};
|
|
41
43
|
export declare const parsedLambdaCli: LambdaCommandLineOptions & import("minimist").ParsedArgs;
|
|
42
44
|
export declare const forceFlagProvided: boolean;
|
|
@@ -15,7 +15,7 @@ const args_1 = require("../../args");
|
|
|
15
15
|
const get_aws_region_1 = require("../../get-aws-region");
|
|
16
16
|
exports.FUNCTIONS_DEPLOY_SUBCOMMAND = 'deploy';
|
|
17
17
|
const functionsDeploySubcommand = async (logLevel) => {
|
|
18
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
18
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
19
19
|
const region = (0, get_aws_region_1.getAwsRegion)();
|
|
20
20
|
const timeoutInSeconds = (_a = args_1.parsedLambdaCli.timeout) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_TIMEOUT;
|
|
21
21
|
const memorySizeInMb = (_b = args_1.parsedLambdaCli.memory) !== null && _b !== void 0 ? _b : constants_1.DEFAULT_MEMORY_SIZE;
|
|
@@ -27,6 +27,7 @@ const functionsDeploySubcommand = async (logLevel) => {
|
|
|
27
27
|
const enableV5Runtime = (_g = args_1.parsedLambdaCli['enable-v5-runtime']) !== null && _g !== void 0 ? _g : undefined;
|
|
28
28
|
const vpcSubnetIds = (_h = args_1.parsedLambdaCli['vpc-subnet-ids']) !== null && _h !== void 0 ? _h : undefined;
|
|
29
29
|
const vpcSecurityGroupIds = (_j = args_1.parsedLambdaCli['vpc-security-group-ids']) !== null && _j !== void 0 ? _j : undefined;
|
|
30
|
+
const runtimePreference = (_k = args_1.parsedLambdaCli['runtime-preference']) !== null && _k !== void 0 ? _k : 'default';
|
|
30
31
|
(0, validate_memory_size_1.validateMemorySize)(memorySizeInMb);
|
|
31
32
|
(0, validate_timeout_1.validateTimeout)(timeoutInSeconds);
|
|
32
33
|
(0, validate_disk_size_in_mb_1.validateDiskSizeInMb)(diskSizeInMb);
|
|
@@ -74,6 +75,7 @@ VPC Security Group IDs = ${vpcSecurityGroupIds}
|
|
|
74
75
|
logLevel,
|
|
75
76
|
vpcSubnetIds,
|
|
76
77
|
vpcSecurityGroupIds,
|
|
78
|
+
runtimePreference,
|
|
77
79
|
});
|
|
78
80
|
if (cli_1.CliInternals.quietFlagProvided()) {
|
|
79
81
|
cli_1.CliInternals.Log.info({ indent: false, logLevel }, functionName);
|
|
@@ -5,7 +5,4 @@ export declare const cleanupProps: <Provider extends CloudProvider<string, Recor
|
|
|
5
5
|
inputProps: SerializedInputProps;
|
|
6
6
|
providerSpecifics: ProviderSpecifics<Provider>;
|
|
7
7
|
forcePathStyle: boolean;
|
|
8
|
-
}) => Promise<[
|
|
9
|
-
number,
|
|
10
|
-
number
|
|
11
|
-
]>;
|
|
8
|
+
}) => Promise<[number, number]>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { CustomCredentials, OutNameInput } from '@remotion/serverless/client';
|
|
2
2
|
import type { OutNameOutput, RenderMetadata } from '../../defaults';
|
|
3
3
|
export declare const getCredentialsFromOutName: <Region extends string>(name: OutNameInput<Region> | null) => CustomCredentials<Region> | null;
|
|
4
|
-
export declare const getExpectedOutName: <Region extends string>(renderMetadata: RenderMetadata
|
|
4
|
+
export declare const getExpectedOutName: <Region extends string>(renderMetadata: RenderMetadata, bucketName: string, customCredentials: CustomCredentials<Region> | null) => OutNameOutput<Region>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ChromiumOptions, LogLevel, openBrowser } from '@remotion/renderer';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ProviderSpecifics } from '@remotion/serverless';
|
|
3
|
+
import type { Await } from '@remotion/serverless/client';
|
|
3
4
|
type LaunchedBrowser = {
|
|
4
5
|
instance: Await<ReturnType<typeof openBrowser>>;
|
|
5
6
|
configurationString: string;
|
|
6
7
|
};
|
|
7
8
|
export declare const forgetBrowserEventLoop: (logLevel: LogLevel) => void;
|
|
8
|
-
export declare const getBrowserInstance: (logLevel: LogLevel, indent: boolean, chromiumOptions: ChromiumOptions) => Promise<LaunchedBrowser>;
|
|
9
|
+
export declare const getBrowserInstance: (logLevel: LogLevel, indent: boolean, chromiumOptions: ChromiumOptions, providerSpecifics: ProviderSpecifics) => Promise<LaunchedBrowser>;
|
|
9
10
|
export {};
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getBrowserInstance = exports.forgetBrowserEventLoop = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
5
5
|
const version_1 = require("remotion/version");
|
|
6
|
-
const get_chromium_executable_path_1 = require("./get-chromium-executable-path");
|
|
7
6
|
const makeConfigurationString = (options, logLevel) => {
|
|
8
7
|
var _a, _b, _c;
|
|
9
8
|
return [
|
|
@@ -37,7 +36,7 @@ const forgetBrowserEventLoop = (logLevel) => {
|
|
|
37
36
|
_browserInstance === null || _browserInstance === void 0 ? void 0 : _browserInstance.instance.forgetEventLoop();
|
|
38
37
|
};
|
|
39
38
|
exports.forgetBrowserEventLoop = forgetBrowserEventLoop;
|
|
40
|
-
const getBrowserInstance = async (logLevel, indent, chromiumOptions) => {
|
|
39
|
+
const getBrowserInstance = async (logLevel, indent, chromiumOptions, providerSpecifics) => {
|
|
41
40
|
var _a;
|
|
42
41
|
const actualChromiumOptions = {
|
|
43
42
|
...chromiumOptions,
|
|
@@ -57,7 +56,7 @@ const getBrowserInstance = async (logLevel, indent, chromiumOptions) => {
|
|
|
57
56
|
if (!_browserInstance) {
|
|
58
57
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Cold Lambda function, launching new browser instance');
|
|
59
58
|
launching = true;
|
|
60
|
-
const execPath =
|
|
59
|
+
const execPath = providerSpecifics.getChromiumPath();
|
|
61
60
|
const instance = await renderer_1.RenderInternals.internalOpenBrowser({
|
|
62
61
|
browser: 'chrome',
|
|
63
62
|
browserExecutable: execPath,
|
|
@@ -91,7 +90,7 @@ const getBrowserInstance = async (logLevel, indent, chromiumOptions) => {
|
|
|
91
90
|
_browserInstance.instance.rememberEventLoop();
|
|
92
91
|
await _browserInstance.instance.close(true, logLevel, indent);
|
|
93
92
|
_browserInstance = null;
|
|
94
|
-
return (0, exports.getBrowserInstance)(logLevel, indent, chromiumOptions);
|
|
93
|
+
return (0, exports.getBrowserInstance)(logLevel, indent, chromiumOptions, providerSpecifics);
|
|
95
94
|
}
|
|
96
95
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Warm Lambda function, reusing browser instance');
|
|
97
96
|
_browserInstance.instance.rememberEventLoop();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CustomCredentials, OutNameInput } from '@remotion/serverless/client';
|
|
2
2
|
import type { RenderMetadata } from '../../defaults';
|
|
3
3
|
export declare const getCustomOutName: <Region extends string>({ renderMetadata, customCredentials, }: {
|
|
4
|
-
renderMetadata: RenderMetadata
|
|
4
|
+
renderMetadata: RenderMetadata;
|
|
5
5
|
customCredentials: CustomCredentials<Region> | null;
|
|
6
6
|
}) => OutNameInput<Region> | null;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
1
|
import type { _Object } from '@aws-sdk/client-s3';
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
import type { Readable } from 'stream';
|
|
2
|
+
import type { CustomCredentials } from '@remotion/serverless/client';
|
|
3
|
+
import type { AwsRegion } from '../../regions';
|
|
7
4
|
export type LambdaLSInput = {
|
|
8
5
|
bucketName: string;
|
|
9
6
|
prefix: string;
|
|
@@ -12,39 +9,12 @@ export type LambdaLSInput = {
|
|
|
12
9
|
continuationToken?: string;
|
|
13
10
|
};
|
|
14
11
|
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>;
|
|
41
12
|
export declare const lambdaHeadCommand: ({ bucketName, key, region, customCredentials, }: {
|
|
42
13
|
bucketName: string;
|
|
43
14
|
key: string;
|
|
44
15
|
region: AwsRegion;
|
|
45
|
-
customCredentials: CustomCredentials | null;
|
|
16
|
+
customCredentials: CustomCredentials<AwsRegion> | null;
|
|
46
17
|
}) => Promise<{
|
|
47
18
|
LastModified?: Date | undefined;
|
|
48
19
|
ContentLength?: number | undefined;
|
|
49
20
|
}>;
|
|
50
|
-
export {};
|
|
@@ -1,111 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.lambdaHeadCommand =
|
|
3
|
+
exports.lambdaHeadCommand = void 0;
|
|
7
4
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
8
|
-
const
|
|
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;
|
|
5
|
+
const get_s3_client_1 = require("../../shared/get-s3-client");
|
|
107
6
|
const lambdaHeadCommand = async ({ bucketName, key, region, customCredentials, }) => {
|
|
108
|
-
const head = await (0,
|
|
7
|
+
const head = await (0, get_s3_client_1.getS3Client)(region, customCredentials).send(new client_s3_1.HeadObjectCommand({
|
|
109
8
|
Bucket: bucketName,
|
|
110
9
|
Key: key,
|
|
111
10
|
}));
|
|
@@ -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 printCloudwatchHelper: (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.printCloudwatchHelper = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
5
|
-
const
|
|
5
|
+
const printCloudwatchHelper = (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.printCloudwatchHelper = printCloudwatchHelper;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { FileNameAndSize } from '@remotion/serverless/client';
|
|
1
|
+
import type { FileNameAndSize } from './get-files-in-folder';
|
|
3
2
|
export type LambdaErrorInfo = {
|
|
4
3
|
type: 'renderer' | 'browser' | 'stitcher' | 'webhook' | 'artifact';
|
|
5
4
|
message: string;
|
|
@@ -16,7 +15,7 @@ export type LambdaErrorInfo = {
|
|
|
16
15
|
total: number;
|
|
17
16
|
} | null;
|
|
18
17
|
};
|
|
19
|
-
export declare const getTmpDirStateIfENoSp:
|
|
18
|
+
export declare const getTmpDirStateIfENoSp: (err: string) => LambdaErrorInfo['tmpDir'];
|
|
20
19
|
export type EnhancedErrorInfo = LambdaErrorInfo & {
|
|
21
20
|
/**
|
|
22
21
|
* @deprecated Will always be an empty string.
|
|
@@ -1,12 +1,13 @@
|
|
|
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");
|
|
4
5
|
const is_enosp_err_1 = require("./is-enosp-err");
|
|
5
|
-
const getTmpDirStateIfENoSp = (err
|
|
6
|
+
const getTmpDirStateIfENoSp = (err) => {
|
|
6
7
|
if (!(0, is_enosp_err_1.errorIsOutOfSpaceError)(err)) {
|
|
7
8
|
return null;
|
|
8
9
|
}
|
|
9
|
-
const files =
|
|
10
|
+
const files = (0, get_files_in_folder_1.getFolderFiles)('/tmp');
|
|
10
11
|
return {
|
|
11
12
|
files: files
|
|
12
13
|
.slice(0)
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type
|
|
1
|
+
import type { ProviderSpecifics } from '@remotion/serverless';
|
|
2
|
+
import { type SerializedInputProps } from '@remotion/serverless/client';
|
|
3
3
|
type PropsType = 'input-props' | 'resolved-props';
|
|
4
4
|
export declare const serializeOrThrow: (inputProps: Record<string, unknown>, propsType: PropsType) => string;
|
|
5
5
|
export declare const getNeedsToUpload: (type: 'still' | 'video-or-audio', sizes: number[]) => boolean;
|
|
6
|
-
export declare const compressInputProps: ({ stringifiedInputProps, region, userSpecifiedBucketName, propsType, needsToUpload, }: {
|
|
6
|
+
export declare const compressInputProps: <Region extends string>({ stringifiedInputProps, region, userSpecifiedBucketName, propsType, needsToUpload, providerSpecifics, }: {
|
|
7
7
|
stringifiedInputProps: string;
|
|
8
|
-
region:
|
|
8
|
+
region: Region;
|
|
9
9
|
userSpecifiedBucketName: string | null;
|
|
10
10
|
propsType: PropsType;
|
|
11
11
|
needsToUpload: boolean;
|
|
12
|
+
providerSpecifics: ProviderSpecifics<Region>;
|
|
12
13
|
}) => Promise<SerializedInputProps>;
|
|
13
|
-
export declare const decompressInputProps: ({ serialized, region, bucketName, expectedBucketOwner, propsType, }: {
|
|
14
|
+
export declare const decompressInputProps: <Region extends string>({ serialized, region, bucketName, expectedBucketOwner, propsType, providerSpecifics, }: {
|
|
14
15
|
serialized: SerializedInputProps;
|
|
15
|
-
region:
|
|
16
|
+
region: Region;
|
|
16
17
|
bucketName: string;
|
|
17
18
|
expectedBucketOwner: string;
|
|
18
19
|
propsType: PropsType;
|
|
20
|
+
providerSpecifics: ProviderSpecifics<Region>;
|
|
19
21
|
}) => Promise<string>;
|
|
20
22
|
export {};
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.decompressInputProps = exports.compressInputProps = exports.getNeedsToUpload = exports.serializeOrThrow = void 0;
|
|
4
|
+
const client_1 = require("@remotion/serverless/client");
|
|
4
5
|
const no_react_1 = require("remotion/no-react");
|
|
5
|
-
const get_or_create_bucket_1 = require("../api/get-or-create-bucket");
|
|
6
|
-
const io_1 = require("../functions/helpers/io");
|
|
7
|
-
const constants_1 = require("./constants");
|
|
8
|
-
const random_hash_1 = require("./random-hash");
|
|
9
|
-
const stream_to_string_1 = require("./stream-to-string");
|
|
10
6
|
const validate_webhook_1 = require("./validate-webhook");
|
|
11
7
|
const makeKey = (type, hash) => {
|
|
12
8
|
if (type === 'input-props') {
|
|
13
|
-
return (0,
|
|
9
|
+
return (0, client_1.inputPropsKey)(hash);
|
|
14
10
|
}
|
|
15
|
-
return (0,
|
|
11
|
+
return (0, client_1.resolvedPropsKey)(hash);
|
|
16
12
|
};
|
|
17
13
|
const serializeOrThrow = (inputProps, propsType) => {
|
|
18
14
|
try {
|
|
@@ -39,15 +35,16 @@ const getNeedsToUpload = (type, sizes) => {
|
|
|
39
35
|
return false;
|
|
40
36
|
};
|
|
41
37
|
exports.getNeedsToUpload = getNeedsToUpload;
|
|
42
|
-
const compressInputProps = async ({ stringifiedInputProps, region, userSpecifiedBucketName, propsType, needsToUpload, }) => {
|
|
43
|
-
const hash =
|
|
38
|
+
const compressInputProps = async ({ stringifiedInputProps, region, userSpecifiedBucketName, propsType, needsToUpload, providerSpecifics, }) => {
|
|
39
|
+
const hash = providerSpecifics.randomHash();
|
|
44
40
|
if (needsToUpload) {
|
|
45
|
-
const bucketName = userSpecifiedBucketName !== null && userSpecifiedBucketName !== void 0 ? userSpecifiedBucketName : (await (0,
|
|
41
|
+
const bucketName = userSpecifiedBucketName !== null && userSpecifiedBucketName !== void 0 ? userSpecifiedBucketName : (await (0, client_1.internalGetOrCreateBucket)({
|
|
46
42
|
region,
|
|
47
43
|
enableFolderExpiry: null,
|
|
48
44
|
customCredentials: null,
|
|
45
|
+
providerSpecifics,
|
|
49
46
|
})).bucketName;
|
|
50
|
-
await
|
|
47
|
+
await providerSpecifics.writeFile({
|
|
51
48
|
body: stringifiedInputProps,
|
|
52
49
|
bucketName,
|
|
53
50
|
region,
|
|
@@ -69,18 +66,18 @@ const compressInputProps = async ({ stringifiedInputProps, region, userSpecified
|
|
|
69
66
|
};
|
|
70
67
|
};
|
|
71
68
|
exports.compressInputProps = compressInputProps;
|
|
72
|
-
const decompressInputProps = async ({ serialized, region, bucketName, expectedBucketOwner, propsType, }) => {
|
|
69
|
+
const decompressInputProps = async ({ serialized, region, bucketName, expectedBucketOwner, propsType, providerSpecifics, }) => {
|
|
73
70
|
if (serialized.type === 'payload') {
|
|
74
71
|
return serialized.payload;
|
|
75
72
|
}
|
|
76
73
|
try {
|
|
77
|
-
const response = await
|
|
74
|
+
const response = await providerSpecifics.readFile({
|
|
78
75
|
bucketName,
|
|
79
76
|
expectedBucketOwner,
|
|
80
77
|
key: makeKey(propsType, serialized.hash),
|
|
81
78
|
region,
|
|
82
79
|
});
|
|
83
|
-
const body = await (0,
|
|
80
|
+
const body = await (0, client_1.streamToString)(response);
|
|
84
81
|
const payload = body;
|
|
85
82
|
return payload;
|
|
86
83
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AwsRegion } from '../regions';
|
|
2
|
+
import type { AwsLayer } from './hosted-layers';
|
|
3
|
+
declare const runtimePreferenceOptions: readonly ["default", "apple-emojis", "cjk"];
|
|
4
|
+
export type RuntimePreference = (typeof runtimePreferenceOptions)[number];
|
|
5
|
+
export declare const validateRuntimePreference: (option: unknown) => void;
|
|
6
|
+
export declare const getLayers: ({ option, region, enableV5Runtime, }: {
|
|
7
|
+
option: RuntimePreference;
|
|
8
|
+
region: AwsRegion;
|
|
9
|
+
enableV5Runtime: boolean;
|
|
10
|
+
}) => AwsLayer[];
|
|
11
|
+
export {};
|