@remotion/renderer 3.0.23 → 3.0.26

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 (333) hide show
  1. package/dist/abort.d.ts +7 -0
  2. package/dist/abort.js +20 -0
  3. package/dist/assets/download-and-map-assets-to-file.d.ts +21 -8
  4. package/dist/assets/download-and-map-assets-to-file.js +68 -42
  5. package/dist/assets/download-file.d.ts +10 -5
  6. package/dist/assets/download-file.js +18 -5
  7. package/dist/assets/ffmpeg-volume-expression.d.ts +1 -2
  8. package/dist/assets/ffmpeg-volume-expression.js +2 -3
  9. package/dist/browser/Browser.d.ts +10 -159
  10. package/dist/browser/Browser.js +7 -191
  11. package/dist/browser/BrowserConnector.d.ts +1 -8
  12. package/dist/browser/BrowserConnector.js +0 -32
  13. package/dist/browser/BrowserFetcher.d.ts +1 -1
  14. package/dist/browser/BrowserFetcher.js +8 -10
  15. package/dist/browser/BrowserRunner.d.ts +2 -2
  16. package/dist/browser/BrowserRunner.js +1 -1
  17. package/dist/browser/Connection.d.ts +4 -11
  18. package/dist/browser/Connection.js +5 -25
  19. package/dist/browser/ConsoleMessage.d.ts +4 -28
  20. package/dist/browser/ConsoleMessage.js +5 -32
  21. package/dist/browser/DOMWorld.d.ts +9 -7
  22. package/dist/browser/DOMWorld.js +12 -20
  23. package/dist/browser/EvalTypes.d.ts +1 -1
  24. package/dist/browser/EventEmitter.d.ts +1 -48
  25. package/dist/browser/EventEmitter.js +0 -49
  26. package/dist/browser/ExecutionContext.d.ts +7 -8
  27. package/dist/browser/ExecutionContext.js +0 -16
  28. package/dist/browser/FrameManager.d.ts +12 -15
  29. package/dist/browser/FrameManager.js +5 -21
  30. package/dist/browser/HTTPRequest.d.ts +4 -18
  31. package/dist/browser/HTTPRequest.js +3 -48
  32. package/dist/browser/HTTPResponse.d.ts +2 -81
  33. package/dist/browser/HTTPResponse.js +3 -173
  34. package/dist/browser/JSHandle.d.ts +4 -5
  35. package/dist/browser/JSHandle.js +0 -3
  36. package/dist/browser/LaunchOptions.d.ts +2 -81
  37. package/dist/browser/Launcher.d.ts +2 -2
  38. package/dist/browser/Launcher.js +21 -119
  39. package/dist/browser/LifecycleWatcher.d.ts +4 -4
  40. package/dist/browser/LifecycleWatcher.js +4 -17
  41. package/dist/browser/NetworkEventManager.d.ts +2 -4
  42. package/dist/browser/NetworkEventManager.js +0 -47
  43. package/dist/browser/NetworkManager.d.ts +1 -3
  44. package/dist/browser/NetworkManager.js +6 -42
  45. package/dist/browser/NodeWebSocketTransport.d.ts +8 -2
  46. package/dist/browser/NodeWebSocketTransport.js +1 -1
  47. package/dist/browser/{page.d.ts → Page.d.ts} +12 -16
  48. package/dist/browser/{page.js → Page.js} +20 -14
  49. package/dist/browser/PuppeteerNode.d.ts +7 -59
  50. package/dist/browser/PuppeteerNode.js +4 -66
  51. package/dist/browser/Target.d.ts +4 -4
  52. package/dist/browser/Target.js +1 -1
  53. package/dist/browser/assert.d.ts +0 -20
  54. package/dist/browser/assert.js +0 -20
  55. package/dist/browser/create-browser-fetcher.d.ts +1 -1
  56. package/dist/browser/create-browser-fetcher.js +4 -25
  57. package/dist/browser/util.d.ts +5 -4
  58. package/dist/browser/util.js +11 -3
  59. package/dist/browser-log.d.ts +1 -1
  60. package/dist/calculate-sar-dar-pixels.d.ts +9 -0
  61. package/dist/calculate-sar-dar-pixels.js +19 -0
  62. package/dist/cancel.d.ts +7 -0
  63. package/dist/cancel.js +25 -0
  64. package/dist/ensure-faststart.d.ts +1 -0
  65. package/dist/ensure-faststart.js +14 -0
  66. package/dist/error-handling/handle-javascript-exception.d.ts +1 -1
  67. package/dist/error-handling/handle-javascript-exception.js +2 -2
  68. package/dist/extract-frame-from-video.d.ts +2 -2
  69. package/dist/extract-frame-from-video.js +26 -14
  70. package/dist/faststart/atom.d.ts +35 -0
  71. package/dist/faststart/atom.js +138 -0
  72. package/dist/faststart/index.d.ts +0 -0
  73. package/dist/faststart/index.js +1 -0
  74. package/dist/faststart/options.d.ts +6 -0
  75. package/dist/faststart/options.js +2 -0
  76. package/dist/faststart/qt-faststart.d.ts +18 -0
  77. package/dist/faststart/qt-faststart.js +66 -0
  78. package/dist/faststart/update-chunk-offsets.d.ts +10 -0
  79. package/dist/faststart/update-chunk-offsets.js +114 -0
  80. package/dist/faststart/util.d.ts +9 -0
  81. package/dist/faststart/util.js +34 -0
  82. package/dist/get-browser-instance.d.ts +2 -1
  83. package/dist/get-compositions.d.ts +1 -1
  84. package/dist/get-compositions.js +3 -3
  85. package/dist/get-local-browser-executable.js +7 -5
  86. package/dist/get-port.js +5 -14
  87. package/dist/get-video-info.d.ts +8 -0
  88. package/dist/get-video-info.js +50 -0
  89. package/dist/index.d.ts +14 -6
  90. package/dist/index.js +3 -0
  91. package/dist/last-frame-from-video-cache.d.ts +3 -1
  92. package/dist/offthread/index.d.ts +0 -0
  93. package/dist/offthread/index.js +1 -0
  94. package/dist/offthread-video-server.js +2 -6
  95. package/dist/open-browser.d.ts +4 -2
  96. package/dist/open-browser.js +8 -8
  97. package/dist/prepare-server.js +5 -2
  98. package/dist/provide-screenshot.d.ts +4 -3
  99. package/dist/provide-screenshot.js +0 -1
  100. package/dist/puppeteer-evaluate.d.ts +1 -1
  101. package/dist/puppeteer-evaluate.js +3 -3
  102. package/dist/puppeteer-screenshot.d.ts +4 -2
  103. package/dist/puppeteer-screenshot.js +2 -4
  104. package/dist/render-frames.d.ts +2 -2
  105. package/dist/render-frames.js +50 -47
  106. package/dist/render-gif.d.ts +2 -0
  107. package/dist/render-gif.js +242 -0
  108. package/dist/render-media.d.ts +4 -3
  109. package/dist/render-media.js +8 -3
  110. package/dist/render-still.d.ts +1 -1
  111. package/dist/screenshot-dom-element.d.ts +6 -6
  112. package/dist/screenshot-dom-element.js +3 -6
  113. package/dist/screenshot-task.d.ts +3 -1
  114. package/dist/screenshot-task.js +3 -5
  115. package/dist/seek-to-frame.d.ts +2 -2
  116. package/dist/seek-to-frame.js +2 -2
  117. package/dist/set-props-and-env.d.ts +1 -1
  118. package/dist/set-props-and-env.js +3 -0
  119. package/dist/should-use-vp9-decoder.d.ts +0 -0
  120. package/dist/should-use-vp9-decoder.js +1 -0
  121. package/dist/stitch-frames-to-gif.d.ts +8 -0
  122. package/dist/stitch-frames-to-gif.js +128 -0
  123. package/dist/stitch-frames-to-video.d.ts +4 -3
  124. package/dist/stitch-frames-to-video.js +31 -13
  125. package/dist/stringify-ffmpeg-filter.d.ts +1 -1
  126. package/dist/stringify-ffmpeg-filter.js +9 -7
  127. package/dist/validate-offthreadvideo-image-format.d.ts +1 -0
  128. package/dist/validate-offthreadvideo-image-format.js +15 -0
  129. package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
  130. package/dist/wait-for-symbolication-error-to-be-done.js +34 -0
  131. package/package.json +9 -5
  132. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  133. package/dist/assets/calculate-asset-positions.js.map +0 -1
  134. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  135. package/dist/assets/calculate-atempo.js.map +0 -1
  136. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  137. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  138. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  139. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  140. package/dist/assets/download-file.d.ts.map +0 -1
  141. package/dist/assets/download-file.js.map +0 -1
  142. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  143. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  144. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  145. package/dist/assets/flatten-volume-array.js.map +0 -1
  146. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  147. package/dist/assets/get-audio-channels.js.map +0 -1
  148. package/dist/assets/read-file.d.ts.map +0 -1
  149. package/dist/assets/read-file.js.map +0 -1
  150. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  151. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  152. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  153. package/dist/assets/sanitize-filename.js.map +0 -1
  154. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  155. package/dist/assets/sanitize-filepath.js.map +0 -1
  156. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  157. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  158. package/dist/assets/types.d.ts.map +0 -1
  159. package/dist/assets/types.js.map +0 -1
  160. package/dist/browser/Accessibility.d.ts +0 -175
  161. package/dist/browser/Accessibility.js +0 -423
  162. package/dist/browser/AriaQueryHandler.d.ts +0 -20
  163. package/dist/browser/AriaQueryHandler.js +0 -108
  164. package/dist/browser/Coverage.d.ts +0 -180
  165. package/dist/browser/Coverage.js +0 -371
  166. package/dist/browser/Debug.d.ts +0 -19
  167. package/dist/browser/Debug.js +0 -42
  168. package/dist/browser/DeviceDescriptors.d.ts +0 -40
  169. package/dist/browser/DeviceDescriptors.js +0 -1407
  170. package/dist/browser/FileChooser.d.ts +0 -56
  171. package/dist/browser/FileChooser.js +0 -86
  172. package/dist/browser/Input.d.ts +0 -355
  173. package/dist/browser/Input.js +0 -592
  174. package/dist/browser/NetworkConditions.d.ts +0 -26
  175. package/dist/browser/NetworkConditions.js +0 -33
  176. package/dist/browser/PDFOptions.d.ts +0 -165
  177. package/dist/browser/PDFOptions.js +0 -34
  178. package/dist/browser/PipeTransport.d.ts +0 -10
  179. package/dist/browser/PipeTransport.js +0 -86
  180. package/dist/browser/Puppeteer.d.ts +0 -35
  181. package/dist/browser/Puppeteer.js +0 -17
  182. package/dist/browser/QueryHandler.d.ts +0 -64
  183. package/dist/browser/QueryHandler.js +0 -183
  184. package/dist/browser/SecurityDetails.d.ts +0 -55
  185. package/dist/browser/SecurityDetails.js +0 -95
  186. package/dist/browser/Tracing.d.ts +0 -45
  187. package/dist/browser/Tracing.js +0 -136
  188. package/dist/browser/USKeyboardLayout.d.ts +0 -39
  189. package/dist/browser/USKeyboardLayout.js +0 -406
  190. package/dist/browser/WebWorker.d.ts +0 -96
  191. package/dist/browser/WebWorker.js +0 -122
  192. package/dist/browser/dialog.d.ts +0 -70
  193. package/dist/browser/dialog.js +0 -114
  194. package/dist/browser/fetch.d.ts +0 -16
  195. package/dist/browser/fetch.js +0 -46
  196. package/dist/browser/find-up.d.ts +0 -4
  197. package/dist/browser/find-up.js +0 -85
  198. package/dist/browser/pkg-dir.d.ts +0 -3
  199. package/dist/browser/pkg-dir.js +0 -13
  200. package/dist/browser-log.d.ts.map +0 -1
  201. package/dist/browser-log.js.map +0 -1
  202. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  203. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  204. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  205. package/dist/can-use-parallel-encoding.js.map +0 -1
  206. package/dist/chunk.d.ts.map +0 -1
  207. package/dist/chunk.js.map +0 -1
  208. package/dist/combine-videos.d.ts.map +0 -1
  209. package/dist/combine-videos.js.map +0 -1
  210. package/dist/convert-to-pcm.d.ts.map +0 -1
  211. package/dist/convert-to-pcm.js.map +0 -1
  212. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  213. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  214. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  215. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  216. package/dist/create-silent-audio.d.ts.map +0 -1
  217. package/dist/create-silent-audio.js.map +0 -1
  218. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  219. package/dist/cycle-browser-tabs.js.map +0 -1
  220. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  221. package/dist/delay-render-embedded-stack.js.map +0 -1
  222. package/dist/delete-directory.d.ts.map +0 -1
  223. package/dist/delete-directory.js.map +0 -1
  224. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  225. package/dist/ensure-frames-in-order.js.map +0 -1
  226. package/dist/ensure-output-directory.d.ts.map +0 -1
  227. package/dist/ensure-output-directory.js.map +0 -1
  228. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  229. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  230. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  231. package/dist/error-handling/symbolicate-error.js.map +0 -1
  232. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  233. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  234. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  235. package/dist/ffmpeg-filter-file.js.map +0 -1
  236. package/dist/ffmpeg-flags.d.ts.map +0 -1
  237. package/dist/ffmpeg-flags.js.map +0 -1
  238. package/dist/get-audio-codec-name.d.ts.map +0 -1
  239. package/dist/get-audio-codec-name.js.map +0 -1
  240. package/dist/get-browser-instance.d.ts.map +0 -1
  241. package/dist/get-browser-instance.js.map +0 -1
  242. package/dist/get-codec-name.d.ts.map +0 -1
  243. package/dist/get-codec-name.js.map +0 -1
  244. package/dist/get-compositions.d.ts.map +0 -1
  245. package/dist/get-compositions.js.map +0 -1
  246. package/dist/get-concurrency.d.ts.map +0 -1
  247. package/dist/get-concurrency.js.map +0 -1
  248. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  249. package/dist/get-duration-from-frame-range.js.map +0 -1
  250. package/dist/get-extension-from-codec.d.ts.map +0 -1
  251. package/dist/get-extension-from-codec.js.map +0 -1
  252. package/dist/get-frame-to-render.d.ts.map +0 -1
  253. package/dist/get-frame-to-render.js.map +0 -1
  254. package/dist/get-local-browser-executable.d.ts.map +0 -1
  255. package/dist/get-local-browser-executable.js.map +0 -1
  256. package/dist/get-port.d.ts.map +0 -1
  257. package/dist/get-port.js.map +0 -1
  258. package/dist/get-prores-profile-name.d.ts.map +0 -1
  259. package/dist/get-prores-profile-name.js.map +0 -1
  260. package/dist/image-format.d.ts.map +0 -1
  261. package/dist/image-format.js.map +0 -1
  262. package/dist/index.d.ts.map +0 -1
  263. package/dist/index.js.map +0 -1
  264. package/dist/is-serve-url.d.ts.map +0 -1
  265. package/dist/is-serve-url.js.map +0 -1
  266. package/dist/legacy-webpack-config.d.ts.map +0 -1
  267. package/dist/legacy-webpack-config.js.map +0 -1
  268. package/dist/make-assets-download-dir.d.ts.map +0 -1
  269. package/dist/make-assets-download-dir.js.map +0 -1
  270. package/dist/merge-audio-track.d.ts.map +0 -1
  271. package/dist/merge-audio-track.js.map +0 -1
  272. package/dist/normalize-serve-url.d.ts.map +0 -1
  273. package/dist/normalize-serve-url.js.map +0 -1
  274. package/dist/open-browser.d.ts.map +0 -1
  275. package/dist/open-browser.js.map +0 -1
  276. package/dist/p-limit.d.ts.map +0 -1
  277. package/dist/p-limit.js.map +0 -1
  278. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  279. package/dist/parse-browser-error-stack.js.map +0 -1
  280. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  281. package/dist/parse-ffmpeg-progress.js.map +0 -1
  282. package/dist/pool.d.ts.map +0 -1
  283. package/dist/pool.js.map +0 -1
  284. package/dist/prepare-server.d.ts.map +0 -1
  285. package/dist/prepare-server.js.map +0 -1
  286. package/dist/preprocess-audio-track.d.ts.map +0 -1
  287. package/dist/preprocess-audio-track.js.map +0 -1
  288. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  289. package/dist/prespawn-ffmpeg.js.map +0 -1
  290. package/dist/provide-screenshot.d.ts.map +0 -1
  291. package/dist/provide-screenshot.js.map +0 -1
  292. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  293. package/dist/puppeteer-evaluate.js.map +0 -1
  294. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  295. package/dist/puppeteer-screenshot.js.map +0 -1
  296. package/dist/render-frames.d.ts.map +0 -1
  297. package/dist/render-frames.js.map +0 -1
  298. package/dist/render-media.d.ts.map +0 -1
  299. package/dist/render-media.js.map +0 -1
  300. package/dist/render-still.d.ts.map +0 -1
  301. package/dist/render-still.js.map +0 -1
  302. package/dist/resolve-asset-src.d.ts.map +0 -1
  303. package/dist/resolve-asset-src.js.map +0 -1
  304. package/dist/sample-rate.d.ts.map +0 -1
  305. package/dist/sample-rate.js.map +0 -1
  306. package/dist/screenshot-dom-element.d.ts.map +0 -1
  307. package/dist/screenshot-dom-element.js.map +0 -1
  308. package/dist/screenshot-task.d.ts.map +0 -1
  309. package/dist/screenshot-task.js.map +0 -1
  310. package/dist/seek-to-frame.d.ts.map +0 -1
  311. package/dist/seek-to-frame.js.map +0 -1
  312. package/dist/serve-static.d.ts.map +0 -1
  313. package/dist/serve-static.js.map +0 -1
  314. package/dist/set-props-and-env.d.ts.map +0 -1
  315. package/dist/set-props-and-env.js.map +0 -1
  316. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  317. package/dist/stitch-frames-to-video.js.map +0 -1
  318. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  319. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  320. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  321. package/dist/symbolicate-stacktrace.js.map +0 -1
  322. package/dist/tmp-dir.d.ts.map +0 -1
  323. package/dist/tmp-dir.js.map +0 -1
  324. package/dist/types.d.ts.map +0 -1
  325. package/dist/types.js.map +0 -1
  326. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  327. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  328. package/dist/validate-ffmpeg.d.ts.map +0 -1
  329. package/dist/validate-ffmpeg.js.map +0 -1
  330. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  331. package/dist/validate-puppeteer-timeout.js.map +0 -1
  332. package/dist/validate-scale.d.ts.map +0 -1
  333. package/dist/validate-scale.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ declare type Callback = () => void;
