patchright-core 1.50.1 → 1.51.1

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 (242) hide show
  1. package/ThirdPartyNotices.txt +1 -43
  2. package/browsers.json +22 -10
  3. package/index.js +0 -1
  4. package/lib/androidServerImpl.js +4 -4
  5. package/lib/browserServerImpl.js +18 -9
  6. package/lib/cli/driver.js +6 -6
  7. package/lib/cli/program.js +9 -9
  8. package/lib/cli/programWithTestStub.js +2 -1
  9. package/lib/client/android.js +37 -58
  10. package/lib/client/artifact.js +4 -7
  11. package/lib/client/browser.js +10 -15
  12. package/lib/client/browserContext.js +77 -73
  13. package/lib/client/browserType.js +30 -64
  14. package/lib/client/channelOwner.js +23 -20
  15. package/lib/client/clientHelper.js +5 -7
  16. package/lib/client/clientStackTrace.js +65 -0
  17. package/lib/client/connection.js +46 -39
  18. package/lib/client/consoleMessage.js +4 -7
  19. package/lib/client/electron.js +10 -10
  20. package/lib/client/elementHandle.js +32 -33
  21. package/lib/client/errors.js +2 -2
  22. package/lib/client/eventEmitter.js +5 -8
  23. package/lib/client/fetch.js +60 -61
  24. package/lib/client/fileUtils.js +31 -0
  25. package/lib/client/frame.js +30 -29
  26. package/lib/client/harRouter.js +7 -9
  27. package/lib/client/jsHandle.js +3 -4
  28. package/lib/client/localUtils.js +24 -0
  29. package/lib/client/locator.js +37 -18
  30. package/lib/client/network.js +40 -40
  31. package/lib/client/page.js +59 -55
  32. package/lib/client/platform.js +71 -0
  33. package/lib/client/playwright.js +21 -1
  34. package/lib/client/selectors.js +8 -2
  35. package/lib/client/stream.js +2 -21
  36. package/lib/client/timeoutSettings.js +65 -0
  37. package/lib/client/tracing.js +10 -7
  38. package/lib/client/video.js +2 -2
  39. package/lib/client/waiter.js +5 -6
  40. package/lib/client/webSocket.js +106 -0
  41. package/lib/client/worker.js +12 -10
  42. package/lib/client/writableStream.js +2 -21
  43. package/lib/generated/consoleApiSource.js +1 -1
  44. package/lib/generated/injectedScriptSource.js +1 -1
  45. package/lib/inProcessFactory.js +6 -3
  46. package/lib/outofprocess.js +12 -8
  47. package/lib/protocol/validator.js +64 -13
  48. package/lib/protocol/validatorPrimitives.js +1 -2
  49. package/lib/remote/playwrightConnection.js +18 -10
  50. package/lib/remote/playwrightServer.js +20 -7
  51. package/lib/server/android/android.js +17 -14
  52. package/lib/server/android/backendAdb.js +14 -14
  53. package/lib/server/artifact.js +3 -3
  54. package/lib/server/bidi/bidiBrowser.js +2 -2
  55. package/lib/server/bidi/bidiChromium.js +4 -3
  56. package/lib/server/bidi/bidiConnection.js +1 -1
  57. package/lib/server/bidi/bidiExecutionContext.js +70 -40
  58. package/lib/server/bidi/bidiFirefox.js +4 -3
  59. package/lib/server/bidi/bidiInput.js +5 -8
  60. package/lib/server/bidi/bidiNetworkManager.js +3 -3
  61. package/lib/server/bidi/bidiOverCdp.js +2 -2
  62. package/lib/server/bidi/bidiPage.js +30 -46
  63. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  64. package/lib/server/browser.js +2 -2
  65. package/lib/server/browserContext.js +37 -40
  66. package/lib/server/browserType.js +18 -17
  67. package/lib/{utils/sequence.js → server/callLog.js} +18 -3
  68. package/lib/server/chromium/chromium.js +14 -14
  69. package/lib/server/chromium/chromiumSwitches.js +32 -1
  70. package/lib/server/chromium/crBrowser.js +15 -14
  71. package/lib/server/chromium/crConnection.js +2 -2
  72. package/lib/server/chromium/crCoverage.js +1 -1
  73. package/lib/server/chromium/crDevTools.js +1 -1
  74. package/lib/server/chromium/crDragDrop.js +1 -1
  75. package/lib/server/chromium/crExecutionContext.js +25 -17
  76. package/lib/server/chromium/crInput.js +2 -2
  77. package/lib/server/chromium/crNetworkManager.js +73 -26
  78. package/lib/server/chromium/crPage.js +22 -23
  79. package/lib/server/chromium/crPdf.js +1 -1
  80. package/lib/server/chromium/crProtocolHelper.js +3 -3
  81. package/lib/server/chromium/crServiceWorker.js +2 -2
  82. package/lib/server/chromium/videoRecorder.js +2 -2
  83. package/lib/server/clock.js +1 -1
  84. package/lib/server/codegen/javascript.js +1 -1
  85. package/lib/server/codegen/languages.js +2 -2
  86. package/lib/server/debugController.js +3 -3
  87. package/lib/server/deviceDescriptors.js +1 -1
  88. package/lib/server/deviceDescriptorsSource.json +131 -131
  89. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  90. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  91. package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
  92. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  93. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  94. package/lib/server/dispatchers/dispatcher.js +27 -25
  95. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  96. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  97. package/lib/server/dispatchers/frameDispatcher.js +4 -4
  98. package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
  99. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  100. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
  101. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  102. package/lib/server/dispatchers/pageDispatcher.js +11 -9
  103. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  104. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  105. package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
  106. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  107. package/lib/server/dom.js +18 -12
  108. package/lib/server/download.js +1 -1
  109. package/lib/server/electron/electron.js +17 -16
  110. package/lib/server/errors.js +1 -1
  111. package/lib/server/fetch.js +36 -25
  112. package/lib/server/fileUploadUtils.js +7 -4
  113. package/lib/server/firefox/ffBrowser.js +8 -2
  114. package/lib/server/firefox/ffConnection.js +1 -1
  115. package/lib/server/firefox/ffExecutionContext.js +25 -17
  116. package/lib/server/firefox/ffNetworkManager.js +2 -2
  117. package/lib/server/firefox/ffPage.js +15 -21
  118. package/lib/server/firefox/firefox.js +7 -9
  119. package/lib/server/frameSelectors.js +1 -1
  120. package/lib/server/frames.js +366 -209
  121. package/lib/server/har/harRecorder.js +4 -4
  122. package/lib/server/har/harTracer.js +7 -8
  123. package/lib/server/harBackend.js +157 -0
  124. package/lib/server/helper.js +2 -2
  125. package/lib/server/index.js +1 -8
  126. package/lib/server/input.js +1 -1
  127. package/lib/server/instrumentation.js +2 -2
  128. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  129. package/lib/server/javascript.js +46 -33
  130. package/lib/server/launchApp.js +2 -2
  131. package/lib/server/localUtils.js +203 -0
  132. package/lib/server/network.js +3 -3
  133. package/lib/server/page.js +41 -22
  134. package/lib/server/pipeTransport.js +1 -1
  135. package/lib/server/playwright.js +5 -5
  136. package/lib/server/progress.js +1 -1
  137. package/lib/server/protocolError.js +1 -1
  138. package/lib/server/recorder/contextRecorder.js +3 -3
  139. package/lib/server/recorder/recorderApp.js +18 -12
  140. package/lib/server/recorder/recorderCollection.js +3 -3
  141. package/lib/server/recorder/throttledFile.js +3 -4
  142. package/lib/server/recorder.js +7 -5
  143. package/lib/server/registry/browserFetcher.js +9 -7
  144. package/lib/server/registry/dependencies.js +15 -15
  145. package/lib/server/registry/index.js +38 -44
  146. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  147. package/lib/server/screenshotter.js +1 -1
  148. package/lib/server/selectors.js +3 -3
  149. package/lib/server/socksClientCertificatesInterceptor.js +8 -8
  150. package/lib/server/socksInterceptor.js +8 -5
  151. package/lib/server/storageScript.js +160 -0
  152. package/lib/{common → server}/timeoutSettings.js +6 -5
  153. package/lib/server/trace/recorder/snapshotter.js +9 -8
  154. package/lib/server/trace/recorder/tracing.js +40 -31
  155. package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
  156. package/lib/server/trace/viewer/traceViewer.js +13 -5
  157. package/lib/server/transport.js +2 -2
  158. package/lib/{utils → server/utils}/comparators.js +4 -4
  159. package/lib/{utils → server/utils}/crypto.js +4 -4
  160. package/lib/{utils → server/utils}/debug.js +4 -12
  161. package/lib/{utils → server/utils}/debugLogger.js +2 -2
  162. package/lib/{utils → server/utils}/env.js +4 -0
  163. package/lib/{utils → server/utils}/expectUtils.js +1 -1
  164. package/lib/{utils → server/utils}/fileUtils.js +4 -5
  165. package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
  166. package/lib/{utils → server/utils}/hostPlatform.js +1 -1
  167. package/lib/{utils → server/utils}/httpServer.js +8 -8
  168. package/lib/{utils → server/utils}/linuxUtils.js +3 -23
  169. package/lib/{utils → server/utils}/network.js +4 -4
  170. package/lib/server/utils/nodePlatform.js +140 -0
  171. package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
  172. package/lib/{utils → server/utils}/processLauncher.js +5 -5
  173. package/lib/{utils → server/utils}/profiler.js +5 -6
  174. package/lib/{common → server/utils}/socksProxy.js +10 -9
  175. package/lib/{utils → server/utils}/userAgent.js +2 -16
  176. package/lib/{utils → server/utils}/wsServer.js +3 -3
  177. package/lib/{utils → server/utils}/zipFile.js +1 -1
  178. package/lib/{utils → server/utils}/zones.js +9 -24
  179. package/lib/server/webkit/webkit.js +4 -4
  180. package/lib/server/webkit/wkBrowser.js +4 -4
  181. package/lib/server/webkit/wkConnection.js +1 -1
  182. package/lib/server/webkit/wkExecutionContext.js +25 -17
  183. package/lib/server/webkit/wkInput.js +2 -2
  184. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  185. package/lib/server/webkit/wkPage.js +41 -40
  186. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  187. package/lib/server/webkit/wkWorkers.js +2 -2
  188. package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
  189. package/lib/utils/isomorphic/assert.js +25 -0
  190. package/lib/utils/isomorphic/colors.js +65 -0
  191. package/lib/utils/isomorphic/cssParser.js +1 -1
  192. package/lib/utils/isomorphic/locatorGenerators.js +13 -1
  193. package/lib/utils/isomorphic/locatorParser.js +2 -2
  194. package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
  195. package/lib/utils/isomorphic/mimeType.js +11 -3
  196. package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
  197. package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
  198. package/lib/utils/isomorphic/stackTrace.js +169 -0
  199. package/lib/utils/isomorphic/stringUtils.js +1 -1
  200. package/lib/utils/{time.js → isomorphic/time.js} +1 -13
  201. package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
  202. package/lib/utils/isomorphic/traceUtils.js +23 -0
  203. package/lib/{utils/index.js → utils.js} +200 -121
  204. package/lib/utilsBundle.js +1 -25
  205. package/lib/utilsBundleImpl/index.js +114 -116
  206. package/lib/vite/htmlReport/index.html +20 -20
  207. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  208. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  209. package/lib/vite/recorder/index.html +1 -1
  210. package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
  211. package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
  212. package/lib/vite/traceViewer/assets/{xtermModule-c-SNdYZy.js → xtermModule-BoAIEibi.js} +7 -7
  213. package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
  214. package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
  215. package/lib/vite/traceViewer/index.html +3 -3
  216. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  217. package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
  218. package/lib/vite/traceViewer/uiMode.html +3 -3
  219. package/lib/zipBundleImpl.js +4 -4
  220. package/package.json +7 -7
  221. package/types/protocol.d.ts +123 -99
  222. package/types/types.d.ts +91 -37
  223. package/lib/utils/stackTrace.js +0 -134
  224. package/lib/utils/traceUtils.js +0 -44
  225. package/lib/vite/recorder/assets/codeMirrorModule-CNAqJrkA.js +0 -24
  226. package/lib/vite/recorder/assets/index-DGS0JLxS.js +0 -184
  227. package/lib/vite/traceViewer/assets/codeMirrorModule-D55P_UuL.js +0 -24
  228. package/lib/vite/traceViewer/assets/defaultSettingsView-B-uNoFsX.js +0 -243
  229. package/lib/vite/traceViewer/defaultSettingsView.2xeEXCXv.css +0 -1
  230. package/lib/vite/traceViewer/index.BfvuujqP.js +0 -2
  231. package/lib/vite/traceViewer/uiMode.CStJu6jo.js +0 -5
  232. /package/lib/{utils → server/utils}/ascii.js +0 -0
  233. /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
  234. /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
  235. /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
  236. /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
  237. /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
  238. /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
  239. /package/lib/{utils → server/utils}/task.js +0 -0
  240. /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
  241. /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
  242. /package/lib/{common → utils/isomorphic}/types.js +0 -0
