@remotion/renderer 4.0.0-alpha16 → 4.0.0-alpha18
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/assets/download-file.d.ts +1 -1
- package/dist/assets/download-file.js +11 -4
- package/dist/browser/Browser.d.ts +7 -6
- package/dist/browser/Browser.js +12 -12
- package/dist/browser/BrowserPage.d.ts +13 -2
- package/dist/browser/BrowserPage.js +14 -6
- package/dist/browser/BrowserRunner.js +2 -2
- package/dist/browser/LaunchOptions.d.ts +2 -0
- package/dist/browser/Launcher.js +2 -1
- package/dist/browser/Target.d.ts +2 -1
- package/dist/browser/Target.js +3 -1
- package/dist/browser/should-log-message.js +8 -0
- package/dist/compositor/compositor.d.ts +3 -2
- package/dist/compositor/compositor.js +6 -5
- package/dist/cycle-browser-tabs.d.ts +2 -1
- package/dist/cycle-browser-tabs.js +2 -2
- package/dist/get-browser-instance.d.ts +3 -2
- package/dist/get-browser-instance.js +5 -5
- package/dist/get-compositions.d.ts +4 -3
- package/dist/get-compositions.js +6 -5
- package/dist/index.d.ts +19 -20
- package/dist/logger.d.ts +1 -1
- package/dist/logger.js +4 -4
- package/dist/offthread-video-server.d.ts +3 -2
- package/dist/offthread-video-server.js +4 -3
- package/dist/open-browser.d.ts +3 -2
- package/dist/open-browser.js +7 -5
- package/dist/perf.js +4 -2
- package/dist/prepare-server.d.ts +3 -2
- package/dist/prepare-server.js +4 -4
- package/dist/prespawn-ffmpeg.d.ts +13 -1
- package/dist/prespawn-ffmpeg.js +21 -31
- package/dist/render-frames.d.ts +11 -4
- package/dist/render-frames.js +15 -11
- package/dist/render-media.d.ts +11 -4
- package/dist/render-media.js +19 -14
- package/dist/render-still.d.ts +8 -2
- package/dist/render-still.js +8 -8
- package/dist/replace-browser.d.ts +2 -1
- package/dist/replace-browser.js +2 -2
- package/dist/select-composition.d.ts +2 -1
- package/dist/select-composition.js +8 -8
- package/dist/serve-static.d.ts +2 -1
- package/dist/serve-static.js +1 -1
- package/dist/stitch-frames-to-video.d.ts +2 -1
- package/dist/stitch-frames-to-video.js +12 -22
- package/package.json +9 -9
package/dist/index.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export declare const RenderInternals: {
|
|
|
43
43
|
downloadMap: import("./assets/download-map").DownloadMap;
|
|
44
44
|
remotionRoot: string;
|
|
45
45
|
concurrency: number;
|
|
46
|
-
|
|
46
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
47
47
|
indent: boolean;
|
|
48
48
|
}) => Promise<{
|
|
49
49
|
port: number;
|
|
@@ -72,7 +72,7 @@ export declare const RenderInternals: {
|
|
|
72
72
|
downloaded: number;
|
|
73
73
|
totalSize: number | null;
|
|
74
74
|
}) => void) | undefined;
|
|
75
|
-
}, retries?: number) => Promise<{
|
|
75
|
+
}, retries?: number, attempt?: number) => Promise<{
|
|
76
76
|
sizeInBytes: number;
|
|
77
77
|
to: string;
|
|
78
78
|
}>;
|
|
@@ -123,7 +123,7 @@ export declare const RenderInternals: {
|
|
|
123
123
|
DEFAULT_CODEC: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
124
124
|
isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
|
|
125
125
|
logLevels: readonly ["verbose", "info", "warn", "error"];
|
|
126
|
-
isEqualOrBelowLogLevel: (currentLevel: "
|
|
126
|
+
isEqualOrBelowLogLevel: (currentLevel: "error" | "verbose" | "info" | "warn", level: "error" | "verbose" | "info" | "warn") => boolean;
|
|
127
127
|
isValidLogLevel: (level: string) => boolean;
|
|
128
128
|
perf: typeof perf;
|
|
129
129
|
convertToPositiveFrameIndex: ({ frame, durationInFrames, }: {
|
|
@@ -356,7 +356,7 @@ export declare const RenderInternals: {
|
|
|
356
356
|
verbose: (message?: any, ...optionalParams: any[]) => void;
|
|
357
357
|
verboseAdvanced: (options: {
|
|
358
358
|
indent: boolean;
|
|
359
|
-
logLevel: "
|
|
359
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
360
360
|
} & {
|
|
361
361
|
tag?: string | undefined;
|
|
362
362
|
secondTag?: string | undefined;
|
|
@@ -364,26 +364,26 @@ export declare const RenderInternals: {
|
|
|
364
364
|
info: (message?: any, ...optionalParams: any[]) => void;
|
|
365
365
|
infoAdvanced: (options: {
|
|
366
366
|
indent: boolean;
|
|
367
|
-
logLevel: "
|
|
367
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
368
368
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
369
369
|
warn: (message?: any, ...optionalParams: any[]) => void;
|
|
370
370
|
warnAdvanced: (options: {
|
|
371
371
|
indent: boolean;
|
|
372
|
-
logLevel: "
|
|
372
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
373
373
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
374
374
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
375
375
|
};
|
|
376
|
-
getLogLevel: () => "
|
|
377
|
-
setLogLevel: (newLogLevel: "
|
|
376
|
+
getLogLevel: () => "error" | "verbose" | "info" | "warn";
|
|
377
|
+
setLogLevel: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
378
378
|
INDENT_TOKEN: string;
|
|
379
379
|
isColorSupported: boolean;
|
|
380
380
|
HeadlessBrowser: typeof HeadlessBrowser;
|
|
381
|
-
prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency,
|
|
381
|
+
prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, logLevel, indent, }: {
|
|
382
382
|
webpackConfigOrServeUrl: string;
|
|
383
383
|
port: number | null;
|
|
384
384
|
remotionRoot: string;
|
|
385
385
|
concurrency: number;
|
|
386
|
-
|
|
386
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
387
387
|
indent: boolean;
|
|
388
388
|
}) => Promise<import("./prepare-server").RemotionServer>;
|
|
389
389
|
makeOrReuseServer: (server: import("./prepare-server").RemotionServer | undefined, config: {
|
|
@@ -391,7 +391,7 @@ export declare const RenderInternals: {
|
|
|
391
391
|
port: number | null;
|
|
392
392
|
remotionRoot: string;
|
|
393
393
|
concurrency: number;
|
|
394
|
-
|
|
394
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
395
395
|
indent: boolean;
|
|
396
396
|
}, { onDownload, onError, }: {
|
|
397
397
|
onError: (err: Error) => void;
|
|
@@ -408,7 +408,6 @@ export declare const RenderInternals: {
|
|
|
408
408
|
imageFormat: "jpeg" | "png" | "webp" | "pdf";
|
|
409
409
|
jpegQuality: number;
|
|
410
410
|
puppeteerInstance: HeadlessBrowser | null;
|
|
411
|
-
dumpBrowserLogs: boolean;
|
|
412
411
|
envVariables: Record<string, string>;
|
|
413
412
|
overwrite: boolean;
|
|
414
413
|
browserExecutable: import("./browser-executable").BrowserExecutable;
|
|
@@ -420,20 +419,20 @@ export declare const RenderInternals: {
|
|
|
420
419
|
cancelSignal: import("./make-cancel-signal").CancelSignal | null;
|
|
421
420
|
indent: boolean;
|
|
422
421
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
423
|
-
|
|
422
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
424
423
|
serveUrl: string;
|
|
425
424
|
port: number | null;
|
|
426
425
|
}) => Promise<{
|
|
427
426
|
buffer: Buffer | null;
|
|
428
427
|
}>;
|
|
429
|
-
internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent,
|
|
430
|
-
shouldDumpIo: boolean;
|
|
428
|
+
internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, }: {
|
|
431
429
|
browserExecutable: string | null;
|
|
432
430
|
chromiumOptions: import("./open-browser").ChromiumOptions;
|
|
433
431
|
forceDeviceScaleFactor: number | undefined;
|
|
434
432
|
viewport: import("./browser/PuppeteerViewport").Viewport | null;
|
|
435
433
|
indent: boolean;
|
|
436
434
|
browser: import("./browser").Browser;
|
|
435
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
437
436
|
}) => Promise<HeadlessBrowser>;
|
|
438
437
|
internalSelectComposition: (options: {
|
|
439
438
|
inputProps: Record<string, unknown>;
|
|
@@ -446,11 +445,11 @@ export declare const RenderInternals: {
|
|
|
446
445
|
port: number | null;
|
|
447
446
|
indent: boolean;
|
|
448
447
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
449
|
-
|
|
448
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
450
449
|
serveUrl: string;
|
|
451
450
|
id: string;
|
|
452
451
|
}) => Promise<import("remotion").AnyCompMetadata>;
|
|
453
|
-
internalGetCompositions: ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds,
|
|
452
|
+
internalGetCompositions: ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds, logLevel, }: {
|
|
454
453
|
inputProps: Record<string, unknown>;
|
|
455
454
|
envVariables: Record<string, string>;
|
|
456
455
|
puppeteerInstance: HeadlessBrowser | undefined;
|
|
@@ -461,11 +460,11 @@ export declare const RenderInternals: {
|
|
|
461
460
|
port: number | null;
|
|
462
461
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
463
462
|
indent: boolean;
|
|
464
|
-
|
|
463
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
465
464
|
serveUrlOrWebpackUrl: string;
|
|
466
465
|
}) => Promise<import("remotion").AnyCompMetadata[]>;
|
|
467
|
-
internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency,
|
|
468
|
-
internalRenderMedia: ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload,
|
|
466
|
+
internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, envVariables, everyNthFrame, frameRange, imageFormat, indent, inputProps, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, logLevel, webpackBundleOrServeUrl, }: import("./render-frames").InternalRenderFramesOptions) => Promise<import("./types").RenderFramesOutput>;
|
|
467
|
+
internalRenderMedia: ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, logLevel, }: import("./render-media").InternalRenderMediaOptions) => Promise<{
|
|
469
468
|
buffer: Buffer | null;
|
|
470
469
|
slowestFrames: import("./render-media").SlowFrame[];
|
|
471
470
|
}>;
|
package/dist/logger.d.ts
CHANGED
|
@@ -19,6 +19,6 @@ export declare const Log: {
|
|
|
19
19
|
warnAdvanced: (options: LogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
20
20
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
21
21
|
};
|
|
22
|
-
export declare const getLogLevel: () => "
|
|
22
|
+
export declare const getLogLevel: () => "error" | "verbose" | "info" | "warn";
|
|
23
23
|
export declare const setLogLevel: (newLogLevel: LogLevel) => void;
|
|
24
24
|
export {};
|
package/dist/logger.js
CHANGED
|
@@ -36,12 +36,12 @@ exports.Log = {
|
|
|
36
36
|
exports.Log.infoAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
|
|
37
37
|
},
|
|
38
38
|
infoAdvanced: (options, ...args) => {
|
|
39
|
-
|
|
40
|
-
return console.log(...[options.indent ? exports.INDENT_TOKEN : null, ...args].filter(truthy_1.truthy));
|
|
41
|
-
}
|
|
39
|
+
return console.log(...[options.indent ? exports.INDENT_TOKEN : null, ...args].filter(truthy_1.truthy));
|
|
42
40
|
},
|
|
43
41
|
warn: (...args) => {
|
|
44
|
-
|
|
42
|
+
if ((0, log_level_1.isEqualOrBelowLogLevel)((0, exports.getLogLevel)(), 'warn')) {
|
|
43
|
+
exports.Log.warnAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
|
|
44
|
+
}
|
|
45
45
|
},
|
|
46
46
|
warnAdvanced: (options, ...args) => {
|
|
47
47
|
if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'warn')) {
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import type { RequestListener } from 'node:http';
|
|
2
2
|
import type { DownloadMap } from './assets/download-map';
|
|
3
3
|
import type { Compositor } from './compositor/compositor';
|
|
4
|
+
import type { LogLevel } from './log-level';
|
|
4
5
|
export declare const extractUrlAndSourceFromUrl: (url: string) => {
|
|
5
6
|
src: string;
|
|
6
7
|
time: number;
|
|
7
8
|
transparent: boolean;
|
|
8
9
|
};
|
|
9
|
-
export declare const startOffthreadVideoServer: ({ downloadMap, concurrency,
|
|
10
|
+
export declare const startOffthreadVideoServer: ({ downloadMap, concurrency, logLevel, indent, }: {
|
|
10
11
|
downloadMap: DownloadMap;
|
|
11
12
|
concurrency: number;
|
|
12
|
-
|
|
13
|
+
logLevel: LogLevel;
|
|
13
14
|
indent: boolean;
|
|
14
15
|
}) => {
|
|
15
16
|
listener: RequestListener;
|
|
@@ -4,6 +4,7 @@ exports.OffthreadVideoServerEmitter = exports.startOffthreadVideoServer = export
|
|
|
4
4
|
const node_url_1 = require("node:url");
|
|
5
5
|
const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
|
|
6
6
|
const compositor_1 = require("./compositor/compositor");
|
|
7
|
+
const log_level_1 = require("./log-level");
|
|
7
8
|
const extractUrlAndSourceFromUrl = (url) => {
|
|
8
9
|
const parsed = new URL(url, 'http://localhost');
|
|
9
10
|
const query = parsed.search;
|
|
@@ -27,13 +28,13 @@ const extractUrlAndSourceFromUrl = (url) => {
|
|
|
27
28
|
};
|
|
28
29
|
};
|
|
29
30
|
exports.extractUrlAndSourceFromUrl = extractUrlAndSourceFromUrl;
|
|
30
|
-
const startOffthreadVideoServer = ({ downloadMap, concurrency,
|
|
31
|
+
const startOffthreadVideoServer = ({ downloadMap, concurrency, logLevel, indent, }) => {
|
|
31
32
|
const events = new OffthreadVideoServerEmitter();
|
|
32
33
|
const compositor = (0, compositor_1.startCompositor)('StartLongRunningProcess', {
|
|
33
34
|
concurrency,
|
|
34
35
|
maximum_frame_cache_items: (0, compositor_1.getIdealMaximumFrameCacheItems)(),
|
|
35
|
-
verbose,
|
|
36
|
-
}, indent);
|
|
36
|
+
verbose: (0, log_level_1.isEqualOrBelowLogLevel)(logLevel, 'verbose'),
|
|
37
|
+
}, logLevel, indent);
|
|
37
38
|
return {
|
|
38
39
|
close: () => {
|
|
39
40
|
compositor.finishCommands();
|
package/dist/open-browser.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Browser } from './browser';
|
|
2
2
|
import type { HeadlessBrowser } from './browser/Browser';
|
|
3
3
|
import type { Viewport } from './browser/PuppeteerViewport';
|
|
4
|
+
import { type LogLevel } from './log-level';
|
|
4
5
|
declare const validRenderers: readonly ["swangle", "angle", "egl", "swiftshader"];
|
|
5
6
|
type OpenGlRenderer = typeof validRenderers[number];
|
|
6
7
|
export type ChromiumOptions = {
|
|
@@ -12,13 +13,13 @@ export type ChromiumOptions = {
|
|
|
12
13
|
};
|
|
13
14
|
export declare const killAllBrowsers: () => Promise<void>;
|
|
14
15
|
type InternalOpenBrowserOptions = {
|
|
15
|
-
shouldDumpIo: boolean;
|
|
16
16
|
browserExecutable: string | null;
|
|
17
17
|
chromiumOptions: ChromiumOptions;
|
|
18
18
|
forceDeviceScaleFactor: number | undefined;
|
|
19
19
|
viewport: Viewport | null;
|
|
20
20
|
indent: boolean;
|
|
21
21
|
browser: Browser;
|
|
22
|
+
logLevel: LogLevel;
|
|
22
23
|
};
|
|
23
24
|
export type OpenBrowserOptions = {
|
|
24
25
|
shouldDumpIo?: boolean;
|
|
@@ -26,7 +27,7 @@ export type OpenBrowserOptions = {
|
|
|
26
27
|
chromiumOptions?: ChromiumOptions;
|
|
27
28
|
forceDeviceScaleFactor?: number;
|
|
28
29
|
};
|
|
29
|
-
export declare const internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent,
|
|
30
|
+
export declare const internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, }: InternalOpenBrowserOptions) => Promise<HeadlessBrowser>;
|
|
30
31
|
/**
|
|
31
32
|
* @description Opens a Chrome or Chromium browser instance.
|
|
32
33
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/open-browser)
|
package/dist/open-browser.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.openBrowser = exports.internalOpenBrowser = exports.killAllBrowsers = vo
|
|
|
4
4
|
const node_1 = require("./browser/node");
|
|
5
5
|
const get_local_browser_executable_1 = require("./get-local-browser-executable");
|
|
6
6
|
const get_video_threads_flag_1 = require("./get-video-threads-flag");
|
|
7
|
+
const log_level_1 = require("./log-level");
|
|
7
8
|
const validate_opengl_renderer_1 = require("./validate-opengl-renderer");
|
|
8
9
|
const validRenderers = ['swangle', 'angle', 'egl', 'swiftshader'];
|
|
9
10
|
const getOpenGlRenderer = (option) => {
|
|
@@ -21,13 +22,13 @@ const browserInstances = [];
|
|
|
21
22
|
const killAllBrowsers = async () => {
|
|
22
23
|
for (const browser of browserInstances) {
|
|
23
24
|
try {
|
|
24
|
-
await browser.close(true);
|
|
25
|
+
await browser.close(true, 'info', false);
|
|
25
26
|
}
|
|
26
27
|
catch (err) { }
|
|
27
28
|
}
|
|
28
29
|
};
|
|
29
30
|
exports.killAllBrowsers = killAllBrowsers;
|
|
30
|
-
const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent,
|
|
31
|
+
const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, }) => {
|
|
31
32
|
var _a, _b;
|
|
32
33
|
if (browser === 'firefox') {
|
|
33
34
|
throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
|
|
@@ -38,7 +39,8 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
|
|
|
38
39
|
const browserInstance = await node_1.puppeteer.launch({
|
|
39
40
|
executablePath,
|
|
40
41
|
product: browser,
|
|
41
|
-
dumpio:
|
|
42
|
+
dumpio: (0, log_level_1.isEqualOrBelowLogLevel)(logLevel, 'verbose'),
|
|
43
|
+
logLevel,
|
|
42
44
|
indent,
|
|
43
45
|
args: [
|
|
44
46
|
'about:blank',
|
|
@@ -109,7 +111,7 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
|
|
|
109
111
|
deviceScaleFactor: 1,
|
|
110
112
|
},
|
|
111
113
|
});
|
|
112
|
-
const pages = await browserInstance.pages();
|
|
114
|
+
const pages = await browserInstance.pages(logLevel, indent);
|
|
113
115
|
await pages[0].close();
|
|
114
116
|
browserInstances.push(browserInstance);
|
|
115
117
|
return browserInstance;
|
|
@@ -127,8 +129,8 @@ const openBrowser = (browser, options) => {
|
|
|
127
129
|
chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
|
|
128
130
|
forceDeviceScaleFactor,
|
|
129
131
|
indent: false,
|
|
130
|
-
shouldDumpIo: shouldDumpIo !== null && shouldDumpIo !== void 0 ? shouldDumpIo : false,
|
|
131
132
|
viewport: null,
|
|
133
|
+
logLevel: shouldDumpIo ? 'verbose' : 'info',
|
|
132
134
|
});
|
|
133
135
|
};
|
|
134
136
|
exports.openBrowser = openBrowser;
|
package/dist/perf.js
CHANGED
|
@@ -29,8 +29,10 @@ exports.stopPerfMeasure = stopPerfMeasure;
|
|
|
29
29
|
const getPerf = () => {
|
|
30
30
|
return [
|
|
31
31
|
'Render performance:',
|
|
32
|
-
...Object.keys(perf)
|
|
33
|
-
|
|
32
|
+
...Object.keys(perf)
|
|
33
|
+
.filter((p) => perf[p].length)
|
|
34
|
+
.map((p) => {
|
|
35
|
+
return ` ${p} => ${perf[p].reduce((a, b) => a + b, 0) / perf[p].length}ms (n = ${perf[p].length})`;
|
|
34
36
|
}),
|
|
35
37
|
];
|
|
36
38
|
};
|
package/dist/prepare-server.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { DownloadMap } from './assets/download-map';
|
|
|
3
3
|
import type { Compositor } from './compositor/compositor';
|
|
4
4
|
import type { OffthreadVideoServerEmitter } from './offthread-video-server';
|
|
5
5
|
import type { AnySourceMapConsumer } from './symbolicate-stacktrace';
|
|
6
|
+
import type { LogLevel } from './log-level';
|
|
6
7
|
export type RemotionServer = {
|
|
7
8
|
serveUrl: string;
|
|
8
9
|
closeServer: (force: boolean) => Promise<unknown>;
|
|
@@ -17,10 +18,10 @@ type PrepareServerOptions = {
|
|
|
17
18
|
port: number | null;
|
|
18
19
|
remotionRoot: string;
|
|
19
20
|
concurrency: number;
|
|
20
|
-
|
|
21
|
+
logLevel: LogLevel;
|
|
21
22
|
indent: boolean;
|
|
22
23
|
};
|
|
23
|
-
export declare const prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency,
|
|
24
|
+
export declare const prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, logLevel, indent, }: PrepareServerOptions) => Promise<RemotionServer>;
|
|
24
25
|
export declare const makeOrReuseServer: (server: RemotionServer | undefined, config: PrepareServerOptions, { onDownload, onError, }: {
|
|
25
26
|
onError: (err: Error) => void;
|
|
26
27
|
onDownload: RenderMediaOnDownload | null;
|
package/dist/prepare-server.js
CHANGED
|
@@ -14,16 +14,16 @@ const logger_1 = require("./logger");
|
|
|
14
14
|
const serve_static_1 = require("./serve-static");
|
|
15
15
|
const symbolicate_stacktrace_1 = require("./symbolicate-stacktrace");
|
|
16
16
|
const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
|
|
17
|
-
const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency,
|
|
17
|
+
const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, logLevel, indent, }) => {
|
|
18
18
|
const downloadMap = (0, download_map_1.makeDownloadMap)();
|
|
19
|
-
logger_1.Log.verboseAdvanced({ indent, logLevel
|
|
19
|
+
logger_1.Log.verboseAdvanced({ indent, logLevel }, 'Created directory for temporary files', downloadMap.assetDir);
|
|
20
20
|
if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
|
|
21
21
|
const { port: offthreadPort, close: closeProxy, compositor: comp, events, } = await (0, serve_static_1.serveStatic)(null, {
|
|
22
22
|
port,
|
|
23
23
|
downloadMap,
|
|
24
24
|
remotionRoot,
|
|
25
25
|
concurrency,
|
|
26
|
-
|
|
26
|
+
logLevel,
|
|
27
27
|
indent,
|
|
28
28
|
});
|
|
29
29
|
return Promise.resolve({
|
|
@@ -51,7 +51,7 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
51
51
|
downloadMap,
|
|
52
52
|
remotionRoot,
|
|
53
53
|
concurrency,
|
|
54
|
-
|
|
54
|
+
logLevel,
|
|
55
55
|
indent,
|
|
56
56
|
});
|
|
57
57
|
return Promise.resolve({
|
|
@@ -4,6 +4,17 @@ import type { VideoImageFormat } from './image-format';
|
|
|
4
4
|
import type { CancelSignal } from './make-cancel-signal';
|
|
5
5
|
import type { PixelFormat } from './pixel-format';
|
|
6
6
|
import type { ProResProfile } from './prores-profile';
|
|
7
|
+
import type { LogLevel } from './log-level';
|
|
8
|
+
type RunningStatus = {
|
|
9
|
+
type: 'running';
|
|
10
|
+
} | {
|
|
11
|
+
type: 'quit-successfully';
|
|
12
|
+
stderr: string;
|
|
13
|
+
} | {
|
|
14
|
+
type: 'quit-with-error';
|
|
15
|
+
exitCode: number;
|
|
16
|
+
stderr: string;
|
|
17
|
+
};
|
|
7
18
|
type PreStitcherOptions = {
|
|
8
19
|
fps: number;
|
|
9
20
|
width: number;
|
|
@@ -14,7 +25,7 @@ type PreStitcherOptions = {
|
|
|
14
25
|
crf: number | null | undefined;
|
|
15
26
|
onProgress: (progress: number) => void;
|
|
16
27
|
proResProfile: ProResProfile | undefined;
|
|
17
|
-
|
|
28
|
+
logLevel: LogLevel;
|
|
18
29
|
imageFormat: VideoImageFormat;
|
|
19
30
|
ffmpegOverride: FfmpegOverrideFn;
|
|
20
31
|
signal: CancelSignal;
|
|
@@ -24,5 +35,6 @@ type PreStitcherOptions = {
|
|
|
24
35
|
export declare const prespawnFfmpeg: (options: PreStitcherOptions) => {
|
|
25
36
|
task: import("execa").ExecaChildProcess<string>;
|
|
26
37
|
getLogs: () => string;
|
|
38
|
+
getExitStatus: () => RunningStatus;
|
|
27
39
|
};
|
|
28
40
|
export {};
|
package/dist/prespawn-ffmpeg.js
CHANGED
|
@@ -29,34 +29,6 @@ const prespawnFfmpeg = (options) => {
|
|
|
29
29
|
if (encoderName === null) {
|
|
30
30
|
throw new TypeError('encoderName is null: ' + JSON.stringify(options));
|
|
31
31
|
}
|
|
32
|
-
const supportsCrf = codec !== 'prores';
|
|
33
|
-
logger_1.Log.verboseAdvanced({
|
|
34
|
-
indent: options.indent,
|
|
35
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
36
|
-
tag: 'prespawnFfmpeg()',
|
|
37
|
-
}, 'encoder', encoderName);
|
|
38
|
-
logger_1.Log.verboseAdvanced({
|
|
39
|
-
indent: options.indent,
|
|
40
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
41
|
-
tag: 'prespawnFfmpeg()',
|
|
42
|
-
}, 'pixelFormat', pixelFormat);
|
|
43
|
-
if (supportsCrf) {
|
|
44
|
-
logger_1.Log.verboseAdvanced({
|
|
45
|
-
indent: options.indent,
|
|
46
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
47
|
-
tag: 'prespawnFfmpeg()',
|
|
48
|
-
}, 'pixelFormat', options.crf);
|
|
49
|
-
}
|
|
50
|
-
logger_1.Log.verboseAdvanced({
|
|
51
|
-
indent: options.indent,
|
|
52
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
53
|
-
tag: 'prespawnFfmpeg()',
|
|
54
|
-
}, 'codec', codec);
|
|
55
|
-
logger_1.Log.verboseAdvanced({
|
|
56
|
-
indent: options.indent,
|
|
57
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
58
|
-
tag: 'prespawnFfmpeg()',
|
|
59
|
-
}, 'proResProfileName', proResProfileName);
|
|
60
32
|
(0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
|
|
61
33
|
const ffmpegArgs = [
|
|
62
34
|
['-r', options.fps.toFixed(2)],
|
|
@@ -86,12 +58,12 @@ const prespawnFfmpeg = (options) => {
|
|
|
86
58
|
];
|
|
87
59
|
logger_1.Log.verboseAdvanced({
|
|
88
60
|
indent: options.indent,
|
|
89
|
-
logLevel: options.
|
|
61
|
+
logLevel: options.logLevel,
|
|
90
62
|
tag: 'prespawnFfmpeg()',
|
|
91
63
|
}, 'Generated FFMPEG command:');
|
|
92
64
|
logger_1.Log.verboseAdvanced({
|
|
93
65
|
indent: options.indent,
|
|
94
|
-
logLevel: options.
|
|
66
|
+
logLevel: options.logLevel,
|
|
95
67
|
tag: 'prespawnFfmpeg()',
|
|
96
68
|
}, ffmpegArgs.join(' '));
|
|
97
69
|
const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
|
|
@@ -113,6 +85,24 @@ const prespawnFfmpeg = (options) => {
|
|
|
113
85
|
}
|
|
114
86
|
}
|
|
115
87
|
});
|
|
116
|
-
|
|
88
|
+
let exitCode = {
|
|
89
|
+
type: 'running',
|
|
90
|
+
};
|
|
91
|
+
task.on('exit', (code) => {
|
|
92
|
+
if (typeof code === 'number' && code > 0) {
|
|
93
|
+
exitCode = {
|
|
94
|
+
type: 'quit-with-error',
|
|
95
|
+
exitCode: code,
|
|
96
|
+
stderr: ffmpegOutput,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
exitCode = {
|
|
101
|
+
type: 'quit-successfully',
|
|
102
|
+
stderr: ffmpegOutput,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return { task, getLogs: () => ffmpegOutput, getExitStatus: () => exitCode };
|
|
117
107
|
};
|
|
118
108
|
exports.prespawnFfmpeg = prespawnFfmpeg;
|
package/dist/render-frames.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type { CancelSignal } from './make-cancel-signal';
|
|
|
10
10
|
import type { ChromiumOptions } from './open-browser';
|
|
11
11
|
import type { RemotionServer } from './prepare-server';
|
|
12
12
|
import type { OnStartData, RenderFramesOutput } from './types';
|
|
13
|
+
import { type LogLevel } from './log-level';
|
|
13
14
|
export type InternalRenderFramesOptions = {
|
|
14
15
|
onStart: null | ((data: OnStartData) => void);
|
|
15
16
|
onFrameUpdate: null | ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void);
|
|
@@ -20,7 +21,6 @@ export type InternalRenderFramesOptions = {
|
|
|
20
21
|
jpegQuality: number;
|
|
21
22
|
frameRange: FrameRange | null;
|
|
22
23
|
everyNthFrame: number;
|
|
23
|
-
dumpBrowserLogs: boolean;
|
|
24
24
|
puppeteerInstance: HeadlessBrowser | undefined;
|
|
25
25
|
browserExecutable: BrowserExecutable | null;
|
|
26
26
|
onBrowserLog: null | ((log: BrowserLog) => void);
|
|
@@ -37,7 +37,7 @@ export type InternalRenderFramesOptions = {
|
|
|
37
37
|
muted: boolean;
|
|
38
38
|
concurrency: number | string | null;
|
|
39
39
|
webpackBundleOrServeUrl: string;
|
|
40
|
-
|
|
40
|
+
logLevel: LogLevel;
|
|
41
41
|
};
|
|
42
42
|
export type RenderFramesOptions = {
|
|
43
43
|
onStart: (data: OnStartData) => void;
|
|
@@ -53,7 +53,15 @@ export type RenderFramesOptions = {
|
|
|
53
53
|
jpegQuality?: number;
|
|
54
54
|
frameRange?: FrameRange | null;
|
|
55
55
|
everyNthFrame?: number;
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated Use "logLevel": "verbose" instead
|
|
58
|
+
*/
|
|
56
59
|
dumpBrowserLogs?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated Use "logLevel" instead
|
|
62
|
+
*/
|
|
63
|
+
verbose?: boolean;
|
|
64
|
+
logLevel?: LogLevel;
|
|
57
65
|
puppeteerInstance?: HeadlessBrowser;
|
|
58
66
|
browserExecutable?: BrowserExecutable;
|
|
59
67
|
onBrowserLog?: (log: BrowserLog) => void;
|
|
@@ -68,9 +76,8 @@ export type RenderFramesOptions = {
|
|
|
68
76
|
muted?: boolean;
|
|
69
77
|
concurrency?: number | string | null;
|
|
70
78
|
serveUrl: string;
|
|
71
|
-
verbose?: boolean;
|
|
72
79
|
};
|
|
73
|
-
export declare const internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency,
|
|
80
|
+
export declare const internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, envVariables, everyNthFrame, frameRange, imageFormat, indent, inputProps, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, logLevel, webpackBundleOrServeUrl, }: InternalRenderFramesOptions) => Promise<RenderFramesOutput>;
|
|
74
81
|
/**
|
|
75
82
|
* @description Renders a series of images using Puppeteer and computes information for mixing audio.
|
|
76
83
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-frames)
|
package/dist/render-frames.js
CHANGED
|
@@ -33,8 +33,9 @@ const set_props_and_env_1 = require("./set-props-and-env");
|
|
|
33
33
|
const take_frame_and_compose_1 = require("./take-frame-and-compose");
|
|
34
34
|
const truthy_1 = require("./truthy");
|
|
35
35
|
const validate_scale_1 = require("./validate-scale");
|
|
36
|
+
const logger_1 = require("./logger");
|
|
36
37
|
const MAX_RETRIES_PER_FRAME = 1;
|
|
37
|
-
const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, inputProps, jpegQuality, imageFormat, frameRange, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, actualConcurrency, everyNthFrame, proxyPort, cancelSignal, downloadMap, muted, makeBrowser, browserReplacer, compositor, sourcemapContext, }) => {
|
|
38
|
+
const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, inputProps, jpegQuality, imageFormat, frameRange, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, actualConcurrency, everyNthFrame, proxyPort, cancelSignal, downloadMap, muted, makeBrowser, browserReplacer, compositor, sourcemapContext, logLevel, indent, }) => {
|
|
38
39
|
if (outputDir) {
|
|
39
40
|
if (!node_fs_1.default.existsSync(outputDir)) {
|
|
40
41
|
node_fs_1.default.mkdirSync(outputDir, {
|
|
@@ -47,7 +48,9 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, inputProps
|
|
|
47
48
|
const framesToRender = (0, get_duration_from_frame_range_1.getFramesToRender)(realFrameRange, everyNthFrame);
|
|
48
49
|
const lastFrame = framesToRender[framesToRender.length - 1];
|
|
49
50
|
const makePage = async (context) => {
|
|
50
|
-
const page = await browserReplacer
|
|
51
|
+
const page = await browserReplacer
|
|
52
|
+
.getBrowser()
|
|
53
|
+
.newPage(context, logLevel, indent);
|
|
51
54
|
pagesArray.push(page);
|
|
52
55
|
await page.setViewport({
|
|
53
56
|
width: composition.width,
|
|
@@ -283,7 +286,7 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, inputProps
|
|
|
283
286
|
await Promise.all(downloadPromises);
|
|
284
287
|
return result;
|
|
285
288
|
};
|
|
286
|
-
const internalRenderFrames = ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency,
|
|
289
|
+
const internalRenderFrames = ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, envVariables, everyNthFrame, frameRange, imageFormat, indent, inputProps, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, logLevel, webpackBundleOrServeUrl, }) => {
|
|
287
290
|
remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderFrames()`');
|
|
288
291
|
remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderFrames()`');
|
|
289
292
|
remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`', false);
|
|
@@ -296,12 +299,12 @@ const internalRenderFrames = ({ browserExecutable, cancelSignal, chromiumOptions
|
|
|
296
299
|
(0, validate_scale_1.validateScale)(scale);
|
|
297
300
|
const makeBrowser = () => (0, open_browser_1.internalOpenBrowser)({
|
|
298
301
|
browser: browser_1.DEFAULT_BROWSER,
|
|
299
|
-
shouldDumpIo: dumpBrowserLogs,
|
|
300
302
|
browserExecutable,
|
|
301
303
|
chromiumOptions,
|
|
302
304
|
forceDeviceScaleFactor: scale,
|
|
303
305
|
indent,
|
|
304
306
|
viewport: null,
|
|
307
|
+
logLevel,
|
|
305
308
|
});
|
|
306
309
|
const browserInstance = puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : makeBrowser();
|
|
307
310
|
const actualConcurrency = (0, get_concurrency_1.getActualConcurrency)(concurrency);
|
|
@@ -323,7 +326,7 @@ const internalRenderFrames = ({ browserExecutable, cancelSignal, chromiumOptions
|
|
|
323
326
|
port,
|
|
324
327
|
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
325
328
|
concurrency: actualConcurrency,
|
|
326
|
-
|
|
329
|
+
logLevel,
|
|
327
330
|
indent,
|
|
328
331
|
}, {
|
|
329
332
|
onDownload,
|
|
@@ -331,8 +334,8 @@ const internalRenderFrames = ({ browserExecutable, cancelSignal, chromiumOptions
|
|
|
331
334
|
}),
|
|
332
335
|
browserInstance,
|
|
333
336
|
]).then(([{ server: { serveUrl, offthreadPort, compositor, sourceMap, downloadMap, }, cleanupServer, }, pInstance,]) => {
|
|
334
|
-
const browserReplacer = (0, replace_browser_1.handleBrowserCrash)(pInstance);
|
|
335
|
-
cleanup.push((0, cycle_browser_tabs_1.cycleBrowserTabs)(browserReplacer, actualConcurrency).stopCycling);
|
|
337
|
+
const browserReplacer = (0, replace_browser_1.handleBrowserCrash)(pInstance, logLevel, indent);
|
|
338
|
+
cleanup.push((0, cycle_browser_tabs_1.cycleBrowserTabs)(browserReplacer, actualConcurrency, logLevel, indent).stopCycling);
|
|
336
339
|
cleanup.push(() => cleanupServer(false));
|
|
337
340
|
return innerRenderFrames({
|
|
338
341
|
onError,
|
|
@@ -362,6 +365,8 @@ const internalRenderFrames = ({ browserExecutable, cancelSignal, chromiumOptions
|
|
|
362
365
|
outputDir,
|
|
363
366
|
scale,
|
|
364
367
|
timeoutInMilliseconds,
|
|
368
|
+
logLevel,
|
|
369
|
+
indent,
|
|
365
370
|
});
|
|
366
371
|
}),
|
|
367
372
|
])
|
|
@@ -384,7 +389,7 @@ const internalRenderFrames = ({ browserExecutable, cancelSignal, chromiumOptions
|
|
|
384
389
|
else {
|
|
385
390
|
Promise.resolve(browserInstance)
|
|
386
391
|
.then((instance) => {
|
|
387
|
-
return instance.close(true);
|
|
392
|
+
return instance.close(true, logLevel, indent);
|
|
388
393
|
})
|
|
389
394
|
.catch((err) => {
|
|
390
395
|
if (!(err === null || err === void 0 ? void 0 : err.message.includes('Target closed'))) {
|
|
@@ -405,7 +410,7 @@ exports.internalRenderFrames = internalRenderFrames;
|
|
|
405
410
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-frames)
|
|
406
411
|
*/
|
|
407
412
|
const renderFrames = (options) => {
|
|
408
|
-
const { composition, inputProps, onFrameUpdate, onStart, outputDir, serveUrl, browserExecutable, cancelSignal, chromiumOptions, concurrency, dumpBrowserLogs, envVariables, everyNthFrame, frameRange, imageFormat, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, port, puppeteerInstance, scale, timeoutInMilliseconds, verbose, quality, } = options;
|
|
413
|
+
const { composition, inputProps, onFrameUpdate, onStart, outputDir, serveUrl, browserExecutable, cancelSignal, chromiumOptions, concurrency, dumpBrowserLogs, envVariables, everyNthFrame, frameRange, imageFormat, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, port, puppeteerInstance, scale, timeoutInMilliseconds, verbose, quality, logLevel, } = options;
|
|
409
414
|
if (!composition) {
|
|
410
415
|
throw new Error('No `composition` option has been specified for renderFrames()');
|
|
411
416
|
}
|
|
@@ -421,7 +426,6 @@ const renderFrames = (options) => {
|
|
|
421
426
|
chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
|
|
422
427
|
composition,
|
|
423
428
|
concurrency: concurrency !== null && concurrency !== void 0 ? concurrency : null,
|
|
424
|
-
dumpBrowserLogs: dumpBrowserLogs !== null && dumpBrowserLogs !== void 0 ? dumpBrowserLogs : false,
|
|
425
429
|
envVariables: envVariables !== null && envVariables !== void 0 ? envVariables : {},
|
|
426
430
|
everyNthFrame: everyNthFrame !== null && everyNthFrame !== void 0 ? everyNthFrame : 1,
|
|
427
431
|
frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : null,
|
|
@@ -439,7 +443,7 @@ const renderFrames = (options) => {
|
|
|
439
443
|
outputDir,
|
|
440
444
|
port: port !== null && port !== void 0 ? port : null,
|
|
441
445
|
scale: scale !== null && scale !== void 0 ? scale : 1,
|
|
442
|
-
|
|
446
|
+
logLevel: verbose || dumpBrowserLogs ? 'verbose' : logLevel !== null && logLevel !== void 0 ? logLevel : (0, logger_1.getLogLevel)(),
|
|
443
447
|
timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT,
|
|
444
448
|
webpackBundleOrServeUrl: serveUrl,
|
|
445
449
|
server: undefined,
|