2
+ export declare type CancelSignal = (callback: Callback) => void;
3
+ export declare const getCancelSignal: () => {
4
+ cancelSignal: CancelSignal;
5
+ cancel: () => void;
6
+ };
7
+ export {};
package/dist/abort.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCancelSignal = void 0;
4
+ const getCancelSignal = () => {
5
+ const callbacks = [];
6
+ let cancelled = false;
7
+ return {
8
+ cancelSignal: (callback) => callbacks.push(callback),
9
+ cancel: () => {
10
+ if (cancelled) {
11
+ return;
12
+ }
13
+ callbacks.forEach((cb) => {
14
+ cb();
15
+ });
16
+ cancelled = true;
17
+ },
18
+ };
19
+ };
20
+ exports.getCancelSignal = getCancelSignal;
@@ -1,20 +1,33 @@
1
1
  import type { TAsset } from 'remotion';
2
2
  export declare type RenderMediaOnDownload = (src: string) => ((progress: {
3
- percent: number;
3
+ percent: number | null;
4
+ downloaded: number;
5
+ totalSize: number | null;
4
6
  }) => void) | undefined | void;
5
- export declare const waitForAssetToBeDownloaded: (src: string, to: string) => Promise<void>;
7
+ export declare const waitForAssetToBeDownloaded: ({ src, downloadDir, }: {
8
+ src: string;
9
+ downloadDir: string;
10
+ }) => Promise<string>;
11
+ export declare const downloadAsset: ({ src, onDownload, downloadDir, }: {
12
+ src: string;
13
+ onDownload: RenderMediaOnDownload;
14
+ downloadDir: string;
15
+ }) => Promise<string>;
6
16
  export declare const markAllAssetsAsDownloaded: () => void;
