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

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,22 +1,25 @@
1
1
  import { Command, Option } from 'clipanion';
2
2
  import * as path from 'node:path';
3
3
  import { createHash } from 'node:crypto';
4
- import '../external/vscode-observables/observables/dist/observableInternal/index.js';
5
- import { DisposableStore } from '../external/vscode-observables/observables/dist/disposables.js';
6
- import '../external/vscode-observables/observables/dist/observableInternal/debugLocation.js';
7
- import '../external/vscode-observables/observables/dist/observableInternal/observables/derived.js';
8
- import '../external/vscode-observables/observables/dist/observableInternal/utils/utils.js';
9
- import '../external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
4
+ import '../vscode-observables/observables/dist/observableInternal/index.js';
5
+ import { DisposableStore } from '../vscode-observables/observables/dist/disposables.js';
6
+ import '../vscode-observables/observables/dist/observableInternal/debugLocation.js';
7
+ import '../vscode-observables/observables/dist/observableInternal/observables/derived.js';
8
+ import '../vscode-observables/observables/dist/observableInternal/utils/utils.js';
9
+ import '../vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
10
10
  import { PlaywrightBrowserPageFactory } from '../browserPage.js';
11
11
  import { compareScreenshotsInMemory, printComparisonToConsole, writeComparisonReport } from '../comparison.js';
12
12
  import { ConsoleLogger, verbosityToLogLevel, createLogFileOptions, logBuildInfo } from '../logger.js';
13
- import { ResolvedConfig } from '../config.js';
13
+ import { ResolvedConfig, ResolvedCoverageConfig } from '../config.js';
14
+ import { AbsolutePath, RelativePath } from '../path.js';
14
15
  import { ExplorerSession } from '../explorerSession.js';
15
16
  import { FileSystemStorage } from '../storage.js';
16
- import { matchGlob, writeFile } from '../utils.js';
17
+ import { writeFile } from '../utils.js';
17
18
  import { getGitRoot, execGit } from '../git/gitUtils.js';
18
19
  import { serializeManifest } from '../renderManifest.js';
19
- import { MANIFEST_FILENAME } from '../packages/common/dist/renderManifest.js';
20
+ import { parseInputJson } from './inputArg.js';
21
+ import { validateIstanbulMap, v8EntriesToIstanbul, mergeIstanbul, cssEntriesToIstanbul, writeIstanbulFile } from '../coverage.js';
22
+ import { MANIFEST_FILENAME } from '../js-component-explorer/packages/common/dist/renderManifest.js';
20
23
 
21
24
  class RenderCommand extends Command {
22
25
  static paths = [['render']];
@@ -25,12 +28,12 @@ class RenderCommand extends Command {
25
28
  examples: [
26
29
  ['Render all fixtures', '$0 render'],
27
30
  ['Render and accept as baseline', '$0 render --accept'],
28
- ['Filter by glob', '$0 render --filter "Button/*"'],
31
+ ['Filter by fixture-id regex', '$0 render --fixture-id-regex "^Button/"'],
29
32
  ],
30
33
  });
31
34
  verbose = Option.Counter('-v,--verbose', 0, { description: 'Increase log verbosity (-v debug, -vv trace)' });
32
35
  logFile = Option.String('--log-file', { description: 'Append logs to this file (works with -v/-vv)' });
33
- filter = Option.String('--filter', { required: false, description: 'Filter fixtures by glob pattern' });
36
+ fixtureIdRegex = Option.String('--fixture-id-regex', { required: false, description: 'Filter fixtures whose fixtureId matches this regular expression (unanchored)' });
34
37
  accept = Option.Boolean('--accept', false, { description: 'Write to baseline instead of current (mutually exclusive with --target)' });
35
38
  project = Option.String('-p,--project', process.cwd(), { description: 'Project: a directory, vite config file, or component-explorer.json' });
36
39
  target = Option.String('--target', { required: false, description: 'Screenshot output directory (default: .screenshots/current, or .screenshots/baseline with --accept)' });
