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

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 (594) 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 +64 -15
  13. package/dist/assets/download-file.d.ts +9 -6
  14. package/dist/assets/download-file.js +67 -9
  15. package/dist/assets/download-map.d.ts +5 -26
  16. package/dist/assets/download-map.js +15 -16
  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 +1 -1
  26. package/dist/assets/read-file.js +4 -6
  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 +2 -2
  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 +8 -6
  40. package/dist/browser/Browser.js +48 -45
  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 +151 -237
  45. package/dist/browser/BrowserPage.d.ts +12 -6
  46. package/dist/browser/BrowserPage.js +8 -11
  47. package/dist/browser/BrowserRunner.d.ts +2 -5
  48. package/dist/browser/BrowserRunner.js +42 -92
  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 +5 -4
  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 -5
  72. package/dist/browser/LaunchOptions.js +0 -0
  73. package/dist/browser/Launcher.d.ts +9 -3
  74. package/dist/browser/Launcher.js +17 -387
  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 +5 -5
  83. package/dist/browser/Product.d.ts +0 -0
  84. package/dist/browser/Product.js +0 -0
  85. package/dist/browser/PuppeteerNode.d.ts +2 -5
  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 +2 -2
  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 +8 -8
  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 +2 -2
  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 +42 -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/chalk/index.d.ts +54 -0
  132. package/dist/chalk/index.js +135 -0
  133. package/dist/chalk/is-color-supported.d.ts +1 -0
  134. package/dist/chalk/is-color-supported.js +37 -0
  135. package/dist/check-apple-silicon.d.ts +1 -0
  136. package/dist/check-apple-silicon.js +12 -0
  137. package/dist/chunk.d.ts +0 -0
  138. package/dist/chunk.js +0 -0
  139. package/dist/client.d.ts +204 -0
  140. package/dist/client.js +49 -0
  141. package/dist/codec-supports-media.d.ts +2 -0
  142. package/dist/codec-supports-media.js +23 -1
  143. package/dist/codec.d.ts +0 -0
  144. package/dist/codec.js +0 -0
  145. package/dist/combine-videos.d.ts +6 -2
  146. package/dist/combine-videos.js +18 -18
  147. package/dist/compositor/compose.d.ts +17 -0
  148. package/dist/compositor/compose.js +71 -0
  149. package/dist/compositor/compositor.d.ts +11 -0
  150. package/dist/compositor/compositor.js +207 -0
  151. package/dist/compositor/get-executable-path.d.ts +1 -0
  152. package/dist/compositor/get-executable-path.js +57 -0
  153. package/dist/compositor/make-nonce.d.ts +1 -0
  154. package/dist/compositor/make-nonce.js +8 -0
  155. package/dist/compositor/payloads.d.ts +68 -0
  156. package/dist/compositor/payloads.js +2 -0
  157. package/dist/compress-assets.d.ts +0 -0
  158. package/dist/compress-assets.js +0 -0
  159. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
  160. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
  161. package/dist/convert-to-positive-frame-index.d.ts +4 -0
  162. package/dist/convert-to-positive-frame-index.js +8 -0
  163. package/dist/create-ffmpeg-complex-filter.d.ts +6 -5
  164. package/dist/create-ffmpeg-complex-filter.js +6 -4
  165. package/dist/create-ffmpeg-merge-filter.d.ts +5 -1
  166. package/dist/create-ffmpeg-merge-filter.js +21 -13
  167. package/dist/create-silent-audio.d.ts +1 -3
  168. package/dist/create-silent-audio.js +3 -6
  169. package/dist/crf.d.ts +5 -1
  170. package/dist/crf.js +41 -8
  171. package/dist/cycle-browser-tabs.d.ts +2 -5
  172. package/dist/cycle-browser-tabs.js +5 -5
  173. package/dist/delay-render-embedded-stack.d.ts +0 -0
  174. package/dist/delay-render-embedded-stack.js +0 -0
  175. package/dist/delete-directory.d.ts +1 -1
  176. package/dist/delete-directory.js +43 -17
  177. package/dist/determine-resize-params.d.ts +1 -0
  178. package/dist/determine-resize-params.js +10 -0
  179. package/dist/determine-vcodec-ffmpeg-flags.d.ts +2 -0
  180. package/dist/determine-vcodec-ffmpeg-flags.js +13 -0
  181. package/dist/does-have-m2-bug.d.ts +3 -0
  182. package/dist/does-have-m2-bug.js +12 -0
  183. package/dist/ensure-ffmpeg.d.ts +18 -0
  184. package/dist/ensure-ffmpeg.js +58 -0
  185. package/dist/ensure-frames-in-order.d.ts +0 -0
  186. package/dist/ensure-frames-in-order.js +0 -0
  187. package/dist/ensure-output-directory.d.ts +0 -0
  188. package/dist/ensure-output-directory.js +5 -5
  189. package/dist/ensure-presentation-timestamp.d.ts +14 -1
  190. package/dist/ensure-presentation-timestamp.js +36 -17
  191. package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
  192. package/dist/error-handling/handle-javascript-exception.js +10 -0
  193. package/dist/error-handling/symbolicate-error.d.ts +0 -0
  194. package/dist/error-handling/symbolicate-error.js +2 -1
  195. package/dist/error-handling/symbolicateable-error.d.ts +0 -0
  196. package/dist/error-handling/symbolicateable-error.js +0 -0
  197. package/dist/extract-frame-from-video.d.ts +1 -0
  198. package/dist/extract-frame-from-video.js +47 -110
  199. package/dist/ffmpeg-executable.d.ts +0 -0
  200. package/dist/ffmpeg-executable.js +0 -0
  201. package/dist/ffmpeg-filter-file.d.ts +6 -1
  202. package/dist/ffmpeg-filter-file.js +40 -8
  203. package/dist/ffmpeg-flags.d.ts +20 -2
  204. package/dist/ffmpeg-flags.js +205 -9
  205. package/dist/ffmpeg-override.d.ts +4 -0
  206. package/dist/ffmpeg-override.js +2 -0
  207. package/dist/file-extensions.d.ts +14 -0
  208. package/dist/file-extensions.js +76 -0
  209. package/dist/find-closest-package-json.d.ts +2 -0
  210. package/dist/find-closest-package-json.js +31 -0
  211. package/dist/frame-range.d.ts +0 -0
  212. package/dist/frame-range.js +0 -0
  213. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -0
  214. package/dist/frame-to-ffmpeg-timestamp.js +0 -0
  215. package/dist/get-browser-instance.d.ts +2 -2
  216. package/dist/get-browser-instance.js +1 -1
  217. package/dist/get-can-extract-frames-fast.d.ts +14 -0
  218. package/dist/get-can-extract-frames-fast.js +71 -0
  219. package/dist/get-codec-name.d.ts +0 -0
  220. package/dist/get-codec-name.js +0 -0
  221. package/dist/get-compositions.d.ts +14 -8
  222. package/dist/get-compositions.js +25 -7
  223. package/dist/get-concurrency.d.ts +1 -1
  224. package/dist/get-concurrency.js +11 -4
  225. package/dist/get-duration-from-frame-range.d.ts +0 -0
  226. package/dist/get-duration-from-frame-range.js +0 -0
  227. package/dist/get-extension-from-codec.d.ts +5 -1
  228. package/dist/get-extension-from-codec.js +56 -32
  229. package/dist/get-extension-of-filename.d.ts +0 -0
  230. package/dist/get-extension-of-filename.js +5 -1
  231. package/dist/get-frame-of-video-slow.d.ts +17 -0
  232. package/dist/get-frame-of-video-slow.js +72 -0
  233. package/dist/get-frame-padded-index.d.ts +2 -1
  234. package/dist/get-frame-padded-index.js +3 -2
  235. package/dist/get-frame-to-render.d.ts +0 -0
  236. package/dist/get-frame-to-render.js +1 -1
  237. package/dist/get-local-browser-executable.d.ts +0 -0
  238. package/dist/get-local-browser-executable.js +7 -17
  239. package/dist/get-port.d.ts +4 -1
  240. package/dist/get-port.js +8 -8
  241. package/dist/get-prores-profile-name.d.ts +0 -0
  242. package/dist/get-prores-profile-name.js +0 -0
  243. package/dist/get-video-info.d.ts +6 -1
  244. package/dist/get-video-info.js +19 -9
  245. package/dist/get-video-threads-flag.d.ts +0 -0
  246. package/dist/get-video-threads-flag.js +3 -3
  247. package/dist/guess-extension-for-media.d.ts +3 -1
  248. package/dist/guess-extension-for-media.js +5 -8
  249. package/dist/image-format.d.ts +12 -6
  250. package/dist/image-format.js +19 -13
  251. package/dist/index.d.ts +286 -53
  252. package/dist/index.js +50 -36
  253. package/dist/is-audio-codec.d.ts +0 -0
  254. package/dist/is-audio-codec.js +0 -0
  255. package/dist/is-beyond-last-frame.d.ts +0 -0
  256. package/dist/is-beyond-last-frame.js +0 -0
  257. package/dist/is-serve-url.d.ts +0 -0
  258. package/dist/is-serve-url.js +0 -0
  259. package/dist/jpeg-quality.d.ts +1 -0
  260. package/dist/jpeg-quality.js +21 -0
  261. package/dist/last-frame-from-video-cache.d.ts +1 -0
  262. package/dist/last-frame-from-video-cache.js +0 -0
  263. package/dist/legacy-webpack-config.d.ts +0 -0
  264. package/dist/legacy-webpack-config.js +0 -0
  265. package/dist/locks.d.ts +7 -0
  266. package/dist/locks.js +44 -0
  267. package/dist/log-level.d.ts +0 -0
  268. package/dist/log-level.js +0 -0
  269. package/dist/logger.d.ts +22 -0
  270. package/dist/logger.js +61 -0
  271. package/dist/make-cancel-signal.d.ts +11 -0
  272. package/dist/make-cancel-signal.js +24 -1
  273. package/dist/merge-audio-track.d.ts +3 -3
  274. package/dist/merge-audio-track.js +40 -34
  275. package/dist/mime-db.d.ts +0 -0
  276. package/dist/mime-db.js +0 -0
  277. package/dist/mime-types.d.ts +1 -0
  278. package/dist/mime-types.js +8 -3
  279. package/dist/normalize-serve-url.d.ts +0 -0
  280. package/dist/normalize-serve-url.js +0 -0
  281. package/dist/offthread-video-server.d.ts +12 -8
  282. package/dist/offthread-video-server.js +67 -47
  283. package/dist/open-browser.d.ts +8 -2
  284. package/dist/open-browser.js +16 -18
  285. package/dist/options/audio-bitrate.d.ts +2 -0
  286. package/dist/options/audio-bitrate.js +11 -0
  287. package/dist/options/crf.d.ts +2 -0
  288. package/dist/options/crf.js +11 -0
  289. package/dist/options/enforce-audio.d.ts +2 -0
  290. package/dist/options/enforce-audio.js +11 -0
  291. package/dist/options/jpeg-quality.d.ts +2 -0
  292. package/dist/options/jpeg-quality.js +11 -0
  293. package/dist/options/mute.d.ts +2 -0
  294. package/dist/options/mute.js +11 -0
  295. package/dist/options/option.d.ts +8 -0
  296. package/dist/options/option.js +2 -0
  297. package/dist/options/scale.d.ts +2 -0
  298. package/dist/options/scale.js +11 -0
  299. package/dist/options/video-bitrate.d.ts +2 -0
  300. package/dist/options/video-bitrate.js +11 -0
  301. package/dist/options/video-codec.d.ts +2 -0
  302. package/dist/options/video-codec.js +11 -0
  303. package/dist/overwrite.d.ts +0 -0
  304. package/dist/overwrite.js +0 -0
  305. package/dist/p-limit.d.ts +0 -0
  306. package/dist/p-limit.js +0 -0
  307. package/dist/parse-browser-error-stack.d.ts +0 -0
  308. package/dist/parse-browser-error-stack.js +0 -0
  309. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  310. package/dist/parse-ffmpeg-progress.js +0 -0
  311. package/dist/perf.d.ts +1 -1
  312. package/dist/perf.js +9 -7
  313. package/dist/pixel-format.d.ts +1 -1
  314. package/dist/pixel-format.js +3 -0
  315. package/dist/pool.d.ts +0 -0
  316. package/dist/pool.js +0 -0
  317. package/dist/prepare-server.d.ts +8 -5
  318. package/dist/prepare-server.js +22 -13
  319. package/dist/preprocess-audio-track.d.ts +6 -4
  320. package/dist/preprocess-audio-track.js +7 -8
  321. package/dist/prespawn-ffmpeg.d.ts +10 -9
  322. package/dist/prespawn-ffmpeg.js +51 -28
  323. package/dist/prestitcher-memory-usage.d.ts +0 -4
  324. package/dist/prestitcher-memory-usage.js +4 -5
  325. package/dist/prores-profile.d.ts +5 -3
  326. package/dist/prores-profile.js +8 -8
  327. package/dist/provide-screenshot.d.ts +8 -4
  328. package/dist/provide-screenshot.js +5 -2
  329. package/dist/puppeteer-evaluate.d.ts +0 -0
  330. package/dist/puppeteer-evaluate.js +20 -12
  331. package/dist/puppeteer-screenshot.d.ts +12 -2
  332. package/dist/puppeteer-screenshot.js +19 -45
  333. package/dist/quality.d.ts +0 -0
  334. package/dist/quality.js +0 -0
  335. package/dist/redirect-status-codes.d.ts +1 -0
  336. package/dist/redirect-status-codes.js +6 -0
  337. package/dist/render-frames.d.ts +26 -22
  338. package/dist/render-frames.js +204 -109
  339. package/dist/render-media.d.ts +52 -19
  340. package/dist/render-media.js +162 -55
  341. package/dist/render-still.d.ts +26 -14
  342. package/dist/render-still.js +97 -46
  343. package/dist/replace-browser.d.ts +6 -0
  344. package/dist/replace-browser.js +47 -0
  345. package/dist/resolve-asset-src.d.ts +0 -0
  346. package/dist/resolve-asset-src.js +2 -2
  347. package/dist/sample-rate.d.ts +0 -0
  348. package/dist/sample-rate.js +0 -0
  349. package/dist/screenshot-dom-element.d.ts +8 -4
  350. package/dist/screenshot-dom-element.js +15 -4
  351. package/dist/screenshot-task.d.ts +12 -2
  352. package/dist/screenshot-task.js +44 -14
  353. package/dist/seek-to-frame.d.ts +1 -0
  354. package/dist/seek-to-frame.js +49 -3
  355. package/dist/select-composition.d.ts +33 -0
  356. package/dist/select-composition.js +119 -0
  357. package/dist/serve-handler/index.d.ts +1 -1
  358. package/dist/serve-handler/index.js +21 -19
  359. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  360. package/dist/serve-handler/is-path-inside.js +3 -3
  361. package/dist/serve-handler/range-parser.d.ts +0 -0
  362. package/dist/serve-handler/range-parser.js +0 -0
  363. package/dist/serve-static.d.ts +6 -3
  364. package/dist/serve-static.js +86 -45
  365. package/dist/set-props-and-env.d.ts +7 -3
  366. package/dist/set-props-and-env.js +50 -16
  367. package/dist/stitch-frames-to-video.d.ts +16 -11
  368. package/dist/stitch-frames-to-video.js +165 -79
  369. package/dist/stringify-ffmpeg-filter.d.ts +10 -2
  370. package/dist/stringify-ffmpeg-filter.js +37 -34
  371. package/dist/symbolicate-stacktrace.d.ts +0 -0
  372. package/dist/symbolicate-stacktrace.js +0 -0
  373. package/dist/take-frame-and-compose.d.ts +22 -0
  374. package/dist/take-frame-and-compose.js +103 -0
  375. package/dist/tmp-dir.d.ts +0 -0
  376. package/dist/tmp-dir.js +7 -8
  377. package/dist/truthy.d.ts +0 -0
  378. package/dist/truthy.js +0 -0
  379. package/dist/try-to-extract-frame-of-video-fast.d.ts +12 -0
  380. package/dist/try-to-extract-frame-of-video-fast.js +55 -0
  381. package/dist/types.d.ts +0 -0
  382. package/dist/types.js +0 -0
  383. package/dist/validate-concurrency.d.ts +2 -0
  384. package/dist/validate-concurrency.js +21 -10
  385. package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
  386. package/dist/validate-even-dimensions-with-codec.js +0 -0
  387. package/dist/validate-every-nth-frame.d.ts +2 -1
  388. package/dist/validate-every-nth-frame.js +8 -1
  389. package/dist/validate-ffmpeg-override.d.ts +2 -0
  390. package/dist/validate-ffmpeg-override.js +12 -0
  391. package/dist/validate-ffmpeg.d.ts +7 -2
  392. package/dist/validate-ffmpeg.js +48 -43
  393. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  394. package/dist/validate-number-of-gif-loops.js +24 -0
  395. package/dist/validate-opengl-renderer.d.ts +0 -0
  396. package/dist/validate-opengl-renderer.js +0 -0
  397. package/dist/validate-output-filename.d.ts +7 -2
  398. package/dist/validate-output-filename.js +20 -51
  399. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  400. package/dist/validate-puppeteer-timeout.js +2 -1
  401. package/dist/validate-scale.d.ts +0 -0
  402. package/dist/validate-scale.js +0 -0
  403. package/dist/validate-videobitrate.d.ts +1 -0
  404. package/dist/validate-videobitrate.js +20 -0
  405. package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
  406. package/dist/wait-for-symbolication-error-to-be-done.js +5 -31
  407. package/dist/warn-about-ffmpeg-version.d.ts +5 -0
  408. package/dist/warn-about-ffmpeg-version.js +37 -0
  409. package/dist/ws/ws-types.d.ts +0 -0
  410. package/dist/ws/ws-types.js +2 -1
  411. package/install-toolchain.mjs +36 -0
  412. package/package.json +70 -60
  413. package/types/ws/index.d.ts +5 -5
  414. package/.prettierrc.js +0 -14
  415. package/dist/add-silent-audio-if-necessary.d.ts +0 -8
  416. package/dist/add-silent-audio-if-necessary.d.ts.map +0 -1
  417. package/dist/add-silent-audio-if-necessary.js +0 -51
  418. package/dist/add-silent-audio-if-necessary.js.map +0 -1
  419. package/dist/assets/asset-is-used-at-time.d.ts +0 -3
  420. package/dist/assets/asset-is-used-at-time.d.ts.map +0 -1
  421. package/dist/assets/asset-is-used-at-time.js +0 -8
  422. package/dist/assets/asset-is-used-at-time.js.map +0 -1
  423. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  424. package/dist/assets/calculate-asset-positions.js.map +0 -1
  425. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  426. package/dist/assets/calculate-atempo.js.map +0 -1
  427. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  428. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  429. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  430. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  431. package/dist/assets/download-file.d.ts.map +0 -1
  432. package/dist/assets/download-file.js.map +0 -1
  433. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  434. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  435. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  436. package/dist/assets/flatten-volume-array.js.map +0 -1
  437. package/dist/assets/get-asset-audio-details.d.ts +0 -5
  438. package/dist/assets/get-asset-audio-details.d.ts.map +0 -1
  439. package/dist/assets/get-asset-audio-details.js +0 -21
  440. package/dist/assets/get-asset-audio-details.js.map +0 -1
  441. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  442. package/dist/assets/get-audio-channels.js.map +0 -1
  443. package/dist/assets/get-simulatenous-assets.d.ts +0 -3
  444. package/dist/assets/get-simulatenous-assets.d.ts.map +0 -1
  445. package/dist/assets/get-simulatenous-assets.js +0 -14
  446. package/dist/assets/get-simulatenous-assets.js.map +0 -1
  447. package/dist/assets/read-file.d.ts.map +0 -1
  448. package/dist/assets/read-file.js.map +0 -1
  449. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  450. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  451. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  452. package/dist/assets/sanitize-filename.js.map +0 -1
  453. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  454. package/dist/assets/sanitize-filepath.js.map +0 -1
  455. package/dist/assets/split-assets-into-segments.d.ts +0 -6
  456. package/dist/assets/split-assets-into-segments.d.ts.map +0 -1
  457. package/dist/assets/split-assets-into-segments.js +0 -89
  458. package/dist/assets/split-assets-into-segments.js.map +0 -1
  459. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  460. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  461. package/dist/assets/types.d.ts.map +0 -1
  462. package/dist/assets/types.js.map +0 -1
  463. package/dist/assets-to-ffmpeg-inputs.d.ts +0 -7
  464. package/dist/assets-to-ffmpeg-inputs.d.ts.map +0 -1
  465. package/dist/assets-to-ffmpeg-inputs.js +0 -15
  466. package/dist/assets-to-ffmpeg-inputs.js.map +0 -1
  467. package/dist/browser-log.d.ts.map +0 -1
  468. package/dist/browser-log.js.map +0 -1
  469. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  470. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  471. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  472. package/dist/can-use-parallel-encoding.js.map +0 -1
  473. package/dist/combine-videos.d.ts.map +0 -1
  474. package/dist/combine-videos.js.map +0 -1
  475. package/dist/convert-to-pcm.d.ts +0 -6
  476. package/dist/convert-to-pcm.js +0 -20
  477. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  478. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  479. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  480. package/dist/cycle-browser-tabs.js.map +0 -1
  481. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  482. package/dist/delay-render-embedded-stack.js.map +0 -1
  483. package/dist/delete-directory.d.ts.map +0 -1
  484. package/dist/delete-directory.js.map +0 -1
  485. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  486. package/dist/ensure-frames-in-order.js.map +0 -1
  487. package/dist/ensure-output-directory.d.ts.map +0 -1
  488. package/dist/ensure-output-directory.js.map +0 -1
  489. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  490. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  491. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  492. package/dist/error-handling/symbolicate-error.js.map +0 -1
  493. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  494. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  495. package/dist/ffmpeg-flags.d.ts.map +0 -1
  496. package/dist/ffmpeg-flags.js.map +0 -1
  497. package/dist/get-audio-codec-name.d.ts +0 -2
  498. package/dist/get-audio-codec-name.d.ts.map +0 -1
  499. package/dist/get-audio-codec-name.js +0 -28
  500. package/dist/get-audio-codec-name.js.map +0 -1
  501. package/dist/get-browser-instance.d.ts.map +0 -1
  502. package/dist/get-browser-instance.js.map +0 -1
  503. package/dist/get-codec-name.d.ts.map +0 -1
  504. package/dist/get-codec-name.js.map +0 -1
  505. package/dist/get-compositions.d.ts.map +0 -1
  506. package/dist/get-compositions.js.map +0 -1
  507. package/dist/get-concurrency.d.ts.map +0 -1
  508. package/dist/get-concurrency.js.map +0 -1
  509. package/dist/get-extension-from-codec.d.ts.map +0 -1
  510. package/dist/get-extension-from-codec.js.map +0 -1
  511. package/dist/get-frame-to-render.d.ts.map +0 -1
  512. package/dist/get-frame-to-render.js.map +0 -1
  513. package/dist/get-local-browser-executable.d.ts.map +0 -1
  514. package/dist/get-local-browser-executable.js.map +0 -1
  515. package/dist/get-port.d.ts.map +0 -1
  516. package/dist/get-port.js.map +0 -1
  517. package/dist/get-prores-profile-name.d.ts.map +0 -1
  518. package/dist/get-prores-profile-name.js.map +0 -1
  519. package/dist/image-format.d.ts.map +0 -1
  520. package/dist/image-format.js.map +0 -1
  521. package/dist/index.d.ts.map +0 -1
  522. package/dist/index.js.map +0 -1
  523. package/dist/is-serve-url.d.ts.map +0 -1
  524. package/dist/is-serve-url.js.map +0 -1
  525. package/dist/legacy-webpack-config.d.ts.map +0 -1
  526. package/dist/legacy-webpack-config.js.map +0 -1
  527. package/dist/make-assets-download-dir.d.ts +0 -1
  528. package/dist/make-assets-download-dir.d.ts.map +0 -1
  529. package/dist/make-assets-download-dir.js +0 -13
  530. package/dist/make-assets-download-dir.js.map +0 -1
  531. package/dist/normalize-serve-url.d.ts.map +0 -1
  532. package/dist/normalize-serve-url.js.map +0 -1
  533. package/dist/open-browser.d.ts.map +0 -1
  534. package/dist/open-browser.js.map +0 -1
  535. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  536. package/dist/parse-browser-error-stack.js.map +0 -1
  537. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  538. package/dist/parse-ffmpeg-progress.js.map +0 -1
  539. package/dist/pool.d.ts.map +0 -1
  540. package/dist/pool.js.map +0 -1
  541. package/dist/prepare-server.d.ts.map +0 -1
  542. package/dist/prepare-server.js.map +0 -1
  543. package/dist/provide-screenshot.d.ts.map +0 -1
  544. package/dist/provide-screenshot.js.map +0 -1
  545. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  546. package/dist/puppeteer-evaluate.js.map +0 -1
  547. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  548. package/dist/puppeteer-screenshot.js.map +0 -1
  549. package/dist/render-media.d.ts.map +0 -1
  550. package/dist/render-media.js.map +0 -1
  551. package/dist/render-still.d.ts.map +0 -1
  552. package/dist/render-still.js.map +0 -1
  553. package/dist/render.d.ts +0 -45
  554. package/dist/render.d.ts.map +0 -1
  555. package/dist/render.js +0 -245
  556. package/dist/render.js.map +0 -1
  557. package/dist/resolve-asset-src.d.ts.map +0 -1
  558. package/dist/resolve-asset-src.js.map +0 -1
  559. package/dist/sample-rate.d.ts.map +0 -1
  560. package/dist/sample-rate.js.map +0 -1
  561. package/dist/screenshot-dom-element.d.ts.map +0 -1
  562. package/dist/screenshot-dom-element.js.map +0 -1
  563. package/dist/screenshot-task.d.ts.map +0 -1
  564. package/dist/screenshot-task.js.map +0 -1
  565. package/dist/seek-to-frame.d.ts.map +0 -1
  566. package/dist/seek-to-frame.js.map +0 -1
  567. package/dist/serve-static.d.ts.map +0 -1
  568. package/dist/serve-static.js.map +0 -1
  569. package/dist/set-props-and-env.d.ts.map +0 -1
  570. package/dist/set-props-and-env.js.map +0 -1
  571. package/dist/stitcher.d.ts +0 -32
  572. package/dist/stitcher.d.ts.map +0 -1
  573. package/dist/stitcher.js +0 -204
  574. package/dist/stitcher.js.map +0 -1
  575. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  576. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  577. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  578. package/dist/symbolicate-stacktrace.js.map +0 -1
  579. package/dist/tmp-dir.d.ts.map +0 -1
  580. package/dist/tmp-dir.js.map +0 -1
  581. package/dist/types.d.ts.map +0 -1
  582. package/dist/types.js.map +0 -1
  583. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  584. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  585. package/dist/validate-ffmpeg.d.ts.map +0 -1
  586. package/dist/validate-ffmpeg.js.map +0 -1
  587. package/dist/validate-frame.d.ts +0 -1
  588. package/dist/validate-frame.js +0 -24
  589. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  590. package/dist/validate-puppeteer-timeout.js.map +0 -1
  591. package/dist/validate-scale.d.ts.map +0 -1
  592. package/dist/validate-scale.js.map +0 -1
  593. package/tsconfig.json +0 -10
  594. package/vitest.config.ts +0 -8
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectComposition = void 0;
4
+ const download_map_1 = require("./assets/download-map");
5
+ const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
6
+ const find_closest_package_json_1 = require("./find-closest-package-json");
7
+ const get_browser_instance_1 = require("./get-browser-instance");
8
+ const prepare_server_1 = require("./prepare-server");
9
+ const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
10
+ const seek_to_frame_1 = require("./seek-to-frame");
11
+ const set_props_and_env_1 = require("./set-props-and-env");
12
+ const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
13
+ const innerSelectComposition = async ({ page, onBrowserLog, inputProps, envVariables, serveUrl, timeoutInMilliseconds, port, id, }) => {
14
+ if (onBrowserLog) {
15
+ page.on('console', (log) => {
16
+ onBrowserLog === null || onBrowserLog === void 0 ? void 0 : onBrowserLog({
17
+ stackTrace: log.stackTrace(),
18
+ text: log.text,
19
+ type: log.type,
20
+ });
21
+ });
22
+ }
23
+ (0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
24
+ await (0, set_props_and_env_1.setPropsAndEnv)({
25
+ inputProps: inputProps !== null && inputProps !== void 0 ? inputProps : {},
26
+ envVariables,
27
+ page,
28
+ serveUrl,
29
+ initialFrame: 0,
30
+ timeoutInMilliseconds,
31
+ proxyPort: port,
32
+ retriesRemaining: 2,
33
+ audioEnabled: false,
34
+ videoEnabled: false,
35
+ });
36
+ await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
37
+ page,
38
+ pageFunction: () => {
39
+ window.setBundleMode({
40
+ type: 'evaluation',
41
+ });
42
+ },
43
+ frame: null,
44
+ args: [],
45
+ });
46
+ await (0, seek_to_frame_1.waitForReady)(page);
47
+ const result = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
48
+ pageFunction: (_id) => {
49
+ return window.calculateComposition(_id);
50
+ },
51
+ frame: null,
52
+ page,
53
+ args: [id],
54
+ });
55
+ return result;
56
+ };
57
+ /**
58
+ * @description Gets a composition defined in a Remotion project based on a Webpack bundle.
59
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/select-composition)
60
+ */
61
+ const selectComposition = async (options) => {
62
+ const { puppeteerInstance, browserExecutable, chromiumOptions, downloadMap: passedDownloadMap, serveUrl: serveUrlOrWebpackUrl, verbose, indent, port, } = options;
63
+ const downloadMap = passedDownloadMap !== null && passedDownloadMap !== void 0 ? passedDownloadMap : (0, download_map_1.makeDownloadMap)();
64
+ const { page, cleanup } = await (0, get_browser_instance_1.getPageAndCleanupFn)({
65
+ passedInInstance: puppeteerInstance,
66
+ browserExecutable: browserExecutable !== null && browserExecutable !== void 0 ? browserExecutable : null,
67
+ chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
68
+ });
69
+ return new Promise((resolve, reject) => {
70
+ const onError = (err) => reject(err);
71
+ const cleanupPageError = (0, handle_javascript_exception_1.handleJavascriptException)({
72
+ page,
73
+ frame: null,
74
+ onError,
75
+ });
76
+ let close = null;
77
+ (0, prepare_server_1.prepareServer)({
78
+ webpackConfigOrServeUrl: serveUrlOrWebpackUrl,
79
+ onDownload: () => undefined,
80
+ onError,
81
+ port: port !== null && port !== void 0 ? port : null,
82
+ downloadMap,
83
+ remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
84
+ concurrency: 1,
85
+ verbose: verbose !== null && verbose !== void 0 ? verbose : false,
86
+ indent: indent !== null && indent !== void 0 ? indent : false,
87
+ })
88
+ .then(({ serveUrl, closeServer, offthreadPort }) => {
89
+ close = closeServer;
90
+ return innerSelectComposition({
91
+ ...options,
92
+ serveUrl,
93
+ page,
94
+ port: offthreadPort,
95
+ });
96
+ })
97
+ .then((comp) => {
98
+ if (close) {
99
+ return Promise.all([comp, close(true)]);
100
+ }
101
+ return Promise.resolve([comp, null]);
102
+ })
103
+ .then(([comp]) => {
104
+ return resolve(comp);
105
+ })
106
+ .catch((err) => {
107
+ reject(err);
108
+ })
109
+ .finally(() => {
110
+ cleanup();
111
+ cleanupPageError();
112
+ // Clean download map if it was not passed in
113
+ if (!passedDownloadMap) {
114
+ (0, download_map_1.cleanDownloadMap)(downloadMap);
115
+ }
116
+ });
117
+ });
118
+ };
119
+ exports.selectComposition = selectComposition;
@@ -1,4 +1,4 @@
1
- import type { IncomingMessage, ServerResponse } from 'http';
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
2
  export declare const serveHandler: (request: IncomingMessage, response: ServerResponse, config: {
3
3
  public: string;
4
4
  }) => Promise<void>;
