patchright-core 1.51.3 → 1.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/browsers.json +15 -13
  2. package/lib/androidServerImpl.js +42 -48
  3. package/lib/browserServerImpl.js +54 -67
  4. package/lib/cli/driver.js +71 -69
  5. package/lib/cli/program.js +312 -328
  6. package/lib/cli/programWithTestStub.js +51 -45
  7. package/lib/client/accessibility.js +31 -32
  8. package/lib/client/android.js +141 -228
  9. package/lib/client/api.js +135 -283
  10. package/lib/client/artifact.js +39 -36
  11. package/lib/client/browser.js +57 -61
  12. package/lib/client/browserContext.js +297 -326
  13. package/lib/client/browserType.js +92 -106
  14. package/lib/client/cdpSession.js +29 -31
  15. package/lib/client/channelOwner.js +82 -95
  16. package/lib/client/clientHelper.js +46 -38
  17. package/lib/client/clientInstrumentation.js +40 -37
  18. package/lib/client/clientStackTrace.js +41 -37
  19. package/lib/client/clock.js +36 -36
  20. package/lib/client/connection.js +190 -212
  21. package/lib/client/consoleMessage.js +31 -28
  22. package/lib/client/coverage.js +25 -22
  23. package/lib/client/dialog.js +30 -31
  24. package/lib/client/download.js +25 -25
  25. package/lib/client/electron.js +73 -75
  26. package/lib/client/elementHandle.js +111 -147
  27. package/lib/client/errors.js +53 -53
  28. package/lib/client/eventEmitter.js +124 -121
  29. package/lib/client/events.js +72 -68
  30. package/lib/client/fetch.js +135 -158
  31. package/lib/client/fileChooser.js +25 -24
  32. package/lib/client/fileUtils.js +31 -28
  33. package/lib/client/frame.js +187 -306
  34. package/lib/client/harRouter.js +42 -52
  35. package/lib/client/input.js +40 -69
  36. package/lib/client/jsHandle.js +54 -69
  37. package/lib/client/jsonPipe.js +27 -23
  38. package/lib/client/localUtils.js +29 -28
  39. package/lib/client/locator.js +161 -245
  40. package/lib/client/network.js +277 -295
  41. package/lib/client/page.js +270 -318
  42. package/lib/client/platform.js +46 -43
  43. package/lib/client/playwright.js +51 -66
  44. package/lib/client/selectors.js +48 -46
  45. package/lib/client/stream.js +29 -25
  46. package/lib/client/timeoutSettings.js +49 -39
  47. package/lib/client/tracing.js +48 -84
  48. package/lib/client/types.js +26 -22
  49. package/lib/client/video.js +35 -27
  50. package/lib/client/waiter.js +69 -88
  51. package/lib/client/webError.js +25 -23
  52. package/lib/client/webSocket.js +61 -56
  53. package/lib/client/worker.js +48 -58
  54. package/lib/client/writableStream.js +27 -23
  55. package/lib/generated/clockSource.js +26 -5
  56. package/lib/generated/consoleApiSource.js +26 -5
  57. package/lib/generated/injectedScriptSource.js +26 -5
  58. package/lib/generated/pollingRecorderSource.js +26 -5
  59. package/lib/generated/utilityScriptSource.js +26 -5
  60. package/lib/generated/webSocketMockSource.js +375 -4
  61. package/lib/inProcessFactory.js +53 -53
  62. package/lib/inprocess.js +2 -19
  63. package/lib/outofprocess.js +53 -46
  64. package/lib/protocol/debug.js +209 -25
  65. package/lib/protocol/serializers.js +153 -134
  66. package/lib/protocol/validator.js +2714 -2714
  67. package/lib/protocol/validatorPrimitives.js +114 -73
  68. package/lib/remote/playwrightConnection.js +140 -157
  69. package/lib/remote/playwrightServer.js +99 -84
  70. package/lib/server/accessibility.js +44 -37
  71. package/lib/server/android/android.js +216 -209
  72. package/lib/server/android/backendAdb.js +89 -82
  73. package/lib/server/artifact.js +78 -55
  74. package/lib/server/bidi/bidiBrowser.js +221 -155
  75. package/lib/server/bidi/bidiChromium.js +106 -79
  76. package/lib/server/bidi/bidiConnection.js +66 -83
  77. package/lib/server/bidi/bidiExecutionContext.js +128 -113
  78. package/lib/server/bidi/bidiFirefox.js +76 -69
  79. package/lib/server/bidi/bidiInput.js +86 -97
  80. package/lib/server/bidi/bidiNetworkManager.js +137 -154
  81. package/lib/server/bidi/bidiOverCdp.js +57 -58
  82. package/lib/server/bidi/bidiPage.js +247 -219
  83. package/lib/server/bidi/bidiPdf.js +52 -86
  84. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  85. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  86. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  87. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  88. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  89. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  90. package/lib/server/browser.js +76 -84
  91. package/lib/server/browserContext.js +321 -346
  92. package/lib/server/browserType.js +169 -182
  93. package/lib/server/callLog.js +47 -44
  94. package/lib/server/chromium/chromium.js +212 -190
  95. package/lib/server/chromium/chromiumSwitches.js +86 -64
  96. package/lib/server/chromium/crAccessibility.js +157 -131
  97. package/lib/server/chromium/crBrowser.js +253 -273
  98. package/lib/server/chromium/crConnection.js +91 -116
  99. package/lib/server/chromium/crCoverage.js +113 -127
  100. package/lib/server/chromium/crDevTools.js +59 -51
  101. package/lib/server/chromium/crDragDrop.js +62 -79
  102. package/lib/server/chromium/crExecutionContext.js +88 -83
  103. package/lib/server/chromium/crInput.js +97 -95
  104. package/lib/server/chromium/crNetworkManager.js +284 -404
  105. package/lib/server/chromium/crPage.js +522 -608
  106. package/lib/server/chromium/crPdf.js +54 -86
  107. package/lib/server/chromium/crProtocolHelper.js +92 -80
  108. package/lib/server/chromium/crServiceWorker.js +82 -67
  109. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  110. package/lib/server/chromium/protocol.d.js +16 -0
  111. package/lib/server/chromium/videoRecorder.js +65 -99
  112. package/lib/server/clock.js +62 -50
  113. package/lib/server/codegen/csharp.js +185 -160
  114. package/lib/server/codegen/java.js +155 -128
  115. package/lib/server/codegen/javascript.js +163 -148
  116. package/lib/server/codegen/jsonl.js +32 -28
  117. package/lib/server/codegen/language.js +75 -52
  118. package/lib/server/codegen/languages.js +65 -27
  119. package/lib/server/codegen/python.js +140 -125
  120. package/lib/server/codegen/types.js +15 -4
  121. package/lib/server/console.js +28 -32
  122. package/lib/server/cookieStore.js +105 -86
  123. package/lib/server/debugController.js +97 -124
  124. package/lib/server/debugger.js +82 -78
  125. package/lib/server/deviceDescriptors.js +37 -24
  126. package/lib/server/deviceDescriptorsSource.json +50 -50
  127. package/lib/server/dialog.js +36 -35
  128. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  129. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  130. package/lib/server/dispatchers/browserContextDispatcher.js +176 -205
  131. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  132. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  133. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  134. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -66
  135. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  136. package/lib/server/dispatchers/dispatcher.js +169 -220
  137. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  138. package/lib/server/dispatchers/elementHandlerDispatcher.js +77 -119
  139. package/lib/server/dispatchers/frameDispatcher.js +99 -163
  140. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  141. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  142. package/lib/server/dispatchers/localUtilsDispatcher.js +95 -80
  143. package/lib/server/dispatchers/networkDispatchers.js +90 -107
  144. package/lib/server/dispatchers/pageDispatcher.js +128 -169
  145. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  146. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  147. package/lib/server/dispatchers/streamDispatcher.js +42 -45
  148. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  149. package/lib/server/dispatchers/webSocketRouteDispatcher.js +96 -131
  150. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -38
  151. package/lib/server/dom.js +413 -443
  152. package/lib/server/download.js +45 -35
  153. package/lib/server/electron/electron.js +156 -176
  154. package/lib/server/electron/loader.js +8 -36
  155. package/lib/server/errors.js +47 -46
  156. package/lib/server/fetch.js +289 -323
  157. package/lib/server/fileChooser.js +25 -24
  158. package/lib/server/fileUploadUtils.js +65 -59
  159. package/lib/server/firefox/ffAccessibility.js +153 -131
  160. package/lib/server/firefox/ffBrowser.js +213 -277
  161. package/lib/server/firefox/ffConnection.js +63 -84
  162. package/lib/server/firefox/ffExecutionContext.js +91 -73
  163. package/lib/server/firefox/ffInput.js +67 -69
  164. package/lib/server/firefox/ffNetworkManager.js +131 -110
  165. package/lib/server/firefox/ffPage.js +236 -273
  166. package/lib/server/firefox/firefox.js +76 -67
  167. package/lib/server/firefox/protocol.d.js +16 -0
  168. package/lib/server/formData.js +107 -35
  169. package/lib/server/frameSelectors.js +77 -111
  170. package/lib/server/frames.js +730 -894
  171. package/lib/server/har/harRecorder.js +85 -77
  172. package/lib/server/har/harTracer.js +287 -222
  173. package/lib/server/harBackend.js +80 -80
  174. package/lib/server/helper.js +56 -59
  175. package/lib/server/index.js +59 -99
  176. package/lib/server/input.js +134 -163
  177. package/lib/server/instrumentation.js +49 -44
  178. package/lib/server/javascript.js +143 -134
  179. package/lib/server/launchApp.js +92 -73
  180. package/lib/server/localUtils.js +130 -122
  181. package/lib/server/macEditingCommands.js +141 -137
  182. package/lib/server/network.js +262 -296
  183. package/lib/server/page.js +329 -426
  184. package/lib/server/pageBinding.js +88 -0
  185. package/lib/server/pipeTransport.js +49 -45
  186. package/lib/server/playwright.js +60 -67
  187. package/lib/server/progress.js +56 -51
  188. package/lib/server/protocolError.js +34 -31
  189. package/lib/server/recorder/chat.js +70 -86
  190. package/lib/server/recorder/contextRecorder.js +134 -138
  191. package/lib/server/recorder/recorderApp.js +127 -136
  192. package/lib/server/recorder/recorderCollection.js +56 -44
  193. package/lib/server/recorder/recorderFrontend.js +15 -4
  194. package/lib/server/recorder/recorderRunner.js +79 -103
  195. package/lib/server/recorder/recorderUtils.js +56 -45
  196. package/lib/server/recorder/throttledFile.js +42 -30
  197. package/lib/server/recorder.js +177 -186
  198. package/lib/server/registry/browserFetcher.js +106 -101
  199. package/lib/server/registry/dependencies.js +245 -196
  200. package/lib/server/registry/index.js +904 -792
  201. package/lib/server/registry/nativeDeps.js +1073 -464
  202. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  203. package/lib/server/screenshotter.js +166 -182
  204. package/lib/server/selectors.js +85 -46
  205. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  206. package/lib/server/socksInterceptor.js +62 -70
  207. package/lib/server/storageScript.js +94 -100
  208. package/lib/server/timeoutSettings.js +58 -43
  209. package/lib/server/trace/recorder/snapshotter.js +70 -89
  210. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  211. package/lib/server/trace/recorder/tracing.js +321 -333
  212. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  213. package/lib/server/trace/viewer/traceViewer.js +168 -146
  214. package/lib/server/transport.js +124 -133
  215. package/lib/server/types.js +26 -22
  216. package/lib/server/usKeyboardLayout.js +135 -545
  217. package/lib/server/utils/ascii.js +39 -26
  218. package/lib/server/utils/comparators.js +105 -103
  219. package/lib/server/utils/crypto.js +157 -112
  220. package/lib/server/utils/debug.js +37 -28
  221. package/lib/server/utils/debugLogger.js +69 -48
  222. package/lib/server/utils/env.js +52 -37
  223. package/lib/server/utils/eventsHelper.js +29 -28
  224. package/lib/server/utils/expectUtils.js +31 -26
  225. package/lib/server/utils/fileUtils.js +123 -136
  226. package/lib/server/utils/happyEyeballs.js +138 -123
  227. package/lib/server/utils/hostPlatform.js +84 -120
  228. package/lib/server/utils/httpServer.js +106 -121
  229. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  230. package/lib/server/utils/image_tools/compare.js +44 -43
  231. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  232. package/lib/server/utils/image_tools/stats.js +40 -40
  233. package/lib/server/utils/linuxUtils.js +50 -37
  234. package/lib/server/utils/network.js +143 -86
  235. package/lib/server/utils/nodePlatform.js +87 -79
  236. package/lib/server/utils/pipeTransport.js +44 -42
  237. package/lib/server/utils/processLauncher.js +111 -121
  238. package/lib/server/utils/profiler.js +52 -39
  239. package/lib/server/utils/socksProxy.js +280 -339
  240. package/lib/server/utils/spawnAsync.js +37 -41
  241. package/lib/server/utils/task.js +31 -38
  242. package/lib/server/utils/userAgent.js +73 -66
  243. package/lib/server/utils/wsServer.js +73 -69
  244. package/lib/server/utils/zipFile.js +36 -37
  245. package/lib/server/utils/zones.js +37 -34
  246. package/lib/server/webkit/protocol.d.js +16 -0
  247. package/lib/server/webkit/webkit.js +76 -63
  248. package/lib/server/webkit/wkAccessibility.js +161 -118
  249. package/lib/server/webkit/wkBrowser.js +159 -176
  250. package/lib/server/webkit/wkConnection.js +59 -83
  251. package/lib/server/webkit/wkExecutionContext.js +84 -70
  252. package/lib/server/webkit/wkInput.js +82 -80
  253. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  254. package/lib/server/webkit/wkPage.js +525 -619
  255. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  256. package/lib/server/webkit/wkWorkers.js +77 -77
  257. package/lib/utils/isomorphic/ariaSnapshot.js +144 -152
  258. package/lib/utils/isomorphic/assert.js +28 -22
  259. package/lib/utils/isomorphic/builtins.js +90 -0
  260. package/lib/utils/isomorphic/colors.js +66 -59
  261. package/lib/utils/isomorphic/cssParser.js +121 -125
  262. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  263. package/lib/utils/isomorphic/headers.js +38 -37
  264. package/lib/utils/isomorphic/locatorGenerators.js +340 -357
  265. package/lib/utils/isomorphic/locatorParser.js +96 -105
  266. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  267. package/lib/utils/isomorphic/manualPromise.js +47 -39
  268. package/lib/utils/isomorphic/mimeType.js +448 -25
  269. package/lib/utils/isomorphic/multimap.js +35 -27
  270. package/lib/utils/isomorphic/rtti.js +35 -33
  271. package/lib/utils/isomorphic/selectorParser.js +183 -193
  272. package/lib/utils/isomorphic/semaphore.js +27 -24
  273. package/lib/utils/isomorphic/stackTrace.js +87 -98
  274. package/lib/utils/isomorphic/stringUtils.js +113 -106
  275. package/lib/utils/isomorphic/time.js +41 -22
  276. package/lib/utils/isomorphic/timeoutRunner.js +55 -54
  277. package/lib/utils/isomorphic/traceUtils.js +38 -41
  278. package/lib/utils/isomorphic/types.js +15 -4
  279. package/lib/utils/isomorphic/urlMatch.js +112 -67
  280. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  281. package/lib/utils.js +97 -443
  282. package/lib/utilsBundle.js +101 -52
  283. package/lib/vite/htmlReport/index.html +21 -15
  284. package/lib/vite/recorder/assets/{codeMirrorModule-B9YMkrwa.js → codeMirrorModule-DVQi6prl.js} +1 -1
  285. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  286. package/lib/vite/recorder/index.html +1 -1
  287. package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-dvXVzLxY.js} +1 -1
  288. package/lib/vite/traceViewer/assets/defaultSettingsView-BjymbO6M.js +265 -0
  289. package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
  290. package/lib/vite/traceViewer/index.ChIUCJnj.js +2 -0
  291. package/lib/vite/traceViewer/index.html +3 -3
  292. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  293. package/lib/vite/traceViewer/uiMode.html +3 -3
  294. package/lib/vite/traceViewer/uiMode.jUCiCtdp.js +5 -0
  295. package/lib/zipBundle.js +32 -23
  296. package/package.json +1 -1
  297. package/types/protocol.d.ts +436 -17
  298. package/types/types.d.ts +35 -16
  299. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  300. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  301. package/lib/vite/traceViewer/assets/defaultSettingsView-l0TyP_G8.js +0 -259
  302. package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
  303. package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
