@remotion/renderer 4.0.0-lambda.1 → 4.0.0-newpathfunctions.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 +6 -2
  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 +4 -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 +7 -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 +17 -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 +96 -38
  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 +9 -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 +9 -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 +12 -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 +48 -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 +11 -8
  332. package/dist/screenshot-dom-element.js +12 -7
  333. package/dist/screenshot-task.d.ts +13 -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 +19 -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 +12 -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
@@ -1,48 +1,81 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
29
  exports.stitchFramesToVideo = exports.spawnFfmpeg = void 0;
7
30
  const execa_1 = __importDefault(require("execa"));
8
- const fs_1 = __importDefault(require("fs"));
31
+ const fs_1 = __importStar(require("fs"));
9
32
  const path_1 = __importDefault(require("path"));
10
33
  const remotion_1 = require("remotion");
11
34
  const calculate_asset_positions_1 = require("./assets/calculate-asset-positions");
12
35
  const convert_assets_to_file_urls_1 = require("./assets/convert-assets-to-file-urls");
13
36
  const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
37
+ const codec_1 = require("./codec");
38
+ const codec_supports_media_1 = require("./codec-supports-media");
39
+ const convert_number_of_gif_loops_to_ffmpeg_1 = require("./convert-number-of-gif-loops-to-ffmpeg");
40
+ const crf_1 = require("./crf");
14
41
  const delete_directory_1 = require("./delete-directory");
42
+ const ffmpeg_flags_1 = require("./ffmpeg-flags");
43
+ const find_closest_package_json_1 = require("./find-closest-package-json");
15
44
  const get_audio_codec_name_1 = require("./get-audio-codec-name");
16
45
  const get_codec_name_1 = require("./get-codec-name");
46
+ const get_extension_from_codec_1 = require("./get-extension-from-codec");
17
47
  const get_prores_profile_name_1 = require("./get-prores-profile-name");
48
+ const make_cancel_signal_1 = require("./make-cancel-signal");
18
49
  const merge_audio_track_1 = require("./merge-audio-track");
19
50
  const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
51
+ const pixel_format_1 = require("./pixel-format");
20
52
  const preprocess_audio_track_1 = require("./preprocess-audio-track");
21
- const tmp_dir_1 = require("./tmp-dir");
53
+ const prores_profile_1 = require("./prores-profile");
54
+ const truthy_1 = require("./truthy");
22
55
  const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
23
56
  const validate_ffmpeg_1 = require("./validate-ffmpeg");
57
+ const validate_videobitrate_1 = require("./validate-videobitrate");
24
58
  const packageJsonPath = path_1.default.join(__dirname, '..', 'package.json');
25
59
  const packageJson = fs_1.default.existsSync(packageJsonPath)
26
60
  ? JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf-8'))
27
61
  : null;
28
- const getAssetsData = async ({ assets, downloadDir, onDownload, fps, expectedFrames, verbose, ffmpegExecutable, ffprobeExecutable, onProgress, }) => {
62
+ const getAssetsData = async ({ assets, onDownload, fps, expectedFrames, verbose, ffmpegExecutable, ffprobeExecutable, onProgress, downloadMap, remotionRoot, }) => {
29
63
  const fileUrlAssets = await (0, convert_assets_to_file_urls_1.convertAssetsToFileUrls)({
30
64
  assets,
31
- downloadDir,
32
65
  onDownload: onDownload !== null && onDownload !== void 0 ? onDownload : (() => () => undefined),
66
+ downloadMap,
33
67
  });
34
- (0, download_and_map_assets_to_file_1.markAllAssetsAsDownloaded)();
68
+ (0, download_and_map_assets_to_file_1.markAllAssetsAsDownloaded)(downloadMap);
35
69
  const assetPositions = (0, calculate_asset_positions_1.calculateAssetPositions)(fileUrlAssets);
36
70
  if (verbose) {
37
71
  console.log('asset positions', assetPositions);
38
72
  }
39
- const tempPath = (0, tmp_dir_1.tmpDir)('remotion-audio-mixing');
40
73
  const preprocessProgress = new Array(assetPositions.length).fill(0);
41
74
  const updateProgress = () => {
42
75
  onProgress(preprocessProgress.reduce((a, b) => a + b, 0) / assetPositions.length);
43
76
  };
44
77
  const preprocessed = (await Promise.all(assetPositions.map(async (asset, index) => {
45
- const filterFile = path_1.default.join(tempPath, `${index}.wav`);
78
+ const filterFile = path_1.default.join(downloadMap.audioMixing, `${index}.wav`);
46
79
  const result = await (0, preprocess_audio_track_1.preprocessAudioTrack)({
47
80
  ffmpegExecutable: ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : null,
48
81
  ffprobeExecutable: ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : null,
@@ -50,129 +83,185 @@ const getAssetsData = async ({ assets, downloadDir, onDownload, fps, expectedFra
50
83
  asset,
51
84
  expectedFrames,
52
85
  fps,
86
+ downloadMap,
87
+ remotionRoot,
53
88
  });
54
89
  preprocessProgress[index] = 1;
55
90
  updateProgress();
56
91
  return result;
57
- }))).filter(remotion_1.Internals.truthy);
58
- const outName = path_1.default.join(tempPath, `audio.wav`);
92
+ }))).filter(truthy_1.truthy);
93
+ const outName = path_1.default.join(downloadMap.audioPreprocessing, `audio.wav`);
59
94
  await (0, merge_audio_track_1.mergeAudioTrack)({
60
95
  ffmpegExecutable: ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : null,
61
96
  files: preprocessed,
62
97
  outName,
63
98
  numberOfSeconds: Number((expectedFrames / fps).toFixed(3)),
99
+ downloadMap,
100
+ remotionRoot,
64
101
  });