7
- export declare const getSanitizedFilenameForAssetUrl: ({ src, downloadDir, }: {
17
+ export declare const getFilename: ({ contentDisposition, src, }: {
18
+ src: string;
19
+ contentDisposition: string | null;
20
+ }) => {
21
+ pathname: string;
22
+ search: string;
23
+ };
24
+ export declare const getSanitizedFilenameForAssetUrl: ({ src, downloadDir, contentDisposition, }: {
8
25
  src: string;
9
26
  downloadDir: string;
27
+ contentDisposition: string | null;
10
28
  }) => string;
11
29
  export declare const downloadAndMapAssetsToFileUrl: ({ asset, downloadDir, onDownload, }: {
12
30
  asset: TAsset;
13
31
  downloadDir: string;
14
32
  onDownload: RenderMediaOnDownload;
15
33
  }) => Promise<TAsset>;
16
- export declare const startDownloadForSrc: ({ src, downloadDir, onDownload, }: {
17
- src: string;
18
- downloadDir: string;
19
- onDownload: RenderMediaOnDownload;
20
- }) => Promise<string>;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.startDownloadForSrc = exports.downloadAndMapAssetsToFileUrl = exports.getSanitizedFilenameForAssetUrl = exports.markAllAssetsAsDownloaded = exports.waitForAssetToBeDownloaded = void 0;
6
+ exports.downloadAndMapAssetsToFileUrl = exports.getSanitizedFilenameForAssetUrl = exports.getFilename = exports.markAllAssetsAsDownloaded = exports.downloadAsset = exports.waitForAssetToBeDownloaded = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const remotion_1 = require("remotion");
@@ -13,38 +13,41 @@ const sanitize_filepath_1 = require("./sanitize-filepath");
13
13
  const isDownloadingMap = {};
14
14
  const hasBeenDownloadedMap = {};
15
15
  const listeners = {};
16
- const waitForAssetToBeDownloaded = (src, to) => {
17
- var _a;
18
- if ((_a = hasBeenDownloadedMap[src]) === null || _a === void 0 ? void 0 : _a[to]) {
19
- return Promise.resolve();
16
+ const waitForAssetToBeDownloaded = ({ src, downloadDir, }) => {
17
+ var _a, _b;
18
+ if ((_a = hasBeenDownloadedMap[src]) === null || _a === void 0 ? void 0 : _a[downloadDir]) {
19
+ return Promise.resolve((_b = hasBeenDownloadedMap[src]) === null || _b === void 0 ? void 0 : _b[downloadDir]);
20
20
  }
21
21
  if (!listeners[src]) {
22
22
  listeners[src] = {};
23
23
  }
24
- if (!listeners[src][to]) {
25
- listeners[src][to] = [];
24
+ if (!listeners[src][downloadDir]) {
25
+ listeners[src][downloadDir] = [];
26
26
  }
27
27
  return new Promise((resolve) => {
28
- listeners[src][to].push(() => resolve());
28
+ listeners[src][downloadDir].push(() => {
29
+ var _a;
30
+ resolve((_a = hasBeenDownloadedMap[src]) === null || _a === void 0 ? void 0 : _a[downloadDir]);
31
+ });
29
32
  });
30
33
  };
31
34
  exports.waitForAssetToBeDownloaded = waitForAssetToBeDownloaded;
32
- const notifyAssetIsDownloaded = (src, to) => {
35
+ const notifyAssetIsDownloaded = ({ src, downloadDir, to, }) => {
33
36
  if (!listeners[src]) {
34
37
  listeners[src] = {};
35
38
  }
36
- if (!listeners[src][to]) {
37
- listeners[src][to] = [];
39
+ if (!listeners[src][downloadDir]) {
40
+ listeners[src][downloadDir] = [];
38
41
  }
39
- listeners[src][to].forEach((fn) => fn());
42
+ listeners[src][downloadDir].forEach((fn) => fn());
40
43
  if (!isDownloadingMap[src]) {
41
44
  isDownloadingMap[src] = {};
42
45
  }
43
- isDownloadingMap[src][to] = false;
46
+ isDownloadingMap[src][downloadDir] = true;
44
47
  if (!hasBeenDownloadedMap[src]) {
45
48
  hasBeenDownloadedMap[src] = {};
46
49
  }
47
- hasBeenDownloadedMap[src][to] = true;
50
+ hasBeenDownloadedMap[src][downloadDir] = to;
48
51
  };
49
52
  const validateMimeType = (mimeType, src) => {
50
53
  if (!mimeType.includes('/')) {
@@ -85,21 +88,29 @@ function validateBufferEncoding(potentialEncoding, dataUrl) {
85
88
  throw new TypeError(errMessage);
86
89
  }
87
90
  }
88
- const downloadAsset = async (src, to, onDownload) => {
89
- var _a, _b;
90
- if ((_a = hasBeenDownloadedMap[src]) === null || _a === void 0 ? void 0 : _a[to]) {
91
- return;
91
+ const downloadAsset = async ({ src, onDownload, downloadDir, }) => {
92
+ var _a, _b, _c;
93
+ if (remotion_1.Internals.AssetCompression.isAssetCompressed(src)) {
94
+ return src;
95
+ }
96
+ if ((_a = hasBeenDownloadedMap[src]) === null || _a === void 0 ? void 0 : _a[downloadDir]) {
97
+ return (_b = hasBeenDownloadedMap[src]) === null || _b === void 0 ? void 0 : _b[downloadDir];
92
98
  }
93
- if ((_b = isDownloadingMap[src]) === null || _b === void 0 ? void 0 : _b[to]) {
94
- return (0, exports.waitForAssetToBeDownloaded)(src, to);
99
+ if ((_c = isDownloadingMap[src]) === null || _c === void 0 ? void 0 : _c[downloadDir]) {
100
+ return (0, exports.waitForAssetToBeDownloaded)({ src, downloadDir });
95
101
  }
96
102
  if (!isDownloadingMap[src]) {
97
103
  isDownloadingMap[src] = {};
98
104
  }
99
- isDownloadingMap[src][to] = true;
105
+ isDownloadingMap[src][downloadDir] = true;
100
106
  const onProgress = onDownload(src);
101
- (0, ensure_output_directory_1.ensureOutputDirectory)(to);
102
107
  if (src.startsWith('data:')) {
108
+ const output = (0, exports.getSanitizedFilenameForAssetUrl)({
109
+ contentDisposition: null,
110
+ downloadDir,
111
+ src,
112
+ });
113
+ (0, ensure_output_directory_1.ensureOutputDirectory)(output);
103
114
  const [assetDetails, assetData] = src.substring('data:'.length).split(',');
104
115
  if (!assetDetails.includes(';')) {
105
116
  const errMessage = [
@@ -114,17 +125,21 @@ const downloadAsset = async (src, to, onDownload) => {
114
125
  validateMimeType(mimeType, src);
115
126
  validateBufferEncoding(encoding, src);
116
127
  const buff = Buffer.from(assetData, encoding);
117
- await fs_1.default.promises.writeFile(to, buff);
118
- notifyAssetIsDownloaded(src, to);
119
- return;
128
+ await fs_1.default.promises.writeFile(output, buff);
129
+ notifyAssetIsDownloaded({ src, downloadDir, to: output });
130
+ return output;
120
131
  }
121
- await (0, download_file_1.downloadFile)(src, to, ({ progress }) => {
122
- onProgress === null || onProgress === void 0 ? void 0 : onProgress({
123
- percent: progress,
124
- });
132
+ const { to } = await (0, download_file_1.downloadFile)({
133
+ url: src,
134
+ onProgress: (progress) => {
135
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress(progress);
136
+ },
137
+ to: (contentDisposition) => (0, exports.getSanitizedFilenameForAssetUrl)({ contentDisposition, downloadDir, src }),
125
138
  });
126
- notifyAssetIsDownloaded(src, to);
139
+ notifyAssetIsDownloaded({ src, downloadDir, to });
140
+ return to;
127
141
  };
142
+ exports.downloadAsset = downloadAsset;
128
143
  const markAllAssetsAsDownloaded = () => {
129
144
  Object.keys(hasBeenDownloadedMap).forEach((key) => {
130
145
  delete hasBeenDownloadedMap[key];
@@ -134,21 +149,40 @@ const markAllAssetsAsDownloaded = () => {
134
149
  });
135
150
  };
136
151
  exports.markAllAssetsAsDownloaded = markAllAssetsAsDownloaded;
137
- const getSanitizedFilenameForAssetUrl = ({ src, downloadDir, }) => {
152
+ const getFilename = ({ contentDisposition, src, }) => {
153
+ const filenameProbe = 'filename=';
154
+ if (contentDisposition === null || contentDisposition === void 0 ? void 0 : contentDisposition.includes(filenameProbe)) {
155
+ const start = contentDisposition.indexOf(filenameProbe);
156
+ const onlyFromFileName = contentDisposition.substring(start + filenameProbe.length);
157
+ const hasSemi = onlyFromFileName.indexOf(';');
158
+ if (hasSemi === -1) {
159
+ return { pathname: onlyFromFileName.trim(), search: '' };
160
+ }
161
+ return {
162
+ search: '',
163
+ pathname: onlyFromFileName.substring(0, hasSemi).trim(),
164
+ };
165
+ }
166
+ const { pathname, search } = new URL(src);
167
+ return { pathname, search };
168
+ };
169
+ exports.getFilename = getFilename;
170
+ const getSanitizedFilenameForAssetUrl = ({ src, downloadDir, contentDisposition, }) => {
138
171
  if (remotion_1.Internals.AssetCompression.isAssetCompressed(src)) {
139
172
  return src;
140
173
  }
141
- const { pathname, search } = new URL(src);
174
+ const { pathname, search } = (0, exports.getFilename)({ contentDisposition, src });
142
175
  const split = pathname.split('.');
143
176
  const fileExtension = split.length > 1 && split[split.length - 1]
144
177
  ? `.${split[split.length - 1]}`
145
178
  : '';
146
179
  const hashedFileName = String((0, remotion_1.random)(`${pathname}${search}`)).replace('0.', '');
147
- return path_1.default.join(downloadDir, (0, sanitize_filepath_1.sanitizeFilePath)(hashedFileName + fileExtension));
180
+ const filename = hashedFileName + fileExtension;
181
+ return path_1.default.join(downloadDir, (0, sanitize_filepath_1.sanitizeFilePath)(filename));
148
182
  };
149
183
  exports.getSanitizedFilenameForAssetUrl = getSanitizedFilenameForAssetUrl;
150
184
  const downloadAndMapAssetsToFileUrl = async ({ asset, downloadDir, onDownload, }) => {
151
- const newSrc = await (0, exports.startDownloadForSrc)({
185
+ const newSrc = await (0, exports.downloadAsset)({
152
186
  src: asset.src,
153
187
  downloadDir,
154
188
  onDownload,
@@ -159,11 +193,3 @@ const downloadAndMapAssetsToFileUrl = async ({ asset, downloadDir, onDownload, }
159
193
  };
160
194
  };
161
195
  exports.downloadAndMapAssetsToFileUrl = downloadAndMapAssetsToFileUrl;
162
- const startDownloadForSrc = async ({ src, downloadDir, onDownload, }) => {
163
- const newSrc = (0, exports.getSanitizedFilenameForAssetUrl)({ downloadDir, src });
164
- if (!remotion_1.Internals.AssetCompression.isAssetCompressed(newSrc)) {
165
- await downloadAsset(src, newSrc, onDownload);
166
- }
167
- return newSrc;
168
- };
169
- exports.startDownloadForSrc = startDownloadForSrc;
@@ -1,7 +1,12 @@
1
- export declare const downloadFile: (url: string, to: string, onProgress: ((progress: {
2
- progress: number;
3
- downloaded: number;
4
- totalSize: number;
5
- }) => void) | undefined) => Promise<{
1
+ export declare const downloadFile: ({ onProgress, url, to: toFn, }: {
2
+ url: string;
3
+ to: (contentDisposition: string | null) => string;
4
+ onProgress: ((progress: {
5
+ percent: number | null;
6
+ downloaded: number;
7
+ totalSize: number | null;
8
+ }) => void) | undefined;
9
+ }) => Promise<{
6
10
  sizeInBytes: number;
11
+ to: string;
7
12
  }>;
@@ -2,25 +2,38 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.downloadFile = void 0;
4
4
  const fs_1 = require("fs");
5
+ const ensure_output_directory_1 = require("../ensure-output-directory");
5
6
  const read_file_1 = require("./read-file");
6
- const downloadFile = (url, to, onProgress) => {
7
+ const downloadFile = ({ onProgress, url, to: toFn, }) => {
7
8
  return new Promise((resolve, reject) => {
8
9
  (0, read_file_1.readFile)(url)
9
10
  .then((res) => {
10
- const totalSize = Number(res.headers['content-length']);
11
+ var _a;
12
+ const contentDisposition = (_a = res.headers['content-disposition']) !== null && _a !== void 0 ? _a : null;
13
+ const to = toFn(contentDisposition);
14
+ (0, ensure_output_directory_1.ensureOutputDirectory)(to);
15
+ const sizeHeader = res.headers['content-length'];
16
+ const totalSize = typeof sizeHeader === 'undefined' ? null : Number(sizeHeader);
11
17
  const writeStream = (0, fs_1.createWriteStream)(to);
18
+ let downloaded = 0;
12
19
  // Listen to 'close' event instead of more
13
20
  // concise method to avoid this problem
14
21
  // https://github.com/remotion-dev/remotion/issues/384#issuecomment-844398183
15
- writeStream.on('close', () => resolve({ sizeInBytes: totalSize }));
22
+ writeStream.on('close', () => {
23
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress({
24
+ downloaded,
25
+ percent: 1,
26
+ totalSize: downloaded,
27
+ });
28
+ return resolve({ sizeInBytes: downloaded, to });
29
+ });
16
30
  writeStream.on('error', (err) => reject(err));
17
- let downloaded = 0;
18
31
  res.pipe(writeStream).on('error', (err) => reject(err));
19
32
  res.on('data', (d) => {
20
33
  downloaded += d.length;
21
34
  onProgress === null || onProgress === void 0 ? void 0 : onProgress({
22
35
  downloaded,
23
- progress: downloaded / totalSize,
36
+ percent: totalSize === null ? null : downloaded / totalSize,
24
37
  totalSize,
25
38
  });
26
39
  });
@@ -4,9 +4,8 @@ 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, }: {
8
8
  volume: AssetVolume;
9
- startInVideo: number;
10
9
  trimLeft: number;
11
10
  fps: number;
12
11
  }) => FfmpegVolumeExpression;
@@ -43,7 +43,7 @@ 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, }) => {
47
47
  // If it's a static volume, we return it and tell
48
48
  // FFMPEG it only has to evaluate it once
49
49
  if (typeof volume === 'number') {
@@ -55,7 +55,6 @@ const ffmpegVolumeExpression = ({ volume, startInVideo, fps, trimLeft, }) => {
55
55
  if ([...new Set(volume)].length === 1) {
56
56
  return (0, exports.ffmpegVolumeExpression)({
57
57
  volume: volume[0],
58
- startInVideo,
59
58
  fps,
60
59
  trimLeft,
61
60
  });
@@ -76,7 +75,7 @@ const ffmpegVolumeExpression = ({ volume, startInVideo, fps, trimLeft, }) => {
76
75
  if (!volumeMap[actualVolume]) {
77
76
  volumeMap[actualVolume] = [];
78
77
  }
79
- volumeMap[actualVolume].push(frame + startInVideo);
78
+ volumeMap[actualVolume].push(frame);
80
79
  });
81
80
  // Sort the map so that the most common volume is last
82
81
  // this is going to be the else statement so the expression is short
@@ -13,165 +13,38 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- /// <reference types="node" />
17
- import { ChildProcess } from 'child_process';
18
- import { Connection } from './Connection';
16
+ import type { Connection } from './Connection';
19
17
  import { EventEmitter } from './EventEmitter';
20
- import { Page } from './Page';
21
- import { Viewport } from './PuppeteerViewport';
18
+ import type { Page } from './Page';
19
+ import type { Viewport } from './PuppeteerViewport';
22
20
  import { Target } from './Target';
23
- interface BrowserContextOptions {
24
- /**
25
- * Proxy server with optional port to use for all requests.
26
- * Username and password can be set in `Page.authenticate`.
27
- */
28
- proxyServer?: string;
29
- /**
30
- * Bypass the proxy for the given semi-colon-separated list of hosts.
31
- */
32
- proxyBypassList?: string[];
33
- }
34
21
  declare type BrowserCloseCallback = () => Promise<void> | void;
35
22
  interface WaitForTargetOptions {
36
- /**
37
- * Maximum wait time in milliseconds. Pass `0` to disable the timeout.
38
- * @defaultValue 30 seconds.
39
- */
40
23
  timeout?: number;
41
24
  }
25
+ export declare const enum BrowserEmittedEvents {
26
+ TargetChanged = "targetchanged",
27
+ TargetCreated = "targetcreated",
28
+ Closed = "closed"
29
+ }
42
30
  export declare class Browser extends EventEmitter {
43
31
  #private;
44
- static _create({ connection, contextIds, defaultViewport, process, closeCallback, }: {
32
+ static _create({ connection, contextIds, defaultViewport, closeCallback, }: {
45
33
  connection: Connection;
46
34
  contextIds: string[];
47
35
  defaultViewport: Viewport;
48
- process?: ChildProcess;
49
36
  closeCallback?: BrowserCloseCallback;
50
37
  }): Promise<Browser>;
51
38
  get _targets(): Map<string, Target>;
52
- constructor(connection: Connection, contextIds: string[], defaultViewport: Viewport, process?: ChildProcess, closeCallback?: BrowserCloseCallback);
53
- /**
54
- * The spawned browser process. Returns `null` if the browser instance was created with
55
- * {@link Puppeteer.connect}.
56
- */
57
- process(): ChildProcess | null;
58
- /**
59
- * Creates a new incognito browser context. This won't share cookies/cache with other
60
- * browser contexts.
61
- *
62
- * @example
63
- * ```js
64
- * (async () => {
65
- * const browser = await puppeteer.launch();
66
- * // Create a new incognito browser context.
67
- * const context = await browser.createIncognitoBrowserContext();
68
- * // Create a new page in a pristine context.
69
- * const page = await context.newPage();
70
- * // Do stuff
71
- * await page.goto('https://example.com');
72
- * })();
73
- * ```
74
- */
75
- createIncognitoBrowserContext(options?: BrowserContextOptions): Promise<BrowserContext>;
76
- /**
77
- * Returns an array of all open browser contexts. In a newly created browser, this will
78
- * return a single instance of {@link BrowserContext}.
79
- */
39
+ constructor(connection: Connection, contextIds: string[], defaultViewport: Viewport, closeCallback?: BrowserCloseCallback);
80
40
  browserContexts(): BrowserContext[];
81
- /**
82
- * Returns the default browser context. The default browser context cannot be closed.
83
- */
84
- defaultBrowserContext(): BrowserContext;
85
- _disposeContext(contextId?: string): Promise<void>;
86
- /**
87
- * The browser websocket endpoint which can be used as an argument to
88
- * {@link Puppeteer.connect}.
89
- *
90
- * @returns The Browser websocket url.
91
- *
92
- * @remarks
93
- *
94
- * The format is `ws://${host}:${port}/devtools/browser/<id>`.
95
- *
96
- * You can find the `webSocketDebuggerUrl` from `http://${host}:${port}/json/version`.
97
- * Learn more about the
98
- * {@link https://chromedevtools.github.io/devtools-protocol | devtools protocol} and
99
- * the {@link
100
- * https://chromedevtools.github.io/devtools-protocol/#how-do-i-access-the-browser-target
101
- * | browser endpoint}.
102
- */
103
- wsEndpoint(): string;
104
- /**
105
- * Promise which resolves to a new {@link Page} object. The Page is created in
106
- * a default browser context.
107
- */
108
41
  newPage(): Promise<Page>;
109
42
  _createPageInContext(contextId?: string): Promise<Page>;
110
- /**
111
- * All active targets inside the Browser. In case of multiple browser contexts, returns
112
- * an array with all the targets in all browser contexts.
113
- */
114
43
  targets(): Target[];
115
- /**
116
- * The target associated with the browser.
117
- */
118
- target(): Target;
119
- /**
120
- * Searches for a target in all browser contexts.
121
- *
122
- * @param predicate - A function to be run for every target.
123
- * @returns The first target found that matches the `predicate` function.
124
- *
125
- * @example
126
- *
127
- * An example of finding a target for a page opened via `window.open`:
128
- * ```js
129
- * await page.evaluate(() => window.open('https://www.example.com/'));
130
- * const newWindowTarget = await browser.waitForTarget(target => target.url() === 'https://www.example.com/');
131
- * ```
132
- */
133
44
  waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: WaitForTargetOptions): Promise<Target>;
134
- /**
135
- * An array of all open pages inside the Browser.
136
- *
137
- * @remarks
138
- *
139
- * In case of multiple browser contexts, returns an array with all the pages in all
140
- * browser contexts. Non-visible pages, such as `"background_page"`, will not be listed
141
- * here. You can find them using {@link Target.page}.
142
- */
143
45
  pages(): Promise<Page[]>;
144
- /**
145
- * A string representing the browser name and version.
146
- *
147
- * @remarks
148
- *
149
- * For headless Chromium, this is similar to `HeadlessChrome/61.0.3153.0`. For
150
- * non-headless, this is similar to `Chrome/61.0.3153.0`.
151
- *
152
- * The format of browser.version() might change with future releases of Chromium.
153
- */
154
- version(): Promise<string>;
155
- /**
156
- * The browser's original user agent. Pages can override the browser user agent with
157
- * {@link Page.setUserAgent}.
158
- */
159
- userAgent(): Promise<string>;
160
- /**
161
- * Closes Chromium and all of its pages (if any were opened). The {@link Browser} object
162
- * itself is considered to be disposed and cannot be used anymore.
163
- */
164
46
  close(): Promise<void>;
165
- /**
166
- * Disconnects Puppeteer from the browser, but leaves the Chromium process running.
167
- * After calling `disconnect`, the {@link Browser} object is considered disposed and
168
- * cannot be used anymore.
169
- */
170
47
  disconnect(): void;
171
- /**
172
- * Indicates that the browser is connected.
173
- */
174
- isConnected(): boolean;
175
48
  }
176
49
  export declare class BrowserContext extends EventEmitter {
177
50
  #private;
@@ -181,29 +54,7 @@ export declare class BrowserContext extends EventEmitter {
181
54
  timeout?: number;
182
55
  }): Promise<Target>;
183
56
  pages(): Promise<Page[]>;
184
- /**
185
- * Returns whether BrowserContext is incognito.
186
- * The default browser context is the only non-incognito browser context.
187
- *
188
- * @remarks
189
- * The default browser context cannot be closed.
190
- */
191
- isIncognito(): boolean;
192
- /**
193
- * Creates a new page in the browser context.
194
- */
195
57
  newPage(): Promise<Page>;
196
- /**
197
- * The browser this browser context belongs to.
198
- */
199
58
  browser(): Browser;
200
- /**
201
- * Closes the browser context. All the targets that belong to the browser context
202
- * will be closed.
203
- *
204
- * @remarks
205
- * Only incognito browser contexts can be closed.
206
- */
207
- close(): Promise<void>;
208
59
  }
209
60
  export {};