@@ -4,15 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.serveHandler = void 0;
7
- const fs_1 = require("fs");
8
- const path_1 = __importDefault(require("path"));
9
- const url_1 = __importDefault(require("url"));
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const node_url_1 = __importDefault(require("node:url"));
10
10
  const mime_types_1 = require("../mime-types");
11
11
  // Packages
12
12
  const is_path_inside_1 = require("./is-path-inside");
13
13
  const range_parser_1 = require("./range-parser");
14
14
  const getHeaders = (absolutePath, stats) => {
15
- const { base } = path_1.default.parse(absolutePath);
15
+ const { base } = node_path_1.default.parse(absolutePath);
16
16
  let defaultHeaders = {};
17
17
  if (stats) {
18
18
  defaultHeaders = {
@@ -28,19 +28,19 @@ const getHeaders = (absolutePath, stats) => {
28
28
  return defaultHeaders;
29
29
  };
30
30
  const getPossiblePaths = (relativePath, extension) => [
31
- path_1.default.join(relativePath, `index${extension}`),
31
+ node_path_1.default.join(relativePath, `index${extension}`),
32
32
  relativePath.endsWith('/')
33
33
  ? relativePath.replace(/\/$/g, extension)
34
34
  : relativePath + extension,
35
- ].filter((item) => path_1.default.basename(item) !== extension);
35
+ ].filter((item) => node_path_1.default.basename(item) !== extension);
36
36
  const findRelated = async (current, relativePath) => {
37
37
  const possible = getPossiblePaths(relativePath, '.html');
38
38
  let stats = null;
39
39
  for (let index = 0; index < possible.length; index++) {
40
40
  const related = possible[index];
41
- const absolutePath = path_1.default.join(current, related);
41
+ const absolutePath = node_path_1.default.join(current, related);
42
42
  try {
43
- stats = await fs_1.promises.lstat(absolutePath);
43
+ stats = await node_fs_1.promises.lstat(absolutePath);
44
44
  }
45
45
  catch (err) {
46
46
  if (err.code !== 'ENOENT' &&
@@ -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) => {
@@ -74,10 +75,10 @@ const internalError = (absolutePath, response) => {
74
75
  };
75
76
  const serveHandler = async (request, response, config) => {
76
77
  const cwd = process.cwd();
77
- const current = path_1.default.resolve(cwd, config.public);
78
+ const current = node_path_1.default.resolve(cwd, config.public);
78
79
  let relativePath = null;
79
80
  try {
80
- relativePath = decodeURIComponent(url_1.default.parse(request.url).pathname);
81
+ relativePath = decodeURIComponent(node_url_1.default.parse(request.url).pathname);
81
82
  }
82
83
  catch (err) {
83
84
  return sendError('/', response, {
@@ -86,7 +87,7 @@ const serveHandler = async (request, response, config) => {
86
87
  message: 'Bad Request',
87
88
  });
88
89
  }
89
- let absolutePath = path_1.default.join(current, relativePath);
90
+ let absolutePath = node_path_1.default.join(current, relativePath);
90
91
  // Prevent path traversal vulnerabilities. We could do this
91
92
  // by ourselves, but using the package covers all the edge cases.
92
93
  if (!(0, is_path_inside_1.isPathInside)(absolutePath, current)) {
@@ -108,9 +109,9 @@ const serveHandler = async (request, response, config) => {
108
109
  // directory exists requires loading all the file paths and then checking if
109
110
  // one of them includes the path of the directory. As that's a very
110
111
  // performance-expensive thing to do, we need to ensure it's not happening if not really necessary.
111
- if (path_1.default.extname(relativePath) !== '') {
112
+ if (node_path_1.default.extname(relativePath) !== '') {
112
113
  try {
113
- stats = await fs_1.promises.lstat(absolutePath);
114
+ stats = await node_fs_1.promises.lstat(absolutePath);
114
115
  }
115
116
  catch (err) {
116
117
  if (err.code !== 'ENOENT' &&
@@ -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) {
@@ -133,7 +135,7 @@ const serveHandler = async (request, response, config) => {
133
135
  }
134
136
  }
135
137
  try {
136
- stats = await fs_1.promises.lstat(absolutePath);
138
+ stats = await node_fs_1.promises.lstat(absolutePath);
137
139
  }
138
140
  catch (err) {
139
141
  if (err.code !== 'ENOENT' &&
@@ -188,7 +190,7 @@ const serveHandler = async (request, response, config) => {
188
190
  }
189
191
  let stream = null;
190
192
  try {
191
- stream = (0, fs_1.createReadStream)(absolutePath, streamOpts !== null && streamOpts !== void 0 ? streamOpts : {});
193
+ stream = (0, node_fs_1.createReadStream)(absolutePath, streamOpts !== null && streamOpts !== void 0 ? streamOpts : {});
192
194
  }
193
195
  catch (err) {
194
196
  return internalError(absolutePath, response);
File without changes
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.isPathInside = void 0;
7
- const path_1 = __importDefault(require("path"));
7
+ const node_path_1 = __importDefault(require("node:path"));
8
8
  const isPathInside = function (thePath, potentialParent) {
9
9
  // For inside-directory checking, we want to allow trailing slashes, so normalize.
10
10
  thePath = stripTrailingSep(thePath);
@@ -15,12 +15,12 @@ const isPathInside = function (thePath, potentialParent) {
15
15
  potentialParent = potentialParent.toLowerCase();
16
16
  }
17
17
  return (thePath.lastIndexOf(potentialParent, 0) === 0 &&
18
- (thePath[potentialParent.length] === path_1.default.sep ||
18
+ (thePath[potentialParent.length] === node_path_1.default.sep ||
19
19
  thePath[potentialParent.length] === undefined));
20
20
  };
21
21
  exports.isPathInside = isPathInside;
22
22
  function stripTrailingSep(thePath) {
23
- if (thePath[thePath.length - 1] === path_1.default.sep) {
23
+ if (thePath[thePath.length - 1] === node_path_1.default.sep) {
24
24
  return thePath.slice(0, -1);
25
25
  }
26
26
  return thePath;
File without changes
File without changes
@@ -1,14 +1,17 @@
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';
3
+ import type { Compositor } from './compositor/compositor';
4
4
  export declare const serveStatic: (path: string | null, options: {
5
5
  port: number | null;
6
- ffmpegExecutable: FfmpegExecutable;
7
- ffprobeExecutable: FfmpegExecutable;
8
6
  onDownload: RenderMediaOnDownload;
9
7
  onError: (err: Error) => void;
10
8
  downloadMap: DownloadMap;
9
+ remotionRoot: string;
10
+ concurrency: number;
11
+ verbose: boolean;
12
+ indent: boolean;
11
13
  }) => Promise<{
12
14
  port: number;
13
15
  close: () => Promise<void>;
16
+ compositor: Compositor;
14
17
  }>;
@@ -4,63 +4,104 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.serveStatic = void 0;
7
- const http_1 = __importDefault(require("http"));
7
+ const node_http_1 = __importDefault(require("node:http"));
8
8
  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, compositor, } = (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,
18
+ indent: options.indent,
20
19
  });
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;
20
+ const connections = {};
21
+ const server = node_http_1.default.createServer((request, response) => {
22
+ var _a;
23
+ if ((_a = request.url) === null || _a === void 0 ? void 0 : _a.startsWith('/proxy')) {
24
+ return offthreadRequest(request, response);
25
+ }
26
+ if (path === null) {
27
+ response.writeHead(404);
28
+ response.end('Server only supports /proxy');
29
+ return;
30
+ }
31
+ (0, serve_handler_1.serveHandler)(request, response, {
32
+ public: path,
33
+ }).catch(() => {
34
+ if (!response.headersSent) {
35
+ response.writeHead(500);
32
36
  }
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
- }
37
+ response.end('Error serving file');
38
+ });
39
+ });
40
+ server.on('connection', (conn) => {
41
+ const key = conn.remoteAddress + ':' + conn.remotePort;
42
+ connections[key] = conn;
43
+ conn.on('close', () => {
44
+ delete connections[key];
45
+ });
46
+ });
47
+ let selectedPort = null;
48
+ const maxTries = 5;
49
+ for (let i = 0; i < maxTries; i++) {
50
+ try {
51
+ selectedPort = await new Promise((resolve, reject) => {
52
+ var _a;
53
+ (0, get_port_1.getDesiredPort)((_a = options === null || options === void 0 ? void 0 : options.port) !== null && _a !== void 0 ? _a : undefined, 3000, 3100)
54
+ .then(({ port, didUsePort }) => {
55
+ server.listen(port);
56
+ server.on('listening', () => {
57
+ resolve(port);
58
+ return didUsePort();
59
+ });
60
+ server.on('error', (err) => {
48
61
  reject(err);
49
- }
50
- else {
51
- resolve();
52
- }
53
- });
62
+ });
63
+ })
64
+ .catch((err) => reject(err));
54
65
  });
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);
66
+ const destroyConnections = function () {
67
+ for (const key in connections)
68
+ connections[key].destroy();
69
+ };
70
+ const close = async () => {
71
+ await Promise.all([
72
+ closeCompositor(),
73
+ new Promise((resolve, reject) => {
74
+ destroyConnections();
75
+ server.close((err) => {
76
+ if (err) {
77
+ if (err.code ===
78
+ 'ERR_SERVER_NOT_RUNNING') {
79
+ return resolve();
80
+ }
81
+ reject(err);
82
+ }
83
+ else {
84
+ resolve();
85
+ }
86
+ });
87
+ }),
88
+ ]);
89
+ };
90
+ return { port: selectedPort, close, compositor };
91
+ }
92
+ catch (err) {
93
+ if (!(err instanceof Error)) {
94
+ throw err;
95
+ }
96
+ const codedError = err;
97
+ if (codedError.code === 'EADDRINUSE') {
98
+ // Already in use, try another port
99
+ }
100
+ else {
101
+ throw err;
102
+ }
62
103
  }
63
- throw err;
64
104
  }
105
+ throw new Error(`Tried ${maxTries} times to find a free port. Giving up.`);
65
106
  };
66
107
  exports.serveStatic = serveStatic;
@@ -1,6 +1,6 @@
1
1
  import type { Page } from './browser/BrowserPage';
2
- export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, }: {
3
- inputProps: unknown;
2
+ declare type SetPropsAndEnv = {
3
+ inputProps: Record<string, unknown>;
4
4
  envVariables: Record<string, string> | undefined;
5
5
  page: Page;
6
6
  serveUrl: string;
@@ -8,4 +8,8 @@ export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl
8
8
  timeoutInMilliseconds: number | undefined;
9
9
  proxyPort: number;
10
10
  retriesRemaining: number;
11
- }) => Promise<void>;
11
+ audioEnabled: boolean;
12
+ videoEnabled: boolean;
13
+ };
14
+ export declare const setPropsAndEnv: (params: SetPropsAndEnv) => Promise<unknown>;
15
+ export {};
@@ -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 innerSetPropsAndEnv = 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.`);
@@ -43,7 +54,7 @@ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initia
43
54
  resolve();
44
55
  }, 2000);
45
56
  });
46
- return (0, exports.setPropsAndEnv)({
57
+ return innerSetPropsAndEnv({
47
58
  envVariables,
48
59
  initialFrame,
49
60
  inputProps,
@@ -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,35 @@ 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 = '5';
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
  };
113
+ const setPropsAndEnv = (params) => {
114
+ return Promise.race([
115
+ innerSetPropsAndEnv(params),
116
+ new Promise((_, reject) => {
117
+ setTimeout(() => {
118
+ reject(new Error('Timed out while setting up the headless browser - the browser seems to not respond. This error is thrown to trigger a retry.'));
119
+ }, 10000);
120
+ }),
121
+ ]);
122
+ };
89
123
  exports.setPropsAndEnv = setPropsAndEnv;
@@ -1,13 +1,16 @@
1
1
  /// <reference types="node" />
2
2
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
3
  import type { RenderAssetInfo } from './assets/download-map';
4
+ import type { AudioCodec } from './audio-codec';
4
5
  import type { Codec } from './codec';
5
- import type { FfmpegExecutable } from './ffmpeg-executable';
6
- import type { ImageFormat } from './image-format';
6
+ import type { FfmpegOverrideFn } from './ffmpeg-override';
7
+ import type { VideoImageFormat } from './image-format';
7
8
  import type { CancelSignal } from './make-cancel-signal';
8
9
  import type { PixelFormat } from './pixel-format';
9
10
  import type { ProResProfile } from './prores-profile';
10
11
  export declare type StitcherOptions = {
12
+ audioBitrate?: string | null;
13
+ videoBitrate?: string | null;
11
14
  fps: number;
12
15
  width: number;
13
16
  height: number;
@@ -17,24 +20,26 @@ export declare type StitcherOptions = {
17
20
  pixelFormat?: PixelFormat;
18
21
  numberOfGifLoops?: number | null;
19
22
  codec?: Codec;
23
+ audioCodec?: AudioCodec | null;
20
24
  crf?: number | null;
21
25
  onProgress?: (progress: number) => void;
22
26
  onDownload?: RenderMediaOnDownload;
23
27
  proResProfile?: ProResProfile;
24
28
  verbose?: boolean;
25
- ffmpegExecutable?: FfmpegExecutable;
26
- ffprobeExecutable?: FfmpegExecutable;
27
29
  dir?: string;
28
30
  cancelSignal?: CancelSignal;
29
31
  internalOptions?: {
30
32
  preEncodedFileLocation: string | null;
31
- imageFormat: ImageFormat;
33
+ imageFormat: VideoImageFormat;
34
+ preferLossless: boolean;
35
+ indent: boolean;
32
36
  };
37
+ muted?: boolean;
38
+ enforceAudioTrack?: boolean;
39
+ ffmpegOverride?: FfmpegOverrideFn;
33
40
  };
34
- declare type ReturnType = {
35
- task: Promise<Buffer | null>;
36
- getLogs: () => string;
37
- };
38
- export declare const spawnFfmpeg: (options: StitcherOptions) => Promise<ReturnType>;
41
+ /**
42
+ * @description Takes a series of images and audio information generated by renderFrames() and encodes it to a video.
43
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/stitch-frames-to-video)
44
+ */
39
45
  export declare const stitchFramesToVideo: (options: StitcherOptions) => Promise<Buffer | null>;
40
- export {};