@checkly/playwright-core 1.48.22 → 1.51.11-beta.2

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 (307) hide show
  1. package/ThirdPartyNotices.txt +60 -48
  2. package/bin/reinstall_chrome_beta_linux.sh +10 -8
  3. package/bin/reinstall_chrome_stable_linux.sh +10 -8
  4. package/bin/reinstall_msedge_beta_linux.sh +17 -9
  5. package/bin/reinstall_msedge_dev_linux.sh +17 -9
  6. package/bin/reinstall_msedge_stable_linux.sh +17 -9
  7. package/browsers.json +33 -12
  8. package/index.js +0 -1
  9. package/lib/androidServerImpl.js +5 -5
  10. package/lib/browserServerImpl.js +18 -9
  11. package/lib/checkly/secretsFilter.js +1 -1
  12. package/lib/cli/driver.js +6 -6
  13. package/lib/cli/program.js +38 -43
  14. package/lib/cli/programWithTestStub.js +2 -1
  15. package/lib/client/android.js +37 -58
  16. package/lib/client/artifact.js +4 -7
  17. package/lib/client/browser.js +10 -15
  18. package/lib/client/browserContext.js +69 -62
  19. package/lib/client/browserType.js +30 -64
  20. package/lib/client/channelOwner.js +53 -68
  21. package/lib/client/clientHelper.js +4 -6
  22. package/lib/client/clientInstrumentation.js +2 -0
  23. package/lib/client/clientStackTrace.js +65 -0
  24. package/lib/client/connection.js +48 -41
  25. package/lib/client/consoleMessage.js +4 -7
  26. package/lib/client/electron.js +10 -10
  27. package/lib/client/elementHandle.js +32 -33
  28. package/lib/client/errors.js +2 -2
  29. package/lib/client/eventEmitter.js +5 -8
  30. package/lib/client/fetch.js +61 -62
  31. package/lib/client/fileUtils.js +31 -0
  32. package/lib/client/frame.js +22 -23
  33. package/lib/client/harRouter.js +7 -9
  34. package/lib/client/jsHandle.js +3 -4
  35. package/lib/client/localUtils.js +24 -0
  36. package/lib/client/locator.js +27 -13
  37. package/lib/client/network.js +44 -37
  38. package/lib/client/page.js +50 -41
  39. package/lib/client/platform.js +71 -0
  40. package/lib/client/playwright.js +21 -1
  41. package/lib/client/selectors.js +8 -2
  42. package/lib/client/stream.js +2 -21
  43. package/lib/client/timeoutSettings.js +65 -0
  44. package/lib/client/tracing.js +29 -7
  45. package/lib/client/video.js +2 -2
  46. package/lib/client/waiter.js +19 -16
  47. package/lib/client/webSocket.js +106 -0
  48. package/lib/client/worker.js +4 -4
  49. package/lib/client/writableStream.js +2 -21
  50. package/lib/generated/consoleApiSource.js +1 -1
  51. package/lib/generated/injectedScriptSource.js +1 -1
  52. package/lib/generated/pollingRecorderSource.js +1 -1
  53. package/lib/generated/recorderSource.js +7 -0
  54. package/lib/generated/webSocketMockSource.js +1 -1
  55. package/lib/inProcessFactory.js +8 -3
  56. package/lib/outofprocess.js +12 -8
  57. package/lib/protocol/debug.js +1 -1
  58. package/lib/protocol/validator.js +77 -11
  59. package/lib/protocol/validatorPrimitives.js +1 -2
  60. package/lib/remote/playwrightConnection.js +21 -12
  61. package/lib/remote/playwrightServer.js +22 -8
  62. package/lib/server/android/android.js +17 -14
  63. package/lib/server/android/backendAdb.js +14 -14
  64. package/lib/server/artifact.js +3 -3
  65. package/lib/server/bidi/bidiBrowser.js +11 -8
  66. package/lib/server/bidi/bidiChromium.js +5 -4
  67. package/lib/server/bidi/bidiConnection.js +1 -3
  68. package/lib/server/bidi/bidiExecutionContext.js +71 -25
  69. package/lib/server/bidi/bidiFirefox.js +4 -3
  70. package/lib/server/bidi/bidiInput.js +11 -12
  71. package/lib/server/bidi/bidiNetworkManager.js +11 -12
  72. package/lib/server/bidi/bidiOverCdp.js +2 -2
  73. package/lib/server/bidi/bidiPage.js +39 -66
  74. package/lib/server/bidi/third_party/bidiKeyboard.js +9 -7
  75. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  76. package/lib/server/browser.js +2 -2
  77. package/lib/server/browserContext.js +60 -55
  78. package/lib/server/browserType.js +22 -18
  79. package/lib/server/callLog.js +79 -0
  80. package/lib/server/chromium/chromium.js +20 -16
  81. package/lib/server/chromium/chromiumSwitches.js +32 -9
  82. package/lib/server/chromium/crBrowser.js +25 -24
  83. package/lib/server/chromium/crConnection.js +2 -2
  84. package/lib/server/chromium/crCoverage.js +1 -1
  85. package/lib/server/chromium/crDevTools.js +1 -1
  86. package/lib/server/chromium/crDragDrop.js +1 -1
  87. package/lib/server/chromium/crExecutionContext.js +26 -35
  88. package/lib/server/chromium/crInput.js +17 -6
  89. package/lib/server/chromium/crNetworkManager.js +3 -3
  90. package/lib/server/chromium/crPage.js +43 -55
  91. package/lib/server/chromium/crPdf.js +1 -1
  92. package/lib/server/chromium/crProtocolHelper.js +3 -3
  93. package/lib/server/chromium/crServiceWorker.js +2 -2
  94. package/lib/server/chromium/videoRecorder.js +2 -2
  95. package/lib/server/clock.js +1 -1
  96. package/lib/server/codegen/csharp.js +21 -16
  97. package/lib/server/codegen/java.js +17 -9
  98. package/lib/server/codegen/javascript.js +37 -7
  99. package/lib/server/codegen/jsonl.js +1 -1
  100. package/lib/server/codegen/languages.js +2 -2
  101. package/lib/server/codegen/python.js +14 -17
  102. package/lib/server/debugController.js +23 -45
  103. package/lib/server/debugger.js +1 -1
  104. package/lib/server/deviceDescriptors.js +1 -1
  105. package/lib/server/deviceDescriptorsSource.json +131 -131
  106. package/lib/server/dispatchers/androidDispatcher.js +14 -3
  107. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  108. package/lib/server/dispatchers/browserContextDispatcher.js +21 -32
  109. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  110. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  111. package/lib/server/dispatchers/debugControllerDispatcher.js +5 -3
  112. package/lib/server/dispatchers/dispatcher.js +27 -25
  113. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  114. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  115. package/lib/server/dispatchers/frameDispatcher.js +9 -3
  116. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  117. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -291
  118. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  119. package/lib/server/dispatchers/pageDispatcher.js +10 -8
  120. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  121. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  122. package/lib/server/dispatchers/tracingDispatcher.js +10 -0
  123. package/lib/server/dispatchers/webSocketRouteDispatcher.js +18 -18
  124. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  125. package/lib/server/dom.js +102 -48
  126. package/lib/server/download.js +1 -1
  127. package/lib/server/electron/electron.js +17 -16
  128. package/lib/server/errors.js +1 -1
  129. package/lib/server/fetch.js +49 -33
  130. package/lib/server/fileUploadUtils.js +7 -4
  131. package/lib/server/firefox/ffBrowser.js +17 -9
  132. package/lib/server/firefox/ffConnection.js +1 -1
  133. package/lib/server/firefox/ffExecutionContext.js +25 -29
  134. package/lib/server/firefox/ffInput.js +15 -4
  135. package/lib/server/firefox/ffNetworkManager.js +3 -3
  136. package/lib/server/firefox/ffPage.js +29 -50
  137. package/lib/server/firefox/firefox.js +7 -9
  138. package/lib/server/frameSelectors.js +1 -1
  139. package/lib/server/frames.js +65 -55
  140. package/lib/server/har/harRecorder.js +4 -4
  141. package/lib/server/har/harTracer.js +8 -9
  142. package/lib/server/harBackend.js +157 -0
  143. package/lib/server/helper.js +2 -2
  144. package/lib/server/index.js +1 -14
  145. package/lib/server/input.js +3 -4
  146. package/lib/server/instrumentation.js +2 -2
  147. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  148. package/lib/server/javascript.js +26 -33
  149. package/lib/server/launchApp.js +7 -7
  150. package/lib/server/localUtils.js +203 -0
  151. package/lib/server/network.js +5 -5
  152. package/lib/server/page.js +76 -37
  153. package/lib/server/pipeTransport.js +1 -1
  154. package/lib/server/playwright.js +5 -5
  155. package/lib/server/progress.js +1 -4
  156. package/lib/server/protocolError.js +1 -1
  157. package/lib/server/recorder/chat.js +177 -0
  158. package/lib/server/recorder/codeGenerator.js +154 -0
  159. package/lib/server/recorder/contextRecorder.js +9 -18
  160. package/lib/server/recorder/csharp.js +311 -0
  161. package/lib/server/recorder/java.js +249 -0
  162. package/lib/server/recorder/javascript.js +230 -0
  163. package/lib/server/recorder/jsonl.js +48 -0
  164. package/lib/server/recorder/language.js +45 -0
  165. package/lib/server/recorder/python.js +276 -0
  166. package/lib/server/recorder/recorderActions.js +6 -0
  167. package/lib/server/recorder/recorderApp.js +25 -28
  168. package/lib/server/recorder/recorderCollection.js +9 -21
  169. package/lib/server/recorder/recorderInTraceViewer.js +1 -1
  170. package/lib/server/recorder/recorderRunner.js +7 -3
  171. package/lib/server/recorder/recorderUtils.js +5 -28
  172. package/lib/server/recorder/throttledFile.js +3 -4
  173. package/lib/server/recorder/utils.js +46 -0
  174. package/lib/server/recorder.js +83 -43
  175. package/lib/server/registry/browserFetcher.js +10 -8
  176. package/lib/server/registry/dependencies.js +20 -20
  177. package/lib/server/registry/index.js +215 -61
  178. package/lib/server/registry/nativeDeps.js +10 -4
  179. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  180. package/lib/server/screenshotter.js +1 -1
  181. package/lib/server/selectors.js +3 -3
  182. package/lib/server/socksClientCertificatesInterceptor.js +8 -8
  183. package/lib/server/socksInterceptor.js +8 -5
  184. package/lib/server/storageScript.js +160 -0
  185. package/lib/server/timeoutSettings.js +74 -0
  186. package/lib/server/trace/recorder/snapshotter.js +10 -20
  187. package/lib/server/trace/recorder/snapshotterInjected.js +26 -1
  188. package/lib/server/trace/recorder/tracing.js +108 -45
  189. package/lib/server/trace/test/inMemorySnapshotter.js +6 -6
  190. package/lib/server/trace/viewer/traceViewer.js +21 -7
  191. package/lib/server/transport.js +3 -2
  192. package/lib/server/utils/ascii.js +31 -0
  193. package/lib/server/utils/comparators.js +159 -0
  194. package/lib/server/utils/crypto.js +171 -0
  195. package/lib/server/utils/debug.js +38 -0
  196. package/lib/server/utils/debugLogger.js +93 -0
  197. package/lib/server/utils/env.js +53 -0
  198. package/lib/server/utils/eventsHelper.js +38 -0
  199. package/lib/server/utils/expectUtils.js +33 -0
  200. package/lib/server/utils/fileUtils.js +204 -0
  201. package/lib/server/utils/happyEyeballs.js +207 -0
  202. package/lib/server/utils/hostPlatform.js +145 -0
  203. package/lib/server/utils/httpServer.js +233 -0
  204. package/lib/server/utils/image_tools/colorUtils.js +98 -0
  205. package/lib/server/utils/image_tools/compare.js +108 -0
  206. package/lib/server/utils/image_tools/imageChannel.js +70 -0
  207. package/lib/server/utils/image_tools/stats.js +102 -0
  208. package/lib/server/utils/linuxUtils.js +58 -0
  209. package/lib/server/utils/network.js +160 -0
  210. package/lib/server/utils/nodePlatform.js +140 -0
  211. package/lib/server/utils/pipeTransport.js +82 -0
  212. package/lib/server/utils/processLauncher.js +248 -0
  213. package/lib/server/utils/profiler.js +52 -0
  214. package/lib/server/utils/socksProxy.js +570 -0
  215. package/lib/server/utils/spawnAsync.js +45 -0
  216. package/lib/server/utils/task.js +58 -0
  217. package/lib/server/utils/userAgent.js +91 -0
  218. package/lib/server/utils/wsServer.js +128 -0
  219. package/lib/server/utils/zipFile.js +75 -0
  220. package/lib/server/utils/zones.js +54 -0
  221. package/lib/server/webkit/webkit.js +4 -4
  222. package/lib/server/webkit/wkBrowser.js +10 -10
  223. package/lib/server/webkit/wkConnection.js +1 -1
  224. package/lib/server/webkit/wkExecutionContext.js +26 -30
  225. package/lib/server/webkit/wkInput.js +17 -7
  226. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  227. package/lib/server/webkit/wkPage.js +80 -66
  228. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  229. package/lib/server/webkit/wkWorkers.js +2 -2
  230. package/lib/utils/fileUtils.js +1 -1
  231. package/lib/utils/glob.js +84 -0
  232. package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
  233. package/lib/utils/isomorphic/assert.js +25 -0
  234. package/lib/utils/isomorphic/colors.js +65 -0
  235. package/lib/utils/isomorphic/cssParser.js +5 -5
  236. package/lib/utils/isomorphic/headers.js +52 -0
  237. package/lib/utils/isomorphic/locatorGenerators.js +38 -8
  238. package/lib/utils/isomorphic/locatorParser.js +19 -13
  239. package/lib/utils/isomorphic/manualPromise.js +107 -0
  240. package/lib/utils/isomorphic/mimeType.js +11 -3
  241. package/lib/utils/isomorphic/multimap.js +73 -0
  242. package/lib/utils/isomorphic/rtti.js +41 -0
  243. package/lib/utils/isomorphic/semaphore.js +51 -0
  244. package/lib/utils/isomorphic/stackTrace.js +169 -0
  245. package/lib/utils/isomorphic/stringUtils.js +31 -1
  246. package/lib/utils/isomorphic/time.js +25 -0
  247. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  248. package/lib/utils/isomorphic/traceUtils.js +23 -0
  249. package/lib/utils/isomorphic/types.js +5 -0
  250. package/lib/utils/isomorphic/urlMatch.js +7 -5
  251. package/lib/utils/mimeType.js +30 -0
  252. package/lib/utils/stackTrace.js +1 -1
  253. package/lib/utils.js +447 -0
  254. package/lib/utilsBundle.js +4 -29
  255. package/lib/utilsBundleImpl/index.js +188 -33
  256. package/lib/vite/htmlReport/index.html +20 -17
  257. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  258. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  259. package/lib/vite/recorder/assets/{index-BW-aOBcL.css → index-eHBmevrY.css} +1 -1
  260. package/lib/vite/recorder/index.html +2 -2
  261. package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +24 -0
  262. package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +1 -0
  263. package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +235 -0
  264. package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +25 -0
  265. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  266. package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +1 -0
  267. package/lib/vite/traceViewer/{embedded.BkvOrz5Z.js → embedded.DpNPH6mk.js} +2 -2
  268. package/lib/vite/traceViewer/embedded.html +6 -6
  269. package/lib/vite/traceViewer/index.CuE3SYGw.js +2 -0
  270. package/lib/vite/traceViewer/index.html +27 -9
  271. package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +1 -0
  272. package/lib/vite/traceViewer/{recorder.DNMfnSiu.js → recorder.BD-uZJs7.js} +2 -2
  273. package/lib/vite/traceViewer/recorder.html +4 -4
  274. package/lib/vite/traceViewer/sw.bundle.js +7888 -3
  275. package/lib/vite/traceViewer/{uiMode.CAYqod-m.css → uiMode.BatfzHMG.css} +1 -1
  276. package/lib/vite/traceViewer/uiMode.DHrNgddz.js +5 -0
  277. package/lib/vite/traceViewer/uiMode.html +8 -7
  278. package/lib/vite/traceViewer/workbench.B9vIAzH9.css +1 -0
  279. package/lib/zipBundleImpl.js +4 -4
  280. package/package.json +7 -7
  281. package/types/protocol.d.ts +820 -153
  282. package/types/types.d.ts +285 -82
  283. package/bin/PrintDeps.exe +0 -0
  284. package/bin/README.md +0 -2
  285. package/lib/vite/recorder/assets/codeMirrorModule-d0KhC1qL.js +0 -24
  286. package/lib/vite/recorder/assets/index-Bxxcmxlu.js +0 -42
  287. package/lib/vite/traceViewer/assets/codeMirrorModule-pBPtArIT.js +0 -24
  288. package/lib/vite/traceViewer/assets/codeMirrorModule-tzBrK1V4.js +0 -24
  289. package/lib/vite/traceViewer/assets/inspectorTab-BuJ3wAX_.js +0 -64
  290. package/lib/vite/traceViewer/assets/inspectorTab-Soeeuvzv.js +0 -64
  291. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
  292. package/lib/vite/traceViewer/assets/workbench-DdmJ9AJV.js +0 -9
  293. package/lib/vite/traceViewer/assets/workbench-lypYlf00.js +0 -9
  294. package/lib/vite/traceViewer/embedded.DInvAijy.js +0 -2
  295. package/lib/vite/traceViewer/index.Dha3cgqs.js +0 -2
  296. package/lib/vite/traceViewer/index._Iolt-uE.js +0 -2
  297. package/lib/vite/traceViewer/inspectorTab.DLjBDrQR.css +0 -1
  298. package/lib/vite/traceViewer/recorder.DTSaNaly.js +0 -2
  299. package/lib/vite/traceViewer/uiMode.BM7yhjzl.js +0 -5
  300. package/lib/vite/traceViewer/uiMode.Cr1tvTWS.js +0 -5
  301. package/lib/vite/traceViewer/workbench.DlsCx8k5.css +0 -1
  302. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  303. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  304. /package/lib/vite/traceViewer/{embedded.w7WN2u1R.css → embedded.mLhjB5IF.css} +0 -0
  305. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  306. /package/lib/vite/traceViewer/{recorder.B_SY1GJM.css → recorder.tn0RQdqM.css} +0 -0
  307. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
