@remotion/renderer 4.0.0-alpha.4 → 4.0.0-alpha5

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 (585) hide show
  1. package/LICENSE.md +8 -8
  2. package/README.md +9 -0
  3. package/client.d.ts +1 -0
  4. package/client.js +1 -0
  5. package/dist/assets/calculate-asset-positions.d.ts +0 -0
  6. package/dist/assets/calculate-asset-positions.js +1 -0
  7. package/dist/assets/calculate-atempo.d.ts +0 -0
  8. package/dist/assets/calculate-atempo.js +0 -0
  9. package/dist/assets/convert-assets-to-file-urls.d.ts +0 -0
  10. package/dist/assets/convert-assets-to-file-urls.js +0 -0
  11. package/dist/assets/download-and-map-assets-to-file.d.ts +2 -1
  12. package/dist/assets/download-and-map-assets-to-file.js +60 -11
  13. package/dist/assets/download-file.d.ts +7 -5
  14. package/dist/assets/download-file.js +49 -6
  15. package/dist/assets/download-map.d.ts +5 -26
  16. package/dist/assets/download-map.js +8 -9
  17. package/dist/assets/ffmpeg-volume-expression.d.ts +2 -1
  18. package/dist/assets/ffmpeg-volume-expression.js +5 -3
  19. package/dist/assets/flatten-volume-array.d.ts +0 -0
  20. package/dist/assets/flatten-volume-array.js +0 -0
  21. package/dist/assets/get-audio-channels.d.ts +1 -2
  22. package/dist/assets/get-audio-channels.js +5 -8
  23. package/dist/assets/get-video-stream-duration.d.ts +7 -1
  24. package/dist/assets/get-video-stream-duration.js +50 -14
  25. package/dist/assets/read-file.d.ts +0 -0
  26. package/dist/assets/read-file.js +2 -4
  27. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -0
  28. package/dist/assets/round-volume-to-avoid-stack-overflow.js +0 -0
  29. package/dist/assets/sanitize-filename.d.ts +0 -0
  30. package/dist/assets/sanitize-filename.js +0 -0
  31. package/dist/assets/sanitize-filepath.d.ts +0 -0
  32. package/dist/assets/sanitize-filepath.js +0 -0
  33. package/dist/assets/truncate-utf8-bytes.d.ts +0 -0
  34. package/dist/assets/truncate-utf8-bytes.js +0 -0
  35. package/dist/assets/types.d.ts +1 -0
  36. package/dist/assets/types.js +0 -0
  37. package/dist/audio-codec.d.ts +28 -0
  38. package/dist/audio-codec.js +83 -0
  39. package/dist/browser/Browser.d.ts +4 -2
  40. package/dist/browser/Browser.js +15 -12
  41. package/dist/browser/BrowserConnector.d.ts +0 -0
  42. package/dist/browser/BrowserConnector.js +0 -0
  43. package/dist/browser/BrowserFetcher.d.ts +15 -63
  44. package/dist/browser/BrowserFetcher.js +145 -231
  45. package/dist/browser/BrowserPage.d.ts +8 -2
  46. package/dist/browser/BrowserPage.js +8 -11
  47. package/dist/browser/BrowserRunner.d.ts +1 -4
  48. package/dist/browser/BrowserRunner.js +38 -75
  49. package/dist/browser/Connection.d.ts +0 -0
  50. package/dist/browser/Connection.js +1 -1
  51. package/dist/browser/ConsoleMessage.d.ts +0 -0
  52. package/dist/browser/ConsoleMessage.js +0 -0
  53. package/dist/browser/DOMWorld.d.ts +2 -1
  54. package/dist/browser/DOMWorld.js +8 -1
  55. package/dist/browser/Errors.d.ts +0 -0
  56. package/dist/browser/Errors.js +0 -0
  57. package/dist/browser/EvalTypes.d.ts +0 -0
  58. package/dist/browser/EvalTypes.js +0 -0
  59. package/dist/browser/EventEmitter.d.ts +0 -0
  60. package/dist/browser/EventEmitter.js +0 -0
  61. package/dist/browser/ExecutionContext.d.ts +0 -0
  62. package/dist/browser/ExecutionContext.js +0 -0
  63. package/dist/browser/FrameManager.d.ts +0 -2
  64. package/dist/browser/FrameManager.js +2 -6
  65. package/dist/browser/HTTPRequest.d.ts +0 -0
  66. package/dist/browser/HTTPRequest.js +0 -0
  67. package/dist/browser/HTTPResponse.d.ts +0 -0
  68. package/dist/browser/HTTPResponse.js +0 -0
  69. package/dist/browser/JSHandle.d.ts +0 -0
  70. package/dist/browser/JSHandle.js +0 -0
  71. package/dist/browser/LaunchOptions.d.ts +1 -4
  72. package/dist/browser/LaunchOptions.js +0 -0
  73. package/dist/browser/Launcher.d.ts +7 -1
  74. package/dist/browser/Launcher.js +13 -375
  75. package/dist/browser/LifecycleWatcher.d.ts +0 -0
  76. package/dist/browser/LifecycleWatcher.js +0 -0
  77. package/dist/browser/NetworkEventManager.d.ts +0 -0
  78. package/dist/browser/NetworkEventManager.js +0 -0
  79. package/dist/browser/NetworkManager.d.ts +0 -0
  80. package/dist/browser/NetworkManager.js +0 -0
  81. package/dist/browser/NodeWebSocketTransport.d.ts +0 -0
  82. package/dist/browser/NodeWebSocketTransport.js +1 -1
  83. package/dist/browser/Product.d.ts +0 -0
  84. package/dist/browser/Product.js +0 -0
  85. package/dist/browser/PuppeteerNode.d.ts +0 -3
  86. package/dist/browser/PuppeteerNode.js +2 -14
  87. package/dist/browser/PuppeteerViewport.d.ts +0 -0
  88. package/dist/browser/PuppeteerViewport.js +0 -0
  89. package/dist/browser/ScreenshotOptions.d.ts +0 -14
  90. package/dist/browser/ScreenshotOptions.js +0 -1
  91. package/dist/browser/Target.d.ts +0 -0
  92. package/dist/browser/Target.js +0 -0
  93. package/dist/browser/TaskQueue.d.ts +0 -0
  94. package/dist/browser/TaskQueue.js +0 -0
  95. package/dist/browser/TimeoutSettings.d.ts +0 -0
  96. package/dist/browser/TimeoutSettings.js +0 -0
  97. package/dist/browser/assert.d.ts +0 -0
  98. package/dist/browser/assert.js +0 -0
  99. package/dist/browser/create-browser-fetcher.d.ts +0 -0
  100. package/dist/browser/create-browser-fetcher.js +34 -90
  101. package/dist/browser/devtools-commands.d.ts +5 -1
  102. package/dist/browser/devtools-commands.js +0 -0
  103. package/dist/browser/devtools-types.d.ts +82 -0
  104. package/dist/browser/devtools-types.js +0 -0
  105. package/dist/browser/get-download-destination.d.ts +0 -0
  106. package/dist/browser/get-download-destination.js +0 -0
  107. package/dist/browser/is-target-closed-err.d.ts +1 -0
  108. package/dist/browser/is-target-closed-err.js +9 -0
  109. package/dist/browser/mitt/index.d.ts +0 -0
  110. package/dist/browser/mitt/index.js +0 -0
  111. package/dist/browser/node.d.ts +0 -0
  112. package/dist/browser/node.js +0 -0
  113. package/dist/browser/revisions.d.ts +0 -1
  114. package/dist/browser/revisions.js +0 -1
  115. package/dist/browser/util.d.ts +0 -0
  116. package/dist/browser/util.js +0 -0
  117. package/dist/browser-executable.d.ts +0 -0
  118. package/dist/browser-executable.js +0 -0
  119. package/dist/browser-log.d.ts +0 -0
  120. package/dist/browser-log.js +0 -0
  121. package/dist/browser.d.ts +0 -0
  122. package/dist/browser.js +0 -0
  123. package/dist/calculate-ffmpeg-filters.d.ts +2 -1
  124. package/dist/calculate-ffmpeg-filters.js +1 -0
  125. package/dist/calculate-sar-dar-pixels.d.ts +0 -0
  126. package/dist/calculate-sar-dar-pixels.js +0 -0
  127. package/dist/call-ffmpeg.d.ts +14 -0
  128. package/dist/call-ffmpeg.js +37 -0
  129. package/dist/can-use-parallel-encoding.d.ts +0 -0
  130. package/dist/can-use-parallel-encoding.js +0 -0
  131. package/dist/check-apple-silicon.d.ts +1 -0
  132. package/dist/check-apple-silicon.js +12 -0
  133. package/dist/chunk.d.ts +0 -0
  134. package/dist/chunk.js +0 -0
  135. package/dist/client.d.ts +204 -0
  136. package/dist/client.js +49 -0
  137. package/dist/codec-supports-media.d.ts +2 -0
  138. package/dist/codec-supports-media.js +23 -1
  139. package/dist/codec.d.ts +0 -0
  140. package/dist/codec.js +0 -0
  141. package/dist/combine-videos.d.ts +6 -2
  142. package/dist/combine-videos.js +14 -14
  143. package/dist/compositor/compose.d.ts +15 -0
  144. package/dist/compositor/compose.js +67 -0
  145. package/dist/compositor/compositor.d.ts +12 -0
  146. package/dist/compositor/compositor.js +202 -0
  147. package/dist/compositor/get-executable-path.d.ts +1 -0
  148. package/dist/compositor/get-executable-path.js +66 -0
  149. package/dist/compositor/make-nonce.d.ts +1 -0
  150. package/dist/compositor/make-nonce.js +8 -0
  151. package/dist/compositor/payloads.d.ts +68 -0
  152. package/dist/compositor/payloads.js +2 -0
  153. package/dist/compress-assets.d.ts +0 -0
  154. package/dist/compress-assets.js +0 -0
  155. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
  156. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
  157. package/dist/convert-to-positive-frame-index.d.ts +4 -0
  158. package/dist/convert-to-positive-frame-index.js +8 -0
  159. package/dist/create-ffmpeg-complex-filter.d.ts +5 -1
  160. package/dist/create-ffmpeg-complex-filter.js +6 -4
  161. package/dist/create-ffmpeg-merge-filter.d.ts +5 -1
  162. package/dist/create-ffmpeg-merge-filter.js +21 -13
  163. package/dist/create-silent-audio.d.ts +1 -3
  164. package/dist/create-silent-audio.js +3 -6
  165. package/dist/crf.d.ts +5 -1
  166. package/dist/crf.js +41 -8
  167. package/dist/cycle-browser-tabs.d.ts +2 -5
  168. package/dist/cycle-browser-tabs.js +5 -5
  169. package/dist/delay-render-embedded-stack.d.ts +0 -0
  170. package/dist/delay-render-embedded-stack.js +0 -0
  171. package/dist/delete-directory.d.ts +1 -1
  172. package/dist/delete-directory.js +43 -17
  173. package/dist/determine-resize-params.d.ts +1 -0
  174. package/dist/determine-resize-params.js +10 -0
  175. package/dist/determine-vcodec-ffmpeg-flags.d.ts +2 -0
  176. package/dist/determine-vcodec-ffmpeg-flags.js +13 -0
  177. package/dist/does-have-m2-bug.d.ts +3 -0
  178. package/dist/does-have-m2-bug.js +12 -0
  179. package/dist/ensure-ffmpeg.d.ts +18 -0
  180. package/dist/ensure-ffmpeg.js +58 -0
  181. package/dist/ensure-frames-in-order.d.ts +0 -0
  182. package/dist/ensure-frames-in-order.js +0 -0
  183. package/dist/ensure-output-directory.d.ts +0 -0
  184. package/dist/ensure-output-directory.js +0 -0
  185. package/dist/ensure-presentation-timestamp.d.ts +14 -1
  186. package/dist/ensure-presentation-timestamp.js +36 -17
  187. package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
  188. package/dist/error-handling/handle-javascript-exception.js +10 -0
  189. package/dist/error-handling/symbolicate-error.d.ts +0 -0
  190. package/dist/error-handling/symbolicate-error.js +2 -1
  191. package/dist/error-handling/symbolicateable-error.d.ts +0 -0
  192. package/dist/error-handling/symbolicateable-error.js +0 -0
  193. package/dist/extract-frame-from-video.d.ts +2 -0
  194. package/dist/extract-frame-from-video.js +47 -110
  195. package/dist/ffmpeg-executable.d.ts +0 -0
  196. package/dist/ffmpeg-executable.js +0 -0
  197. package/dist/ffmpeg-filter-file.d.ts +6 -1
  198. package/dist/ffmpeg-filter-file.js +36 -4
  199. package/dist/ffmpeg-flags.d.ts +20 -2
  200. package/dist/ffmpeg-flags.js +205 -9
  201. package/dist/ffmpeg-override.d.ts +4 -0
  202. package/dist/ffmpeg-override.js +2 -0
  203. package/dist/file-extensions.d.ts +14 -0
  204. package/dist/file-extensions.js +76 -0
  205. package/dist/find-closest-package-json.d.ts +2 -0
  206. package/dist/find-closest-package-json.js +31 -0
  207. package/dist/frame-range.d.ts +0 -0
  208. package/dist/frame-range.js +0 -0
  209. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -0
  210. package/dist/frame-to-ffmpeg-timestamp.js +0 -0
  211. package/dist/get-browser-instance.d.ts +0 -0
  212. package/dist/get-browser-instance.js +1 -1
  213. package/dist/get-can-extract-frames-fast.d.ts +14 -0
  214. package/dist/get-can-extract-frames-fast.js +71 -0
  215. package/dist/get-codec-name.d.ts +0 -0
  216. package/dist/get-codec-name.js +0 -0
  217. package/dist/get-compositions.d.ts +7 -5
  218. package/dist/get-compositions.js +23 -7
  219. package/dist/get-concurrency.d.ts +1 -1
  220. package/dist/get-concurrency.js +8 -1
  221. package/dist/get-duration-from-frame-range.d.ts +0 -0
  222. package/dist/get-duration-from-frame-range.js +0 -0
  223. package/dist/get-extension-from-codec.d.ts +5 -1
  224. package/dist/get-extension-from-codec.js +56 -32
  225. package/dist/get-extension-of-filename.d.ts +0 -0
  226. package/dist/get-extension-of-filename.js +5 -1
  227. package/dist/get-frame-of-video-slow.d.ts +15 -0
  228. package/dist/get-frame-of-video-slow.js +72 -0
  229. package/dist/get-frame-padded-index.d.ts +2 -1
  230. package/dist/get-frame-padded-index.js +3 -2
  231. package/dist/get-frame-to-render.d.ts +0 -0
  232. package/dist/get-frame-to-render.js +1 -1
  233. package/dist/get-local-browser-executable.d.ts +0 -0
  234. package/dist/get-local-browser-executable.js +4 -14
  235. package/dist/get-port.d.ts +4 -1
  236. package/dist/get-port.js +8 -8
  237. package/dist/get-prores-profile-name.d.ts +0 -0
  238. package/dist/get-prores-profile-name.js +0 -0
  239. package/dist/get-video-info.d.ts +6 -1
  240. package/dist/get-video-info.js +19 -9
  241. package/dist/get-video-threads-flag.d.ts +0 -0
  242. package/dist/get-video-threads-flag.js +0 -0
  243. package/dist/guess-extension-for-media.d.ts +3 -1
  244. package/dist/guess-extension-for-media.js +5 -8
  245. package/dist/image-format.d.ts +12 -6
  246. package/dist/image-format.js +19 -13
  247. package/dist/index.d.ts +201 -48
  248. package/dist/index.js +37 -36
  249. package/dist/is-audio-codec.d.ts +0 -0
  250. package/dist/is-audio-codec.js +0 -0
  251. package/dist/is-beyond-last-frame.d.ts +0 -0
  252. package/dist/is-beyond-last-frame.js +0 -0
  253. package/dist/is-serve-url.d.ts +0 -0
  254. package/dist/is-serve-url.js +0 -0
  255. package/dist/jpeg-quality.d.ts +1 -0
  256. package/dist/jpeg-quality.js +21 -0
  257. package/dist/last-frame-from-video-cache.d.ts +2 -0
  258. package/dist/last-frame-from-video-cache.js +0 -0
  259. package/dist/legacy-webpack-config.d.ts +0 -0
  260. package/dist/legacy-webpack-config.js +0 -0
  261. package/dist/locks.d.ts +7 -0
  262. package/dist/locks.js +44 -0
  263. package/dist/log-level.d.ts +0 -0
  264. package/dist/log-level.js +0 -0
  265. package/dist/make-cancel-signal.d.ts +11 -0
  266. package/dist/make-cancel-signal.js +24 -1
  267. package/dist/merge-audio-track.d.ts +3 -3
  268. package/dist/merge-audio-track.js +39 -33
  269. package/dist/mime-db.d.ts +0 -0
  270. package/dist/mime-db.js +0 -0
  271. package/dist/mime-types.d.ts +1 -0
  272. package/dist/mime-types.js +6 -1
  273. package/dist/normalize-serve-url.d.ts +0 -0
  274. package/dist/normalize-serve-url.js +0 -0
  275. package/dist/offthread-video-server.d.ts +8 -7
  276. package/dist/offthread-video-server.js +64 -45
  277. package/dist/open-browser.d.ts +6 -0
  278. package/dist/open-browser.js +16 -18
  279. package/dist/options/audio-bitrate.d.ts +2 -0
  280. package/dist/options/audio-bitrate.js +11 -0
  281. package/dist/options/crf.d.ts +2 -0
  282. package/dist/options/crf.js +11 -0
  283. package/dist/options/enforce-audio.d.ts +2 -0
  284. package/dist/options/enforce-audio.js +11 -0
  285. package/dist/options/jpeg-quality.d.ts +2 -0
  286. package/dist/options/jpeg-quality.js +11 -0
  287. package/dist/options/mute.d.ts +2 -0
  288. package/dist/options/mute.js +11 -0
  289. package/dist/options/option.d.ts +8 -0
  290. package/dist/options/option.js +2 -0
  291. package/dist/options/scale.d.ts +2 -0
  292. package/dist/options/scale.js +11 -0
  293. package/dist/options/video-bitrate.d.ts +2 -0
  294. package/dist/options/video-bitrate.js +11 -0
  295. package/dist/options/video-codec.d.ts +2 -0
  296. package/dist/options/video-codec.js +11 -0
  297. package/dist/overwrite.d.ts +0 -0
  298. package/dist/overwrite.js +0 -0
  299. package/dist/p-limit.d.ts +0 -0
  300. package/dist/p-limit.js +0 -0
  301. package/dist/parse-browser-error-stack.d.ts +0 -0
  302. package/dist/parse-browser-error-stack.js +0 -0
  303. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  304. package/dist/parse-ffmpeg-progress.js +0 -0
  305. package/dist/perf.d.ts +1 -1
  306. package/dist/perf.js +9 -7
  307. package/dist/pixel-format.d.ts +1 -1
  308. package/dist/pixel-format.js +3 -0
  309. package/dist/pool.d.ts +0 -0
  310. package/dist/pool.js +0 -0
  311. package/dist/prepare-server.d.ts +5 -5
  312. package/dist/prepare-server.js +12 -7
  313. package/dist/preprocess-audio-track.d.ts +6 -4
  314. package/dist/preprocess-audio-track.js +7 -8
  315. package/dist/prespawn-ffmpeg.d.ts +9 -9
  316. package/dist/prespawn-ffmpeg.js +17 -17
  317. package/dist/prestitcher-memory-usage.d.ts +0 -4
  318. package/dist/prestitcher-memory-usage.js +2 -3
  319. package/dist/prores-profile.d.ts +5 -3
  320. package/dist/prores-profile.js +8 -8
  321. package/dist/provide-screenshot.d.ts +8 -5
  322. package/dist/provide-screenshot.js +5 -2
  323. package/dist/puppeteer-evaluate.d.ts +0 -0
  324. package/dist/puppeteer-evaluate.js +19 -11
  325. package/dist/puppeteer-screenshot.d.ts +12 -3
  326. package/dist/puppeteer-screenshot.js +18 -44
  327. package/dist/quality.d.ts +0 -0
  328. package/dist/quality.js +0 -0
  329. package/dist/redirect-status-codes.d.ts +1 -0
  330. package/dist/redirect-status-codes.js +6 -0
  331. package/dist/render-frames.d.ts +19 -19
  332. package/dist/render-frames.js +186 -105
  333. package/dist/render-media.d.ts +46 -16
  334. package/dist/render-media.js +128 -42
  335. package/dist/render-still.d.ts +17 -11
  336. package/dist/render-still.js +79 -43
  337. package/dist/replace-browser.d.ts +6 -0
  338. package/dist/replace-browser.js +47 -0
  339. package/dist/resolve-asset-src.d.ts +0 -0
  340. package/dist/resolve-asset-src.js +0 -0
  341. package/dist/sample-rate.d.ts +0 -0
  342. package/dist/sample-rate.js +0 -0
  343. package/dist/screenshot-dom-element.d.ts +8 -5
  344. package/dist/screenshot-dom-element.js +15 -4
  345. package/dist/screenshot-task.d.ts +11 -2
  346. package/dist/screenshot-task.js +43 -13
  347. package/dist/seek-to-frame.d.ts +1 -0
  348. package/dist/seek-to-frame.js +49 -3
  349. package/dist/serve-handler/index.d.ts +0 -0
  350. package/dist/serve-handler/index.js +6 -4
  351. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  352. package/dist/serve-handler/is-path-inside.js +0 -0
  353. package/dist/serve-handler/range-parser.d.ts +0 -0
  354. package/dist/serve-handler/range-parser.js +0 -0
  355. package/dist/serve-static.d.ts +3 -3
  356. package/dist/serve-static.js +84 -44
  357. package/dist/set-props-and-env.d.ts +3 -1
  358. package/dist/set-props-and-env.js +39 -15
  359. package/dist/stitch-frames-to-video.d.ts +15 -12
  360. package/dist/stitch-frames-to-video.js +120 -57
  361. package/dist/stringify-ffmpeg-filter.d.ts +10 -2
  362. package/dist/stringify-ffmpeg-filter.js +37 -34
  363. package/dist/symbolicate-stacktrace.d.ts +0 -0
  364. package/dist/symbolicate-stacktrace.js +0 -0
  365. package/dist/take-frame-and-compose.d.ts +19 -0
  366. package/dist/take-frame-and-compose.js +102 -0
  367. package/dist/tmp-dir.d.ts +0 -0
  368. package/dist/tmp-dir.js +1 -2
  369. package/dist/truthy.d.ts +0 -0
  370. package/dist/truthy.js +0 -0
  371. package/dist/try-to-extract-frame-of-video-fast.d.ts +13 -0
  372. package/dist/try-to-extract-frame-of-video-fast.js +55 -0
  373. package/dist/types.d.ts +0 -0
  374. package/dist/types.js +0 -0
  375. package/dist/validate-concurrency.d.ts +2 -0
  376. package/dist/validate-concurrency.js +21 -10
  377. package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
  378. package/dist/validate-even-dimensions-with-codec.js +0 -0
  379. package/dist/validate-every-nth-frame.d.ts +2 -1
  380. package/dist/validate-every-nth-frame.js +8 -1
  381. package/dist/validate-ffmpeg-override.d.ts +2 -0
  382. package/dist/validate-ffmpeg-override.js +12 -0
  383. package/dist/validate-ffmpeg.d.ts +7 -2
  384. package/dist/validate-ffmpeg.js +48 -43
  385. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  386. package/dist/validate-number-of-gif-loops.js +24 -0
  387. package/dist/validate-opengl-renderer.d.ts +0 -0
  388. package/dist/validate-opengl-renderer.js +0 -0
  389. package/dist/validate-output-filename.d.ts +7 -2
  390. package/dist/validate-output-filename.js +20 -51
  391. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  392. package/dist/validate-puppeteer-timeout.js +2 -1
  393. package/dist/validate-scale.d.ts +0 -0
  394. package/dist/validate-scale.js +0 -0
  395. package/dist/validate-videobitrate.d.ts +1 -0
  396. package/dist/validate-videobitrate.js +20 -0
  397. package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
  398. package/dist/wait-for-symbolication-error-to-be-done.js +5 -31
  399. package/dist/warn-about-ffmpeg-version.d.ts +5 -0
  400. package/dist/warn-about-ffmpeg-version.js +37 -0
  401. package/dist/ws/ws-types.d.ts +0 -0
  402. package/dist/ws/ws-types.js +2 -1
  403. package/install-toolchain.mjs +36 -0
  404. package/package.json +69 -60
  405. package/.prettierrc.js +0 -14
  406. package/dist/add-silent-audio-if-necessary.d.ts +0 -8
  407. package/dist/add-silent-audio-if-necessary.d.ts.map +0 -1
  408. package/dist/add-silent-audio-if-necessary.js +0 -51
  409. package/dist/add-silent-audio-if-necessary.js.map +0 -1
  410. package/dist/assets/asset-is-used-at-time.d.ts +0 -3
  411. package/dist/assets/asset-is-used-at-time.d.ts.map +0 -1
  412. package/dist/assets/asset-is-used-at-time.js +0 -8
  413. package/dist/assets/asset-is-used-at-time.js.map +0 -1
  414. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  415. package/dist/assets/calculate-asset-positions.js.map +0 -1
  416. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  417. package/dist/assets/calculate-atempo.js.map +0 -1
  418. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  419. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  420. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  421. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  422. package/dist/assets/download-file.d.ts.map +0 -1
  423. package/dist/assets/download-file.js.map +0 -1
  424. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  425. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  426. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  427. package/dist/assets/flatten-volume-array.js.map +0 -1
  428. package/dist/assets/get-asset-audio-details.d.ts +0 -5
  429. package/dist/assets/get-asset-audio-details.d.ts.map +0 -1
  430. package/dist/assets/get-asset-audio-details.js +0 -21
  431. package/dist/assets/get-asset-audio-details.js.map +0 -1
  432. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  433. package/dist/assets/get-audio-channels.js.map +0 -1
  434. package/dist/assets/get-simulatenous-assets.d.ts +0 -3
  435. package/dist/assets/get-simulatenous-assets.d.ts.map +0 -1
  436. package/dist/assets/get-simulatenous-assets.js +0 -14
  437. package/dist/assets/get-simulatenous-assets.js.map +0 -1
  438. package/dist/assets/read-file.d.ts.map +0 -1
  439. package/dist/assets/read-file.js.map +0 -1
  440. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  441. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  442. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  443. package/dist/assets/sanitize-filename.js.map +0 -1
  444. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  445. package/dist/assets/sanitize-filepath.js.map +0 -1
  446. package/dist/assets/split-assets-into-segments.d.ts +0 -6
  447. package/dist/assets/split-assets-into-segments.d.ts.map +0 -1
  448. package/dist/assets/split-assets-into-segments.js +0 -89
  449. package/dist/assets/split-assets-into-segments.js.map +0 -1
  450. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  451. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  452. package/dist/assets/types.d.ts.map +0 -1
  453. package/dist/assets/types.js.map +0 -1
  454. package/dist/assets-to-ffmpeg-inputs.d.ts +0 -7
  455. package/dist/assets-to-ffmpeg-inputs.d.ts.map +0 -1
  456. package/dist/assets-to-ffmpeg-inputs.js +0 -15
  457. package/dist/assets-to-ffmpeg-inputs.js.map +0 -1
  458. package/dist/browser-log.d.ts.map +0 -1
  459. package/dist/browser-log.js.map +0 -1
  460. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  461. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  462. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  463. package/dist/can-use-parallel-encoding.js.map +0 -1
  464. package/dist/combine-videos.d.ts.map +0 -1
  465. package/dist/combine-videos.js.map +0 -1
  466. package/dist/convert-to-pcm.d.ts +0 -6
  467. package/dist/convert-to-pcm.js +0 -20
  468. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  469. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  470. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  471. package/dist/cycle-browser-tabs.js.map +0 -1
  472. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  473. package/dist/delay-render-embedded-stack.js.map +0 -1
  474. package/dist/delete-directory.d.ts.map +0 -1
  475. package/dist/delete-directory.js.map +0 -1
  476. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  477. package/dist/ensure-frames-in-order.js.map +0 -1
  478. package/dist/ensure-output-directory.d.ts.map +0 -1
  479. package/dist/ensure-output-directory.js.map +0 -1
  480. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  481. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  482. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  483. package/dist/error-handling/symbolicate-error.js.map +0 -1
  484. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  485. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  486. package/dist/ffmpeg-flags.d.ts.map +0 -1
  487. package/dist/ffmpeg-flags.js.map +0 -1
  488. package/dist/get-audio-codec-name.d.ts +0 -2
  489. package/dist/get-audio-codec-name.d.ts.map +0 -1
  490. package/dist/get-audio-codec-name.js +0 -28
  491. package/dist/get-audio-codec-name.js.map +0 -1
  492. package/dist/get-browser-instance.d.ts.map +0 -1
  493. package/dist/get-browser-instance.js.map +0 -1
  494. package/dist/get-codec-name.d.ts.map +0 -1
  495. package/dist/get-codec-name.js.map +0 -1
  496. package/dist/get-compositions.d.ts.map +0 -1
  497. package/dist/get-compositions.js.map +0 -1
  498. package/dist/get-concurrency.d.ts.map +0 -1
  499. package/dist/get-concurrency.js.map +0 -1
  500. package/dist/get-extension-from-codec.d.ts.map +0 -1
  501. package/dist/get-extension-from-codec.js.map +0 -1
  502. package/dist/get-frame-to-render.d.ts.map +0 -1
  503. package/dist/get-frame-to-render.js.map +0 -1
  504. package/dist/get-local-browser-executable.d.ts.map +0 -1
  505. package/dist/get-local-browser-executable.js.map +0 -1
  506. package/dist/get-port.d.ts.map +0 -1
  507. package/dist/get-port.js.map +0 -1
  508. package/dist/get-prores-profile-name.d.ts.map +0 -1
  509. package/dist/get-prores-profile-name.js.map +0 -1
  510. package/dist/image-format.d.ts.map +0 -1
  511. package/dist/image-format.js.map +0 -1
  512. package/dist/index.d.ts.map +0 -1
  513. package/dist/index.js.map +0 -1
  514. package/dist/is-serve-url.d.ts.map +0 -1
  515. package/dist/is-serve-url.js.map +0 -1
  516. package/dist/legacy-webpack-config.d.ts.map +0 -1
  517. package/dist/legacy-webpack-config.js.map +0 -1
  518. package/dist/make-assets-download-dir.d.ts +0 -1
  519. package/dist/make-assets-download-dir.d.ts.map +0 -1
  520. package/dist/make-assets-download-dir.js +0 -13
  521. package/dist/make-assets-download-dir.js.map +0 -1
  522. package/dist/normalize-serve-url.d.ts.map +0 -1
  523. package/dist/normalize-serve-url.js.map +0 -1
  524. package/dist/open-browser.d.ts.map +0 -1
  525. package/dist/open-browser.js.map +0 -1
  526. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  527. package/dist/parse-browser-error-stack.js.map +0 -1
  528. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  529. package/dist/parse-ffmpeg-progress.js.map +0 -1
  530. package/dist/pool.d.ts.map +0 -1
  531. package/dist/pool.js.map +0 -1
  532. package/dist/prepare-server.d.ts.map +0 -1
  533. package/dist/prepare-server.js.map +0 -1
  534. package/dist/provide-screenshot.d.ts.map +0 -1
  535. package/dist/provide-screenshot.js.map +0 -1
  536. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  537. package/dist/puppeteer-evaluate.js.map +0 -1
  538. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  539. package/dist/puppeteer-screenshot.js.map +0 -1
  540. package/dist/render-media.d.ts.map +0 -1
  541. package/dist/render-media.js.map +0 -1
  542. package/dist/render-still.d.ts.map +0 -1
  543. package/dist/render-still.js.map +0 -1
  544. package/dist/render.d.ts +0 -45
  545. package/dist/render.d.ts.map +0 -1
  546. package/dist/render.js +0 -245
  547. package/dist/render.js.map +0 -1
  548. package/dist/resolve-asset-src.d.ts.map +0 -1
  549. package/dist/resolve-asset-src.js.map +0 -1
  550. package/dist/sample-rate.d.ts.map +0 -1
  551. package/dist/sample-rate.js.map +0 -1
  552. package/dist/screenshot-dom-element.d.ts.map +0 -1
  553. package/dist/screenshot-dom-element.js.map +0 -1
  554. package/dist/screenshot-task.d.ts.map +0 -1
  555. package/dist/screenshot-task.js.map +0 -1
  556. package/dist/seek-to-frame.d.ts.map +0 -1
  557. package/dist/seek-to-frame.js.map +0 -1
  558. package/dist/serve-static.d.ts.map +0 -1
  559. package/dist/serve-static.js.map +0 -1
  560. package/dist/set-props-and-env.d.ts.map +0 -1
  561. package/dist/set-props-and-env.js.map +0 -1
  562. package/dist/stitcher.d.ts +0 -32
  563. package/dist/stitcher.d.ts.map +0 -1
  564. package/dist/stitcher.js +0 -204
  565. package/dist/stitcher.js.map +0 -1
  566. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  567. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  568. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  569. package/dist/symbolicate-stacktrace.js.map +0 -1
  570. package/dist/tmp-dir.d.ts.map +0 -1
  571. package/dist/tmp-dir.js.map +0 -1
  572. package/dist/types.d.ts.map +0 -1
  573. package/dist/types.js.map +0 -1
  574. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  575. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  576. package/dist/validate-ffmpeg.d.ts.map +0 -1
  577. package/dist/validate-ffmpeg.js.map +0 -1
  578. package/dist/validate-frame.d.ts +0 -1
  579. package/dist/validate-frame.js +0 -24
  580. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  581. package/dist/validate-puppeteer-timeout.js.map +0 -1
  582. package/dist/validate-scale.d.ts.map +0 -1
  583. package/dist/validate-scale.js.map +0 -1
  584. package/tsconfig.json +0 -10
  585. package/vitest.config.ts +0 -8
