@vscode/component-explorer-cli 0.2.1-3 → 0.2.1-31

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 (198) hide show
  1. package/README.md +14 -6
  2. package/dist/WorktreePool.d.ts +5 -4
  3. package/dist/WorktreePool.d.ts.map +1 -1
  4. package/dist/WorktreePool.js +3 -3
  5. package/dist/WorktreePool.js.map +1 -1
  6. package/dist/_virtual/_build-info.js +1 -1
  7. package/dist/browserPage.d.ts +51 -1
  8. package/dist/browserPage.d.ts.map +1 -1
  9. package/dist/browserPage.js +107 -1
  10. package/dist/browserPage.js.map +1 -1
  11. package/dist/commands/acceptCommand.d.ts +2 -1
  12. package/dist/commands/acceptCommand.d.ts.map +1 -1
  13. package/dist/commands/acceptCommand.js +18 -10
  14. package/dist/commands/acceptCommand.js.map +1 -1
  15. package/dist/commands/checkStabilityCommand.d.ts +3 -0
  16. package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
  17. package/dist/commands/checkStabilityCommand.js +22 -4
  18. package/dist/commands/checkStabilityCommand.js.map +1 -1
  19. package/dist/commands/compareCommand.d.ts +2 -1
  20. package/dist/commands/compareCommand.d.ts.map +1 -1
  21. package/dist/commands/compareCommand.js +27 -17
  22. package/dist/commands/compareCommand.js.map +1 -1
  23. package/dist/commands/inputArg.d.ts +33 -0
  24. package/dist/commands/inputArg.d.ts.map +1 -0
  25. package/dist/commands/inputArg.js +103 -0
  26. package/dist/commands/inputArg.js.map +1 -0
  27. package/dist/commands/mcpCommand.d.ts +3 -0
  28. package/dist/commands/mcpCommand.d.ts.map +1 -1
  29. package/dist/commands/mcpCommand.js +178 -45
  30. package/dist/commands/mcpCommand.js.map +1 -1
  31. package/dist/commands/renderCommand.d.ts +10 -1
  32. package/dist/commands/renderCommand.d.ts.map +1 -1
  33. package/dist/commands/renderCommand.js +311 -23
  34. package/dist/commands/renderCommand.js.map +1 -1
  35. package/dist/commands/serveCommand.d.ts +2 -0
  36. package/dist/commands/serveCommand.d.ts.map +1 -1
  37. package/dist/commands/serveCommand.js +73 -41
  38. package/dist/commands/serveCommand.js.map +1 -1
  39. package/dist/commands/serviceDiffCommitsCommand.d.ts +16 -0
  40. package/dist/commands/serviceDiffCommitsCommand.d.ts.map +1 -0
  41. package/dist/commands/serviceDiffCommitsCommand.js +230 -0
  42. package/dist/commands/serviceDiffCommitsCommand.js.map +1 -0
  43. package/dist/commands/watchCommand.d.ts +2 -0
  44. package/dist/commands/watchCommand.d.ts.map +1 -1
  45. package/dist/commands/watchCommand.js +28 -16
  46. package/dist/commands/watchCommand.js.map +1 -1
  47. package/dist/comparison.d.ts +4 -3
  48. package/dist/comparison.d.ts.map +1 -1
  49. package/dist/comparison.js +10 -10
  50. package/dist/comparison.js.map +1 -1
  51. package/dist/component-explorer-config.schema.json +55 -2
  52. package/dist/componentExplorer.d.ts +109 -11
  53. package/dist/componentExplorer.d.ts.map +1 -1
  54. package/dist/componentExplorer.js +235 -58
  55. package/dist/componentExplorer.js.map +1 -1
  56. package/dist/config.d.ts +33 -4
  57. package/dist/config.d.ts.map +1 -1
  58. package/dist/config.js +64 -27
  59. package/dist/config.js.map +1 -1
  60. package/dist/coverage.d.ts +64 -0
  61. package/dist/coverage.d.ts.map +1 -0
  62. package/dist/coverage.js +212 -0
  63. package/dist/coverage.js.map +1 -0
  64. package/dist/daemon/DaemonService.d.ts +14 -5
  65. package/dist/daemon/DaemonService.d.ts.map +1 -1
  66. package/dist/daemon/DaemonService.js +42 -18
  67. package/dist/daemon/DaemonService.js.map +1 -1
  68. package/dist/daemon/approvalStore.d.ts +2 -1
  69. package/dist/daemon/approvalStore.d.ts.map +1 -1
  70. package/dist/daemon/approvalStore.js +4 -3
  71. package/dist/daemon/approvalStore.js.map +1 -1
  72. package/dist/daemon/client.d.ts +5 -0
  73. package/dist/daemon/client.d.ts.map +1 -0
  74. package/dist/daemon/client.js +7 -0
  75. package/dist/daemon/client.js.map +1 -0
  76. package/dist/daemon/inProcessClient.d.ts +11 -0
  77. package/dist/daemon/inProcessClient.d.ts.map +1 -0
  78. package/dist/daemon/inProcessClient.js +35 -0
  79. package/dist/daemon/inProcessClient.js.map +1 -0
  80. package/dist/daemon/lifecycle.d.ts +8 -1
  81. package/dist/daemon/lifecycle.d.ts.map +1 -1
  82. package/dist/daemon/lifecycle.js +13 -3
  83. package/dist/daemon/lifecycle.js.map +1 -1
  84. package/dist/daemon/pipeClient.d.ts +2 -0
  85. package/dist/daemon/pipeClient.d.ts.map +1 -1
  86. package/dist/daemon/pipeClient.js +22 -3
  87. package/dist/daemon/pipeClient.js.map +1 -1
  88. package/dist/daemon/pipeName.d.ts +7 -1
  89. package/dist/daemon/pipeName.d.ts.map +1 -1
  90. package/dist/daemon/pipeName.js +8 -4
  91. package/dist/daemon/pipeName.js.map +1 -1
  92. package/dist/daemon/pipeServer.d.ts.map +1 -1
  93. package/dist/daemon/pipeServer.js +9 -3
  94. package/dist/daemon/pipeServer.js.map +1 -1
  95. package/dist/daemon/version.d.ts +1 -1
  96. package/dist/daemon/version.js +1 -1
  97. package/dist/dependencyInstaller.d.ts +2 -1
  98. package/dist/dependencyInstaller.d.ts.map +1 -1
  99. package/dist/dependencyInstaller.js +4 -4
  100. package/dist/dependencyInstaller.js.map +1 -1
  101. package/dist/evaluateFn.d.ts +21 -0
  102. package/dist/evaluateFn.d.ts.map +1 -0
  103. package/dist/evaluateFn.js +17 -0
  104. package/dist/evaluateFn.js.map +1 -0
  105. package/dist/git/gitCommitResolver.d.ts +2 -1
  106. package/dist/git/gitCommitResolver.d.ts.map +1 -1
  107. package/dist/git/gitCommitResolver.js +2 -2
  108. package/dist/git/gitCommitResolver.js.map +1 -1
  109. package/dist/git/gitIndexResolver.d.ts +2 -1
  110. package/dist/git/gitIndexResolver.d.ts.map +1 -1
  111. package/dist/git/gitIndexResolver.js +1 -1
  112. package/dist/git/gitIndexResolver.js.map +1 -1
  113. package/dist/git/gitService.d.ts +5 -4
  114. package/dist/git/gitService.d.ts.map +1 -1
  115. package/dist/git/gitService.js.map +1 -1
  116. package/dist/git/gitUtils.d.ts +6 -4
  117. package/dist/git/gitUtils.d.ts.map +1 -1
  118. package/dist/git/gitUtils.js +10 -5
  119. package/dist/git/gitUtils.js.map +1 -1
  120. package/dist/git/gitWorktreeManager.d.ts +15 -14
  121. package/dist/git/gitWorktreeManager.d.ts.map +1 -1
  122. package/dist/git/gitWorktreeManager.js +10 -11
  123. package/dist/git/gitWorktreeManager.js.map +1 -1
  124. package/dist/git/testUtils.d.ts +2 -1
  125. package/dist/git/testUtils.d.ts.map +1 -1
  126. package/dist/index.js +19 -1
  127. package/dist/index.js.map +1 -1
  128. package/dist/logger.d.ts +12 -1
  129. package/dist/logger.d.ts.map +1 -1
  130. package/dist/logger.js +35 -2
  131. package/dist/logger.js.map +1 -1
  132. package/dist/manifest.schema.json +38 -16
  133. package/dist/mcp/DaemonAccessor.d.ts +22 -0
  134. package/dist/mcp/DaemonAccessor.d.ts.map +1 -0
  135. package/dist/mcp/McpServer.d.ts +5 -19
  136. package/dist/mcp/McpServer.d.ts.map +1 -1
  137. package/dist/mcp/McpServer.js +384 -297
  138. package/dist/mcp/McpServer.js.map +1 -1
  139. package/dist/packages/common/dist/explorerUrl.js +21 -0
  140. package/dist/packages/common/dist/explorerUrl.js.map +1 -0
  141. package/dist/packages/common/dist/renderManifest.js +26 -5
  142. package/dist/packages/common/dist/renderManifest.js.map +1 -1
  143. package/dist/packages/simple-api/dist/{chunk-3R7GHWBM.js → chunk-FJ7AVNQE.js} +2 -1
  144. package/dist/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +1 -0
  145. package/dist/packages/simple-api/dist/{chunk-SGBCNXYH.js → chunk-TTRCY65Z.js} +4 -1
  146. package/dist/packages/simple-api/dist/chunk-TTRCY65Z.js.map +1 -0
  147. package/dist/packages/simple-api/dist/{chunk-TAEFVNPN.js → chunk-WNXMRXWV.js} +2 -1
  148. package/dist/packages/simple-api/dist/chunk-WNXMRXWV.js.map +1 -0
  149. package/dist/packages/simple-api/dist/express.js +1 -1
  150. package/dist/packages/simple-api/dist/express.js.map +1 -1
  151. package/dist/path.d.ts +30 -0
  152. package/dist/path.d.ts.map +1 -0
  153. package/dist/path.js +78 -0
  154. package/dist/path.js.map +1 -0
  155. package/dist/processTree.d.ts +9 -0
  156. package/dist/processTree.d.ts.map +1 -0
  157. package/dist/processTree.js +41 -0
  158. package/dist/processTree.js.map +1 -0
  159. package/dist/screenshotServiceClient.d.ts +31 -0
  160. package/dist/screenshotServiceClient.d.ts.map +1 -0
  161. package/dist/screenshotServiceClient.js +38 -0
  162. package/dist/screenshotServiceClient.js.map +1 -0
  163. package/dist/server/httpServer.d.ts +1 -1
  164. package/dist/server/httpServer.d.ts.map +1 -1
  165. package/dist/server/httpServer.js +22 -20
  166. package/dist/server/httpServer.js.map +1 -1
  167. package/dist/server/serverConfig.d.ts +23 -6
  168. package/dist/server/serverConfig.d.ts.map +1 -1
  169. package/dist/server/serverConfig.js +11 -18
  170. package/dist/server/serverConfig.js.map +1 -1
  171. package/dist/server/viteServer.d.ts +16 -1
  172. package/dist/server/viteServer.d.ts.map +1 -1
  173. package/dist/server/viteServer.js +91 -10
  174. package/dist/server/viteServer.js.map +1 -1
  175. package/dist/storage.d.ts +2 -1
  176. package/dist/storage.d.ts.map +1 -1
  177. package/dist/storage.js +1 -1
  178. package/dist/storage.js.map +1 -1
  179. package/dist/utils.d.ts +3 -25
  180. package/dist/utils.d.ts.map +1 -1
  181. package/dist/utils.js +4 -23
  182. package/dist/utils.js.map +1 -1
  183. package/dist/visualCache.d.ts +2 -1
  184. package/dist/visualCache.d.ts.map +1 -1
  185. package/dist/visualCache.js +4 -3
  186. package/dist/visualCache.js.map +1 -1
  187. package/dist/viteProjectRef.d.ts +4 -12
  188. package/dist/viteProjectRef.d.ts.map +1 -1
  189. package/dist/viteProjectRef.js +9 -17
  190. package/dist/viteProjectRef.js.map +1 -1
  191. package/package.json +23 -19
  192. package/dist/commands/artifactCommand.d.ts +0 -13
  193. package/dist/commands/artifactCommand.d.ts.map +0 -1
  194. package/dist/commands/screenshotCommand.d.ts +0 -18
  195. package/dist/commands/screenshotCommand.d.ts.map +0 -1
  196. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +0 -1
  197. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +0 -1
  198. package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js.map +0 -1
