@remotion/renderer 4.0.405 → 4.0.406

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 +17 -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
@@ -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 _FrameManager_instances, _FrameManager_page, _FrameManager_networkManager, _FrameManager_frames, _FrameManager_contextIdToContext, _FrameManager_isolatedWorlds, _FrameManager_mainFrame, _FrameManager_client, _FrameManager_onAttachedToTarget, _FrameManager_onDetachedFromTarget, _FrameManager_onLifecycleEvent, _FrameManager_onFrameStartedLoading, _FrameManager_onFrameStoppedLoading, _FrameManager_handleFrameTree, _FrameManager_onFrameAttached, _FrameManager_onFrameNavigated, _FrameManager_onFrameNavigatedWithinDocument, _FrameManager_onFrameDetached, _FrameManager_onExecutionContextCreated, _FrameManager_onExecutionContextDestroyed, _FrameManager_onExecutionContextsCleared, _FrameManager_removeFramesRecursively, _Frame_parentFrame, _Frame_url, _Frame_client;
29
17
  Object.defineProperty(exports, "__esModule", { value: true });
30
18
  exports.Frame = exports.FrameManager = exports.FrameManagerEmittedEvents = void 0;
31
19
  const Connection_1 = require("./Connection");
@@ -48,68 +36,67 @@ exports.FrameManagerEmittedEvents = {
48
36
  ExecutionContextDestroyed: Symbol('FrameManager.ExecutionContextDestroyed'),
49
37
  };
50
38
  class FrameManager extends EventEmitter_1.EventEmitter {
39
+ #page;
40
+ #networkManager;
41
+ #frames = new Map();
42
+ #contextIdToContext = new Map();
43
+ #isolatedWorlds = new Set();
44
+ #mainFrame;
45
+ #client;
51
46
  get _client() {
52
- return __classPrivateFieldGet(this, _FrameManager_client, "f");
47
+ return this.#client;
53
48
  }
54
49
  constructor(client, page, indent, logLevel) {
55
50
  super();
56
- _FrameManager_instances.add(this);
57
- _FrameManager_page.set(this, void 0);
58
- _FrameManager_networkManager.set(this, void 0);
59
- _FrameManager_frames.set(this, new Map());
60
- _FrameManager_contextIdToContext.set(this, new Map());
61
- _FrameManager_isolatedWorlds.set(this, new Set());
62
- _FrameManager_mainFrame.set(this, void 0);
63
- _FrameManager_client.set(this, void 0);
64
- __classPrivateFieldSet(this, _FrameManager_client, client, "f");
65
- __classPrivateFieldSet(this, _FrameManager_page, page, "f");
66
- __classPrivateFieldSet(this, _FrameManager_networkManager, new NetworkManager_1.NetworkManager(client, this, indent, logLevel), "f");
67
- this.setupEventListeners(__classPrivateFieldGet(this, _FrameManager_client, "f"));
51
+ this.#client = client;
52
+ this.#page = page;
53
+ this.#networkManager = new NetworkManager_1.NetworkManager(client, this, indent, logLevel);
54
+ this.setupEventListeners(this.#client);
68
55
  }
69
56
  setupEventListeners(session) {
70
57
  session.on('Page.frameAttached', (event) => {
71
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onFrameAttached).call(this, session, event.frameId, event.parentFrameId);
58
+ this.#onFrameAttached(session, event.frameId, event.parentFrameId);
72
59
  });
73
60
  session.on('Page.frameNavigated', (event) => {
74
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onFrameNavigated).call(this, event.frame);
61
+ this.#onFrameNavigated(event.frame);
75
62
  });
76
63
  session.on('Page.navigatedWithinDocument', (event) => {
77
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onFrameNavigatedWithinDocument).call(this, event.frameId, event.url);
64
+ this.#onFrameNavigatedWithinDocument(event.frameId, event.url);
78
65
  });
79
66
  session.on('Page.frameDetached', (event) => {
80
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onFrameDetached).call(this, event.frameId, event.reason);
67
+ this.#onFrameDetached(event.frameId, event.reason);
81
68
  });
82
69
  session.on('Page.frameStartedLoading', (event) => {
83
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onFrameStartedLoading).call(this, event.frameId);
70
+ this.#onFrameStartedLoading(event.frameId);
84
71
  });
