@remotion/renderer 3.0.30 → 3.0.31

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 (255) 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.js +6 -3
  4. package/dist/browser/{page.d.ts → Page.d.ts} +0 -0
  5. package/dist/browser/{page.js → Page.js} +0 -0
  6. package/dist/browser/ws.d.ts +287 -0
  7. package/dist/browser/ws.js +21 -0
  8. package/dist/cancel.d.ts +7 -0
  9. package/dist/cancel.js +25 -0
  10. package/dist/codec-supports-media.d.ts +7 -0
  11. package/dist/codec-supports-media.js +49 -0
  12. package/dist/ensure-faststart.d.ts +1 -0
  13. package/dist/ensure-faststart.js +14 -0
  14. package/dist/faststart/atom.d.ts +35 -0
  15. package/dist/faststart/atom.js +138 -0
  16. package/dist/faststart/index.d.ts +0 -0
  17. package/dist/faststart/index.js +1 -0
  18. package/dist/faststart/options.d.ts +6 -0
  19. package/dist/faststart/options.js +2 -0
  20. package/dist/faststart/qt-faststart.d.ts +18 -0
  21. package/dist/faststart/qt-faststart.js +66 -0
  22. package/dist/faststart/update-chunk-offsets.d.ts +10 -0
  23. package/dist/faststart/update-chunk-offsets.js +114 -0
  24. package/dist/faststart/util.d.ts +9 -0
  25. package/dist/faststart/util.js +34 -0
  26. package/dist/guess-extension-for-media.d.ts +1 -1
  27. package/dist/index.d.ts +2 -1
  28. package/dist/offthread/index.d.ts +0 -0
  29. package/dist/offthread/index.js +1 -0
  30. package/dist/render-gif.d.ts +2 -0
  31. package/dist/render-gif.js +242 -0
  32. package/dist/render-media.d.ts +1 -0
  33. package/dist/should-use-vp9-decoder.d.ts +0 -0
  34. package/dist/should-use-vp9-decoder.js +1 -0
  35. package/dist/stitch-frames-to-gif.d.ts +8 -0
  36. package/dist/stitch-frames-to-gif.js +128 -0
  37. package/dist/validate-offthreadvideo-image-format.d.ts +1 -0
  38. package/dist/validate-offthreadvideo-image-format.js +15 -0
  39. package/dist/ws/buffer-util.d.ts +10 -0
  40. package/dist/ws/buffer-util.js +123 -0
  41. package/dist/ws/constants.d.ts +10 -0
  42. package/dist/ws/constants.js +13 -0
  43. package/dist/ws/event-target.d.ts +155 -0
  44. package/dist/ws/event-target.js +203 -0
  45. package/dist/ws/extension.d.ts +16 -0
  46. package/dist/ws/extension.js +232 -0
  47. package/dist/ws/limiter.d.ts +34 -0
  48. package/dist/ws/limiter.js +41 -0
  49. package/dist/ws/permessage_deflate.d.ts +152 -0
  50. package/dist/ws/permessage_deflate.js +409 -0
  51. package/package.json +3 -3
  52. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  53. package/dist/assets/calculate-asset-positions.js.map +0 -1
  54. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  55. package/dist/assets/calculate-atempo.js.map +0 -1
  56. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  57. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  58. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  59. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  60. package/dist/assets/download-file.d.ts.map +0 -1
  61. package/dist/assets/download-file.js.map +0 -1
  62. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  63. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  64. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  65. package/dist/assets/flatten-volume-array.js.map +0 -1
  66. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  67. package/dist/assets/get-audio-channels.js.map +0 -1
  68. package/dist/assets/read-file.d.ts.map +0 -1
  69. package/dist/assets/read-file.js.map +0 -1
  70. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  71. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  72. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  73. package/dist/assets/sanitize-filename.js.map +0 -1
  74. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  75. package/dist/assets/sanitize-filepath.js.map +0 -1
  76. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  77. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  78. package/dist/assets/types.d.ts.map +0 -1
  79. package/dist/assets/types.js.map +0 -1
  80. package/dist/browser/Accessibility.d.ts +0 -175
  81. package/dist/browser/Accessibility.js +0 -423
  82. package/dist/browser/AriaQueryHandler.d.ts +0 -20
  83. package/dist/browser/AriaQueryHandler.js +0 -108
  84. package/dist/browser/Coverage.d.ts +0 -180
  85. package/dist/browser/Coverage.js +0 -371
  86. package/dist/browser/Debug.d.ts +0 -19
  87. package/dist/browser/Debug.js +0 -42
  88. package/dist/browser/DeviceDescriptors.d.ts +0 -40
  89. package/dist/browser/DeviceDescriptors.js +0 -1407
  90. package/dist/browser/FileChooser.d.ts +0 -56
  91. package/dist/browser/FileChooser.js +0 -86
  92. package/dist/browser/Input.d.ts +0 -355
  93. package/dist/browser/Input.js +0 -592
  94. package/dist/browser/NetworkConditions.d.ts +0 -26
  95. package/dist/browser/NetworkConditions.js +0 -33
  96. package/dist/browser/PDFOptions.d.ts +0 -165
  97. package/dist/browser/PDFOptions.js +0 -34
  98. package/dist/browser/PipeTransport.d.ts +0 -10
  99. package/dist/browser/PipeTransport.js +0 -86
  100. package/dist/browser/Puppeteer.d.ts +0 -35
  101. package/dist/browser/Puppeteer.js +0 -17
  102. package/dist/browser/QueryHandler.d.ts +0 -64
  103. package/dist/browser/QueryHandler.js +0 -183
  104. package/dist/browser/SecurityDetails.d.ts +0 -55
  105. package/dist/browser/SecurityDetails.js +0 -95
  106. package/dist/browser/Tracing.d.ts +0 -45
  107. package/dist/browser/Tracing.js +0 -136
  108. package/dist/browser/USKeyboardLayout.d.ts +0 -39
  109. package/dist/browser/USKeyboardLayout.js +0 -406
  110. package/dist/browser/WebWorker.d.ts +0 -96
  111. package/dist/browser/WebWorker.js +0 -122
  112. package/dist/browser/dialog.d.ts +0 -70
  113. package/dist/browser/dialog.js +0 -114
  114. package/dist/browser/fetch.d.ts +0 -16
  115. package/dist/browser/fetch.js +0 -46
  116. package/dist/browser/find-up.d.ts +0 -4
  117. package/dist/browser/find-up.js +0 -85
  118. package/dist/browser/pkg-dir.d.ts +0 -3
  119. package/dist/browser/pkg-dir.js +0 -13
  120. package/dist/browser-log.d.ts.map +0 -1
  121. package/dist/browser-log.js.map +0 -1
  122. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  123. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  124. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  125. package/dist/can-use-parallel-encoding.js.map +0 -1
  126. package/dist/chunk.d.ts.map +0 -1
  127. package/dist/chunk.js.map +0 -1
  128. package/dist/combine-videos.d.ts.map +0 -1
  129. package/dist/combine-videos.js.map +0 -1
  130. package/dist/convert-to-pcm.d.ts.map +0 -1
  131. package/dist/convert-to-pcm.js.map +0 -1
  132. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  133. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  134. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  135. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  136. package/dist/create-silent-audio.d.ts.map +0 -1
  137. package/dist/create-silent-audio.js.map +0 -1
  138. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  139. package/dist/cycle-browser-tabs.js.map +0 -1
  140. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  141. package/dist/delay-render-embedded-stack.js.map +0 -1
  142. package/dist/delete-directory.d.ts.map +0 -1
  143. package/dist/delete-directory.js.map +0 -1
  144. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  145. package/dist/ensure-frames-in-order.js.map +0 -1
  146. package/dist/ensure-output-directory.d.ts.map +0 -1
  147. package/dist/ensure-output-directory.js.map +0 -1
  148. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  149. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  150. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  151. package/dist/error-handling/symbolicate-error.js.map +0 -1
  152. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  153. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  154. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  155. package/dist/ffmpeg-filter-file.js.map +0 -1
  156. package/dist/ffmpeg-flags.d.ts.map +0 -1
  157. package/dist/ffmpeg-flags.js.map +0 -1
  158. package/dist/get-audio-codec-name.d.ts.map +0 -1
  159. package/dist/get-audio-codec-name.js.map +0 -1
  160. package/dist/get-browser-instance.d.ts.map +0 -1
  161. package/dist/get-browser-instance.js.map +0 -1
  162. package/dist/get-codec-name.d.ts.map +0 -1
  163. package/dist/get-codec-name.js.map +0 -1
  164. package/dist/get-compositions.d.ts.map +0 -1
  165. package/dist/get-compositions.js.map +0 -1
  166. package/dist/get-concurrency.d.ts.map +0 -1
  167. package/dist/get-concurrency.js.map +0 -1
  168. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  169. package/dist/get-duration-from-frame-range.js.map +0 -1
  170. package/dist/get-extension-from-codec.d.ts.map +0 -1
  171. package/dist/get-extension-from-codec.js.map +0 -1
  172. package/dist/get-format-for-codec.d.ts +0 -2
  173. package/dist/get-format-for-codec.js +0 -34
  174. package/dist/get-frame-to-render.d.ts.map +0 -1
  175. package/dist/get-frame-to-render.js.map +0 -1
  176. package/dist/get-local-browser-executable.d.ts.map +0 -1
  177. package/dist/get-local-browser-executable.js.map +0 -1
  178. package/dist/get-port.d.ts.map +0 -1
  179. package/dist/get-port.js.map +0 -1
  180. package/dist/get-prores-profile-name.d.ts.map +0 -1
  181. package/dist/get-prores-profile-name.js.map +0 -1
  182. package/dist/image-format.d.ts.map +0 -1
  183. package/dist/image-format.js.map +0 -1
  184. package/dist/index.d.ts.map +0 -1
  185. package/dist/index.js.map +0 -1
  186. package/dist/is-serve-url.d.ts.map +0 -1
  187. package/dist/is-serve-url.js.map +0 -1
  188. package/dist/legacy-webpack-config.d.ts.map +0 -1
  189. package/dist/legacy-webpack-config.js.map +0 -1
  190. package/dist/make-assets-download-dir.d.ts.map +0 -1
  191. package/dist/make-assets-download-dir.js.map +0 -1
  192. package/dist/merge-audio-track.d.ts.map +0 -1
  193. package/dist/merge-audio-track.js.map +0 -1
  194. package/dist/normalize-serve-url.d.ts.map +0 -1
  195. package/dist/normalize-serve-url.js.map +0 -1
  196. package/dist/open-browser.d.ts.map +0 -1
  197. package/dist/open-browser.js.map +0 -1
  198. package/dist/p-limit.d.ts.map +0 -1
  199. package/dist/p-limit.js.map +0 -1
  200. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  201. package/dist/parse-browser-error-stack.js.map +0 -1
  202. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  203. package/dist/parse-ffmpeg-progress.js.map +0 -1
  204. package/dist/pool.d.ts.map +0 -1
  205. package/dist/pool.js.map +0 -1
  206. package/dist/prepare-server.d.ts.map +0 -1
  207. package/dist/prepare-server.js.map +0 -1
  208. package/dist/preprocess-audio-track.d.ts.map +0 -1
  209. package/dist/preprocess-audio-track.js.map +0 -1
  210. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  211. package/dist/prespawn-ffmpeg.js.map +0 -1
  212. package/dist/provide-screenshot.d.ts.map +0 -1
  213. package/dist/provide-screenshot.js.map +0 -1
  214. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  215. package/dist/puppeteer-evaluate.js.map +0 -1
  216. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  217. package/dist/puppeteer-screenshot.js.map +0 -1
  218. package/dist/render-frames.d.ts.map +0 -1
  219. package/dist/render-frames.js.map +0 -1
  220. package/dist/render-media.d.ts.map +0 -1
  221. package/dist/render-media.js.map +0 -1
  222. package/dist/render-still.d.ts.map +0 -1
  223. package/dist/render-still.js.map +0 -1
  224. package/dist/resolve-asset-src.d.ts.map +0 -1
  225. package/dist/resolve-asset-src.js.map +0 -1
  226. package/dist/sample-rate.d.ts.map +0 -1
  227. package/dist/sample-rate.js.map +0 -1
  228. package/dist/screenshot-dom-element.d.ts.map +0 -1
  229. package/dist/screenshot-dom-element.js.map +0 -1
  230. package/dist/screenshot-task.d.ts.map +0 -1
  231. package/dist/screenshot-task.js.map +0 -1
  232. package/dist/seek-to-frame.d.ts.map +0 -1
  233. package/dist/seek-to-frame.js.map +0 -1
  234. package/dist/serve-static.d.ts.map +0 -1
  235. package/dist/serve-static.js.map +0 -1
  236. package/dist/set-props-and-env.d.ts.map +0 -1
  237. package/dist/set-props-and-env.js.map +0 -1
  238. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  239. package/dist/stitch-frames-to-video.js.map +0 -1
  240. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  241. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  242. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  243. package/dist/symbolicate-stacktrace.js.map +0 -1
  244. package/dist/tmp-dir.d.ts.map +0 -1
  245. package/dist/tmp-dir.js.map +0 -1
  246. package/dist/types.d.ts.map +0 -1
  247. package/dist/types.js.map +0 -1
  248. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  249. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  250. package/dist/validate-ffmpeg.d.ts.map +0 -1
  251. package/dist/validate-ffmpeg.js.map +0 -1
  252. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  253. package/dist/validate-puppeteer-timeout.js.map +0 -1
  254. package/dist/validate-scale.d.ts.map +0 -1
  255. 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;
