@vscode/component-explorer-cli 0.2.1-7 → 0.2.1-70

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 (237) hide show
  1. package/README.md +6 -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 +50 -0
  8. package/dist/browserPage.d.ts.map +1 -1
  9. package/dist/browserPage.js +78 -0
  10. package/dist/browserPage.js.map +1 -1
  11. package/dist/commands/acceptCommand.d.ts +1 -1
  12. package/dist/commands/acceptCommand.d.ts.map +1 -1
  13. package/dist/commands/acceptCommand.js +21 -14
  14. package/dist/commands/acceptCommand.js.map +1 -1
  15. package/dist/commands/checkStabilityCommand.d.ts +2 -0
  16. package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
  17. package/dist/commands/checkStabilityCommand.js +25 -8
  18. package/dist/commands/checkStabilityCommand.js.map +1 -1
  19. package/dist/commands/compareCommand.d.ts +1 -1
  20. package/dist/commands/compareCommand.d.ts.map +1 -1
  21. package/dist/commands/compareCommand.js +31 -22
  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 +0 -2
  28. package/dist/commands/mcpCommand.d.ts.map +1 -1
  29. package/dist/commands/mcpCommand.js +143 -75
  30. package/dist/commands/mcpCommand.js.map +1 -1
  31. package/dist/commands/renderCommand.d.ts +9 -1
  32. package/dist/commands/renderCommand.d.ts.map +1 -1
  33. package/dist/commands/renderCommand.js +313 -28
  34. package/dist/commands/renderCommand.js.map +1 -1
  35. package/dist/commands/serveCommand.d.ts.map +1 -1
  36. package/dist/commands/serveCommand.js +14 -11
  37. package/dist/commands/serveCommand.js.map +1 -1
  38. package/dist/commands/serviceDiffCommitsCommand.d.ts.map +1 -1
  39. package/dist/commands/serviceDiffCommitsCommand.js +10 -9
  40. package/dist/commands/serviceDiffCommitsCommand.js.map +1 -1
  41. package/dist/commands/watchCommand.d.ts +1 -0
  42. package/dist/commands/watchCommand.d.ts.map +1 -1
  43. package/dist/commands/watchCommand.js +31 -20
  44. package/dist/commands/watchCommand.js.map +1 -1
  45. package/dist/comparison.d.ts +4 -3
  46. package/dist/comparison.d.ts.map +1 -1
  47. package/dist/comparison.js +17 -14
  48. package/dist/comparison.js.map +1 -1
  49. package/dist/component-explorer-config.schema.json +55 -2
  50. package/dist/componentExplorer.d.ts +106 -11
  51. package/dist/componentExplorer.d.ts.map +1 -1
  52. package/dist/componentExplorer.js +166 -23
  53. package/dist/componentExplorer.js.map +1 -1
  54. package/dist/config.d.ts +33 -4
  55. package/dist/config.d.ts.map +1 -1
  56. package/dist/config.js +64 -27
  57. package/dist/config.js.map +1 -1
  58. package/dist/coverage.d.ts +64 -0
  59. package/dist/coverage.d.ts.map +1 -0
  60. package/dist/coverage.js +212 -0
  61. package/dist/coverage.js.map +1 -0
  62. package/dist/daemon/DaemonService.d.ts +14 -5
  63. package/dist/daemon/DaemonService.d.ts.map +1 -1
  64. package/dist/daemon/DaemonService.js +47 -23
  65. package/dist/daemon/DaemonService.js.map +1 -1
  66. package/dist/daemon/approvalStore.d.ts +2 -1
  67. package/dist/daemon/approvalStore.d.ts.map +1 -1
  68. package/dist/daemon/approvalStore.js +4 -3
  69. package/dist/daemon/approvalStore.js.map +1 -1
  70. package/dist/daemon/inProcessClient.js +2 -2
  71. package/dist/daemon/lifecycle.d.ts +4 -1
  72. package/dist/daemon/lifecycle.d.ts.map +1 -1
  73. package/dist/daemon/lifecycle.js +1 -1
  74. package/dist/daemon/lifecycle.js.map +1 -1
  75. package/dist/daemon/pipeClient.d.ts +2 -0
  76. package/dist/daemon/pipeClient.d.ts.map +1 -1
  77. package/dist/daemon/pipeClient.js +26 -8
  78. package/dist/daemon/pipeClient.js.map +1 -1
  79. package/dist/daemon/pipeName.d.ts +3 -3
  80. package/dist/daemon/pipeName.d.ts.map +1 -1
  81. package/dist/daemon/pipeName.js +1 -2
  82. package/dist/daemon/pipeName.js.map +1 -1
  83. package/dist/daemon/pipeServer.js +3 -3
  84. package/dist/daemon/version.d.ts +1 -1
  85. package/dist/daemon/version.js +2 -2
  86. package/dist/dependencyInstaller.d.ts +2 -1
  87. package/dist/dependencyInstaller.d.ts.map +1 -1
  88. package/dist/dependencyInstaller.js +4 -4
  89. package/dist/dependencyInstaller.js.map +1 -1
  90. package/dist/git/gitCommitResolver.d.ts +2 -1
  91. package/dist/git/gitCommitResolver.d.ts.map +1 -1
  92. package/dist/git/gitCommitResolver.js +8 -8
  93. package/dist/git/gitCommitResolver.js.map +1 -1
  94. package/dist/git/gitIndexResolver.d.ts +2 -1
  95. package/dist/git/gitIndexResolver.d.ts.map +1 -1
  96. package/dist/git/gitIndexResolver.js +7 -7
  97. package/dist/git/gitIndexResolver.js.map +1 -1
  98. package/dist/git/gitService.d.ts +5 -4
  99. package/dist/git/gitService.d.ts.map +1 -1
  100. package/dist/git/gitService.js.map +1 -1
  101. package/dist/git/gitUtils.d.ts +6 -5
  102. package/dist/git/gitUtils.d.ts.map +1 -1
  103. package/dist/git/gitUtils.js +5 -4
  104. package/dist/git/gitUtils.js.map +1 -1
  105. package/dist/git/gitWorktreeManager.d.ts +15 -14
  106. package/dist/git/gitWorktreeManager.d.ts.map +1 -1
  107. package/dist/git/gitWorktreeManager.js +10 -11
  108. package/dist/git/gitWorktreeManager.js.map +1 -1
  109. package/dist/git/testUtils.d.ts +2 -1
  110. package/dist/git/testUtils.d.ts.map +1 -1
  111. package/dist/index.js +10 -1
  112. package/dist/index.js.map +1 -1
  113. package/dist/js-component-explorer/packages/common/dist/explorerUrl.js +21 -0
  114. package/dist/js-component-explorer/packages/common/dist/explorerUrl.js.map +1 -0
  115. package/dist/js-component-explorer/packages/common/dist/renderManifest.js +67 -0
  116. package/dist/js-component-explorer/packages/common/dist/renderManifest.js.map +1 -0
  117. package/dist/js-component-explorer/packages/semver/dist/index.js.map +1 -0
  118. package/dist/{packages/simple-api/dist/chunk-3R7GHWBM.js → js-component-explorer/packages/simple-api/dist/chunk-FJ7AVNQE.js} +2 -1
  119. package/dist/js-component-explorer/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +1 -0
  120. package/dist/{packages/simple-api/dist/chunk-SGBCNXYH.js → js-component-explorer/packages/simple-api/dist/chunk-TTRCY65Z.js} +4 -1
  121. package/dist/js-component-explorer/packages/simple-api/dist/chunk-TTRCY65Z.js.map +1 -0
  122. package/dist/{packages/simple-api/dist/chunk-TAEFVNPN.js → js-component-explorer/packages/simple-api/dist/chunk-WNXMRXWV.js} +2 -1
  123. package/dist/js-component-explorer/packages/simple-api/dist/chunk-WNXMRXWV.js.map +1 -0
  124. package/dist/{packages → js-component-explorer/packages}/simple-api/dist/express.js +1 -1
  125. package/dist/js-component-explorer/packages/simple-api/dist/express.js.map +1 -0
  126. package/dist/manifest.schema.json +38 -16
  127. package/dist/mcp/DaemonAccessor.d.ts +22 -0
  128. package/dist/mcp/DaemonAccessor.d.ts.map +1 -0
  129. package/dist/mcp/McpServer.d.ts +4 -19
  130. package/dist/mcp/McpServer.d.ts.map +1 -1
  131. package/dist/mcp/McpServer.js +299 -305
  132. package/dist/mcp/McpServer.js.map +1 -1
  133. package/dist/path.d.ts +30 -0
  134. package/dist/path.d.ts.map +1 -0
  135. package/dist/path.js +78 -0
  136. package/dist/path.js.map +1 -0
  137. package/dist/processTree.d.ts +6 -1
  138. package/dist/processTree.d.ts.map +1 -1
  139. package/dist/processTree.js +48 -5
  140. package/dist/processTree.js.map +1 -1
  141. package/dist/renderManifest.js +1 -1
  142. package/dist/server/httpServer.d.ts +1 -1
  143. package/dist/server/httpServer.d.ts.map +1 -1
  144. package/dist/server/httpServer.js +4 -8
  145. package/dist/server/httpServer.js.map +1 -1
  146. package/dist/server/serverConfig.d.ts +23 -6
  147. package/dist/server/serverConfig.d.ts.map +1 -1
  148. package/dist/server/serverConfig.js +11 -18
  149. package/dist/server/serverConfig.js.map +1 -1
  150. package/dist/server/viteServer.d.ts +16 -1
  151. package/dist/server/viteServer.d.ts.map +1 -1
  152. package/dist/server/viteServer.js +86 -5
  153. package/dist/server/viteServer.js.map +1 -1
  154. package/dist/storage.d.ts +2 -1
  155. package/dist/storage.d.ts.map +1 -1
  156. package/dist/storage.js +1 -1
  157. package/dist/storage.js.map +1 -1
  158. package/dist/utils.d.ts +3 -30
  159. package/dist/utils.d.ts.map +1 -1
  160. package/dist/utils.js +4 -24
  161. package/dist/utils.js.map +1 -1
  162. package/dist/visualCache.d.ts +2 -1
  163. package/dist/visualCache.d.ts.map +1 -1
  164. package/dist/visualCache.js +4 -3
  165. package/dist/visualCache.js.map +1 -1
  166. package/dist/viteProjectRef.d.ts +4 -12
  167. package/dist/viteProjectRef.d.ts.map +1 -1
  168. package/dist/viteProjectRef.js +9 -17
  169. package/dist/viteProjectRef.js.map +1 -1
  170. package/dist/vscode-observables/observables/dist/disposables.js.map +1 -0
  171. package/dist/vscode-observables/observables/dist/observableInternal/base.js.map +1 -0
  172. package/dist/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -0
  173. package/dist/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -0
  174. package/dist/vscode-observables/observables/dist/observableInternal/debugName.js.map +1 -0
  175. package/dist/vscode-observables/observables/dist/observableInternal/index.js.map +1 -0
  176. package/dist/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -0
  177. package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/debugGetDependencyGraph.js +1 -1
  178. package/dist/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +1 -0
  179. package/dist/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +1 -0
  180. package/dist/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -0
  181. package/dist/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -0
  182. package/dist/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +1 -0
  183. package/dist/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +1 -0
  184. package/dist/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +1 -0
  185. package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js → vscode-observables/observables/dist/observableInternal/reactions/createEffect.js} +9 -5
  186. package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffect.js.map +1 -0
  187. package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js → vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js} +1 -1
  188. package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js.map +1 -0
  189. package/dist/vscode-observables/observables/dist/observableInternal/transaction.js.map +1 -0
  190. package/dist/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +1 -0
  191. package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/utils/utilsCancellation.js +2 -2
  192. package/dist/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
  193. package/package.json +21 -20
  194. package/dist/commands/artifactCommand.d.ts +0 -14
  195. package/dist/commands/artifactCommand.d.ts.map +0 -1
  196. package/dist/external/vscode-observables/observables/dist/disposables.js.map +0 -1
  197. package/dist/external/vscode-observables/observables/dist/observableInternal/base.js.map +0 -1
  198. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +0 -1
  199. package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +0 -1
  200. package/dist/external/vscode-observables/observables/dist/observableInternal/debugName.js.map +0 -1
  201. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +0 -1
  202. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +0 -1
  203. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +0 -1
  204. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +0 -1
  205. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +0 -1
  206. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +0 -1
  207. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +0 -1
  208. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +0 -1
  209. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +0 -1
  210. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js.map +0 -1
  211. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js.map +0 -1
  212. package/dist/external/vscode-observables/observables/dist/observableInternal/transaction.js.map +0 -1
  213. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +0 -1
  214. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +0 -1
  215. package/dist/packages/common/dist/renderManifest.js +0 -46
  216. package/dist/packages/common/dist/renderManifest.js.map +0 -1
  217. package/dist/packages/semver/dist/index.js.map +0 -1
  218. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +0 -1
  219. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +0 -1
  220. package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js.map +0 -1
  221. package/dist/packages/simple-api/dist/express.js.map +0 -1
  222. /package/dist/{packages → js-component-explorer/packages}/semver/dist/index.js +0 -0
  223. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/disposables.js +0 -0
  224. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/base.js +0 -0
  225. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/commonFacade/deps.js +0 -0
  226. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/debugLocation.js +0 -0
  227. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/debugName.js +0 -0
  228. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/index.js +0 -0
  229. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/consoleObservableLogger.js +0 -0
  230. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/logging.js +0 -0
  231. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/baseObservable.js +0 -0
  232. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/derived.js +0 -0
  233. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/derivedImpl.js +0 -0
  234. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/observableFromEvent.js +0 -0
  235. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/observableValue.js +0 -0
  236. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/transaction.js +0 -0
  237. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/utils/utils.js +0 -0
