@remotion/serverless 4.0.521 → 4.0.523
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/finish-render.d.ts +1 -1
- package/dist/finish-render.js +11 -2
- package/dist/get-browser-instance.d.ts +2 -1
- package/dist/get-browser-instance.js +50 -39
- package/dist/handlers/compositions.d.ts +1 -1
- package/dist/handlers/launch.d.ts +1 -1
- package/dist/handlers/launch.js +36 -25
- package/dist/handlers/progress.d.ts +1 -1
- package/dist/handlers/renderer.d.ts +3 -3
- package/dist/handlers/renderer.js +25 -25
- package/dist/handlers/start.d.ts +1 -1
- package/dist/handlers/still.d.ts +1 -1
- package/dist/handlers/still.js +4 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.js +2 -4
- package/dist/inner-routine.js +8 -19
- package/dist/merge-chunks.d.ts +1 -1
- package/dist/overall-render-progress.d.ts +1 -1
- package/dist/provider-implementation.d.ts +12 -3
- package/dist/s3-renderer-output.d.ts +1 -1
- package/dist/stream-renderer.d.ts +1 -1
- package/package.json +6 -6
package/dist/finish-render.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { CloudProvider, CustomCredentials, DownloadBehavior, PostRenderData
|
|
|
2
2
|
import type { OverallProgressHelper } from './overall-render-progress';
|
|
3
3
|
import type { InsideFunctionSpecifics } from './provider-implementation';
|
|
4
4
|
export declare const finishRender: <Provider extends CloudProvider<string, Record<string, unknown>, Record<string, unknown>, string, object>>({ expectedBucketOwner, renderBucketName, customCredentials, downloadBehavior, key, privacy, inputProps, serializedResolvedProps, renderMetadata, logLevel, overallProgress, startTime, providerSpecifics, insideFunctionSpecifics, forcePathStyle, storageClass, requestHandler, outputFile, timeToCombine, }: {
|
|
5
|
-
expectedBucketOwner: string;
|
|
5
|
+
expectedBucketOwner: string | null;
|
|
6
6
|
renderBucketName: string;
|
|
7
7
|
customCredentials: CustomCredentials<Provider> | null;
|
|
8
8
|
downloadBehavior: DownloadBehavior;
|
package/dist/finish-render.js
CHANGED
|
@@ -11,7 +11,7 @@ const create_post_render_data_1 = require("./create-post-render-data");
|
|
|
11
11
|
const finishRender = async ({ expectedBucketOwner, renderBucketName, customCredentials, downloadBehavior, key, privacy, inputProps, serializedResolvedProps, renderMetadata, logLevel, overallProgress, startTime, providerSpecifics, insideFunctionSpecifics, forcePathStyle, storageClass, requestHandler, outputFile, timeToCombine, }) => {
|
|
12
12
|
const outputSize = node_fs_1.default.statSync(outputFile).size;
|
|
13
13
|
const writeToBucket = insideFunctionSpecifics.timer(`Writing to bucket (${outputSize} bytes)`, logLevel);
|
|
14
|
-
|
|
14
|
+
const writeOptions = {
|
|
15
15
|
bucketName: renderBucketName,
|
|
16
16
|
key,
|
|
17
17
|
body: node_fs_1.default.createReadStream(outputFile),
|
|
@@ -23,7 +23,16 @@ const finishRender = async ({ expectedBucketOwner, renderBucketName, customCrede
|
|
|
23
23
|
forcePathStyle,
|
|
24
24
|
storageClass,
|
|
25
25
|
requestHandler,
|
|
26
|
-
}
|
|
26
|
+
};
|
|
27
|
+
if (renderMetadata.outputFileIsConditional) {
|
|
28
|
+
if (!providerSpecifics.writeFileIfNotExists) {
|
|
29
|
+
throw new Error('The provider does not support conditional output uploads');
|
|
30
|
+
}
|
|
31
|
+
await providerSpecifics.writeFileIfNotExists(writeOptions);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
await providerSpecifics.writeFile(writeOptions);
|
|
35
|
+
}
|
|
27
36
|
writeToBucket.end();
|
|
28
37
|
const errorExplanations = (0, serverless_client_1.inspectErrors)({
|
|
29
38
|
errors: overallProgress.get().errors,
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { openBrowser } from '@remotion/renderer';
|
|
2
2
|
import type { Await } from '@remotion/serverless-client';
|
|
3
|
-
import type { ForgetBrowserEventLoop, GetBrowserInstance } from './provider-implementation';
|
|
3
|
+
import type { CloseBrowserInstance, ForgetBrowserEventLoop, GetBrowserInstance } from './provider-implementation';
|
|
4
4
|
export type LaunchedBrowser = {
|
|
5
5
|
instance: Await<ReturnType<typeof openBrowser>>;
|
|
6
6
|
configurationString: string;
|
|
7
7
|
};
|
|
8
8
|
export declare const forgetBrowserEventLoopImplementation: ForgetBrowserEventLoop;
|
|
9
|
+
export declare const closeBrowserInstanceImplementation: CloseBrowserInstance;
|
|
9
10
|
export declare const getBrowserInstanceImplementation: GetBrowserInstance;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getBrowserInstanceImplementation = exports.forgetBrowserEventLoopImplementation = void 0;
|
|
3
|
+
exports.getBrowserInstanceImplementation = exports.closeBrowserInstanceImplementation = exports.forgetBrowserEventLoopImplementation = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
5
5
|
const serverless_client_1 = require("@remotion/serverless-client");
|
|
6
6
|
const makeConfigurationString = (options, logLevel) => {
|
|
7
|
-
var _a, _b, _c;
|
|
7
|
+
var _a, _b, _c, _d;
|
|
8
8
|
return [
|
|
9
9
|
`web-security-${Boolean(options.disableWebSecurity)}`,
|
|
10
|
-
`multi-process-${
|
|
10
|
+
`multi-process-${(_a = options.enableMultiProcessOnLinux) !== null && _a !== void 0 ? _a : true}`,
|
|
11
11
|
`ignore-certificate-errors-${Boolean(options.ignoreCertificateErrors)}`,
|
|
12
12
|
`log-level-${logLevel}`,
|
|
13
|
-
`gl-${(
|
|
14
|
-
`userAgent-${(
|
|
15
|
-
`headless-${(
|
|
13
|
+
`gl-${(_b = options.gl) !== null && _b !== void 0 ? _b : null}`,
|
|
14
|
+
`userAgent-${(_c = options.userAgent) !== null && _c !== void 0 ? _c : null}`,
|
|
15
|
+
`headless-${(_d = options.headless) !== null && _d !== void 0 ? _d : false}`,
|
|
16
16
|
].join('/');
|
|
17
17
|
};
|
|
18
18
|
let _browserInstance;
|
|
@@ -37,8 +37,15 @@ const forgetBrowserEventLoopImplementation = ({ logLevel, launchedBrowser, }) =>
|
|
|
37
37
|
launchedBrowser.instance.runner.deleteBrowserCaches();
|
|
38
38
|
};
|
|
39
39
|
exports.forgetBrowserEventLoopImplementation = forgetBrowserEventLoopImplementation;
|
|
40
|
+
const closeBrowserInstanceImplementation = async ({ launchedBrowser, }) => {
|
|
41
|
+
if (_browserInstance === launchedBrowser) {
|
|
42
|
+
_browserInstance = null;
|
|
43
|
+
}
|
|
44
|
+
await launchedBrowser.instance.close({ silent: true });
|
|
45
|
+
};
|
|
46
|
+
exports.closeBrowserInstanceImplementation = closeBrowserInstanceImplementation;
|
|
40
47
|
const getBrowserInstanceImplementation = async ({ logLevel, indent, chromiumOptions, providerSpecifics, insideFunctionSpecifics, }) => {
|
|
41
|
-
var _a, _b, _c, _d, _e
|
|
48
|
+
var _a, _b, _c, _d, _e;
|
|
42
49
|
const actualChromiumOptions = {
|
|
43
50
|
...chromiumOptions,
|
|
44
51
|
darkMode: (_a = chromiumOptions.darkMode) !== null && _a !== void 0 ? _a : false,
|
|
@@ -46,9 +53,6 @@ const getBrowserInstanceImplementation = async ({ logLevel, indent, chromiumOpti
|
|
|
46
53
|
headless: (_c = chromiumOptions.headless) !== null && _c !== void 0 ? _c : true,
|
|
47
54
|
userAgent: (_d = chromiumOptions.userAgent) !== null && _d !== void 0 ? _d : null,
|
|
48
55
|
ignoreCertificateErrors: (_e = chromiumOptions.ignoreCertificateErrors) !== null && _e !== void 0 ? _e : false,
|
|
49
|
-
// Override the `null` value, which might come from CLI with swANGLE
|
|
50
|
-
gl: (_f = chromiumOptions.gl) !== null && _f !== void 0 ? _f : 'swangle',
|
|
51
|
-
enableMultiProcessOnLinux: false,
|
|
52
56
|
};
|
|
53
57
|
const configurationString = makeConfigurationString(actualChromiumOptions, logLevel);
|
|
54
58
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, `Rendering with Remotion v${serverless_client_1.VERSION}.`);
|
|
@@ -62,38 +66,45 @@ const getBrowserInstanceImplementation = async ({ logLevel, indent, chromiumOpti
|
|
|
62
66
|
if (!_browserInstance) {
|
|
63
67
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Cold function, launching new browser instance');
|
|
64
68
|
launching = true;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
onBrowserDownload: () => {
|
|
75
|
-
throw new Error('Should not download a browser in serverless');
|
|
76
|
-
},
|
|
77
|
-
chromeMode: 'headless-shell',
|
|
78
|
-
});
|
|
79
|
-
instance.on('disconnected', () => {
|
|
80
|
-
var _a;
|
|
81
|
-
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Browser disconnected or crashed.');
|
|
82
|
-
insideFunctionSpecifics.forgetBrowserEventLoop({
|
|
69
|
+
try {
|
|
70
|
+
const execPath = providerSpecifics.getChromiumPath();
|
|
71
|
+
const instance = await renderer_1.RenderInternals.internalOpenBrowser({
|
|
72
|
+
browser: 'chrome',
|
|
73
|
+
browserExecutable: execPath,
|
|
74
|
+
chromiumOptions: actualChromiumOptions,
|
|
75
|
+
forceDeviceScaleFactor: undefined,
|
|
76
|
+
indent: false,
|
|
77
|
+
viewport: null,
|
|
83
78
|
logLevel,
|
|
84
|
-
|
|
79
|
+
onBrowserDownload: () => {
|
|
80
|
+
throw new Error('Should not download a browser in serverless');
|
|
81
|
+
},
|
|
82
|
+
chromeMode: 'headless-shell',
|
|
85
83
|
});
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
const launchedBrowser = {
|
|
85
|
+
instance,
|
|
86
|
+
configurationString,
|
|
87
|
+
};
|
|
88
|
+
_browserInstance = launchedBrowser;
|
|
89
|
+
instance.on('disconnected', () => {
|
|
90
|
+
if (_browserInstance !== launchedBrowser) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
_browserInstance = null;
|
|
94
|
+
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Browser disconnected or crashed.');
|
|
95
|
+
insideFunctionSpecifics.forgetBrowserEventLoop({
|
|
96
|
+
logLevel,
|
|
97
|
+
launchedBrowser,
|
|
98
|
+
});
|
|
99
|
+
launchedBrowser.instance.close({ silent: true }).catch((err) => {
|
|
100
|
+
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Could not close browser instance', err);
|
|
101
|
+
});
|
|
88
102
|
});
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
};
|
|
95
|
-
launching = false;
|
|
96
|
-
return _browserInstance;
|
|
103
|
+
return launchedBrowser;
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
launching = false;
|
|
107
|
+
}
|
|
97
108
|
}
|
|
98
109
|
if (_browserInstance.configurationString !== configurationString) {
|
|
99
110
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, 'Warm function, but Browser configuration changed. Killing old browser instance.');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CloudProvider, ProviderSpecifics, ServerlessPayload } from '@remotion/serverless-client';
|
|
2
2
|
import type { InsideFunctionSpecifics } from '../provider-implementation';
|
|
3
3
|
type Options = {
|
|
4
|
-
expectedBucketOwner: string;
|
|
4
|
+
expectedBucketOwner: string | null;
|
|
5
5
|
};
|
|
6
6
|
export declare const compositionsHandler: <Provider extends CloudProvider<string, Record<string, unknown>, Record<string, unknown>, string, object>>({ params, options, providerSpecifics, insideFunctionSpecifics, }: {
|
|
7
7
|
params: ServerlessPayload<Provider>;
|
|
@@ -2,7 +2,7 @@ import type { CloudProvider, ProviderSpecifics, ServerlessPayload } from '@remot
|
|
|
2
2
|
import type { InsideFunctionSpecifics } from '../provider-implementation';
|
|
3
3
|
import type { RequestContext } from './renderer';
|
|
4
4
|
type Options = {
|
|
5
|
-
expectedBucketOwner: string;
|
|
5
|
+
expectedBucketOwner: string | null;
|
|
6
6
|
getRemainingTimeInMillis: () => number;
|
|
7
7
|
requestContext: RequestContext | null;
|
|
8
8
|
};
|
package/dist/handlers/launch.js
CHANGED
|
@@ -10,7 +10,6 @@ const artifact_registry_1 = require("../artifact-registry");
|
|
|
10
10
|
const cleanup_props_1 = require("../cleanup-props");
|
|
11
11
|
const find_output_file_in_bucket_1 = require("../find-output-file-in-bucket");
|
|
12
12
|
const finish_render_1 = require("../finish-render");
|
|
13
|
-
const get_tmp_dir_1 = require("../get-tmp-dir");
|
|
14
13
|
const merge_chunks_1 = require("../merge-chunks");
|
|
15
14
|
const overall_render_progress_1 = require("../overall-render-progress");
|
|
16
15
|
const plan_frame_ranges_1 = require("../plan-frame-ranges");
|
|
@@ -21,16 +20,15 @@ const validate_composition_1 = require("../validate-composition");
|
|
|
21
20
|
const send_telemetry_event_1 = require("./send-telemetry-event");
|
|
22
21
|
const innerLaunchHandler = async ({ params, options, overallProgress, registerCleanupTask, providerSpecifics, insideFunctionSpecifics, onBrowser, }) => {
|
|
23
22
|
var _a, _b;
|
|
24
|
-
var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
23
|
+
var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
25
24
|
if (params.type !== serverless_client_2.ServerlessRoutines.launch) {
|
|
26
25
|
throw new Error('Expected launch type');
|
|
27
26
|
}
|
|
28
27
|
const startedDate = Date.now();
|
|
29
|
-
const chromiumParams =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
28
|
+
const chromiumParams = (_d = (_a = insideFunctionSpecifics.normalizeChromiumOptions) === null || _a === void 0 ? void 0 : _a.call(insideFunctionSpecifics, {
|
|
29
|
+
chromiumOptions: (_c = params.chromiumOptions) !== null && _c !== void 0 ? _c : {},
|
|
30
|
+
logLevel: params.logLevel,
|
|
31
|
+
})) !== null && _d !== void 0 ? _d : { ...((_e = params.chromiumOptions) !== null && _e !== void 0 ? _e : {}) };
|
|
34
32
|
const browserInstance = insideFunctionSpecifics.getBrowserInstance({
|
|
35
33
|
logLevel: params.logLevel,
|
|
36
34
|
indent: false,
|
|
@@ -72,14 +70,14 @@ const innerLaunchHandler = async ({ params, options, overallProgress, registerCl
|
|
|
72
70
|
composition: params.composition,
|
|
73
71
|
browserInstance: instance,
|
|
74
72
|
serializedInputPropsWithCustomSchema,
|
|
75
|
-
envVariables: (
|
|
73
|
+
envVariables: (_f = params.envVariables) !== null && _f !== void 0 ? _f : {},
|
|
76
74
|
timeoutInMilliseconds: validateCompositionTimeout,
|
|
77
|
-
chromiumOptions: (
|
|
75
|
+
chromiumOptions: (_g = params.chromiumOptions) !== null && _g !== void 0 ? _g : {},
|
|
78
76
|
port: null,
|
|
79
77
|
forceHeight: params.forceHeight,
|
|
80
78
|
forceWidth: params.forceWidth,
|
|
81
|
-
forceFps: (
|
|
82
|
-
forceDurationInFrames: (
|
|
79
|
+
forceFps: (_h = params.forceFps) !== null && _h !== void 0 ? _h : null,
|
|
80
|
+
forceDurationInFrames: (_j = params.forceDurationInFrames) !== null && _j !== void 0 ? _j : null,
|
|
83
81
|
logLevel: params.logLevel,
|
|
84
82
|
server: undefined,
|
|
85
83
|
offthreadVideoCacheSizeInBytes: params.offthreadVideoCacheSizeInBytes,
|
|
@@ -100,7 +98,7 @@ const innerLaunchHandler = async ({ params, options, overallProgress, registerCl
|
|
|
100
98
|
renderer_1.RenderInternals.validateConcurrency({
|
|
101
99
|
value: params.concurrencyPerFunction,
|
|
102
100
|
setting: 'concurrencyPerLambda',
|
|
103
|
-
checkIfValidForCurrentMachine: ((
|
|
101
|
+
checkIfValidForCurrentMachine: ((_k = params.rendererFunctionName) !== null && _k !== void 0 ? _k : null) === null,
|
|
104
102
|
});
|
|
105
103
|
const realFrameRange = renderer_1.RenderInternals.getRealFrameRange(comp.durationInFrames, params.frameRange);
|
|
106
104
|
const frameCount = renderer_1.RenderInternals.getFramesToRender(realFrameRange, params.everyNthFrame);
|
|
@@ -225,11 +223,16 @@ const innerLaunchHandler = async ({ params, options, overallProgress, registerCl
|
|
|
225
223
|
return payload;
|
|
226
224
|
});
|
|
227
225
|
renderer_1.RenderInternals.Log.info(logOptions, 'Render plan: ', chunks.map((c, i) => `Chunk ${i} (Frames ${c[0]} - ${c[1]})`).join(', '));
|
|
228
|
-
const rendererFunctionName = (
|
|
226
|
+
const rendererFunctionName = (_l = params.rendererFunctionName) !== null && _l !== void 0 ? _l : insideFunctionSpecifics.getCurrentFunctionName();
|
|
229
227
|
const shouldRenderDirectly = params.concurrency === 1 &&
|
|
230
228
|
params.rendererFunctionName === null &&
|
|
231
229
|
options.requestContext !== null;
|
|
232
230
|
const renderMetadata = {
|
|
231
|
+
outputFileIsConditional: !params.overwrite &&
|
|
232
|
+
providerSpecifics.supportsConditionalOutput({
|
|
233
|
+
customCredentials: (0, serverless_client_2.getCredentialsFromOutName)((_m = params.outName) !== null && _m !== void 0 ? _m : null),
|
|
234
|
+
}) &&
|
|
235
|
+
providerSpecifics.writeFileIfNotExists !== null,
|
|
233
236
|
startedDate,
|
|
234
237
|
totalChunks: chunks.length,
|
|
235
238
|
estimatedTotalLambdaInvokations: [
|
|
@@ -249,7 +252,7 @@ const innerLaunchHandler = async ({ params, options, overallProgress, registerCl
|
|
|
249
252
|
memorySizeInMb: insideFunctionSpecifics.getCurrentMemorySizeInMb(),
|
|
250
253
|
region: insideFunctionSpecifics.getCurrentRegionInFunction(),
|
|
251
254
|
renderId: params.renderId,
|
|
252
|
-
outName: (0, remove_outname_credentials_1.removeOutnameCredentials)((
|
|
255
|
+
outName: (0, remove_outname_credentials_1.removeOutnameCredentials)((_o = params.outName) !== null && _o !== void 0 ? _o : undefined),
|
|
253
256
|
privacy: params.privacy,
|
|
254
257
|
everyNthFrame: params.everyNthFrame,
|
|
255
258
|
frameRange: realFrameRange,
|
|
@@ -262,10 +265,10 @@ const innerLaunchHandler = async ({ params, options, overallProgress, registerCl
|
|
|
262
265
|
metadata: params.metadata,
|
|
263
266
|
functionName: insideFunctionSpecifics.getCurrentFunctionName(),
|
|
264
267
|
dimensions: {
|
|
265
|
-
width: comp.width * ((
|
|
266
|
-
height: comp.height * ((
|
|
268
|
+
width: comp.width * ((_p = params.scale) !== null && _p !== void 0 ? _p : 1),
|
|
269
|
+
height: comp.height * ((_q = params.scale) !== null && _q !== void 0 ? _q : 1),
|
|
267
270
|
},
|
|
268
|
-
rendererFunctionName: (
|
|
271
|
+
rendererFunctionName: (_r = params.rendererFunctionName) !== null && _r !== void 0 ? _r : insideFunctionSpecifics.getCurrentFunctionName(),
|
|
269
272
|
scale: params.scale,
|
|
270
273
|
};
|
|
271
274
|
const { key, renderBucketName, customCredentials } = (0, serverless_client_2.getExpectedOutName)({
|
|
@@ -274,7 +277,7 @@ const innerLaunchHandler = async ({ params, options, overallProgress, registerCl
|
|
|
274
277
|
customCredentials: typeof params.outName === 'string' ||
|
|
275
278
|
typeof params.outName === 'undefined'
|
|
276
279
|
? null
|
|
277
|
-
: ((
|
|
280
|
+
: ((_s = (_b = params.outName) === null || _b === void 0 ? void 0 : _b.s3OutputProvider) !== null && _s !== void 0 ? _s : null),
|
|
278
281
|
bucketNamePrefix: providerSpecifics.getBucketPrefix(),
|
|
279
282
|
});
|
|
280
283
|
if (!params.overwrite) {
|
|
@@ -288,6 +291,13 @@ const innerLaunchHandler = async ({ params, options, overallProgress, registerCl
|
|
|
288
291
|
providerSpecifics,
|
|
289
292
|
forcePathStyle: params.forcePathStyle,
|
|
290
293
|
requestHandler: null,
|
|
294
|
+
}).catch((err) => {
|
|
295
|
+
if (err instanceof serverless_client_2.OutputFileAccessDeniedError &&
|
|
296
|
+
renderMetadata.outputFileIsConditional) {
|
|
297
|
+
// The final conditional upload still enforces overwrite: false.
|
|
298
|
+
return null;
|
|
299
|
+
}
|
|
300
|
+
throw err;
|
|
291
301
|
});
|
|
292
302
|
if (output) {
|
|
293
303
|
throw new TypeError(`Output file "${key}" in bucket "${renderBucketName}" in region "${insideFunctionSpecifics.getCurrentRegionInFunction()}" already exists. Delete it before re-rendering, or set the 'overwrite' option in renderMediaOnLambda() to overwrite it."`);
|
|
@@ -483,7 +493,8 @@ const innerLaunchHandler = async ({ params, options, overallProgress, registerCl
|
|
|
483
493
|
return postRenderData;
|
|
484
494
|
};
|
|
485
495
|
const launchHandler = async ({ params, options, providerSpecifics, insideFunctionSpecifics, }) => {
|
|
486
|
-
var _a
|
|
496
|
+
var _a;
|
|
497
|
+
var _b, _c, _d, _e, _f, _g;
|
|
487
498
|
if (params.type !== serverless_client_2.ServerlessRoutines.launch) {
|
|
488
499
|
throw new Error('Expected launch type');
|
|
489
500
|
}
|
|
@@ -597,7 +608,7 @@ const launchHandler = async ({ params, options, providerSpecifics, insideFunctio
|
|
|
597
608
|
const webhookDueToTimeout = setTimeout(onTimeout, Math.max(options.getRemainingTimeInMillis() - 1000, 1000));
|
|
598
609
|
renderer_1.RenderInternals.Log.info(logOptions, `Function has ${Math.max(options.getRemainingTimeInMillis() - 1000, 1000)} before it times out`);
|
|
599
610
|
const overallProgress = (0, overall_render_progress_1.makeOverallRenderProgress)({
|
|
600
|
-
cancellationEnabled: (
|
|
611
|
+
cancellationEnabled: (_b = params.enableCancellation) !== null && _b !== void 0 ? _b : false,
|
|
601
612
|
renderId: params.renderId,
|
|
602
613
|
bucketName: params.bucketName,
|
|
603
614
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
@@ -621,10 +632,10 @@ const launchHandler = async ({ params, options, providerSpecifics, insideFunctio
|
|
|
621
632
|
});
|
|
622
633
|
clearTimeout(webhookDueToTimeout);
|
|
623
634
|
(0, send_telemetry_event_1.sendTelemetryEvent)({
|
|
624
|
-
licenseKey: (
|
|
635
|
+
licenseKey: (_c = params.licenseKey) !== null && _c !== void 0 ? _c : null,
|
|
625
636
|
logLevel: params.logLevel,
|
|
626
637
|
isStill: false,
|
|
627
|
-
isProduction: (
|
|
638
|
+
isProduction: (_d = params.isProduction) !== null && _d !== void 0 ? _d : true,
|
|
628
639
|
});
|
|
629
640
|
if (!params.webhook || webhookInvoked) {
|
|
630
641
|
return;
|
|
@@ -639,7 +650,7 @@ const launchHandler = async ({ params, options, providerSpecifics, insideFunctio
|
|
|
639
650
|
renderId: params.renderId,
|
|
640
651
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
641
652
|
bucketName: params.bucketName,
|
|
642
|
-
customData: (
|
|
653
|
+
customData: (_e = params.webhook.customData) !== null && _e !== void 0 ? _e : null,
|
|
643
654
|
outputUrl: postRenderData.outputFile,
|
|
644
655
|
lambdaErrors: postRenderData.errors,
|
|
645
656
|
outputFile: postRenderData.outputFile,
|
|
@@ -687,7 +698,7 @@ const launchHandler = async ({ params, options, providerSpecifics, insideFunctio
|
|
|
687
698
|
stack: err.stack,
|
|
688
699
|
type: 'stitcher',
|
|
689
700
|
isFatal: true,
|
|
690
|
-
tmpDir: (0
|
|
701
|
+
tmpDir: (_f = (_a = insideFunctionSpecifics.getTmpDirState) === null || _a === void 0 ? void 0 : _a.call(insideFunctionSpecifics, err.stack)) !== null && _f !== void 0 ? _f : null,
|
|
691
702
|
attempt: 1,
|
|
692
703
|
totalAttempts: 1,
|
|
693
704
|
willRetry: false,
|
|
@@ -708,7 +719,7 @@ const launchHandler = async ({ params, options, providerSpecifics, insideFunctio
|
|
|
708
719
|
renderId: params.renderId,
|
|
709
720
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
710
721
|
bucketName: params.bucketName,
|
|
711
|
-
customData: (
|
|
722
|
+
customData: (_g = params.webhook.customData) !== null && _g !== void 0 ? _g : null,
|
|
712
723
|
errors: [err].map((e) => ({
|
|
713
724
|
message: e.message,
|
|
714
725
|
name: e.name,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CloudProvider, GenericRenderProgress, ProviderSpecifics, ServerlessPayload } from '@remotion/serverless-client';
|
|
2
2
|
import type { InsideFunctionSpecifics } from '../provider-implementation';
|
|
3
3
|
type Options<Provider extends CloudProvider> = {
|
|
4
|
-
expectedBucketOwner: string;
|
|
4
|
+
expectedBucketOwner: string | null;
|
|
5
5
|
timeoutInMilliseconds: number;
|
|
6
6
|
retriesRemaining: number;
|
|
7
7
|
providerSpecifics: ProviderSpecifics<Provider>;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { CloudProvider, OnStream, ProviderSpecifics, ServerlessPayload } from '@remotion/serverless-client';
|
|
2
2
|
import type { InsideFunctionSpecifics } from '../provider-implementation';
|
|
3
3
|
type Options = {
|
|
4
|
-
expectedBucketOwner: string;
|
|
4
|
+
expectedBucketOwner: string | null;
|
|
5
5
|
isWarm: boolean;
|
|
6
6
|
};
|
|
7
7
|
export type RequestContext = {
|
|
8
|
-
|
|
8
|
+
expectedBucketOwner: string | null;
|
|
9
9
|
getRemainingTimeInMillis: () => number;
|
|
10
|
-
|
|
10
|
+
requestId: string;
|
|
11
11
|
};
|
|
12
12
|
export declare const rendererHandler: <Provider extends CloudProvider<string, Record<string, unknown>, Record<string, unknown>, string, object>>({ onStream, options, params, providerSpecifics, requestContext, insideFunctionSpecifics, onMediaFiles, executionMode, }: {
|
|
13
13
|
params: ServerlessPayload<Provider>;
|
|
@@ -10,18 +10,17 @@ const renderer_1 = require("@remotion/renderer");
|
|
|
10
10
|
const pure_1 = require("@remotion/renderer/pure");
|
|
11
11
|
const serverless_client_1 = require("@remotion/serverless-client");
|
|
12
12
|
const cancellation_polling_1 = require("../cancellation-polling");
|
|
13
|
-
const get_tmp_dir_1 = require("../get-tmp-dir");
|
|
14
|
-
const leak_detection_1 = require("../leak-detection");
|
|
15
13
|
const on_downloads_helpers_1 = require("../on-downloads-helpers");
|
|
16
|
-
const why_is_node_running_1 = require("../why-is-node-running");
|
|
17
14
|
const renderHandler = async ({ params, options, logs, onStream, providerSpecifics, insideFunctionSpecifics, onBrowserInstance, onMediaFiles, cancelSignal, }) => {
|
|
15
|
+
var _a;
|
|
16
|
+
var _b;
|
|
18
17
|
if (params.type !== serverless_client_1.ServerlessRoutines.renderer) {
|
|
19
18
|
throw new Error('Params must be renderer');
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
params.
|
|
24
|
-
}
|
|
20
|
+
const chromiumOptions = (_b = (_a = insideFunctionSpecifics.normalizeChromiumOptions) === null || _a === void 0 ? void 0 : _a.call(insideFunctionSpecifics, {
|
|
21
|
+
chromiumOptions: params.chromiumOptions,
|
|
22
|
+
logLevel: params.logLevel,
|
|
23
|
+
})) !== null && _b !== void 0 ? _b : params.chromiumOptions;
|
|
25
24
|
if (params.launchFunctionConfig.version !== serverless_client_1.VERSION) {
|
|
26
25
|
throw new Error(`The version of the function that was specified as "rendererFunctionName" is ${serverless_client_1.VERSION} but the version of the function that invoked the render is ${params.launchFunctionConfig.version}. Please make sure that the version of the function that is specified as "rendererFunctionName" is the same as the version of the function that is invoked.`);
|
|
27
26
|
}
|
|
@@ -49,7 +48,7 @@ const renderHandler = async ({ params, options, logs, onStream, providerSpecific
|
|
|
49
48
|
const browserInstance = await insideFunctionSpecifics.getBrowserInstance({
|
|
50
49
|
logLevel: params.logLevel,
|
|
51
50
|
indent: false,
|
|
52
|
-
chromiumOptions
|
|
51
|
+
chromiumOptions,
|
|
53
52
|
providerSpecifics,
|
|
54
53
|
insideFunctionSpecifics,
|
|
55
54
|
});
|
|
@@ -195,7 +194,7 @@ const renderHandler = async ({ params, options, logs, onStream, providerSpecific
|
|
|
195
194
|
gopSize: (_f = params.gopSize) !== null && _f !== void 0 ? _f : null,
|
|
196
195
|
onDownload: (0, on_downloads_helpers_1.onDownloadsHelper)(params.logLevel),
|
|
197
196
|
overwrite: false,
|
|
198
|
-
chromiumOptions
|
|
197
|
+
chromiumOptions,
|
|
199
198
|
scale: params.scale,
|
|
200
199
|
timeoutInMilliseconds: params.timeoutInMilliseconds,
|
|
201
200
|
port: null,
|
|
@@ -294,13 +293,14 @@ const renderHandler = async ({ params, options, logs, onStream, providerSpecific
|
|
|
294
293
|
renderer_1.RenderInternals.Log.verbose({ indent: false, logLevel: params.logLevel }, 'Done!');
|
|
295
294
|
return {};
|
|
296
295
|
};
|
|
297
|
-
const ENABLE_SLOW_LEAK_DETECTION = false;
|
|
298
296
|
const rendererHandler = async ({ onStream, options, params, providerSpecifics, requestContext, insideFunctionSpecifics, onMediaFiles, executionMode, }) => {
|
|
297
|
+
var _a, _b;
|
|
298
|
+
var _c, _d;
|
|
299
299
|
if (params.type !== serverless_client_1.ServerlessRoutines.renderer) {
|
|
300
300
|
throw new Error('Params must be renderer');
|
|
301
301
|
}
|
|
302
302
|
const logs = [];
|
|
303
|
-
const
|
|
303
|
+
const finishRendererDiagnostics = (_c = (_a = insideFunctionSpecifics.startRendererDiagnostics) === null || _a === void 0 ? void 0 : _a.call(insideFunctionSpecifics, requestContext.requestId)) !== null && _c !== void 0 ? _c : null;
|
|
304
304
|
let shouldKeepBrowserOpen = true;
|
|
305
305
|
let instance;
|
|
306
306
|
let cancellationRequested = false;
|
|
@@ -364,7 +364,7 @@ const rendererHandler = async ({ onStream, options, params, providerSpecifics, r
|
|
|
364
364
|
frame: null,
|
|
365
365
|
type: 'renderer',
|
|
366
366
|
isFatal: !shouldRetry,
|
|
367
|
-
tmpDir: (0
|
|
367
|
+
tmpDir: (_d = (_b = insideFunctionSpecifics.getTmpDirState) === null || _b === void 0 ? void 0 : _b.call(insideFunctionSpecifics, err.stack)) !== null && _d !== void 0 ? _d : null,
|
|
368
368
|
attempt: params.attempt,
|
|
369
369
|
totalAttempts: params.retriesLeft + params.attempt,
|
|
370
370
|
willRetry: shouldRetry,
|
|
@@ -374,28 +374,28 @@ const rendererHandler = async ({ onStream, options, params, providerSpecifics, r
|
|
|
374
374
|
}
|
|
375
375
|
finally {
|
|
376
376
|
stopCancellationPolling();
|
|
377
|
-
if (
|
|
378
|
-
|
|
379
|
-
await
|
|
377
|
+
if (!shouldKeepBrowserOpen && instance) {
|
|
378
|
+
try {
|
|
379
|
+
await insideFunctionSpecifics.closeBrowserInstance({
|
|
380
|
+
launchedBrowser: instance,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
catch (err) {
|
|
384
|
+
renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'Could not close browser instance after flaky error', err);
|
|
380
385
|
}
|
|
381
386
|
}
|
|
382
|
-
else if (
|
|
387
|
+
else if (executionMode === 'invoked' &&
|
|
388
|
+
shouldKeepBrowserOpen &&
|
|
389
|
+
instance) {
|
|
383
390
|
insideFunctionSpecifics.forgetBrowserEventLoop({
|
|
384
391
|
logLevel: params.logLevel,
|
|
385
392
|
launchedBrowser: instance,
|
|
386
393
|
});
|
|
387
394
|
}
|
|
388
|
-
|
|
395
|
+
if (!shouldKeepBrowserOpen) {
|
|
389
396
|
renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'Function did not succeed with flaky error, not keeping browser open.');
|
|
390
|
-
renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'Waiting 2 seconds to allow for response to be sent');
|
|
391
|
-
setTimeout(() => {
|
|
392
|
-
renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'Quitting Function forcefully now to force not keeping the Function warm.');
|
|
393
|
-
process.exit(0);
|
|
394
|
-
}, 2000);
|
|
395
|
-
}
|
|
396
|
-
if (ENABLE_SLOW_LEAK_DETECTION) {
|
|
397
|
-
(0, leak_detection_1.startLeakDetection)(leakDetection, requestContext.awsRequestId);
|
|
398
397
|
}
|
|
398
|
+
finishRendererDiagnostics === null || finishRendererDiagnostics === void 0 ? void 0 : finishRendererDiagnostics();
|
|
399
399
|
}
|
|
400
400
|
};
|
|
401
401
|
exports.rendererHandler = rendererHandler;
|
package/dist/handlers/start.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CloudProvider, ProviderSpecifics, ServerlessPayload } from '@remotion/serverless-client';
|
|
2
2
|
import type { InsideFunctionSpecifics } from '../provider-implementation';
|
|
3
3
|
type Options = {
|
|
4
|
-
expectedBucketOwner: string;
|
|
4
|
+
expectedBucketOwner: string | null;
|
|
5
5
|
timeoutInMilliseconds: number;
|
|
6
6
|
renderId: string;
|
|
7
7
|
};
|
package/dist/handlers/still.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { InsideFunctionSpecifics } from '../provider-implementation';
|
|
|
3
3
|
type Options<Provider extends CloudProvider> = {
|
|
4
4
|
params: ServerlessPayload<Provider>;
|
|
5
5
|
renderId: string;
|
|
6
|
-
expectedBucketOwner: string;
|
|
6
|
+
expectedBucketOwner: string | null;
|
|
7
7
|
onStream: OnStream<Provider>;
|
|
8
8
|
timeoutInMilliseconds: number;
|
|
9
9
|
providerSpecifics: ProviderSpecifics<Provider>;
|
package/dist/handlers/still.js
CHANGED
|
@@ -9,7 +9,6 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
9
9
|
const renderer_1 = require("@remotion/renderer");
|
|
10
10
|
const serverless_client_1 = require("@remotion/serverless-client");
|
|
11
11
|
const cleanup_serialized_input_props_1 = require("../cleanup-serialized-input-props");
|
|
12
|
-
const get_tmp_dir_1 = require("../get-tmp-dir");
|
|
13
12
|
const on_downloads_helpers_1 = require("../on-downloads-helpers");
|
|
14
13
|
const overall_render_progress_1 = require("../overall-render-progress");
|
|
15
14
|
const remove_outname_credentials_1 = require("../remove-outname-credentials");
|
|
@@ -122,6 +121,7 @@ const innerStillHandler = async ({ params, expectedBucketOwner, renderId, onStre
|
|
|
122
121
|
mediaCacheSizeInBytes: params.mediaCacheSizeInBytes,
|
|
123
122
|
});
|
|
124
123
|
const renderMetadata = {
|
|
124
|
+
outputFileIsConditional: null,
|
|
125
125
|
startedDate: Date.now(),
|
|
126
126
|
codec: null,
|
|
127
127
|
compositionId: params.composition,
|
|
@@ -315,6 +315,8 @@ const innerStillHandler = async ({ params, expectedBucketOwner, renderId, onStre
|
|
|
315
315
|
await server.closeServer(true);
|
|
316
316
|
};
|
|
317
317
|
const stillHandler = async (options) => {
|
|
318
|
+
var _a, _b;
|
|
319
|
+
var _c;
|
|
318
320
|
const { params } = options;
|
|
319
321
|
const cleanUpFn = [];
|
|
320
322
|
if (params.type !== serverless_client_1.ServerlessRoutines.still) {
|
|
@@ -347,7 +349,7 @@ const stillHandler = async (options) => {
|
|
|
347
349
|
frame: params.frame,
|
|
348
350
|
type: 'renderer',
|
|
349
351
|
isFatal: false,
|
|
350
|
-
tmpDir: (0
|
|
352
|
+
tmpDir: (_c = (_b = (_a = options.insideFunctionSpecifics).getTmpDirState) === null || _b === void 0 ? void 0 : _b.call(_a, err.stack)) !== null && _c !== void 0 ? _c : null,
|
|
351
353
|
attempt: params.attempt,
|
|
352
354
|
totalAttempts: 1 + params.maxRetries,
|
|
353
355
|
willRetry,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from '@remotion/serverless-client';
|
|
2
|
-
export { forgetBrowserEventLoopImplementation, getBrowserInstanceImplementation, } from './get-browser-instance';
|
|
2
|
+
export { closeBrowserInstanceImplementation, forgetBrowserEventLoopImplementation, getBrowserInstanceImplementation, } from './get-browser-instance';
|
|
3
3
|
export { compositionsHandler } from './handlers/compositions';
|
|
4
4
|
export { launchHandler } from './handlers/launch';
|
|
5
5
|
export { progressHandler } from './handlers/progress';
|
|
@@ -9,7 +9,6 @@ export { stillHandler } from './handlers/still';
|
|
|
9
9
|
export { infoHandler } from './info';
|
|
10
10
|
export { innerHandler, innerRoutine } from './inner-routine';
|
|
11
11
|
export { invokeWebhook } from './invoke-webhook';
|
|
12
|
-
export { setCurrentRequestId, stopLeakDetection } from './leak-detection';
|
|
13
12
|
export * from './provider-implementation';
|
|
14
13
|
export { ResponseStream } from './streaming/response-stream';
|
|
15
14
|
export { type ResponseStreamWriter, streamWriter, } from './streaming/stream-writer';
|
package/dist/index.js
CHANGED
|
@@ -14,9 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.validateComposition = exports.streamWriter = exports.ResponseStream = exports.
|
|
17
|
+
exports.validateComposition = exports.streamWriter = exports.ResponseStream = exports.invokeWebhook = exports.innerRoutine = exports.innerHandler = exports.infoHandler = exports.stillHandler = exports.startHandler = exports.rendererHandler = exports.progressHandler = exports.launchHandler = exports.compositionsHandler = exports.getBrowserInstanceImplementation = exports.forgetBrowserEventLoopImplementation = exports.closeBrowserInstanceImplementation = void 0;
|
|
18
18
|
__exportStar(require("@remotion/serverless-client"), exports);
|
|
19
19
|
const get_browser_instance_1 = require("./get-browser-instance");
|
|
20
|
+
Object.defineProperty(exports, "closeBrowserInstanceImplementation", { enumerable: true, get: function () { return get_browser_instance_1.closeBrowserInstanceImplementation; } });
|
|
20
21
|
Object.defineProperty(exports, "forgetBrowserEventLoopImplementation", { enumerable: true, get: function () { return get_browser_instance_1.forgetBrowserEventLoopImplementation; } });
|
|
21
22
|
Object.defineProperty(exports, "getBrowserInstanceImplementation", { enumerable: true, get: function () { return get_browser_instance_1.getBrowserInstanceImplementation; } });
|
|
22
23
|
const compositions_1 = require("./handlers/compositions");
|
|
@@ -38,9 +39,6 @@ Object.defineProperty(exports, "innerHandler", { enumerable: true, get: function
|
|
|
38
39
|
Object.defineProperty(exports, "innerRoutine", { enumerable: true, get: function () { return inner_routine_1.innerRoutine; } });
|
|
39
40
|
const invoke_webhook_1 = require("./invoke-webhook");
|
|
40
41
|
Object.defineProperty(exports, "invokeWebhook", { enumerable: true, get: function () { return invoke_webhook_1.invokeWebhook; } });
|
|
41
|
-
const leak_detection_1 = require("./leak-detection");
|
|
42
|
-
Object.defineProperty(exports, "setCurrentRequestId", { enumerable: true, get: function () { return leak_detection_1.setCurrentRequestId; } });
|
|
43
|
-
Object.defineProperty(exports, "stopLeakDetection", { enumerable: true, get: function () { return leak_detection_1.stopLeakDetection; } });
|
|
44
42
|
__exportStar(require("./provider-implementation"), exports);
|
|
45
43
|
const response_stream_1 = require("./streaming/response-stream");
|
|
46
44
|
Object.defineProperty(exports, "ResponseStream", { enumerable: true, get: function () { return response_stream_1.ResponseStream; } });
|
package/dist/inner-routine.js
CHANGED
|
@@ -11,25 +11,14 @@ const start_1 = require("./handlers/start");
|
|
|
11
11
|
const still_1 = require("./handlers/still");
|
|
12
12
|
const info_1 = require("./info");
|
|
13
13
|
const is_warm_1 = require("./is-warm");
|
|
14
|
-
const leak_detection_1 = require("./leak-detection");
|
|
15
14
|
const print_logging_grep_helper_1 = require("./print-logging-grep-helper");
|
|
16
15
|
const s3_renderer_output_1 = require("./s3-renderer-output");
|
|
17
16
|
const innerHandler = async ({ params, responseWriter, context, providerSpecifics, insideFunctionSpecifics, }) => {
|
|
18
|
-
(0, leak_detection_1.setCurrentRequestId)(context.awsRequestId);
|
|
19
|
-
process.env.__RESERVED_IS_INSIDE_REMOTION_LAMBDA = 'true';
|
|
20
17
|
const timeoutInMilliseconds = context.getRemainingTimeInMillis();
|
|
21
|
-
renderer_1.RenderInternals.Log.verbose({ indent: false, logLevel: params.logLevel }, '
|
|
22
|
-
(0, leak_detection_1.stopLeakDetection)();
|
|
23
|
-
if (!(context === null || context === void 0 ? void 0 : context.invokedFunctionArn)) {
|
|
24
|
-
throw new Error('Lambda function unexpectedly does not have context.invokedFunctionArn');
|
|
25
|
-
}
|
|
18
|
+
renderer_1.RenderInternals.Log.verbose({ indent: false, logLevel: params.logLevel }, 'Request ID:', context.requestId);
|
|
26
19
|
await insideFunctionSpecifics.deleteTmpDir();
|
|
27
20
|
const isWarm = (0, is_warm_1.getWarm)();
|
|
28
21
|
(0, is_warm_1.setWarm)();
|
|
29
|
-
const currentUserId = context.invokedFunctionArn.split(':')[4];
|
|
30
|
-
if (!currentUserId) {
|
|
31
|
-
throw new Error('Expected current user ID');
|
|
32
|
-
}
|
|
33
22
|
if (params.type === serverless_client_1.ServerlessRoutines.still) {
|
|
34
23
|
providerSpecifics.validateDeleteAfter(params.deleteAfter);
|
|
35
24
|
const renderId = insideFunctionSpecifics.generateRandomId({
|
|
@@ -75,7 +64,7 @@ const innerHandler = async ({ params, responseWriter, context, providerSpecifics
|
|
|
75
64
|
});
|
|
76
65
|
}
|
|
77
66
|
(0, still_1.stillHandler)({
|
|
78
|
-
expectedBucketOwner:
|
|
67
|
+
expectedBucketOwner: context.expectedBucketOwner,
|
|
79
68
|
params,
|
|
80
69
|
renderId,
|
|
81
70
|
onStream,
|
|
@@ -122,7 +111,7 @@ const innerHandler = async ({ params, responseWriter, context, providerSpecifics
|
|
|
122
111
|
const response = await (0, start_1.startHandler)({
|
|
123
112
|
params,
|
|
124
113
|
options: {
|
|
125
|
-
expectedBucketOwner:
|
|
114
|
+
expectedBucketOwner: context.expectedBucketOwner,
|
|
126
115
|
timeoutInMilliseconds,
|
|
127
116
|
renderId,
|
|
128
117
|
},
|
|
@@ -157,7 +146,7 @@ const innerHandler = async ({ params, responseWriter, context, providerSpecifics
|
|
|
157
146
|
await (0, launch_1.launchHandler)({
|
|
158
147
|
params,
|
|
159
148
|
options: {
|
|
160
|
-
expectedBucketOwner:
|
|
149
|
+
expectedBucketOwner: context.expectedBucketOwner,
|
|
161
150
|
getRemainingTimeInMillis: context.getRemainingTimeInMillis,
|
|
162
151
|
requestContext: context,
|
|
163
152
|
},
|
|
@@ -178,7 +167,7 @@ const innerHandler = async ({ params, responseWriter, context, providerSpecifics
|
|
|
178
167
|
const response = await (0, progress_1.progressHandler)({
|
|
179
168
|
params,
|
|
180
169
|
options: {
|
|
181
|
-
expectedBucketOwner:
|
|
170
|
+
expectedBucketOwner: context.expectedBucketOwner,
|
|
182
171
|
timeoutInMilliseconds,
|
|
183
172
|
retriesRemaining: 2,
|
|
184
173
|
providerSpecifics,
|
|
@@ -204,7 +193,7 @@ const innerHandler = async ({ params, responseWriter, context, providerSpecifics
|
|
|
204
193
|
const s3Output = transport === 's3'
|
|
205
194
|
? (0, s3_renderer_output_1.makeS3RendererOutput)({
|
|
206
195
|
params,
|
|
207
|
-
expectedBucketOwner:
|
|
196
|
+
expectedBucketOwner: context.expectedBucketOwner,
|
|
208
197
|
region,
|
|
209
198
|
providerSpecifics,
|
|
210
199
|
})
|
|
@@ -215,7 +204,7 @@ const innerHandler = async ({ params, responseWriter, context, providerSpecifics
|
|
|
215
204
|
(0, renderer_2.rendererHandler)({
|
|
216
205
|
params,
|
|
217
206
|
options: {
|
|
218
|
-
expectedBucketOwner:
|
|
207
|
+
expectedBucketOwner: context.expectedBucketOwner,
|
|
219
208
|
isWarm,
|
|
220
209
|
},
|
|
221
210
|
onStream: s3Output
|
|
@@ -272,7 +261,7 @@ const innerHandler = async ({ params, responseWriter, context, providerSpecifics
|
|
|
272
261
|
const response = await (0, compositions_1.compositionsHandler)({
|
|
273
262
|
params,
|
|
274
263
|
options: {
|
|
275
|
-
expectedBucketOwner:
|
|
264
|
+
expectedBucketOwner: context.expectedBucketOwner,
|
|
276
265
|
},
|
|
277
266
|
providerSpecifics,
|
|
278
267
|
insideFunctionSpecifics,
|
package/dist/merge-chunks.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { InsideFunctionSpecifics } from './provider-implementation';
|
|
|
6
6
|
export declare const mergeChunksAndFinishRender: <Provider extends CloudProvider<string, Record<string, unknown>, Record<string, unknown>, string, object>>(options: {
|
|
7
7
|
bucketName: string;
|
|
8
8
|
renderId: string;
|
|
9
|
-
expectedBucketOwner: string;
|
|
9
|
+
expectedBucketOwner: string | null;
|
|
10
10
|
numberOfFrames: number;
|
|
11
11
|
codec: "aac" | "gif" | "h264" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
|
|
12
12
|
chunkCount: number;
|
|
@@ -25,7 +25,7 @@ export declare const makeInitialOverallRenderProgress: <Provider extends CloudPr
|
|
|
25
25
|
export declare const makeOverallRenderProgress: <Provider extends CloudProvider<string, Record<string, unknown>, Record<string, unknown>, string, object>>({ renderId, bucketName, expectedBucketOwner, region, timeoutTimestamp, logLevel, providerSpecifics, forcePathStyle, cancellationEnabled, }: {
|
|
26
26
|
renderId: string;
|
|
27
27
|
bucketName: string;
|
|
28
|
-
expectedBucketOwner: string;
|
|
28
|
+
expectedBucketOwner: string | null;
|
|
29
29
|
region: Provider["region"];
|
|
30
30
|
timeoutTimestamp: number;
|
|
31
31
|
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BundlerInternals } from '@remotion/bundler';
|
|
2
2
|
import type { ChromiumOptions, EmittedArtifact, LogLevel, X264Preset } from '@remotion/renderer';
|
|
3
|
-
import type { CloudProvider, DeleteAfter,
|
|
3
|
+
import type { CloudProvider, DeleteAfter, FunctionErrorInfo, Privacy, ProviderSpecifics, ReceivedArtifact, WebhookPayload } from '@remotion/serverless-client';
|
|
4
4
|
import type { LaunchedBrowser } from './get-browser-instance';
|
|
5
5
|
export type MakeArtifactWithDetails<Provider extends CloudProvider> = (params: {
|
|
6
6
|
region: Provider['region'];
|
|
@@ -22,6 +22,9 @@ export type ForgetBrowserEventLoop = (options: {
|
|
|
22
22
|
logLevel: LogLevel;
|
|
23
23
|
launchedBrowser: LaunchedBrowser;
|
|
24
24
|
}) => void;
|
|
25
|
+
export type CloseBrowserInstance = (options: {
|
|
26
|
+
launchedBrowser: LaunchedBrowser;
|
|
27
|
+
}) => Promise<void>;
|
|
25
28
|
export type GenerateRenderId = (options: {
|
|
26
29
|
deleteAfter: DeleteAfter | null;
|
|
27
30
|
randomHashFn: () => string;
|
|
@@ -67,7 +70,7 @@ export type CreateFunction<Provider extends CloudProvider> = (options: CreateFun
|
|
|
67
70
|
FunctionName: string;
|
|
68
71
|
}>;
|
|
69
72
|
export type InvokeWebhookOptions = {
|
|
70
|
-
payload: WebhookPayload
|
|
73
|
+
payload: WebhookPayload<string | null>;
|
|
71
74
|
url: string;
|
|
72
75
|
secret: string | null;
|
|
73
76
|
};
|
|
@@ -82,6 +85,7 @@ export type InsideFunctionSpecifics<Provider extends CloudProvider> = {
|
|
|
82
85
|
defaultX264Preset: X264Preset | null;
|
|
83
86
|
getBrowserInstance: GetBrowserInstance;
|
|
84
87
|
forgetBrowserEventLoop: ForgetBrowserEventLoop;
|
|
88
|
+
closeBrowserInstance: CloseBrowserInstance;
|
|
85
89
|
timer: DebuggingTimer;
|
|
86
90
|
generateRandomId: GenerateRenderId;
|
|
87
91
|
deleteTmpDir: () => Promise<void>;
|
|
@@ -90,7 +94,12 @@ export type InsideFunctionSpecifics<Provider extends CloudProvider> = {
|
|
|
90
94
|
invokeWebhook: InvokeWebhook;
|
|
91
95
|
getCurrentRegionInFunction: () => Provider['region'];
|
|
92
96
|
makeArtifactWithDetails: MakeArtifactWithDetails<Provider>;
|
|
93
|
-
|
|
97
|
+
normalizeChromiumOptions: ((options: {
|
|
98
|
+
chromiumOptions: ChromiumOptions;
|
|
99
|
+
logLevel: LogLevel;
|
|
100
|
+
}) => ChromiumOptions) | null;
|
|
101
|
+
getTmpDirState: ((error: string) => FunctionErrorInfo['tmpDir']) | null;
|
|
102
|
+
startRendererDiagnostics: ((requestId: string) => () => void) | null;
|
|
94
103
|
};
|
|
95
104
|
export type FullClientSpecifics<Provider extends CloudProvider> = {
|
|
96
105
|
id: '__remotion_full_client_specifics';
|
|
@@ -2,7 +2,7 @@ import type { EmittedArtifact } from '@remotion/renderer';
|
|
|
2
2
|
import type { CloudProvider, OnStream, ProviderSpecifics, S3RendererArtifactMetadata, ServerlessPayload } from '@remotion/serverless-client';
|
|
3
3
|
export declare const makeS3RendererOutput: <Provider extends CloudProvider<string, Record<string, unknown>, Record<string, unknown>, string, object>>({ params, expectedBucketOwner, region, providerSpecifics, }: {
|
|
4
4
|
params: ServerlessPayload<Provider>;
|
|
5
|
-
expectedBucketOwner: string;
|
|
5
|
+
expectedBucketOwner: string | null;
|
|
6
6
|
region: Provider["region"];
|
|
7
7
|
providerSpecifics: ProviderSpecifics<Provider>;
|
|
8
8
|
}) => {
|
|
@@ -13,5 +13,5 @@ export declare const renderRendererFunctionWithRetry: <Provider extends CloudPro
|
|
|
13
13
|
providerSpecifics: ProviderSpecifics<Provider>;
|
|
14
14
|
insideFunctionSpecifics: InsideFunctionSpecifics<Provider>;
|
|
15
15
|
requestHandler: Provider["requestHandler"] | null;
|
|
16
|
-
expectedBucketOwner: string;
|
|
16
|
+
expectedBucketOwner: string | null;
|
|
17
17
|
}) => Promise<unknown>;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/serverless"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/serverless",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.523",
|
|
7
7
|
"description": "A runtime for distributed rendering",
|
|
8
8
|
"main": "dist",
|
|
9
9
|
"scripts": {
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
"access": "public"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@remotion/renderer": "4.0.
|
|
27
|
-
"@remotion/bundler": "4.0.
|
|
28
|
-
"@remotion/licensing": "4.0.
|
|
29
|
-
"@remotion/serverless-client": "4.0.
|
|
26
|
+
"@remotion/renderer": "4.0.523",
|
|
27
|
+
"@remotion/bundler": "4.0.523",
|
|
28
|
+
"@remotion/licensing": "4.0.523",
|
|
29
|
+
"@remotion/serverless-client": "4.0.523"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
32
|
+
"@remotion/eslint-config-internal": "4.0.523",
|
|
33
33
|
"eslint": "9.19.0",
|
|
34
34
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|
|
35
35
|
},
|