@@ -11,19 +11,19 @@ exports.transformCommandsForRoot = transformCommandsForRoot;
11
11
  exports.validateDependenciesLinux = validateDependenciesLinux;
12
12
  exports.validateDependenciesWindows = validateDependenciesWindows;
13
13
  exports.writeDockerVersion = writeDockerVersion;
14
+ var childProcess = _interopRequireWildcard(require("child_process"));
14
15
  var _fs = _interopRequireDefault(require("fs"));
16
+ var _os = _interopRequireDefault(require("os"));
15
17
  var _path = _interopRequireDefault(require("path"));
16
- var os = _interopRequireWildcard(require("os"));
17
- var _child_process = _interopRequireDefault(require("child_process"));
18
- var utils = _interopRequireWildcard(require("../../utils"));
19
- var _spawnAsync = require("../../utils/spawnAsync");
20
- var _hostPlatform = require("../../utils/hostPlatform");
21
- var _ = require(".");
22
18
  var _nativeDeps = require("./nativeDeps");
23
- var _userAgent = require("../../utils/userAgent");
19
+ var _ascii = require("../utils/ascii");
20
+ var _hostPlatform = require("../utils/hostPlatform");
21
+ var _spawnAsync = require("../utils/spawnAsync");
22
+ var _userAgent = require("../utils/userAgent");
23
+ var _ = require(".");
24
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
25
  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); }
