@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.
Files changed (181) hide show
  1. package/dist/assets/apply-tone-frequency.d.ts +1 -2
  2. package/dist/assets/convert-assets-to-file-urls.d.ts +1 -2
  3. package/dist/assets/download-and-map-assets-to-file.d.ts +2 -3
  4. package/dist/assets/download-and-map-assets-to-file.js +1 -0
  5. package/dist/assets/download-file.d.ts +1 -0
  6. package/dist/assets/download-file.js +16 -1
  7. package/dist/assets/download-map.d.ts +1 -0
  8. package/dist/assets/download-map.js +2 -0
  9. package/dist/assets/get-audio-channels.d.ts +2 -3
  10. package/dist/assets/inline-audio-mixing.d.ts +1 -2
  11. package/dist/browser/Browser.d.ts +5 -5
  12. package/dist/browser/Browser.js +65 -74
  13. package/dist/browser/BrowserFetcher.d.ts +3 -5
  14. package/dist/browser/BrowserFetcher.js +1 -0
  15. package/dist/browser/BrowserPage.d.ts +4 -4
  16. package/dist/browser/BrowserPage.js +223 -218
  17. package/dist/browser/BrowserRunner.d.ts +1 -2
  18. package/dist/browser/Connection.js +99 -112
  19. package/dist/browser/ConsoleMessage.d.ts +1 -1
  20. package/dist/browser/ConsoleMessage.js +9 -16
  21. package/dist/browser/DOMWorld.d.ts +1 -1
  22. package/dist/browser/DOMWorld.js +75 -89
  23. package/dist/browser/Errors.js +2 -4
  24. package/dist/browser/EventEmitter.js +2 -1
  25. package/dist/browser/ExecutionContext.js +117 -120
  26. package/dist/browser/FrameManager.js +249 -244
  27. package/dist/browser/HTTPRequest.js +11 -22
  28. package/dist/browser/HTTPResponse.js +3 -16
  29. package/dist/browser/JSHandle.js +17 -30
  30. package/dist/browser/LifecycleWatcher.js +122 -128
  31. package/dist/browser/NetworkEventManager.js +31 -40
  32. package/dist/browser/NetworkManager.js +210 -203
  33. package/dist/browser/NodeWebSocketTransport.js +3 -0
  34. package/dist/browser/Target.d.ts +1 -1
  35. package/dist/browser/Target.js +32 -39
  36. package/dist/browser/TaskQueue.js +5 -18
  37. package/dist/browser/TimeoutSettings.js +12 -25
  38. package/dist/browser/browser-download-progress-bar.d.ts +1 -2
  39. package/dist/browser/handle-failed-resource.d.ts +1 -2
  40. package/dist/browser/handle-failed-resource.js +4 -3
  41. package/dist/call-ffmpeg.d.ts +4 -5
  42. package/dist/can-concat-seamlessly.d.ts +2 -4
  43. package/dist/can-use-parallel-encoding.d.ts +1 -2
  44. package/dist/check-version-requirements.d.ts +1 -2
  45. package/dist/client.d.ts +181 -181
  46. package/dist/codec-supports-media.d.ts +3 -4
  47. package/dist/collect-assets.d.ts +1 -1
  48. package/dist/combine-audio.d.ts +2 -4
  49. package/dist/combine-chunks.d.ts +1 -2
  50. package/dist/combine-video-streams.d.ts +2 -4
  51. package/dist/compositor/compositor.d.ts +2 -3
  52. package/dist/compositor/get-executable-path.d.ts +3 -3
  53. package/dist/compress-audio.d.ts +2 -4
  54. package/dist/create-audio.d.ts +2 -4
  55. package/dist/create-silent-audio.d.ts +1 -2
  56. package/dist/crf.d.ts +4 -6
  57. package/dist/cycle-browser-tabs.d.ts +1 -2
  58. package/dist/ensure-browser.d.ts +44 -1
  59. package/dist/error-handling/handle-javascript-exception.d.ts +1 -1
  60. package/dist/error-handling/handle-javascript-exception.js +7 -1
  61. package/dist/error-handling/symbolicateable-error.d.ts +1 -1
  62. package/dist/error-handling/symbolicateable-error.js +4 -0
  63. package/dist/error-handling.js +1 -1
  64. package/dist/esm/client.mjs +7 -2
  65. package/dist/esm/index.mjs +28 -4
  66. package/dist/extract-audio.d.ts +2 -3
  67. package/dist/ffmpeg-args.d.ts +6 -12
  68. package/dist/get-browser-instance.d.ts +4 -6
  69. package/dist/get-codec-name.d.ts +3 -6
  70. package/dist/get-compositions.d.ts +1 -1
  71. package/dist/get-concurrency.d.ts +1 -1
  72. package/dist/get-extension-from-codec.d.ts +2 -3
  73. package/dist/get-frame-padded-index.d.ts +1 -2
  74. package/dist/get-local-browser-executable.d.ts +2 -4
  75. package/dist/get-prores-profile-name.d.ts +1 -3
  76. package/dist/get-silent-parts.d.ts +4 -5
  77. package/dist/get-video-metadata.d.ts +3 -4
  78. package/dist/get-video-threads-flag.d.ts +1 -2
  79. package/dist/goto-page-or-throw.d.ts +1 -1
  80. package/dist/guess-extension-for-media.d.ts +2 -3
  81. package/dist/image-format.d.ts +2 -3
  82. package/dist/index.d.ts +173 -172
  83. package/dist/index.js +16 -16
  84. package/dist/is-audio-codec.d.ts +1 -2
  85. package/dist/log-level.d.ts +1 -1
  86. package/dist/logger.d.ts +6 -6
  87. package/dist/make-page.d.ts +2 -4
  88. package/dist/memory/from-proc-meminfo.d.ts +1 -2
  89. package/dist/memory/get-available-memory.d.ts +1 -2
  90. package/dist/mime-types.js +2 -1
  91. package/dist/mux-video-and-audio.d.ts +2 -3
  92. package/dist/offthread-video-server.d.ts +1 -2
  93. package/dist/offthread-video-server.js +4 -6
  94. package/dist/open-browser.d.ts +1 -1
  95. package/dist/open-browser.js +6 -5
  96. package/dist/options/api-key.js +3 -1
  97. package/dist/options/audio-bitrate.js +9 -1
  98. package/dist/options/audio-codec.d.ts +10 -13
  99. package/dist/options/beep-on-finish.js +1 -1
  100. package/dist/options/binaries-directory.js +9 -1
  101. package/dist/options/chrome-mode.d.ts +3 -3
  102. package/dist/options/chrome-mode.js +6 -1
  103. package/dist/options/color-space.d.ts +5 -9
  104. package/dist/options/color-space.js +7 -1
  105. package/dist/options/crf.js +1 -1
  106. package/dist/options/cross-site-isolation.js +2 -1
  107. package/dist/options/dark-mode.js +2 -1
  108. package/dist/options/delete-after.js +11 -1
  109. package/dist/options/disallow-parallel-encoding.js +1 -1
  110. package/dist/options/enable-lambda-insights.js +2 -1
  111. package/dist/options/enable-multiprocess-on-linux.js +13 -1
  112. package/dist/options/encoding-buffer-size.js +3 -1
  113. package/dist/options/encoding-max-rate.js +3 -1
  114. package/dist/options/enforce-audio.js +1 -1
  115. package/dist/options/folder-expiry.js +4 -1
  116. package/dist/options/for-seamless-aac-concatenation.js +3 -1
  117. package/dist/options/gl.d.ts +6 -6
  118. package/dist/options/gl.js +28 -2
  119. package/dist/options/hardware-acceleration.d.ts +2 -2
  120. package/dist/options/headless.js +4 -1
  121. package/dist/options/image-sequence-pattern.js +5 -1
  122. package/dist/options/index.d.ts +25 -25
  123. package/dist/options/jpeg-quality.js +1 -1
  124. package/dist/options/latency-hint.js +10 -1
  125. package/dist/options/license-key.js +2 -1
  126. package/dist/options/log-level.d.ts +3 -4
  127. package/dist/options/log-level.js +16 -1
  128. package/dist/options/metadata.js +7 -2
  129. package/dist/options/mute.js +1 -1
  130. package/dist/options/number-of-gif-loops.js +13 -1
  131. package/dist/options/offthreadvideo-cache-size.js +11 -1
  132. package/dist/options/offthreadvideo-threads.js +2 -1
  133. package/dist/options/on-browser-download.js +2 -1
  134. package/dist/options/options-map.d.ts +93 -93
  135. package/dist/options/overwrite.js +5 -1
  136. package/dist/options/prefer-lossless.js +4 -1
  137. package/dist/options/public-dir.js +2 -1
  138. package/dist/options/public-license-key.js +3 -1
  139. package/dist/options/public-path.js +7 -1
  140. package/dist/options/repro.js +1 -1
  141. package/dist/options/scale.js +5 -1
  142. package/dist/options/timeout.js +4 -1
  143. package/dist/options/video-bitrate.js +7 -1
  144. package/dist/options/video-cache-size.js +8 -1
  145. package/dist/options/video-codec.d.ts +6 -6
  146. package/dist/options/video-codec.js +1 -1
  147. package/dist/options/webhook-custom-data.js +1 -1
  148. package/dist/options/x264-preset.d.ts +5 -6
  149. package/dist/options/x264-preset.js +23 -1
  150. package/dist/p-limit.d.ts +1 -1
  151. package/dist/pixel-format.d.ts +2 -3
  152. package/dist/pool.js +2 -0
  153. package/dist/port-config.d.ts +5 -6
  154. package/dist/prespawn-ffmpeg.js +5 -4
  155. package/dist/prestitcher-memory-usage.d.ts +1 -2
  156. package/dist/print-useful-error-message.d.ts +1 -2
  157. package/dist/prores-profile.d.ts +2 -4
  158. package/dist/puppeteer-evaluate.d.ts +2 -2
  159. package/dist/puppeteer-screenshot.d.ts +3 -4
  160. package/dist/pure.d.ts +5 -5
  161. package/dist/render-frame-and-retry-target-close.d.ts +8 -8
  162. package/dist/render-frame-with-option-to-reject.d.ts +4 -6
  163. package/dist/render-frame.d.ts +8 -8
  164. package/dist/render-has-audio.d.ts +2 -3
  165. package/dist/render-media.js +2 -1
  166. package/dist/replace-browser.d.ts +1 -2
  167. package/dist/repro.d.ts +1 -1
  168. package/dist/screenshot-task.d.ts +3 -4
  169. package/dist/seek-to-frame.d.ts +2 -3
  170. package/dist/serve-handler/index.d.ts +1 -1
  171. package/dist/serve-handler/range-parser.d.ts +2 -2
  172. package/dist/serve-static.d.ts +1 -2
  173. package/dist/set-props-and-env.js +3 -1
  174. package/dist/stringify-ffmpeg-filter.d.ts +1 -2
  175. package/dist/take-frame.d.ts +1 -2
  176. package/dist/test-gpu.d.ts +2 -4
  177. package/dist/validate-even-dimensions-with-codec.d.ts +2 -4
  178. package/dist/validate-ffmpeg-override.d.ts +1 -1
  179. package/dist/validate-number-of-gif-loops.d.ts +1 -2
  180. package/dist/validate-output-filename.d.ts +2 -4
  181. 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: 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: 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: 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: 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) {
@@ -13,6 +13,7 @@ type Options = {
13
13
  }) => void) | undefined;
