@remotion/renderer 3.0.23 → 3.0.26

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 (333) hide show
  1. package/dist/abort.d.ts +7 -0
  2. package/dist/abort.js +20 -0
  3. package/dist/assets/download-and-map-assets-to-file.d.ts +21 -8
  4. package/dist/assets/download-and-map-assets-to-file.js +68 -42
  5. package/dist/assets/download-file.d.ts +10 -5
  6. package/dist/assets/download-file.js +18 -5
  7. package/dist/assets/ffmpeg-volume-expression.d.ts +1 -2
  8. package/dist/assets/ffmpeg-volume-expression.js +2 -3
  9. package/dist/browser/Browser.d.ts +10 -159
  10. package/dist/browser/Browser.js +7 -191
  11. package/dist/browser/BrowserConnector.d.ts +1 -8
  12. package/dist/browser/BrowserConnector.js +0 -32
  13. package/dist/browser/BrowserFetcher.d.ts +1 -1
  14. package/dist/browser/BrowserFetcher.js +8 -10
  15. package/dist/browser/BrowserRunner.d.ts +2 -2
  16. package/dist/browser/BrowserRunner.js +1 -1
  17. package/dist/browser/Connection.d.ts +4 -11
  18. package/dist/browser/Connection.js +5 -25
  19. package/dist/browser/ConsoleMessage.d.ts +4 -28
  20. package/dist/browser/ConsoleMessage.js +5 -32
  21. package/dist/browser/DOMWorld.d.ts +9 -7
  22. package/dist/browser/DOMWorld.js +12 -20
  23. package/dist/browser/EvalTypes.d.ts +1 -1
  24. package/dist/browser/EventEmitter.d.ts +1 -48
  25. package/dist/browser/EventEmitter.js +0 -49
  26. package/dist/browser/ExecutionContext.d.ts +7 -8
  27. package/dist/browser/ExecutionContext.js +0 -16
  28. package/dist/browser/FrameManager.d.ts +12 -15
  29. package/dist/browser/FrameManager.js +5 -21
  30. package/dist/browser/HTTPRequest.d.ts +4 -18
  31. package/dist/browser/HTTPRequest.js +3 -48
  32. package/dist/browser/HTTPResponse.d.ts +2 -81
  33. package/dist/browser/HTTPResponse.js +3 -173
  34. package/dist/browser/JSHandle.d.ts +4 -5
  35. package/dist/browser/JSHandle.js +0 -3
  36. package/dist/browser/LaunchOptions.d.ts +2 -81
  37. package/dist/browser/Launcher.d.ts +2 -2
  38. package/dist/browser/Launcher.js +21 -119
  39. package/dist/browser/LifecycleWatcher.d.ts +4 -4
  40. package/dist/browser/LifecycleWatcher.js +4 -17
  41. package/dist/browser/NetworkEventManager.d.ts +2 -4
  42. package/dist/browser/NetworkEventManager.js +0 -47
  43. package/dist/browser/NetworkManager.d.ts +1 -3
  44. package/dist/browser/NetworkManager.js +6 -42
  45. package/dist/browser/NodeWebSocketTransport.d.ts +8 -2
  46. package/dist/browser/NodeWebSocketTransport.js +1 -1
  47. package/dist/browser/{page.d.ts → Page.d.ts} +12 -16
  48. package/dist/browser/{page.js → Page.js} +20 -14
  49. package/dist/browser/PuppeteerNode.d.ts +7 -59
  50. package/dist/browser/PuppeteerNode.js +4 -66
  51. package/dist/browser/Target.d.ts +4 -4
  52. package/dist/browser/Target.js +1 -1
  53. package/dist/browser/assert.d.ts +0 -20
  54. package/dist/browser/assert.js +0 -20
  55. package/dist/browser/create-browser-fetcher.d.ts +1 -1
  56. package/dist/browser/create-browser-fetcher.js +4 -25
  57. package/dist/browser/util.d.ts +5 -4
  58. package/dist/browser/util.js +11 -3
  59. package/dist/browser-log.d.ts +1 -1
  60. package/dist/calculate-sar-dar-pixels.d.ts +9 -0
  61. package/dist/calculate-sar-dar-pixels.js +19 -0
  62. package/dist/cancel.d.ts +7 -0
  63. package/dist/cancel.js +25 -0
  64. package/dist/ensure-faststart.d.ts +1 -0
  65. package/dist/ensure-faststart.js +14 -0
  66. package/dist/error-handling/handle-javascript-exception.d.ts +1 -1
  67. package/dist/error-handling/handle-javascript-exception.js +2 -2
  68. package/dist/extract-frame-from-video.d.ts +2 -2
  69. package/dist/extract-frame-from-video.js +26 -14
  70. package/dist/faststart/atom.d.ts +35 -0
  71. package/dist/faststart/atom.js +138 -0
  72. package/dist/faststart/index.d.ts +0 -0
  73. package/dist/faststart/index.js +1 -0
  74. package/dist/faststart/options.d.ts +6 -0
  75. package/dist/faststart/options.js +2 -0
  76. package/dist/faststart/qt-faststart.d.ts +18 -0
  77. package/dist/faststart/qt-faststart.js +66 -0
  78. package/dist/faststart/update-chunk-offsets.d.ts +10 -0
  79. package/dist/faststart/update-chunk-offsets.js +114 -0
  80. package/dist/faststart/util.d.ts +9 -0
  81. package/dist/faststart/util.js +34 -0
  82. package/dist/get-browser-instance.d.ts +2 -1
  83. package/dist/get-compositions.d.ts +1 -1
  84. package/dist/get-compositions.js +3 -3
  85. package/dist/get-local-browser-executable.js +7 -5
  86. package/dist/get-port.js +5 -14
  87. package/dist/get-video-info.d.ts +8 -0
  88. package/dist/get-video-info.js +50 -0
  89. package/dist/index.d.ts +14 -6
  90. package/dist/index.js +3 -0
  91. package/dist/last-frame-from-video-cache.d.ts +3 -1
  92. package/dist/offthread/index.d.ts +0 -0
  93. package/dist/offthread/index.js +1 -0
  94. package/dist/offthread-video-server.js +2 -6
  95. package/dist/open-browser.d.ts +4 -2
  96. package/dist/open-browser.js +8 -8
  97. package/dist/prepare-server.js +5 -2
  98. package/dist/provide-screenshot.d.ts +4 -3
  99. package/dist/provide-screenshot.js +0 -1
  100. package/dist/puppeteer-evaluate.d.ts +1 -1
  101. package/dist/puppeteer-evaluate.js +3 -3
  102. package/dist/puppeteer-screenshot.d.ts +4 -2
  103. package/dist/puppeteer-screenshot.js +2 -4
  104. package/dist/render-frames.d.ts +2 -2
  105. package/dist/render-frames.js +50 -47
  106. package/dist/render-gif.d.ts +2 -0
  107. package/dist/render-gif.js +242 -0
  108. package/dist/render-media.d.ts +4 -3
  109. package/dist/render-media.js +8 -3
  110. package/dist/render-still.d.ts +1 -1
  111. package/dist/screenshot-dom-element.d.ts +6 -6
  112. package/dist/screenshot-dom-element.js +3 -6
  113. package/dist/screenshot-task.d.ts +3 -1
  114. package/dist/screenshot-task.js +3 -5
  115. package/dist/seek-to-frame.d.ts +2 -2
  116. package/dist/seek-to-frame.js +2 -2
  117. package/dist/set-props-and-env.d.ts +1 -1
  118. package/dist/set-props-and-env.js +3 -0
  119. package/dist/should-use-vp9-decoder.d.ts +0 -0
  120. package/dist/should-use-vp9-decoder.js +1 -0
  121. package/dist/stitch-frames-to-gif.d.ts +8 -0
  122. package/dist/stitch-frames-to-gif.js +128 -0
  123. package/dist/stitch-frames-to-video.d.ts +4 -3
  124. package/dist/stitch-frames-to-video.js +31 -13
  125. package/dist/stringify-ffmpeg-filter.d.ts +1 -1
  126. package/dist/stringify-ffmpeg-filter.js +9 -7
  127. package/dist/validate-offthreadvideo-image-format.d.ts +1 -0
  128. package/dist/validate-offthreadvideo-image-format.js +15 -0
  129. package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
  130. package/dist/wait-for-symbolication-error-to-be-done.js +34 -0
  131. package/package.json +9 -5
  132. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  133. package/dist/assets/calculate-asset-positions.js.map +0 -1
  134. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  135. package/dist/assets/calculate-atempo.js.map +0 -1
  136. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  137. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  138. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  139. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  140. package/dist/assets/download-file.d.ts.map +0 -1
  141. package/dist/assets/download-file.js.map +0 -1
  142. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  143. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  144. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  145. package/dist/assets/flatten-volume-array.js.map +0 -1
  146. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  147. package/dist/assets/get-audio-channels.js.map +0 -1
  148. package/dist/assets/read-file.d.ts.map +0 -1
  149. package/dist/assets/read-file.js.map +0 -1
  150. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  151. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  152. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  153. package/dist/assets/sanitize-filename.js.map +0 -1
  154. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  155. package/dist/assets/sanitize-filepath.js.map +0 -1
  156. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  157. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  158. package/dist/assets/types.d.ts.map +0 -1
  159. package/dist/assets/types.js.map +0 -1
  160. package/dist/browser/Accessibility.d.ts +0 -175
  161. package/dist/browser/Accessibility.js +0 -423
  162. package/dist/browser/AriaQueryHandler.d.ts +0 -20
  163. package/dist/browser/AriaQueryHandler.js +0 -108
  164. package/dist/browser/Coverage.d.ts +0 -180
  165. package/dist/browser/Coverage.js +0 -371
  166. package/dist/browser/Debug.d.ts +0 -19
  167. package/dist/browser/Debug.js +0 -42
  168. package/dist/browser/DeviceDescriptors.d.ts +0 -40
  169. package/dist/browser/DeviceDescriptors.js +0 -1407
  170. package/dist/browser/FileChooser.d.ts +0 -56
  171. package/dist/browser/FileChooser.js +0 -86
  172. package/dist/browser/Input.d.ts +0 -355
  173. package/dist/browser/Input.js +0 -592
  174. package/dist/browser/NetworkConditions.d.ts +0 -26
  175. package/dist/browser/NetworkConditions.js +0 -33
  176. package/dist/browser/PDFOptions.d.ts +0 -165
  177. package/dist/browser/PDFOptions.js +0 -34
  178. package/dist/browser/PipeTransport.d.ts +0 -10
  179. package/dist/browser/PipeTransport.js +0 -86
  180. package/dist/browser/Puppeteer.d.ts +0 -35
  181. package/dist/browser/Puppeteer.js +0 -17
  182. package/dist/browser/QueryHandler.d.ts +0 -64
  183. package/dist/browser/QueryHandler.js +0 -183
  184. package/dist/browser/SecurityDetails.d.ts +0 -55
  185. package/dist/browser/SecurityDetails.js +0 -95
  186. package/dist/browser/Tracing.d.ts +0 -45
  187. package/dist/browser/Tracing.js +0 -136
  188. package/dist/browser/USKeyboardLayout.d.ts +0 -39
  189. package/dist/browser/USKeyboardLayout.js +0 -406
  190. package/dist/browser/WebWorker.d.ts +0 -96
  191. package/dist/browser/WebWorker.js +0 -122
  192. package/dist/browser/dialog.d.ts +0 -70
  193. package/dist/browser/dialog.js +0 -114
  194. package/dist/browser/fetch.d.ts +0 -16
  195. package/dist/browser/fetch.js +0 -46
  196. package/dist/browser/find-up.d.ts +0 -4
  197. package/dist/browser/find-up.js +0 -85
  198. package/dist/browser/pkg-dir.d.ts +0 -3
  199. package/dist/browser/pkg-dir.js +0 -13
  200. package/dist/browser-log.d.ts.map +0 -1
  201. package/dist/browser-log.js.map +0 -1
  202. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  203. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  204. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  205. package/dist/can-use-parallel-encoding.js.map +0 -1
  206. package/dist/chunk.d.ts.map +0 -1
  207. package/dist/chunk.js.map +0 -1
  208. package/dist/combine-videos.d.ts.map +0 -1
  209. package/dist/combine-videos.js.map +0 -1
  210. package/dist/convert-to-pcm.d.ts.map +0 -1
  211. package/dist/convert-to-pcm.js.map +0 -1
  212. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  213. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  214. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  215. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  216. package/dist/create-silent-audio.d.ts.map +0 -1
  217. package/dist/create-silent-audio.js.map +0 -1
  218. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  219. package/dist/cycle-browser-tabs.js.map +0 -1
  220. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  221. package/dist/delay-render-embedded-stack.js.map +0 -1
  222. package/dist/delete-directory.d.ts.map +0 -1
  223. package/dist/delete-directory.js.map +0 -1
  224. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  225. package/dist/ensure-frames-in-order.js.map +0 -1
  226. package/dist/ensure-output-directory.d.ts.map +0 -1
  227. package/dist/ensure-output-directory.js.map +0 -1
  228. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  229. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  230. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  231. package/dist/error-handling/symbolicate-error.js.map +0 -1
  232. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  233. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  234. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  235. package/dist/ffmpeg-filter-file.js.map +0 -1
  236. package/dist/ffmpeg-flags.d.ts.map +0 -1
  237. package/dist/ffmpeg-flags.js.map +0 -1
  238. package/dist/get-audio-codec-name.d.ts.map +0 -1
  239. package/dist/get-audio-codec-name.js.map +0 -1
  240. package/dist/get-browser-instance.d.ts.map +0 -1
  241. package/dist/get-browser-instance.js.map +0 -1
  242. package/dist/get-codec-name.d.ts.map +0 -1
  243. package/dist/get-codec-name.js.map +0 -1
  244. package/dist/get-compositions.d.ts.map +0 -1
  245. package/dist/get-compositions.js.map +0 -1
  246. package/dist/get-concurrency.d.ts.map +0 -1
  247. package/dist/get-concurrency.js.map +0 -1
  248. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  249. package/dist/get-duration-from-frame-range.js.map +0 -1
  250. package/dist/get-extension-from-codec.d.ts.map +0 -1
  251. package/dist/get-extension-from-codec.js.map +0 -1
  252. package/dist/get-frame-to-render.d.ts.map +0 -1
  253. package/dist/get-frame-to-render.js.map +0 -1
  254. package/dist/get-local-browser-executable.d.ts.map +0 -1
  255. package/dist/get-local-browser-executable.js.map +0 -1
  256. package/dist/get-port.d.ts.map +0 -1
  257. package/dist/get-port.js.map +0 -1
  258. package/dist/get-prores-profile-name.d.ts.map +0 -1
  259. package/dist/get-prores-profile-name.js.map +0 -1
  260. package/dist/image-format.d.ts.map +0 -1
  261. package/dist/image-format.js.map +0 -1
  262. package/dist/index.d.ts.map +0 -1
  263. package/dist/index.js.map +0 -1
  264. package/dist/is-serve-url.d.ts.map +0 -1
  265. package/dist/is-serve-url.js.map +0 -1
  266. package/dist/legacy-webpack-config.d.ts.map +0 -1
  267. package/dist/legacy-webpack-config.js.map +0 -1
  268. package/dist/make-assets-download-dir.d.ts.map +0 -1
  269. package/dist/make-assets-download-dir.js.map +0 -1
  270. package/dist/merge-audio-track.d.ts.map +0 -1
  271. package/dist/merge-audio-track.js.map +0 -1
  272. package/dist/normalize-serve-url.d.ts.map +0 -1
  273. package/dist/normalize-serve-url.js.map +0 -1
  274. package/dist/open-browser.d.ts.map +0 -1
  275. package/dist/open-browser.js.map +0 -1
  276. package/dist/p-limit.d.ts.map +0 -1
  277. package/dist/p-limit.js.map +0 -1
  278. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  279. package/dist/parse-browser-error-stack.js.map +0 -1
  280. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  281. package/dist/parse-ffmpeg-progress.js.map +0 -1
  282. package/dist/pool.d.ts.map +0 -1
  283. package/dist/pool.js.map +0 -1
  284. package/dist/prepare-server.d.ts.map +0 -1
  285. package/dist/prepare-server.js.map +0 -1
  286. package/dist/preprocess-audio-track.d.ts.map +0 -1
  287. package/dist/preprocess-audio-track.js.map +0 -1
  288. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  289. package/dist/prespawn-ffmpeg.js.map +0 -1
  290. package/dist/provide-screenshot.d.ts.map +0 -1
  291. package/dist/provide-screenshot.js.map +0 -1
  292. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  293. package/dist/puppeteer-evaluate.js.map +0 -1
  294. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  295. package/dist/puppeteer-screenshot.js.map +0 -1
  296. package/dist/render-frames.d.ts.map +0 -1
  297. package/dist/render-frames.js.map +0 -1
  298. package/dist/render-media.d.ts.map +0 -1
  299. package/dist/render-media.js.map +0 -1
  300. package/dist/render-still.d.ts.map +0 -1
  301. package/dist/render-still.js.map +0 -1
  302. package/dist/resolve-asset-src.d.ts.map +0 -1
  303. package/dist/resolve-asset-src.js.map +0 -1
  304. package/dist/sample-rate.d.ts.map +0 -1
  305. package/dist/sample-rate.js.map +0 -1
  306. package/dist/screenshot-dom-element.d.ts.map +0 -1
  307. package/dist/screenshot-dom-element.js.map +0 -1
  308. package/dist/screenshot-task.d.ts.map +0 -1
  309. package/dist/screenshot-task.js.map +0 -1
  310. package/dist/seek-to-frame.d.ts.map +0 -1
  311. package/dist/seek-to-frame.js.map +0 -1
  312. package/dist/serve-static.d.ts.map +0 -1
  313. package/dist/serve-static.js.map +0 -1
  314. package/dist/set-props-and-env.d.ts.map +0 -1
  315. package/dist/set-props-and-env.js.map +0 -1
  316. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  317. package/dist/stitch-frames-to-video.js.map +0 -1
  318. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  319. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  320. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  321. package/dist/symbolicate-stacktrace.js.map +0 -1
  322. package/dist/tmp-dir.d.ts.map +0 -1
  323. package/dist/tmp-dir.js.map +0 -1
  324. package/dist/types.d.ts.map +0 -1
  325. package/dist/types.js.map +0 -1
  326. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  327. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  328. package/dist/validate-ffmpeg.d.ts.map +0 -1
  329. package/dist/validate-ffmpeg.js.map +0 -1
  330. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  331. package/dist/validate-puppeteer-timeout.js.map +0 -1
  332. package/dist/validate-scale.d.ts.map +0 -1
  333. package/dist/validate-scale.js.map +0 -1
