@remotion/renderer 4.0.61 → 4.0.63
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 +4 -4
- package/dist/browser/Browser.js +1 -1
- package/dist/browser/BrowserPage.d.ts +7 -7
- package/dist/browser/BrowserPage.js +8 -13
- package/dist/browser/Target.d.ts +3 -3
- package/dist/browser/Target.js +2 -2
- package/dist/browser/source-map-getter.d.ts +2 -0
- package/dist/browser/source-map-getter.js +2 -0
- package/dist/client.d.ts +1 -1
- package/dist/get-browser-instance.d.ts +1 -3
- package/dist/get-browser-instance.js +3 -3
- package/dist/get-compositions.js +1 -2
- package/dist/index.d.ts +5 -5
- package/dist/is-ipv6-supported.d.ts +1 -0
- package/dist/is-ipv6-supported.js +26 -0
- package/dist/options/gl.d.ts +1 -1
- package/dist/options/index.d.ts +1 -1
- package/dist/prepare-server.d.ts +2 -2
- package/dist/prepare-server.js +22 -7
- package/dist/render-frames.js +4 -4
- package/dist/render-still.js +4 -4
- package/dist/select-composition.js +1 -2
- package/dist/set-props-and-env.js +15 -11
- package/dist/test-gpu.js +0 -1
- package/dist/validate-opengl-renderer.d.ts +4 -0
- package/dist/validate-opengl-renderer.js +20 -0
- package/package.json +9 -9
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import type { LogLevel } from '../log-level';
|
|
17
|
-
import type { AnySourceMapConsumer } from '../symbolicate-stacktrace';
|
|
18
17
|
import type { Page } from './BrowserPage';
|
|
19
18
|
import type { Connection } from './Connection';
|
|
20
19
|
import { EventEmitter } from './EventEmitter';
|
|
21
20
|
import type { Viewport } from './PuppeteerViewport';
|
|
21
|
+
import type { SourceMapGetter } from './source-map-getter';
|
|
22
22
|
import { Target } from './Target';
|
|
23
23
|
type BrowserCloseCallback = () => Promise<void> | void;
|
|
24
24
|
interface WaitForTargetOptions {
|
|
@@ -51,8 +51,8 @@ export declare class HeadlessBrowser extends EventEmitter {
|
|
|
51
51
|
rememberEventLoop: () => void;
|
|
52
52
|
});
|
|
53
53
|
browserContexts(): BrowserContext[];
|
|
54
|
-
newPage(context:
|
|
55
|
-
_createPageInContext(context:
|
|
54
|
+
newPage(context: SourceMapGetter, logLevel: LogLevel, indent: boolean): Promise<Page>;
|
|
55
|
+
_createPageInContext(context: SourceMapGetter, logLevel: LogLevel, indent: boolean): Promise<Page>;
|
|
56
56
|
targets(): Target[];
|
|
57
57
|
waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: WaitForTargetOptions): Promise<Target>;
|
|
58
58
|
pages(logLevel: LogLevel, indent: boolean): Promise<Page[]>;
|
|
@@ -67,7 +67,7 @@ export declare class BrowserContext extends EventEmitter {
|
|
|
67
67
|
timeout?: number;
|
|
68
68
|
}): Promise<Target>;
|
|
69
69
|
pages(logLevel: LogLevel, indent: boolean): Promise<Page[]>;
|
|
70
|
-
newPage(context:
|
|
70
|
+
newPage(context: SourceMapGetter, logLevel: LogLevel, indent: boolean): Promise<Page>;
|
|
71
71
|
browser(): HeadlessBrowser;
|
|
72
72
|
}
|
|
73
73
|
export {};
|
package/dist/browser/Browser.js
CHANGED
|
@@ -204,7 +204,7 @@ class BrowserContext extends EventEmitter_1.EventEmitter {
|
|
|
204
204
|
async pages(logLevel, indent) {
|
|
205
205
|
const pages = await Promise.all(this.targets()
|
|
206
206
|
.filter((target) => target.type() === 'page')
|
|
207
|
-
.map((target) => target.page(
|
|
207
|
+
.map((target) => target.page(() => null, logLevel, indent)));
|
|
208
208
|
return pages.filter((page) => {
|
|
209
209
|
return Boolean(page);
|
|
210
210
|
});
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import type { LogLevel } from '../log-level';
|
|
17
|
-
import type { AnySourceMapConsumer } from '../symbolicate-stacktrace';
|
|
18
17
|
import type { HeadlessBrowser } from './Browser';
|
|
19
18
|
import type { CDPSession } from './Connection';
|
|
20
19
|
import { ConsoleMessage } from './ConsoleMessage';
|
|
@@ -24,6 +23,7 @@ import type { Frame } from './FrameManager';
|
|
|
24
23
|
import type { HTTPResponse } from './HTTPResponse';
|
|
25
24
|
import type { JSHandle } from './JSHandle';
|
|
26
25
|
import type { Viewport } from './PuppeteerViewport';
|
|
26
|
+
import type { SourceMapGetter } from './source-map-getter';
|
|
27
27
|
import type { Target } from './Target';
|
|
28
28
|
import { TaskQueue } from './TaskQueue';
|
|
29
29
|
interface WaitForOptions {
|
|
@@ -42,25 +42,25 @@ interface PageEventObject {
|
|
|
42
42
|
export declare class Page extends EventEmitter {
|
|
43
43
|
#private;
|
|
44
44
|
id: string;
|
|
45
|
-
static _create({ client, target, defaultViewport, browser,
|
|
45
|
+
static _create({ client, target, defaultViewport, browser, sourceMapGetter, logLevel, indent, }: {
|
|
46
46
|
client: CDPSession;
|
|
47
47
|
target: Target;
|
|
48
48
|
defaultViewport: Viewport;
|
|
49
49
|
browser: HeadlessBrowser;
|
|
50
|
-
|
|
50
|
+
sourceMapGetter: SourceMapGetter;
|
|
51
51
|
logLevel: LogLevel;
|
|
52
52
|
indent: boolean;
|
|
53
53
|
}): Promise<Page>;
|
|
54
54
|
closed: boolean;
|
|
55
55
|
browser: HeadlessBrowser;
|
|
56
56
|
screenshotTaskQueue: TaskQueue;
|
|
57
|
-
|
|
57
|
+
sourceMapGetter: SourceMapGetter;
|
|
58
58
|
logLevel: LogLevel;
|
|
59
|
-
constructor({ client, target, browser,
|
|
59
|
+
constructor({ client, target, browser, sourceMapGetter, logLevel, indent, }: {
|
|
60
60
|
client: CDPSession;
|
|
61
61
|
target: Target;
|
|
62
62
|
browser: HeadlessBrowser;
|
|
63
|
-
|
|
63
|
+
sourceMapGetter: SourceMapGetter;
|
|
64
64
|
logLevel: LogLevel;
|
|
65
65
|
indent: boolean;
|
|
66
66
|
});
|
|
@@ -99,6 +99,6 @@ export declare class Page extends EventEmitter {
|
|
|
99
99
|
close(options?: {
|
|
100
100
|
runBeforeUnload?: boolean;
|
|
101
101
|
}): Promise<void>;
|
|
102
|
-
|
|
102
|
+
setBrowserSourceMapGetter(context: SourceMapGetter): void;
|
|
103
103
|
}
|
|
104
104
|
export {};
|
|
@@ -49,12 +49,12 @@ 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,
|
|
52
|
+
static async _create({ client, target, defaultViewport, browser, sourceMapGetter, logLevel, indent, }) {
|
|
53
53
|
const page = new Page({
|
|
54
54
|
client,
|
|
55
55
|
target,
|
|
56
56
|
browser,
|
|
57
|
-
|
|
57
|
+
sourceMapGetter,
|
|
58
58
|
logLevel,
|
|
59
59
|
indent,
|
|
60
60
|
});
|
|
@@ -62,7 +62,7 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
62
62
|
await page.setViewport(defaultViewport);
|
|
63
63
|
return page;
|
|
64
64
|
}
|
|
65
|
-
constructor({ client, target, browser,
|
|
65
|
+
constructor({ client, target, browser, sourceMapGetter, logLevel, indent, }) {
|
|
66
66
|
super();
|
|
67
67
|
_Page_instances.add(this);
|
|
68
68
|
this.closed = false;
|
|
@@ -71,16 +71,13 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
71
71
|
_Page_timeoutSettings.set(this, new TimeoutSettings_1.TimeoutSettings());
|
|
72
72
|
_Page_frameManager.set(this, void 0);
|
|
73
73
|
_Page_pageBindings.set(this, new Map());
|
|
74
|
-
this.sourcemapContext = null;
|
|
75
74
|
__classPrivateFieldSet(this, _Page_client, client, "f");
|
|
76
75
|
__classPrivateFieldSet(this, _Page_target, target, "f");
|
|
77
76
|
__classPrivateFieldSet(this, _Page_frameManager, new FrameManager_1.FrameManager(client, this, indent, logLevel), "f");
|
|
78
77
|
this.screenshotTaskQueue = new TaskQueue_1.TaskQueue();
|
|
79
78
|
this.browser = browser;
|
|
80
79
|
this.id = String(Math.random());
|
|
81
|
-
|
|
82
|
-
this.sourcemapContext = context;
|
|
83
|
-
});
|
|
80
|
+
this.sourceMapGetter = sourceMapGetter;
|
|
84
81
|
this.logLevel = logLevel;
|
|
85
82
|
client.on('Target.attachedToTarget', (event) => {
|
|
86
83
|
switch (event.targetInfo.type) {
|
|
@@ -122,8 +119,8 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
122
119
|
}
|
|
123
120
|
if ((url === null || url === void 0 ? void 0 : url.endsWith(remotion_1.Internals.bundleName)) &&
|
|
124
121
|
lineNumber &&
|
|
125
|
-
this.
|
|
126
|
-
const origPosition = (_a = this.
|
|
122
|
+
this.sourceMapGetter()) {
|
|
123
|
+
const origPosition = (_a = this.sourceMapGetter()) === null || _a === void 0 ? void 0 : _a.originalPositionFor({
|
|
127
124
|
column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : 0,
|
|
128
125
|
line: lineNumber,
|
|
129
126
|
});
|
|
@@ -254,10 +251,8 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
254
251
|
await __classPrivateFieldGet(this, _Page_target, "f")._isClosedPromise;
|
|
255
252
|
}
|
|
256
253
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
this.sourcemapContext = ctx;
|
|
260
|
-
});
|
|
254
|
+
setBrowserSourceMapGetter(context) {
|
|
255
|
+
this.sourceMapGetter = context;
|
|
261
256
|
}
|
|
262
257
|
}
|
|
263
258
|
exports.Page = Page;
|
package/dist/browser/Target.d.ts
CHANGED
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import type { LogLevel } from '../log-level';
|
|
17
|
-
import type { AnySourceMapConsumer } from '../symbolicate-stacktrace';
|
|
18
17
|
import type { BrowserContext, HeadlessBrowser } from './Browser';
|
|
19
18
|
import { Page } from './BrowserPage';
|
|
20
19
|
import type { CDPSession } from './Connection';
|
|
21
20
|
import type { TargetInfo } from './devtools-types';
|
|
22
21
|
import type { Viewport } from './PuppeteerViewport';
|
|
22
|
+
import type { SourceMapGetter } from './source-map-getter';
|
|
23
23
|
export declare class Target {
|
|
24
24
|
#private;
|
|
25
|
-
_initializedPromise: Promise<boolean
|
|
25
|
+
_initializedPromise: Promise<boolean> | null;
|
|
26
26
|
_initializedCallback: (x: boolean) => void;
|
|
27
27
|
_isClosedPromise: Promise<void>;
|
|
28
28
|
_closedCallback: () => void;
|
|
@@ -37,7 +37,7 @@ 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(
|
|
40
|
+
page(sourceMapGetter: SourceMapGetter, logLevel: LogLevel, indent: boolean): Promise<Page | null>;
|
|
41
41
|
url(): string;
|
|
42
42
|
/**
|
|
43
43
|
* 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(
|
|
82
|
+
async page(sourceMapGetter, logLevel, indent) {
|
|
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) => {
|
|
@@ -89,7 +89,7 @@ class Target {
|
|
|
89
89
|
target: this,
|
|
90
90
|
defaultViewport: (_a = __classPrivateFieldGet(this, _Target_defaultViewport, "f")) !== null && _a !== void 0 ? _a : null,
|
|
91
91
|
browser: this.browser(),
|
|
92
|
-
|
|
92
|
+
sourceMapGetter,
|
|
93
93
|
logLevel,
|
|
94
94
|
indent,
|
|
95
95
|
});
|
package/dist/client.d.ts
CHANGED
|
@@ -311,7 +311,7 @@ export declare const BrowserSafeApis: {
|
|
|
311
311
|
cliFlag: string;
|
|
312
312
|
docLink: string;
|
|
313
313
|
name: string;
|
|
314
|
-
type: "
|
|
314
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
315
315
|
ssrName: string;
|
|
316
316
|
description: () => JSX.Element;
|
|
317
317
|
};
|
|
@@ -3,12 +3,10 @@ import type { HeadlessBrowser } from './browser/Browser';
|
|
|
3
3
|
import type { Page } from './browser/BrowserPage';
|
|
4
4
|
import type { LogLevel } from './log-level';
|
|
5
5
|
import type { ChromiumOptions } from './open-browser';
|
|
6
|
-
|
|
7
|
-
export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, context, forceDeviceScaleFactor, indent, logLevel, }: {
|
|
6
|
+
export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, logLevel, }: {
|
|
8
7
|
passedInInstance: HeadlessBrowser | undefined;
|
|
9
8
|
browserExecutable: BrowserExecutable | null;
|
|
10
9
|
chromiumOptions: ChromiumOptions;
|
|
11
|
-
context: AnySourceMapConsumer | null;
|
|
12
10
|
indent: boolean;
|
|
13
11
|
forceDeviceScaleFactor: number | undefined;
|
|
14
12
|
logLevel: LogLevel;
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getPageAndCleanupFn = void 0;
|
|
4
4
|
const browser_1 = require("./browser");
|
|
5
5
|
const open_browser_1 = require("./open-browser");
|
|
6
|
-
const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromiumOptions,
|
|
6
|
+
const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, logLevel, }) => {
|
|
7
7
|
if (passedInInstance) {
|
|
8
|
-
const page = await passedInInstance.newPage(
|
|
8
|
+
const page = await passedInInstance.newPage(() => null, logLevel, indent);
|
|
9
9
|
return {
|
|
10
10
|
page,
|
|
11
11
|
cleanup: () => {
|
|
@@ -26,7 +26,7 @@ const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromi
|
|
|
26
26
|
viewport: null,
|
|
27
27
|
logLevel,
|
|
28
28
|
});
|
|
29
|
-
const browserPage = await browserInstance.newPage(
|
|
29
|
+
const browserPage = await browserInstance.newPage(() => null, logLevel, indent);
|
|
30
30
|
return {
|
|
31
31
|
page: browserPage,
|
|
32
32
|
cleanup: () => {
|
package/dist/get-compositions.js
CHANGED
|
@@ -83,7 +83,6 @@ const internalGetCompositionsRaw = async ({ browserExecutable, chromiumOptions,
|
|
|
83
83
|
passedInInstance: puppeteerInstance,
|
|
84
84
|
browserExecutable,
|
|
85
85
|
chromiumOptions,
|
|
86
|
-
context: null,
|
|
87
86
|
forceDeviceScaleFactor: undefined,
|
|
88
87
|
indent,
|
|
89
88
|
logLevel,
|
|
@@ -109,7 +108,7 @@ const internalGetCompositionsRaw = async ({ browserExecutable, chromiumOptions,
|
|
|
109
108
|
onError,
|
|
110
109
|
})
|
|
111
110
|
.then(({ server: { serveUrl, offthreadPort, sourceMap }, cleanupServer }) => {
|
|
112
|
-
page.
|
|
111
|
+
page.setBrowserSourceMapGetter(sourceMap);
|
|
113
112
|
cleanup.push(() => cleanupServer(true));
|
|
114
113
|
return innerGetCompositions({
|
|
115
114
|
envVariables,
|
package/dist/index.d.ts
CHANGED
|
@@ -138,8 +138,8 @@ export declare const RenderInternals: {
|
|
|
138
138
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
139
139
|
DEFAULT_BROWSER: "chrome";
|
|
140
140
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
141
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
142
|
-
validateOpenGlRenderer: (option: "
|
|
141
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
142
|
+
validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
143
143
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
144
144
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
145
145
|
validateJpegQuality: (q: number | undefined) => void;
|
|
@@ -330,8 +330,8 @@ export declare const RenderInternals: {
|
|
|
330
330
|
};
|
|
331
331
|
validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
|
|
332
332
|
validVideoImageFormats: readonly ["png", "jpeg", "none"];
|
|
333
|
-
DEFAULT_STILL_IMAGE_FORMAT: "
|
|
334
|
-
DEFAULT_VIDEO_IMAGE_FORMAT: "
|
|
333
|
+
DEFAULT_STILL_IMAGE_FORMAT: "png" | "jpeg" | "pdf" | "webp";
|
|
334
|
+
DEFAULT_VIDEO_IMAGE_FORMAT: "png" | "jpeg" | "none";
|
|
335
335
|
DEFAULT_JPEG_QUALITY: number;
|
|
336
336
|
chalk: {
|
|
337
337
|
enabled: () => boolean;
|
|
@@ -430,7 +430,7 @@ export declare const RenderInternals: {
|
|
|
430
430
|
frame: number;
|
|
431
431
|
serializedInputPropsWithCustomSchema: string;
|
|
432
432
|
serializedResolvedPropsWithCustomSchema: string;
|
|
433
|
-
imageFormat: "
|
|
433
|
+
imageFormat: "png" | "jpeg" | "pdf" | "webp";
|
|
434
434
|
jpegQuality: number;
|
|
435
435
|
puppeteerInstance: HeadlessBrowser | null;
|
|
436
436
|
envVariables: Record<string, string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isIpV6Supported: () => boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isIpV6Supported = void 0;
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
let cache = null;
|
|
9
|
+
const calculate = () => {
|
|
10
|
+
const interfaces = os_1.default.networkInterfaces();
|
|
11
|
+
for (const iface in interfaces) {
|
|
12
|
+
for (const configuration of interfaces[iface]) {
|
|
13
|
+
if (configuration.family === 'IPv6' && !configuration.internal) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
};
|
|
20
|
+
const isIpV6Supported = () => {
|
|
21
|
+
if (cache === null) {
|
|
22
|
+
cache = calculate();
|
|
23
|
+
}
|
|
24
|
+
return cache;
|
|
25
|
+
};
|
|
26
|
+
exports.isIpV6Supported = isIpV6Supported;
|
package/dist/options/gl.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare const glOption: {
|
|
|
4
4
|
cliFlag: string;
|
|
5
5
|
docLink: string;
|
|
6
6
|
name: string;
|
|
7
|
-
type: "
|
|
7
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
8
8
|
ssrName: string;
|
|
9
9
|
description: () => JSX.Element;
|
|
10
10
|
};
|
package/dist/options/index.d.ts
CHANGED
|
@@ -116,7 +116,7 @@ export declare const allOptions: {
|
|
|
116
116
|
cliFlag: string;
|
|
117
117
|
docLink: string;
|
|
118
118
|
name: string;
|
|
119
|
-
type: "
|
|
119
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
120
120
|
ssrName: string;
|
|
121
121
|
description: () => JSX.Element;
|
|
122
122
|
};
|
package/dist/prepare-server.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
2
2
|
import type { DownloadMap } from './assets/download-map';
|
|
3
|
+
import type { SourceMapGetter } from './browser/source-map-getter';
|
|
3
4
|
import type { Compositor } from './compositor/compositor';
|
|
4
5
|
import type { LogLevel } from './log-level';
|
|
5
|
-
import type { AnySourceMapConsumer } from './symbolicate-stacktrace';
|
|
6
6
|
export type RemotionServer = {
|
|
7
7
|
serveUrl: string;
|
|
8
8
|
closeServer: (force: boolean) => Promise<unknown>;
|
|
9
9
|
offthreadPort: number;
|
|
10
10
|
compositor: Compositor;
|
|
11
|
-
sourceMap:
|
|
11
|
+
sourceMap: SourceMapGetter;
|
|
12
12
|
downloadMap: DownloadMap;
|
|
13
13
|
};
|
|
14
14
|
type PrepareServerOptions = {
|
package/dist/prepare-server.js
CHANGED
|
@@ -28,18 +28,25 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
28
28
|
indent,
|
|
29
29
|
offthreadVideoCacheSizeInBytes,
|
|
30
30
|
});
|
|
31
|
+
let remoteSourceMap = null;
|
|
32
|
+
(0, symbolicate_stacktrace_1.getSourceMapFromRemoteUrl)((0, get_bundle_url_from_serve_url_1.getBundleMapUrlFromServeUrl)(webpackConfigOrServeUrl))
|
|
33
|
+
.then((s) => {
|
|
34
|
+
remoteSourceMap = s;
|
|
35
|
+
})
|
|
36
|
+
.catch((err) => {
|
|
37
|
+
logger_1.Log.verbose({ indent, logLevel }, 'Could not fetch sourcemap for ', webpackConfigOrServeUrl, err);
|
|
38
|
+
});
|
|
31
39
|
return Promise.resolve({
|
|
32
40
|
serveUrl: webpackConfigOrServeUrl,
|
|
33
41
|
closeServer: () => {
|
|
34
42
|
(0, download_map_1.cleanDownloadMap)(downloadMap);
|
|
43
|
+
remoteSourceMap === null || remoteSourceMap === void 0 ? void 0 : remoteSourceMap.destroy();
|
|
44
|
+
remoteSourceMap = null;
|
|
35
45
|
return closeProxy();
|
|
36
46
|
},
|
|
37
47
|
offthreadPort,
|
|
38
48
|
compositor: comp,
|
|
39
|
-
sourceMap: (
|
|
40
|
-
logger_1.Log.verbose({ indent, logLevel }, 'Could not fetch sourcemap for ', webpackConfigOrServeUrl, err);
|
|
41
|
-
return null;
|
|
42
|
-
}),
|
|
49
|
+
sourceMap: () => remoteSourceMap,
|
|
43
50
|
downloadMap,
|
|
44
51
|
});
|
|
45
52
|
}
|
|
@@ -49,7 +56,14 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
49
56
|
if (!exists) {
|
|
50
57
|
throw new Error(`Tried to serve the Webpack bundle on a HTTP server, but the file ${indexFile} does not exist. Is this a valid path to a Webpack bundle?`);
|
|
51
58
|
}
|
|
52
|
-
|
|
59
|
+
let localSourceMap = null;
|
|
60
|
+
(0, symbolicate_stacktrace_1.getSourceMapFromLocalFile)(node_path_1.default.join(webpackConfigOrServeUrl, remotion_1.Internals.bundleName))
|
|
61
|
+
.then((s) => {
|
|
62
|
+
localSourceMap = s;
|
|
63
|
+
})
|
|
64
|
+
.catch((err) => {
|
|
65
|
+
logger_1.Log.verbose({ indent, logLevel }, 'Could not fetch sourcemap for ', webpackConfigOrServeUrl, err);
|
|
66
|
+
});
|
|
53
67
|
const { port: serverPort, close, compositor, } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
|
|
54
68
|
port,
|
|
55
69
|
downloadMap,
|
|
@@ -61,7 +75,8 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
61
75
|
});
|
|
62
76
|
return Promise.resolve({
|
|
63
77
|
closeServer: async (force) => {
|
|
64
|
-
|
|
78
|
+
localSourceMap === null || localSourceMap === void 0 ? void 0 : localSourceMap.destroy();
|
|
79
|
+
localSourceMap = null;
|
|
65
80
|
(0, download_map_1.cleanDownloadMap)(downloadMap);
|
|
66
81
|
if (!force) {
|
|
67
82
|
await (0, wait_for_symbolication_error_to_be_done_1.waitForSymbolicationToBeDone)();
|
|
@@ -71,7 +86,7 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
71
86
|
serveUrl: `http://localhost:${serverPort}`,
|
|
72
87
|
offthreadPort: serverPort,
|
|
73
88
|
compositor,
|
|
74
|
-
sourceMap,
|
|
89
|
+
sourceMap: () => localSourceMap,
|
|
75
90
|
downloadMap,
|
|
76
91
|
});
|
|
77
92
|
};
|
package/dist/render-frames.js
CHANGED
|
@@ -37,7 +37,7 @@ const validate_1 = require("./validate");
|
|
|
37
37
|
const validate_scale_1 = require("./validate-scale");
|
|
38
38
|
const wrap_with_error_handling_1 = require("./wrap-with-error-handling");
|
|
39
39
|
const MAX_RETRIES_PER_FRAME = 1;
|
|
40
|
-
const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, jpegQuality, imageFormat, frameRange, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, actualConcurrency, everyNthFrame, proxyPort, cancelSignal, downloadMap, muted, makeBrowser, browserReplacer, compositor,
|
|
40
|
+
const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, jpegQuality, imageFormat, frameRange, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, actualConcurrency, everyNthFrame, proxyPort, cancelSignal, downloadMap, muted, makeBrowser, browserReplacer, compositor, sourceMapGetter, logLevel, indent, parallelEncodingEnabled, }) => {
|
|
41
41
|
if (outputDir) {
|
|
42
42
|
if (!node_fs_1.default.existsSync(outputDir)) {
|
|
43
43
|
node_fs_1.default.mkdirSync(outputDir, {
|
|
@@ -130,7 +130,7 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
|
|
|
130
130
|
countType,
|
|
131
131
|
});
|
|
132
132
|
let framesRendered = 0;
|
|
133
|
-
const poolPromise = getPool(
|
|
133
|
+
const poolPromise = getPool(sourceMapGetter);
|
|
134
134
|
onStart === null || onStart === void 0 ? void 0 : onStart({
|
|
135
135
|
frameCount: framesToRender.length,
|
|
136
136
|
parallelEncoding: parallelEncodingEnabled,
|
|
@@ -270,7 +270,7 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
|
|
|
270
270
|
await browserReplacer.replaceBrowser(makeBrowser, async () => {
|
|
271
271
|
const pages = new Array(actualConcurrency)
|
|
272
272
|
.fill(true)
|
|
273
|
-
.map(() => makePage(
|
|
273
|
+
.map(() => makePage(sourceMapGetter));
|
|
274
274
|
const puppeteerPages = await Promise.all(pages);
|
|
275
275
|
const pool = await poolPromise;
|
|
276
276
|
for (const newPage of puppeteerPages) {
|
|
@@ -372,7 +372,7 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
|
|
|
372
372
|
makeBrowser,
|
|
373
373
|
browserReplacer,
|
|
374
374
|
compositor,
|
|
375
|
-
|
|
375
|
+
sourceMapGetter: sourceMap,
|
|
376
376
|
downloadMap,
|
|
377
377
|
cancelSignal,
|
|
378
378
|
envVariables,
|
package/dist/render-still.js
CHANGED
|
@@ -51,7 +51,7 @@ const validate_1 = require("./validate");
|
|
|
51
51
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
52
52
|
const validate_scale_1 = require("./validate-scale");
|
|
53
53
|
const wrap_with_error_handling_1 = require("./wrap-with-error-handling");
|
|
54
|
-
const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFAULT_STILL_IMAGE_FORMAT, serveUrl, puppeteerInstance, onError, serializedInputPropsWithCustomSchema, envVariables, output, frame = 0, overwrite, browserExecutable, timeoutInMilliseconds, chromiumOptions, scale, proxyPort, cancelSignal, jpegQuality, onBrowserLog, compositor,
|
|
54
|
+
const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFAULT_STILL_IMAGE_FORMAT, serveUrl, puppeteerInstance, onError, serializedInputPropsWithCustomSchema, envVariables, output, frame = 0, overwrite, browserExecutable, timeoutInMilliseconds, chromiumOptions, scale, proxyPort, cancelSignal, jpegQuality, onBrowserLog, compositor, sourceMapGetter, downloadMap, logLevel, indent, serializedResolvedPropsWithCustomSchema, }) => {
|
|
55
55
|
(0, validate_1.validateDimension)(composition.height, 'height', 'in the `config` object passed to `renderStill()`');
|
|
56
56
|
(0, validate_1.validateDimension)(composition.width, 'width', 'in the `config` object passed to `renderStill()`');
|
|
57
57
|
(0, validate_1.validateFps)(composition.fps, 'in the `config` object of `renderStill()`', false);
|
|
@@ -95,7 +95,7 @@ const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFA
|
|
|
95
95
|
viewport: null,
|
|
96
96
|
logLevel,
|
|
97
97
|
}));
|
|
98
|
-
const page = await browserInstance.newPage(
|
|
98
|
+
const page = await browserInstance.newPage(sourceMapGetter, logLevel, indent);
|
|
99
99
|
await page.setViewport({
|
|
100
100
|
width: composition.width,
|
|
101
101
|
height: composition.height,
|
|
@@ -217,14 +217,14 @@ const internalRenderStillRaw = (options) => {
|
|
|
217
217
|
})
|
|
218
218
|
.then(({ server, cleanupServer }) => {
|
|
219
219
|
cleanup.push(() => cleanupServer(false));
|
|
220
|
-
const { serveUrl, offthreadPort, compositor, sourceMap, downloadMap } = server;
|
|
220
|
+
const { serveUrl, offthreadPort, compositor, sourceMap: sourceMapGetter, downloadMap, } = server;
|
|
221
221
|
return innerRenderStill({
|
|
222
222
|
...options,
|
|
223
223
|
serveUrl,
|
|
224
224
|
onError,
|
|
225
225
|
proxyPort: offthreadPort,
|
|
226
226
|
compositor,
|
|
227
|
-
|
|
227
|
+
sourceMapGetter,
|
|
228
228
|
downloadMap,
|
|
229
229
|
});
|
|
230
230
|
})
|
|
@@ -97,7 +97,6 @@ const internalSelectCompositionRaw = async (options) => {
|
|
|
97
97
|
passedInInstance: puppeteerInstance,
|
|
98
98
|
browserExecutable,
|
|
99
99
|
chromiumOptions,
|
|
100
|
-
context: null,
|
|
101
100
|
forceDeviceScaleFactor: undefined,
|
|
102
101
|
indent,
|
|
103
102
|
logLevel,
|
|
@@ -123,7 +122,7 @@ const internalSelectCompositionRaw = async (options) => {
|
|
|
123
122
|
onError,
|
|
124
123
|
})
|
|
125
124
|
.then(({ server: { serveUrl, offthreadPort, sourceMap }, cleanupServer }) => {
|
|
126
|
-
page.
|
|
125
|
+
page.setBrowserSourceMapGetter(sourceMap);
|
|
127
126
|
cleanup.push(() => cleanupServer(true));
|
|
128
127
|
return innerSelectComposition({
|
|
129
128
|
serveUrl,
|
|
@@ -152,17 +152,21 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
152
152
|
};
|
|
153
153
|
const setPropsAndEnv = async (params) => {
|
|
154
154
|
let timeout = null;
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
155
|
+
try {
|
|
156
|
+
const result = await Promise.race([
|
|
157
|
+
innerSetPropsAndEnv(params),
|
|
158
|
+
new Promise((_, reject) => {
|
|
159
|
+
timeout = setTimeout(() => {
|
|
160
|
+
reject(new Error(`Timed out after ${params.timeoutInMilliseconds} while setting up the headless browser. This could be because the you specified takes a long time to load (or network resources that it includes like fonts) or because the browser is not responding. Optimize the site or increase the browser timeout.`));
|
|
161
|
+
}, params.timeoutInMilliseconds);
|
|
162
|
+
}),
|
|
163
|
+
]);
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
if (timeout !== null) {
|
|
168
|
+
clearTimeout(timeout);
|
|
169
|
+
}
|
|
165
170
|
}
|
|
166
|
-
return result;
|
|
167
171
|
};
|
|
168
172
|
exports.setPropsAndEnv = setPropsAndEnv;
|
package/dist/test-gpu.js
CHANGED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const validOpenGlRenderers: readonly ["swangle", "angle", "egl", "swiftshader"];
|
|
2
|
+
export type OpenGlRenderer = (typeof validOpenGlRenderers)[number];
|
|
3
|
+
export declare const DEFAULT_OPENGL_RENDERER: OpenGlRenderer | null;
|
|
4
|
+
export declare const validateOpenGlRenderer: (option: OpenGlRenderer | null) => OpenGlRenderer | null;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOpenGlRenderer = exports.DEFAULT_OPENGL_RENDERER = exports.validOpenGlRenderers = void 0;
|
|
4
|
+
exports.validOpenGlRenderers = [
|
|
5
|
+
'swangle',
|
|
6
|
+
'angle',
|
|
7
|
+
'egl',
|
|
8
|
+
'swiftshader',
|
|
9
|
+
];
|
|
10
|
+
exports.DEFAULT_OPENGL_RENDERER = null;
|
|
11
|
+
const validateOpenGlRenderer = (option) => {
|
|
12
|
+
if (option === null) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
if (!exports.validOpenGlRenderers.includes(option)) {
|
|
16
|
+
throw new TypeError(`${option} is not a valid GL backend. Accepted values: ${exports.validOpenGlRenderers.join(', ')}`);
|
|
17
|
+
}
|
|
18
|
+
return option;
|
|
19
|
+
};
|
|
20
|
+
exports.validateOpenGlRenderer = validateOpenGlRenderer;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.63",
|
|
4
4
|
"description": "Renderer for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"extract-zip": "2.0.1",
|
|
19
19
|
"source-map": "^0.8.0-beta.0",
|
|
20
20
|
"ws": "8.7.0",
|
|
21
|
-
"remotion": "4.0.
|
|
21
|
+
"remotion": "4.0.63"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": ">=16.8.0",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"vitest": "0.31.1"
|
|
41
41
|
},
|
|
42
42
|
"optionalDependencies": {
|
|
43
|
-
"@remotion/compositor-darwin-arm64": "4.0.
|
|
44
|
-
"@remotion/compositor-darwin-x64": "4.0.
|
|
45
|
-
"@remotion/compositor-linux-arm64-
|
|
46
|
-
"@remotion/compositor-linux-
|
|
47
|
-
"@remotion/compositor-linux-x64-musl": "4.0.
|
|
48
|
-
"@remotion/compositor-linux-
|
|
49
|
-
"@remotion/compositor-win32-x64-msvc": "4.0.
|
|
43
|
+
"@remotion/compositor-darwin-arm64": "4.0.63",
|
|
44
|
+
"@remotion/compositor-darwin-x64": "4.0.63",
|
|
45
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.63",
|
|
46
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.63",
|
|
47
|
+
"@remotion/compositor-linux-x64-musl": "4.0.63",
|
|
48
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.63",
|
|
49
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.63"
|
|
50
50
|
},
|
|
51
51
|
"keywords": [
|
|
52
52
|
"remotion",
|