@remotion/renderer 3.0.21 → 3.0.24

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 (357) hide show
  1. package/dist/abort.d.ts +7 -0
  2. package/dist/abort.js +20 -0
  3. package/dist/assets/calculate-asset-positions.d.ts +2 -2
  4. package/dist/assets/convert-assets-to-file-urls.d.ts +2 -2
  5. package/dist/assets/download-and-map-assets-to-file.d.ts +1 -1
  6. package/dist/assets/ffmpeg-volume-expression.d.ts +1 -1
  7. package/dist/assets/flatten-volume-array.d.ts +1 -1
  8. package/dist/assets/get-audio-channels.d.ts +1 -1
  9. package/dist/assets/types.d.ts +1 -1
  10. package/dist/browser/Browser.d.ts +5 -159
  11. package/dist/browser/Browser.js +5 -190
  12. package/dist/browser/BrowserConnector.d.ts +1 -8
  13. package/dist/browser/BrowserConnector.js +0 -32
  14. package/dist/browser/BrowserFetcher.d.ts +1 -1
  15. package/dist/browser/BrowserFetcher.js +8 -10
  16. package/dist/browser/BrowserRunner.d.ts +2 -2
  17. package/dist/browser/BrowserRunner.js +1 -1
  18. package/dist/browser/Connection.d.ts +4 -11
  19. package/dist/browser/Connection.js +5 -25
  20. package/dist/browser/ConsoleMessage.d.ts +4 -28
  21. package/dist/browser/ConsoleMessage.js +5 -32
  22. package/dist/browser/DOMWorld.d.ts +5 -6
  23. package/dist/browser/DOMWorld.js +2 -18
  24. package/dist/browser/EvalTypes.d.ts +1 -1
  25. package/dist/browser/EventEmitter.d.ts +1 -48
  26. package/dist/browser/EventEmitter.js +0 -49
  27. package/dist/browser/ExecutionContext.d.ts +7 -8
  28. package/dist/browser/ExecutionContext.js +0 -16
  29. package/dist/browser/FrameManager.d.ts +10 -14
  30. package/dist/browser/FrameManager.js +3 -19
  31. package/dist/browser/HTTPRequest.d.ts +4 -18
  32. package/dist/browser/HTTPRequest.js +3 -48
  33. package/dist/browser/HTTPResponse.d.ts +2 -81
  34. package/dist/browser/HTTPResponse.js +3 -173
  35. package/dist/browser/JSHandle.d.ts +4 -5
  36. package/dist/browser/JSHandle.js +0 -3
  37. package/dist/browser/LaunchOptions.d.ts +2 -81
  38. package/dist/browser/Launcher.d.ts +2 -2
  39. package/dist/browser/Launcher.js +21 -119
  40. package/dist/browser/LifecycleWatcher.d.ts +4 -4
  41. package/dist/browser/LifecycleWatcher.js +4 -17
  42. package/dist/browser/NetworkEventManager.d.ts +2 -4
  43. package/dist/browser/NetworkEventManager.js +0 -47
  44. package/dist/browser/NetworkManager.d.ts +1 -3
  45. package/dist/browser/NetworkManager.js +6 -42
  46. package/dist/browser/NodeWebSocketTransport.d.ts +8 -2
  47. package/dist/browser/NodeWebSocketTransport.js +1 -1
  48. package/dist/browser/{page.d.ts → Page.d.ts} +7 -13
  49. package/dist/browser/{page.js → Page.js} +14 -9
  50. package/dist/browser/PuppeteerNode.d.ts +7 -59
  51. package/dist/browser/PuppeteerNode.js +4 -66
  52. package/dist/browser/Target.d.ts +4 -4
  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 +3 -3
  58. package/dist/browser/util.js +1 -1
  59. package/dist/browser-log.d.ts +1 -1
  60. package/dist/calculate-ffmpeg-filters.d.ts +1 -1
  61. package/dist/can-use-parallel-encoding.d.ts +1 -1
  62. package/dist/cancel.d.ts +7 -0
  63. package/dist/cancel.js +25 -0
  64. package/dist/combine-videos.d.ts +1 -1
  65. package/dist/convert-to-pcm.d.ts +1 -1
  66. package/dist/create-silent-audio.d.ts +1 -1
  67. package/dist/cycle-browser-tabs.d.ts +1 -1
  68. package/dist/delay-render-embedded-stack.d.ts +1 -1
  69. package/dist/ensure-faststart.d.ts +1 -0
  70. package/dist/ensure-faststart.js +14 -0
  71. package/dist/ensure-presentation-timestamp.d.ts +1 -1
  72. package/dist/ensure-presentation-timestamp.js +1 -1
  73. package/dist/error-handling/handle-javascript-exception.d.ts +2 -2
  74. package/dist/error-handling/handle-javascript-exception.js +2 -2
  75. package/dist/error-handling/symbolicate-error.d.ts +1 -1
  76. package/dist/error-handling/symbolicateable-error.d.ts +1 -1
  77. package/dist/extract-frame-from-video.d.ts +7 -2
  78. package/dist/extract-frame-from-video.js +62 -11
  79. package/dist/faststart/atom.d.ts +35 -0
  80. package/dist/faststart/atom.js +138 -0
  81. package/dist/faststart/index.d.ts +0 -0
  82. package/dist/faststart/index.js +1 -0
  83. package/dist/faststart/options.d.ts +6 -0
  84. package/dist/faststart/options.js +2 -0
  85. package/dist/faststart/qt-faststart.d.ts +18 -0
  86. package/dist/faststart/qt-faststart.js +66 -0
  87. package/dist/faststart/update-chunk-offsets.d.ts +10 -0
  88. package/dist/faststart/update-chunk-offsets.js +114 -0
  89. package/dist/faststart/util.d.ts +9 -0
  90. package/dist/faststart/util.js +34 -0
  91. package/dist/get-audio-codec-name.d.ts +1 -1
  92. package/dist/get-browser-instance.d.ts +4 -3
  93. package/dist/get-codec-name.d.ts +1 -1
  94. package/dist/get-compositions.d.ts +4 -4
  95. package/dist/get-compositions.js +2 -2
  96. package/dist/get-duration-from-frame-range.d.ts +1 -1
  97. package/dist/get-extension-from-codec.d.ts +1 -1
  98. package/dist/get-frame-to-render.d.ts +1 -1
  99. package/dist/get-local-browser-executable.d.ts +1 -1
  100. package/dist/get-local-browser-executable.js +7 -5
  101. package/dist/get-prores-profile-name.d.ts +1 -1
  102. package/dist/get-video-info.d.ts +8 -0
  103. package/dist/get-video-info.js +45 -0
  104. package/dist/image-format.d.ts +1 -1
  105. package/dist/index.d.ts +0 -1
  106. package/dist/is-vp9-video.d.ts +3 -0
  107. package/dist/is-vp9-video.js +24 -0
  108. package/dist/last-frame-from-video-cache.d.ts +5 -1
  109. package/dist/last-frame-from-video-cache.js +6 -1
  110. package/dist/merge-audio-track.d.ts +1 -1
  111. package/dist/offthread/index.d.ts +0 -0
  112. package/dist/offthread/index.js +1 -0
  113. package/dist/offthread-video-server.d.ts +4 -3
  114. package/dist/offthread-video-server.js +14 -3
  115. package/dist/open-browser.d.ts +5 -3
  116. package/dist/open-browser.js +8 -8
  117. package/dist/prepare-server.d.ts +2 -2
  118. package/dist/preprocess-audio-track.d.ts +2 -2
  119. package/dist/prespawn-ffmpeg.d.ts +2 -2
  120. package/dist/provide-screenshot.d.ts +4 -4
  121. package/dist/provide-screenshot.js +0 -1
  122. package/dist/puppeteer-evaluate.d.ts +1 -1
  123. package/dist/puppeteer-evaluate.js +3 -4
  124. package/dist/puppeteer-screenshot.d.ts +3 -2
  125. package/dist/puppeteer-screenshot.js +2 -4
  126. package/dist/render-frames.d.ts +9 -9
  127. package/dist/render-frames.js +18 -10
  128. package/dist/render-gif.d.ts +2 -0
  129. package/dist/render-gif.js +242 -0
  130. package/dist/render-media.d.ts +8 -8
  131. package/dist/render-still.d.ts +6 -6
  132. package/dist/screenshot-dom-element.d.ts +6 -7
  133. package/dist/screenshot-dom-element.js +3 -6
  134. package/dist/screenshot-task.d.ts +3 -2
  135. package/dist/screenshot-task.js +3 -5
  136. package/dist/seek-to-frame.d.ts +2 -2
  137. package/dist/serve-handler/index.d.ts +1 -1
  138. package/dist/serve-handler/index.js +0 -1
  139. package/dist/serve-static.d.ts +2 -2
  140. package/dist/set-props-and-env.d.ts +1 -1
  141. package/dist/set-props-and-env.js +3 -0
  142. package/dist/should-use-vp9-decoder.d.ts +0 -0
  143. package/dist/should-use-vp9-decoder.js +1 -0
  144. package/dist/stitch-frames-to-gif.d.ts +8 -0
  145. package/dist/stitch-frames-to-gif.js +128 -0
  146. package/dist/stitch-frames-to-video.d.ts +3 -3
  147. package/dist/stringify-ffmpeg-filter.d.ts +2 -2
  148. package/dist/stringify-ffmpeg-filter.js +3 -0
  149. package/dist/symbolicate-stacktrace.d.ts +1 -1
  150. package/dist/types.d.ts +1 -1
  151. package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
  152. package/dist/validate-offthreadvideo-image-format.d.ts +1 -0
  153. package/dist/validate-offthreadvideo-image-format.js +15 -0
  154. package/dist/validate-output-filename.d.ts +1 -1
  155. package/package.json +10 -6
  156. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  157. package/dist/assets/calculate-asset-positions.js.map +0 -1
  158. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  159. package/dist/assets/calculate-atempo.js.map +0 -1
  160. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  161. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  162. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  163. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  164. package/dist/assets/download-file.d.ts.map +0 -1
  165. package/dist/assets/download-file.js.map +0 -1
  166. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  167. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  168. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  169. package/dist/assets/flatten-volume-array.js.map +0 -1
  170. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  171. package/dist/assets/get-audio-channels.js.map +0 -1
  172. package/dist/assets/read-file.d.ts.map +0 -1
  173. package/dist/assets/read-file.js.map +0 -1
  174. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  175. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  176. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  177. package/dist/assets/sanitize-filename.js.map +0 -1
  178. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  179. package/dist/assets/sanitize-filepath.js.map +0 -1
  180. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  181. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  182. package/dist/assets/types.d.ts.map +0 -1
  183. package/dist/assets/types.js.map +0 -1
  184. package/dist/browser/Accessibility.d.ts +0 -175
  185. package/dist/browser/Accessibility.js +0 -423
  186. package/dist/browser/AriaQueryHandler.d.ts +0 -20
  187. package/dist/browser/AriaQueryHandler.js +0 -108
  188. package/dist/browser/Coverage.d.ts +0 -180
  189. package/dist/browser/Coverage.js +0 -371
  190. package/dist/browser/Debug.d.ts +0 -19
  191. package/dist/browser/Debug.js +0 -42
  192. package/dist/browser/DeviceDescriptors.d.ts +0 -40
  193. package/dist/browser/DeviceDescriptors.js +0 -1407
  194. package/dist/browser/FileChooser.d.ts +0 -56
  195. package/dist/browser/FileChooser.js +0 -86
  196. package/dist/browser/Input.d.ts +0 -355
  197. package/dist/browser/Input.js +0 -592
  198. package/dist/browser/NetworkConditions.d.ts +0 -26
  199. package/dist/browser/NetworkConditions.js +0 -33
  200. package/dist/browser/PDFOptions.d.ts +0 -165
  201. package/dist/browser/PDFOptions.js +0 -34
  202. package/dist/browser/PipeTransport.d.ts +0 -10
  203. package/dist/browser/PipeTransport.js +0 -86
  204. package/dist/browser/Puppeteer.d.ts +0 -35
  205. package/dist/browser/Puppeteer.js +0 -17
  206. package/dist/browser/QueryHandler.d.ts +0 -64
  207. package/dist/browser/QueryHandler.js +0 -183
  208. package/dist/browser/SecurityDetails.d.ts +0 -55
  209. package/dist/browser/SecurityDetails.js +0 -95
  210. package/dist/browser/Tracing.d.ts +0 -45
  211. package/dist/browser/Tracing.js +0 -136
  212. package/dist/browser/USKeyboardLayout.d.ts +0 -39
  213. package/dist/browser/USKeyboardLayout.js +0 -406
  214. package/dist/browser/WebWorker.d.ts +0 -96
  215. package/dist/browser/WebWorker.js +0 -122
  216. package/dist/browser/dialog.d.ts +0 -70
  217. package/dist/browser/dialog.js +0 -114
  218. package/dist/browser/fetch.d.ts +0 -16
  219. package/dist/browser/fetch.js +0 -46
  220. package/dist/browser/find-up.d.ts +0 -4
  221. package/dist/browser/find-up.js +0 -85
  222. package/dist/browser/pkg-dir.d.ts +0 -3
  223. package/dist/browser/pkg-dir.js +0 -13
  224. package/dist/browser-log.d.ts.map +0 -1
  225. package/dist/browser-log.js.map +0 -1
  226. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  227. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  228. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  229. package/dist/can-use-parallel-encoding.js.map +0 -1
  230. package/dist/chunk.d.ts.map +0 -1
  231. package/dist/chunk.js.map +0 -1
  232. package/dist/combine-videos.d.ts.map +0 -1
  233. package/dist/combine-videos.js.map +0 -1
  234. package/dist/convert-to-pcm.d.ts.map +0 -1
  235. package/dist/convert-to-pcm.js.map +0 -1
  236. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  237. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  238. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  239. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  240. package/dist/create-silent-audio.d.ts.map +0 -1
  241. package/dist/create-silent-audio.js.map +0 -1
  242. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  243. package/dist/cycle-browser-tabs.js.map +0 -1
  244. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  245. package/dist/delay-render-embedded-stack.js.map +0 -1
  246. package/dist/delete-directory.d.ts.map +0 -1
  247. package/dist/delete-directory.js.map +0 -1
  248. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  249. package/dist/ensure-frames-in-order.js.map +0 -1
  250. package/dist/ensure-output-directory.d.ts.map +0 -1
  251. package/dist/ensure-output-directory.js.map +0 -1
  252. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  253. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  254. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  255. package/dist/error-handling/symbolicate-error.js.map +0 -1
  256. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  257. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  258. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  259. package/dist/ffmpeg-filter-file.js.map +0 -1
  260. package/dist/ffmpeg-flags.d.ts.map +0 -1
  261. package/dist/ffmpeg-flags.js.map +0 -1
  262. package/dist/get-audio-codec-name.d.ts.map +0 -1
  263. package/dist/get-audio-codec-name.js.map +0 -1
  264. package/dist/get-browser-instance.d.ts.map +0 -1
  265. package/dist/get-browser-instance.js.map +0 -1
  266. package/dist/get-codec-name.d.ts.map +0 -1
  267. package/dist/get-codec-name.js.map +0 -1
  268. package/dist/get-compositions.d.ts.map +0 -1
  269. package/dist/get-compositions.js.map +0 -1
  270. package/dist/get-concurrency.d.ts.map +0 -1
  271. package/dist/get-concurrency.js.map +0 -1
  272. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  273. package/dist/get-duration-from-frame-range.js.map +0 -1
  274. package/dist/get-extension-from-codec.d.ts.map +0 -1
  275. package/dist/get-extension-from-codec.js.map +0 -1
  276. package/dist/get-frame-to-render.d.ts.map +0 -1
  277. package/dist/get-frame-to-render.js.map +0 -1
  278. package/dist/get-local-browser-executable.d.ts.map +0 -1
  279. package/dist/get-local-browser-executable.js.map +0 -1
  280. package/dist/get-port.d.ts.map +0 -1
  281. package/dist/get-port.js.map +0 -1
  282. package/dist/get-prores-profile-name.d.ts.map +0 -1
  283. package/dist/get-prores-profile-name.js.map +0 -1
  284. package/dist/image-format.d.ts.map +0 -1
  285. package/dist/image-format.js.map +0 -1
  286. package/dist/index.d.ts.map +0 -1
  287. package/dist/index.js.map +0 -1
  288. package/dist/is-serve-url.d.ts.map +0 -1
  289. package/dist/is-serve-url.js.map +0 -1
  290. package/dist/legacy-webpack-config.d.ts.map +0 -1
  291. package/dist/legacy-webpack-config.js.map +0 -1
  292. package/dist/make-assets-download-dir.d.ts.map +0 -1
  293. package/dist/make-assets-download-dir.js.map +0 -1
  294. package/dist/merge-audio-track.d.ts.map +0 -1
  295. package/dist/merge-audio-track.js.map +0 -1
  296. package/dist/normalize-serve-url.d.ts.map +0 -1
  297. package/dist/normalize-serve-url.js.map +0 -1
  298. package/dist/open-browser.d.ts.map +0 -1
  299. package/dist/open-browser.js.map +0 -1
  300. package/dist/p-limit.d.ts.map +0 -1
  301. package/dist/p-limit.js.map +0 -1
  302. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  303. package/dist/parse-browser-error-stack.js.map +0 -1
  304. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  305. package/dist/parse-ffmpeg-progress.js.map +0 -1
  306. package/dist/pool.d.ts.map +0 -1
  307. package/dist/pool.js.map +0 -1
  308. package/dist/prepare-server.d.ts.map +0 -1
  309. package/dist/prepare-server.js.map +0 -1
  310. package/dist/preprocess-audio-track.d.ts.map +0 -1
  311. package/dist/preprocess-audio-track.js.map +0 -1
  312. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  313. package/dist/prespawn-ffmpeg.js.map +0 -1
  314. package/dist/provide-screenshot.d.ts.map +0 -1
  315. package/dist/provide-screenshot.js.map +0 -1
  316. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  317. package/dist/puppeteer-evaluate.js.map +0 -1
  318. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  319. package/dist/puppeteer-screenshot.js.map +0 -1
  320. package/dist/render-frames.d.ts.map +0 -1
  321. package/dist/render-frames.js.map +0 -1
  322. package/dist/render-media.d.ts.map +0 -1
  323. package/dist/render-media.js.map +0 -1
  324. package/dist/render-still.d.ts.map +0 -1
  325. package/dist/render-still.js.map +0 -1
  326. package/dist/resolve-asset-src.d.ts.map +0 -1
  327. package/dist/resolve-asset-src.js.map +0 -1
  328. package/dist/sample-rate.d.ts.map +0 -1
  329. package/dist/sample-rate.js.map +0 -1
  330. package/dist/screenshot-dom-element.d.ts.map +0 -1
  331. package/dist/screenshot-dom-element.js.map +0 -1
  332. package/dist/screenshot-task.d.ts.map +0 -1
  333. package/dist/screenshot-task.js.map +0 -1
  334. package/dist/seek-to-frame.d.ts.map +0 -1
  335. package/dist/seek-to-frame.js.map +0 -1
  336. package/dist/serve-static.d.ts.map +0 -1
  337. package/dist/serve-static.js.map +0 -1
  338. package/dist/set-props-and-env.d.ts.map +0 -1
  339. package/dist/set-props-and-env.js.map +0 -1
  340. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  341. package/dist/stitch-frames-to-video.js.map +0 -1
  342. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  343. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  344. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  345. package/dist/symbolicate-stacktrace.js.map +0 -1
  346. package/dist/tmp-dir.d.ts.map +0 -1
  347. package/dist/tmp-dir.js.map +0 -1
  348. package/dist/types.d.ts.map +0 -1
  349. package/dist/types.js.map +0 -1
  350. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  351. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  352. package/dist/validate-ffmpeg.d.ts.map +0 -1
  353. package/dist/validate-ffmpeg.js.map +0 -1
  354. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  355. package/dist/validate-puppeteer-timeout.js.map +0 -1
  356. package/dist/validate-scale.d.ts.map +0 -1
  357. package/dist/validate-scale.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import { Codec } from 'remotion';
