@remotion/renderer 4.0.0-defer.6 → 4.0.0-esm.17

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 (434) hide show
  1. package/LICENSE.md +8 -8
  2. package/README.md +47 -0
  3. package/dist/assets/calculate-asset-positions.d.ts +2 -2
  4. package/dist/assets/calculate-asset-positions.js +1 -0
  5. package/dist/assets/calculate-atempo.d.ts +0 -0
  6. package/dist/assets/calculate-atempo.js +0 -0
  7. package/dist/assets/convert-assets-to-file-urls.d.ts +5 -4
  8. package/dist/assets/convert-assets-to-file-urls.js +2 -2
  9. package/dist/assets/download-and-map-assets-to-file.d.ts +16 -12
  10. package/dist/assets/download-and-map-assets-to-file.js +145 -65
  11. package/dist/assets/download-file.d.ts +13 -6
  12. package/dist/assets/download-file.js +64 -8
  13. package/dist/assets/download-map.d.ts +69 -0
  14. package/dist/assets/download-map.js +77 -0
  15. package/dist/assets/ffmpeg-volume-expression.d.ts +3 -3
  16. package/dist/assets/ffmpeg-volume-expression.js +6 -5
  17. package/dist/assets/flatten-volume-array.d.ts +1 -1
  18. package/dist/assets/flatten-volume-array.js +0 -0
  19. package/dist/assets/get-audio-channels.d.ts +3 -5
  20. package/dist/assets/get-audio-channels.js +15 -4
  21. package/dist/assets/get-video-stream-duration.d.ts +9 -0
  22. package/dist/assets/get-video-stream-duration.js +71 -0
  23. package/dist/assets/read-file.d.ts +0 -0
  24. package/dist/assets/read-file.js +2 -1
  25. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -0
  26. package/dist/assets/round-volume-to-avoid-stack-overflow.js +0 -0
  27. package/dist/assets/sanitize-filename.d.ts +0 -0
  28. package/dist/assets/sanitize-filename.js +0 -0
  29. package/dist/assets/sanitize-filepath.d.ts +0 -0
  30. package/dist/assets/sanitize-filepath.js +0 -0
  31. package/dist/assets/truncate-utf8-bytes.d.ts +0 -0
  32. package/dist/assets/truncate-utf8-bytes.js +0 -0
  33. package/dist/assets/types.d.ts +2 -1
  34. package/dist/assets/types.js +0 -0
  35. package/dist/browser/Browser.d.ts +62 -0
  36. package/dist/browser/Browser.js +221 -0
  37. package/dist/browser/BrowserConnector.d.ts +19 -0
  38. package/dist/browser/BrowserConnector.js +17 -0
  39. package/dist/browser/BrowserFetcher.d.ts +90 -0
  40. package/dist/browser/BrowserFetcher.js +513 -0
  41. package/dist/browser/BrowserPage.d.ts +80 -0
  42. package/dist/browser/BrowserPage.js +280 -0
  43. package/dist/browser/BrowserRunner.d.ts +36 -0
  44. package/dist/browser/BrowserRunner.js +265 -0
  45. package/dist/browser/Connection.d.ts +42 -0
  46. package/dist/browser/Connection.js +242 -0
  47. package/dist/browser/ConsoleMessage.d.ts +31 -0
  48. package/dist/browser/ConsoleMessage.js +48 -0
  49. package/dist/browser/DOMWorld.d.ts +53 -0
  50. package/dist/browser/DOMWorld.js +279 -0
  51. package/dist/browser/Errors.d.ts +25 -0
  52. package/dist/browser/Errors.js +35 -0
  53. package/dist/browser/EvalTypes.d.ts +27 -0
  54. package/dist/browser/EvalTypes.js +17 -0
  55. package/dist/browser/EventEmitter.d.ts +23 -0
  56. package/dist/browser/EventEmitter.js +53 -0
  57. package/dist/browser/ExecutionContext.d.ts +34 -0
  58. package/dist/browser/ExecutionContext.js +174 -0
  59. package/dist/browser/FrameManager.d.ts +91 -0
  60. package/dist/browser/FrameManager.js +493 -0
  61. package/dist/browser/HTTPRequest.d.ts +28 -0
  62. package/dist/browser/HTTPRequest.js +37 -0
  63. package/dist/browser/HTTPResponse.d.ts +21 -0
  64. package/dist/browser/HTTPResponse.js +41 -0
  65. package/dist/browser/JSHandle.d.ts +35 -0
  66. package/dist/browser/JSHandle.js +90 -0
  67. package/dist/browser/LaunchOptions.d.ts +33 -0
  68. package/dist/browser/LaunchOptions.js +17 -0
  69. package/dist/browser/Launcher.d.ts +15 -0
  70. package/dist/browser/Launcher.js +144 -0
  71. package/dist/browser/LifecycleWatcher.d.ts +29 -0
  72. package/dist/browser/LifecycleWatcher.js +180 -0
  73. package/dist/browser/NetworkEventManager.d.ts +33 -0
  74. package/dist/browser/NetworkEventManager.js +81 -0
  75. package/dist/browser/NetworkManager.d.ts +34 -0
  76. package/dist/browser/NetworkManager.js +231 -0
  77. package/dist/browser/NodeWebSocketTransport.d.ts +17 -0
  78. package/dist/browser/NodeWebSocketTransport.js +87 -0
  79. package/dist/browser/Product.d.ts +16 -0
  80. package/dist/browser/Product.js +17 -0
  81. package/dist/browser/PuppeteerNode.d.ts +40 -0
  82. package/dist/browser/PuppeteerNode.js +74 -0
  83. package/dist/browser/PuppeteerViewport.d.ts +5 -0
  84. package/dist/{faststart/options.js → browser/PuppeteerViewport.js} +0 -0
  85. package/dist/{faststart/index.d.ts → browser/ScreenshotOptions.d.ts} +0 -0
  86. package/dist/{faststart/index.js → browser/ScreenshotOptions.js} +0 -0
  87. package/dist/browser/Target.d.ts +61 -0
  88. package/dist/browser/Target.js +146 -0
  89. package/dist/browser/TaskQueue.d.ts +20 -0
  90. package/dist/browser/TaskQueue.js +47 -0
  91. package/dist/browser/TimeoutSettings.d.ts +24 -0
  92. package/dist/browser/TimeoutSettings.js +62 -0
  93. package/dist/browser/assert.d.ts +1 -0
  94. package/dist/browser/assert.js +9 -0
  95. package/dist/browser/create-browser-fetcher.d.ts +17 -0
  96. package/dist/browser/create-browser-fetcher.js +77 -0
  97. package/dist/browser/devtools-commands.d.ts +270 -0
  98. package/dist/browser/devtools-commands.js +2 -0
  99. package/dist/browser/devtools-types.d.ts +1126 -0
  100. package/dist/browser/devtools-types.js +2 -0
  101. package/dist/browser/get-download-destination.d.ts +1 -0
  102. package/dist/browser/get-download-destination.js +38 -0
  103. package/dist/browser/is-target-closed-err.d.ts +1 -0
  104. package/dist/browser/is-target-closed-err.js +9 -0
  105. package/dist/browser/mitt/index.d.ts +22 -0
  106. package/dist/browser/mitt/index.js +49 -0
  107. package/dist/browser/node.d.ts +2 -0
  108. package/dist/browser/node.js +9 -0
  109. package/dist/browser/revisions.d.ts +20 -0
  110. package/dist/browser/revisions.js +21 -0
  111. package/dist/browser/util.d.ts +47 -0
  112. package/dist/browser/util.js +169 -0
  113. package/dist/browser-executable.d.ts +1 -0
  114. package/dist/{assets/cleanup-assets.js → browser-executable.js} +0 -0
  115. package/dist/browser-log.d.ts +1 -1
  116. package/dist/browser-log.js +0 -0
  117. package/dist/browser.d.ts +2 -0
  118. package/dist/browser.js +4 -0
  119. package/dist/calculate-ffmpeg-filters.d.ts +1 -1
  120. package/dist/calculate-ffmpeg-filters.js +1 -0
  121. package/dist/calculate-sar-dar-pixels.d.ts +9 -0
  122. package/dist/calculate-sar-dar-pixels.js +19 -0
  123. package/dist/can-use-parallel-encoding.d.ts +1 -1
  124. package/dist/can-use-parallel-encoding.js +2 -2
  125. package/dist/check-apple-silicon.d.ts +1 -0
  126. package/dist/check-apple-silicon.js +55 -0
  127. package/dist/chunk.d.ts +0 -0
  128. package/dist/chunk.js +0 -0
  129. package/dist/client.d.ts +10 -0
  130. package/dist/client.js +19 -0
  131. package/dist/codec-supports-media.d.ts +8 -0
  132. package/dist/codec-supports-media.js +56 -0
  133. package/dist/codec.d.ts +4 -0
  134. package/dist/codec.js +16 -0
  135. package/dist/combine-videos.d.ts +9 -3
  136. package/dist/combine-videos.js +18 -10
  137. package/dist/compositor/compose.d.ts +13 -0
  138. package/dist/compositor/compose.js +47 -0
  139. package/dist/compositor/compositor.d.ts +12 -0
  140. package/dist/compositor/compositor.js +111 -0
  141. package/dist/compositor/get-executable-path.d.ts +1 -0
  142. package/dist/compositor/get-executable-path.js +47 -0
  143. package/dist/compositor/payloads.d.ts +41 -0
  144. package/dist/compositor/payloads.js +2 -0
  145. package/dist/compress-assets.d.ts +7 -0
  146. package/dist/compress-assets.js +25 -0
  147. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +1 -0
  148. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +17 -0
  149. package/dist/convert-to-pcm.d.ts +3 -2
  150. package/dist/convert-to-pcm.js +3 -2
  151. package/dist/convert-to-positive-frame-index.d.ts +4 -0
  152. package/dist/convert-to-positive-frame-index.js +8 -0
  153. package/dist/create-ffmpeg-complex-filter.d.ts +2 -1
  154. package/dist/create-ffmpeg-complex-filter.js +2 -11
  155. package/dist/create-ffmpeg-merge-filter.d.ts +0 -0
  156. package/dist/create-ffmpeg-merge-filter.js +3 -3
  157. package/dist/create-silent-audio.d.ts +3 -2
  158. package/dist/create-silent-audio.js +3 -2
  159. package/dist/crf.d.ts +9 -0
  160. package/dist/crf.js +91 -0
  161. package/dist/cycle-browser-tabs.d.ts +2 -5
  162. package/dist/cycle-browser-tabs.js +5 -5
  163. package/dist/delay-render-embedded-stack.d.ts +1 -1
  164. package/dist/delay-render-embedded-stack.js +0 -0
  165. package/dist/delete-directory.d.ts +0 -0
  166. package/dist/delete-directory.js +0 -0
  167. package/dist/determine-resize-params.d.ts +1 -0
  168. package/dist/determine-resize-params.js +10 -0
  169. package/dist/determine-vcodec-ffmepg-flags.d.ts +2 -0
  170. package/dist/determine-vcodec-ffmepg-flags.js +13 -0
  171. package/dist/determine-vcodec-ffmpeg-flags.d.ts +2 -0
  172. package/dist/determine-vcodec-ffmpeg-flags.js +13 -0
  173. package/dist/ensure-ffmpeg.d.ts +10 -0
  174. package/dist/ensure-ffmpeg.js +50 -0
  175. package/dist/ensure-frames-in-order.d.ts +1 -1
  176. package/dist/ensure-frames-in-order.js +3 -2
  177. package/dist/ensure-output-directory.d.ts +0 -0
  178. package/dist/ensure-output-directory.js +0 -0
  179. package/dist/ensure-presentation-timestamp.d.ts +15 -0
  180. package/dist/ensure-presentation-timestamp.js +88 -0
  181. package/dist/error-handling/handle-javascript-exception.d.ts +2 -2
  182. package/dist/error-handling/handle-javascript-exception.js +3 -4
  183. package/dist/error-handling/symbolicate-error.d.ts +1 -1
  184. package/dist/error-handling/symbolicate-error.js +0 -0
  185. package/dist/error-handling/symbolicateable-error.d.ts +1 -1
  186. package/dist/error-handling/symbolicateable-error.js +0 -0
  187. package/dist/extract-frame-from-video.d.ts +7 -6
  188. package/dist/extract-frame-from-video.js +91 -105
  189. package/dist/ffmpeg-executable.d.ts +1 -0
  190. package/dist/ffmpeg-executable.js +2 -0
  191. package/dist/ffmpeg-filter-file.d.ts +2 -1
  192. package/dist/ffmpeg-filter-file.js +4 -6
  193. package/dist/ffmpeg-flags.d.ts +20 -2
  194. package/dist/ffmpeg-flags.js +205 -9
  195. package/dist/ffmpeg-override.d.ts +4 -0
  196. package/dist/ffmpeg-override.js +2 -0
  197. package/dist/find-closest-package-json.d.ts +2 -0
  198. package/dist/find-closest-package-json.js +31 -0
  199. package/dist/frame-range.d.ts +2 -0
  200. package/dist/frame-range.js +49 -0
  201. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -0
  202. package/dist/frame-to-ffmpeg-timestamp.js +0 -0
  203. package/dist/get-audio-codec-name.d.ts +1 -1
  204. package/dist/get-audio-codec-name.js +2 -2
  205. package/dist/get-browser-instance.d.ts +4 -3
  206. package/dist/get-browser-instance.js +3 -3
  207. package/dist/get-can-extract-frames-fast.d.ts +10 -0
  208. package/dist/get-can-extract-frames-fast.js +67 -0
  209. package/dist/get-codec-name.d.ts +1 -1
  210. package/dist/get-codec-name.js +5 -2
  211. package/dist/get-compositions-from-bundle.d.ts +7 -0
  212. package/dist/get-compositions-from-bundle.js +55 -0
  213. package/dist/get-compositions-from-markup.d.ts +3 -0
  214. package/dist/get-compositions-from-markup.js +17 -0
  215. package/dist/get-compositions-on-server.d.ts +3 -0
  216. package/dist/get-compositions-on-server.js +18 -0
  217. package/dist/get-compositions.d.ts +11 -4
  218. package/dist/get-compositions.js +30 -11
  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 +1 -2
  222. package/dist/get-duration-from-frame-range.js +13 -9
  223. package/dist/get-extension-from-codec.d.ts +2 -2
  224. package/dist/get-extension-from-codec.js +8 -5
  225. package/dist/get-extension-of-filename.d.ts +1 -1
  226. package/dist/get-extension-of-filename.js +8 -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 +14 -0
  230. package/dist/get-frame-padded-index.js +34 -0
  231. package/dist/get-frame-to-render.d.ts +1 -1
  232. package/dist/get-frame-to-render.js +0 -0
  233. package/dist/get-local-browser-executable.d.ts +2 -1
  234. package/dist/get-local-browser-executable.js +8 -8
  235. package/dist/get-port.d.ts +4 -1
  236. package/dist/get-port.js +13 -22
  237. package/dist/get-prores-profile-name.d.ts +2 -1
  238. package/dist/get-prores-profile-name.js +0 -0
  239. package/dist/get-video-info.d.ts +8 -0
  240. package/dist/get-video-info.js +59 -0
  241. package/dist/get-video-signals.d.ts +2 -0
  242. package/dist/get-video-signals.js +28 -0
  243. package/dist/get-video-threads-flag.d.ts +1 -0
  244. package/dist/get-video-threads-flag.js +18 -0
  245. package/dist/guess-extension-for-media.d.ts +5 -0
  246. package/dist/guess-extension-for-media.js +28 -0
  247. package/dist/image-format.d.ts +6 -1
  248. package/dist/image-format.js +28 -1
  249. package/dist/index.d.ts +117 -34
  250. package/dist/index.js +101 -15
  251. package/dist/is-audio-codec.d.ts +2 -0
  252. package/dist/is-audio-codec.js +7 -0
  253. package/dist/is-beyond-last-frame.d.ts +3 -2
  254. package/dist/is-beyond-last-frame.js +5 -5
  255. package/dist/is-serve-url.d.ts +0 -0
  256. package/dist/is-serve-url.js +0 -0
  257. package/dist/last-frame-from-video-cache.d.ts +9 -4
  258. package/dist/last-frame-from-video-cache.js +24 -21
  259. package/dist/legacy-webpack-config.d.ts +0 -0
  260. package/dist/legacy-webpack-config.js +0 -0
  261. package/dist/lock-port-selection.d.ts +2 -0
  262. package/dist/lock-port-selection.js +11 -0
  263. package/dist/locks.d.ts +7 -0
  264. package/dist/locks.js +44 -0
  265. package/dist/log-level.d.ts +4 -0
  266. package/dist/log-level.js +15 -0
  267. package/dist/make-cancel-signal.d.ts +7 -0
  268. package/dist/make-cancel-signal.js +20 -1
  269. package/dist/make-comp-manager-context.d.ts +2 -0
  270. package/dist/make-comp-manager-context.js +45 -0
  271. package/dist/make-timeline-context-value.d.ts +2 -0
  272. package/dist/make-timeline-context-value.js +20 -0
  273. package/dist/merge-audio-track.d.ts +4 -1
  274. package/dist/merge-audio-track.js +18 -7
  275. package/dist/mime-db.d.ts +6 -0
  276. package/dist/mime-db.js +8636 -0
  277. package/dist/mime-types.d.ts +3 -0
  278. package/dist/mime-types.js +94 -0
  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 +9 -5
  282. package/dist/offthread-video-server.js +30 -10
  283. package/dist/open-browser.d.ts +5 -3
  284. package/dist/open-browser.js +18 -28
  285. package/dist/overwrite.d.ts +1 -0
  286. package/dist/overwrite.js +4 -0
  287. package/dist/p-limit.d.ts +0 -0
  288. package/dist/p-limit.js +0 -0
  289. package/dist/parse-browser-error-stack.d.ts +0 -0
  290. package/dist/parse-browser-error-stack.js +0 -0
  291. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  292. package/dist/parse-ffmpeg-progress.js +0 -0
  293. package/dist/perf.d.ts +5 -0
  294. package/dist/perf.js +35 -0
  295. package/dist/pixel-format.d.ts +5 -0
  296. package/dist/pixel-format.js +29 -0
  297. package/dist/pool.d.ts +0 -0
  298. package/dist/pool.js +0 -0
  299. package/dist/prepare-server.d.ts +7 -5
  300. package/dist/prepare-server.js +24 -5
  301. package/dist/preprocess-audio-track.d.ts +5 -2
  302. package/dist/preprocess-audio-track.js +5 -4
  303. package/dist/prespawn-ffmpeg.d.ts +10 -3
  304. package/dist/prespawn-ffmpeg.js +24 -16
  305. package/dist/prestitcher-memory-usage.d.ts +12 -0
  306. package/dist/prestitcher-memory-usage.js +30 -0
  307. package/dist/prores-profile.d.ts +8 -0
  308. package/dist/prores-profile.js +23 -0
  309. package/dist/provide-screenshot.d.ts +9 -5
  310. package/dist/provide-screenshot.js +4 -2
  311. package/dist/puppeteer-evaluate.d.ts +1 -1
  312. package/dist/puppeteer-evaluate.js +3 -4
  313. package/dist/puppeteer-screenshot.d.ts +12 -2
  314. package/dist/puppeteer-screenshot.js +11 -16
  315. package/dist/quality.d.ts +1 -0
  316. package/dist/quality.js +21 -0
  317. package/dist/redirect-status-codes.d.ts +1 -0
  318. package/dist/redirect-status-codes.js +6 -0
  319. package/dist/render-frames.d.ts +30 -12
  320. package/dist/render-frames.js +232 -138
  321. package/dist/render-media.d.ts +49 -12
  322. package/dist/render-media.js +152 -30
  323. package/dist/render-on-server.d.ts +3 -0
  324. package/dist/render-on-server.js +90 -0
  325. package/dist/render-still.d.ts +21 -9
  326. package/dist/render-still.js +75 -37
  327. package/dist/render-svg.d.ts +8 -0
  328. package/dist/render-svg.js +13 -0
  329. package/dist/render-video-layer.d.ts +9 -0
  330. package/dist/render-video-layer.js +23 -0
  331. package/dist/render-web-frame.d.ts +74 -0
  332. package/dist/render-web-frame.js +259 -0
  333. package/dist/replace-browser.d.ts +6 -0
  334. package/dist/replace-browser.js +47 -0
  335. package/dist/resolve-asset-src.d.ts +0 -0
  336. package/dist/resolve-asset-src.js +0 -0
  337. package/dist/sample-rate.d.ts +0 -0
  338. package/dist/sample-rate.js +0 -0
  339. package/dist/screenshot-dom-element.d.ts +11 -8
  340. package/dist/screenshot-dom-element.js +12 -7
  341. package/dist/screenshot-task.d.ts +13 -3
  342. package/dist/screenshot-task.js +55 -27
  343. package/dist/seek-to-frame.d.ts +3 -2
  344. package/dist/seek-to-frame.js +24 -3
  345. package/dist/serve-handler/index.d.ts +1 -1
  346. package/dist/serve-handler/index.js +7 -15
  347. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  348. package/dist/serve-handler/is-path-inside.js +0 -0
  349. package/dist/serve-handler/range-parser.d.ts +0 -0
  350. package/dist/serve-handler/range-parser.js +0 -0
  351. package/dist/serve-static.d.ts +5 -3
  352. package/dist/serve-static.js +20 -4
  353. package/dist/set-props-and-env.d.ts +4 -2
  354. package/dist/set-props-and-env.js +41 -15
  355. package/dist/stitch-frames-to-video.d.ts +20 -7
  356. package/dist/stitch-frames-to-video.js +175 -59
  357. package/dist/stringify-ffmpeg-filter.d.ts +4 -3
  358. package/dist/stringify-ffmpeg-filter.js +15 -11
  359. package/dist/symbolicate-stacktrace.d.ts +1 -1
  360. package/dist/symbolicate-stacktrace.js +3 -3
  361. package/dist/take-frame-and-compose.d.ts +20 -0
  362. package/dist/take-frame-and-compose.js +96 -0
  363. package/dist/tmp-dir.d.ts +0 -0
  364. package/dist/tmp-dir.js +0 -0
  365. package/dist/truthy.d.ts +3 -0
  366. package/dist/truthy.js +7 -0
  367. package/dist/try-to-extract-frame-of-video-fast.d.ts +13 -0
  368. package/dist/try-to-extract-frame-of-video-fast.js +55 -0
  369. package/dist/types.d.ts +1 -1
  370. package/dist/types.js +0 -0
  371. package/dist/validate-concurrency.d.ts +1 -0
  372. package/dist/validate-concurrency.js +29 -0
  373. package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
  374. package/dist/validate-even-dimensions-with-codec.js +2 -2
  375. package/dist/validate-every-nth-frame.d.ts +2 -0
  376. package/dist/validate-every-nth-frame.js +28 -0
  377. package/dist/validate-ffmpeg-override.d.ts +2 -0
  378. package/dist/validate-ffmpeg-override.js +12 -0
  379. package/dist/validate-ffmpeg.d.ts +7 -2
  380. package/dist/validate-ffmpeg.js +48 -44
  381. package/dist/validate-frame.d.ts +1 -0
  382. package/dist/validate-frame.js +24 -0
  383. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  384. package/dist/validate-number-of-gif-loops.js +24 -0
  385. package/dist/validate-opengl-renderer.d.ts +5 -0
  386. package/dist/validate-opengl-renderer.js +15 -0
  387. package/dist/validate-output-filename.d.ts +1 -1
  388. package/dist/validate-output-filename.js +5 -0
  389. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  390. package/dist/validate-puppeteer-timeout.js +1 -1
  391. package/dist/validate-scale.d.ts +0 -0
  392. package/dist/validate-scale.js +0 -0
  393. package/dist/validate-videobitrate.d.ts +1 -0
  394. package/dist/validate-videobitrate.js +20 -0
  395. package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
  396. package/dist/wait-for-symbolication-error-to-be-done.js +8 -0
  397. package/dist/warn-about-ffmpeg-version.d.ts +5 -0
  398. package/dist/warn-about-ffmpeg-version.js +37 -0
  399. package/dist/ws/ws-types.d.ts +14 -0
  400. package/dist/ws/ws-types.js +10 -0
  401. package/package.json +30 -22
  402. package/types/ws/index.d.ts +509 -0
  403. package/.prettierrc.js +0 -14
  404. package/dist/abort.d.ts +0 -7
  405. package/dist/abort.js +0 -20
  406. package/dist/assets/cleanup-assets.d.ts +0 -2
  407. package/dist/cancel.d.ts +0 -7
  408. package/dist/cancel.js +0 -25
  409. package/dist/ensure-faststart.d.ts +0 -1
  410. package/dist/ensure-faststart.js +0 -14
  411. package/dist/faststart/atom.d.ts +0 -35
  412. package/dist/faststart/atom.js +0 -138
  413. package/dist/faststart/options.d.ts +0 -6
  414. package/dist/faststart/qt-faststart.d.ts +0 -18
  415. package/dist/faststart/qt-faststart.js +0 -66
  416. package/dist/faststart/update-chunk-offsets.d.ts +0 -10
  417. package/dist/faststart/update-chunk-offsets.js +0 -114
  418. package/dist/faststart/util.d.ts +0 -9
  419. package/dist/faststart/util.js +0 -34
  420. package/dist/get-duration-of-asset.d.ts +0 -7
  421. package/dist/get-duration-of-asset.js +0 -36
  422. package/dist/make-assets-download-dir.d.ts +0 -1
  423. package/dist/make-assets-download-dir.js +0 -13
  424. package/dist/offthread/index.d.ts +0 -0
  425. package/dist/offthread/index.js +0 -1
  426. package/dist/render-gif.d.ts +0 -2
  427. package/dist/render-gif.js +0 -242
  428. package/dist/serve-handler/glob-slash.d.ts +0 -1
  429. package/dist/serve-handler/glob-slash.js +0 -12
  430. package/dist/stitch-frames-to-gif.d.ts +0 -8
  431. package/dist/stitch-frames-to-gif.js +0 -128
  432. package/dist/validate-fps-for-gif.d.ts +0 -2
  433. package/dist/validate-fps-for-gif.js +0 -9
  434. package/tsconfig.json +0 -10
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.cleanDownloadMap = exports.makeDownloadMap = void 0;
30
+ const fs_1 = __importStar(require("fs"));
31
+ const path_1 = __importDefault(require("path"));
32
+ const delete_directory_1 = require("../delete-directory");
33
+ const tmp_dir_1 = require("../tmp-dir");
34
+ const makeAndReturn = (dir, name) => {
35
+ const p = path_1.default.join(dir, name);
36
+ (0, fs_1.mkdirSync)(p);
37
+ return p;
38
+ };
39
+ const packageJsonPath = path_1.default.join(__dirname, '..', '..', 'package.json');
40
+ const packageJson = fs_1.default.existsSync(packageJsonPath)
41
+ ? JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf-8'))
42
+ : null;
43
+ const makeDownloadMap = () => {
44
+ const dir = (0, tmp_dir_1.tmpDir)(packageJson
45
+ ? `remotion-v${packageJson.version.replace(/\./g, '-')}-assets`
46
+ : 'remotion-assets');
47
+ return {
48
+ isDownloadingMap: {},
49
+ hasBeenDownloadedMap: {},
50
+ listeners: {},
51
+ lastFrameMap: {},
52
+ isBeyondLastFrameMap: {},
53
+ ensureFileHasPresentationTimestamp: {},
54
+ isVp9VideoCache: {},
55
+ videoDurationResultCache: {},
56
+ durationOfAssetCache: {},
57
+ id: String(Math.random()),
58
+ assetDir: dir,
59
+ downloadDir: makeAndReturn(dir, 'remotion-assets-dir'),
60
+ complexFilter: makeAndReturn(dir, 'remotion-complex-filter'),
61
+ preEncode: makeAndReturn(dir, 'pre-encode'),
62
+ audioMixing: makeAndReturn(dir, 'remotion-audio-mixing'),
63
+ audioPreprocessing: makeAndReturn(dir, 'remotion-audio-preprocessing'),
64
+ stitchFrames: makeAndReturn(dir, 'remotion-stitch-temp-dir'),
65
+ compositingDir: makeAndReturn(dir, 'remotion-compositing-temp-dir'),
66
+ compositorCache: {},
67
+ };
68
+ };
69
+ exports.makeDownloadMap = makeDownloadMap;
70
+ const cleanDownloadMap = async (downloadMap) => {
71
+ await (0, delete_directory_1.deleteDirectory)(downloadMap.downloadDir);
72
+ await (0, delete_directory_1.deleteDirectory)(downloadMap.complexFilter);
73
+ await (0, delete_directory_1.deleteDirectory)(downloadMap.compositingDir);
74
+ // Assets dir must be last since the others are contained
75
+ await (0, delete_directory_1.deleteDirectory)(downloadMap.assetDir);
76
+ };
77
+ exports.cleanDownloadMap = cleanDownloadMap;
@@ -1,13 +1,13 @@
1
- import { AssetVolume } from './types';
1
+ import type { AssetVolume } from './types';
2
2
  declare type FfmpegEval = 'once' | 'frame';
