@remotion/renderer 4.0.0-lambda.3 → 4.0.0-newpaths.13

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 (615) hide show
  1. package/LICENSE.md +8 -8
  2. package/README.md +47 -0
  3. package/dist/assets/calculate-asset-positions.d.ts +2 -2
  4. package/dist/assets/calculate-asset-positions.js +1 -0
  5. package/dist/assets/calculate-atempo.d.ts +0 -0
  6. package/dist/assets/calculate-atempo.js +0 -0
  7. package/dist/assets/convert-assets-to-file-urls.d.ts +5 -4
  8. package/dist/assets/convert-assets-to-file-urls.js +2 -2
  9. package/dist/assets/download-and-map-assets-to-file.d.ts +16 -12
  10. package/dist/assets/download-and-map-assets-to-file.js +145 -65
  11. package/dist/assets/download-file.d.ts +13 -6
  12. package/dist/assets/download-file.js +64 -8
  13. package/dist/assets/download-map.d.ts +69 -0
  14. package/dist/assets/download-map.js +77 -0
  15. package/dist/assets/ffmpeg-volume-expression.d.ts +3 -3
  16. package/dist/assets/ffmpeg-volume-expression.js +6 -5
  17. package/dist/assets/flatten-volume-array.d.ts +1 -1
  18. package/dist/assets/flatten-volume-array.js +0 -0
  19. package/dist/assets/get-audio-channels.d.ts +3 -7
  20. package/dist/assets/get-audio-channels.js +8 -8
  21. package/dist/assets/get-video-stream-duration.d.ts +9 -0
  22. package/dist/assets/get-video-stream-duration.js +71 -0
  23. package/dist/assets/read-file.d.ts +0 -0
  24. package/dist/assets/read-file.js +2 -1
  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 +0 -0
  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 +2 -1
  34. package/dist/assets/types.js +0 -0
  35. package/dist/browser/Browser.d.ts +13 -160
  36. package/dist/browser/Browser.js +19 -200
  37. package/dist/browser/BrowserConnector.d.ts +1 -8
  38. package/dist/browser/BrowserConnector.js +0 -32
  39. package/dist/browser/BrowserFetcher.d.ts +2 -1
  40. package/dist/browser/BrowserFetcher.js +27 -26
  41. package/dist/browser/{page.d.ts → BrowserPage.d.ts} +16 -14
  42. package/dist/browser/{page.js → BrowserPage.js} +24 -21
  43. package/dist/browser/BrowserRunner.d.ts +2 -5
  44. package/dist/browser/BrowserRunner.js +29 -72
  45. package/dist/browser/Connection.d.ts +7 -14
  46. package/dist/browser/Connection.js +6 -26
  47. package/dist/browser/ConsoleMessage.d.ts +4 -28
  48. package/dist/browser/ConsoleMessage.js +5 -32
  49. package/dist/browser/DOMWorld.d.ts +11 -8
  50. package/dist/browser/DOMWorld.js +20 -21
  51. package/dist/browser/Errors.d.ts +0 -0
  52. package/dist/browser/Errors.js +0 -0
  53. package/dist/browser/EvalTypes.d.ts +1 -1
  54. package/dist/browser/EvalTypes.js +0 -0
  55. package/dist/browser/EventEmitter.d.ts +1 -48
  56. package/dist/browser/EventEmitter.js +0 -49
  57. package/dist/browser/ExecutionContext.d.ts +8 -9
  58. package/dist/browser/ExecutionContext.js +0 -16
  59. package/dist/browser/FrameManager.d.ts +11 -16
  60. package/dist/browser/FrameManager.js +3 -22
  61. package/dist/browser/HTTPRequest.d.ts +4 -18
  62. package/dist/browser/HTTPRequest.js +3 -48
  63. package/dist/browser/HTTPResponse.d.ts +2 -81
  64. package/dist/browser/HTTPResponse.js +18 -173
  65. package/dist/browser/JSHandle.d.ts +7 -8
  66. package/dist/browser/JSHandle.js +0 -3
  67. package/dist/browser/LaunchOptions.d.ts +2 -86
  68. package/dist/browser/LaunchOptions.js +0 -0
  69. package/dist/browser/Launcher.d.ts +9 -3
  70. package/dist/browser/Launcher.js +13 -471
  71. package/dist/browser/LifecycleWatcher.d.ts +4 -4
  72. package/dist/browser/LifecycleWatcher.js +4 -17
  73. package/dist/browser/NetworkEventManager.d.ts +10 -12
  74. package/dist/browser/NetworkEventManager.js +0 -47
  75. package/dist/browser/NetworkManager.d.ts +3 -5
  76. package/dist/browser/NetworkManager.js +6 -59
  77. package/dist/browser/NodeWebSocketTransport.d.ts +10 -4
  78. package/dist/browser/NodeWebSocketTransport.js +4 -7
  79. package/dist/browser/Product.d.ts +0 -0
  80. package/dist/browser/Product.js +0 -0
  81. package/dist/browser/PuppeteerNode.d.ts +7 -59
  82. package/dist/browser/PuppeteerNode.js +5 -74
  83. package/dist/browser/PuppeteerViewport.d.ts +0 -0
  84. package/dist/browser/PuppeteerViewport.js +0 -0
  85. package/dist/browser/ScreenshotOptions.d.ts +0 -14
  86. package/dist/browser/ScreenshotOptions.js +0 -1
  87. package/dist/browser/Target.d.ts +8 -8
  88. package/dist/browser/Target.js +2 -2
  89. package/dist/browser/TaskQueue.d.ts +0 -0
  90. package/dist/browser/TaskQueue.js +0 -0
  91. package/dist/browser/TimeoutSettings.d.ts +1 -0
  92. package/dist/browser/TimeoutSettings.js +4 -4
  93. package/dist/browser/assert.d.ts +0 -20
  94. package/dist/browser/assert.js +0 -20
  95. package/dist/browser/create-browser-fetcher.d.ts +1 -1
  96. package/dist/browser/create-browser-fetcher.js +5 -68
  97. package/dist/browser/devtools-commands.d.ts +270 -0
  98. package/dist/browser/devtools-commands.js +2 -0
  99. package/dist/browser/devtools-types.d.ts +1126 -0
  100. package/dist/browser/devtools-types.js +2 -0
  101. package/dist/browser/get-download-destination.d.ts +0 -0
  102. package/dist/browser/get-download-destination.js +0 -0
  103. package/dist/browser/is-target-closed-err.d.ts +1 -0
  104. package/dist/browser/is-target-closed-err.js +9 -0
  105. package/dist/browser/mitt/index.d.ts +0 -0
  106. package/dist/browser/mitt/index.js +0 -0
  107. package/dist/browser/node.d.ts +0 -0
  108. package/dist/browser/node.js +0 -0
  109. package/dist/browser/revisions.d.ts +0 -1
  110. package/dist/browser/revisions.js +0 -1
  111. package/dist/browser/util.d.ts +8 -7
  112. package/dist/browser/util.js +11 -3
  113. package/dist/browser-executable.d.ts +1 -0
  114. package/dist/{assets/cleanup-assets.js → browser-executable.js} +0 -0
  115. package/dist/browser-log.d.ts +1 -1
  116. package/dist/browser-log.js +0 -0
  117. package/dist/browser.d.ts +2 -0
  118. package/dist/browser.js +4 -0
  119. package/dist/calculate-ffmpeg-filters.d.ts +1 -1
  120. package/dist/calculate-ffmpeg-filters.js +1 -0
  121. package/dist/calculate-sar-dar-pixels.d.ts +9 -0
  122. package/dist/calculate-sar-dar-pixels.js +19 -0
  123. package/dist/can-use-parallel-encoding.d.ts +1 -1
  124. package/dist/can-use-parallel-encoding.js +2 -2
  125. package/dist/check-apple-silicon.d.ts +1 -0
  126. package/dist/check-apple-silicon.js +55 -0
  127. package/dist/chunk.d.ts +0 -0
  128. package/dist/chunk.js +0 -0
  129. package/dist/client.d.ts +3 -0
  130. package/dist/client.js +7 -0
  131. package/dist/codec-supports-media.d.ts +8 -0
  132. package/dist/codec-supports-media.js +56 -0
  133. package/dist/codec.d.ts +4 -0
  134. package/dist/codec.js +16 -0
  135. package/dist/combine-videos.d.ts +9 -3
  136. package/dist/combine-videos.js +18 -10
  137. package/dist/compositor/compose.d.ts +13 -0
  138. package/dist/compositor/compose.js +47 -0
  139. package/dist/compositor/compositor.d.ts +12 -0
  140. package/dist/compositor/compositor.js +96 -0
  141. package/dist/compositor/get-executable-path.d.ts +1 -0
  142. package/dist/compositor/get-executable-path.js +47 -0
  143. package/dist/compositor/payloads.d.ts +41 -0
  144. package/dist/compositor/payloads.js +2 -0
  145. package/dist/compress-assets.d.ts +7 -0
  146. package/dist/compress-assets.js +25 -0
  147. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +1 -0
  148. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +17 -0
  149. package/dist/convert-to-pcm.d.ts +3 -2
  150. package/dist/convert-to-pcm.js +3 -2
  151. package/dist/convert-to-positive-frame-index.d.ts +4 -0
  152. package/dist/convert-to-positive-frame-index.js +8 -0
  153. package/dist/create-ffmpeg-complex-filter.d.ts +3 -5
  154. package/dist/create-ffmpeg-complex-filter.js +2 -11
  155. package/dist/create-ffmpeg-merge-filter.d.ts +0 -0
  156. package/dist/create-ffmpeg-merge-filter.js +3 -3
  157. package/dist/create-silent-audio.d.ts +3 -2
  158. package/dist/create-silent-audio.js +3 -2
  159. package/dist/crf.d.ts +9 -0
  160. package/dist/crf.js +91 -0
  161. package/dist/cycle-browser-tabs.d.ts +2 -5
  162. package/dist/cycle-browser-tabs.js +5 -5
  163. package/dist/delay-render-embedded-stack.d.ts +1 -1
  164. package/dist/delay-render-embedded-stack.js +0 -0
  165. package/dist/delete-directory.d.ts +0 -0
  166. package/dist/delete-directory.js +0 -0
  167. package/dist/determine-resize-params.d.ts +1 -0
  168. package/dist/determine-resize-params.js +10 -0
  169. package/dist/determine-vcodec-ffmpeg-flags.d.ts +2 -0
  170. package/dist/determine-vcodec-ffmpeg-flags.js +13 -0
  171. package/dist/ensure-ffmpeg.d.ts +10 -0
  172. package/dist/ensure-ffmpeg.js +50 -0
  173. package/dist/ensure-frames-in-order.d.ts +1 -1
  174. package/dist/ensure-frames-in-order.js +3 -2
  175. package/dist/ensure-output-directory.d.ts +0 -0
  176. package/dist/ensure-output-directory.js +0 -0
  177. package/dist/ensure-presentation-timestamp.d.ts +15 -1
  178. package/dist/ensure-presentation-timestamp.js +54 -23
  179. package/dist/error-handling/handle-javascript-exception.d.ts +2 -2
  180. package/dist/error-handling/handle-javascript-exception.js +3 -4
  181. package/dist/error-handling/symbolicate-error.d.ts +1 -1
  182. package/dist/error-handling/symbolicate-error.js +0 -0
  183. package/dist/error-handling/symbolicateable-error.d.ts +1 -1
  184. package/dist/error-handling/symbolicateable-error.js +0 -0
  185. package/dist/extract-frame-from-video.d.ts +8 -2
  186. package/dist/extract-frame-from-video.js +85 -91
  187. package/dist/ffmpeg-executable.d.ts +1 -0
  188. package/dist/ffmpeg-executable.js +2 -0
  189. package/dist/ffmpeg-filter-file.d.ts +2 -1
  190. package/dist/ffmpeg-filter-file.js +4 -6
  191. package/dist/ffmpeg-flags.d.ts +20 -2
  192. package/dist/ffmpeg-flags.js +205 -9
  193. package/dist/ffmpeg-override.d.ts +4 -0
  194. package/dist/ffmpeg-override.js +2 -0
  195. package/dist/find-closest-package-json.d.ts +2 -0
  196. package/dist/find-closest-package-json.js +31 -0
  197. package/dist/frame-range.d.ts +2 -0
  198. package/dist/frame-range.js +49 -0
  199. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -0
  200. package/dist/frame-to-ffmpeg-timestamp.js +0 -0
  201. package/dist/get-audio-codec-name.d.ts +1 -1
  202. package/dist/get-audio-codec-name.js +2 -2
  203. package/dist/get-browser-instance.d.ts +4 -3
  204. package/dist/get-browser-instance.js +3 -3
  205. package/dist/get-can-extract-frames-fast.d.ts +10 -0
  206. package/dist/get-can-extract-frames-fast.js +67 -0
  207. package/dist/get-codec-name.d.ts +1 -1
  208. package/dist/get-codec-name.js +5 -2
  209. package/dist/get-compositions-from-bundle.d.ts +7 -0
  210. package/dist/get-compositions-from-bundle.js +55 -0
  211. package/dist/get-compositions.d.ts +11 -4
  212. package/dist/get-compositions.js +30 -11
  213. package/dist/get-concurrency.d.ts +1 -1
  214. package/dist/get-concurrency.js +8 -1
  215. package/dist/get-duration-from-frame-range.d.ts +1 -2
  216. package/dist/get-duration-from-frame-range.js +13 -9
  217. package/dist/get-extension-from-codec.d.ts +2 -2
  218. package/dist/get-extension-from-codec.js +8 -5
  219. package/dist/get-extension-of-filename.d.ts +1 -1
  220. package/dist/get-extension-of-filename.js +8 -1
  221. package/dist/get-frame-of-video-slow.d.ts +15 -0
  222. package/dist/get-frame-of-video-slow.js +72 -0
  223. package/dist/get-frame-padded-index.d.ts +14 -0
  224. package/dist/get-frame-padded-index.js +34 -0
  225. package/dist/get-frame-to-render.d.ts +1 -1
  226. package/dist/get-frame-to-render.js +0 -0
  227. package/dist/get-local-browser-executable.d.ts +2 -1
  228. package/dist/get-local-browser-executable.js +8 -8
  229. package/dist/get-port.d.ts +4 -1
  230. package/dist/get-port.js +13 -22
  231. package/dist/get-prores-profile-name.d.ts +2 -1
  232. package/dist/get-prores-profile-name.js +0 -0
  233. package/dist/get-video-info.d.ts +8 -0
  234. package/dist/get-video-info.js +59 -0
  235. package/dist/get-video-signals.d.ts +2 -0
  236. package/dist/get-video-signals.js +28 -0
  237. package/dist/get-video-threads-flag.d.ts +1 -0
  238. package/dist/get-video-threads-flag.js +18 -0
  239. package/dist/guess-extension-for-media.d.ts +5 -0
  240. package/dist/guess-extension-for-media.js +28 -0
  241. package/dist/image-format.d.ts +6 -1
  242. package/dist/image-format.js +28 -1
  243. package/dist/index.d.ts +97 -37
  244. package/dist/index.js +92 -17
  245. package/dist/is-audio-codec.d.ts +2 -0
  246. package/dist/is-audio-codec.js +7 -0
  247. package/dist/is-beyond-last-frame.d.ts +3 -2
  248. package/dist/is-beyond-last-frame.js +5 -5
  249. package/dist/is-serve-url.d.ts +0 -0
  250. package/dist/is-serve-url.js +0 -0
  251. package/dist/last-frame-from-video-cache.d.ts +10 -2
  252. package/dist/last-frame-from-video-cache.js +23 -18
  253. package/dist/legacy-webpack-config.d.ts +0 -0
  254. package/dist/legacy-webpack-config.js +0 -0
  255. package/dist/locks.d.ts +7 -0
  256. package/dist/locks.js +44 -0
  257. package/dist/log-level.d.ts +4 -0
  258. package/dist/log-level.js +15 -0
  259. package/dist/make-cancel-signal.d.ts +7 -0
  260. package/dist/make-cancel-signal.js +20 -1
  261. package/dist/make-comp-manager-context.d.ts +2 -0
  262. package/dist/make-comp-manager-context.js +45 -0
  263. package/dist/make-timeline-context-value.d.ts +2 -0
  264. package/dist/make-timeline-context-value.js +20 -0
  265. package/dist/merge-audio-track.d.ts +4 -1
  266. package/dist/merge-audio-track.js +18 -7
  267. package/dist/mime-db.d.ts +6 -0
  268. package/dist/mime-db.js +8636 -0
  269. package/dist/mime-types.d.ts +3 -0
  270. package/dist/mime-types.js +94 -0
  271. package/dist/normalize-serve-url.d.ts +0 -0
  272. package/dist/normalize-serve-url.js +0 -0
  273. package/dist/offthread-video-server.d.ts +9 -5
  274. package/dist/offthread-video-server.js +30 -10
  275. package/dist/open-browser.d.ts +5 -3
  276. package/dist/open-browser.js +17 -26
  277. package/dist/overwrite.d.ts +1 -0
  278. package/dist/overwrite.js +4 -0
  279. package/dist/p-limit.d.ts +0 -0
  280. package/dist/p-limit.js +0 -0
  281. package/dist/parse-browser-error-stack.d.ts +0 -0
  282. package/dist/parse-browser-error-stack.js +0 -0
  283. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  284. package/dist/parse-ffmpeg-progress.js +0 -0
  285. package/dist/perf.d.ts +5 -0
  286. package/dist/perf.js +35 -0
  287. package/dist/pixel-format.d.ts +5 -0
  288. package/dist/pixel-format.js +29 -0
  289. package/dist/pool.d.ts +0 -0
  290. package/dist/pool.js +0 -0
  291. package/dist/prepare-server.d.ts +7 -5
  292. package/dist/prepare-server.js +13 -5
  293. package/dist/preprocess-audio-track.d.ts +5 -2
  294. package/dist/preprocess-audio-track.js +5 -4
  295. package/dist/prespawn-ffmpeg.d.ts +10 -3
  296. package/dist/prespawn-ffmpeg.js +24 -16
  297. package/dist/prestitcher-memory-usage.d.ts +12 -0
  298. package/dist/prestitcher-memory-usage.js +30 -0
  299. package/dist/prores-profile.d.ts +8 -0
  300. package/dist/prores-profile.js +23 -0
  301. package/dist/provide-screenshot.d.ts +10 -5
  302. package/dist/provide-screenshot.js +4 -2
  303. package/dist/puppeteer-evaluate.d.ts +1 -1
  304. package/dist/puppeteer-evaluate.js +22 -15
  305. package/dist/puppeteer-screenshot.d.ts +13 -2
  306. package/dist/puppeteer-screenshot.js +11 -16
  307. package/dist/quality.d.ts +1 -0
  308. package/dist/quality.js +21 -0
  309. package/dist/redirect-status-codes.d.ts +1 -0
  310. package/dist/redirect-status-codes.js +6 -0
  311. package/dist/render-frames.d.ts +30 -12
  312. package/dist/render-frames.js +232 -138
  313. package/dist/render-media.d.ts +49 -12
  314. package/dist/render-media.js +152 -30
  315. package/dist/render-on-server.d.ts +3 -0
  316. package/dist/render-on-server.js +90 -0
  317. package/dist/render-still.d.ts +21 -9
  318. package/dist/render-still.js +75 -37
  319. package/dist/render-svg.d.ts +8 -0
  320. package/dist/render-svg.js +13 -0
  321. package/dist/render-video-layer.d.ts +9 -0
  322. package/dist/render-video-layer.js +23 -0
  323. package/dist/render-web-frame.d.ts +73 -0
  324. package/dist/render-web-frame.js +260 -0
  325. package/dist/replace-browser.d.ts +6 -0
  326. package/dist/replace-browser.js +47 -0
  327. package/dist/resolve-asset-src.d.ts +0 -0
  328. package/dist/resolve-asset-src.js +0 -0
  329. package/dist/sample-rate.d.ts +0 -0
  330. package/dist/sample-rate.js +0 -0
  331. package/dist/screenshot-dom-element.d.ts +12 -8
  332. package/dist/screenshot-dom-element.js +12 -7
  333. package/dist/screenshot-task.d.ts +14 -3
  334. package/dist/screenshot-task.js +55 -27
  335. package/dist/seek-to-frame.d.ts +3 -2
  336. package/dist/seek-to-frame.js +24 -3
  337. package/dist/serve-handler/index.d.ts +1 -1
  338. package/dist/serve-handler/index.js +6 -7
  339. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  340. package/dist/serve-handler/is-path-inside.js +0 -0
  341. package/dist/serve-handler/range-parser.d.ts +0 -0
  342. package/dist/serve-handler/range-parser.js +0 -0
  343. package/dist/serve-static.d.ts +5 -3
  344. package/dist/serve-static.js +20 -4
  345. package/dist/set-props-and-env.d.ts +4 -2
  346. package/dist/set-props-and-env.js +41 -15
  347. package/dist/stitch-frames-to-video.d.ts +20 -7
  348. package/dist/stitch-frames-to-video.js +175 -59
  349. package/dist/stringify-ffmpeg-filter.d.ts +4 -3
  350. package/dist/stringify-ffmpeg-filter.js +15 -11
  351. package/dist/symbolicate-stacktrace.d.ts +1 -1
  352. package/dist/symbolicate-stacktrace.js +3 -3
  353. package/dist/take-frame-and-compose.d.ts +20 -0
  354. package/dist/take-frame-and-compose.js +96 -0
  355. package/dist/tmp-dir.d.ts +0 -0
  356. package/dist/tmp-dir.js +0 -0
  357. package/dist/truthy.d.ts +3 -0
  358. package/dist/truthy.js +7 -0
  359. package/dist/try-to-extract-frame-of-video-fast.d.ts +13 -0
  360. package/dist/try-to-extract-frame-of-video-fast.js +55 -0
  361. package/dist/types.d.ts +1 -1
  362. package/dist/types.js +0 -0
  363. package/dist/validate-concurrency.d.ts +1 -0
  364. package/dist/validate-concurrency.js +29 -0
  365. package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
  366. package/dist/validate-even-dimensions-with-codec.js +2 -2
  367. package/dist/validate-every-nth-frame.d.ts +2 -0
  368. package/dist/validate-every-nth-frame.js +28 -0
  369. package/dist/validate-ffmpeg-override.d.ts +2 -0
  370. package/dist/validate-ffmpeg-override.js +12 -0
  371. package/dist/validate-ffmpeg.d.ts +7 -2
  372. package/dist/validate-ffmpeg.js +48 -44
  373. package/dist/validate-frame.d.ts +1 -0
  374. package/dist/validate-frame.js +24 -0
  375. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  376. package/dist/validate-number-of-gif-loops.js +24 -0
  377. package/dist/validate-opengl-renderer.d.ts +5 -0
  378. package/dist/validate-opengl-renderer.js +15 -0
  379. package/dist/validate-output-filename.d.ts +1 -1
  380. package/dist/validate-output-filename.js +5 -0
  381. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  382. package/dist/validate-puppeteer-timeout.js +1 -1
  383. package/dist/validate-scale.d.ts +0 -0
  384. package/dist/validate-scale.js +0 -0
  385. package/dist/validate-videobitrate.d.ts +1 -0
  386. package/dist/validate-videobitrate.js +20 -0
  387. package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
  388. package/dist/wait-for-symbolication-error-to-be-done.js +8 -0
  389. package/dist/warn-about-ffmpeg-version.d.ts +5 -0
  390. package/dist/warn-about-ffmpeg-version.js +37 -0
  391. package/dist/ws/ws-types.d.ts +14 -0
  392. package/dist/ws/ws-types.js +11 -0
  393. package/package.json +30 -22
  394. package/types/ws/index.d.ts +509 -0
  395. package/.prettierrc.js +0 -14
  396. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  397. package/dist/assets/calculate-asset-positions.js.map +0 -1
  398. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  399. package/dist/assets/calculate-atempo.js.map +0 -1
  400. package/dist/assets/cleanup-assets.d.ts +0 -2
  401. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  402. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  403. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  404. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  405. package/dist/assets/download-file.d.ts.map +0 -1
  406. package/dist/assets/download-file.js.map +0 -1
  407. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  408. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  409. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  410. package/dist/assets/flatten-volume-array.js.map +0 -1
  411. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  412. package/dist/assets/get-audio-channels.js.map +0 -1
  413. package/dist/assets/read-file.d.ts.map +0 -1
  414. package/dist/assets/read-file.js.map +0 -1
  415. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  416. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  417. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  418. package/dist/assets/sanitize-filename.js.map +0 -1
  419. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  420. package/dist/assets/sanitize-filepath.js.map +0 -1
  421. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  422. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  423. package/dist/assets/types.d.ts.map +0 -1
  424. package/dist/assets/types.js.map +0 -1
  425. package/dist/browser/Accessibility.d.ts +0 -175
  426. package/dist/browser/Accessibility.js +0 -423
  427. package/dist/browser/AriaQueryHandler.d.ts +0 -20
  428. package/dist/browser/AriaQueryHandler.js +0 -108
  429. package/dist/browser/ConnectionTransport.d.ts +0 -21
  430. package/dist/browser/ConnectionTransport.js +0 -17
  431. package/dist/browser/Coverage.d.ts +0 -180
  432. package/dist/browser/Coverage.js +0 -371
  433. package/dist/browser/Debug.d.ts +0 -19
  434. package/dist/browser/Debug.js +0 -42
  435. package/dist/browser/DeviceDescriptors.d.ts +0 -40
  436. package/dist/browser/DeviceDescriptors.js +0 -1407
  437. package/dist/browser/EmulationManager.d.ts +0 -7
  438. package/dist/browser/EmulationManager.js +0 -40
  439. package/dist/browser/FileChooser.d.ts +0 -56
  440. package/dist/browser/FileChooser.js +0 -86
  441. package/dist/browser/Input.d.ts +0 -355
  442. package/dist/browser/Input.js +0 -592
  443. package/dist/browser/NetworkConditions.d.ts +0 -26
  444. package/dist/browser/NetworkConditions.js +0 -33
  445. package/dist/browser/PDFOptions.d.ts +0 -165
  446. package/dist/browser/PDFOptions.js +0 -34
  447. package/dist/browser/PipeTransport.d.ts +0 -10
  448. package/dist/browser/PipeTransport.js +0 -86
  449. package/dist/browser/Puppeteer.d.ts +0 -35
  450. package/dist/browser/Puppeteer.js +0 -17
  451. package/dist/browser/QueryHandler.d.ts +0 -64
  452. package/dist/browser/QueryHandler.js +0 -183
  453. package/dist/browser/SecurityDetails.d.ts +0 -55
  454. package/dist/browser/SecurityDetails.js +0 -95
  455. package/dist/browser/Tracing.d.ts +0 -45
  456. package/dist/browser/Tracing.js +0 -136
  457. package/dist/browser/USKeyboardLayout.d.ts +0 -39
  458. package/dist/browser/USKeyboardLayout.js +0 -406
  459. package/dist/browser/WebWorker.d.ts +0 -96
  460. package/dist/browser/WebWorker.js +0 -122
  461. package/dist/browser/compat.d.ts +0 -2
  462. package/dist/browser/compat.js +0 -17
  463. package/dist/browser/dialog.d.ts +0 -70
  464. package/dist/browser/dialog.js +0 -114
  465. package/dist/browser/environment.d.ts +0 -16
  466. package/dist/browser/environment.js +0 -19
  467. package/dist/browser/fetch.d.ts +0 -16
  468. package/dist/browser/fetch.js +0 -46
  469. package/dist/browser/find-up.d.ts +0 -4
  470. package/dist/browser/find-up.js +0 -85
  471. package/dist/browser/pkg-dir.d.ts +0 -3
  472. package/dist/browser/pkg-dir.js +0 -13
  473. package/dist/browser-log.d.ts.map +0 -1
  474. package/dist/browser-log.js.map +0 -1
  475. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  476. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  477. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  478. package/dist/can-use-parallel-encoding.js.map +0 -1
  479. package/dist/chunk.d.ts.map +0 -1
  480. package/dist/chunk.js.map +0 -1
  481. package/dist/combine-videos.d.ts.map +0 -1
  482. package/dist/combine-videos.js.map +0 -1
  483. package/dist/convert-to-pcm.d.ts.map +0 -1
  484. package/dist/convert-to-pcm.js.map +0 -1
  485. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  486. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  487. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  488. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  489. package/dist/create-silent-audio.d.ts.map +0 -1
  490. package/dist/create-silent-audio.js.map +0 -1
  491. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  492. package/dist/cycle-browser-tabs.js.map +0 -1
  493. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  494. package/dist/delay-render-embedded-stack.js.map +0 -1
  495. package/dist/delete-directory.d.ts.map +0 -1
  496. package/dist/delete-directory.js.map +0 -1
  497. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  498. package/dist/ensure-frames-in-order.js.map +0 -1
  499. package/dist/ensure-output-directory.d.ts.map +0 -1
  500. package/dist/ensure-output-directory.js.map +0 -1
  501. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  502. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  503. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  504. package/dist/error-handling/symbolicate-error.js.map +0 -1
  505. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  506. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  507. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  508. package/dist/ffmpeg-filter-file.js.map +0 -1
  509. package/dist/ffmpeg-flags.d.ts.map +0 -1
  510. package/dist/ffmpeg-flags.js.map +0 -1
  511. package/dist/get-audio-codec-name.d.ts.map +0 -1
  512. package/dist/get-audio-codec-name.js.map +0 -1
  513. package/dist/get-browser-instance.d.ts.map +0 -1
  514. package/dist/get-browser-instance.js.map +0 -1
  515. package/dist/get-codec-name.d.ts.map +0 -1
  516. package/dist/get-codec-name.js.map +0 -1
  517. package/dist/get-compositions.d.ts.map +0 -1
  518. package/dist/get-compositions.js.map +0 -1
  519. package/dist/get-concurrency.d.ts.map +0 -1
  520. package/dist/get-concurrency.js.map +0 -1
  521. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  522. package/dist/get-duration-from-frame-range.js.map +0 -1
  523. package/dist/get-duration-of-asset.d.ts +0 -7
  524. package/dist/get-duration-of-asset.js +0 -36
  525. package/dist/get-extension-from-codec.d.ts.map +0 -1
  526. package/dist/get-extension-from-codec.js.map +0 -1
  527. package/dist/get-frame-to-render.d.ts.map +0 -1
  528. package/dist/get-frame-to-render.js.map +0 -1
  529. package/dist/get-local-browser-executable.d.ts.map +0 -1
  530. package/dist/get-local-browser-executable.js.map +0 -1
  531. package/dist/get-port.d.ts.map +0 -1
  532. package/dist/get-port.js.map +0 -1
  533. package/dist/get-prores-profile-name.d.ts.map +0 -1
  534. package/dist/get-prores-profile-name.js.map +0 -1
  535. package/dist/image-format.d.ts.map +0 -1
  536. package/dist/image-format.js.map +0 -1
  537. package/dist/index.d.ts.map +0 -1
  538. package/dist/index.js.map +0 -1
  539. package/dist/is-serve-url.d.ts.map +0 -1
  540. package/dist/is-serve-url.js.map +0 -1
  541. package/dist/legacy-webpack-config.d.ts.map +0 -1
  542. package/dist/legacy-webpack-config.js.map +0 -1
  543. package/dist/make-assets-download-dir.d.ts +0 -1
  544. package/dist/make-assets-download-dir.d.ts.map +0 -1
  545. package/dist/make-assets-download-dir.js +0 -13
  546. package/dist/make-assets-download-dir.js.map +0 -1
  547. package/dist/merge-audio-track.d.ts.map +0 -1
  548. package/dist/merge-audio-track.js.map +0 -1
  549. package/dist/normalize-serve-url.d.ts.map +0 -1
  550. package/dist/normalize-serve-url.js.map +0 -1
  551. package/dist/open-browser.d.ts.map +0 -1
  552. package/dist/open-browser.js.map +0 -1
  553. package/dist/p-limit.d.ts.map +0 -1
  554. package/dist/p-limit.js.map +0 -1
  555. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  556. package/dist/parse-browser-error-stack.js.map +0 -1
  557. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  558. package/dist/parse-ffmpeg-progress.js.map +0 -1
  559. package/dist/pool.d.ts.map +0 -1
  560. package/dist/pool.js.map +0 -1
  561. package/dist/prepare-server.d.ts.map +0 -1
  562. package/dist/prepare-server.js.map +0 -1
  563. package/dist/preprocess-audio-track.d.ts.map +0 -1
  564. package/dist/preprocess-audio-track.js.map +0 -1
  565. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  566. package/dist/prespawn-ffmpeg.js.map +0 -1
  567. package/dist/provide-screenshot.d.ts.map +0 -1
  568. package/dist/provide-screenshot.js.map +0 -1
  569. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  570. package/dist/puppeteer-evaluate.js.map +0 -1
  571. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  572. package/dist/puppeteer-screenshot.js.map +0 -1
  573. package/dist/render-frames.d.ts.map +0 -1
  574. package/dist/render-frames.js.map +0 -1
  575. package/dist/render-media.d.ts.map +0 -1
  576. package/dist/render-media.js.map +0 -1
  577. package/dist/render-still.d.ts.map +0 -1
  578. package/dist/render-still.js.map +0 -1
  579. package/dist/resolve-asset-src.d.ts.map +0 -1
  580. package/dist/resolve-asset-src.js.map +0 -1
  581. package/dist/sample-rate.d.ts.map +0 -1
  582. package/dist/sample-rate.js.map +0 -1
  583. package/dist/screenshot-dom-element.d.ts.map +0 -1
  584. package/dist/screenshot-dom-element.js.map +0 -1
  585. package/dist/screenshot-task.d.ts.map +0 -1
  586. package/dist/screenshot-task.js.map +0 -1
  587. package/dist/seek-to-frame.d.ts.map +0 -1
  588. package/dist/seek-to-frame.js.map +0 -1
  589. package/dist/serve-handler/glob-slash.d.ts +0 -1
  590. package/dist/serve-handler/glob-slash.js +0 -12
  591. package/dist/serve-static.d.ts.map +0 -1
  592. package/dist/serve-static.js.map +0 -1
  593. package/dist/set-props-and-env.d.ts.map +0 -1
  594. package/dist/set-props-and-env.js.map +0 -1
  595. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  596. package/dist/stitch-frames-to-video.js.map +0 -1
  597. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  598. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  599. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  600. package/dist/symbolicate-stacktrace.js.map +0 -1
  601. package/dist/tmp-dir.d.ts.map +0 -1
  602. package/dist/tmp-dir.js.map +0 -1
  603. package/dist/types.d.ts.map +0 -1
  604. package/dist/types.js.map +0 -1
  605. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  606. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  607. package/dist/validate-ffmpeg.d.ts.map +0 -1
  608. package/dist/validate-ffmpeg.js.map +0 -1
  609. package/dist/validate-fps-for-gif.d.ts +0 -2
  610. package/dist/validate-fps-for-gif.js +0 -9
  611. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  612. package/dist/validate-puppeteer-timeout.js.map +0 -1
  613. package/dist/validate-scale.d.ts.map +0 -1
  614. package/dist/validate-scale.js.map +0 -1
  615. package/tsconfig.json +0 -10
