@remotion/lambda 4.0.0-preload.17 → 4.0.0-reorg.10
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/bundle-lambda.js +1 -0
- package/dist/admin/make-layer-public.js +3 -3
- package/dist/api/bucket-exists.d.ts +1 -1
- package/dist/api/clean-items.d.ts +1 -1
- package/dist/api/create-bucket.d.ts +1 -1
- package/dist/api/create-function.d.ts +4 -3
- package/dist/api/create-function.js +3 -2
- package/dist/api/delete-function.d.ts +1 -1
- package/dist/api/delete-site.d.ts +1 -1
- package/dist/api/deploy-function.d.ts +3 -2
- package/dist/api/deploy-function.js +3 -0
- package/dist/api/deploy-site.d.ts +3 -3
- package/dist/api/deploy-site.js +2 -3
- package/dist/api/download-media.d.ts +2 -2
- package/dist/api/enable-s3-website.d.ts +1 -1
- package/dist/api/estimate-price.d.ts +2 -2
- package/dist/api/get-aws-client.d.ts +2 -2
- package/dist/api/get-aws-client.js +5 -1
- package/dist/api/get-buckets.d.ts +1 -1
- package/dist/api/get-function-info.d.ts +2 -2
- package/dist/api/get-functions.d.ts +2 -2
- package/dist/api/get-or-create-bucket.d.ts +1 -1
- package/dist/api/get-regions.d.ts +1 -1
- package/dist/api/get-render-progress.d.ts +2 -2
- package/dist/api/get-sites.d.ts +2 -2
- package/dist/api/iam-validation/role-permissions.d.ts +2 -1
- package/dist/api/iam-validation/simulate-rule.d.ts +1 -1
- package/dist/api/iam-validation/simulate.d.ts +2 -2
- package/dist/api/mock-functions.d.ts +3 -3
- package/dist/api/presign-url.d.ts +3 -2
- package/dist/api/render-media-on-lambda.d.ts +13 -8
- package/dist/api/render-media-on-lambda.js +12 -5
- package/dist/api/render-still-on-lambda.d.ts +7 -6
- package/dist/api/render-still-on-lambda.js +4 -4
- package/dist/api/upload-dir.d.ts +2 -2
- package/dist/api/upload-dir.js +2 -1
- package/dist/cli/args.d.ts +5 -3
- package/dist/cli/commands/functions/deploy.js +6 -2
- package/dist/cli/commands/render/progress.d.ts +4 -4
- package/dist/cli/commands/render/progress.js +11 -3
- package/dist/cli/commands/render/render.js +13 -3
- package/dist/cli/commands/sites/create.js +2 -3
- package/dist/cli/commands/sites/ls.js +1 -2
- package/dist/cli/commands/sites/rm.js +2 -3
- package/dist/cli/commands/sites/rmall.js +2 -3
- package/dist/cli/commands/still.js +1 -2
- package/dist/cli/get-aws-region.d.ts +1 -1
- package/dist/cli/helpers/get-cloudwatch-stream-url.d.ts +2 -2
- package/dist/cli/helpers/progress-bar.js +1 -2
- package/dist/cli/index.js +11 -1
- package/dist/defaults.js +5 -1
- package/dist/functions/chunk-optimization/can-use-optimization.d.ts +1 -1
- package/dist/functions/chunk-optimization/collect-data.d.ts +1 -1
- package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.d.ts +1 -1
- package/dist/functions/chunk-optimization/get-profile-duration.d.ts +1 -1
- package/dist/functions/chunk-optimization/is-valid-profile.d.ts +1 -1
- package/dist/functions/chunk-optimization/is-valid-profile.js +2 -2
- package/dist/functions/chunk-optimization/optimize-invocation-order.d.ts +1 -1
- package/dist/functions/chunk-optimization/optimize-profile.d.ts +1 -1
- package/dist/functions/chunk-optimization/plan-frame-ranges.d.ts +7 -4
- package/dist/functions/chunk-optimization/plan-frame-ranges.js +7 -6
- package/dist/functions/chunk-optimization/s3-optimization-file.d.ts +2 -2
- package/dist/functions/chunk-optimization/s3-optimization-file.js +1 -0
- package/dist/functions/chunk-optimization/simulate-frame-ranges.d.ts +1 -1
- package/dist/functions/chunk-optimization/sort-by-duration.d.ts +1 -1
- package/dist/functions/chunk-optimization/types.d.ts +2 -1
- package/dist/functions/helpers/calculate-chunk-times.d.ts +1 -1
- package/dist/functions/helpers/calculate-price-from-bucket.d.ts +4 -4
- package/dist/functions/helpers/concat-videos.d.ts +6 -4
- package/dist/functions/helpers/concat-videos.js +8 -2
- package/dist/functions/helpers/create-post-render-data.d.ts +6 -6
- package/dist/functions/helpers/create-post-render-data.js +5 -5
- package/dist/functions/helpers/delete-chunks.d.ts +3 -3
- package/dist/functions/helpers/expected-out-name.d.ts +1 -1
- package/dist/functions/helpers/find-output-file-in-bucket.d.ts +2 -2
- package/dist/functions/helpers/format-costs-info.d.ts +1 -1
- package/dist/functions/helpers/get-browser-instance.d.ts +2 -1
- package/dist/functions/helpers/get-cleanup-progress.d.ts +2 -2
- package/dist/functions/helpers/get-current-architecture.d.ts +1 -1
- package/dist/functions/helpers/get-encoding-metadata.d.ts +2 -2
- package/dist/functions/helpers/get-files-to-delete.js +2 -2
- package/dist/functions/helpers/get-final-encoding-status.d.ts +2 -2
- package/dist/functions/helpers/get-lambdas-invoked-stats.d.ts +1 -1
- package/dist/functions/helpers/get-output-url-from-metadata.d.ts +1 -1
- package/dist/functions/helpers/get-post-render-data.d.ts +2 -2
- package/dist/functions/helpers/get-progress.d.ts +2 -2
- package/dist/functions/helpers/get-progress.js +12 -10
- package/dist/functions/helpers/get-render-metadata.d.ts +2 -2
- package/dist/functions/helpers/get-retry-stats.d.ts +1 -1
- package/dist/functions/helpers/get-time-to-finish.d.ts +1 -1
- package/dist/functions/helpers/inspect-errors.d.ts +3 -3
- package/dist/functions/helpers/io.d.ts +8 -6
- package/dist/functions/helpers/io.js +3 -1
- package/dist/functions/helpers/print-cloudwatch-helper.d.ts +1 -1
- package/dist/functions/helpers/read-with-progress.d.ts +3 -2
- package/dist/functions/helpers/read-with-progress.js +13 -1
- package/dist/functions/helpers/validate-composition.d.ts +5 -4
- package/dist/functions/helpers/validate-composition.js +2 -1
- package/dist/functions/helpers/write-lambda-error.d.ts +1 -1
- package/dist/functions/helpers/write-lambda-error.js +1 -0
- package/dist/functions/helpers/write-post-render-data.d.ts +2 -2
- package/dist/functions/helpers/write-post-render-data.js +1 -0
- package/dist/functions/index.d.ts +3 -2
- package/dist/functions/index.js +4 -4
- package/dist/functions/info.d.ts +1 -1
- package/dist/functions/launch.d.ts +1 -1
- package/dist/functions/launch.js +28 -16
- package/dist/functions/progress.d.ts +1 -1
- package/dist/functions/renderer.d.ts +1 -1
- package/dist/functions/renderer.js +16 -11
- package/dist/functions/start.d.ts +1 -1
- package/dist/functions/start.js +5 -2
- package/dist/functions/still.d.ts +1 -1
- package/dist/functions/still.js +10 -6
- package/dist/index.d.ts +33 -18
- package/dist/pricing/price-per-1-s.d.ts +1 -1
- package/dist/shared/aws-clients.d.ts +1 -1
- package/dist/shared/bundle-site.d.ts +1 -6
- package/dist/shared/call-lambda.d.ts +3 -3
- package/dist/shared/check-credentials.js +2 -2
- package/dist/shared/constants.d.ts +27 -11
- package/dist/shared/constants.js +1 -1
- package/dist/shared/content-disposition-header.d.ts +7 -0
- package/dist/shared/content-disposition-header.js +19 -0
- package/dist/shared/convert-to-serve-url.d.ts +1 -1
- package/dist/shared/get-account-id.d.ts +1 -1
- package/dist/shared/get-function-version.d.ts +2 -2
- package/dist/shared/get-most-expensive-chunks.d.ts +8 -0
- package/dist/shared/get-most-expensive-chunks.js +25 -0
- package/dist/shared/hosted-layers.d.ts +2 -2
- package/dist/shared/hosted-layers.js +80 -80
- package/dist/shared/make-s3-key.d.ts +1 -0
- package/dist/shared/make-s3-key.js +11 -0
- package/dist/shared/make-s3-url.d.ts +1 -1
- package/dist/shared/random-hash.d.ts +2 -2
- package/dist/shared/random-hash.js +1 -1
- package/dist/shared/return-values.d.ts +7 -7
- package/dist/shared/return-values.js +0 -1
- package/dist/shared/stream-to-string.d.ts +2 -1
- package/dist/shared/truthy.d.ts +3 -0
- package/dist/shared/truthy.js +7 -0
- package/dist/shared/validate-aws-region.d.ts +1 -1
- package/dist/shared/validate-custom-role-arn.d.ts +1 -0
- package/dist/shared/validate-custom-role-arn.js +11 -0
- package/dist/shared/validate-download-behavior.d.ts +1 -0
- package/dist/shared/validate-download-behavior.js +21 -0
- package/dist/shared/validate-lambda-codec.d.ts +4 -0
- package/dist/shared/validate-lambda-codec.js +29 -0
- package/dist/shared/validate-outname.d.ts +1 -1
- package/dist/shared/validate-presign-expiration.d.ts +0 -2
- package/dist/shared/validate-presign-expiration.js +7 -7
- package/dist/shared/validate-privacy.d.ts +1 -1
- package/package.json +10 -12
- package/remotionlambda.zip +0 -0
- package/dist/cli/helpers/format-bytes.d.ts +0 -6
- package/dist/cli/helpers/format-bytes.js +0 -103
- package/dist/shared/chunk.d.ts +0 -1
- package/dist/shared/chunk.js +0 -11
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _Object } from '@aws-sdk/client-s3';
|
|
2
|
-
import { CleanupInfo } from '../../shared/constants';
|
|
1
|
+
import type { _Object } from '@aws-sdk/client-s3';
|
|
2
|
+
import type { CleanupInfo } from '../../shared/constants';
|
|
3
3
|
export declare const getCleanupProgress: ({ contents, output, chunkCount, renderId, }: {
|
|
4
4
|
contents: _Object[];
|
|
5
5
|
output: string | null;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { LambdaArchitecture } from '../../shared/validate-architecture';
|
|
1
|
+
import type { LambdaArchitecture } from '../../shared/validate-architecture';
|
|
2
2
|
export declare const getCurrentArchitecture: () => LambdaArchitecture;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EncodingProgress } from '../../defaults';
|
|
2
|
-
import { AwsRegion } from '../../pricing/aws-regions';
|
|
1
|
+
import type { EncodingProgress } from '../../defaults';
|
|
2
|
+
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
3
3
|
export declare const getEncodingMetadata: ({ exists, bucketName, renderId, region, expectedBucketOwner, }: {
|
|
4
4
|
exists: boolean;
|
|
5
5
|
bucketName: string;
|
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getFilesToDelete = void 0;
|
|
4
4
|
const constants_1 = require("../../shared/constants");
|
|
5
5
|
const getFilesToDelete = ({ chunkCount, renderId, }) => {
|
|
6
|
-
const chunks = new Array(chunkCount).fill(true).map((
|
|
6
|
+
const chunks = new Array(chunkCount).fill(true).map((_x, i) => (0, constants_1.chunkKeyForIndex)({
|
|
7
7
|
index: i,
|
|
8
8
|
renderId,
|
|
9
9
|
}));
|
|
10
10
|
const lambdaTimings = new Array(chunkCount)
|
|
11
11
|
.fill(true)
|
|
12
|
-
.map((
|
|
12
|
+
.map((_x, i) => (0, constants_1.lambdaTimingsPrefixForChunk)(renderId, i));
|
|
13
13
|
return [
|
|
14
14
|
{
|
|
15
15
|
name: (0, constants_1.lambdaInitializedPrefix)(renderId),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EncodingProgress, RenderMetadata } from '../../shared/constants';
|
|
2
|
-
import { LambdaInvokeStats } from './get-lambdas-invoked-stats';
|
|
1
|
+
import type { EncodingProgress, RenderMetadata } from '../../shared/constants';
|
|
2
|
+
import type { LambdaInvokeStats } from './get-lambdas-invoked-stats';
|
|
3
3
|
export declare const getFinalEncodingStatus: ({ encodingStatus: encodingProgress, renderMetadata, outputFileExists, lambdaInvokeStatus, }: {
|
|
4
4
|
encodingStatus: EncodingProgress | null;
|
|
5
5
|
renderMetadata: RenderMetadata | null;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { RenderMetadata } from '../../defaults';
|
|
1
|
+
import type { RenderMetadata } from '../../defaults';
|
|
2
2
|
export declare const getOutputUrlFromMetadata: (renderMetadata: RenderMetadata, bucketName: string) => string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AwsRegion } from '../../pricing/aws-regions';
|
|
2
|
-
import { PostRenderData } from '../../shared/constants';
|
|
1
|
+
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
2
|
+
import type { PostRenderData } from '../../shared/constants';
|
|
3
3
|
export declare const getPostRenderData: ({ bucketName, renderId, region, expectedBucketOwner, }: {
|
|
4
4
|
bucketName: string;
|
|
5
5
|
renderId: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AwsRegion } from '../../pricing/aws-regions';
|
|
2
|
-
import { RenderProgress } from '../../shared/constants';
|
|
1
|
+
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
2
|
+
import type { RenderProgress } from '../../shared/constants';
|
|
3
3
|
export declare const getProgress: ({ bucketName, renderId, expectedBucketOwner, region, memorySizeInMb, timeoutInMiliseconds, }: {
|
|
4
4
|
bucketName: string;
|
|
5
5
|
renderId: string;
|
|
@@ -23,7 +23,7 @@ const get_time_to_finish_1 = require("./get-time-to-finish");
|
|
|
23
23
|
const inspect_errors_1 = require("./inspect-errors");
|
|
24
24
|
const io_1 = require("./io");
|
|
25
25
|
const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region, memorySizeInMb, timeoutInMiliseconds, }) => {
|
|
26
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
26
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
27
27
|
const postRenderData = await (0, get_post_render_data_1.getPostRenderData)({
|
|
28
28
|
bucketName,
|
|
29
29
|
region,
|
|
@@ -68,6 +68,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
|
|
|
68
68
|
retriesInfo: postRenderData.retriesInfo,
|
|
69
69
|
outKey: outData.key,
|
|
70
70
|
outBucket: outData.renderBucketName,
|
|
71
|
+
mostExpensiveFrameRanges: (_a = postRenderData.mostExpensiveFrameRanges) !== null && _a !== void 0 ? _a : null,
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
74
|
const contents = await (0, io_1.lambdaLs)({
|
|
@@ -114,27 +115,27 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
|
|
|
114
115
|
memorySizeInMb,
|
|
115
116
|
outputFileMetadata: outputFile,
|
|
116
117
|
architecture: (0, get_current_architecture_1.getCurrentArchitecture)(),
|
|
117
|
-
lambdasInvoked: (
|
|
118
|
+
lambdasInvoked: (_b = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.estimatedRenderLambdaInvokations) !== null && _b !== void 0 ? _b : 0,
|
|
118
119
|
// We cannot determine the ephemeral storage size, so we
|
|
119
120
|
// overestimate the price, but will only have a miniscule effect (~0.2%)
|
|
120
121
|
diskSizeInMb: constants_1.MAX_EPHEMERAL_STORAGE_IN_MB,
|
|
121
122
|
}));
|
|
122
123
|
const cleanup = (0, get_cleanup_progress_1.getCleanupProgress)({
|
|
123
|
-
chunkCount: (
|
|
124
|
+
chunkCount: (_c = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _c !== void 0 ? _c : 0,
|
|
124
125
|
contents,
|
|
125
|
-
output: (
|
|
126
|
+
output: (_d = outputFile === null || outputFile === void 0 ? void 0 : outputFile.url) !== null && _d !== void 0 ? _d : null,
|
|
126
127
|
renderId,
|
|
127
128
|
});
|
|
128
129
|
const timeToFinish = (0, get_time_to_finish_1.getTimeToFinish)({
|
|
129
|
-
lastModified: (
|
|
130
|
+
lastModified: (_e = outputFile === null || outputFile === void 0 ? void 0 : outputFile.lastModified) !== null && _e !== void 0 ? _e : null,
|
|
130
131
|
renderMetadata,
|
|
131
132
|
});
|
|
132
133
|
const chunks = contents.filter((c) => { var _a; return (_a = c.Key) === null || _a === void 0 ? void 0 : _a.startsWith((0, constants_1.chunkKey)(renderId)); });
|
|
133
|
-
const allChunks = chunks.length === ((
|
|
134
|
+
const allChunks = chunks.length === ((_f = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _f !== void 0 ? _f : Infinity);
|
|
134
135
|
const renderSize = contents
|
|
135
136
|
.map((c) => { var _a; return (_a = c.Size) !== null && _a !== void 0 ? _a : 0; })
|
|
136
137
|
.reduce((a, b) => a + b, 0);
|
|
137
|
-
const lambdasInvokedStats = (0, get_lambdas_invoked_stats_1.getLambdasInvokedStats)(contents, renderId, (
|
|
138
|
+
const lambdasInvokedStats = (0, get_lambdas_invoked_stats_1.getLambdasInvokedStats)(contents, renderId, (_g = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.estimatedRenderLambdaInvokations) !== null && _g !== void 0 ? _g : null, (_h = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.startedDate) !== null && _h !== void 0 ? _h : null);
|
|
138
139
|
const retriesInfo = (0, get_retry_stats_1.getRetryStats)({
|
|
139
140
|
contents,
|
|
140
141
|
renderId,
|
|
@@ -146,7 +147,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
|
|
|
146
147
|
lambdaInvokeStatus: lambdasInvokedStats,
|
|
147
148
|
});
|
|
148
149
|
const chunkCount = outputFile
|
|
149
|
-
? (
|
|
150
|
+
? (_j = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _j !== void 0 ? _j : 0
|
|
150
151
|
: chunks.length;
|
|
151
152
|
// We add a 20 second buffer for it, since AWS timeshifts can be quite a lot. Once it's 20sec over the limit, we consider it timed out
|
|
152
153
|
const isBeyondTimeout = renderMetadata &&
|
|
@@ -177,7 +178,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
|
|
|
177
178
|
renderId,
|
|
178
179
|
renderMetadata,
|
|
179
180
|
bucket: bucketName,
|
|
180
|
-
outputFile: (
|
|
181
|
+
outputFile: (_k = outputFile === null || outputFile === void 0 ? void 0 : outputFile.url) !== null && _k !== void 0 ? _k : null,
|
|
181
182
|
timeToFinish,
|
|
182
183
|
errors: allErrors,
|
|
183
184
|
fatalErrorEncountered: allErrors.some((f) => f.isFatal && !f.willRetry),
|
|
@@ -192,7 +193,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
|
|
|
192
193
|
type: 'absolute-time',
|
|
193
194
|
})
|
|
194
195
|
: null,
|
|
195
|
-
timeToInvokeLambdas: (
|
|
196
|
+
timeToInvokeLambdas: (_l = encodingStatus === null || encodingStatus === void 0 ? void 0 : encodingStatus.timeToInvoke) !== null && _l !== void 0 ? _l : lambdasInvokedStats.timeToInvokeLambdas,
|
|
196
197
|
overallProgress: (0, get_overall_progress_1.getOverallProgress)({
|
|
197
198
|
cleanup: cleanup ? cleanup.filesDeleted / cleanup.minFilesToDelete : 0,
|
|
198
199
|
encoding: finalEncodingStatus && renderMetadata
|
|
@@ -212,6 +213,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
|
|
|
212
213
|
outBucket: outputFile && renderMetadata
|
|
213
214
|
? (0, expected_out_name_1.getExpectedOutName)(renderMetadata, bucketName).renderBucketName
|
|
214
215
|
: null,
|
|
216
|
+
mostExpensiveFrameRanges: null,
|
|
215
217
|
};
|
|
216
218
|
};
|
|
217
219
|
exports.getProgress = getProgress;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AwsRegion } from '../../pricing/aws-regions';
|
|
2
|
-
import { RenderMetadata } from '../../shared/constants';
|
|
1
|
+
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
2
|
+
import type { RenderMetadata } from '../../shared/constants';
|
|
3
3
|
export declare const getRenderMetadata: ({ bucketName, renderId, region, expectedBucketOwner, }: {
|
|
4
4
|
bucketName: string;
|
|
5
5
|
renderId: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { _Object } from '@aws-sdk/client-s3';
|
|
2
|
-
import { AwsRegion } from '../../pricing/aws-regions';
|
|
3
|
-
import { EnhancedErrorInfo } from './write-lambda-error';
|
|
1
|
+
import type { _Object } from '@aws-sdk/client-s3';
|
|
2
|
+
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
3
|
+
import type { EnhancedErrorInfo } from './write-lambda-error';
|
|
4
4
|
export declare const inspectErrors: ({ contents, bucket, region, renderId, expectedBucketOwner, }: {
|
|
5
5
|
contents: _Object[];
|
|
6
6
|
bucket: string;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { _Object } from '@aws-sdk/client-s3';
|
|
2
|
-
import { ReadStream } from 'fs';
|
|
3
|
-
import { Readable } from 'stream';
|
|
4
|
-
import { AwsRegion } from '../../pricing/aws-regions';
|
|
5
|
-
import { Privacy } from '../../shared/constants';
|
|
1
|
+
import type { _Object } from '@aws-sdk/client-s3';
|
|
2
|
+
import type { ReadStream } from 'fs';
|
|
3
|
+
import type { Readable } from 'stream';
|
|
4
|
+
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
5
|
+
import type { Privacy } from '../../shared/constants';
|
|
6
|
+
import type { DownloadBehavior } from '../../shared/content-disposition-header';
|
|
6
7
|
export declare type LambdaLSInput = {
|
|
7
8
|
bucketName: string;
|
|
8
9
|
prefix: string;
|
|
@@ -12,13 +13,14 @@ export declare type LambdaLSInput = {
|
|
|
12
13
|
};
|
|
13
14
|
export declare type LambdaLsReturnType = Promise<_Object[]>;
|
|
14
15
|
export declare const lambdaLs: ({ bucketName, prefix, region, expectedBucketOwner, continuationToken, }: LambdaLSInput) => LambdaLsReturnType;
|
|
15
|
-
export declare const lambdaWriteFile: ({ bucketName, key, body, region, privacy, expectedBucketOwner, }: {
|
|
16
|
+
export declare const lambdaWriteFile: ({ bucketName, key, body, region, privacy, expectedBucketOwner, downloadBehavior, }: {
|
|
16
17
|
bucketName: string;
|
|
17
18
|
key: string;
|
|
18
19
|
body: ReadStream | string;
|
|
19
20
|
region: AwsRegion;
|
|
20
21
|
privacy: Privacy;
|
|
21
22
|
expectedBucketOwner: string | null;
|
|
23
|
+
downloadBehavior: DownloadBehavior | null;
|
|
22
24
|
}) => Promise<void>;
|
|
23
25
|
export declare const lambdaReadFile: ({ bucketName, key, region, expectedBucketOwner, }: {
|
|
24
26
|
bucketName: string;
|
|
@@ -7,6 +7,7 @@ exports.lambdaReadFile = exports.lambdaWriteFile = exports.lambdaLs = void 0;
|
|
|
7
7
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
8
8
|
const mime_types_1 = __importDefault(require("mime-types"));
|
|
9
9
|
const aws_clients_1 = require("../../shared/aws-clients");
|
|
10
|
+
const content_disposition_header_1 = require("../../shared/content-disposition-header");
|
|
10
11
|
const lambdaLs = async ({ bucketName, prefix, region, expectedBucketOwner, continuationToken, }) => {
|
|
11
12
|
var _a, _b, _c;
|
|
12
13
|
try {
|
|
@@ -46,7 +47,7 @@ const lambdaLs = async ({ bucketName, prefix, region, expectedBucketOwner, conti
|
|
|
46
47
|
}
|
|
47
48
|
};
|
|
48
49
|
exports.lambdaLs = lambdaLs;
|
|
49
|
-
const lambdaWriteFile = async ({ bucketName, key, body, region, privacy, expectedBucketOwner, }) => {
|
|
50
|
+
const lambdaWriteFile = async ({ bucketName, key, body, region, privacy, expectedBucketOwner, downloadBehavior, }) => {
|
|
50
51
|
await (0, aws_clients_1.getS3Client)(region).send(new client_s3_1.PutObjectCommand({
|
|
51
52
|
Bucket: bucketName,
|
|
52
53
|
Key: key,
|
|
@@ -54,6 +55,7 @@ const lambdaWriteFile = async ({ bucketName, key, body, region, privacy, expecte
|
|
|
54
55
|
ACL: privacy === 'private' ? 'private' : 'public-read',
|
|
55
56
|
ExpectedBucketOwner: expectedBucketOwner !== null && expectedBucketOwner !== void 0 ? expectedBucketOwner : undefined,
|
|
56
57
|
ContentType: mime_types_1.default.lookup(key) || 'application/octet-stream',
|
|
58
|
+
ContentDisposition: (0, content_disposition_header_1.getContentDispositionHeader)(downloadBehavior),
|
|
57
59
|
}));
|
|
58
60
|
};
|
|
59
61
|
exports.lambdaWriteFile = lambdaWriteFile;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { LambdaRoutines } from '../../defaults';
|
|
1
|
+
import type { LambdaRoutines } from '../../defaults';
|
|
2
2
|
export declare const printCloudwatchHelper: (type: LambdaRoutines, data: Record<string, string>) => void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AwsRegion } from '../../pricing/aws-regions';
|
|
1
|
+
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
2
2
|
export declare type LambdaReadFileProgress = (progress: {
|
|
3
3
|
totalSize: number;
|
|
4
4
|
downloaded: number;
|
|
5
|
-
|
|
5
|
+
percent: number;
|
|
6
6
|
}) => unknown;
|
|
7
7
|
export declare const lambdaDownloadFileWithProgress: ({ bucketName, key, region, expectedBucketOwner, outputPath, onProgress, }: {
|
|
8
8
|
bucketName: string;
|
|
@@ -13,4 +13,5 @@ export declare const lambdaDownloadFileWithProgress: ({ bucketName, key, region,
|
|
|
13
13
|
onProgress: LambdaReadFileProgress;
|
|
14
14
|
}) => Promise<{
|
|
15
15
|
sizeInBytes: number;
|
|
16
|
+
to: string;
|
|
16
17
|
}>;
|
|
@@ -13,6 +13,18 @@ const lambdaDownloadFileWithProgress = async ({ bucketName, key, region, expecte
|
|
|
13
13
|
Key: key,
|
|
14
14
|
});
|
|
15
15
|
const presigned = await (0, s3_request_presigner_1.getSignedUrl)(client, command);
|
|
16
|
-
|
|
16
|
+
const { to, sizeInBytes } = await renderer_1.RenderInternals.downloadFile({
|
|
17
|
+
url: presigned,
|
|
18
|
+
onProgress: ({ downloaded, percent, totalSize }) => {
|
|
19
|
+
// On Lambda, it should always be a number
|
|
20
|
+
onProgress({
|
|
21
|
+
downloaded,
|
|
22
|
+
percent: percent,
|
|
23
|
+
totalSize: totalSize,
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
to: () => outputPath,
|
|
27
|
+
});
|
|
28
|
+
return { sizeInBytes, to };
|
|
17
29
|
};
|
|
18
30
|
exports.lambdaDownloadFileWithProgress = lambdaDownloadFileWithProgress;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ChromiumOptions, openBrowser } from '@remotion/renderer';
|
|
2
|
-
import {
|
|
3
|
-
import { Await } from '../../shared/await';
|
|
1
|
+
import type { ChromiumOptions, FfmpegExecutable, openBrowser } from '@remotion/renderer';
|
|
2
|
+
import type { TCompMetadata } from 'remotion';
|
|
3
|
+
import type { Await } from '../../shared/await';
|
|
4
4
|
declare type ValidateCompositionOptions = {
|
|
5
5
|
serveUrl: string;
|
|
6
6
|
composition: string;
|
|
@@ -8,9 +8,10 @@ declare type ValidateCompositionOptions = {
|
|
|
8
8
|
inputProps: unknown;
|
|
9
9
|
envVariables: Record<string, string> | undefined;
|
|
10
10
|
ffmpegExecutable: FfmpegExecutable;
|
|
11
|
+
ffprobeExecutable: FfmpegExecutable;
|
|
11
12
|
timeoutInMilliseconds: number;
|
|
12
13
|
chromiumOptions: ChromiumOptions;
|
|
13
14
|
port: number | null;
|
|
14
15
|
};
|
|
15
|
-
export declare const validateComposition: ({ serveUrl, composition, browserInstance, inputProps, envVariables, timeoutInMilliseconds, ffmpegExecutable, chromiumOptions, port, }: ValidateCompositionOptions) => Promise<TCompMetadata>;
|
|
16
|
+
export declare const validateComposition: ({ serveUrl, composition, browserInstance, inputProps, envVariables, timeoutInMilliseconds, ffmpegExecutable, ffprobeExecutable, chromiumOptions, port, }: ValidateCompositionOptions) => Promise<TCompMetadata>;
|
|
16
17
|
export {};
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateComposition = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
5
|
-
const validateComposition = async ({ serveUrl, composition, browserInstance, inputProps, envVariables, timeoutInMilliseconds, ffmpegExecutable, chromiumOptions, port, }) => {
|
|
5
|
+
const validateComposition = async ({ serveUrl, composition, browserInstance, inputProps, envVariables, timeoutInMilliseconds, ffmpegExecutable, ffprobeExecutable, chromiumOptions, port, }) => {
|
|
6
6
|
const compositions = await (0, renderer_1.getCompositions)(serveUrl, {
|
|
7
7
|
puppeteerInstance: browserInstance,
|
|
8
8
|
inputProps: inputProps,
|
|
9
9
|
envVariables,
|
|
10
10
|
ffmpegExecutable,
|
|
11
|
+
ffprobeExecutable,
|
|
11
12
|
timeoutInMilliseconds,
|
|
12
13
|
chromiumOptions,
|
|
13
14
|
port,
|
|
@@ -33,6 +33,7 @@ const writeLambdaError = async ({ bucketName, renderId, errorInfo, expectedBucke
|
|
|
33
33
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
34
34
|
privacy: 'private',
|
|
35
35
|
expectedBucketOwner,
|
|
36
|
+
downloadBehavior: null,
|
|
36
37
|
});
|
|
37
38
|
};
|
|
38
39
|
exports.writeLambdaError = writeLambdaError;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AwsRegion } from '../../pricing/aws-regions';
|
|
2
|
-
import { PostRenderData } from '../../shared/constants';
|
|
1
|
+
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
2
|
+
import type { PostRenderData } from '../../shared/constants';
|
|
3
3
|
export declare const writePostRenderData: ({ bucketName, renderId, postRenderData, expectedBucketOwner, region, }: {
|
|
4
4
|
bucketName: string;
|
|
5
5
|
renderId: string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { LambdaPayload
|
|
2
|
-
import {
|
|
1
|
+
import type { LambdaPayload } from '../shared/constants';
|
|
2
|
+
import { LambdaRoutines } from '../shared/constants';
|
|
3
|
+
import type { LambdaReturnValues } from '../shared/return-values';
|
|
3
4
|
export declare const handler: <T extends LambdaRoutines>(params: LambdaPayload, context: {
|
|
4
5
|
invokedFunctionArn: string;
|
|
5
6
|
getRemainingTimeInMillis: () => number;
|
package/dist/functions/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handler = void 0;
|
|
4
|
-
const
|
|
4
|
+
const renderer_1 = require("@remotion/renderer");
|
|
5
5
|
const constants_1 = require("../shared/constants");
|
|
6
6
|
const clean_tmpdir_1 = require("./helpers/clean-tmpdir");
|
|
7
7
|
const is_warm_1 = require("./helpers/is-warm");
|
|
@@ -9,7 +9,7 @@ const print_cloudwatch_helper_1 = require("./helpers/print-cloudwatch-helper");
|
|
|
9
9
|
const info_1 = require("./info");
|
|
10
10
|
const launch_1 = require("./launch");
|
|
11
11
|
const progress_1 = require("./progress");
|
|
12
|
-
const
|
|
12
|
+
const renderer_2 = require("./renderer");
|
|
13
13
|
const start_1 = require("./start");
|
|
14
14
|
const still_1 = require("./still");
|
|
15
15
|
const handler = async (params, context) => {
|
|
@@ -56,10 +56,10 @@ const handler = async (params, context) => {
|
|
|
56
56
|
(0, print_cloudwatch_helper_1.printCloudwatchHelper)(constants_1.LambdaRoutines.renderer, {
|
|
57
57
|
renderId: params.renderId,
|
|
58
58
|
chunk: String(params.chunk),
|
|
59
|
-
dumpLogs: String(
|
|
59
|
+
dumpLogs: String(renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose')),
|
|
60
60
|
inputProps: JSON.stringify(params.inputProps),
|
|
61
61
|
});
|
|
62
|
-
return (0,
|
|
62
|
+
return (0, renderer_2.rendererHandler)(params, {
|
|
63
63
|
expectedBucketOwner: currentUserId,
|
|
64
64
|
isWarm,
|
|
65
65
|
});
|
package/dist/functions/info.d.ts
CHANGED
package/dist/functions/launch.js
CHANGED
|
@@ -46,7 +46,7 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
46
46
|
}
|
|
47
47
|
const startedDate = Date.now();
|
|
48
48
|
const [browserInstance, optimization] = await Promise.all([
|
|
49
|
-
(0, get_browser_instance_1.getBrowserInstance)(
|
|
49
|
+
(0, get_browser_instance_1.getBrowserInstance)(renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'), params.chromiumOptions),
|
|
50
50
|
(0, s3_optimization_file_1.getOptimization)({
|
|
51
51
|
bucketName: params.bucketName,
|
|
52
52
|
siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
|
|
@@ -62,19 +62,21 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
62
62
|
inputProps: params.inputProps,
|
|
63
63
|
envVariables: params.envVariables,
|
|
64
64
|
ffmpegExecutable: null,
|
|
65
|
+
ffprobeExecutable: null,
|
|
65
66
|
timeoutInMilliseconds: params.timeoutInMilliseconds,
|
|
66
67
|
chromiumOptions: params.chromiumOptions,
|
|
67
68
|
port: null,
|
|
68
69
|
});
|
|
69
|
-
remotion_1.Internals.validateDurationInFrames(comp.durationInFrames, 'passed to
|
|
70
|
-
remotion_1.Internals.validateFps(comp.fps, 'passed to
|
|
71
|
-
remotion_1.Internals.validateDimension(comp.height, 'height', 'passed to
|
|
72
|
-
remotion_1.Internals.validateDimension(comp.width, 'width', 'passed to
|
|
70
|
+
remotion_1.Internals.validateDurationInFrames(comp.durationInFrames, 'passed to a Lambda render');
|
|
71
|
+
remotion_1.Internals.validateFps(comp.fps, 'passed to a Lambda render', false);
|
|
72
|
+
remotion_1.Internals.validateDimension(comp.height, 'height', 'passed to a Lambda render');
|
|
73
|
+
remotion_1.Internals.validateDimension(comp.width, 'width', 'passed to a Lambda render');
|
|
74
|
+
renderer_1.RenderInternals.validateConcurrency(params.concurrencyPerLambda, 'concurrencyPerLambda');
|
|
73
75
|
const realFrameRange = renderer_1.RenderInternals.getRealFrameRange(comp.durationInFrames, params.frameRange);
|
|
74
|
-
const frameCount = renderer_1.RenderInternals.
|
|
75
|
-
const framesPerLambda = (_a = params.framesPerLambda) !== null && _a !== void 0 ? _a : (0, best_frames_per_lambda_param_1.bestFramesPerLambdaParam)(frameCount);
|
|
76
|
+
const frameCount = renderer_1.RenderInternals.getFramesToRender(realFrameRange, params.everyNthFrame);
|
|
77
|
+
const framesPerLambda = (_a = params.framesPerLambda) !== null && _a !== void 0 ? _a : (0, best_frames_per_lambda_param_1.bestFramesPerLambdaParam)(frameCount.length);
|
|
76
78
|
(0, validate_frames_per_lambda_1.validateFramesPerLambda)(framesPerLambda);
|
|
77
|
-
const chunkCount = Math.ceil(frameCount / framesPerLambda);
|
|
79
|
+
const chunkCount = Math.ceil(frameCount.length / framesPerLambda);
|
|
78
80
|
if (chunkCount > constants_1.MAX_FUNCTIONS_PER_RENDER) {
|
|
79
81
|
throw new Error(`Too many functions: This render would cause ${chunkCount} functions to spawn. We limit this amount to ${constants_1.MAX_FUNCTIONS_PER_RENDER} functions as more would result in diminishing returns. Values set: frameCount = ${frameCount}, framesPerLambda=${framesPerLambda}. See ${docs_url_1.DOCS_URL}/docs/lambda/concurrency for how this parameter is calculated.`);
|
|
80
82
|
}
|
|
@@ -82,12 +84,12 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
82
84
|
(0, validate_privacy_1.validatePrivacy)(params.privacy);
|
|
83
85
|
renderer_1.RenderInternals.validatePuppeteerTimeout(params.timeoutInMilliseconds);
|
|
84
86
|
const { chunks, didUseOptimization } = (0, plan_frame_ranges_1.planFrameRanges)({
|
|
85
|
-
chunkCount,
|
|
86
87
|
framesPerLambda,
|
|
87
88
|
optimization,
|
|
88
89
|
// TODO: Re-enable chunk optimization later
|
|
89
90
|
shouldUseOptimization: false,
|
|
90
91
|
frameRange: realFrameRange,
|
|
92
|
+
everyNthFrame: params.everyNthFrame,
|
|
91
93
|
});
|
|
92
94
|
const sortedChunks = chunks.slice().sort((a, b) => a[0] - b[0]);
|
|
93
95
|
const invokers = Math.round(Math.sqrt(chunks.length));
|
|
@@ -109,18 +111,20 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
109
111
|
inputProps: params.inputProps,
|
|
110
112
|
renderId: params.renderId,
|
|
111
113
|
imageFormat: params.imageFormat,
|
|
112
|
-
codec: params.codec,
|
|
114
|
+
codec: params.codec === 'h264' ? 'h264-mkv' : params.codec,
|
|
113
115
|
crf: params.crf,
|
|
114
116
|
envVariables: params.envVariables,
|
|
115
117
|
pixelFormat: params.pixelFormat,
|
|
116
118
|
proResProfile: params.proResProfile,
|
|
117
119
|
quality: params.quality,
|
|
118
120
|
privacy: params.privacy,
|
|
119
|
-
logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a :
|
|
121
|
+
logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a : 'info',
|
|
120
122
|
attempt: 1,
|
|
121
123
|
timeoutInMilliseconds: params.timeoutInMilliseconds,
|
|
122
124
|
chromiumOptions: params.chromiumOptions,
|
|
123
125
|
scale: params.scale,
|
|
126
|
+
everyNthFrame: params.everyNthFrame,
|
|
127
|
+
concurrencyPerLambda: params.concurrencyPerLambda,
|
|
124
128
|
};
|
|
125
129
|
return payload;
|
|
126
130
|
});
|
|
@@ -157,6 +161,7 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
157
161
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
158
162
|
privacy: 'private',
|
|
159
163
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
164
|
+
downloadBehavior: null,
|
|
160
165
|
});
|
|
161
166
|
await Promise.all(lambdaPayloads.map(async (payload, index) => {
|
|
162
167
|
const callingLambdaTimer = (0, timer_1.timer)('Calling chunk ' + index);
|
|
@@ -172,7 +177,7 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
172
177
|
let lastProgressUploaded = 0;
|
|
173
178
|
let encodingStop = null;
|
|
174
179
|
const onProgress = (framesEncoded, start) => {
|
|
175
|
-
const relativeProgress = framesEncoded / frameCount;
|
|
180
|
+
const relativeProgress = framesEncoded / frameCount.length;
|
|
176
181
|
const deltaSinceLastProgressUploaded = relativeProgress - lastProgressUploaded;
|
|
177
182
|
if (relativeProgress === 1) {
|
|
178
183
|
encodingStop = Date.now();
|
|
@@ -183,7 +188,7 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
183
188
|
lastProgressUploaded = relativeProgress;
|
|
184
189
|
const encodingProgress = {
|
|
185
190
|
framesEncoded,
|
|
186
|
-
totalFrames: frameCount,
|
|
191
|
+
totalFrames: frameCount.length,
|
|
187
192
|
doneIn: encodingStop ? encodingStop - start : null,
|
|
188
193
|
timeToInvoke: null,
|
|
189
194
|
};
|
|
@@ -194,6 +199,7 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
194
199
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
195
200
|
privacy: 'private',
|
|
196
201
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
202
|
+
downloadBehavior: null,
|
|
197
203
|
}).catch((err) => {
|
|
198
204
|
(0, write_lambda_error_1.writeLambdaError)({
|
|
199
205
|
bucketName: params.bucketName,
|
|
@@ -215,15 +221,18 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
215
221
|
});
|
|
216
222
|
});
|
|
217
223
|
};
|
|
224
|
+
const fps = comp.fps / params.everyNthFrame;
|
|
218
225
|
const { outfile, cleanupChunksProm, encodingStart } = await (0, concat_videos_1.concatVideosS3)({
|
|
219
226
|
bucket: params.bucketName,
|
|
220
227
|
expectedFiles: chunkCount,
|
|
221
228
|
onProgress,
|
|
222
|
-
numberOfFrames: frameCount,
|
|
229
|
+
numberOfFrames: frameCount.length,
|
|
223
230
|
renderId: params.renderId,
|
|
224
231
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
225
232
|
codec: params.codec,
|
|
226
233
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
234
|
+
fps,
|
|
235
|
+
numberOfGifLoops: params.numberOfGifLoops,
|
|
227
236
|
});
|
|
228
237
|
if (!encodingStop) {
|
|
229
238
|
encodingStop = Date.now();
|
|
@@ -237,6 +246,7 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
237
246
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
238
247
|
privacy: params.privacy,
|
|
239
248
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
249
|
+
downloadBehavior: params.downloadBehavior,
|
|
240
250
|
});
|
|
241
251
|
let chunkProm = Promise.resolve();
|
|
242
252
|
// TODO: Enable in a later release
|
|
@@ -261,6 +271,7 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
261
271
|
framesPerLambda,
|
|
262
272
|
lambdaVersion: constants_1.CURRENT_VERSION,
|
|
263
273
|
frameRange: realFrameRange,
|
|
274
|
+
everyNthFrame: params.everyNthFrame,
|
|
264
275
|
},
|
|
265
276
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
266
277
|
compositionId: params.composition,
|
|
@@ -279,8 +290,8 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
279
290
|
}),
|
|
280
291
|
]);
|
|
281
292
|
const finalEncodingProgress = {
|
|
282
|
-
framesEncoded: frameCount,
|
|
283
|
-
totalFrames: frameCount,
|
|
293
|
+
framesEncoded: frameCount.length,
|
|
294
|
+
totalFrames: frameCount.length,
|
|
284
295
|
doneIn: encodingStop ? encodingStop - encodingStart : null,
|
|
285
296
|
timeToInvoke: (0, get_lambdas_invoked_stats_1.getLambdasInvokedStats)(contents, params.renderId, renderMetadata.estimatedRenderLambdaInvokations, renderMetadata.startedDate).timeToInvokeLambdas,
|
|
286
297
|
};
|
|
@@ -291,6 +302,7 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
291
302
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
292
303
|
privacy: 'private',
|
|
293
304
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
305
|
+
downloadBehavior: null,
|
|
294
306
|
});
|
|
295
307
|
const errorExplanationsProm = (0, inspect_errors_1.inspectErrors)({
|
|
296
308
|
contents,
|