@remotion/serverless-client 4.0.261
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-make.log +6 -0
- package/LICENSE.md +49 -0
- package/README.md +5 -0
- package/bundle.ts +15 -0
- package/dist/await.d.ts +1 -0
- package/dist/await.js +2 -0
- package/dist/calculate-chunk-times.d.ts +5 -0
- package/dist/calculate-chunk-times.js +29 -0
- package/dist/compress-props.d.ts +30 -0
- package/dist/compress-props.js +97 -0
- package/dist/constants.d.ts +314 -0
- package/dist/constants.js +64 -0
- package/dist/docs-url.d.ts +1 -0
- package/dist/docs-url.js +4 -0
- package/dist/error-category.d.ts +3 -0
- package/dist/error-category.js +16 -0
- package/dist/esm/index.mjs +3467 -0
- package/dist/estimate-price-from-bucket.d.ts +15 -0
- package/dist/estimate-price-from-bucket.js +31 -0
- package/dist/expected-out-name.d.ts +10 -0
- package/dist/expected-out-name.js +53 -0
- package/dist/format-costs-info.d.ts +2 -0
- package/dist/format-costs-info.js +23 -0
- package/dist/get-custom-out-name.d.ts +7 -0
- package/dist/get-custom-out-name.js +33 -0
- package/dist/get-files-in-folder.d.ts +5 -0
- package/dist/get-files-in-folder.js +2 -0
- package/dist/get-or-create-bucket.d.ts +23 -0
- package/dist/get-or-create-bucket.js +44 -0
- package/dist/get-overall-progress-from-storage.d.ts +11 -0
- package/dist/get-overall-progress-from-storage.js +25 -0
- package/dist/get-overall-progress.d.ts +9 -0
- package/dist/get-overall-progress.js +23 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +105 -0
- package/dist/input-props-keys.d.ts +2 -0
- package/dist/input-props-keys.js +11 -0
- package/dist/inspect-error.d.ts +4 -0
- package/dist/inspect-error.js +39 -0
- package/dist/make-bucket-name.d.ts +3 -0
- package/dist/make-bucket-name.js +7 -0
- package/dist/make-timeout-error.d.ts +13 -0
- package/dist/make-timeout-error.js +32 -0
- package/dist/make-timeout-message.d.ts +12 -0
- package/dist/make-timeout-message.js +76 -0
- package/dist/min-max.d.ts +2 -0
- package/dist/min-max.js +33 -0
- package/dist/most-expensive-chunks.d.ts +13 -0
- package/dist/most-expensive-chunks.js +28 -0
- package/dist/overall-render-progress.d.ts +24 -0
- package/dist/overall-render-progress.js +2 -0
- package/dist/progress.d.ts +16 -0
- package/dist/progress.js +258 -0
- package/dist/provider-implementation.d.ts +193 -0
- package/dist/provider-implementation.js +2 -0
- package/dist/render-has-audio-video.d.ts +6 -0
- package/dist/render-has-audio-video.js +21 -0
- package/dist/render-metadata.d.ts +45 -0
- package/dist/render-metadata.js +2 -0
- package/dist/render-progress.d.ts +51 -0
- package/dist/render-progress.js +2 -0
- package/dist/return-values.d.ts +38 -0
- package/dist/return-values.js +2 -0
- package/dist/serialize-artifact.d.ts +9 -0
- package/dist/serialize-artifact.js +37 -0
- package/dist/stream-to-string.d.ts +2 -0
- package/dist/stream-to-string.js +14 -0
- package/dist/streaming/streaming.d.ts +101 -0
- package/dist/streaming/streaming.js +61 -0
- package/dist/test/dont-contain-forbidden.test.d.ts +1 -0
- package/dist/test/dont-contain-forbidden.test.js +18 -0
- package/dist/test/expected-out-name.test.d.ts +1 -0
- package/dist/test/expected-out-name.test.js +167 -0
- package/dist/test/min-max.test.d.ts +1 -0
- package/dist/test/min-max.test.js +24 -0
- package/dist/test/most-expensive-chunks.test.d.ts +1 -0
- package/dist/test/most-expensive-chunks.test.js +163 -0
- package/dist/truthy.d.ts +3 -0
- package/dist/truthy.js +6 -0
- package/dist/types.d.ts +55 -0
- package/dist/types.js +2 -0
- package/dist/validate-bucket-name.d.ts +7 -0
- package/dist/validate-bucket-name.js +16 -0
- package/dist/validate-download-behavior.d.ts +1 -0
- package/dist/validate-download-behavior.js +21 -0
- package/dist/validate-frames-per-function.d.ts +4 -0
- package/dist/validate-frames-per-function.js +29 -0
- package/dist/validate-outname.d.ts +9 -0
- package/dist/validate-outname.js +43 -0
- package/dist/validate-privacy.d.ts +2 -0
- package/dist/validate-privacy.js +14 -0
- package/dist/validate-webhook.d.ts +3 -0
- package/dist/validate-webhook.js +16 -0
- package/dist/webhook-types.d.ts +29 -0
- package/dist/webhook-types.js +2 -0
- package/dist/write-error-to-storage.d.ts +24 -0
- package/dist/write-error-to-storage.js +2 -0
- package/eslint.config.mjs +5 -0
- package/package.json +41 -0
- package/src/await.ts +1 -0
- package/src/calculate-chunk-times.ts +42 -0
- package/src/compress-props.ts +171 -0
- package/src/constants.ts +403 -0
- package/src/docs-url.ts +1 -0
- package/src/error-category.ts +14 -0
- package/src/estimate-price-from-bucket.ts +59 -0
- package/src/expected-out-name.ts +83 -0
- package/src/format-costs-info.ts +24 -0
- package/src/get-custom-out-name.ts +44 -0
- package/src/get-files-in-folder.ts +6 -0
- package/src/get-or-create-bucket.ts +79 -0
- package/src/get-overall-progress-from-storage.ts +44 -0
- package/src/get-overall-progress.ts +42 -0
- package/src/index.ts +125 -0
- package/src/input-props-keys.ts +7 -0
- package/src/inspect-error.ts +60 -0
- package/src/make-bucket-name.ts +9 -0
- package/src/make-timeout-error.ts +51 -0
- package/src/make-timeout-message.ts +118 -0
- package/src/min-max.ts +34 -0
- package/src/most-expensive-chunks.ts +46 -0
- package/src/overall-render-progress.ts +30 -0
- package/src/progress.ts +327 -0
- package/src/provider-implementation.ts +261 -0
- package/src/render-has-audio-video.ts +28 -0
- package/src/render-metadata.ts +60 -0
- package/src/render-progress.ts +58 -0
- package/src/return-values.ts +45 -0
- package/src/serialize-artifact.ts +51 -0
- package/src/stream-to-string.ts +14 -0
- package/src/streaming/streaming.ts +148 -0
- package/src/test/dont-contain-forbidden.test.ts +14 -0
- package/src/test/expected-out-name.test.ts +197 -0
- package/src/test/min-max.test.ts +25 -0
- package/src/test/most-expensive-chunks.test.ts +167 -0
- package/src/truthy.ts +5 -0
- package/src/types.ts +77 -0
- package/src/validate-bucket-name.ts +34 -0
- package/src/validate-download-behavior.ts +26 -0
- package/src/validate-frames-per-function.ts +54 -0
- package/src/validate-outname.ts +63 -0
- package/src/validate-privacy.ts +20 -0
- package/src/validate-webhook.ts +18 -0
- package/src/webhook-types.ts +36 -0
- package/src/write-error-to-storage.ts +23 -0
- package/tsconfig.json +18 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ProviderSpecifics } from './provider-implementation';
|
|
2
|
+
import type { RenderMetadata } from './render-metadata';
|
|
3
|
+
import type { CloudProvider } from './types';
|
|
4
|
+
export declare const makeTimeoutMessage: <Provider extends CloudProvider>({ timeoutInMilliseconds, missingChunks, renderMetadata, renderId, functionName, region, providerSpecifics, }: {
|
|
5
|
+
timeoutInMilliseconds: number;
|
|
6
|
+
missingChunks: number[];
|
|
7
|
+
renderMetadata: RenderMetadata<Provider>;
|
|
8
|
+
renderId: string;
|
|
9
|
+
region: Provider["region"];
|
|
10
|
+
functionName: string;
|
|
11
|
+
providerSpecifics: ProviderSpecifics<Provider>;
|
|
12
|
+
}) => string;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeTimeoutMessage = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const docs_url_1 = require("./docs-url");
|
|
6
|
+
const MAX_MISSING_CHUNKS = 5;
|
|
7
|
+
const makeChunkMissingMessage = ({ missingChunks, renderMetadata, region, providerSpecifics, functionName, }) => {
|
|
8
|
+
if (missingChunks.length === 0) {
|
|
9
|
+
return 'All chunks have been successfully rendered, but the main function has timed out.';
|
|
10
|
+
}
|
|
11
|
+
return [
|
|
12
|
+
`The following chunks are missing (showing ${Math.min(MAX_MISSING_CHUNKS, missingChunks.length)} out of ${missingChunks.length}):`,
|
|
13
|
+
...missingChunks
|
|
14
|
+
.map((ch) => {
|
|
15
|
+
const isLastChunk = ch === renderMetadata.totalChunks - 1;
|
|
16
|
+
const start = ch * renderMetadata.framesPerLambda;
|
|
17
|
+
const end = renderMetadata.type === 'still'
|
|
18
|
+
? 0
|
|
19
|
+
: isLastChunk
|
|
20
|
+
? renderMetadata.frameRange[1]
|
|
21
|
+
: (ch + 1) * renderMetadata.framesPerLambda - 1;
|
|
22
|
+
const msg = `Chunk ${ch} (Frames ${start} - ${end})`;
|
|
23
|
+
return [
|
|
24
|
+
msg,
|
|
25
|
+
`▸ Logs for chunk ${ch}: ${providerSpecifics.getLoggingUrlForRendererFunction({
|
|
26
|
+
functionName,
|
|
27
|
+
region,
|
|
28
|
+
rendererFunctionName: null,
|
|
29
|
+
renderId: renderMetadata.renderId,
|
|
30
|
+
chunk: ch,
|
|
31
|
+
})}`,
|
|
32
|
+
].join('\n');
|
|
33
|
+
})
|
|
34
|
+
.slice(0, 5),
|
|
35
|
+
].join('\n');
|
|
36
|
+
};
|
|
37
|
+
const makeTimeoutMessage = ({ timeoutInMilliseconds, missingChunks, renderMetadata, renderId, functionName, region, providerSpecifics, }) => {
|
|
38
|
+
const cloudWatchRendererUrl = providerSpecifics.getLoggingUrlForRendererFunction({
|
|
39
|
+
renderId,
|
|
40
|
+
functionName,
|
|
41
|
+
region,
|
|
42
|
+
rendererFunctionName: functionName,
|
|
43
|
+
chunk: null,
|
|
44
|
+
});
|
|
45
|
+
const cloudWatchLaunchUrl = providerSpecifics.getLoggingUrlForMethod({
|
|
46
|
+
renderId,
|
|
47
|
+
functionName,
|
|
48
|
+
method: constants_1.ServerlessRoutines.launch,
|
|
49
|
+
region,
|
|
50
|
+
rendererFunctionName: functionName,
|
|
51
|
+
});
|
|
52
|
+
const message = [
|
|
53
|
+
`The main function timed out after ${timeoutInMilliseconds}ms.`,
|
|
54
|
+
makeChunkMissingMessage({
|
|
55
|
+
missingChunks,
|
|
56
|
+
renderMetadata,
|
|
57
|
+
region,
|
|
58
|
+
providerSpecifics,
|
|
59
|
+
functionName,
|
|
60
|
+
}),
|
|
61
|
+
'',
|
|
62
|
+
`Consider increasing the timeout of your function.`,
|
|
63
|
+
`▸ You can use the "--timeout" parameter when deploying a function via CLI, or the "timeoutInSeconds" parameter when using the deployFunction() API.`,
|
|
64
|
+
`${docs_url_1.DOCS_URL}/docs/lambda/cli/functions#deploy`,
|
|
65
|
+
'',
|
|
66
|
+
'▸ Visit the logs for the main function:',
|
|
67
|
+
cloudWatchLaunchUrl,
|
|
68
|
+
'▸ Visit the logs for the renderer functions:',
|
|
69
|
+
cloudWatchRendererUrl,
|
|
70
|
+
'',
|
|
71
|
+
'▸ Get help on debugging this error:',
|
|
72
|
+
`${docs_url_1.DOCS_URL}/docs/lambda/troubleshooting/debug`,
|
|
73
|
+
].join('\n');
|
|
74
|
+
return message;
|
|
75
|
+
};
|
|
76
|
+
exports.makeTimeoutMessage = makeTimeoutMessage;
|
package/dist/min-max.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Standard library Math.min and Math.max can throw
|
|
3
|
+
// if array length is very long. Fixing this with own implementation
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.max = exports.min = void 0;
|
|
6
|
+
const min = (arr) => {
|
|
7
|
+
if (arr.length === 0) {
|
|
8
|
+
throw new Error('Array of 0 length');
|
|
9
|
+
}
|
|
10
|
+
let smallest = arr[0];
|
|
11
|
+
for (let i = 0; i < arr.length; i++) {
|
|
12
|
+
const elem = arr[i];
|
|
13
|
+
if (elem < smallest) {
|
|
14
|
+
smallest = elem;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return smallest;
|
|
18
|
+
};
|
|
19
|
+
exports.min = min;
|
|
20
|
+
const max = (arr) => {
|
|
21
|
+
if (arr.length === 0) {
|
|
22
|
+
throw new Error('Array of 0 length');
|
|
23
|
+
}
|
|
24
|
+
let biggest = arr[0];
|
|
25
|
+
for (let i = 0; i < arr.length; i++) {
|
|
26
|
+
const elem = arr[i];
|
|
27
|
+
if (elem > biggest) {
|
|
28
|
+
biggest = elem;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return biggest;
|
|
32
|
+
};
|
|
33
|
+
exports.max = max;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ParsedTiming } from './types';
|
|
2
|
+
export declare const OVERHEAD_TIME_PER_LAMBDA = 100;
|
|
3
|
+
export type ExpensiveChunk = {
|
|
4
|
+
chunk: number;
|
|
5
|
+
frameRange: [number, number];
|
|
6
|
+
timeInMilliseconds: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const getMostExpensiveChunks: ({ parsedTimings, framesPerFunction: framesPerLambda, firstFrame, lastFrame, }: {
|
|
9
|
+
parsedTimings: ParsedTiming[];
|
|
10
|
+
framesPerFunction: number;
|
|
11
|
+
firstFrame: number;
|
|
12
|
+
lastFrame: number;
|
|
13
|
+
}) => ExpensiveChunk[];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMostExpensiveChunks = exports.OVERHEAD_TIME_PER_LAMBDA = void 0;
|
|
4
|
+
exports.OVERHEAD_TIME_PER_LAMBDA = 100;
|
|
5
|
+
const getMostExpensiveChunks = ({ parsedTimings, framesPerFunction: framesPerLambda, firstFrame, lastFrame, }) => {
|
|
6
|
+
const mostExpensiveChunks = parsedTimings
|
|
7
|
+
.slice(0)
|
|
8
|
+
.sort((a, b) => {
|
|
9
|
+
const durA = a.rendered - a.start;
|
|
10
|
+
const durB = b.rendered - b.start;
|
|
11
|
+
return durB - durA;
|
|
12
|
+
})
|
|
13
|
+
.slice(0, 5);
|
|
14
|
+
return mostExpensiveChunks.map((c) => {
|
|
15
|
+
const isLastChunk = c.chunk === parsedTimings.length - 1;
|
|
16
|
+
return {
|
|
17
|
+
timeInMilliseconds: c.rendered - c.start,
|
|
18
|
+
chunk: c.chunk,
|
|
19
|
+
frameRange: [
|
|
20
|
+
framesPerLambda * c.chunk + firstFrame,
|
|
21
|
+
isLastChunk
|
|
22
|
+
? lastFrame
|
|
23
|
+
: framesPerLambda * (c.chunk + 1) - 1 + firstFrame,
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
exports.getMostExpensiveChunks = getMostExpensiveChunks;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { PostRenderData } from './constants';
|
|
2
|
+
import type { RenderMetadata } from './render-metadata';
|
|
3
|
+
import type { ChunkRetry, CloudProvider, ParsedTiming, ReceivedArtifact } from './types';
|
|
4
|
+
import type { FunctionErrorInfo } from './write-error-to-storage';
|
|
5
|
+
export type OverallRenderProgress<Provider extends CloudProvider> = {
|
|
6
|
+
chunks: number[];
|
|
7
|
+
framesRendered: number;
|
|
8
|
+
framesEncoded: number;
|
|
9
|
+
combinedFrames: number;
|
|
10
|
+
timeToCombine: number | null;
|
|
11
|
+
timeToEncode: number | null;
|
|
12
|
+
timeToRenderFrames: number | null;
|
|
13
|
+
lambdasInvoked: number;
|
|
14
|
+
retries: ChunkRetry[];
|
|
15
|
+
postRenderData: PostRenderData<Provider> | null;
|
|
16
|
+
timings: ParsedTiming[];
|
|
17
|
+
renderMetadata: RenderMetadata<Provider> | null;
|
|
18
|
+
errors: FunctionErrorInfo[];
|
|
19
|
+
timeoutTimestamp: number;
|
|
20
|
+
functionLaunched: number;
|
|
21
|
+
serveUrlOpened: number | null;
|
|
22
|
+
compositionValidated: number | null;
|
|
23
|
+
receivedArtifact: ReceivedArtifact<Provider>[];
|
|
24
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CustomCredentials } from './constants';
|
|
2
|
+
import type { ProviderSpecifics } from './provider-implementation';
|
|
3
|
+
import type { GenericRenderProgress } from './render-progress';
|
|
4
|
+
import type { CloudProvider } from './types';
|
|
5
|
+
export declare const getProgress: <Provider extends CloudProvider>({ bucketName, renderId, expectedBucketOwner, region, memorySizeInMb, timeoutInMilliseconds, customCredentials, providerSpecifics, forcePathStyle, functionName, }: {
|
|
6
|
+
bucketName: string;
|
|
7
|
+
renderId: string;
|
|
8
|
+
expectedBucketOwner: string | null;
|
|
9
|
+
region: Provider["region"];
|
|
10
|
+
memorySizeInMb: number;
|
|
11
|
+
timeoutInMilliseconds: number;
|
|
12
|
+
customCredentials: CustomCredentials<Provider> | null;
|
|
13
|
+
providerSpecifics: ProviderSpecifics<Provider>;
|
|
14
|
+
forcePathStyle: boolean;
|
|
15
|
+
functionName: string;
|
|
16
|
+
}) => Promise<GenericRenderProgress<Provider>>;
|
package/dist/progress.js
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProgress = void 0;
|
|
4
|
+
const pure_1 = require("@remotion/renderer/pure");
|
|
5
|
+
const calculate_chunk_times_1 = require("./calculate-chunk-times");
|
|
6
|
+
const estimate_price_from_bucket_1 = require("./estimate-price-from-bucket");
|
|
7
|
+
const expected_out_name_1 = require("./expected-out-name");
|
|
8
|
+
const format_costs_info_1 = require("./format-costs-info");
|
|
9
|
+
const get_overall_progress_1 = require("./get-overall-progress");
|
|
10
|
+
const get_overall_progress_from_storage_1 = require("./get-overall-progress-from-storage");
|
|
11
|
+
const inspect_error_1 = require("./inspect-error");
|
|
12
|
+
const make_timeout_error_1 = require("./make-timeout-error");
|
|
13
|
+
const render_has_audio_video_1 = require("./render-has-audio-video");
|
|
14
|
+
const truthy_1 = require("./truthy");
|
|
15
|
+
const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region, memorySizeInMb, timeoutInMilliseconds, customCredentials, providerSpecifics, forcePathStyle, functionName, }) => {
|
|
16
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
17
|
+
const overallProgress = await (0, get_overall_progress_from_storage_1.getOverallProgressFromStorage)({
|
|
18
|
+
renderId,
|
|
19
|
+
bucketName,
|
|
20
|
+
expectedBucketOwner,
|
|
21
|
+
region,
|
|
22
|
+
providerSpecifics,
|
|
23
|
+
forcePathStyle,
|
|
24
|
+
});
|
|
25
|
+
if (overallProgress.postRenderData) {
|
|
26
|
+
if (!overallProgress.renderMetadata) {
|
|
27
|
+
throw new Error('No render metadata found even though render is finished');
|
|
28
|
+
}
|
|
29
|
+
if (overallProgress.renderMetadata.type === 'still') {
|
|
30
|
+
throw new Error("You don't need to call getRenderProgress() on a still render. Once you have obtained the `renderId`, the render is already done! 😉");
|
|
31
|
+
}
|
|
32
|
+
const outData = (0, expected_out_name_1.getExpectedOutName)({
|
|
33
|
+
renderMetadata: overallProgress.renderMetadata,
|
|
34
|
+
bucketName,
|
|
35
|
+
customCredentials,
|
|
36
|
+
bucketNamePrefix: providerSpecifics.getBucketPrefix(),
|
|
37
|
+
});
|
|
38
|
+
const totalFrameCount = pure_1.NoReactAPIs.getFramesToRender(overallProgress.renderMetadata.frameRange, overallProgress.renderMetadata.everyNthFrame).length;
|
|
39
|
+
return {
|
|
40
|
+
framesRendered: totalFrameCount,
|
|
41
|
+
bucket: bucketName,
|
|
42
|
+
renderSize: overallProgress.postRenderData.renderSize,
|
|
43
|
+
chunks: overallProgress.renderMetadata.totalChunks,
|
|
44
|
+
cleanup: {
|
|
45
|
+
doneIn: overallProgress.postRenderData.timeToCleanUp,
|
|
46
|
+
filesDeleted: overallProgress.postRenderData.filesCleanedUp,
|
|
47
|
+
minFilesToDelete: overallProgress.postRenderData.filesCleanedUp,
|
|
48
|
+
},
|
|
49
|
+
costs: {
|
|
50
|
+
accruedSoFar: overallProgress.postRenderData.cost.estimatedCost,
|
|
51
|
+
displayCost: overallProgress.postRenderData.cost.estimatedDisplayCost,
|
|
52
|
+
currency: overallProgress.postRenderData.cost.currency,
|
|
53
|
+
disclaimer: overallProgress.postRenderData.cost.disclaimer,
|
|
54
|
+
},
|
|
55
|
+
currentTime: Date.now(),
|
|
56
|
+
done: true,
|
|
57
|
+
encodingStatus: {
|
|
58
|
+
framesEncoded: totalFrameCount,
|
|
59
|
+
combinedFrames: totalFrameCount,
|
|
60
|
+
timeToCombine: overallProgress.postRenderData.timeToCombine,
|
|
61
|
+
},
|
|
62
|
+
errors: overallProgress.postRenderData.errors,
|
|
63
|
+
fatalErrorEncountered: false,
|
|
64
|
+
lambdasInvoked: overallProgress.renderMetadata.totalChunks,
|
|
65
|
+
outputFile: overallProgress.postRenderData.outputFile,
|
|
66
|
+
renderId,
|
|
67
|
+
timeToFinish: overallProgress.postRenderData.timeToFinish,
|
|
68
|
+
timeToFinishChunks: overallProgress.postRenderData.timeToRenderChunks,
|
|
69
|
+
timeToRenderFrames: overallProgress.postRenderData.timeToRenderFrames,
|
|
70
|
+
overallProgress: 1,
|
|
71
|
+
retriesInfo: overallProgress.postRenderData.retriesInfo,
|
|
72
|
+
outKey: outData.key,
|
|
73
|
+
outBucket: outData.renderBucketName,
|
|
74
|
+
mostExpensiveFrameRanges: (_a = overallProgress.postRenderData.mostExpensiveFrameRanges) !== null && _a !== void 0 ? _a : null,
|
|
75
|
+
timeToEncode: overallProgress.postRenderData.timeToEncode,
|
|
76
|
+
outputSizeInBytes: overallProgress.postRenderData.outputSize,
|
|
77
|
+
type: 'success',
|
|
78
|
+
estimatedBillingDurationInMilliseconds: overallProgress.postRenderData.estimatedBillingDurationInMilliseconds,
|
|
79
|
+
timeToCombine: overallProgress.postRenderData.timeToCombine,
|
|
80
|
+
combinedFrames: totalFrameCount,
|
|
81
|
+
renderMetadata: overallProgress.renderMetadata,
|
|
82
|
+
timeoutTimestamp: overallProgress.timeoutTimestamp,
|
|
83
|
+
compositionValidated: overallProgress.compositionValidated,
|
|
84
|
+
functionLaunched: overallProgress.functionLaunched,
|
|
85
|
+
serveUrlOpened: overallProgress.serveUrlOpened,
|
|
86
|
+
artifacts: overallProgress.receivedArtifact,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const { renderMetadata } = overallProgress;
|
|
90
|
+
const errorExplanations = (0, inspect_error_1.inspectErrors)({
|
|
91
|
+
errors: overallProgress.errors,
|
|
92
|
+
});
|
|
93
|
+
const { hasAudio, hasVideo } = renderMetadata
|
|
94
|
+
? (0, render_has_audio_video_1.lambdaRenderHasAudioVideo)(renderMetadata)
|
|
95
|
+
: { hasAudio: false, hasVideo: false };
|
|
96
|
+
const chunkCount = (_b = overallProgress.chunks.length) !== null && _b !== void 0 ? _b : 0;
|
|
97
|
+
const cleanup = {
|
|
98
|
+
doneIn: null,
|
|
99
|
+
minFilesToDelete: 0,
|
|
100
|
+
filesDeleted: 0,
|
|
101
|
+
};
|
|
102
|
+
if (renderMetadata === null) {
|
|
103
|
+
return {
|
|
104
|
+
framesRendered: (_c = overallProgress.framesRendered) !== null && _c !== void 0 ? _c : 0,
|
|
105
|
+
chunks: chunkCount,
|
|
106
|
+
done: false,
|
|
107
|
+
encodingStatus: {
|
|
108
|
+
framesEncoded: overallProgress.framesEncoded,
|
|
109
|
+
combinedFrames: overallProgress.combinedFrames,
|
|
110
|
+
timeToCombine: overallProgress.timeToCombine,
|
|
111
|
+
},
|
|
112
|
+
timeToRenderFrames: overallProgress.timeToRenderFrames,
|
|
113
|
+
costs: (0, format_costs_info_1.formatCostsInfo)(0),
|
|
114
|
+
renderId,
|
|
115
|
+
renderMetadata,
|
|
116
|
+
bucket: bucketName,
|
|
117
|
+
outputFile: null,
|
|
118
|
+
timeToFinish: null,
|
|
119
|
+
errors: errorExplanations,
|
|
120
|
+
fatalErrorEncountered: errorExplanations.some((f) => f.isFatal && !f.willRetry),
|
|
121
|
+
currentTime: Date.now(),
|
|
122
|
+
renderSize: 0,
|
|
123
|
+
lambdasInvoked: (_d = overallProgress.lambdasInvoked) !== null && _d !== void 0 ? _d : 0,
|
|
124
|
+
cleanup,
|
|
125
|
+
timeToFinishChunks: null,
|
|
126
|
+
overallProgress: (0, get_overall_progress_1.getOverallProgress)({
|
|
127
|
+
encoding: 0,
|
|
128
|
+
invoking: 0,
|
|
129
|
+
frames: 0,
|
|
130
|
+
gotComposition: overallProgress.compositionValidated,
|
|
131
|
+
visitedServeUrl: overallProgress.serveUrlOpened,
|
|
132
|
+
invokedLambda: overallProgress.lambdasInvoked,
|
|
133
|
+
combining: 0,
|
|
134
|
+
}),
|
|
135
|
+
retriesInfo: (_e = overallProgress.retries) !== null && _e !== void 0 ? _e : [],
|
|
136
|
+
outKey: null,
|
|
137
|
+
outBucket: null,
|
|
138
|
+
mostExpensiveFrameRanges: null,
|
|
139
|
+
timeToEncode: overallProgress.timeToEncode,
|
|
140
|
+
outputSizeInBytes: null,
|
|
141
|
+
estimatedBillingDurationInMilliseconds: null,
|
|
142
|
+
combinedFrames: (_f = overallProgress.combinedFrames) !== null && _f !== void 0 ? _f : 0,
|
|
143
|
+
timeToCombine: (_g = overallProgress.timeToCombine) !== null && _g !== void 0 ? _g : null,
|
|
144
|
+
timeoutTimestamp: overallProgress.timeoutTimestamp,
|
|
145
|
+
type: 'success',
|
|
146
|
+
compositionValidated: overallProgress.compositionValidated,
|
|
147
|
+
functionLaunched: overallProgress.functionLaunched,
|
|
148
|
+
serveUrlOpened: overallProgress.serveUrlOpened,
|
|
149
|
+
artifacts: overallProgress.receivedArtifact,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const priceFromBucket = (0, estimate_price_from_bucket_1.estimatePriceFromMetadata)({
|
|
153
|
+
renderMetadata,
|
|
154
|
+
memorySizeInMb: (_j = (_h = providerSpecifics.parseFunctionName(renderMetadata.rendererFunctionName)) === null || _h === void 0 ? void 0 : _h.memorySizeInMb) !== null && _j !== void 0 ? _j : memorySizeInMb,
|
|
155
|
+
functionsInvoked: (_k = renderMetadata.estimatedRenderLambdaInvokations) !== null && _k !== void 0 ? _k : 0,
|
|
156
|
+
diskSizeInMb: providerSpecifics.getEphemeralStorageForPriceCalculation(),
|
|
157
|
+
timings: (_l = overallProgress.timings) !== null && _l !== void 0 ? _l : [],
|
|
158
|
+
region,
|
|
159
|
+
providerSpecifics,
|
|
160
|
+
});
|
|
161
|
+
const chunkMultiplier = [hasAudio, hasVideo].filter(truthy_1.truthy).length;
|
|
162
|
+
if (renderMetadata.type === 'still') {
|
|
163
|
+
throw new Error("You don't need to call getRenderProgress() on a still render. Once you have obtained the `renderId`, the render is already done! 😉");
|
|
164
|
+
}
|
|
165
|
+
const allChunks = ((_m = overallProgress.chunks) !== null && _m !== void 0 ? _m : []).length / chunkMultiplier ===
|
|
166
|
+
((_o = renderMetadata.totalChunks) !== null && _o !== void 0 ? _o : Infinity);
|
|
167
|
+
const frameCount = pure_1.NoReactAPIs.getFramesToRender(renderMetadata.frameRange, renderMetadata.everyNthFrame).length;
|
|
168
|
+
const missingChunks = new Array(renderMetadata.totalChunks)
|
|
169
|
+
.fill(true)
|
|
170
|
+
.map((_, i) => i)
|
|
171
|
+
.filter((index) => {
|
|
172
|
+
var _a;
|
|
173
|
+
return (typeof ((_a = overallProgress.chunks) !== null && _a !== void 0 ? _a : []).find((c) => c === index) ===
|
|
174
|
+
'undefined');
|
|
175
|
+
});
|
|
176
|
+
// 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
|
|
177
|
+
// 1. If we have missing chunks, we consider it timed out
|
|
178
|
+
const isBeyondTimeoutAndMissingChunks = Date.now() > renderMetadata.startedDate + timeoutInMilliseconds + 20000 &&
|
|
179
|
+
missingChunks &&
|
|
180
|
+
missingChunks.length > 0;
|
|
181
|
+
// 2. If we have no missing chunks, but the encoding is not done, even after the additional `merge` function has been spawned, we consider it timed out
|
|
182
|
+
const isBeyondTimeoutAndHasStitchTimeout = Date.now() > renderMetadata.startedDate + timeoutInMilliseconds * 2 + 20000;
|
|
183
|
+
const allErrors = [
|
|
184
|
+
isBeyondTimeoutAndMissingChunks || isBeyondTimeoutAndHasStitchTimeout
|
|
185
|
+
? (0, make_timeout_error_1.makeTimeoutError)({
|
|
186
|
+
timeoutInMilliseconds,
|
|
187
|
+
renderMetadata,
|
|
188
|
+
renderId,
|
|
189
|
+
missingChunks: missingChunks !== null && missingChunks !== void 0 ? missingChunks : [],
|
|
190
|
+
region,
|
|
191
|
+
functionName,
|
|
192
|
+
providerSpecifics,
|
|
193
|
+
})
|
|
194
|
+
: null,
|
|
195
|
+
...errorExplanations,
|
|
196
|
+
].filter(truthy_1.truthy);
|
|
197
|
+
return {
|
|
198
|
+
framesRendered: (_p = overallProgress.framesRendered) !== null && _p !== void 0 ? _p : 0,
|
|
199
|
+
chunks: chunkCount,
|
|
200
|
+
done: false,
|
|
201
|
+
encodingStatus: {
|
|
202
|
+
framesEncoded: overallProgress.framesEncoded,
|
|
203
|
+
combinedFrames: overallProgress.combinedFrames,
|
|
204
|
+
timeToCombine: overallProgress.timeToCombine,
|
|
205
|
+
},
|
|
206
|
+
timeToRenderFrames: overallProgress.timeToRenderFrames,
|
|
207
|
+
costs: priceFromBucket
|
|
208
|
+
? (0, format_costs_info_1.formatCostsInfo)(priceFromBucket.accruedSoFar)
|
|
209
|
+
: (0, format_costs_info_1.formatCostsInfo)(0),
|
|
210
|
+
renderId,
|
|
211
|
+
renderMetadata,
|
|
212
|
+
bucket: bucketName,
|
|
213
|
+
outputFile: null,
|
|
214
|
+
timeToFinish: null,
|
|
215
|
+
errors: allErrors,
|
|
216
|
+
fatalErrorEncountered: allErrors.some((f) => f.isFatal && !f.willRetry),
|
|
217
|
+
currentTime: Date.now(),
|
|
218
|
+
renderSize: 0,
|
|
219
|
+
lambdasInvoked: (_q = overallProgress.lambdasInvoked) !== null && _q !== void 0 ? _q : 0,
|
|
220
|
+
cleanup,
|
|
221
|
+
timeToFinishChunks: allChunks && overallProgress
|
|
222
|
+
? (0, calculate_chunk_times_1.calculateChunkTimes)({
|
|
223
|
+
type: 'absolute-time',
|
|
224
|
+
timings: overallProgress.timings,
|
|
225
|
+
})
|
|
226
|
+
: null,
|
|
227
|
+
overallProgress: (0, get_overall_progress_1.getOverallProgress)({
|
|
228
|
+
encoding: frameCount
|
|
229
|
+
? ((_r = overallProgress.framesEncoded) !== null && _r !== void 0 ? _r : 0) / frameCount
|
|
230
|
+
: 0,
|
|
231
|
+
invoking: ((_s = overallProgress.lambdasInvoked) !== null && _s !== void 0 ? _s : 0) /
|
|
232
|
+
renderMetadata.estimatedRenderLambdaInvokations,
|
|
233
|
+
frames: ((_t = overallProgress.framesRendered) !== null && _t !== void 0 ? _t : 0) / (frameCount !== null && frameCount !== void 0 ? frameCount : 1),
|
|
234
|
+
gotComposition: overallProgress.compositionValidated,
|
|
235
|
+
visitedServeUrl: overallProgress.serveUrlOpened,
|
|
236
|
+
invokedLambda: overallProgress.lambdasInvoked,
|
|
237
|
+
combining: overallProgress.combinedFrames / (frameCount !== null && frameCount !== void 0 ? frameCount : 1),
|
|
238
|
+
}),
|
|
239
|
+
retriesInfo: (_u = overallProgress.retries) !== null && _u !== void 0 ? _u : [],
|
|
240
|
+
outKey: null,
|
|
241
|
+
outBucket: null,
|
|
242
|
+
mostExpensiveFrameRanges: null,
|
|
243
|
+
timeToEncode: overallProgress.timeToEncode,
|
|
244
|
+
outputSizeInBytes: null,
|
|
245
|
+
estimatedBillingDurationInMilliseconds: priceFromBucket
|
|
246
|
+
? priceFromBucket.estimatedBillingDurationInMilliseconds
|
|
247
|
+
: null,
|
|
248
|
+
combinedFrames: (_v = overallProgress.combinedFrames) !== null && _v !== void 0 ? _v : 0,
|
|
249
|
+
timeToCombine: (_w = overallProgress.timeToCombine) !== null && _w !== void 0 ? _w : null,
|
|
250
|
+
timeoutTimestamp: overallProgress.timeoutTimestamp,
|
|
251
|
+
type: 'success',
|
|
252
|
+
compositionValidated: overallProgress.compositionValidated,
|
|
253
|
+
functionLaunched: overallProgress.functionLaunched,
|
|
254
|
+
serveUrlOpened: overallProgress.serveUrlOpened,
|
|
255
|
+
artifacts: overallProgress.receivedArtifact,
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
exports.getProgress = getProgress;
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import type { LogLevel } from '@remotion/renderer';
|
|
2
|
+
import type { Readable } from 'node:stream';
|
|
3
|
+
import type { CustomCredentials, DownloadBehavior, Privacy, ServerlessRoutines } from './constants';
|
|
4
|
+
import type { RenderMetadata } from './render-metadata';
|
|
5
|
+
import type { ServerlessReturnValues } from './return-values';
|
|
6
|
+
import type { OnMessage } from './streaming/streaming';
|
|
7
|
+
import type { CallFunctionOptions, CloudProvider } from './types';
|
|
8
|
+
export type ParseFunctionName = (functionName: string) => {
|
|
9
|
+
version: string;
|
|
10
|
+
memorySizeInMb: number;
|
|
11
|
+
diskSizeInMb: number;
|
|
12
|
+
timeoutInSeconds: number;
|
|
13
|
+
} | null;
|
|
14
|
+
type DeleteFile<Provider extends CloudProvider> = (params: {
|
|
15
|
+
bucketName: string;
|
|
16
|
+
key: string;
|
|
17
|
+
region: Provider['region'];
|
|
18
|
+
customCredentials: CustomCredentials<Provider> | null;
|
|
19
|
+
forcePathStyle: boolean;
|
|
20
|
+
}) => Promise<void>;
|
|
21
|
+
export type BucketWithLocation<Provider extends CloudProvider> = {
|
|
22
|
+
name: string;
|
|
23
|
+
creationDate: number;
|
|
24
|
+
region: Provider['region'];
|
|
25
|
+
};
|
|
26
|
+
type BucketExists<Provider extends CloudProvider> = (params: {
|
|
27
|
+
bucketName: string;
|
|
28
|
+
region: Provider['region'];
|
|
29
|
+
expectedBucketOwner: string | null;
|
|
30
|
+
forcePathStyle: boolean;
|
|
31
|
+
}) => Promise<boolean>;
|
|
32
|
+
type ReadFile<Provider extends CloudProvider> = (params: {
|
|
33
|
+
bucketName: string;
|
|
34
|
+
key: string;
|
|
35
|
+
region: Provider['region'];
|
|
36
|
+
expectedBucketOwner: string | null;
|
|
37
|
+
forcePathStyle: boolean;
|
|
38
|
+
}) => Promise<Readable>;
|
|
39
|
+
type GetBuckets<Provider extends CloudProvider> = (options: {
|
|
40
|
+
region: Provider['region'];
|
|
41
|
+
forceBucketName: string | null;
|
|
42
|
+
forcePathStyle: boolean;
|
|
43
|
+
}) => Promise<BucketWithLocation<Provider>[]>;
|
|
44
|
+
type CreateBucket<Provider extends CloudProvider> = (params: {
|
|
45
|
+
region: Provider['region'];
|
|
46
|
+
bucketName: string;
|
|
47
|
+
forcePathStyle: boolean;
|
|
48
|
+
skipPutAcl: boolean;
|
|
49
|
+
}) => Promise<void>;
|
|
50
|
+
type ApplyLifeCycle<Provider extends CloudProvider> = (params: {
|
|
51
|
+
enableFolderExpiry: boolean | null;
|
|
52
|
+
bucketName: string;
|
|
53
|
+
region: Provider['region'];
|
|
54
|
+
customCredentials: CustomCredentials<Provider> | null;
|
|
55
|
+
forcePathStyle: boolean;
|
|
56
|
+
}) => Promise<void>;
|
|
57
|
+
type ListObjects<Provider extends CloudProvider> = (params: {
|
|
58
|
+
bucketName: string;
|
|
59
|
+
prefix: string;
|
|
60
|
+
region: Provider['region'];
|
|
61
|
+
expectedBucketOwner: string | null;
|
|
62
|
+
forcePathStyle: boolean;
|
|
63
|
+
continuationToken?: string;
|
|
64
|
+
}) => Promise<BucketObject[]>;
|
|
65
|
+
type BucketObject = {
|
|
66
|
+
Key: string;
|
|
67
|
+
LastModified: Date;
|
|
68
|
+
ETag: string;
|
|
69
|
+
Size: number;
|
|
70
|
+
};
|
|
71
|
+
type HeadFile<Provider extends CloudProvider> = (params: HeadFileInput<Provider>) => Promise<HeadFileOutput>;
|
|
72
|
+
type RandomHash = () => string;
|
|
73
|
+
type ConvertToServeUrl<Provider extends CloudProvider> = (params: {
|
|
74
|
+
urlOrId: string;
|
|
75
|
+
region: Provider['region'];
|
|
76
|
+
bucketName: string;
|
|
77
|
+
}) => string;
|
|
78
|
+
type HeadFileOutput = {
|
|
79
|
+
LastModified?: Date | undefined;
|
|
80
|
+
ContentLength?: number | undefined;
|
|
81
|
+
};
|
|
82
|
+
export type DeleteFunctionInput<Provider extends CloudProvider> = {
|
|
83
|
+
region: Provider['region'];
|
|
84
|
+
functionName: string;
|
|
85
|
+
};
|
|
86
|
+
export type DeleteFunction<Provider extends CloudProvider> = (options: DeleteFunctionInput<Provider>) => Promise<void>;
|
|
87
|
+
export type WriteFileInput<Provider extends CloudProvider> = {
|
|
88
|
+
bucketName: string;
|
|
89
|
+
key: string;
|
|
90
|
+
body: Readable | string | Uint8Array;
|
|
91
|
+
region: Provider['region'];
|
|
92
|
+
privacy: Privacy;
|
|
93
|
+
expectedBucketOwner: string | null;
|
|
94
|
+
downloadBehavior: DownloadBehavior | null;
|
|
95
|
+
customCredentials: CustomCredentials<Provider> | null;
|
|
96
|
+
forcePathStyle: boolean;
|
|
97
|
+
};
|
|
98
|
+
type WriteFile<Provider extends CloudProvider> = (params: WriteFileInput<Provider>) => Promise<void>;
|
|
99
|
+
type HeadFileInput<Provider extends CloudProvider> = {
|
|
100
|
+
bucketName: string;
|
|
101
|
+
key: string;
|
|
102
|
+
region: Provider['region'];
|
|
103
|
+
customCredentials: CustomCredentials<Provider> | null;
|
|
104
|
+
forcePathStyle: boolean;
|
|
105
|
+
};
|
|
106
|
+
export type CallFunctionAsync<Provider extends CloudProvider> = <T extends ServerlessRoutines>({ functionName, payload, region, timeoutInTest, }: CallFunctionOptions<T, Provider>) => Promise<void>;
|
|
107
|
+
export type CallFunctionStreaming<Provider extends CloudProvider> = <T extends ServerlessRoutines>(options: CallFunctionOptions<T, Provider> & {
|
|
108
|
+
receivedStreamingPayload: OnMessage<Provider>;
|
|
109
|
+
retriesRemaining: number;
|
|
110
|
+
}) => Promise<void>;
|
|
111
|
+
export type CallFunctionSync<Provider extends CloudProvider> = <T extends ServerlessRoutines>({ functionName, payload, region, timeoutInTest, }: CallFunctionOptions<T, Provider>) => Promise<ServerlessReturnValues<Provider>[T]>;
|
|
112
|
+
export type GetOutputUrl<Provider extends CloudProvider> = (options: {
|
|
113
|
+
renderMetadata: RenderMetadata<Provider>;
|
|
114
|
+
bucketName: string;
|
|
115
|
+
customCredentials: CustomCredentials<Provider> | null;
|
|
116
|
+
currentRegion: Provider['region'];
|
|
117
|
+
}) => {
|
|
118
|
+
url: string;
|
|
119
|
+
key: string;
|
|
120
|
+
};
|
|
121
|
+
export type EstimatePriceInput<Provider extends CloudProvider> = {
|
|
122
|
+
region: Provider['region'];
|
|
123
|
+
memorySizeInMb: number;
|
|
124
|
+
diskSizeInMb: number;
|
|
125
|
+
lambdasInvoked: number;
|
|
126
|
+
durationInMilliseconds: number;
|
|
127
|
+
};
|
|
128
|
+
export type EstimatePrice<Provider extends CloudProvider> = ({ region, memorySizeInMb, diskSizeInMb, lambdasInvoked, ...other }: EstimatePriceInput<Provider>) => number;
|
|
129
|
+
export type GetLoggingUrlForRendererFunction<Provider extends CloudProvider> = (options: {
|
|
130
|
+
region: Provider['region'];
|
|
131
|
+
functionName: string;
|
|
132
|
+
rendererFunctionName: string | null;
|
|
133
|
+
renderId: string;
|
|
134
|
+
chunk: null | number;
|
|
135
|
+
}) => string;
|
|
136
|
+
export type GetFunctionsInput<Provider extends CloudProvider> = {
|
|
137
|
+
region: Provider['region'];
|
|
138
|
+
compatibleOnly: boolean;
|
|
139
|
+
logLevel?: LogLevel;
|
|
140
|
+
};
|
|
141
|
+
export type GetLoggingUrlForMethod<Provider extends CloudProvider> = (options: {
|
|
142
|
+
region: Provider['region'];
|
|
143
|
+
functionName: string;
|
|
144
|
+
method: ServerlessRoutines;
|
|
145
|
+
rendererFunctionName: string | null;
|
|
146
|
+
renderId: string;
|
|
147
|
+
}) => string;
|
|
148
|
+
export type GetAccountId<Provider extends CloudProvider> = (options: {
|
|
149
|
+
region: Provider['region'];
|
|
150
|
+
}) => Promise<string>;
|
|
151
|
+
export type FunctionInfo = {
|
|
152
|
+
functionName: string;
|
|
153
|
+
timeoutInSeconds: number;
|
|
154
|
+
memorySizeInMb: number;
|
|
155
|
+
version: string | null;
|
|
156
|
+
diskSizeInMb: number;
|
|
157
|
+
};
|
|
158
|
+
export type GetFunctions<Provider extends CloudProvider> = (params: GetFunctionsInput<Provider>) => Promise<FunctionInfo[]>;
|
|
159
|
+
export type ProviderSpecifics<Provider extends CloudProvider> = {
|
|
160
|
+
getChromiumPath: () => string | null;
|
|
161
|
+
getBuckets: GetBuckets<Provider>;
|
|
162
|
+
getBucketPrefix: () => string;
|
|
163
|
+
createBucket: CreateBucket<Provider>;
|
|
164
|
+
applyLifeCycle: ApplyLifeCycle<Provider>;
|
|
165
|
+
listObjects: ListObjects<Provider>;
|
|
166
|
+
deleteFile: DeleteFile<Provider>;
|
|
167
|
+
bucketExists: BucketExists<Provider>;
|
|
168
|
+
randomHash: RandomHash;
|
|
169
|
+
readFile: ReadFile<Provider>;
|
|
170
|
+
writeFile: WriteFile<Provider>;
|
|
171
|
+
headFile: HeadFile<Provider>;
|
|
172
|
+
convertToServeUrl: ConvertToServeUrl<Provider>;
|
|
173
|
+
printLoggingHelper: boolean;
|
|
174
|
+
validateDeleteAfter: (lifeCycleValue: unknown) => void;
|
|
175
|
+
callFunctionAsync: CallFunctionAsync<Provider>;
|
|
176
|
+
callFunctionStreaming: CallFunctionStreaming<Provider>;
|
|
177
|
+
callFunctionSync: CallFunctionSync<Provider>;
|
|
178
|
+
estimatePrice: EstimatePrice<Provider>;
|
|
179
|
+
getLoggingUrlForRendererFunction: GetLoggingUrlForRendererFunction<Provider>;
|
|
180
|
+
getLoggingUrlForMethod: GetLoggingUrlForMethod<Provider>;
|
|
181
|
+
getEphemeralStorageForPriceCalculation: () => number;
|
|
182
|
+
getOutputUrl: GetOutputUrl<Provider>;
|
|
183
|
+
isFlakyError: (err: Error) => boolean;
|
|
184
|
+
serverStorageProductName: () => string;
|
|
185
|
+
getMaxStillInlinePayloadSize: () => number;
|
|
186
|
+
getMaxNonInlinePayloadSizePerFunction: () => number;
|
|
187
|
+
getAccountId: GetAccountId<Provider>;
|
|
188
|
+
deleteFunction: DeleteFunction<Provider>;
|
|
189
|
+
getFunctions: GetFunctions<Provider>;
|
|
190
|
+
parseFunctionName: ParseFunctionName;
|
|
191
|
+
checkCredentials: () => void;
|
|
192
|
+
};
|
|
193
|
+
export {};
|