@checkly/playwright-core 1.51.17-beta.1 → 1.54.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/browsers.json +16 -14
  3. package/index.js +1 -1
  4. package/lib/androidServerImpl.js +47 -50
  5. package/lib/browserServerImpl.js +89 -69
  6. package/lib/checkly/escapeRegExp.js +23 -27
  7. package/lib/checkly/fetch.js +64 -46
  8. package/lib/checkly/secretsFilter.js +49 -36
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +400 -359
  11. package/lib/cli/programWithTestStub.js +51 -45
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +151 -242
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -36
  16. package/lib/client/browser.js +96 -71
  17. package/lib/client/browserContext.js +314 -345
  18. package/lib/client/browserType.js +103 -127
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +90 -113
  21. package/lib/client/clientHelper.js +48 -39
  22. package/lib/client/clientInstrumentation.js +40 -37
  23. package/lib/client/clientStackTrace.js +41 -37
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +188 -214
  26. package/lib/client/consoleMessage.js +31 -28
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +80 -77
  31. package/lib/client/elementHandle.js +120 -159
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +124 -121
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +166 -190
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +31 -28
  38. package/lib/client/frame.js +207 -306
  39. package/lib/client/harRouter.js +42 -52
  40. package/lib/client/input.js +42 -69
  41. package/lib/client/jsHandle.js +54 -69
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +29 -29
  44. package/lib/client/locator.js +145 -237
  45. package/lib/client/network.js +282 -307
  46. package/lib/client/page.js +269 -318
  47. package/lib/client/platform.js +46 -43
  48. package/lib/client/playwright.js +51 -76
  49. package/lib/client/selectors.js +45 -63
  50. package/lib/client/stream.js +29 -25
  51. package/lib/client/timeoutSettings.js +55 -41
  52. package/lib/client/tracing.js +49 -96
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +69 -88
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +43 -56
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +27 -23
  60. package/lib/generated/bindingsControllerSource.js +28 -0
  61. package/lib/generated/clockSource.js +26 -6
  62. package/lib/generated/consoleApiSource.js +26 -6
  63. package/lib/generated/injectedScriptSource.js +26 -6
  64. package/lib/generated/pollingRecorderSource.js +26 -6
  65. package/lib/generated/storageScriptSource.js +28 -0
  66. package/lib/generated/utilityScriptSource.js +26 -6
  67. package/lib/generated/webSocketMockSource.js +333 -5
  68. package/lib/inProcessFactory.js +51 -53
  69. package/lib/inprocess.js +2 -19
  70. package/lib/outofprocess.js +51 -46
  71. package/lib/protocol/serializers.js +153 -134
  72. package/lib/protocol/validator.js +2807 -2739
  73. package/lib/protocol/validatorPrimitives.js +114 -73
  74. package/lib/remote/playwrightConnection.js +88 -242
  75. package/lib/remote/playwrightServer.js +305 -92
  76. package/lib/server/accessibility.js +44 -37
  77. package/lib/server/android/android.js +251 -241
  78. package/lib/server/android/backendAdb.js +87 -82
  79. package/lib/server/artifact.js +78 -55
  80. package/lib/server/bidi/bidiBrowser.js +297 -158
  81. package/lib/server/bidi/bidiChromium.js +119 -89
  82. package/lib/server/bidi/bidiConnection.js +66 -83
  83. package/lib/server/bidi/bidiExecutionContext.js +129 -113
  84. package/lib/server/bidi/bidiFirefox.js +86 -76
  85. package/lib/server/bidi/bidiInput.js +106 -117
  86. package/lib/server/bidi/bidiNetworkManager.js +142 -159
  87. package/lib/server/bidi/bidiOverCdp.js +57 -58
  88. package/lib/server/bidi/bidiPage.js +260 -260
  89. package/lib/server/bidi/bidiPdf.js +52 -86
  90. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  91. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  92. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  93. package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
  94. package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
  95. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  96. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  97. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  98. package/lib/server/browser.js +93 -95
  99. package/lib/server/browserContext.js +419 -429
  100. package/lib/server/browserType.js +186 -216
  101. package/lib/server/callLog.js +47 -44
  102. package/lib/server/chromium/chromium.js +235 -203
  103. package/lib/server/chromium/chromiumSwitches.js +100 -67
  104. package/lib/server/chromium/crAccessibility.js +157 -131
  105. package/lib/server/chromium/crBrowser.js +310 -292
  106. package/lib/server/chromium/crConnection.js +95 -121
  107. package/lib/server/chromium/crCoverage.js +121 -131
  108. package/lib/server/chromium/crDevTools.js +60 -51
  109. package/lib/server/chromium/crDragDrop.js +68 -84
  110. package/lib/server/chromium/crExecutionContext.js +89 -83
  111. package/lib/server/chromium/crInput.js +118 -113
  112. package/lib/server/chromium/crNetworkManager.js +274 -375
  113. package/lib/server/chromium/crPage.js +536 -593
  114. package/lib/server/chromium/crPdf.js +54 -86
  115. package/lib/server/chromium/crProtocolHelper.js +92 -80
  116. package/lib/server/chromium/crServiceWorker.js +84 -73
  117. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  118. package/lib/server/chromium/protocol.d.js +16 -0
  119. package/lib/server/chromium/videoRecorder.js +66 -99
  120. package/lib/server/clock.js +107 -83
  121. package/lib/server/codegen/csharp.js +192 -162
  122. package/lib/server/codegen/java.js +156 -129
  123. package/lib/server/codegen/javascript.js +163 -148
  124. package/lib/server/codegen/jsonl.js +32 -28
  125. package/lib/server/codegen/language.js +75 -52
  126. package/lib/server/codegen/languages.js +65 -27
  127. package/lib/server/codegen/python.js +141 -126
  128. package/lib/server/codegen/types.js +15 -4
  129. package/lib/server/console.js +28 -32
  130. package/lib/server/cookieStore.js +108 -86
  131. package/lib/server/debugController.js +147 -151
  132. package/lib/server/debugger.js +86 -78
  133. package/lib/server/deviceDescriptors.js +37 -24
  134. package/lib/server/deviceDescriptorsSource.json +238 -128
  135. package/lib/server/dialog.js +84 -39
  136. package/lib/server/dispatchers/androidDispatcher.js +257 -148
  137. package/lib/server/dispatchers/artifactDispatcher.js +79 -79
  138. package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
  139. package/lib/server/dispatchers/browserDispatcher.js +96 -148
  140. package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
  141. package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
  142. package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
  143. package/lib/server/dispatchers/dialogDispatcher.js +34 -31
  144. package/lib/server/dispatchers/dispatcher.js +208 -248
  145. package/lib/server/dispatchers/electronDispatcher.js +66 -70
  146. package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
  147. package/lib/server/dispatchers/frameDispatcher.js +211 -272
  148. package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
  149. package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
  150. package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
  151. package/lib/server/dispatchers/networkDispatchers.js +117 -128
  152. package/lib/server/dispatchers/pageDispatcher.js +256 -248
  153. package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
  154. package/lib/server/dispatchers/streamDispatcher.js +52 -48
  155. package/lib/server/dispatchers/tracingDispatcher.js +47 -52
  156. package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
  157. package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
  158. package/lib/server/dom.js +485 -582
  159. package/lib/server/download.js +47 -37
  160. package/lib/server/electron/electron.js +216 -243
  161. package/lib/server/electron/loader.js +9 -37
  162. package/lib/server/errors.js +47 -46
  163. package/lib/server/fetch.js +317 -360
  164. package/lib/server/fileChooser.js +25 -24
  165. package/lib/server/fileUploadUtils.js +66 -60
  166. package/lib/server/firefox/ffAccessibility.js +153 -131
  167. package/lib/server/firefox/ffBrowser.js +268 -305
  168. package/lib/server/firefox/ffConnection.js +63 -84
  169. package/lib/server/firefox/ffExecutionContext.js +92 -73
  170. package/lib/server/firefox/ffInput.js +82 -84
  171. package/lib/server/firefox/ffNetworkManager.js +137 -114
  172. package/lib/server/firefox/ffPage.js +261 -293
  173. package/lib/server/firefox/firefox.js +80 -72
  174. package/lib/server/firefox/protocol.d.js +16 -0
  175. package/lib/server/formData.js +107 -35
  176. package/lib/server/frameSelectors.js +98 -114
  177. package/lib/server/frames.js +845 -1055
  178. package/lib/server/har/harRecorder.js +85 -77
  179. package/lib/server/har/harTracer.js +290 -223
  180. package/lib/server/harBackend.js +80 -80
  181. package/lib/server/helper.js +55 -59
  182. package/lib/server/index.js +59 -99
  183. package/lib/server/input.js +151 -189
  184. package/lib/server/instrumentation.js +57 -44
  185. package/lib/server/javascript.js +133 -134
  186. package/lib/server/launchApp.js +113 -75
  187. package/lib/server/localUtils.js +150 -142
  188. package/lib/server/macEditingCommands.js +141 -137
  189. package/lib/server/network.js +299 -303
  190. package/lib/server/page.js +513 -544
  191. package/lib/server/pipeTransport.js +49 -45
  192. package/lib/server/playwright.js +58 -67
  193. package/lib/server/progress.js +137 -68
  194. package/lib/server/protocolError.js +34 -31
  195. package/lib/server/recorder/chat.js +70 -86
  196. package/lib/server/recorder/recorderApp.js +341 -176
  197. package/lib/server/recorder/recorderInTraceViewer.js +65 -94
  198. package/lib/server/recorder/recorderRunner.js +93 -116
  199. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  200. package/lib/server/recorder/recorderUtils.js +104 -47
  201. package/lib/server/recorder/throttledFile.js +42 -30
  202. package/lib/server/recorder.js +395 -275
  203. package/lib/server/registry/browserFetcher.js +106 -101
  204. package/lib/server/registry/dependencies.js +245 -196
  205. package/lib/server/registry/index.js +930 -803
  206. package/lib/server/registry/nativeDeps.js +1073 -464
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +160 -191
  209. package/lib/server/selectors.js +90 -51
  210. package/lib/server/socksClientCertificatesInterceptor.js +171 -186
  211. package/lib/server/socksInterceptor.js +62 -70
  212. package/lib/server/trace/recorder/snapshotter.js +76 -102
  213. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  214. package/lib/server/trace/recorder/tracing.js +354 -362
  215. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  216. package/lib/server/trace/viewer/traceViewer.js +160 -147
  217. package/lib/server/transport.js +119 -134
  218. package/lib/server/types.js +26 -22
  219. package/lib/server/usKeyboardLayout.js +135 -545
  220. package/lib/server/utils/ascii.js +39 -26
  221. package/lib/server/utils/comparators.js +105 -103
  222. package/lib/server/utils/crypto.js +157 -112
  223. package/lib/server/utils/debug.js +36 -32
  224. package/lib/server/utils/debugLogger.js +77 -48
  225. package/lib/server/utils/env.js +52 -37
  226. package/lib/server/utils/eventsHelper.js +29 -28
  227. package/lib/server/utils/expectUtils.js +31 -26
  228. package/lib/server/utils/fileUtils.js +123 -136
  229. package/lib/server/utils/happyEyeballs.js +141 -126
  230. package/lib/server/utils/hostPlatform.js +84 -120
  231. package/lib/server/utils/httpServer.js +106 -121
  232. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  233. package/lib/server/utils/image_tools/compare.js +44 -43
  234. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  235. package/lib/server/utils/image_tools/stats.js +40 -40
  236. package/lib/server/utils/linuxUtils.js +50 -37
  237. package/lib/server/utils/network.js +152 -96
  238. package/lib/server/utils/nodePlatform.js +87 -79
  239. package/lib/server/utils/pipeTransport.js +44 -42
  240. package/lib/server/utils/processLauncher.js +111 -121
  241. package/lib/server/utils/profiler.js +52 -39
  242. package/lib/server/utils/socksProxy.js +280 -339
  243. package/lib/server/utils/spawnAsync.js +37 -41
  244. package/lib/server/utils/task.js +31 -38
  245. package/lib/server/utils/userAgent.js +73 -66
  246. package/lib/server/utils/wsServer.js +68 -75
  247. package/lib/server/utils/zipFile.js +36 -37
  248. package/lib/server/utils/zones.js +37 -34
  249. package/lib/server/webkit/protocol.d.js +16 -0
  250. package/lib/server/webkit/webkit.js +77 -61
  251. package/lib/server/webkit/wkAccessibility.js +161 -118
  252. package/lib/server/webkit/wkBrowser.js +193 -184
  253. package/lib/server/webkit/wkConnection.js +59 -83
  254. package/lib/server/webkit/wkExecutionContext.js +85 -70
  255. package/lib/server/webkit/wkInput.js +97 -95
  256. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  257. package/lib/server/webkit/wkPage.js +568 -667
  258. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  259. package/lib/server/webkit/wkWorkers.js +79 -79
  260. package/lib/utils/expectUtils.js +31 -26
  261. package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
  262. package/lib/utils/isomorphic/assert.js +28 -22
  263. package/lib/utils/isomorphic/colors.js +66 -59
  264. package/lib/utils/isomorphic/cssParser.js +120 -125
  265. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  266. package/lib/utils/isomorphic/headers.js +38 -37
  267. package/lib/utils/isomorphic/locatorGenerators.js +358 -357
  268. package/lib/utils/isomorphic/locatorParser.js +96 -105
  269. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  270. package/lib/utils/isomorphic/manualPromise.js +46 -39
  271. package/lib/utils/isomorphic/mimeType.js +447 -25
  272. package/lib/utils/isomorphic/multimap.js +34 -27
  273. package/lib/utils/isomorphic/protocolFormatter.js +68 -0
  274. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  275. package/lib/utils/isomorphic/recorderUtils.js +140 -181
  276. package/lib/utils/isomorphic/rtti.js +35 -33
  277. package/lib/utils/isomorphic/selectorParser.js +182 -193
  278. package/lib/utils/isomorphic/semaphore.js +27 -24
  279. package/lib/utils/isomorphic/stackTrace.js +87 -98
  280. package/lib/utils/isomorphic/stringUtils.js +98 -112
  281. package/lib/utils/isomorphic/time.js +46 -22
  282. package/lib/utils/isomorphic/timeoutRunner.js +53 -53
  283. package/lib/utils/isomorphic/traceUtils.js +37 -41
  284. package/lib/utils/isomorphic/types.js +15 -4
  285. package/lib/utils/isomorphic/urlMatch.js +113 -67
  286. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  287. package/lib/utils.js +101 -443
  288. package/lib/utilsBundle.js +101 -52
  289. package/lib/utilsBundleImpl/index.js +160 -150
  290. package/lib/zipBundle.js +32 -23
  291. package/lib/zipBundleImpl.js +4 -4
  292. package/package.json +1 -1
  293. package/types/protocol.d.ts +1267 -1057
  294. package/types/types.d.ts +131 -29
  295. package/lib/common/socksProxy.js +0 -569
  296. package/lib/common/timeoutSettings.js +0 -73
  297. package/lib/common/types.js +0 -5
  298. package/lib/image_tools/colorUtils.js +0 -98
  299. package/lib/image_tools/compare.js +0 -108
  300. package/lib/image_tools/imageChannel.js +0 -70
  301. package/lib/image_tools/stats.js +0 -102
  302. package/lib/protocol/debug.js +0 -27
  303. package/lib/protocol/transport.js +0 -82
  304. package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
  305. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  306. package/lib/server/recorder/contextRecorder.js +0 -290
  307. package/lib/server/recorder/recorderCollection.js +0 -104
  308. package/lib/server/recorder/recorderFrontend.js +0 -5
  309. package/lib/server/storageScript.js +0 -160
  310. package/lib/server/timeoutSettings.js +0 -74
  311. package/lib/third_party/diff_match_patch.js +0 -2222
  312. package/lib/utils/ascii.js +0 -31
  313. package/lib/utils/comparators.js +0 -171
  314. package/lib/utils/crypto.js +0 -174
  315. package/lib/utils/debug.js +0 -46
  316. package/lib/utils/debugLogger.js +0 -91
  317. package/lib/utils/env.js +0 -49
  318. package/lib/utils/eventsHelper.js +0 -38
  319. package/lib/utils/fileUtils.js +0 -205
  320. package/lib/utils/happy-eyeballs.js +0 -210
  321. package/lib/utils/headers.js +0 -52
  322. package/lib/utils/hostPlatform.js +0 -133
  323. package/lib/utils/httpServer.js +0 -237
  324. package/lib/utils/index.js +0 -368
  325. package/lib/utils/linuxUtils.js +0 -78
  326. package/lib/utils/manualPromise.js +0 -109
  327. package/lib/utils/multimap.js +0 -75
  328. package/lib/utils/network.js +0 -160
  329. package/lib/utils/processLauncher.js +0 -248
  330. package/lib/utils/profiler.js +0 -53
  331. package/lib/utils/rtti.js +0 -44
  332. package/lib/utils/semaphore.js +0 -51
  333. package/lib/utils/spawnAsync.js +0 -45
  334. package/lib/utils/stackTrace.js +0 -121
  335. package/lib/utils/task.js +0 -58
  336. package/lib/utils/time.js +0 -37
  337. package/lib/utils/timeoutRunner.js +0 -66
  338. package/lib/utils/traceUtils.js +0 -44
  339. package/lib/utils/userAgent.js +0 -105
  340. package/lib/utils/wsServer.js +0 -127
  341. package/lib/utils/zipFile.js +0 -75
  342. package/lib/utils/zones.js +0 -62
  343. package/lib/vite/htmlReport/index.html +0 -69
  344. package/lib/vite/recorder/assets/codeMirrorModule-DrMbgOIo.js +0 -16684
  345. package/lib/vite/recorder/assets/codeMirrorModule-DuST8d_k.css +0 -344
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-5NM3V7eb.css +0 -2524
  348. package/lib/vite/recorder/assets/index-CT-scFHn.js +0 -16848
  349. package/lib/vite/recorder/index.html +0 -29
  350. package/lib/vite/recorder/playwright-logo.svg +0 -9
  351. package/lib/vite/traceViewer/assets/codeMirrorModule-CB-2okZ8.js +0 -16684
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-CBiB4avC.js +0 -217
  353. package/lib/vite/traceViewer/assets/inspectorTab-CwgfffWb.js +0 -25143
  354. package/lib/vite/traceViewer/assets/workbench-CWZselvp.js +0 -2470
  355. package/lib/vite/traceViewer/assets/xtermModule-Es_gt_u7.js +0 -5994
  356. package/lib/vite/traceViewer/codeMirrorModule.DuST8d_k.css +0 -344
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.Dp3b_92q.css +0 -41
  359. package/lib/vite/traceViewer/embedded.BeldSa2G.css +0 -68
  360. package/lib/vite/traceViewer/embedded.gzudoghF.js +0 -106
  361. package/lib/vite/traceViewer/embedded.html +0 -18
  362. package/lib/vite/traceViewer/index.DilotR1h.js +0 -314
  363. package/lib/vite/traceViewer/index.QewjJ85u.css +0 -131
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.DnGm18kV.css +0 -3178
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.DLgqV9db.css +0 -15
  368. package/lib/vite/traceViewer/recorder.DVrkq3Um.js +0 -551
  369. package/lib/vite/traceViewer/recorder.html +0 -17
  370. package/lib/vite/traceViewer/snapshot.html +0 -21
  371. package/lib/vite/traceViewer/sw.bundle.js +0 -3
  372. package/lib/vite/traceViewer/uiMode.C9_OcpPU.js +0 -1756
  373. package/lib/vite/traceViewer/uiMode.c5ORgcrX.css +0 -1424
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.xUZSA8PY.css +0 -787
  376. package/lib/vite/traceViewer/xtermModule.EsaqrrTX.css +0 -209