1
+ import type { Codec } from 'remotion';
2
2
  export declare const getFileExtensionFromCodec: (codec: Codec, type: 'chunk' | 'final') => "mp3" | "aac" | "wav" | "mp4" | "mkv" | "mov" | "webm";
@@ -1,2 +1,2 @@
1
- import { FrameRange } from 'remotion';
1
+ import type { FrameRange } from 'remotion';
2
2
  export declare const getRealFrameRange: (durationInFrames: number, frameRange: FrameRange | null) => [number, number];
@@ -1,3 +1,3 @@
1
- import { Browser, BrowserExecutable } from 'remotion';
1
+ import type { Browser, BrowserExecutable } from 'remotion';
2
2
  export declare const ensureLocalBrowser: (browser: Browser, preferredBrowserExecutable: BrowserExecutable) => Promise<void>;
3
3
  export declare const getLocalBrowserExecutable: (browser: Browser, preferredBrowserExecutable: BrowserExecutable) => string;
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getLocalBrowserExecutable = exports.ensureLocalBrowser = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
- const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
9
- const install_1 = require("puppeteer-core/lib/cjs/puppeteer/node/install");
10
- const revisions_1 = require("puppeteer-core/lib/cjs/puppeteer/revisions");
8
+ const create_browser_fetcher_1 = require("./browser/create-browser-fetcher");
9
+ const node_1 = require("./browser/node");
10
+ const revisions_1 = require("./browser/revisions");
11
11
  const getSearchPathsForProduct = (product) => {
12
12
  var _a;
13
13
  if (product === 'chrome') {
@@ -44,8 +44,10 @@ const getLocalBrowser = (product) => {
44
44
  return null;
45
45
  };
46
46
  const getBrowserRevision = (product) => {
47
- const browserFetcher = puppeteer_core_1.default.createBrowserFetcher({
47
+ const browserFetcher = node_1.puppeteer.createBrowserFetcher({
48
48
  product,
49
+ path: null,
50
+ platform: null,
49
51
  });
50
52
  const revisionInfo = browserFetcher.revisionInfo(product === 'firefox'
51
53
  ? revisions_1.PUPPETEER_REVISIONS.firefox
@@ -73,7 +75,7 @@ const ensureLocalBrowser = async (browser, preferredBrowserExecutable) => {
73
75
  const status = getBrowserStatus(mapBrowserToProduct(browser), preferredBrowserExecutable);
74
76
  if (status.type === 'no-browser') {
75
77
  console.log('No local browser could be found. Downloading one from the internet...');
76
- await (0, install_1.downloadBrowser)();
78
+ await (0, create_browser_fetcher_1.downloadBrowser)(browser);
77
79
  }
78
80
  };
79
81
  exports.ensureLocalBrowser = ensureLocalBrowser;
@@ -1,2 +1,2 @@
1
- import { Codec, ProResProfile } from 'remotion';
1
+ import type { Codec, ProResProfile } from 'remotion';
2
2
  export declare const getProResProfileName: (codec: Codec, proResProfile: ProResProfile | undefined) => string | null;
@@ -0,0 +1,8 @@
1
+ import type { FfmpegExecutable } from 'remotion';
2
+ declare type Result = {
3
+ specialVcodec: SpecialVCodecForTransparency;
4
+ needsResize: [number, number] | null;
5
+ };
6
+ export declare type SpecialVCodecForTransparency = 'vp9' | 'vp8' | 'none';
7
+ export declare const getVideoInfo: (src: string, ffprobeExecutable: FfmpegExecutable) => Promise<Result>;
8
+ export {};
@@ -0,0 +1,45 @@
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.getVideoInfo = void 0;
7
+ const execa_1 = __importDefault(require("execa"));
8
+ const p_limit_1 = require("./p-limit");
9
+ const isVp9VideoCache = {};
10
+ const limit = (0, p_limit_1.pLimit)(1);
11
+ async function getVideoInfoUnlimited(src, ffprobeExecutable) {
12
+ var _a;
13
+ if (typeof isVp9VideoCache[src] !== 'undefined') {
14
+ return isVp9VideoCache[src];
15
+ }
16
+ const task = await (0, execa_1.default)(ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : 'ffprobe', [src]);
17
+ const isVp9 = task.stderr.includes('Video: vp9');
18
+ const isVp8 = task.stderr.includes('Video: vp8');
19
+ const dimensions = (_a = task.stderr
20
+ .split('\n')
21
+ .find((n) => n.trim().startsWith('Stream #'))) === null || _a === void 0 ? void 0 : _a.match(/([0-9]{2,6})x([0-9]{2,6})/);
22
+ const dar = task.stderr.match(/DAR\s([0-9]+):([0-9]+)/);
23
+ let needsResize = null;
24
+ if (dimensions && dar) {
25
+ const width = parseInt(dimensions[1], 10);
26
+ const height = parseInt(dimensions[2], 10);
27
+ const darWidth = parseInt(dar[1], 10);
28
+ const darHeight = parseInt(dar[2], 10);
29
+ const actualWidth = Math.round(width * (darWidth / darHeight));
30
+ const actualHeight = Math.round(height * (darHeight / darWidth));
31
+ if (actualWidth !== width || actualHeight !== height) {
32
+ needsResize = [actualWidth, actualHeight];
33
+ }
34
+ }
35
+ const result = {
36
+ specialVcodec: isVp9 ? 'vp9' : isVp8 ? 'vp8' : 'none',
37
+ needsResize,
38
+ };
39
+ isVp9VideoCache[src] = result;
40
+ return isVp9VideoCache[src];
41
+ }
42
+ const getVideoInfo = (src, ffprobeExecutable) => {
43
+ return limit(() => getVideoInfoUnlimited(src, ffprobeExecutable));
44
+ };
45
+ exports.getVideoInfo = getVideoInfo;
@@ -1,2 +1,2 @@
1
- import { ImageFormat } from 'remotion';
1
+ import type { ImageFormat } from 'remotion';
2
2
  export declare const DEFAULT_IMAGE_FORMAT: ImageFormat;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import execa from 'execa';
3
2
  import mime from 'mime-types';
4
3
  import { SymbolicateableError } from './error-handling/symbolicateable-error';
@@ -0,0 +1,3 @@
1
+ import type { FfmpegExecutable } from 'remotion';
2
+ export declare type SpecialVCodecForTransparency = 'vp9' | 'vp8' | 'none';
3
+ export declare const getSpecialVCodecForTransparency: (src: string, ffprobeExecutable: FfmpegExecutable) => Promise<SpecialVCodecForTransparency>;
@@ -0,0 +1,24 @@
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.getSpecialVCodecForTransparency = void 0;
7
+ const execa_1 = __importDefault(require("execa"));
8
+ const p_limit_1 = require("./p-limit");
9
+ const isVp9VideoCache = {};
10
+ const limit = (0, p_limit_1.pLimit)(1);
11
+ async function getSpecialVCodecForTransparencyUnlimited(src, ffprobeExecutable) {
12
+ if (typeof isVp9VideoCache[src] !== 'undefined') {
13
+ return isVp9VideoCache[src];
14
+ }
15
+ const task = await (0, execa_1.default)(ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : 'ffprobe', [src]);
16
+ const isVp9 = task.stderr.includes('Video: vp9');
17
+ const isVp8 = task.stderr.includes('Video: vp8');
18
+ isVp9VideoCache[src] = isVp9 ? 'vp9' : isVp8 ? 'vp8' : 'none';
19
+ return isVp9VideoCache[src];
20
+ }
21
+ const getSpecialVCodecForTransparency = (src, ffprobeExecutable) => {
22
+ return limit(() => getSpecialVCodecForTransparencyUnlimited(src, ffprobeExecutable));
23
+ };
24
+ exports.getSpecialVCodecForTransparency = getSpecialVCodecForTransparency;
@@ -1,9 +1,13 @@
1
- import { FfmpegExecutable } from 'remotion';
1
+ import type { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
2
+ import type { SpecialVCodecForTransparency } from './get-video-info';
2
3
  export declare type LastFrameOptions = {
3
4
  ffmpegExecutable: FfmpegExecutable;
4
5
  ffprobeExecutable: FfmpegExecutable;
5
6
  offset: number;
6
7
  src: string;
8
+ specialVCodecForTransparency: SpecialVCodecForTransparency;
9
+ imageFormat: OffthreadVideoImageFormat;
10
+ needsResize: [number, number] | null;
7
11
  };
8
12
  export declare const setLastFrameInCache: (options: LastFrameOptions, data: Buffer) => void;
9
13
  export declare const getLastFrameFromCache: (options: LastFrameOptions) => Buffer | null;
@@ -6,7 +6,12 @@ let map = {};
6
6
  const MAX_CACHE_SIZE = 50 * 1024 * 1024; // 50MB
7
7
  let bufferSize = 0;
8
8
  const makeLastFrameCacheKey = (options) => {
9
- return [options.ffmpegExecutable, options.offset, options.src].join('-');
9
+ return [
10
+ options.ffmpegExecutable,
11
+ options.offset,
12
+ options.src,
13
+ options.imageFormat,
14
+ ].join('-');
10
15
  };
11
16
  const setLastFrameInCache = (options, data) => {
12
17
  const key = makeLastFrameCacheKey(options);
@@ -1,4 +1,4 @@
1
- import { FfmpegExecutable } from 'remotion';
1
+ import type { FfmpegExecutable } from 'remotion';
2
2
  declare type Options = {
3
3
  ffmpegExecutable: FfmpegExecutable;
4
4
  files: string[];
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -1,9 +1,10 @@
1
- import { RequestListener } from 'http';
2
- import { FfmpegExecutable } from 'remotion';
3
- import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
1
+ import type { RequestListener } from 'http';
2
+ import type { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
3
+ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
4
4
  export declare const extractUrlAndSourceFromUrl: (url: string) => {
5
5
  src: string;
6
6
  time: number;
7
+ imageFormat: OffthreadVideoImageFormat;
7
8
  };
8
9
  export declare const startOffthreadVideoServer: ({ ffmpegExecutable, ffprobeExecutable, downloadDir, onDownload, onError, }: {
9
10
  ffmpegExecutable: FfmpegExecutable;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.startOffthreadVideoServer = exports.extractUrlAndSourceFromUrl = void 0;
4
+ const remotion_1 = require("remotion");
4
5
  const url_1 = require("url");
5
6
  const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
6
7
  const extract_frame_from_video_1 = require("./extract-frame-from-video");
@@ -19,7 +20,16 @@ const extractUrlAndSourceFromUrl = (url) => {
19
20
  if (!time) {
20
21
  throw new Error('Did not get `time` parameter');
21
22
  }
22
- return { src, time: parseFloat(time) };
23
+ const imageFormat = params.get('imageFormat');
24
+ if (!imageFormat) {
25
+ throw new TypeError('Did not get `imageFormat` parameter');
26
+ }
27
+ remotion_1.Internals.validateOffthreadVideoImageFormat(imageFormat);
28
+ return {
29
+ src,
30
+ time: parseFloat(time),
31
+ imageFormat: imageFormat,
32
+ };
23
33
  };
24
34
  exports.extractUrlAndSourceFromUrl = extractUrlAndSourceFromUrl;
25
35
  const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downloadDir, onDownload, onError, }) => {
@@ -32,9 +42,9 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downlo
32
42
  res.end();
33
43
  return;
34
44
  }
45
+ const { src, time, imageFormat } = (0, exports.extractUrlAndSourceFromUrl)(req.url);
35
46
  res.setHeader('access-control-allow-origin', '*');
36
- res.setHeader('content-type', 'image/jpg');
37
- const { src, time } = (0, exports.extractUrlAndSourceFromUrl)(req.url);
47
+ res.setHeader('content-type', `image/${imageFormat === 'jpeg' ? 'jpg' : 'png'}`);
38
48
  const to = (0, download_and_map_assets_to_file_1.getSanitizedFilenameForAssetUrl)({ downloadDir, src });
39
49
  (0, download_and_map_assets_to_file_1.startDownloadForSrc)({ src, downloadDir, onDownload }).catch((err) => {
40
50
  onError(new Error(`Error while downloading asset: ${err.stack}`));
@@ -46,6 +56,7 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downlo
46
56
  src: to,
47
57
  ffmpegExecutable,
48
58
  ffprobeExecutable,
59
+ imageFormat,
49
60
  });
50
61
  })
51
62
  .then((readable) => {
@@ -1,5 +1,6 @@
1
- import puppeteer from 'puppeteer-core';
2
- import { Browser } from 'remotion';
1
+ import type { Browser } from 'remotion';
2
+ import type { Browser as PuppeteerBrowser } from './browser/Browser';
3
+ import type { Viewport } from './browser/PuppeteerViewport';
3
4
  declare const validRenderers: readonly ["swangle", "angle", "egl", "swiftshader"];
4
5
  declare type OpenGlRenderer = typeof validRenderers[number];
5
6
  export declare type ChromiumOptions = {
@@ -14,5 +15,6 @@ export declare const openBrowser: (browser: Browser, options?: {
14
15
  browserExecutable?: string | null;
15
16
  chromiumOptions?: ChromiumOptions;
16
17
  forceDeviceScaleFactor?: number;
17
- }) => Promise<puppeteer.Browser>;
18
+ viewport?: Viewport;
19
+ }) => Promise<PuppeteerBrowser>;
18
20
  export {};
@@ -7,8 +7,8 @@ exports.openBrowser = exports.killAllBrowsers = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const os_1 = __importDefault(require("os"));
9
9
  const path_1 = __importDefault(require("path"));
10
- const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
11
10
  const remotion_1 = require("remotion");
11
+ const node_1 = require("./browser/node");
12
12
  const get_local_browser_executable_1 = require("./get-local-browser-executable");
13
13
  const validRenderers = ['swangle', 'angle', 'egl', 'swiftshader'];
14
14
  const getOpenGlRenderer = (option) => {
@@ -33,18 +33,17 @@ const killAllBrowsers = async () => {
33
33
  };
34
34
  exports.killAllBrowsers = killAllBrowsers;
35
35
  const openBrowser = async (browser, options) => {
36
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
36
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
37
37
  if (browser === 'firefox' && !remotion_1.Internals.FEATURE_FLAG_FIREFOX_SUPPORT) {
38
38
  throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
39
39
  }
40
40
  await (0, get_local_browser_executable_1.ensureLocalBrowser)(browser, (_a = options === null || options === void 0 ? void 0 : options.browserExecutable) !== null && _a !== void 0 ? _a : null);
41
41
  const executablePath = (0, get_local_browser_executable_1.getLocalBrowserExecutable)(browser, (_b = options === null || options === void 0 ? void 0 : options.browserExecutable) !== null && _b !== void 0 ? _b : null);
42
42
  const customGlRenderer = getOpenGlRenderer((_d = (_c = options === null || options === void 0 ? void 0 : options.chromiumOptions) === null || _c === void 0 ? void 0 : _c.gl) !== null && _d !== void 0 ? _d : null);
43
- const browserInstance = await puppeteer_core_1.default.launch({
43
+ const browserInstance = await node_1.puppeteer.launch({
44
44
  executablePath,
45
45
  product: browser,
46
46
  dumpio: (_e = options === null || options === void 0 ? void 0 : options.shouldDumpIo) !== null && _e !== void 0 ? _e : false,
47
- ignoreDefaultArgs: true,
48
47
  args: [
49
48
  'about:blank',
50
49
  '--allow-pre-commit-input',
@@ -61,8 +60,6 @@ const openBrowser = async (browser, options) => {
61
60
  '--no-proxy-server',
62
61
  "--proxy-server='direct://'",
63
62
  '--proxy-bypass-list=*',
64
- // TODO: remove AvoidUnnecessaryBeforeUnloadCheckSync below
65
- // once crbug.com/1324138 is fixed and released.
66
63
  '--disable-hang-monitor',
67
64
  '--disable-ipc-flooding-protection',
68
65
  '--disable-popup-blocking',
@@ -76,8 +73,6 @@ const openBrowser = async (browser, options) => {
76
73
  '--enable-automation',
77
74
  '--password-store=basic',
78
75
  '--use-mock-keychain',
79
- // TODO(sadym): remove '--enable-blink-features=IdleDetection'
80
- // once IdleDetection is turned on by default.
81
76
  '--enable-blink-features=IdleDetection',
82
77
  '--export-tagged-pdf',
83
78
  '--intensive-wake-up-throttling-policy=0',
@@ -113,6 +108,11 @@ const openBrowser = async (browser, options) => {
113
108
  ]
114
109
  : []),
115
110
  ].filter(Boolean),
111
+ defaultViewport: (_k = options === null || options === void 0 ? void 0 : options.viewport) !== null && _k !== void 0 ? _k : {
112
+ height: 720,
113
+ width: 1280,
114
+ deviceScaleFactor: 1,
115
+ },
116
116
  });
117
117
  const pages = await browserInstance.pages();
118
118
  await pages[0].close();
@@ -1,5 +1,5 @@
1
- import { FfmpegExecutable } from 'remotion';
2
- import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
1
+ import type { FfmpegExecutable } from 'remotion';
2
+ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
3
  export declare const prepareServer: ({ downloadDir, ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, }: {
4
4
  webpackConfigOrServeUrl: string;
5
5
  downloadDir: string;
@@ -1,5 +1,5 @@
1
- import { FfmpegExecutable } from 'remotion';
2
- import { MediaAsset } from './assets/types';
1
+ import type { FfmpegExecutable } from 'remotion';
2
+ import type { MediaAsset } from './assets/types';
3
3
  declare type Options = {
4
4
  ffmpegExecutable: FfmpegExecutable;
5
5
  ffprobeExecutable: FfmpegExecutable;
@@ -1,6 +1,6 @@
1
1
  import execa from 'execa';
2
- import { Codec, FfmpegExecutable, ImageFormat, PixelFormat, ProResProfile } from 'remotion';
3
- import { CancelSignal } from './make-cancel-signal';
2
+ import type { Codec, FfmpegExecutable, ImageFormat, PixelFormat, ProResProfile } from 'remotion';
3
+ import type { CancelSignal } from './make-cancel-signal';
4
4
  declare type PreSticherOptions = {
5
5
  fps: number;
6
6
  width: number;
@@ -1,11 +1,11 @@
1
- import puppeteer from 'puppeteer-core';
2
- import { ImageFormat } from 'remotion';
1
+ import type { ImageFormat } from 'remotion';
2
+ import type { Page } from './browser/Page';
3
3
  export declare const provideScreenshot: ({ page, imageFormat, options, quality, }: {
4
- page: puppeteer.Page;
4
+ page: Page;
5
5
  imageFormat: ImageFormat;
6
6
  quality: number | undefined;
7
7
  options: {
8
8
  frame: number;
9
- output?: string;
9
+ output: string | null;
10
10
  };
11
11
  }) => Promise<Buffer>;
@@ -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 { 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,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.puppeteerEvaluateWithCatch = void 0;
4
- /* eslint-disable no-new */
5
- const puppeteer_core_1 = require("puppeteer-core");
4
+ const JSHandle_1 = require("./browser/JSHandle");
6
5
  const symbolicateable_error_1 = require("./error-handling/symbolicateable-error");
7
6
  const parse_browser_error_stack_1 = require("./parse-browser-error-stack");
8
7
  const EVALUATION_SCRIPT_URL = '__puppeteer_evaluation_script__';
@@ -33,7 +32,7 @@ function isString(obj) {
33
32
  async function puppeteerEvaluateWithCatch({ page, pageFunction, frame, args, }) {
34
33
  var _a, _b, _c, _d, _e, _f, _g;
35
34
  const contextId = (await page.mainFrame().executionContext())._contextId;
36
- const client = page._client;
35
+ const client = page._client();
37
36
  const suffix = `//# sourceURL=${EVALUATION_SCRIPT_URL}`;
38
37
  if (isString(pageFunction)) {
39
38
  const expression = pageFunction;
@@ -140,7 +139,7 @@ function convertArgument(arg) {
140
139
  return { unserializableValue: '-Infinity' };
141
140
  if (Object.is(arg, NaN))
142
141
  return { unserializableValue: 'NaN' };
143
- const objectHandle = arg && arg instanceof puppeteer_core_1.JSHandle ? arg : null;
142
+ const objectHandle = arg && arg instanceof JSHandle_1.JSHandle ? arg : null;
144
143
  if (objectHandle) {
145
144
  if (objectHandle._disposed)
146
145
  throw new Error('JSHandle is disposed!');
@@ -1,2 +1,3 @@
1
- import { Page, ScreenshotOptions } from 'puppeteer-core';
2
- export declare const screenshot: (page: Page, options?: ScreenshotOptions) => Promise<Buffer | string | void>;
1
+ import type { Page } from './browser/Page';
2
+ import type { ScreenshotOptions } from './browser/ScreenshotOptions';
3
+ 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,12 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { Browser as PuppeteerBrowser } from 'puppeteer-core';
3
- import { BrowserExecutable, FfmpegExecutable, FrameRange, ImageFormat, SmallTCompMetadata } from 'remotion';
4
- import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
5
- import { BrowserLog } from './browser-log';
6
- import { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
7
- import { CancelSignal } from './make-cancel-signal';
8
- import { ChromiumOptions } from './open-browser';
9
- import { OnStartData, RenderFramesOutput } from './types';
2
+ import type { BrowserExecutable, FfmpegExecutable, FrameRange, ImageFormat, SmallTCompMetadata } from 'remotion';
3
+ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
4
+ import type { BrowserLog } from './browser-log';
5
+ import type { Browser } from './browser/Browser';
6
+ import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
7
+ import type { CancelSignal } from './make-cancel-signal';
8
+ import type { ChromiumOptions } from './open-browser';
9
+ import type { OnStartData, RenderFramesOutput } from './types';
10
10
  declare type ConfigOrComposition = {
11
11
  /**
12
12
  * @deprecated This field has been renamed to `composition`
@@ -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++;
@@ -203,7 +204,11 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
203
204
  return returnValue;
204
205
  });
205
206
  return Promise.race([
206
- happyPath,
207
+ happyPath
208
+ .then(() => {
209
+ return Promise.all(downloadPromises);
210
+ })
211
+ .then(() => happyPath),
207
212
  new Promise((_resolve, reject) => {
208
213
  cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
209
214
  reject(new Error('renderFrames() got cancelled'));
@@ -240,7 +245,9 @@ const renderFrames = (options) => {
240
245
  return new Promise((resolve, reject) => {
241
246
  var _a, _b, _c;
242
247
  const cleanup = [];
243
- const onError = (err) => reject(err);
248
+ const onError = (err) => {
249
+ reject(err);
250
+ };
244
251
  Promise.all([
245
252
  (0, prepare_server_1.prepareServer)({
246
253
  webpackConfigOrServeUrl: selectedServeUrl,
@@ -262,7 +269,7 @@ const renderFrames = (options) => {
262
269
  closeServer();
263
270
  });
264
271
  cleanup.push(closeServer);
265
- const renderFramesProm = innerRenderFrames({
272
+ return innerRenderFrames({
266
273
  ...options,
267
274
  puppeteerInstance,
268
275
  onError,
@@ -274,9 +281,10 @@ const renderFrames = (options) => {
274
281
  downloadDir,
275
282
  proxyPort: offthreadPort,
276
283
  });
277
- return renderFramesProm;
278
284
  })
279
- .then((res) => resolve(res))
285
+ .then((res) => {
286
+ return resolve(res);
287
+ })
280
288
  .catch((err) => reject(err))
281
289
  .finally(() => {
282
290
  // 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>;