@stablyai/internal-playwright 0.1.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 (297) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +168 -0
  4. package/ThirdPartyNotices.txt +6277 -0
  5. package/cli.js +19 -0
  6. package/index.d.ts +17 -0
  7. package/index.js +17 -0
  8. package/index.mjs +18 -0
  9. package/jsx-runtime.js +42 -0
  10. package/jsx-runtime.mjs +21 -0
  11. package/lib/agents/generateAgents.js +265 -0
  12. package/lib/agents/generator.md +102 -0
  13. package/lib/agents/healer.md +78 -0
  14. package/lib/agents/planner.md +135 -0
  15. package/lib/cli.js +274 -0
  16. package/lib/common/config.js +274 -0
  17. package/lib/common/config.js.map +7 -0
  18. package/lib/common/configLoader.js +377 -0
  19. package/lib/common/configLoader.js.map +7 -0
  20. package/lib/common/esmLoaderHost.js +102 -0
  21. package/lib/common/esmLoaderHost.js.map +7 -0
  22. package/lib/common/expectBundle.js +52 -0
  23. package/lib/common/expectBundle.js.map +7 -0
  24. package/lib/common/expectBundleImpl.js +389 -0
  25. package/lib/common/expectBundleImpl.js.map +7 -0
  26. package/lib/common/fixtures.js +302 -0
  27. package/lib/common/fixtures.js.map +7 -0
  28. package/lib/common/globals.js +58 -0
  29. package/lib/common/globals.js.map +7 -0
  30. package/lib/common/ipc.js +60 -0
  31. package/lib/common/ipc.js.map +7 -0
  32. package/lib/common/poolBuilder.js +85 -0
  33. package/lib/common/poolBuilder.js.map +7 -0
  34. package/lib/common/process.js +104 -0
  35. package/lib/common/process.js.map +7 -0
  36. package/lib/common/suiteUtils.js +140 -0
  37. package/lib/common/suiteUtils.js.map +7 -0
  38. package/lib/common/test.js +321 -0
  39. package/lib/common/test.js.map +7 -0
  40. package/lib/common/testLoader.js +100 -0
  41. package/lib/common/testLoader.js.map +7 -0
  42. package/lib/common/testType.js +310 -0
  43. package/lib/common/testType.js.map +7 -0
  44. package/lib/fsWatcher.js +67 -0
  45. package/lib/fsWatcher.js.map +7 -0
  46. package/lib/index.js +696 -0
  47. package/lib/index.js.map +7 -0
  48. package/lib/internalsForTest.js +42 -0
  49. package/lib/internalsForTest.js.map +7 -0
  50. package/lib/isomorphic/events.js +77 -0
  51. package/lib/isomorphic/events.js.map +7 -0
  52. package/lib/isomorphic/folders.js +30 -0
  53. package/lib/isomorphic/folders.js.map +7 -0
  54. package/lib/isomorphic/stringInternPool.js +69 -0
  55. package/lib/isomorphic/stringInternPool.js.map +7 -0
  56. package/lib/isomorphic/teleReceiver.js +507 -0
  57. package/lib/isomorphic/teleReceiver.js.map +7 -0
  58. package/lib/isomorphic/teleSuiteUpdater.js +137 -0
  59. package/lib/isomorphic/teleSuiteUpdater.js.map +7 -0
  60. package/lib/isomorphic/testServerConnection.js +211 -0
  61. package/lib/isomorphic/testServerConnection.js.map +7 -0
  62. package/lib/isomorphic/testServerInterface.js +16 -0
  63. package/lib/isomorphic/testServerInterface.js.map +7 -0
  64. package/lib/isomorphic/testTree.js +334 -0
  65. package/lib/isomorphic/testTree.js.map +7 -0
  66. package/lib/isomorphic/types.d.js +16 -0
  67. package/lib/isomorphic/types.d.js.map +7 -0
  68. package/lib/loader/loaderMain.js +59 -0
  69. package/lib/loader/loaderMain.js.map +7 -0
  70. package/lib/matchers/expect.js +325 -0
  71. package/lib/matchers/expect.js.map +7 -0
  72. package/lib/matchers/matcherHint.js +87 -0
  73. package/lib/matchers/matcherHint.js.map +7 -0
  74. package/lib/matchers/matchers.js +366 -0
  75. package/lib/matchers/matchers.js.map +7 -0
  76. package/lib/matchers/toBeTruthy.js +73 -0
  77. package/lib/matchers/toBeTruthy.js.map +7 -0
  78. package/lib/matchers/toEqual.js +99 -0
  79. package/lib/matchers/toEqual.js.map +7 -0
  80. package/lib/matchers/toHaveURL.js +102 -0
  81. package/lib/matchers/toHaveURL.js.map +7 -0
  82. package/lib/matchers/toMatchAriaSnapshot.js +159 -0
  83. package/lib/matchers/toMatchAriaSnapshot.js.map +7 -0
  84. package/lib/matchers/toMatchSnapshot.js +359 -0
  85. package/lib/matchers/toMatchSnapshot.js.map +7 -0
  86. package/lib/matchers/toMatchText.js +99 -0
  87. package/lib/matchers/toMatchText.js.map +7 -0
  88. package/lib/mcp/browser/actions.d.js +16 -0
  89. package/lib/mcp/browser/backend.js +93 -0
  90. package/lib/mcp/browser/backend.js.map +7 -0
  91. package/lib/mcp/browser/browserContextFactory.js +296 -0
  92. package/lib/mcp/browser/browserServerBackend.js +76 -0
  93. package/lib/mcp/browser/codegen.js +66 -0
  94. package/lib/mcp/browser/config.js +385 -0
  95. package/lib/mcp/browser/context.js +287 -0
  96. package/lib/mcp/browser/response.js +228 -0
  97. package/lib/mcp/browser/sessionLog.js +160 -0
  98. package/lib/mcp/browser/tab.js +277 -0
  99. package/lib/mcp/browser/tool.js +30 -0
  100. package/lib/mcp/browser/tool.js.map +7 -0
  101. package/lib/mcp/browser/tools/common.js +63 -0
  102. package/lib/mcp/browser/tools/console.js +44 -0
  103. package/lib/mcp/browser/tools/dialogs.js +60 -0
  104. package/lib/mcp/browser/tools/evaluate.js +70 -0
  105. package/lib/mcp/browser/tools/files.js +58 -0
  106. package/lib/mcp/browser/tools/form.js +74 -0
  107. package/lib/mcp/browser/tools/install.js +69 -0
  108. package/lib/mcp/browser/tools/keyboard.js +85 -0
  109. package/lib/mcp/browser/tools/mouse.js +107 -0
  110. package/lib/mcp/browser/tools/navigate.js +62 -0
  111. package/lib/mcp/browser/tools/network.js +54 -0
  112. package/lib/mcp/browser/tools/pdf.js +59 -0
  113. package/lib/mcp/browser/tools/screenshot.js +88 -0
  114. package/lib/mcp/browser/tools/snapshot.js +182 -0
  115. package/lib/mcp/browser/tools/tabs.js +67 -0
  116. package/lib/mcp/browser/tools/tool.js +49 -0
  117. package/lib/mcp/browser/tools/tracing.js +74 -0
  118. package/lib/mcp/browser/tools/utils.js +100 -0
  119. package/lib/mcp/browser/tools/verify.js +154 -0
  120. package/lib/mcp/browser/tools/wait.js +63 -0
  121. package/lib/mcp/browser/tools.js +80 -0
  122. package/lib/mcp/browser/tools.js.map +7 -0
  123. package/lib/mcp/browser/watchdog.js +44 -0
  124. package/lib/mcp/config.d.js +16 -0
  125. package/lib/mcp/extension/cdpRelay.js +351 -0
  126. package/lib/mcp/extension/extensionContextFactory.js +75 -0
  127. package/lib/mcp/extension/protocol.js +28 -0
  128. package/lib/mcp/index.js +61 -0
  129. package/lib/mcp/log.js +35 -0
  130. package/lib/mcp/program.js +96 -0
  131. package/lib/mcp/sdk/bundle.js +81 -0
  132. package/lib/mcp/sdk/bundle.js.map +7 -0
  133. package/lib/mcp/sdk/call.js +49 -0
  134. package/lib/mcp/sdk/call.js.map +7 -0
  135. package/lib/mcp/sdk/exports.js +32 -0
  136. package/lib/mcp/sdk/exports.js.map +7 -0
  137. package/lib/mcp/sdk/http.js +187 -0
  138. package/lib/mcp/sdk/http.js.map +7 -0
  139. package/lib/mcp/sdk/inProcessTransport.js +71 -0
  140. package/lib/mcp/sdk/inProcessTransport.js.map +7 -0
  141. package/lib/mcp/sdk/mdb.js +206 -0
  142. package/lib/mcp/sdk/mdb.js.map +7 -0
  143. package/lib/mcp/sdk/proxyBackend.js +128 -0
  144. package/lib/mcp/sdk/proxyBackend.js.map +7 -0
  145. package/lib/mcp/sdk/server.js +189 -0
  146. package/lib/mcp/sdk/server.js.map +7 -0
  147. package/lib/mcp/sdk/tool.js +51 -0
  148. package/lib/mcp/sdk/tool.js.map +7 -0
  149. package/lib/mcp/test/backend.js +67 -0
  150. package/lib/mcp/test/backend.js.map +7 -0
  151. package/lib/mcp/test/browserBackend.js +98 -0
  152. package/lib/mcp/test/context.js +48 -0
  153. package/lib/mcp/test/context.js.map +7 -0
  154. package/lib/mcp/test/generatorTools.js +122 -0
  155. package/lib/mcp/test/plannerTools.js +46 -0
  156. package/lib/mcp/test/seed.js +72 -0
  157. package/lib/mcp/test/streams.js +39 -0
  158. package/lib/mcp/test/streams.js.map +7 -0
  159. package/lib/mcp/test/testBackend.js +97 -0
  160. package/lib/mcp/test/testContext.js +176 -0
  161. package/lib/mcp/test/testTool.js +30 -0
  162. package/lib/mcp/test/testTools.js +115 -0
  163. package/lib/mcp/test/tool.js +30 -0
  164. package/lib/mcp/test/tool.js.map +7 -0
  165. package/lib/mcp/test/tools.js +150 -0
  166. package/lib/mcp/test/tools.js.map +7 -0
  167. package/lib/mcp/vscode/host.js +187 -0
  168. package/lib/mcp/vscode/main.js +77 -0
  169. package/lib/mcpBundleImpl.js +41 -0
  170. package/lib/mcpBundleImpl.js.map +7 -0
  171. package/lib/plugins/gitCommitInfoPlugin.js +198 -0
  172. package/lib/plugins/gitCommitInfoPlugin.js.map +7 -0
  173. package/lib/plugins/index.js +28 -0
  174. package/lib/plugins/index.js.map +7 -0
  175. package/lib/plugins/webServerPlugin.js +209 -0
  176. package/lib/plugins/webServerPlugin.js.map +7 -0
  177. package/lib/program.js +412 -0
  178. package/lib/program.js.map +7 -0
  179. package/lib/reporters/base.js +609 -0
  180. package/lib/reporters/base.js.map +7 -0
  181. package/lib/reporters/blob.js +135 -0
  182. package/lib/reporters/blob.js.map +7 -0
  183. package/lib/reporters/dot.js +82 -0
  184. package/lib/reporters/dot.js.map +7 -0
  185. package/lib/reporters/empty.js +32 -0
  186. package/lib/reporters/empty.js.map +7 -0
  187. package/lib/reporters/github.js +128 -0
  188. package/lib/reporters/github.js.map +7 -0
  189. package/lib/reporters/html.js +644 -0
  190. package/lib/reporters/html.js.map +7 -0
  191. package/lib/reporters/internalReporter.js +130 -0
  192. package/lib/reporters/internalReporter.js.map +7 -0
  193. package/lib/reporters/json.js +254 -0
  194. package/lib/reporters/json.js.map +7 -0
  195. package/lib/reporters/junit.js +230 -0
  196. package/lib/reporters/junit.js.map +7 -0
  197. package/lib/reporters/line.js +113 -0
  198. package/lib/reporters/line.js.map +7 -0
  199. package/lib/reporters/list.js +235 -0
  200. package/lib/reporters/list.js.map +7 -0
  201. package/lib/reporters/listModeReporter.js +69 -0
  202. package/lib/reporters/listModeReporter.js.map +7 -0
  203. package/lib/reporters/markdown.js +144 -0
  204. package/lib/reporters/markdown.js.map +7 -0
  205. package/lib/reporters/merge.js +535 -0
  206. package/lib/reporters/merge.js.map +7 -0
  207. package/lib/reporters/multiplexer.js +104 -0
  208. package/lib/reporters/multiplexer.js.map +7 -0
  209. package/lib/reporters/reporterV2.js +102 -0
  210. package/lib/reporters/reporterV2.js.map +7 -0
  211. package/lib/reporters/teleEmitter.js +297 -0
  212. package/lib/reporters/teleEmitter.js.map +7 -0
  213. package/lib/reporters/versions/blobV1.js +16 -0
  214. package/lib/reporters/versions/blobV1.js.map +7 -0
  215. package/lib/runner/dispatcher.js +491 -0
  216. package/lib/runner/dispatcher.js.map +7 -0
  217. package/lib/runner/failureTracker.js +72 -0
  218. package/lib/runner/failureTracker.js.map +7 -0
  219. package/lib/runner/lastRun.js +77 -0
  220. package/lib/runner/lastRun.js.map +7 -0
  221. package/lib/runner/loadUtils.js +333 -0
  222. package/lib/runner/loadUtils.js.map +7 -0
  223. package/lib/runner/loaderHost.js +89 -0
  224. package/lib/runner/loaderHost.js.map +7 -0
  225. package/lib/runner/processHost.js +161 -0
  226. package/lib/runner/processHost.js.map +7 -0
  227. package/lib/runner/projectUtils.js +241 -0
  228. package/lib/runner/projectUtils.js.map +7 -0
  229. package/lib/runner/rebase.js +189 -0
  230. package/lib/runner/rebase.js.map +7 -0
  231. package/lib/runner/reporters.js +137 -0
  232. package/lib/runner/reporters.js.map +7 -0
  233. package/lib/runner/runner.js +173 -0
  234. package/lib/runner/sigIntWatcher.js +96 -0
  235. package/lib/runner/sigIntWatcher.js.map +7 -0
  236. package/lib/runner/taskRunner.js +127 -0
  237. package/lib/runner/taskRunner.js.map +7 -0
  238. package/lib/runner/tasks.js +410 -0
  239. package/lib/runner/tasks.js.map +7 -0
  240. package/lib/runner/testGroups.js +117 -0
  241. package/lib/runner/testGroups.js.map +7 -0
  242. package/lib/runner/testRunner.js +390 -0
  243. package/lib/runner/testRunner.js.map +7 -0
  244. package/lib/runner/testServer.js +264 -0
  245. package/lib/runner/testServer.js.map +7 -0
  246. package/lib/runner/uiMode.js +271 -0
  247. package/lib/runner/uiModeReporter.js +30 -0
  248. package/lib/runner/uiModeReporter.js.map +7 -0
  249. package/lib/runner/vcs.js +72 -0
  250. package/lib/runner/vcs.js.map +7 -0
  251. package/lib/runner/watchMode.js +395 -0
  252. package/lib/runner/watchMode.js.map +7 -0
  253. package/lib/runner/workerHost.js +95 -0
  254. package/lib/runner/workerHost.js.map +7 -0
  255. package/lib/store.js +98 -0
  256. package/lib/third_party/pirates.js +62 -0
  257. package/lib/third_party/pirates.js.map +7 -0
  258. package/lib/third_party/tsconfig-loader.js +103 -0
  259. package/lib/third_party/tsconfig-loader.js.map +7 -0
  260. package/lib/transform/babelBundle.js +43 -0
  261. package/lib/transform/babelBundle.js.map +7 -0
  262. package/lib/transform/babelBundleImpl.js +461 -0
  263. package/lib/transform/babelBundleImpl.js.map +7 -0
  264. package/lib/transform/compilationCache.js +272 -0
  265. package/lib/transform/compilationCache.js.map +7 -0
  266. package/lib/transform/esmLoader.js +104 -0
  267. package/lib/transform/esmLoader.js.map +7 -0
  268. package/lib/transform/esmUtils.js +32 -0
  269. package/lib/transform/portTransport.js +67 -0
  270. package/lib/transform/portTransport.js.map +7 -0
  271. package/lib/transform/transform.js +293 -0
  272. package/lib/transform/transform.js.map +7 -0
  273. package/lib/util.js +403 -0
  274. package/lib/util.js.map +7 -0
  275. package/lib/utilsBundle.js +43 -0
  276. package/lib/utilsBundle.js.map +7 -0
  277. package/lib/utilsBundleImpl.js +100 -0
  278. package/lib/utilsBundleImpl.js.map +7 -0
  279. package/lib/worker/fixtureRunner.js +258 -0
  280. package/lib/worker/fixtureRunner.js.map +7 -0
  281. package/lib/worker/stepContext.js +34 -0
  282. package/lib/worker/testInfo.js +508 -0
  283. package/lib/worker/testInfo.js.map +7 -0
  284. package/lib/worker/testTracing.js +344 -0
  285. package/lib/worker/testTracing.js.map +7 -0
  286. package/lib/worker/timeoutManager.js +174 -0
  287. package/lib/worker/timeoutManager.js.map +7 -0
  288. package/lib/worker/util.js +31 -0
  289. package/lib/worker/util.js.map +7 -0
  290. package/lib/worker/workerMain.js +520 -0
  291. package/lib/worker/workerMain.js.map +7 -0
  292. package/package.json +74 -0
  293. package/test.d.ts +18 -0
  294. package/test.js +24 -0
  295. package/test.mjs +33 -0
  296. package/types/test.d.ts +10217 -0
  297. package/types/testReporter.d.ts +816 -0
