@remotion/renderer 4.0.255 → 4.0.257
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/browser/Browser.d.ts +23 -6
- package/dist/browser/Browser.js +22 -12
- package/dist/browser/BrowserPage.d.ts +5 -2
- package/dist/browser/BrowserPage.js +4 -2
- package/dist/browser/Launcher.js +1 -1
- package/dist/browser/Target.d.ts +7 -1
- package/dist/browser/Target.js +6 -1
- package/dist/browser/mitt/index.js +3 -3
- package/dist/browser-instances.js +1 -1
- package/dist/can-use-parallel-encoding.d.ts +1 -0
- package/dist/can-use-parallel-encoding.js +9 -1
- package/dist/client.d.ts +2 -2
- package/dist/cycle-browser-tabs.d.ts +6 -1
- package/dist/cycle-browser-tabs.js +2 -2
- package/dist/get-browser-instance.d.ts +2 -1
- package/dist/get-browser-instance.js +14 -4
- package/dist/get-codec-name.d.ts +1 -1
- package/dist/get-compositions.js +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/make-page.d.ts +27 -0
- package/dist/make-page.js +71 -0
- package/dist/next-frame-to-render.d.ts +10 -0
- package/dist/next-frame-to-render.js +35 -0
- package/dist/open-browser.js +3 -3
- package/dist/options/gl.d.ts +1 -1
- package/dist/options/index.d.ts +2 -2
- package/dist/options/metadata.d.ts +1 -1
- package/dist/options/webhook-custom-data.d.ts +1 -1
- package/dist/pool.d.ts +7 -6
- package/dist/render-frame-and-retry-target-close.d.ts +50 -0
- package/dist/render-frame-and-retry-target-close.js +165 -0
- package/dist/render-frame-with-option-to-reject.d.ts +43 -0
- package/dist/render-frame-with-option-to-reject.js +136 -0
- package/dist/render-frame.d.ts +43 -0
- package/dist/render-frame.js +46 -0
- package/dist/render-frames.js +86 -312
- package/dist/render-partitions.d.ts +7 -0
- package/dist/render-partitions.js +50 -0
- package/dist/render-still.js +7 -2
- package/dist/replace-browser.js +1 -1
- package/dist/select-composition.js +1 -0
- package/dist/test-gpu.js +1 -0
- package/package.json +12 -12
|
@@ -50,12 +50,24 @@ export declare class HeadlessBrowser extends EventEmitter {
|
|
|
50
50
|
runner: BrowserRunner;
|
|
51
51
|
});
|
|
52
52
|
browserContexts(): BrowserContext[];
|
|
53
|
-
newPage(context
|
|
54
|
-
|
|
53
|
+
newPage({ context, logLevel, indent, pageIndex, }: {
|
|
54
|
+
context: SourceMapGetter;
|
|
55
|
+
logLevel: LogLevel;
|
|
56
|
+
indent: boolean;
|
|
57
|
+
pageIndex: number;
|
|
58
|
+
}): Promise<Page>;
|
|
59
|
+
_createPageInContext({ context, logLevel, indent, pageIndex, }: {
|
|
60
|
+
context: SourceMapGetter;
|
|
61
|
+
logLevel: LogLevel;
|
|
62
|
+
indent: boolean;
|
|
63
|
+
pageIndex: number;
|
|
64
|
+
}): Promise<Page>;
|
|
55
65
|
targets(): Target[];
|
|
56
66
|
waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: WaitForTargetOptions): Promise<Target>;
|
|
57
|
-
pages(
|
|
58
|
-
close(silent
|
|
67
|
+
pages(): Promise<Page[]>;
|
|
68
|
+
close({ silent }: {
|
|
69
|
+
silent: boolean;
|
|
70
|
+
}): Promise<void>;
|
|
59
71
|
disconnect(): void;
|
|
60
72
|
}
|
|
61
73
|
export declare class BrowserContext extends EventEmitter {
|
|
@@ -65,8 +77,13 @@ export declare class BrowserContext extends EventEmitter {
|
|
|
65
77
|
waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: {
|
|
66
78
|
timeout?: number;
|
|
67
79
|
}): Promise<Target>;
|
|
68
|
-
pages(
|
|
69
|
-
newPage(context
|
|
80
|
+
pages(): Promise<Page[]>;
|
|
81
|
+
newPage({ context, logLevel, indent, pageIndex, }: {
|
|
82
|
+
context: SourceMapGetter;
|
|
83
|
+
logLevel: LogLevel;
|
|
84
|
+
indent: boolean;
|
|
85
|
+
pageIndex: number;
|
|
86
|
+
}): Promise<Page>;
|
|
70
87
|
browser(): HeadlessBrowser;
|
|
71
88
|
}
|
|
72
89
|
export {};
|
package/dist/browser/Browser.js
CHANGED
|
@@ -75,10 +75,10 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
75
75
|
browserContexts() {
|
|
76
76
|
return [__classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f"), ...Array.from(__classPrivateFieldGet(this, _HeadlessBrowser_contexts, "f").values())];
|
|
77
77
|
}
|
|
78
|
-
newPage(context, logLevel, indent) {
|
|
79
|
-
return __classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f").newPage(context, logLevel, indent);
|
|
78
|
+
newPage({ context, logLevel, indent, pageIndex, }) {
|
|
79
|
+
return __classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f").newPage({ context, logLevel, indent, pageIndex });
|
|
80
80
|
}
|
|
81
|
-
async _createPageInContext(context, logLevel, indent) {
|
|
81
|
+
async _createPageInContext({ context, logLevel, indent, pageIndex, }) {
|
|
82
82
|
const { value: { targetId }, } = await this.connection.send('Target.createTarget', {
|
|
83
83
|
url: 'about:blank',
|
|
84
84
|
browserContextId: undefined,
|
|
@@ -91,7 +91,12 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
91
91
|
if (!initialized) {
|
|
92
92
|
throw new Error(`Failed to create target for page (id = ${targetId})`);
|
|
93
93
|
}
|
|
94
|
-
const page = await target.page(
|
|
94
|
+
const page = await target.page({
|
|
95
|
+
sourceMapGetter: context,
|
|
96
|
+
logLevel,
|
|
97
|
+
indent,
|
|
98
|
+
pageIndex,
|
|
99
|
+
});
|
|
95
100
|
if (!page) {
|
|
96
101
|
throw new Error(`Failed to create a page for context`);
|
|
97
102
|
}
|
|
@@ -129,18 +134,18 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
136
|
}
|
|
132
|
-
async pages(
|
|
137
|
+
async pages() {
|
|
133
138
|
const contextPages = await Promise.all(this.browserContexts().map((context) => {
|
|
134
|
-
return context.pages(
|
|
139
|
+
return context.pages();
|
|
135
140
|
}));
|
|
136
141
|
// Flatten array.
|
|
137
142
|
return contextPages.reduce((acc, x) => {
|
|
138
143
|
return acc.concat(x);
|
|
139
144
|
}, []);
|
|
140
145
|
}
|
|
141
|
-
async close(silent
|
|
146
|
+
async close({ silent }) {
|
|
142
147
|
await this.runner.closeProcess();
|
|
143
|
-
(await this.pages(
|
|
148
|
+
(await this.pages()).forEach((page) => {
|
|
144
149
|
page.emit("disposed" /* PageEmittedEvents.Disposed */);
|
|
145
150
|
page.closed = true;
|
|
146
151
|
});
|
|
@@ -207,16 +212,21 @@ class BrowserContext extends EventEmitter_1.EventEmitter {
|
|
|
207
212
|
return target.browserContext() === this && predicate(target);
|
|
208
213
|
}, options);
|
|
209
214
|
}
|
|
210
|
-
async pages(
|
|
215
|
+
async pages() {
|
|
211
216
|
const pages = await Promise.all(this.targets()
|
|
212
217
|
.filter((target) => target.type() === 'page')
|
|
213
|
-
.map((target) => target.
|
|
218
|
+
.map((target) => target.expectPage()));
|
|
214
219
|
return pages.filter((page) => {
|
|
215
220
|
return Boolean(page);
|
|
216
221
|
});
|
|
217
222
|
}
|
|
218
|
-
newPage(context, logLevel, indent) {
|
|
219
|
-
return __classPrivateFieldGet(this, _BrowserContext_browser, "f")._createPageInContext(
|
|
223
|
+
newPage({ context, logLevel, indent, pageIndex, }) {
|
|
224
|
+
return __classPrivateFieldGet(this, _BrowserContext_browser, "f")._createPageInContext({
|
|
225
|
+
context,
|
|
226
|
+
logLevel,
|
|
227
|
+
indent,
|
|
228
|
+
pageIndex,
|
|
229
|
+
});
|
|
220
230
|
}
|
|
221
231
|
browser() {
|
|
222
232
|
return __classPrivateFieldGet(this, _BrowserContext_browser, "f");
|
|
@@ -27,7 +27,7 @@ interface PageEventObject {
|
|
|
27
27
|
export declare class Page extends EventEmitter {
|
|
28
28
|
#private;
|
|
29
29
|
id: string;
|
|
30
|
-
static _create({ client, target, defaultViewport, browser, sourceMapGetter, logLevel, indent, }: {
|
|
30
|
+
static _create({ client, target, defaultViewport, browser, sourceMapGetter, logLevel, indent, pageIndex, }: {
|
|
31
31
|
client: CDPSession;
|
|
32
32
|
target: Target;
|
|
33
33
|
defaultViewport: Viewport;
|
|
@@ -35,19 +35,22 @@ export declare class Page extends EventEmitter {
|
|
|
35
35
|
sourceMapGetter: SourceMapGetter;
|
|
36
36
|
logLevel: LogLevel;
|
|
37
37
|
indent: boolean;
|
|
38
|
+
pageIndex: number;
|
|
38
39
|
}): Promise<Page>;
|
|
39
40
|
closed: boolean;
|
|
40
41
|
browser: HeadlessBrowser;
|
|
41
42
|
screenshotTaskQueue: TaskQueue;
|
|
42
43
|
sourceMapGetter: SourceMapGetter;
|
|
43
44
|
logLevel: LogLevel;
|
|
44
|
-
|
|
45
|
+
pageIndex: number;
|
|
46
|
+
constructor({ client, target, browser, sourceMapGetter, logLevel, indent, pageIndex, }: {
|
|
45
47
|
client: CDPSession;
|
|
46
48
|
target: Target;
|
|
47
49
|
browser: HeadlessBrowser;
|
|
48
50
|
sourceMapGetter: SourceMapGetter;
|
|
49
51
|
logLevel: LogLevel;
|
|
50
52
|
indent: boolean;
|
|
53
|
+
pageIndex: number;
|
|
51
54
|
});
|
|
52
55
|
/**
|
|
53
56
|
* Listen to page events.
|
|
@@ -49,7 +49,7 @@ const shouldHideWarning = (log) => {
|
|
|
49
49
|
return false;
|
|
50
50
|
};
|
|
51
51
|
class Page extends EventEmitter_1.EventEmitter {
|
|
52
|
-
static async _create({ client, target, defaultViewport, browser, sourceMapGetter, logLevel, indent, }) {
|
|
52
|
+
static async _create({ client, target, defaultViewport, browser, sourceMapGetter, logLevel, indent, pageIndex, }) {
|
|
53
53
|
const page = new Page({
|
|
54
54
|
client,
|
|
55
55
|
target,
|
|
@@ -57,12 +57,13 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
57
57
|
sourceMapGetter,
|
|
58
58
|
logLevel,
|
|
59
59
|
indent,
|
|
60
|
+
pageIndex,
|
|
60
61
|
});
|
|
61
62
|
await __classPrivateFieldGet(page, _Page_instances, "m", _Page_initialize).call(page);
|
|
62
63
|
await page.setViewport(defaultViewport);
|
|
63
64
|
return page;
|
|
64
65
|
}
|
|
65
|
-
constructor({ client, target, browser, sourceMapGetter, logLevel, indent, }) {
|
|
66
|
+
constructor({ client, target, browser, sourceMapGetter, logLevel, indent, pageIndex, }) {
|
|
66
67
|
super();
|
|
67
68
|
_Page_instances.add(this);
|
|
68
69
|
this.closed = false;
|
|
@@ -79,6 +80,7 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
79
80
|
this.id = String(Math.random());
|
|
80
81
|
this.sourceMapGetter = sourceMapGetter;
|
|
81
82
|
this.logLevel = logLevel;
|
|
83
|
+
this.pageIndex = pageIndex;
|
|
82
84
|
client.on('Target.attachedToTarget', (event) => {
|
|
83
85
|
switch (event.targetInfo.type) {
|
|
84
86
|
case 'iframe':
|
package/dist/browser/Launcher.js
CHANGED
package/dist/browser/Target.d.ts
CHANGED
|
@@ -37,7 +37,13 @@ export declare class Target {
|
|
|
37
37
|
/**
|
|
38
38
|
* If the target is not of type `"page"` or `"background_page"`, returns `null`.
|
|
39
39
|
*/
|
|
40
|
-
page(sourceMapGetter
|
|
40
|
+
page({ sourceMapGetter, logLevel, indent, pageIndex, }: {
|
|
41
|
+
sourceMapGetter: SourceMapGetter;
|
|
42
|
+
logLevel: LogLevel;
|
|
43
|
+
indent: boolean;
|
|
44
|
+
pageIndex: number;
|
|
45
|
+
}): Promise<Page | null>;
|
|
46
|
+
expectPage(): Promise<Page | null>;
|
|
41
47
|
url(): string;
|
|
42
48
|
/**
|
|
43
49
|
* Identifies what kind of target this is.
|
package/dist/browser/Target.js
CHANGED
|
@@ -79,7 +79,7 @@ class Target {
|
|
|
79
79
|
/**
|
|
80
80
|
* If the target is not of type `"page"` or `"background_page"`, returns `null`.
|
|
81
81
|
*/
|
|
82
|
-
async page(sourceMapGetter, logLevel, indent) {
|
|
82
|
+
async page({ sourceMapGetter, logLevel, indent, pageIndex, }) {
|
|
83
83
|
var _a;
|
|
84
84
|
if (isPagetTarget(__classPrivateFieldGet(this, _Target_targetInfo, "f")) && !__classPrivateFieldGet(this, _Target_pagePromise, "f")) {
|
|
85
85
|
__classPrivateFieldSet(this, _Target_pagePromise, __classPrivateFieldGet(this, _Target_sessionFactory, "f").call(this).then((client) => {
|
|
@@ -92,11 +92,16 @@ class Target {
|
|
|
92
92
|
sourceMapGetter,
|
|
93
93
|
logLevel,
|
|
94
94
|
indent,
|
|
95
|
+
pageIndex,
|
|
95
96
|
});
|
|
96
97
|
}), "f");
|
|
97
98
|
}
|
|
98
99
|
return (_a = (await __classPrivateFieldGet(this, _Target_pagePromise, "f"))) !== null && _a !== void 0 ? _a : null;
|
|
99
100
|
}
|
|
101
|
+
async expectPage() {
|
|
102
|
+
var _a;
|
|
103
|
+
return (_a = (await __classPrivateFieldGet(this, _Target_pagePromise, "f"))) !== null && _a !== void 0 ? _a : null;
|
|
104
|
+
}
|
|
100
105
|
url() {
|
|
101
106
|
return __classPrivateFieldGet(this, _Target_targetInfo, "f").url;
|
|
102
107
|
}
|
|
@@ -19,21 +19,21 @@ function mitt(all) {
|
|
|
19
19
|
* @param {Function} handler Function to call in response to given event
|
|
20
20
|
* @memberOf mitt
|
|
21
21
|
*/
|
|
22
|
-
on(type, handler) {
|
|
22
|
+
on: (type, handler) => {
|
|
23
23
|
const handlers = all === null || all === void 0 ? void 0 : all.get(type);
|
|
24
24
|
const added = handlers === null || handlers === void 0 ? void 0 : handlers.push(handler);
|
|
25
25
|
if (!added) {
|
|
26
26
|
all === null || all === void 0 ? void 0 : all.set(type, [handler]);
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
|
-
off(type, handler) {
|
|
29
|
+
off: (type, handler) => {
|
|
30
30
|
const handlers = all === null || all === void 0 ? void 0 : all.get(type);
|
|
31
31
|
if (handlers) {
|
|
32
32
|
// eslint-disable-next-line no-bitwise
|
|
33
33
|
handlers.splice(handlers.indexOf(handler) >>> 0, 1);
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
|
-
emit(type, evt) {
|
|
36
|
+
emit: (type, evt) => {
|
|
37
37
|
((all === null || all === void 0 ? void 0 : all.get(type)) || [])
|
|
38
38
|
.slice()
|
|
39
39
|
.forEach((handler) => {
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.canUseParallelEncoding = void 0;
|
|
3
|
+
exports.getShouldUsePartitionedRendering = exports.canUseParallelEncoding = void 0;
|
|
4
4
|
const is_audio_codec_1 = require("./is-audio-codec");
|
|
5
5
|
const canUseParallelEncoding = (codec) => {
|
|
6
|
+
if ((0, exports.getShouldUsePartitionedRendering)()) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
6
9
|
if ((0, is_audio_codec_1.isAudioCodec)(codec)) {
|
|
7
10
|
return false;
|
|
8
11
|
}
|
|
9
12
|
return codec === 'h264' || codec === 'h264-mkv' || codec === 'h265';
|
|
10
13
|
};
|
|
11
14
|
exports.canUseParallelEncoding = canUseParallelEncoding;
|
|
15
|
+
const getShouldUsePartitionedRendering = () => {
|
|
16
|
+
const shouldUsePartitionedRendering = process.env.REMOTION_PARTITIONED_RENDERING === 'true';
|
|
17
|
+
return shouldUsePartitionedRendering;
|
|
18
|
+
};
|
|
19
|
+
exports.getShouldUsePartitionedRendering = getShouldUsePartitionedRendering;
|
package/dist/client.d.ts
CHANGED
|
@@ -394,7 +394,7 @@ export declare const BrowserSafeApis: {
|
|
|
394
394
|
webhookCustomDataOption: {
|
|
395
395
|
name: string;
|
|
396
396
|
cliFlag: "webhook-custom-data";
|
|
397
|
-
description: (type: "
|
|
397
|
+
description: (type: "cli" | "ssr") => import("react/jsx-runtime").JSX.Element;
|
|
398
398
|
ssrName: "customData";
|
|
399
399
|
docLink: string;
|
|
400
400
|
type: Record<string, unknown> | null;
|
|
@@ -807,7 +807,7 @@ export declare const BrowserSafeApis: {
|
|
|
807
807
|
metadataOption: {
|
|
808
808
|
name: string;
|
|
809
809
|
cliFlag: "metadata";
|
|
810
|
-
description: (mode: "
|
|
810
|
+
description: (mode: "cli" | "ssr") => import("react/jsx-runtime").JSX.Element;
|
|
811
811
|
docLink: string;
|
|
812
812
|
type: import("./options/metadata").Metadata;
|
|
813
813
|
getValue: ({ commandLine }: {
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { LogLevel } from './log-level';
|
|
2
2
|
import type { BrowserReplacer } from './replace-browser';
|
|
3
|
-
export declare const cycleBrowserTabs: (puppeteerInstance
|
|
3
|
+
export declare const cycleBrowserTabs: ({ puppeteerInstance, concurrency, logLevel, indent, }: {
|
|
4
|
+
puppeteerInstance: BrowserReplacer;
|
|
5
|
+
concurrency: number;
|
|
6
|
+
logLevel: LogLevel;
|
|
7
|
+
indent: boolean;
|
|
8
|
+
}) => {
|
|
4
9
|
stopCycling: () => void;
|
|
5
10
|
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.cycleBrowserTabs = void 0;
|
|
4
4
|
const logger_1 = require("./logger");
|
|
5
|
-
const cycleBrowserTabs = (puppeteerInstance, concurrency, logLevel, indent) => {
|
|
5
|
+
const cycleBrowserTabs = ({ puppeteerInstance, concurrency, logLevel, indent, }) => {
|
|
6
6
|
if (concurrency <= 1) {
|
|
7
7
|
return {
|
|
8
8
|
stopCycling: () => undefined,
|
|
@@ -15,7 +15,7 @@ const cycleBrowserTabs = (puppeteerInstance, concurrency, logLevel, indent) => {
|
|
|
15
15
|
interval = setTimeout(() => {
|
|
16
16
|
puppeteerInstance
|
|
17
17
|
.getBrowser()
|
|
18
|
-
.pages(
|
|
18
|
+
.pages()
|
|
19
19
|
.then((pages) => {
|
|
20
20
|
if (pages.length === 0) {
|
|
21
21
|
return;
|
|
@@ -5,7 +5,7 @@ import type { LogLevel } from './log-level';
|
|
|
5
5
|
import type { ChromiumOptions } from './open-browser';
|
|
6
6
|
import type { ChromeMode } from './options/chrome-mode';
|
|
7
7
|
import type { OnBrowserDownload } from './options/on-browser-download';
|
|
8
|
-
export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, logLevel, onBrowserDownload, chromeMode, }: {
|
|
8
|
+
export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, logLevel, onBrowserDownload, chromeMode, pageIndex, }: {
|
|
9
9
|
passedInInstance: HeadlessBrowser | undefined;
|
|
10
10
|
browserExecutable: BrowserExecutable | null;
|
|
11
11
|
chromiumOptions: ChromiumOptions;
|
|
@@ -14,6 +14,7 @@ export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable
|
|
|
14
14
|
logLevel: LogLevel;
|
|
15
15
|
onBrowserDownload: OnBrowserDownload;
|
|
16
16
|
chromeMode: ChromeMode;
|
|
17
|
+
pageIndex: number;
|
|
17
18
|
}) => Promise<{
|
|
18
19
|
cleanupPage: () => Promise<void>;
|
|
19
20
|
page: Page;
|
|
@@ -4,9 +4,14 @@ exports.getPageAndCleanupFn = void 0;
|
|
|
4
4
|
const browser_1 = require("./browser");
|
|
5
5
|
const logger_1 = require("./logger");
|
|
6
6
|
const open_browser_1 = require("./open-browser");
|
|
7
|
-
const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, logLevel, onBrowserDownload, chromeMode, }) => {
|
|
7
|
+
const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, logLevel, onBrowserDownload, chromeMode, pageIndex, }) => {
|
|
8
8
|
if (passedInInstance) {
|
|
9
|
-
const page = await passedInInstance.newPage(
|
|
9
|
+
const page = await passedInInstance.newPage({
|
|
10
|
+
context: () => null,
|
|
11
|
+
logLevel,
|
|
12
|
+
indent,
|
|
13
|
+
pageIndex,
|
|
14
|
+
});
|
|
10
15
|
return {
|
|
11
16
|
page,
|
|
12
17
|
cleanupPage: () => {
|
|
@@ -32,12 +37,17 @@ const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromi
|
|
|
32
37
|
onBrowserDownload,
|
|
33
38
|
chromeMode,
|
|
34
39
|
});
|
|
35
|
-
const browserPage = await browserInstance.newPage(
|
|
40
|
+
const browserPage = await browserInstance.newPage({
|
|
41
|
+
context: () => null,
|
|
42
|
+
logLevel,
|
|
43
|
+
indent,
|
|
44
|
+
pageIndex,
|
|
45
|
+
});
|
|
36
46
|
return {
|
|
37
47
|
page: browserPage,
|
|
38
48
|
cleanupPage: () => {
|
|
39
49
|
// Close whole browser that was just created and don't wait for it to finish.
|
|
40
|
-
browserInstance.close(true
|
|
50
|
+
browserInstance.close({ silent: true }).catch((err) => {
|
|
41
51
|
if (!err.message.includes('Target closed')) {
|
|
42
52
|
logger_1.Log.error({ indent, logLevel }, 'Was not able to close puppeteer page', err);
|
|
43
53
|
}
|
package/dist/get-codec-name.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare const hasSpecifiedUnsupportedHardwareQualifySettings: ({ encoding
|
|
|
9
9
|
encodingMaxRate: string | null;
|
|
10
10
|
encodingBufferSize: string | null;
|
|
11
11
|
crf: unknown;
|
|
12
|
-
}) => "
|
|
12
|
+
}) => "encodingMaxRate" | "encodingBufferSize" | "crf" | null;
|
|
13
13
|
export declare const getCodecName: ({ codec, encodingMaxRate, encodingBufferSize, crf, hardwareAcceleration, logLevel, indent, }: {
|
|
14
14
|
codec: Codec;
|
|
15
15
|
hardwareAcceleration: HardwareAccelerationOption;
|
package/dist/get-compositions.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -140,7 +140,7 @@ export declare const RenderInternals: {
|
|
|
140
140
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
141
141
|
DEFAULT_BROWSER: "chrome";
|
|
142
142
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
143
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
143
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
144
144
|
validateOpenGlRenderer: (option: unknown) => import("./options/gl").OpenGlRenderer | null;
|
|
145
145
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
|
|
146
146
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
@@ -353,8 +353,8 @@ export declare const RenderInternals: {
|
|
|
353
353
|
}) => execa.ExecaChildProcess<string>;
|
|
354
354
|
validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
|
|
355
355
|
validVideoImageFormats: readonly ["png", "jpeg", "none"];
|
|
356
|
-
DEFAULT_STILL_IMAGE_FORMAT: "
|
|
357
|
-
DEFAULT_VIDEO_IMAGE_FORMAT: "
|
|
356
|
+
DEFAULT_STILL_IMAGE_FORMAT: "png" | "jpeg" | "webp" | "pdf";
|
|
357
|
+
DEFAULT_VIDEO_IMAGE_FORMAT: "png" | "jpeg" | "none";
|
|
358
358
|
DEFAULT_JPEG_QUALITY: number;
|
|
359
359
|
chalk: {
|
|
360
360
|
enabled: () => boolean;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { VideoConfig } from 'remotion/no-react';
|
|
2
|
+
import type { BrowserLog } from './browser-log';
|
|
3
|
+
import type { Page } from './browser/BrowserPage';
|
|
4
|
+
import type { SourceMapGetter } from './browser/source-map-getter';
|
|
5
|
+
import type { VideoImageFormat } from './image-format';
|
|
6
|
+
import type { LogLevel } from './log-level';
|
|
7
|
+
import type { BrowserReplacer } from './replace-browser';
|
|
8
|
+
export declare const makePage: ({ context, initialFrame, browserReplacer, logLevel, indent, pagesArray, onBrowserLog, scale, timeoutInMilliseconds, composition, proxyPort, serveUrl, muted, envVariables, serializedInputPropsWithCustomSchema, imageFormat, serializedResolvedPropsWithCustomSchema, pageIndex, }: {
|
|
9
|
+
context: SourceMapGetter;
|
|
10
|
+
initialFrame: number;
|
|
11
|
+
browserReplacer: BrowserReplacer;
|
|
12
|
+
logLevel: LogLevel;
|
|
13
|
+
indent: boolean;
|
|
14
|
+
pagesArray: Page[];
|
|
15
|
+
onBrowserLog: ((log: BrowserLog) => void) | undefined | null;
|
|
16
|
+
scale: number;
|
|
17
|
+
timeoutInMilliseconds: number;
|
|
18
|
+
composition: Omit<VideoConfig, "defaultProps" | "props">;
|
|
19
|
+
proxyPort: number;
|
|
20
|
+
serveUrl: string;
|
|
21
|
+
muted: boolean;
|
|
22
|
+
envVariables: Record<string, string>;
|
|
23
|
+
serializedInputPropsWithCustomSchema: string;
|
|
24
|
+
serializedResolvedPropsWithCustomSchema: string;
|
|
25
|
+
imageFormat: VideoImageFormat;
|
|
26
|
+
pageIndex: number;
|
|
27
|
+
}) => Promise<Page>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makePage = void 0;
|
|
4
|
+
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
5
|
+
const set_props_and_env_1 = require("./set-props-and-env");
|
|
6
|
+
const makePage = async ({ context, initialFrame, browserReplacer, logLevel, indent, pagesArray, onBrowserLog, scale, timeoutInMilliseconds, composition, proxyPort, serveUrl, muted, envVariables, serializedInputPropsWithCustomSchema, imageFormat, serializedResolvedPropsWithCustomSchema, pageIndex, }) => {
|
|
7
|
+
const page = await browserReplacer
|
|
8
|
+
.getBrowser()
|
|
9
|
+
.newPage({ context, logLevel, indent, pageIndex });
|
|
10
|
+
pagesArray.push(page);
|
|
11
|
+
await page.setViewport({
|
|
12
|
+
width: composition.width,
|
|
13
|
+
height: composition.height,
|
|
14
|
+
deviceScaleFactor: scale,
|
|
15
|
+
});
|
|
16
|
+
const logCallback = (log) => {
|
|
17
|
+
onBrowserLog === null || onBrowserLog === void 0 ? void 0 : onBrowserLog({
|
|
18
|
+
stackTrace: log.stackTrace(),
|
|
19
|
+
text: log.text,
|
|
20
|
+
type: log.type,
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
if (onBrowserLog) {
|
|
24
|
+
page.on('console', logCallback);
|
|
25
|
+
}
|
|
26
|
+
await (0, set_props_and_env_1.setPropsAndEnv)({
|
|
27
|
+
serializedInputPropsWithCustomSchema,
|
|
28
|
+
envVariables,
|
|
29
|
+
page,
|
|
30
|
+
serveUrl,
|
|
31
|
+
initialFrame,
|
|
32
|
+
timeoutInMilliseconds,
|
|
33
|
+
proxyPort,
|
|
34
|
+
retriesRemaining: 2,
|
|
35
|
+
audioEnabled: !muted,
|
|
36
|
+
videoEnabled: imageFormat !== 'none',
|
|
37
|
+
indent,
|
|
38
|
+
logLevel,
|
|
39
|
+
onServeUrlVisited: () => undefined,
|
|
40
|
+
});
|
|
41
|
+
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
42
|
+
// eslint-disable-next-line max-params
|
|
43
|
+
pageFunction: (id, props, durationInFrames, fps, height, width, defaultCodec) => {
|
|
44
|
+
window.remotion_setBundleMode({
|
|
45
|
+
type: 'composition',
|
|
46
|
+
compositionName: id,
|
|
47
|
+
serializedResolvedPropsWithSchema: props,
|
|
48
|
+
compositionDurationInFrames: durationInFrames,
|
|
49
|
+
compositionFps: fps,
|
|
50
|
+
compositionHeight: height,
|
|
51
|
+
compositionWidth: width,
|
|
52
|
+
compositionDefaultCodec: defaultCodec,
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
args: [
|
|
56
|
+
composition.id,
|
|
57
|
+
serializedResolvedPropsWithCustomSchema,
|
|
58
|
+
composition.durationInFrames,
|
|
59
|
+
composition.fps,
|
|
60
|
+
composition.height,
|
|
61
|
+
composition.width,
|
|
62
|
+
composition.defaultCodec,
|
|
63
|
+
],
|
|
64
|
+
frame: null,
|
|
65
|
+
page,
|
|
66
|
+
timeoutInMilliseconds,
|
|
67
|
+
});
|
|
68
|
+
page.off('console', logCallback);
|
|
69
|
+
return page;
|
|
70
|
+
};
|
|
71
|
+
exports.makePage = makePage;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const nextFrameToRenderState: ({ allFramesAndExtraFrames, concurrencyOrFramesToRender: _concurrency, }: {
|
|
2
|
+
allFramesAndExtraFrames: number[];
|
|
3
|
+
concurrencyOrFramesToRender: number;
|
|
4
|
+
}) => {
|
|
5
|
+
getNextFrame: (_pageIndex: number) => number;
|
|
6
|
+
};
|
|
7
|
+
type Fn = typeof nextFrameToRenderState;
|
|
8
|
+
export type NextFrameToRender = ReturnType<Fn>;
|
|
9
|
+
export declare const partitionedNextFrameToRenderState: Fn;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.partitionedNextFrameToRenderState = exports.nextFrameToRenderState = void 0;
|
|
4
|
+
const render_partitions_1 = require("./render-partitions");
|
|
5
|
+
const nextFrameToRenderState = ({ allFramesAndExtraFrames,
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7
|
+
concurrencyOrFramesToRender: _concurrency, }) => {
|
|
8
|
+
const rendered = new Map();
|
|
9
|
+
return {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
|
+
getNextFrame: (_pageIndex) => {
|
|
12
|
+
const nextFrame = allFramesAndExtraFrames.find((frame) => {
|
|
13
|
+
return !rendered.has(frame);
|
|
14
|
+
});
|
|
15
|
+
if (nextFrame === undefined) {
|
|
16
|
+
throw new Error('No more frames to render');
|
|
17
|
+
}
|
|
18
|
+
rendered.set(nextFrame, true);
|
|
19
|
+
return nextFrame;
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
exports.nextFrameToRenderState = nextFrameToRenderState;
|
|
24
|
+
const partitionedNextFrameToRenderState = ({ allFramesAndExtraFrames, concurrencyOrFramesToRender: concurrency, }) => {
|
|
25
|
+
const partitions = (0, render_partitions_1.renderPartitions)({
|
|
26
|
+
frames: allFramesAndExtraFrames,
|
|
27
|
+
concurrency,
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
getNextFrame: (pageIndex) => {
|
|
31
|
+
return partitions.getNextFrame(pageIndex);
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
exports.partitionedNextFrameToRenderState = partitionedNextFrameToRenderState;
|
package/dist/open-browser.js
CHANGED
|
@@ -51,7 +51,7 @@ const getOpenGlRenderer = (option) => {
|
|
|
51
51
|
return [`--use-gl=${renderer}`];
|
|
52
52
|
};
|
|
53
53
|
const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, onBrowserDownload, chromeMode, }) => {
|
|
54
|
-
var _a, _b, _c;
|
|
54
|
+
var _a, _b, _c, _d;
|
|
55
55
|
// @ts-expect-error Firefox
|
|
56
56
|
if (browser === 'firefox') {
|
|
57
57
|
throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
|
|
@@ -165,8 +165,8 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
|
|
|
165
165
|
deviceScaleFactor: 1,
|
|
166
166
|
},
|
|
167
167
|
});
|
|
168
|
-
const pages = await browserInstance.pages(
|
|
169
|
-
await pages[0].close();
|
|
168
|
+
const pages = await browserInstance.pages();
|
|
169
|
+
await ((_d = pages[0]) === null || _d === void 0 ? void 0 : _d.close());
|
|
170
170
|
(0, browser_instances_1.addHeadlessBrowser)(browserInstance);
|
|
171
171
|
return browserInstance;
|
|
172
172
|
};
|
package/dist/options/gl.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const validOpenGlRenderers: readonly ["swangle", "angle", "egl", "swiftshader", "vulkan", "angle-egl"];
|
|
2
2
|
export type OpenGlRenderer = (typeof validOpenGlRenderers)[number];
|
|
3
3
|
export declare const DEFAULT_OPENGL_RENDERER: OpenGlRenderer | null;
|
|
4
|
-
export declare const getChromiumOpenGlRenderer: () => "
|
|
4
|
+
export declare const getChromiumOpenGlRenderer: () => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
5
5
|
export declare const setChromiumOpenGlRenderer: (renderer: OpenGlRenderer) => void;
|
|
6
6
|
export declare const glOption: {
|
|
7
7
|
cliFlag: "gl";
|
package/dist/options/index.d.ts
CHANGED
|
@@ -171,7 +171,7 @@ export declare const allOptions: {
|
|
|
171
171
|
webhookCustomDataOption: {
|
|
172
172
|
name: string;
|
|
173
173
|
cliFlag: "webhook-custom-data";
|
|
174
|
-
description: (type: "
|
|
174
|
+
description: (type: "cli" | "ssr") => import("react/jsx-runtime").JSX.Element;
|
|
175
175
|
ssrName: "customData";
|
|
176
176
|
docLink: string;
|
|
177
177
|
type: Record<string, unknown> | null;
|
|
@@ -584,7 +584,7 @@ export declare const allOptions: {
|
|
|
584
584
|
metadataOption: {
|
|
585
585
|
name: string;
|
|
586
586
|
cliFlag: "metadata";
|
|
587
|
-
description: (mode: "
|
|
587
|
+
description: (mode: "cli" | "ssr") => import("react/jsx-runtime").JSX.Element;
|
|
588
588
|
docLink: string;
|
|
589
589
|
type: import("./metadata").Metadata;
|
|
590
590
|
getValue: ({ commandLine }: {
|