@checkly/playwright-core 1.41.2-beta.0 → 1.41.2-beta.3

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 (132) hide show
  1. package/lib/browserServerImpl.js +1 -1
  2. package/lib/cli/cli.js +61 -0
  3. package/lib/cli/driver.js +3 -11
  4. package/lib/cli/program.js +5 -13
  5. package/lib/client/android.js +1 -1
  6. package/lib/client/artifact.js +2 -2
  7. package/lib/client/browserContext.js +5 -5
  8. package/lib/client/browserType.js +1 -1
  9. package/lib/client/channelOwner.js +3 -3
  10. package/lib/client/clientHelper.js +1 -5
  11. package/lib/client/connection.js +2 -2
  12. package/lib/client/consoleMessage.js +2 -2
  13. package/lib/client/fetch.js +3 -3
  14. package/lib/client/frame.js +3 -4
  15. package/lib/client/harRouter.js +1 -1
  16. package/lib/client/locator.js +2 -2
  17. package/lib/client/page.js +1 -24
  18. package/lib/common/debugLogger.js +90 -0
  19. package/lib/common/socksProxy.js +17 -12
  20. package/lib/generated/consoleApiSource.js +1 -1
  21. package/lib/generated/injectedScriptSource.js +1 -1
  22. package/lib/generated/recorderSource.js +1 -1
  23. package/lib/outofprocess.js +3 -3
  24. package/lib/protocol/validator.js +7 -13
  25. package/lib/remote/playwrightConnection.js +2 -2
  26. package/lib/remote/playwrightServer.js +166 -72
  27. package/lib/server/android/android.js +2 -2
  28. package/lib/server/android/backendAdb.js +2 -2
  29. package/lib/server/browser.js +2 -2
  30. package/lib/server/browserContext.js +9 -8
  31. package/lib/server/browserType.js +5 -5
  32. package/lib/server/chromium/chromium.js +1 -1
  33. package/lib/server/chromium/crBrowser.js +3 -2
  34. package/lib/server/chromium/crConnection.js +2 -2
  35. package/lib/server/chromium/crExecutionContext.js +2 -2
  36. package/lib/server/chromium/crInput.js +2 -2
  37. package/lib/server/chromium/crNetworkManager.js +11 -10
  38. package/lib/server/chromium/crPage.js +7 -48
  39. package/lib/server/chromium/crServiceWorker.js +3 -2
  40. package/lib/server/debugController.js +3 -0
  41. package/lib/server/deviceDescriptorsSource.json +50 -50
  42. package/lib/server/dispatchers/browserContextDispatcher.js +4 -4
  43. package/lib/server/dispatchers/dispatcher.js +10 -10
  44. package/lib/server/dispatchers/frameDispatcher.js +6 -0
  45. package/lib/server/dispatchers/localUtilsDispatcher.js +4 -4
  46. package/lib/server/dispatchers/pageDispatcher.js +0 -12
  47. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  48. package/lib/server/dispatchers/writableStreamDispatcher.js +2 -2
  49. package/lib/server/dom.js +170 -133
  50. package/lib/server/electron/electron.js +4 -5
  51. package/lib/server/electron/loader.js +2 -4
  52. package/lib/server/fetch.js +4 -4
  53. package/lib/server/firefox/ffBrowser.js +3 -3
  54. package/lib/server/firefox/ffConnection.js +1 -1
  55. package/lib/server/firefox/ffExecutionContext.js +2 -2
  56. package/lib/server/firefox/ffNetworkManager.js +7 -7
  57. package/lib/server/firefox/ffPage.js +5 -3
  58. package/lib/server/firefox/firefox.js +2 -2
  59. package/lib/server/frames.js +23 -31
  60. package/lib/server/har/harTracer.js +6 -6
  61. package/lib/server/helper.js +1 -1
  62. package/lib/server/input.js +2 -2
  63. package/lib/server/isomorphic/utilityScriptSerializers.js +1 -0
  64. package/lib/server/javascript.js +2 -2
  65. package/lib/server/page.js +3 -44
  66. package/lib/server/pipeTransport.js +1 -1
  67. package/lib/server/playwright.js +1 -1
  68. package/lib/server/progress.js +14 -5
  69. package/lib/server/recorder/csharp.js +1 -1
  70. package/lib/server/recorder/recorderUtils.js +2 -2
  71. package/lib/server/recorder.js +14 -14
  72. package/lib/server/registry/browserFetcher.js +2 -1
  73. package/lib/server/registry/dependencies.js +6 -7
  74. package/lib/server/registry/index.js +33 -50
  75. package/lib/server/registry/nativeDeps.js +94 -0
  76. package/lib/server/registry/oopDownloadBrowserMain.js +2 -2
  77. package/lib/server/screenshotter.js +1 -0
  78. package/lib/server/socksInterceptor.js +2 -2
  79. package/lib/server/trace/recorder/snapshotter.js +2 -2
  80. package/lib/server/trace/recorder/tracing.js +9 -7
  81. package/lib/server/trace/test/inMemorySnapshotter.js +1 -1
  82. package/lib/server/trace/viewer/traceViewer.js +2 -2
  83. package/lib/server/transport.js +13 -15
  84. package/lib/server/webkit/wkBrowser.js +3 -3
  85. package/lib/server/webkit/wkConnection.js +1 -1
  86. package/lib/server/webkit/wkExecutionContext.js +2 -2
  87. package/lib/server/webkit/wkInput.js +2 -2
  88. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  89. package/lib/server/webkit/wkPage.js +12 -10
  90. package/lib/utils/fileUtils.js +0 -4
  91. package/lib/utils/happy-eyeballs.js +4 -5
  92. package/lib/utils/hostPlatform.js +1 -1
  93. package/lib/utils/index.js +0 -11
  94. package/lib/utils/isomorphic/cssParser.js +2 -2
  95. package/lib/utils/isomorphic/locatorParser.js +4 -6
  96. package/lib/utils/isomorphic/selectorParser.js +1 -0
  97. package/lib/utils/network.js +0 -33
  98. package/lib/utils/processLauncher.js +2 -9
  99. package/lib/utils/profiler.js +2 -2
  100. package/lib/utils/zipFile.js +1 -1
  101. package/lib/vite/htmlReport/index.html +13 -12
  102. package/lib/vite/recorder/assets/{codeMirrorModule-I9ks4y7D.js → codeMirrorModule-490993e1.js} +1 -1
  103. package/lib/vite/recorder/assets/codeMirrorModule-5d0f417c.css +1 -0
  104. package/lib/vite/recorder/assets/index-40a5e9c7.js +41 -0
  105. package/lib/vite/recorder/assets/{index-ljsTwXtJ.css → index-64ce22d5.css} +1 -1
  106. package/lib/vite/recorder/index.html +3 -2
  107. package/lib/vite/traceViewer/assets/codeMirrorModule-56536a77.js +24 -0
  108. package/lib/vite/traceViewer/assets/codeMirrorModule-75b0ca4f.js +24 -0
  109. package/lib/vite/traceViewer/assets/codeMirrorModule-f333a775.js +24 -0
  110. package/lib/vite/traceViewer/assets/wsPort-722747dc.js +64 -0
  111. package/lib/vite/traceViewer/assets/wsPort-762c6840.js +64 -0
  112. package/lib/vite/traceViewer/assets/wsPort-98e00a94.js +64 -0
  113. package/lib/vite/traceViewer/assets/xtermModule-443332e6.js +9 -0
  114. package/lib/vite/traceViewer/codeMirrorModule.5d0f417c.css +1 -0
  115. package/lib/vite/traceViewer/codicon.79f233d0.ttf +0 -0
  116. package/lib/vite/traceViewer/index.1a1fe659.css +1 -0
  117. package/lib/vite/traceViewer/index.a265fbdb.js +2 -0
  118. package/lib/vite/traceViewer/index.d05939c9.js +2 -0
  119. package/lib/vite/traceViewer/index.ed9a3c58.js +2 -0
  120. package/lib/vite/traceViewer/index.html +5 -4
  121. package/lib/vite/traceViewer/sw.bundle.js +1 -1
  122. package/lib/vite/traceViewer/uiMode.08ab2d90.js +4 -0
  123. package/lib/vite/traceViewer/uiMode.3ff70f7d.js +4 -0
  124. package/lib/vite/traceViewer/uiMode.8b41a49d.css +1 -0
  125. package/lib/vite/traceViewer/uiMode.8e0454c4.js +4 -0
  126. package/lib/vite/traceViewer/uiMode.html +5 -4
  127. package/lib/vite/traceViewer/wsPort.9c9a6767.css +1 -0
  128. package/lib/vite/traceViewer/xtermModule.6428296b.css +32 -0
  129. package/package.json +1 -1
  130. package/lib/vite/recorder/assets/codeMirrorModule-Hs9-1ZG4.css +0 -1
  131. package/lib/vite/recorder/assets/index-yg8ypzl6.js +0 -47
  132. /package/lib/vite/recorder/assets/{codicon-zGuYmc9o.ttf → codicon-79f233d0.ttf} +0 -0