14
14
  logLevel: LogLevel;
15
15
  indent: boolean;
16
+ abortSignal: AbortSignal;
16
17
  };
17
18
  export declare const downloadFile: (options: Options, retries?: number, attempt?: number) => Promise<Response>;
18
19
  export {};
@@ -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) ||
@@ -39,6 +39,7 @@ export type DownloadMap = {
39
39
  allowCleanup: () => void;
40
40
  isPreventedFromCleanup: () => boolean;
41
41
  inlineAudioMixing: InlineAudioMixing;
42
+ cleanupController: AbortController;
42
43
  };
43
44
  export type RenderAssetInfo = {
44
45
  assets: FrameAndAssets[];
@@ -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: 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: 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: 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;
@@ -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 __classPrivateFieldGet(this, _HeadlessBrowser_targets, "f");
50
+ return this.#targets;
56
51
  }
57
52
  constructor({ connection, defaultViewport, runner, }) {
58
53
  super();
59
- _HeadlessBrowser_instances.add(this);
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
- __classPrivateFieldSet(this, _HeadlessBrowser_defaultContext, new BrowserContext(this), "f");
68
- __classPrivateFieldSet(this, _HeadlessBrowser_contexts, new Map(), "f");
69
- __classPrivateFieldSet(this, _HeadlessBrowser_targets, new Map(), "f");
70
- this.connection.on('Target.targetCreated', __classPrivateFieldGet(this, _HeadlessBrowser_instances, "m", _HeadlessBrowser_targetCreated).bind(this));
71
- this.connection.on('Target.targetDestroyed', __classPrivateFieldGet(this, _HeadlessBrowser_instances, "m", _HeadlessBrowser_targetDestroyed).bind(this));
72
- this.connection.on('Target.targetInfoChanged', __classPrivateFieldGet(this, _HeadlessBrowser_instances, "m", _HeadlessBrowser_targetInfoChanged).bind(this));
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 [__classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f"), ...Array.from(__classPrivateFieldGet(this, _HeadlessBrowser_contexts, "f").values())];
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 __classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f").newPage({
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 = __classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").get(targetId);
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(__classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").values()).filter((target) => {
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
- _BrowserContext_browser.set(this, void 0);
211
- __classPrivateFieldSet(this, _BrowserContext_browser, browser, "f");
203
+ this.#browser = browser;
212
204
  }
213
205
  targets() {
214
- return __classPrivateFieldGet(this, _BrowserContext_browser, "f").targets().filter((target) => {
206
+ return this.#browser.targets().filter((target) => {
215
207
  return target.browserContext() === this;
216
208
  });
217
209
  }
218
210
  waitForTarget(predicate, options = {}) {
219
- return __classPrivateFieldGet(this, _BrowserContext_browser, "f").waitForTarget((target) => {
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 __classPrivateFieldGet(this, _BrowserContext_browser, "f")._createPageInContext({
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 __classPrivateFieldGet(this, _BrowserContext_browser, "f");
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: LogLevel;
24
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
27
25
  indent: boolean;
28
26
  onProgress: DownloadBrowserProgressFn;
29
27
  version: string | null;
30
- chromeMode: ChromeMode;
28
+ chromeMode: "chrome-for-testing" | "headless-shell";
31
29
  }) => Promise<BrowserFetcherRevisionInfo | undefined>;
32
- export declare const getRevisionInfo: (chromeMode: ChromeMode) => BrowserFetcherRevisionInfo;
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 & {