@@ -7,7 +7,6 @@ const provideScreenshot = ({ page, imageFormat, options, quality, }) => {
7
7
  page,
8
8
  opts: {
9
9
  path: options.output,
10
- selector: '#remotion-canvas',
11
10
  },
12
11
  imageFormat,
13
12
  quality,
@@ -1,4 +1,4 @@
1
- import type { Page } from 'puppeteer-core';
1
+ import type { Page } from './browser/Page';
2
2
  export declare function puppeteerEvaluateWithCatch<ReturnType>({ page, pageFunction, frame, args, }: {
3
3
  page: Page;
4
4
  pageFunction: Function | string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.puppeteerEvaluateWithCatch = void 0;
4
- const puppeteer_core_1 = require("puppeteer-core");
4
+ const JSHandle_1 = require("./browser/JSHandle");
5
5
  const symbolicateable_error_1 = require("./error-handling/symbolicateable-error");
6
6
  const parse_browser_error_stack_1 = require("./parse-browser-error-stack");
7
7
  const EVALUATION_SCRIPT_URL = '__puppeteer_evaluation_script__';
@@ -32,7 +32,7 @@ function isString(obj) {
32
32
  async function puppeteerEvaluateWithCatch({ page, pageFunction, frame, args, }) {
33
33
  var _a, _b, _c, _d, _e, _f, _g;
34
34
  const contextId = (await page.mainFrame().executionContext())._contextId;
35
- const client = page._client;
35
+ const client = page._client();
36
36
  const suffix = `//# sourceURL=${EVALUATION_SCRIPT_URL}`;
37
37
  if (isString(pageFunction)) {
38
38
  const expression = pageFunction;
@@ -139,7 +139,7 @@ function convertArgument(arg) {
139
139
  return { unserializableValue: '-Infinity' };
140
140
  if (Object.is(arg, NaN))
141
141
  return { unserializableValue: 'NaN' };
142
- const objectHandle = arg && arg instanceof puppeteer_core_1.JSHandle ? arg : null;
142
+ const objectHandle = arg && arg instanceof JSHandle_1.JSHandle ? arg : null;
143
143
  if (objectHandle) {
144
144
  if (objectHandle._disposed)
145
145
  throw new Error('JSHandle is disposed!');
@@ -1,2 +1,4 @@
1
- import type { Page, ScreenshotOptions } from 'puppeteer-core';
2
- export declare const screenshot: (page: Page, options?: ScreenshotOptions) => Promise<Buffer | string | void>;
1
+ /// <reference types="node" />
2
+ import type { Page } from './browser/Page';
3
+ import type { ScreenshotOptions } from './browser/ScreenshotOptions';
4
+ export declare const screenshot: (page: Page, options: ScreenshotOptions) => Promise<Buffer | string | void>;
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.screenshot = void 0;
27
27
  const assert = __importStar(require("assert"));
28
28
  const screenshot_task_1 = require("./screenshot-task");
29
- const screenshot = (page, options = {}) => {
29
+ const screenshot = (page, options) => {
30
30
  let screenshotType = null;
31
31
  // options.type takes precedence over inferring the type from options.path
32
32
  // because it may be a 0-length file with no extension created beforehand
@@ -58,7 +58,6 @@ const screenshot = (page, options = {}) => {
58
58
  assert.ok(options.quality >= 0 && options.quality <= 100, 'Expected options.quality to be between 0 and 100 (inclusive), got ' +
59
59
  options.quality);
60
60
  }
61
- assert.ok(!options.clip || !options.fullPage, 'options.clip and options.fullPage are exclusive');
62
61
  if (options.clip) {
63
62
  assert.ok(typeof options.clip.x === 'number', 'Expected options.clip.x to be a number but found ' +
64
63
  typeof options.clip.x);
@@ -71,7 +70,6 @@ const screenshot = (page, options = {}) => {
71
70
  assert.ok(options.clip.width !== 0, 'Expected options.clip.width not to be 0.');
72
71
  assert.ok(options.clip.height !== 0, 'Expected options.clip.height not to be 0.');
73
72
  }
74
- // @ts-expect-error
75
- return page._screenshotTaskQueue.postTask(() => (0, screenshot_task_1._screenshotTask)(page, screenshotType, options));
73
+ return page.screenshotTaskQueue.postTask(() => (0, screenshot_task_1._screenshotTask)(page, screenshotType, options));
76
74
  };
77
75
  exports.screenshot = screenshot;
@@ -1,8 +1,8 @@
1
1
  /// <reference types="node" />
2
- import type { Browser as PuppeteerBrowser } from 'puppeteer-core';
3
2
  import type { BrowserExecutable, FfmpegExecutable, FrameRange, ImageFormat, SmallTCompMetadata } from 'remotion';
4
3
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
5
4
  import type { BrowserLog } from './browser-log';
5
+ import type { Browser } from './browser/Browser';
6
6
  import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
7
7
  import type { CancelSignal } from './make-cancel-signal';
8
8
  import type { ChromiumOptions } from './open-browser';
@@ -26,7 +26,7 @@ declare type RenderFramesOptions = {
26
26
  quality?: number;
27
27
  frameRange?: FrameRange | null;
28
28
  dumpBrowserLogs?: boolean;
29
- puppeteerInstance?: PuppeteerBrowser;
29
+ puppeteerInstance?: Browser;
30
30
  browserExecutable?: BrowserExecutable;
31
31
  onBrowserLog?: (log: BrowserLog) => void;
32
32
  onFrameBuffer?: (buffer: Buffer, frame: number) => void;
@@ -49,6 +49,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
49
49
  });
50
50
  }
51
51
  }
52
+ const downloadPromises = [];
52
53
  const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
53
54
  const frameCount = (0, get_duration_from_frame_range_1.getDurationFromFrameRange)(realFrameRange, composition.durationInFrames);
54
55
  const pages = new Array(actualParallelism).fill(true).map(async () => {
@@ -62,8 +63,8 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
62
63
  const logCallback = (log) => {
63
64
  onBrowserLog === null || onBrowserLog === void 0 ? void 0 : onBrowserLog({
64
65
  stackTrace: log.stackTrace(),
65
- text: log.text(),
66
- type: log.type(),
66
+ text: log.text,
67
+ type: log.type,
67
68
  });
68
69
  };
69
70
  if (onBrowserLog) {
@@ -142,7 +143,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
142
143
  quality,
143
144
  options: {
144
145
  frame,
145
- output: undefined,
146
+ output: null,
146
147
  },
147
148
  });
148
149
  remotion_1.Internals.perf.stopPerfMeasure(id);
@@ -175,13 +176,13 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
175
176
  const compressedAssets = collectedAssets.map((asset) => remotion_1.Internals.AssetCompression.compressAsset(assets.filter(remotion_1.Internals.truthy).flat(1), asset));
176
177
  assets[index] = compressedAssets;
177
178
  compressedAssets.forEach((asset) => {
178
- (0, download_and_map_assets_to_file_1.downloadAndMapAssetsToFileUrl)({
179
+ downloadPromises.push((0, download_and_map_assets_to_file_1.downloadAndMapAssetsToFileUrl)({
179
180
  asset,
180
181
  downloadDir,
181
182
  onDownload,
182
183
  }).catch((err) => {
183
184
  onError(new Error(`Error while downloading asset: ${err.stack}`));
184
- });
185
+ }));
185
186
  });
186
187
  pool.release(freePage);
187
188
  framesRendered++;
@@ -202,14 +203,11 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
202
203
  };
203
204
  return returnValue;
204
205
  });
205
- return Promise.race([
206
- happyPath,
207
- new Promise((_resolve, reject) => {
208
- cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
209
- reject(new Error('renderFrames() got cancelled'));
210
- });
211
- }),
212
- ]);
206
+ return happyPath
207
+ .then(() => {
208
+ return Promise.all(downloadPromises);
209
+ })
210
+ .then(() => happyPath);
213
211
  };
214
212
  const renderFrames = (options) => {
215
213
  var _a, _b, _c, _d;
@@ -240,43 +238,48 @@ const renderFrames = (options) => {
240
238
  return new Promise((resolve, reject) => {
241
239
  var _a, _b, _c;
242
240
  const cleanup = [];
243
- const onError = (err) => reject(err);
244
- Promise.all([
245
- (0, prepare_server_1.prepareServer)({
246
- webpackConfigOrServeUrl: selectedServeUrl,
247
- downloadDir,
248
- onDownload,
249
- onError,
250
- ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
251
- ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
252
- port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
241
+ const onError = (err) => {
242
+ reject(err);
243
+ };
244
+ Promise.race([
245
+ new Promise((_, rej) => {
246
+ var _a;
247
+ (_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
248
+ rej(new Error('renderFrames() got cancelled'));
249
+ });
250
+ }),
251
+ Promise.all([
252
+ (0, prepare_server_1.prepareServer)({
253
+ webpackConfigOrServeUrl: selectedServeUrl,
254
+ downloadDir,
255
+ onDownload,
256
+ onError,
257
+ ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
258
+ ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
259
+ port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
260
+ }),
261
+ browserInstance,
262
+ ]).then(([{ serveUrl, closeServer, offthreadPort }, puppeteerInstance]) => {
263
+ const { stopCycling } = (0, cycle_browser_tabs_1.cycleBrowserTabs)(puppeteerInstance, actualParallelism);
264
+ cleanup.push(stopCycling);
265
+ cleanup.push(closeServer);
266
+ return innerRenderFrames({
267
+ ...options,
268
+ puppeteerInstance,
269
+ onError,
270
+ pagesArray: openedPages,
271
+ serveUrl,
272
+ composition,
273
+ actualParallelism,
274
+ onDownload,
275
+ downloadDir,
276
+ proxyPort: offthreadPort,
277
+ });
253
278
  }),
254
- browserInstance,
255
279
  ])
256
- .then(([{ serveUrl, closeServer, offthreadPort }, puppeteerInstance]) => {
257
- var _a;
258
- const { stopCycling } = (0, cycle_browser_tabs_1.cycleBrowserTabs)(puppeteerInstance, actualParallelism);
259
- cleanup.push(stopCycling);
260
- (_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
261
- stopCycling();
262
- closeServer();
263
- });
264
- cleanup.push(closeServer);
265
- const renderFramesProm = innerRenderFrames({
266
- ...options,
267
- puppeteerInstance,
268
- onError,
269
- pagesArray: openedPages,
270
- serveUrl,
271
- composition,
272
- actualParallelism,
273
- onDownload,
274
- downloadDir,
275
- proxyPort: offthreadPort,
276
- });
277
- return renderFramesProm;
280
+ .then((res) => {
281
+ return resolve(res);
278
282
  })
279
- .then((res) => resolve(res))
280
283
  .catch((err) => reject(err))
281
284
  .finally(() => {
282
285
  // If browser instance was passed in, we close all the pages
@@ -0,0 +1,2 @@
1
+ import { RenderMediaOptions } from './render-media';
2
+ export declare const renderGif: ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, loop, skipNFrames, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }: RenderMediaOptions) => Promise<void>;
@@ -0,0 +1,242 @@
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.renderGif = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const os_1 = __importDefault(require("os"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const remotion_1 = require("remotion");
11
+ const can_use_parallel_encoding_1 = require("./can-use-parallel-encoding");
12
+ const ensure_frames_in_order_1 = require("./ensure-frames-in-order");
13
+ const ensure_output_directory_1 = require("./ensure-output-directory");
14
+ const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range");
15
+ const get_extension_from_codec_1 = require("./get-extension-from-codec");
16
+ const get_extension_of_filename_1 = require("./get-extension-of-filename");
17
+ const get_frame_to_render_1 = require("./get-frame-to-render");
18
+ const legacy_webpack_config_1 = require("./legacy-webpack-config");
19
+ const make_cancel_signal_1 = require("./make-cancel-signal");
20
+ const prespawn_ffmpeg_1 = require("./prespawn-ffmpeg");
21
+ const render_frames_1 = require("./render-frames");
22
+ const stitch_frames_to_gif_1 = require("./stitch-frames-to-gif");
23
+ const tmp_dir_1 = require("./tmp-dir");
24
+ const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
25
+ const validate_output_filename_1 = require("./validate-output-filename");
26
+ const validate_scale_1 = require("./validate-scale");
27
+ const renderGif = ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, loop, skipNFrames, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }) => {
28
+ remotion_1.Internals.validateQuality(quality);
29
+ if (typeof crf !== 'undefined' && crf !== null) {
30
+ remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
31
+ }
32
+ (0, validate_output_filename_1.validateOutputFilename)(codec, (0, get_extension_of_filename_1.getExtensionOfFilename)(outputLocation));
33
+ (0, validate_scale_1.validateScale)(scale);
34
+ const serveUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
35
+ let stitchStage = 'encoding';
36
+ let stitcherFfmpeg;
37
+ let preStitcher = null;
38
+ let encodedFrames = 0;
39
+ let renderedFrames = 0;
40
+ let renderedDoneIn = null;
41
+ let encodedDoneIn = null;
42
+ let cancelled = false;
43
+ const renderStart = Date.now();
44
+ const tmpdir = (0, tmp_dir_1.tmpDir)('pre-encode');
45
+ const parallelEncoding = (0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec);
46
+ const actualImageFormat = imageFormat !== null && imageFormat !== void 0 ? imageFormat : 'jpeg';
47
+ const preEncodedFileLocation = parallelEncoding
48
+ ? path_1.default.join(tmpdir, 'pre-encode.' + (0, get_extension_from_codec_1.getFileExtensionFromCodec)(codec, 'chunk'))
49
+ : null;
50
+ const outputDir = parallelEncoding
51
+ ? null
52
+ : fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'react-motion-render'));
53
+ (0, validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec)({
54
+ codec,
55
+ height: composition.height,
56
+ scale: scale !== null && scale !== void 0 ? scale : 1,
57
+ width: composition.width,
58
+ });
59
+ const callUpdate = () => {
60
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress({
61
+ encodedDoneIn,
62
+ encodedFrames,
63
+ renderedDoneIn,
64
+ renderedFrames,
65
+ stitchStage,
66
+ });
67
+ };
68
+ const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
69
+ const cancelRenderFrames = (0, make_cancel_signal_1.makeCancelSignal)();
70
+ const cancelPrestitcher = (0, make_cancel_signal_1.makeCancelSignal)();
71
+ const cancelStitcher = (0, make_cancel_signal_1.makeCancelSignal)();
72
+ cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
73
+ cancelRenderFrames.cancel();
74
+ });
75
+ const { waitForRightTimeOfFrameToBeInserted, setFrameToStitch, waitForFinish } = (0, ensure_frames_in_order_1.ensureFramesInOrder)(realFrameRange);
76
+ const actualGifFps = Math.floor(composition.fps / (skipNFrames + 1));
77
+ const createPrestitcherIfNecessary = async () => {
78
+ if (preEncodedFileLocation) {
79
+ preStitcher = await (0, prespawn_ffmpeg_1.prespawnFfmpeg)({
80
+ width: composition.width * (scale !== null && scale !== void 0 ? scale : 1),
81
+ height: composition.height * (scale !== null && scale !== void 0 ? scale : 1),
82
+ fps: actualGifFps,
83
+ outputLocation: preEncodedFileLocation,
84
+ pixelFormat,
85
+ codec,
86
+ proResProfile,
87
+ crf,
88
+ onProgress: (frame) => {
89
+ encodedFrames = frame;
90
+ callUpdate();
91
+ },
92
+ verbose: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
93
+ ffmpegExecutable,
94
+ imageFormat: actualImageFormat,
95
+ signal: cancelPrestitcher.cancelSignal,
96
+ });
97
+ stitcherFfmpeg = preStitcher.task;
98
+ }
99
+ };
100
+ const waitForPrestitcherIfNecessary = async () => {
101
+ var _a;
102
+ if (stitcherFfmpeg) {
103
+ await waitForFinish();
104
+ (_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.end();
105
+ try {
106
+ await stitcherFfmpeg;
107
+ }
108
+ catch (err) {
109
+ throw new Error(preStitcher === null || preStitcher === void 0 ? void 0 : preStitcher.getLogs());
110
+ }
111
+ }
112
+ };
113
+ const happyPath = createPrestitcherIfNecessary()
114
+ .then(() => {
115
+ const renderFramesProc = (0, render_frames_1.renderFrames)({
116
+ config: composition,
117
+ onFrameUpdate: (frame) => {
118
+ stitchStage = 'gif';
119
+ renderedFrames = frame;
120
+ callUpdate();
121
+ },
122
+ parallelism,
123
+ outputDir,
124
+ skipNFrames,
125
+ onStart: (data) => {
126
+ renderedFrames = 0;
127
+ callUpdate();
128
+ onStart === null || onStart === void 0 ? void 0 : onStart(data);
129
+ },
130
+ inputProps,
131
+ envVariables,
132
+ imageFormat: actualImageFormat,
133
+ quality,
134
+ frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : null,
135
+ puppeteerInstance,
136
+ onFrameBuffer: parallelEncoding
137
+ ? async (buffer, frame) => {
138
+ var _a;
139
+ await waitForRightTimeOfFrameToBeInserted(frame);
140
+ if (cancelled) {
141
+ return;
142
+ }
143
+ (_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.write(buffer);
144
+ setFrameToStitch(frame + 1);
145
+ }
146
+ : undefined,
147
+ serveUrl,
148
+ dumpBrowserLogs,
149
+ onBrowserLog,
150
+ onDownload,
151
+ timeoutInMilliseconds,
152
+ chromiumOptions,
153
+ scale,
154
+ ffmpegExecutable,
155
+ browserExecutable,
156
+ port,
157
+ cancelSignal: cancelRenderFrames.cancelSignal,
158
+ });
159
+ return renderFramesProc;
160
+ })
161
+ .then((renderFramesReturn) => {
162
+ return Promise.all([renderFramesReturn, waitForPrestitcherIfNecessary()]);
163
+ })
164
+ .then(([{ assetsInfo }]) => {
165
+ renderedDoneIn = Date.now() - renderStart;
166
+ callUpdate();
167
+ (0, ensure_output_directory_1.ensureOutputDirectory)(outputLocation);
168
+ const stitchStart = Date.now();
169
+ return Promise.all([
170
+ (0, stitch_frames_to_gif_1.stitchFramesToGif)({
171
+ width: composition.width * (scale !== null && scale !== void 0 ? scale : 1),
172
+ height: composition.height * (scale !== null && scale !== void 0 ? scale : 1),
173
+ fps: actualGifFps,
174
+ outputLocation,
175
+ internalOptions: {
176
+ preEncodedFileLocation,
177
+ imageFormat: actualImageFormat,
178
+ },
179
+ force: overwrite !== null && overwrite !== void 0 ? overwrite : remotion_1.Internals.DEFAULT_OVERWRITE,
180
+ pixelFormat,
181
+ codec,
182
+ proResProfile,
183
+ crf,
184
+ loop,
185
+ assetsInfo,
186
+ ffmpegExecutable,
187
+ onProgress: (frame) => {
188
+ stitchStage = 'gif';
189
+ encodedFrames = frame;
190
+ callUpdate();
191
+ },
192
+ verbose: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
193
+ dir: outputDir !== null && outputDir !== void 0 ? outputDir : undefined,
194
+ cancelSignal: cancelStitcher.cancelSignal,
195
+ }),
196
+ stitchStart,
197
+ ]);
198
+ })
199
+ .then(([, stitchStart]) => {
200
+ encodedFrames = (0, get_duration_from_frame_range_1.getDurationFromFrameRange)(frameRange !== null && frameRange !== void 0 ? frameRange : null, composition.durationInFrames, skipNFrames);
201
+ encodedDoneIn = Date.now() - stitchStart;
202
+ callUpdate();
203
+ })
204
+ .catch((err) => {
205
+ /**
206
+ * When an error is thrown in renderFrames(...) (e.g., when delayRender() is used incorrectly), fs.unlinkSync(...) throws an error that the file is locked because ffmpeg is still running, and renderMedia returns it.
207
+ * Therefore we first kill the FFMPEG process before deleting the file
208
+ */
209
+ cancelled = true;
210
+ cancelRenderFrames.cancel();
211
+ cancelStitcher.cancel();
212
+ cancelPrestitcher.cancel();
213
+ if (stitcherFfmpeg !== undefined && stitcherFfmpeg.exitCode === null) {
214
+ const promise = new Promise((resolve) => {
215
+ setTimeout(() => {
216
+ resolve();
217
+ }, 2000);
218
+ stitcherFfmpeg.on('close', resolve);
219
+ });
220
+ stitcherFfmpeg.kill();
221
+ return promise.then(() => {
222
+ throw err;
223
+ });
224
+ }
225
+ throw err;
226
+ })
227
+ .finally(() => {
228
+ if (preEncodedFileLocation !== null &&
229
+ fs_1.default.existsSync(preEncodedFileLocation)) {
230
+ fs_1.default.unlinkSync(preEncodedFileLocation);
231
+ }
232
+ });
233
+ return Promise.race([
234
+ happyPath,
235
+ new Promise((_resolve, reject) => {
236
+ cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
237
+ reject(new Error('renderMedia() got cancelled'));
238
+ });
239
+ }),
240
+ ]);
241
+ };
242
+ exports.renderGif = renderGif;
@@ -1,7 +1,8 @@
1
- import type { Browser as PuppeteerBrowser } from 'puppeteer-core';
1
+ /// <reference types="node" />
2
2
  import type { BrowserExecutable, Codec, FfmpegExecutable, FrameRange, PixelFormat, ProResProfile, SmallTCompMetadata } from 'remotion';
3
3
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
4
4
  import type { BrowserLog } from './browser-log';
5
+ import type { Browser as PuppeteerBrowser } from './browser/Browser';
5
6
  import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
6
7
  import type { CancelSignal } from './make-cancel-signal';
7
8
  import type { ChromiumOptions } from './open-browser';
@@ -15,7 +16,7 @@ export declare type RenderMediaOnProgress = (progress: {
15
16
  stitchStage: StitchingState;
16
17
  }) => void;
17
18
  export declare type RenderMediaOptions = {
18
- outputLocation: string;
19
+ outputLocation?: string | null;
19
20
  codec: Codec;
20
21
  composition: SmallTCompMetadata;
21
22
  inputProps?: unknown;
@@ -48,4 +49,4 @@ export declare type RenderMediaOptions = {
48
49
  * @description Render a video from a composition
49
50
  * @link https://www.remotion.dev/docs/renderer/render-media
50
51
  */
51
- export declare const renderMedia: ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }: RenderMediaOptions) => Promise<void>;
52
+ export declare const renderMedia: ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }: RenderMediaOptions) => Promise<Buffer | null>;
@@ -34,7 +34,9 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
34
34
  if (typeof crf !== 'undefined' && crf !== null) {
35
35
  remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
36
36
  }
37
- (0, validate_output_filename_1.validateOutputFilename)(codec, (0, get_extension_of_filename_1.getExtensionOfFilename)(outputLocation));
37
+ if (outputLocation) {
38
+ (0, validate_output_filename_1.validateOutputFilename)(codec, (0, get_extension_of_filename_1.getExtensionOfFilename)(outputLocation));
39
+ }
38
40
  (0, validate_scale_1.validateScale)(scale);
39
41
  const serveUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
40
42
  let stitchStage = 'encoding';
@@ -169,7 +171,9 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
169
171
  .then(([{ assetsInfo }]) => {
170
172
  renderedDoneIn = Date.now() - renderStart;
171
173
  callUpdate();
172
- (0, ensure_output_directory_1.ensureOutputDirectory)(outputLocation);
174
+ if (outputLocation) {
175
+ (0, ensure_output_directory_1.ensureOutputDirectory)(outputLocation);
176
+ }
173
177
  const stitchStart = Date.now();
174
178
  return Promise.all([
175
179
  (0, stitch_frames_to_video_1.stitchFramesToVideo)({
@@ -202,10 +206,11 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
202
206
  stitchStart,
203
207
  ]);
204
208
  })
205
- .then(([, stitchStart]) => {
209
+ .then(([buffer, stitchStart]) => {
206
210
  encodedFrames = (0, get_duration_from_frame_range_1.getDurationFromFrameRange)(frameRange !== null && frameRange !== void 0 ? frameRange : null, composition.durationInFrames);
207
211
  encodedDoneIn = Date.now() - stitchStart;
208
212
  callUpdate();
213
+ return buffer;
209
214
  })
210
215
  .catch((err) => {
211
216
  /**
@@ -1,6 +1,6 @@
1
- import type { Browser as PuppeteerBrowser } from 'puppeteer-core';
2
1
  import type { BrowserExecutable, FfmpegExecutable, SmallTCompMetadata, StillImageFormat } from 'remotion';
3
2
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
+ import type { Browser as PuppeteerBrowser } from './browser/Browser';
4
4
  import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
5
5
  import type { CancelSignal } from './make-cancel-signal';
6
6
  import type { ChromiumOptions } from './open-browser';
@@ -1,11 +1,11 @@
1
- import type puppeteer from 'puppeteer-core';
1
+ /// <reference types="node" />
2
2
  import type { ImageFormat } from 'remotion';
3
+ import type { Page } from './browser/Page';
3
4
  export declare const screenshotDOMElement: ({ page, imageFormat, quality, opts, }: {
4
- page: puppeteer.Page;
5
+ page: Page;
5
6
  imageFormat: ImageFormat;
6
7
  quality: number | undefined;
7
- opts?: {
8
- path?: string | undefined;
9
- selector?: string | undefined;
10
- } | undefined;
8
+ opts: {
9
+ path: string | null;
10
+ };
11
11
  }) => Promise<Buffer>;
@@ -3,11 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.screenshotDOMElement = void 0;
4
4
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
5
5
  const puppeteer_screenshot_1 = require("./puppeteer-screenshot");
6
- const screenshotDOMElement = async ({ page, imageFormat, quality, opts = {}, }) => {
7
- const path = 'path' in opts ? opts.path : undefined;
8
- const { selector } = opts;
9
- if (!selector)
10
- throw Error('Please provide a selector.');
6
+ const screenshotDOMElement = async ({ page, imageFormat, quality, opts, }) => {
7
+ const { path } = opts;
11
8
  if (imageFormat === 'png') {
12
9
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
13
10
  pageFunction: () => {
@@ -33,7 +30,7 @@ const screenshotDOMElement = async ({ page, imageFormat, quality, opts = {}, })
33
30
  }
34
31
  return (0, puppeteer_screenshot_1.screenshot)(page, {
35
32
  omitBackground: imageFormat === 'png',
36
- path,
33
+ path: path !== null && path !== void 0 ? path : undefined,
37
34
  type: imageFormat,
38
35
  quality,
39
36
  });
@@ -1,3 +1,5 @@
1
- import type { Page, ScreenshotOptions } from 'puppeteer-core';
1
+ /// <reference types="node" />
2
2
  import type { StillImageFormat } from 'remotion';
3
+ import type { Page } from './browser/Page';
4
+ import type { ScreenshotOptions } from './browser/ScreenshotOptions';
3
5
  export declare const _screenshotTask: (page: Page, format: StillImageFormat, options: ScreenshotOptions) => Promise<Buffer | string>;
@@ -7,8 +7,8 @@ exports._screenshotTask = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const remotion_1 = require("remotion");
9
9
  const _screenshotTask = async (page, format, options) => {
10
- const client = page._client;
11
- const target = page._target;
10
+ const client = page._client();
11
+ const target = page.target();
12
12
  const perfTarget = remotion_1.Internals.perf.startPerfMeasure('activate-target');
13
13
  await client.send('Target.activateTarget', {
14
14
  targetId: target._targetId,
@@ -30,9 +30,7 @@ const _screenshotTask = async (page, format, options) => {
30
30
  if (shouldSetDefaultBackground)
31
31
  await client.send('Emulation.setDefaultBackgroundColorOverride');
32
32
  const saveMarker = remotion_1.Internals.perf.startPerfMeasure('save');
33
- const buffer = options.encoding === 'base64'
34
- ? result.data
35
- : Buffer.from(result.data, 'base64');
33
+ const buffer = Buffer.from(result.data, 'base64');
36
34
  if (options.path)
37
35
  await fs_1.default.promises.writeFile(options.path, buffer);
38
36
  remotion_1.Internals.perf.stopPerfMeasure(saveMarker);
@@ -1,5 +1,5 @@
1
- import type puppeteer from 'puppeteer-core';
1
+ import type { Page } from './browser/Page';
2
2
  export declare const seekToFrame: ({ frame, page, }: {
3
3
  frame: number;
4
- page: puppeteer.Page;
4
+ page: Page;
5
5
  }) => Promise<void>;