package/lib/util.js ADDED
@@ -0,0 +1,403 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var util_exports = {};
30
+ __export(util_exports, {
31
+ addSuffixToFilePath: () => addSuffixToFilePath,
32
+ ansiRegex: () => ansiRegex,
33
+ createFileFiltersFromArguments: () => createFileFiltersFromArguments,
34
+ createFileMatcher: () => createFileMatcher,
35
+ createFileMatcherFromArguments: () => createFileMatcherFromArguments,
36
+ createTitleMatcher: () => createTitleMatcher,
37
+ debugTest: () => debugTest,
38
+ errorWithFile: () => errorWithFile,
39
+ expectTypes: () => expectTypes,
40
+ fileExistsAsync: () => fileExistsAsync,
41
+ fileIsModule: () => fileIsModule,
42
+ filterStackFile: () => filterStackFile,
43
+ filterStackTrace: () => filterStackTrace,
44
+ filteredStackTrace: () => filteredStackTrace,
45
+ forceRegExp: () => forceRegExp,
46
+ formatLocation: () => formatLocation,
47
+ getContainedPath: () => getContainedPath,
48
+ getPackageJsonPath: () => getPackageJsonPath,
49
+ mergeObjects: () => mergeObjects,
50
+ normalizeAndSaveAttachment: () => normalizeAndSaveAttachment,
51
+ parseLocationArg: () => parseLocationArg,
52
+ relativeFilePath: () => relativeFilePath,
53
+ removeDirAndLogToConsole: () => removeDirAndLogToConsole,
54
+ resolveImportSpecifierAfterMapping: () => resolveImportSpecifierAfterMapping,
55
+ resolveReporterOutputPath: () => resolveReporterOutputPath,
56
+ sanitizeFilePathBeforeExtension: () => sanitizeFilePathBeforeExtension,
57
+ serializeError: () => serializeError,
58
+ stripAnsiEscapes: () => stripAnsiEscapes,
59
+ trimLongString: () => trimLongString,
60
+ windowsFilesystemFriendlyLength: () => windowsFilesystemFriendlyLength
61
+ });
62
+ module.exports = __toCommonJS(util_exports);
63
+ var import_fs = __toESM(require("fs"));
64
+ var import_path = __toESM(require("path"));
65
+ var import_url = __toESM(require("url"));
66
+ var import_util = __toESM(require("util"));
67
+ var import_utils = require("playwright-core/lib/utils");
68
+ var import_utilsBundle = require("playwright-core/lib/utilsBundle");
69
+ const PLAYWRIGHT_TEST_PATH = import_path.default.join(__dirname, "..");
70
+ const PLAYWRIGHT_CORE_PATH = import_path.default.dirname(require.resolve("playwright-core/package.json"));
71
+ function filterStackTrace(e) {
72
+ const name = e.name ? e.name + ": " : "";
73
+ const cause = e.cause instanceof Error ? filterStackTrace(e.cause) : void 0;
74
+ if (process.env.PWDEBUGIMPL)
75
+ return { message: name + e.message, stack: e.stack || "", cause };
76
+ const stackLines = (0, import_utils.stringifyStackFrames)(filteredStackTrace(e.stack?.split("\n") || []));
77
+ return {
78
+ message: name + e.message,
79
+ stack: `${name}${e.message}${stackLines.map((line) => "\n" + line).join("")}`,
80
+ cause
81
+ };
82
+ }
83
+ function filterStackFile(file) {
84
+ if (!process.env.PWDEBUGIMPL && file.startsWith(PLAYWRIGHT_TEST_PATH))
85
+ return false;
86
+ if (!process.env.PWDEBUGIMPL && file.startsWith(PLAYWRIGHT_CORE_PATH))
87
+ return false;
88
+ return true;
89
+ }
90
+ function filteredStackTrace(rawStack) {
91
+ const frames = [];
92
+ for (const line of rawStack) {
93
+ const frame = (0, import_utils.parseStackFrame)(line, import_path.default.sep, !!process.env.PWDEBUGIMPL);
94
+ if (!frame || !frame.file)
95
+ continue;
96
+ if (!filterStackFile(frame.file))
97
+ continue;
98
+ frames.push(frame);
99
+ }
100
+ return frames;
101
+ }
102
+ function serializeError(error) {
103
+ if (error instanceof Error)
104
+ return filterStackTrace(error);
105
+ return {
106
+ value: import_util.default.inspect(error)
107
+ };
108
+ }
109
+ function parseLocationArg(arg) {
110
+ const match = /^(.*?):(\d+):?(\d+)?$/.exec(arg);
111
+ return {
112
+ file: match ? match[1] : arg,
113
+ line: match ? parseInt(match[2], 10) : null,
114
+ column: match?.[3] ? parseInt(match[3], 10) : null
115
+ };
116
+ }
117
+ function createFileFiltersFromArguments(args) {
118
+ return args.map((arg) => {
119
+ const parsed = parseLocationArg(arg);
120
+ return { re: forceRegExp(parsed.file), line: parsed.line, column: parsed.column };
121
+ });
122
+ }
123
+ function createFileMatcherFromArguments(args) {
124
+ const filters = createFileFiltersFromArguments(args);
125
+ return createFileMatcher(filters.map((filter) => filter.re || filter.exact || ""));
126
+ }
127
+ function createFileMatcher(patterns) {
128
+ const reList = [];
129
+ const filePatterns = [];
130
+ for (const pattern of Array.isArray(patterns) ? patterns : [patterns]) {
131
+ if ((0, import_utils.isRegExp)(pattern)) {
132
+ reList.push(pattern);
133
+ } else {
134
+ if (!pattern.startsWith("**/"))
135
+ filePatterns.push("**/" + pattern);
136
+ else
137
+ filePatterns.push(pattern);
138
+ }
139
+ }
140
+ return (filePath) => {
141
+ for (const re of reList) {
142
+ re.lastIndex = 0;
143
+ if (re.test(filePath))
144
+ return true;
145
+ }
146
+ if (import_path.default.sep === "\\") {
147
+ const fileURL = import_url.default.pathToFileURL(filePath).href;
148
+ for (const re of reList) {
149
+ re.lastIndex = 0;
150
+ if (re.test(fileURL))
151
+ return true;
152
+ }
153
+ }
154
+ for (const pattern of filePatterns) {
155
+ if ((0, import_utilsBundle.minimatch)(filePath, pattern, { nocase: true, dot: true }))
156
+ return true;
157
+ }
158
+ return false;
159
+ };
160
+ }
161
+ function createTitleMatcher(patterns) {
162
+ const reList = Array.isArray(patterns) ? patterns : [patterns];
163
+ return (value) => {
164
+ for (const re of reList) {
165
+ re.lastIndex = 0;
166
+ if (re.test(value))
167
+ return true;
168
+ }
169
+ return false;
170
+ };
171
+ }
172
+ function mergeObjects(a, b, c) {
173
+ const result = { ...a };
174
+ for (const x of [b, c].filter(Boolean)) {
175
+ for (const [name, value] of Object.entries(x)) {
176
+ if (!Object.is(value, void 0))
177
+ result[name] = value;
178
+ }
179
+ }
180
+ return result;
181
+ }
182
+ function forceRegExp(pattern) {
183
+ const match = pattern.match(/^\/(.*)\/([gi]*)$/);
184
+ if (match)
185
+ return new RegExp(match[1], match[2]);
186
+ return new RegExp(pattern, "gi");
187
+ }
188
+ function relativeFilePath(file) {
189
+ if (!import_path.default.isAbsolute(file))
190
+ return file;
191
+ return import_path.default.relative(process.cwd(), file);
192
+ }
193
+ function formatLocation(location) {
194
+ return relativeFilePath(location.file) + ":" + location.line + ":" + location.column;
195
+ }
196
+ function errorWithFile(file, message) {
197
+ return new Error(`${relativeFilePath(file)}: ${message}`);
198
+ }
199
+ function expectTypes(receiver, types, matcherName) {
200
+ if (typeof receiver !== "object" || !types.includes(receiver.constructor.name)) {
201
+ const commaSeparated = types.slice();
202
+ const lastType = commaSeparated.pop();
203
+ const typesString = commaSeparated.length ? commaSeparated.join(", ") + " or " + lastType : lastType;
204
+ throw new Error(`${matcherName} can be only used with ${typesString} object${types.length > 1 ? "s" : ""}`);
205
+ }
206
+ }
207
+ const windowsFilesystemFriendlyLength = 60;
208
+ function trimLongString(s, length = 100) {
209
+ if (s.length <= length)
210
+ return s;
211
+ const hash = (0, import_utils.calculateSha1)(s);
212
+ const middle = `-${hash.substring(0, 5)}-`;
213
+ const start = Math.floor((length - middle.length) / 2);
214
+ const end = length - middle.length - start;
215
+ return s.substring(0, start) + middle + s.slice(-end);
216
+ }
217
+ function addSuffixToFilePath(filePath, suffix) {
218
+ const ext = import_path.default.extname(filePath);
219
+ const base = filePath.substring(0, filePath.length - ext.length);
220
+ return base + suffix + ext;
221
+ }
222
+ function sanitizeFilePathBeforeExtension(filePath, ext) {
223
+ ext ??= import_path.default.extname(filePath);
224
+ const base = filePath.substring(0, filePath.length - ext.length);
225
+ return (0, import_utils.sanitizeForFilePath)(base) + ext;
226
+ }
227
+ function getContainedPath(parentPath, subPath = "") {
228
+ const resolvedPath = import_path.default.resolve(parentPath, subPath);
229
+ if (resolvedPath === parentPath || resolvedPath.startsWith(parentPath + import_path.default.sep))
230
+ return resolvedPath;
231
+ return null;
232
+ }
233
+ const debugTest = (0, import_utilsBundle.debug)("pw:test");
234
+ const folderToPackageJsonPath = /* @__PURE__ */ new Map();
235
+ function getPackageJsonPath(folderPath) {
236
+ const cached = folderToPackageJsonPath.get(folderPath);
237
+ if (cached !== void 0)
238
+ return cached;
239
+ const packageJsonPath = import_path.default.join(folderPath, "package.json");
240
+ if (import_fs.default.existsSync(packageJsonPath)) {
241
+ folderToPackageJsonPath.set(folderPath, packageJsonPath);
242
+ return packageJsonPath;
243
+ }
244
+ const parentFolder = import_path.default.dirname(folderPath);
245
+ if (folderPath === parentFolder) {
246
+ folderToPackageJsonPath.set(folderPath, "");
247
+ return "";
248
+ }
249
+ const result = getPackageJsonPath(parentFolder);
250
+ folderToPackageJsonPath.set(folderPath, result);
251
+ return result;
252
+ }
253
+ function resolveReporterOutputPath(defaultValue, configDir, configValue) {
254
+ if (configValue)
255
+ return import_path.default.resolve(configDir, configValue);
256
+ let basePath = getPackageJsonPath(configDir);
257
+ basePath = basePath ? import_path.default.dirname(basePath) : process.cwd();
258
+ return import_path.default.resolve(basePath, defaultValue);
259
+ }
260
+ async function normalizeAndSaveAttachment(outputPath, name, options = {}) {
261
+ if (options.path === void 0 && options.body === void 0)
262
+ return { name, contentType: "text/plain" };
263
+ if ((options.path !== void 0 ? 1 : 0) + (options.body !== void 0 ? 1 : 0) !== 1)
264
+ throw new Error(`Exactly one of "path" and "body" must be specified`);
265
+ if (options.path !== void 0) {
266
+ const hash = (0, import_utils.calculateSha1)(options.path);
267
+ if (!(0, import_utils.isString)(name))
268
+ throw new Error('"name" should be string.');
269
+ const sanitizedNamePrefix = (0, import_utils.sanitizeForFilePath)(name) + "-";
270
+ const dest = import_path.default.join(outputPath, "attachments", sanitizedNamePrefix + hash + import_path.default.extname(options.path));
271
+ await import_fs.default.promises.mkdir(import_path.default.dirname(dest), { recursive: true });
272
+ await import_fs.default.promises.copyFile(options.path, dest);
273
+ const contentType = options.contentType ?? (import_utilsBundle.mime.getType(import_path.default.basename(options.path)) || "application/octet-stream");
274
+ return { name, contentType, path: dest };
275
+ } else {
276
+ const contentType = options.contentType ?? (typeof options.body === "string" ? "text/plain" : "application/octet-stream");
277
+ return { name, contentType, body: typeof options.body === "string" ? Buffer.from(options.body) : options.body };
278
+ }
279
+ }
280
+ function fileIsModule(file) {
281
+ if (file.endsWith(".mjs") || file.endsWith(".mts"))
282
+ return true;
283
+ if (file.endsWith(".cjs") || file.endsWith(".cts"))
284
+ return false;
285
+ const folder = import_path.default.dirname(file);
286
+ return folderIsModule(folder);
287
+ }
288
+ function folderIsModule(folder) {
289
+ const packageJsonPath = getPackageJsonPath(folder);
290
+ if (!packageJsonPath)
291
+ return false;
292
+ return require(packageJsonPath).type === "module";
293
+ }
294
+ const packageJsonMainFieldCache = /* @__PURE__ */ new Map();
295
+ function getMainFieldFromPackageJson(packageJsonPath) {
296
+ if (!packageJsonMainFieldCache.has(packageJsonPath)) {
297
+ let mainField;
298
+ try {
299
+ mainField = JSON.parse(import_fs.default.readFileSync(packageJsonPath, "utf8")).main;
300
+ } catch {
301
+ }
302
+ packageJsonMainFieldCache.set(packageJsonPath, mainField);
303
+ }
304
+ return packageJsonMainFieldCache.get(packageJsonPath);
305
+ }
306
+ const kExtLookups = /* @__PURE__ */ new Map([
307
+ [".js", [".jsx", ".ts", ".tsx"]],
308
+ [".jsx", [".tsx"]],
309
+ [".cjs", [".cts"]],
310
+ [".mjs", [".mts"]],
311
+ ["", [".js", ".ts", ".jsx", ".tsx", ".cjs", ".mjs", ".cts", ".mts"]]
312
+ ]);
313
+ function resolveImportSpecifierExtension(resolved) {
314
+ if (fileExists(resolved))
315
+ return resolved;
316
+ for (const [ext, others] of kExtLookups) {
317
+ if (!resolved.endsWith(ext))
318
+ continue;
319
+ for (const other of others) {
320
+ const modified = resolved.substring(0, resolved.length - ext.length) + other;
321
+ if (fileExists(modified))
322
+ return modified;
323
+ }
324
+ break;
325
+ }
326
+ }
327
+ function resolveImportSpecifierAfterMapping(resolved, afterPathMapping) {
328
+ const resolvedFile = resolveImportSpecifierExtension(resolved);
329
+ if (resolvedFile)
330
+ return resolvedFile;
331
+ if (dirExists(resolved)) {
332
+ const packageJsonPath = import_path.default.join(resolved, "package.json");
333
+ if (afterPathMapping) {
334
+ const mainField = getMainFieldFromPackageJson(packageJsonPath);
335
+ const mainFieldResolved = mainField ? resolveImportSpecifierExtension(import_path.default.resolve(resolved, mainField)) : void 0;
336
+ return mainFieldResolved || resolveImportSpecifierExtension(import_path.default.join(resolved, "index"));
337
+ }
338
+ if (fileExists(packageJsonPath))
339
+ return resolved;
340
+ const dirImport = import_path.default.join(resolved, "index");
341
+ return resolveImportSpecifierExtension(dirImport);
342
+ }
343
+ }
344
+ function fileExists(resolved) {
345
+ return import_fs.default.statSync(resolved, { throwIfNoEntry: false })?.isFile();
346
+ }
347
+ async function fileExistsAsync(resolved) {
348
+ try {
349
+ const stat = await import_fs.default.promises.stat(resolved);
350
+ return stat.isFile();
351
+ } catch {
352
+ return false;
353
+ }
354
+ }
355
+ function dirExists(resolved) {
356
+ return import_fs.default.statSync(resolved, { throwIfNoEntry: false })?.isDirectory();
357
+ }
358
+ async function removeDirAndLogToConsole(dir) {
359
+ try {
360
+ if (!import_fs.default.existsSync(dir))
361
+ return;
362
+ console.log(`Removing ${await import_fs.default.promises.realpath(dir)}`);
363
+ await import_fs.default.promises.rm(dir, { recursive: true, force: true });
364
+ } catch {
365
+ }
366
+ }
367
+ const ansiRegex = new RegExp("([\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~])))", "g");
368
+ function stripAnsiEscapes(str) {
369
+ return str.replace(ansiRegex, "");
370
+ }
371
+ // Annotate the CommonJS export names for ESM import in node:
372
+ 0 && (module.exports = {
373
+ addSuffixToFilePath,
374
+ ansiRegex,
375
+ createFileFiltersFromArguments,
376
+ createFileMatcher,
377
+ createFileMatcherFromArguments,
378
+ createTitleMatcher,
379
+ debugTest,
380
+ errorWithFile,
381
+ expectTypes,
382
+ fileExistsAsync,
383
+ fileIsModule,
384
+ filterStackFile,
385
+ filterStackTrace,
386
+ filteredStackTrace,
387
+ forceRegExp,
388
+ formatLocation,
389
+ getContainedPath,
390
+ getPackageJsonPath,
391
+ mergeObjects,
392
+ normalizeAndSaveAttachment,
393
+ parseLocationArg,
394
+ relativeFilePath,
395
+ removeDirAndLogToConsole,
396
+ resolveImportSpecifierAfterMapping,
397
+ resolveReporterOutputPath,
398
+ sanitizeFilePathBeforeExtension,
399
+ serializeError,
400
+ stripAnsiEscapes,
401
+ trimLongString,
402
+ windowsFilesystemFriendlyLength
403
+ });
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/util.ts"],
4
+ "sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport path from 'path';\nimport url from 'url';\nimport util from 'util';\n\nimport { parseStackFrame, sanitizeForFilePath, calculateSha1, isRegExp, isString, stringifyStackFrames } from 'playwright-core/lib/utils';\nimport { colors, debug, mime, minimatch } from 'playwright-core/lib/utilsBundle';\n\nimport type { Location } from './../types/testReporter';\nimport type { TestInfoErrorImpl } from './common/ipc';\nimport type { StackFrame } from '@protocol/channels';\nimport type { RawStack } from 'playwright-core/lib/utils';\nimport type { TestCase } from './common/test';\n\nconst PLAYWRIGHT_TEST_PATH = path.join(__dirname, '..');\nconst PLAYWRIGHT_CORE_PATH = path.dirname(require.resolve('playwright-core/package.json'));\n\nexport function filterStackTrace(e: Error): { message: string, stack: string, cause?: ReturnType<typeof filterStackTrace> } {\n const name = e.name ? e.name + ': ' : '';\n const cause = e.cause instanceof Error ? filterStackTrace(e.cause) : undefined;\n if (process.env.PWDEBUGIMPL)\n return { message: name + e.message, stack: e.stack || '', cause };\n\n const stackLines = stringifyStackFrames(filteredStackTrace(e.stack?.split('\\n') || []));\n return {\n message: name + e.message,\n stack: `${name}${e.message}${stackLines.map(line => '\\n' + line).join('')}`,\n cause,\n };\n}\n\nexport function filterStackFile(file: string) {\n if (!process.env.PWDEBUGIMPL && file.startsWith(PLAYWRIGHT_TEST_PATH))\n return false;\n if (!process.env.PWDEBUGIMPL && file.startsWith(PLAYWRIGHT_CORE_PATH))\n return false;\n return true;\n}\n\nexport function filteredStackTrace(rawStack: RawStack): StackFrame[] {\n const frames: StackFrame[] = [];\n for (const line of rawStack) {\n const frame = parseStackFrame(line, path.sep, !!process.env.PWDEBUGIMPL);\n if (!frame || !frame.file)\n continue;\n if (!filterStackFile(frame.file))\n continue;\n frames.push(frame);\n }\n return frames;\n}\n\nexport function serializeError(error: Error | any): TestInfoErrorImpl {\n if (error instanceof Error)\n return filterStackTrace(error);\n return {\n value: util.inspect(error)\n };\n}\n\nexport type Matcher = (value: string) => boolean;\n\nexport type TestFileFilter = {\n re?: RegExp;\n exact?: string;\n line: number | null;\n column: number | null;\n};\n\nexport type TestCaseFilter = (test: TestCase) => boolean;\n\nexport function createFileFiltersFromArguments(args: string[]): TestFileFilter[] {\n return args.map(arg => {\n const match = /^(.*?):(\\d+):?(\\d+)?$/.exec(arg);\n return {\n re: forceRegExp(match ? match[1] : arg),\n line: match ? parseInt(match[2], 10) : null,\n column: match?.[3] ? parseInt(match[3], 10) : null,\n };\n });\n}\n\nexport function createFileMatcherFromArguments(args: string[]): Matcher {\n const filters = createFileFiltersFromArguments(args);\n return createFileMatcher(filters.map(filter => filter.re || filter.exact || ''));\n}\n\nexport function createFileMatcher(patterns: string | RegExp | (string | RegExp)[]): Matcher {\n const reList: RegExp[] = [];\n const filePatterns: string[] = [];\n for (const pattern of Array.isArray(patterns) ? patterns : [patterns]) {\n if (isRegExp(pattern)) {\n reList.push(pattern);\n } else {\n if (!pattern.startsWith('**/'))\n filePatterns.push('**/' + pattern);\n else\n filePatterns.push(pattern);\n }\n }\n return (filePath: string) => {\n for (const re of reList) {\n re.lastIndex = 0;\n if (re.test(filePath))\n return true;\n }\n // Windows might still receive unix style paths from Cygwin or Git Bash.\n // Check against the file url as well.\n if (path.sep === '\\\\') {\n const fileURL = url.pathToFileURL(filePath).href;\n for (const re of reList) {\n re.lastIndex = 0;\n if (re.test(fileURL))\n return true;\n }\n }\n for (const pattern of filePatterns) {\n if (minimatch(filePath, pattern, { nocase: true, dot: true }))\n return true;\n }\n return false;\n };\n}\n\nexport function createTitleMatcher(patterns: RegExp | RegExp[]): Matcher {\n const reList = Array.isArray(patterns) ? patterns : [patterns];\n return (value: string) => {\n for (const re of reList) {\n re.lastIndex = 0;\n if (re.test(value))\n return true;\n }\n return false;\n };\n}\n\nexport function mergeObjects<A extends object, B extends object, C extends object>(a: A | undefined | void, b: B | undefined | void, c: C | undefined | void): A & B & C {\n const result = { ...a } as any;\n for (const x of [b, c].filter(Boolean)) {\n for (const [name, value] of Object.entries(x as any)) {\n if (!Object.is(value, undefined))\n result[name] = value;\n }\n }\n return result as any;\n}\n\nexport function forceRegExp(pattern: string): RegExp {\n const match = pattern.match(/^\\/(.*)\\/([gi]*)$/);\n if (match)\n return new RegExp(match[1], match[2]);\n return new RegExp(pattern, 'gi');\n}\n\nexport function relativeFilePath(file: string): string {\n if (!path.isAbsolute(file))\n return file;\n return path.relative(process.cwd(), file);\n}\n\nexport function formatLocation(location: Location) {\n return relativeFilePath(location.file) + ':' + location.line + ':' + location.column;\n}\n\nexport function errorWithFile(file: string, message: string) {\n return new Error(`${relativeFilePath(file)}: ${message}`);\n}\n\nexport function expectTypes(receiver: any, types: string[], matcherName: string) {\n if (typeof receiver !== 'object' || !types.includes(receiver.constructor.name)) {\n const commaSeparated = types.slice();\n const lastType = commaSeparated.pop();\n const typesString = commaSeparated.length ? commaSeparated.join(', ') + ' or ' + lastType : lastType;\n throw new Error(`${matcherName} can be only used with ${typesString} object${types.length > 1 ? 's' : ''}`);\n }\n}\n\nexport const windowsFilesystemFriendlyLength = 60;\n\nexport function trimLongString(s: string, length = 100) {\n if (s.length <= length)\n return s;\n const hash = calculateSha1(s);\n const middle = `-${hash.substring(0, 5)}-`;\n const start = Math.floor((length - middle.length) / 2);\n const end = length - middle.length - start;\n return s.substring(0, start) + middle + s.slice(-end);\n}\n\nexport function addSuffixToFilePath(filePath: string, suffix: string): string {\n const ext = path.extname(filePath);\n const base = filePath.substring(0, filePath.length - ext.length);\n return base + suffix + ext;\n}\n\nexport function sanitizeFilePathBeforeExtension(filePath: string, ext?: string): string {\n ext ??= path.extname(filePath);\n const base = filePath.substring(0, filePath.length - ext.length);\n return sanitizeForFilePath(base) + ext;\n}\n\n/**\n * Returns absolute path contained within parent directory.\n */\nexport function getContainedPath(parentPath: string, subPath: string = ''): string | null {\n const resolvedPath = path.resolve(parentPath, subPath);\n if (resolvedPath === parentPath || resolvedPath.startsWith(parentPath + path.sep))\n return resolvedPath;\n return null;\n}\n\nexport const debugTest = debug('pw:test');\n\nexport const callLogText = (log: string[] | undefined) => {\n if (!log || !log.some(l => !!l))\n return '';\n return `\nCall log:\n${colors.dim(log.join('\\n'))}\n`;\n};\n\nconst folderToPackageJsonPath = new Map<string, string>();\n\nexport function getPackageJsonPath(folderPath: string): string {\n const cached = folderToPackageJsonPath.get(folderPath);\n if (cached !== undefined)\n return cached;\n\n const packageJsonPath = path.join(folderPath, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n folderToPackageJsonPath.set(folderPath, packageJsonPath);\n return packageJsonPath;\n }\n\n const parentFolder = path.dirname(folderPath);\n if (folderPath === parentFolder) {\n folderToPackageJsonPath.set(folderPath, '');\n return '';\n }\n\n const result = getPackageJsonPath(parentFolder);\n folderToPackageJsonPath.set(folderPath, result);\n return result;\n}\n\nexport function resolveReporterOutputPath(defaultValue: string, configDir: string, configValue: string | undefined) {\n if (configValue)\n return path.resolve(configDir, configValue);\n let basePath = getPackageJsonPath(configDir);\n basePath = basePath ? path.dirname(basePath) : process.cwd();\n return path.resolve(basePath, defaultValue);\n}\n\nexport async function normalizeAndSaveAttachment(outputPath: string, name: string, options: { path?: string, body?: string | Buffer, contentType?: string } = {}): Promise<{ name: string; path?: string; body?: Buffer; contentType: string; }> {\n if (options.path === undefined && options.body === undefined)\n return { name, contentType: 'text/plain' };\n if ((options.path !== undefined ? 1 : 0) + (options.body !== undefined ? 1 : 0) !== 1)\n throw new Error(`Exactly one of \"path\" and \"body\" must be specified`);\n if (options.path !== undefined) {\n const hash = calculateSha1(options.path);\n\n if (!isString(name))\n throw new Error('\"name\" should be string.');\n\n const sanitizedNamePrefix = sanitizeForFilePath(name) + '-';\n const dest = path.join(outputPath, 'attachments', sanitizedNamePrefix + hash + path.extname(options.path));\n await fs.promises.mkdir(path.dirname(dest), { recursive: true });\n await fs.promises.copyFile(options.path, dest);\n const contentType = options.contentType ?? (mime.getType(path.basename(options.path)) || 'application/octet-stream');\n return { name, contentType, path: dest };\n } else {\n const contentType = options.contentType ?? (typeof options.body === 'string' ? 'text/plain' : 'application/octet-stream');\n return { name, contentType, body: typeof options.body === 'string' ? Buffer.from(options.body) : options.body };\n }\n}\n\nexport function fileIsModule(file: string): boolean {\n if (file.endsWith('.mjs') || file.endsWith('.mts'))\n return true;\n if (file.endsWith('.cjs') || file.endsWith('.cts'))\n return false;\n const folder = path.dirname(file);\n return folderIsModule(folder);\n}\n\nfunction folderIsModule(folder: string): boolean {\n const packageJsonPath = getPackageJsonPath(folder);\n if (!packageJsonPath)\n return false;\n // Rely on `require` internal caching logic.\n return require(packageJsonPath).type === 'module';\n}\n\nconst packageJsonMainFieldCache = new Map<string, string | undefined>();\n\nfunction getMainFieldFromPackageJson(packageJsonPath: string) {\n if (!packageJsonMainFieldCache.has(packageJsonPath)) {\n let mainField: string | undefined;\n try {\n mainField = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')).main;\n } catch {\n }\n packageJsonMainFieldCache.set(packageJsonPath, mainField);\n }\n return packageJsonMainFieldCache.get(packageJsonPath);\n}\n\n// This method performs \"file extension subsitution\" to find the ts, js or similar source file\n// based on the import specifier, which might or might not have an extension. See TypeScript docs:\n// https://www.typescriptlang.org/docs/handbook/modules/reference.html#file-extension-substitution.\nconst kExtLookups = new Map([\n ['.js', ['.jsx', '.ts', '.tsx']],\n ['.jsx', ['.tsx']],\n ['.cjs', ['.cts']],\n ['.mjs', ['.mts']],\n ['', ['.js', '.ts', '.jsx', '.tsx', '.cjs', '.mjs', '.cts', '.mts']],\n]);\nfunction resolveImportSpecifierExtension(resolved: string): string | undefined {\n if (fileExists(resolved))\n return resolved;\n\n for (const [ext, others] of kExtLookups) {\n if (!resolved.endsWith(ext))\n continue;\n for (const other of others) {\n const modified = resolved.substring(0, resolved.length - ext.length) + other;\n if (fileExists(modified))\n return modified;\n }\n break; // Do not try '' when a more specific extension like '.jsx' matched.\n }\n}\n\n// This method resolves directory imports and performs \"file extension subsitution\".\n// It is intended to be called after the path mapping resolution.\n//\n// Directory imports follow the --moduleResolution=bundler strategy from tsc.\n// https://www.typescriptlang.org/docs/handbook/modules/reference.html#directory-modules-index-file-resolution\n// https://www.typescriptlang.org/docs/handbook/modules/reference.html#bundler\n//\n// See also Node.js \"folder as module\" behavior:\n// https://nodejs.org/dist/latest-v20.x/docs/api/modules.html#folders-as-modules.\nexport function resolveImportSpecifierAfterMapping(resolved: string, afterPathMapping: boolean): string | undefined {\n const resolvedFile = resolveImportSpecifierExtension(resolved);\n if (resolvedFile)\n return resolvedFile;\n\n if (dirExists(resolved)) {\n const packageJsonPath = path.join(resolved, 'package.json');\n\n if (afterPathMapping) {\n // Most notably, the module resolution algorithm is not performed after the path mapping.\n // This means no node_modules lookup or package.json#exports.\n //\n // Only the \"folder as module\" Node.js behavior is respected:\n // - consult `package.json#main`;\n // - look for `index.js` or similar.\n const mainField = getMainFieldFromPackageJson(packageJsonPath);\n const mainFieldResolved = mainField ? resolveImportSpecifierExtension(path.resolve(resolved, mainField)) : undefined;\n return mainFieldResolved || resolveImportSpecifierExtension(path.join(resolved, 'index'));\n }\n\n // If we import a package, let Node.js figure out the correct import based on package.json.\n // This also covers the \"main\" field for \"folder as module\".\n if (fileExists(packageJsonPath))\n return resolved;\n\n // Implement the \"folder as module\" Node.js behavior.\n // Note that we do not delegate to Node.js, because we support this for ESM as well,\n // following the TypeScript \"bundler\" mode.\n const dirImport = path.join(resolved, 'index');\n return resolveImportSpecifierExtension(dirImport);\n }\n}\n\nfunction fileExists(resolved: string) {\n return fs.statSync(resolved, { throwIfNoEntry: false })?.isFile();\n}\n\nexport async function fileExistsAsync(resolved: string) {\n try {\n const stat = await fs.promises.stat(resolved);\n return stat.isFile();\n } catch {\n return false;\n }\n}\n\nfunction dirExists(resolved: string) {\n return fs.statSync(resolved, { throwIfNoEntry: false })?.isDirectory();\n}\n\nexport async function removeDirAndLogToConsole(dir: string) {\n try {\n if (!fs.existsSync(dir))\n return;\n // eslint-disable-next-line no-console\n console.log(`Removing ${await fs.promises.realpath(dir)}`);\n await fs.promises.rm(dir, { recursive: true, force: true });\n } catch {\n }\n}\n\nexport const ansiRegex = new RegExp('([\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:[a-zA-Z\\\\d]*(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)|(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~])))', 'g');\nexport function stripAnsiEscapes(str: string): string {\n return str.replace(ansiRegex, '');\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["path", "util", "url", "fs"]
7
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
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 utilsBundle_exports = {};
20
+ __export(utilsBundle_exports, {
21
+ chokidar: () => chokidar,
22
+ enquirer: () => enquirer,
23
+ getEastAsianWidth: () => getEastAsianWidth,
24
+ json5: () => json5,
25
+ sourceMapSupport: () => sourceMapSupport,
26
+ stoppable: () => stoppable
27
+ });
28
+ module.exports = __toCommonJS(utilsBundle_exports);
29
+ const json5 = require("./utilsBundleImpl").json5;
30
+ const sourceMapSupport = require("./utilsBundleImpl").sourceMapSupport;
31
+ const stoppable = require("./utilsBundleImpl").stoppable;
32
+ const enquirer = require("./utilsBundleImpl").enquirer;
33
+ const chokidar = require("./utilsBundleImpl").chokidar;
34
+ const getEastAsianWidth = require("./utilsBundleImpl").getEastAsianWidth;
35
+ // Annotate the CommonJS export names for ESM import in node:
36
+ 0 && (module.exports = {
37
+ chokidar,
38
+ enquirer,
39
+ getEastAsianWidth,
40
+ json5,
41
+ sourceMapSupport,
42
+ stoppable
43
+ });
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/utilsBundle.ts"],
4
+ "sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const json5: typeof import('../bundles/utils/node_modules/json5/lib') = require('./utilsBundleImpl').json5;\nexport const sourceMapSupport: typeof import('../bundles/utils/node_modules/@types/source-map-support') = require('./utilsBundleImpl').sourceMapSupport;\nexport const stoppable: typeof import('../bundles/utils/node_modules/@types/stoppable') = require('./utilsBundleImpl').stoppable;\nexport const enquirer: typeof import('../bundles/utils/node_modules/enquirer') = require('./utilsBundleImpl').enquirer;\nexport const chokidar: typeof import('../bundles/utils/node_modules/chokidar') = require('./utilsBundleImpl').chokidar;\nexport const getEastAsianWidth: typeof import('../bundles/utils/node_modules/get-east-asian-width') = require('./utilsBundleImpl').getEastAsianWidth;\nexport type { RawSourceMap } from '../bundles/utils/node_modules/source-map';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,MAAM,QAAkE,QAAQ,mBAAmB,EAAE;AACrG,MAAM,mBAA6F,QAAQ,mBAAmB,EAAE;AAChI,MAAM,YAA6E,QAAQ,mBAAmB,EAAE;AAChH,MAAM,WAAoE,QAAQ,mBAAmB,EAAE;AACvG,MAAM,WAAoE,QAAQ,mBAAmB,EAAE;AACvG,MAAM,oBAAyF,QAAQ,mBAAmB,EAAE;",
6
+ "names": []
7
+ }