@@ -1,140 +1,142 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var javascript_exports = {};
20
+ __export(javascript_exports, {
21
+ JavaScriptFormatter: () => JavaScriptFormatter,
22
+ JavaScriptLanguageGenerator: () => JavaScriptLanguageGenerator,
23
+ quoteMultiline: () => quoteMultiline
5
24
  });
6
- exports.JavaScriptLanguageGenerator = exports.JavaScriptFormatter = void 0;
7
- exports.quoteMultiline = quoteMultiline;
8
- var _language = require("./language");
9
- var _utils = require("../../utils");
10
- var _deviceDescriptors = require("../deviceDescriptors");
11
- /**
12
- * Copyright (c) Microsoft Corporation.
13
- *
14
- * Licensed under the Apache License, Version 2.0 (the "License");
15
- * you may not use this file except in compliance with the License.
16
- * You may obtain a copy of the License at
17
- *
18
- * http://www.apache.org/licenses/LICENSE-2.0
19
- *
20
- * Unless required by applicable law or agreed to in writing, software
21
- * distributed under the License is distributed on an "AS IS" BASIS,
22
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23
- * See the License for the specific language governing permissions and
24
- * limitations under the License.
25
- */
26
-
25
+ module.exports = __toCommonJS(javascript_exports);
26
+ var import_language = require("./language");
27
+ var import_utils = require("../../utils");
28
+ var import_deviceDescriptors = require("../deviceDescriptors");
27
29
  class JavaScriptLanguageGenerator {
28
30
  constructor(isTest) {
29
- this.id = void 0;
30
- this.groupName = 'Node.js';
31
- this.name = void 0;
32
- this.highlighter = 'javascript';
33
- this._isTest = void 0;
34
- this.id = isTest ? 'playwright-test' : 'javascript';
35
- this.name = isTest ? 'Test Runner' : 'Library';
31
+ this.groupName = "Node.js";
32
+ this.highlighter = "javascript";
33
+ this.id = isTest ? "playwright-test" : "javascript";
34
+ this.name = isTest ? "Test Runner" : "Library";
36
35
  this._isTest = isTest;
37
36
  }
38
37
  generateAction(actionInContext) {
39
38
  const action = actionInContext.action;
40
- if (this._isTest && (action.name === 'openPage' || action.name === 'closePage')) return '';
39
+ if (this._isTest && (action.name === "openPage" || action.name === "closePage"))
40
+ return "";
41
41
  const pageAlias = actionInContext.frame.pageAlias;
42
42
  const formatter = new JavaScriptFormatter(2);
43
- if (action.name === 'openPage') {
43
+ if (action.name === "openPage") {
44
44
  formatter.add(`const ${pageAlias} = await context.newPage();`);
45
- if (action.url && action.url !== 'about:blank' && action.url !== 'chrome://newtab/') formatter.add(`await ${pageAlias}.goto(${quote(action.url)});`);
45
+ if (action.url && action.url !== "about:blank" && action.url !== "chrome://newtab/")
46
+ formatter.add(`await ${pageAlias}.goto(${quote(action.url)});`);
46
47
  return formatter.format();
47
48
  }
48
- const locators = actionInContext.frame.framePath.map(selector => `.${this._asLocator(selector)}.contentFrame()`);
49
- const subject = `${pageAlias}${locators.join('')}`;
50
- const signals = (0, _language.toSignalMap)(action);
49
+ const locators = actionInContext.frame.framePath.map((selector) => `.${this._asLocator(selector)}.contentFrame()`);
50
+ const subject = `${pageAlias}${locators.join("")}`;
51
+ const signals = (0, import_language.toSignalMap)(action);
51
52
  if (signals.dialog) {
52
53
  formatter.add(` ${pageAlias}.once('dialog', dialog => {
53
- console.log(\`Dialog message: $\{dialog.message()}\`);
54
+ console.log(\`Dialog message: \${dialog.message()}\`);
54
55
  dialog.dismiss().catch(() => {});
55
56
  });`);
56
57
  }
57
- if (signals.popup) formatter.add(`const ${signals.popup.popupAlias}Promise = ${pageAlias}.waitForEvent('popup');`);
58
- if (signals.download) formatter.add(`const download${signals.download.downloadAlias}Promise = ${pageAlias}.waitForEvent('download');`);
58
+ if (signals.popup)
59
+ formatter.add(`const ${signals.popup.popupAlias}Promise = ${pageAlias}.waitForEvent('popup');`);
60
+ if (signals.download)
61
+ formatter.add(`const download${signals.download.downloadAlias}Promise = ${pageAlias}.waitForEvent('download');`);
59
62
  formatter.add(wrapWithStep(actionInContext.description, this._generateActionCall(subject, actionInContext)));
60
- if (signals.popup) formatter.add(`const ${signals.popup.popupAlias} = await ${signals.popup.popupAlias}Promise;`);
61
- if (signals.download) formatter.add(`const download${signals.download.downloadAlias} = await download${signals.download.downloadAlias}Promise;`);
63
+ if (signals.popup)
64
+ formatter.add(`const ${signals.popup.popupAlias} = await ${signals.popup.popupAlias}Promise;`);
65
+ if (signals.download)
66
+ formatter.add(`const download${signals.download.downloadAlias} = await download${signals.download.downloadAlias}Promise;`);
62
67
  return formatter.format();
63
68
  }
64
69
  _generateActionCall(subject, actionInContext) {
65
70
  const action = actionInContext.action;
66
71
  switch (action.name) {
67
- case 'openPage':
68
- throw Error('Not reached');
69
- case 'closePage':
72
+ case "openPage":
73
+ throw Error("Not reached");
74
+ case "closePage":
70
75
  return `await ${subject}.close();`;
71
- case 'click':
72
- {
73
- let method = 'click';
74
- if (action.clickCount === 2) method = 'dblclick';
75
- const options = (0, _language.toClickOptionsForSourceCode)(action);
76
- const optionsString = formatOptions(options, false);
77
- return `await ${subject}.${this._asLocator(action.selector)}.${method}(${optionsString});`;
78
- }
79
- case 'check':
76
+ case "click": {
77
+ let method = "click";
78
+ if (action.clickCount === 2)
79
+ method = "dblclick";
80
+ const options = (0, import_language.toClickOptionsForSourceCode)(action);
81
+ const optionsString = formatOptions(options, false);
82
+ return `await ${subject}.${this._asLocator(action.selector)}.${method}(${optionsString});`;
83
+ }
84
+ case "check":
80
85
  return `await ${subject}.${this._asLocator(action.selector)}.check();`;
81
- case 'uncheck':
86
+ case "uncheck":
82
87
  return `await ${subject}.${this._asLocator(action.selector)}.uncheck();`;
83
- case 'fill':
88
+ case "fill":
84
89
  return `await ${subject}.${this._asLocator(action.selector)}.fill(${quote(action.text)});`;
85
- case 'setInputFiles':
90
+ case "setInputFiles":
86
91
  return `await ${subject}.${this._asLocator(action.selector)}.setInputFiles(${formatObject(action.files.length === 1 ? action.files[0] : action.files)});`;
87
- case 'press':
88
- {
89
- const modifiers = (0, _language.toKeyboardModifiers)(action.modifiers);
90
- const shortcut = [...modifiers, action.key].join('+');
91
- return `await ${subject}.${this._asLocator(action.selector)}.press(${quote(shortcut)});`;
92
- }
93
- case 'navigate':
92
+ case "press": {
93
+ const modifiers = (0, import_language.toKeyboardModifiers)(action.modifiers);
94
+ const shortcut = [...modifiers, action.key].join("+");
95
+ return `await ${subject}.${this._asLocator(action.selector)}.press(${quote(shortcut)});`;
96
+ }
97
+ case "navigate":
94
98
  return `await ${subject}.goto(${quote(action.url)});`;
95
- case 'select':
99
+ case "select":
96
100
  return `await ${subject}.${this._asLocator(action.selector)}.selectOption(${formatObject(action.options.length === 1 ? action.options[0] : action.options)});`;
97
- case 'assertText':
98
- return `${this._isTest ? '' : '// '}await expect(${subject}.${this._asLocator(action.selector)}).${action.substring ? 'toContainText' : 'toHaveText'}(${quote(action.text)});`;
99
- case 'assertChecked':
100
- return `${this._isTest ? '' : '// '}await expect(${subject}.${this._asLocator(action.selector)})${action.checked ? '' : '.not'}.toBeChecked();`;
101
- case 'assertVisible':
102
- return `${this._isTest ? '' : '// '}await expect(${subject}.${this._asLocator(action.selector)}).toBeVisible();`;
103
- case 'assertValue':
104
- {
105
- const assertion = action.value ? `toHaveValue(${quote(action.value)})` : `toBeEmpty()`;
106
- return `${this._isTest ? '' : '// '}await expect(${subject}.${this._asLocator(action.selector)}).${assertion};`;
107
- }
108
- case 'assertSnapshot':
109
- {
110
- const commentIfNeeded = this._isTest ? '' : '// ';
111
- return `${commentIfNeeded}await expect(${subject}.${this._asLocator(action.selector)}).toMatchAriaSnapshot(${quoteMultiline(action.snapshot, `${commentIfNeeded} `)});`;
112
- }
101
+ case "assertText":
102
+ return `${this._isTest ? "" : "// "}await expect(${subject}.${this._asLocator(action.selector)}).${action.substring ? "toContainText" : "toHaveText"}(${quote(action.text)});`;
103
+ case "assertChecked":
104
+ return `${this._isTest ? "" : "// "}await expect(${subject}.${this._asLocator(action.selector)})${action.checked ? "" : ".not"}.toBeChecked();`;
105
+ case "assertVisible":
106
+ return `${this._isTest ? "" : "// "}await expect(${subject}.${this._asLocator(action.selector)}).toBeVisible();`;
107
+ case "assertValue": {
108
+ const assertion = action.value ? `toHaveValue(${quote(action.value)})` : `toBeEmpty()`;
109
+ return `${this._isTest ? "" : "// "}await expect(${subject}.${this._asLocator(action.selector)}).${assertion};`;
110
+ }
111
+ case "assertSnapshot": {
112
+ const commentIfNeeded = this._isTest ? "" : "// ";
113
+ return `${commentIfNeeded}await expect(${subject}.${this._asLocator(action.selector)}).toMatchAriaSnapshot(${quoteMultiline(action.ariaSnapshot, `${commentIfNeeded} `)});`;
114
+ }
113
115
  }
114
116
  }
115
117
  _asLocator(selector) {
116
- return (0, _utils.asLocator)('javascript', selector);
118
+ return (0, import_utils.asLocator)("javascript", selector);
117
119
  }
118
120
  generateHeader(options) {
119
- if (this._isTest) return this.generateTestHeader(options);
121
+ if (this._isTest)
122
+ return this.generateTestHeader(options);
120
123
  return this.generateStandaloneHeader(options);
121
124
  }
122
125
  generateFooter(saveStorage) {
123
- if (this._isTest) return this.generateTestFooter(saveStorage);
126
+ if (this._isTest)
127
+ return this.generateTestFooter(saveStorage);
124
128
  return this.generateStandaloneFooter(saveStorage);
125
129
  }
126
130
  generateTestHeader(options) {
127
131
  const formatter = new JavaScriptFormatter();
128
132
  const useText = formatContextOptions(options.contextOptions, options.deviceName, this._isTest);
129
133
  formatter.add(`
130
- import { test, expect${options.deviceName ? ', devices' : ''} } from '@playwright/test';
131
- ${useText ? '\ntest.use(' + useText + ');\n' : ''}
134
+ import { test, expect${options.deviceName ? ", devices" : ""} } from '@playwright/test';
135
+ ${useText ? "\ntest.use(" + useText + ");\n" : ""}
132
136
  test('test', async ({ page }) => {`);
133
137
  if (options.contextOptions.recordHar) {
134
138
  const url = options.contextOptions.recordHar.urlFilter;
135
- formatter.add(` await page.routeFromHAR(${quote(options.contextOptions.recordHar.path)}${url ? `, ${formatOptions({
136
- url
137
- }, false)}` : ''});`);
139
+ formatter.add(` await page.routeFromHAR(${quote(options.contextOptions.recordHar.path)}${url ? `, ${formatOptions({ url }, false)}` : ""});`);
138
140
  }
139
141
  return formatter.format();
140
142
  }
@@ -144,110 +146,123 @@ ${useText ? '\ntest.use(' + useText + ');\n' : ''}
144
146
  generateStandaloneHeader(options) {
145
147
  const formatter = new JavaScriptFormatter();
146
148
  formatter.add(`
147
- const { ${options.browserName}${options.deviceName ? ', devices' : ''} } = require('playwright');
149
+ const { ${options.browserName}${options.deviceName ? ", devices" : ""} } = require('playwright');
148
150
 
149
151
  (async () => {
150
152
  const browser = await ${options.browserName}.launch(${formatObjectOrVoid(options.launchOptions)});
151
153
  const context = await browser.newContext(${formatContextOptions(options.contextOptions, options.deviceName, false)});`);
152
- if (options.contextOptions.recordHar) formatter.add(` await context.routeFromHAR(${quote(options.contextOptions.recordHar.path)});`);
154
+ if (options.contextOptions.recordHar)
155
+ formatter.add(` await context.routeFromHAR(${quote(options.contextOptions.recordHar.path)});`);
153
156
  return formatter.format();
154
157
  }
155
158
  generateStandaloneFooter(saveStorage) {
156
- const storageStateLine = saveStorage ? `\n await context.storageState({ path: ${quote(saveStorage)} });` : '';
157
- return `\n // ---------------------${storageStateLine}
159
+ const storageStateLine = saveStorage ? `
160
+ await context.storageState({ path: ${quote(saveStorage)} });` : "";
161
+ return `
162
+ // ---------------------${storageStateLine}
158
163
  await context.close();
159
164
  await browser.close();
160
165
  })();`;
161
166
  }
162
167
  }
163
- exports.JavaScriptLanguageGenerator = JavaScriptLanguageGenerator;
164
168
  function formatOptions(value, hasArguments) {
165
169
  const keys = Object.keys(value);
166
- if (!keys.length) return '';
167
- return (hasArguments ? ', ' : '') + formatObject(value);
170
+ if (!keys.length)
171
+ return "";
172
+ return (hasArguments ? ", " : "") + formatObject(value);
168
173
  }
169
- function formatObject(value, indent = ' ') {
170
- if (typeof value === 'string') return quote(value);
171
- if (Array.isArray(value)) return `[${value.map(o => formatObject(o)).join(', ')}]`;
172
- if (typeof value === 'object') {
173
- const keys = Object.keys(value).filter(key => value[key] !== undefined).sort();
174
- if (!keys.length) return '{}';
174
+ function formatObject(value, indent = " ") {
175
+ if (typeof value === "string")
176
+ return quote(value);
177
+ if (Array.isArray(value))
178
+ return `[${value.map((o) => formatObject(o)).join(", ")}]`;
179
+ if (typeof value === "object") {
180
+ const keys = Object.keys(value).filter((key) => value[key] !== void 0).sort();
181
+ if (!keys.length)
182
+ return "{}";
175
183
  const tokens = [];
176
- for (const key of keys) tokens.push(`${key}: ${formatObject(value[key])}`);
177
- return `{\n${indent}${tokens.join(`,\n${indent}`)}\n}`;
184
+ for (const key of keys)
185
+ tokens.push(`${key}: ${formatObject(value[key])}`);
186
+ return `{
187
+ ${indent}${tokens.join(`,
188
+ ${indent}`)}
189
+ }`;
178
190
  }
179
191
  return String(value);
180
192
  }
181
- function formatObjectOrVoid(value, indent = ' ') {
193
+ function formatObjectOrVoid(value, indent = " ") {
182
194
  const result = formatObject(value, indent);
183
- return result === '{}' ? '' : result;
195
+ return result === "{}" ? "" : result;
184
196
  }
185
197
  function formatContextOptions(options, deviceName, isTest) {
186
- const device = deviceName && _deviceDescriptors.deviceDescriptors[deviceName];
187
- // recordHAR is replaced with routeFromHAR in the generated code.
188
- options = {
189
- ...options,
190
- recordHar: undefined
191
- };
192
- if (!device) return formatObjectOrVoid(options);
193
- // Filter out all the properties from the device descriptor.
194
- let serializedObject = formatObjectOrVoid((0, _language.sanitizeDeviceOptions)(device, options));
195
- // When there are no additional context options, we still want to spread the device inside.
196
- if (!serializedObject) serializedObject = '{\n}';
197
- const lines = serializedObject.split('\n');
198
+ const device = deviceName && import_deviceDescriptors.deviceDescriptors[deviceName];
199
+ options = { ...options, recordHar: void 0 };
200
+ if (!device)
201
+ return formatObjectOrVoid(options);
202
+ let serializedObject = formatObjectOrVoid((0, import_language.sanitizeDeviceOptions)(device, options));
203
+ if (!serializedObject)
204
+ serializedObject = "{\n}";
205
+ const lines = serializedObject.split("\n");
198
206
  lines.splice(1, 0, `...devices[${quote(deviceName)}],`);
199
- return lines.join('\n');
207
+ return lines.join("\n");
200
208
  }
201
209
  class JavaScriptFormatter {
202
210
  constructor(offset = 0) {
203
- this._baseIndent = void 0;
204
- this._baseOffset = void 0;
205
211
  this._lines = [];
206
- this._baseIndent = ' '.repeat(2);
207
- this._baseOffset = ' '.repeat(offset);
212
+ this._baseIndent = " ".repeat(2);
213
+ this._baseOffset = " ".repeat(offset);
208
214
  }
209
215
  prepend(text) {
210
- const trim = isMultilineString(text) ? line => line : line => line.trim();
211
- this._lines = text.trim().split('\n').map(trim).concat(this._lines);
216
+ const trim = isMultilineString(text) ? (line) => line : (line) => line.trim();
217
+ this._lines = text.trim().split("\n").map(trim).concat(this._lines);
212
218
  }
213
219
  add(text) {
214
- const trim = isMultilineString(text) ? line => line : line => line.trim();
215
- this._lines.push(...text.trim().split('\n').map(trim));
220
+ const trim = isMultilineString(text) ? (line) => line : (line) => line.trim();
221
+ this._lines.push(...text.trim().split("\n").map(trim));
216
222
  }
217
223
  newLine() {
218
- this._lines.push('');
224
+ this._lines.push("");
219
225
  }
220
226
  format() {
221
- let spaces = '';
222
- let previousLine = '';
223
- return this._lines.map(line => {
224
- if (line === '') return line;
225
- if (line.startsWith('}') || line.startsWith(']')) spaces = spaces.substring(this._baseIndent.length);
226
- const extraSpaces = /^(for|while|if|try).*\(.*\)$/.test(previousLine) ? this._baseIndent : '';
227
+ let spaces = "";
228
+ let previousLine = "";
229
+ return this._lines.map((line) => {
230
+ if (line === "")
231
+ return line;
232
+ if (line.startsWith("}") || line.startsWith("]"))
233
+ spaces = spaces.substring(this._baseIndent.length);
234
+ const extraSpaces = /^(for|while|if|try).*\(.*\)$/.test(previousLine) ? this._baseIndent : "";
227
235
  previousLine = line;
228
- const callCarryOver = line.startsWith('.set');
229
- line = spaces + extraSpaces + (callCarryOver ? this._baseIndent : '') + line;
230
- if (line.endsWith('{') || line.endsWith('[')) spaces += this._baseIndent;
236
+ const callCarryOver = line.startsWith(".set");
237
+ line = spaces + extraSpaces + (callCarryOver ? this._baseIndent : "") + line;
238
+ if (line.endsWith("{") || line.endsWith("["))
239
+ spaces += this._baseIndent;
231
240
  return this._baseOffset + line;
232
- }).join('\n');
241
+ }).join("\n");
233
242
  }
234
243
  }
235
- exports.JavaScriptFormatter = JavaScriptFormatter;
236
244
  function quote(text) {
237
- return (0, _utils.escapeWithQuotes)(text, '\'');
245
+ return (0, import_utils.escapeWithQuotes)(text, "'");
238
246
  }
239
247
  function wrapWithStep(description, body) {
240
248
  return description ? `await test.step(\`${description}\`, async () => {
241
249
  ${body}
242
250
  });` : body;
243
251
  }
244
- function quoteMultiline(text, indent = ' ') {
245
- const escape = text => text.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$\{/g, '\\${');
246
- const lines = text.split('\n');
247
- if (lines.length === 1) return '`' + escape(text) + '`';
248
- return '`\n' + lines.map(line => indent + escape(line).replace(/\${/g, '\\${')).join('\n') + `\n${indent}\``;
252
+ function quoteMultiline(text, indent = " ") {
253
+ const escape = (text2) => text2.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
254
+ const lines = text.split("\n");
255
+ if (lines.length === 1)
256
+ return "`" + escape(text) + "`";
257
+ return "`\n" + lines.map((line) => indent + escape(line).replace(/\${/g, "\\${")).join("\n") + `
258
+ ${indent}\``;
249
259
  }
250
260
  function isMultilineString(text) {
251
- var _text$match;
252
- return (_text$match = text.match(/`[\S\s]*`/)) === null || _text$match === void 0 ? void 0 : _text$match[0].includes('\n');
253
- }
261
+ return text.match(/`[\S\s]*`/)?.[0].includes("\n");
262
+ }
263
+ // Annotate the CommonJS export names for ESM import in node:
264
+ 0 && (module.exports = {
265
+ JavaScriptFormatter,
266
+ JavaScriptLanguageGenerator,
267
+ quoteMultiline
268
+ });
@@ -1,35 +1,36 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var jsonl_exports = {};
20
+ __export(jsonl_exports, {
21
+ JsonlLanguageGenerator: () => JsonlLanguageGenerator
5
22
  });
6
- exports.JsonlLanguageGenerator = void 0;
7
- var _utils = require("../../utils");
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
-
23
+ module.exports = __toCommonJS(jsonl_exports);
24
+ var import_utils = require("../../utils");
24
25
  class JsonlLanguageGenerator {
25
26
  constructor() {
26
- this.id = 'jsonl';
27
- this.groupName = '';
28
- this.name = 'JSONL';
29
- this.highlighter = 'javascript';
27
+ this.id = "jsonl";
28
+ this.groupName = "";
29
+ this.name = "JSONL";
30
+ this.highlighter = "javascript";
30
31
  }
31
32
  generateAction(actionInContext) {
32
- const locator = actionInContext.action.selector ? JSON.parse((0, _utils.asLocator)('jsonl', actionInContext.action.selector)) : undefined;
33
+ const locator = actionInContext.action.selector ? JSON.parse((0, import_utils.asLocator)("jsonl", actionInContext.action.selector)) : void 0;
33
34
  const entry = {
34
35
  ...actionInContext.action,
35
36
  ...actionInContext.frame,
@@ -41,7 +42,10 @@ class JsonlLanguageGenerator {
41
42
  return JSON.stringify(options);
42
43
  }
43
44
  generateFooter(saveStorage) {
44
- return '';
45
+ return "";
45
46
  }
46
47
  }
47
- exports.JsonlLanguageGenerator = JsonlLanguageGenerator;
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ JsonlLanguageGenerator
51
+ });