@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
@@ -0,0 +1,293 @@
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 transform_exports = {};
30
+ __export(transform_exports, {
31
+ requireOrImport: () => requireOrImport,
32
+ resolveHook: () => resolveHook,
33
+ setSingleTSConfig: () => setSingleTSConfig,
34
+ setTransformConfig: () => setTransformConfig,
35
+ setTransformData: () => setTransformData,
36
+ shouldTransform: () => shouldTransform,
37
+ singleTSConfig: () => singleTSConfig,
38
+ transformConfig: () => transformConfig,
39
+ transformHook: () => transformHook,
40
+ wrapFunctionWithLocation: () => wrapFunctionWithLocation
41
+ });
42
+ module.exports = __toCommonJS(transform_exports);
43
+ var import_fs = __toESM(require("fs"));
44
+ var import_module = __toESM(require("module"));
45
+ var import_path = __toESM(require("path"));
46
+ var import_url = __toESM(require("url"));
47
+ var import_crypto = __toESM(require("crypto"));
48
+ var import_tsconfig_loader = require("../third_party/tsconfig-loader");
49
+ var import_util = require("../util");
50
+ var import_utilsBundle = require("../utilsBundle");
51
+ var import_compilationCache = require("./compilationCache");
52
+ var import_pirates = require("../third_party/pirates");
53
+ const version = require("../../package.json").version;
54
+ const cachedTSConfigs = /* @__PURE__ */ new Map();
55
+ let _transformConfig = {
56
+ babelPlugins: [],
57
+ external: []
58
+ };
59
+ let _externalMatcher = () => false;
60
+ function setTransformConfig(config) {
61
+ _transformConfig = config;
62
+ _externalMatcher = (0, import_util.createFileMatcher)(_transformConfig.external);
63
+ }
64
+ function transformConfig() {
65
+ return _transformConfig;
66
+ }
67
+ let _singleTSConfigPath;
68
+ let _singleTSConfig;
69
+ function setSingleTSConfig(value) {
70
+ _singleTSConfigPath = value;
71
+ }
72
+ function singleTSConfig() {
73
+ return _singleTSConfigPath;
74
+ }
75
+ function validateTsConfig(tsconfig) {
76
+ const pathsBase = tsconfig.absoluteBaseUrl ?? tsconfig.paths?.pathsBasePath;
77
+ const pathsFallback = tsconfig.absoluteBaseUrl ? [{ key: "*", values: ["*"] }] : [];
78
+ return {
79
+ allowJs: !!tsconfig.allowJs,
80
+ pathsBase,
81
+ paths: Object.entries(tsconfig.paths?.mapping || {}).map(([key, values]) => ({ key, values })).concat(pathsFallback)
82
+ };
83
+ }
84
+ function loadAndValidateTsconfigsForFile(file2) {
85
+ if (_singleTSConfigPath && !_singleTSConfig)
86
+ _singleTSConfig = (0, import_tsconfig_loader.loadTsConfig)(_singleTSConfigPath).map(validateTsConfig);
87
+ if (_singleTSConfig)
88
+ return _singleTSConfig;
89
+ return loadAndValidateTsconfigsForFolder(import_path.default.dirname(file2));
90
+ }
91
+ function loadAndValidateTsconfigsForFolder(folder) {
92
+ const foldersWithConfig = [];
93
+ let currentFolder = import_path.default.resolve(folder);
94
+ let result2;
95
+ while (true) {
96
+ const cached = cachedTSConfigs.get(currentFolder);
97
+ if (cached) {
98
+ result2 = cached;
99
+ break;
100
+ }
101
+ foldersWithConfig.push(currentFolder);
102
+ for (const name of ["tsconfig.json", "jsconfig.json"]) {
103
+ const configPath = import_path.default.join(currentFolder, name);
104
+ if (import_fs.default.existsSync(configPath)) {
105
+ const loaded = (0, import_tsconfig_loader.loadTsConfig)(configPath);
106
+ result2 = loaded.map(validateTsConfig);
107
+ break;
108
+ }
109
+ }
110
+ if (result2)
111
+ break;
112
+ const parentFolder = import_path.default.resolve(currentFolder, "../");
113
+ if (currentFolder === parentFolder)
114
+ break;
115
+ currentFolder = parentFolder;
116
+ }
117
+ result2 = result2 || [];
118
+ for (const folder2 of foldersWithConfig)
119
+ cachedTSConfigs.set(folder2, result2);
120
+ return result2;
121
+ }
122
+ const pathSeparator = process.platform === "win32" ? ";" : ":";
123
+ const builtins = new Set(import_module.default.builtinModules);
124
+ function resolveHook(filename, specifier) {
125
+ if (specifier.startsWith("node:") || builtins.has(specifier))
126
+ return;
127
+ if (!shouldTransform(filename))
128
+ return;
129
+ if (isRelativeSpecifier(specifier))
130
+ return (0, import_util.resolveImportSpecifierAfterMapping)(import_path.default.resolve(import_path.default.dirname(filename), specifier), false);
131
+ const isTypeScript = filename.endsWith(".ts") || filename.endsWith(".tsx");
132
+ const tsconfigs = loadAndValidateTsconfigsForFile(filename);
133
+ for (const tsconfig of tsconfigs) {
134
+ if (!isTypeScript && !tsconfig.allowJs)
135
+ continue;
136
+ let longestPrefixLength = -1;
137
+ let pathMatchedByLongestPrefix;
138
+ for (const { key, values } of tsconfig.paths) {
139
+ let matchedPartOfSpecifier = specifier;
140
+ const [keyPrefix, keySuffix] = key.split("*");
141
+ if (key.includes("*")) {
142
+ if (keyPrefix) {
143
+ if (!specifier.startsWith(keyPrefix))
144
+ continue;
145
+ matchedPartOfSpecifier = matchedPartOfSpecifier.substring(keyPrefix.length, matchedPartOfSpecifier.length);
146
+ }
147
+ if (keySuffix) {
148
+ if (!specifier.endsWith(keySuffix))
149
+ continue;
150
+ matchedPartOfSpecifier = matchedPartOfSpecifier.substring(0, matchedPartOfSpecifier.length - keySuffix.length);
151
+ }
152
+ } else {
153
+ if (specifier !== key)
154
+ continue;
155
+ matchedPartOfSpecifier = specifier;
156
+ }
157
+ if (keyPrefix.length <= longestPrefixLength)
158
+ continue;
159
+ for (const value of values) {
160
+ let candidate = value;
161
+ if (value.includes("*"))
162
+ candidate = candidate.replace("*", matchedPartOfSpecifier);
163
+ candidate = import_path.default.resolve(tsconfig.pathsBase, candidate);
164
+ const existing = (0, import_util.resolveImportSpecifierAfterMapping)(candidate, true);
165
+ if (existing) {
166
+ longestPrefixLength = keyPrefix.length;
167
+ pathMatchedByLongestPrefix = existing;
168
+ }
169
+ }
170
+ }
171
+ if (pathMatchedByLongestPrefix)
172
+ return pathMatchedByLongestPrefix;
173
+ }
174
+ if (import_path.default.isAbsolute(specifier)) {
175
+ return (0, import_util.resolveImportSpecifierAfterMapping)(specifier, false);
176
+ }
177
+ }
178
+ function shouldTransform(filename) {
179
+ if (_externalMatcher(filename))
180
+ return false;
181
+ return !(0, import_compilationCache.belongsToNodeModules)(filename);
182
+ }
183
+ let transformData;
184
+ function setTransformData(pluginName, value) {
185
+ transformData.set(pluginName, value);
186
+ }
187
+ function transformHook(originalCode, filename, moduleUrl) {
188
+ const hasPreprocessor = process.env.PW_TEST_SOURCE_TRANSFORM && process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE && process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE.split(pathSeparator).some((f) => filename.startsWith(f));
189
+ const pluginsPrologue = _transformConfig.babelPlugins;
190
+ const pluginsEpilogue = hasPreprocessor ? [[process.env.PW_TEST_SOURCE_TRANSFORM]] : [];
191
+ const hash = calculateHash(originalCode, filename, !!moduleUrl, pluginsPrologue, pluginsEpilogue);
192
+ const { cachedCode, addToCache, serializedCache } = (0, import_compilationCache.getFromCompilationCache)(filename, hash, moduleUrl);
193
+ if (cachedCode !== void 0)
194
+ return { code: cachedCode, serializedCache };
195
+ process.env.BROWSERSLIST_IGNORE_OLD_DATA = "true";
196
+ const { babelTransform } = require("./babelBundle");
197
+ transformData = /* @__PURE__ */ new Map();
198
+ const babelResult = babelTransform(originalCode, filename, !!moduleUrl, pluginsPrologue, pluginsEpilogue);
199
+ if (!babelResult?.code)
200
+ return { code: originalCode, serializedCache };
201
+ const { code, map } = babelResult;
202
+ const added = addToCache(code, map, transformData);
203
+ return { code, serializedCache: added.serializedCache };
204
+ }
205
+ function calculateHash(content, filePath, isModule2, pluginsPrologue, pluginsEpilogue) {
206
+ const hash = import_crypto.default.createHash("sha1").update(isModule2 ? "esm" : "no_esm").update(content).update(filePath).update(version).update(pluginsPrologue.map((p) => p[0]).join(",")).update(pluginsEpilogue.map((p) => p[0]).join(",")).digest("hex");
207
+ return hash;
208
+ }
209
+ async function requireOrImport(file) {
210
+ installTransformIfNeeded();
211
+ const isModule = (0, import_util.fileIsModule)(file);
212
+ const esmImport = () => eval(`import(${JSON.stringify(import_url.default.pathToFileURL(file))})`);
213
+ if (isModule) {
214
+ return await esmImport().finally(async () => {
215
+ await new Promise((resolve) => setTimeout(resolve, 0));
216
+ });
217
+ }
218
+ const result = require(file);
219
+ const depsCollector = (0, import_compilationCache.currentFileDepsCollector)();
220
+ if (depsCollector) {
221
+ const module2 = require.cache[file];
222
+ if (module2)
223
+ collectCJSDependencies(module2, depsCollector);
224
+ }
225
+ return result;
226
+ }
227
+ let transformInstalled = false;
228
+ function installTransformIfNeeded() {
229
+ if (transformInstalled)
230
+ return;
231
+ transformInstalled = true;
232
+ (0, import_compilationCache.installSourceMapSupport)();
233
+ const originalResolveFilename = import_module.default._resolveFilename;
234
+ function resolveFilename(specifier, parent, ...rest) {
235
+ if (parent) {
236
+ const resolved = resolveHook(parent.filename, specifier);
237
+ if (resolved !== void 0)
238
+ specifier = resolved;
239
+ }
240
+ return originalResolveFilename.call(this, specifier, parent, ...rest);
241
+ }
242
+ import_module.default._resolveFilename = resolveFilename;
243
+ (0, import_pirates.addHook)((code, filename) => {
244
+ return transformHook(code, filename).code;
245
+ }, shouldTransform, [".ts", ".tsx", ".js", ".jsx", ".mjs", ".mts", ".cjs", ".cts"]);
246
+ }
247
+ const collectCJSDependencies = (module2, dependencies) => {
248
+ module2.children.forEach((child) => {
249
+ if (!(0, import_compilationCache.belongsToNodeModules)(child.filename) && !dependencies.has(child.filename)) {
250
+ dependencies.add(child.filename);
251
+ collectCJSDependencies(child, dependencies);
252
+ }
253
+ });
254
+ };
255
+ function wrapFunctionWithLocation(func) {
256
+ return (...args) => {
257
+ const oldPrepareStackTrace = Error.prepareStackTrace;
258
+ Error.prepareStackTrace = (error, stackFrames) => {
259
+ const frame = import_utilsBundle.sourceMapSupport.wrapCallSite(stackFrames[1]);
260
+ const fileName = frame.getFileName();
261
+ const file2 = fileName && fileName.startsWith("file://") ? import_url.default.fileURLToPath(fileName) : fileName;
262
+ return {
263
+ file: file2,
264
+ line: frame.getLineNumber(),
265
+ column: frame.getColumnNumber()
266
+ };
267
+ };
268
+ const oldStackTraceLimit = Error.stackTraceLimit;
269
+ Error.stackTraceLimit = 2;
270
+ const obj = {};
271
+ Error.captureStackTrace(obj);
272
+ const location = obj.stack;
273
+ Error.stackTraceLimit = oldStackTraceLimit;
274
+ Error.prepareStackTrace = oldPrepareStackTrace;
275
+ return func(location, ...args);
276
+ };
277
+ }
278
+ function isRelativeSpecifier(specifier) {
279
+ return specifier === "." || specifier === ".." || specifier.startsWith("./") || specifier.startsWith("../");
280
+ }
281
+ // Annotate the CommonJS export names for ESM import in node:
282
+ 0 && (module.exports = {
283
+ requireOrImport,
284
+ resolveHook,
285
+ setSingleTSConfig,
286
+ setTransformConfig,
287
+ setTransformData,
288
+ shouldTransform,
289
+ singleTSConfig,
290
+ transformConfig,
291
+ transformHook,
292
+ wrapFunctionWithLocation
293
+ });
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/transform/transform.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 Module from 'module';\nimport path from 'path';\nimport url from 'url';\n\nimport crypto from 'crypto';\n\nimport { loadTsConfig } from '../third_party/tsconfig-loader';\nimport { createFileMatcher, fileIsModule, resolveImportSpecifierAfterMapping } from '../util';\nimport { sourceMapSupport } from '../utilsBundle';\nimport { belongsToNodeModules, currentFileDepsCollector, getFromCompilationCache, installSourceMapSupport } from './compilationCache';\nimport { addHook } from '../third_party/pirates';\n\nimport type { BabelPlugin, BabelTransformFunction } from './babelBundle';\nimport type { Location } from '../../types/testReporter';\nimport type { LoadedTsConfig } from '../third_party/tsconfig-loader';\nimport type { Matcher } from '../util';\n\n\nconst version = require('../../package.json').version;\n\ntype ParsedTsConfigData = {\n pathsBase?: string;\n paths: { key: string, values: string[] }[];\n allowJs: boolean;\n};\nconst cachedTSConfigs = new Map<string, ParsedTsConfigData[]>();\n\nexport type TransformConfig = {\n babelPlugins: [string, any?][];\n external: string[];\n};\n\nlet _transformConfig: TransformConfig = {\n babelPlugins: [],\n external: [],\n};\n\nlet _externalMatcher: Matcher = () => false;\n\nexport function setTransformConfig(config: TransformConfig) {\n _transformConfig = config;\n _externalMatcher = createFileMatcher(_transformConfig.external);\n}\n\nexport function transformConfig(): TransformConfig {\n return _transformConfig;\n}\n\nlet _singleTSConfigPath: string | undefined;\nlet _singleTSConfig: ParsedTsConfigData[] | undefined;\n\nexport function setSingleTSConfig(value: string | undefined) {\n _singleTSConfigPath = value;\n}\n\nexport function singleTSConfig(): string | undefined {\n return _singleTSConfigPath;\n}\n\nfunction validateTsConfig(tsconfig: LoadedTsConfig): ParsedTsConfigData {\n // When no explicit baseUrl is set, resolve paths relative to the tsconfig file.\n // See https://www.typescriptlang.org/tsconfig#paths\n const pathsBase = tsconfig.absoluteBaseUrl ?? tsconfig.paths?.pathsBasePath;\n // Only add the catch-all mapping when baseUrl is specified\n const pathsFallback = tsconfig.absoluteBaseUrl ? [{ key: '*', values: ['*'] }] : [];\n return {\n allowJs: !!tsconfig.allowJs,\n pathsBase,\n paths: Object.entries(tsconfig.paths?.mapping || {}).map(([key, values]) => ({ key, values })).concat(pathsFallback)\n };\n}\n\nfunction loadAndValidateTsconfigsForFile(file: string): ParsedTsConfigData[] {\n if (_singleTSConfigPath && !_singleTSConfig)\n _singleTSConfig = loadTsConfig(_singleTSConfigPath).map(validateTsConfig);\n if (_singleTSConfig)\n return _singleTSConfig;\n return loadAndValidateTsconfigsForFolder(path.dirname(file));\n}\n\nfunction loadAndValidateTsconfigsForFolder(folder: string): ParsedTsConfigData[] {\n const foldersWithConfig: string[] = [];\n let currentFolder = path.resolve(folder);\n let result: ParsedTsConfigData[] | undefined;\n while (true) {\n const cached = cachedTSConfigs.get(currentFolder);\n if (cached) {\n result = cached;\n break;\n }\n\n foldersWithConfig.push(currentFolder);\n\n for (const name of ['tsconfig.json', 'jsconfig.json']) {\n const configPath = path.join(currentFolder, name);\n if (fs.existsSync(configPath)) {\n const loaded = loadTsConfig(configPath);\n result = loaded.map(validateTsConfig);\n break;\n }\n }\n if (result)\n break;\n\n const parentFolder = path.resolve(currentFolder, '../');\n if (currentFolder === parentFolder)\n break;\n currentFolder = parentFolder;\n }\n\n result = result || [];\n for (const folder of foldersWithConfig)\n cachedTSConfigs.set(folder, result);\n return result;\n}\n\nconst pathSeparator = process.platform === 'win32' ? ';' : ':';\nconst builtins = new Set(Module.builtinModules);\n\nexport function resolveHook(filename: string, specifier: string): string | undefined {\n if (specifier.startsWith('node:') || builtins.has(specifier))\n return;\n if (!shouldTransform(filename))\n return;\n\n if (isRelativeSpecifier(specifier))\n return resolveImportSpecifierAfterMapping(path.resolve(path.dirname(filename), specifier), false);\n\n /**\n * TypeScript discourages path-mapping into node_modules:\n * https://www.typescriptlang.org/docs/handbook/modules/reference.html#paths-should-not-point-to-monorepo-packages-or-node_modules-packages\n * However, if path-mapping doesn't yield a result, TypeScript falls back to the default resolution through node_modules.\n */\n const isTypeScript = filename.endsWith('.ts') || filename.endsWith('.tsx');\n const tsconfigs = loadAndValidateTsconfigsForFile(filename);\n for (const tsconfig of tsconfigs) {\n if (!isTypeScript && !tsconfig.allowJs)\n continue;\n let longestPrefixLength = -1;\n let pathMatchedByLongestPrefix: string | undefined;\n\n for (const { key, values } of tsconfig.paths) {\n let matchedPartOfSpecifier = specifier;\n\n const [keyPrefix, keySuffix] = key.split('*');\n if (key.includes('*')) {\n // * If pattern contains '*' then to match pattern \"<prefix>*<suffix>\" module name must start with the <prefix> and end with <suffix>.\n // * <MatchedStar> denotes part of the module name between <prefix> and <suffix>.\n // * If module name can be matches with multiple patterns then pattern with the longest prefix will be picked.\n // https://github.com/microsoft/TypeScript/blob/f82d0cb3299c04093e3835bc7e29f5b40475f586/src/compiler/moduleNameResolver.ts#L1049\n if (keyPrefix) {\n if (!specifier.startsWith(keyPrefix))\n continue;\n matchedPartOfSpecifier = matchedPartOfSpecifier.substring(keyPrefix.length, matchedPartOfSpecifier.length);\n }\n if (keySuffix) {\n if (!specifier.endsWith(keySuffix))\n continue;\n matchedPartOfSpecifier = matchedPartOfSpecifier.substring(0, matchedPartOfSpecifier.length - keySuffix.length);\n }\n } else {\n if (specifier !== key)\n continue;\n matchedPartOfSpecifier = specifier;\n }\n\n if (keyPrefix.length <= longestPrefixLength)\n continue;\n\n for (const value of values) {\n let candidate = value;\n if (value.includes('*'))\n candidate = candidate.replace('*', matchedPartOfSpecifier);\n candidate = path.resolve(tsconfig.pathsBase!, candidate);\n const existing = resolveImportSpecifierAfterMapping(candidate, true);\n if (existing) {\n longestPrefixLength = keyPrefix.length;\n pathMatchedByLongestPrefix = existing;\n }\n }\n }\n if (pathMatchedByLongestPrefix)\n return pathMatchedByLongestPrefix;\n }\n\n if (path.isAbsolute(specifier)) {\n // Handle absolute file paths like `import '/path/to/file'`\n // Do not handle module imports like `import 'fs'`\n return resolveImportSpecifierAfterMapping(specifier, false);\n }\n}\n\nexport function shouldTransform(filename: string): boolean {\n if (_externalMatcher(filename))\n return false;\n return !belongsToNodeModules(filename);\n}\n\nlet transformData: Map<string, any>;\n\nexport function setTransformData(pluginName: string, value: any) {\n transformData.set(pluginName, value);\n}\n\nexport function transformHook(originalCode: string, filename: string, moduleUrl?: string): { code: string, serializedCache?: any } {\n const hasPreprocessor =\n process.env.PW_TEST_SOURCE_TRANSFORM &&\n process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE &&\n process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE.split(pathSeparator).some(f => filename.startsWith(f));\n const pluginsPrologue = _transformConfig.babelPlugins;\n const pluginsEpilogue = hasPreprocessor ? [[process.env.PW_TEST_SOURCE_TRANSFORM!]] as BabelPlugin[] : [];\n const hash = calculateHash(originalCode, filename, !!moduleUrl, pluginsPrologue, pluginsEpilogue);\n const { cachedCode, addToCache, serializedCache } = getFromCompilationCache(filename, hash, moduleUrl);\n if (cachedCode !== undefined)\n return { code: cachedCode, serializedCache };\n\n // We don't use any browserslist data, but babel checks it anyway.\n // Silence the annoying warning.\n process.env.BROWSERSLIST_IGNORE_OLD_DATA = 'true';\n\n const { babelTransform }: { babelTransform: BabelTransformFunction } = require('./babelBundle');\n transformData = new Map<string, any>();\n const babelResult = babelTransform(originalCode, filename, !!moduleUrl, pluginsPrologue, pluginsEpilogue);\n if (!babelResult?.code)\n return { code: originalCode, serializedCache };\n const { code, map } = babelResult;\n const added = addToCache!(code, map, transformData);\n return { code, serializedCache: added.serializedCache };\n}\n\nfunction calculateHash(content: string, filePath: string, isModule: boolean, pluginsPrologue: BabelPlugin[], pluginsEpilogue: BabelPlugin[]): string {\n const hash = crypto.createHash('sha1')\n .update(isModule ? 'esm' : 'no_esm')\n .update(content)\n .update(filePath)\n .update(version)\n .update(pluginsPrologue.map(p => p[0]).join(','))\n .update(pluginsEpilogue.map(p => p[0]).join(','))\n .digest('hex');\n return hash;\n}\n\nexport async function requireOrImport(file: string) {\n installTransformIfNeeded();\n const isModule = fileIsModule(file);\n const esmImport = () => eval(`import(${JSON.stringify(url.pathToFileURL(file))})`);\n if (isModule) {\n return await esmImport().finally(async () => {\n // Compilation cache, which includes source maps, is populated in a post task.\n // When importing a module results in an error, the very next access to `error.stack`\n // will need source maps. To make sure source maps have arrived, we insert a task\n // that will be processed after compilation cache and guarantee that\n // source maps are available, before `error.stack` is accessed.\n await new Promise(resolve => setTimeout(resolve, 0));\n });\n }\n const result = require(file);\n const depsCollector = currentFileDepsCollector();\n if (depsCollector) {\n const module = require.cache[file];\n if (module)\n collectCJSDependencies(module, depsCollector);\n }\n return result;\n}\n\nlet transformInstalled = false;\n\nfunction installTransformIfNeeded() {\n if (transformInstalled)\n return;\n transformInstalled = true;\n\n installSourceMapSupport();\n\n const originalResolveFilename = (Module as any)._resolveFilename;\n function resolveFilename(this: any, specifier: string, parent: Module, ...rest: any[]) {\n if (parent) {\n const resolved = resolveHook(parent.filename, specifier);\n if (resolved !== undefined)\n specifier = resolved;\n }\n return originalResolveFilename.call(this, specifier, parent, ...rest);\n }\n (Module as any)._resolveFilename = resolveFilename;\n\n // Hopefully, one day we can migrate to synchronous loader hooks instead, similar to our esmLoader...\n addHook((code, filename) => {\n return transformHook(code, filename).code;\n }, shouldTransform, ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.mts', '.cjs', '.cts']);\n}\n\nconst collectCJSDependencies = (module: Module, dependencies: Set<string>) => {\n module.children.forEach(child => {\n if (!belongsToNodeModules(child.filename) && !dependencies.has(child.filename)) {\n dependencies.add(child.filename);\n collectCJSDependencies(child, dependencies);\n }\n });\n};\n\nexport function wrapFunctionWithLocation<A extends any[], R>(func: (location: Location, ...args: A) => R): (...args: A) => R {\n return (...args) => {\n const oldPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = (error, stackFrames) => {\n const frame: NodeJS.CallSite = sourceMapSupport.wrapCallSite(stackFrames[1]);\n const fileName = frame.getFileName();\n // Node error stacks for modules use file:// urls instead of paths.\n const file = (fileName && fileName.startsWith('file://')) ? url.fileURLToPath(fileName) : fileName;\n return {\n file,\n line: frame.getLineNumber(),\n column: frame.getColumnNumber(),\n };\n };\n const oldStackTraceLimit = Error.stackTraceLimit;\n Error.stackTraceLimit = 2;\n const obj: { stack: Location } = {} as any;\n Error.captureStackTrace(obj);\n const location = obj.stack;\n Error.stackTraceLimit = oldStackTraceLimit;\n Error.prepareStackTrace = oldPrepareStackTrace;\n return func(location, ...args);\n };\n}\n\nfunction isRelativeSpecifier(specifier: string) {\n return specifier === '.' || specifier === '..' || specifier.startsWith('./') || specifier.startsWith('../');\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["file", "path", "result", "fs", "folder", "Module", "isModule", "crypto", "url", "module"]
7
+ }