@@ -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
@@ -1,11 +1,14 @@
1
- /// <reference types="node" />
1
+ import type { ClipRegion } from 'remotion';
2
2
  import type { Page } from './browser/BrowserPage';
3
- import type { ImageFormat } from './image-format';
4
- export declare const screenshotDOMElement: ({ page, imageFormat, quality, opts, }: {
3
+ import type { StillImageFormat } from './image-format';
4
+ export declare const screenshotDOMElement: ({ page, imageFormat, jpegQuality, opts, height, width, clipRegion, }: {
5
5
  page: Page;
6
- imageFormat: ImageFormat;
7
- quality: number | undefined;
6
+ imageFormat: StillImageFormat;
7
+ jpegQuality: number | undefined;
8
8
  opts: {
9
9
  path: string | null;
10
10
  };
11
+ height: number;
12
+ width: number;
13
+ clipRegion: ClipRegion | null;
11
14
  }) => Promise<Buffer>;
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.screenshotDOMElement = void 0;
4
4
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
5
5
  const puppeteer_screenshot_1 = require("./puppeteer-screenshot");
6
- const screenshotDOMElement = async ({ page, imageFormat, quality, opts, }) => {
6
+ const screenshotDOMElement = async ({ page, imageFormat, jpegQuality, opts, height, width, clipRegion, }) => {
7
7
  const { path } = opts;
8
- if (imageFormat === 'png') {
8
+ if (imageFormat === 'png' ||
9
+ imageFormat === 'pdf' ||
10
+ imageFormat === 'webp') {
9
11
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
10
12
  pageFunction: () => {
11
13
  document.body.style.background = 'transparent';
@@ -25,14 +27,23 @@ const screenshotDOMElement = async ({ page, imageFormat, quality, opts, }) => {
25
27
  page,
26
28
  });
27
29
  }
30
+ // @ts-expect-error
28
31
  if (imageFormat === 'none') {
29
32
  throw new TypeError('Tried to make a screenshot with format "none"');
30
33
  }
31
- return (0, puppeteer_screenshot_1.screenshot)(page, {
34
+ const buf = await (0, puppeteer_screenshot_1.screenshot)({
35
+ page,
32
36
  omitBackground: imageFormat === 'png',
33
37
  path: path !== null && path !== void 0 ? path : undefined,
34
38
  type: imageFormat,
35
- quality,
39
+ jpegQuality,
40
+ width,
41
+ height,
42
+ clipRegion,
36
43
  });
44
+ if (typeof buf === 'string') {
45
+ throw new TypeError('Expected a buffer');
46
+ }
47
+ return buf;
37
48
  };
38
49
  exports.screenshotDOMElement = screenshotDOMElement;
@@ -1,4 +1,13 @@
1
+ import type { ClipRegion } from 'remotion';
1
2
  import type { Page } from './browser/BrowserPage';
2
- import type { ScreenshotOptions } from './browser/ScreenshotOptions';
3
3
  import type { StillImageFormat } from './image-format';
4
- export declare const _screenshotTask: (page: Page, format: StillImageFormat, options: ScreenshotOptions) => Promise<Buffer | string>;
4
+ export declare const screenshotTask: ({ format, height, omitBackground, page, width, path, jpegQuality, clipRegion, }: {
5
+ page: Page;
6
+ format: StillImageFormat;
7
+ path?: string | undefined;
8
+ jpegQuality?: number | undefined;
9
+ omitBackground: boolean;
10
+ width: number;
11
+ height: number;
12
+ clipRegion: ClipRegion | null;
13
+ }) => Promise<Buffer | string>;
@@ -3,10 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports._screenshotTask = void 0;
6
+ exports.screenshotTask = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const perf_1 = require("./perf");
9
- const _screenshotTask = async (page, format, options) => {
9
+ const screenshotTask = async ({ format, height, omitBackground, page, width, path, jpegQuality, clipRegion, }) => {
10
10
  var _a;
11
11
  const client = page._client();
12
12
  const target = page.target();
@@ -15,26 +15,56 @@ const _screenshotTask = async (page, format, options) => {
15
15
  targetId: target._targetId,
16
16
  });
17
17
  (0, perf_1.stopPerfMeasure)(perfTarget);
18
- const shouldSetDefaultBackground = options.omitBackground && format === 'png';
18
+ const shouldSetDefaultBackground = omitBackground;
19
19
  if (shouldSetDefaultBackground)
20
20
  await client.send('Emulation.setDefaultBackgroundColorOverride', {
21
21
  color: { r: 0, g: 0, b: 0, a: 0 },
22
22
  });
23
23
  const cap = (0, perf_1.startPerfMeasure)('capture');
24
24
  try {
25
- const result = await client.send('Page.captureScreenshot', {
26
- format,
27
- quality: options.quality,
28
- clip: undefined,
29
- captureBeyondViewport: true,
30
- });
25
+ let result;
26
+ if (format === 'pdf') {
27
+ result = await client.send('Page.printToPDF', {
28
+ paperWidth: width / 96,
29
+ paperHeight: height / 96,
30
+ marginTop: 0,
31
+ marginBottom: 0,
32
+ marginLeft: 0,
33
+ marginRight: 0,
34
+ scale: 1,
35
+ printBackground: true,
36
+ });
37
+ }
38
+ else {
39
+ result = await client.send('Page.captureScreenshot', {
40
+ format,
41
+ quality: jpegQuality,
42
+ clip: clipRegion !== null && clipRegion !== 'hide'
43
+ ? {
44
+ x: clipRegion.x,
45
+ y: clipRegion.y,
46
+ height: clipRegion.height,
47
+ scale: 1,
48
+ width: clipRegion.width,
49
+ }
50
+ : {
51
+ x: 0,
52
+ y: 0,
53
+ height,
54
+ scale: 1,
55
+ width,
56
+ },
57
+ captureBeyondViewport: true,
58
+ optimizeForSpeed: true,
59
+ });
60
+ }
31
61
  (0, perf_1.stopPerfMeasure)(cap);
32
62
  if (shouldSetDefaultBackground)
33
63
  await client.send('Emulation.setDefaultBackgroundColorOverride');
34
64
  const saveMarker = (0, perf_1.startPerfMeasure)('save');
35
65
  const buffer = Buffer.from(result.data, 'base64');
36
- if (options.path)
37
- await fs_1.default.promises.writeFile(options.path, buffer);
66
+ if (path)
67
+ await fs_1.default.promises.writeFile(path, buffer);
38
68
  (0, perf_1.stopPerfMeasure)(saveMarker);
39
69
  return buffer;
40
70
  }
@@ -42,7 +72,7 @@ const _screenshotTask = async (page, format, options) => {
42
72
  if (err.message.includes('Unable to capture screenshot')) {
43
73
  const errMessage = [
44
74
  'Could not take a screenshot because Google Chrome ran out of memory or disk space.',
45
- ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.REMOTION_LAMBDA)
75
+ ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.__RESERVED_IS_INSIDE_REMOTION_LAMBDA)
46
76
  ? 'Deploy a new Lambda function with more memory or disk space.'
47
77
  : 'Decrease the concurrency to use less RAM.',
48
78
  ].join(' ');
@@ -51,4 +81,4 @@ const _screenshotTask = async (page, format, options) => {
51
81
  throw err;
52
82
  }
53
83
  };
54
- exports._screenshotTask = _screenshotTask;
84
+ exports.screenshotTask = screenshotTask;
@@ -1,4 +1,5 @@
1
1
  import type { Page } from './browser/BrowserPage';
2
+ export declare const waitForReady: (page: Page) => Promise<unknown>;
2
3
  export declare const seekToFrame: ({ frame, page, }: {
3
4
  frame: number;
4
5
  page: Page;
@@ -1,9 +1,55 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.seekToFrame = void 0;
3
+ exports.seekToFrame = exports.waitForReady = void 0;
4
+ const symbolicateable_error_1 = require("./error-handling/symbolicateable-error");
5
+ const parse_browser_error_stack_1 = require("./parse-browser-error-stack");
4
6
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
7
+ const waitForReady = (page) => {
8
+ return Promise.race([
9
+ new Promise((_, reject) => {
10
+ page.on("disposed" /* PageEmittedEvents.Disposed */, () => {
11
+ reject(new Error('Target closed (page disposed)'));
12
+ });
13
+ }),
14
+ new Promise((_, reject) => {
15
+ page.browser.on("closed-silent" /* BrowserEmittedEvents.ClosedSilent */, () => {
16
+ reject(new Error('Target closed'));
17
+ });
18
+ }),
19
+ page
20
+ .mainFrame()
21
+ ._mainWorld.waitForFunction(page.browser, 'window.ready === true')
22
+ .catch((err) => {
23
+ throw err;
24
+ }),
25
+ page
26
+ .mainFrame()
27
+ ._mainWorld.waitForFunction(page.browser, 'window.remotion_cancelledError !== undefined')
28
+ .then(() => {
29
+ return (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
30
+ pageFunction: () => window.remotion_cancelledError,
31
+ args: [],
32
+ frame: null,
33
+ page,
34
+ });
35
+ })
36
+ .then((val) => {
37
+ if (typeof val !== 'string') {
38
+ throw val;
39
+ }
40
+ throw new symbolicateable_error_1.SymbolicateableError({
41
+ frame: null,
42
+ stack: val,
43
+ name: 'CancelledError',
44
+ message: val.split('\n')[0],
45
+ stackFrame: (0, parse_browser_error_stack_1.parseStack)(val.split('\n')),
46
+ });
47
+ }),
48
+ ]);
49
+ };
50
+ exports.waitForReady = waitForReady;
5
51
  const seekToFrame = async ({ frame, page, }) => {
6
- await page.waitForFunction(page.browser, 'window.ready === true');
52
+ await (0, exports.waitForReady)(page);
7
53
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
8
54
  pageFunction: (f) => {
9
55
  window.remotion_setFrame(f);
@@ -12,7 +58,7 @@ const seekToFrame = async ({ frame, page, }) => {
12
58
  frame,
13
59
  page,
14
60
  });
15
- await page.waitForFunction(page.browser, 'window.ready === true');
61
+ await (0, exports.waitForReady)(page);
16
62
  await page.evaluateHandle('document.fonts.ready');
17
63
  };
18
64
  exports.seekToFrame = seekToFrame;
File without changes
@@ -59,10 +59,11 @@ const findRelated = async (current, relativePath) => {
59
59
  };
60
60
  const sendError = (absolutePath, response, spec) => {
61
61
  const { message, statusCode } = spec;
62
- response.statusCode = statusCode;
63
62
  const headers = getHeaders(absolutePath, null);
64
- response.writeHead(statusCode, headers);
65
- response.setHeader('content-type', 'application/json');
63
+ response.writeHead(statusCode, {
64
+ ...headers,
65
+ 'Content-Type': 'application/json',
66
+ });
66
67
  response.end(JSON.stringify({ statusCode, message }));
67
68
  };
68
69
  const internalError = (absolutePath, response) => {
@@ -123,7 +124,8 @@ const serveHandler = async (request, response, config) => {
123
124
  try {
124
125
  const related = await findRelated(current, relativePath);
125
126
  if (related) {
126
- ({ stats, absolutePath } = related);
127
+ stats = related.stats;
128
+ absolutePath = related.absolutePath;
127
129
  }
128
130
  }
129
131
  catch (err) {
File without changes
File without changes
File without changes
File without changes
@@ -1,13 +1,13 @@
1
1
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
2
2
  import type { DownloadMap } from './assets/download-map';
3
- import type { FfmpegExecutable } from './ffmpeg-executable';
4
3
  export declare const serveStatic: (path: string | null, options: {
5
4
  port: number | null;
6
- ffmpegExecutable: FfmpegExecutable;
7
- ffprobeExecutable: FfmpegExecutable;
8
5
  onDownload: RenderMediaOnDownload;
9
6
  onError: (err: Error) => void;
10
7
  downloadMap: DownloadMap;
8
+ remotionRoot: string;
9
+ concurrency: number;
10
+ verbose: boolean;
11
11
  }) => Promise<{
12
12
  port: number;
13
13
  close: () => Promise<void>;
@@ -9,58 +9,98 @@ const get_port_1 = require("./get-port");
9
9
  const offthread_video_server_1 = require("./offthread-video-server");
10
10
  const serve_handler_1 = require("./serve-handler");
11
11
  const serveStatic = async (path, options) => {
12
- var _a;
13
- const port = await (0, get_port_1.getDesiredPort)((_a = options === null || options === void 0 ? void 0 : options.port) !== null && _a !== void 0 ? _a : undefined, 3000, 3100);
14
- const offthreadRequest = (0, offthread_video_server_1.startOffthreadVideoServer)({
15
- ffmpegExecutable: options.ffmpegExecutable,
16
- ffprobeExecutable: options.ffprobeExecutable,
12
+ const { listener: offthreadRequest, close: closeCompositor } = (0, offthread_video_server_1.startOffthreadVideoServer)({
17
13
  onDownload: options.onDownload,
18
14
  onError: options.onError,
19
15
  downloadMap: options.downloadMap,
16
+ concurrency: options.concurrency,
17
+ verbose: options.verbose,
20
18
  });
21
- try {
22
- const server = http_1.default
23
- .createServer((request, response) => {
24
- var _a;
25
- if ((_a = request.url) === null || _a === void 0 ? void 0 : _a.startsWith('/proxy')) {
26
- return offthreadRequest(request, response);
27
- }
28
- if (path === null) {
29
- response.writeHead(404);
30
- response.end('Server only supports /proxy');
31
- return;
19
+ const connections = {};
20
+ const server = http_1.default.createServer((request, response) => {
21
+ var _a;
22
+ if ((_a = request.url) === null || _a === void 0 ? void 0 : _a.startsWith('/proxy')) {
23
+ return offthreadRequest(request, response);
24
+ }
25
+ if (path === null) {
26
+ response.writeHead(404);
27
+ response.end('Server only supports /proxy');
28
+ return;
29
+ }
30
+ (0, serve_handler_1.serveHandler)(request, response, {
31
+ public: path,
32
+ }).catch(() => {
33
+ if (!response.headersSent) {
34
+ response.writeHead(500);
32
35
  }
33
- (0, serve_handler_1.serveHandler)(request, response, {
34
- public: path,
35
- }).catch(() => {
36
- response.statusCode = 500;
37
- response.end('Error serving file');
38
- });
39
- })
40
- .listen(port);
41
- const close = () => {
42
- return new Promise((resolve, reject) => {
43
- server.close((err) => {
44
- if (err) {
45
- if (err.code === 'ERR_SERVER_NOT_RUNNING') {
46
- return resolve();
47
- }
36
+ response.end('Error serving file');
37
+ });
38
+ });
39
+ server.on('connection', (conn) => {
40
+ const key = conn.remoteAddress + ':' + conn.remotePort;
41
+ connections[key] = conn;
42
+ conn.on('close', () => {
43
+ delete connections[key];
44
+ });
45
+ });
46
+ let selectedPort = null;
47
+ const maxTries = 5;
48
+ for (let i = 0; i < maxTries; i++) {
49
+ try {
50
+ selectedPort = await new Promise((resolve, reject) => {
51
+ var _a;
52
+ (0, get_port_1.getDesiredPort)((_a = options === null || options === void 0 ? void 0 : options.port) !== null && _a !== void 0 ? _a : undefined, 3000, 3100)
53
+ .then(({ port, didUsePort }) => {
54
+ server.listen(port);
55
+ server.on('listening', () => {
56
+ resolve(port);
57
+ return didUsePort();
58
+ });
59
+ server.on('error', (err) => {
48
60
  reject(err);
49
- }
50
- else {
51
- resolve();
52
- }
53
- });
61
+ });
62
+ })
63
+ .catch((err) => reject(err));
54
64
  });
55
- };
56
- return { port, close };
57
- }
58
- catch (err) {
59
- console.log({ err, msg: err.message });
60
- if (err.message.includes('EADDRINUSE')) {
61
- return (0, exports.serveStatic)(path, options);
65
+ const destroyConnections = function () {
66
+ for (const key in connections)
67
+ connections[key].destroy();
68
+ };
69
+ const close = async () => {
70
+ await Promise.all([
71
+ closeCompositor(),
72
+ new Promise((resolve, reject) => {
73
+ destroyConnections();
74
+ server.close((err) => {
75
+ if (err) {
76
+ if (err.code ===
77
+ 'ERR_SERVER_NOT_RUNNING') {
78
+ return resolve();
79
+ }
80
+ reject(err);
81
+ }
82
+ else {
83
+ resolve();
84
+ }
85
+ });
86
+ }),
87
+ ]);
88
+ };
89
+ return { port: selectedPort, close };
90
+ }
91
+ catch (err) {
92
+ if (!(err instanceof Error)) {
93
+ throw err;
94
+ }
95
+ const codedError = err;
96
+ if (codedError.code === 'EADDRINUSE') {
97
+ // Already in use, try another port
98
+ }
99
+ else {
100
+ throw err;
101
+ }
62
102
  }
63
- throw err;
64
103
  }
104
+ throw new Error(`Tried ${maxTries} times to find a free port. Giving up.`);
65
105
  };
66
106
  exports.serveStatic = serveStatic;
@@ -1,5 +1,5 @@
1
1
  import type { Page } from './browser/BrowserPage';
2
- export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, }: {
2
+ export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, }: {
3
3
  inputProps: unknown;
4
4
  envVariables: Record<string, string> | undefined;
5
5
  page: Page;
@@ -8,4 +8,6 @@ export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl
8
8
  timeoutInMilliseconds: number | undefined;
9
9
  proxyPort: number;
10
10
  retriesRemaining: number;
11
+ audioEnabled: boolean;
12
+ videoEnabled: boolean;
11
13
  }) => Promise<void>;
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setPropsAndEnv = void 0;
4
+ const version_1 = require("remotion/version");
4
5
  const TimeoutSettings_1 = require("./browser/TimeoutSettings");
5
6
  const normalize_serve_url_1 = require("./normalize-serve-url");
6
7
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
8
+ const redirect_status_codes_1 = require("./redirect-status-codes");
7
9
  const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
8
- const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, }) => {
10
+ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, }) => {
9
11
  (0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
10
12
  const actualTimeout = timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT;
11
13
  page.setDefaultTimeout(actualTimeout);
@@ -13,23 +15,32 @@ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initia
13
15
  const urlToVisit = (0, normalize_serve_url_1.normalizeServeUrl)(serveUrl);
14
16
  await page.evaluateOnNewDocument((timeout) => {
15
17
  window.remotion_puppeteerTimeout = timeout;
16
- }, [actualTimeout]);
18
+ }, actualTimeout);
19
+ if (typeof inputProps === 'string') {
20
+ throw new Error('Input props should be an object, not a string.');
21
+ }
17
22
  if (inputProps) {
18
23
  await page.evaluateOnNewDocument((input) => {
19
24
  window.remotion_inputProps = input;
20
- }, [JSON.stringify(inputProps)]);
25
+ }, JSON.stringify(inputProps));
21
26
  }
22
27
  if (envVariables) {
23
28
  await page.evaluateOnNewDocument((input) => {
24
29
  window.remotion_envVariables = input;
25
- }, [JSON.stringify(envVariables)]);
30
+ }, JSON.stringify(envVariables));
26
31
  }
27
32
  await page.evaluateOnNewDocument((key) => {
28
33
  window.remotion_initialFrame = key;
29
- }, [initialFrame]);
34
+ }, initialFrame);
30
35
  await page.evaluateOnNewDocument((port) => {
31
36
  window.remotion_proxyPort = port;
32
- }, [proxyPort]);
37
+ }, proxyPort);
38
+ await page.evaluateOnNewDocument((enabled) => {
39
+ window.remotion_audioEnabled = enabled;
40
+ }, audioEnabled);
41
+ await page.evaluateOnNewDocument((enabled) => {
42
+ window.remotion_videoEnabled = enabled;
43
+ }, videoEnabled);
33
44
  const pageRes = await page.goto(urlToVisit);
34
45
  if (pageRes === null) {
35
46
  throw new Error(`Visited "${urlToVisit}" but got no response.`);
@@ -52,15 +63,11 @@ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initia
52
63
  retriesRemaining: retriesRemaining - 1,
53
64
  serveUrl,
54
65
  timeoutInMilliseconds,
66
+ audioEnabled,
67
+ videoEnabled,
55
68
  });
56
69
  }
57
- if (status !== 200 &&
58
- status !== 301 &&
59
- status !== 302 &&
60
- status !== 303 &&
61
- status !== 304 &&
62
- status !== 307 &&
63
- status !== 308) {
70
+ if (!redirect_status_codes_1.redirectStatusCodes.every((code) => code !== status)) {
64
71
  throw new Error(`Error while getting compositions: Tried to go to ${urlToVisit} but the status code was ${status} instead of 200. Does the site you specified exist?`);
65
72
  }
66
73
  const isRemotionFn = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
@@ -82,8 +89,25 @@ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initia
82
89
  frame: null,
83
90
  page,
84
91
  });
85
- if (siteVersion !== '3') {
86
- throw new Error(`Incompatible site: When visiting ${urlToVisit}, a bundle was found, but one that is not compatible with this version of Remotion. The bundle format changed in version 3.0.11. To resolve this error, please bundle and deploy again.`);
92
+ const remotionVersion = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
93
+ pageFunction: () => {
94
+ return window.remotion_version;
95
+ },
96
+ args: [],
97
+ frame: null,
98
+ page,
99
+ });
100
+ const requiredVersion = '4';
101
+ if (siteVersion !== requiredVersion) {
102
+ throw new Error(`Incompatible site: When visiting ${urlToVisit}, a bundle was found, but one that is not compatible with this version of Remotion. Found version: ${siteVersion} - Required version: ${requiredVersion}. To resolve this error, please bundle and deploy again.`);
103
+ }
104
+ if (remotionVersion !== version_1.VERSION && process.env.NODE_ENV !== 'test') {
105
+ if (remotionVersion) {
106
+ console.warn(`The site was bundled with version ${remotionVersion} of @remotion/bundler, while @remotion/renderer is on version ${version_1.VERSION}. You may not have the newest bugfixes and features. Re-bundle the site to fix this issue.`);
107
+ }
108
+ else {
109
+ console.warn(`The site was bundled with an old version of Remotion, while @remotion/renderer is on version ${version_1.VERSION}. You may not have the newest bugfixes and features. Re-bundle the site to fix this issue.`);
110
+ }
87
111
  }
88
112
  };
89
113
  exports.setPropsAndEnv = setPropsAndEnv;