85
72
  session.on('Page.frameStoppedLoading', (event) => {
86
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onFrameStoppedLoading).call(this, event.frameId);
73
+ this.#onFrameStoppedLoading(event.frameId);
87
74
  });
88
75
  session.on('Runtime.executionContextCreated', (event) => {
89
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onExecutionContextCreated).call(this, event.context, session);
76
+ this.#onExecutionContextCreated(event.context, session);
90
77
  });
91
78
  session.on('Runtime.executionContextDestroyed', (event) => {
92
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onExecutionContextDestroyed).call(this, event.executionContextId, session);
79
+ this.#onExecutionContextDestroyed(event.executionContextId, session);
93
80
  });
94
81
  session.on('Runtime.executionContextsCleared', () => {
95
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onExecutionContextsCleared).call(this, session);
82
+ this.#onExecutionContextsCleared(session);
96
83
  });
97
84
  session.on('Page.lifecycleEvent', (event) => {
98
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onLifecycleEvent).call(this, event);
85
+ this.#onLifecycleEvent(event);
99
86
  });
100
87
  session.on('Target.attachedToTarget', (event) => {
101
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onAttachedToTarget).call(this, event);
88
+ this.#onAttachedToTarget(event);
102
89
  });
103
90
  session.on('Target.detachedFromTarget', (event) => {
104
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onDetachedFromTarget).call(this, event);
91
+ this.#onDetachedFromTarget(event);
105
92
  });
106
93
  }
107
- async initialize(client = __classPrivateFieldGet(this, _FrameManager_client, "f")) {
94
+ async initialize(client = this.#client) {
108
95
  try {
109
96
  const result = await Promise.all([
110
97
  client.send('Page.enable'),
111
98
  client.send('Page.getFrameTree'),
112
- client === __classPrivateFieldGet(this, _FrameManager_client, "f")
99
+ client === this.#client
113
100
  ? Promise.resolve()
114
101
  : client.send('Target.setAutoAttach', {
115
102
  autoAttach: true,
@@ -118,14 +105,14 @@ class FrameManager extends EventEmitter_1.EventEmitter {
118
105
  }),
119
106
  ]);
120
107
  const { value: { frameTree }, } = result[1];
121
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_handleFrameTree).call(this, client, frameTree);
108
+ this.#handleFrameTree(client, frameTree);
122
109
  await Promise.all([
123
110
  client.send('Page.setLifecycleEventsEnabled', { enabled: true }),
124
111
  client.send('Runtime.enable').then(() => {
125
112
  return this._ensureIsolatedWorld(client, UTILITY_WORLD_NAME);
126
113
  }),
127
- client === __classPrivateFieldGet(this, _FrameManager_client, "f")
128
- ? __classPrivateFieldGet(this, _FrameManager_networkManager, "f").initialize()
114
+ client === this.#client
115
+ ? this.#networkManager.initialize()
129
116
  : Promise.resolve(),
130
117
  ]);
131
118
  }
@@ -138,13 +125,13 @@ class FrameManager extends EventEmitter_1.EventEmitter {
138
125
  }
139
126
  }
140
127
  networkManager() {
141
- return __classPrivateFieldGet(this, _FrameManager_networkManager, "f");
128
+ return this.#networkManager;
142
129
  }
143
130
  async navigateFrame(frame, url, timeout, options = {}) {
144
131
  const { referer = undefined, waitUntil = 'load' } = options;
145
132
  const watcher = new LifecycleWatcher_1.LifecycleWatcher(this, frame, waitUntil, timeout);
146
133
  let error = await Promise.race([
147
- navigate(__classPrivateFieldGet(this, _FrameManager_client, "f"), url, referer, frame._id),
134
+ navigate(this.#client, url, referer, frame._id),
148
135
  watcher.timeoutOrTerminationPromise(),
149
136
  ]);
150
137
  if (!error) {
@@ -178,25 +165,134 @@ class FrameManager extends EventEmitter_1.EventEmitter {
178
165
  }
179
166
  }
180
167
  }
168
+ async #onAttachedToTarget(event) {
169
+ if (event.targetInfo.type !== 'iframe') {
170
+ return;
171
+ }
172
+ const frame = this.#frames.get(event.targetInfo.targetId);
173
+ const connection = Connection_1.Connection.fromSession(this.#client);
174
+ (0, assert_1.assert)(connection);
175
+ const session = connection.session(event.sessionId);
176
+ (0, assert_1.assert)(session);
177
+ if (frame) {
178
+ frame._updateClient(session);
179
+ }
180
+ this.setupEventListeners(session);
181
+ await this.initialize(session);
182
+ }
183
+ #onDetachedFromTarget(event) {
184
+ if (!event.targetId) {
185
+ return;
186
+ }
187
+ const frame = this.#frames.get(event.targetId);
188
+ if (frame === null || frame === void 0 ? void 0 : frame.isOOPFrame()) {
189
+ // When an OOP iframe is removed from the page, it
190
+ // will only get a Target.detachedFromTarget event.
191
+ this.#removeFramesRecursively(frame);
192
+ }
193
+ }
194
+ #onLifecycleEvent(event) {
195
+ const frame = this.#frames.get(event.frameId);
196
+ if (!frame) {
197
+ return;
198
+ }
199
+ frame._onLifecycleEvent(event.loaderId, event.name);
200
+ this.emit(exports.FrameManagerEmittedEvents.LifecycleEvent, frame);
201
+ }
202
+ #onFrameStartedLoading(frameId) {
203
+ const frame = this.#frames.get(frameId);
204
+ if (!frame) {
205
+ return;
206
+ }
207
+ frame._onLoadingStarted();
208
+ }
209
+ #onFrameStoppedLoading(frameId) {
210
+ const frame = this.#frames.get(frameId);
211
+ if (!frame) {
212
+ return;
213
+ }
214
+ frame._onLoadingStopped();
215
+ this.emit(exports.FrameManagerEmittedEvents.LifecycleEvent, frame);
216
+ }
217
+ #handleFrameTree(session, frameTree) {
218
+ if (frameTree.frame.parentId) {
219
+ this.#onFrameAttached(session, frameTree.frame.id, frameTree.frame.parentId);
220
+ }
221
+ this.#onFrameNavigated(frameTree.frame);
222
+ if (!frameTree.childFrames) {
223
+ return;
224
+ }
225
+ for (const child of frameTree.childFrames) {
226
+ this.#handleFrameTree(session, child);
227
+ }
228
+ }
181
229
  page() {
182
- return __classPrivateFieldGet(this, _FrameManager_page, "f");
230
+ return this.#page;
183
231
  }
