@remotion/renderer 4.0.290 → 4.0.291

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.
@@ -70,7 +70,7 @@ const makeBrowserRunner = async ({ executablePath, processArguments, userDataDir
70
70
  const dumpio = (0, log_level_1.isEqualOrBelowLogLevel)(logLevel, 'verbose');
71
71
  const stdio = dumpio
72
72
  ? ['ignore', 'pipe', 'pipe']
73
- : ['pipe', 'ignore', 'pipe'];
73
+ : ['pipe', 'pipe', 'pipe'];
74
74
  const proc = childProcess.spawn(executablePath, processArguments, {
75
75
  // On non-windows platforms, `detached: true` makes child process a
76
76
  // leader of a new process group, making it possible to kill child
@@ -235,13 +235,17 @@ const makeBrowserRunner = async ({ executablePath, processArguments, userDataDir
235
235
  exports.makeBrowserRunner = makeBrowserRunner;
236
236
  function waitForWSEndpoint({ browserProcess, timeout, logLevel, indent, }) {
237
237
  const browserStderr = browserProcess.stderr;
238
+ const browserStdout = browserProcess.stdout;
238
239
  (0, assert_1.assert)(browserStderr, '`browserProcess` does not have stderr.');
239
- let stderrString = '';
240
+ (0, assert_1.assert)(browserStdout, '`browserProcess` does not have stdout.');
241
+ let stdioString = '';
240
242
  return new Promise((resolve, reject) => {
241
- browserStderr.addListener('data', onData);
243
+ browserStderr.addListener('data', onStdIoData);
244
+ browserStdout.addListener('data', onStdIoData);
242
245
  browserStderr.addListener('close', onClose);
243
246
  const listeners = [
244
- () => browserStderr.removeListener('data', onData),
247
+ () => browserStderr.removeListener('data', onStdIoData),
248
+ () => browserStdout.removeListener('data', onStdIoData),
245
249
  () => browserStderr.removeListener('close', onClose),
246
250
  (0, util_1.addEventListener)(browserProcess, 'exit', (code, signal) => {
247
251
  logger_1.Log.verbose({ indent, logLevel }, 'Browser process exited with code', code, 'signal', signal);
@@ -257,7 +261,7 @@ function waitForWSEndpoint({ browserProcess, timeout, logLevel, indent, }) {
257
261
  reject(new Error([
258
262
  'Failed to launch the browser process!',
259
263
  error ? error.stack : null,
260
- stderrString,
264
+ stdioString,
261
265
  'Troubleshooting: https://remotion.dev/docs/troubleshooting/browser-launch',
262
266
  ]
263
267
  .filter(truthy_1.truthy)
@@ -265,11 +269,11 @@ function waitForWSEndpoint({ browserProcess, timeout, logLevel, indent, }) {
265
269
  }
266
270
  function onTimeout() {
267
271
  cleanup();
268
- reject(new Errors_1.TimeoutError(`Timed out after ${timeout} ms while trying to connect to the browser! Chrome logged the following: ${stderrString}`));
272
+ reject(new Errors_1.TimeoutError(`Timed out after ${timeout} ms while trying to connect to the browser! Chrome logged the following: ${stdioString}`));
269
273
  }
270
- function onData(data) {
271
- stderrString += data.toString('utf8');
272
- const match = stderrString.match(/DevTools listening on (ws:\/\/.*)/);
274
+ function onStdIoData(data) {
275
+ stdioString += data.toString('utf8');
276
+ const match = stdioString.match(/DevTools listening on (ws:\/\/.*)/);
273
277
  if (!match) {
274
278
  return;
275
279
  }
@@ -22,4 +22,5 @@ export interface LaunchOptions {
22
22
  indent: boolean;
23
23
  defaultViewport: Viewport;
24
24
  userDataDir: string;
25
+ timeout: number;
25
26
  }
@@ -15,4 +15,4 @@
15
15
  */
16
16
  import { HeadlessBrowser } from './Browser';
17
17
  import type { LaunchOptions } from './LaunchOptions';
18
- export declare const launchChrome: ({ args, executablePath, defaultViewport, indent, logLevel, userDataDir, }: LaunchOptions) => Promise<HeadlessBrowser>;
18
+ export declare const launchChrome: ({ args, executablePath, defaultViewport, indent, logLevel, userDataDir, timeout, }: LaunchOptions) => Promise<HeadlessBrowser>;
@@ -17,8 +17,7 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.launchChrome = void 0;
19
19
  const Browser_1 = require("./Browser");
20
- const launchChrome = async ({ args, executablePath, defaultViewport, indent, logLevel, userDataDir, }) => {
21
- const timeout = 60000;
20
+ const launchChrome = async ({ args, executablePath, defaultViewport, indent, logLevel, userDataDir, timeout, }) => {
22
21
  const browser = await Browser_1.HeadlessBrowser.create({
23
22
  defaultViewport,
24
23
  args,
@@ -33,6 +33,15 @@ const shouldLogBrowserMessage = (message) => {
33
33
  if (message.includes('Received HEADERS for invalid stream')) {
34
34
  return false;
35
35
  }
36
+ if (message.includes('CVDisplayLinkCreateWithCGDisplay failed')) {
37
+ return false;
38
+ }
39
+ if (message.includes('Falling back to ALSA for audio output')) {
40
+ return false;
41
+ }
42
+ if (message.includes('VizNullHypothesis is disabled')) {
43
+ return false;
44
+ }
36
45
  return true;
37
46
  };
38
47
  exports.shouldLogBrowserMessage = shouldLogBrowserMessage;
@@ -3175,6 +3175,15 @@ var shouldLogBrowserMessage = (message) => {
3175
3175
  if (message.includes("Received HEADERS for invalid stream")) {
3176
3176
  return false;
3177
3177
  }
3178
+ if (message.includes("CVDisplayLinkCreateWithCGDisplay failed")) {
3179
+ return false;
3180
+ }
3181
+ if (message.includes("Falling back to ALSA for audio output")) {
3182
+ return false;
3183
+ }
3184
+ if (message.includes("VizNullHypothesis is disabled")) {
3185
+ return false;
3186
+ }
3178
3187
  return true;
3179
3188
  };
3180
3189
  var parseBrowserLogMessage = (input) => {
@@ -3234,7 +3243,7 @@ var makeBrowserRunner = async ({
3234
3243
  timeout
3235
3244
  }) => {
3236
3245
  const dumpio = isEqualOrBelowLogLevel(logLevel, "verbose");
3237
- const stdio = dumpio ? ["ignore", "pipe", "pipe"] : ["pipe", "ignore", "pipe"];
3246
+ const stdio = dumpio ? ["ignore", "pipe", "pipe"] : ["pipe", "pipe", "pipe"];
3238
3247
  const proc = childProcess.spawn(executablePath, processArguments, {
3239
3248
  detached: process.platform !== "win32",
3240
3249
  env: process.env,
@@ -3368,13 +3377,17 @@ function waitForWSEndpoint({
3368
3377
  indent
3369
3378
  }) {
3370
3379
  const browserStderr = browserProcess.stderr;
3380
+ const browserStdout = browserProcess.stdout;
3371
3381
  assert(browserStderr, "`browserProcess` does not have stderr.");
3372
- let stderrString = "";
3382
+ assert(browserStdout, "`browserProcess` does not have stdout.");
3383
+ let stdioString = "";
3373
3384
  return new Promise((resolve, reject) => {
3374
- browserStderr.addListener("data", onData);
3385
+ browserStderr.addListener("data", onStdIoData);
3386
+ browserStdout.addListener("data", onStdIoData);
3375
3387
  browserStderr.addListener("close", onClose);
3376
3388
  const listeners = [
3377
- () => browserStderr.removeListener("data", onData),
3389
+ () => browserStderr.removeListener("data", onStdIoData),
3390
+ () => browserStdout.removeListener("data", onStdIoData),
3378
3391
  () => browserStderr.removeListener("close", onClose),
3379
3392
  addEventListener(browserProcess, "exit", (code, signal) => {
3380
3393
  Log.verbose({ indent, logLevel }, "Browser process exited with code", code, "signal", signal);
@@ -3390,18 +3403,18 @@ function waitForWSEndpoint({
3390
3403
  reject(new Error([
3391
3404
  "Failed to launch the browser process!",
3392
3405
  error ? error.stack : null,
3393
- stderrString,
3406
+ stdioString,
3394
3407
  "Troubleshooting: https://remotion.dev/docs/troubleshooting/browser-launch"
3395
3408
  ].filter(truthy).join(`
3396
3409
  `)));
3397
3410
  }
3398
3411
  function onTimeout() {
3399
3412
  cleanup();
3400
- reject(new TimeoutError(`Timed out after ${timeout} ms while trying to connect to the browser! Chrome logged the following: ${stderrString}`));
3413
+ reject(new TimeoutError(`Timed out after ${timeout} ms while trying to connect to the browser! Chrome logged the following: ${stdioString}`));
3401
3414
  }
3402
- function onData(data) {
3403
- stderrString += data.toString("utf8");
3404
- const match = stderrString.match(/DevTools listening on (ws:\/\/.*)/);
3415
+ function onStdIoData(data) {
3416
+ stdioString += data.toString("utf8");
3417
+ const match = stdioString.match(/DevTools listening on (ws:\/\/.*)/);
3405
3418
  if (!match) {
3406
3419
  return;
3407
3420
  }
@@ -4634,9 +4647,9 @@ var launchChrome = async ({
4634
4647
  defaultViewport,
4635
4648
  indent,
4636
4649
  logLevel,
4637
- userDataDir
4650
+ userDataDir,
4651
+ timeout
4638
4652
  }) => {
4639
- const timeout = 60000;
4640
4653
  const browser = await HeadlessBrowser.create({
4641
4654
  defaultViewport,
4642
4655
  args,
@@ -5090,6 +5103,7 @@ var internalOpenBrowser = async ({
5090
5103
  if (browser === "firefox") {
5091
5104
  throw new TypeError("Firefox supported is not yet turned on. Stay tuned for the future.");
5092
5105
  }
5106
+ Log.verbose({ indent, logLevel }, "Ensuring browser executable");
5093
5107
  await internalEnsureBrowser({
5094
5108
  browserExecutable,
5095
5109
  logLevel,
@@ -5097,6 +5111,7 @@ var internalOpenBrowser = async ({
5097
5111
  onBrowserDownload,
5098
5112
  chromeMode
5099
5113
  });
5114
+ Log.verbose({ indent, logLevel }, "Ensured browser is available.");
5100
5115
  const executablePath = getLocalBrowserExecutable({
5101
5116
  preferredBrowserExecutable: browserExecutable,
5102
5117
  logLevel,
@@ -5107,7 +5122,7 @@ var internalOpenBrowser = async ({
5107
5122
  const enableMultiProcessOnLinux = chromiumOptions.enableMultiProcessOnLinux ?? true;
5108
5123
  Log.verbose({ indent, logLevel, tag: "openBrowser()" }, `Opening browser: gl = ${chromiumOptions.gl}, executable = ${executablePath}, enableMultiProcessOnLinux = ${enableMultiProcessOnLinux}`);
5109
5124
  if (chromiumOptions.userAgent) {
5110
- Log.verbose({ indent, logLevel: "verbose", tag: "openBrowser()" }, `Using custom user agent: ${chromiumOptions.userAgent}`);
5125
+ Log.verbose({ indent, logLevel, tag: "openBrowser()" }, `Using custom user agent: ${chromiumOptions.userAgent}`);
5111
5126
  }
5112
5127
  const userDataDir = await fs9.promises.mkdtemp(path9.join(os3.tmpdir(), "puppeteer_dev_chrome_profile-"));
5113
5128
  const browserInstance = await launchChrome({
@@ -5115,6 +5130,7 @@ var internalOpenBrowser = async ({
5115
5130
  logLevel,
5116
5131
  indent,
5117
5132
  userDataDir,
5133
+ timeout: 25000,
5118
5134
  args: [
5119
5135
  "about:blank",
5120
5136
  "--allow-pre-commit-input",
@@ -55,6 +55,7 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
55
55
  if (browser === 'firefox') {
56
56
  throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
57
57
  }
58
+ logger_1.Log.verbose({ indent, logLevel }, 'Ensuring browser executable');
58
59
  await (0, ensure_browser_1.internalEnsureBrowser)({
59
60
  browserExecutable,
60
61
  logLevel,
@@ -62,6 +63,7 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
62
63
  onBrowserDownload,
63
64
  chromeMode,
64
65
  });
66
+ logger_1.Log.verbose({ indent, logLevel }, 'Ensured browser is available.');
65
67
  const executablePath = (0, get_local_browser_executable_1.getLocalBrowserExecutable)({
66
68
  preferredBrowserExecutable: browserExecutable,
67
69
  logLevel,
@@ -72,7 +74,7 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
72
74
  const enableMultiProcessOnLinux = (_b = chromiumOptions.enableMultiProcessOnLinux) !== null && _b !== void 0 ? _b : true;
73
75
  logger_1.Log.verbose({ indent, logLevel, tag: 'openBrowser()' }, `Opening browser: gl = ${chromiumOptions.gl}, executable = ${executablePath}, enableMultiProcessOnLinux = ${enableMultiProcessOnLinux}`);
74
76
  if (chromiumOptions.userAgent) {
75
- logger_1.Log.verbose({ indent, logLevel: 'verbose', tag: 'openBrowser()' }, `Using custom user agent: ${chromiumOptions.userAgent}`);
77
+ logger_1.Log.verbose({ indent, logLevel, tag: 'openBrowser()' }, `Using custom user agent: ${chromiumOptions.userAgent}`);
76
78
  }
77
79
  const userDataDir = await node_fs_1.default.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), 'puppeteer_dev_chrome_profile-'));
78
80
  const browserInstance = await (0, Launcher_1.launchChrome)({
@@ -80,6 +82,7 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
80
82
  logLevel,
81
83
  indent,
82
84
  userDataDir,
85
+ timeout: 25000,
83
86
  args: [
84
87
  'about:blank',
85
88
  '--allow-pre-commit-input',
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/renderer"
4
4
  },
5
5
  "name": "@remotion/renderer",
6
- "version": "4.0.290",
6
+ "version": "4.0.291",
7
7
  "description": "Render Remotion videos using Node.js or Bun",
8
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
@@ -18,8 +18,8 @@
18
18
  "extract-zip": "2.0.1",
19
19
  "source-map": "^0.8.0-beta.0",
20
20
  "ws": "8.17.1",
21
- "remotion": "4.0.290",
22
- "@remotion/streaming": "4.0.290"
21
+ "remotion": "4.0.291",
22
+ "@remotion/streaming": "4.0.291"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "react": ">=16.8.0",
@@ -33,17 +33,17 @@
33
33
  "react-dom": "19.0.0",
34
34
  "@types/ws": "8.5.10",
35
35
  "eslint": "9.19.0",
36
- "@remotion/example-videos": "4.0.290",
37
- "@remotion/eslint-config-internal": "4.0.290"
36
+ "@remotion/example-videos": "4.0.291",
37
+ "@remotion/eslint-config-internal": "4.0.291"
38
38
  },
39
39
  "optionalDependencies": {
40
- "@remotion/compositor-darwin-x64": "4.0.290",
41
- "@remotion/compositor-darwin-arm64": "4.0.290",
42
- "@remotion/compositor-linux-arm64-gnu": "4.0.290",
43
- "@remotion/compositor-linux-x64-musl": "4.0.290",
44
- "@remotion/compositor-linux-arm64-musl": "4.0.290",
45
- "@remotion/compositor-linux-x64-gnu": "4.0.290",
46
- "@remotion/compositor-win32-x64-msvc": "4.0.290"
40
+ "@remotion/compositor-darwin-arm64": "4.0.291",
41
+ "@remotion/compositor-darwin-x64": "4.0.291",
42
+ "@remotion/compositor-linux-arm64-musl": "4.0.291",
43
+ "@remotion/compositor-linux-arm64-gnu": "4.0.291",
44
+ "@remotion/compositor-linux-x64-gnu": "4.0.291",
45
+ "@remotion/compositor-linux-x64-musl": "4.0.291",
46
+ "@remotion/compositor-win32-x64-msvc": "4.0.291"
47
47
  },
48
48
  "keywords": [
49
49
  "remotion",