@@ -30,46 +30,57 @@ exports.renderStill = void 0;
30
30
  const fs_1 = __importStar(require("fs"));
31
31
  const path_1 = __importDefault(require("path"));
32
32
  const remotion_1 = require("remotion");
33
+ const download_map_1 = require("./assets/download-map");
34
+ const browser_1 = require("./browser");
35
+ const convert_to_positive_frame_index_1 = require("./convert-to-positive-frame-index");
33
36
  const ensure_output_directory_1 = require("./ensure-output-directory");
34
37
  const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
38
+ const find_closest_package_json_1 = require("./find-closest-package-json");
39
+ const image_format_1 = require("./image-format");
35
40
  const legacy_webpack_config_1 = require("./legacy-webpack-config");
36
- const make_assets_download_dir_1 = require("./make-assets-download-dir");
41
+ const make_cancel_signal_1 = require("./make-cancel-signal");
37
42
  const open_browser_1 = require("./open-browser");
38
43
  const prepare_server_1 = require("./prepare-server");
39
- const provide_screenshot_1 = require("./provide-screenshot");
40
44
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
45
+ const quality_1 = require("./quality");
41
46
  const seek_to_frame_1 = require("./seek-to-frame");
42
47
  const set_props_and_env_1 = require("./set-props-and-env");
