@remotion/renderer 4.0.405 → 4.0.407
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/assets/apply-tone-frequency.d.ts +1 -2
- package/dist/assets/convert-assets-to-file-urls.d.ts +1 -2
- package/dist/assets/download-and-map-assets-to-file.d.ts +2 -3
- package/dist/assets/download-and-map-assets-to-file.js +1 -0
- package/dist/assets/download-file.d.ts +1 -0
- package/dist/assets/download-file.js +16 -1
- package/dist/assets/download-map.d.ts +1 -0
- package/dist/assets/download-map.js +2 -0
- package/dist/assets/get-audio-channels.d.ts +2 -3
- package/dist/assets/inline-audio-mixing.d.ts +1 -2
- package/dist/browser/Browser.d.ts +5 -5
- package/dist/browser/Browser.js +65 -74
- package/dist/browser/BrowserFetcher.d.ts +3 -5
- package/dist/browser/BrowserFetcher.js +1 -0
- package/dist/browser/BrowserPage.d.ts +4 -4
- package/dist/browser/BrowserPage.js +223 -218
- package/dist/browser/BrowserRunner.d.ts +1 -2
- package/dist/browser/Connection.js +99 -112
- package/dist/browser/ConsoleMessage.d.ts +1 -1
- package/dist/browser/ConsoleMessage.js +9 -16
- package/dist/browser/DOMWorld.d.ts +1 -1
- package/dist/browser/DOMWorld.js +75 -89
- package/dist/browser/Errors.js +2 -4
- package/dist/browser/EventEmitter.js +2 -1
- package/dist/browser/ExecutionContext.js +117 -120
- package/dist/browser/FrameManager.js +249 -244
- package/dist/browser/HTTPRequest.js +11 -22
- package/dist/browser/HTTPResponse.js +3 -16
- package/dist/browser/JSHandle.js +17 -30
- package/dist/browser/LifecycleWatcher.js +122 -128
- package/dist/browser/NetworkEventManager.js +31 -40
- package/dist/browser/NetworkManager.js +210 -203
- package/dist/browser/NodeWebSocketTransport.js +3 -0
- package/dist/browser/Target.d.ts +1 -1
- package/dist/browser/Target.js +32 -39
- package/dist/browser/TaskQueue.js +5 -18
- package/dist/browser/TimeoutSettings.js +12 -25
- package/dist/browser/browser-download-progress-bar.d.ts +1 -2
- package/dist/browser/handle-failed-resource.d.ts +1 -2
- package/dist/browser/handle-failed-resource.js +4 -3
- package/dist/call-ffmpeg.d.ts +4 -5
- package/dist/can-concat-seamlessly.d.ts +2 -4
- package/dist/can-use-parallel-encoding.d.ts +1 -2
- package/dist/check-version-requirements.d.ts +1 -2
- package/dist/client.d.ts +181 -181
- package/dist/codec-supports-media.d.ts +3 -4
- package/dist/collect-assets.d.ts +1 -1
- package/dist/combine-audio.d.ts +2 -4
- package/dist/combine-chunks.d.ts +1 -2
- package/dist/combine-video-streams.d.ts +2 -4
- package/dist/compositor/compositor.d.ts +2 -3
- package/dist/compositor/get-executable-path.d.ts +3 -3
- package/dist/compress-audio.d.ts +2 -4
- package/dist/create-audio.d.ts +2 -4
- package/dist/create-silent-audio.d.ts +1 -2
- package/dist/crf.d.ts +4 -6
- package/dist/cycle-browser-tabs.d.ts +1 -2
- package/dist/ensure-browser.d.ts +44 -1
- package/dist/error-handling/handle-javascript-exception.d.ts +1 -1
- package/dist/error-handling/handle-javascript-exception.js +7 -1
- package/dist/error-handling/symbolicateable-error.d.ts +1 -1
- package/dist/error-handling/symbolicateable-error.js +4 -0
- package/dist/error-handling.js +1 -1
- package/dist/esm/client.mjs +7 -2
- package/dist/esm/index.mjs +28 -4
- package/dist/extract-audio.d.ts +2 -3
- package/dist/ffmpeg-args.d.ts +6 -12
- package/dist/get-browser-instance.d.ts +4 -6
- package/dist/get-codec-name.d.ts +3 -6
- package/dist/get-compositions.d.ts +1 -1
- package/dist/get-concurrency.d.ts +1 -1
- package/dist/get-extension-from-codec.d.ts +2 -3
- package/dist/get-frame-padded-index.d.ts +1 -2
- package/dist/get-local-browser-executable.d.ts +2 -4
- package/dist/get-prores-profile-name.d.ts +1 -3
- package/dist/get-silent-parts.d.ts +4 -5
- package/dist/get-video-metadata.d.ts +3 -4
- package/dist/get-video-threads-flag.d.ts +1 -2
- package/dist/goto-page-or-throw.d.ts +1 -1
- package/dist/guess-extension-for-media.d.ts +2 -3
- package/dist/image-format.d.ts +2 -3
- package/dist/index.d.ts +173 -172
- package/dist/index.js +16 -16
- package/dist/is-audio-codec.d.ts +1 -2
- package/dist/log-level.d.ts +1 -1
- package/dist/logger.d.ts +6 -6
- package/dist/make-page.d.ts +2 -4
- package/dist/memory/from-proc-meminfo.d.ts +1 -2
- package/dist/memory/get-available-memory.d.ts +1 -2
- package/dist/mime-types.js +2 -1
- package/dist/mux-video-and-audio.d.ts +2 -3
- package/dist/offthread-video-server.d.ts +1 -2
- package/dist/offthread-video-server.js +4 -6
- package/dist/open-browser.d.ts +1 -1
- package/dist/open-browser.js +6 -5
- package/dist/options/api-key.js +3 -1
- package/dist/options/audio-bitrate.js +9 -1
- package/dist/options/audio-codec.d.ts +10 -13
- package/dist/options/beep-on-finish.js +1 -1
- package/dist/options/binaries-directory.js +9 -1
- package/dist/options/chrome-mode.d.ts +3 -3
- package/dist/options/chrome-mode.js +6 -1
- package/dist/options/color-space.d.ts +5 -9
- package/dist/options/color-space.js +7 -1
- package/dist/options/crf.js +1 -1
- package/dist/options/cross-site-isolation.js +2 -1
- package/dist/options/dark-mode.js +2 -1
- package/dist/options/delete-after.js +11 -1
- package/dist/options/disallow-parallel-encoding.js +1 -1
- package/dist/options/enable-lambda-insights.js +2 -1
- package/dist/options/enable-multiprocess-on-linux.js +13 -1
- package/dist/options/encoding-buffer-size.js +3 -1
- package/dist/options/encoding-max-rate.js +3 -1
- package/dist/options/enforce-audio.js +1 -1
- package/dist/options/folder-expiry.js +4 -1
- package/dist/options/for-seamless-aac-concatenation.js +3 -1
- package/dist/options/gl.d.ts +6 -6
- package/dist/options/gl.js +28 -2
- package/dist/options/hardware-acceleration.d.ts +2 -2
- package/dist/options/headless.js +4 -1
- package/dist/options/image-sequence-pattern.js +5 -1
- package/dist/options/index.d.ts +25 -25
- package/dist/options/jpeg-quality.js +1 -1
- package/dist/options/latency-hint.js +10 -1
- package/dist/options/license-key.js +2 -1
- package/dist/options/log-level.d.ts +3 -4
- package/dist/options/log-level.js +16 -1
- package/dist/options/metadata.js +7 -2
- package/dist/options/mute.js +1 -1
- package/dist/options/number-of-gif-loops.js +13 -1
- package/dist/options/offthreadvideo-cache-size.js +11 -1
- package/dist/options/offthreadvideo-threads.js +2 -1
- package/dist/options/on-browser-download.js +2 -1
- package/dist/options/options-map.d.ts +93 -93
- package/dist/options/overwrite.js +5 -1
- package/dist/options/prefer-lossless.js +4 -1
- package/dist/options/public-dir.js +2 -1
- package/dist/options/public-license-key.js +3 -1
- package/dist/options/public-path.js +7 -1
- package/dist/options/repro.js +1 -1
- package/dist/options/scale.js +5 -1
- package/dist/options/timeout.js +4 -1
- package/dist/options/video-bitrate.js +7 -1
- package/dist/options/video-cache-size.js +8 -1
- package/dist/options/video-codec.d.ts +6 -6
- package/dist/options/video-codec.js +1 -1
- package/dist/options/webhook-custom-data.js +1 -1
- package/dist/options/x264-preset.d.ts +5 -6
- package/dist/options/x264-preset.js +23 -1
- package/dist/p-limit.d.ts +1 -1
- package/dist/pixel-format.d.ts +2 -3
- package/dist/pool.js +2 -0
- package/dist/port-config.d.ts +5 -6
- package/dist/prespawn-ffmpeg.js +5 -4
- package/dist/prestitcher-memory-usage.d.ts +1 -2
- package/dist/print-useful-error-message.d.ts +1 -2
- package/dist/prores-profile.d.ts +2 -4
- package/dist/puppeteer-evaluate.d.ts +2 -2
- package/dist/puppeteer-screenshot.d.ts +3 -4
- package/dist/pure.d.ts +5 -5
- package/dist/render-frame-and-retry-target-close.d.ts +8 -8
- package/dist/render-frame-with-option-to-reject.d.ts +4 -6
- package/dist/render-frame.d.ts +8 -8
- package/dist/render-has-audio.d.ts +2 -3
- package/dist/render-media.js +2 -1
- package/dist/replace-browser.d.ts +1 -2
- package/dist/repro.d.ts +1 -1
- package/dist/screenshot-task.d.ts +3 -4
- package/dist/seek-to-frame.d.ts +2 -3
- package/dist/serve-handler/index.d.ts +1 -1
- package/dist/serve-handler/range-parser.d.ts +2 -2
- package/dist/serve-static.d.ts +1 -2
- package/dist/set-props-and-env.js +3 -1
- package/dist/stringify-ffmpeg-filter.d.ts +1 -2
- package/dist/take-frame.d.ts +1 -2
- package/dist/test-gpu.d.ts +2 -4
- package/dist/validate-even-dimensions-with-codec.d.ts +2 -4
- package/dist/validate-ffmpeg-override.d.ts +1 -1
- package/dist/validate-number-of-gif-loops.d.ts +1 -2
- package/dist/validate-output-filename.d.ts +2 -4
- package/package.json +16 -14
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { LogLevel } from '../log-level';
|
|
2
1
|
import type { CancelSignal } from '../make-cancel-signal';
|
|
3
2
|
export declare const applyToneFrequencyUsingFfmpeg: ({ input, output, toneFrequency, indent, logLevel, binariesDirectory, cancelSignal, }: {
|
|
4
3
|
input: string;
|
|
5
4
|
output: string;
|
|
6
5
|
toneFrequency: number;
|
|
7
6
|
indent: boolean;
|
|
8
|
-
logLevel:
|
|
7
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
9
8
|
binariesDirectory: string | null;
|
|
10
9
|
cancelSignal: CancelSignal | undefined;
|
|
11
10
|
}) => Promise<void>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { AudioOrVideoAsset } from 'remotion/no-react';
|
|
2
|
-
import type { LogLevel } from '../log-level';
|
|
3
2
|
import type { FrameAndAssets } from '../render-frames';
|
|
4
3
|
import type { RenderMediaOnDownload } from './download-and-map-assets-to-file';
|
|
5
4
|
import type { DownloadMap } from './download-map';
|
|
@@ -8,6 +7,6 @@ export declare const convertAssetsToFileUrls: ({ assets, onDownload, downloadMap
|
|
|
8
7
|
onDownload: RenderMediaOnDownload;
|
|
9
8
|
downloadMap: DownloadMap;
|
|
10
9
|
indent: boolean;
|
|
11
|
-
logLevel:
|
|
10
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
12
11
|
binariesDirectory: string | null;
|
|
13
12
|
}) => Promise<AudioOrVideoAsset[][]>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { AudioOrVideoAsset } from 'remotion/no-react';
|
|
2
|
-
import type { LogLevel } from '../log-level';
|
|
3
2
|
import type { CancelSignal } from '../make-cancel-signal';
|
|
4
3
|
import type { DownloadMap } from './download-map';
|
|
5
4
|
export type RenderMediaOnDownload = (src: string) => ((progress: {
|
|
@@ -11,7 +10,7 @@ export declare const downloadAsset: ({ src, downloadMap, indent, logLevel, shoul
|
|
|
11
10
|
src: string;
|
|
12
11
|
downloadMap: DownloadMap;
|
|
13
12
|
indent: boolean;
|
|
14
|
-
logLevel:
|
|
13
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
15
14
|
shouldAnalyzeAudioImmediately: boolean;
|
|
16
15
|
binariesDirectory: string | null;
|
|
17
16
|
cancelSignalForAudioAnalysis: CancelSignal | undefined;
|
|
@@ -28,7 +27,7 @@ export declare const downloadAndMapAssetsToFileUrl: ({ renderAsset, onDownload,
|
|
|
28
27
|
renderAsset: AudioOrVideoAsset;
|
|
29
28
|
onDownload: RenderMediaOnDownload | null;
|
|
30
29
|
downloadMap: DownloadMap;
|
|
31
|
-
logLevel:
|
|
30
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
32
31
|
indent: boolean;
|
|
33
32
|
shouldAnalyzeAudioImmediately: boolean;
|
|
34
33
|
binariesDirectory: string | null;
|
|
@@ -188,6 +188,7 @@ const downloadAsset = async ({ src, downloadMap, indent, logLevel, shouldAnalyze
|
|
|
188
188
|
}),
|
|
189
189
|
indent,
|
|
190
190
|
logLevel,
|
|
191
|
+
abortSignal: downloadMap.cleanupController.signal,
|
|
191
192
|
});
|
|
192
193
|
notifyAssetIsDownloaded({ src, downloadMap, downloadDir, to });
|
|
193
194
|
if (shouldAnalyzeAudioImmediately) {
|
|
@@ -5,13 +5,15 @@ const node_fs_1 = require("node:fs");
|
|
|
5
5
|
const ensure_output_directory_1 = require("../ensure-output-directory");
|
|
6
6
|
const logger_1 = require("../logger");
|
|
7
7
|
const read_file_1 = require("./read-file");
|
|
8
|
+
const CANCELLED_ERROR = 'cancelled';
|
|
8
9
|
const incorrectContentLengthToken = 'Download finished with';
|
|
9
|
-
const downloadFileWithoutRetries = ({ onProgress, url, to: toFn }) => {
|
|
10
|
+
const downloadFileWithoutRetries = ({ onProgress, url, to: toFn, abortSignal, }) => {
|
|
10
11
|
return new Promise((resolve, reject) => {
|
|
11
12
|
let rejected = false;
|
|
12
13
|
let resolved = false;
|
|
13
14
|
let timeout;
|
|
14
15
|
const resolveAndFlag = (val) => {
|
|
16
|
+
abortSignal.removeEventListener('abort', onAbort);
|
|
15
17
|
resolved = true;
|
|
16
18
|
resolve(val);
|
|
17
19
|
if (timeout) {
|
|
@@ -19,6 +21,7 @@ const downloadFileWithoutRetries = ({ onProgress, url, to: toFn }) => {
|
|
|
19
21
|
}
|
|
20
22
|
};
|
|
21
23
|
const rejectAndFlag = (err) => {
|
|
24
|
+
abortSignal.removeEventListener('abort', onAbort);
|
|
22
25
|
if (timeout) {
|
|
23
26
|
clearTimeout(timeout);
|
|
24
27
|
}
|
|
@@ -39,6 +42,11 @@ const downloadFileWithoutRetries = ({ onProgress, url, to: toFn }) => {
|
|
|
39
42
|
refreshTimeout();
|
|
40
43
|
let finishEventSent = false;
|
|
41
44
|
let closeConnection = () => undefined;
|
|
45
|
+
const onAbort = () => {
|
|
46
|
+
rejectAndFlag(new Error(CANCELLED_ERROR));
|
|
47
|
+
closeConnection();
|
|
48
|
+
};
|
|
49
|
+
abortSignal.addEventListener('abort', onAbort);
|
|
42
50
|
(0, read_file_1.readFile)(url)
|
|
43
51
|
.then(({ response, request }) => {
|
|
44
52
|
var _a, _b;
|
|
@@ -46,6 +54,10 @@ const downloadFileWithoutRetries = ({ onProgress, url, to: toFn }) => {
|
|
|
46
54
|
request.destroy();
|
|
47
55
|
response.destroy();
|
|
48
56
|
};
|
|
57
|
+
if (abortSignal.aborted) {
|
|
58
|
+
onAbort();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
49
61
|
const contentDisposition = (_a = response.headers['content-disposition']) !== null && _a !== void 0 ? _a : null;
|
|
50
62
|
const contentType = (_b = response.headers['content-type']) !== null && _b !== void 0 ? _b : null;
|
|
51
63
|
const to = toFn(contentDisposition, contentType);
|
|
@@ -111,6 +123,9 @@ const downloadFile = async (options, retries = 2, attempt = 1) => {
|
|
|
111
123
|
}
|
|
112
124
|
catch (err) {
|
|
113
125
|
const { message } = err;
|
|
126
|
+
if (message === CANCELLED_ERROR) {
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
114
129
|
if (message === 'aborted' ||
|
|
115
130
|
message.includes('ECONNRESET') ||
|
|
116
131
|
message.includes(incorrectContentLengthToken) ||
|
|
@@ -46,6 +46,7 @@ const makeDownloadMap = () => {
|
|
|
46
46
|
return prevented;
|
|
47
47
|
},
|
|
48
48
|
inlineAudioMixing: (0, inline_audio_mixing_1.makeInlineAudioMixing)(dir),
|
|
49
|
+
cleanupController: new AbortController(),
|
|
49
50
|
};
|
|
50
51
|
};
|
|
51
52
|
exports.makeDownloadMap = makeDownloadMap;
|
|
@@ -53,6 +54,7 @@ const cleanDownloadMap = (downloadMap) => {
|
|
|
53
54
|
if (downloadMap.isPreventedFromCleanup()) {
|
|
54
55
|
return;
|
|
55
56
|
}
|
|
57
|
+
downloadMap.cleanupController.abort();
|
|
56
58
|
(0, delete_directory_1.deleteDirectory)(downloadMap.downloadDir);
|
|
57
59
|
(0, delete_directory_1.deleteDirectory)(downloadMap.complexFilter);
|
|
58
60
|
(0, delete_directory_1.deleteDirectory)(downloadMap.compositingDir);
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type { LogLevel } from '../log-level';
|
|
2
1
|
import type { CancelSignal } from '../make-cancel-signal';
|
|
3
2
|
import type { AudioChannelsAndDurationResultCache, DownloadMap } from './download-map';
|
|
4
3
|
export declare const getAudioChannelsAndDurationWithoutCache: ({ src, indent, logLevel, binariesDirectory, cancelSignal, audioStreamIndex, }: {
|
|
5
4
|
src: string;
|
|
6
5
|
indent: boolean;
|
|
7
|
-
logLevel:
|
|
6
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
8
7
|
binariesDirectory: string | null;
|
|
9
8
|
cancelSignal: CancelSignal | undefined;
|
|
10
9
|
audioStreamIndex: number | undefined;
|
|
@@ -13,7 +12,7 @@ export declare const getAudioChannelsAndDuration: ({ downloadMap, src, indent, l
|
|
|
13
12
|
downloadMap: DownloadMap;
|
|
14
13
|
src: string;
|
|
15
14
|
indent: boolean;
|
|
16
|
-
logLevel:
|
|
15
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
17
16
|
binariesDirectory: string | null;
|
|
18
17
|
cancelSignal: CancelSignal | undefined;
|
|
19
18
|
audioStreamIndex: number | undefined;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { InlineAudioAsset } from 'remotion/no-react';
|
|
2
|
-
import type { LogLevel } from '../log-level';
|
|
3
2
|
import type { CancelSignal } from '../make-cancel-signal';
|
|
4
3
|
export declare const makeInlineAudioMixing: (dir: string) => {
|
|
5
4
|
cleanup: () => void;
|
|
@@ -14,7 +13,7 @@ export declare const makeInlineAudioMixing: (dir: string) => {
|
|
|
14
13
|
getListOfAssets: () => string[];
|
|
15
14
|
finish: ({ binariesDirectory, indent, logLevel, cancelSignal, }: {
|
|
16
15
|
indent: boolean;
|
|
17
|
-
logLevel:
|
|
16
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
18
17
|
binariesDirectory: string | null;
|
|
19
18
|
cancelSignal: CancelSignal | undefined;
|
|
20
19
|
}) => Promise<void>;
|
|
@@ -33,7 +33,7 @@ export declare const enum BrowserEmittedEvents {
|
|
|
33
33
|
}
|
|
34
34
|
export declare class HeadlessBrowser extends EventEmitter {
|
|
35
35
|
#private;
|
|
36
|
-
static create({ defaultViewport, timeout, userDataDir, args, executablePath, logLevel, indent
|
|
36
|
+
static create({ defaultViewport, timeout, userDataDir, args, executablePath, logLevel, indent }: {
|
|
37
37
|
defaultViewport: Viewport;
|
|
38
38
|
timeout: number;
|
|
39
39
|
userDataDir: string;
|
|
@@ -46,13 +46,13 @@ export declare class HeadlessBrowser extends EventEmitter {
|
|
|
46
46
|
id: string;
|
|
47
47
|
runner: BrowserRunner;
|
|
48
48
|
get _targets(): Map<string, Target>;
|
|
49
|
-
constructor({ connection, defaultViewport, runner
|
|
49
|
+
constructor({ connection, defaultViewport, runner }: {
|
|
50
50
|
connection: Connection;
|
|
51
51
|
defaultViewport: Viewport;
|
|
52
52
|
runner: BrowserRunner;
|
|
53
53
|
});
|
|
54
54
|
browserContexts(): BrowserContext[];
|
|
55
|
-
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog
|
|
55
|
+
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog }: {
|
|
56
56
|
context: SourceMapGetter;
|
|
57
57
|
logLevel: LogLevel;
|
|
58
58
|
indent: boolean;
|
|
@@ -60,7 +60,7 @@ export declare class HeadlessBrowser extends EventEmitter {
|
|
|
60
60
|
onBrowserLog: null | ((log: BrowserLog) => void);
|
|
61
61
|
onLog: OnLog;
|
|
62
62
|
}): Promise<Page>;
|
|
63
|
-
_createPageInContext({ context, logLevel, indent, pageIndex, onBrowserLog, onLog
|
|
63
|
+
_createPageInContext({ context, logLevel, indent, pageIndex, onBrowserLog, onLog }: {
|
|
64
64
|
context: SourceMapGetter;
|
|
65
65
|
logLevel: LogLevel;
|
|
66
66
|
indent: boolean;
|
|
@@ -84,7 +84,7 @@ export declare class BrowserContext extends EventEmitter {
|
|
|
84
84
|
timeout?: number;
|
|
85
85
|
}): Promise<Target>;
|
|
86
86
|
pages(): Promise<Page[]>;
|
|
87
|
-
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog
|
|
87
|
+
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog }: {
|
|
88
88
|
context: SourceMapGetter;
|
|
89
89
|
logLevel: LogLevel;
|
|
90
90
|
indent: boolean;
|
package/dist/browser/Browser.js
CHANGED
|
@@ -14,18 +14,6 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
18
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
19
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
20
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
21
|
-
};
|
|
22
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
23
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
24
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
25
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
26
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
27
|
-
};
|
|
28
|
-
var _HeadlessBrowser_instances, _HeadlessBrowser_defaultViewport, _HeadlessBrowser_defaultContext, _HeadlessBrowser_contexts, _HeadlessBrowser_targets, _HeadlessBrowser_targetCreated, _HeadlessBrowser_targetDestroyed, _HeadlessBrowser_targetInfoChanged, _BrowserContext_browser;
|
|
29
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
18
|
exports.BrowserContext = exports.HeadlessBrowser = void 0;
|
|
31
19
|
const assert_1 = require("./assert");
|
|
@@ -51,32 +39,74 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
51
39
|
await runner.connection.send('Target.setDiscoverTargets', { discover: true });
|
|
52
40
|
return browser;
|
|
53
41
|
}
|
|
42
|
+
#defaultViewport;
|
|
43
|
+
connection;
|
|
44
|
+
#defaultContext;
|
|
45
|
+
#contexts;
|
|
46
|
+
#targets;
|
|
47
|
+
id;
|
|
48
|
+
runner;
|
|
54
49
|
get _targets() {
|
|
55
|
-
return
|
|
50
|
+
return this.#targets;
|
|
56
51
|
}
|
|
57
52
|
constructor({ connection, defaultViewport, runner, }) {
|
|
58
53
|
super();
|
|
59
|
-
|
|
60
|
-
_HeadlessBrowser_defaultViewport.set(this, void 0);
|
|
61
|
-
_HeadlessBrowser_defaultContext.set(this, void 0);
|
|
62
|
-
_HeadlessBrowser_contexts.set(this, void 0);
|
|
63
|
-
_HeadlessBrowser_targets.set(this, void 0);
|
|
64
|
-
__classPrivateFieldSet(this, _HeadlessBrowser_defaultViewport, defaultViewport, "f");
|
|
54
|
+
this.#defaultViewport = defaultViewport;
|
|
65
55
|
this.connection = connection;
|
|
66
56
|
this.id = Math.random().toString(36).substring(2, 15);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this.connection.on('Target.targetCreated',
|
|
71
|
-
this.connection.on('Target.targetDestroyed',
|
|
72
|
-
this.connection.on('Target.targetInfoChanged',
|
|
57
|
+
this.#defaultContext = new BrowserContext(this);
|
|
58
|
+
this.#contexts = new Map();
|
|
59
|
+
this.#targets = new Map();
|
|
60
|
+
this.connection.on('Target.targetCreated', this.#targetCreated.bind(this));
|
|
61
|
+
this.connection.on('Target.targetDestroyed', this.#targetDestroyed.bind(this));
|
|
62
|
+
this.connection.on('Target.targetInfoChanged', this.#targetInfoChanged.bind(this));
|
|
73
63
|
this.runner = runner;
|
|
74
64
|
}
|
|
75
65
|
browserContexts() {
|
|
76
|
-
return [
|
|
66
|
+
return [this.#defaultContext, ...Array.from(this.#contexts.values())];
|
|
67
|
+
}
|
|
68
|
+
async #targetCreated(event) {
|
|
69
|
+
var _a;
|
|
70
|
+
const { targetInfo } = event;
|
|
71
|
+
const { browserContextId } = targetInfo;
|
|
72
|
+
const context = browserContextId && this.#contexts.has(browserContextId)
|
|
73
|
+
? this.#contexts.get(browserContextId)
|
|
74
|
+
: this.#defaultContext;
|
|
75
|
+
if (!context) {
|
|
76
|
+
throw new Error('Missing browser context');
|
|
77
|
+
}
|
|
78
|
+
const target = new Target_1.Target(targetInfo, context, () => {
|
|
79
|
+
return this.connection.createSession(targetInfo);
|
|
80
|
+
}, (_a = this.#defaultViewport) !== null && _a !== void 0 ? _a : null);
|
|
81
|
+
(0, assert_1.assert)(!this.#targets.has(event.targetInfo.targetId), 'Target should not exist before targetCreated');
|
|
82
|
+
this.#targets.set(event.targetInfo.targetId, target);
|
|
83
|
+
if (await target._initializedPromise) {
|
|
84
|
+
this.emit("targetcreated" /* BrowserEmittedEvents.TargetCreated */, target);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
#targetDestroyed(event) {
|
|
88
|
+
const target = this.#targets.get(event.targetId);
|
|
89
|
+
if (!target) {
|
|
90
|
+
throw new Error(`Missing target in _targetDestroyed (id = ${event.targetId})`);
|
|
91
|
+
}
|
|
92
|
+
target._initializedCallback(false);
|
|
93
|
+
this.#targets.delete(event.targetId);
|
|
94
|
+
target._closedCallback();
|
|
95
|
+
}
|
|
96
|
+
#targetInfoChanged(event) {
|
|
97
|
+
const target = this.#targets.get(event.targetInfo.targetId);
|
|
98
|
+
if (!target) {
|
|
99
|
+
throw new Error(`Missing target in targetInfoChanged (id = ${event.targetInfo.targetId})`);
|
|
100
|
+
}
|
|
101
|
+
const previousURL = target.url();
|
|
102
|
+
const wasInitialized = target._isInitialized;
|
|
103
|
+
target._targetInfoChanged(event.targetInfo);
|
|
104
|
+
if (wasInitialized && previousURL !== target.url()) {
|
|
105
|
+
this.emit("targetchanged" /* BrowserEmittedEvents.TargetChanged */, target);
|
|
106
|
+
}
|
|
77
107
|
}
|
|
78
108
|
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog, }) {
|
|
79
|
-
return
|
|
109
|
+
return this.#defaultContext.newPage({
|
|
80
110
|
context,
|
|
81
111
|
logLevel,
|
|
82
112
|
indent,
|
|
@@ -90,7 +120,7 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
90
120
|
url: 'about:blank',
|
|
91
121
|
browserContextId: undefined,
|
|
92
122
|
});
|
|
93
|
-
const target =
|
|
123
|
+
const target = this.#targets.get(targetId);
|
|
94
124
|
if (!target) {
|
|
95
125
|
throw new Error(`Missing target for page (id = ${targetId})`);
|
|
96
126
|
}
|
|
@@ -112,7 +142,7 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
112
142
|
return page;
|
|
113
143
|
}
|
|
114
144
|
targets() {
|
|
115
|
-
return Array.from(
|
|
145
|
+
return Array.from(this.#targets.values()).filter((target) => {
|
|
116
146
|
return target._isInitialized;
|
|
117
147
|
});
|
|
118
148
|
}
|
|
@@ -166,57 +196,19 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
|
166
196
|
}
|
|
167
197
|
}
|
|
168
198
|
exports.HeadlessBrowser = HeadlessBrowser;
|
|
169
|
-
_HeadlessBrowser_defaultViewport = new WeakMap(), _HeadlessBrowser_defaultContext = new WeakMap(), _HeadlessBrowser_contexts = new WeakMap(), _HeadlessBrowser_targets = new WeakMap(), _HeadlessBrowser_instances = new WeakSet(), _HeadlessBrowser_targetCreated = async function _HeadlessBrowser_targetCreated(event) {
|
|
170
|
-
var _a;
|
|
171
|
-
const { targetInfo } = event;
|
|
172
|
-
const { browserContextId } = targetInfo;
|
|
173
|
-
const context = browserContextId && __classPrivateFieldGet(this, _HeadlessBrowser_contexts, "f").has(browserContextId)
|
|
174
|
-
? __classPrivateFieldGet(this, _HeadlessBrowser_contexts, "f").get(browserContextId)
|
|
175
|
-
: __classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f");
|
|
176
|
-
if (!context) {
|
|
177
|
-
throw new Error('Missing browser context');
|
|
178
|
-
}
|
|
179
|
-
const target = new Target_1.Target(targetInfo, context, () => {
|
|
180
|
-
return this.connection.createSession(targetInfo);
|
|
181
|
-
}, (_a = __classPrivateFieldGet(this, _HeadlessBrowser_defaultViewport, "f")) !== null && _a !== void 0 ? _a : null);
|
|
182
|
-
(0, assert_1.assert)(!__classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").has(event.targetInfo.targetId), 'Target should not exist before targetCreated');
|
|
183
|
-
__classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").set(event.targetInfo.targetId, target);
|
|
184
|
-
if (await target._initializedPromise) {
|
|
185
|
-
this.emit("targetcreated" /* BrowserEmittedEvents.TargetCreated */, target);
|
|
186
|
-
}
|
|
187
|
-
}, _HeadlessBrowser_targetDestroyed = function _HeadlessBrowser_targetDestroyed(event) {
|
|
188
|
-
const target = __classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").get(event.targetId);
|
|
189
|
-
if (!target) {
|
|
190
|
-
throw new Error(`Missing target in _targetDestroyed (id = ${event.targetId})`);
|
|
191
|
-
}
|
|
192
|
-
target._initializedCallback(false);
|
|
193
|
-
__classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").delete(event.targetId);
|
|
194
|
-
target._closedCallback();
|
|
195
|
-
}, _HeadlessBrowser_targetInfoChanged = function _HeadlessBrowser_targetInfoChanged(event) {
|
|
196
|
-
const target = __classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").get(event.targetInfo.targetId);
|
|
197
|
-
if (!target) {
|
|
198
|
-
throw new Error(`Missing target in targetInfoChanged (id = ${event.targetInfo.targetId})`);
|
|
199
|
-
}
|
|
200
|
-
const previousURL = target.url();
|
|
201
|
-
const wasInitialized = target._isInitialized;
|
|
202
|
-
target._targetInfoChanged(event.targetInfo);
|
|
203
|
-
if (wasInitialized && previousURL !== target.url()) {
|
|
204
|
-
this.emit("targetchanged" /* BrowserEmittedEvents.TargetChanged */, target);
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
199
|
class BrowserContext extends EventEmitter_1.EventEmitter {
|
|
200
|
+
#browser;
|
|
208
201
|
constructor(browser) {
|
|
209
202
|
super();
|
|
210
|
-
|
|
211
|
-
__classPrivateFieldSet(this, _BrowserContext_browser, browser, "f");
|
|
203
|
+
this.#browser = browser;
|
|
212
204
|
}
|
|
213
205
|
targets() {
|
|
214
|
-
return
|
|
206
|
+
return this.#browser.targets().filter((target) => {
|
|
215
207
|
return target.browserContext() === this;
|
|
216
208
|
});
|
|
217
209
|
}
|
|
218
210
|
waitForTarget(predicate, options = {}) {
|
|
219
|
-
return
|
|
211
|
+
return this.#browser.waitForTarget((target) => {
|
|
220
212
|
return target.browserContext() === this && predicate(target);
|
|
221
213
|
}, options);
|
|
222
214
|
}
|
|
@@ -229,7 +221,7 @@ class BrowserContext extends EventEmitter_1.EventEmitter {
|
|
|
229
221
|
});
|
|
230
222
|
}
|
|
231
223
|
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog, }) {
|
|
232
|
-
return
|
|
224
|
+
return this.#browser._createPageInContext({
|
|
233
225
|
context,
|
|
234
226
|
logLevel,
|
|
235
227
|
indent,
|
|
@@ -239,8 +231,7 @@ class BrowserContext extends EventEmitter_1.EventEmitter {
|
|
|
239
231
|
});
|
|
240
232
|
}
|
|
241
233
|
browser() {
|
|
242
|
-
return
|
|
234
|
+
return this.#browser;
|
|
243
235
|
}
|
|
244
236
|
}
|
|
245
237
|
exports.BrowserContext = BrowserContext;
|
|
246
|
-
_BrowserContext_browser = new WeakMap();
|
|
@@ -13,8 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import type { LogLevel } from '../log-level';
|
|
17
|
-
import { ChromeMode } from '../options/chrome-mode';
|
|
18
16
|
import type { DownloadBrowserProgressFn } from '../options/on-browser-download';
|
|
19
17
|
interface BrowserFetcherRevisionInfo {
|
|
20
18
|
folderPath: string;
|
|
@@ -23,11 +21,11 @@ interface BrowserFetcherRevisionInfo {
|
|
|
23
21
|
local: boolean;
|
|
24
22
|
}
|
|
25
23
|
export declare const downloadBrowser: ({ logLevel, indent, onProgress, version, chromeMode, }: {
|
|
26
|
-
logLevel:
|
|
24
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
27
25
|
indent: boolean;
|
|
28
26
|
onProgress: DownloadBrowserProgressFn;
|
|
29
27
|
version: string | null;
|
|
30
|
-
chromeMode:
|
|
28
|
+
chromeMode: "chrome-for-testing" | "headless-shell";
|
|
31
29
|
}) => Promise<BrowserFetcherRevisionInfo | undefined>;
|
|
32
|
-
export declare const getRevisionInfo: (chromeMode:
|
|
30
|
+
export declare const getRevisionInfo: (chromeMode: "chrome-for-testing" | "headless-shell") => BrowserFetcherRevisionInfo;
|
|
33
31
|
export {};
|
|
@@ -146,6 +146,7 @@ const downloadBrowser = async ({ logLevel, indent, onProgress, version, chromeMo
|
|
|
146
146
|
},
|
|
147
147
|
indent,
|
|
148
148
|
logLevel,
|
|
149
|
+
abortSignal: new AbortController().signal,
|
|
149
150
|
});
|
|
150
151
|
await (0, extract_zip_1.default)(archivePath, { dir: outputPath });
|
|
151
152
|
const chromePath = path.join(outputPath, 'chrome-linux', 'chrome');
|
|
@@ -24,7 +24,7 @@ interface PageEventObject {
|
|
|
24
24
|
error: Error;
|
|
25
25
|
disposed: undefined;
|
|
26
26
|
}
|
|
27
|
-
export type OnLog = ({ logLevel, previewString, tag
|
|
27
|
+
export type OnLog = ({ logLevel, previewString, tag }: {
|
|
28
28
|
logLevel: LogLevel;
|
|
29
29
|
tag: string;
|
|
30
30
|
previewString: string;
|
|
@@ -32,7 +32,7 @@ export type OnLog = ({ logLevel, previewString, tag, }: {
|
|
|
32
32
|
export declare class Page extends EventEmitter {
|
|
33
33
|
#private;
|
|
34
34
|
id: string;
|
|
35
|
-
static _create({ client, target, defaultViewport, browser, sourceMapGetter, logLevel, indent, pageIndex, onBrowserLog, onLog
|
|
35
|
+
static _create({ client, target, defaultViewport, browser, sourceMapGetter, logLevel, indent, pageIndex, onBrowserLog, onLog }: {
|
|
36
36
|
client: CDPSession;
|
|
37
37
|
target: Target;
|
|
38
38
|
defaultViewport: Viewport;
|
|
@@ -53,7 +53,7 @@ export declare class Page extends EventEmitter {
|
|
|
53
53
|
pageIndex: number;
|
|
54
54
|
onBrowserLog: null | ((log: BrowserLog) => void);
|
|
55
55
|
onLog: OnLog;
|
|
56
|
-
constructor({ client, target, browser, sourceMapGetter, logLevel, indent, pageIndex, onBrowserLog, onLog
|
|
56
|
+
constructor({ client, target, browser, sourceMapGetter, logLevel, indent, pageIndex, onBrowserLog, onLog }: {
|
|
57
57
|
client: CDPSession;
|
|
58
58
|
target: Target;
|
|
59
59
|
browser: HeadlessBrowser;
|
|
@@ -86,7 +86,7 @@ export declare class Page extends EventEmitter {
|
|
|
86
86
|
setDefaultTimeout(timeout: number): void;
|
|
87
87
|
evaluateHandle<HandlerType extends JSHandle = JSHandle>(pageFunction: EvaluateHandleFn, ...args: SerializableOrJSHandle[]): Promise<HandlerType>;
|
|
88
88
|
url(): string;
|
|
89
|
-
goto({ url, timeout, options
|
|
89
|
+
goto({ url, timeout, options }: {
|
|
90
90
|
url: string;
|
|
91
91
|
timeout: number;
|
|
92
92
|
options?: WaitForOptions & {
|