@@ -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"}
@@ -9,7 +9,6 @@ class ViteComponentExplorerHttpServer {
9
9
  onSourceChange;
10
10
  static async create(project, options) {
11
11
  const log = options?.logger ?? nullLogger;
12
- const resolveViteFrom = options?.resolveViteFrom;
13
12
  const hmrAllowedPaths = options?.hmrAllowedPaths;
14
13
  const daemonConfig = options?.daemonConfig;
15
14
  // Import Vite from the target project's node_modules, not ours.
@@ -24,10 +23,9 @@ class ViteComponentExplorerHttpServer {
24
23
  // We always use createRequire because import.meta.resolve's second
25
24
  // argument is ignored in some Node.js versions (it resolves from
26
25
  // the calling file instead of the specified parentUrl).
27
- const resolveFrom = resolveViteFrom ?? project.configFile ?? project.cwd;
26
+ const resolveFrom = (project.configFile ?? project.cwd).value;
28
27
  const parentUrl = pathToFileURL(resolveFrom).href;
29
28
  log.debug(`Resolving vite from: ${resolveFrom} (parentUrl: ${parentUrl})`);
30
- log.debug(` resolveViteFrom=${resolveViteFrom}`);
31
29
  log.debug(` project.configFile=${project.configFile}`);
32
30
  log.debug(` project.cwd=${project.cwd}`);
33
31
  let viteUrl;
@@ -57,7 +55,7 @@ class ViteComponentExplorerHttpServer {
57
55
  // takes precedence over the config file, which would break configs
58
56
  // that set their own `root` (e.g. `root: '../..'`).
59
57
  const prevCwd = process.cwd();
60
- process.chdir(project.cwd);
58
+ process.chdir(project.cwd.value);
61
59
  const plugins = [];
62
60
  if (daemonConfig) {
63
61
  plugins.push({
@@ -81,10 +79,29 @@ class ViteComponentExplorerHttpServer {
81
79
  },
82
80
  });
83
81
  }
82
+ if (options?.istanbulCoverage) {
83
+ // vite-plugin-istanbul is dynamically imported from the CLI's own
84
+ // node_modules. The plugin is consumed by the user's Vite instance
85
+ // (resolved separately above) but the plugin source itself is portable.
86
+ log.debug(`Injecting vite-plugin-istanbul (include=${options.istanbulCoverage.include.join(',')}, exclude=${options.istanbulCoverage.exclude.join(',')})`);
87
+ const istanbulMod = await import('vite-plugin-istanbul');
88
+ const istanbulPlugin = istanbulMod.default({
89
+ include: [...options.istanbulCoverage.include],
90
+ exclude: [...options.istanbulCoverage.exclude],
91
+ extension: ['.js', '.ts', '.jsx', '.tsx', '.mjs', '.cjs'],
92
+ requireEnv: false,
93
+ forceBuildInstrument: false,
94
+ });
95
+ plugins.push(istanbulPlugin);
96
+ }
97
+ if (options?.cssSourceUrl) {
98
+ log.debug('Injecting CSS sourceURL plugin (for Playwright CSS coverage)');
99
+ plugins.push(createCssSourceUrlPlugin(log));
100
+ }
84
101
  let server;
85
102
  try {
86
103
  server = await createServer({
87
- configFile: project.configFile,
104
+ configFile: project.configFile?.value,
88
105
  server: { port: 0, strictPort: false },
89
106
  customLogger,
90
107
  clearScreen: false,
@@ -121,6 +138,70 @@ function globToRegExp(glob) {
121
138
  .replace(/\?/g, '.');
122
139
  return new RegExp(`(?:^|/)${escaped}$`);
123
140
  }
141
+ const CSS_EXT_RE = /\.(css|scss|sass|less|styl|stylus|pcss|postcss|sss)(\?|$)/;
142
+ /**
143
+ * Vite's CSS transform emits JS like:
144
+ *
145
+ * import { updateStyle as __vite__updateStyle, ... } from "/@vite/client"
146
+ * const __vite__id = "/abs/path/foo.css"
147
+ * const __vite__css = "...css text..."
148
+ * __vite__updateStyle(__vite__id, __vite__css)
149
+ *
150
+ * `__vite__updateStyle` creates a `<style>` tag with `data-vite-dev-id` but
151
+ * does NOT add a `/*# sourceURL=… *\/` annotation, so Chrome treats the
152
+ * stylesheet as anonymous. Playwright's CSS coverage drops anonymous
153
+ * stylesheets in `crCoverage.ts`, making such CSS invisible to coverage.
154
+ *
155
+ * This plugin appends `\n/*# sourceURL=<id> *\/` to the CSS string literal
156
+ * inside the transformed module, so DevTools (and Playwright) attribute the
157
+ * `<style>` tag back to the source file.
158
+ */
159
+ function createCssSourceUrlPlugin(log) {
160
+ let projectRoot = '';
161
+ return {
162
+ name: 'component-explorer-css-source-url',
163
+ enforce: 'post',
164
+ configResolved(config) {
165
+ projectRoot = config.root;
166
+ },
167
+ transform(code, id) {
168
+ if (!CSS_EXT_RE.test(id)) {
169
+ return;
170
+ }
171
+ if (!code.includes('__vite__updateStyle')) {
172
+ return;
173
+ }
174
+ // Match: const __vite__css = "..."
175
+ // The CSS payload is JSON-encoded by Vite (so all newlines are \n,
176
+ // quotes escaped). We re-decode → append annotation → re-encode.
177
+ const re = /(const\s+__vite__css\s*=\s*)("(?:[^"\\]|\\.)*")/;
178
+ const match = re.exec(code);
179
+ if (!match) {
180
+ log.trace(`css-source-url: no __vite__css literal in ${id}`);
181
+ return;
182
+ }
183
+ const cleanId = id.split('?')[0];
184
+ const relUrl = projectRoot
185
+ ? '/' + cleanId.slice(projectRoot.length).replace(/^[\\/]+/, '').replace(/\\/g, '/')
186
+ : cleanId;
187
+ let css;
188
+ try {
189
+ css = JSON.parse(match[2]);
190
+ }
191
+ catch {
192
+ return;
193
+ }
194
+ // Idempotent: don't double-annotate on HMR re-transforms.
195
+ if (css.includes('# sourceURL=')) {
196
+ return;
197
+ }
198
+ const annotated = css + `\n/*# sourceURL=${relUrl} */\n`;
199
+ const newLiteral = JSON.stringify(annotated);
200
+ const patched = code.slice(0, match.index) + match[1] + newLiteral + code.slice(match.index + match[0].length);
201
+ return { code: patched, map: null };
202
+ },
203
+ };
204
+ }
124
205
 
125
206
  export { createViteServer };
126
207
  //# sourceMappingURL=viteServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viteServer.js","sources":["../../src/server/viteServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viteServer.js","sources":["../../src/server/viteServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/storage.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { AbsolutePath } from './path.js';
1
2
  export interface Storage {
2
3
  write(filePath: string, data: Uint8Array): Promise<void>;
3
4
  read(filePath: string): Promise<Uint8Array>;
@@ -7,7 +8,7 @@ export interface Storage {
7
8
  }
8
9
  export declare class FileSystemStorage implements Storage {
9
10
  private readonly _rootDir;
10
- constructor(_rootDir: string);
11
+ constructor(_rootDir: AbsolutePath);
11
12
  private _resolve;
12
13
  write(filePath: string, data: Uint8Array): Promise<void>;
13
14
  read(filePath: string): Promise<Uint8Array>;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,OAAO;IACvB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,qBAAa,iBAAkB,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAE7C,OAAO,CAAC,QAAQ;IAIV,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI3C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBvC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO7C"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,WAAW,OAAO;IACvB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,qBAAa,iBAAkB,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAEnD,OAAO,CAAC,QAAQ;IAIV,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI3C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBvC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO7C"}
package/dist/storage.js CHANGED
@@ -7,7 +7,7 @@ class FileSystemStorage {
7
7
  this._rootDir = _rootDir;
8
8
  }
9
9
  _resolve(filePath) {
10
- return path.join(this._rootDir, ...filePath.split('/'));
10
+ return path.join(this._rootDir.value, ...filePath.split('/'));
11
11
  }
12
12
  async write(filePath, data) {
13
13
  const fullPath = this._resolve(filePath);
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sources":["../src/storage.ts"],"sourcesContent":[null],"names":[],"mappings":";;;MAWa,iBAAiB,CAAA;AACA,IAAA,QAAA;AAA7B,IAAA,WAAA,CAA6B,QAAgB,EAAA;QAAhB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAW;AAExC,IAAA,QAAQ,CAAC,QAAgB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD;AAEA,IAAA,MAAM,KAAK,CAAC,QAAgB,EAAE,IAAgB,EAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxC,QAAA,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;IACnC;IAEA,MAAM,IAAI,CAAC,QAAgB,EAAA;AAC1B,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE;IAEA,MAAM,MAAM,CAAC,QAAgB,EAAA;AAC5B,QAAA,IAAI;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxC,YAAA,OAAO,IAAI;QACZ;AAAE,QAAA,MAAM;AACP,YAAA,OAAO,KAAK;QACb;IACD;IAEA,MAAM,IAAI,CAAC,MAAc,EAAA;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI;AACH,YAAA,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAa,EAAE;AAC5B,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;gBACvC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7D;YACD;AACA,YAAA,OAAO,OAAO;QACf;AAAE,QAAA,MAAM;AACP,YAAA,OAAO,EAAE;QACV;IACD;IAEA,MAAM,MAAM,CAAC,QAAgB,EAAA;AAC5B,QAAA,IAAI;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC;AAAE,QAAA,MAAM;;QAER;IACD;AACA;;;;"}
1
+ {"version":3,"file":"storage.js","sources":["../src/storage.ts"],"sourcesContent":[null],"names":[],"mappings":";;;MAYa,iBAAiB,CAAA;AACA,IAAA,QAAA;AAA7B,IAAA,WAAA,CAA6B,QAAsB,EAAA;QAAtB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAkB;AAE/C,IAAA,QAAQ,CAAC,QAAgB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9D;AAEA,IAAA,MAAM,KAAK,CAAC,QAAgB,EAAE,IAAgB,EAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxC,QAAA,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;IACnC;IAEA,MAAM,IAAI,CAAC,QAAgB,EAAA;AAC1B,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE;IAEA,MAAM,MAAM,CAAC,QAAgB,EAAA;AAC5B,QAAA,IAAI;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxC,YAAA,OAAO,IAAI;QACZ;AAAE,QAAA,MAAM;AACP,YAAA,OAAO,KAAK;QACb;IACD;IAEA,MAAM,IAAI,CAAC,MAAc,EAAA;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI;AACH,YAAA,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAa,EAAE;AAC5B,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;gBACvC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7D;YACD;AACA,YAAA,OAAO,OAAO;QACf;AAAE,QAAA,MAAM;AACP,YAAA,OAAO,EAAE;QACV;IACD;IAEA,MAAM,MAAM,CAAC,QAAgB,EAAA;AAC5B,QAAA,IAAI;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC;AAAE,QAAA,MAAM;;QAER;IACD;AACA;;;;"}
package/dist/utils.d.ts CHANGED
@@ -1,36 +1,9 @@
1
- export type ExplorerMode = 'headless' | 'embedded';
2
- export interface ExplorerQueryParams {
3
- readonly mode?: ExplorerMode;
4
- readonly fixture?: string;
5
- readonly file?: string;
6
- readonly report?: string;
7
- }
1
+ import { AbsolutePath } from './path.js';
8
2
  /**
9
3
  * The default route path for the Component Explorer.
10
4
  * Must match the default in vite-plugin.
11
5
  */
12
6
  export declare const EXPLORER_ROUTE = "/___explorer";
13
- export interface ExplorerUrlOptions {
14
- /** Base URL of the server (e.g. 'http://localhost:5173') */
15
- readonly baseUrl: string;
16
- /**
17
- * Explicit mode for the explorer URL:
18
- * - 'headless': for API/screenshot operations (no UI)
19
- * - 'embedded': single fixture view for user inspection
20
- * - undefined: full Explorer UI
21
- */
22
- readonly mode?: 'headless' | 'embedded';
23
- /** Specific fixture to render (required for 'headless' and 'embedded' modes) */
24
- readonly fixtureId?: string;
25
- }
26
- /**
27
- * Builds a URL for the Component Explorer.
28
- * - Default: Explorer UI at `/___explorer` (with optional `fixture=<id>` to pre-select)
29
- * - mode='embedded': `/___explorer?mode=embedded&fixture=<id>` (user-facing single fixture view)
30
- * - mode='headless': `/___explorer?mode=headless&fixture=<id>` (API/screenshot operations)
31
- */
32
- export declare function buildExplorerUrl(options: ExplorerUrlOptions): string;
33
- export declare function writeFile(filePath: string, data: Uint8Array): Promise<void>;
34
- export declare function matchGlob(fixtureId: string, pattern: string): boolean;
35
- export declare function listPngFiles(dir: string): Promise<string[]>;
7
+ export declare function writeFile(filePath: AbsolutePath, data: Uint8Array): Promise<void>;
8
+ export declare function listPngFiles(dir: AbsolutePath): Promise<string[]>;
36
9
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACxC,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAWpE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAKrE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAajE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,wBAAsB,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvF;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAavE"}
package/dist/utils.js CHANGED
@@ -6,33 +6,13 @@ import * as path from 'node:path';
6
6
  * Must match the default in vite-plugin.
7
7
  */
8
8
  const EXPLORER_ROUTE = '/___explorer';
9
- /**
10
- * Builds a URL for the Component Explorer.
11
- * - Default: Explorer UI at `/___explorer` (with optional `fixture=<id>` to pre-select)
12
- * - mode='embedded': `/___explorer?mode=embedded&fixture=<id>` (user-facing single fixture view)
13
- * - mode='headless': `/___explorer?mode=headless&fixture=<id>` (API/screenshot operations)
14
- */
15
- function buildExplorerUrl(options) {
16
- const base = `${options.baseUrl}${EXPLORER_ROUTE}`;
17
- const query = {
18
- mode: options.mode,
19
- fixture: options.fixtureId,
20
- };
21
- const params = new URLSearchParams(Object.entries(query).filter((entry) => entry[1] !== undefined));
22
- const queryString = params.toString();
23
- return queryString ? `${base}?${queryString}` : base;
24
- }
25
9
  async function writeFile(filePath, data) {
26
- await fs.mkdir(path.dirname(filePath), { recursive: true });
27
- await fs.writeFile(filePath, data);
28
- }
29
- function matchGlob(fixtureId, pattern) {
30
- const regex = new RegExp('^' + pattern.replace(/\*/g, '.*').replace(/\?/g, '.') + '$');
31
- return regex.test(fixtureId);
10
+ await fs.mkdir(path.dirname(filePath.value), { recursive: true });
11
+ await fs.writeFile(filePath.value, data);
32
12
  }
33
13
  async function listPngFiles(dir) {
34
14
  try {
35
- const entries = await fs.readdir(dir, { recursive: true });
15
+ const entries = await fs.readdir(dir.value, { recursive: true });
36
16
  const results = [];
37
17
  for (const entry of entries) {
38
18
  if (entry.endsWith('.png')) {
@@ -46,5 +26,5 @@ async function listPngFiles(dir) {
46
26
  }
47
27
  }
48
28
 
49
- export { EXPLORER_ROUTE, buildExplorerUrl, listPngFiles, matchGlob, writeFile };
29
+ export { EXPLORER_ROUTE, listPngFiles, writeFile };
50
30
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAYA;;;AAGG;AACI,MAAM,cAAc,GAAG;AAgB9B;;;;;AAKG;AACG,SAAU,gBAAgB,CAAC,OAA2B,EAAA;IAC3D,MAAM,IAAI,GAAG,CAAA,EAAG,OAAO,CAAC,OAAO,CAAA,EAAG,cAAc,CAAA,CAAE;AAClD,IAAA,MAAM,KAAK,GAAwB;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,SAAS;KAC1B;IACD,MAAM,MAAM,GAAG,IAAI,eAAe,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAgC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAC1F;AACD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE;AACrC,IAAA,OAAO,WAAW,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,IAAI;AACrD;AAEO,eAAe,SAAS,CAAC,QAAgB,EAAE,IAAgB,EAAA;AACjE,IAAA,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACnC;AAEM,SAAU,SAAS,CAAC,SAAiB,EAAE,OAAe,EAAA;IAC3D,MAAM,KAAK,GAAG,IAAI,MAAM,CACvB,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAC5D;AACD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B;AAEO,eAAe,YAAY,CAAC,GAAW,EAAA;AAC7C,IAAA,IAAI;AACH,QAAA,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9C;QACD;AACA,QAAA,OAAO,OAAO;IACf;AAAE,IAAA,MAAM;AACP,QAAA,OAAO,EAAE;IACV;AACD;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIA;;;AAGG;AACI,MAAM,cAAc,GAAG;AAEvB,eAAe,SAAS,CAAC,QAAsB,EAAE,IAAgB,EAAA;AACvE,IAAA,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACjE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;AACzC;AAEO,eAAe,YAAY,CAAC,GAAiB,EAAA;AACnD,IAAA,IAAI;AACH,QAAA,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAChE,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9C;QACD;AACA,QAAA,OAAO,OAAO;IACf;AAAE,IAAA,MAAM;AACP,QAAA,OAAO,EAAE;IACV;AACD;;;;"}
@@ -1,3 +1,4 @@
1
+ import { AbsolutePath } from './path.js';
1
2
  export interface VisualCacheEntry {
2
3
  readonly expectedVisualDescriptions: readonly string[];
3
4
  readonly screenshotHash: string;
@@ -19,7 +20,7 @@ export type VisualReviewStatus = 'no-expectations' | {
19
20
  export declare class VisualCache {
20
21
  private readonly _filePath;
21
22
  private _data;
22
- constructor(_filePath: string);
23
+ constructor(_filePath: AbsolutePath);
23
24
  /**
24
25
  * Look up the review status for a fixture given its current descriptions and screenshot hash.
25
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"visualCache.d.ts","sourceRoot":"","sources":["../src/visualCache.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,0BAA0B,EAAE,SAAS,MAAM,EAAE,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;CACtD;AAED,MAAM,MAAM,kBAAkB,GAC3B,iBAAiB,GACjB;IACD,0BAA0B,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,MAAM,EAAE,UAAU,GAAG,cAAc,CAAC;IACpC,QAAQ,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD,CAAC;AAEH,qBAAa,WAAW;IAGX,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,KAAK,CAAkB;gBAEF,SAAS,EAAE,MAAM;IAI9C;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,0BAA0B,EAAE,SAAS,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,kBAAkB;IAyB7H;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,0BAA0B,EAAE,SAAS,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA8BxH,OAAO,CAAC,KAAK;IAab,OAAO,CAAC,KAAK;CAKb"}
1
+ {"version":3,"file":"visualCache.d.ts","sourceRoot":"","sources":["../src/visualCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,0BAA0B,EAAE,SAAS,MAAM,EAAE,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;CACtD;AAED,MAAM,MAAM,kBAAkB,GAC3B,iBAAiB,GACjB;IACD,0BAA0B,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,MAAM,EAAE,UAAU,GAAG,cAAc,CAAC;IACpC,QAAQ,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD,CAAC;AAEH,qBAAa,WAAW;IAGX,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,KAAK,CAAkB;gBAEF,SAAS,EAAE,YAAY;IAIpD;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,0BAA0B,EAAE,SAAS,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,kBAAkB;IAyB7H;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,0BAA0B,EAAE,SAAS,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA8BxH,OAAO,CAAC,KAAK;IAab,OAAO,CAAC,KAAK;CAKb"}
@@ -1,4 +1,5 @@
1
1
  import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
2
3
 
3
4
  const MAX_ENTRIES_PER_FIXTURE = 5;
4
5
  class VisualCache {
@@ -59,7 +60,7 @@ class VisualCache {
59
60
  }
60
61
  _load() {
61
62
  try {
62
- const raw = fs.readFileSync(this._filePath, 'utf-8');
63
+ const raw = fs.readFileSync(this._filePath.value, 'utf-8');
63
64
  const parsed = JSON.parse(raw);
64
65
  if (parsed && parsed.version === 1 && typeof parsed.fixtures === 'object') {
65
66
  return parsed;
@@ -71,9 +72,9 @@ class VisualCache {
71
72
  return { version: 1, fixtures: {} };
72
73
  }
73
74
  _save() {
74
- const dir = this._filePath.replace(/[/\\][^/\\]+$/, '');
75
+ const dir = path.dirname(this._filePath.value);
75
76
  fs.mkdirSync(dir, { recursive: true });
76
- fs.writeFileSync(this._filePath, JSON.stringify(this._data, null, 2));
77
+ fs.writeFileSync(this._filePath.value, JSON.stringify(this._data, null, 2));
77
78
  }
78
79
  }
79
80
  function descriptionsEqual(a, b) {
@@ -1 +1 @@
1
- {"version":3,"file":"visualCache.js","sources":["../src/visualCache.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visualCache.js","sources":["../src/visualCache.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,22 +1,14 @@
1
+ import { AbsolutePath } from './path.js';
1
2
  /**
2
3
  * Immutable reference to a Vite-based component explorer project.
3
4
  * Encapsulates how to locate the project for Vite's `createServer`.
4
5
  */
5
6
  export declare class ViteProjectRef {
6
- /** Absolute directory to use as CWD when starting Vite. */
7
- readonly cwd: string;
8
- /**
9
- * Absolute path to the Vite config file, or `undefined` to let
10
- * Vite auto-discover it from `cwd`.
11
- */
12
- readonly configFile: string | undefined;
7
+ readonly cwd: AbsolutePath;
8
+ readonly configFile: AbsolutePath | undefined;
13
9
  private constructor();
14
- /** Create from a project root directory. Vite auto-discovers the config file. */
15
10
  static fromSourceRootDir(sourceRootDir: string): ViteProjectRef;
16
- /**
17
- * Create from an explicit Vite config file path.
18
- * CWD is derived as the config file's parent directory.
19
- */
20
11
  static fromViteConfigPath(viteConfigPath: string): ViteProjectRef;
12
+ rebase(currentRoot: AbsolutePath, newRoot: AbsolutePath): ViteProjectRef;
21
13
  }
22
14
  //# sourceMappingURL=viteProjectRef.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viteProjectRef.d.ts","sourceRoot":"","sources":["../src/viteProjectRef.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,cAAc;IAEzB,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS;IAPxC,OAAO;IAUP,iFAAiF;IACjF,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc;IAI/D;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc;CAIjE"}
1
+ {"version":3,"file":"viteProjectRef.d.ts","sourceRoot":"","sources":["../src/viteProjectRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;GAGG;AACH,qBAAa,cAAc;IAEzB,QAAQ,CAAC,GAAG,EAAE,YAAY;IAC1B,QAAQ,CAAC,UAAU,EAAE,YAAY,GAAG,SAAS;IAF9C,OAAO;IAKP,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc;IAK/D,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc;IAK1D,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc;CAM/E"}