@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
|
@@ -11,5 +11,5 @@ type Options = {
|
|
|
11
11
|
totalSize: number | null;
|
|
12
12
|
}) => void) | undefined;
|
|
13
13
|
};
|
|
14
|
-
export declare const downloadFile: (options: Options, retries?: number) => Promise<Response>;
|
|
14
|
+
export declare const downloadFile: (options: Options, retries?: number, attempt?: number) => Promise<Response>;
|
|
15
15
|
export {};
|
|
@@ -4,6 +4,7 @@ exports.downloadFile = void 0;
|
|
|
4
4
|
const node_fs_1 = require("node:fs");
|
|
5
5
|
const ensure_output_directory_1 = require("../ensure-output-directory");
|
|
6
6
|
const read_file_1 = require("./read-file");
|
|
7
|
+
const incorrectContentLengthToken = 'Download finished with';
|
|
7
8
|
const downloadFileWithoutRetries = ({ onProgress, url, to: toFn }) => {
|
|
8
9
|
return new Promise((resolve, reject) => {
|
|
9
10
|
let rejected = false;
|
|
@@ -76,7 +77,7 @@ const downloadFileWithoutRetries = ({ onProgress, url, to: toFn }) => {
|
|
|
76
77
|
});
|
|
77
78
|
res.on('close', () => {
|
|
78
79
|
if (totalSize !== null && downloaded !== totalSize) {
|
|
79
|
-
rejectAndFlag(new Error(
|
|
80
|
+
rejectAndFlag(new Error(`${incorrectContentLengthToken} ${downloaded} bytes, but expected ${totalSize} bytes from 'Content-Length'.`));
|
|
80
81
|
}
|
|
81
82
|
writeStream.close();
|
|
82
83
|
});
|
|
@@ -86,17 +87,23 @@ const downloadFileWithoutRetries = ({ onProgress, url, to: toFn }) => {
|
|
|
86
87
|
});
|
|
87
88
|
});
|
|
88
89
|
};
|
|
89
|
-
const downloadFile = async (options, retries = 2) => {
|
|
90
|
+
const downloadFile = async (options, retries = 2, attempt = 1) => {
|
|
90
91
|
try {
|
|
91
92
|
const res = await downloadFileWithoutRetries(options);
|
|
92
93
|
return res;
|
|
93
94
|
}
|
|
94
95
|
catch (err) {
|
|
95
|
-
|
|
96
|
+
const { message } = err;
|
|
97
|
+
if (message === 'aborted' ||
|
|
98
|
+
message.includes(incorrectContentLengthToken)) {
|
|
96
99
|
if (retries === 0) {
|
|
97
100
|
throw err;
|
|
98
101
|
}
|
|
99
|
-
|
|
102
|
+
const backoffInSeconds = (attempt + 1) ** 2;
|
|
103
|
+
await new Promise((resolve) => {
|
|
104
|
+
setTimeout(() => resolve(), backoffInSeconds * 1000);
|
|
105
|
+
});
|
|
106
|
+
return (0, exports.downloadFile)(options, retries - 1, attempt + 1);
|
|
100
107
|
}
|
|
101
108
|
throw err;
|
|
102
109
|
}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import type { LogLevel } from '../log-level';
|
|
16
17
|
import type { AnySourceMapConsumer } from '../symbolicate-stacktrace';
|
|
17
18
|
import type { Page } from './BrowserPage';
|
|
18
19
|
import type { Connection } from './Connection';
|
|
@@ -40,12 +41,12 @@ export declare class HeadlessBrowser extends EventEmitter {
|
|
|
40
41
|
get _targets(): Map<string, Target>;
|
|
41
42
|
constructor(connection: Connection, defaultViewport: Viewport, closeCallback?: BrowserCloseCallback);
|
|
42
43
|
browserContexts(): BrowserContext[];
|
|
43
|
-
newPage(context: AnySourceMapConsumer | null): Promise<Page>;
|
|
44
|
-
_createPageInContext(context: AnySourceMapConsumer | null): Promise<Page>;
|
|
44
|
+
newPage(context: AnySourceMapConsumer | null, logLevel: LogLevel, indent: boolean): Promise<Page>;
|
|
45
|
+
_createPageInContext(context: AnySourceMapConsumer | null, logLevel: LogLevel, indent: boolean): Promise<Page>;
|
|
45
46
|
targets(): Target[];
|
|
46
47
|
waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: WaitForTargetOptions): Promise<Target>;
|
|
47
|
-
pages(): Promise<Page[]>;
|
|
48
|
-
close(silent: boolean): Promise<void>;
|
|
48
|
+
pages(logLevel: LogLevel, indent: boolean): Promise<Page[]>;
|
|
49
|
+
close(silent: boolean, logLevel: LogLevel, indent: boolean): Promise<void>;
|
|
49
50
|
disconnect(): void;
|
|
50
51
|
}
|
|
51
52
|
export declare class BrowserContext extends EventEmitter {
|
|
@@ -55,8 +56,8 @@ export declare class BrowserContext extends EventEmitter {
|
|
|
55
56
|
waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: {
|
|
56
57
|
timeout?: number;
|
|
57
58
|
}): Promise<Target>;
|
|
58
|
-
pages(): Promise<Page[]>;
|
|
59
|
-
newPage(context: AnySourceMapConsumer | null): Promise<Page>;
|
|
59
|
+
pages(logLevel: LogLevel, indent: boolean): Promise<Page[]>;
|
|
60
|
+
newPage(context: AnySourceMapConsumer | null, logLevel: LogLevel, indent: boolean): Promise<Page>;
|
|
60
61
|
browser(): HeadlessBrowser;
|
|
61
62
|
}
|
|
62
63
|
export {};
|
package/dist/browser/Browser.js
CHANGED
|
@@ -65,10 +65,10 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
65
65
|
browserContexts() {
|
|
66
66
|
return [__classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f"), ...Array.from(__classPrivateFieldGet(this, _HeadlessBrowser_contexts, "f").values())];
|
|
67
67
|
}
|
|
68
|
-
newPage(context) {
|
|
69
|
-
return __classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f").newPage(context);
|
|
68
|
+
newPage(context, logLevel, indent) {
|
|
69
|
+
return __classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f").newPage(context, logLevel, indent);
|
|
70
70
|
}
|
|
71
|
-
async _createPageInContext(context) {
|
|
71
|
+
async _createPageInContext(context, logLevel, indent) {
|
|
72
72
|
const { targetId } = await this.connection.send('Target.createTarget', {
|
|
73
73
|
url: 'about:blank',
|
|
74
74
|
browserContextId: undefined,
|
|
@@ -81,7 +81,7 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
81
81
|
if (!initialized) {
|
|
82
82
|
throw new Error(`Failed to create target for page (id = ${targetId})`);
|
|
83
83
|
}
|
|
84
|
-
const page = await target.page(context);
|
|
84
|
+
const page = await target.page(context, logLevel, indent);
|
|
85
85
|
if (!page) {
|
|
86
86
|
throw new Error(`Failed to create a page for context`);
|
|
87
87
|
}
|
|
@@ -119,18 +119,18 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
-
async pages() {
|
|
122
|
+
async pages(logLevel, indent) {
|
|
123
123
|
const contextPages = await Promise.all(this.browserContexts().map((context) => {
|
|
124
|
-
return context.pages();
|
|
124
|
+
return context.pages(logLevel, indent);
|
|
125
125
|
}));
|
|
126
126
|
// Flatten array.
|
|
127
127
|
return contextPages.reduce((acc, x) => {
|
|
128
128
|
return acc.concat(x);
|
|
129
129
|
}, []);
|
|
130
130
|
}
|
|
131
|
-
async close(silent) {
|
|
131
|
+
async close(silent, logLevel, indent) {
|
|
132
132
|
await __classPrivateFieldGet(this, _HeadlessBrowser_closeCallback, "f").call(null);
|
|
133
|
-
(await this.pages()).forEach((page) => {
|
|
133
|
+
(await this.pages(logLevel, indent)).forEach((page) => {
|
|
134
134
|
page.emit("disposed" /* PageEmittedEvents.Disposed */);
|
|
135
135
|
page.closed = true;
|
|
136
136
|
});
|
|
@@ -196,16 +196,16 @@ class BrowserContext extends EventEmitter_1.EventEmitter {
|
|
|
196
196
|
return target.browserContext() === this && predicate(target);
|
|
197
197
|
}, options);
|
|
198
198
|
}
|
|
199
|
-
async pages() {
|
|
199
|
+
async pages(logLevel, indent) {
|
|
200
200
|
const pages = await Promise.all(this.targets()
|
|
201
201
|
.filter((target) => target.type() === 'page')
|
|
202
|
-
.map((target) => target.page(null)));
|
|
202
|
+
.map((target) => target.page(null, logLevel, indent)));
|
|
203
203
|
return pages.filter((page) => {
|
|
204
204
|
return Boolean(page);
|
|
205
205
|
});
|
|
206
206
|
}
|
|
207
|
-
newPage(context) {
|
|
208
|
-
return __classPrivateFieldGet(this, _BrowserContext_browser, "f")._createPageInContext(context);
|
|
207
|
+
newPage(context, logLevel, indent) {
|
|
208
|
+
return __classPrivateFieldGet(this, _BrowserContext_browser, "f")._createPageInContext(context, logLevel, indent);
|
|
209
209
|
}
|
|
210
210
|
browser() {
|
|
211
211
|
return __classPrivateFieldGet(this, _BrowserContext_browser, "f");
|
|
@@ -25,6 +25,7 @@ import type { JSHandle } from './JSHandle';
|
|
|
25
25
|
import type { Viewport } from './PuppeteerViewport';
|
|
26
26
|
import type { Target } from './Target';
|
|
27
27
|
import { TaskQueue } from './TaskQueue';
|
|
28
|
+
import type { LogLevel } from '../log-level';
|
|
28
29
|
interface WaitForOptions {
|
|
29
30
|
timeout?: number;
|
|
30
31
|
}
|
|
@@ -41,18 +42,28 @@ interface PageEventObject {
|
|
|
41
42
|
export declare class Page extends EventEmitter {
|
|
42
43
|
#private;
|
|
43
44
|
id: string;
|
|
44
|
-
static _create({ client, target, defaultViewport, browser, sourcemapContext, }: {
|
|
45
|
+
static _create({ client, target, defaultViewport, browser, sourcemapContext, logLevel, indent, }: {
|
|
45
46
|
client: CDPSession;
|
|
46
47
|
target: Target;
|
|
47
48
|
defaultViewport: Viewport;
|
|
48
49
|
browser: HeadlessBrowser;
|
|
49
50
|
sourcemapContext: AnySourceMapConsumer | null;
|
|
51
|
+
logLevel: LogLevel;
|
|
52
|
+
indent: boolean;
|
|
50
53
|
}): Promise<Page>;
|
|
51
54
|
closed: boolean;
|
|
52
55
|
browser: HeadlessBrowser;
|
|
53
56
|
screenshotTaskQueue: TaskQueue;
|
|
54
57
|
sourcemapContext: AnySourceMapConsumer | null;
|
|
55
|
-
|
|
58
|
+
logLevel: LogLevel;
|
|
59
|
+
constructor({ client, target, browser, sourcemapContext, logLevel, indent, }: {
|
|
60
|
+
client: CDPSession;
|
|
61
|
+
target: Target;
|
|
62
|
+
browser: HeadlessBrowser;
|
|
63
|
+
sourcemapContext: AnySourceMapConsumer | null;
|
|
64
|
+
logLevel: LogLevel;
|
|
65
|
+
indent: boolean;
|
|
66
|
+
});
|
|
56
67
|
/**
|
|
57
68
|
* Listen to page events.
|
|
58
69
|
*/
|
|
@@ -40,13 +40,20 @@ const TaskQueue_1 = require("./TaskQueue");
|
|
|
40
40
|
const TimeoutSettings_1 = require("./TimeoutSettings");
|
|
41
41
|
const util_1 = require("./util");
|
|
42
42
|
class Page extends EventEmitter_1.EventEmitter {
|
|
43
|
-
static async _create({ client, target, defaultViewport, browser, sourcemapContext, }) {
|
|
44
|
-
const page = new Page(
|
|
43
|
+
static async _create({ client, target, defaultViewport, browser, sourcemapContext, logLevel, indent, }) {
|
|
44
|
+
const page = new Page({
|
|
45
|
+
client,
|
|
46
|
+
target,
|
|
47
|
+
browser,
|
|
48
|
+
sourcemapContext,
|
|
49
|
+
logLevel,
|
|
50
|
+
indent,
|
|
51
|
+
});
|
|
45
52
|
await __classPrivateFieldGet(page, _Page_instances, "m", _Page_initialize).call(page);
|
|
46
53
|
await page.setViewport(defaultViewport);
|
|
47
54
|
return page;
|
|
48
55
|
}
|
|
49
|
-
constructor(client, target, browser, sourcemapContext) {
|
|
56
|
+
constructor({ client, target, browser, sourcemapContext, logLevel, indent, }) {
|
|
50
57
|
super();
|
|
51
58
|
_Page_instances.add(this);
|
|
52
59
|
this.closed = false;
|
|
@@ -62,6 +69,7 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
62
69
|
this.browser = browser;
|
|
63
70
|
this.id = String(Math.random());
|
|
64
71
|
this.sourcemapContext = sourcemapContext;
|
|
72
|
+
this.logLevel = logLevel;
|
|
65
73
|
client.on('Target.attachedToTarget', (event) => {
|
|
66
74
|
switch (event.targetInfo.type) {
|
|
67
75
|
case 'iframe':
|
|
@@ -112,14 +120,14 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
112
120
|
.filter(truthy_1.truthy)
|
|
113
121
|
.join(':');
|
|
114
122
|
logger_1.Log.verboseAdvanced({
|
|
115
|
-
logLevel
|
|
123
|
+
logLevel,
|
|
116
124
|
tag: `console.${log.type}()`,
|
|
117
125
|
secondTag: [origPosition.name, file].filter(truthy_1.truthy).join('@'),
|
|
118
|
-
indent
|
|
126
|
+
indent,
|
|
119
127
|
}, log.text);
|
|
120
128
|
}
|
|
121
129
|
else {
|
|
122
|
-
logger_1.Log.verboseAdvanced({ logLevel
|
|
130
|
+
logger_1.Log.verboseAdvanced({ logLevel, tag: `console.${log.type}`, indent }, log.text);
|
|
123
131
|
}
|
|
124
132
|
});
|
|
125
133
|
}
|
|
@@ -103,7 +103,7 @@ class BrowserRunner {
|
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
105
|
const { output, tag } = formatted;
|
|
106
|
-
logger_1.Log.verboseAdvanced({ indent: options.indent, logLevel:
|
|
106
|
+
logger_1.Log.verboseAdvanced({ indent: options.indent, logLevel: options.logLevel, tag }, output);
|
|
107
107
|
}
|
|
108
108
|
});
|
|
109
109
|
(_b = this.proc.stderr) === null || _b === void 0 ? void 0 : _b.on('data', (d) => {
|
|
@@ -114,7 +114,7 @@ class BrowserRunner {
|
|
|
114
114
|
return;
|
|
115
115
|
}
|
|
116
116
|
const { output, tag } = formatted;
|
|
117
|
-
logger_1.Log.verboseAdvanced({ indent: options.indent, logLevel:
|
|
117
|
+
logger_1.Log.verboseAdvanced({ indent: options.indent, logLevel: options.logLevel, tag }, output);
|
|
118
118
|
}
|
|
119
119
|
});
|
|
120
120
|
}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import type { LogLevel } from '../log-level';
|
|
16
17
|
import type { BrowserConnectOptions } from './BrowserConnector';
|
|
17
18
|
import type { Product } from './Product';
|
|
18
19
|
export interface BrowserLaunchArgumentOptions {
|
|
@@ -26,6 +27,7 @@ export interface LaunchOptions {
|
|
|
26
27
|
executablePath?: string;
|
|
27
28
|
timeout?: number;
|
|
28
29
|
dumpio?: boolean;
|
|
30
|
+
logLevel: LogLevel;
|
|
29
31
|
env?: Record<string, string | undefined>;
|
|
30
32
|
product?: Product;
|
|
31
33
|
indent: boolean;
|
package/dist/browser/Launcher.js
CHANGED
|
@@ -84,6 +84,7 @@ class ChromeLauncher {
|
|
|
84
84
|
dumpio,
|
|
85
85
|
env,
|
|
86
86
|
indent,
|
|
87
|
+
logLevel: options.logLevel,
|
|
87
88
|
});
|
|
88
89
|
let browser;
|
|
89
90
|
try {
|
|
@@ -107,7 +108,7 @@ class ChromeLauncher {
|
|
|
107
108
|
}, { timeout });
|
|
108
109
|
}
|
|
109
110
|
catch (error) {
|
|
110
|
-
await browser.close(false);
|
|
111
|
+
await browser.close(false, options.logLevel, options.indent);
|
|
111
112
|
throw error;
|
|
112
113
|
}
|
|
113
114
|
return browser;
|
package/dist/browser/Target.d.ts
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import type { LogLevel } from '../log-level';
|
|
16
17
|
import type { AnySourceMapConsumer } from '../symbolicate-stacktrace';
|
|
17
18
|
import type { BrowserContext, HeadlessBrowser } from './Browser';
|
|
18
19
|
import { Page } from './BrowserPage';
|
|
@@ -36,7 +37,7 @@ export declare class Target {
|
|
|
36
37
|
/**
|
|
37
38
|
* If the target is not of type `"page"` or `"background_page"`, returns `null`.
|
|
38
39
|
*/
|
|
39
|
-
page(sourcemapContext: AnySourceMapConsumer | null): Promise<Page | null>;
|
|
40
|
+
page(sourcemapContext: AnySourceMapConsumer | null, logLevel: LogLevel, indent: boolean): Promise<Page | null>;
|
|
40
41
|
url(): string;
|
|
41
42
|
/**
|
|
42
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(sourcemapContext) {
|
|
82
|
+
async page(sourcemapContext, 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) => {
|
|
@@ -90,6 +90,8 @@ class Target {
|
|
|
90
90
|
defaultViewport: (_a = __classPrivateFieldGet(this, _Target_defaultViewport, "f")) !== null && _a !== void 0 ? _a : null,
|
|
91
91
|
browser: this.browser(),
|
|
92
92
|
sourcemapContext,
|
|
93
|
+
logLevel,
|
|
94
|
+
indent,
|
|
93
95
|
});
|
|
94
96
|
}), "f");
|
|
95
97
|
}
|
|
@@ -6,6 +6,14 @@ const shouldLogBrowserMessage = (message) => {
|
|
|
6
6
|
if (message.startsWith('DevTools listening on')) {
|
|
7
7
|
return false;
|
|
8
8
|
}
|
|
9
|
+
// In Ubuntu GitHub Action
|
|
10
|
+
if (message.includes('Falling back to ALSA for audio output')) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
// In Ubuntu GitHub Action
|
|
14
|
+
if (message.includes('Floss manager not present, cannot set Floss enable/disable')) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
9
17
|
// Noisy but harmless warning
|
|
10
18
|
if (message.includes('Failed to send GpuControl.CreateCommandBuffer')) {
|
|
11
19
|
return false;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { CompositorCommand } from './payloads';
|
|
3
|
+
import type { LogLevel } from '../log-level';
|
|
3
4
|
export type Compositor = {
|
|
4
5
|
finishCommands: () => void;
|
|
5
6
|
executeCommand: <T extends keyof CompositorCommand>(type: T, payload: CompositorCommand[T]) => Promise<Buffer>;
|
|
@@ -7,5 +8,5 @@ export type Compositor = {
|
|
|
7
8
|
pid: number | null;
|
|
8
9
|
};
|
|
9
10
|
export declare const getIdealMaximumFrameCacheItems: () => number;
|
|
10
|
-
export declare const startLongRunningCompositor: (maximumFrameCacheItems: number,
|
|
11
|
-
export declare const startCompositor: <T extends keyof CompositorCommand>(type: T, payload: CompositorCommand[T], indent: boolean) => Compositor;
|
|
11
|
+
export declare const startLongRunningCompositor: (maximumFrameCacheItems: number, logLevel: LogLevel, indent: boolean) => Compositor;
|
|
12
|
+
export declare const startCompositor: <T extends keyof CompositorCommand>(type: T, payload: CompositorCommand[T], logLevel: LogLevel, indent: boolean) => Compositor;
|
|
@@ -13,6 +13,7 @@ const logger_1 = require("../logger");
|
|
|
13
13
|
const compose_1 = require("./compose");
|
|
14
14
|
const get_executable_path_1 = require("./get-executable-path");
|
|
15
15
|
const make_nonce_1 = require("./make-nonce");
|
|
16
|
+
const log_level_1 = require("../log-level");
|
|
16
17
|
const getIdealMaximumFrameCacheItems = () => {
|
|
17
18
|
const freeMemory = node_os_1.default.freemem();
|
|
18
19
|
// Assuming 1 frame is approximately 6MB
|
|
@@ -23,15 +24,15 @@ const getIdealMaximumFrameCacheItems = () => {
|
|
|
23
24
|
return Math.max(100, Math.min(max, 1000));
|
|
24
25
|
};
|
|
25
26
|
exports.getIdealMaximumFrameCacheItems = getIdealMaximumFrameCacheItems;
|
|
26
|
-
const startLongRunningCompositor = (maximumFrameCacheItems,
|
|
27
|
+
const startLongRunningCompositor = (maximumFrameCacheItems, logLevel, indent) => {
|
|
27
28
|
return (0, exports.startCompositor)('StartLongRunningProcess', {
|
|
28
29
|
concurrency: (0, get_concurrency_1.getActualConcurrency)(null),
|
|
29
30
|
maximum_frame_cache_items: maximumFrameCacheItems,
|
|
30
|
-
verbose,
|
|
31
|
-
}, indent);
|
|
31
|
+
verbose: (0, log_level_1.isEqualOrBelowLogLevel)(logLevel, 'verbose'),
|
|
32
|
+
}, logLevel, indent);
|
|
32
33
|
};
|
|
33
34
|
exports.startLongRunningCompositor = startLongRunningCompositor;
|
|
34
|
-
const startCompositor = (type, payload, indent) => {
|
|
35
|
+
const startCompositor = (type, payload, logLevel, indent) => {
|
|
35
36
|
var _a;
|
|
36
37
|
const bin = (0, get_executable_path_1.getExecutablePath)('compositor');
|
|
37
38
|
if (!process.env.READ_ONLY_FS) {
|
|
@@ -45,7 +46,7 @@ const startCompositor = (type, payload, indent) => {
|
|
|
45
46
|
const waiters = new Map();
|
|
46
47
|
const onMessage = (statusType, nonce, data) => {
|
|
47
48
|
if (nonce === '0') {
|
|
48
|
-
logger_1.Log.verboseAdvanced({ indent, logLevel
|
|
49
|
+
logger_1.Log.verboseAdvanced({ indent, logLevel, tag: 'compositor' }, data.toString('utf8'));
|
|
49
50
|
}
|
|
50
51
|
if (waiters.has(nonce)) {
|
|
51
52
|
if (statusType === 'error') {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { LogLevel } from './log-level';
|
|
1
2
|
import type { BrowserReplacer } from './replace-browser';
|
|
2
|
-
export declare const cycleBrowserTabs: (puppeteerInstance: BrowserReplacer, concurrency: number) => {
|
|
3
|
+
export declare const cycleBrowserTabs: (puppeteerInstance: BrowserReplacer, concurrency: number, logLevel: LogLevel, indent: boolean) => {
|
|
3
4
|
stopCycling: () => void;
|
|
4
5
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.cycleBrowserTabs = void 0;
|
|
4
|
-
const cycleBrowserTabs = (puppeteerInstance, concurrency) => {
|
|
4
|
+
const cycleBrowserTabs = (puppeteerInstance, concurrency, logLevel, indent) => {
|
|
5
5
|
if (concurrency <= 1) {
|
|
6
6
|
return {
|
|
7
7
|
stopCycling: () => undefined,
|
|
@@ -14,7 +14,7 @@ const cycleBrowserTabs = (puppeteerInstance, concurrency) => {
|
|
|
14
14
|
interval = setTimeout(() => {
|
|
15
15
|
puppeteerInstance
|
|
16
16
|
.getBrowser()
|
|
17
|
-
.pages()
|
|
17
|
+
.pages(logLevel, indent)
|
|
18
18
|
.then((pages) => {
|
|
19
19
|
if (pages.length === 0) {
|
|
20
20
|
return;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import type { BrowserExecutable } from './browser-executable';
|
|
2
2
|
import type { HeadlessBrowser } from './browser/Browser';
|
|
3
3
|
import type { Page } from './browser/BrowserPage';
|
|
4
|
+
import type { LogLevel } from './log-level';
|
|
4
5
|
import type { ChromiumOptions } from './open-browser';
|
|
5
6
|
import type { AnySourceMapConsumer } from './symbolicate-stacktrace';
|
|
6
|
-
export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, context, forceDeviceScaleFactor, indent,
|
|
7
|
+
export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, context, forceDeviceScaleFactor, indent, logLevel, }: {
|
|
7
8
|
passedInInstance: HeadlessBrowser | undefined;
|
|
8
9
|
browserExecutable: BrowserExecutable | null;
|
|
9
10
|
chromiumOptions: ChromiumOptions;
|
|
10
11
|
context: AnySourceMapConsumer | null;
|
|
11
12
|
indent: boolean;
|
|
12
13
|
forceDeviceScaleFactor: number | undefined;
|
|
13
|
-
|
|
14
|
+
logLevel: LogLevel;
|
|
14
15
|
}) => Promise<{
|
|
15
16
|
cleanup: () => void;
|
|
16
17
|
page: Page;
|
|
@@ -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, context, forceDeviceScaleFactor, indent,
|
|
6
|
+
const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromiumOptions, context, forceDeviceScaleFactor, indent, logLevel, }) => {
|
|
7
7
|
if (passedInInstance) {
|
|
8
|
-
const page = await passedInInstance.newPage(context);
|
|
8
|
+
const page = await passedInInstance.newPage(context, logLevel, indent);
|
|
9
9
|
return {
|
|
10
10
|
page,
|
|
11
11
|
cleanup: () => {
|
|
@@ -23,15 +23,15 @@ const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromi
|
|
|
23
23
|
chromiumOptions,
|
|
24
24
|
forceDeviceScaleFactor,
|
|
25
25
|
indent,
|
|
26
|
-
shouldDumpIo,
|
|
27
26
|
viewport: null,
|
|
27
|
+
logLevel,
|
|
28
28
|
});
|
|
29
|
-
const browserPage = await browserInstance.newPage(context);
|
|
29
|
+
const browserPage = await browserInstance.newPage(context, logLevel, indent);
|
|
30
30
|
return {
|
|
31
31
|
page: browserPage,
|
|
32
32
|
cleanup: () => {
|
|
33
33
|
// Close whole browser that was just created and don't wait for it to finish.
|
|
34
|
-
browserInstance.close(true).catch((err) => {
|
|
34
|
+
browserInstance.close(true, logLevel, indent).catch((err) => {
|
|
35
35
|
console.error('Was not able to close puppeteer page', err);
|
|
36
36
|
});
|
|
37
37
|
},
|
|
@@ -4,6 +4,7 @@ import type { BrowserLog } from './browser-log';
|
|
|
4
4
|
import type { HeadlessBrowser } from './browser/Browser';
|
|
5
5
|
import type { ChromiumOptions } from './open-browser';
|
|
6
6
|
import type { RemotionServer } from './prepare-server';
|
|
7
|
+
import { type LogLevel } from './log-level';
|
|
7
8
|
type InternalGetCompositionsOptions = {
|
|
8
9
|
inputProps: Record<string, unknown>;
|
|
9
10
|
envVariables: Record<string, string>;
|
|
@@ -15,7 +16,7 @@ type InternalGetCompositionsOptions = {
|
|
|
15
16
|
port: number | null;
|
|
16
17
|
server: RemotionServer | undefined;
|
|
17
18
|
indent: boolean;
|
|
18
|
-
|
|
19
|
+
logLevel: LogLevel;
|
|
19
20
|
serveUrlOrWebpackUrl: string;
|
|
20
21
|
};
|
|
21
22
|
export type GetCompositionsOptions = {
|
|
@@ -27,9 +28,9 @@ export type GetCompositionsOptions = {
|
|
|
27
28
|
timeoutInMilliseconds?: number;
|
|
28
29
|
chromiumOptions?: ChromiumOptions;
|
|
29
30
|
port?: number | null;
|
|
30
|
-
|
|
31
|
+
logLevel?: LogLevel;
|
|
31
32
|
};
|
|
32
|
-
export declare const internalGetCompositions: ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds,
|
|
33
|
+
export declare const internalGetCompositions: ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds, logLevel, }: InternalGetCompositionsOptions) => Promise<AnyCompMetadata[]>;
|
|
33
34
|
/**
|
|
34
35
|
* @description Gets the compositions defined in a Remotion project based on a Webpack bundle.
|
|
35
36
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/get-compositions)
|
package/dist/get-compositions.js
CHANGED
|
@@ -10,6 +10,7 @@ const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
|
10
10
|
const seek_to_frame_1 = require("./seek-to-frame");
|
|
11
11
|
const set_props_and_env_1 = require("./set-props-and-env");
|
|
12
12
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
13
|
+
const logger_1 = require("./logger");
|
|
13
14
|
const innerGetCompositions = async ({ envVariables, inputProps, onBrowserLog, page, proxyPort, serveUrl, timeoutInMilliseconds, }) => {
|
|
14
15
|
if (onBrowserLog) {
|
|
15
16
|
page.on('console', (log) => {
|
|
@@ -54,7 +55,7 @@ const innerGetCompositions = async ({ envVariables, inputProps, onBrowserLog, pa
|
|
|
54
55
|
});
|
|
55
56
|
return result;
|
|
56
57
|
};
|
|
57
|
-
const internalGetCompositions = async ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds,
|
|
58
|
+
const internalGetCompositions = async ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds, logLevel, }) => {
|
|
58
59
|
const { page, cleanup: cleanupPage } = await (0, get_browser_instance_1.getPageAndCleanupFn)({
|
|
59
60
|
passedInInstance: puppeteerInstance,
|
|
60
61
|
browserExecutable,
|
|
@@ -62,7 +63,7 @@ const internalGetCompositions = async ({ browserExecutable, chromiumOptions, env
|
|
|
62
63
|
context: null,
|
|
63
64
|
forceDeviceScaleFactor: undefined,
|
|
64
65
|
indent,
|
|
65
|
-
|
|
66
|
+
logLevel,
|
|
66
67
|
});
|
|
67
68
|
const cleanup = [cleanupPage];
|
|
68
69
|
return new Promise((resolve, reject) => {
|
|
@@ -77,7 +78,7 @@ const internalGetCompositions = async ({ browserExecutable, chromiumOptions, env
|
|
|
77
78
|
port,
|
|
78
79
|
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
79
80
|
concurrency: 1,
|
|
80
|
-
|
|
81
|
+
logLevel,
|
|
81
82
|
indent,
|
|
82
83
|
}, {
|
|
83
84
|
onDownload: () => undefined,
|
|
@@ -115,7 +116,7 @@ exports.internalGetCompositions = internalGetCompositions;
|
|
|
115
116
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/get-compositions)
|
|
116
117
|
*/
|
|
117
118
|
const getCompositions = (serveUrlOrWebpackUrl, config) => {
|
|
118
|
-
const { browserExecutable, chromiumOptions, envVariables, inputProps, onBrowserLog, port, puppeteerInstance, timeoutInMilliseconds,
|
|
119
|
+
const { browserExecutable, chromiumOptions, envVariables, inputProps, onBrowserLog, port, puppeteerInstance, timeoutInMilliseconds, logLevel, } = config !== null && config !== void 0 ? config : {};
|
|
119
120
|
return (0, exports.internalGetCompositions)({
|
|
120
121
|
browserExecutable: browserExecutable !== null && browserExecutable !== void 0 ? browserExecutable : null,
|
|
121
122
|
chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
|
|
@@ -128,7 +129,7 @@ const getCompositions = (serveUrlOrWebpackUrl, config) => {
|
|
|
128
129
|
serveUrlOrWebpackUrl,
|
|
129
130
|
server: undefined,
|
|
130
131
|
timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT,
|
|
131
|
-
|
|
132
|
+
logLevel: logLevel !== null && logLevel !== void 0 ? logLevel : (0, logger_1.getLogLevel)(),
|
|
132
133
|
});
|
|
133
134
|
};
|
|
134
135
|
exports.getCompositions = getCompositions;
|