25
- 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 && Object.prototype.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; }
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ 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; }
27
27
  /**
28
28
  * Copyright (c) Microsoft Corporation.
29
29
  *
@@ -73,8 +73,8 @@ const checkExecutable = filePath => {
73
73
  return _fs.default.promises.access(filePath, _fs.default.constants.X_OK).then(() => true).catch(() => false);
74
74
  };
75
75
  function isSupportedWindowsVersion() {
76
- if (os.platform() !== 'win32' || os.arch() !== 'x64') return false;
77
- const [major, minor] = os.release().split('.').map(token => parseInt(token, 10));
76
+ if (_os.default.platform() !== 'win32' || _os.default.arch() !== 'x64') return false;
77
+ const [major, minor] = _os.default.release().split('.').map(token => parseInt(token, 10));
78
78
  // This is based on: https://stackoverflow.com/questions/42524606/how-to-get-windows-version-using-node-js/44916050#44916050
79
79
  // The table with versions is taken from: https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-osversioninfoexw#remarks
80
80
  // Windows 7 is not supported and is encoded as `6.1`.
@@ -124,7 +124,7 @@ async function installDependenciesLinux(targets, dryRun) {
124
124
  return;
125
125
  }
126
126
  if (elevatedPermissions) console.log('Switching to root user to install dependencies...'); // eslint-disable-line no-console
127
- const child = _child_process.default.spawn(command, args, {
127
+ const child = childProcess.spawn(command, args, {
128
128
  stdio: 'inherit'
129
129
  });
130
130
  await new Promise((resolve, reject) => {
@@ -192,7 +192,7 @@ async function validateDependenciesLinux(sdkLanguage, linuxLddDirectories, dlOpe
192
192
  missingDeps.delete(missingDep);
193
193
  }
194
194
  }
195
- const maybeSudo = (_process$getuid = (_process = process).getuid) !== null && _process$getuid !== void 0 && _process$getuid.call(_process) && os.platform() !== 'win32' ? 'sudo ' : '';
195
+ const maybeSudo = (_process$getuid = (_process = process).getuid) !== null && _process$getuid !== void 0 && _process$getuid.call(_process) && _os.default.platform() !== 'win32' ? 'sudo ' : '';
196
196
  const dockerInfo = readDockerVersionSync();
197
197
  const errorLines = [`Host system is missing dependencies to run browsers.`];
198
198
  // Ignore patch versions when comparing docker container version and Playwright version:
@@ -213,10 +213,10 @@ async function validateDependenciesLinux(sdkLanguage, linuxLddDirectories, dlOpe
213
213
  // Print missing libraries only:
214
214
  errorLines.push(...[`Missing libraries:`, ...[...allMissingDeps].map(dep => ' ' + dep)]);
215
215
  }
216
- throw new Error('\n' + utils.wrapInASCIIBox(errorLines.join('\n'), 1));
216
+ throw new Error('\n' + (0, _ascii.wrapInASCIIBox)(errorLines.join('\n'), 1));
217
217
  }
218
218
  function isSharedLib(basename) {
219
- switch (os.platform()) {
219
+ switch (_os.default.platform()) {
220
220
  case 'linux':
221
221
  return basename.endsWith('.so') || basename.includes('.so.');
222
222
  case 'win32':
@@ -15,23 +15,24 @@ Object.defineProperty(exports, "writeDockerVersion", {
15
15
  return _dependencies.writeDockerVersion;
16
16
  }
17
17
  });
18
- var os = _interopRequireWildcard(require("os"));
18
+ var _fs = _interopRequireDefault(require("fs"));
19
+ var _os = _interopRequireDefault(require("os"));
19
20
  var _path = _interopRequireDefault(require("path"));
20
21
  var util = _interopRequireWildcard(require("util"));
21
- var fs = _interopRequireWildcard(require("fs"));
22
- var _utilsBundle = require("../../utilsBundle");
23
- var _network = require("../../utils/network");
24
- var _userAgent = require("../../utils/userAgent");
25
- var _utils = require("../../utils");
26
- var _fileUtils = require("../../utils/fileUtils");
27
- var _hostPlatform = require("../../utils/hostPlatform");
28
- var _spawnAsync = require("../../utils/spawnAsync");
29
- var _dependencies = require("./dependencies");
30
22
  var _browserFetcher = require("./browserFetcher");
31
- var _debugLogger = require("../../utils/debugLogger");
32
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+ var _dependencies = require("./dependencies");
24
+ var _utils = require("../../utils");
25
+ var _ascii = require("../utils/ascii");
26
+ var _debugLogger = require("../utils/debugLogger");
27
+ var _hostPlatform = require("../utils/hostPlatform");
28
+ var _network = require("../utils/network");
29
+ var _spawnAsync = require("../utils/spawnAsync");
30
+ var _userAgent = require("../utils/userAgent");
31
+ var _utilsBundle = require("../../utilsBundle");
32
+ var _fileUtils = require("../utils/fileUtils");
33
33
  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); }
34
- 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 && Object.prototype.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; }
34
+ 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; }
35
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
35
36
  /**
36
37
  * Copyright 2017 Google Inc. All rights reserved.
37
38
  * Modifications copyright (c) Microsoft Corporation.
@@ -402,7 +403,7 @@ const registryDirectory = exports.registryDirectory = (() => {
402
403
  result = envDefined;
403
404
  } else {
404
405
  let cacheDirectory;
405
- if (process.platform === 'linux') cacheDirectory = process.env.XDG_CACHE_HOME || _path.default.join(os.homedir(), '.cache');else if (process.platform === 'darwin') cacheDirectory = _path.default.join(os.homedir(), 'Library', 'Caches');else if (process.platform === 'win32') cacheDirectory = process.env.LOCALAPPDATA || _path.default.join(os.homedir(), 'AppData', 'Local');else throw new Error('Unsupported platform: ' + process.platform);
406
+ if (process.platform === 'linux') cacheDirectory = process.env.XDG_CACHE_HOME || _path.default.join(_os.default.homedir(), '.cache');else if (process.platform === 'darwin') cacheDirectory = _path.default.join(_os.default.homedir(), 'Library', 'Caches');else if (process.platform === 'win32') cacheDirectory = process.env.LOCALAPPDATA || _path.default.join(_os.default.homedir(), 'AppData', 'Local');else throw new Error('Unsupported platform: ' + process.platform);
406
407
  result = _path.default.join(cacheDirectory, 'ms-playwright');
407
408
  }
408
409
  if (!_path.default.isAbsolute(result)) {
@@ -423,14 +424,7 @@ function isBrowserDirectory(browserDirectory) {
423
424
  return false;
424
425
  }
425
426
  function readDescriptors(browsersJSON) {
426
- const headlessShells = [];
427
- for (const browserName of ['chromium', 'chromium-tip-of-tree']) {
428
- headlessShells.push({
429
- ...browsersJSON.browsers.find(browser => browser.name === browserName),
430
- name: `${browserName}-headless-shell`
431
- });
432
- }
433
- return [...browsersJSON.browsers, ...headlessShells].map(obj => {
427
+ return browsersJSON['browsers'].map(obj => {
434
428
  const name = obj.name;
435
429
  const revisionOverride = (obj.revisionOverrides || {})[_hostPlatform.hostPlatform];
436
430
  const revision = revisionOverride || obj.revision;
@@ -470,7 +464,7 @@ class Registry {
470
464
  const preferredDockerVersion = currentDockerVersion ? (0, _dependencies.dockerVersion)(currentDockerVersion.dockerImageNameTemplate) : null;
471
465
  const isOutdatedDockerImage = currentDockerVersion && preferredDockerVersion && currentDockerVersion.dockerImageName !== preferredDockerVersion.dockerImageName;
472
466
  const prettyMessage = isOutdatedDockerImage ? [`Looks like ${sdkLanguage === 'javascript' ? 'Playwright Test or ' : ''}Playwright was just updated to ${preferredDockerVersion.driverVersion}.`, `Please update docker image as well.`, `- current: ${currentDockerVersion.dockerImageName}`, `- required: ${preferredDockerVersion.dockerImageName}`, ``, `<3 Playwright Team`].join('\n') : [`Looks like ${sdkLanguage === 'javascript' ? 'Playwright Test or ' : ''}Playwright was just installed or updated.`, `Please run the following command to download new browser${installByDefault ? 's' : ''}:`, ``, ` ${installCommand}`, ``, `<3 Playwright Team`].join('\n');
473
- throw new Error(`Executable doesn't exist at ${e}\n${(0, _utils.wrapInASCIIBox)(prettyMessage, 1)}`);
467
+ throw new Error(`Executable doesn't exist at ${e}\n${(0, _ascii.wrapInASCIIBox)(prettyMessage, 1)}`);
474
468
  }
475
469
  return e;
476
470
  };
@@ -797,7 +791,7 @@ class Registry {
797
791
  const folder = _path.default.resolve('firefox');
798
792
  let channelName = 'stable';
799
793
  if (name.includes('beta')) channelName = 'beta';else if (name.includes('nightly')) channelName = 'nightly';
800
- const installedVersions = fs.readdirSync(folder);
794
+ const installedVersions = _fs.default.readdirSync(folder);
801
795
  const found = installedVersions.filter(e => e.includes(channelName));
802
796
  if (found.length === 1) return _path.default.join(folder, found[0], suffix);
803
797
  if (found.length > 1) {
@@ -862,8 +856,8 @@ class Registry {
862
856
  return Array.from(new Set(executables));
863
857
  }
864
858
  async _validateHostRequirements(sdkLanguage, browserDirectory, linuxLddDirectories, dlOpenLibraries, windowsExeAndDllDirectories) {
865
- if (os.platform() === 'linux') return await (0, _dependencies.validateDependenciesLinux)(sdkLanguage, linuxLddDirectories.map(d => _path.default.join(browserDirectory, d)), dlOpenLibraries);
866
- if (os.platform() === 'win32' && os.arch() === 'x64') return await (0, _dependencies.validateDependenciesWindows)(sdkLanguage, windowsExeAndDllDirectories.map(d => _path.default.join(browserDirectory, d)));
859
+ if (_os.default.platform() === 'linux') return await (0, _dependencies.validateDependenciesLinux)(sdkLanguage, linuxLddDirectories.map(d => _path.default.join(browserDirectory, d)), dlOpenLibraries);
860
+ if (_os.default.platform() === 'win32' && _os.default.arch() === 'x64') return await (0, _dependencies.validateDependenciesWindows)(sdkLanguage, windowsExeAndDllDirectories.map(d => _path.default.join(browserDirectory, d)));
867
861
  }
868
862
  async installDeps(executablesToInstallDeps, dryRun) {
869
863
  const executables = this._dedupe(executablesToInstallDeps);
@@ -872,12 +866,12 @@ class Registry {
872
866
  if (executable._dependencyGroup) targets.add(executable._dependencyGroup);
873
867
  }
874
868
  targets.add('tools');
875
- if (os.platform() === 'win32') return await (0, _dependencies.installDependenciesWindows)(targets, dryRun);
876
- if (os.platform() === 'linux') return await (0, _dependencies.installDependenciesLinux)(targets, dryRun);
869
+ if (_os.default.platform() === 'win32') return await (0, _dependencies.installDependenciesWindows)(targets, dryRun);
870
+ if (_os.default.platform() === 'linux') return await (0, _dependencies.installDependenciesLinux)(targets, dryRun);
877
871
  }
878
872
  async install(executablesToInstall, forceReinstall) {
879
873
  const executables = this._dedupe(executablesToInstall);
880
- await fs.promises.mkdir(registryDirectory, {
874
+ await _fs.default.promises.mkdir(registryDirectory, {
881
875
  recursive: true
882
876
  });
883
877
  const lockfilePath = _path.default.join(registryDirectory, '__dirlock');
@@ -898,10 +892,10 @@ class Registry {
898
892
  lockfilePath
899
893
  });
900
894
  // Create a link first, so that cache validation does not remove our own browsers.
901
- await fs.promises.mkdir(linksDir, {
895
+ await _fs.default.promises.mkdir(linksDir, {
902
896
  recursive: true
903
897
  });
904
- await fs.promises.writeFile(_path.default.join(linksDir, (0, _utils.calculateSha1)(PACKAGE_PATH)), PACKAGE_PATH);
898
+ await _fs.default.promises.writeFile(_path.default.join(linksDir, (0, _utils.calculateSha1)(PACKAGE_PATH)), PACKAGE_PATH);
905
899
 
906
900
  // Remove stale browsers.
907
901
  await this._validateInstallationCache(linksDir);
@@ -914,14 +908,14 @@ class Registry {
914
908
  } = (0, _userAgent.getEmbedderName)();
915
909
  if (!(0, _utils.getAsBooleanFromENV)('CI') && !executable._isHermeticInstallation && !forceReinstall && executable.executablePath(embedderName)) {
916
910
  const command = buildPlaywrightCLICommand(embedderName, 'install --force ' + executable.name);
917
- throw new Error('\n' + (0, _utils.wrapInASCIIBox)([`ATTENTION: "${executable.name}" is already installed on the system!`, ``, `"${executable.name}" installation is not hermetic; installing newer version`, `requires *removal* of a current installation first.`, ``, `To *uninstall* current version and re-install latest "${executable.name}":`, ``, `- Close all running instances of "${executable.name}", if any`, `- Use "--force" to install browser:`, ``, ` ${command}`, ``, `<3 Playwright Team`].join('\n'), 1));
911
+ throw new Error('\n' + (0, _ascii.wrapInASCIIBox)([`ATTENTION: "${executable.name}" is already installed on the system!`, ``, `"${executable.name}" installation is not hermetic; installing newer version`, `requires *removal* of a current installation first.`, ``, `To *uninstall* current version and re-install latest "${executable.name}":`, ``, `- Close all running instances of "${executable.name}", if any`, `- Use "--force" to install browser:`, ``, ` ${command}`, ``, `<3 Playwright Team`].join('\n'), 1));
918
912
  }
919
913
  await executable._install();
920
914
  }
921
915
  } catch (e) {
922
916
  if (e.code === 'ELOCKED') {
923
917
  const rmCommand = process.platform === 'win32' ? 'rm -R' : 'rm -rf';
924
- throw new Error('\n' + (0, _utils.wrapInASCIIBox)([`An active lockfile is found at:`, ``, ` ${lockfilePath}`, ``, `Either:`, `- wait a few minutes if other Playwright is installing browsers in parallel`, `- remove lock manually with:`, ``, ` ${rmCommand} ${lockfilePath}`, ``, `<3 Playwright Team`].join('\n'), 1));
918
+ throw new Error('\n' + (0, _ascii.wrapInASCIIBox)([`An active lockfile is found at:`, ``, ` ${lockfilePath}`, ``, `Either:`, `- wait a few minutes if other Playwright is installing browsers in parallel`, `- remove lock manually with:`, ``, ` ${rmCommand} ${lockfilePath}`, ``, `<3 Playwright Team`].join('\n'), 1));
925
919
  } else {
926
920
  throw e;
927
921
  }
@@ -932,16 +926,16 @@ class Registry {
932
926
  async uninstall(all) {
933
927
  const linksDir = _path.default.join(registryDirectory, '.links');
934
928
  if (all) {
935
- const links = await fs.promises.readdir(linksDir).catch(() => []);
936
- for (const link of links) await fs.promises.unlink(_path.default.join(linksDir, link));
929
+ const links = await _fs.default.promises.readdir(linksDir).catch(() => []);
930
+ for (const link of links) await _fs.default.promises.unlink(_path.default.join(linksDir, link));
937
931
  } else {
938
- await fs.promises.unlink(_path.default.join(linksDir, (0, _utils.calculateSha1)(PACKAGE_PATH))).catch(() => {});
932
+ await _fs.default.promises.unlink(_path.default.join(linksDir, (0, _utils.calculateSha1)(PACKAGE_PATH))).catch(() => {});
939
933
  }
940
934
 
941
935
  // Remove stale browsers.
942
936
  await this._validateInstallationCache(linksDir);
943
937
  return {
944
- numberOfBrowsersLeft: (await fs.promises.readdir(registryDirectory).catch(() => [])).filter(browserDirectory => isBrowserDirectory(browserDirectory)).length
938
+ numberOfBrowsersLeft: (await _fs.default.promises.readdir(registryDirectory).catch(() => [])).filter(browserDirectory => isBrowserDirectory(browserDirectory)).length
945
939
  };
946
940
  }
947
941
  async validateHostRequirementsForExecutablesIfNeeded(executables, sdkLanguage) {
@@ -957,7 +951,7 @@ class Registry {
957
951
  if (!executable.directory) return;
958
952
  const markerFile = _path.default.join(executable.directory, 'DEPENDENCIES_VALIDATED');
959
953
  // Executable is already validated.
960
- if (await fs.promises.stat(markerFile).then(stat => Date.now() - stat.mtime.getTime() < kMaximumReValidationPeriod).catch(() => false)) return;
954
+ if (await _fs.default.promises.stat(markerFile).then(stat => Date.now() - stat.mtime.getTime() < kMaximumReValidationPeriod).catch(() => false)) return;
961
955
  _debugLogger.debugLogger.log('install', `validating host requirements for "${executable.name}"`);
962
956
  try {
963
957
  await executable._validateHostRequirements(sdkLanguage);
@@ -966,7 +960,7 @@ class Registry {
966
960
  _debugLogger.debugLogger.log('install', `validation failed for ${executable.name}`);
967
961
  throw error;
968
962
  }
969
- await fs.promises.writeFile(markerFile, '').catch(() => {});
963
+ await _fs.default.promises.writeFile(markerFile, '').catch(() => {});
970
964
  }
971
965
  _downloadURLs(descriptor) {
972
966
  const paths = DOWNLOAD_PATHS[descriptor.name];
@@ -1063,11 +1057,11 @@ class Registry {
1063
1057
  async _validateInstallationCache(linksDir) {
1064
1058
  // 1. Collect used downloads and package descriptors.
1065
1059
  const usedBrowserPaths = new Set();
1066
- for (const fileName of await fs.promises.readdir(linksDir)) {
1060
+ for (const fileName of await _fs.default.promises.readdir(linksDir)) {
1067
1061
  const linkPath = _path.default.join(linksDir, fileName);
1068
1062
  let linkTarget = '';
1069
1063
  try {
1070
- linkTarget = (await fs.promises.readFile(linkPath)).toString();
1064
+ linkTarget = (await _fs.default.promises.readFile(linkPath)).toString();
1071
1065
  const browsersJSON = require(_path.default.join(linkTarget, 'browsers.json'));
1072
1066
  const descriptors = readDescriptors(browsersJSON);
1073
1067
  for (const browserName of allDownloadable) {
@@ -1088,13 +1082,13 @@ class Registry {
1088
1082
  if (!shouldHaveMarkerFile || (await (0, _fileUtils.existsAsync)(browserDirectoryToMarkerFilePath(usedBrowserPath)))) usedBrowserPaths.add(usedBrowserPath);
1089
1083
  }
1090
1084
  } catch (e) {
1091
- await fs.promises.unlink(linkPath).catch(e => {});
1085
+ await _fs.default.promises.unlink(linkPath).catch(e => {});
1092
1086
  }
1093
1087
  }
1094
1088
 
1095
1089
  // 2. Delete all unused browsers.
1096
1090
  if (!(0, _utils.getAsBooleanFromENV)('PLAYWRIGHT_SKIP_BROWSER_GC')) {
1097
- let downloadedBrowsers = (await fs.promises.readdir(registryDirectory)).map(file => _path.default.join(registryDirectory, file));
1091
+ let downloadedBrowsers = (await _fs.default.promises.readdir(registryDirectory)).map(file => _path.default.join(registryDirectory, file));
1098
1092
  downloadedBrowsers = downloadedBrowsers.filter(file => isBrowserDirectory(file));
1099
1093
  const directories = new Set(downloadedBrowsers);
1100
1094
  for (const browserDirectory of usedBrowserPaths) directories.delete(browserDirectory);
@@ -1151,7 +1145,7 @@ function findChromiumChannel(sdkLanguage) {
1151
1145
  if (channel === null) {
1152
1146
  const installCommand = buildPlaywrightCLICommand(sdkLanguage, `install chromium`);
1153
1147
  const prettyMessage = [`No chromium-based browser found on the system.`, `Please run the following command to download one:`, ``, ` ${installCommand}`, ``, `<3 Playwright Team`].join('\n');
1154
- throw new Error('\n' + (0, _utils.wrapInASCIIBox)(prettyMessage, 1));
1148
+ throw new Error('\n' + (0, _ascii.wrapInASCIIBox)(prettyMessage, 1));
1155
1149
  }
1156
1150
  return channel;
1157
1151
  }
@@ -2,10 +2,10 @@
2
2
 
3
3
  var _fs = _interopRequireDefault(require("fs"));
4
4
  var _path = _interopRequireDefault(require("path"));
5
- var _network = require("../../utils/network");
6
- var _manualPromise = require("../../utils/manualPromise");
5
+ var _manualPromise = require("../../utils/isomorphic/manualPromise");
6
+ var _network = require("../utils/network");
7
7
  var _zipBundle = require("../../zipBundle");
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  /**
10
10
  * Copyright (c) Microsoft Corporation.
11
11
  *
@@ -7,7 +7,7 @@ exports.Screenshotter = void 0;
7
7
  exports.validateScreenshotOptions = validateScreenshotOptions;
8
8
  var _helper = require("./helper");
9
9
  var _utils = require("../utils");
10
- var _multimap = require("../utils/multimap");
10
+ var _multimap = require("../utils/isomorphic/multimap");
11
11
  /**
12
12
  * Copyright 2019 Google Inc. All rights reserved.
13
13
  * Modifications copyright (c) Microsoft Corporation.
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Selectors = void 0;
7
+ var _crypto = require("./utils/crypto");
7
8
  var _selectorParser = require("../utils/isomorphic/selectorParser");
8
- var _utils = require("../utils");
9
9
  /**
10
10
  * Copyright (c) Microsoft Corporation.
11
11
  *
@@ -27,10 +27,10 @@ class Selectors {
27
27
  this._builtinEngines = void 0;
28
28
  this._builtinEnginesInMainWorld = void 0;
29
29
  this._engines = void 0;
30
- this.guid = `selectors@${(0, _utils.createGuid)()}`;
30
+ this.guid = `selectors@${(0, _crypto.createGuid)()}`;
31
31
  this._testIdAttributeName = 'data-testid';
32
32
  // Note: keep in sync with InjectedScript class.
33
- this._builtinEngines = new Set(['css', 'css:light', 'xpath', 'xpath:light', '_react', '_vue', 'text', 'text:light', 'id', 'id:light', 'data-testid', 'data-testid:light', 'data-test-id', 'data-test-id:light', 'data-test', 'data-test:light', 'nth', 'visible', 'internal:control', 'internal:has', 'internal:has-not', 'internal:has-text', 'internal:has-not-text', 'internal:and', 'internal:or', 'internal:chain', 'role', 'internal:attr', 'internal:label', 'internal:text', 'internal:role', 'internal:testid']);
33
+ this._builtinEngines = new Set(['css', 'css:light', 'xpath', 'xpath:light', '_react', '_vue', 'text', 'text:light', 'id', 'id:light', 'data-testid', 'data-testid:light', 'data-test-id', 'data-test-id:light', 'data-test', 'data-test:light', 'nth', 'visible', 'internal:control', 'internal:has', 'internal:has-not', 'internal:has-text', 'internal:has-not-text', 'internal:and', 'internal:or', 'internal:chain', 'role', 'internal:attr', 'internal:label', 'internal:text', 'internal:role', 'internal:testid', 'internal:aria-id']);
34
34
  this._builtinEnginesInMainWorld = new Set(['_react', '_vue']);
35
35
  this._engines = new Map();
36
36
  }
@@ -6,18 +6,18 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.ClientCertificatesProxy = void 0;
7
7
  exports.getMatchingTLSOptionsForOrigin = getMatchingTLSOptionsForOrigin;
8
8
  exports.rewriteOpenSSLErrorIfNeeded = rewriteOpenSSLErrorIfNeeded;
9
- var _net = _interopRequireDefault(require("net"));
9
+ var _events = require("events");
10
10
  var _http = _interopRequireDefault(require("http2"));
11
- var _tls = _interopRequireDefault(require("tls"));
11
+ var _net = _interopRequireDefault(require("net"));
12
12
  var _stream = _interopRequireDefault(require("stream"));
13
- var _happyEyeballs = require("../utils/happy-eyeballs");
13
+ var _tls = _interopRequireDefault(require("tls"));
14
+ var _socksProxy = require("./utils/socksProxy");
14
15
  var _utils = require("../utils");
15
- var _socksProxy = require("../common/socksProxy");
16
- var _debugLogger = require("../utils/debugLogger");
17
- var _fetch = require("./fetch");
18
- var _events = require("events");
19
16
  var _browserContext = require("./browserContext");
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ var _fetch = require("./fetch");
18
+ var _debugLogger = require("./utils/debugLogger");
19
+ var _happyEyeballs = require("./utils/happyEyeballs");
20
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
21
  /**
22
22
  * Copyright (c) Microsoft Corporation.
23
23
  *
@@ -4,12 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.SocksInterceptor = void 0;
7
- var socks = _interopRequireWildcard(require("../common/socksProxy"));
8
7
  var _events = _interopRequireDefault(require("events"));
8
+ var socks = _interopRequireWildcard(require("./utils/socksProxy"));
9
9
  var _validator = require("../protocol/validator");
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ var _debug = require("./utils/debug");
11
11
  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); }
12
- 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 && Object.prototype.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; }
12
+ 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; }
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
14
  /**
14
15
  * Copyright (c) Microsoft Corporation.
15
16
  *
@@ -44,7 +45,8 @@ class SocksInterceptor {
44
45
  const validator = (0, _validator.findValidator)('SocksSupport', prop, 'Params');
45
46
  params = validator(params, '', {
46
47
  tChannelImpl: tChannelForSocks,
47
- binary: 'toBase64'
48
+ binary: 'toBase64',
49
+ isUnderTest: _debug.isUnderTest
48
50
  });
49
51
  transport.send({
50
52
  id,
@@ -86,7 +88,8 @@ class SocksInterceptor {
86
88
  const validator = (0, _validator.findValidator)('SocksSupport', message.method, 'Event');
87
89
  const params = validator(message.params, '', {
88
90
  tChannelImpl: tChannelForSocks,
89
- binary: 'fromBase64'
91
+ binary: 'fromBase64',
92
+ isUnderTest: _debug.isUnderTest
90
93
  });
91
94
  this._channel.emit(message.method, params);
92
95
  return true;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.collect = collect;
7
+ exports.restore = restore;
8
+ /**
9
+ * Copyright (c) Microsoft Corporation.
10
+ *
11
+ * Licensed under the Apache License, Version 2.0 (the "License");
12
+ * you may not use this file except in compliance with the License.
13
+ * You may obtain a copy of the License at
14
+ *
15
+ * http://www.apache.org/licenses/LICENSE-2.0
16
+ *
17
+ * Unless required by applicable law or agreed to in writing, software
18
+ * distributed under the License is distributed on an "AS IS" BASIS,
19
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ * See the License for the specific language governing permissions and
21
+ * limitations under the License.
22
+ */
23
+
24
+ async function collect(serializers, isFirefox, recordIndexedDB) {
25
+ async function collectDB(dbInfo) {
26
+ if (!dbInfo.name) throw new Error('Database name is empty');
27
+ if (!dbInfo.version) throw new Error('Database version is unset');
28
+ function idbRequestToPromise(request) {
29
+ return new Promise((resolve, reject) => {
30
+ request.addEventListener('success', () => resolve(request.result));
31
+ request.addEventListener('error', () => reject(request.error));
32
+ });
33
+ }
34
+ function isPlainObject(v) {
35
+ const ctor = v === null || v === void 0 ? void 0 : v.constructor;
36
+ if (isFirefox) {
37
+ const constructorImpl = ctor === null || ctor === void 0 ? void 0 : ctor.toString();
38
+ if (constructorImpl.startsWith('function Object() {') && constructorImpl.includes('[native code]')) return true;
39
+ }
40
+ return ctor === Object;
41
+ }
42
+ function trySerialize(value) {
43
+ let trivial = true;
44
+ const encoded = serializers.serializeAsCallArgument(value, v => {
45
+ const isTrivial = isPlainObject(v) || Array.isArray(v) || typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean' || Object.is(v, null);
46
+ if (!isTrivial) trivial = false;
47
+ return {
48
+ fallThrough: v
49
+ };
50
+ });
51
+ if (trivial) return {
52
+ trivial: value
53
+ };
54
+ return {
55
+ encoded
56
+ };
57
+ }
58
+ const db = await idbRequestToPromise(indexedDB.open(dbInfo.name));
59
+ const transaction = db.transaction(db.objectStoreNames, 'readonly');
60
+ const stores = await Promise.all([...db.objectStoreNames].map(async storeName => {
61
+ const objectStore = transaction.objectStore(storeName);
62
+ const keys = await idbRequestToPromise(objectStore.getAllKeys());
63
+ const records = await Promise.all(keys.map(async key => {
64
+ const record = {};
65
+ if (objectStore.keyPath === null) {
66
+ const {
67
+ encoded,
68
+ trivial
69
+ } = trySerialize(key);
70
+ if (trivial) record.key = trivial;else record.keyEncoded = encoded;
71
+ }
72
+ const value = await idbRequestToPromise(objectStore.get(key));
73
+ const {
74
+ encoded,
75
+ trivial
76
+ } = trySerialize(value);
77
+ if (trivial) record.value = trivial;else record.valueEncoded = encoded;
78
+ return record;
79
+ }));
80
+ const indexes = [...objectStore.indexNames].map(indexName => {
81
+ const index = objectStore.index(indexName);
82
+ return {
83
+ name: index.name,
84
+ keyPath: typeof index.keyPath === 'string' ? index.keyPath : undefined,
85
+ keyPathArray: Array.isArray(index.keyPath) ? index.keyPath : undefined,
86
+ multiEntry: index.multiEntry,
87
+ unique: index.unique
88
+ };
89
+ });
90
+ return {
91
+ name: storeName,
92
+ records: records,
93
+ indexes,
94
+ autoIncrement: objectStore.autoIncrement,
95
+ keyPath: typeof objectStore.keyPath === 'string' ? objectStore.keyPath : undefined,
96
+ keyPathArray: Array.isArray(objectStore.keyPath) ? objectStore.keyPath : undefined
97
+ };
98
+ }));
99
+ return {
100
+ name: dbInfo.name,
101
+ version: dbInfo.version,
102
+ stores
103
+ };
104
+ }
105
+ return {
106
+ localStorage: Object.keys(localStorage).map(name => ({
107
+ name,
108
+ value: localStorage.getItem(name)
109
+ })),
110
+ indexedDB: recordIndexedDB ? await Promise.all((await indexedDB.databases()).map(collectDB)).catch(e => {
111
+ throw new Error('Unable to serialize IndexedDB: ' + e.message);
112
+ }) : undefined
113
+ };
114
+ }
115
+ async function restore(originState, serializers) {
116
+ var _originState$indexedD;
117
+ for (const {
118
+ name,
119
+ value
120
+ } of originState.localStorage || []) localStorage.setItem(name, value);
121
+ await Promise.all(((_originState$indexedD = originState.indexedDB) !== null && _originState$indexedD !== void 0 ? _originState$indexedD : []).map(async dbInfo => {
122
+ const openRequest = indexedDB.open(dbInfo.name, dbInfo.version);
123
+ openRequest.addEventListener('upgradeneeded', () => {
124
+ const db = openRequest.result;
125
+ for (const store of dbInfo.stores) {
126
+ var _store$keyPathArray;
127
+ const objectStore = db.createObjectStore(store.name, {
128
+ autoIncrement: store.autoIncrement,
129
+ keyPath: (_store$keyPathArray = store.keyPathArray) !== null && _store$keyPathArray !== void 0 ? _store$keyPathArray : store.keyPath
130
+ });
131
+ for (const index of store.indexes) {
132
+ var _index$keyPathArray;
133
+ objectStore.createIndex(index.name, (_index$keyPathArray = index.keyPathArray) !== null && _index$keyPathArray !== void 0 ? _index$keyPathArray : index.keyPath, {
134
+ unique: index.unique,
135
+ multiEntry: index.multiEntry
136
+ });
137
+ }
138
+ }
139
+ });
140
+ function idbRequestToPromise(request) {
141
+ return new Promise((resolve, reject) => {
142
+ request.addEventListener('success', () => resolve(request.result));
143
+ request.addEventListener('error', () => reject(request.error));
144
+ });
145
+ }
146
+
147
+ // after `upgradeneeded` finishes, `success` event is fired.
148
+ const db = await idbRequestToPromise(openRequest);
149
+ const transaction = db.transaction(db.objectStoreNames, 'readwrite');
150
+ await Promise.all(dbInfo.stores.map(async store => {
151
+ const objectStore = transaction.objectStore(store.name);
152
+ await Promise.all(store.records.map(async record => {
153
+ var _record$value, _record$key;
154
+ await idbRequestToPromise(objectStore.add((_record$value = record.value) !== null && _record$value !== void 0 ? _record$value : serializers.parseEvaluationResultValue(record.valueEncoded), (_record$key = record.key) !== null && _record$key !== void 0 ? _record$key : serializers.parseEvaluationResultValue(record.keyEncoded)));
155
+ }));
156
+ }));
157
+ })).catch(e => {
158
+ throw new Error('Unable to restore IndexedDB: ' + e.message);
159
+ });
160
+ }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.TimeoutSettings = exports.DEFAULT_TIMEOUT = exports.DEFAULT_LAUNCH_TIMEOUT = void 0;
7
- var _utils = require("../utils");
7
+ var _debug = require("./utils/debug");
8
8
  /**
9
9
  * Copyright 2019 Google Inc. All rights reserved.
10
10
  * Modifications copyright (c) Microsoft Corporation.
@@ -22,6 +22,7 @@ var _utils = require("../utils");
22
22
  * limitations under the License.
23
23
  */
