patchright-core 1.51.3 → 1.52.0

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 (303) hide show
  1. package/browsers.json +15 -13
  2. package/lib/androidServerImpl.js +42 -48
  3. package/lib/browserServerImpl.js +54 -67
  4. package/lib/cli/driver.js +71 -69
  5. package/lib/cli/program.js +312 -328
  6. package/lib/cli/programWithTestStub.js +51 -45
  7. package/lib/client/accessibility.js +31 -32
  8. package/lib/client/android.js +141 -228
  9. package/lib/client/api.js +135 -283
  10. package/lib/client/artifact.js +39 -36
  11. package/lib/client/browser.js +57 -61
  12. package/lib/client/browserContext.js +297 -326
  13. package/lib/client/browserType.js +92 -106
  14. package/lib/client/cdpSession.js +29 -31
  15. package/lib/client/channelOwner.js +82 -95
  16. package/lib/client/clientHelper.js +46 -38
  17. package/lib/client/clientInstrumentation.js +40 -37
  18. package/lib/client/clientStackTrace.js +41 -37
  19. package/lib/client/clock.js +36 -36
  20. package/lib/client/connection.js +190 -212
  21. package/lib/client/consoleMessage.js +31 -28
  22. package/lib/client/coverage.js +25 -22
  23. package/lib/client/dialog.js +30 -31
  24. package/lib/client/download.js +25 -25
  25. package/lib/client/electron.js +73 -75
  26. package/lib/client/elementHandle.js +111 -147
  27. package/lib/client/errors.js +53 -53
  28. package/lib/client/eventEmitter.js +124 -121
  29. package/lib/client/events.js +72 -68
  30. package/lib/client/fetch.js +135 -158
  31. package/lib/client/fileChooser.js +25 -24
  32. package/lib/client/fileUtils.js +31 -28
  33. package/lib/client/frame.js +187 -306
  34. package/lib/client/harRouter.js +42 -52
  35. package/lib/client/input.js +40 -69
  36. package/lib/client/jsHandle.js +54 -69
  37. package/lib/client/jsonPipe.js +27 -23
  38. package/lib/client/localUtils.js +29 -28
  39. package/lib/client/locator.js +161 -245
  40. package/lib/client/network.js +277 -295
  41. package/lib/client/page.js +270 -318
  42. package/lib/client/platform.js +46 -43
  43. package/lib/client/playwright.js +51 -66
  44. package/lib/client/selectors.js +48 -46
  45. package/lib/client/stream.js +29 -25
  46. package/lib/client/timeoutSettings.js +49 -39
  47. package/lib/client/tracing.js +48 -84
  48. package/lib/client/types.js +26 -22
  49. package/lib/client/video.js +35 -27
  50. package/lib/client/waiter.js +69 -88
  51. package/lib/client/webError.js +25 -23
  52. package/lib/client/webSocket.js +61 -56
  53. package/lib/client/worker.js +48 -58
  54. package/lib/client/writableStream.js +27 -23
  55. package/lib/generated/clockSource.js +26 -5
  56. package/lib/generated/consoleApiSource.js +26 -5
  57. package/lib/generated/injectedScriptSource.js +26 -5
  58. package/lib/generated/pollingRecorderSource.js +26 -5
  59. package/lib/generated/utilityScriptSource.js +26 -5
  60. package/lib/generated/webSocketMockSource.js +375 -4
  61. package/lib/inProcessFactory.js +53 -53
  62. package/lib/inprocess.js +2 -19
  63. package/lib/outofprocess.js +53 -46
  64. package/lib/protocol/debug.js +209 -25
  65. package/lib/protocol/serializers.js +153 -134
  66. package/lib/protocol/validator.js +2714 -2714
  67. package/lib/protocol/validatorPrimitives.js +114 -73
  68. package/lib/remote/playwrightConnection.js +140 -157
  69. package/lib/remote/playwrightServer.js +99 -84
  70. package/lib/server/accessibility.js +44 -37
  71. package/lib/server/android/android.js +216 -209
  72. package/lib/server/android/backendAdb.js +89 -82
  73. package/lib/server/artifact.js +78 -55
  74. package/lib/server/bidi/bidiBrowser.js +221 -155
  75. package/lib/server/bidi/bidiChromium.js +106 -79
  76. package/lib/server/bidi/bidiConnection.js +66 -83
  77. package/lib/server/bidi/bidiExecutionContext.js +128 -113
  78. package/lib/server/bidi/bidiFirefox.js +76 -69
  79. package/lib/server/bidi/bidiInput.js +86 -97
  80. package/lib/server/bidi/bidiNetworkManager.js +137 -154
  81. package/lib/server/bidi/bidiOverCdp.js +57 -58
  82. package/lib/server/bidi/bidiPage.js +247 -219
  83. package/lib/server/bidi/bidiPdf.js +52 -86
  84. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  85. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  86. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  87. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  88. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  89. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  90. package/lib/server/browser.js +76 -84
  91. package/lib/server/browserContext.js +321 -346
  92. package/lib/server/browserType.js +169 -182
  93. package/lib/server/callLog.js +47 -44
  94. package/lib/server/chromium/chromium.js +212 -190
  95. package/lib/server/chromium/chromiumSwitches.js +86 -64
  96. package/lib/server/chromium/crAccessibility.js +157 -131
  97. package/lib/server/chromium/crBrowser.js +253 -273
  98. package/lib/server/chromium/crConnection.js +91 -116
  99. package/lib/server/chromium/crCoverage.js +113 -127
  100. package/lib/server/chromium/crDevTools.js +59 -51
  101. package/lib/server/chromium/crDragDrop.js +62 -79
  102. package/lib/server/chromium/crExecutionContext.js +88 -83
  103. package/lib/server/chromium/crInput.js +97 -95
  104. package/lib/server/chromium/crNetworkManager.js +284 -404
  105. package/lib/server/chromium/crPage.js +522 -608
  106. package/lib/server/chromium/crPdf.js +54 -86
  107. package/lib/server/chromium/crProtocolHelper.js +92 -80
  108. package/lib/server/chromium/crServiceWorker.js +82 -67
  109. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  110. package/lib/server/chromium/protocol.d.js +16 -0
  111. package/lib/server/chromium/videoRecorder.js +65 -99
  112. package/lib/server/clock.js +62 -50
  113. package/lib/server/codegen/csharp.js +185 -160
  114. package/lib/server/codegen/java.js +155 -128
  115. package/lib/server/codegen/javascript.js +163 -148
  116. package/lib/server/codegen/jsonl.js +32 -28
  117. package/lib/server/codegen/language.js +75 -52
  118. package/lib/server/codegen/languages.js +65 -27
  119. package/lib/server/codegen/python.js +140 -125
  120. package/lib/server/codegen/types.js +15 -4
  121. package/lib/server/console.js +28 -32
  122. package/lib/server/cookieStore.js +105 -86
  123. package/lib/server/debugController.js +97 -124
  124. package/lib/server/debugger.js +82 -78
  125. package/lib/server/deviceDescriptors.js +37 -24
  126. package/lib/server/deviceDescriptorsSource.json +50 -50
  127. package/lib/server/dialog.js +36 -35
  128. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  129. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  130. package/lib/server/dispatchers/browserContextDispatcher.js +176 -205
  131. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  132. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  133. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  134. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -66
  135. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  136. package/lib/server/dispatchers/dispatcher.js +169 -220
  137. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  138. package/lib/server/dispatchers/elementHandlerDispatcher.js +77 -119
  139. package/lib/server/dispatchers/frameDispatcher.js +99 -163
  140. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  141. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  142. package/lib/server/dispatchers/localUtilsDispatcher.js +95 -80
  143. package/lib/server/dispatchers/networkDispatchers.js +90 -107
  144. package/lib/server/dispatchers/pageDispatcher.js +128 -169
  145. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  146. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  147. package/lib/server/dispatchers/streamDispatcher.js +42 -45
  148. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  149. package/lib/server/dispatchers/webSocketRouteDispatcher.js +96 -131
  150. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -38
  151. package/lib/server/dom.js +413 -443
  152. package/lib/server/download.js +45 -35
  153. package/lib/server/electron/electron.js +156 -176
  154. package/lib/server/electron/loader.js +8 -36
  155. package/lib/server/errors.js +47 -46
  156. package/lib/server/fetch.js +289 -323
  157. package/lib/server/fileChooser.js +25 -24
  158. package/lib/server/fileUploadUtils.js +65 -59
  159. package/lib/server/firefox/ffAccessibility.js +153 -131
  160. package/lib/server/firefox/ffBrowser.js +213 -277
  161. package/lib/server/firefox/ffConnection.js +63 -84
  162. package/lib/server/firefox/ffExecutionContext.js +91 -73
  163. package/lib/server/firefox/ffInput.js +67 -69
  164. package/lib/server/firefox/ffNetworkManager.js +131 -110
  165. package/lib/server/firefox/ffPage.js +236 -273
  166. package/lib/server/firefox/firefox.js +76 -67
  167. package/lib/server/firefox/protocol.d.js +16 -0
  168. package/lib/server/formData.js +107 -35
  169. package/lib/server/frameSelectors.js +77 -111
  170. package/lib/server/frames.js +730 -894
  171. package/lib/server/har/harRecorder.js +85 -77
  172. package/lib/server/har/harTracer.js +287 -222
  173. package/lib/server/harBackend.js +80 -80
  174. package/lib/server/helper.js +56 -59
  175. package/lib/server/index.js +59 -99
  176. package/lib/server/input.js +134 -163
  177. package/lib/server/instrumentation.js +49 -44
  178. package/lib/server/javascript.js +143 -134
  179. package/lib/server/launchApp.js +92 -73
  180. package/lib/server/localUtils.js +130 -122
  181. package/lib/server/macEditingCommands.js +141 -137
  182. package/lib/server/network.js +262 -296
  183. package/lib/server/page.js +329 -426
  184. package/lib/server/pageBinding.js +88 -0
  185. package/lib/server/pipeTransport.js +49 -45
  186. package/lib/server/playwright.js +60 -67
  187. package/lib/server/progress.js +56 -51
  188. package/lib/server/protocolError.js +34 -31
  189. package/lib/server/recorder/chat.js +70 -86
  190. package/lib/server/recorder/contextRecorder.js +134 -138
  191. package/lib/server/recorder/recorderApp.js +127 -136
  192. package/lib/server/recorder/recorderCollection.js +56 -44
  193. package/lib/server/recorder/recorderFrontend.js +15 -4
  194. package/lib/server/recorder/recorderRunner.js +79 -103
  195. package/lib/server/recorder/recorderUtils.js +56 -45
  196. package/lib/server/recorder/throttledFile.js +42 -30
  197. package/lib/server/recorder.js +177 -186
  198. package/lib/server/registry/browserFetcher.js +106 -101
  199. package/lib/server/registry/dependencies.js +245 -196
  200. package/lib/server/registry/index.js +904 -792
  201. package/lib/server/registry/nativeDeps.js +1073 -464
  202. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  203. package/lib/server/screenshotter.js +166 -182
  204. package/lib/server/selectors.js +85 -46
  205. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  206. package/lib/server/socksInterceptor.js +62 -70
  207. package/lib/server/storageScript.js +94 -100
  208. package/lib/server/timeoutSettings.js +58 -43
  209. package/lib/server/trace/recorder/snapshotter.js +70 -89
  210. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  211. package/lib/server/trace/recorder/tracing.js +321 -333
  212. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  213. package/lib/server/trace/viewer/traceViewer.js +168 -146
  214. package/lib/server/transport.js +124 -133
  215. package/lib/server/types.js +26 -22
  216. package/lib/server/usKeyboardLayout.js +135 -545
  217. package/lib/server/utils/ascii.js +39 -26
  218. package/lib/server/utils/comparators.js +105 -103
  219. package/lib/server/utils/crypto.js +157 -112
  220. package/lib/server/utils/debug.js +37 -28
  221. package/lib/server/utils/debugLogger.js +69 -48
  222. package/lib/server/utils/env.js +52 -37
  223. package/lib/server/utils/eventsHelper.js +29 -28
  224. package/lib/server/utils/expectUtils.js +31 -26
  225. package/lib/server/utils/fileUtils.js +123 -136
  226. package/lib/server/utils/happyEyeballs.js +138 -123
  227. package/lib/server/utils/hostPlatform.js +84 -120
  228. package/lib/server/utils/httpServer.js +106 -121
  229. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  230. package/lib/server/utils/image_tools/compare.js +44 -43
  231. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  232. package/lib/server/utils/image_tools/stats.js +40 -40
  233. package/lib/server/utils/linuxUtils.js +50 -37
  234. package/lib/server/utils/network.js +143 -86
  235. package/lib/server/utils/nodePlatform.js +87 -79
  236. package/lib/server/utils/pipeTransport.js +44 -42
  237. package/lib/server/utils/processLauncher.js +111 -121
  238. package/lib/server/utils/profiler.js +52 -39
  239. package/lib/server/utils/socksProxy.js +280 -339
  240. package/lib/server/utils/spawnAsync.js +37 -41
  241. package/lib/server/utils/task.js +31 -38
  242. package/lib/server/utils/userAgent.js +73 -66
  243. package/lib/server/utils/wsServer.js +73 -69
  244. package/lib/server/utils/zipFile.js +36 -37
  245. package/lib/server/utils/zones.js +37 -34
  246. package/lib/server/webkit/protocol.d.js +16 -0
  247. package/lib/server/webkit/webkit.js +76 -63
  248. package/lib/server/webkit/wkAccessibility.js +161 -118
  249. package/lib/server/webkit/wkBrowser.js +159 -176
  250. package/lib/server/webkit/wkConnection.js +59 -83
  251. package/lib/server/webkit/wkExecutionContext.js +84 -70
  252. package/lib/server/webkit/wkInput.js +82 -80
  253. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  254. package/lib/server/webkit/wkPage.js +525 -619
  255. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  256. package/lib/server/webkit/wkWorkers.js +77 -77
  257. package/lib/utils/isomorphic/ariaSnapshot.js +144 -152
  258. package/lib/utils/isomorphic/assert.js +28 -22
  259. package/lib/utils/isomorphic/builtins.js +90 -0
  260. package/lib/utils/isomorphic/colors.js +66 -59
  261. package/lib/utils/isomorphic/cssParser.js +121 -125
  262. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  263. package/lib/utils/isomorphic/headers.js +38 -37
  264. package/lib/utils/isomorphic/locatorGenerators.js +340 -357
  265. package/lib/utils/isomorphic/locatorParser.js +96 -105
  266. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  267. package/lib/utils/isomorphic/manualPromise.js +47 -39
  268. package/lib/utils/isomorphic/mimeType.js +448 -25
  269. package/lib/utils/isomorphic/multimap.js +35 -27
  270. package/lib/utils/isomorphic/rtti.js +35 -33
  271. package/lib/utils/isomorphic/selectorParser.js +183 -193
  272. package/lib/utils/isomorphic/semaphore.js +27 -24
  273. package/lib/utils/isomorphic/stackTrace.js +87 -98
  274. package/lib/utils/isomorphic/stringUtils.js +113 -106
  275. package/lib/utils/isomorphic/time.js +41 -22
  276. package/lib/utils/isomorphic/timeoutRunner.js +55 -54
  277. package/lib/utils/isomorphic/traceUtils.js +38 -41
  278. package/lib/utils/isomorphic/types.js +15 -4
  279. package/lib/utils/isomorphic/urlMatch.js +112 -67
  280. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  281. package/lib/utils.js +97 -443
  282. package/lib/utilsBundle.js +101 -52
  283. package/lib/vite/htmlReport/index.html +21 -15
  284. package/lib/vite/recorder/assets/{codeMirrorModule-B9YMkrwa.js → codeMirrorModule-DVQi6prl.js} +1 -1
  285. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  286. package/lib/vite/recorder/index.html +1 -1
  287. package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-dvXVzLxY.js} +1 -1
  288. package/lib/vite/traceViewer/assets/defaultSettingsView-BjymbO6M.js +265 -0
  289. package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
  290. package/lib/vite/traceViewer/index.ChIUCJnj.js +2 -0
  291. package/lib/vite/traceViewer/index.html +3 -3
  292. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  293. package/lib/vite/traceViewer/uiMode.html +3 -3
  294. package/lib/vite/traceViewer/uiMode.jUCiCtdp.js +5 -0
  295. package/lib/zipBundle.js +32 -23
  296. package/package.json +1 -1
  297. package/types/protocol.d.ts +436 -17
  298. package/types/types.d.ts +35 -16
  299. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  300. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  301. package/lib/vite/traceViewer/assets/defaultSettingsView-l0TyP_G8.js +0 -259
  302. package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
  303. package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