65
102
  onProgress(1);
66
- preprocessed.forEach((p) => {
67
- (0, delete_directory_1.deleteDirectory)(p);
68
- });
103
+ await Promise.all([
104
+ (0, delete_directory_1.deleteDirectory)(downloadMap.audioMixing),
105
+ ...preprocessed.map((p) => {
106
+ return (0, delete_directory_1.deleteDirectory)(p);
107
+ }),
108
+ ]);
69
109
  return outName;
70
110
  };
71
- const spawnFfmpeg = async (options) => {
72
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
111
+ const spawnFfmpeg = async (options, remotionRoot) => {
112
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
73
113
  remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
74
114
  remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
75
- remotion_1.Internals.validateFps(options.fps, 'passed to `stitchFramesToVideo()`');
76
- const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : remotion_1.Internals.DEFAULT_CODEC;
115
+ const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : codec_1.DEFAULT_CODEC;
77
116
  (0, validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec)({
78
117
  width: options.width,
79
118
  height: options.height,
80
119
  codec,
81
120
  scale: 1,
82
121
  });
83
- const crf = (_b = options.crf) !== null && _b !== void 0 ? _b : remotion_1.Internals.getDefaultCrfForCodec(codec);
84
- const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : remotion_1.Internals.DEFAULT_PIXEL_FORMAT;
85
- await (0, validate_ffmpeg_1.validateFfmpeg)((_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : null);
122
+ (0, prores_profile_1.validateSelectedCodecAndProResCombination)({
123
+ codec,
124
+ proResProfile: options.proResProfile,
125
+ });
126
+ (0, validate_videobitrate_1.validateBitrate)(options.audioBitrate, 'audioBitrate');
127
+ (0, validate_videobitrate_1.validateBitrate)(options.videoBitrate, 'videoBitrate');
128
+ remotion_1.Internals.validateFps(options.fps, 'in `stitchFramesToVideo()`', false);
129
+ const pixelFormat = (_b = options.pixelFormat) !== null && _b !== void 0 ? _b : pixel_format_1.DEFAULT_PIXEL_FORMAT;
130
+ await (0, validate_ffmpeg_1.validateFfmpeg)((_c = options.ffmpegExecutable) !== null && _c !== void 0 ? _c : null, remotionRoot, 'ffmpeg');
86
131
  const encoderName = (0, get_codec_name_1.getCodecName)(codec);
87
132
  const audioCodecName = (0, get_audio_codec_name_1.getAudioCodecName)(codec);
88
133
  const proResProfileName = (0, get_prores_profile_name_1.getProResProfileName)(codec, options.proResProfile);
89
- const isAudioOnly = encoderName === null;
90
- const supportsCrf = encoderName && codec !== 'prores';
134
+ const mediaSupport = (0, codec_supports_media_1.codecSupportsMedia)(codec);
135
+ const tempFile = options.outputLocation
136
+ ? null
137
+ : path_1.default.join(options.assetsInfo.downloadMap.stitchFrames, `out.${(0, get_extension_from_codec_1.getFileExtensionFromCodec)(codec)}`);
138
+ const shouldRenderAudio = mediaSupport.audio &&
139
+ (options.assetsInfo.assets.flat(1).length > 0 ||
140
+ options.enforceAudioTrack) &&
141
+ !options.muted;
142
+ const shouldRenderVideo = mediaSupport.video;
143
+ if (!shouldRenderAudio && !shouldRenderVideo) {
144
+ throw new Error('The output format has neither audio nor video. This can happen if you are rendering an audio codec and the output file has no audio or the muted flag was passed.');
145
+ }
91
146
  if (options.verbose) {
92
- console.log('[verbose] ffmpeg', (_e = options.ffmpegExecutable) !== null && _e !== void 0 ? _e : 'ffmpeg in PATH');
147
+ console.log('[verbose] ffmpeg', (_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : 'ffmpeg in PATH');
93
148
  console.log('[verbose] encoder', encoderName);
94
149
  console.log('[verbose] audioCodec', audioCodecName);
95
150
  console.log('[verbose] pixelFormat', pixelFormat);
96
- if (supportsCrf) {
97
- console.log('[verbose] crf', crf);
151
+ if (options.ffmpegOverride) {
152
+ console.log('[verbose] ffmpegOverride', options.ffmpegOverride);
98
153
  }
99
154
  console.log('[verbose] codec', codec);
100
- console.log('[verbose] isAudioOnly', isAudioOnly);
155
+ console.log('[verbose] shouldRenderAudio', shouldRenderAudio);
156
+ console.log('[verbose] shouldRenderVideo', shouldRenderVideo);
101
157
  console.log('[verbose] proResProfileName', proResProfileName);
102
158
  }
103
- remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
104
- remotion_1.Internals.validateSelectedPixelFormatAndCodecCombination(pixelFormat, codec);
159
+ (0, crf_1.validateQualitySettings)({
160
+ crf: options.crf,
161
+ codec,
162
+ videoBitrate: options.videoBitrate,
163
+ });
164
+ (0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
105
165
  const expectedFrames = options.assetsInfo.assets.length;
106
166
  const updateProgress = (preStitchProgress, muxProgress) => {
107
167
  var _a;
108
168
  const totalFrameProgress = 0.5 * preStitchProgress * expectedFrames + muxProgress * 0.5;
109
169
  (_a = options.onProgress) === null || _a === void 0 ? void 0 : _a.call(options, Math.round(totalFrameProgress));
110
170
  };
111
- const audio = await getAssetsData({
112
- assets: options.assetsInfo.assets,
113
- downloadDir: options.assetsInfo.downloadDir,
114
- onDownload: options.onDownload,
115
- fps: options.fps,
116
- expectedFrames,
117
- verbose: (_f = options.verbose) !== null && _f !== void 0 ? _f : false,
118
- ffmpegExecutable: (_g = options.ffmpegExecutable) !== null && _g !== void 0 ? _g : null,
119
- ffprobeExecutable: (_h = options.ffprobeExecutable) !== null && _h !== void 0 ? _h : null,
120
- onProgress: (prog) => updateProgress(prog, 0),
121
- });
122
- if (isAudioOnly) {
171
+ const audio = shouldRenderAudio
172
+ ? await getAssetsData({
173
+ assets: options.assetsInfo.assets,
174
+ onDownload: options.onDownload,
175
+ fps: options.fps,
176
+ expectedFrames,
177
+ verbose: (_e = options.verbose) !== null && _e !== void 0 ? _e : false,
178
+ ffmpegExecutable: (_f = options.ffmpegExecutable) !== null && _f !== void 0 ? _f : null,
179
+ ffprobeExecutable: (_g = options.ffprobeExecutable) !== null && _g !== void 0 ? _g : null,
180
+ onProgress: (prog) => updateProgress(prog, 0),
181
+ downloadMap: options.assetsInfo.downloadMap,
182
+ remotionRoot,
183
+ })
184
+ : null;
185
+ if (mediaSupport.audio && !mediaSupport.video) {
123
186
  if (!audioCodecName) {
124
187
  throw new TypeError('exporting audio but has no audio codec name. Report this in the Remotion repo.');
125
188
  }
126
- const ffmpegTask = (0, execa_1.default)('ffmpeg', [
189
+ const ffmpegTask = (0, execa_1.default)(await (0, ffmpeg_flags_1.getExecutableBinary)((_h = options.ffmpegExecutable) !== null && _h !== void 0 ? _h : null, remotionRoot, 'ffmpeg'), [
127
190
  '-i',
128
191
  audio,
129
192
  '-c:a',
130
193
  audioCodecName,
131
194
  // Set bitrate up to 320k, for aac it might effectively be lower
132
195
  '-b:a',
133
- '320k',
196
+ (_j = options.audioBitrate) !== null && _j !== void 0 ? _j : '320k',
134
197
  options.force ? '-y' : null,
135
- options.outputLocation,
198
+ (_k = options.outputLocation) !== null && _k !== void 0 ? _k : tempFile,
136
199
  ].filter(remotion_1.Internals.truthy));
137
- (_j = options.cancelSignal) === null || _j === void 0 ? void 0 : _j.call(options, () => {
200
+ (_l = options.cancelSignal) === null || _l === void 0 ? void 0 : _l.call(options, () => {
138
201
  ffmpegTask.kill();
139
202
  });
140
203
  await ffmpegTask;
141
- (_k = options.onProgress) === null || _k === void 0 ? void 0 : _k.call(options, expectedFrames);
204
+ (_m = options.onProgress) === null || _m === void 0 ? void 0 : _m.call(options, expectedFrames);
205
+ if (audio) {
206
+ await (0, delete_directory_1.deleteDirectory)(path_1.default.dirname(audio));
207
+ }
208
+ const file = await new Promise((resolve, reject) => {
209
+ if (tempFile) {
210
+ fs_1.promises
211
+ .readFile(tempFile)
212
+ .then((f) => {
213
+ return resolve(f);
214
+ })
215
+ .catch((e) => reject(e));
216
+ }
217
+ else {
218
+ resolve(null);
219
+ }
220
+ });
221
+ await (0, delete_directory_1.deleteDirectory)(options.assetsInfo.downloadMap.stitchFrames);
142
222
  return {
143
223
  getLogs: () => '',
144
- task: Promise.resolve(),
224
+ task: Promise.resolve(file),
145
225
  };
146
226
  }
147
227
  const ffmpegArgs = [
148
228
  ['-r', String(options.fps)],
149
- ...(((_l = options.internalOptions) === null || _l === void 0 ? void 0 : _l.preEncodedFileLocation)
150
- ? [['-i', (_m = options.internalOptions) === null || _m === void 0 ? void 0 : _m.preEncodedFileLocation]]
229
+ ...(((_o = options.internalOptions) === null || _o === void 0 ? void 0 : _o.preEncodedFileLocation)
230
+ ? [['-i', (_p = options.internalOptions) === null || _p === void 0 ? void 0 : _p.preEncodedFileLocation]]
151
231
  : [
152
232
  ['-f', 'image2'],
153
233
  ['-s', `${options.width}x${options.height}`],
154
234
  ['-start_number', String(options.assetsInfo.firstFrameIndex)],
155
235
  ['-i', options.assetsInfo.imageSequenceName],
156
236
  ]),
157
- ['-i', audio],
237
+ audio ? ['-i', audio] : null,
238
+ ((_q = options.numberOfGifLoops) !== null && _q !== void 0 ? _q : null) === null
239
+ ? null
240
+ : [
241
+ '-loop',
242
+ (0, convert_number_of_gif_loops_to_ffmpeg_1.convertNumberOfGifLoopsToFfmpegSyntax)((_r = options.numberOfGifLoops) !== null && _r !== void 0 ? _r : null),
243
+ ],
158
244
  // -c:v is the same as -vcodec as -codec:video
159
245
  // and specified the video codec.
160
246
  ['-c:v', encoderName],
161
- ...(((_o = options.internalOptions) === null || _o === void 0 ? void 0 : _o.preEncodedFileLocation)
247
+ ...(((_s = options.internalOptions) === null || _s === void 0 ? void 0 : _s.preEncodedFileLocation)
162
248
  ? []
163
249
  : [
164
250
  proResProfileName ? ['-profile:v', proResProfileName] : null,
165
- supportsCrf ? ['-crf', String(crf)] : null,
166
251
  ['-pix_fmt', pixelFormat],
167
252
  // Without explicitly disabling auto-alt-ref,
168
253
  // transparent WebM generation doesn't work
169
254
  pixelFormat === 'yuva420p' ? ['-auto-alt-ref', '0'] : null,
170
- ['-b:v', '1M'],
255
+ ...(0, crf_1.validateQualitySettings)({
256
+ crf: options.crf,
257
+ videoBitrate: options.videoBitrate,
258
+ codec,
259
+ }),
171
260
  ]),
172
261
  codec === 'h264' ? ['-movflags', 'faststart'] : null,
173
262
  audioCodecName ? ['-c:a', audioCodecName] : null,
174
263
  // Set max bitrate up to 1024kbps, will choose lower if that's too much
175
- audioCodecName ? ['-b:a', '512K'] : null,
264
+ audioCodecName ? ['-b:a', options.audioBitrate || '512K'] : null,
176
265
  // Ignore metadata that may come from remote media
177
266
  ['-map_metadata', '-1'],
178
267
  [
@@ -181,22 +270,29 @@ const spawnFfmpeg = async (options) => {
181
270
  [`Made with Remotion`, packageJson ? packageJson.version : null].join(' '),
182
271
  ],
183
272
  options.force ? '-y' : null,
184
- options.outputLocation,
273
+ (_t = options.outputLocation) !== null && _t !== void 0 ? _t : tempFile,
185
274
  ];
186
275
  if (options.verbose) {
187
276
  console.log('Generated FFMPEG command:');
188
277
  console.log(ffmpegArgs);
189
278
  }
190
279
  const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
191
- const task = (0, execa_1.default)((_p = options.ffmpegExecutable) !== null && _p !== void 0 ? _p : 'ffmpeg', ffmpegString, {
280
+ const finalFfmpegString = options.ffmpegOverride
281
+ ? options.ffmpegOverride({ type: 'stitcher', args: ffmpegString })
282
+ : ffmpegString;
283
+ if (options.verbose && options.ffmpegOverride) {
284
+ console.log('Generated final FFMPEG command:');
285
+ console.log(finalFfmpegString);
286
+ }
287
+ const task = (0, execa_1.default)(await (0, ffmpeg_flags_1.getExecutableBinary)((_u = options.ffmpegExecutable) !== null && _u !== void 0 ? _u : null, remotionRoot, 'ffmpeg'), finalFfmpegString, {
192
288
  cwd: options.dir,
193
289
  });
194
- (_q = options.cancelSignal) === null || _q === void 0 ? void 0 : _q.call(options, () => {
290
+ (_v = options.cancelSignal) === null || _v === void 0 ? void 0 : _v.call(options, () => {
195
291
  task.kill();
196
292
  });
197
293
  let ffmpegOutput = '';
198
294
  let isFinished = false;
199
- (_r = task.stderr) === null || _r === void 0 ? void 0 : _r.on('data', (data) => {
295
+ (_w = task.stderr) === null || _w === void 0 ? void 0 : _w.on('data', (data) => {
200
296
  var _a;
201
297
  const str = data.toString();
202
298
  ffmpegOutput += str;
@@ -218,11 +314,31 @@ const spawnFfmpeg = async (options) => {
218
314
  }
219
315
  }
220
316
  });
221
- return { task: task.then(() => undefined), getLogs: () => ffmpegOutput };
317
+ return {
318
+ task: task.then(() => {
319
+ (0, delete_directory_1.deleteDirectory)(options.assetsInfo.downloadMap.audioPreprocessing);
320
+ if (tempFile === null) {
321
+ (0, delete_directory_1.deleteDirectory)(options.assetsInfo.downloadMap.stitchFrames);
322
+ return null;
323
+ }
324
+ return fs_1.promises
325
+ .readFile(tempFile)
326
+ .then((file) => {
327
+ return Promise.all([
328
+ file,
329
+ (0, delete_directory_1.deleteDirectory)(path_1.default.dirname(tempFile)),
330
+ (0, delete_directory_1.deleteDirectory)(options.assetsInfo.downloadMap.stitchFrames),
331
+ ]);
332
+ })
333
+ .then(([file]) => file);
334
+ }),
335
+ getLogs: () => ffmpegOutput,
336
+ };
222
337
  };
223
338
  exports.spawnFfmpeg = spawnFfmpeg;
224
339
  const stitchFramesToVideo = async (options) => {
225
- const { task, getLogs } = await (0, exports.spawnFfmpeg)(options);
340
+ const remotionRoot = (0, find_closest_package_json_1.findRemotionRoot)();
341
+ const { task, getLogs } = await (0, exports.spawnFfmpeg)(options, remotionRoot);
226
342
  const happyPath = task.catch(() => {
227
343
  throw new Error(getLogs());
228
344
  });
@@ -231,7 +347,7 @@ const stitchFramesToVideo = async (options) => {
231
347
  new Promise((_resolve, reject) => {
232
348
  var _a;
233
349
  (_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
234
- reject(new Error('stitchFramesToVideo() got cancelled'));
350
+ reject(new Error(make_cancel_signal_1.cancelErrorMessages.stitchFramesToVideo));
235
351
  });
236
352
  }),
237
353
  ]);
@@ -1,5 +1,5 @@
1
- import { AssetVolume } from './assets/types';
2
- export declare const stringifyFfmpegFilter: ({ trimLeft, trimRight, channels, startInVideo, volume, fps, playbackRate, durationInFrames, assetDuration, }: {
1
+ import type { AssetVolume } from './assets/types';
2
+ export declare const stringifyFfmpegFilter: ({ trimLeft, trimRight, channels, startInVideo, volume, fps, playbackRate, durationInFrames, assetDuration, allowAmplificationDuringRender, }: {
3
3
  trimLeft: number;
4
4
  trimRight: number;
5
5
  channels: number;
@@ -9,4 +9,5 @@ export declare const stringifyFfmpegFilter: ({ trimLeft, trimRight, channels, st
9
9
  durationInFrames: number;
10
10
  playbackRate: number;
11
11
  assetDuration: number | null;
12
- }) => string;
12
+ allowAmplificationDuringRender: boolean;
13
+ }) => string | null;
@@ -1,24 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.stringifyFfmpegFilter = void 0;
4
- const remotion_1 = require("remotion");
5
4
  const calculate_atempo_1 = require("./assets/calculate-atempo");
6
5
  const ffmpeg_volume_expression_1 = require("./assets/ffmpeg-volume-expression");
7
6
  const sample_rate_1 = require("./sample-rate");
8
- const stringifyFfmpegFilter = ({ trimLeft, trimRight, channels, startInVideo, volume, fps, playbackRate, durationInFrames, assetDuration, }) => {
7
+ const truthy_1 = require("./truthy");
8
+ const stringifyFfmpegFilter = ({ trimLeft, trimRight, channels, startInVideo, volume, fps, playbackRate, durationInFrames, assetDuration, allowAmplificationDuringRender, }) => {
9
9
  const startInVideoSeconds = startInVideo / fps;
10
+ if (assetDuration && trimLeft >= assetDuration) {
11
+ return null;
12
+ }
10
13
  const volumeFilter = (0, ffmpeg_volume_expression_1.ffmpegVolumeExpression)({
11
14
  volume,
12
- startInVideo,
13
15
  fps,
14
16
  trimLeft,
17
+ allowAmplificationDuringRender,
15
18
  });
16
19
  // Avoid setting filters if possible, as combining them can create noise
17
20
  const chunkLength = durationInFrames / fps;
18
21
  const actualTrimRight = assetDuration
19
22
  ? Math.min(trimRight, assetDuration)
20
23
  : trimRight;
21
- const padAtEnd = chunkLength - (actualTrimRight - trimLeft) - startInVideoSeconds;
24
+ const audibleDuration = (actualTrimRight - trimLeft) / playbackRate;
25
+ const padAtEnd = chunkLength - audibleDuration - startInVideoSeconds;
22
26
  return (`[0:a]` +
23
27
  [
24
28
  `aformat=sample_fmts=s32:sample_rates=${sample_rate_1.DEFAULT_SAMPLE_RATE}`,
@@ -26,6 +30,12 @@ const stringifyFfmpegFilter = ({ trimLeft, trimRight, channels, startInVideo, vo
26
30
  `atrim=${trimLeft.toFixed(6)}:${actualTrimRight.toFixed(6)}`,
27
31
  // then set the tempo
28
32
  (0, calculate_atempo_1.calculateATempo)(playbackRate),
33
+ // set the volume if needed
34
+ // The timings for volume must include whatever is in atrim, unless the volume
35
+ // filter gets applied before atrim
36
+ volumeFilter.value === '1'
37
+ ? null
38
+ : `volume=${volumeFilter.value}:eval=${volumeFilter.eval}`,
29
39
  // For n channels, we delay n + 1 channels.
30
40
  // This is because `ffprobe` for some audio files reports the wrong amount
31
41
  // of channels.
@@ -37,18 +47,12 @@ const stringifyFfmpegFilter = ({ trimLeft, trimRight, channels, startInVideo, vo
37
47
  : `adelay=${new Array(channels + 1)
38
48
  .fill((startInVideoSeconds * 1000).toFixed(0))
39
49
  .join('|')}`,
40
- // set the volume if needed
41
- // The timings for volume must include whatever is in atrim, unless the volume
42
- // filter gets applied before atrim
43
- volumeFilter.value === '1'
44
- ? null
45
- : `volume=${volumeFilter.value}:eval=${volumeFilter.eval}`,
46
50
  // Only in the end, we pad to the full length.
47
51
  padAtEnd > 0.0000001
48
52
  ? 'apad=pad_len=' + Math.round(padAtEnd * sample_rate_1.DEFAULT_SAMPLE_RATE)
49
53
  : null,
50
54
  ]
51
- .filter(remotion_1.Internals.truthy)
55
+ .filter(truthy_1.truthy)
52
56
  .join(',') +
53
57
  `[a0]`);
54
58
  };
@@ -1,4 +1,4 @@
1
- import { UnsymbolicatedStackFrame } from './parse-browser-error-stack';
1
+ import type { UnsymbolicatedStackFrame } from './parse-browser-error-stack';
2
2
  declare type ScriptLine = {
3
3
  lineNumber: number;
4
4
  content: string;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.symbolicateStackTrace = void 0;
4
- const remotion_1 = require("remotion");
5
4
  const source_map_1 = require("source-map");
6
5
  const read_file_1 = require("./assets/read-file");
6
+ const truthy_1 = require("./truthy");
7
7
  function extractSourceMapUrl(fileContents) {
8
8
  const regex = /\/\/[#@] ?sourceMappingURL=([^\s'"]+)\s*$/gm;
9
9
  let match = null;
@@ -74,7 +74,7 @@ const symbolicateStackTrace = async (frames) => {
74
74
  ...new Set(frames
75
75
  .map((f) => f.fileName)
76
76
  .filter((f) => f.startsWith('http://') || f.startsWith('https://'))
77
- .filter(remotion_1.Internals.truthy)),
77
+ .filter(truthy_1.truthy)),
78
78
  ];
79
79
  const maps = await Promise.all(uniqueFileNames.map(async (fileName) => {
80
80
  const fileContents = await fetchUrl(fileName);
@@ -105,6 +105,6 @@ const symbolicateStackTrace = async (frames) => {
105
105
  originalScriptCode: scriptCode,
106
106
  };
107
107
  })
108
- .filter(remotion_1.Internals.truthy);
108
+ .filter(truthy_1.truthy);
109
109
  };
110
110
  exports.symbolicateStackTrace = symbolicateStackTrace;
@@ -0,0 +1,19 @@
1
+ import type { TAsset } from 'remotion';
2
+ import type { DownloadMap } from './assets/download-map';
3
+ import type { Page } from './browser/BrowserPage';
4
+ import type { ImageFormat } from './image-format';
5
+ export declare const takeFrameAndCompose: ({ freePage, imageFormat, quality, frame, width, height, output, scale, downloadMap, wantsBuffer, }: {
6
+ freePage: Page;
7
+ imageFormat: ImageFormat;
8
+ quality: number | undefined;
9
+ frame: number;
10
+ height: number;
11
+ width: number;
12
+ output: string | null;
13
+ scale: number;
14
+ downloadMap: DownloadMap;
15
+ wantsBuffer: boolean;
16
+ }) => Promise<{
17
+ buffer: Buffer | null;
18
+ collectedAssets: TAsset[];
19
+ }>;
@@ -0,0 +1,96 @@
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.takeFrameAndCompose = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const compose_1 = require("./compositor/compose");
10
+ const provide_screenshot_1 = require("./provide-screenshot");
11
+ const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
12
+ const truthy_1 = require("./truthy");
13
+ const takeFrameAndCompose = async ({ freePage, imageFormat, quality, frame, width, height, output, scale, downloadMap, wantsBuffer, }) => {
14
+ var _a;
15
+ const [clipRegion, collectedAssets] = await Promise.all([
16
+ (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
17
+ pageFunction: () => {
18
+ if (typeof window.remotion_getClipRegion === 'undefined') {
19
+ return null;
20
+ }
21
+ return window.remotion_getClipRegion();
22
+ },
23
+ args: [],
24
+ frame,
25
+ page: freePage,
26
+ }),
27
+ (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
28
+ pageFunction: () => {
29
+ return window.remotion_collectAssets();
30
+ },
31
+ args: [],
32
+ frame,
33
+ page: freePage,
34
+ }),
35
+ ]);
36
+ if (imageFormat === 'none') {
37
+ return { buffer: null, collectedAssets };
38
+ }
39
+ const needsComposing = clipRegion === null
40
+ ? null
41
+ : {
42
+ tmpFile: path_1.default.join(downloadMap.compositingDir, `${frame}.${imageFormat}`),
43
+ finalOutfie: output !== null && output !== void 0 ? output : path_1.default.join(downloadMap.compositingDir, `${frame}-final.${imageFormat}`),
44
+ clipRegion: clipRegion,
45
+ };
46
+ if (clipRegion !== 'hide') {
47
+ const shouldMakeBuffer = wantsBuffer && !needsComposing;
48
+ const buf = await (0, provide_screenshot_1.provideScreenshot)({
49
+ page: freePage,
50
+ imageFormat,
51
+ quality,
52
+ options: {
53
+ frame,
54
+ output: shouldMakeBuffer ? null : (_a = needsComposing === null || needsComposing === void 0 ? void 0 : needsComposing.tmpFile) !== null && _a !== void 0 ? _a : output,
55
+ },
56
+ height,
57
+ width,
58
+ clipRegion,
59
+ });
60
+ if (shouldMakeBuffer) {
61
+ return { buffer: buf, collectedAssets };
62
+ }
63
+ }
64
+ if (needsComposing) {
65
+ await (0, compose_1.compose)({
66
+ height: height * scale,
67
+ width: width * scale,
68
+ layers: [
69
+ needsComposing.clipRegion === 'hide'
70
+ ? null
71
+ : {
72
+ type: imageFormat === 'jpeg'
73
+ ? 'JpgImage'
74
+ : 'PngImage',
75
+ params: {
76
+ height: needsComposing.clipRegion.height * scale,
77
+ width: needsComposing.clipRegion.width * scale,
78
+ src: needsComposing.tmpFile,
79
+ x: needsComposing.clipRegion.x * scale,
80
+ y: needsComposing.clipRegion.y * scale,
81
+ },
82
+ },
83
+ ].filter(truthy_1.truthy),
84
+ output: needsComposing.finalOutfie,
85
+ downloadMap,
86
+ imageFormat: imageFormat === 'jpeg' ? 'Jpeg' : 'Png',
87
+ });
88
+ if (wantsBuffer) {
89
+ const buffer = await fs_1.default.promises.readFile(needsComposing.finalOutfie);
90
+ await fs_1.default.promises.unlink(needsComposing.finalOutfie);
91
+ return { buffer, collectedAssets };
92
+ }
93
+ }
94
+ return { buffer: null, collectedAssets };
95
+ };
96
+ exports.takeFrameAndCompose = takeFrameAndCompose;
package/dist/tmp-dir.d.ts CHANGED
File without changes
package/dist/tmp-dir.js CHANGED
File without changes
@@ -0,0 +1,3 @@
1
+ declare type Truthy<T> = T extends false | '' | 0 | null | undefined ? never : T;
2
+ export declare function truthy<T>(value: T): value is Truthy<T>;
3
+ export {};
package/dist/truthy.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.truthy = void 0;
4
+ function truthy(value) {
5
+ return Boolean(value);
6
+ }
7
+ exports.truthy = truthy;