24
24
 
25
+ // Keep in sync with client.
25
26
  const DEFAULT_TIMEOUT = exports.DEFAULT_TIMEOUT = 30000;
26
27
  const DEFAULT_LAUNCH_TIMEOUT = exports.DEFAULT_LAUNCH_TIMEOUT = 3 * 60 * 1000; // 3 minutes
27
28
 
@@ -47,26 +48,26 @@ class TimeoutSettings {
47
48
  navigationTimeout(options) {
48
49
  if (typeof options.timeout === 'number') return options.timeout;
49
50
  if (this._defaultNavigationTimeout !== undefined) return this._defaultNavigationTimeout;
50
- if ((0, _utils.debugMode)()) return 0;
51
+ if ((0, _debug.debugMode)()) return 0;
51
52
  if (this._defaultTimeout !== undefined) return this._defaultTimeout;
52
53
  if (this._parent) return this._parent.navigationTimeout(options);
53
54
  return DEFAULT_TIMEOUT;
54
55
  }
55
56
  timeout(options) {
56
57
  if (typeof options.timeout === 'number') return options.timeout;
57
- if ((0, _utils.debugMode)()) return 0;
58
+ if ((0, _debug.debugMode)()) return 0;
58
59
  if (this._defaultTimeout !== undefined) return this._defaultTimeout;
59
60
  if (this._parent) return this._parent.timeout(options);
60
61
  return DEFAULT_TIMEOUT;
61
62
  }
62
63
  static timeout(options) {
63
64
  if (typeof options.timeout === 'number') return options.timeout;
64
- if ((0, _utils.debugMode)()) return 0;
65
+ if ((0, _debug.debugMode)()) return 0;
65
66
  return DEFAULT_TIMEOUT;
66
67
  }
67
68
  static launchTimeout(options) {
68
69
  if (typeof options.timeout === 'number') return options.timeout;
69
- if ((0, _utils.debugMode)()) return 0;
70
+ if ((0, _debug.debugMode)()) return 0;
70
71
  return DEFAULT_LAUNCH_TIMEOUT;
71
72
  }
72
73
  }