3
3
  declare type FfmpegVolumeExpression = {
4
4
  eval: FfmpegEval;
5
5
  value: string;
6
6
  };
7
- export declare const ffmpegVolumeExpression: ({ volume, startInVideo, fps, trimLeft, }: {
7
+ export declare const ffmpegVolumeExpression: ({ volume, fps, trimLeft, allowAmplificationDuringRender, }: {
8
8
  volume: AssetVolume;
9
- startInVideo: number;
10
9
  trimLeft: number;
11
10
  fps: number;
11
+ allowAmplificationDuringRender: boolean;
12
12
  }) => FfmpegVolumeExpression;
13
13
  export {};
@@ -43,21 +43,22 @@ const ffmpegBuildVolumeExpression = (arr, delay, fps) => {
43
43
  const [volume, frames] = first;
44
44
  return ffmpegIfOrElse(ffmpegIsOneOfFrames({ frames, trimLeft: delay, fps }), String(volume), ffmpegBuildVolumeExpression(rest, delay, fps));
45
45
  };
46
- const ffmpegVolumeExpression = ({ volume, startInVideo, fps, trimLeft, }) => {
46
+ const ffmpegVolumeExpression = ({ volume, fps, trimLeft, allowAmplificationDuringRender, }) => {
47
+ const maxVolume = allowAmplificationDuringRender ? Infinity : 1;
47
48
  // If it's a static volume, we return it and tell
48
49
  // FFMPEG it only has to evaluate it once
49
50
  if (typeof volume === 'number') {
50
51
  return {
51
52
  eval: 'once',
52
- value: String(Math.min(1, volume)),
53
+ value: String(Math.min(maxVolume, volume)),
53
54
  };
54
55
  }
55
56
  if ([...new Set(volume)].length === 1) {
56
57
  return (0, exports.ffmpegVolumeExpression)({
57
58
  volume: volume[0],
58
- startInVideo,
59
59
  fps,
60
60
  trimLeft,
61
+ allowAmplificationDuringRender,
61
62
  });
62
63
  }
63
64
  // A 1 sec video with frames 0-29 would mean that
@@ -72,11 +73,11 @@ const ffmpegVolumeExpression = ({ volume, startInVideo, fps, trimLeft, }) => {
72
73
  const volumeMap = {};
73
74
  paddedVolume.forEach((baseVolume, frame) => {
74
75
  // Adjust volume based on how many other tracks have not yet finished
75
- const actualVolume = (0, round_volume_to_avoid_stack_overflow_1.roundVolumeToAvoidStackOverflow)(Math.min(1, baseVolume));
76
+ const actualVolume = (0, round_volume_to_avoid_stack_overflow_1.roundVolumeToAvoidStackOverflow)(Math.min(maxVolume, baseVolume));
76
77
  if (!volumeMap[actualVolume]) {
77
78
  volumeMap[actualVolume] = [];
78
79
  }
79
- volumeMap[actualVolume].push(frame + startInVideo);
80
+ volumeMap[actualVolume].push(frame);
80
81
  });
81
82
  // Sort the map so that the most common volume is last
82
83
  // this is going to be the else statement so the expression is short
@@ -1,3 +1,3 @@
1
- import { AssetVolume, MediaAsset } from './types';
1
+ import type { AssetVolume, MediaAsset } from './types';
2
2
  export declare const flattenVolumeArray: (volume: AssetVolume) => AssetVolume;
3
3
  export declare const convertAssetToFlattenedVolume: (asset: MediaAsset) => MediaAsset;
File without changes
@@ -1,5 +1,3 @@
1
- import { FfmpegExecutable } from 'remotion';
2
- export declare function getAudioChannelsAndDuration(path: string, ffprobeExecutable: FfmpegExecutable): Promise<{
3
- channels: number;
4
- duration: number | null;
5
- }>;
1
+ import type { FfmpegExecutable } from '../ffmpeg-executable';
2
+ import type { AudioChannelsAndDurationResultCache, DownloadMap } from './download-map';
3
+ export declare const getAudioChannelsAndDuration: (downloadMap: DownloadMap, src: string, ffprobeExecutable: FfmpegExecutable, remotionRoot: string) => Promise<AudioChannelsAndDurationResultCache>;
@@ -5,21 +5,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getAudioChannelsAndDuration = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
- async function getAudioChannelsAndDuration(path, ffprobeExecutable) {
8
+ const ffmpeg_flags_1 = require("../ffmpeg-flags");
9
+ const p_limit_1 = require("../p-limit");
10
+ const limit = (0, p_limit_1.pLimit)(1);
11
+ async function getAudioChannelsAndDurationUnlimited(downloadMap, src, ffprobeExecutable, remotionRoot) {
12
+ if (downloadMap.durationOfAssetCache[src]) {
13
+ return downloadMap.durationOfAssetCache[src];
14
+ }
9
15
  const args = [
10
16
  ['-v', 'error'],
11
17
  ['-show_entries', 'stream=channels:format=duration'],
12
18
  ['-of', 'default=nw=1'],
13
- [path],
19
+ [src],
14
20
  ]
15
21
  .reduce((acc, val) => acc.concat(val), [])
16
22
  .filter(Boolean);
17
- const task = await (0, execa_1.default)(ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : 'ffprobe', args);
23
+ const task = await (0, execa_1.default)(await (0, ffmpeg_flags_1.getExecutableBinary)(ffprobeExecutable, remotionRoot, 'ffprobe'), args);
18
24
  const channels = task.stdout.match(/channels=([0-9]+)/);
19
25
  const duration = task.stdout.match(/duration=([0-9.]+)/);
20
- return {
26
+ const result = {
21
27
  channels: channels ? parseInt(channels[1], 10) : 0,
22
28
  duration: duration ? parseFloat(duration[1]) : null,
23
29
  };
30
+ downloadMap.durationOfAssetCache[src] = result;
31
+ return result;
24
32
  }
33
+ const getAudioChannelsAndDuration = (downloadMap, src, ffprobeExecutable, remotionRoot) => {
34
+ return limit(() => getAudioChannelsAndDurationUnlimited(downloadMap, src, ffprobeExecutable, remotionRoot));
35
+ };
25
36
  exports.getAudioChannelsAndDuration = getAudioChannelsAndDuration;
@@ -0,0 +1,9 @@
1
+ import type { FfmpegExecutable } from '../ffmpeg-executable';
2
+ import type { DownloadMap, VideoDurationResult } from './download-map';
3
+ export declare const parseVideoStreamDuration: (stdout: string) => VideoDurationResult;
4
+ export declare function getVideoStreamDurationwithoutCache({ src, ffprobeExecutable, remotionRoot, }: {
5
+ src: string;
6
+ ffprobeExecutable: FfmpegExecutable;
7
+ remotionRoot: string;
8
+ }): Promise<VideoDurationResult>;
9
+ export declare const getVideoStreamDuration: (downloadMap: DownloadMap, src: string, ffprobeExecutable: FfmpegExecutable, remotionRoot: string) => Promise<VideoDurationResult>;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getVideoStreamDuration = exports.getVideoStreamDurationwithoutCache = exports.parseVideoStreamDuration = void 0;
7
+ const execa_1 = __importDefault(require("execa"));
8
+ const ffmpeg_flags_1 = require("../ffmpeg-flags");
9
+ const p_limit_1 = require("../p-limit");
10
+ const limit = (0, p_limit_1.pLimit)(1);
11
+ const parseAlternativeDuration = (stdout) => {
12
+ const webmDuration = stdout.match(/TAG:DURATION=([0-9.]+):([0-9.]+):([0-9.]+)/);
13
+ if (!webmDuration) {
14
+ return null;
15
+ }
16
+ const [, hours, minutes, seconds] = webmDuration;
17
+ const hoursAsNumber = Number(hours);
18
+ if (Number.isNaN(hoursAsNumber)) {
19
+ return null;
20
+ }
21
+ const minutesAsNumber = Number(minutes);
22
+ if (Number.isNaN(minutesAsNumber)) {
23
+ return null;
24
+ }
25
+ const secondsAsNumber = Number(seconds);
26
+ if (Number.isNaN(secondsAsNumber)) {
27
+ return null;
28
+ }
29
+ return secondsAsNumber + minutesAsNumber * 60 + hoursAsNumber * 3600;
30
+ };
31
+ const parseVideoStreamDuration = (stdout) => {
32
+ const duration = stdout.match(/duration=([0-9.]+)/);
33
+ const alternativeDuration = parseAlternativeDuration(stdout);
34
+ const fps = stdout.match(/r_frame_rate=([0-9.]+)\/([0-9.]+)/);
35
+ const result = {
36
+ duration: duration ? parseFloat(duration[1]) : alternativeDuration,
37
+ fps: fps ? parseInt(fps[1], 10) / parseInt(fps[2], 10) : null,
38
+ };
39
+ return result;
40
+ };
41
+ exports.parseVideoStreamDuration = parseVideoStreamDuration;
42
+ async function getVideoStreamDurationwithoutCache({ src, ffprobeExecutable, remotionRoot, }) {
43
+ const args = [
44
+ ['-v', 'error'],
45
+ ['-select_streams', 'v:0'],
46
+ ['-show_entries', 'stream'],
47
+ [src],
48
+ ]
49
+ .reduce((acc, val) => acc.concat(val), [])
50
+ .filter(Boolean);
51
+ const task = await (0, execa_1.default)(await (0, ffmpeg_flags_1.getExecutableBinary)(ffprobeExecutable, remotionRoot, 'ffprobe'), args);
52
+ const result = (0, exports.parseVideoStreamDuration)(task.stdout);
53
+ return result;
54
+ }
55
+ exports.getVideoStreamDurationwithoutCache = getVideoStreamDurationwithoutCache;
56
+ async function getVideoStreamDurationUnlimited(downloadMap, src, ffprobeExecutable, remotionRoot) {
57
+ if (downloadMap.videoDurationResultCache[src]) {
58
+ return downloadMap.videoDurationResultCache[src];
59
+ }
60
+ const result = await getVideoStreamDurationwithoutCache({
61
+ src,
62
+ ffprobeExecutable,
63
+ remotionRoot,
64
+ });
65
+ downloadMap.videoDurationResultCache[src] = result;
66
+ return result;
67
+ }
68
+ const getVideoStreamDuration = (downloadMap, src, ffprobeExecutable, remotionRoot) => {
69
+ return limit(() => getVideoStreamDurationUnlimited(downloadMap, src, ffprobeExecutable, remotionRoot));
70
+ };
71
+ exports.getVideoStreamDuration = getVideoStreamDuration;
File without changes
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.readFile = void 0;
7
7
  const http_1 = __importDefault(require("http"));
8
8
  const https_1 = __importDefault(require("https"));
9
+ const redirect_status_codes_1 = require("../redirect-status-codes");
9
10
  const getClient = (url) => {
10
11
  if (url.startsWith('https://')) {
11
12
  return https_1.default.get;
@@ -29,7 +30,7 @@ const readFile = async (url, redirectsSoFar = 0) => {
29
30
  throw new Error(`Too many redirects while downloading ${url}`);
30
31
  }
31
32
  const file = await readFileWithoutRedirect(url);
32
- if (file.statusCode === 302 || file.statusCode === 301) {
33
+ if (redirect_status_codes_1.redirectStatusCodes.includes(file.statusCode)) {
33
34
  if (!file.headers.location) {
34
35
  throw new Error(`Received a status code ${file.statusCode} but no "Location" header while calling ${file.headers.location}`);
35
36
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- import { TAsset } from 'remotion';
1
+ import type { TAsset } from 'remotion';
2
2
  export declare type UnsafeAsset = Omit<TAsset, 'frame' | 'id' | 'volume' | 'mediaFrame'> & {
3
3
  startInVideo: number;
4
4
  duration: number | null;
@@ -6,6 +6,7 @@ export declare type UnsafeAsset = Omit<TAsset, 'frame' | 'id' | 'volume' | 'medi
6
6
  volume: number[];
7
7
  id: string;
8
8
  playbackRate: number;
9
+ allowAmplificationDuringRender: boolean;
9
10
  };
10
11
  export declare type AssetVolume = number | number[];
11
12
  export declare type MediaAsset = Omit<UnsafeAsset, 'duration' | 'volume'> & {
File without changes
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Copyright 2017 Google Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { Page } from './BrowserPage';
17
+ import type { Connection } from './Connection';
18
+ import { EventEmitter } from './EventEmitter';
19
+ import type { Viewport } from './PuppeteerViewport';
20
+ import { Target } from './Target';
21
+ declare type BrowserCloseCallback = () => Promise<void> | void;
22
+ interface WaitForTargetOptions {
23
+ timeout?: number;
24
+ }
25
+ export declare const enum BrowserEmittedEvents {
26
+ TargetChanged = "targetchanged",
27
+ TargetCreated = "targetcreated",
28
+ Closed = "closed",
29
+ ClosedSilent = "closed-silent"
30
+ }
31
+ export declare class Browser extends EventEmitter {
32
+ #private;
33
+ static _create({ connection, contextIds, defaultViewport, closeCallback, }: {
34
+ connection: Connection;
35
+ contextIds: string[];
36
+ defaultViewport: Viewport;
37
+ closeCallback?: BrowserCloseCallback;
38
+ }): Promise<Browser>;
39
+ connection: Connection;
40
+ get _targets(): Map<string, Target>;
41
+ constructor(connection: Connection, contextIds: string[], defaultViewport: Viewport, closeCallback?: BrowserCloseCallback);
42
+ browserContexts(): BrowserContext[];
43
+ newPage(): Promise<Page>;
44
+ _createPageInContext(contextId?: string): Promise<Page>;
45
+ targets(): Target[];
46
+ waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: WaitForTargetOptions): Promise<Target>;
47
+ pages(): Promise<Page[]>;
48
+ close(silent: boolean): Promise<void>;
49
+ disconnect(): void;
50
+ }
51
+ export declare class BrowserContext extends EventEmitter {
52
+ #private;
53
+ constructor(browser: Browser, contextId?: string);
54
+ targets(): Target[];
55
+ waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: {
56
+ timeout?: number;
57
+ }): Promise<Target>;
58
+ pages(): Promise<Page[]>;
59
+ newPage(): Promise<Page>;
60
+ browser(): Browser;
61
+ }
62
+ export {};
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2017 Google Inc. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
18
+ if (kind === "m") throw new TypeError("Private method is not writable");
19
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
20
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
21
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
22
+ };
23
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
24
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
25
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
26
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
27
+ };
28
+ var _Browser_instances, _Browser_defaultViewport, _Browser_closeCallback, _Browser_defaultContext, _Browser_contexts, _Browser_targets, _Browser_targetCreated, _Browser_targetDestroyed, _Browser_targetInfoChanged, _BrowserContext_browser, _BrowserContext_id;
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.BrowserContext = exports.Browser = void 0;
31
+ const assert_1 = require("./assert");
32
+ const EventEmitter_1 = require("./EventEmitter");
33
+ const Target_1 = require("./Target");
34
+ const util_1 = require("./util");
35
+ class Browser extends EventEmitter_1.EventEmitter {
36
+ // eslint-disable-next-line max-params
37
+ constructor(connection, contextIds, defaultViewport, closeCallback) {
38
+ super();
39
+ _Browser_instances.add(this);
40
+ _Browser_defaultViewport.set(this, void 0);
41
+ _Browser_closeCallback.set(this, void 0);
42
+ _Browser_defaultContext.set(this, void 0);
43
+ _Browser_contexts.set(this, void 0);
44
+ _Browser_targets.set(this, void 0);
45
+ __classPrivateFieldSet(this, _Browser_defaultViewport, defaultViewport, "f");
46
+ this.connection = connection;
47
+ __classPrivateFieldSet(this, _Browser_closeCallback, closeCallback ||
48
+ function () {
49
+ return undefined;
50
+ }, "f");
51
+ __classPrivateFieldSet(this, _Browser_defaultContext, new BrowserContext(this), "f");
52
+ __classPrivateFieldSet(this, _Browser_contexts, new Map(), "f");
53
+ for (const contextId of contextIds) {
54
+ __classPrivateFieldGet(this, _Browser_contexts, "f").set(contextId, new BrowserContext(this, contextId));
55
+ }
56
+ __classPrivateFieldSet(this, _Browser_targets, new Map(), "f");
57
+ this.connection.on('Target.targetCreated', __classPrivateFieldGet(this, _Browser_instances, "m", _Browser_targetCreated).bind(this));
58
+ this.connection.on('Target.targetDestroyed', __classPrivateFieldGet(this, _Browser_instances, "m", _Browser_targetDestroyed).bind(this));
59
+ this.connection.on('Target.targetInfoChanged', __classPrivateFieldGet(this, _Browser_instances, "m", _Browser_targetInfoChanged).bind(this));
60
+ }
61
+ static async _create({ connection, contextIds, defaultViewport, closeCallback, }) {
62
+ const browser = new Browser(connection, contextIds, defaultViewport, closeCallback);
63
+ await connection.send('Target.setDiscoverTargets', { discover: true });
64
+ return browser;
65
+ }
66
+ get _targets() {
67
+ return __classPrivateFieldGet(this, _Browser_targets, "f");
68
+ }
69
+ browserContexts() {
70
+ return [__classPrivateFieldGet(this, _Browser_defaultContext, "f"), ...Array.from(__classPrivateFieldGet(this, _Browser_contexts, "f").values())];
71
+ }
72
+ newPage() {
73
+ return __classPrivateFieldGet(this, _Browser_defaultContext, "f").newPage();
74
+ }
75
+ async _createPageInContext(contextId) {
76
+ const { targetId } = await this.connection.send('Target.createTarget', {
77
+ url: 'about:blank',
78
+ browserContextId: contextId || undefined,
79
+ });
80
+ const target = __classPrivateFieldGet(this, _Browser_targets, "f").get(targetId);
81
+ if (!target) {
82
+ throw new Error(`Missing target for page (id = ${targetId})`);
83
+ }
84
+ const initialized = await target._initializedPromise;
85
+ if (!initialized) {
86
+ throw new Error(`Failed to create target for page (id = ${targetId})`);
87
+ }
88
+ const page = await target.page();
89
+ if (!page) {
90
+ throw new Error(`Failed to create a page for context (id = ${contextId})`);
91
+ }
92
+ return page;
93
+ }
94
+ targets() {
95
+ return Array.from(__classPrivateFieldGet(this, _Browser_targets, "f").values()).filter((target) => {
96
+ return target._isInitialized;
97
+ });
98
+ }
99
+ async waitForTarget(predicate, options = {}) {
100
+ const { timeout = 30000 } = options;
101
+ let resolve;
102
+ let isResolved = false;
103
+ const targetPromise = new Promise((x) => {
104
+ resolve = x;
105
+ });
106
+ this.on("targetcreated" /* BrowserEmittedEvents.TargetCreated */, check);
107
+ this.on("targetchanged" /* BrowserEmittedEvents.TargetChanged */, check);
108
+ try {
109
+ if (!timeout) {
110
+ return await targetPromise;
111
+ }
112
+ this.targets().forEach(check);
113
+ return await (0, util_1.waitWithTimeout)(targetPromise, 'target', timeout, this);
114
+ }
115
+ finally {
116
+ this.off("targetcreated" /* BrowserEmittedEvents.TargetCreated */, check);
117
+ this.off("targetchanged" /* BrowserEmittedEvents.TargetChanged */, check);
118
+ }
119
+ async function check(target) {
120
+ if ((await predicate(target)) && !isResolved) {
121
+ isResolved = true;
122
+ resolve(target);
123
+ }
124
+ }
125
+ }
126
+ async pages() {
127
+ const contextPages = await Promise.all(this.browserContexts().map((context) => {
128
+ return context.pages();
129
+ }));
130
+ // Flatten array.
131
+ return contextPages.reduce((acc, x) => {
132
+ return acc.concat(x);
133
+ }, []);
134
+ }
135
+ async close(silent) {
136
+ await __classPrivateFieldGet(this, _Browser_closeCallback, "f").call(null);
137
+ (await this.pages()).forEach((page) => {
138
+ page.emit("disposed" /* PageEmittedEvents.Disposed */);
139
+ page.closed = true;
140
+ });
141
+ this.disconnect();
142
+ this.emit(silent ? "closed-silent" /* BrowserEmittedEvents.ClosedSilent */ : "closed" /* BrowserEmittedEvents.Closed */);
143
+ }
144
+ disconnect() {
145
+ this.connection.dispose();
146
+ }
147
+ }
148
+ exports.Browser = Browser;
149
+ _Browser_defaultViewport = new WeakMap(), _Browser_closeCallback = new WeakMap(), _Browser_defaultContext = new WeakMap(), _Browser_contexts = new WeakMap(), _Browser_targets = new WeakMap(), _Browser_instances = new WeakSet(), _Browser_targetCreated = async function _Browser_targetCreated(event) {
150
+ var _a;
151
+ const { targetInfo } = event;
152
+ const { browserContextId } = targetInfo;
153
+ const context = browserContextId && __classPrivateFieldGet(this, _Browser_contexts, "f").has(browserContextId)
154
+ ? __classPrivateFieldGet(this, _Browser_contexts, "f").get(browserContextId)
155
+ : __classPrivateFieldGet(this, _Browser_defaultContext, "f");
156
+ if (!context) {
157
+ throw new Error('Missing browser context');
158
+ }
159
+ const target = new Target_1.Target(targetInfo, context, () => {
160
+ return this.connection.createSession(targetInfo);
161
+ }, (_a = __classPrivateFieldGet(this, _Browser_defaultViewport, "f")) !== null && _a !== void 0 ? _a : null);
162
+ (0, assert_1.assert)(!__classPrivateFieldGet(this, _Browser_targets, "f").has(event.targetInfo.targetId), 'Target should not exist before targetCreated');
163
+ __classPrivateFieldGet(this, _Browser_targets, "f").set(event.targetInfo.targetId, target);
164
+ if (await target._initializedPromise) {
165
+ this.emit("targetcreated" /* BrowserEmittedEvents.TargetCreated */, target);
166
+ }
167
+ }, _Browser_targetDestroyed = function _Browser_targetDestroyed(event) {
168
+ const target = __classPrivateFieldGet(this, _Browser_targets, "f").get(event.targetId);
169
+ if (!target) {
170
+ throw new Error(`Missing target in _targetDestroyed (id = ${event.targetId})`);
171
+ }
172
+ target._initializedCallback(false);
173
+ __classPrivateFieldGet(this, _Browser_targets, "f").delete(event.targetId);
174
+ target._closedCallback();
175
+ }, _Browser_targetInfoChanged = function _Browser_targetInfoChanged(event) {
176
+ const target = __classPrivateFieldGet(this, _Browser_targets, "f").get(event.targetInfo.targetId);
177
+ if (!target) {
178
+ throw new Error(`Missing target in targetInfoChanged (id = ${event.targetInfo.targetId})`);
179
+ }
180
+ const previousURL = target.url();
181
+ const wasInitialized = target._isInitialized;
182
+ target._targetInfoChanged(event.targetInfo);
183
+ if (wasInitialized && previousURL !== target.url()) {
184
+ this.emit("targetchanged" /* BrowserEmittedEvents.TargetChanged */, target);
185
+ }
186
+ };
187
+ class BrowserContext extends EventEmitter_1.EventEmitter {
188
+ constructor(browser, contextId) {
189
+ super();
190
+ _BrowserContext_browser.set(this, void 0);
191
+ _BrowserContext_id.set(this, void 0);
192
+ __classPrivateFieldSet(this, _BrowserContext_browser, browser, "f");
193
+ __classPrivateFieldSet(this, _BrowserContext_id, contextId, "f");
194
+ }
195
+ targets() {
196
+ return __classPrivateFieldGet(this, _BrowserContext_browser, "f").targets().filter((target) => {
197
+ return target.browserContext() === this;
198
+ });
199
+ }
200
+ waitForTarget(predicate, options = {}) {
201
+ return __classPrivateFieldGet(this, _BrowserContext_browser, "f").waitForTarget((target) => {
202
+ return target.browserContext() === this && predicate(target);
203
+ }, options);
204
+ }
205
+ async pages() {
206
+ const pages = await Promise.all(this.targets()
207
+ .filter((target) => target.type() === 'page')
208
+ .map((target) => target.page()));
209
+ return pages.filter((page) => {
210
+ return Boolean(page);
211
+ });
212
+ }
213
+ newPage() {
214
+ return __classPrivateFieldGet(this, _BrowserContext_browser, "f")._createPageInContext(__classPrivateFieldGet(this, _BrowserContext_id, "f"));
215
+ }
216
+ browser() {
217
+ return __classPrivateFieldGet(this, _BrowserContext_browser, "f");
218
+ }
219
+ }
220
+ exports.BrowserContext = BrowserContext;
221
+ _BrowserContext_browser = new WeakMap(), _BrowserContext_id = new WeakMap();
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright 2020 Google Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { Viewport } from './PuppeteerViewport';
17
+ export interface BrowserConnectOptions {
18
+ defaultViewport: Viewport;
19
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2020 Google Inc. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });