@remotion/renderer 4.0.0-webhook.27 → 4.1.0-alpha2

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 (411) hide show
  1. package/LICENSE.md +8 -8
  2. package/README.md +9 -0
  3. package/client.d.ts +1 -0
  4. package/client.js +1 -0
  5. package/dist/assets/calculate-asset-positions.d.ts +0 -0
  6. package/dist/assets/calculate-asset-positions.js +1 -0
  7. package/dist/assets/calculate-atempo.d.ts +0 -0
  8. package/dist/assets/calculate-atempo.js +0 -0
  9. package/dist/assets/convert-assets-to-file-urls.d.ts +0 -0
  10. package/dist/assets/convert-assets-to-file-urls.js +0 -0
  11. package/dist/assets/download-and-map-assets-to-file.d.ts +6 -4
  12. package/dist/assets/download-and-map-assets-to-file.js +49 -19
  13. package/dist/assets/download-file.d.ts +8 -5
  14. package/dist/assets/download-file.js +71 -8
  15. package/dist/assets/download-map.d.ts +8 -29
  16. package/dist/assets/download-map.js +15 -16
  17. package/dist/assets/ffmpeg-volume-expression.d.ts +4 -3
  18. package/dist/assets/ffmpeg-volume-expression.js +5 -3
  19. package/dist/assets/flatten-volume-array.d.ts +0 -0
  20. package/dist/assets/flatten-volume-array.js +0 -0
  21. package/dist/assets/get-audio-channels.d.ts +2 -2
  22. package/dist/assets/get-audio-channels.js +14 -12
  23. package/dist/assets/read-file.d.ts +1 -1
  24. package/dist/assets/read-file.js +5 -7
  25. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -0
  26. package/dist/assets/round-volume-to-avoid-stack-overflow.js +0 -0
  27. package/dist/assets/sanitize-filename.d.ts +0 -0
  28. package/dist/assets/sanitize-filename.js +0 -0
  29. package/dist/assets/sanitize-filepath.d.ts +0 -0
  30. package/dist/assets/sanitize-filepath.js +2 -2
  31. package/dist/assets/truncate-utf8-bytes.d.ts +0 -0
  32. package/dist/assets/truncate-utf8-bytes.js +0 -0
  33. package/dist/assets/types.d.ts +5 -4
  34. package/dist/assets/types.js +0 -0
  35. package/dist/audio-codec.d.ts +28 -0
  36. package/dist/audio-codec.js +83 -0
  37. package/dist/browser/Browser.d.ts +16 -14
  38. package/dist/browser/Browser.js +69 -72
  39. package/dist/browser/BrowserConnector.d.ts +0 -0
  40. package/dist/browser/BrowserConnector.js +0 -0
  41. package/dist/browser/BrowserFetcher.d.ts +16 -64
  42. package/dist/browser/BrowserFetcher.js +147 -235
  43. package/dist/browser/BrowserPage.d.ts +21 -6
  44. package/dist/browser/BrowserPage.js +54 -22
  45. package/dist/browser/BrowserRunner.d.ts +1 -1
  46. package/dist/browser/BrowserRunner.js +32 -22
  47. package/dist/browser/Connection.d.ts +0 -0
  48. package/dist/browser/Connection.js +1 -1
  49. package/dist/browser/ConsoleMessage.d.ts +1 -1
  50. package/dist/browser/ConsoleMessage.js +0 -0
  51. package/dist/browser/DOMWorld.d.ts +5 -4
  52. package/dist/browser/DOMWorld.js +16 -9
  53. package/dist/browser/Errors.d.ts +0 -0
  54. package/dist/browser/Errors.js +0 -0
  55. package/dist/browser/EvalTypes.d.ts +7 -7
  56. package/dist/browser/EvalTypes.js +0 -0
  57. package/dist/browser/EventEmitter.d.ts +0 -0
  58. package/dist/browser/EventEmitter.js +0 -0
  59. package/dist/browser/ExecutionContext.d.ts +0 -0
  60. package/dist/browser/ExecutionContext.js +0 -0
  61. package/dist/browser/FrameManager.d.ts +0 -2
  62. package/dist/browser/FrameManager.js +13 -17
  63. package/dist/browser/HTTPRequest.d.ts +0 -0
  64. package/dist/browser/HTTPRequest.js +0 -0
  65. package/dist/browser/HTTPResponse.d.ts +0 -0
  66. package/dist/browser/HTTPResponse.js +0 -0
  67. package/dist/browser/JSHandle.d.ts +0 -0
  68. package/dist/browser/JSHandle.js +14 -14
  69. package/dist/browser/LaunchOptions.d.ts +2 -2
  70. package/dist/browser/LaunchOptions.js +0 -0
  71. package/dist/browser/Launcher.d.ts +9 -3
  72. package/dist/browser/Launcher.js +16 -29
  73. package/dist/browser/LifecycleWatcher.d.ts +1 -1
  74. package/dist/browser/LifecycleWatcher.js +0 -0
  75. package/dist/browser/NetworkEventManager.d.ts +4 -4
  76. package/dist/browser/NetworkEventManager.js +0 -0
  77. package/dist/browser/NetworkManager.d.ts +0 -0
  78. package/dist/browser/NetworkManager.js +0 -0
  79. package/dist/browser/NodeWebSocketTransport.d.ts +0 -0
  80. package/dist/browser/NodeWebSocketTransport.js +21 -21
  81. package/dist/browser/Product.d.ts +1 -1
  82. package/dist/browser/Product.js +0 -0
  83. package/dist/browser/PuppeteerNode.d.ts +2 -5
  84. package/dist/browser/PuppeteerNode.js +2 -11
  85. package/dist/browser/PuppeteerViewport.d.ts +0 -0
  86. package/dist/browser/PuppeteerViewport.js +0 -0
  87. package/dist/browser/ScreenshotOptions.d.ts +0 -14
  88. package/dist/browser/ScreenshotOptions.js +0 -1
  89. package/dist/browser/Target.d.ts +4 -3
  90. package/dist/browser/Target.js +8 -2
  91. package/dist/browser/TaskQueue.d.ts +0 -0
  92. package/dist/browser/TaskQueue.js +0 -0
  93. package/dist/browser/TimeoutSettings.d.ts +0 -0
  94. package/dist/browser/TimeoutSettings.js +0 -0
  95. package/dist/browser/assert.d.ts +0 -0
  96. package/dist/browser/assert.js +0 -0
  97. package/dist/browser/create-browser-fetcher.d.ts +0 -0
  98. package/dist/browser/create-browser-fetcher.js +34 -48
  99. package/dist/browser/devtools-commands.d.ts +5 -1
  100. package/dist/browser/devtools-commands.js +0 -0
  101. package/dist/browser/devtools-types.d.ts +92 -10
  102. package/dist/browser/devtools-types.js +0 -0
  103. package/dist/browser/get-download-destination.d.ts +0 -0
  104. package/dist/browser/get-download-destination.js +8 -8
  105. package/dist/browser/is-target-closed-err.d.ts +1 -0
  106. package/dist/browser/is-target-closed-err.js +9 -0
  107. package/dist/browser/mitt/index.d.ts +6 -6
  108. package/dist/browser/mitt/index.js +0 -0
  109. package/dist/browser/node.d.ts +0 -0
  110. package/dist/browser/node.js +0 -0
  111. package/dist/browser/revisions.d.ts +1 -1
  112. package/dist/browser/revisions.js +0 -0
  113. package/dist/browser/should-log-message.d.ts +24 -0
  114. package/dist/browser/should-log-message.js +72 -0
  115. package/dist/browser/util.d.ts +2 -2
  116. package/dist/browser/util.js +0 -0
  117. package/dist/browser-executable.d.ts +1 -1
  118. package/dist/browser-executable.js +0 -0
  119. package/dist/browser-log.d.ts +1 -1
  120. package/dist/browser-log.js +0 -0
  121. package/dist/browser.d.ts +1 -1
  122. package/dist/browser.js +0 -0
  123. package/dist/calculate-ffmpeg-filters.d.ts +2 -1
  124. package/dist/calculate-ffmpeg-filters.js +1 -0
  125. package/dist/call-ffmpeg.d.ts +14 -0
  126. package/dist/call-ffmpeg.js +42 -0
  127. package/dist/can-use-parallel-encoding.d.ts +0 -0
  128. package/dist/can-use-parallel-encoding.js +0 -0
  129. package/dist/chalk/index.d.ts +54 -0
  130. package/dist/chalk/index.js +135 -0
  131. package/dist/chalk/is-color-supported.d.ts +1 -0
  132. package/dist/chalk/is-color-supported.js +37 -0
  133. package/dist/check-apple-silicon.d.ts +1 -1
  134. package/dist/check-apple-silicon.js +8 -47
  135. package/dist/chunk.d.ts +0 -0
  136. package/dist/chunk.js +0 -0
  137. package/dist/client.d.ts +204 -0
  138. package/dist/client.js +49 -0
  139. package/dist/codec-supports-media.d.ts +3 -2
  140. package/dist/codec-supports-media.js +20 -5
  141. package/dist/codec.d.ts +2 -2
  142. package/dist/codec.js +0 -0
  143. package/dist/combine-videos.d.ts +6 -2
  144. package/dist/combine-videos.js +17 -17
  145. package/dist/compositor/compose.d.ts +26 -0
  146. package/dist/compositor/compose.js +82 -0
  147. package/dist/compositor/compositor.d.ts +11 -0
  148. package/dist/compositor/compositor.js +219 -0
  149. package/dist/compositor/get-executable-path.d.ts +1 -0
  150. package/dist/compositor/get-executable-path.js +57 -0
  151. package/dist/compositor/make-nonce.d.ts +1 -0
  152. package/dist/compositor/make-nonce.js +8 -0
  153. package/dist/compositor/payloads.d.ts +68 -0
  154. package/dist/{ffmpeg-executable.js → compositor/payloads.js} +0 -0
  155. package/dist/compress-assets.d.ts +0 -0
  156. package/dist/compress-assets.js +0 -0
  157. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
  158. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
  159. package/dist/convert-to-positive-frame-index.d.ts +0 -0
  160. package/dist/convert-to-positive-frame-index.js +0 -0
  161. package/dist/create-ffmpeg-complex-filter.d.ts +5 -1
  162. package/dist/create-ffmpeg-complex-filter.js +6 -4
  163. package/dist/create-ffmpeg-merge-filter.d.ts +5 -1
  164. package/dist/create-ffmpeg-merge-filter.js +21 -13
  165. package/dist/create-silent-audio.d.ts +1 -3
  166. package/dist/create-silent-audio.js +3 -6
  167. package/dist/crf.d.ts +6 -2
  168. package/dist/crf.js +41 -8
  169. package/dist/cycle-browser-tabs.d.ts +2 -5
  170. package/dist/cycle-browser-tabs.js +5 -5
  171. package/dist/delay-render-embedded-stack.d.ts +0 -0
  172. package/dist/delay-render-embedded-stack.js +0 -0
  173. package/dist/delete-directory.d.ts +1 -1
  174. package/dist/delete-directory.js +43 -17
  175. package/dist/does-have-m2-bug.d.ts +3 -0
  176. package/dist/does-have-m2-bug.js +12 -0
  177. package/dist/ensure-frames-in-order.d.ts +0 -0
  178. package/dist/ensure-frames-in-order.js +0 -0
  179. package/dist/ensure-output-directory.d.ts +0 -0
  180. package/dist/ensure-output-directory.js +5 -5
  181. package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
  182. package/dist/error-handling/handle-javascript-exception.js +10 -0
  183. package/dist/error-handling/symbolicate-error.d.ts +0 -0
  184. package/dist/error-handling/symbolicate-error.js +6 -3
  185. package/dist/error-handling/symbolicateable-error.d.ts +0 -0
  186. package/dist/error-handling/symbolicateable-error.js +0 -0
  187. package/dist/ffmpeg-filter-file.d.ts +6 -1
  188. package/dist/ffmpeg-filter-file.js +40 -8
  189. package/dist/ffmpeg-override.d.ts +1 -1
  190. package/dist/ffmpeg-override.js +0 -0
  191. package/dist/file-extensions.d.ts +14 -0
  192. package/dist/file-extensions.js +76 -0
  193. package/dist/find-closest-package-json.d.ts +2 -0
  194. package/dist/find-closest-package-json.js +31 -0
  195. package/dist/frame-range.d.ts +1 -1
  196. package/dist/frame-range.js +0 -0
  197. package/dist/get-browser-instance.d.ts +8 -3
  198. package/dist/get-browser-instance.js +10 -5
  199. package/dist/get-codec-name.d.ts +0 -0
  200. package/dist/get-codec-name.js +0 -0
  201. package/dist/get-compositions.d.ts +27 -14
  202. package/dist/get-compositions.js +72 -39
  203. package/dist/get-concurrency.d.ts +1 -1
  204. package/dist/get-concurrency.js +11 -4
  205. package/dist/get-duration-from-frame-range.d.ts +0 -0
  206. package/dist/get-duration-from-frame-range.js +0 -0
  207. package/dist/get-extension-from-codec.d.ts +5 -1
  208. package/dist/get-extension-from-codec.js +56 -32
  209. package/dist/get-extension-of-filename.d.ts +0 -0
  210. package/dist/get-extension-of-filename.js +5 -1
  211. package/dist/get-frame-padded-index.d.ts +3 -2
  212. package/dist/get-frame-padded-index.js +3 -2
  213. package/dist/get-frame-to-render.d.ts +0 -0
  214. package/dist/get-frame-to-render.js +1 -1
  215. package/dist/get-local-browser-executable.d.ts +0 -0
  216. package/dist/get-local-browser-executable.js +7 -15
  217. package/dist/get-port.d.ts +4 -1
  218. package/dist/get-port.js +8 -8
  219. package/dist/get-prores-profile-name.d.ts +0 -0
  220. package/dist/get-prores-profile-name.js +0 -0
  221. package/dist/get-video-threads-flag.d.ts +0 -0
  222. package/dist/get-video-threads-flag.js +3 -3
  223. package/dist/guess-extension-for-media.d.ts +3 -1
  224. package/dist/guess-extension-for-media.js +4 -7
  225. package/dist/image-format.d.ts +12 -6
  226. package/dist/image-format.js +19 -13
  227. package/dist/index.d.ts +368 -49
  228. package/dist/index.js +68 -46
  229. package/dist/is-audio-codec.d.ts +0 -0
  230. package/dist/is-audio-codec.js +0 -0
  231. package/dist/is-serve-url.d.ts +0 -0
  232. package/dist/is-serve-url.js +0 -0
  233. package/dist/jpeg-quality.d.ts +2 -0
  234. package/dist/jpeg-quality.js +22 -0
  235. package/dist/locks.d.ts +7 -0
  236. package/dist/locks.js +44 -0
  237. package/dist/log-level.d.ts +1 -1
  238. package/dist/log-level.js +0 -0
  239. package/dist/logger.d.ts +24 -0
  240. package/dist/logger.js +68 -0
  241. package/dist/make-cancel-signal.d.ts +13 -2
  242. package/dist/make-cancel-signal.js +24 -1
  243. package/dist/merge-audio-track.d.ts +4 -4
  244. package/dist/merge-audio-track.js +38 -33
  245. package/dist/mime-db.d.ts +0 -0
  246. package/dist/mime-db.js +0 -0
  247. package/dist/mime-types.d.ts +0 -0
  248. package/dist/mime-types.js +3 -3
  249. package/dist/normalize-serve-url.d.ts +0 -0
  250. package/dist/normalize-serve-url.js +0 -0
  251. package/dist/offthread-video-server.d.ts +47 -11
  252. package/dist/offthread-video-server.js +111 -58
  253. package/dist/open-browser.d.ts +21 -6
  254. package/dist/open-browser.js +37 -16
  255. package/dist/options/audio-bitrate.d.ts +2 -0
  256. package/dist/options/audio-bitrate.js +11 -0
  257. package/dist/options/crf.d.ts +2 -0
  258. package/dist/options/crf.js +11 -0
  259. package/dist/options/enforce-audio.d.ts +2 -0
  260. package/dist/options/enforce-audio.js +11 -0
  261. package/dist/options/jpeg-quality.d.ts +2 -0
  262. package/dist/options/jpeg-quality.js +11 -0
  263. package/dist/options/mute.d.ts +2 -0
  264. package/dist/options/mute.js +11 -0
  265. package/dist/options/option.d.ts +8 -0
  266. package/dist/options/option.js +2 -0
  267. package/dist/options/scale.d.ts +2 -0
  268. package/dist/options/scale.js +11 -0
  269. package/dist/options/video-bitrate.d.ts +2 -0
  270. package/dist/options/video-bitrate.js +11 -0
  271. package/dist/options/video-codec.d.ts +2 -0
  272. package/dist/options/video-codec.js +11 -0
  273. package/dist/overwrite.d.ts +0 -0
  274. package/dist/overwrite.js +0 -0
  275. package/dist/p-limit.d.ts +0 -0
  276. package/dist/p-limit.js +0 -0
  277. package/dist/parse-browser-error-stack.d.ts +1 -1
  278. package/dist/parse-browser-error-stack.js +0 -0
  279. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  280. package/dist/parse-ffmpeg-progress.js +0 -0
  281. package/dist/perf.d.ts +2 -2
  282. package/dist/perf.js +9 -7
  283. package/dist/pixel-format.d.ts +2 -2
  284. package/dist/pixel-format.js +3 -0
  285. package/dist/pool.d.ts +0 -0
  286. package/dist/pool.js +0 -0
  287. package/dist/prepare-server.d.ts +25 -10
  288. package/dist/prepare-server.js +71 -18
  289. package/dist/preprocess-audio-track.d.ts +7 -5
  290. package/dist/preprocess-audio-track.js +7 -8
  291. package/dist/prespawn-ffmpeg.d.ts +20 -10
  292. package/dist/prespawn-ffmpeg.js +67 -29
  293. package/dist/prestitcher-memory-usage.d.ts +0 -4
  294. package/dist/prestitcher-memory-usage.js +4 -5
  295. package/dist/prores-profile.d.ts +6 -4
  296. package/dist/prores-profile.js +8 -8
  297. package/dist/provide-screenshot.d.ts +8 -4
  298. package/dist/provide-screenshot.js +5 -2
  299. package/dist/puppeteer-evaluate.d.ts +0 -0
  300. package/dist/puppeteer-evaluate.js +20 -12
  301. package/dist/puppeteer-screenshot.d.ts +12 -2
  302. package/dist/puppeteer-screenshot.js +18 -45
  303. package/dist/redirect-status-codes.d.ts +1 -0
  304. package/dist/redirect-status-codes.js +6 -0
  305. package/dist/render-frames.d.ts +52 -35
  306. package/dist/render-frames.js +248 -143
  307. package/dist/render-media.d.ts +76 -29
  308. package/dist/render-media.js +324 -195
  309. package/dist/render-still.d.ts +46 -19
  310. package/dist/render-still.js +128 -69
  311. package/dist/replace-browser.d.ts +6 -0
  312. package/dist/replace-browser.js +47 -0
  313. package/dist/resolve-asset-src.d.ts +0 -0
  314. package/dist/resolve-asset-src.js +2 -2
  315. package/dist/sample-rate.d.ts +0 -0
  316. package/dist/sample-rate.js +0 -0
  317. package/dist/screenshot-dom-element.d.ts +8 -4
  318. package/dist/screenshot-dom-element.js +15 -4
  319. package/dist/screenshot-task.d.ts +11 -2
  320. package/dist/screenshot-task.js +43 -13
  321. package/dist/seek-to-frame.d.ts +1 -0
  322. package/dist/seek-to-frame.js +49 -3
  323. package/dist/select-composition.d.ts +41 -0
  324. package/dist/select-composition.js +156 -0
  325. package/dist/serve-handler/index.d.ts +1 -1
  326. package/dist/serve-handler/index.js +21 -19
  327. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  328. package/dist/serve-handler/is-path-inside.js +3 -3
  329. package/dist/serve-handler/range-parser.d.ts +0 -0
  330. package/dist/serve-handler/range-parser.js +0 -0
  331. package/dist/serve-static.d.ts +8 -6
  332. package/dist/serve-static.js +85 -59
  333. package/dist/set-props-and-env.d.ts +5 -3
  334. package/dist/set-props-and-env.js +18 -10
  335. package/dist/stitch-frames-to-video.d.ts +39 -16
  336. package/dist/stitch-frames-to-video.js +210 -121
  337. package/dist/stringify-ffmpeg-filter.d.ts +10 -2
  338. package/dist/stringify-ffmpeg-filter.js +37 -34
  339. package/dist/symbolicate-stacktrace.d.ts +16 -3
  340. package/dist/symbolicate-stacktrace.js +49 -24
  341. package/dist/take-frame-and-compose.d.ts +22 -0
  342. package/dist/take-frame-and-compose.js +103 -0
  343. package/dist/tmp-dir.d.ts +0 -0
  344. package/dist/tmp-dir.js +7 -8
  345. package/dist/truthy.d.ts +1 -1
  346. package/dist/truthy.js +0 -0
  347. package/dist/types.d.ts +2 -2
  348. package/dist/types.js +0 -0
  349. package/dist/validate-concurrency.d.ts +2 -0
  350. package/dist/validate-concurrency.js +21 -10
  351. package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
  352. package/dist/validate-even-dimensions-with-codec.js +0 -0
  353. package/dist/validate-every-nth-frame.d.ts +2 -1
  354. package/dist/validate-every-nth-frame.js +8 -1
  355. package/dist/validate-ffmpeg-override.d.ts +0 -0
  356. package/dist/validate-ffmpeg-override.js +0 -0
  357. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  358. package/dist/validate-number-of-gif-loops.js +24 -0
  359. package/dist/validate-opengl-renderer.d.ts +2 -3
  360. package/dist/validate-opengl-renderer.js +9 -4
  361. package/dist/validate-output-filename.d.ts +7 -2
  362. package/dist/validate-output-filename.js +20 -51
  363. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  364. package/dist/validate-puppeteer-timeout.js +1 -0
  365. package/dist/validate-scale.d.ts +0 -0
  366. package/dist/validate-scale.js +0 -0
  367. package/dist/validate-videobitrate.d.ts +1 -0
  368. package/dist/validate-videobitrate.js +20 -0
  369. package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
  370. package/dist/wait-for-symbolication-error-to-be-done.js +5 -31
  371. package/dist/ws/ws-types.d.ts +0 -0
  372. package/dist/ws/ws-types.js +2 -1
  373. package/install-toolchain.mjs +36 -0
  374. package/package.json +70 -60
  375. package/types/ws/index.d.ts +5 -5
  376. package/.prettierrc.js +0 -14
  377. package/dist/assets/dl-browser.d.ts +0 -1
  378. package/dist/assets/dl-browser.js +0 -38
  379. package/dist/assets/get-video-stream-duration.d.ts +0 -4
  380. package/dist/assets/get-video-stream-duration.js +0 -59
  381. package/dist/calculate-sar-dar-pixels.d.ts +0 -9
  382. package/dist/calculate-sar-dar-pixels.js +0 -19
  383. package/dist/convert-to-pcm.d.ts +0 -6
  384. package/dist/convert-to-pcm.js +0 -20
  385. package/dist/ensure-presentation-timestamp.d.ts +0 -2
  386. package/dist/ensure-presentation-timestamp.js +0 -69
  387. package/dist/extract-frame-from-video.d.ts +0 -16
  388. package/dist/extract-frame-from-video.js +0 -277
  389. package/dist/ffmpeg-executable.d.ts +0 -1
  390. package/dist/ffmpeg-flags.d.ts +0 -12
  391. package/dist/ffmpeg-flags.js +0 -45
  392. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -1
  393. package/dist/frame-to-ffmpeg-timestamp.js +0 -8
  394. package/dist/get-audio-codec-name.d.ts +0 -2
  395. package/dist/get-audio-codec-name.js +0 -28
  396. package/dist/get-video-info.d.ts +0 -3
  397. package/dist/get-video-info.js +0 -49
  398. package/dist/is-beyond-last-frame.d.ts +0 -3
  399. package/dist/is-beyond-last-frame.js +0 -12
  400. package/dist/last-frame-from-video-cache.d.ts +0 -17
  401. package/dist/last-frame-from-video-cache.js +0 -55
  402. package/dist/legacy-webpack-config.d.ts +0 -9
  403. package/dist/legacy-webpack-config.js +0 -13
  404. package/dist/quality.d.ts +0 -1
  405. package/dist/quality.js +0 -21
  406. package/dist/validate-ffmpeg.d.ts +0 -2
  407. package/dist/validate-ffmpeg.js +0 -72
  408. package/dist/validate-frame.d.ts +0 -1
  409. package/dist/validate-frame.js +0 -24
  410. package/tsconfig.json +0 -10
  411. package/vitest.config.ts +0 -8
@@ -1,44 +1,71 @@
1
- import type { SmallTCompMetadata } from 'remotion';
1
+ /// <reference types="node" />
2
+ import type { AnySmallCompMetadata } from 'remotion';
2
3
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
- import type { DownloadMap } from './assets/download-map';
4
4
  import type { BrowserExecutable } from './browser-executable';
5
- import type { Browser as PuppeteerBrowser } from './browser/Browser';
6
- import type { FfmpegExecutable } from './ffmpeg-executable';
5
+ import type { BrowserLog } from './browser-log';
6
+ import type { HeadlessBrowser } from './browser/Browser';
7
7
  import type { StillImageFormat } from './image-format';
8
- import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
9
8
  import type { CancelSignal } from './make-cancel-signal';
10
9
  import type { ChromiumOptions } from './open-browser';
11
- declare type InnerStillOptions = {
12
- composition: SmallTCompMetadata;
13
- output: string;
10
+ import type { RemotionServer } from './prepare-server';
11
+ type InternalRenderStillOptions = {
12
+ composition: AnySmallCompMetadata;
13
+ output: string | null;
14
+ frame: number;
15
+ inputProps: Record<string, unknown>;
16
+ imageFormat: StillImageFormat;
17
+ jpegQuality: number;
18
+ puppeteerInstance: HeadlessBrowser | null;
19
+ dumpBrowserLogs: boolean;
20
+ envVariables: Record<string, string>;
21
+ overwrite: boolean;
22
+ browserExecutable: BrowserExecutable;
23
+ onBrowserLog: null | ((log: BrowserLog) => void);
24
+ timeoutInMilliseconds: number;
25
+ chromiumOptions: ChromiumOptions;
26
+ scale: number;
27
+ onDownload: RenderMediaOnDownload | null;
28
+ cancelSignal: CancelSignal | null;
29
+ indent: boolean;
30
+ server: RemotionServer | undefined;
31
+ verbose: boolean;
32
+ serveUrl: string;
33
+ port: number | null;
34
+ };
35
+ export type RenderStillOptions = {
36
+ port?: number | null;
37
+ composition: AnySmallCompMetadata;
38
+ output?: string | null;
14
39
  frame?: number;
15
- inputProps?: unknown;
40
+ inputProps?: Record<string, unknown>;
16
41
  imageFormat?: StillImageFormat;
17
- quality?: number;
18
- puppeteerInstance?: PuppeteerBrowser;
42
+ jpegQuality?: number;
43
+ puppeteerInstance?: HeadlessBrowser;
19
44
  dumpBrowserLogs?: boolean;
20
45
  envVariables?: Record<string, string>;
21
46
  overwrite?: boolean;
22
47
  browserExecutable?: BrowserExecutable;
48
+ onBrowserLog?: (log: BrowserLog) => void;
23
49
  timeoutInMilliseconds?: number;
24
50
  chromiumOptions?: ChromiumOptions;
25
51
  scale?: number;
26
52
  onDownload?: RenderMediaOnDownload;
27
53
  cancelSignal?: CancelSignal;
28
- ffmpegExecutable?: FfmpegExecutable;
29
- ffprobeExecutable?: FfmpegExecutable;
54
+ verbose?: boolean;
55
+ serveUrl: string;
30
56
  /**
31
- * @deprecated Only for Remotion internal usage
57
+ * @deprecated Renamed to `jpegQuality`
32
58
  */
33
- downloadMap?: DownloadMap;
59
+ quality?: never;
34
60
  };
35
- export declare type RenderStillOptions = InnerStillOptions & ServeUrlOrWebpackBundle & {
36
- port?: number | null;
61
+ type RenderStillReturnValue = {
62
+ buffer: Buffer | null;
37
63
  };
64
+ export declare const internalRenderStill: (options: InternalRenderStillOptions) => Promise<RenderStillReturnValue>;
38
65
  /**
39
66
  *
40
67
  * @description Render a still frame from a composition
41
- * @link https://www.remotion.dev/docs/renderer/render-still
68
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/render-still)
42
69
  */
43
- export declare const renderStill: (options: RenderStillOptions) => Promise<void>;
70
+ export declare const renderStill: (options: RenderStillOptions) => Promise<RenderStillReturnValue>;
44
71
  export {};
@@ -26,69 +26,78 @@ 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.renderStill = void 0;
30
- const fs_1 = __importStar(require("fs"));
31
- const path_1 = __importDefault(require("path"));
29
+ exports.renderStill = exports.internalRenderStill = void 0;
30
+ const node_fs_1 = __importStar(require("node:fs"));
31
+ const node_path_1 = __importDefault(require("node:path"));
32
32
  const remotion_1 = require("remotion");
33
- const download_map_1 = require("./assets/download-map");
34
33
  const browser_1 = require("./browser");
34
+ const TimeoutSettings_1 = require("./browser/TimeoutSettings");
35
35
  const convert_to_positive_frame_index_1 = require("./convert-to-positive-frame-index");
36
36
  const ensure_output_directory_1 = require("./ensure-output-directory");
37
37
  const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
38
+ const find_closest_package_json_1 = require("./find-closest-package-json");
38
39
  const image_format_1 = require("./image-format");
39
- const legacy_webpack_config_1 = require("./legacy-webpack-config");
40
+ const jpeg_quality_1 = require("./jpeg-quality");
41
+ const make_cancel_signal_1 = require("./make-cancel-signal");
40
42
  const open_browser_1 = require("./open-browser");
43
+ const overwrite_1 = require("./overwrite");
41
44
  const prepare_server_1 = require("./prepare-server");
42
- const provide_screenshot_1 = require("./provide-screenshot");
43
45
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
44
- const quality_1 = require("./quality");
45
46
  const seek_to_frame_1 = require("./seek-to-frame");
46
47
  const set_props_and_env_1 = require("./set-props-and-env");
47
- const validate_frame_1 = require("./validate-frame");
48
+ const take_frame_and_compose_1 = require("./take-frame-and-compose");
48
49
  const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
49
50
  const validate_scale_1 = require("./validate-scale");
50
- const innerRenderStill = async ({ composition, quality, imageFormat = 'png', serveUrl, puppeteerInstance, dumpBrowserLogs = false, onError, inputProps, envVariables, output, frame = 0, overwrite = true, browserExecutable, timeoutInMilliseconds, chromiumOptions, scale, proxyPort, cancelSignal, }) => {
51
+ const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFAULT_STILL_IMAGE_FORMAT, serveUrl, puppeteerInstance, dumpBrowserLogs = false, onError, inputProps, envVariables, output, frame = 0, overwrite, browserExecutable, timeoutInMilliseconds, chromiumOptions, scale, proxyPort, cancelSignal, jpegQuality, onBrowserLog, compositor, sourceMapContext, downloadMap, }) => {
51
52
  remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderStill()`');
52
53
  remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderStill()`');
53
54
  remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderStill()`', false);
54
- remotion_1.Internals.validateDurationInFrames(composition.durationInFrames, 'in the `config` object passed to `renderStill()`');
55
- (0, image_format_1.validateNonNullImageFormat)(imageFormat);
56
- (0, validate_frame_1.validateFrame)(frame, composition.durationInFrames);
55
+ remotion_1.Internals.validateDurationInFrames({
56
+ durationInFrames: composition.durationInFrames,
57
+ component: 'in the `config` object passed to `renderStill()`',
58
+ allowFloats: false,
59
+ });
60
+ (0, image_format_1.validateStillImageFormat)(imageFormat);
61
+ remotion_1.Internals.validateFrame({
62
+ frame,
63
+ durationInFrames: composition.durationInFrames,
64
+ allowFloats: false,
65
+ });
57
66
  const stillFrame = (0, convert_to_positive_frame_index_1.convertToPositiveFrameIndex)({
58
67
  durationInFrames: composition.durationInFrames,
59
68
  frame,
60
69
  });
61
70
  (0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
62
71
  (0, validate_scale_1.validateScale)(scale);
63
- if (typeof output !== 'string') {
64
- throw new TypeError('`output` parameter was not passed or is not a string');
65
- }
66
- output = path_1.default.resolve(process.cwd(), output);
67
- if (quality !== undefined && imageFormat !== 'jpeg') {
68
- throw new Error("You can only pass the `quality` option if `imageFormat` is 'jpeg'.");
69
- }
70
- (0, quality_1.validateQuality)(quality);
71
- if (fs_1.default.existsSync(output)) {
72
- if (!overwrite) {
73
- throw new Error(`Cannot render still - "overwrite" option was set to false, but the output destination ${output} already exists.`);
74
- }
75
- const stat = (0, fs_1.statSync)(output);
76
- if (!stat.isFile()) {
77
- throw new Error(`The output location ${output} already exists, but is not a file, but something else (e.g. folder). Cannot save to it.`);
72
+ output =
73
+ typeof output === 'string' ? node_path_1.default.resolve(process.cwd(), output) : null;
74
+ (0, jpeg_quality_1.validateJpegQuality)(jpegQuality);
75
+ if (output) {
76
+ if (node_fs_1.default.existsSync(output)) {
77
+ if (!overwrite) {
78
+ throw new Error(`Cannot render still - "overwrite" option was set to false, but the output destination ${output} already exists.`);
79
+ }
80
+ const stat = (0, node_fs_1.statSync)(output);
81
+ if (!stat.isFile()) {
82
+ throw new Error(`The output location ${output} already exists, but is not a file, but something else (e.g. folder). Cannot save to it.`);
83
+ }
78
84
  }
85
+ (0, ensure_output_directory_1.ensureOutputDirectory)(output);
79
86
  }
80
- (0, ensure_output_directory_1.ensureOutputDirectory)(output);
81
- const browserInstance = puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : (await (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
87
+ const browserInstance = puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : (await (0, open_browser_1.internalOpenBrowser)({
88
+ browser: browser_1.DEFAULT_BROWSER,
82
89
  browserExecutable,
83
90
  shouldDumpIo: dumpBrowserLogs,
84
91
  chromiumOptions,
85
- forceDeviceScaleFactor: scale !== null && scale !== void 0 ? scale : 1,
92
+ forceDeviceScaleFactor: scale,
93
+ indent: false,
94
+ viewport: null,
86
95
  }));
87
- const page = await browserInstance.newPage();
96
+ const page = await browserInstance.newPage(sourceMapContext);
88
97
  await page.setViewport({
89
98
  width: composition.width,
90
99
  height: composition.height,
91
- deviceScaleFactor: scale !== null && scale !== void 0 ? scale : 1,
100
+ deviceScaleFactor: scale,
92
101
  });
93
102
  const errorCallback = (err) => {
94
103
  onError(err);
@@ -99,13 +108,21 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
99
108
  onError: errorCallback,
100
109
  frame: null,
101
110
  });
111
+ const logCallback = (log) => {
112
+ onBrowserLog === null || onBrowserLog === void 0 ? void 0 : onBrowserLog({
113
+ stackTrace: log.stackTrace(),
114
+ text: log.text,
115
+ type: log.type,
116
+ });
117
+ };
102
118
  const cleanup = async () => {
103
119
  cleanUpJSException();
120
+ page.off('console', logCallback);
104
121
  if (puppeteerInstance) {
105
122
  await page.close();
106
123
  }
107
124
  else {
108
- browserInstance.close().catch((err) => {
125
+ browserInstance.close(true).catch((err) => {
109
126
  console.log('Unable to close browser', err);
110
127
  });
111
128
  }
@@ -113,6 +130,9 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
113
130
  cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
114
131
  cleanup();
115
132
  });
133
+ if (onBrowserLog) {
134
+ page.on('console', logCallback);
135
+ }
116
136
  await (0, set_props_and_env_1.setPropsAndEnv)({
117
137
  inputProps,
118
138
  envVariables,
@@ -128,7 +148,7 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
128
148
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
129
149
  // eslint-disable-next-line max-params
130
150
  pageFunction: (id, defaultProps, durationInFrames, fps, height, width) => {
131
- window.setBundleMode({
151
+ window.remotion_setBundleMode({
132
152
  type: 'composition',
133
153
  compositionName: id,
134
154
  compositionDefaultProps: defaultProps,
@@ -150,57 +170,56 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
150
170
  page,
151
171
  });
152
172
  await (0, seek_to_frame_1.seekToFrame)({ frame: stillFrame, page });
153
- await (0, provide_screenshot_1.provideScreenshot)({
154
- page,
173
+ const { buffer } = await (0, take_frame_and_compose_1.takeFrameAndCompose)({
174
+ frame: stillFrame,
175
+ freePage: page,
176
+ height: composition.height,
177
+ width: composition.width,
155
178
  imageFormat,
156
- quality,
157
- options: {
158
- frame: stillFrame,
159
- output,
160
- },
179
+ scale,
180
+ output,
181
+ jpegQuality,
182
+ wantsBuffer: !output,
183
+ compositor,
184
+ downloadMap,
161
185
  });
162
186
  await cleanup();
187
+ return { buffer: output ? null : buffer };
163
188
  };
164
- /**
165
- *
166
- * @description Render a still frame from a composition
167
- * @link https://www.remotion.dev/docs/renderer/render-still
168
- */
169
- const renderStill = (options) => {
170
- var _a, _b;
171
- const selectedServeUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
172
- const downloadMap = (_a = options.downloadMap) !== null && _a !== void 0 ? _a : (0, download_map_1.makeDownloadMap)();
173
- const onDownload = (_b = options.onDownload) !== null && _b !== void 0 ? _b : (() => () => undefined);
189
+ const internalRenderStill = (options) => {
190
+ const cleanup = [];
174
191
  const happyPath = new Promise((resolve, reject) => {
175
- var _a, _b, _c;
176
192
  const onError = (err) => reject(err);
177
- let close = null;
178
- (0, prepare_server_1.prepareServer)({
179
- webpackConfigOrServeUrl: selectedServeUrl,
180
- onDownload,
193
+ (0, prepare_server_1.makeOrReuseServer)(options.server, {
194
+ webpackConfigOrServeUrl: options.serveUrl,
195
+ port: options.port,
196
+ remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
197
+ concurrency: 1,
198
+ verbose: options.verbose,
199
+ indent: options.indent,
200
+ }, {
201
+ onDownload: options.onDownload,
181
202
  onError,
182
- ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
183
- ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
184
- port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
185
- downloadMap,
186
203
  })
187
- .then(({ serveUrl, closeServer, offthreadPort }) => {
188
- close = closeServer;
204
+ .then(({ server, cleanupServer }) => {
205
+ cleanup.push(() => cleanupServer(false));
206
+ const { serveUrl, offthreadPort, compositor, sourceMap, downloadMap } = server;
189
207
  return innerRenderStill({
190
208
  ...options,
191
209
  serveUrl,
192
- onError: (err) => reject(err),
210
+ onError,
193
211
  proxyPort: offthreadPort,
212
+ compositor,
213
+ sourceMapContext: sourceMap,
214
+ downloadMap,
194
215
  });
195
216
  })
196
217
  .then((res) => resolve(res))
197
218
  .catch((err) => reject(err))
198
219
  .finally(() => {
199
- // Clean download map if it was not passed in
200
- if (!(options === null || options === void 0 ? void 0 : options.downloadMap)) {
201
- (0, download_map_1.cleanDownloadMap)(downloadMap);
202
- }
203
- return close === null || close === void 0 ? void 0 : close();
220
+ cleanup.forEach((c) => {
221
+ c();
222
+ });
204
223
  });
205
224
  });
206
225
  return Promise.race([
@@ -208,9 +227,49 @@ const renderStill = (options) => {
208
227
  new Promise((_resolve, reject) => {
209
228
  var _a;
210
229
  (_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
211
- reject(new Error('renderStill() got cancelled'));
230
+ reject(new Error(make_cancel_signal_1.cancelErrorMessages.renderStill));
212
231
  });
213
232
  }),
214
233
  ]);
215
234
  };
235
+ exports.internalRenderStill = internalRenderStill;
236
+ /**
237
+ *
238
+ * @description Render a still frame from a composition
239
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/render-still)
240
+ */
241
+ const renderStill = (options) => {
242
+ var _a;
243
+ const { composition, serveUrl, browserExecutable, cancelSignal, chromiumOptions, dumpBrowserLogs, envVariables, frame, imageFormat, inputProps, jpegQuality, onBrowserLog, onDownload, output, overwrite, port, puppeteerInstance, scale, timeoutInMilliseconds, verbose, quality, } = options;
244
+ if (typeof jpegQuality !== 'undefined' && imageFormat !== 'jpeg') {
245
+ throw new Error("You can only pass the `quality` option if `imageFormat` is 'jpeg'.");
246
+ }
247
+ if (quality) {
248
+ console.warn('Passing `quality()` to `renderStill` is deprecated. Use `jpegQuality` instead.');
249
+ }
250
+ return (0, exports.internalRenderStill)({
251
+ composition,
252
+ browserExecutable: browserExecutable !== null && browserExecutable !== void 0 ? browserExecutable : null,
253
+ cancelSignal: cancelSignal !== null && cancelSignal !== void 0 ? cancelSignal : null,
254
+ chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
255
+ dumpBrowserLogs: dumpBrowserLogs !== null && dumpBrowserLogs !== void 0 ? dumpBrowserLogs : false,
256
+ envVariables: envVariables !== null && envVariables !== void 0 ? envVariables : {},
257
+ frame: frame !== null && frame !== void 0 ? frame : 0,
258
+ imageFormat: imageFormat !== null && imageFormat !== void 0 ? imageFormat : image_format_1.DEFAULT_STILL_IMAGE_FORMAT,
259
+ indent: false,
260
+ inputProps: inputProps !== null && inputProps !== void 0 ? inputProps : {},
261
+ jpegQuality: (_a = jpegQuality !== null && jpegQuality !== void 0 ? jpegQuality : quality) !== null && _a !== void 0 ? _a : jpeg_quality_1.DEFAULT_JPEG_QUALITY,
262
+ onBrowserLog: onBrowserLog !== null && onBrowserLog !== void 0 ? onBrowserLog : null,
263
+ onDownload: onDownload !== null && onDownload !== void 0 ? onDownload : null,
264
+ output: output !== null && output !== void 0 ? output : null,
265
+ overwrite: overwrite !== null && overwrite !== void 0 ? overwrite : overwrite_1.DEFAULT_OVERWRITE,
266
+ port: port !== null && port !== void 0 ? port : null,
267
+ puppeteerInstance: puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : null,
268
+ scale: scale !== null && scale !== void 0 ? scale : 1,
269
+ server: undefined,
270
+ serveUrl,
271
+ timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT,
272
+ verbose: verbose !== null && verbose !== void 0 ? verbose : false,
273
+ });
274
+ };
216
275
  exports.renderStill = renderStill;
@@ -0,0 +1,6 @@
1
+ import type { HeadlessBrowser } from './browser/Browser';
2
+ export type BrowserReplacer = {
3
+ getBrowser: () => HeadlessBrowser;
4
+ replaceBrowser: (make: () => Promise<HeadlessBrowser>, makeNewPages: () => Promise<void>) => Promise<HeadlessBrowser>;
5
+ };
6
+ export declare const handleBrowserCrash: (instance: HeadlessBrowser) => BrowserReplacer;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleBrowserCrash = void 0;
4
+ const handleBrowserCrash = (instance) => {
5
+ let _instance = instance;
6
+ const waiters = [];
7
+ let replacing = false;
8
+ return {
9
+ getBrowser: () => _instance,
10
+ replaceBrowser: async (make, makeNewPages) => {
11
+ if (replacing) {
12
+ const waiter = new Promise((resolve, reject) => {
13
+ waiters.push({
14
+ resolve,
15
+ reject,
16
+ });
17
+ });
18
+ return waiter;
19
+ }
20
+ try {
21
+ replacing = true;
22
+ await _instance
23
+ .close(true)
24
+ .then(() => {
25
+ console.log('Killed previous browser and making new one');
26
+ })
27
+ .catch(() => {
28
+ // Ignore as browser crashed
29
+ });
30
+ const browser = await make();
31
+ _instance = browser;
32
+ await makeNewPages();
33
+ waiters.forEach((w) => w.resolve(browser));
34
+ console.log('Made new browser');
35
+ return browser;
36
+ }
37
+ catch (err) {
38
+ waiters.forEach((w) => w.reject(err));
39
+ throw err;
40
+ }
41
+ finally {
42
+ replacing = false;
43
+ }
44
+ },
45
+ };
46
+ };
47
+ exports.handleBrowserCrash = handleBrowserCrash;
File without changes
@@ -4,14 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.resolveAssetSrc = void 0;
7
- const url_1 = __importDefault(require("url"));
7
+ const node_url_1 = __importDefault(require("node:url"));
8
8
  const resolveAssetSrc = (src) => {
9
9
  if (!src.startsWith('file:')) {
10
10
  return src;
11
11
  }
12
12
  const { protocol } = new URL(src);
13
13
  if (protocol === 'file:')
14
- return url_1.default.fileURLToPath(src);
14
+ return node_url_1.default.fileURLToPath(src);
15
15
  throw new TypeError(`Unexpected src ${src}`);
16
16
  };
17
17
  exports.resolveAssetSrc = resolveAssetSrc;
File without changes
File without changes
@@ -1,11 +1,15 @@
1
1
  /// <reference types="node" />
2
+ import type { ClipRegion } from 'remotion';
2
3
  import type { Page } from './browser/BrowserPage';
3
- import type { ImageFormat } from './image-format';
4
- export declare const screenshotDOMElement: ({ page, imageFormat, quality, opts, }: {
4
+ import type { StillImageFormat } from './image-format';
5
+ export declare const screenshotDOMElement: ({ page, imageFormat, jpegQuality, opts, height, width, clipRegion, }: {
5
6
  page: Page;
6
- imageFormat: ImageFormat;
7
- quality: number | undefined;
7
+ imageFormat: StillImageFormat;
8
+ jpegQuality: number | undefined;
8
9
  opts: {
9
10
  path: string | null;
10
11
  };
12
+ height: number;
13
+ width: number;
14
+ clipRegion: ClipRegion | null;
11
15
  }) => Promise<Buffer>;
@@ -3,9 +3,11 @@ 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, }) => {
6
+ const screenshotDOMElement = async ({ page, imageFormat, jpegQuality, opts, height, width, clipRegion, }) => {
7
7
  const { path } = opts;
8
- if (imageFormat === 'png') {
8
+ if (imageFormat === 'png' ||
9
+ imageFormat === 'pdf' ||
10
+ imageFormat === 'webp') {
9
11
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
10
12
  pageFunction: () => {
11
13
  document.body.style.background = 'transparent';
@@ -25,14 +27,23 @@ const screenshotDOMElement = async ({ page, imageFormat, quality, opts, }) => {
25
27
  page,
26
28
  });
27
29
  }
30
+ // @ts-expect-error
28
31
  if (imageFormat === 'none') {
29
32
  throw new TypeError('Tried to make a screenshot with format "none"');
30
33
  }
31
- return (0, puppeteer_screenshot_1.screenshot)(page, {
34
+ const buf = await (0, puppeteer_screenshot_1.screenshot)({
35
+ page,
32
36
  omitBackground: imageFormat === 'png',
33
37
  path: path !== null && path !== void 0 ? path : undefined,
34
38
  type: imageFormat,
35
- quality,
39
+ jpegQuality,
40
+ width,
41
+ height,
42
+ clipRegion,
36
43
  });
44
+ if (typeof buf === 'string') {
45
+ throw new TypeError('Expected a buffer');
46
+ }
47
+ return buf;
37
48
  };
38
49
  exports.screenshotDOMElement = screenshotDOMElement;
@@ -1,5 +1,14 @@
1
1
  /// <reference types="node" />
2
+ import type { ClipRegion } from 'remotion';
2
3
  import type { Page } from './browser/BrowserPage';
3
- import type { ScreenshotOptions } from './browser/ScreenshotOptions';
4
4
  import type { StillImageFormat } from './image-format';
5
- export declare const _screenshotTask: (page: Page, format: StillImageFormat, options: ScreenshotOptions) => Promise<Buffer | string>;
5
+ export declare const screenshotTask: ({ format, height, omitBackground, page, width, path, jpegQuality, clipRegion, }: {
6
+ page: Page;
7
+ format: StillImageFormat;
8
+ path?: string | undefined;
9
+ jpegQuality?: number | undefined;
10
+ omitBackground: boolean;
11
+ width: number;
12
+ height: number;
13
+ clipRegion: ClipRegion | null;
14
+ }) => Promise<Buffer | string>;
@@ -3,10 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports._screenshotTask = void 0;
7
- const fs_1 = __importDefault(require("fs"));
6
+ exports.screenshotTask = void 0;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
8
  const perf_1 = require("./perf");
9
- const _screenshotTask = async (page, format, options) => {
9
+ const screenshotTask = async ({ format, height, omitBackground, page, width, path, jpegQuality, clipRegion, }) => {
10
10
  var _a;
11
11
  const client = page._client();
12
12
  const target = page.target();
@@ -15,26 +15,56 @@ const _screenshotTask = async (page, format, options) => {
15
15
  targetId: target._targetId,
16
16
  });
17
17
  (0, perf_1.stopPerfMeasure)(perfTarget);
18
- const shouldSetDefaultBackground = options.omitBackground && format === 'png';
18
+ const shouldSetDefaultBackground = omitBackground;
19
19
  if (shouldSetDefaultBackground)
20
20
  await client.send('Emulation.setDefaultBackgroundColorOverride', {
21
21
  color: { r: 0, g: 0, b: 0, a: 0 },
22
22
  });
23
23
  const cap = (0, perf_1.startPerfMeasure)('capture');
24
24
  try {
25
- const result = await client.send('Page.captureScreenshot', {
26
- format,
27
- quality: options.quality,
28
- clip: undefined,
29
- captureBeyondViewport: true,
30
- });
25
+ let result;
26
+ if (format === 'pdf') {
27
+ result = await client.send('Page.printToPDF', {
28
+ paperWidth: width / 96,
29
+ paperHeight: height / 96,
30
+ marginTop: 0,
31
+ marginBottom: 0,
32
+ marginLeft: 0,
33
+ marginRight: 0,
34
+ scale: 1,
35
+ printBackground: true,
36
+ });
37
+ }
38
+ else {
39
+ result = await client.send('Page.captureScreenshot', {
40
+ format,
41
+ quality: jpegQuality,
42
+ clip: clipRegion !== null && clipRegion !== 'hide'
43
+ ? {
44
+ x: clipRegion.x,
45
+ y: clipRegion.y,
46
+ height: clipRegion.height,
47
+ scale: 1,
48
+ width: clipRegion.width,
49
+ }
50
+ : {
51
+ x: 0,
52
+ y: 0,
53
+ height,
54
+ scale: 1,
55
+ width,
56
+ },
57
+ captureBeyondViewport: true,
58
+ optimizeForSpeed: true,
59
+ });
60
+ }
31
61
  (0, perf_1.stopPerfMeasure)(cap);
32
62
  if (shouldSetDefaultBackground)
33
63
  await client.send('Emulation.setDefaultBackgroundColorOverride');
34
64
  const saveMarker = (0, perf_1.startPerfMeasure)('save');
35
65
  const buffer = Buffer.from(result.data, 'base64');
36
- if (options.path)
37
- await fs_1.default.promises.writeFile(options.path, buffer);
66
+ if (path)
67
+ await node_fs_1.default.promises.writeFile(path, buffer);
38
68
  (0, perf_1.stopPerfMeasure)(saveMarker);
39
69
  return buffer;
40
70
  }
@@ -51,4 +81,4 @@ const _screenshotTask = async (page, format, options) => {
51
81
  throw err;
52
82
  }
53
83
  };
54
- exports._screenshotTask = _screenshotTask;
84
+ exports.screenshotTask = screenshotTask;
@@ -1,4 +1,5 @@
1
1
  import type { Page } from './browser/BrowserPage';
2
+ export declare const waitForReady: (page: Page) => Promise<unknown>;
2
3
  export declare const seekToFrame: ({ frame, page, }: {
3
4
  frame: number;
4
5
  page: Page;