@@ -8,18 +8,22 @@ exports.shouldCaptureSnapshot = shouldCaptureSnapshot;
8
8
  var _fs = _interopRequireDefault(require("fs"));
9
9
  var _os = _interopRequireDefault(require("os"));
10
10
  var _path = _interopRequireDefault(require("path"));
11
+ var _snapshotter = require("./snapshotter");
11
12
  var _debug = require("../../../protocol/debug");
12
- var _utils = require("../../../utils");
13
+ var _assert = require("../../../utils/isomorphic/assert");
14
+ var _time = require("../../../utils/isomorphic/time");
15
+ var _eventsHelper = require("../../utils/eventsHelper");
16
+ var _crypto = require("../../utils/crypto");
13
17
  var _artifact = require("../../artifact");
14
18
  var _browserContext = require("../../browserContext");
15
- var _instrumentation = require("../../instrumentation");
16
- var _page = require("../../page");
17
- var _harTracer = require("../../har/harTracer");
18
- var _snapshotter = require("./snapshotter");
19
19
  var _dispatcher = require("../../dispatchers/dispatcher");
20
20
  var _errors = require("../../errors");
21
+ var _fileUtils = require("../../utils/fileUtils");
22
+ var _harTracer = require("../../har/harTracer");
23
+ var _instrumentation = require("../../instrumentation");
24
+ var _page = require("../../page");
21
25
  var _secretsFilter = require("../../../checkly/secretsFilter");
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
27
  /**
24
28
  * Copyright (c) Microsoft Corporation.
25
29
  *
@@ -45,7 +49,7 @@ const kScreencastOptions = {
45
49
  class Tracing extends _instrumentation.SdkObject {
46
50
  constructor(context, tracesDir) {
47
51
  super(context, 'tracing');
48
- this._fs = new _utils.SerializedFS();
52
+ this._fs = new _fileUtils.SerializedFS();
49
53
  this._snapshotter = void 0;
50
54
  this._harTracer = void 0;
51
55
  this._screencastListeners = [];
@@ -80,11 +84,12 @@ class Tracing extends _instrumentation.SdkObject {
80
84
  wallTime: 0,
81
85
  monotonicTime: 0,
82
86
  sdkLanguage: context.attribution.playwright.options.sdkLanguage,
83
- testIdAttributeName
87
+ testIdAttributeName,
88
+ contextId: context.guid
84
89
  };
85
90
  if (context instanceof _browserContext.BrowserContext) {
86
91
  this._snapshotter = new _snapshotter.Snapshotter(context, this);
87
- (0, _utils.assert)(tracesDir, 'tracesDir must be specified for BrowserContext');
92
+ (0, _assert.assert)(tracesDir, 'tracesDir must be specified for BrowserContext');
88
93
  this._contextCreatedEvent.browserName = context._browser.options.name;
89
94
  this._contextCreatedEvent.channel = context._browser.options.channel;
90
95
  this._contextCreatedEvent.options = context._options;
@@ -108,7 +113,7 @@ class Tracing extends _instrumentation.SdkObject {
108
113
 
109
114
  // TODO: passing the same name for two contexts makes them write into a single file
110
115
  // and conflict.
111
- const traceName = options.name || (0, _utils.createGuid)();
116
+ const traceName = options.name || (0, _crypto.createGuid)();
112
117
  const tracesDir = this._createTracesDirIfNeeded();
113
118
 
114
119
  // Init the state synchronously.
@@ -123,7 +128,8 @@ class Tracing extends _instrumentation.SdkObject {
123
128
  traceSha1s: new Set(),
124
129
  networkSha1s: new Set(),
125
130
  recording: false,
126
- callIds: new Set()
131
+ callIds: new Set(),
132
+ groupStack: []
127
133
  };
128
134
  this._fs.mkdir(this._state.resourcesDir);
129
135
  this._fs.writeFile(this._state.networkFile, '');
@@ -141,30 +147,82 @@ class Tracing extends _instrumentation.SdkObject {
141
147
  if (this._isStopping) throw new Error('Cannot start a trace chunk while stopping');
142
148
  this._state.recording = true;
143
149
  this._state.callIds.clear();
144
- if (options.name && options.name !== this._state.traceName) this._changeTraceName(this._state, options.name);else this._allocateNewTraceFile(this._state);
150
+
151
+ // - Browser context network trace is shared across chunks as it contains resources
152
+ // used to serve page snapshots, so make a copy with the new name.
153
+ // - APIRequestContext network traces are chunk-specific, always start from scratch.
154
+ const preserveNetworkResources = this._context instanceof _browserContext.BrowserContext;
155
+ if (options.name && options.name !== this._state.traceName) this._changeTraceName(this._state, options.name, preserveNetworkResources);else this._allocateNewTraceFile(this._state);
156
+ if (!preserveNetworkResources) this._fs.writeFile(this._state.networkFile, '');
145
157
  this._fs.mkdir(_path.default.dirname(this._state.traceFile));
146
158
  const event = {
147
159
  ...this._contextCreatedEvent,
148
160
  title: options.title,
149
161
  wallTime: Date.now(),
150
- monotonicTime: (0, _utils.monotonicTime)()
162
+ monotonicTime: (0, _time.monotonicTime)()
151
163
  };
152
164
  this._appendTraceEvent(event);
153
165
  this._context.instrumentation.addListener(this, this._context);
154
- this._eventListeners.push(_utils.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.Console, this._onConsoleMessage.bind(this)), _utils.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.PageError, this._onPageError.bind(this)));
166
+ this._eventListeners.push(_eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.Console, this._onConsoleMessage.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.PageError, this._onPageError.bind(this)));
155
167
  if (this._state.options.screenshots) this._startScreencast();
156
168
  if (this._state.options.snapshots) await ((_this$_snapshotter2 = this._snapshotter) === null || _this$_snapshotter2 === void 0 ? void 0 : _this$_snapshotter2.start());
157
169
  return {
158
170
  traceName: this._state.traceName
159
171
  };
160
172
  }
173
+ _currentGroupId() {
174
+ var _this$_state;
175
+ return (_this$_state = this._state) !== null && _this$_state !== void 0 && _this$_state.groupStack.length ? this._state.groupStack[this._state.groupStack.length - 1] : undefined;
176
+ }
177
+ async group(name, location, metadata) {
178
+ var _ref;
179
+ if (!this._state) return;
180
+ const stackFrames = [];
181
+ const {
182
+ file,
183
+ line,
184
+ column
185
+ } = (_ref = location !== null && location !== void 0 ? location : metadata.location) !== null && _ref !== void 0 ? _ref : {};
186
+ if (file) {
187
+ stackFrames.push({
188
+ file,
189
+ line: line !== null && line !== void 0 ? line : 0,
190
+ column: column !== null && column !== void 0 ? column : 0
191
+ });
192
+ }
193
+ const event = {
194
+ type: 'before',
195
+ callId: metadata.id,
196
+ startTime: metadata.startTime,
197
+ apiName: name,
198
+ class: 'Tracing',
199
+ method: 'tracingGroup',
200
+ params: {},
201
+ stepId: metadata.stepId,
202
+ stack: stackFrames
203
+ };
204
+ if (this._currentGroupId()) event.parentId = this._currentGroupId();
205
+ this._state.groupStack.push(event.callId);
206
+ this._appendTraceEvent(event);
207
+ }
208
+ groupEnd() {
209
+ if (!this._state) return;
210
+ const callId = this._state.groupStack.pop();
211
+ if (!callId) return;
212
+ const event = {
213
+ type: 'after',
214
+ callId,
215
+ endTime: (0, _time.monotonicTime)()
216
+ };
217
+ this._appendTraceEvent(event);
218
+ }
161
219
  _startScreencast() {
162
220
  if (!(this._context instanceof _browserContext.BrowserContext)) return;
163
221
  for (const page of this._context.pages()) this._startScreencastInPage(page);
164
- this._screencastListeners.push(_utils.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.Page, this._startScreencastInPage.bind(this)));
222
+ this._screencastListeners.push(_eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.Page, this._startScreencastInPage.bind(this)));
165
223
  }
166
224
  _stopScreencast() {
167
- _utils.eventsHelper.removeEventListeners(this._screencastListeners);
225
+ _eventsHelper.eventsHelper.removeEventListeners(this._screencastListeners);
168
226
  if (!(this._context instanceof _browserContext.BrowserContext)) return;
169
227
  for (const page of this._context.pages()) page.setScreencastOptions(null);
170
228
  }
@@ -173,27 +231,26 @@ class Tracing extends _instrumentation.SdkObject {
173
231
  state.chunkOrdinal++;
174
232
  state.traceFile = _path.default.join(state.tracesDir, `${state.traceName}${suffix}.trace`);
175
233
  }
176
- _changeTraceName(state, name) {
234
+ _changeTraceName(state, name, preserveNetworkResources) {
177
235
  state.traceName = name;
178
236
  state.chunkOrdinal = 0; // Reset ordinal for the new name.
179
237
  this._allocateNewTraceFile(state);
180
-
181
- // Network file survives across chunks, so make a copy with the new name.
182
238
  const newNetworkFile = _path.default.join(state.tracesDir, name + '.network');
183
- this._fs.copyFile(state.networkFile, newNetworkFile);
239
+ if (preserveNetworkResources) this._fs.copyFile(state.networkFile, newNetworkFile);
184
240
  state.networkFile = newNetworkFile;
185
241
  }
186
242
  async stop() {
187
243
  if (!this._state) return;
188
244
  if (this._isStopping) throw new Error(`Tracing is already stopping`);
189
245
  if (this._state.recording) throw new Error(`Must stop trace file before stopping tracing`);
246
+ this._closeAllGroups();
190
247
  this._harTracer.stop();
191
248
  this.flushHarEntries();
192
249
  await this._fs.syncAndGetError();
193
250
  this._state = undefined;
194
251
  }
195
252
  async deleteTmpTracesDir() {
196
- if (this._tracesTmpDir) await (0, _utils.removeFolders)([this._tracesTmpDir]);
253
+ if (this._tracesTmpDir) await (0, _fileUtils.removeFolders)([this._tracesTmpDir]);
197
254
  }
198
255
  _createTracesDirIfNeeded() {
199
256
  if (this._precreatedTracesDir) return this._precreatedTracesDir;
@@ -209,6 +266,9 @@ class Tracing extends _instrumentation.SdkObject {
209
266
  this.abort();
210
267
  await this._fs.syncAndGetError();
211
268
  }
269
+ _closeAllGroups() {
270
+ while (this._currentGroupId()) this.groupEnd();
271
+ }
212
272
  async stopChunk(params) {
213
273
  var _this$_snapshotter4;
214
274
  if (this._isStopping) throw new Error(`Tracing is already stopping`);
@@ -218,8 +278,9 @@ class Tracing extends _instrumentation.SdkObject {
218
278
  if (params.mode !== 'discard') throw new Error(`Must start tracing before stopping`);
219
279
  return {};
220
280
  }
281
+ this._closeAllGroups();
221
282
  this._context.instrumentation.removeListener(this);
222
- _utils.eventsHelper.removeEventListeners(this._eventListeners);
283
+ _eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
223
284
  if (this._state.options.screenshots) this._stopScreencast();
224
285
  if (this._state.options.snapshots) await ((_this$_snapshotter4 = this._snapshotter) === null || _this$_snapshotter4 === void 0 ? void 0 : _this$_snapshotter4.stop());
225
286
  this.flushHarEntries();
@@ -278,34 +339,34 @@ class Tracing extends _instrumentation.SdkObject {
278
339
  artifact
279
340
  };
280
341
  }
281
- async _captureSnapshot(snapshotName, sdkObject, metadata, element) {
342
+ async _captureSnapshot(snapshotName, sdkObject, metadata) {
282
343
  if (!this._snapshotter) return;
283
344
  if (!sdkObject.attribution.page) return;
284
345
  if (!this._snapshotter.started()) return;
285
346
  if (!shouldCaptureSnapshot(metadata)) return;
286
- await this._snapshotter.captureSnapshot(sdkObject.attribution.page, metadata.id, snapshotName, element).catch(() => {});
347
+ await this._snapshotter.captureSnapshot(sdkObject.attribution.page, metadata.id, snapshotName).catch(() => {});
287
348
  }
288
349
  onBeforeCall(sdkObject, metadata) {
289
- var _sdkObject$attributio, _this$_state;
350
+ var _sdkObject$attributio, _this$_state2;
290
351
  // IMPORTANT: no awaits before this._appendTraceEvent in this method.
291
- const event = createBeforeActionTraceEvent(metadata);
352
+ const event = createBeforeActionTraceEvent(metadata, this._currentGroupId());
292
353
  if (!event) return Promise.resolve();
293
354
  (_sdkObject$attributio = sdkObject.attribution.page) === null || _sdkObject$attributio === void 0 || _sdkObject$attributio.temporarilyDisableTracingScreencastThrottling();
294
355
  event.beforeSnapshot = `before@${metadata.id}`;
295
- (_this$_state = this._state) === null || _this$_state === void 0 || _this$_state.callIds.add(metadata.id);
356
+ (_this$_state2 = this._state) === null || _this$_state2 === void 0 || _this$_state2.callIds.add(metadata.id);
296
357
  this._appendTraceEvent(event);
297
358
  return this._captureSnapshot(event.beforeSnapshot, sdkObject, metadata);
298
359
  }
299
- onBeforeInputAction(sdkObject, metadata, element) {
300
- var _this$_state2, _sdkObject$attributio2;
301
- if (!((_this$_state2 = this._state) !== null && _this$_state2 !== void 0 && _this$_state2.callIds.has(metadata.id))) return Promise.resolve();
360
+ onBeforeInputAction(sdkObject, metadata) {
361
+ var _this$_state3, _sdkObject$attributio2;
362
+ if (!((_this$_state3 = this._state) !== null && _this$_state3 !== void 0 && _this$_state3.callIds.has(metadata.id))) return Promise.resolve();
302
363
  // IMPORTANT: no awaits before this._appendTraceEvent in this method.
303
364
  const event = createInputActionTraceEvent(metadata);
304
365
  if (!event) return Promise.resolve();
305
366
  (_sdkObject$attributio2 = sdkObject.attribution.page) === null || _sdkObject$attributio2 === void 0 || _sdkObject$attributio2.temporarilyDisableTracingScreencastThrottling();
306
367
  event.inputSnapshot = `input@${metadata.id}`;
307
368
  this._appendTraceEvent(event);
308
- return this._captureSnapshot(event.inputSnapshot, sdkObject, metadata, element);
369
+ return this._captureSnapshot(event.inputSnapshot, sdkObject, metadata);
309
370
  }
310
371
  onCallLog(sdkObject, metadata, logName, message) {
311
372
  if (metadata.isServerSide || metadata.internal) return;
@@ -314,9 +375,9 @@ class Tracing extends _instrumentation.SdkObject {
314
375
  if (event) this._appendTraceEvent(event);
315
376
  }
316
377
  async onAfterCall(sdkObject, metadata) {
317
- var _this$_state3, _this$_state4, _sdkObject$attributio3;
318
- if (!((_this$_state3 = this._state) !== null && _this$_state3 !== void 0 && _this$_state3.callIds.has(metadata.id))) return;
319
- (_this$_state4 = this._state) === null || _this$_state4 === void 0 || _this$_state4.callIds.delete(metadata.id);
378
+ var _this$_state4, _this$_state5, _sdkObject$attributio3;
379
+ if (!((_this$_state4 = this._state) !== null && _this$_state4 !== void 0 && _this$_state4.callIds.has(metadata.id))) return;
380
+ (_this$_state5 = this._state) === null || _this$_state5 === void 0 || _this$_state5.callIds.delete(metadata.id);
320
381
  const event = createAfterActionTraceEvent(metadata);
321
382
  if (!event) return;
322
383
  (_sdkObject$attributio3 = sdkObject.attribution.page) === null || _sdkObject$attributio3 === void 0 || _sdkObject$attributio3.temporarilyDisableTracingScreencastThrottling();
@@ -372,7 +433,7 @@ class Tracing extends _instrumentation.SdkObject {
372
433
  value: a.rawValue()
373
434
  })),
374
435
  location: message.location(),
375
- time: (0, _utils.monotonicTime)(),
436
+ time: (0, _time.monotonicTime)(),
376
437
  pageId: (_message$page = message.page()) === null || _message$page === void 0 ? void 0 : _message$page.guid
377
438
  };
378
439
  this._appendTraceEvent(event);
@@ -380,7 +441,7 @@ class Tracing extends _instrumentation.SdkObject {
380
441
  onDialog(dialog) {
381
442
  const event = {
382
443
  type: 'event',
383
- time: (0, _utils.monotonicTime)(),
444
+ time: (0, _time.monotonicTime)(),
384
445
  class: 'BrowserContext',
385
446
  method: 'dialog',
386
447
  params: {
@@ -395,7 +456,7 @@ class Tracing extends _instrumentation.SdkObject {
395
456
  onDownload(page, download) {
396
457
  const event = {
397
458
  type: 'event',
398
- time: (0, _utils.monotonicTime)(),
459
+ time: (0, _time.monotonicTime)(),
399
460
  class: 'BrowserContext',
400
461
  method: 'download',
401
462
  params: {
@@ -410,7 +471,7 @@ class Tracing extends _instrumentation.SdkObject {
410
471
  var _page$opener;
411
472
  const event = {
412
473
  type: 'event',
413
- time: (0, _utils.monotonicTime)(),
474
+ time: (0, _time.monotonicTime)(),
414
475
  class: 'BrowserContext',
415
476
  method: 'page',
416
477
  params: {
@@ -423,7 +484,7 @@ class Tracing extends _instrumentation.SdkObject {
423
484
  onPageClose(page) {
424
485
  const event = {
425
486
  type: 'event',
426
- time: (0, _utils.monotonicTime)(),
487
+ time: (0, _time.monotonicTime)(),
427
488
  class: 'BrowserContext',
428
489
  method: 'pageClosed',
429
490
  params: {
@@ -435,7 +496,7 @@ class Tracing extends _instrumentation.SdkObject {
435
496
  _onPageError(error, page) {
436
497
  const event = {
437
498
  type: 'event',
438
- time: (0, _utils.monotonicTime)(),
499
+ time: (0, _time.monotonicTime)(),
439
500
  class: 'BrowserContext',
440
501
  method: 'pageError',
441
502
  params: {
@@ -448,7 +509,7 @@ class Tracing extends _instrumentation.SdkObject {
448
509
  _startScreencastInPage(page) {
449
510
  page.setScreencastOptions(kScreencastOptions);
450
511
  const prefix = page.guid;
451
- this._screencastListeners.push(_utils.eventsHelper.addEventListener(page, _page.Page.Events.ScreencastFrame, params => {
512
+ this._screencastListeners.push(_eventsHelper.eventsHelper.addEventListener(page, _page.Page.Events.ScreencastFrame, params => {
452
513
  const suffix = params.timestamp || Date.now();
453
514
  const sha1 = `${prefix}-${suffix}.jpeg`;
454
515
  const event = {
@@ -457,7 +518,7 @@ class Tracing extends _instrumentation.SdkObject {
457
518
  sha1,
458
519
  width: params.width,
459
520
  height: params.height,
460
- timestamp: (0, _utils.monotonicTime)(),
521
+ timestamp: (0, _time.monotonicTime)(),
461
522
  frameSwapWallTime: params.frameSwapWallTime
462
523
  };
463
524
  // Make sure to write the screencast frame before adding a reference to it.
@@ -511,9 +572,9 @@ function visitTraceEvent(object, sha1s, secretsFilter) {
511
572
  function shouldCaptureSnapshot(metadata) {
512
573
  return _debug.commandsWithTracingSnapshots.has(metadata.type + '.' + metadata.method);
513
574
  }
514
- function createBeforeActionTraceEvent(metadata) {
575
+ function createBeforeActionTraceEvent(metadata, parentId) {
515
576
  if (metadata.internal || metadata.method.startsWith('tracing')) return null;
516
- return {
577
+ const event = {
517
578
  type: 'before',
518
579
  callId: metadata.id,
519
580
  startTime: metadata.startTime,
@@ -524,6 +585,8 @@ function createBeforeActionTraceEvent(metadata) {
524
585
  stepId: metadata.stepId,
525
586
  pageId: metadata.pageId
526
587
  };
588
+ if (parentId) event.parentId = parentId;
589
+ return event;
527
590
  }
528
591
  function createInputActionTraceEvent(metadata) {
529
592
  if (metadata.internal || metadata.method.startsWith('tracing')) return null;
@@ -538,7 +601,7 @@ function createActionLogTraceEvent(metadata, message) {
538
601
  return {
539
602
  type: 'log',
540
603
  callId: metadata.id,
541
- time: (0, _utils.monotonicTime)(),
604
+ time: (0, _time.monotonicTime)(),
542
605
  message
543
606
  };
544
607
  }
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.InMemorySnapshotter = void 0;
7
7
  var _snapshotStorage = require("../../../../../trace-viewer/src/sw/snapshotStorage");
8
- var _snapshotter = require("../recorder/snapshotter");
9
- var _harTracer = require("../../har/harTracer");
10
8
  var _utils = require("../../../utils");
9
+ var _harTracer = require("../../har/harTracer");
10
+ var _snapshotter = require("../recorder/snapshotter");
11
11
  /**
12
12
  * Copyright (c) Microsoft Corporation.
13
13
  *
@@ -60,16 +60,16 @@ class InMemorySnapshotter {
60
60
  await this._harTracer.flush();
61
61
  this._harTracer.stop();
62
62
  }
63
- async captureSnapshot(page, callId, snapshotName, element) {
63
+ async captureSnapshot(page, callId, snapshotName) {
64
64
  if (this._snapshotReadyPromises.has(snapshotName)) throw new Error('Duplicate snapshot name: ' + snapshotName);
65
- this._snapshotter.captureSnapshot(page, callId, snapshotName, element).catch(() => {});
65
+ this._snapshotter.captureSnapshot(page, callId, snapshotName).catch(() => {});
66
66
  const promise = new _utils.ManualPromise();
67
67
  this._snapshotReadyPromises.set(snapshotName, promise);
68
68
  return promise;
69
69
  }
70
70
  onEntryStarted(entry) {}
71
71
  onEntryFinished(entry) {
72
- this._storage.addResource(entry);
72
+ this._storage.addResource('', entry);
73
73
  }
74
74
  onContentBlob(sha1, buffer) {
75
75
  this._blobs.set(sha1, buffer);
@@ -80,7 +80,7 @@ class InMemorySnapshotter {
80
80
  onFrameSnapshot(snapshot) {
81
81
  var _this$_snapshotReadyP;
82
82
  ++this._snapshotCount;
83
- const renderer = this._storage.addFrameSnapshot(snapshot);
83
+ const renderer = this._storage.addFrameSnapshot('', snapshot, []);
84
84
  (_this$_snapshotReadyP = this._snapshotReadyPromises.get(snapshot.snapshotName || '')) === null || _this$_snapshotReadyP === void 0 || _this$_snapshotReadyP.resolve(renderer);
85
85
  }
86
86
  async resourceContentForTest(sha1) {
@@ -9,16 +9,16 @@ exports.openTraceViewerApp = openTraceViewerApp;
9
9
  exports.runTraceInBrowser = runTraceInBrowser;
10
10
  exports.runTraceViewerApp = runTraceViewerApp;
11
11
  exports.startTraceViewerServer = startTraceViewerServer;
12
- var _path = _interopRequireDefault(require("path"));
13
12
  var _fs = _interopRequireDefault(require("fs"));
14
- var _httpServer = require("../../../utils/httpServer");
13
+ var _path = _interopRequireDefault(require("path"));
15
14
  var _utils = require("../../../utils");
16
- var _launchApp = require("../../launchApp");
15
+ var _httpServer = require("../../utils/httpServer");
16
+ var _utilsBundle = require("../../../utilsBundle");
17
17
  var _instrumentation = require("../../instrumentation");
18
+ var _launchApp = require("../../launchApp");
18
19
  var _playwright = require("../../playwright");
19
20
  var _progress = require("../../progress");
20
- var _utilsBundle = require("../../../utilsBundle");
21
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
22
  /**
23
23
  * Copyright (c) Microsoft Corporation.
24
24
  *
@@ -48,6 +48,10 @@ async function startTraceViewerServer(options) {
48
48
  server.routePrefix('/trace', (request, response) => {
49
49
  const url = new URL('http://localhost' + request.url);
50
50
  const relativePath = url.pathname.slice('/trace'.length);
51
+ if (process.env.PW_HMR) {
52
+ // When running in Vite HMR mode, port is hardcoded in build.js
53
+ response.appendHeader('Access-Control-Allow-Origin', 'http://localhost:44223');
54
+ }
51
55
  if (relativePath.endsWith('/stall.js')) return true;
52
56
  if (relativePath.startsWith('/file')) {
53
57
  try {
@@ -94,10 +98,19 @@ async function installRootRedirect(server, traceUrls, options) {
94
98
  if (options.grepInvert) params.append('grepInvert', options.grepInvert);
95
99
  for (const project of options.project || []) params.append('project', project);
96
100
  for (const reporter of options.reporter || []) params.append('reporter', reporter);
97
- const urlPath = `./trace/${options.webApp || 'index.html'}?${params.toString()}`;
101
+ let baseUrl = '.';
102
+ if (process.env.PW_HMR) {
103
+ baseUrl = 'http://localhost:44223'; // port is hardcoded in build.js
104
+ params.set('server', server.urlPrefix('precise'));
105
+ }
106
+ const urlPath = `${baseUrl}/trace/${options.webApp || 'index.html'}?${params.toString()}`;
98
107
  server.routePath('/', (_, response) => {
99
108
  response.statusCode = 302;
100
109
  response.setHeader('Location', urlPath);
110
+ if (process.env.EXPERIMENTAL_OPENAI_API_KEY) response.appendHeader('Set-Cookie', `openai_api_key=${process.env.EXPERIMENTAL_OPENAI_API_KEY}`);
111
+ if (process.env.OPENAI_BASE_URL) response.appendHeader('Set-Cookie', `openai_base_url=${process.env.OPENAI_BASE_URL}`);
112
+ if (process.env.EXPERIMENTAL_ANTHROPIC_API_KEY) response.appendHeader('Set-Cookie', `anthropic_api_key=${process.env.EXPERIMENTAL_ANTHROPIC_API_KEY}`);
113
+ if (process.env.ANTHROPIC_BASE_URL) response.appendHeader('Set-Cookie', `anthropic_base_url=${process.env.ANTHROPIC_BASE_URL}`);
101
114
  response.end();
102
115
  return true;
103
116
  });
@@ -135,7 +148,8 @@ async function openTraceViewerApp(url, browserName, options) {
135
148
  persistentContextOptions: {
136
149
  ...(options === null || options === void 0 ? void 0 : options.persistentContextOptions),
137
150
  useWebSocket: (0, _utils.isUnderTest)(),
138
- headless: !!(options !== null && options !== void 0 && options.headless)
151
+ headless: !!(options !== null && options !== void 0 && options.headless),
152
+ colorScheme: (0, _utils.isUnderTest)() ? 'light' : undefined
139
153
  }
140
154
  });
141
155
  const controller = new _progress.ProgressController((0, _instrumentation.serverSideCallMetadata)(), context._browser);
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.perMessageDeflate = exports.WebSocketTransport = void 0;
7
- var _utilsBundle = require("../utilsBundle");
8
7
  var _utils = require("../utils");
9
- var _happyEyeballs = require("../utils/happy-eyeballs");
8
+ var _happyEyeballs = require("./utils/happyEyeballs");
9
+ var _utilsBundle = require("../utilsBundle");
10
10
  /**
11
11
  * Copyright 2018 Google Inc. All rights reserved.
12
12
  * Modifications copyright (c) Microsoft Corporation.
@@ -25,6 +25,7 @@ var _happyEyeballs = require("../utils/happy-eyeballs");
25
25
  */
26
26
 
27
27
  const perMessageDeflate = exports.perMessageDeflate = {
28
+ clientNoContextTakeover: true,
28
29
  zlibDeflateOptions: {
29
30
  level: 3
30
31
  },
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.jsonStringifyForceASCII = jsonStringifyForceASCII;
7
+ exports.wrapInASCIIBox = wrapInASCIIBox;
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
+ function wrapInASCIIBox(text, padding = 0) {
25
+ const lines = text.split('\n');
26
+ const maxLength = Math.max(...lines.map(line => line.length));
27
+ return ['╔' + '═'.repeat(maxLength + padding * 2) + '╗', ...lines.map(line => '║' + ' '.repeat(padding) + line + ' '.repeat(maxLength - line.length + padding) + '║'), '╚' + '═'.repeat(maxLength + padding * 2) + '╝'].join('\n');
28
+ }
29
+ function jsonStringifyForceASCII(object) {
30
+ return JSON.stringify(object).replace(/[\u007f-\uffff]/g, c => '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4));
31
+ }