@@ -1,29 +1,29 @@
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 semaphore_exports = {};
20
+ __export(semaphore_exports, {
21
+ Semaphore: () => Semaphore
5
22
  });
6
- exports.Semaphore = void 0;
7
- var _manualPromise = require("./manualPromise");
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(semaphore_exports);
24
+ var import_manualPromise = require("./manualPromise");
24
25
  class Semaphore {
25
26
  constructor(max) {
26
- this._max = void 0;
27
27
  this._acquired = 0;
28
28
  this._queue = [];
29
29
  this._max = max;
@@ -32,7 +32,7 @@ class Semaphore {
32
32
  this._max = max;
33
33
  }
34
34
  acquire() {
35
- const lock = new _manualPromise.ManualPromise();
35
+ const lock = new import_manualPromise.ManualPromise();
36
36
  this._queue.push(lock);
37
37
  this._flush();
38
38
  return lock;
@@ -48,4 +48,7 @@ class Semaphore {
48
48
  }
49
49
  }
50
50
  }
51
- exports.Semaphore = Semaphore;
51
+ // Annotate the CommonJS export names for ESM import in node:
52
+ 0 && (module.exports = {
53
+ Semaphore
54
+ });
@@ -1,73 +1,69 @@
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 stackTrace_exports = {};
20
+ __export(stackTrace_exports, {
21
+ captureRawStack: () => captureRawStack,
22
+ parseErrorStack: () => parseErrorStack,
23
+ parseStackFrame: () => parseStackFrame,
24
+ rewriteErrorMessage: () => rewriteErrorMessage,
25
+ splitErrorMessage: () => splitErrorMessage,
26
+ stringifyStackFrames: () => stringifyStackFrames
5
27
  });
6
- exports.captureRawStack = captureRawStack;
7
- exports.parseErrorStack = parseErrorStack;
8
- exports.parseStackFrame = parseStackFrame;
9
- exports.rewriteErrorMessage = rewriteErrorMessage;
10
- exports.splitErrorMessage = splitErrorMessage;
11
- exports.stringifyStackFrames = stringifyStackFrames;
12
- /**
13
- * The MIT License (MIT)
14
- * Modifications copyright (c) Microsoft Corporation.
15
- *
16
- * Copyright (c) 2016-2023 Isaac Z. Schlueter i@izs.me, James Talmage james@talmage.io (github.com/jamestalmage), and
17
- * Contributors
18
- *
19
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
20
- * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
21
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
22
- * permit persons to whom the Software is furnished to do so, subject to the following conditions:
23
- *
24
- * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
25
- * Software.
26
- *
27
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
28
- * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
29
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
30
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
- */
32
-
28
+ module.exports = __toCommonJS(stackTrace_exports);
33
29
  function captureRawStack() {
34
30
  const stackTraceLimit = Error.stackTraceLimit;
35
31
  Error.stackTraceLimit = 50;
36
32
  const error = new Error();
37
- const stack = error.stack || '';
33
+ const stack = error.stack || "";
38
34
  Error.stackTraceLimit = stackTraceLimit;
39
- return stack.split('\n');
35
+ return stack.split("\n");
40
36
  }
41
37
  function parseStackFrame(text, pathSeparator, showInternalStackFrames) {
42
38
  const match = text && text.match(re);
43
- if (!match) return null;
39
+ if (!match)
40
+ return null;
44
41
  let fname = match[2];
45
42
  let file = match[7];
46
- if (!file) return null;
47
- if (!showInternalStackFrames && (file.startsWith('internal') || file.startsWith('node:'))) return null;
43
+ if (!file)
44
+ return null;
45
+ if (!showInternalStackFrames && (file.startsWith("internal") || file.startsWith("node:")))
46
+ return null;
48
47
  const line = match[8];
49
48
  const column = match[9];
50
- const closeParen = match[11] === ')';
49
+ const closeParen = match[11] === ")";
51
50
  const frame = {
52
- file: '',
51
+ file: "",
53
52
  line: 0,
54
53
  column: 0
55
54
  };
56
- if (line) frame.line = Number(line);
57
- if (column) frame.column = Number(column);
55
+ if (line)
56
+ frame.line = Number(line);
57
+ if (column)
58
+ frame.column = Number(column);
58
59
  if (closeParen && file) {
59
- // make sure parens are balanced
60
- // if we have a file like "asdf) [as foo] (xyz.js", then odds are
61
- // that the fname should be += " (asdf) [as foo]" and the file
62
- // should be just "xyz.js"
63
- // walk backwards from the end to find the last unbalanced (
64
60
  let closes = 0;
65
61
  for (let i = file.length - 1; i > 0; i--) {
66
- if (file.charAt(i) === ')') {
62
+ if (file.charAt(i) === ")") {
67
63
  closes++;
68
- } else if (file.charAt(i) === '(' && file.charAt(i - 1) === ' ') {
64
+ } else if (file.charAt(i) === "(" && file.charAt(i - 1) === " ") {
69
65
  closes--;
70
- if (closes === -1 && file.charAt(i - 1) === ' ') {
66
+ if (closes === -1 && file.charAt(i - 1) === " ") {
71
67
  const before = file.slice(0, i - 1);
72
68
  const after = file.slice(i + 1);
73
69
  file = after;
@@ -79,91 +75,84 @@ function parseStackFrame(text, pathSeparator, showInternalStackFrames) {
79
75
  }
80
76
  if (fname) {
81
77
  const methodMatch = fname.match(methodRe);
82
- if (methodMatch) fname = methodMatch[1];
78
+ if (methodMatch)
79
+ fname = methodMatch[1];
83
80
  }
84
81
  if (file) {
85
- if (file.startsWith('file://')) file = fileURLToPath(file, pathSeparator);
82
+ if (file.startsWith("file://"))
83
+ file = fileURLToPath(file, pathSeparator);
86
84
  frame.file = file;
87
85
  }
88
- if (fname) frame.function = fname;
86
+ if (fname)
87
+ frame.function = fname;
89
88
  return frame;
90
89
  }
91
90
  function rewriteErrorMessage(e, newMessage) {
92
- var _e$stack;
93
- const lines = (((_e$stack = e.stack) === null || _e$stack === void 0 ? void 0 : _e$stack.split('\n')) || []).filter(l => l.startsWith(' at '));
91
+ const lines = (e.stack?.split("\n") || []).filter((l) => l.startsWith(" at "));
94
92
  e.message = newMessage;
95
93
  const errorTitle = `${e.name}: ${e.message}`;
96
- if (lines.length) e.stack = `${errorTitle}\n${lines.join('\n')}`;
94
+ if (lines.length)
95
+ e.stack = `${errorTitle}
96
+ ${lines.join("\n")}`;
97
97
  return e;
98
98
  }
99
99
  function stringifyStackFrames(frames) {
100
100
  const stackLines = [];
101
101
  for (const frame of frames) {
102
- if (frame.function) stackLines.push(` at ${frame.function} (${frame.file}:${frame.line}:${frame.column})`);else stackLines.push(` at ${frame.file}:${frame.line}:${frame.column}`);
102
+ if (frame.function)
103
+ stackLines.push(` at ${frame.function} (${frame.file}:${frame.line}:${frame.column})`);
104
+ else
105
+ stackLines.push(` at ${frame.file}:${frame.line}:${frame.column}`);
103
106
  }
104
107
  return stackLines;
105
108
  }
106
109
  function splitErrorMessage(message) {
107
- const separationIdx = message.indexOf(':');
110
+ const separationIdx = message.indexOf(":");
108
111
  return {
109
- name: separationIdx !== -1 ? message.slice(0, separationIdx) : '',
112
+ name: separationIdx !== -1 ? message.slice(0, separationIdx) : "",
110
113
  message: separationIdx !== -1 && separationIdx + 2 <= message.length ? message.substring(separationIdx + 2) : message
111
114
  };
112
115
  }
113
116
  function parseErrorStack(stack, pathSeparator, showInternalStackFrames = false) {
114
- const lines = stack.split('\n');
115
- let firstStackLine = lines.findIndex(line => line.startsWith(' at '));
116
- if (firstStackLine === -1) firstStackLine = lines.length;
117
- const message = lines.slice(0, firstStackLine).join('\n');
117
+ const lines = stack.split("\n");
118
+ let firstStackLine = lines.findIndex((line) => line.startsWith(" at "));
119
+ if (firstStackLine === -1)
120
+ firstStackLine = lines.length;
121
+ const message = lines.slice(0, firstStackLine).join("\n");
118
122
  const stackLines = lines.slice(firstStackLine);
119
123
  let location;
120
124
  for (const line of stackLines) {
121
125
  const frame = parseStackFrame(line, pathSeparator, showInternalStackFrames);
122
- if (!frame || !frame.file) continue;
123
- if (belongsToNodeModules(frame.file, pathSeparator)) continue;
124
- location = {
125
- file: frame.file,
126
- column: frame.column || 0,
127
- line: frame.line || 0
128
- };
126
+ if (!frame || !frame.file)
127
+ continue;
128
+ if (belongsToNodeModules(frame.file, pathSeparator))
129
+ continue;
130
+ location = { file: frame.file, column: frame.column || 0, line: frame.line || 0 };
129
131
  break;
130
132
  }
131
- return {
132
- message,
133
- stackLines,
134
- location
135
- };
133
+ return { message, stackLines, location };
136
134
  }
137
135
  function belongsToNodeModules(file, pathSeparator) {
138
136
  return file.includes(`${pathSeparator}node_modules${pathSeparator}`);
139
137
  }
140
- const re = new RegExp('^' +
141
- // Sometimes we strip out the ' at' because it's noisy
142
- '(?:\\s*at )?' +
143
- // $1 = ctor if 'new'
144
- '(?:(new) )?' +
145
- // $2 = function name (can be literally anything)
146
- // May contain method at the end as [as xyz]
147
- '(?:(.*?) \\()?' +
148
- // (eval at <anonymous> (file.js:1:1),
149
- // $3 = eval origin
150
- // $4:$5:$6 are eval file/line/col, but not normally reported
151
- '(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?' +
152
- // file:line:col
153
- // $7:$8:$9
154
- // $10 = 'native' if native
155
- '(?:(.+?):(\\d+):(\\d+)|(native))' +
156
- // maybe close the paren, then end
157
- // if $11 is ), then we only allow balanced parens in the filename
158
- // any imbalance is placed on the fname. This is a heuristic, and
159
- // bound to be incorrect in some edge cases. The bet is that
160
- // having weird characters in method names is more common than
161
- // having weird characters in filenames, which seems reasonable.
162
- '(\\)?)$');
138
+ const re = new RegExp(
139
+ "^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"
140
+ );
163
141
  const methodRe = /^(.*?) \[as (.*?)\]$/;
164
142
  function fileURLToPath(fileUrl, pathSeparator) {
165
- if (!fileUrl.startsWith('file://')) return fileUrl;
143
+ if (!fileUrl.startsWith("file://"))
144
+ return fileUrl;
166
145
  let path = decodeURIComponent(fileUrl.slice(7));
167
- if (path.startsWith('/') && /^[a-zA-Z]:/.test(path.slice(1))) path = path.slice(1);
146
+ if (path.startsWith("/") && /^[a-zA-Z]:/.test(path.slice(1)))
147
+ path = path.slice(1);
168
148
  return path.replace(/\//g, pathSeparator);
169
- }
149
+ }
150
+ // Annotate the CommonJS export names for ESM import in node:
151
+ 0 && (module.exports = {
152
+ captureRawStack,
153
+ parseErrorStack,
154
+ parseStackFrame,
155
+ rewriteErrorMessage,
156
+ splitErrorMessage,
157
+ stringifyStackFrames
158
+ });
@@ -1,157 +1,145 @@
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 stringUtils_exports = {};
20
+ __export(stringUtils_exports, {
21
+ cacheNormalizedWhitespaces: () => cacheNormalizedWhitespaces,
22
+ cssEscape: () => cssEscape,
23
+ escapeForAttributeSelector: () => escapeForAttributeSelector,
24
+ escapeForTextSelector: () => escapeForTextSelector,
25
+ escapeHTML: () => escapeHTML,
26
+ escapeHTMLAttribute: () => escapeHTMLAttribute,
27
+ escapeRegExp: () => escapeRegExp,
28
+ escapeTemplateString: () => escapeTemplateString,
29
+ escapeWithQuotes: () => escapeWithQuotes,
30
+ isString: () => isString,
31
+ longestCommonSubstring: () => longestCommonSubstring,
32
+ normalizeEscapedRegexQuotes: () => normalizeEscapedRegexQuotes,
33
+ normalizeWhiteSpace: () => normalizeWhiteSpace,
34
+ quoteCSSAttributeValue: () => quoteCSSAttributeValue,
35
+ toSnakeCase: () => toSnakeCase,
36
+ toTitleCase: () => toTitleCase,
37
+ trimString: () => trimString,
38
+ trimStringWithEllipsis: () => trimStringWithEllipsis
5
39
  });
6
- exports.cacheNormalizedWhitespaces = cacheNormalizedWhitespaces;
7
- exports.cssEscape = cssEscape;
8
- exports.escapeForAttributeSelector = escapeForAttributeSelector;
9
- exports.escapeForTextSelector = escapeForTextSelector;
10
- exports.escapeHTML = escapeHTML;
11
- exports.escapeHTMLAttribute = escapeHTMLAttribute;
12
- exports.escapeRegExp = escapeRegExp;
13
- exports.escapeTemplateString = escapeTemplateString;
14
- exports.escapeWithQuotes = escapeWithQuotes;
15
- exports.isString = isString;
16
- exports.longestCommonSubstring = longestCommonSubstring;
17
- exports.normalizeEscapedRegexQuotes = normalizeEscapedRegexQuotes;
18
- exports.normalizeWhiteSpace = normalizeWhiteSpace;
19
- exports.quoteCSSAttributeValue = quoteCSSAttributeValue;
20
- exports.toSnakeCase = toSnakeCase;
21
- exports.toTitleCase = toTitleCase;
22
- exports.trimString = trimString;
23
- exports.trimStringWithEllipsis = trimStringWithEllipsis;
24
- /**
25
- * Copyright (c) Microsoft Corporation.
26
- *
27
- * Licensed under the Apache License, Version 2.0 (the "License");
28
- * you may not use this file except in compliance with the License.
29
- * You may obtain a copy of the License at
30
- *
31
- * http://www.apache.org/licenses/LICENSE-2.0
32
- *
33
- * Unless required by applicable law or agreed to in writing, software
34
- * distributed under the License is distributed on an "AS IS" BASIS,
35
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
36
- * See the License for the specific language governing permissions and
37
- * limitations under the License.
38
- */
39
-
40
- // NOTE: this function should not be used to escape any selectors.
41
- function escapeWithQuotes(text, char = '\'') {
40
+ module.exports = __toCommonJS(stringUtils_exports);
41
+ var import_builtins = require("./builtins");
42
+ function escapeWithQuotes(text, char = "'") {
42
43
  const stringified = JSON.stringify(text);
43
44
  const escapedText = stringified.substring(1, stringified.length - 1).replace(/\\"/g, '"');
44
- if (char === '\'') return char + escapedText.replace(/[']/g, '\\\'') + char;
45
- if (char === '"') return char + escapedText.replace(/["]/g, '\\"') + char;
46
- if (char === '`') return char + escapedText.replace(/[`]/g, '`') + char;
47
- throw new Error('Invalid escape char');
45
+ if (char === "'")
46
+ return char + escapedText.replace(/[']/g, "\\'") + char;
47
+ if (char === '"')
48
+ return char + escapedText.replace(/["]/g, '\\"') + char;
49
+ if (char === "`")
50
+ return char + escapedText.replace(/[`]/g, "`") + char;
51
+ throw new Error("Invalid escape char");
48
52
  }
49
53
  function escapeTemplateString(text) {
50
- return text.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$\{/g, '\\${');
54
+ return text.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
51
55
  }
52
56
  function isString(obj) {
53
- return typeof obj === 'string' || obj instanceof String;
57
+ return typeof obj === "string" || obj instanceof String;
54
58
  }
55
59
  function toTitleCase(name) {
56
60
  return name.charAt(0).toUpperCase() + name.substring(1);
57
61
  }
58
62
  function toSnakeCase(name) {
59
- // E.g. ignoreHTTPSErrors => ignore_https_errors.
60
- return name.replace(/([a-z0-9])([A-Z])/g, '$1_$2').replace(/([A-Z])([A-Z][a-z])/g, '$1_$2').toLowerCase();
63
+ return name.replace(/([a-z0-9])([A-Z])/g, "$1_$2").replace(/([A-Z])([A-Z][a-z])/g, "$1_$2").toLowerCase();
61
64
  }
62
65
  function cssEscape(s) {
63
- let result = '';
64
- for (let i = 0; i < s.length; i++) result += cssEscapeOne(s, i);
66
+ let result = "";
67
+ for (let i = 0; i < s.length; i++)
68
+ result += cssEscapeOne(s, i);
65
69
  return result;
66
70
  }
67
71
  function quoteCSSAttributeValue(text) {
68
- return `"${cssEscape(text).replace(/\\ /g, ' ')}"`;
72
+ return `"${cssEscape(text).replace(/\\ /g, " ")}"`;
69
73
  }
70
74
  function cssEscapeOne(s, i) {
71
- // https://drafts.csswg.org/cssom/#serialize-an-identifier
72
75
  const c = s.charCodeAt(i);
73
- if (c === 0x0000) return '\uFFFD';
74
- if (c >= 0x0001 && c <= 0x001f || c >= 0x0030 && c <= 0x0039 && (i === 0 || i === 1 && s.charCodeAt(0) === 0x002d)) return '\\' + c.toString(16) + ' ';
75
- if (i === 0 && c === 0x002d && s.length === 1) return '\\' + s.charAt(i);
76
- if (c >= 0x0080 || c === 0x002d || c === 0x005f || c >= 0x0030 && c <= 0x0039 || c >= 0x0041 && c <= 0x005a || c >= 0x0061 && c <= 0x007a) return s.charAt(i);
77
- return '\\' + s.charAt(i);
76
+ if (c === 0)
77
+ return "\uFFFD";
78
+ if (c >= 1 && c <= 31 || c >= 48 && c <= 57 && (i === 0 || i === 1 && s.charCodeAt(0) === 45))
79
+ return "\\" + c.toString(16) + " ";
80
+ if (i === 0 && c === 45 && s.length === 1)
81
+ return "\\" + s.charAt(i);
82
+ if (c >= 128 || c === 45 || c === 95 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122)
83
+ return s.charAt(i);
84
+ return "\\" + s.charAt(i);
78
85
  }
79
86
  let normalizedWhitespaceCache;
80
87
  function cacheNormalizedWhitespaces() {
81
- normalizedWhitespaceCache = new Map();
88
+ normalizedWhitespaceCache = new import_builtins.Map();
82
89
  }
83
90
  function normalizeWhiteSpace(text) {
84
- var _normalizedWhitespace;
85
- let result = (_normalizedWhitespace = normalizedWhitespaceCache) === null || _normalizedWhitespace === void 0 ? void 0 : _normalizedWhitespace.get(text);
86
- if (result === undefined) {
87
- var _normalizedWhitespace2;
88
- result = text.replace(/[\u200b\u00ad]/g, '').trim().replace(/\s+/g, ' ');
89
- (_normalizedWhitespace2 = normalizedWhitespaceCache) === null || _normalizedWhitespace2 === void 0 || _normalizedWhitespace2.set(text, result);
91
+ let result = normalizedWhitespaceCache?.get(text);
92
+ if (result === void 0) {
93
+ result = text.replace(/[\u200b\u00ad]/g, "").trim().replace(/\s+/g, " ");
94
+ normalizedWhitespaceCache?.set(text, result);
90
95
  }
91
96
  return result;
92
97
  }
93
98
  function normalizeEscapedRegexQuotes(source) {
94
- // This function reverses the effect of escapeRegexForSelector below.
95
- // Odd number of backslashes followed by the quote -> remove unneeded backslash.
96
- return source.replace(/(^|[^\\])(\\\\)*\\(['"`])/g, '$1$2$3');
99
+ return source.replace(/(^|[^\\])(\\\\)*\\(['"`])/g, "$1$2$3");
97
100
  }
98
101
  function escapeRegexForSelector(re) {
99
- // Unicode mode does not allow "identity character escapes", so we do not escape and
100
- // hope that it does not contain quotes and/or >> signs.
101
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Character_escape
102
- // TODO: rework RE usages in internal selectors away from literal representation to json, e.g. {source,flags}.
103
- if (re.unicode || re.unicodeSets) return String(re);
104
- // Even number of backslashes followed by the quote -> insert a backslash.
105
- return String(re).replace(/(^|[^\\])(\\\\)*(["'`])/g, '$1$2\\$3').replace(/>>/g, '\\>\\>');
102
+ if (re.unicode || re.unicodeSets)
103
+ return String(re);
104
+ return String(re).replace(/(^|[^\\])(\\\\)*(["'`])/g, "$1$2\\$3").replace(/>>/g, "\\>\\>");
106
105
  }
107
106
  function escapeForTextSelector(text, exact) {
108
- if (typeof text !== 'string') return escapeRegexForSelector(text);
109
- return `${JSON.stringify(text)}${exact ? 's' : 'i'}`;
107
+ if (typeof text !== "string")
108
+ return escapeRegexForSelector(text);
109
+ return `${JSON.stringify(text)}${exact ? "s" : "i"}`;
110
110
  }
111
111
  function escapeForAttributeSelector(value, exact) {
112
- if (typeof value !== 'string') return escapeRegexForSelector(value);
113
- // TODO: this should actually be
114
- // cssEscape(value).replace(/\\ /g, ' ')
115
- // However, our attribute selectors do not conform to CSS parsing spec,
116
- // so we escape them differently.
117
- return `"${value.replace(/\\/g, '\\\\').replace(/["]/g, '\\"')}"${exact ? 's' : 'i'}`;
118
- }
119
- function trimString(input, cap, suffix = '') {
120
- if (input.length <= cap) return input;
112
+ if (typeof value !== "string")
113
+ return escapeRegexForSelector(value);
114
+ return `"${value.replace(/\\/g, "\\\\").replace(/["]/g, '\\"')}"${exact ? "s" : "i"}`;
115
+ }
116
+ function trimString(input, cap, suffix = "") {
117
+ if (input.length <= cap)
118
+ return input;
121
119
  const chars = [...input];
122
- if (chars.length > cap) return chars.slice(0, cap - suffix.length).join('') + suffix;
123
- return chars.join('');
120
+ if (chars.length > cap)
121
+ return chars.slice(0, cap - suffix.length).join("") + suffix;
122
+ return chars.join("");
124
123
  }
125
124
  function trimStringWithEllipsis(input, cap) {
126
- return trimString(input, cap, '\u2026');
125
+ return trimString(input, cap, "\u2026");
127
126
  }
128
127
  function escapeRegExp(s) {
129
- // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
130
- return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
131
- }
132
- const escaped = {
133
- '&': '&amp;',
134
- '<': '&lt;',
135
- '>': '&gt;',
136
- '"': '&quot;',
137
- '\'': '&#39;'
138
- };
128
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
129
+ }
130
+ const escaped = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" };
139
131
  function escapeHTMLAttribute(s) {
140
- return s.replace(/[&<>"']/ug, char => escaped[char]);
132
+ return s.replace(/[&<>"']/ug, (char) => escaped[char]);
141
133
  }
142
134
  function escapeHTML(s) {
143
- return s.replace(/[&<]/ug, char => escaped[char]);
135
+ return s.replace(/[&<]/ug, (char) => escaped[char]);
144
136
  }
145
137
  function longestCommonSubstring(s1, s2) {
146
138
  const n = s1.length;
147
139
  const m = s2.length;
148
140
  let maxLen = 0;
149
141
  let endingIndex = 0;
150
-
151
- // Initialize a 2D array with zeros
152
142
  const dp = Array(n + 1).fill(null).map(() => Array(m + 1).fill(0));
153
-
154
- // Build the dp table
155
143
  for (let i = 1; i <= n; i++) {
156
144
  for (let j = 1; j <= m; j++) {
157
145
  if (s1[i - 1] === s2[j - 1]) {
@@ -163,7 +151,26 @@ function longestCommonSubstring(s1, s2) {
163
151
  }
164
152
  }
165
153
  }
166
-
167
- // Extract the longest common substring
168
154
  return s1.slice(endingIndex - maxLen, endingIndex);
169
- }
155
+ }
156
+ // Annotate the CommonJS export names for ESM import in node:
157
+ 0 && (module.exports = {
158
+ cacheNormalizedWhitespaces,
159
+ cssEscape,
160
+ escapeForAttributeSelector,
161
+ escapeForTextSelector,
162
+ escapeHTML,
163
+ escapeHTMLAttribute,
164
+ escapeRegExp,
165
+ escapeTemplateString,
166
+ escapeWithQuotes,
167
+ isString,
168
+ longestCommonSubstring,
169
+ normalizeEscapedRegexQuotes,
170
+ normalizeWhiteSpace,
171
+ quoteCSSAttributeValue,
172
+ toSnakeCase,
173
+ toTitleCase,
174
+ trimString,
175
+ trimStringWithEllipsis
176
+ });