@@ -26,8 +26,11 @@ const waitForAssetToBeDownloaded = ({ src, downloadDir, }) => {
26
26
  }
27
27
  return new Promise((resolve) => {
28
28
  listeners[src][downloadDir].push(() => {
29
- var _a;
30
- resolve((_a = hasBeenDownloadedMap[src]) === null || _a === void 0 ? void 0 : _a[downloadDir]);
29
+ const srcMap = hasBeenDownloadedMap[src];
30
+ if (!srcMap || !srcMap[downloadDir]) {
31
+ throw new Error('Expected file for ' + src + 'to be available in ' + downloadDir);
32
+ }
33
+ resolve(srcMap[downloadDir]);
31
34
  });
32
35
  });
33
36
  };
@@ -38,7 +41,6 @@ const notifyAssetIsDownloaded = ({ src, downloadDir, to, }) => {
38
41
  if (!listeners[src][downloadDir]) {
39
42
  listeners[src][downloadDir] = [];
40
43
  }
41
- listeners[src][downloadDir].forEach((fn) => fn());
42
44
  if (!isDownloadingMap[src]) {
43
45
  isDownloadingMap[src] = {};
44
46
  }
@@ -47,6 +49,7 @@ const notifyAssetIsDownloaded = ({ src, downloadDir, to, }) => {
47
49
  hasBeenDownloadedMap[src] = {};
48
50
  }
49
51
  hasBeenDownloadedMap[src][downloadDir] = to;
52
+ listeners[src][downloadDir].forEach((fn) => fn());
50
53
  };