@@ -40,46 +43,150 @@ class RenderCommand extends Command {
40
43
  headed = Option.Boolean('--headed', false, { description: 'Show the browser window (useful for debugging)' });
41
44
  timeout = Option.String('--timeout', '30000', { description: 'Navigation timeout in milliseconds (default: 30000)' });
42
45
  useHashPaths = Option.Boolean('--useHashPaths', false, { description: 'Use content-hash image paths (images/<hash>.png) for deduplication instead of fixture-id paths' });
46
+ reloadBetweenFixtures = Option.Boolean('--reload-between-fixtures', false, { description: 'Reload the browser page between fixtures for cleaner isolation (slower)' });
47
+ input = Option.String('--input', { required: false, description: 'JSON object passed to every fixture as `RenderContext.input` (e.g. \'{"theme":"dark"}\'). Combine with `--input-<key> <value>` to override individual properties.' });
48
+ coverage = Option.Boolean('--coverage', false, { description: 'Collect code coverage during rendering. Output is written to <target>/<coverage-output>/' });
49
+ coverageMode = Option.String('--coverage-mode', { required: false, description: 'Coverage aggregation: "total" (one report for all fixtures, default) or "per-fixture" (one report per fixture; forces --reload-between-fixtures)' });
50
+ coverageJs = Option.String('--coverage-js', { required: false, description: 'JavaScript coverage strategy: "istanbul" (default; vite-plugin-istanbul), "v8" (Playwright V8 + v8-to-istanbul), or "off"' });
51
+ coverageCss = Option.Boolean('--coverage-css', false, { description: 'Also collect CSS coverage via Playwright (raw range data)' });
52
+ coverageOutput = Option.String('--coverage-output', { required: false, description: 'Coverage output directory, relative to --target (default: "coverage")' });
43
53
  async execute() {
44
54
  // Validate mutually exclusive options
45
55
  if (this.accept && this.target) {
46
56
  this.context.stderr.write('Error: --accept and --target are mutually exclusive.\n');
47
57
  return 1;
48
58
  }
59
+ let input;
60
+ try {
61
+ input = parseInputJson(this.input);
62
+ }
63
+ catch (e) {
64
+ this.context.stderr.write(`Error: ${e instanceof Error ? e.message : String(e)}\n`);
65
+ return 1;
66
+ }
49
67
  const logger = new ConsoleLogger('render', this.context.stdout, verbosityToLogLevel(this.verbose), createLogFileOptions(this.logFile, this.verbose));
50
68
  logBuildInfo(logger);
69
+ const projectPath = AbsolutePath.resolve(this.project);
51
70
  const disposables = new DisposableStore();
52
- const config = await ResolvedConfig.fromProjectPath(this.project, disposables);
71
+ const config = await ResolvedConfig.fromProjectPath(projectPath, disposables);
53
72
  const projectDir = config.configDir;
54
73
  const serverConfig = config.sessions[0].server;
74
+ // Resolve coverage settings — CLI flags override JSON config.
75
+ let coverage;
76
+ try {
77
+ coverage = this._resolveCoverage(config.coverage);
78
+ }
79
+ catch (e) {
80
+ this.context.stderr.write(`Error: ${e instanceof Error ? e.message : String(e)}\n`);
81
+ return 1;
82
+ }
83
+ if (coverage && coverage.js !== 'istanbul' && coverage.js !== 'v8' && !coverage.css) {
84
+ coverage = undefined;
85
+ }
86
+ // Per-fixture coverage requires page reload between fixtures so the
87
+ // `__coverage__` global / V8 sampler restarts cleanly each iteration.
88
+ const effectiveReloadBetween = this.reloadBetweenFixtures || (coverage?.mode === 'per-fixture' && coverage.enabled);
89
+ if (coverage?.mode === 'per-fixture' && !this.reloadBetweenFixtures) {
90
+ logger.debug('Coverage mode "per-fixture" implies reload-between-fixtures=true');
91
+ }
55
92
  // Determine target directory
56
93
  const defaultTarget = this.accept ? '.screenshots/baseline' : '.screenshots/current';
57
94
  const targetDir = this.target ?? defaultTarget;
58
- const targetPath = path.isAbsolute(targetDir) ? targetDir : path.join(projectDir, targetDir);
95
+ const targetPath = AbsolutePath.fromAbsoluteOrRelative(targetDir, { base: projectDir });
59
96
  // Determine compare target directory
60
97
  const defaultCompareTarget = this.accept ? '.screenshots/current' : '.screenshots/baseline';
61
98
  const compareTargetDir = this.compareTarget ?? defaultCompareTarget;
62
- const compareTargetPath = path.isAbsolute(compareTargetDir) ? compareTargetDir : path.join(projectDir, compareTargetDir);
99
+ const compareTargetPath = AbsolutePath.fromAbsoluteOrRelative(compareTargetDir, { base: projectDir });
63
100
  const storage = new FileSystemStorage(targetPath);
64
101
  const browserFactory = new PlaywrightBrowserPageFactory(this.headed, Number(this.timeout), logger);
65
102
  const screenshots = new Map();
66
103
  let session;
67
104
  try {
68
105
  this.context.stdout.write('Starting server...\n');
69
- session = await ExplorerSession.create('render', serverConfig, browserFactory, { logger });
106
+ const istanbulCoverage = coverage && coverage.js === 'istanbul'
107
+ ? { include: coverage.include, exclude: coverage.exclude }
108
+ : undefined;
109
+ if (istanbulCoverage && serverConfig.kind !== 'vite') {
110
+ this.context.stderr.write('Warning: --coverage-js=istanbul requires a Vite server; falling back to no JS coverage. Use --coverage-js=v8 for non-Vite servers.\n');
111
+ }
112
+ // Enable CSS sourceURL annotation when CSS coverage is requested.
113
+ // Without it, Vite's HMR-injected `<style>` tags are anonymous and
114
+ // Playwright's CSS coverage drops them.
115
+ const cssSourceUrl = coverage?.css === true && serverConfig.kind === 'vite';
116
+ session = await ExplorerSession.create('render', serverConfig, browserFactory, { logger, istanbulCoverage, cssSourceUrl });
70
117
  this.context.stdout.write(`Server running at ${session.serverUrl}\n`);
71
118
  const listResult = await session.explorer.listFixtures();
72
119
  if (listResult.loadError) {
73
120
  this.context.stderr.write(`Warning: Fixture loading error: ${listResult.loadError}\n`);
74
121
  }
75
- const filtered = this.filter
76
- ? listResult.fixtures.filter(f => matchGlob(f.fixtureId, this.filter))
77
- : listResult.fixtures;
122
+ let filtered;
123
+ if (this.fixtureIdRegex) {
124
+ let regex;
125
+ try {
126
+ regex = new RegExp(this.fixtureIdRegex);
127
+ }
128
+ catch (e) {
129
+ this.context.stderr.write(`Error: Invalid --fixture-id-regex: ${e instanceof Error ? e.message : String(e)}\n`);
130
+ return 1;
131
+ }
132
+ filtered = listResult.fixtures.filter(f => regex.test(f.fixtureId));
133
+ }
134
+ else {
135
+ filtered = listResult.fixtures;
136
+ }
78
137
  this.context.stdout.write(`Found ${filtered.length} fixture(s)\n`);
79
138
  const fixtureEntries = [];
80
139
  const writtenHashes = new Set();
81
- for (const fixture of filtered) {
82
- const result = await session.explorer.screenshotFixture(fixture.fixtureId);
140
+ // Coverage state
141
+ const useV8Js = coverage?.js === 'v8';
142
+ const useIstanbulJs = coverage?.js === 'istanbul' && serverConfig.kind === 'vite';
143
+ const useCss = coverage?.css === true;
144
+ const v8FilterInclude = useV8Js ? coverage.include.map(_globToRegExp) : undefined;
145
+ const v8FilterExclude = useV8Js ? coverage.exclude.map(_globToRegExp) : undefined;
146
+ const perFixtureMaps = [];
147
+ const totalMaps = [];
148
+ // Total mode: start coverage once before the loop. The BrowserPage
149
+ // snapshots active trackers automatically on every triggered reload
150
+ // (e.g. `reloadOnError`, `reloadBeforeRender`) and reapplies them on
151
+ // the new document, so callers get the union when they finally stop.
152
+ if (coverage && coverage.mode === 'total' && (useV8Js || useCss || useIstanbulJs)) {
153
+ const page = await session.explorer.getOrOpenPage();
154
+ if (useV8Js) {
155
+ await page.startJSCoverage({ resetOnNavigation: false });
156
+ }
157
+ if (useCss) {
158
+ await page.startCSSCoverage({ resetOnNavigation: false });
159
+ }
160
+ if (useIstanbulJs) {
161
+ page.startIstanbulSnapshot();
162
+ }
163
+ }
164
+ for (let i = 0; i < filtered.length; i++) {
165
+ const fixture = filtered[i];
166
+ // For per-fixture coverage we reload BEFORE rendering, then start
167
+ // V8/CSS coverage on the fresh page so each fixture is isolated.
168
+ const reloadBeforeRender = effectiveReloadBetween && i > 0;
169
+ if (coverage && coverage.mode === 'per-fixture' && (useV8Js || useCss)) {
170
+ const page = await session.explorer.getOrOpenPage();
171
+ // Reload first (mirrors what screenshotFixture would have done) so
172
+ // that __coverage__ resets and the V8 sampler starts on a clean page.
173
+ if (reloadBeforeRender) {
174
+ await page.reload();
175
+ }
176
+ if (useV8Js) {
177
+ await page.startJSCoverage({ resetOnNavigation: false });
178
+ }
179
+ if (useCss) {
180
+ await page.startCSSCoverage({ resetOnNavigation: false });
181
+ }
182
+ }
183
+ const result = await session.explorer.screenshotFixture(fixture.fixtureId, {
184
+ reloadOnError: true,
185
+ // We already handled the reload manually above for per-fixture coverage.
186
+ reloadBeforeRender: coverage?.mode === 'per-fixture' && (useV8Js || useCss) ? false : reloadBeforeRender,
187
+ input,
188
+ disposeAfter: true,
189
+ });
83
190
  let imageHash;
84
191
  let imagePath;
85
192
  if (result.image) {
@@ -97,6 +204,22 @@ class RenderCommand extends Command {
97
204
  }
98
205
  screenshots.set(fixture.fixtureId, { data: result.image, background: fixture.background, labels: fixture.labels });
99
206
  }
207
+ const events = [];
208
+ for (const e of result.events) {
209
+ events.push({ ...e, phase: 'render', isError: e.type !== 'console.log' });
210
+ }
211
+ if (result.error) {
212
+ events.push({ type: 'thrownError', phase: 'render', isError: true, message: result.error.message, stack: result.error.stack });
213
+ }
214
+ if (result.currentDispose) {
215
+ for (const e of result.currentDispose.events) {
216
+ events.push({ ...e, phase: 'dispose', isError: e.type !== 'console.log' });
217
+ }
218
+ for (const err of result.currentDispose.errors) {
219
+ events.push({ type: 'thrownError', phase: 'dispose', isError: true, message: err.message, stack: err.stack });
220
+ }
221
+ }
222
+ const hasError = events.some(e => e.isError);
100
223
  fixtureEntries.push({
101
224
  fixtureId: fixture.fixtureId,
102
225
  imageHash,
@@ -104,31 +227,149 @@ class RenderCommand extends Command {
104
227
  background: fixture.background,
105
228
  labels: [...fixture.labels],
106
229
  expectedVisualDescriptions: [...fixture.expectedVisualDescriptions],
107
- hasError: result.hasError,
108
- error: result.error,
109
- events: result.events,
230
+ hasError,
231
+ events,
110
232
  renderTimeMs: result.renderTimeMs,
233
+ ...(result.output !== undefined ? { output: result.output } : {}),
111
234
  });
112
235
  if (!result.image) {
113
236
  this.context.stderr.write(` ✗ ${fixture.fixtureId} (no screenshot)\n`);
114
237
  }
115
- else if (result.hasError) {
116
- this.context.stdout.write(` ⚠ ${fixture.fixtureId} (rendered with errors)\n`);
238
+ else if (hasError) {
239
+ const firstError = events.find(e => e.isError);
240
+ const errorLine = firstError ? firstError.message.split('\n')[0].slice(0, 200) : 'unknown error';
241
+ this.context.stdout.write(` ⚠ ${fixture.fixtureId} (error: ${errorLine})\n`);
117
242
  }
118
243
  else {
119
244
  this.context.stdout.write(` ✓ ${fixture.fixtureId}\n`);
120
245
  }
246
+ // Per-fixture coverage: collect after each fixture renders.
247
+ if (coverage && coverage.mode === 'per-fixture' && (useV8Js || useIstanbulJs || useCss)) {
248
+ const page = await session.explorer.getOrOpenPage();
249
+ let map = {};
250
+ if (useIstanbulJs) {
251
+ const raw = await page.evaluateJs('window.__coverage__ ?? null');
252
+ map = validateIstanbulMap(raw, logger);
253
+ }
254
+ if (useV8Js) {
255
+ const v8 = await page.stopJSCoverage();
256
+ const v8Map = await v8EntriesToIstanbul(v8, {
257
+ viteServerUrl: session.serverUrl,
258
+ projectRoot: projectDir,
259
+ logger,
260
+ include: v8FilterInclude,
261
+ exclude: v8FilterExclude,
262
+ });
263
+ map = mergeIstanbul([map, v8Map]);
264
+ }
265
+ if (useCss) {
266
+ const css = await page.stopCSSCoverage();
267
+ const cssMap = cssEntriesToIstanbul(css, {
268
+ viteServerUrl: session.serverUrl,
269
+ projectRoot: projectDir,
270
+ logger,
271
+ });
272
+ map = mergeIstanbul([map, cssMap]);
273
+ }
274
+ perFixtureMaps.push({ fixtureId: fixture.fixtureId, map });
275
+ }
276
+ }
277
+ // Total mode: collect once at the end. Reload-triggered snapshotting
278
+ // is handled inside `BrowserPage.reload()`, which preserves coverage
279
+ // data across our explicit reloads (e.g. `reloadOnError`,
280
+ // `reloadBeforeRender`). Reloads we don't trigger (e.g. Vite's
281
+ // "optimized dependencies changed") are not handled — for now we
282
+ // accept losing data from before such navigations.
283
+ if (coverage && coverage.mode === 'total' && (useV8Js || useIstanbulJs || useCss)) {
284
+ const page = await session.explorer.getOrOpenPage();
285
+ if (useIstanbulJs) {
286
+ const raw = await page.evaluateJs('window.__coverage__ ?? null');
287
+ totalMaps.push(validateIstanbulMap(raw, logger));
288
+ // Plus any pre-reload snapshots collected during the run.
289
+ for (const snap of page.stopIstanbulSnapshot()) {
290
+ totalMaps.push(validateIstanbulMap(snap, logger));
291
+ }
292
+ }
293
+ if (useV8Js) {
294
+ const v8 = await page.stopJSCoverage();
295
+ totalMaps.push(await v8EntriesToIstanbul(v8, {
296
+ viteServerUrl: session.serverUrl,
297
+ projectRoot: projectDir,
298
+ logger,
299
+ include: v8FilterInclude,
300
+ exclude: v8FilterExclude,
301
+ }));
302
+ }
303
+ if (useCss) {
304
+ const css = await page.stopCSSCoverage();
305
+ totalMaps.push(cssEntriesToIstanbul(css, {
306
+ viteServerUrl: session.serverUrl,
307
+ projectRoot: projectDir,
308
+ logger,
309
+ }));
310
+ }
121
311
  }
122
312
  const gitRoot = await getGitRoot(projectDir);
123
313
  const commitMetadata = await collectGitMetadata(gitRoot);
124
314
  const repoOrigin = await getRepoOwnerAndName(gitRoot);
315
+ // Write coverage output(s) BEFORE the manifest so we can reference
316
+ // each emitted file from the manifest by relative path.
317
+ let topLevelCoverage;
318
+ const perFixtureCoverageRef = new Map();
319
+ if (coverage && coverage.enabled) {
320
+ const coverageDir = AbsolutePath.fromAbsoluteOrRelative(coverage.outputDir, { base: targetPath });
321
+ const toManifestRelative = (absPath) => {
322
+ const rel = path.relative(targetPath.value, absPath.value).split(path.sep).join('/');
323
+ return rel.startsWith('.') ? rel : './' + rel;
324
+ };
325
+ if (coverage.mode === 'per-fixture') {
326
+ for (const { fixtureId, map } of perFixtureMaps) {
327
+ if (Object.keys(map).length === 0) {
328
+ continue;
329
+ }
330
+ const safeId = fixtureId.replace(/[/\\:*?"<>|]/g, '_');
331
+ const outPath = coverageDir.join(new RelativePath(`${safeId}.coverage.json`));
332
+ await writeIstanbulFile(outPath, map);
333
+ perFixtureCoverageRef.set(fixtureId, {
334
+ coverageDataIstanbul: toManifestRelative(outPath),
335
+ });
336
+ }
337
+ // Aggregated total alongside per-fixture files.
338
+ const merged = mergeIstanbul(perFixtureMaps.map(p => p.map));
339
+ if (Object.keys(merged).length > 0) {
340
+ const totalPath = coverageDir.join(new RelativePath('coverage-final.json'));
341
+ await writeIstanbulFile(totalPath, merged);
342
+ topLevelCoverage = { coverageDataIstanbul: toManifestRelative(totalPath) };
343
+ }
344
+ this.context.stdout.write(` Coverage: ${perFixtureCoverageRef.size} per-fixture report(s) + total in ${path.relative(projectDir.value, coverageDir.value)}/\n`);
345
+ }
346
+ else {
347
+ const merged = mergeIstanbul(totalMaps);
348
+ if (Object.keys(merged).length > 0) {
349
+ const totalPath = coverageDir.join(new RelativePath('coverage-final.json'));
350
+ await writeIstanbulFile(totalPath, merged);
351
+ topLevelCoverage = { coverageDataIstanbul: toManifestRelative(totalPath) };
352
+ }
353
+ this.context.stdout.write(` Coverage: ${path.relative(projectDir.value, coverageDir.value)}/\n`);
354
+ }
355
+ }
356
+ // Attach per-fixture coverage refs to manifest entries (per-fixture mode only).
357
+ if (perFixtureCoverageRef.size > 0) {
358
+ for (const entry of fixtureEntries) {
359
+ const ref = perFixtureCoverageRef.get(entry.fixtureId);
360
+ if (ref) {
361
+ entry.coverage = ref;
362
+ }
363
+ }
364
+ }
125
365
  const manifest = {
126
366
  version: 1,
127
367
  repository: repoOrigin,
128
368
  commit: commitMetadata,
369
+ coverage: topLevelCoverage,
129
370
  fixtures: fixtureEntries,
130
371
  };
131
- const manifestPath = path.join(targetPath, MANIFEST_FILENAME);
372
+ const manifestPath = targetPath.join(new RelativePath(MANIFEST_FILENAME));
132
373
  await writeFile(manifestPath, Buffer.from(serializeManifest(manifest)));
133
374
  this.context.stdout.write(`\nRendered to ${targetDir}/\n`);
134
375
  this.context.stdout.write(` Manifest: ${manifestPath}\n`);
@@ -145,6 +386,40 @@ class RenderCommand extends Command {
145
386
  }
146
387
  return 0;
147
388
  }
389
+ _resolveCoverage(fromConfig) {
390
+ // If neither CLI nor config requests coverage, do nothing.
391
+ const configWantsCoverage = fromConfig?.enabled ?? false;
392
+ const cliWantsCoverage = this.coverage || this.coverageCss || this.coverageJs !== undefined || this.coverageMode !== undefined;
393
+ if (!configWantsCoverage && !cliWantsCoverage) {
394
+ return undefined;
395
+ }
396
+ const base = fromConfig ?? new ResolvedCoverageConfig('total', 'istanbul', false, 'coverage', ['**/src/**/*.{js,ts,jsx,tsx,mjs,cjs}'], ['**/*.fixture.{js,ts,jsx,tsx}', '**/node_modules/**', '**/*.{test,spec}.{js,ts,jsx,tsx}']);
397
+ // Mode override
398
+ let mode = base.mode;
399
+ if (this.coverageMode !== undefined) {
400
+ if (this.coverageMode !== 'total' && this.coverageMode !== 'per-fixture') {
401
+ throw new Error(`--coverage-mode must be "total" or "per-fixture", got "${this.coverageMode}"`);
402
+ }
403
+ mode = this.coverageMode;
404
+ }
405
+ // JS strategy override
406
+ let js = base.js;
407
+ if (this.coverageJs !== undefined) {
408
+ if (this.coverageJs === 'off' || this.coverageJs === 'false') {
409
+ js = false;
410
+ }
411
+ else if (this.coverageJs === 'istanbul' || this.coverageJs === 'v8') {
412
+ js = this.coverageJs;
413
+ }
414
+ else {
415
+ throw new Error(`--coverage-js must be "istanbul", "v8", or "off", got "${this.coverageJs}"`);
416
+ }
417
+ }
418
+ // CSS toggle: CLI flag forces on; config decides otherwise.
419
+ const css = this.coverageCss || base.css;
420
+ const outputDir = this.coverageOutput ?? base.outputDir;
421
+ return new ResolvedCoverageConfig(mode, js, css, outputDir, base.include, base.exclude);
422
+ }
148
423
  async _runComparison(screenshots, targetPath, compareTargetPath, projectDir) {
149
424
  const compareStorage = new FileSystemStorage(compareTargetPath);
150
425
  const result = await compareScreenshotsInMemory(screenshots, {
@@ -154,7 +429,7 @@ class RenderCommand extends Command {
154
429
  });
155
430
  printComparisonToConsole(result, this.context.stdout);
156
431
  if (this.report) {
157
- const reportDir = path.isAbsolute(this.report) ? this.report : path.join(projectDir, this.report);
432
+ const reportDir = AbsolutePath.fromAbsoluteOrRelative(this.report, { base: projectDir });
158
433
  await writeComparisonReport({
159
434
  reportDir,
160
435
  result,
@@ -168,6 +443,16 @@ class RenderCommand extends Command {
168
443
  return (result.added.length > 0 || result.changed.length > 0) ? 1 : 0;
169
444
  }
170
445
  }
446
+ function _globToRegExp(glob) {
447
+ // Escape regex metacharacters EXCEPT glob ones we'll process below: * ? { } , and /.
448
+ let pattern = glob.replace(/([.+^$()|[\]\\])/g, '\\$1');
449
+ // Brace expansion: {a,b,c} → (a|b|c)
450
+ pattern = pattern.replace(/\{([^{}]+)\}/g, (_, body) => '(' + body.split(',').join('|') + ')');
451
+ // ** → placeholder, * → [^/]*, then placeholder → .*
452
+ pattern = pattern.replace(/\*\*/g, '\u29eb').replace(/\*/g, '[^/]*').replace(/\u29eb/g, '.*');
453
+ pattern = pattern.replace(/\?/g, '.');
454
+ return new RegExp(pattern);
455
+ }
171
456
  async function collectGitMetadata(gitRoot) {
172
457
  const hash = (await execGit(gitRoot, ['rev-parse', 'HEAD'])).trim();
173
458
  const logOutput = (await execGit(gitRoot, [
@@ -203,7 +488,7 @@ async function getRepoOwnerAndName(gitRoot) {
203
488
  catch {
204
489
  // no remote configured
205
490
  }
206
- return { owner: 'unknown', name: path.basename(gitRoot) };
491
+ return { owner: 'unknown', name: path.basename(gitRoot.value) };
207
492
  }
208
493
 
209
494
  export { RenderCommand };
@@ -1 +1 @@
1
- {"version":3,"file":"renderCommand.js","sources":["../../src/commands/renderCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderCommand.js","sources":["../../src/commands/renderCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serveCommand.d.ts","sourceRoot":"","sources":["../../src/commands/serveCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAiB5C,qBAAa,YAAa,SAAQ,OAAO;IACxC,OAAgB,KAAK,aAAe;IAEpC,OAAgB,KAAK,4BAkBlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,OAAO,qBAAgG;IAChH,QAAQ,CAAC,OAAO,SAAwI;IACxJ,QAAQ,CAAC,UAAU,UAAoG;IACvH,QAAQ,CAAC,MAAM,UAAsG;IACrH,QAAQ,CAAC,IAAI,UAAkF;IAC/F,QAAQ,CAAC,aAAa,UAAqH;IAC3I,QAAQ,CAAC,MAAM,UAAwG;IACvH,QAAQ,CAAC,eAAe,qBAA8H;IACtJ,QAAQ,CAAC,eAAe,qBAAsH;IAC9I,QAAQ,CAAC,aAAa,SAA0J;IAE1K,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA+DhB,oBAAoB;YAkBpB,iBAAiB;YA8DjB,OAAO;IAiBrB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,WAAW;YAeL,YAAY;IA6D1B,OAAO,CAAC,uBAAuB;CAyB/B"}
1
+ {"version":3,"file":"serveCommand.d.ts","sourceRoot":"","sources":["../../src/commands/serveCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAmB5C,qBAAa,YAAa,SAAQ,OAAO;IACxC,OAAgB,KAAK,aAAe;IAEpC,OAAgB,KAAK,4BAkBlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,OAAO,qBAAgG;IAChH,QAAQ,CAAC,OAAO,SAAwI;IACxJ,QAAQ,CAAC,UAAU,UAAoG;IACvH,QAAQ,CAAC,MAAM,UAAsG;IACrH,QAAQ,CAAC,IAAI,UAAkF;IAC/F,QAAQ,CAAC,aAAa,UAAqH;IAC3I,QAAQ,CAAC,MAAM,UAAwG;IACvH,QAAQ,CAAC,eAAe,qBAA8H;IACtJ,QAAQ,CAAC,eAAe,qBAAsH;IAC9I,QAAQ,CAAC,aAAa,SAA0J;IAE1K,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA+DhB,oBAAoB;YAkBpB,iBAAiB;YA8DjB,OAAO;IAiBrB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,WAAW;YAeL,YAAY;IA6D1B,OAAO,CAAC,uBAAuB;CAyB/B"}
@@ -5,19 +5,22 @@ import * as path from 'node:path';
5
5
  import * as fs from 'node:fs';
6
6
  import * as os from 'node:os';
7
7
  import * as http from 'node:http';
8
- import '../external/vscode-observables/observables/dist/observableInternal/index.js';
9
- import { DisposableStore } from '../external/vscode-observables/observables/dist/disposables.js';
10
- import '../external/vscode-observables/observables/dist/observableInternal/debugLocation.js';
11
- import '../external/vscode-observables/observables/dist/observableInternal/observables/derived.js';
12
- import '../external/vscode-observables/observables/dist/observableInternal/utils/utils.js';
13
- import '../external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
8
+ import '../vscode-observables/observables/dist/observableInternal/index.js';
9
+ import { DisposableStore } from '../vscode-observables/observables/dist/disposables.js';
10
+ import '../vscode-observables/observables/dist/observableInternal/debugLocation.js';
11
+ import '../vscode-observables/observables/dist/observableInternal/observables/derived.js';
12
+ import '../vscode-observables/observables/dist/observableInternal/utils/utils.js';
13
+ import '../vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
14
14
  import { ConsoleLogger, verbosityToLogLevel, createLogFileOptions, logBuildInfo } from '../logger.js';
15
15
  import { ResolvedConfig } from '../config.js';
16
+ import { AbsolutePath } from '../path.js';
16
17
  import { DaemonService } from '../daemon/DaemonService.js';
17
18
  import { startPipeServer } from '../daemon/pipeServer.js';
18
19
  import { daemonPipeInfo } from '../daemon/pipeName.js';
19
20
  import { tryConnect, waitForDaemon } from '../daemon/lifecycle.js';
20
- import { buildExplorerUrl } from '../utils.js';
21
+ import '../js-component-explorer/packages/common/dist/renderManifest.js';
22
+ import { buildExplorerUrl } from '../js-component-explorer/packages/common/dist/explorerUrl.js';
23
+ import { EXPLORER_ROUTE } from '../utils.js';
21
24
 
22
25
  class ServeCommand extends Command {
23
26
  static paths = [['serve']];
@@ -52,14 +55,14 @@ Without flags: starts a foreground daemon. Errors if one is already running.
52
55
  redirectionHost = Option.String('--redirectionHost', { description: 'Host to bind the redirection server to (default: localhost)' });
53
56
  idleTimeoutMs = Option.String('--idle-timeout-ms', '0', { hidden: true, description: 'Internal: idle timeout in milliseconds before auto-shutdown (0 = no timeout)' });
54
57
  async execute() {
58
+ const configPath = AbsolutePath.resolve(this.project);
55
59
  const disposables = new DisposableStore();
56
- const config = await ResolvedConfig.fromProjectPath(this.project, disposables);
60
+ const config = await ResolvedConfig.fromProjectPath(configPath, disposables);
57
61
  if (!config.isFullConfig) {
58
62
  this.context.stderr.write('Error: serve requires a component-explorer.json config file.\n');
59
63
  disposables.dispose();
60
64
  return;
61
65
  }
62
- const configPath = path.resolve(this.project);
63
66
  const { pipeName, source: pipeSource } = daemonPipeInfo(configPath);
64
67
  if (this.kill) {
65
68
  const client = await tryConnect(pipeName, { clientName: 'cli-kill' });
@@ -129,7 +132,7 @@ Without flags: starts a foreground daemon. Errors if one is already running.
129
132
  return;
130
133
  }
131
134
  const cliEntryPoint = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../index.js');
132
- const args = [cliEntryPoint, 'serve', '--project', configPath];
135
+ const args = [cliEntryPoint, 'serve', '--project', configPath.value];
133
136
  for (let i = 0; i < this.verbose; i++) {
134
137
  args.push('-v');
135
138
  }
@@ -204,7 +207,7 @@ Without flags: starts a foreground daemon. Errors if one is already running.
204
207
  this.context.stdout.write(` ${s.name}: (loading)\n`);
205
208
  }
206
209
  else {
207
- const explorerUrl = buildExplorerUrl({ baseUrl: s.serverUrl });
210
+ const explorerUrl = buildExplorerUrl({ baseUrl: s.serverUrl, pathname: EXPLORER_ROUTE });
208
211
  this.context.stdout.write(` ${s.name}: ${explorerUrl} (${s.sourceKind})\n`);
209
212
  }
210
213
  }