@remotion/renderer 4.1.0-alpha1 → 4.1.0-alpha11

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.
Files changed (93) hide show
  1. package/dist/assets/download-and-map-assets-to-file.d.ts +2 -4
  2. package/dist/assets/download-and-map-assets-to-file.js +14 -10
  3. package/dist/assets/download-map.d.ts +4 -0
  4. package/dist/assets/download-map.js +3 -0
  5. package/dist/audio-codec.d.ts +1 -1
  6. package/dist/browser/Browser.d.ts +7 -6
  7. package/dist/browser/Browser.js +13 -13
  8. package/dist/browser/BrowserPage.d.ts +21 -6
  9. package/dist/browser/BrowserPage.js +80 -19
  10. package/dist/browser/BrowserRunner.d.ts +0 -1
  11. package/dist/browser/BrowserRunner.js +6 -6
  12. package/dist/browser/Connection.d.ts +9 -3
  13. package/dist/browser/Connection.js +11 -3
  14. package/dist/browser/ConsoleMessage.d.ts +8 -1
  15. package/dist/browser/ConsoleMessage.js +2 -1
  16. package/dist/browser/DOMWorld.d.ts +10 -4
  17. package/dist/browser/DOMWorld.js +16 -15
  18. package/dist/browser/ExecutionContext.js +4 -4
  19. package/dist/browser/FrameManager.d.ts +3 -6
  20. package/dist/browser/FrameManager.js +11 -16
  21. package/dist/browser/LaunchOptions.d.ts +2 -0
  22. package/dist/browser/Launcher.js +3 -3
  23. package/dist/browser/NetworkManager.d.ts +4 -1
  24. package/dist/browser/Target.d.ts +2 -1
  25. package/dist/browser/Target.js +3 -1
  26. package/dist/browser/create-browser-fetcher.js +19 -24
  27. package/dist/browser/devtools-types.d.ts +59 -0
  28. package/dist/browser/should-log-message.js +14 -0
  29. package/dist/chalk/index.d.ts +2 -1
  30. package/dist/chalk/index.js +3 -8
  31. package/dist/chalk/is-color-supported.d.ts +1 -1
  32. package/dist/chalk/is-color-supported.js +18 -10
  33. package/dist/client.d.ts +4 -9
  34. package/dist/combine-videos.js +5 -1
  35. package/dist/compositor/compose.js +6 -1
  36. package/dist/compositor/compositor.d.ts +3 -2
  37. package/dist/compositor/compositor.js +18 -14
  38. package/dist/compositor/payloads.d.ts +15 -1
  39. package/dist/create-ffmpeg-merge-filter.js +1 -2
  40. package/dist/cycle-browser-tabs.d.ts +2 -1
  41. package/dist/cycle-browser-tabs.js +2 -2
  42. package/dist/format-logs.d.ts +3 -0
  43. package/dist/format-logs.js +207 -0
  44. package/dist/get-browser-instance.d.ts +3 -2
  45. package/dist/get-browser-instance.js +5 -5
  46. package/dist/get-bundle-url-from-serve-url.d.ts +2 -0
  47. package/dist/get-bundle-url-from-serve-url.js +30 -0
  48. package/dist/get-compositions.d.ts +7 -6
  49. package/dist/get-compositions.js +21 -11
  50. package/dist/get-local-browser-executable.js +15 -0
  51. package/dist/get-video-metadata.d.ts +2 -0
  52. package/dist/get-video-metadata.js +14 -0
  53. package/dist/index.d.ts +45 -42
  54. package/dist/index.js +3 -1
  55. package/dist/logger.d.ts +2 -2
  56. package/dist/logger.js +23 -18
  57. package/dist/offthread-video-server.d.ts +3 -3
  58. package/dist/offthread-video-server.js +76 -31
  59. package/dist/open-browser.d.ts +3 -2
  60. package/dist/open-browser.js +7 -5
  61. package/dist/options/crf.js +1 -1
  62. package/dist/options/video-codec.js +1 -1
  63. package/dist/perf.js +4 -2
  64. package/dist/prepare-server.d.ts +4 -5
  65. package/dist/prepare-server.js +16 -14
  66. package/dist/prespawn-ffmpeg.d.ts +2 -1
  67. package/dist/prespawn-ffmpeg.js +3 -31
  68. package/dist/puppeteer-evaluate.d.ts +4 -1
  69. package/dist/puppeteer-evaluate.js +5 -5
  70. package/dist/render-frames.d.ts +16 -8
  71. package/dist/render-frames.js +50 -22
  72. package/dist/render-media.d.ts +17 -9
  73. package/dist/render-media.js +41 -26
  74. package/dist/render-still.d.ts +13 -6
  75. package/dist/render-still.js +32 -17
  76. package/dist/replace-browser.d.ts +2 -1
  77. package/dist/replace-browser.js +2 -2
  78. package/dist/screenshot-task.js +4 -2
  79. package/dist/seek-to-frame.d.ts +8 -2
  80. package/dist/seek-to-frame.js +87 -25
  81. package/dist/select-composition.d.ts +10 -5
  82. package/dist/select-composition.js +39 -18
  83. package/dist/serve-handler/index.js +1 -1
  84. package/dist/serve-static.d.ts +2 -3
  85. package/dist/serve-static.js +10 -4
  86. package/dist/set-props-and-env.d.ts +4 -1
  87. package/dist/set-props-and-env.js +52 -22
  88. package/dist/stitch-frames-to-video.d.ts +2 -1
  89. package/dist/stitch-frames-to-video.js +12 -22
  90. package/dist/symbolicate-stacktrace.d.ts +3 -2
  91. package/dist/symbolicate-stacktrace.js +20 -7
  92. package/dist/take-frame-and-compose.js +1 -1
  93. package/package.json +10 -10
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCompositions = exports.internalGetCompositions = void 0;
4
+ const remotion_1 = require("remotion");
4
5
  const TimeoutSettings_1 = require("./browser/TimeoutSettings");