51
54
  const validateMimeType = (mimeType, src) => {
52
55
  if (!mimeType.includes('/')) {
File without changes
File without changes
@@ -0,0 +1,287 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ /// <reference types="node" />
5
+ /// <reference types="node" />
6
+ /// <reference types="node" />
7
+ /// <reference types="node" />
8
+ /// <reference types="node" />
9
+ import { EventEmitter } from 'events';
10
+ import type { Agent, ClientRequest, ClientRequestArgs, IncomingMessage, OutgoingHttpHeaders, Server as HTTPServer } from 'http';
11
+ import type { Server as HTTPSServer } from 'https';
12
+ import type { Duplex, DuplexOptions } from 'stream';
13
+ import type { SecureContextOptions } from 'tls';
14
+ import type { URL } from 'url';
15
+ import type { ZlibOptions } from 'zlib';
16
+ declare class WebSocket extends EventEmitter {
17
+ /** The connection is not yet open. */
18
+ static readonly CONNECTING: 0;
19
+ /** The connection is open and ready to communicate. */
20
+ static readonly OPEN: 1;
21
+ /** The connection is in the process of closing. */
22
+ static readonly CLOSING: 2;
23
+ /** The connection is closed. */
24
+ static readonly CLOSED: 3;
25
+ binaryType: 'nodebuffer' | 'arraybuffer' | 'fragments';
26
+ readonly bufferedAmount: number;
27
+ readonly extensions: string;
28
+ /** Indicates whether the websocket is paused */
29
+ readonly isPaused: boolean;
30
+ readonly protocol: string;
31
+ /** The current state of the connection */
32
+ readonly readyState: typeof WebSocket.CONNECTING | typeof WebSocket.OPEN | typeof WebSocket.CLOSING | typeof WebSocket.CLOSED;
33
+ readonly url: string;
34
+ /** The connection is not yet open. */
35
+ readonly CONNECTING: 0;
36
+ /** The connection is open and ready to communicate. */
37
+ readonly OPEN: 1;
38
+ /** The connection is in the process of closing. */
39
+ readonly CLOSING: 2;
40
+ /** The connection is closed. */
41
+ readonly CLOSED: 3;
42
+ onopen: ((event: WebSocket.Event) => void) | null;
43
+ onerror: ((event: WebSocket.ErrorEvent) => void) | null;
44
+ onclose: ((event: WebSocket.CloseEvent) => void) | null;
45
+ onmessage: ((event: WebSocket.MessageEvent) => void) | null;
46
+ constructor(address: null);
47
+ constructor(address: string | URL, options?: WebSocket.ClientOptions | ClientRequestArgs);
48
+ constructor(address: string | URL, protocols?: string | string[], options?: WebSocket.ClientOptions | ClientRequestArgs);
49
+ close(code?: number, data?: string | Buffer): void;
50
+ ping(data?: any, mask?: boolean, cb?: (err: Error) => void): void;
51
+ pong(data?: any, mask?: boolean, cb?: (err: Error) => void): void;
52
+ send(data: any, cb?: (err?: Error) => void): void;
53
+ send(data: any, options: {
54
+ mask?: boolean | undefined;
55
+ binary?: boolean | undefined;
56
+ compress?: boolean | undefined;
57
+ fin?: boolean | undefined;
58
+ }, cb?: (err?: Error) => void): void;
59
+ terminate(): void;
60
+ /**
61
+ * Pause the websocket causing it to stop emitting events. Some events can still be
62
+ * emitted after this is called, until all buffered data is consumed. This method
63
+ * is a noop if the ready state is `CONNECTING` or `CLOSED`.
64
+ */
65
+ pause(): void;
66
+ /**
67
+ * Make a paused socket resume emitting events. This method is a noop if the ready
68
+ * state is `CONNECTING` or `CLOSED`.
69
+ */
70
+ resume(): void;
71
+ addEventListener(method: 'message', cb: (event: WebSocket.MessageEvent) => void, options?: WebSocket.EventListenerOptions): void;
72
+ addEventListener(method: 'close', cb: (event: WebSocket.CloseEvent) => void, options?: WebSocket.EventListenerOptions): void;
73
+ addEventListener(method: 'error', cb: (event: WebSocket.ErrorEvent) => void, options?: WebSocket.EventListenerOptions): void;
74
+ addEventListener(method: 'open', cb: (event: WebSocket.Event) => void, options?: WebSocket.EventListenerOptions): void;
75
+ removeEventListener(method: 'message', cb: (event: WebSocket.MessageEvent) => void): void;
76
+ removeEventListener(method: 'close', cb: (event: WebSocket.CloseEvent) => void): void;
77
+ removeEventListener(method: 'error', cb: (event: WebSocket.ErrorEvent) => void): void;
78
+ removeEventListener(method: 'open', cb: (event: WebSocket.Event) => void): void;
79
+ on(event: 'close', listener: (this: WebSocket, code: number, reason: Buffer) => void): this;
80
+ on(event: 'error', listener: (this: WebSocket, err: Error) => void): this;
81
+ on(event: 'upgrade', listener: (this: WebSocket, request: IncomingMessage) => void): this;
82
+ on(event: 'message', listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;
83
+ on(event: 'open', listener: (this: WebSocket) => void): this;
84
+ on(event: 'ping' | 'pong', listener: (this: WebSocket, data: Buffer) => void): this;
85
+ on(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this;
86
+ on(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
87
+ once(event: 'close', listener: (this: WebSocket, code: number, reason: Buffer) => void): this;
88
+ once(event: 'error', listener: (this: WebSocket, err: Error) => void): this;
89
+ once(event: 'upgrade', listener: (this: WebSocket, request: IncomingMessage) => void): this;
90
+ once(event: 'message', listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;
91
+ once(event: 'open', listener: (this: WebSocket) => void): this;
92
+ once(event: 'ping' | 'pong', listener: (this: WebSocket, data: Buffer) => void): this;
93
+ once(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this;
94
+ once(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
95
+ off(event: 'close', listener: (this: WebSocket, code: number, reason: Buffer) => void): this;
96
+ off(event: 'error', listener: (this: WebSocket, err: Error) => void): this;
97
+ off(event: 'upgrade', listener: (this: WebSocket, request: IncomingMessage) => void): this;
98
+ off(event: 'message', listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;
99
+ off(event: 'open', listener: (this: WebSocket) => void): this;
100
+ off(event: 'ping' | 'pong', listener: (this: WebSocket, data: Buffer) => void): this;
101
+ off(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this;
102
+ off(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
103
+ addListener(event: 'close', listener: (code: number, reason: Buffer) => void): this;
104
+ addListener(event: 'error', listener: (err: Error) => void): this;
105
+ addListener(event: 'upgrade', listener: (request: IncomingMessage) => void): this;
106
+ addListener(event: 'message', listener: (data: WebSocket.RawData, isBinary: boolean) => void): this;
107
+ addListener(event: 'open', listener: () => void): this;
108
+ addListener(event: 'ping' | 'pong', listener: (data: Buffer) => void): this;
109
+ addListener(event: 'unexpected-response', listener: (request: ClientRequest, response: IncomingMessage) => void): this;
110
+ addListener(event: string | symbol, listener: (...args: any[]) => void): this;
111
+ removeListener(event: 'close', listener: (code: number, reason: Buffer) => void): this;
112
+ removeListener(event: 'error', listener: (err: Error) => void): this;
113
+ removeListener(event: 'upgrade', listener: (request: IncomingMessage) => void): this;
114
+ removeListener(event: 'message', listener: (data: WebSocket.RawData, isBinary: boolean) => void): this;
115
+ removeListener(event: 'open', listener: () => void): this;
116
+ removeListener(event: 'ping' | 'pong', listener: (data: Buffer) => void): this;
117
+ removeListener(event: 'unexpected-response', listener: (request: ClientRequest, response: IncomingMessage) => void): this;
118
+ removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
119
+ }
120
+ declare const WebSocketAlias: typeof WebSocket;
121
+ declare type WebSocketAlias = WebSocket;
122
+ declare namespace WebSocket {
123
+ /**
124
+ * Data represents the raw message payload received over the WebSocket.
125
+ */
126
+ type RawData = Buffer | ArrayBuffer | Buffer[];
127
+ /**
128
+ * Data represents the message payload received over the WebSocket.
129
+ */
130
+ type Data = string | Buffer | ArrayBuffer | Buffer[];
131
+ /**
132
+ * CertMeta represents the accepted types for certificate & key data.
133
+ */
134
+ type CertMeta = string | string[] | Buffer | Buffer[];
135
+ /**
136
+ * VerifyClientCallbackSync is a synchronous callback used to inspect the
137
+ * incoming message. The return value (boolean) of the function determines
138
+ * whether or not to accept the handshake.
139
+ */
140
+ type VerifyClientCallbackSync = (info: {
141
+ origin: string;
142
+ secure: boolean;
143
+ req: IncomingMessage;
144
+ }) => boolean;
145
+ /**
146
+ * VerifyClientCallbackAsync is an asynchronous callback used to inspect the
147
+ * incoming message. The return value (boolean) of the function determines
148
+ * whether or not to accept the handshake.
149
+ */
150
+ type VerifyClientCallbackAsync = (info: {
151
+ origin: string;
152
+ secure: boolean;
153
+ req: IncomingMessage;
154
+ }, callback: (res: boolean, code?: number, message?: string, headers?: OutgoingHttpHeaders) => void) => void;
155
+ interface ClientOptions extends SecureContextOptions {
156
+ protocol?: string | undefined;
157
+ followRedirects?: boolean | undefined;
158
+ generateMask?(mask: Buffer): void;
159
+ handshakeTimeout?: number | undefined;
160
+ maxRedirects?: number | undefined;
161
+ perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined;
162
+ localAddress?: string | undefined;
163
+ protocolVersion?: number | undefined;
164
+ headers?: {
165
+ [key: string]: string;
166
+ } | undefined;
167
+ origin?: string | undefined;
168
+ agent?: Agent | undefined;
169
+ host?: string | undefined;
170
+ family?: number | undefined;
171
+ checkServerIdentity?(servername: string, cert: CertMeta): boolean;
172
+ rejectUnauthorized?: boolean | undefined;
173
+ maxPayload?: number | undefined;
174
+ skipUTF8Validation?: boolean | undefined;
175
+ }
176
+ interface PerMessageDeflateOptions {
177
+ serverNoContextTakeover?: boolean | undefined;
178
+ clientNoContextTakeover?: boolean | undefined;
179
+ serverMaxWindowBits?: number | undefined;
180
+ clientMaxWindowBits?: number | undefined;
181
+ zlibDeflateOptions?: {
182
+ flush?: number | undefined;
183
+ finishFlush?: number | undefined;
184
+ chunkSize?: number | undefined;
185
+ windowBits?: number | undefined;
186
+ level?: number | undefined;
187
+ memLevel?: number | undefined;
188
+ strategy?: number | undefined;
189
+ dictionary?: Buffer | Buffer[] | DataView | undefined;
190
+ info?: boolean | undefined;
191
+ } | undefined;
192
+ zlibInflateOptions?: ZlibOptions | undefined;
193
+ threshold?: number | undefined;
194
+ concurrencyLimit?: number | undefined;
195
+ }
196
+ interface Event {
197
+ type: string;
198
+ target: WebSocket;
199
+ }
200
+ interface ErrorEvent {
201
+ error: any;
202
+ message: string;
203
+ type: string;
204
+ target: WebSocket;
205
+ }
206
+ interface CloseEvent {
207
+ wasClean: boolean;
208
+ code: number;
209
+ reason: string;
210
+ type: string;
211
+ target: WebSocket;
212
+ }
213
+ interface MessageEvent {
214
+ data: Data;
215
+ type: string;
216
+ target: WebSocket;
217
+ }
218
+ interface EventListenerOptions {
219
+ once?: boolean | undefined;
220
+ }
221
+ interface ServerOptions {
222
+ host?: string | undefined;
223
+ port?: number | undefined;
224
+ backlog?: number | undefined;
225
+ server?: HTTPServer | HTTPSServer | undefined;
226
+ verifyClient?: VerifyClientCallbackAsync | VerifyClientCallbackSync | undefined;
227
+ handleProtocols?: (protocols: Set<string>, request: IncomingMessage) => string | false;
228
+ path?: string | undefined;
229
+ noServer?: boolean | undefined;
230
+ clientTracking?: boolean | undefined;
231
+ perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined;
232
+ maxPayload?: number | undefined;
233
+ skipUTF8Validation?: boolean | undefined;
234
+ WebSocket?: typeof WebSocket.WebSocket | undefined;
235
+ }
236
+ interface AddressInfo {
237
+ address: string;
238
+ family: string;
239
+ port: number;
240
+ }
241
+ class Server<T extends WebSocket = WebSocket> extends EventEmitter {
242
+ options: ServerOptions;
243
+ path: string;
244
+ clients: Set<T>;
245
+ constructor(options?: ServerOptions, callback?: () => void);
246
+ address(): AddressInfo | string;
247
+ close(cb?: (err?: Error) => void): void;
248
+ handleUpgrade(request: IncomingMessage, socket: Duplex, upgradeHead: Buffer, callback: (client: T, request: IncomingMessage) => void): void;
249
+ shouldHandle(request: IncomingMessage): boolean | Promise<boolean>;
250
+ on(event: 'connection', cb: (this: Server<T>, socket: T, request: IncomingMessage) => void): this;
251
+ on(event: 'error', cb: (this: Server<T>, error: Error) => void): this;
252
+ on(event: 'headers', cb: (this: Server<T>, headers: string[], request: IncomingMessage) => void): this;
253
+ on(event: 'close' | 'listening', cb: (this: Server<T>) => void): this;
254
+ on(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this;
255
+ once(event: 'connection', cb: (this: Server<T>, socket: T, request: IncomingMessage) => void): this;
256
+ once(event: 'error', cb: (this: Server<T>, error: Error) => void): this;
257
+ once(event: 'headers', cb: (this: Server<T>, headers: string[], request: IncomingMessage) => void): this;
258
+ once(event: 'close' | 'listening', cb: (this: Server<T>) => void): this;
259
+ once(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this;
260
+ off(event: 'connection', cb: (this: Server<T>, socket: T, request: IncomingMessage) => void): this;
261
+ off(event: 'error', cb: (this: Server<T>, error: Error) => void): this;
262
+ off(event: 'headers', cb: (this: Server<T>, headers: string[], request: IncomingMessage) => void): this;
263
+ off(event: 'close' | 'listening', cb: (this: Server<T>) => void): this;
264
+ off(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this;
265
+ addListener(event: 'connection', cb: (client: T, request: IncomingMessage) => void): this;
266
+ addListener(event: 'error', cb: (err: Error) => void): this;
267
+ addListener(event: 'headers', cb: (headers: string[], request: IncomingMessage) => void): this;
268
+ addListener(event: 'close' | 'listening', cb: () => void): this;
269
+ addListener(event: string | symbol, listener: (...args: any[]) => void): this;
270
+ removeListener(event: 'connection', cb: (client: T) => void): this;
271
+ removeListener(event: 'error', cb: (err: Error) => void): this;
272
+ removeListener(event: 'headers', cb: (headers: string[], request: IncomingMessage) => void): this;
273
+ removeListener(event: 'close' | 'listening', cb: () => void): this;
274
+ removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
275
+ }
276
+ const WebSocketServer: typeof Server;
277
+ interface WebSocketServer extends Server {
278
+ }
279
+ const WebSocket: typeof WebSocketAlias;
280
+ interface WebSocket extends WebSocketAlias {
281
+ }
282
+ function createWebSocketStream(websocket: WebSocket, options?: DuplexOptions): Duplex;
283
+ }
284
+ declare module 'ws' {
285
+ export = WebSocket;
286
+ }
287
+ export {};
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-shadow */
3
+ /* eslint-disable @typescript-eslint/no-empty-interface */
4
+ /* eslint-disable no-redeclare */
5
+ /* eslint-disable @typescript-eslint/no-explicit-any */
6
+ /* eslint-disable lines-between-class-members */
7
+ /* eslint-disable no-dupe-class-members */
8
+ // Type definitions for ws 8.5
9
+ // Project: https://github.com/websockets/ws
10
+ // Definitions by: Paul Loyd <https://github.com/loyd>
11
+ // Margus Lamp <https://github.com/mlamp>
12
+ // Philippe D'Alva <https://github.com/TitaneBoy>
13
+ // reduckted <https://github.com/reduckted>
14
+ // teidesu <https://github.com/teidesu>
15
+ // Bartosz Wojtkowiak <https://github.com/wojtkowiak>
16
+ // Kyle Hensel <https://github.com/k-yle>
17
+ // Samuel Skeen <https://github.com/cwadrupldijjit>
18
+ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ /// <reference types="node" />
21
+ const events_1 = require("events");
@@ -0,0 +1,7 @@
1
+ declare type Callback = () => void;
2
+ export declare type CancelSignal = (callback: Callback) => void;
3
+ export declare const makeCancelSignal: () => {
4
+ cancelSignal: CancelSignal;
5
+ cancel: () => void;
6
+ };
7
+ export {};
package/dist/cancel.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeCancelSignal = void 0;
4
+ const makeCancelSignal = () => {
5
+ const callbacks = [];
6
+ let cancelled = false;
7
+ return {
8
+ cancelSignal: (callback) => {
9
+ callbacks.push(callback);
10
+ if (cancelled) {
11
+ callback();
12
+ }
13
+ },
14
+ cancel: () => {
15
+ if (cancelled) {
16
+ return;
17
+ }
18
+ callbacks.forEach((cb) => {
19
+ cb();
20
+ });
21
+ cancelled = true;
22
+ },
23
+ };
24
+ };
25
+ exports.makeCancelSignal = makeCancelSignal;
@@ -0,0 +1,7 @@
1
+ import type { Codec } from 'remotion';
2
+ declare type MediaSupport = {
3
+ video: boolean;
4
+ audio: boolean;
5
+ };
6
+ export declare const codecSupportsMedia: (codec: Codec) => MediaSupport;
7
+ export {};
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.codecSupportsMedia = void 0;
4
+ const support = {
5
+ 'h264-mkv': {
6
+ audio: true,
7
+ video: true,
8
+ },
9
+ aac: {
10
+ audio: true,
11
+ video: false,
12
+ },
13
+ gif: {
14
+ video: true,
15
+ audio: false,
16
+ },
17
+ h264: {
18
+ video: true,
19
+ audio: true,
20
+ },
21
+ h265: {
22
+ video: true,
23
+ audio: true,
24
+ },
25
+ mp3: {
26
+ audio: true,
27
+ video: false,
28
+ },
29
+ prores: {
30
+ audio: true,
31
+ video: true,
32
+ },
33
+ vp8: {
34
+ audio: true,
35
+ video: true,
36
+ },
37
+ vp9: {
38
+ audio: true,
39
+ video: true,
40
+ },
41
+ wav: {
42
+ audio: true,
43
+ video: false,
44
+ },
45
+ };
46
+ const codecSupportsMedia = (codec) => {
47
+ return support[codec];
48
+ };
49
+ exports.codecSupportsMedia = codecSupportsMedia;
@@ -0,0 +1 @@
1
+ export declare const ensureFastStart: () => void;
@@ -0,0 +1,14 @@
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.ensureFastStart = void 0;
7
+ const fs_1 = require("fs");
8
+ const qt_faststart_1 = __importDefault(require("./faststart/qt-faststart"));
9
+ const ensureFastStart = () => {
10
+ const buffer = (0, fs_1.readFileSync)('/Users/jonathanburger/remotion/packages/example/public/offthread2.mp4');
11
+ const newBuffer = (0, qt_faststart_1.default)(buffer);
12
+ (0, fs_1.writeFileSync)('/Users/jonathanburger/remotion/packages/example/public/offthread-faststart.mp4', newBuffer);
13
+ };
14
+ exports.ensureFastStart = ensureFastStart;
@@ -0,0 +1,35 @@
1
+ /// <reference types="node" />
2
+ export declare const FREE_ATOM: number;
3
+ export declare const JUNK_ATOM: number;
4
+ export declare const MDAT_ATOM: number;
5
+ export declare const MOOV_ATOM: number;
6
+ export declare const PNOT_ATOM: number;
7
+ export declare const SKIP_ATOM: number;
8
+ export declare const WIDE_ATOM: number;
9
+ export declare const PICT_ATOM: number;
10
+ export declare const FTYP_ATOM: number;
11
+ export declare const UUID_ATOM: number;
12
+ export declare const CMOV_ATOM: number;
13
+ export declare const TRAK_ATOM: number;
14
+ export declare const MDIA_ATOM: number;
15
+ export declare const MINF_ATOM: number;
16
+ export declare const STBL_ATOM: number;
17
+ export declare const STCO_ATOM: number;
18
+ export declare const CO64_ATOM: number;
19
+ export declare const ATOM_PREAMBLE_SIZE: bigint;
20
+ export declare const MAX_FTYP_ATOM_SIZE: bigint;
21
+ export declare enum SizeKind {
22
+ U32 = 0,
23
+ U64 = 1
24
+ }
25
+ export interface QtAtom {
26
+ kind: string;
27
+ size: BigInt;
28
+ sizeKind: SizeKind;
29
+ data: QtAtom[] | Buffer;
30
+ }
31
+ export declare function parseAtoms(infile: Buffer, depth?: number, shallow?: boolean): QtAtom[];
32
+ export declare function recurseFlattenAtoms(atoms: QtAtom[], depth?: number): Buffer;
33
+ export declare function traverseAtoms(atoms: QtAtom[], callback: (atom: QtAtom) => void): void;
34
+ export declare function isQtAtom(atomType: number): boolean;
35
+ export declare function hasSubatoms(atomType: number): boolean;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasSubatoms = exports.isQtAtom = exports.traverseAtoms = exports.recurseFlattenAtoms = exports.parseAtoms = exports.SizeKind = exports.MAX_FTYP_ATOM_SIZE = exports.ATOM_PREAMBLE_SIZE = exports.CO64_ATOM = exports.STCO_ATOM = exports.STBL_ATOM = exports.MINF_ATOM = exports.MDIA_ATOM = exports.TRAK_ATOM = exports.CMOV_ATOM = exports.UUID_ATOM = exports.FTYP_ATOM = exports.PICT_ATOM = exports.WIDE_ATOM = exports.SKIP_ATOM = exports.PNOT_ATOM = exports.MOOV_ATOM = exports.MDAT_ATOM = exports.JUNK_ATOM = exports.FREE_ATOM = void 0;
4
+ /* eslint-disable no-bitwise */
5
+ const util_1 = require("./util");
6
+ exports.FREE_ATOM = (0, util_1.asciiToU32Be)('free');
7
+ exports.JUNK_ATOM = (0, util_1.asciiToU32Be)('junk');
8
+ exports.MDAT_ATOM = (0, util_1.asciiToU32Be)('mdat');
9
+ exports.MOOV_ATOM = (0, util_1.asciiToU32Be)('moov');
10
+ exports.PNOT_ATOM = (0, util_1.asciiToU32Be)('pnot');
11
+ exports.SKIP_ATOM = (0, util_1.asciiToU32Be)('skip');
12
+ exports.WIDE_ATOM = (0, util_1.asciiToU32Be)('wide');
13
+ exports.PICT_ATOM = (0, util_1.asciiToU32Be)('PICT');
14
+ exports.FTYP_ATOM = (0, util_1.asciiToU32Be)('ftyp');
15
+ exports.UUID_ATOM = (0, util_1.asciiToU32Be)('uuid');
16
+ exports.CMOV_ATOM = (0, util_1.asciiToU32Be)('cmov');
17
+ exports.TRAK_ATOM = (0, util_1.asciiToU32Be)('trak');
18
+ exports.MDIA_ATOM = (0, util_1.asciiToU32Be)('mdia');
19
+ exports.MINF_ATOM = (0, util_1.asciiToU32Be)('minf');
20
+ exports.STBL_ATOM = (0, util_1.asciiToU32Be)('stbl');
21
+ exports.STCO_ATOM = (0, util_1.asciiToU32Be)('stco');
22
+ exports.CO64_ATOM = (0, util_1.asciiToU32Be)('co64');
23
+ exports.ATOM_PREAMBLE_SIZE = BigInt(8);
24
+ exports.MAX_FTYP_ATOM_SIZE = BigInt(1048576);
25
+ var SizeKind;
26
+ (function (SizeKind) {
27
+ SizeKind[SizeKind["U32"] = 0] = "U32";
28
+ SizeKind[SizeKind["U64"] = 1] = "U64";
29
+ })(SizeKind = exports.SizeKind || (exports.SizeKind = {}));
30
+ function parseAtoms(infile, depth = 0, shallow = false) {
31
+ const atoms = [];
32
+ const cur = {
33
+ pos: BigInt(0),
34
+ };
35
+ const len = BigInt(infile.byteLength);
36
+ while (cur.pos < len) {
37
+ if (len - cur.pos < 8) {
38
+ break;
39
+ }
40
+ let fwd; // forward-seek counter
41
+ let atomSize = BigInt((0, util_1.readU32)(cur, infile));
42
+ const atomType = (0, util_1.readU32)(cur, infile);
43
+ let sizeKind = SizeKind.U32;
44
+ if (atomSize === BigInt(1)) {
45
+ // 64-bit atom size
46
+ atomSize = (0, util_1.readU64)(cur, infile);
47
+ if (atomSize > BigInt(Number.MAX_SAFE_INTEGER)) {
48
+ throw new Error(`"${atomType}" atom size is larger than MAX_SAFE_INTEGER!`);
49
+ }
50
+ fwd = atomSize - exports.ATOM_PREAMBLE_SIZE * BigInt(2);
51
+ sizeKind = SizeKind.U64;
52
+ }
53
+ else {
54
+ fwd = atomSize - exports.ATOM_PREAMBLE_SIZE;
55
+ }
56
+ const endOfAtom = cur.pos + fwd;
57
+ const subatoms = Buffer.from(infile.slice(Number(cur.pos), Number(endOfAtom)));
58
+ const data = hasSubatoms(atomType) && depth < 10 && !shallow
59
+ ? parseAtoms(subatoms, depth + 1)
60
+ : subatoms;
61
+ cur.pos = endOfAtom;
62
+ if (depth === 0 && !isQtAtom(atomType)) {
63
+ throw new Error(`Non-QT top-level atom found: ${(0, util_1.u32BeToAscii)(atomType)}`);
64
+ }
65
+ atoms.push({
66
+ kind: (0, util_1.u32BeToAscii)(atomType),
67
+ size: atomSize,
68
+ sizeKind,
69
+ data,
70
+ });
71
+ }
72
+ return atoms;
73
+ }
74
+ exports.parseAtoms = parseAtoms;
75
+ function recurseFlattenAtoms(atoms, depth = 0) {
76
+ const buffers = [];
77
+ for (const atom of atoms) {
78
+ if (!Buffer.isBuffer(atom.data)) {
79
+ atom.data = recurseFlattenAtoms(atom.data, depth + 1);
80
+ }
81
+ let header;
82
+ const u64Size = Number(exports.ATOM_PREAMBLE_SIZE) + atom.data.byteLength > 2 ** 32 - 1;
83
+ if (u64Size) {
84
+ const u64Preamble = Number(exports.ATOM_PREAMBLE_SIZE) * 2;
85
+ header = Buffer.alloc(u64Preamble);
86
+ header.writeUInt32BE(1, 0);
87
+ header.writeUInt32BE((0, util_1.asciiToU32Be)(atom.kind), 4);
88
+ const newSize = u64Preamble + atom.data.byteLength;
89
+ header.writeUInt32BE((newSize >> 32) & 0xffffffff, 8);
90
+ header.writeUInt32BE(newSize & 0xffffffff, 12);
91
+ }
92
+ else {
93
+ header = Buffer.alloc(Number(exports.ATOM_PREAMBLE_SIZE));
94
+ const newSize = Number(exports.ATOM_PREAMBLE_SIZE) + atom.data.byteLength;
95
+ header.writeUInt32BE(newSize, 0);
96
+ header.writeUInt32BE((0, util_1.asciiToU32Be)(atom.kind), 4);
97
+ }
98
+ const buf = Buffer.concat([header, atom.data]);
99
+ buffers.push(buf);
100
+ }
101
+ return Buffer.concat(buffers);
102
+ }
103
+ exports.recurseFlattenAtoms = recurseFlattenAtoms;
104
+ function traverseAtoms(atoms, callback) {
105
+ for (const atom of atoms) {
106
+ if (!Buffer.isBuffer(atom.data)) {
107
+ traverseAtoms(atom.data, callback);
108
+ }
109
+ callback(atom);
110
+ }
111
+ }
112
+ exports.traverseAtoms = traverseAtoms;
113
+ function isQtAtom(atomType) {
114
+ return [
115
+ exports.FREE_ATOM,
116
+ exports.JUNK_ATOM,
117
+ exports.MDAT_ATOM,
118
+ exports.MOOV_ATOM,
119
+ exports.PNOT_ATOM,
120
+ exports.SKIP_ATOM,
121
+ exports.WIDE_ATOM,
122
+ exports.PICT_ATOM,
123
+ exports.FTYP_ATOM,
124
+ exports.UUID_ATOM,
125
+ exports.CMOV_ATOM,
126
+ exports.TRAK_ATOM,
127
+ exports.MDIA_ATOM,
128
+ exports.MINF_ATOM,
129
+ exports.STBL_ATOM,
130
+ exports.STCO_ATOM,
131
+ exports.CO64_ATOM,
132
+ ].includes(atomType);
133
+ }
134
+ exports.isQtAtom = isQtAtom;
135
+ function hasSubatoms(atomType) {
136
+ return [exports.MOOV_ATOM, exports.TRAK_ATOM, exports.MDIA_ATOM, exports.MINF_ATOM, exports.STBL_ATOM].includes(atomType);
137
+ }
138
+ exports.hasSubatoms = hasSubatoms;
File without changes
@@ -0,0 +1 @@
1
+ "use strict";