184
232
  mainFrame() {
185
- (0, assert_1.assert)(__classPrivateFieldGet(this, _FrameManager_mainFrame, "f"), 'Requesting main frame too early!');
186
- return __classPrivateFieldGet(this, _FrameManager_mainFrame, "f");
233
+ (0, assert_1.assert)(this.#mainFrame, 'Requesting main frame too early!');
234
+ return this.#mainFrame;
187
235
  }
188
236
  frames() {
189
- return Array.from(__classPrivateFieldGet(this, _FrameManager_frames, "f").values());
237
+ return Array.from(this.#frames.values());
190
238
  }
191
239
  frame(frameId) {
192
- return __classPrivateFieldGet(this, _FrameManager_frames, "f").get(frameId) || null;
240
+ return this.#frames.get(frameId) || null;
241
+ }
242
+ #onFrameAttached(session, frameId, parentFrameId) {
243
+ if (this.#frames.has(frameId)) {
244
+ const _frame = this.#frames.get(frameId);
245
+ if (session && _frame.isOOPFrame()) {
246
+ // If an OOP iframes becomes a normal iframe again
247
+ // it is first attached to the parent page before
248
+ // the target is removed.
249
+ _frame._updateClient(session);
250
+ }
251
+ return;
252
+ }
253
+ (0, assert_1.assert)(parentFrameId);
254
+ const parentFrame = this.#frames.get(parentFrameId);
255
+ (0, assert_1.assert)(parentFrame);
256
+ const frame = new Frame(this, parentFrame, frameId, session);
257
+ this.#frames.set(frame._id, frame);
258
+ }
259
+ #onFrameNavigated(framePayload) {
260
+ const isMainFrame = !framePayload.parentId;
261
+ let frame = isMainFrame
262
+ ? this.#mainFrame
263
+ : this.#frames.get(framePayload.id);
264
+ (0, assert_1.assert)(isMainFrame || frame, 'We either navigate top level or have old version of the navigated frame');
265
+ // Detach all child frames first.
266
+ if (frame) {
267
+ for (const child of frame.childFrames()) {
268
+ this.#removeFramesRecursively(child);
269
+ }
270
+ }
271
+ // Update or create main frame.
272
+ if (isMainFrame) {
273
+ if (frame) {
274
+ // Update frame id to retain frame identity on cross-process navigation.
275
+ this.#frames.delete(frame._id);
276
+ frame._id = framePayload.id;
277
+ }
278
+ else {
279
+ // Initial main frame navigation.
280
+ frame = new Frame(this, null, framePayload.id, this.#client);
281
+ }
282
+ this.#frames.set(framePayload.id, frame);
283
+ this.#mainFrame = frame;
284
+ }
285
+ // Update frame payload.
286
+ (0, assert_1.assert)(frame);
287
+ frame._navigated(framePayload);
288
+ this.emit(exports.FrameManagerEmittedEvents.FrameNavigated, frame);
193
289
  }
194
290
  async _ensureIsolatedWorld(session, name) {
195
291
  const key = `${session.id()}:${name}`;
196
- if (__classPrivateFieldGet(this, _FrameManager_isolatedWorlds, "f").has(key)) {
292
+ if (this.#isolatedWorlds.has(key)) {
197
293
  return;
198
294
  }
199
- __classPrivateFieldGet(this, _FrameManager_isolatedWorlds, "f").add(key);
295
+ this.#isolatedWorlds.add(key);
200
296
  await session.send('Page.addScriptToEvaluateOnNewDocument', {
201
297
  source: `//# sourceURL=${ExecutionContext_1.EVALUATION_SCRIPT_URL}`,
202
298
  worldName: name,
@@ -216,225 +312,135 @@ class FrameManager extends EventEmitter_1.EventEmitter {
216
312
  .catch(() => undefined);
217
313
  }));
218
314
  }
219
- executionContextById(contextId, session = __classPrivateFieldGet(this, _FrameManager_client, "f")) {
220
- const key = `${session.id()}:${contextId}`;
221
- const context = __classPrivateFieldGet(this, _FrameManager_contextIdToContext, "f").get(key);
222
- (0, assert_1.assert)(context, 'INTERNAL ERROR: missing context with id = ' + contextId);
223
- return context;
224
- }
225
- }
226
- exports.FrameManager = FrameManager;
227
- _FrameManager_page = new WeakMap(), _FrameManager_networkManager = new WeakMap(), _FrameManager_frames = new WeakMap(), _FrameManager_contextIdToContext = new WeakMap(), _FrameManager_isolatedWorlds = new WeakMap(), _FrameManager_mainFrame = new WeakMap(), _FrameManager_client = new WeakMap(), _FrameManager_instances = new WeakSet(), _FrameManager_onAttachedToTarget = async function _FrameManager_onAttachedToTarget(event) {
228
- if (event.targetInfo.type !== 'iframe') {
229
- return;
230
- }
231
- const frame = __classPrivateFieldGet(this, _FrameManager_frames, "f").get(event.targetInfo.targetId);
232
- const connection = Connection_1.Connection.fromSession(__classPrivateFieldGet(this, _FrameManager_client, "f"));
233
- (0, assert_1.assert)(connection);
234
- const session = connection.session(event.sessionId);
235
- (0, assert_1.assert)(session);
236
- if (frame) {
237
- frame._updateClient(session);
238
- }
239
- this.setupEventListeners(session);
240
- await this.initialize(session);
241
- }, _FrameManager_onDetachedFromTarget = function _FrameManager_onDetachedFromTarget(event) {
242
- if (!event.targetId) {
243
- return;
244
- }
245
- const frame = __classPrivateFieldGet(this, _FrameManager_frames, "f").get(event.targetId);
246
- if (frame === null || frame === void 0 ? void 0 : frame.isOOPFrame()) {
247
- // When an OOP iframe is removed from the page, it
248
- // will only get a Target.detachedFromTarget event.
249
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_removeFramesRecursively).call(this, frame);
250
- }
251
- }, _FrameManager_onLifecycleEvent = function _FrameManager_onLifecycleEvent(event) {
252
- const frame = __classPrivateFieldGet(this, _FrameManager_frames, "f").get(event.frameId);
253
- if (!frame) {
254
- return;
255
- }
256
- frame._onLifecycleEvent(event.loaderId, event.name);
257
- this.emit(exports.FrameManagerEmittedEvents.LifecycleEvent, frame);
258
- }, _FrameManager_onFrameStartedLoading = function _FrameManager_onFrameStartedLoading(frameId) {
259
- const frame = __classPrivateFieldGet(this, _FrameManager_frames, "f").get(frameId);
260
- if (!frame) {
261
- return;
262
- }
263
- frame._onLoadingStarted();
264
- }, _FrameManager_onFrameStoppedLoading = function _FrameManager_onFrameStoppedLoading(frameId) {
265
- const frame = __classPrivateFieldGet(this, _FrameManager_frames, "f").get(frameId);
266
- if (!frame) {
267
- return;
268
- }
269
- frame._onLoadingStopped();
270
- this.emit(exports.FrameManagerEmittedEvents.LifecycleEvent, frame);
271
- }, _FrameManager_handleFrameTree = function _FrameManager_handleFrameTree(session, frameTree) {
272
- if (frameTree.frame.parentId) {
273
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onFrameAttached).call(this, session, frameTree.frame.id, frameTree.frame.parentId);
274
- }
275
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_onFrameNavigated).call(this, frameTree.frame);
276
- if (!frameTree.childFrames) {
277
- return;
278
- }
279
- for (const child of frameTree.childFrames) {
280
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_handleFrameTree).call(this, session, child);
281
- }
282
- }, _FrameManager_onFrameAttached = function _FrameManager_onFrameAttached(session, frameId, parentFrameId) {
283
- if (__classPrivateFieldGet(this, _FrameManager_frames, "f").has(frameId)) {
284
- const _frame = __classPrivateFieldGet(this, _FrameManager_frames, "f").get(frameId);
285
- if (session && _frame.isOOPFrame()) {
286
- // If an OOP iframes becomes a normal iframe again
287
- // it is first attached to the parent page before
288
- // the target is removed.
289
- _frame._updateClient(session);
315
+ #onFrameNavigatedWithinDocument(frameId, url) {
316
+ const frame = this.#frames.get(frameId);
317
+ if (!frame) {
318
+ return;
290
319
  }
291
- return;
292
- }
293
- (0, assert_1.assert)(parentFrameId);
294
- const parentFrame = __classPrivateFieldGet(this, _FrameManager_frames, "f").get(parentFrameId);
295
- (0, assert_1.assert)(parentFrame);
296
- const frame = new Frame(this, parentFrame, frameId, session);
297
- __classPrivateFieldGet(this, _FrameManager_frames, "f").set(frame._id, frame);
298
- }, _FrameManager_onFrameNavigated = function _FrameManager_onFrameNavigated(framePayload) {
299
- const isMainFrame = !framePayload.parentId;
300
- let frame = isMainFrame
301
- ? __classPrivateFieldGet(this, _FrameManager_mainFrame, "f")
302
- : __classPrivateFieldGet(this, _FrameManager_frames, "f").get(framePayload.id);
303
- (0, assert_1.assert)(isMainFrame || frame, 'We either navigate top level or have old version of the navigated frame');
304
- // Detach all child frames first.
305
- if (frame) {
306
- for (const child of frame.childFrames()) {
307
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_removeFramesRecursively).call(this, child);
320
+ frame._navigatedWithinDocument(url);
321
+ this.emit(exports.FrameManagerEmittedEvents.FrameNavigatedWithinDocument, frame);
322
+ this.emit(exports.FrameManagerEmittedEvents.FrameNavigated, frame);
323
+ }
324
+ #onFrameDetached(frameId, reason) {
325
+ const frame = this.#frames.get(frameId);
326
+ if (reason === 'remove') {
327
+ // Only remove the frame if the reason for the detached event is
328
+ // an actual removement of the frame.
329
+ // For frames that become OOP iframes, the reason would be 'swap'.
330
+ if (frame) {
331
+ this.#removeFramesRecursively(frame);
332
+ }
333
+ }
334
+ else if (reason === 'swap') {
335
+ this.emit(exports.FrameManagerEmittedEvents.FrameSwapped, frame);
308
336
  }
309
337
  }
310
- // Update or create main frame.
311
- if (isMainFrame) {
338
+ #onExecutionContextCreated(contextPayload, session) {
339
+ const auxData = contextPayload.auxData;
340
+ const frameId = auxData === null || auxData === void 0 ? void 0 : auxData.frameId;
341
+ const frame = typeof frameId === 'string' ? this.#frames.get(frameId) : undefined;
342
+ let world;
312
343
  if (frame) {
313
- // Update frame id to retain frame identity on cross-process navigation.
314
- __classPrivateFieldGet(this, _FrameManager_frames, "f").delete(frame._id);
315
- frame._id = framePayload.id;
316
- }
317
- else {
318
- // Initial main frame navigation.
319
- frame = new Frame(this, null, framePayload.id, __classPrivateFieldGet(this, _FrameManager_client, "f"));
344
+ // Only care about execution contexts created for the current session.
345
+ if (frame._client() !== session) {
346
+ return;
347
+ }
348
+ if (contextPayload.auxData && Boolean(contextPayload.auxData.isDefault)) {
349
+ world = frame._mainWorld;
350
+ }
351
+ else if (contextPayload.name === UTILITY_WORLD_NAME &&
352
+ !frame._secondaryWorld._hasContext()) {
353
+ // In case of multiple sessions to the same target, there's a race between
354
+ // connections so we might end up creating multiple isolated worlds.
355
+ // We can use either.
356
+ world = frame._secondaryWorld;
357
+ }
320
358
  }
321
- __classPrivateFieldGet(this, _FrameManager_frames, "f").set(framePayload.id, frame);
322
- __classPrivateFieldSet(this, _FrameManager_mainFrame, frame, "f");
323
- }
324
- // Update frame payload.
325
- (0, assert_1.assert)(frame);
326
- frame._navigated(framePayload);
327
- this.emit(exports.FrameManagerEmittedEvents.FrameNavigated, frame);
328
- }, _FrameManager_onFrameNavigatedWithinDocument = function _FrameManager_onFrameNavigatedWithinDocument(frameId, url) {
329
- const frame = __classPrivateFieldGet(this, _FrameManager_frames, "f").get(frameId);
330
- if (!frame) {
331
- return;
332
- }
333
- frame._navigatedWithinDocument(url);
334
- this.emit(exports.FrameManagerEmittedEvents.FrameNavigatedWithinDocument, frame);
335
- this.emit(exports.FrameManagerEmittedEvents.FrameNavigated, frame);
336
- }, _FrameManager_onFrameDetached = function _FrameManager_onFrameDetached(frameId, reason) {
337
- const frame = __classPrivateFieldGet(this, _FrameManager_frames, "f").get(frameId);
338
- if (reason === 'remove') {
339
- // Only remove the frame if the reason for the detached event is
340
- // an actual removement of the frame.
341
- // For frames that become OOP iframes, the reason would be 'swap'.
342
- if (frame) {
343
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_removeFramesRecursively).call(this, frame);
359
+ const context = new ExecutionContext_1.ExecutionContext((frame === null || frame === void 0 ? void 0 : frame._client()) || this.#client, contextPayload, world);
360
+ if (world) {
361
+ world._setContext(context);
344
362
  }
363
+ const key = `${session.id()}:${contextPayload.id}`;
364
+ this.#contextIdToContext.set(key, context);
345
365
  }
346
- else if (reason === 'swap') {
347
- this.emit(exports.FrameManagerEmittedEvents.FrameSwapped, frame);
348
- }
349
- }, _FrameManager_onExecutionContextCreated = function _FrameManager_onExecutionContextCreated(contextPayload, session) {
350
- const auxData = contextPayload.auxData;
351
- const frameId = auxData === null || auxData === void 0 ? void 0 : auxData.frameId;
352
- const frame = typeof frameId === 'string' ? __classPrivateFieldGet(this, _FrameManager_frames, "f").get(frameId) : undefined;
353
- let world;
354
- if (frame) {
355
- // Only care about execution contexts created for the current session.
356
- if (frame._client() !== session) {
366
+ #onExecutionContextDestroyed(executionContextId, session) {
367
+ const key = `${session.id()}:${executionContextId}`;
368
+ const context = this.#contextIdToContext.get(key);
369
+ if (!context) {
357
370
  return;
358
371
  }
359
- if (contextPayload.auxData && Boolean(contextPayload.auxData.isDefault)) {
360
- world = frame._mainWorld;
361
- }
362
- else if (contextPayload.name === UTILITY_WORLD_NAME &&
363
- !frame._secondaryWorld._hasContext()) {
364
- // In case of multiple sessions to the same target, there's a race between
365
- // connections so we might end up creating multiple isolated worlds.
366
- // We can use either.
367
- world = frame._secondaryWorld;
368
- }
369
- }
370
- const context = new ExecutionContext_1.ExecutionContext((frame === null || frame === void 0 ? void 0 : frame._client()) || __classPrivateFieldGet(this, _FrameManager_client, "f"), contextPayload, world);
371
- if (world) {
372
- world._setContext(context);
373
- }
374
- const key = `${session.id()}:${contextPayload.id}`;
375
- __classPrivateFieldGet(this, _FrameManager_contextIdToContext, "f").set(key, context);
376
- }, _FrameManager_onExecutionContextDestroyed = function _FrameManager_onExecutionContextDestroyed(executionContextId, session) {
377
- const key = `${session.id()}:${executionContextId}`;
378
- const context = __classPrivateFieldGet(this, _FrameManager_contextIdToContext, "f").get(key);
379
- if (!context) {
380
- return;
381
- }
382
- __classPrivateFieldGet(this, _FrameManager_contextIdToContext, "f").delete(key);
383
- if (context._world) {
384
- context._world._setContext(null);
385
- }
386
- }, _FrameManager_onExecutionContextsCleared = function _FrameManager_onExecutionContextsCleared(session) {
387
- for (const [key, context] of __classPrivateFieldGet(this, _FrameManager_contextIdToContext, "f").entries()) {
388
- // Make sure to only clear execution contexts that belong
389
- // to the current session.
390
- if (context._client !== session) {
391
- continue;
392
- }
372
+ this.#contextIdToContext.delete(key);
393
373
  if (context._world) {
394
374
  context._world._setContext(null);
395
375
  }
396
- __classPrivateFieldGet(this, _FrameManager_contextIdToContext, "f").delete(key);
397
376
  }
398
- }, _FrameManager_removeFramesRecursively = function _FrameManager_removeFramesRecursively(frame) {
399
- for (const child of frame.childFrames()) {
400
- __classPrivateFieldGet(this, _FrameManager_instances, "m", _FrameManager_removeFramesRecursively).call(this, child);
377
+ #onExecutionContextsCleared(session) {
378
+ for (const [key, context] of this.#contextIdToContext.entries()) {
379
+ // Make sure to only clear execution contexts that belong
380
+ // to the current session.
381
+ if (context._client !== session) {
382
+ continue;
383
+ }
384
+ if (context._world) {
385
+ context._world._setContext(null);
386
+ }
387
+ this.#contextIdToContext.delete(key);
388
+ }
401
389
  }
402
- frame._detach();
403
- __classPrivateFieldGet(this, _FrameManager_frames, "f").delete(frame._id);
404
- this.emit(exports.FrameManagerEmittedEvents.FrameDetached, frame);
405
- };
390
+ executionContextById(contextId, session = this.#client) {
391
+ const key = `${session.id()}:${contextId}`;
392
+ const context = this.#contextIdToContext.get(key);
393
+ (0, assert_1.assert)(context, 'INTERNAL ERROR: missing context with id = ' + contextId);
394
+ return context;
395
+ }
396
+ #removeFramesRecursively(frame) {
397
+ for (const child of frame.childFrames()) {
398
+ this.#removeFramesRecursively(child);
399
+ }
400
+ frame._detach();
401
+ this.#frames.delete(frame._id);
402
+ this.emit(exports.FrameManagerEmittedEvents.FrameDetached, frame);
403
+ }
404
+ }
405
+ exports.FrameManager = FrameManager;
406
406
  class Frame {
407
+ #parentFrame;
408
+ #url = '';
409
+ #client;
410
+ _frameManager;
411
+ _id;
412
+ _loaderId = '';
413
+ _name;
414
+ _hasStartedLoading = false;
415
+ _lifecycleEvents = new Set();
416
+ _mainWorld;
417
+ _secondaryWorld;
418
+ _childFrames;
407
419
  constructor(frameManager, parentFrame, frameId, client) {
408
- _Frame_parentFrame.set(this, void 0);
409
- _Frame_url.set(this, '');
410
- _Frame_client.set(this, void 0);
411
- this._loaderId = '';
412
- this._hasStartedLoading = false;
413
- this._lifecycleEvents = new Set();
414
420
  this._frameManager = frameManager;
415
- __classPrivateFieldSet(this, _Frame_parentFrame, parentFrame !== null && parentFrame !== void 0 ? parentFrame : null, "f");
416
- __classPrivateFieldSet(this, _Frame_url, '', "f");
421
+ this.#parentFrame = parentFrame !== null && parentFrame !== void 0 ? parentFrame : null;
422
+ this.#url = '';
417
423
  this._id = frameId;
418
424
  this._loaderId = '';
419
425
  this._childFrames = new Set();
420
- if (__classPrivateFieldGet(this, _Frame_parentFrame, "f")) {
421
- __classPrivateFieldGet(this, _Frame_parentFrame, "f")._childFrames.add(this);
426
+ if (this.#parentFrame) {
427
+ this.#parentFrame._childFrames.add(this);
422
428
  }
423
429
  this._updateClient(client);
424
430
  }
425
431
  _updateClient(client) {
426
- __classPrivateFieldSet(this, _Frame_client, client, "f");
432
+ this.#client = client;
427
433
  this._mainWorld = new DOMWorld_1.DOMWorld(this);
428
434
  this._secondaryWorld = new DOMWorld_1.DOMWorld(this);
429
435
  }
430
436
  isOOPFrame() {
431
- return __classPrivateFieldGet(this, _Frame_client, "f") !== this._frameManager._client;
437
+ return this.#client !== this._frameManager._client;
432
438
  }
433
439
  goto(url, timeout, options = {}) {
434
440
  return this._frameManager.navigateFrame(this, url, timeout, options);
435
441
  }
436
442
  _client() {
437
- return __classPrivateFieldGet(this, _Frame_client, "f");
443
+ return this.#client;
438
444
  }
439
445
  /**
440
446
  * @returns a promise that resolves to the frame's default execution context.
@@ -449,17 +455,17 @@ class Frame {
449
455
  return this._mainWorld.evaluate(pageFunction, ...args);
450
456
  }
451
457
  url() {
452
- return __classPrivateFieldGet(this, _Frame_url, "f");
458
+ return this.#url;
453
459
  }
454
460
  childFrames() {
455
461
  return Array.from(this._childFrames);
456
462
  }
457
463
  _navigated(framePayload) {
458
464
  this._name = framePayload.name;
459
- __classPrivateFieldSet(this, _Frame_url, `${framePayload.url}${framePayload.urlFragment || ''}`, "f");
465
+ this.#url = `${framePayload.url}${framePayload.urlFragment || ''}`;
460
466
  }
461
467
  _navigatedWithinDocument(url) {
462
- __classPrivateFieldSet(this, _Frame_url, url, "f");
468
+ this.#url = url;
463
469
  }
464
470
  _onLifecycleEvent(loaderId, name) {
465
471
  if (name === 'init') {
@@ -477,11 +483,10 @@ class Frame {
477
483
  _detach() {
478
484
  this._mainWorld._detach();
479
485
  this._secondaryWorld._detach();
480
- if (__classPrivateFieldGet(this, _Frame_parentFrame, "f")) {
481
- __classPrivateFieldGet(this, _Frame_parentFrame, "f")._childFrames.delete(this);
486
+ if (this.#parentFrame) {
487
+ this.#parentFrame._childFrames.delete(this);
482
488
  }
483
- __classPrivateFieldSet(this, _Frame_parentFrame, null, "f");
489
+ this.#parentFrame = null;
484
490
  }
485
491
  }
486
492
  exports.Frame = Frame;
487
- _Frame_parentFrame = new WeakMap(), _Frame_url = new WeakMap(), _Frame_client = new WeakMap();