@remotion/renderer 3.0.28 → 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.
- package/dist/abort.d.ts +7 -0
- package/dist/abort.js +20 -0
- package/dist/assets/download-and-map-assets-to-file.js +6 -3
- package/dist/browser/Browser.d.ts +1 -1
- package/dist/browser/{page.d.ts → BrowserPage.d.ts} +0 -0
- package/dist/browser/{page.js → BrowserPage.js} +0 -0
- package/dist/browser/FrameManager.d.ts +1 -1
- package/dist/browser/Page.d.ts +74 -0
- package/dist/browser/Page.js +283 -0
- package/dist/browser/Target.d.ts +1 -1
- package/dist/browser/Target.js +2 -2
- package/dist/browser/ws.d.ts +287 -0
- package/dist/browser/ws.js +21 -0
- package/dist/cancel.d.ts +7 -0
- package/dist/cancel.js +25 -0
- package/dist/codec-supports-media.d.ts +7 -0
- package/dist/codec-supports-media.js +49 -0
- package/dist/ensure-faststart.d.ts +1 -0
- package/dist/ensure-faststart.js +14 -0
- package/dist/ensure-presentation-timestamp.js +20 -9
- package/dist/error-handling/handle-javascript-exception.d.ts +1 -1
- package/dist/extract-frame-from-video.d.ts +1 -0
- package/dist/faststart/atom.d.ts +35 -0
- package/dist/faststart/atom.js +138 -0
- package/dist/faststart/index.d.ts +0 -0
- package/dist/faststart/index.js +1 -0
- package/dist/faststart/options.d.ts +6 -0
- package/dist/faststart/options.js +2 -0
- package/dist/faststart/qt-faststart.d.ts +18 -0
- package/dist/faststart/qt-faststart.js +66 -0
- package/dist/faststart/update-chunk-offsets.d.ts +10 -0
- package/dist/faststart/update-chunk-offsets.js +114 -0
- package/dist/faststart/util.d.ts +9 -0
- package/dist/faststart/util.js +34 -0
- package/dist/get-browser-instance.d.ts +1 -1
- package/dist/get-extension-from-codec.d.ts +1 -1
- package/dist/guess-extension-for-media.d.ts +1 -0
- package/dist/guess-extension-for-media.js +27 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -0
- package/dist/last-frame-from-video-cache.d.ts +1 -0
- package/dist/offthread/index.d.ts +0 -0
- package/dist/offthread/index.js +1 -0
- package/dist/provide-screenshot.d.ts +2 -1
- package/dist/puppeteer-evaluate.d.ts +1 -1
- package/dist/puppeteer-screenshot.d.ts +2 -1
- package/dist/render-gif.d.ts +2 -0
- package/dist/render-gif.js +242 -0
- package/dist/render-media.d.ts +1 -0
- package/dist/screenshot-dom-element.d.ts +2 -1
- package/dist/screenshot-task.d.ts +2 -1
- package/dist/seek-to-frame.d.ts +1 -1
- package/dist/set-props-and-env.d.ts +1 -1
- package/dist/should-use-vp9-decoder.d.ts +0 -0
- package/dist/should-use-vp9-decoder.js +1 -0
- package/dist/stitch-frames-to-gif.d.ts +8 -0
- package/dist/stitch-frames-to-gif.js +128 -0
- package/dist/validate-concurrency.d.ts +1 -0
- package/dist/validate-concurrency.js +24 -0
- package/dist/validate-offthreadvideo-image-format.d.ts +1 -0
- package/dist/validate-offthreadvideo-image-format.js +15 -0
- package/dist/ws/buffer-util.d.ts +10 -0
- package/dist/ws/buffer-util.js +123 -0
- package/dist/ws/constants.d.ts +10 -0
- package/dist/ws/constants.js +13 -0
- package/dist/ws/event-target.d.ts +155 -0
- package/dist/ws/event-target.js +203 -0
- package/dist/ws/extension.d.ts +16 -0
- package/dist/ws/extension.js +232 -0
- package/dist/ws/limiter.d.ts +34 -0
- package/dist/ws/limiter.js +41 -0
- package/dist/ws/permessage_deflate.d.ts +152 -0
- package/dist/ws/permessage_deflate.js +409 -0
- package/package.json +3 -3
- package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
- package/dist/assets/calculate-asset-positions.js.map +0 -1
- package/dist/assets/calculate-atempo.d.ts.map +0 -1
- package/dist/assets/calculate-atempo.js.map +0 -1
- package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
- package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
- package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
- package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
- package/dist/assets/download-file.d.ts.map +0 -1
- package/dist/assets/download-file.js.map +0 -1
- package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
- package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
- package/dist/assets/flatten-volume-array.d.ts.map +0 -1
- package/dist/assets/flatten-volume-array.js.map +0 -1
- package/dist/assets/get-audio-channels.d.ts.map +0 -1
- package/dist/assets/get-audio-channels.js.map +0 -1
- package/dist/assets/read-file.d.ts.map +0 -1
- package/dist/assets/read-file.js.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
- package/dist/assets/sanitize-filename.d.ts.map +0 -1
- package/dist/assets/sanitize-filename.js.map +0 -1
- package/dist/assets/sanitize-filepath.d.ts.map +0 -1
- package/dist/assets/sanitize-filepath.js.map +0 -1
- package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
- package/dist/assets/truncate-utf8-bytes.js.map +0 -1
- package/dist/assets/types.d.ts.map +0 -1
- package/dist/assets/types.js.map +0 -1
- package/dist/browser/Accessibility.d.ts +0 -175
- package/dist/browser/Accessibility.js +0 -423
- package/dist/browser/AriaQueryHandler.d.ts +0 -20
- package/dist/browser/AriaQueryHandler.js +0 -108
- package/dist/browser/Coverage.d.ts +0 -180
- package/dist/browser/Coverage.js +0 -371
- package/dist/browser/Debug.d.ts +0 -19
- package/dist/browser/Debug.js +0 -42
- package/dist/browser/DeviceDescriptors.d.ts +0 -40
- package/dist/browser/DeviceDescriptors.js +0 -1407
- package/dist/browser/FileChooser.d.ts +0 -56
- package/dist/browser/FileChooser.js +0 -86
- package/dist/browser/Input.d.ts +0 -355
- package/dist/browser/Input.js +0 -592
- package/dist/browser/NetworkConditions.d.ts +0 -26
- package/dist/browser/NetworkConditions.js +0 -33
- package/dist/browser/PDFOptions.d.ts +0 -165
- package/dist/browser/PDFOptions.js +0 -34
- package/dist/browser/PipeTransport.d.ts +0 -10
- package/dist/browser/PipeTransport.js +0 -86
- package/dist/browser/Puppeteer.d.ts +0 -35
- package/dist/browser/Puppeteer.js +0 -17
- package/dist/browser/QueryHandler.d.ts +0 -64
- package/dist/browser/QueryHandler.js +0 -183
- package/dist/browser/SecurityDetails.d.ts +0 -55
- package/dist/browser/SecurityDetails.js +0 -95
- package/dist/browser/Tracing.d.ts +0 -45
- package/dist/browser/Tracing.js +0 -136
- package/dist/browser/USKeyboardLayout.d.ts +0 -39
- package/dist/browser/USKeyboardLayout.js +0 -406
- package/dist/browser/WebWorker.d.ts +0 -96
- package/dist/browser/WebWorker.js +0 -122
- package/dist/browser/dialog.d.ts +0 -70
- package/dist/browser/dialog.js +0 -114
- package/dist/browser/fetch.d.ts +0 -16
- package/dist/browser/fetch.js +0 -46
- package/dist/browser/find-up.d.ts +0 -4
- package/dist/browser/find-up.js +0 -85
- package/dist/browser/pkg-dir.d.ts +0 -3
- package/dist/browser/pkg-dir.js +0 -13
- package/dist/browser-log.d.ts.map +0 -1
- package/dist/browser-log.js.map +0 -1
- package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
- package/dist/calculate-ffmpeg-filters.js.map +0 -1
- package/dist/can-use-parallel-encoding.d.ts.map +0 -1
- package/dist/can-use-parallel-encoding.js.map +0 -1
- package/dist/chunk.d.ts.map +0 -1
- package/dist/chunk.js.map +0 -1
- package/dist/combine-videos.d.ts.map +0 -1
- package/dist/combine-videos.js.map +0 -1
- package/dist/convert-to-pcm.d.ts.map +0 -1
- package/dist/convert-to-pcm.js.map +0 -1
- package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-complex-filter.js.map +0 -1
- package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-merge-filter.js.map +0 -1
- package/dist/create-silent-audio.d.ts.map +0 -1
- package/dist/create-silent-audio.js.map +0 -1
- package/dist/cycle-browser-tabs.d.ts.map +0 -1
- package/dist/cycle-browser-tabs.js.map +0 -1
- package/dist/delay-render-embedded-stack.d.ts.map +0 -1
- package/dist/delay-render-embedded-stack.js.map +0 -1
- package/dist/delete-directory.d.ts.map +0 -1
- package/dist/delete-directory.js.map +0 -1
- package/dist/ensure-frames-in-order.d.ts.map +0 -1
- package/dist/ensure-frames-in-order.js.map +0 -1
- package/dist/ensure-output-directory.d.ts.map +0 -1
- package/dist/ensure-output-directory.js.map +0 -1
- package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
- package/dist/error-handling/handle-javascript-exception.js.map +0 -1
- package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicate-error.js.map +0 -1
- package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicateable-error.js.map +0 -1
- package/dist/ffmpeg-filter-file.d.ts.map +0 -1
- package/dist/ffmpeg-filter-file.js.map +0 -1
- package/dist/ffmpeg-flags.d.ts.map +0 -1
- package/dist/ffmpeg-flags.js.map +0 -1
- package/dist/get-audio-codec-name.d.ts.map +0 -1
- package/dist/get-audio-codec-name.js.map +0 -1
- package/dist/get-browser-instance.d.ts.map +0 -1
- package/dist/get-browser-instance.js.map +0 -1
- package/dist/get-codec-name.d.ts.map +0 -1
- package/dist/get-codec-name.js.map +0 -1
- package/dist/get-compositions.d.ts.map +0 -1
- package/dist/get-compositions.js.map +0 -1
- package/dist/get-concurrency.d.ts.map +0 -1
- package/dist/get-concurrency.js.map +0 -1
- package/dist/get-duration-from-frame-range.d.ts.map +0 -1
- package/dist/get-duration-from-frame-range.js.map +0 -1
- package/dist/get-extension-from-codec.d.ts.map +0 -1
- package/dist/get-extension-from-codec.js.map +0 -1
- package/dist/get-format-for-codec.d.ts +0 -2
- package/dist/get-format-for-codec.js +0 -34
- package/dist/get-frame-to-render.d.ts.map +0 -1
- package/dist/get-frame-to-render.js.map +0 -1
- package/dist/get-local-browser-executable.d.ts.map +0 -1
- package/dist/get-local-browser-executable.js.map +0 -1
- package/dist/get-port.d.ts.map +0 -1
- package/dist/get-port.js.map +0 -1
- package/dist/get-prores-profile-name.d.ts.map +0 -1
- package/dist/get-prores-profile-name.js.map +0 -1
- package/dist/image-format.d.ts.map +0 -1
- package/dist/image-format.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/is-serve-url.d.ts.map +0 -1
- package/dist/is-serve-url.js.map +0 -1
- package/dist/legacy-webpack-config.d.ts.map +0 -1
- package/dist/legacy-webpack-config.js.map +0 -1
- package/dist/make-assets-download-dir.d.ts.map +0 -1
- package/dist/make-assets-download-dir.js.map +0 -1
- package/dist/merge-audio-track.d.ts.map +0 -1
- package/dist/merge-audio-track.js.map +0 -1
- package/dist/normalize-serve-url.d.ts.map +0 -1
- package/dist/normalize-serve-url.js.map +0 -1
- package/dist/open-browser.d.ts.map +0 -1
- package/dist/open-browser.js.map +0 -1
- package/dist/p-limit.d.ts.map +0 -1
- package/dist/p-limit.js.map +0 -1
- package/dist/parse-browser-error-stack.d.ts.map +0 -1
- package/dist/parse-browser-error-stack.js.map +0 -1
- package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
- package/dist/parse-ffmpeg-progress.js.map +0 -1
- package/dist/pool.d.ts.map +0 -1
- package/dist/pool.js.map +0 -1
- package/dist/prepare-server.d.ts.map +0 -1
- package/dist/prepare-server.js.map +0 -1
- package/dist/preprocess-audio-track.d.ts.map +0 -1
- package/dist/preprocess-audio-track.js.map +0 -1
- package/dist/prespawn-ffmpeg.d.ts.map +0 -1
- package/dist/prespawn-ffmpeg.js.map +0 -1
- package/dist/provide-screenshot.d.ts.map +0 -1
- package/dist/provide-screenshot.js.map +0 -1
- package/dist/puppeteer-evaluate.d.ts.map +0 -1
- package/dist/puppeteer-evaluate.js.map +0 -1
- package/dist/puppeteer-screenshot.d.ts.map +0 -1
- package/dist/puppeteer-screenshot.js.map +0 -1
- package/dist/render-frames.d.ts.map +0 -1
- package/dist/render-frames.js.map +0 -1
- package/dist/render-media.d.ts.map +0 -1
- package/dist/render-media.js.map +0 -1
- package/dist/render-still.d.ts.map +0 -1
- package/dist/render-still.js.map +0 -1
- package/dist/resolve-asset-src.d.ts.map +0 -1
- package/dist/resolve-asset-src.js.map +0 -1
- package/dist/sample-rate.d.ts.map +0 -1
- package/dist/sample-rate.js.map +0 -1
- package/dist/screenshot-dom-element.d.ts.map +0 -1
- package/dist/screenshot-dom-element.js.map +0 -1
- package/dist/screenshot-task.d.ts.map +0 -1
- package/dist/screenshot-task.js.map +0 -1
- package/dist/seek-to-frame.d.ts.map +0 -1
- package/dist/seek-to-frame.js.map +0 -1
- package/dist/serve-static.d.ts.map +0 -1
- package/dist/serve-static.js.map +0 -1
- package/dist/set-props-and-env.d.ts.map +0 -1
- package/dist/set-props-and-env.js.map +0 -1
- package/dist/stitch-frames-to-video.d.ts.map +0 -1
- package/dist/stitch-frames-to-video.js.map +0 -1
- package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
- package/dist/stringify-ffmpeg-filter.js.map +0 -1
- package/dist/symbolicate-stacktrace.d.ts.map +0 -1
- package/dist/symbolicate-stacktrace.js.map +0 -1
- package/dist/tmp-dir.d.ts.map +0 -1
- package/dist/tmp-dir.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
- package/dist/validate-even-dimensions-with-codec.js.map +0 -1
- package/dist/validate-ffmpeg.d.ts.map +0 -1
- package/dist/validate-ffmpeg.js.map +0 -1
- package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
- package/dist/validate-puppeteer-timeout.js.map +0 -1
- package/dist/validate-scale.d.ts.map +0 -1
- package/dist/validate-scale.js.map +0 -1
|
@@ -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");
|
package/dist/cancel.d.ts
ADDED
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,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;
|
|
@@ -7,8 +7,26 @@ exports.ensurePresentationTimestamps = void 0;
|
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
8
|
const promises_1 = require("fs/promises");
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const remotion_1 = require("remotion");
|
|
11
|
+
const guess_extension_for_media_1 = require("./guess-extension-for-media");
|
|
10
12
|
const ensureFileHasPresentationTimestamp = {};
|
|
11
13
|
let callbacks = [];
|
|
14
|
+
const getTemporaryOutputName = async (src) => {
|
|
15
|
+
const parts = src.split(path_1.default.sep);
|
|
16
|
+
// If there is no file extension for the video, then we need to temporarily add an extension
|
|
17
|
+
const lastPart = parts[parts.length - 1];
|
|
18
|
+
const extraExtension = lastPart.includes('.')
|
|
19
|
+
? null
|
|
20
|
+
: await (0, guess_extension_for_media_1.guessExtensionForVideo)(src);
|
|
21
|
+
return parts
|
|
22
|
+
.map((p, i) => {
|
|
23
|
+
if (i === parts.length - 1) {
|
|
24
|
+
return [`pts-${p}`, extraExtension].filter(remotion_1.Internals.truthy).join('.');
|
|
25
|
+
}
|
|
26
|
+
return p;
|
|
27
|
+
})
|
|
28
|
+
.join(path_1.default.sep);
|
|
29
|
+
};
|
|
12
30
|
const ensurePresentationTimestamps = async (src) => {
|
|
13
31
|
if (ensureFileHasPresentationTimestamp[src] === 'encoding') {
|
|
14
32
|
return new Promise((resolve) => {
|
|
@@ -22,15 +40,8 @@ const ensurePresentationTimestamps = async (src) => {
|
|
|
22
40
|
return;
|
|
23
41
|
}
|
|
24
42
|
ensureFileHasPresentationTimestamp[src] = 'encoding';
|
|
25
|
-
|
|
26
|
-
const output =
|
|
27
|
-
.map((p, i) => {
|
|
28
|
-
if (i === parts.length - 1) {
|
|
29
|
-
return `pts-${p}`;
|
|
30
|
-
}
|
|
31
|
-
return p;
|
|
32
|
-
})
|
|
33
|
-
.join(path_1.default.sep);
|
|
43
|
+
// If there is no file extension for the video, then we need to tempoa
|
|
44
|
+
const output = await getTemporaryOutputName(src);
|
|
34
45
|
await (0, execa_1.default)('ffmpeg', [
|
|
35
46
|
'-i',
|
|
36
47
|
src,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Page } from '../browser/
|
|
1
|
+
import type { Page } from '../browser/BrowserPage';
|
|
2
2
|
import type { SymbolicatedStackFrame } from '../symbolicate-stacktrace';
|
|
3
3
|
export declare class ErrorWithStackFrame extends Error {
|
|
4
4
|
symbolicatedStackFrames: SymbolicatedStackFrame[] | null;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import type { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
|
|
2
3
|
import type { LastFrameOptions } from './last-frame-from-video-cache';
|
|
3
4
|
export declare const getLastFrameOfVideo: (options: LastFrameOptions) => Promise<Buffer>;
|
|
@@ -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";
|