package/dist/path.js ADDED
@@ -0,0 +1,78 @@
1
+ import * as path from 'node:path';
2
+
3
+ class PathOrigin {
4
+ type;
5
+ args;
6
+ constructor(type, args) {
7
+ this.type = type;
8
+ this.args = args;
9
+ }
10
+ toString() {
11
+ const argStr = Object.entries(this.args)
12
+ .map(([k, v]) => `${k}: ${v}`)
13
+ .join(', ');
14
+ return `${this.type}(${argStr})`;
15
+ }
16
+ }
17
+ class AbsolutePath {
18
+ _origin;
19
+ value;
20
+ constructor(value, _origin) {
21
+ this._origin = _origin;
22
+ if (!path.isAbsolute(value)) {
23
+ throw new Error(`Expected absolute path, got: ${value}`);
24
+ }
25
+ this.value = path.normalize(value);
26
+ }
27
+ static from(value, origin) {
28
+ return new AbsolutePath(value, origin);
29
+ }
30
+ static resolve(value) {
31
+ return new AbsolutePath(path.resolve(value), new PathOrigin('resolve', { from: value }));
32
+ }
33
+ static fromAbsoluteOrRelative(value, options) {
34
+ if (path.isAbsolute(value)) {
35
+ return AbsolutePath.from(value);
36
+ }
37
+ return options.base.join(new RelativePath(value));
38
+ }
39
+ debugName(name) {
40
+ return new AbsolutePath(this.value, new PathOrigin('named', { name, base: this }));
41
+ }
42
+ join(relative) {
43
+ return new AbsolutePath(path.resolve(this.value, relative.value), new PathOrigin('join', { base: this, relative }));
44
+ }
45
+ relativeTo(base) {
46
+ return new RelativePath(path.relative(base.value, this.value), new PathOrigin('relative', { path: this, base }));
47
+ }
48
+ rebase(currentRoot, newRoot) {
49
+ const rel = path.relative(currentRoot.value, this.value);
50
+ return new AbsolutePath(path.resolve(newRoot.value, rel), new PathOrigin('rebase', { path: this, from: currentRoot, to: newRoot }));
51
+ }
52
+ dirname() {
53
+ return new AbsolutePath(path.dirname(this.value), new PathOrigin('dirname', { path: this }));
54
+ }
55
+ toString() {
56
+ return this.value;
57
+ }
58
+ }
59
+ class RelativePath {
60
+ _origin;
61
+ value;
62
+ constructor(value, _origin) {
63
+ this._origin = _origin;
64
+ if (path.isAbsolute(value)) {
65
+ throw new Error(`Expected relative path, got: ${value}`);
66
+ }
67
+ this.value = value;
68
+ }
69
+ debugName(name) {
70
+ return new RelativePath(this.value, new PathOrigin('named', { name, base: this }));
71
+ }
72
+ toString() {
73
+ return this.value;
74
+ }
75
+ }
76
+
77
+ export { AbsolutePath, PathOrigin, RelativePath };
78
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sources":["../src/path.ts"],"sourcesContent":[null],"names":["nodePath"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type ChildProcess } from 'node:child_process';
2
+ export interface ProcessTree {
3
+ readonly process: ChildProcess;
4
+ kill(): void;
5
+ }
6
+ export declare function spawnShellWithTree(cmd: string, options?: {
7
+ cwd?: string;
8
+ }): ProcessTree;
9
+ //# sourceMappingURL=processTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processTree.d.ts","sourceRoot":"","sources":["../src/processTree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,IAAI,IAAI,IAAI,CAAC;CACb;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAMvF"}
@@ -0,0 +1,41 @@
1
+ import { spawn } from 'node:child_process';
2
+
3
+ function spawnShellWithTree(cmd, options) {
4
+ if (process.platform === 'win32') {
5
+ return _spawnWin32(cmd, options);
6
+ }
7
+ else {
8
+ return _spawnUnix(cmd, options);
9
+ }
10
+ }
11
+ function _spawnWin32(cmd, options) {
12
+ const proc = spawn(cmd, { shell: true, stdio: 'pipe', cwd: options?.cwd, windowsHide: true });
13
+ return {
14
+ process: proc,
15
+ kill() {
16
+ if (proc.killed || proc.pid === undefined) {
17
+ return;
18
+ }
19
+ spawn('taskkill', ['/T', '/F', '/PID', String(proc.pid)], { windowsHide: true, stdio: 'ignore' });
20
+ },
21
+ };
22
+ }
23
+ function _spawnUnix(cmd, options) {
24
+ // detached creates a new process group so we can kill the entire tree.
25
+ const proc = spawn(cmd, { shell: true, stdio: 'pipe', cwd: options?.cwd, windowsHide: true, detached: true });
26
+ return {
27
+ process: proc,
28
+ kill() {
29
+ if (proc.killed || proc.pid === undefined) {
30
+ return;
31
+ }
32
+ try {
33
+ process.kill(-proc.pid, 'SIGTERM');
34
+ }
35
+ catch { /* already exited */ }
36
+ },
37
+ };
38
+ }
39
+
40
+ export { spawnShellWithTree };
41
+ //# sourceMappingURL=processTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processTree.js","sources":["../src/processTree.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAOM,SAAU,kBAAkB,CAAC,GAAW,EAAE,OAA0B,EAAA;AACzE,IAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;AACjC,QAAA,OAAO,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC;IACjC;SAAO;AACN,QAAA,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;IAChC;AACD;AAEA,SAAS,WAAW,CAAC,GAAW,EAAE,OAA0B,EAAA;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7F,OAAO;AACN,QAAA,OAAO,EAAE,IAAI;QACb,IAAI,GAAA;YACH,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAAE;YAAQ;AACrD,YAAA,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAClG,CAAC;KACD;AACF;AAEA,SAAS,UAAU,CAAC,GAAW,EAAE,OAA0B,EAAA;;AAE1D,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7G,OAAO;AACN,QAAA,OAAO,EAAE,IAAI;QACb,IAAI,GAAA;YACH,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAAE;YAAQ;AACrD,YAAA,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC;YAAE;AAAE,YAAA,MAAM,uBAAuB;QAC1E,CAAC;KACD;AACF;;;;"}
@@ -0,0 +1,31 @@
1
+ export interface ScreenshotServiceClientOptions {
2
+ readonly baseUrl: string;
3
+ readonly apiKey?: string;
4
+ }
5
+ export interface CompareEntry {
6
+ readonly fixtureId: string;
7
+ readonly imageUrl: string;
8
+ readonly changeCount?: number;
9
+ }
10
+ export interface CompareChangedEntry {
11
+ readonly fixtureId: string;
12
+ readonly beforeImageUrl: string;
13
+ readonly afterImageUrl: string;
14
+ readonly changeCount?: number;
15
+ }
16
+ export interface CompareResult {
17
+ readonly baseCommitSha: string;
18
+ readonly added: readonly CompareEntry[];
19
+ readonly removed: readonly CompareEntry[];
20
+ readonly changed: readonly CompareChangedEntry[];
21
+ readonly unchanged: readonly CompareEntry[];
22
+ }
23
+ export declare class ScreenshotServiceClient {
24
+ private readonly _baseUrl;
25
+ private readonly _apiKey?;
26
+ constructor(options: ScreenshotServiceClientOptions);
27
+ compare(owner: string, repo: string, baseCommitSha: string, currentCommitSha: string, options?: {
28
+ changeCountSinceDays?: number;
29
+ }): Promise<CompareResult>;
30
+ }
31
+ //# sourceMappingURL=screenshotServiceClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshotServiceClient.d.ts","sourceRoot":"","sources":["../src/screenshotServiceClient.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAED,qBAAa,uBAAuB;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;gBAEtB,OAAO,EAAE,8BAA8B;IAK7C,OAAO,CACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,MAAM,CAAA;KAAE,GACzC,OAAO,CAAC,aAAa,CAAC;CA+BzB"}
@@ -0,0 +1,38 @@
1
+ class ScreenshotServiceClient {
2
+ _baseUrl;
3
+ _apiKey;
4
+ constructor(options) {
5
+ this._baseUrl = options.baseUrl.replace(/\/$/, '');
6
+ this._apiKey = options.apiKey;
7
+ }
8
+ async compare(owner, repo, baseCommitSha, currentCommitSha, options) {
9
+ const headers = {
10
+ 'Content-Type': 'application/json',
11
+ };
12
+ if (this._apiKey) {
13
+ headers['x-api-key'] = this._apiKey;
14
+ }
15
+ const response = await fetch(`${this._baseUrl}/compare`, {
16
+ method: 'POST',
17
+ headers,
18
+ body: JSON.stringify({
19
+ owner,
20
+ repo,
21
+ baseCommitSha,
22
+ currentCommitSha,
23
+ changeCountSinceDays: options?.changeCountSinceDays,
24
+ }),
25
+ });
26
+ if (response.ok) {
27
+ return response.json();
28
+ }
29
+ const body = await response.json().catch(() => ({}));
30
+ if (response.status === 404 && body.error) {
31
+ throw new Error(`Screenshot service error: ${body.error}`);
32
+ }
33
+ throw new Error(`Screenshot service returned status ${response.status}`);
34
+ }
35
+ }
36
+
37
+ export { ScreenshotServiceClient };
38
+ //# sourceMappingURL=screenshotServiceClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshotServiceClient.js","sources":["../src/screenshotServiceClient.ts"],"sourcesContent":[null],"names":[],"mappings":"MA0Ba,uBAAuB,CAAA;AAClB,IAAA,QAAQ;AACR,IAAA,OAAO;AAExB,IAAA,WAAA,CAAY,OAAuC,EAAA;AAClD,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM;IAC9B;IAEA,MAAM,OAAO,CACZ,KAAa,EACb,IAAY,EACZ,aAAqB,EACrB,gBAAwB,EACxB,OAA2C,EAAA;AAE3C,QAAA,MAAM,OAAO,GAA2B;AACvC,YAAA,cAAc,EAAE,kBAAkB;SAClC;AACD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,OAAO;QACpC;QAEA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA,QAAA,CAAU,EAAE;AACxD,YAAA,MAAM,EAAE,MAAM;YACd,OAAO;AACP,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK;gBACL,IAAI;gBACJ,aAAa;gBACb,gBAAgB;gBAChB,oBAAoB,EAAE,OAAO,EAAE,oBAAoB;aACnD,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,QAAQ,CAAC,EAAE,EAAE;AAChB,YAAA,OAAO,QAAQ,CAAC,IAAI,EAA4B;QACjD;AAEA,QAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAuB;QAC1E,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,EAA6B,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QAC3D;QAEA,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,QAAQ,CAAC,MAAM,CAAA,CAAE,CAAC;IACzE;AACA;;;;"}
@@ -10,5 +10,5 @@ export interface HttpServerOptions {
10
10
  readonly stderr?: RegExp;
11
11
  };