@@ -1,129 +1,114 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var chat_exports = {};
20
+ __export(chat_exports, {
21
+ Chat: () => Chat,
22
+ asString: () => asString
5
23
  });
6
- exports.Chat = void 0;
7
- exports.asString = asString;
8
- var _transport = require("../transport");
9
- /**
10
- * Copyright (c) Microsoft Corporation.
11
- *
12
- * Licensed under the Apache License, Version 2.0 (the "License");
13
- * you may not use this file except in compliance with the License.
14
- * You may obtain a copy of the License at
15
- *
16
- * http://www.apache.org/licenses/LICENSE-2.0
17
- *
18
- * Unless required by applicable law or agreed to in writing, software
19
- * distributed under the License is distributed on an "AS IS" BASIS,
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
- * See the License for the specific language governing permissions and
22
- * limitations under the License.
23
- */
24
-
24
+ module.exports = __toCommonJS(chat_exports);
25
+ var import_transport = require("../transport");
25
26
  class Chat {
26
27
  constructor(wsEndpoint) {
27
28
  this._history = [];
28
- this._connectionPromise = void 0;
29
- this._chatSinks = new Map();
30
- this._wsEndpoint = void 0;
29
+ this._chatSinks = /* @__PURE__ */ new Map();
31
30
  this._wsEndpoint = wsEndpoint;
32
31
  }
33
32
  clearHistory() {
34
33
  this._history = [];
35
34
  }
36
35
  async post(prompt) {
37
- await this._append('user', prompt);
36
+ await this._append("user", prompt);
38
37
  let text = await asString(await this._post());
39
- if (text.startsWith('```json') && text.endsWith('```')) text = text.substring('```json'.length, text.length - '```'.length);
38
+ if (text.startsWith("```json") && text.endsWith("```"))
39
+ text = text.substring("```json".length, text.length - "```".length);
40
40
  for (let i = 0; i < 3; ++i) {
41
41
  try {
42
42
  return JSON.parse(text);
43
43
  } catch (e) {
44
- await this._append('user', String(e));
44
+ await this._append("user", String(e));
45
45
  }
46
46
  }
47
- throw new Error('Failed to parse response: ' + text);
47
+ throw new Error("Failed to parse response: " + text);
48
48
  }
49
49
  async _append(user, content) {
50
- this._history.push({
51
- user,
52
- content
53
- });
50
+ this._history.push({ user, content });
54
51
  }
55
52
  async _connection() {
56
53
  if (!this._connectionPromise) {
57
- this._connectionPromise = _transport.WebSocketTransport.connect(undefined, this._wsEndpoint).then(transport => {
58
- return new Connection(transport, (method, params) => this._dispatchEvent(method, params), () => {});
54
+ this._connectionPromise = import_transport.WebSocketTransport.connect(void 0, this._wsEndpoint).then((transport) => {
55
+ return new Connection(transport, (method, params) => this._dispatchEvent(method, params), () => {
56
+ });
59
57
  });
60
58
  }
61
59
  return this._connectionPromise;
62
60
  }
63
61
  _dispatchEvent(method, params) {
64
- if (method === 'chatChunk') {
65
- const {
66
- chatId,
67
- chunk
68
- } = params;
62
+ if (method === "chatChunk") {
63
+ const { chatId, chunk } = params;
69
64
  const chunkSink = this._chatSinks.get(chatId);
70
65
  chunkSink(chunk);
71
- if (!chunk) this._chatSinks.delete(chatId);
66
+ if (!chunk)
67
+ this._chatSinks.delete(chatId);
72
68
  }
73
69
  }
74
70
  async _post() {
75
71
  const connection = await this._connection();
76
- const result = await connection.send('chat', {
77
- history: this._history
78
- });
79
- const {
80
- chatId
81
- } = result;
82
- const {
83
- iterable,
84
- addChunk
85
- } = iterablePump();
72
+ const result = await connection.send("chat", { history: this._history });
73
+ const { chatId } = result;
74
+ const { iterable, addChunk } = iterablePump();
86
75
  this._chatSinks.set(chatId, addChunk);
87
76
  return iterable;
88
77
  }
89
78
  }
90
- exports.Chat = Chat;
91
79
  async function asString(stream) {
92
- let result = '';
93
- for await (const chunk of stream) result += chunk;
80
+ let result = "";
81
+ for await (const chunk of stream)
82
+ result += chunk;
94
83
  return result;
95
84
  }
96
85
  function iterablePump() {
97
86
  let controller;
98
- const stream = new ReadableStream({
99
- start: c => controller = c
100
- });
87
+ const stream = new ReadableStream({ start: (c) => controller = c });
101
88
  const iterable = async function* () {
102
89
  const reader = stream.getReader();
103
90
  while (true) {
104
- const {
105
- done,
106
- value
107
- } = await reader.read();
108
- if (done) break;
91
+ const { done, value } = await reader.read();
92
+ if (done)
93
+ break;
109
94
  yield value;
110
95
  }
111
96
  }();
112
97
  return {
113
98
  iterable,
114
- addChunk: chunk => {
115
- if (chunk) controller.enqueue(chunk);else controller.close();
99
+ addChunk: (chunk) => {
100
+ if (chunk)
101
+ controller.enqueue(chunk);
102
+ else
103
+ controller.close();
116
104
  }
117
105
  };
118
106
  }
119
107
  class Connection {
120
108
  constructor(transport, onEvent, onClose) {
121
- this._transport = void 0;
122
109
  this._lastId = 0;
123
110
  this._closed = false;
124
- this._pending = new Map();
125
- this._onEvent = void 0;
126
- this._onClose = void 0;
111
+ this._pending = /* @__PURE__ */ new Map();
127
112
  this._transport = transport;
128
113
  this._onEvent = onEvent;
129
114
  this._onClose = onClose;
@@ -132,27 +117,21 @@ class Connection {
132
117
  }
133
118
  send(method, params) {
134
119
  const id = this._lastId++;
135
- const message = {
136
- id,
137
- method,
138
- params
139
- };
120
+ const message = { id, method, params };
140
121
  this._transport.send(message);
141
122
  return new Promise((resolve, reject) => {
142
- this._pending.set(id, {
143
- resolve,
144
- reject
145
- });
123
+ this._pending.set(id, { resolve, reject });
146
124
  });
147
125
  }
148
126
  _dispatchMessage(message) {
149
- if (message.id === undefined) {
127
+ if (message.id === void 0) {
150
128
  this._onEvent(message.method, message.params);
151
129
  return;
152
130
  }
153
131
  const callback = this._pending.get(message.id);
154
132
  this._pending.delete(message.id);
155
- if (!callback) return;
133
+ if (!callback)
134
+ return;
156
135
  if (message.error) {
157
136
  callback.reject(new Error(message.error.message));
158
137
  return;
@@ -161,17 +140,22 @@ class Connection {
161
140
  }
162
141
  _close() {
163
142
  this._closed = true;
164
- this._transport.onmessage = undefined;
165
- this._transport.onclose = undefined;
166
- for (const {
167
- reject
168
- } of this._pending.values()) reject(new Error('Connection closed'));
143
+ this._transport.onmessage = void 0;
144
+ this._transport.onclose = void 0;
145
+ for (const { reject } of this._pending.values())
146
+ reject(new Error("Connection closed"));
169
147
  this._onClose();
170
148
  }
171
149
  isClosed() {
172
150
  return this._closed;
173
151
  }
174
152
  close() {
175
- if (!this._closed) this._transport.close();
153
+ if (!this._closed)
154
+ this._transport.close();
176
155
  }
177
- }
156
+ }
157
+ // Annotate the CommonJS export names for ESM import in node:
158
+ 0 && (module.exports = {
159
+ Chat,
160
+ asString
161
+ });
@@ -1,51 +1,55 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var contextRecorder_exports = {};
30
+ __export(contextRecorder_exports, {
31
+ ContextRecorder: () => ContextRecorder,
32
+ generateFrameSelector: () => generateFrameSelector
5
33
  });
6
- exports.ContextRecorder = void 0;
7
- exports.generateFrameSelector = generateFrameSelector;
8
- var _events = require("events");
9
- var _recorderCollection = require("./recorderCollection");
10
- var recorderSource = _interopRequireWildcard(require("../../generated/pollingRecorderSource"));
11
- var _utils = require("../../utils");
12
- var _timeoutRunner = require("../../utils/isomorphic/timeoutRunner");
13
- var _browserContext = require("../browserContext");
14
- var _languages = require("../codegen/languages");
15
- var _frames = require("../frames");
16
- var _page = require("../page");
17
- var _throttledFile = require("./throttledFile");
18
- var _language = require("../codegen/language");
19
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
- /**
22
- * Copyright (c) Microsoft Corporation.
23
- *
24
- * Licensed under the Apache License, Version 2.0 (the "License");
25
- * you may not use this file except in compliance with the License.
26
- * You may obtain a copy of the License at
27
- *
28
- * http://www.apache.org/licenses/LICENSE-2.0
29
- *
30
- * Unless required by applicable law or agreed to in writing, software
31
- * distributed under the License is distributed on an "AS IS" BASIS,
32
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
33
- * See the License for the specific language governing permissions and
34
- * limitations under the License.
35
- */
36
-
37
- class ContextRecorder extends _events.EventEmitter {
34
+ module.exports = __toCommonJS(contextRecorder_exports);
35
+ var import_events = require("events");
36
+ var import_recorderCollection = require("./recorderCollection");
37
+ var recorderSource = __toESM(require("../../generated/pollingRecorderSource"));
38
+ var import_utils = require("../../utils");
39
+ var import_timeoutRunner = require("../../utils/isomorphic/timeoutRunner");
40
+ var import_browserContext = require("../browserContext");
41
+ var import_languages = require("../codegen/languages");
42
+ var import_frames = require("../frames");
43
+ var import_page = require("../page");
44
+ var import_throttledFile = require("./throttledFile");
45
+ var import_language = require("../codegen/language");
46
+ class ContextRecorder extends import_events.EventEmitter {
38
47
  constructor(context, params, delegate) {
39
48
  super();
40
- this._collection = void 0;
41
- this._pageAliases = new Map();
49
+ this._pageAliases = /* @__PURE__ */ new Map();
42
50
  this._lastPopupOrdinal = 0;
43
51
  this._lastDialogOrdinal = -1;
44
52
  this._lastDownloadOrdinal = -1;
45
- this._context = void 0;
46
- this._params = void 0;
47
- this._delegate = void 0;
48
- this._recorderSources = void 0;
49
53
  this._throttledOutputFile = null;
50
54
  this._orderedLanguages = [];
51
55
  this._listeners = [];
@@ -55,32 +59,18 @@ class ContextRecorder extends _events.EventEmitter {
55
59
  this._recorderSources = [];
56
60
  const language = params.language || context.attribution.playwright.options.sdkLanguage;
57
61
  this.setOutput(language, params.outputFile);
58
-
59
- // Make a copy of options to modify them later.
60
62
  const languageGeneratorOptions = {
61
63
  browserName: context._browser.options.name,
62
- launchOptions: {
63
- headless: false,
64
- ...params.launchOptions,
65
- tracesDir: undefined
66
- },
67
- contextOptions: {
68
- ...params.contextOptions
69
- },
64
+ launchOptions: { headless: false, ...params.launchOptions, tracesDir: void 0 },
65
+ contextOptions: { ...params.contextOptions },
70
66
  deviceName: params.device,
71
67
  saveStorage: params.saveStorage
72
68
  };
73
- this._collection = new _recorderCollection.RecorderCollection(this._pageAliases);
74
- this._collection.on('change', actions => {
69
+ this._collection = new import_recorderCollection.RecorderCollection(this._pageAliases);
70
+ this._collection.on("change", (actions) => {
75
71
  this._recorderSources = [];
76
72
  for (const languageGenerator of this._orderedLanguages) {
77
- var _this$_throttledOutpu;
78
- const {
79
- header,
80
- footer,
81
- actionTexts,
82
- text
83
- } = (0, _language.generateCode)(actions, languageGenerator, languageGeneratorOptions);
73
+ const { header, footer, actionTexts, text } = (0, import_language.generateCode)(actions, languageGenerator, languageGeneratorOptions);
84
74
  const source = {
85
75
  isRecorded: true,
86
76
  label: languageGenerator.name,
@@ -93,80 +83,93 @@ class ContextRecorder extends _events.EventEmitter {
93
83
  language: languageGenerator.highlighter,
94
84
  highlight: []
95
85
  };
96
- source.revealLine = text.split('\n').length - 1;
86
+ source.revealLine = text.split("\n").length - 1;
97
87
  this._recorderSources.push(source);
98
- if (languageGenerator === this._orderedLanguages[0]) (_this$_throttledOutpu = this._throttledOutputFile) === null || _this$_throttledOutpu === void 0 || _this$_throttledOutpu.setContent(source.text);
88
+ if (languageGenerator === this._orderedLanguages[0])
89
+ this._throttledOutputFile?.setContent(source.text);
99
90
  }
100
91
  this.emit(ContextRecorder.Events.Change, {
101
92
  sources: this._recorderSources,
102
93
  actions
103
94
  });
104
95
  });
105
- context.on(_browserContext.BrowserContext.Events.BeforeClose, () => {
106
- var _this$_throttledOutpu2;
107
- (_this$_throttledOutpu2 = this._throttledOutputFile) === null || _this$_throttledOutpu2 === void 0 || _this$_throttledOutpu2.flush();
96
+ context.on(import_browserContext.BrowserContext.Events.BeforeClose, () => {
97
+ this._throttledOutputFile?.flush();
108
98
  });
109
- this._listeners.push(_utils.eventsHelper.addEventListener(process, 'exit', () => {
110
- var _this$_throttledOutpu3;
111
- (_this$_throttledOutpu3 = this._throttledOutputFile) === null || _this$_throttledOutpu3 === void 0 || _this$_throttledOutpu3.flush();
99
+ this._listeners.push(import_utils.eventsHelper.addEventListener(process, "exit", () => {
100
+ this._throttledOutputFile?.flush();
112
101
  }));
113
- this.setEnabled(params.mode === 'recording');
102
+ this.setEnabled(params.mode === "recording");
103
+ }
104
+ static {
105
+ this.Events = {
106
+ Change: "change"
107
+ };
114
108
  }
115
109
  setOutput(codegenId, outputFile) {
116
- var _this$_collection;
117
- const languages = (0, _languages.languageSet)();
118
- const primaryLanguage = [...languages].find(l => l.id === codegenId);
119
- if (!primaryLanguage) throw new Error(`\n===============================\nUnsupported language: '${codegenId}'\n===============================\n`);
110
+ const languages = (0, import_languages.languageSet)();
111
+ const primaryLanguage = [...languages].find((l) => l.id === codegenId);
112
+ if (!primaryLanguage)
113
+ throw new Error(`
114
+ ===============================
115
+ Unsupported language: '${codegenId}'
116
+ ===============================
117
+ `);
120
118
  languages.delete(primaryLanguage);
121
119
  this._orderedLanguages = [primaryLanguage, ...languages];
122
- this._throttledOutputFile = outputFile ? new _throttledFile.ThrottledFile(outputFile) : null;
123
- (_this$_collection = this._collection) === null || _this$_collection === void 0 || _this$_collection.restart();
120
+ this._throttledOutputFile = outputFile ? new import_throttledFile.ThrottledFile(outputFile) : null;
121
+ this._collection?.restart();
124
122
  }
125
123
  languageName(id) {
126
124
  for (const lang of this._orderedLanguages) {
127
- if (!id || lang.id === id) return lang.highlighter;
125
+ if (!id || lang.id === id)
126
+ return lang.highlighter;
128
127
  }
129
- return 'javascript';
128
+ return "javascript";
130
129
  }
131
130
  async install() {
132
- this._context.on(_browserContext.BrowserContext.Events.Page, page => this._onPage(page));
133
- for (const page of this._context.pages()) this._onPage(page);
134
- this._context.on(_browserContext.BrowserContext.Events.Dialog, dialog => this._onDialog(dialog.page()));
135
-
136
- // Input actions that potentially lead to navigation are intercepted on the page and are
137
- // performed by the Playwright.
138
- await this._context.exposeBinding('__pw_recorderPerformAction', false, (source, action) => this._performAction(source.frame, action));
139
-
140
- // Other non-essential actions are simply being recorded.
141
- await this._context.exposeBinding('__pw_recorderRecordAction', false, (source, action) => this._recordAction(source.frame, action));
131
+ this._context.on(import_browserContext.BrowserContext.Events.Page, (page) => this._onPage(page));
132
+ for (const page of this._context.pages())
133
+ this._onPage(page);
134
+ this._context.on(import_browserContext.BrowserContext.Events.Dialog, (dialog) => this._onDialog(dialog.page()));
135
+ await this._context.exposeBinding(
136
+ "__pw_recorderPerformAction",
137
+ false,
138
+ (source, action) => this._performAction(source.frame, action)
139
+ );
140
+ await this._context.exposeBinding(
141
+ "__pw_recorderRecordAction",
142
+ false,
143
+ (source, action) => this._recordAction(source.frame, action)
144
+ );
142
145
  await this._context.extendInjectedScript(recorderSource.source);
143
146
  }
144
147
  setEnabled(enabled) {
145
148
  this._collection.setEnabled(enabled);
146
149
  }
147
150
  dispose() {
148
- _utils.eventsHelper.removeEventListeners(this._listeners);
151
+ import_utils.eventsHelper.removeEventListeners(this._listeners);
149
152
  }
150
153
  async _onPage(page) {
151
- // First page is called page, others are called popup1, popup2, etc.
152
154
  const frame = page.mainFrame();
153
- page.on('close', () => {
155
+ page.on("close", () => {
154
156
  this._collection.addRecordedAction({
155
157
  frame: this._describeMainFrame(page),
156
158
  action: {
157
- name: 'closePage',
159
+ name: "closePage",
158
160
  signals: []
159
161
  },
160
- startTime: (0, _utils.monotonicTime)()
162
+ startTime: (0, import_utils.monotonicTime)()
161
163
  });
162
164
  this._pageAliases.delete(page);
163
165
  });
164
- frame.on(_frames.Frame.Events.InternalNavigation, event => {
165
- if (event.isPublic) this._onFrameNavigated(frame, page);
166
+ frame.on(import_frames.Frame.Events.InternalNavigation, (event) => {
167
+ if (event.isPublic)
168
+ this._onFrameNavigated(frame, page);
166
169
  });
167
- page.on(_page.Page.Events.Download, () => this._onDownload(page));
168
- const suffix = this._pageAliases.size ? String(++this._lastPopupOrdinal) : '';
169
- const pageAlias = 'page' + suffix;
170
+ page.on(import_page.Page.Events.Download, () => this._onDownload(page));
171
+ const suffix = this._pageAliases.size ? String(++this._lastPopupOrdinal) : "";
172
+ const pageAlias = "page" + suffix;
170
173
  this._pageAliases.set(page, pageAlias);
171
174
  if (page.opener()) {
172
175
  this._onPopup(page.opener(), page);
@@ -174,22 +177,22 @@ class ContextRecorder extends _events.EventEmitter {
174
177
  this._collection.addRecordedAction({
175
178
  frame: this._describeMainFrame(page),
176
179
  action: {
177
- name: 'openPage',
180
+ name: "openPage",
178
181
  url: page.mainFrame().url(),
179
182
  signals: []
180
183
  },
181
- startTime: (0, _utils.monotonicTime)()
184
+ startTime: (0, import_utils.monotonicTime)()
182
185
  });
183
186
  }
184
187
  }
185
188
  clearScript() {
186
189
  this._collection.restart();
187
- if (this._params.mode === 'recording') {
188
- for (const page of this._context.pages()) this._onFrameNavigated(page.mainFrame(), page);
190
+ if (this._params.mode === "recording") {
191
+ for (const page of this._context.pages())
192
+ this._onFrameNavigated(page.mainFrame(), page);
189
193
  }
190
194
  }
191
195
  runTask(task) {
192
- // TODO: implement
193
196
  }
194
197
  _describeMainFrame(page) {
195
198
  return {
@@ -204,18 +207,17 @@ class ContextRecorder extends _events.EventEmitter {
204
207
  };
205
208
  }
206
209
  testIdAttributeName() {
207
- return this._params.testIdAttributeName || this._context.selectors().testIdAttributeName() || 'data-testid';
210
+ return this._params.testIdAttributeName || this._context.selectors().testIdAttributeName() || "data-testid";
208
211
  }
209
212
  async _createActionInContext(frame, action) {
210
- var _this$_delegate$rewri, _this$_delegate;
211
213
  const frameDescription = await this._describeFrame(frame);
212
214
  const actionInContext = {
213
215
  frame: frameDescription,
214
216
  action,
215
- description: undefined,
216
- startTime: (0, _utils.monotonicTime)()
217
+ description: void 0,
218
+ startTime: (0, import_utils.monotonicTime)()
217
219
  };
218
- await ((_this$_delegate$rewri = (_this$_delegate = this._delegate).rewriteActionInContext) === null || _this$_delegate$rewri === void 0 ? void 0 : _this$_delegate$rewri.call(_this$_delegate, this._pageAliases, actionInContext));
220
+ await this._delegate.rewriteActionInContext?.(this._pageAliases, actionInContext);
219
221
  return actionInContext;
220
222
  }
221
223
  async _performAction(frame, action) {
@@ -226,45 +228,30 @@ class ContextRecorder extends _events.EventEmitter {
226
228
  }
227
229
  _onFrameNavigated(frame, page) {
228
230
  const pageAlias = this._pageAliases.get(page);
229
- this._collection.signal(pageAlias, frame, {
230
- name: 'navigation',
231
- url: frame.url()
232
- });
231
+ this._collection.signal(pageAlias, frame, { name: "navigation", url: frame.url() });
233
232
  }
234
233
  _onPopup(page, popup) {
235
234
  const pageAlias = this._pageAliases.get(page);
236
235
  const popupAlias = this._pageAliases.get(popup);
237
- this._collection.signal(pageAlias, page.mainFrame(), {
238
- name: 'popup',
239
- popupAlias
240
- });
236
+ this._collection.signal(pageAlias, page.mainFrame(), { name: "popup", popupAlias });
241
237
  }
242
238
  _onDownload(page) {
243
239
  const pageAlias = this._pageAliases.get(page);
244
240
  ++this._lastDownloadOrdinal;
245
- this._collection.signal(pageAlias, page.mainFrame(), {
246
- name: 'download',
247
- downloadAlias: this._lastDownloadOrdinal ? String(this._lastDownloadOrdinal) : ''
248
- });
241
+ this._collection.signal(pageAlias, page.mainFrame(), { name: "download", downloadAlias: this._lastDownloadOrdinal ? String(this._lastDownloadOrdinal) : "" });
249
242
  }
250
243
  _onDialog(page) {
251
244
  const pageAlias = this._pageAliases.get(page);
252
245
  ++this._lastDialogOrdinal;
253
- this._collection.signal(pageAlias, page.mainFrame(), {
254
- name: 'dialog',
255
- dialogAlias: this._lastDialogOrdinal ? String(this._lastDialogOrdinal) : ''
256
- });
246
+ this._collection.signal(pageAlias, page.mainFrame(), { name: "dialog", dialogAlias: this._lastDialogOrdinal ? String(this._lastDialogOrdinal) : "" });
257
247
  }
258
248
  }
259
- exports.ContextRecorder = ContextRecorder;
260
- ContextRecorder.Events = {
261
- Change: 'change'
262
- };
263
249
  async function generateFrameSelector(frame) {
264
250
  const selectorPromises = [];
265
251
  while (frame) {
266
252
  const parent = frame.parentFrame();
267
- if (!parent) break;
253
+ if (!parent)
254
+ break;
268
255
  selectorPromises.push(generateFrameSelectorInParent(parent, frame));
269
256
  frame = parent;
270
257
  }
@@ -272,19 +259,28 @@ async function generateFrameSelector(frame) {
272
259
  return result.reverse();
273
260
  }
274
261
  async function generateFrameSelectorInParent(parent, frame) {
275
- const result = await (0, _timeoutRunner.raceAgainstDeadline)(async () => {
262
+ const result = await (0, import_timeoutRunner.raceAgainstDeadline)(async () => {
276
263
  try {
277
264
  const frameElement = await frame.frameElement();
278
- if (!frameElement || !parent) return;
265
+ if (!frameElement || !parent)
266
+ return;
279
267
  const utility = await parent._utilityContext();
280
268
  const injected = await utility.injectedScript();
281
- const selector = await injected.evaluate((injected, element) => {
282
- return injected.generateSelectorSimple(element);
269
+ const selector = await injected.evaluate((injected2, element) => {
270
+ return injected2.generateSelectorSimple(element);
283
271
  }, frameElement);
284
272
  return selector;
285
- } catch (e) {}
286
- }, (0, _utils.monotonicTime)() + 2000);
287
- if (!result.timedOut && result.result) return result.result;
288
- if (frame.name()) return `iframe[name=${(0, _utils.quoteCSSAttributeValue)(frame.name())}]`;
289
- return `iframe[src=${(0, _utils.quoteCSSAttributeValue)(frame.url())}]`;
290
- }
273
+ } catch (e) {
274
+ }
275
+ }, (0, import_utils.monotonicTime)() + 2e3);
276
+ if (!result.timedOut && result.result)
277
+ return result.result;
278
+ if (frame.name())
279
+ return `iframe[name=${(0, import_utils.quoteCSSAttributeValue)(frame.name())}]`;
280
+ return `iframe[src=${(0, import_utils.quoteCSSAttributeValue)(frame.url())}]`;
281
+ }
282
+ // Annotate the CommonJS export names for ESM import in node:
283
+ 0 && (module.exports = {
284
+ ContextRecorder,
285
+ generateFrameSelector
286
+ });