@@ -77,7 +77,7 @@ class BrowserServerLauncherImpl {
77
77
  browserServer._disconnectForTest = () => server.close();
78
78
  browserServer._userDataDirForTest = browser._userDataDirForTest;
79
79
  browser.options.browserProcess.onclose = (exitCode, signal) => {
80
- socksProxy === null || socksProxy === void 0 || socksProxy.close().catch(() => {});
80
+ socksProxy === null || socksProxy === void 0 ? void 0 : socksProxy.close().catch(() => {});
81
81
  server.close();
82
82
  browserServer.emit('close', exitCode, signal);
83
83
  };
package/lib/cli/cli.js ADDED
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Copyright (c) Microsoft Corporation.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+
19
+ /* eslint-disable no-console */
20
+ "use strict";
21
+
22
+ var _utils = require("../utils");
23
+ var _program = _interopRequireDefault(require("./program"));
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+ function printPlaywrightTestError(command) {
26
+ const packages = [];
27
+ for (const pkg of ['playwright', 'playwright-chromium', 'playwright-firefox', 'playwright-webkit']) {
28
+ try {
29
+ require.resolve(pkg);
30
+ packages.push(pkg);
31
+ } catch (e) {}
32
+ }
33
+ if (!packages.length) packages.push('playwright');
34
+ const packageManager = (0, _utils.getPackageManager)();
35
+ if (packageManager === 'yarn') {
36
+ console.error(`Please install @playwright/test package before running "yarn playwright ${command}"`);
37
+ console.error(` yarn remove ${packages.join(' ')}`);
38
+ console.error(' yarn add -D @playwright/test');
39
+ } else if (packageManager === 'pnpm') {
40
+ console.error(`Please install @playwright/test package before running "pnpm exec playwright ${command}"`);
41
+ console.error(` pnpm remove ${packages.join(' ')}`);
42
+ console.error(' pnpm add -D @playwright/test');
43
+ } else {
44
+ console.error(`Please install @playwright/test package before running "npx playwright ${command}"`);
45
+ console.error(` npm uninstall ${packages.join(' ')}`);
46
+ console.error(' npm install -D @playwright/test');
47
+ }
48
+ }
49
+ const kExternalPlaywrightTestCommands = [['test', 'Run tests with Playwright Test.'], ['show-report', 'Show Playwright Test HTML report.'], ['merge-reports', 'Merge Playwright Test Blob reports']];
50
+ function addExternalPlaywrightTestCommands() {
51
+ for (const [command, description] of kExternalPlaywrightTestCommands) {
52
+ const playwrightTest = _program.default.command(command).allowUnknownOption(true);
53
+ playwrightTest.description(`${description} Available in @playwright/test package.`);
54
+ playwrightTest.action(async () => {
55
+ printPlaywrightTestError(command);
56
+ (0, _utils.gracefullyProcessExitDoNotHang)(1);
57
+ });
58
+ }
59
+ }
60
+ if (!process.env.PW_LANG_NAME) addExternalPlaywrightTestCommands();
61
+ _program.default.parse(process.argv);
package/lib/cli/driver.js CHANGED
@@ -13,8 +13,8 @@ var _server = require("../server");
13
13
  var _transport = require("../protocol/transport");
14
14
  var _playwrightServer = require("../remote/playwrightServer");
15
15
  var _processLauncher = require("../utils/processLauncher");
16
- 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); }
17
- 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; }
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
  /**
20
20
  * Copyright (c) Microsoft Corporation.
@@ -50,15 +50,7 @@ function runDriver() {
50
50
  });
51
51
  const transport = new _transport.PipeTransport(process.stdout, process.stdin);
52
52
  transport.onmessage = message => dispatcherConnection.dispatch(JSON.parse(message));
53
- // Certain Language Binding JSON parsers (e.g. .NET) do not like strings with lone surrogates.
54
- const isJavaScriptLanguageBinding = !process.env.PW_LANG_NAME || process.env.PW_LANG_NAME === 'javascript';
55
- const replacer = !isJavaScriptLanguageBinding && String.prototype.toWellFormed ? (key, value) => {
56
- if (typeof value === 'string')
57
- // @ts-expect-error
58
- return value.toWellFormed();
59
- return value;
60
- } : undefined;
61
- dispatcherConnection.onmessage = message => transport.send(JSON.stringify(message, replacer));
53
+ dispatcherConnection.onmessage = message => transport.send(JSON.stringify(message));
62
54
  transport.onclose = () => {
63
55
  // Drop any messages during shutdown on the floor.
64
56
  dispatcherConnection.onmessage = () => {};
@@ -3,12 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "program", {
7
- enumerable: true,
8
- get: function () {
9
- return _utilsBundle.program;
10
- }
11
- });
6
+ exports.default = void 0;
12
7
  var _fs = _interopRequireDefault(require("fs"));
13
8
  var _os = _interopRequireDefault(require("os"));
14
9
  var _path = _interopRequireDefault(require("path"));
@@ -20,8 +15,8 @@ var _child_process = require("child_process");
20
15
  var _utils = require("../utils");
21
16
  var _server = require("../server");
22
17
  var _errors = require("../client/errors");
23
- 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); }
24
- 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; }
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
21
  /**
27
22
  * Copyright (c) Microsoft Corporation.
@@ -116,10 +111,6 @@ _utilsBundle.program.command('install [browser...]').description('ensure browser
116
111
  } else {
117
112
  const forceReinstall = hasNoArguments ? false : !!options.force;
118
113
  await _server.registry.install(executables, forceReinstall);
119
- await _server.registry.validateHostRequirementsForExecutablesIfNeeded(executables, process.env.PW_LANG_NAME || 'javascript').catch(e => {
120
- e.name = 'Playwright Host validation warning';
121
- console.error(e);
122
- });
123
114
  }
124
115
  } catch (e) {
125
116
  console.log(`Failed to install browsers\n${e}`);
@@ -579,4 +570,5 @@ function buildBasePlaywrightCLICommand(cliTargetLang) {
579
570
  return `${packageManagerCommand} playwright`;
580
571
  }
581
572
  }
582
- }
573
+ }
574
+ var _default = exports.default = _utilsBundle.program;
@@ -83,7 +83,7 @@ class Android extends _channelOwner.ChannelOwner {
83
83
  let closeError;
84
84
  const onPipeClosed = () => {
85
85
  var _device;
86
- (_device = device) === null || _device === void 0 || _device._didClose();
86
+ (_device = device) === null || _device === void 0 ? void 0 : _device._didClose();
87
87
  connection.close(closeError);
88
88
  };
89
89
  pipe.on('closed', onPipeClosed);
@@ -8,8 +8,8 @@ var fs = _interopRequireWildcard(require("fs"));
8
8
  var _stream = require("./stream");
9
9
  var _fileUtils = require("../utils/fileUtils");
10
10
  var _channelOwner = require("./channelOwner");
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; }
11
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
13
  /**
14
14
  * Copyright (c) Microsoft Corporation.
15
15
  *
@@ -47,8 +47,8 @@ let _Symbol$asyncDispose;
47
47
  * limitations under the License.
48
48
  */