5
6
  const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
6
7
  const find_closest_package_json_1 = require("./find-closest-package-json");
7
8
  const get_browser_instance_1 = require("./get-browser-instance");
9
+ const logger_1 = require("./logger");
8
10
  const prepare_server_1 = require("./prepare-server");
9
11
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
10
12
  const seek_to_frame_1 = require("./seek-to-frame");
11
13
  const set_props_and_env_1 = require("./set-props-and-env");
12
14
  const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
13
- const innerGetCompositions = async ({ envVariables, inputProps, onBrowserLog, page, proxyPort, serveUrl, timeoutInMilliseconds, }) => {
15
+ const innerGetCompositions = async ({ envVariables, serializedInputPropsWithCustomSchema, onBrowserLog, page, proxyPort, serveUrl, timeoutInMilliseconds, indent, logLevel, }) => {
14
16
  if (onBrowserLog) {
15
17
  page.on('console', (log) => {
16
18
  onBrowserLog({
@@ -22,7 +24,7 @@ const innerGetCompositions = async ({ envVariables, inputProps, onBrowserLog, pa
22
24
  }
23
25
  (0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
24
26
  await (0, set_props_and_env_1.setPropsAndEnv)({
25
- inputProps,
27
+ serializedInputPropsWithCustomSchema,
26
28
  envVariables,
27
29
  page,
28
30
  serveUrl,
@@ -32,6 +34,8 @@ const innerGetCompositions = async ({ envVariables, inputProps, onBrowserLog, pa
32
34
  retriesRemaining: 2,
33
35
  audioEnabled: false,
34
36
  videoEnabled: false,
37
+ indent,
38
+ logLevel,
35
39
  });
36
40
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
37
41
  page,
@@ -43,8 +47,8 @@ const innerGetCompositions = async ({ envVariables, inputProps, onBrowserLog, pa
43
47
  frame: null,
44
48
  args: [],
45
49
  });
46
- await (0, seek_to_frame_1.waitForReady)(page);
47
- const result = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
50
+ await (0, seek_to_frame_1.waitForReady)({ page, timeoutInMilliseconds, frame: null });
51
+ const { value: result } = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
48
52
  pageFunction: () => {
49
53
  return window.getStaticCompositions();
50
54
  },
@@ -54,7 +58,7 @@ const innerGetCompositions = async ({ envVariables, inputProps, onBrowserLog, pa
54
58
  });
55
59
  return result;
56
60
  };
57
- const internalGetCompositions = async ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds, verbose, }) => {
61
+ const internalGetCompositions = async ({ browserExecutable, chromiumOptions, envVariables, indent, serializedInputPropsWithCustomSchema, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds, logLevel, }) => {
58
62
  const { page, cleanup: cleanupPage } = await (0, get_browser_instance_1.getPageAndCleanupFn)({
59
63
  passedInInstance: puppeteerInstance,
60
64
  browserExecutable,
@@ -62,7 +66,7 @@ const internalGetCompositions = async ({ browserExecutable, chromiumOptions, env
62
66
  context: null,
63
67
  forceDeviceScaleFactor: undefined,
64
68
  indent,
65
- shouldDumpIo: verbose,
69
+ logLevel,
66
70
  });
67
71
  const cleanup = [cleanupPage];
68
72
  return new Promise((resolve, reject) => {
@@ -77,7 +81,7 @@ const internalGetCompositions = async ({ browserExecutable, chromiumOptions, env
77
81
  port,
78
82
  remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
79
83
  concurrency: 1,
80
- verbose,
84
+ logLevel,
81
85
  indent,
82
86
  }, {
83
87
  onDownload: () => undefined,
@@ -88,12 +92,14 @@ const internalGetCompositions = async ({ browserExecutable, chromiumOptions, env
88
92
  cleanup.push(() => cleanupServer(true));
89
93
  return innerGetCompositions({
90
94
  envVariables,
91
- inputProps,
95
+ serializedInputPropsWithCustomSchema,
92
96
  onBrowserLog,
93
97
  page,
94
98
  proxyPort: offthreadPort,
95
99
  serveUrl,
96
100
  timeoutInMilliseconds,
101
+ indent,
102
+ logLevel,
97
103
  });
98
104
  })
99
105
  .then((comp) => {
@@ -115,12 +121,16 @@ exports.internalGetCompositions = internalGetCompositions;
115
121
  * @see [Documentation](https://www.remotion.dev/docs/renderer/get-compositions)
116
122
  */
117
123
  const getCompositions = (serveUrlOrWebpackUrl, config) => {
118
- const { browserExecutable, chromiumOptions, envVariables, inputProps, onBrowserLog, port, puppeteerInstance, timeoutInMilliseconds, verbose, } = config !== null && config !== void 0 ? config : {};
124
+ const { browserExecutable, chromiumOptions, envVariables, inputProps, onBrowserLog, port, puppeteerInstance, timeoutInMilliseconds, logLevel, } = config !== null && config !== void 0 ? config : {};
119
125
  return (0, exports.internalGetCompositions)({
120
126
  browserExecutable: browserExecutable !== null && browserExecutable !== void 0 ? browserExecutable : null,
121
127
  chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
122
128
  envVariables: envVariables !== null && envVariables !== void 0 ? envVariables : {},
123
- inputProps: inputProps !== null && inputProps !== void 0 ? inputProps : {},
129
+ serializedInputPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
130
+ data: inputProps !== null && inputProps !== void 0 ? inputProps : {},
131
+ indent: undefined,
132
+ staticBase: null,
133
+ }).serializedString,
124
134
  indent: false,
125
135
  onBrowserLog: onBrowserLog !== null && onBrowserLog !== void 0 ? onBrowserLog : null,
126
136
  port: port !== null && port !== void 0 ? port : null,
@@ -128,7 +138,7 @@ const getCompositions = (serveUrlOrWebpackUrl, config) => {
128
138
  serveUrlOrWebpackUrl,
129
139
  server: undefined,
130
140
  timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT,
131
- verbose: verbose !== null && verbose !== void 0 ? verbose : false,
141
+ logLevel: logLevel !== null && logLevel !== void 0 ? logLevel : (0, logger_1.getLogLevel)(),
132
142
  });
133
143
  };
134
144
  exports.getCompositions = getCompositions;
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getLocalBrowserExecutable = exports.ensureLocalBrowser = void 0;
7
7
  const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_os_1 = __importDefault(require("node:os"));
8
9
  const BrowserFetcher_1 = require("./browser/BrowserFetcher");
9
10
  const create_browser_fetcher_1 = require("./browser/create-browser-fetcher");
10
11
  const revisions_1 = require("./browser/revisions");
@@ -28,6 +29,20 @@ const getSearchPathsForProduct = (product) => {
28
29
  process.platform === 'win32'
29
30
  ? 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
30
31
  : null,
32
+ process.platform === 'win32'
33
+ ? node_os_1.default.homedir() +
34
+ '\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe'
35
+ : null,
36
+ process.platform === 'win32'
37
+ ? 'C:\\Program Files\\Google\\Chrome SxS\\Application\\chrome.exe'
38
+ : null,
39
+ process.platform === 'win32'
40
+ ? 'C:\\Program Files (x86)\\Google\\Chrome SxS\\Application\\chrome.exe'
41
+ : null,
42
+ process.platform === 'win32'
43
+ ? node_os_1.default.homedir() +
44
+ '\\AppData\\Local\\Google\\Chrome SxS\\Application\\chrome.exe'
45
+ : null,
31
46
  ].filter(Boolean);
32
47
  }
33
48
  if (product === 'firefox') {
@@ -0,0 +1,2 @@
1
+ import type { VideoMetadata } from './compositor/payloads';
2
+ export declare const getVideoMetadata: (videoSource: string) => Promise<VideoMetadata>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getVideoMetadata = void 0;
4
+ const compositor_1 = require("./compositor/compositor");
5
+ const getVideoMetadata = async (videoSource) => {
6
+ const compositor = (0, compositor_1.startLongRunningCompositor)((0, compositor_1.getIdealMaximumFrameCacheItems)(), 'info', false);
7
+ const metadataResponse = await compositor.executeCommand('GetVideoMetadata', {
8
+ src: videoSource,
9
+ });
10
+ compositor.finishCommands();
11
+ await compositor.waitForDone();
12
+ return JSON.parse(metadataResponse.toString('utf-8'));
13
+ };
14
+ exports.getVideoMetadata = getVideoMetadata;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import execa from 'execa';
3
2
  import { HeadlessBrowser } from './browser/Browser';
4
3
  import { SymbolicateableError } from './error-handling/symbolicateable-error';
@@ -17,6 +16,7 @@ export type { FfmpegOverrideFn } from './ffmpeg-override';
17
16
  export { FileExtension } from './file-extensions';
18
17
  export { FrameRange } from './frame-range';
19
18
  export { getCompositions, GetCompositionsOptions } from './get-compositions';
19
+ export { getVideoMetadata } from './get-video-metadata';
20
20
  export { ImageFormat, StillImageFormat, validateSelectedPixelFormatAndImageFormatCombination, VideoImageFormat, } from './image-format';
21
21
  export type { LogLevel } from './log-level';
22
22
  export { CancelSignal, makeCancelSignal } from './make-cancel-signal';
@@ -43,13 +43,12 @@ export declare const RenderInternals: {
43
43
  downloadMap: import("./assets/download-map").DownloadMap;
44
44
  remotionRoot: string;
45
45
  concurrency: number;
46
- verbose: boolean;
46
+ logLevel: "verbose" | "info" | "warn" | "error";
47
47
  indent: boolean;
48
48
  }) => Promise<{
49
49
  port: number;
50
50
  close: () => Promise<void>;
51
51
  compositor: import("./compositor/compositor").Compositor;
52
- events: import("./offthread-video-server").OffthreadVideoServerEmitter;
53
52
  }>;
54
53
  validateEvenDimensionsWithCodec: ({ width, height, codec, scale, }: {
55
54
  width: number;
@@ -114,8 +113,8 @@ export declare const RenderInternals: {
114
113
  validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
115
114
  DEFAULT_BROWSER: import("./browser").Browser;
116
115
  validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
117
- DEFAULT_OPENGL_RENDERER: "angle" | "swangle" | "egl" | "swiftshader" | null;
118
- validateOpenGlRenderer: (option: "angle" | "swangle" | "egl" | "swiftshader" | null) => "angle" | "swangle" | "egl" | "swiftshader" | null;
116
+ DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | null;
117
+ validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | null) => "swangle" | "angle" | "egl" | "swiftshader" | null;
119
118
  validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
120
119
  DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
121
120
  validateJpegQuality: (q: number | undefined) => void;
@@ -123,7 +122,7 @@ export declare const RenderInternals: {
123
122
  DEFAULT_CODEC: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
124
123
  isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
125
124
  logLevels: readonly ["verbose", "info", "warn", "error"];
126
- isEqualOrBelowLogLevel: (currentLevel: "error" | "verbose" | "info" | "warn", level: "error" | "verbose" | "info" | "warn") => boolean;
125
+ isEqualOrBelowLogLevel: (currentLevel: "verbose" | "info" | "warn" | "error", level: "verbose" | "info" | "warn" | "error") => boolean;
127
126
  isValidLogLevel: (level: string) => boolean;
128
127
  perf: typeof perf;
129
128
  convertToPositiveFrameIndex: ({ frame, durationInFrames, }: {
@@ -262,19 +261,14 @@ export declare const RenderInternals: {
262
261
  };
263
262
  gif: {
264
263
  default: import("./file-extensions").FileExtension;
265
- forAudioCodec: {
266
- [x: string]: {
267
- possible: import("./file-extensions").FileExtension[];
268
- default: import("./file-extensions").FileExtension;
269
- };
270
- };
264
+ forAudioCodec: {};
271
265
  };
272
266
  };
273
267
  supportedAudioCodecs: {
274
268
  readonly h264: readonly ["aac", "pcm-16"];
275
269
  readonly 'h264-mkv': readonly ["pcm-16"];
276
270
  readonly aac: readonly ["aac", "pcm-16"];
277
- readonly gif: const[];
271
+ readonly gif: readonly [];
278
272
  readonly h265: readonly ["aac", "pcm-16"];
279
273
  readonly mp3: readonly ["mp3", "pcm-16"];
280
274
  readonly prores: readonly ["aac", "pcm-16"];
@@ -300,11 +294,11 @@ export declare const RenderInternals: {
300
294
  };
301
295
  validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
302
296
  validVideoImageFormats: readonly ["png", "jpeg", "none"];
303
- DEFAULT_STILL_IMAGE_FORMAT: "jpeg" | "png" | "webp" | "pdf";
304
- DEFAULT_VIDEO_IMAGE_FORMAT: "jpeg" | "png" | "none";
297
+ DEFAULT_STILL_IMAGE_FORMAT: "png" | "jpeg" | "pdf" | "webp";
298
+ DEFAULT_VIDEO_IMAGE_FORMAT: "none" | "png" | "jpeg";
305
299
  DEFAULT_JPEG_QUALITY: number;
306
300
  chalk: {
307
- enabled: boolean;
301
+ enabled: () => boolean;
308
302
  visible: boolean;
309
303
  styles: Record<string, {
310
304
  codes: [number, number];
@@ -328,6 +322,7 @@ export declare const RenderInternals: {
328
322
  yellow: (str: string) => string;
329
323
  blue: (str: string) => string;
330
324
  magenta: (str: string) => string;
325
+ cyan: (str: string) => string;
331
326
  white: (str: string) => string;
332
327
  gray: (str: string) => string;
333
328
  bgBlack: (str: string) => string;
@@ -356,34 +351,39 @@ export declare const RenderInternals: {
356
351
  verbose: (message?: any, ...optionalParams: any[]) => void;
357
352
  verboseAdvanced: (options: {
358
353
  indent: boolean;
359
- logLevel: "error" | "verbose" | "info" | "warn";
354
+ logLevel: "verbose" | "info" | "warn" | "error";
360
355
  } & {
361
356
  tag?: string | undefined;
362
- secondTag?: string | undefined;
363
357
  }, message?: any, ...optionalParams: any[]) => void;
364
358
  info: (message?: any, ...optionalParams: any[]) => void;
365
359
  infoAdvanced: (options: {
366
360
  indent: boolean;
367
- logLevel: "error" | "verbose" | "info" | "warn";
361
+ logLevel: "verbose" | "info" | "warn" | "error";
368
362
  }, message?: any, ...optionalParams: any[]) => void;
369
363
  warn: (message?: any, ...optionalParams: any[]) => void;
370
364
  warnAdvanced: (options: {
371
365
  indent: boolean;
372
- logLevel: "error" | "verbose" | "info" | "warn";
366
+ logLevel: "verbose" | "info" | "warn" | "error";
373
367
  }, message?: any, ...optionalParams: any[]) => void;
374
368
  error: (message?: any, ...optionalParams: any[]) => void;
369
+ errorAdvanced: (options: {
370
+ indent: boolean;
371
+ logLevel: "verbose" | "info" | "warn" | "error";
372
+ } & {
373
+ tag?: string | undefined;
374
+ }, message?: any, ...optionalParams: any[]) => void;
375
375
  };
376
- getLogLevel: () => "error" | "verbose" | "info" | "warn";
377
- setLogLevel: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
376
+ getLogLevel: () => "verbose" | "info" | "warn" | "error";
377
+ setLogLevel: (newLogLevel: "verbose" | "info" | "warn" | "error") => void;
378
378
  INDENT_TOKEN: string;
379
- isColorSupported: boolean;
379
+ isColorSupported: () => boolean;
380
380
  HeadlessBrowser: typeof HeadlessBrowser;
381
- prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, verbose, indent, }: {
381
+ prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, logLevel, indent, }: {
382
382
  webpackConfigOrServeUrl: string;
383
383
  port: number | null;
384
384
  remotionRoot: string;
385
385
  concurrency: number;
386
- verbose: boolean;
386
+ logLevel: "verbose" | "info" | "warn" | "error";
387
387
  indent: boolean;
388
388
  }) => Promise<import("./prepare-server").RemotionServer>;
389
389
  makeOrReuseServer: (server: import("./prepare-server").RemotionServer | undefined, config: {
@@ -391,7 +391,7 @@ export declare const RenderInternals: {
391
391
  port: number | null;
392
392
  remotionRoot: string;
393
393
  concurrency: number;
394
- verbose: boolean;
394
+ logLevel: "verbose" | "info" | "warn" | "error";
395
395
  indent: boolean;
396
396
  }, { onDownload, onError, }: {
397
397
  onError: (err: Error) => void;
@@ -401,14 +401,14 @@ export declare const RenderInternals: {
401
401
  cleanupServer: (force: boolean) => Promise<unknown>;
402
402
  }>;
403
403
  internalRenderStill: (options: {
404
- composition: import("remotion").AnySmallCompMetadata;
404
+ composition: import("remotion").VideoConfig;
405
405
  output: string | null;
406
406
  frame: number;
407
- inputProps: Record<string, unknown>;
408
- imageFormat: "jpeg" | "png" | "webp" | "pdf";
407
+ serializedInputPropsWithCustomSchema: string;
408
+ serializedResolvedPropsWithCustomSchema: string;
409
+ imageFormat: "png" | "jpeg" | "pdf" | "webp";
409
410
  jpegQuality: number;
410
411
  puppeteerInstance: HeadlessBrowser | null;
411
- dumpBrowserLogs: boolean;
412
412
  envVariables: Record<string, string>;
413
413
  overwrite: boolean;
414
414
  browserExecutable: import("./browser-executable").BrowserExecutable;
@@ -420,23 +420,23 @@ export declare const RenderInternals: {
420
420
  cancelSignal: import("./make-cancel-signal").CancelSignal | null;
421
421
  indent: boolean;
422
422
  server: import("./prepare-server").RemotionServer | undefined;
423
- verbose: boolean;
423
+ logLevel: "verbose" | "info" | "warn" | "error";
424
424
  serveUrl: string;
425
425
  port: number | null;
426
426
  }) => Promise<{
427
427
  buffer: Buffer | null;
428
428
  }>;
429
- internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, shouldDumpIo, viewport, }: {
430
- shouldDumpIo: boolean;
429
+ internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, }: {
431
430
  browserExecutable: string | null;
432
431
  chromiumOptions: import("./open-browser").ChromiumOptions;
433
432
  forceDeviceScaleFactor: number | undefined;
434
433
  viewport: import("./browser/PuppeteerViewport").Viewport | null;
435
434
  indent: boolean;
436
435
  browser: import("./browser").Browser;
436
+ logLevel: "verbose" | "info" | "warn" | "error";
437
437
  }) => Promise<HeadlessBrowser>;
438
438
  internalSelectComposition: (options: {
439
- inputProps: Record<string, unknown>;
439
+ serializedInputPropsWithCustomSchema: string;
440
440
  envVariables: Record<string, string>;
441
441
  puppeteerInstance: HeadlessBrowser | undefined;
442
442
  onBrowserLog: ((log: import("./browser-log").BrowserLog) => void) | null;
@@ -446,12 +446,15 @@ export declare const RenderInternals: {
446
446
  port: number | null;
447
447
  indent: boolean;
448
448
  server: import("./prepare-server").RemotionServer | undefined;
449
- verbose: boolean;
449
+ logLevel: "verbose" | "info" | "warn" | "error";
450
450
  serveUrl: string;
451
451
  id: string;
452
- }) => Promise<import("remotion").AnyCompMetadata>;
453
- internalGetCompositions: ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds, verbose, }: {
454
- inputProps: Record<string, unknown>;
452
+ }) => Promise<{
453
+ metadata: import("remotion").VideoConfig;
454
+ propsSize: number;
455
+ }>;
456
+ internalGetCompositions: ({ browserExecutable, chromiumOptions, envVariables, indent, serializedInputPropsWithCustomSchema, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds, logLevel, }: {
457
+ serializedInputPropsWithCustomSchema: string;
455
458
  envVariables: Record<string, string>;
456
459
  puppeteerInstance: HeadlessBrowser | undefined;
457
460
  onBrowserLog: ((log: import("./browser-log").BrowserLog) => void) | null;
@@ -461,11 +464,11 @@ export declare const RenderInternals: {
461
464
  port: number | null;
462
465
  server: import("./prepare-server").RemotionServer | undefined;
463
466
  indent: boolean;
464
- verbose: boolean;
467
+ logLevel: "verbose" | "info" | "warn" | "error";
465
468
  serveUrlOrWebpackUrl: string;
466
- }) => Promise<import("remotion").AnyCompMetadata[]>;
467
- internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, dumpBrowserLogs, envVariables, everyNthFrame, frameRange, imageFormat, indent, inputProps, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, verbose, webpackBundleOrServeUrl, }: import("./render-frames").InternalRenderFramesOptions) => Promise<import("./types").RenderFramesOutput>;
468
- internalRenderMedia: ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, verbose, }: import("./render-media").InternalRenderMediaOptions) => Promise<{
469
+ }) => Promise<import("remotion").VideoConfig[]>;
470
+ internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, envVariables, everyNthFrame, frameRange, imageFormat, indent, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, logLevel, webpackBundleOrServeUrl, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, }: import("./render-frames").InternalRenderFramesOptions) => Promise<import("./types").RenderFramesOutput>;
471
+ internalRenderMedia: ({ proResProfile, crf, composition, serializedInputPropsWithCustomSchema, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, logLevel, serializedResolvedPropsWithCustomSchema, }: import("./render-media").InternalRenderMediaOptions) => Promise<{
469
472
  buffer: Buffer | null;
470
473
  slowestFrames: import("./render-media").SlowFrame[];
471
474
  }>;
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.RenderInternals = exports.validateOutputFilename = exports.stitchFramesToVideo = exports.selectComposition = exports.renderStill = exports.renderMedia = exports.renderFrames = exports.openBrowser = exports.makeCancelSignal = exports.validateSelectedPixelFormatAndImageFormatCombination = exports.getCompositions = exports.ErrorWithStackFrame = void 0;
29
+ exports.RenderInternals = exports.validateOutputFilename = exports.stitchFramesToVideo = exports.selectComposition = exports.renderStill = exports.renderMedia = exports.renderFrames = exports.openBrowser = exports.makeCancelSignal = exports.validateSelectedPixelFormatAndImageFormatCombination = exports.getVideoMetadata = exports.getCompositions = exports.ErrorWithStackFrame = void 0;
30
30
  const execa_1 = __importDefault(require("execa"));
31
31
  const download_file_1 = require("./assets/download-file");
32
32
  const audio_codec_1 = require("./audio-codec");
@@ -86,6 +86,8 @@ var handle_javascript_exception_1 = require("./error-handling/handle-javascript-
86
86
  Object.defineProperty(exports, "ErrorWithStackFrame", { enumerable: true, get: function () { return handle_javascript_exception_1.ErrorWithStackFrame; } });
87
87
  var get_compositions_2 = require("./get-compositions");
88
88
  Object.defineProperty(exports, "getCompositions", { enumerable: true, get: function () { return get_compositions_2.getCompositions; } });
89
+ var get_video_metadata_1 = require("./get-video-metadata");
90
+ Object.defineProperty(exports, "getVideoMetadata", { enumerable: true, get: function () { return get_video_metadata_1.getVideoMetadata; } });
89
91
  var image_format_2 = require("./image-format");
90
92
  Object.defineProperty(exports, "validateSelectedPixelFormatAndImageFormatCombination", { enumerable: true, get: function () { return image_format_2.validateSelectedPixelFormatAndImageFormatCombination; } });
91
93
  var make_cancel_signal_1 = require("./make-cancel-signal");
package/dist/logger.d.ts CHANGED
@@ -6,7 +6,6 @@ type LogOptions = {
6
6
  };
7
7
  type VerboseLogOptions = LogOptions & {
8
8
  tag?: string;
9
- secondTag?: string;
10
9
  };
11
10
  export declare const verboseTag: (str: string) => string;
12
11
  export declare const secondverboseTag: (str: string) => string;
@@ -18,7 +17,8 @@ export declare const Log: {
18
17
  warn: (message?: any, ...optionalParams: any[]) => void;
19
18
  warnAdvanced: (options: LogOptions, message?: any, ...optionalParams: any[]) => void;
20
19
  error: (message?: any, ...optionalParams: any[]) => void;
20
+ errorAdvanced: (options: VerboseLogOptions, message?: any, ...optionalParams: any[]) => void;
21
21
  };
22
- export declare const getLogLevel: () => "error" | "verbose" | "info" | "warn";
22
+ export declare const getLogLevel: () => "verbose" | "info" | "warn" | "error";
23
23
  export declare const setLogLevel: (newLogLevel: LogLevel) => void;
24
24
  export {};
package/dist/logger.js CHANGED
@@ -7,11 +7,11 @@ const log_level_1 = require("./log-level");
7
7
  const truthy_1 = require("./truthy");
8
8
  exports.INDENT_TOKEN = chalk_1.chalk.gray('│');
9
9
  const verboseTag = (str) => {
10
- return is_color_supported_1.isColorSupported ? chalk_1.chalk.bgBlack(` ${str} `) : `[${str}]`;
10
+ return (0, is_color_supported_1.isColorSupported)() ? chalk_1.chalk.bgBlack(` ${str} `) : `[${str}]`;
11
11
  };
12
12
  exports.verboseTag = verboseTag;
13
13
  const secondverboseTag = (str) => {
14
- return is_color_supported_1.isColorSupported ? chalk_1.chalk.bgWhite(` ${str} `) : `[${str}]`;
14
+ return (0, is_color_supported_1.isColorSupported)() ? chalk_1.chalk.bgWhite(` ${str} `) : `[${str}]`;
15
15
  };
16
16
  exports.secondverboseTag = secondverboseTag;
17
17
  exports.Log = {
@@ -22,33 +22,28 @@ exports.Log = {
22
22
  if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'verbose')) {
23
23
  return console.log(...[
24
24
  options.indent ? exports.INDENT_TOKEN : null,
25
- [
26
- options.tag ? (0, exports.verboseTag)(options.tag) : null,
27
- options.secondTag ? (0, exports.secondverboseTag)(options.secondTag) : null,
28
- ]
29
- .filter(truthy_1.truthy)
30
- .join(''),
31
- ...args.map((a) => chalk_1.chalk.gray(a)),
32
- ].filter(truthy_1.truthy));
25
+ options.tag ? (0, exports.verboseTag)(options.tag) : null,
26
+ ]
27
+ .filter(truthy_1.truthy)
28
+ .concat(args.map((a) => chalk_1.chalk.gray(a))));
33
29
  }
34
30
  },
35
31
  info: (...args) => {
36
32
  exports.Log.infoAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
37
33
  },
38
34
  infoAdvanced: (options, ...args) => {
39
- if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'info')) {
40
- return console.log(...[options.indent ? exports.INDENT_TOKEN : null, ...args].filter(truthy_1.truthy));
41
- }
35
+ return console.log(...[options.indent ? exports.INDENT_TOKEN : null].filter(truthy_1.truthy).concat(args));
42
36
  },
43
37
  warn: (...args) => {
44
- exports.Log.warnAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
38
+ if ((0, log_level_1.isEqualOrBelowLogLevel)((0, exports.getLogLevel)(), 'warn')) {
39
+ exports.Log.warnAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
40
+ }
45
41
  },
46
42
  warnAdvanced: (options, ...args) => {
47
43
  if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'warn')) {
48
- return console.warn(...[
49
- options.indent ? chalk_1.chalk.yellow(exports.INDENT_TOKEN) : null,
50
- ...args.map((a) => chalk_1.chalk.yellow(a)),
51
- ].filter(truthy_1.truthy));
44
+ return console.warn(...[options.indent ? chalk_1.chalk.yellow(exports.INDENT_TOKEN) : null]
45
+ .filter(truthy_1.truthy)
46
+ .concat(args.map((a) => chalk_1.chalk.yellow(a))));
52
47
  }
53
48
  },
54
49
  error: (...args) => {
@@ -56,6 +51,16 @@ exports.Log = {
56
51
  return console.error(...args.map((a) => chalk_1.chalk.red(a)));
57
52
  }
58
53
  },
54
+ errorAdvanced: (options, ...args) => {
55
+ if ((0, log_level_1.isEqualOrBelowLogLevel)((0, exports.getLogLevel)(), 'error')) {
56
+ return console.log(...[
57
+ options.indent ? exports.INDENT_TOKEN : null,
58
+ options.tag ? (0, exports.verboseTag)(options.tag) : null,
59
+ ]
60
+ .filter(truthy_1.truthy)
61
+ .concat(args.map((a) => chalk_1.chalk.red(a))));
62
+ }
63
+ },
59
64
  };
60
65
  let logLevel = 'info';
61
66
  const getLogLevel = () => {
@@ -1,21 +1,21 @@
1
1
  import type { RequestListener } from 'node:http';
2
2
  import type { DownloadMap } from './assets/download-map';
3
3
  import type { Compositor } from './compositor/compositor';
4
+ import type { LogLevel } from './log-level';
4
5
  export declare const extractUrlAndSourceFromUrl: (url: string) => {
5
6
  src: string;
6
7
  time: number;
7
8
  transparent: boolean;
8
9
  };
9
- export declare const startOffthreadVideoServer: ({ downloadMap, concurrency, verbose, indent, }: {
10
+ export declare const startOffthreadVideoServer: ({ downloadMap, concurrency, logLevel, indent, }: {
10
11
  downloadMap: DownloadMap;
11
12
  concurrency: number;
12
- verbose: boolean;
13
+ logLevel: LogLevel;
13
14
  indent: boolean;
14
15
  }) => {
15
16
  listener: RequestListener;
16
17
  close: () => Promise<void>;
17
18
  compositor: Compositor;
18
- events: OffthreadVideoServerEmitter;
19
19
  };
20
20
  type DownloadEventPayload = {
21
21
  src: string;