12
12
  }
13
- export declare function createHttpServer(url: string, options?: HttpServerOptions): Promise<ComponentExplorerHttpServer>;
13
+ export declare function createHttpServer(urlTemplate: string, options?: HttpServerOptions): Promise<ComponentExplorerHttpServer>;
14
14
  //# sourceMappingURL=httpServer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpServer.d.ts","sourceRoot":"","sources":["../../src/server/httpServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,YAAY,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE;QACf,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAE/G"}
1
+ {"version":3,"file":"httpServer.d.ts","sourceRoot":"","sources":["../../src/server/httpServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,YAAY,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE;QACf,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACF;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAEvH"}
@@ -1,11 +1,12 @@
1
1
  import { nullLogger } from '../logger.js';
2
+ import { spawnShellWithTree } from '../processTree.js';
2
3
 
3
- function createHttpServer(url, options) {
4
- return HttpComponentExplorerServer.create(url, options);
4
+ function createHttpServer(urlTemplate, options) {
5
+ return HttpComponentExplorerServer.create(urlTemplate, options);
5
6
  }
6
7
  class HttpComponentExplorerServer {
7
8
  url;
8
- _process;
9
+ _tree;
9
10
  static async create(urlTemplate, options) {
10
11
  let proc;
11
12
  let vars = {};
@@ -13,38 +14,39 @@ class HttpComponentExplorerServer {
13
14
  const log = options.logger ?? nullLogger;
14
15
  log.debug(`Starting HTTP server: ${options.cmd}`);
15
16
  log.debug(`HTTP server cwd: ${options.cwd ?? process.cwd()}`);
16
- const { spawn } = await import('node:child_process');
17
- proc = spawn(options.cmd, { shell: true, stdio: 'pipe', cwd: options.cwd });
18
- proc.on('error', (e) => log.log(`HTTP server process error: ${e.message}`));
19
- proc.on('exit', (code) => log.debug(`HTTP server process exited (code=${code})`));
17
+ const tree = spawnShellWithTree(options.cmd, { cwd: options.cwd });
18
+ proc = tree;
19
+ tree.process.on('error', (e) => log.log(`HTTP server process error: ${e.message}`));
20
+ tree.process.on('exit', (code) => log.debug(`HTTP server process exited (code=${code})`));
20
21
  if (options.wait?.stdout || options.wait?.stderr) {
21
- vars = await waitForOutputPattern(proc, options.wait, log);
22
+ vars = await waitForOutputPattern(tree.process, options.wait, log);
22
23
  }
23
24
  else {
24
- proc.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
25
- proc.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
25
+ tree.process.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
26
+ tree.process.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
26
27
  }
27
28
  }
28
29
  const url = resolveUrlTemplate(urlTemplate, vars);
29
30
  return new HttpComponentExplorerServer(url, proc);
30
31
  }
31
- constructor(url, _process) {
32
+ constructor(url, _tree) {
32
33
  this.url = url;
33
- this._process = _process;
34
+ this._tree = _tree;
34
35
  }
35
36
  async dispose() {
36
- const proc = this._process;
37
- if (!proc || proc.killed) {
37
+ const tree = this._tree;
38
+ const proc = tree?.process;
39
+ if (!tree || !proc || proc.killed || proc.pid === undefined) {
38
40
  return;
39
41
  }
40
- await new Promise((resolve) => {
42
+ proc.stdout?.destroy();
43
+ proc.stderr?.destroy();
44
+ const exitPromise = new Promise((resolve) => {
41
45
  proc.on('exit', () => resolve());
42
- proc.stdout?.removeAllListeners('data');
43
- proc.stderr?.removeAllListeners('data');
44
- proc.stdout?.destroy();
45
- proc.stderr?.destroy();
46
- proc.kill();
47
46
  });
47
+ tree.kill();
48
+ const timeout = new Promise((resolve) => setTimeout(resolve, 5_000));
49
+ await Promise.race([exitPromise, timeout]);
48
50
  }
49
51
  }
50
52
  function resolveUrlTemplate(template, vars) {
@@ -1 +1 @@
1
- {"version":3,"file":"httpServer.js","sources":["../../src/server/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpServer.js","sources":["../../src/server/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { ComponentExplorerHttpServer } from './types.js';
2
2
  import type { ILogger } from '../logger.js';
3
+ import { AbsolutePath } from '../path.js';
3
4
  import { ViteProjectRef } from '../viteProjectRef.js';
4
5
  export declare abstract class ResolvedServerConfig {
5
6
  abstract readonly kind: 'vite' | 'http';
@@ -13,6 +14,23 @@ export interface ServerContext {
13
14
  readonly daemonApiVersion: string;
14
15
  readonly pluginProtocolVersion: string;
15
16
  };
17
+ /**
18
+ * If set and the server is a Vite server, vite-plugin-istanbul is injected
19
+ * to instrument JS sources matching the given globs. The instrumented code
20
+ * exposes coverage on `window.__coverage__`. No-op for HTTP servers.
21
+ */
22
+ readonly istanbulCoverage?: {
23
+ readonly include: readonly string[];
24
+ readonly exclude: readonly string[];
25
+ };
26
+ /**
27
+ * If true and the server is a Vite server, a small post-transform plugin
28
+ * appends `/*# sourceURL=<id> *\/` to the CSS payload of each `.css`
29
+ * module so that Vite's HMR-injected `<style>` tags become visible to
30
+ * Playwright's CSS coverage (which silently skips anonymous stylesheets).
31
+ * No-op for HTTP servers.
32
+ */
33
+ readonly cssSourceUrl?: boolean;
16
34
  }
17
35
  export interface ResolvedViteHmrConfig {
18
36
  readonly allowedPaths: readonly string[];
@@ -20,10 +38,9 @@ export interface ResolvedViteHmrConfig {
20
38
  export declare class ViteServerConfig extends ResolvedServerConfig {
21
39
  readonly viteProject: ViteProjectRef;
22
40
  readonly hmr: ResolvedViteHmrConfig | undefined;
23
- private readonly _resolveViteFrom?;
24
41
  readonly kind = "vite";
25
- constructor(viteProject: ViteProjectRef, hmr: ResolvedViteHmrConfig | undefined, _resolveViteFrom?: string | undefined);
26
- forWorktree(repoRoot: string, worktreePath: string, configDir: string): ViteServerConfig;
42
+ constructor(viteProject: ViteProjectRef, hmr: ResolvedViteHmrConfig | undefined);
43
+ forWorktree(repoRoot: AbsolutePath, worktreePath: AbsolutePath, _configDir: AbsolutePath): ViteServerConfig;
27
44
  createServer(ctx: ServerContext): Promise<ComponentExplorerHttpServer>;
28
45
  }
29
46
  export interface ResolvedHttpWaitConfig {
@@ -31,12 +48,12 @@ export interface ResolvedHttpWaitConfig {
31
48
  readonly stderr?: RegExp;
32
49
  }
33
50
  export declare class HttpServerConfig extends ResolvedServerConfig {
34
- readonly url: string;
51
+ readonly urlTemplate: string;
35
52
  readonly cmd: string | undefined;
36
- readonly cwd: string;
53
+ readonly cwd: AbsolutePath;
37
54
  readonly wait: ResolvedHttpWaitConfig | undefined;
38
55
  readonly kind = "http";
39
- constructor(url: string, cmd: string | undefined, cwd: string, wait: ResolvedHttpWaitConfig | undefined);
56
+ constructor(urlTemplate: string, cmd: string | undefined, cwd: AbsolutePath, wait: ResolvedHttpWaitConfig | undefined);
40
57
  createServer(ctx: ServerContext): Promise<ComponentExplorerHttpServer>;
41
58
  }
42
59
  //# sourceMappingURL=serverConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serverConfig.d.ts","sourceRoot":"","sources":["../../src/server/serverConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8BAAsB,oBAAoB;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAC/E;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE;QACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;KAC1C,CAAC;CACL;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,qBAAa,gBAAiB,SAAQ,oBAAoB;IAIxD,QAAQ,CAAC,WAAW,EAAE,cAAc;IACpC,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IALnC,QAAQ,CAAC,IAAI,UAAU;gBAGb,WAAW,EAAE,cAAc,EAC3B,GAAG,EAAE,qBAAqB,GAAG,SAAS,EAC9B,gBAAgB,CAAC,EAAE,MAAM,YAAA;IAK3C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;IASlF,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAQ5E;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,gBAAiB,SAAQ,oBAAoB;IAIxD,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS;IANlD,QAAQ,CAAC,IAAI,UAAU;gBAGb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,sBAAsB,GAAG,SAAS;IAK5C,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAQ5E"}
1
+ {"version":3,"file":"serverConfig.d.ts","sourceRoot":"","sources":["../../src/server/serverConfig.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8BAAsB,oBAAoB;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAC/E;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;KACvC,CAAC;IACF;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;KACpC,CAAC;IACF;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,qBAAa,gBAAiB,SAAQ,oBAAoB;IAIxD,QAAQ,CAAC,WAAW,EAAE,cAAc;IACpC,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,SAAS;IAJhD,QAAQ,CAAC,IAAI,UAAU;gBAGb,WAAW,EAAE,cAAc,EAC3B,GAAG,EAAE,qBAAqB,GAAG,SAAS;IAKhD,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,GAAG,gBAAgB;IAKrG,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAS5E;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAiB,SAAQ,oBAAoB;IAIxD,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAChC,QAAQ,CAAC,GAAG,EAAE,YAAY;IAC1B,QAAQ,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS;IANlD,QAAQ,CAAC,IAAI,UAAU;gBAGb,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,sBAAsB,GAAG,SAAS;IAK5C,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAQ5E"}
@@ -1,55 +1,48 @@
1
- import * as path from 'node:path';
2
1
  import { createHttpServer } from './httpServer.js';
3
2
  import { createViteServer } from './viteServer.js';
4
- import { ViteProjectRef } from '../viteProjectRef.js';
5
3
 
6
4
  class ResolvedServerConfig {
7
5
  }
8
6
  class ViteServerConfig extends ResolvedServerConfig {
9
7
  viteProject;
10
8
  hmr;
11
- _resolveViteFrom;
12
9
  kind = 'vite';
13
- constructor(viteProject, hmr, _resolveViteFrom) {
10
+ constructor(viteProject, hmr) {
14
11
  super();
15
12
  this.viteProject = viteProject;
16
13
  this.hmr = hmr;
17
- this._resolveViteFrom = _resolveViteFrom;
18
14
  }
19
- forWorktree(repoRoot, worktreePath, configDir) {
20
- const configDirRelToGitRoot = path.relative(repoRoot, configDir);
21
- const worktreeConfigDir = path.resolve(worktreePath, configDirRelToGitRoot);
22
- const defaultViteConfig = path.basename(this.viteProject.configFile ?? 'vite.config.ts');
23
- const viteConfigPath = path.resolve(worktreeConfigDir, defaultViteConfig);
24
- const viteProject = ViteProjectRef.fromViteConfigPath(viteConfigPath);
25
- return new ViteServerConfig(viteProject, this.hmr, this.viteProject.configFile);
15
+ forWorktree(repoRoot, worktreePath, _configDir) {
16
+ const newViteProject = this.viteProject.rebase(repoRoot, worktreePath);
17
+ return new ViteServerConfig(newViteProject, this.hmr);
26
18
  }
27
19
  async createServer(ctx) {
28
20
  return createViteServer(this.viteProject, {
29
21
  logger: ctx.logger,
30
- resolveViteFrom: this._resolveViteFrom,
31
22
  hmrAllowedPaths: this.hmr?.allowedPaths,
32
23
  daemonConfig: ctx.daemonConfig,
24
+ istanbulCoverage: ctx.istanbulCoverage,
25
+ cssSourceUrl: ctx.cssSourceUrl,
33
26
  });
34
27
  }
35
28
  }
36
29
  class HttpServerConfig extends ResolvedServerConfig {
37
- url;
30
+ urlTemplate;
38
31
  cmd;
39
32
  cwd;
40
33
  wait;
41
34
  kind = 'http';
42
- constructor(url, cmd, cwd, wait) {
35
+ constructor(urlTemplate, cmd, cwd, wait) {
43
36
  super();
44
- this.url = url;
37
+ this.urlTemplate = urlTemplate;
45
38
  this.cmd = cmd;
46
39
  this.cwd = cwd;
47
40
  this.wait = wait;
48
41
  }
49
42
  async createServer(ctx) {
50
- return createHttpServer(this.url, {
43
+ return createHttpServer(this.urlTemplate, {
51
44
  cmd: this.cmd,
52
- cwd: this.cwd,
45
+ cwd: this.cwd.value,
53
46
  wait: this.wait,
54
47
  logger: ctx.logger,
55
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"serverConfig.js","sources":["../../src/server/serverConfig.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MAOsB,oBAAoB,CAAA;AAGzC;AAgBK,MAAO,gBAAiB,SAAQ,oBAAoB,CAAA;AAI/C,IAAA,WAAA;AACA,IAAA,GAAA;AACQ,IAAA,gBAAA;IALT,IAAI,GAAG,MAAM;AAEtB,IAAA,WAAA,CACU,WAA2B,EAC3B,GAAsC,EAC9B,gBAAyB,EAAA;AAE1C,QAAA,KAAK,EAAE;QAJE,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,GAAG,GAAH,GAAG;QACK,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAGlC;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAE,YAAoB,EAAE,SAAiB,EAAA;QACpE,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;QAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,qBAAqB,CAAC;AAC3E,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,gBAAgB,CAAC;QACxF,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;QACzE,MAAM,WAAW,GAAG,cAAc,CAAC,kBAAkB,CAAC,cAAc,CAAC;AACrE,QAAA,OAAO,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;IAChF;IAEA,MAAM,YAAY,CAAC,GAAkB,EAAA;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE;YACzC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,eAAe,EAAE,IAAI,CAAC,gBAAgB;AACtC,YAAA,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY;YACvC,YAAY,EAAE,GAAG,CAAC,YAAY;AAC9B,SAAA,CAAC;IACH;AACA;AAOK,MAAO,gBAAiB,SAAQ,oBAAoB,CAAA;AAI/C,IAAA,GAAA;AACA,IAAA,GAAA;AACA,IAAA,GAAA;AACA,IAAA,IAAA;IAND,IAAI,GAAG,MAAM;AAEtB,IAAA,WAAA,CACU,GAAW,EACX,GAAuB,EACvB,GAAW,EACX,IAAwC,EAAA;AAEjD,QAAA,KAAK,EAAE;QALE,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,IAAI,GAAJ,IAAI;IAGd;IAEA,MAAM,YAAY,CAAC,GAAkB,EAAA;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE;YACjC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,GAAG,CAAC,MAAM;AAClB,SAAA,CAAC;IACH;AACA;;;;"}
1
+ {"version":3,"file":"serverConfig.js","sources":["../../src/server/serverConfig.ts"],"sourcesContent":[null],"names":[],"mappings":";;;MAOsB,oBAAoB,CAAA;AAGzC;AAiCK,MAAO,gBAAiB,SAAQ,oBAAoB,CAAA;AAI/C,IAAA,WAAA;AACA,IAAA,GAAA;IAJD,IAAI,GAAG,MAAM;IAEtB,WAAA,CACU,WAA2B,EAC3B,GAAsC,EAAA;AAE/C,QAAA,KAAK,EAAE;QAHE,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,GAAG,GAAH,GAAG;IAGb;AAEA,IAAA,WAAW,CAAC,QAAsB,EAAE,YAA0B,EAAE,UAAwB,EAAA;AACvF,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;QACtE,OAAO,IAAI,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC;IACtD;IAEA,MAAM,YAAY,CAAC,GAAkB,EAAA;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE;YACzC,MAAM,EAAE,GAAG,CAAC,MAAM;AAClB,YAAA,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY;YACvC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,YAAY,EAAE,GAAG,CAAC,YAAY;AAC9B,SAAA,CAAC;IACH;AACA;AAOK,MAAO,gBAAiB,SAAQ,oBAAoB,CAAA;AAI/C,IAAA,WAAA;AACA,IAAA,GAAA;AACA,IAAA,GAAA;AACA,IAAA,IAAA;IAND,IAAI,GAAG,MAAM;AAEtB,IAAA,WAAA,CACU,WAAmB,EACnB,GAAuB,EACvB,GAAiB,EACjB,IAAwC,EAAA;AAEjD,QAAA,KAAK,EAAE;QALE,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,IAAI,GAAJ,IAAI;IAGd;IAEA,MAAM,YAAY,CAAC,GAAkB,EAAA;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE;YACzC,GAAG,EAAE,IAAI,CAAC,GAAG;AACb,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,GAAG,CAAC,MAAM;AAClB,SAAA,CAAC;IACH;AACA;;;;"}
@@ -2,7 +2,7 @@ import { type ILogger } from '../logger.js';
2
2
  import { ViteProjectRef } from '../viteProjectRef.js';
3
3
  import type { ComponentExplorerHttpServer } from './types.js';
4
4
  export interface ViteServerOptions {
5
- readonly resolveViteFrom?: string;
5
+ readonly resolveViteFromPath?: string;
6
6
  readonly logger?: ILogger;
7
7
  readonly hmrAllowedPaths?: readonly string[];
8
8
  readonly daemonConfig?: {
@@ -11,6 +11,21 @@ export interface ViteServerOptions {
11
11
  readonly daemonApiVersion: string;
12
12
  readonly pluginProtocolVersion: string;
13
13
  };
14
+ /**
15
+ * If set, vite-plugin-istanbul is injected to instrument matching files.
16
+ * After fixture render, JS coverage is exposed on `window.__coverage__`.
17
+ */
18
+ readonly istanbulCoverage?: {
19
+ readonly include: readonly string[];
20
+ readonly exclude: readonly string[];
21
+ };
22
+ /**
23
+ * If true, a tiny post-transform plugin appends `/*# sourceURL=<id> *\/` to
24
+ * the CSS payload that Vite injects via `<style>` tags. This makes those
25
+ * stylesheets visible to Playwright's CSS coverage (which silently skips
26
+ * stylesheets without a sourceURL — see Playwright `crCoverage.ts`).
27
+ */
28
+ readonly cssSourceUrl?: boolean;
14
29
  }
15
30
  export declare function createViteServer(project: ViteProjectRef, options?: ViteServerOptions): Promise<ComponentExplorerHttpServer>;
16
31
  //# sourceMappingURL=viteServer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viteServer.d.ts","sourceRoot":"","sources":["../../src/server/viteServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;KACvC,CAAC;CACF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAE3H"}
1
+ {"version":3,"file":"viteServer.d.ts","sourceRoot":"","sources":["../../src/server/viteServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;KACvC,CAAC;IACF;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;KACpC,CAAC;IACF;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAE3H"}