49
49
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
50
- 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); }
51
- 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; }
50
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
51
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
52
52
  _Symbol$asyncDispose = Symbol.asyncDispose;
53
53
  class BrowserContext extends _channelOwner.ChannelOwner {
54
54
  static from(context) {
@@ -79,7 +79,7 @@ class BrowserContext extends _channelOwner.ChannelOwner {
79
79
  this._closeReason = void 0;
80
80
  this._harRouters = [];
81
81
  if (parent instanceof _browser.Browser) this._browser = parent;
82
- (_this$_browser = this._browser) === null || _this$_browser === void 0 || _this$_browser._contexts.add(this);
82
+ (_this$_browser = this._browser) === null || _this$_browser === void 0 ? void 0 : _this$_browser._contexts.add(this);
83
83
  this._isChromium = ((_this$_browser2 = this._browser) === null || _this$_browser2 === void 0 ? void 0 : _this$_browser2._name) === 'chromium';
84
84
  this.tracing = _tracing.Tracing.from(initializer.tracing);
85
85
  this.request = _fetch.APIRequestContext.from(initializer.requestContext);
@@ -413,9 +413,9 @@ class BrowserContext extends _channelOwner.ChannelOwner {
413
413
  return _cdpSession.CDPSession.from(result.session);
414
414
  }
415
415
  _onClose() {
416
- var _this$_browserType;
416
+ var _this$_browserType, _this$_browserType$_c;
417
417
  if (this._browser) this._browser._contexts.delete(this);
418
- (_this$_browserType = this._browserType) === null || _this$_browserType === void 0 || (_this$_browserType = _this$_browserType._contexts) === null || _this$_browserType === void 0 || _this$_browserType.delete(this);
418
+ (_this$_browserType = this._browserType) === null || _this$_browserType === void 0 ? void 0 : (_this$_browserType$_c = _this$_browserType._contexts) === null || _this$_browserType$_c === void 0 ? void 0 : _this$_browserType$_c.delete(this);
419
419
  this._disposeHarRouters();
420
420
  this.emit(_events.Events.BrowserContext.Close, this);
421
421
  }
@@ -150,7 +150,7 @@ class BrowserType extends _channelOwner.ChannelOwner {
150
150
  for (const page of context.pages()) page._onClose();
151
151
  context._onClose();
152
152
  }
153
- (_browser2 = browser) === null || _browser2 === void 0 || _browser2._didClose();
153
+ (_browser2 = browser) === null || _browser2 === void 0 ? void 0 : _browser2._didClose();
154
154
  connection.close(closeError);
155
155
  };
156
156
  pipe.on('closed', onPipeClosed);
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.ChannelOwner = void 0;
7
7
  var _events = require("events");
8
8
  var _validator = require("../protocol/validator");
9
- var _debugLogger = require("../utils/debugLogger");
9
+ var _debugLogger = require("../common/debugLogger");
10
10
  var _stackTrace = require("../utils/stackTrace");
11
11
  var _utils = require("../utils");
12
12
  var _zones = require("../utils/zones");
@@ -185,7 +185,7 @@ class ChannelOwner extends _events.EventEmitter {
185
185
  const result = await _zones.zones.run('apiZone', apiZone, async () => {
186
186
  return await func(apiZone);
187
187
  });
188
- csi === null || csi === void 0 || csi.onApiCallEnd(callCookie);
188
+ csi === null || csi === void 0 ? void 0 : csi.onApiCallEnd(callCookie);
189
189
  logApiCall(logger, `<= ${apiName} succeeded`, isInternal);
190
190
  return result;
191
191
  } catch (e) {
@@ -193,7 +193,7 @@ class ChannelOwner extends _events.EventEmitter {
193
193
  if (apiName && !apiName.includes('<anonymous>')) e.message = apiName + ': ' + e.message;
194
194
  const stackFrames = '\n' + (0, _stackTrace.stringifyStackFrames)(stackTrace.frames).join('\n') + innerError;
195
195
  if (stackFrames.trim()) e.stack = e.message + stackFrames;else e.stack = '';
196
- csi === null || csi === void 0 || csi.onApiCallEnd(callCookie, e);
196
+ csi === null || csi === void 0 ? void 0 : csi.onApiCallEnd(callCookie, e);
197
197
  logApiCall(logger, `<= ${apiName} failed`, isInternal);
198
198
  throw e;
199
199
  }
@@ -3,7 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.addSourceUrlToScript = addSourceUrlToScript;
7
6
  exports.envObjectToArray = envObjectToArray;
8
7
  exports.evaluationScript = evaluationScript;
9
8
  var _fs = _interopRequireDefault(require("fs"));
@@ -47,11 +46,8 @@ async function evaluationScript(fun, arg, addSourceUrl = true) {
47
46
  if (fun.content !== undefined) return fun.content;
48
47
  if (fun.path !== undefined) {
49
48
  let source = await _fs.default.promises.readFile(fun.path, 'utf8');
50
- if (addSourceUrl) source = addSourceUrlToScript(source, fun.path);
49
+ if (addSourceUrl) source += '\n//# sourceURL=' + fun.path.replace(/\n/g, '');
51
50
  return source;
52
51
  }
53
52
  throw new Error('Either path or content property must be present');
54
- }
55
- function addSourceUrlToScript(source, path) {
56
- return `${source}\n//# sourceURL=${path.replace(/\n/g, '')}`;
57
53
  }
@@ -21,7 +21,7 @@ var _playwright = require("./playwright");
21
21
  var _electron = require("./electron");
22
22
  var _stream = require("./stream");
23
23
  var _writableStream = require("./writableStream");
24
- var _debugLogger = require("../utils/debugLogger");
24
+ var _debugLogger = require("../common/debugLogger");
25
25
  var _selectors = require("./selectors");
26
26
  var _android = require("./android");
27
27
  var _artifact = require("./artifact");
@@ -132,7 +132,7 @@ class Connection extends _events.EventEmitter {
132
132
  location,
133
133
  internal: !apiName
134
134
  };
135
- if (this._tracingCount && frames && type !== 'LocalUtils') (_this$_localUtils = this._localUtils) === null || _this$_localUtils === void 0 || _this$_localUtils._channel.addStackToTracingNoReply({
135
+ if (this._tracingCount && frames && type !== 'LocalUtils') (_this$_localUtils = this._localUtils) === null || _this$_localUtils === void 0 ? void 0 : _this$_localUtils._channel.addStackToTracingNoReply({
136
136
  callData: {
137
137
  stack: frames,
138
138
  id
@@ -23,8 +23,8 @@ let _util$inspect$custom;
23
23
  * See the License for the specific language governing permissions and
24
24
  * limitations under the License.
25
25
  */
26
- 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); }
27
- 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 _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
28
  _util$inspect$custom = util.inspect.custom;
29
29
  class ConsoleMessage {
30
30
  constructor(event) {
@@ -29,8 +29,8 @@ let _Symbol$asyncDispose, _Symbol$asyncDispose2, _util$inspect$custom;
29
29
  * See the License for the specific language governing permissions and
30
30
  * limitations under the License.
31
31
  */
32
- 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); }
33
- 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; }
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
34
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
35
  class APIRequest {
36
36
  constructor(playwright) {
@@ -81,7 +81,7 @@ class APIRequestContext extends _channelOwner.ChannelOwner {
81
81
  var _this$_request;
82
82
  await this._instrumentation.onWillCloseRequestContext(this);
83
83
  await this._channel.dispose();
84
- (_this$_request = this._request) === null || _this$_request === void 0 || _this$_request._contexts.delete(this);
84
+ (_this$_request = this._request) === null || _this$_request === void 0 ? void 0 : _this$_request._contexts.delete(this);
85
85
  }
86
86
  async delete(url, options) {
87
87
  return await this.fetch(url, {
@@ -18,9 +18,8 @@ var _waiter = require("./waiter");
18
18
  var _events2 = require("./events");
19
19
  var _types = require("./types");
20
20
  var _network2 = require("../utils/network");
21
- var _clientHelper = require("./clientHelper");
22
- 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); }
23
- 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; }
21
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
24
  /**
26
25
  * Copyright 2017 Google Inc. All rights reserved.
@@ -271,7 +270,7 @@ class Frame extends _channelOwner.ChannelOwner {
271
270
  };
272
271
  if (copy.path) {
273
272
  copy.content = (await _fs.default.promises.readFile(copy.path)).toString();
274
- copy.content = (0, _clientHelper.addSourceUrlToScript)(copy.content, copy.path);
273
+ copy.content += '//# sourceURL=' + copy.path.replace(/\n/g, '');
275
274
  }
276
275
  return _elementHandle.ElementHandle.from((await this._channel.addScriptTag({
277
276
  ...copy
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.HarRouter = void 0;
7
- var _debugLogger = require("../utils/debugLogger");
7
+ var _debugLogger = require("../common/debugLogger");
8
8
  let _Symbol$asyncDispose;
9
9
  /**
10
10
  * Copyright (c) Microsoft Corporation.
@@ -28,8 +28,8 @@ let _util$inspect$custom;
28
28
  * See the License for the specific language governing permissions and
29
29
  * limitations under the License.
30
30
  */
31
- 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); }
32
- 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; }
31
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
33
  _util$inspect$custom = util.inspect.custom;
34
34
  class Locator {
35
35
  constructor(frame, selector, options) {
@@ -79,7 +79,6 @@ class Page extends _channelOwner.ChannelOwner {
79
79
  this._closeReason = void 0;
80
80
  this._closeWasCalled = false;
81
81
  this._harRouters = [];
82
- this._locatorHandlers = new Map();
83
82
  this._browserContext = parent;
84
83
  this._timeoutSettings = new _timeoutSettings.TimeoutSettings(this._browserContext._timeoutSettings);
85
84
  this.accessibility = new _accessibility.Accessibility(this._channel);
@@ -116,9 +115,6 @@ class Page extends _channelOwner.ChannelOwner {
116
115
  this._channel.on('frameDetached', ({
117
116
  frame
118
117
  }) => this._onFrameDetached(_frame.Frame.from(frame)));
119
- this._channel.on('locatorHandlerTriggered', ({
120
- uid
121
- }) => this._onLocatorHandlerTriggered(uid));
122
118
  this._channel.on('route', ({
123
119
  route
124
120
  }) => this._onRoute(_network2.Route.from(route)));
@@ -308,25 +304,6 @@ class Page extends _channelOwner.ChannelOwner {
308
304
  waitUntil
309
305
  })).response);
310
306
  }
311
- async handleLocator(locator, handler) {
312
- if (locator._frame !== this._mainFrame) throw new Error(`Locator must belong to the main frame of this page`);
313
- const {
314
- uid
315
- } = await this._channel.registerLocatorHandler({
316
- selector: locator._selector
317
- });
318
- this._locatorHandlers.set(uid, handler);
319
- }
320
- async _onLocatorHandlerTriggered(uid) {
321
- try {
322
- const handler = this._locatorHandlers.get(uid);
323
- await (handler === null || handler === void 0 ? void 0 : handler());
324
- } finally {
325
- this._channel.resolveLocatorHandlerNoReply({
326
- uid
327
- }).catch(() => {});
328
- }
329
- }
330
307
  async waitForLoadState(state, options) {
331
308
  return await this._mainFrame.waitForLoadState(state, options);
332
309
  }
@@ -644,7 +621,7 @@ class Page extends _channelOwner.ChannelOwner {
644
621
  const defaultTimeout = this._browserContext._timeoutSettings.defaultTimeout();
645
622
  this._browserContext.setDefaultNavigationTimeout(0);
646
623
  this._browserContext.setDefaultTimeout(0);
647
- (_this$_instrumentatio = this._instrumentation) === null || _this$_instrumentatio === void 0 || _this$_instrumentatio.onWillPause();
624
+ (_this$_instrumentatio = this._instrumentation) === null || _this$_instrumentatio === void 0 ? void 0 : _this$_instrumentatio.onWillPause();
648
625
  await this._closedOrCrashedScope.safeRace(this.context()._channel.pause());
649
626
  this._browserContext.setDefaultNavigationTimeout(defaultNavigationTimeout);
650
627
  this._browserContext.setDefaultTimeout(defaultTimeout);
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.debugLogger = exports.RecentLogsCollector = void 0;
7
+ var _utilsBundle = require("../utilsBundle");
8
+ var _fs = _interopRequireDefault(require("fs"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ /**
11
+ * Copyright (c) Microsoft Corporation.
12
+ *
13
+ * Licensed under the Apache License, Version 2.0 (the "License");
14
+ * you may not use this file except in compliance with the License.
15
+ * You may obtain a copy of the License at
16
+ *
17
+ * http://www.apache.org/licenses/LICENSE-2.0
18
+ *
19
+ * Unless required by applicable law or agreed to in writing, software
20
+ * distributed under the License is distributed on an "AS IS" BASIS,
21
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22
+ * See the License for the specific language governing permissions and
23
+ * limitations under the License.
24
+ */
25
+
26
+ const debugLoggerColorMap = {
27
+ 'api': 45,
28
+ // cyan
29
+ 'protocol': 34,
30
+ // green
31
+ 'install': 34,
32
+ // green
33
+ 'download': 34,
34
+ // green
35
+ 'browser': 0,
36
+ // reset
37
+ 'socks': 92,
38
+ // purple
39
+ 'error': 160,
40
+ // red,
41
+ 'channel': 33,
42
+ // blue
43
+ 'server': 45,
44
+ // cyan
45
+ 'server:channel': 34,
46
+ // green
47
+ 'server:metadata': 33 // blue
48
+ };
49
+
50
+ class DebugLogger {
51
+ constructor() {
52
+ this._debuggers = new Map();
53
+ if (process.env.DEBUG_FILE) {
54
+ const ansiRegex = new RegExp(['[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'].join('|'), 'g');
55
+ const stream = _fs.default.createWriteStream(process.env.DEBUG_FILE);
56
+ _utilsBundle.debug.log = data => {
57
+ stream.write(data.replace(ansiRegex, ''));
58
+ stream.write('\n');
59
+ };
60
+ }
61
+ }
62
+ log(name, message) {
63
+ let cachedDebugger = this._debuggers.get(name);
64
+ if (!cachedDebugger) {
65
+ cachedDebugger = (0, _utilsBundle.debug)(`pw:${name}`);
66
+ this._debuggers.set(name, cachedDebugger);
67
+ cachedDebugger.color = debugLoggerColorMap[name] || 0;
68
+ }
69
+ cachedDebugger(message);
70
+ }
71
+ isEnabled(name) {
72
+ return _utilsBundle.debug.enabled(`pw:${name}`);
73
+ }
74
+ }
75
+ const debugLogger = exports.debugLogger = new DebugLogger();
76
+ const kLogCount = 150;
77
+ class RecentLogsCollector {
78
+ constructor() {
79
+ this._logs = [];
80
+ }
81
+ log(message) {
82
+ this._logs.push(message);
83
+ if (this._logs.length === kLogCount * 2) this._logs.splice(0, kLogCount);
84
+ }
85
+ recentLogs() {
86
+ if (this._logs.length > kLogCount) return this._logs.slice(-kLogCount);
87
+ return this._logs;
88
+ }
89
+ }
90
+ exports.RecentLogsCollector = RecentLogsCollector;