48
+ const take_frame_and_compose_1 = require("./take-frame-and-compose");
49
+ const validate_frame_1 = require("./validate-frame");
43
50
  const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
44
51
  const validate_scale_1 = require("./validate-scale");
45
- 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, }) => {
52
+ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', serveUrl, puppeteerInstance, dumpBrowserLogs = false, onError, inputProps, envVariables, output, frame = 0, overwrite = true, browserExecutable, timeoutInMilliseconds, chromiumOptions, scale = 1, proxyPort, cancelSignal, downloadMap, }) => {
46
53
  remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderStill()`');
47
54
  remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderStill()`');
48
- remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderStill()`');
55
+ remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderStill()`', false);
49
56
  remotion_1.Internals.validateDurationInFrames(composition.durationInFrames, 'in the `config` object passed to `renderStill()`');
50
- remotion_1.Internals.validateNonNullImageFormat(imageFormat);
51
- remotion_1.Internals.validateFrame(frame, composition.durationInFrames);
57
+ (0, image_format_1.validateNonNullImageFormat)(imageFormat);
58
+ (0, validate_frame_1.validateFrame)(frame, composition.durationInFrames);
59
+ const stillFrame = (0, convert_to_positive_frame_index_1.convertToPositiveFrameIndex)({
60
+ durationInFrames: composition.durationInFrames,
61
+ frame,
62
+ });
52
63
  (0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
53
64
  (0, validate_scale_1.validateScale)(scale);
54
- if (typeof output !== 'string') {
55
- throw new TypeError('`output` parameter was not passed or is not a string');
56
- }
57
- output = path_1.default.resolve(process.cwd(), output);
65
+ output =
66
+ typeof output === 'string' ? path_1.default.resolve(process.cwd(), output) : null;
58
67
  if (quality !== undefined && imageFormat !== 'jpeg') {
59
68
  throw new Error("You can only pass the `quality` option if `imageFormat` is 'jpeg'.");
60
69
  }
61
- remotion_1.Internals.validateQuality(quality);
62
- if (fs_1.default.existsSync(output)) {
63
- if (!overwrite) {
64
- throw new Error(`Cannot render still - "overwrite" option was set to false, but the output destination ${output} already exists.`);
65
- }
66
- const stat = (0, fs_1.statSync)(output);
67
- if (!stat.isFile()) {
68
- throw new Error(`The output location ${output} already exists, but is not a file, but something else (e.g. folder). Cannot save to it.`);
70
+ (0, quality_1.validateQuality)(quality);
71
+ if (output) {
72
+ if (fs_1.default.existsSync(output)) {
73
+ if (!overwrite) {
74
+ throw new Error(`Cannot render still - "overwrite" option was set to false, but the output destination ${output} already exists.`);
75
+ }
76
+ const stat = (0, fs_1.statSync)(output);
77
+ if (!stat.isFile()) {
78
+ throw new Error(`The output location ${output} already exists, but is not a file, but something else (e.g. folder). Cannot save to it.`);
79
+ }
69
80
  }
81
+ (0, ensure_output_directory_1.ensureOutputDirectory)(output);
70
82
  }
71
- (0, ensure_output_directory_1.ensureOutputDirectory)(output);
72
- const browserInstance = puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : (await (0, open_browser_1.openBrowser)(remotion_1.Internals.DEFAULT_BROWSER, {
83
+ const browserInstance = puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : (await (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
73
84
  browserExecutable,
74
85
  shouldDumpIo: dumpBrowserLogs,
75
86
  chromiumOptions,
@@ -96,7 +107,7 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
96
107
  await page.close();
97
108
  }
98
109
  else {
99
- browserInstance.close().catch((err) => {
110
+ browserInstance.close(true).catch((err) => {
100
111
  console.log('Unable to close browser', err);
101
112
  });
102
113
  }
@@ -109,33 +120,52 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
109
120
  envVariables,
110
121
  page,
111
122
  serveUrl,
112
- initialFrame: frame,
123
+ initialFrame: stillFrame,
113
124
  timeoutInMilliseconds,
114
125
  proxyPort,
115
126
  retriesRemaining: 2,
127
+ audioEnabled: false,
128
+ videoEnabled: true,
116
129
  });
117
130
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
118
- pageFunction: (id) => {
131
+ // eslint-disable-next-line max-params
132
+ pageFunction: (id, defaultProps, durationInFrames, fps, height, width) => {
119
133
  window.setBundleMode({
120
134
  type: 'composition',
121
135
  compositionName: id,
136
+ compositionDefaultProps: defaultProps,
137
+ compositionDurationInFrames: durationInFrames,
138
+ compositionFps: fps,
139
+ compositionHeight: height,
140
+ compositionWidth: width,
122
141
  });
123
142
  },
124
- args: [composition.id],
143
+ args: [
144
+ composition.id,
145
+ composition.defaultProps,
146
+ composition.durationInFrames,
147
+ composition.fps,
148
+ composition.height,
149
+ composition.width,
150
+ ],
125
151
  frame: null,
126
152
  page,
127
153
  });
128
- await (0, seek_to_frame_1.seekToFrame)({ frame, page });
129
- await (0, provide_screenshot_1.provideScreenshot)({
130
- page,
154
+ await (0, seek_to_frame_1.seekToFrame)({ frame: stillFrame, page });
155
+ const { buffer } = await (0, take_frame_and_compose_1.takeFrameAndCompose)({
156
+ downloadMap,
157
+ frame: stillFrame,
158
+ freePage: page,
159
+ height: composition.height,
160
+ width: composition.width,
131
161
  imageFormat,
162
+ scale,
163
+ output,
132
164
  quality,
133
- options: {
134
- frame,
135
- output,
136
- },
165
+ wantsBuffer: !output,
137
166
  });
138
167
  await cleanup();
168
+ return { buffer: output ? null : buffer };
139
169
  };
140
170
  /**
141
171
  *
@@ -143,22 +173,23 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
143
173
  * @link https://www.remotion.dev/docs/renderer/render-still
144
174
  */
145
175
  const renderStill = (options) => {
146
- var _a;
176
+ var _a, _b;
147
177
  const selectedServeUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
148
- const downloadDir = (0, make_assets_download_dir_1.makeAssetsDownloadTmpDir)();
149
- const onDownload = (_a = options.onDownload) !== null && _a !== void 0 ? _a : (() => () => undefined);
178
+ const downloadMap = (_a = options.downloadMap) !== null && _a !== void 0 ? _a : (0, download_map_1.makeDownloadMap)();
179
+ const onDownload = (_b = options.onDownload) !== null && _b !== void 0 ? _b : (() => () => undefined);
150
180
  const happyPath = new Promise((resolve, reject) => {
151
181
  var _a, _b, _c;
152
182
  const onError = (err) => reject(err);
153
183
  let close = null;
154
184
  (0, prepare_server_1.prepareServer)({
155
185
  webpackConfigOrServeUrl: selectedServeUrl,
156
- downloadDir,
157
186
  onDownload,
158
187
  onError,
159
188
  ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
160
189
  ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
161
190
  port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
191
+ downloadMap,
192
+ remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
162
193
  })
163
194
  .then(({ serveUrl, closeServer, offthreadPort }) => {
164
195
  close = closeServer;
@@ -167,18 +198,25 @@ const renderStill = (options) => {
167
198
  serveUrl,
168
199
  onError: (err) => reject(err),
169
200
  proxyPort: offthreadPort,
201
+ downloadMap,
170
202
  });
171
203
  })
172
204
  .then((res) => resolve(res))
173
205
  .catch((err) => reject(err))
174
- .finally(() => close === null || close === void 0 ? void 0 : close());
206
+ .finally(() => {
207
+ // Clean download map if it was not passed in
208
+ if (!(options === null || options === void 0 ? void 0 : options.downloadMap)) {
209
+ (0, download_map_1.cleanDownloadMap)(downloadMap);
210
+ }
211
+ return close === null || close === void 0 ? void 0 : close(false);
212
+ });
175
213
  });
176
214
  return Promise.race([
177
215
  happyPath,
178
216
  new Promise((_resolve, reject) => {
179
217
  var _a;
180
218
  (_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
181
- reject(new Error('renderStill() got cancelled'));
219
+ reject(new Error(make_cancel_signal_1.cancelErrorMessages.renderStill));
182
220
  });
183
221
  }),
184
222
  ]);
@@ -0,0 +1,8 @@
1
+ import type { ComponentType } from 'react';
2
+ import type { TCompMetadata } from 'remotion';
3
+ export declare const renderSvg: ({ composition, Comp, frame, layer, }: {
4
+ composition: TCompMetadata;
5
+ Comp: ComponentType;
6
+ frame: number;
7
+ layer: number;
8
+ }) => string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderSvg = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const server_1 = require("react-dom/server");
6
+ const remotion_1 = require("remotion");
7
+ const make_comp_manager_context_1 = require("./make-comp-manager-context");
8
+ const make_timeline_context_value_1 = require("./make-timeline-context-value");
9
+ const renderSvg = ({ composition, Comp, frame, layer, }) => {
10
+ const svg = (0, server_1.renderToStaticMarkup)((0, jsx_runtime_1.jsx)(remotion_1.Internals.SelectCompositionMode, { layer: layer, id: composition.id, children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.Timeline.TimelineContext.Provider, { value: (0, make_timeline_context_value_1.makeTimelineContextValue)(composition, frame), children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.CompositionManager.Provider, { value: (0, make_comp_manager_context_1.makeCompManagerContext)(composition), children: (0, jsx_runtime_1.jsx)(Comp, {}) }) }) }));
11
+ return svg;
12
+ };
13
+ exports.renderSvg = renderSvg;
@@ -0,0 +1,9 @@
1
+ import type { ComponentType } from 'react';
2
+ import type { TCompMetadata } from 'remotion';
3
+ import type { NativeVideoLayerInfo } from 'remotion/src/video/NativeVideoForRendering';
4
+ export declare const renderVideoLayer: ({ composition, Comp, frame, layer, }: {
5
+ composition: TCompMetadata;
6
+ Comp: ComponentType;
7
+ frame: number;
8
+ layer: number;
9
+ }) => NativeVideoLayerInfo | null;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderVideoLayer = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const server_1 = require("react-dom/server");
6
+ const remotion_1 = require("remotion");
7
+ const make_comp_manager_context_1 = require("./make-comp-manager-context");
8
+ const make_timeline_context_value_1 = require("./make-timeline-context-value");
9
+ const renderVideoLayer = ({ composition, Comp, frame, layer, }) => {
10
+ process.env.REMOTION_SERVER_RENDERING = 'true';
11
+ const markup = (0, server_1.renderToStaticMarkup)((0, jsx_runtime_1.jsx)(remotion_1.Internals.SelectCompositionMode, { layer: layer, id: composition.id, children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.Timeline.TimelineContext.Provider, { value: (0, make_timeline_context_value_1.makeTimelineContextValue)(composition, frame), children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.CompositionManager.Provider, { value: (0, make_comp_manager_context_1.makeCompManagerContext)(composition), children: (0, jsx_runtime_1.jsx)(Comp, {}) }) }) }));
12
+ const matches = markup.matchAll(/<div>(.*?)<\/div>/g);
13
+ let parsed = null;
14
+ for (const match of matches) {
15
+ if (parsed) {
16
+ throw new Error('cannot have more than one video layer');
17
+ }
18
+ const json = JSON.parse(match[1]);
19
+ parsed = json;
20
+ }
21
+ return parsed;
22
+ };
23
+ exports.renderVideoLayer = renderVideoLayer;
@@ -0,0 +1,73 @@
1
+ import type { SmallTCompMetadata, TAsset } from 'remotion';
2
+ import type { DownloadMap } from './assets/download-map';
3
+ import type { BrowserExecutable } from './browser-executable';
4
+ import type { BrowserLog } from './browser-log';
5
+ import type { Page } from './browser/BrowserPage';
6
+ import type { CompositorLayer } from './compositor/payloads';
7
+ import type { CountType } from './get-frame-padded-index';
8
+ import type { ServeUrl } from './legacy-webpack-config';
9
+ import type { ChromiumOptions } from './open-browser';
10
+ import type { Pool } from './pool';
11
+ import type { BrowserReplacer } from './replace-browser';
12
+ export declare const renderWebFrameAndRetryTargetClose: ({ frame, index, retriesLeft, attempt, actualConcurrency, browserReplacer, poolPromise, composition, downloadMap, imageFormat, onFrameBuffer, outputDir, stopState, countType, scale, quality, framesToRender, lastFrame, framesRendered, browserExecutable, chromiumOptions, dumpBrowserLogs, pagesArray, onBrowserLog, inputProps, envVariables, muted, proxyPort, realFrameRange, serveUrl, timeoutInMilliseconds, }: {
13
+ frame: number;
14
+ index: number;
15
+ retriesLeft: number;
16
+ attempt: number;
17
+ actualConcurrency: number;
18
+ browserReplacer: BrowserReplacer | null;
19
+ poolPromise: Promise<Pool<Page>>;
20
+ composition: SmallTCompMetadata;
21
+ downloadMap: DownloadMap;
22
+ imageFormat: 'png' | 'jpeg' | 'none';
23
+ onFrameBuffer: ((buffer: Buffer, frame: number) => void) | undefined;
24
+ outputDir: string | null;
25
+ stopState: {
26
+ isStopped: boolean;
27
+ };
28
+ countType: CountType;
29
+ scale: number;
30
+ quality: number | undefined;
31
+ framesToRender: number[];
32
+ lastFrame: number;
33
+ framesRendered: {
34
+ frames: number;
35
+ };
36
+ browserExecutable?: BrowserExecutable | undefined;
37
+ chromiumOptions?: ChromiumOptions | undefined;
38
+ dumpBrowserLogs?: boolean | undefined;
39
+ pagesArray: Page[];
40
+ onBrowserLog?: ((log: BrowserLog) => void) | undefined;
41
+ inputProps: unknown;
42
+ envVariables?: Record<string, string> | undefined;
43
+ muted: boolean;
44
+ proxyPort: number;
45
+ realFrameRange: [number, number];
46
+ serveUrl: ServeUrl;
47
+ timeoutInMilliseconds: number;
48
+ }) => Promise<{
49
+ layer: CompositorLayer | null;
50
+ buffer: Buffer | null;
51
+ assets: TAsset[];
52
+ }>;
53
+ export declare const makePage: ({ browserReplacer, pagesArray, composition, scale, onBrowserLog, inputProps, envVariables, serveUrl, realFrameRange, timeoutInMilliseconds, proxyPort, imageFormat, muted, }: {
54
+ browserReplacer: BrowserReplacer;
55
+ pagesArray: Page[];
56
+ composition: SmallTCompMetadata;
57
+ scale?: number | undefined;
58
+ onBrowserLog?: ((log: BrowserLog) => void) | undefined;
59
+ inputProps: unknown;
60
+ envVariables?: Record<string, string> | undefined;
61
+ serveUrl: ServeUrl;
62
+ realFrameRange: [number, number];
63
+ timeoutInMilliseconds: number | undefined;
64
+ proxyPort: number;
65
+ imageFormat: 'png' | 'jpeg' | 'none';
66
+ muted: boolean;
67
+ }) => Promise<Page>;
68
+ export declare const makeBrowser: ({ dumpBrowserLogs, browserExecutable, chromiumOptions, scale, }: {
69
+ dumpBrowserLogs?: boolean | undefined;
70
+ browserExecutable?: BrowserExecutable | undefined;
71
+ chromiumOptions?: ChromiumOptions | undefined;
72
+ scale?: number | undefined;
73
+ }) => Promise<import("./browser/Browser").Browser>;
@@ -0,0 +1,260 @@
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.makeBrowser = exports.makePage = exports.renderWebFrameAndRetryTargetClose = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const browser_1 = require("./browser");
9
+ const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
10
+ const make_cancel_signal_1 = require("./make-cancel-signal");
11
+ const open_browser_1 = require("./open-browser");
12
+ const perf_1 = require("./perf");
13
+ const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
14
+ const seek_to_frame_1 = require("./seek-to-frame");
15
+ const set_props_and_env_1 = require("./set-props-and-env");
16
+ const take_frame_and_compose_1 = require("./take-frame-and-compose");
17
+ const renderFrameWithOptionToReject = async ({ frame, index, reject, width, height, poolPromise, stopState, imageFormat, downloadMap, scale, quality, }) => {
18
+ const pool = await poolPromise;
19
+ const freePage = await pool.acquire();
20
+ if (stopState.isStopped) {
21
+ reject(new Error('Render was stopped'));
22
+ throw new Error('stopped');
23
+ }
24
+ const errorCallbackOnFrame = (err) => {
25
+ reject(err);
26
+ };
27
+ const cleanupPageError = (0, handle_javascript_exception_1.handleJavascriptException)({
28
+ page: freePage,
29
+ onError: errorCallbackOnFrame,
30
+ frame,
31
+ });
32
+ freePage.on('error', errorCallbackOnFrame);
33
+ await (0, seek_to_frame_1.seekToFrame)({ frame, page: freePage });
34
+ const id = (0, perf_1.startPerfMeasure)('save');
35
+ const output = path_1.default.join(downloadMap.compositingDir, `preframe-${index}.${imageFormat}`);
36
+ const { buffer, collectedAssets, clipRegion } = await (0, take_frame_and_compose_1.takeFrame)({
37
+ frame,
38
+ freePage,
39
+ height,
40
+ imageFormat,
41
+ quality,
42
+ width,
43
+ });
44
+ const needsComposing = clipRegion === null
45
+ ? null
46
+ : {
47
+ tmpFile: path_1.default.join(downloadMap.compositingDir, `${frame}.${imageFormat}`),
48
+ finalOutfie: output !== null && output !== void 0 ? output : path_1.default.join(downloadMap.compositingDir, `${frame}-final.${imageFormat}`),
49
+ clipRegion: clipRegion,
50
+ };
51
+ const compositionLayer = !needsComposing || needsComposing.clipRegion === 'hide'
52
+ ? null
53
+ : {
54
+ type: imageFormat === 'jpeg'
55
+ ? 'JpgImage'
56
+ : 'PngImage',
57
+ params: {
58
+ height: needsComposing.clipRegion.height * scale,
59
+ width: needsComposing.clipRegion.width * scale,
60
+ src: needsComposing.tmpFile,
61
+ x: needsComposing.clipRegion.x * scale,
62
+ y: needsComposing.clipRegion.y * scale,
63
+ },
64
+ };
65
+ // TODO: Always return buffer
66
+ (0, perf_1.stopPerfMeasure)(id);
67
+ cleanupPageError();
68
+ freePage.off('error', errorCallbackOnFrame);
69
+ pool.release(freePage);
70
+ return { layer: compositionLayer, buffer, assets: collectedAssets };
71
+ };
72
+ const renderWebFrame = ({ frame, index, downloadMap, imageFormat, poolPromise, stopState, composition, scale, quality, }) => {
73
+ return new Promise((resolve, reject) => {
74
+ renderFrameWithOptionToReject({
75
+ frame,
76
+ index,
77
+ reject,
78
+ width: composition.width,
79
+ height: composition.height,
80
+ downloadMap,
81
+ imageFormat,
82
+ poolPromise,
83
+ stopState,
84
+ scale,
85
+ quality,
86
+ })
87
+ .then((res) => {
88
+ resolve(res);
89
+ })
90
+ .catch((err) => {
91
+ reject(err);
92
+ });
93
+ });
94
+ };
95
+ // TODO: Bring fixes for retrying here
96
+ const renderWebFrameAndRetryTargetClose = async ({ frame, index, retriesLeft, attempt, actualConcurrency, browserReplacer, poolPromise, composition, downloadMap, imageFormat, onFrameBuffer, outputDir, stopState, countType, scale, quality, framesToRender, lastFrame, framesRendered, browserExecutable, chromiumOptions, dumpBrowserLogs, pagesArray, onBrowserLog, inputProps, envVariables, muted, proxyPort, realFrameRange, serveUrl, timeoutInMilliseconds, }) => {
97
+ var _a, _b;
98
+ try {
99
+ const returnval = await renderWebFrame({
100
+ frame,
101
+ index,
102
+ poolPromise,
103
+ composition,
104
+ downloadMap,
105
+ imageFormat,
106
+ stopState,
107
+ scale,
108
+ quality,
109
+ });
110
+ return returnval;
111
+ }
112
+ catch (err) {
113
+ if (!((_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.includes('Target closed')) &&
114
+ !((_b = err === null || err === void 0 ? void 0 : err.message) === null || _b === void 0 ? void 0 : _b.includes('Session closed'))) {
115
+ throw err;
116
+ }
117
+ if ((0, make_cancel_signal_1.isUserCancelledRender)(err)) {
118
+ throw err;
119
+ }
120
+ if (retriesLeft === 0) {
121
+ console.warn(err, `The browser crashed ${attempt} times while rendering frame ${frame}. Not retrying anymore. Learn more about this error under https://www.remotion.dev/docs/target-closed`);
122
+ throw err;
123
+ }
124
+ console.warn(`The browser crashed while rendering frame ${frame}, retrying ${retriesLeft} more times. Learn more about this error under https://www.remotion.dev/docs/target-closed`);
125
+ if (!browserReplacer) {
126
+ throw new Error('Did not have browser replacer for web frame');
127
+ }
128
+ await browserReplacer.replaceBrowser(() => (0, exports.makeBrowser)({
129
+ browserExecutable,
130
+ chromiumOptions,
131
+ dumpBrowserLogs,
132
+ scale,
133
+ }), async () => {
134
+ const pages = new Array(actualConcurrency).fill(true).map(() => (0, exports.makePage)({
135
+ browserReplacer,
136
+ composition,
137
+ pagesArray,
138
+ onBrowserLog,
139
+ scale,
140
+ inputProps,
141
+ envVariables,
142
+ imageFormat,
143
+ muted,
144
+ proxyPort,
145
+ realFrameRange,
146
+ serveUrl,
147
+ timeoutInMilliseconds,
148
+ }));
149
+ const puppeteerPages = await Promise.all(pages);
150
+ const pool = await poolPromise;
151
+ for (const newPage of puppeteerPages) {
152
+ pool.release(newPage);
153
+ }
154
+ });
155
+ const fram = await (0, exports.renderWebFrameAndRetryTargetClose)({
156
+ frame,
157
+ index,
158
+ retriesLeft: retriesLeft - 1,
159
+ attempt: attempt + 1,
160
+ actualConcurrency,
161
+ browserReplacer,
162
+ composition,
163
+ downloadMap,
164
+ imageFormat,
165
+ onFrameBuffer,
166
+ outputDir,
167
+ poolPromise,
168
+ stopState,
169
+ countType,
170
+ scale,
171
+ quality,
172
+ framesToRender,
173
+ lastFrame,
174
+ framesRendered,
175
+ inputProps,
176
+ pagesArray,
177
+ browserExecutable,
178
+ chromiumOptions,
179
+ dumpBrowserLogs,
180
+ envVariables,
181
+ muted,
182
+ onBrowserLog,
183
+ proxyPort,
184
+ realFrameRange,
185
+ serveUrl,
186
+ timeoutInMilliseconds,
187
+ });
188
+ return fram;
189
+ }
190
+ };
191
+ exports.renderWebFrameAndRetryTargetClose = renderWebFrameAndRetryTargetClose;
192
+ const makePage = async ({ browserReplacer, pagesArray, composition, scale, onBrowserLog, inputProps, envVariables, serveUrl, realFrameRange, timeoutInMilliseconds, proxyPort, imageFormat, muted, }) => {
193
+ if (!browserReplacer) {
194
+ throw new Error('canonot make page without browser replacer');
195
+ }
196
+ const page = await browserReplacer.getBrowser().newPage();
197
+ pagesArray.push(page);
198
+ await page.setViewport({
199
+ width: composition.width,
200
+ height: composition.height,
201
+ deviceScaleFactor: scale !== null && scale !== void 0 ? scale : 1,
202
+ });
203
+ const logCallback = (log) => {
204
+ onBrowserLog === null || onBrowserLog === void 0 ? void 0 : onBrowserLog({
205
+ stackTrace: log.stackTrace(),
206
+ text: log.text,
207
+ type: log.type,
208
+ });
209
+ };
210
+ if (onBrowserLog) {
211
+ page.on('console', logCallback);
212
+ }
213
+ const initialFrame = realFrameRange[0];
214
+ await (0, set_props_and_env_1.setPropsAndEnv)({
215
+ inputProps,
216
+ envVariables,
217
+ page,
218
+ serveUrl,
219
+ initialFrame,
220
+ timeoutInMilliseconds,
221
+ proxyPort,
222
+ retriesRemaining: 2,
223
+ audioEnabled: !muted,
224
+ videoEnabled: imageFormat !== 'none',
225
+ });
226
+ await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
227
+ // eslint-disable-next-line max-params
228
+ pageFunction: (id, defaultProps, durationInFrames, fps, height, width) => {
229
+ window.setBundleMode({
230
+ type: 'composition',
231
+ compositionName: id,
232
+ compositionDefaultProps: defaultProps,
233
+ compositionDurationInFrames: durationInFrames,
234
+ compositionFps: fps,
235
+ compositionHeight: height,
236
+ compositionWidth: width,
237
+ });
238
+ },
239
+ args: [
240
+ composition.id,
241
+ composition.defaultProps,
242
+ composition.durationInFrames,
243
+ composition.fps,
244
+ composition.height,
245
+ composition.width,
246
+ ],
247
+ frame: null,
248
+ page,
249
+ });
250
+ page.off('console', logCallback);
251
+ return page;
252
+ };
253
+ exports.makePage = makePage;
254
+ const makeBrowser = ({ dumpBrowserLogs, browserExecutable, chromiumOptions, scale, }) => (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
255
+ shouldDumpIo: dumpBrowserLogs,
256
+ browserExecutable,
257
+ chromiumOptions,
258
+ forceDeviceScaleFactor: scale !== null && scale !== void 0 ? scale : 1,
259
+ });
260
+ exports.makeBrowser = makeBrowser;
@@ -0,0 +1,6 @@
1
+ import type { Browser } from './browser/Browser';
2
+ export declare type BrowserReplacer = {
3
+ getBrowser: () => Browser;
4
+ replaceBrowser: (make: () => Promise<Browser>, makeNewPages: () => Promise<void>) => Promise<Browser>;
5
+ };
6
+ export declare const handleBrowserCrash: (instance: Browser) => 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
File without changes
File without changes
File without changes