@vscode/component-explorer-cli 0.2.1-14 → 0.2.1-140

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 +55 -1
  8. package/dist/browserPage.d.ts.map +1 -1
  9. package/dist/browserPage.js +98 -6
  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 +317 -29
  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 +110 -12
  51. package/dist/componentExplorer.d.ts.map +1 -1
  52. package/dist/componentExplorer.js +177 -24
  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 +68 -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/js-component-explorer/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +1 -0
  119. package/dist/js-component-explorer/packages/simple-api/dist/chunk-TTRCY65Z.js.map +1 -0
  120. package/dist/js-component-explorer/packages/simple-api/dist/chunk-WNXMRXWV.js.map +1 -0
  121. package/dist/js-component-explorer/packages/simple-api/dist/express.js.map +1 -0
  122. package/dist/manifest.schema.json +44 -16
  123. package/dist/mcp/DaemonAccessor.d.ts +22 -0
  124. package/dist/mcp/DaemonAccessor.d.ts.map +1 -0
  125. package/dist/mcp/McpServer.d.ts +4 -19
  126. package/dist/mcp/McpServer.d.ts.map +1 -1
  127. package/dist/mcp/McpServer.js +299 -305
  128. package/dist/mcp/McpServer.js.map +1 -1
  129. package/dist/path.d.ts +30 -0
  130. package/dist/path.d.ts.map +1 -0
  131. package/dist/path.js +78 -0
  132. package/dist/path.js.map +1 -0
  133. package/dist/processTree.d.ts +6 -1
  134. package/dist/processTree.d.ts.map +1 -1
  135. package/dist/processTree.js +48 -5
  136. package/dist/processTree.js.map +1 -1
  137. package/dist/renderManifest.js +1 -1
  138. package/dist/server/httpServer.d.ts +1 -1
  139. package/dist/server/httpServer.d.ts.map +1 -1
  140. package/dist/server/httpServer.js +4 -8
  141. package/dist/server/httpServer.js.map +1 -1
  142. package/dist/server/serverConfig.d.ts +23 -6
  143. package/dist/server/serverConfig.d.ts.map +1 -1
  144. package/dist/server/serverConfig.js +11 -18
  145. package/dist/server/serverConfig.js.map +1 -1
  146. package/dist/server/viteServer.d.ts +16 -1
  147. package/dist/server/viteServer.d.ts.map +1 -1
  148. package/dist/server/viteServer.js +86 -5
  149. package/dist/server/viteServer.js.map +1 -1
  150. package/dist/storage.d.ts +2 -1
  151. package/dist/storage.d.ts.map +1 -1
  152. package/dist/storage.js +1 -1
  153. package/dist/storage.js.map +1 -1
  154. package/dist/utils.d.ts +3 -30
  155. package/dist/utils.d.ts.map +1 -1
  156. package/dist/utils.js +4 -24
  157. package/dist/utils.js.map +1 -1
  158. package/dist/visualCache.d.ts +2 -1
  159. package/dist/visualCache.d.ts.map +1 -1
  160. package/dist/visualCache.js +4 -3
  161. package/dist/visualCache.js.map +1 -1
  162. package/dist/viteProjectRef.d.ts +4 -12
  163. package/dist/viteProjectRef.d.ts.map +1 -1
  164. package/dist/viteProjectRef.js +9 -17
  165. package/dist/viteProjectRef.js.map +1 -1
  166. package/dist/vscode-observables/observables/dist/disposables.js.map +1 -0
  167. package/dist/vscode-observables/observables/dist/observableInternal/base.js.map +1 -0
  168. package/dist/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -0
  169. package/dist/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -0
  170. package/dist/vscode-observables/observables/dist/observableInternal/debugName.js.map +1 -0
  171. package/dist/vscode-observables/observables/dist/observableInternal/index.js.map +1 -0
  172. package/dist/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -0
  173. package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/debugGetDependencyGraph.js +1 -1
  174. package/dist/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +1 -0
  175. package/dist/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +1 -0
  176. package/dist/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -0
  177. package/dist/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -0
  178. package/dist/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +1 -0
  179. package/dist/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +1 -0
  180. package/dist/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +1 -0
  181. package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js → vscode-observables/observables/dist/observableInternal/reactions/createEffect.js} +9 -5
  182. package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffect.js.map +1 -0
  183. package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js → vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js} +1 -1
  184. package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js.map +1 -0
  185. package/dist/vscode-observables/observables/dist/observableInternal/transaction.js.map +1 -0
  186. package/dist/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +1 -0
  187. package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/utils/utilsCancellation.js +2 -2
  188. package/dist/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
  189. package/package.json +11 -9
  190. package/dist/commands/artifactCommand.d.ts +0 -14
  191. package/dist/commands/artifactCommand.d.ts.map +0 -1
  192. package/dist/external/vscode-observables/observables/dist/disposables.js.map +0 -1
  193. package/dist/external/vscode-observables/observables/dist/observableInternal/base.js.map +0 -1
  194. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +0 -1
  195. package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +0 -1
  196. package/dist/external/vscode-observables/observables/dist/observableInternal/debugName.js.map +0 -1
  197. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +0 -1
  198. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +0 -1
  199. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +0 -1
  200. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +0 -1
  201. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +0 -1
  202. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +0 -1
  203. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +0 -1
  204. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +0 -1
  205. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +0 -1
  206. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js.map +0 -1
  207. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js.map +0 -1
  208. package/dist/external/vscode-observables/observables/dist/observableInternal/transaction.js.map +0 -1
  209. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +0 -1
  210. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +0 -1
  211. package/dist/packages/common/dist/renderManifest.js +0 -46
  212. package/dist/packages/common/dist/renderManifest.js.map +0 -1
  213. package/dist/packages/semver/dist/index.js.map +0 -1
  214. package/dist/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +0 -1
  215. package/dist/packages/simple-api/dist/chunk-TTRCY65Z.js.map +0 -1
  216. package/dist/packages/simple-api/dist/chunk-WNXMRXWV.js.map +0 -1
  217. package/dist/packages/simple-api/dist/express.js.map +0 -1
  218. /package/dist/{packages → js-component-explorer/packages}/semver/dist/index.js +0 -0
  219. /package/dist/{packages → js-component-explorer/packages}/simple-api/dist/chunk-FJ7AVNQE.js +0 -0
  220. /package/dist/{packages → js-component-explorer/packages}/simple-api/dist/chunk-TTRCY65Z.js +0 -0
  221. /package/dist/{packages → js-component-explorer/packages}/simple-api/dist/chunk-WNXMRXWV.js +0 -0
  222. /package/dist/{packages → js-component-explorer/packages}/simple-api/dist/express.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,25 @@ 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.renderError) {
212
+ events.push({ type: 'thrownError', phase: 'render', isError: true, message: result.renderError.message, stack: result.renderError.stack });
213
+ }
214
+ if (result.captureError) {
215
+ events.push({ type: 'thrownError', phase: 'render', isError: true, message: result.captureError.message, stack: result.captureError.stack });
216
+ }
217
+ if (result.currentDispose) {
218
+ for (const e of result.currentDispose.events) {
219
+ events.push({ ...e, phase: 'dispose', isError: e.type !== 'console.log' });
220
+ }
221
+ for (const err of result.currentDispose.errors) {
222
+ events.push({ type: 'thrownError', phase: 'dispose', isError: true, message: err.message, stack: err.stack });
223
+ }
224
+ }
225
+ const hasError = events.some(e => e.isError);
100
226
  fixtureEntries.push({
101
227
  fixtureId: fixture.fixtureId,
102
228
  imageHash,
@@ -104,31 +230,149 @@ class RenderCommand extends Command {
104
230
  background: fixture.background,
105
231
  labels: [...fixture.labels],
106
232
  expectedVisualDescriptions: [...fixture.expectedVisualDescriptions],
107
- hasError: result.hasError,
108
- error: result.error,
109
- events: result.events,
233
+ hasError,
234
+ events,
110
235
  renderTimeMs: result.renderTimeMs,
236
+ ...(result.output !== undefined ? { output: result.output } : {}),
111
237
  });
238
+ const firstError = events.find(e => e.isError);
239
+ const errorLine = firstError ? firstError.message.split('\n')[0].slice(0, 200) : 'unknown error';
112
240
  if (!result.image) {
113
- this.context.stderr.write(` ✗ ${fixture.fixtureId} (no screenshot)\n`);
241
+ this.context.stderr.write(` ✗ ${fixture.fixtureId} (no screenshot: ${errorLine})\n`);
114
242
  }
115
- else if (result.hasError) {
116
- this.context.stdout.write(` ⚠ ${fixture.fixtureId} (rendered with errors)\n`);
243
+ else if (hasError) {
244
+ this.context.stdout.write(` ⚠ ${fixture.fixtureId} (error: ${errorLine})\n`);
117
245
  }
118
246
  else {
119
247
  this.context.stdout.write(` ✓ ${fixture.fixtureId}\n`);
120
248
  }
249
+ // Per-fixture coverage: collect after each fixture renders.
250
+ if (coverage && coverage.mode === 'per-fixture' && (useV8Js || useIstanbulJs || useCss)) {
251
+ const page = await session.explorer.getOrOpenPage();
252
+ let map = {};
253
+ if (useIstanbulJs) {
254
+ const raw = await page.evaluateJs('window.__coverage__ ?? null');
255
+ map = validateIstanbulMap(raw, logger);
256
+ }
257
+ if (useV8Js) {
258
+ const v8 = await page.stopJSCoverage();
259
+ const v8Map = await v8EntriesToIstanbul(v8, {
260
+ viteServerUrl: session.serverUrl,
261
+ projectRoot: projectDir,
262
+ logger,
263
+ include: v8FilterInclude,
264
+ exclude: v8FilterExclude,
265
+ });
266
+ map = mergeIstanbul([map, v8Map]);
267
+ }
268
+ if (useCss) {
269
+ const css = await page.stopCSSCoverage();
270
+ const cssMap = cssEntriesToIstanbul(css, {
271
+ viteServerUrl: session.serverUrl,
272
+ projectRoot: projectDir,
273
+ logger,
274
+ });
275
+ map = mergeIstanbul([map, cssMap]);
276
+ }
277
+ perFixtureMaps.push({ fixtureId: fixture.fixtureId, map });
278
+ }
279
+ }
280
+ // Total mode: collect once at the end. Reload-triggered snapshotting
281
+ // is handled inside `BrowserPage.reload()`, which preserves coverage
282
+ // data across our explicit reloads (e.g. `reloadOnError`,
283
+ // `reloadBeforeRender`). Reloads we don't trigger (e.g. Vite's
284
+ // "optimized dependencies changed") are not handled — for now we
285
+ // accept losing data from before such navigations.
286
+ if (coverage && coverage.mode === 'total' && (useV8Js || useIstanbulJs || useCss)) {
287
+ const page = await session.explorer.getOrOpenPage();
288
+ if (useIstanbulJs) {
289
+ const raw = await page.evaluateJs('window.__coverage__ ?? null');
290
+ totalMaps.push(validateIstanbulMap(raw, logger));
291
+ // Plus any pre-reload snapshots collected during the run.
292
+ for (const snap of page.stopIstanbulSnapshot()) {
293
+ totalMaps.push(validateIstanbulMap(snap, logger));
294
+ }
295
+ }
296
+ if (useV8Js) {
297
+ const v8 = await page.stopJSCoverage();
298
+ totalMaps.push(await v8EntriesToIstanbul(v8, {
299
+ viteServerUrl: session.serverUrl,
300
+ projectRoot: projectDir,
301
+ logger,
302
+ include: v8FilterInclude,
303
+ exclude: v8FilterExclude,
304
+ }));
305
+ }
306
+ if (useCss) {
307
+ const css = await page.stopCSSCoverage();
308
+ totalMaps.push(cssEntriesToIstanbul(css, {
309
+ viteServerUrl: session.serverUrl,
310
+ projectRoot: projectDir,
311
+ logger,
312
+ }));
313
+ }
121
314
  }
122
315
  const gitRoot = await getGitRoot(projectDir);
123
316
  const commitMetadata = await collectGitMetadata(gitRoot);
124
317
  const repoOrigin = await getRepoOwnerAndName(gitRoot);
318
+ // Write coverage output(s) BEFORE the manifest so we can reference
319
+ // each emitted file from the manifest by relative path.
320
+ let topLevelCoverage;
321
+ const perFixtureCoverageRef = new Map();
322
+ if (coverage && coverage.enabled) {
323
+ const coverageDir = AbsolutePath.fromAbsoluteOrRelative(coverage.outputDir, { base: targetPath });
324
+ const toManifestRelative = (absPath) => {
325
+ const rel = path.relative(targetPath.value, absPath.value).split(path.sep).join('/');
326
+ return rel.startsWith('.') ? rel : './' + rel;
327
+ };
328
+ if (coverage.mode === 'per-fixture') {
329
+ for (const { fixtureId, map } of perFixtureMaps) {
330
+ if (Object.keys(map).length === 0) {
331
+ continue;
332
+ }
333
+ const safeId = fixtureId.replace(/[/\\:*?"<>|]/g, '_');
334
+ const outPath = coverageDir.join(new RelativePath(`${safeId}.coverage.json`));
335
+ await writeIstanbulFile(outPath, map);
336
+ perFixtureCoverageRef.set(fixtureId, {
337
+ coverageDataIstanbul: toManifestRelative(outPath),
338
+ });
339
+ }
340
+ // Aggregated total alongside per-fixture files.
341
+ const merged = mergeIstanbul(perFixtureMaps.map(p => p.map));
342
+ if (Object.keys(merged).length > 0) {
343
+ const totalPath = coverageDir.join(new RelativePath('coverage-final.json'));
344
+ await writeIstanbulFile(totalPath, merged);
345
+ topLevelCoverage = { coverageDataIstanbul: toManifestRelative(totalPath) };
346
+ }
347
+ this.context.stdout.write(` Coverage: ${perFixtureCoverageRef.size} per-fixture report(s) + total in ${path.relative(projectDir.value, coverageDir.value)}/\n`);
348
+ }
349
+ else {
350
+ const merged = mergeIstanbul(totalMaps);
351
+ if (Object.keys(merged).length > 0) {
352
+ const totalPath = coverageDir.join(new RelativePath('coverage-final.json'));
353
+ await writeIstanbulFile(totalPath, merged);
354
+ topLevelCoverage = { coverageDataIstanbul: toManifestRelative(totalPath) };
355
+ }
356
+ this.context.stdout.write(` Coverage: ${path.relative(projectDir.value, coverageDir.value)}/\n`);
357
+ }
358
+ }
359
+ // Attach per-fixture coverage refs to manifest entries (per-fixture mode only).
360
+ if (perFixtureCoverageRef.size > 0) {
361
+ for (const entry of fixtureEntries) {
362
+ const ref = perFixtureCoverageRef.get(entry.fixtureId);
363
+ if (ref) {
364
+ entry.coverage = ref;
365
+ }
366
+ }
367
+ }
125
368
  const manifest = {
126
369
  version: 1,
127
370
  repository: repoOrigin,
128
371
  commit: commitMetadata,
372
+ coverage: topLevelCoverage,
129
373
  fixtures: fixtureEntries,
130
374
  };
131
- const manifestPath = path.join(targetPath, MANIFEST_FILENAME);
375
+ const manifestPath = targetPath.join(new RelativePath(MANIFEST_FILENAME));
132
376
  await writeFile(manifestPath, Buffer.from(serializeManifest(manifest)));
133
377
  this.context.stdout.write(`\nRendered to ${targetDir}/\n`);
134
378
  this.context.stdout.write(` Manifest: ${manifestPath}\n`);
@@ -145,6 +389,40 @@ class RenderCommand extends Command {
145
389
  }
146
390
  return 0;
147
391
  }
392
+ _resolveCoverage(fromConfig) {
393
+ // If neither CLI nor config requests coverage, do nothing.
394
+ const configWantsCoverage = fromConfig?.enabled ?? false;
395
+ const cliWantsCoverage = this.coverage || this.coverageCss || this.coverageJs !== undefined || this.coverageMode !== undefined;
396
+ if (!configWantsCoverage && !cliWantsCoverage) {
397
+ return undefined;
398
+ }
399
+ 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}']);
400
+ // Mode override
401
+ let mode = base.mode;
402
+ if (this.coverageMode !== undefined) {
403
+ if (this.coverageMode !== 'total' && this.coverageMode !== 'per-fixture') {
404
+ throw new Error(`--coverage-mode must be "total" or "per-fixture", got "${this.coverageMode}"`);
405
+ }
406
+ mode = this.coverageMode;
407
+ }
408
+ // JS strategy override
409
+ let js = base.js;
410
+ if (this.coverageJs !== undefined) {
411
+ if (this.coverageJs === 'off' || this.coverageJs === 'false') {
412
+ js = false;
413
+ }
414
+ else if (this.coverageJs === 'istanbul' || this.coverageJs === 'v8') {
415
+ js = this.coverageJs;
416
+ }
417
+ else {
418
+ throw new Error(`--coverage-js must be "istanbul", "v8", or "off", got "${this.coverageJs}"`);
419
+ }
420
+ }
421
+ // CSS toggle: CLI flag forces on; config decides otherwise.
422
+ const css = this.coverageCss || base.css;
423
+ const outputDir = this.coverageOutput ?? base.outputDir;
424
+ return new ResolvedCoverageConfig(mode, js, css, outputDir, base.include, base.exclude);
425
+ }
148
426
  async _runComparison(screenshots, targetPath, compareTargetPath, projectDir) {
149
427
  const compareStorage = new FileSystemStorage(compareTargetPath);
150
428
  const result = await compareScreenshotsInMemory(screenshots, {
@@ -154,7 +432,7 @@ class RenderCommand extends Command {
154
432
  });
155
433
  printComparisonToConsole(result, this.context.stdout);
156
434
  if (this.report) {
157
- const reportDir = path.isAbsolute(this.report) ? this.report : path.join(projectDir, this.report);
435
+ const reportDir = AbsolutePath.fromAbsoluteOrRelative(this.report, { base: projectDir });
158
436
  await writeComparisonReport({
159
437
  reportDir,
160
438
  result,
@@ -168,6 +446,16 @@ class RenderCommand extends Command {
168
446
  return (result.added.length > 0 || result.changed.length > 0) ? 1 : 0;
169
447
  }
170
448
  }
449
+ function _globToRegExp(glob) {
450
+ // Escape regex metacharacters EXCEPT glob ones we'll process below: * ? { } , and /.
451
+ let pattern = glob.replace(/([.+^$()|[\]\\])/g, '\\$1');
452
+ // Brace expansion: {a,b,c} → (a|b|c)
453
+ pattern = pattern.replace(/\{([^{}]+)\}/g, (_, body) => '(' + body.split(',').join('|') + ')');
454
+ // ** → placeholder, * → [^/]*, then placeholder → .*
455
+ pattern = pattern.replace(/\*\*/g, '\u29eb').replace(/\*/g, '[^/]*').replace(/\u29eb/g, '.*');
456
+ pattern = pattern.replace(/\?/g, '.');
457
+ return new RegExp(pattern);
458
+ }
171
459
  async function collectGitMetadata(gitRoot) {
172
460
  const hash = (await execGit(gitRoot, ['rev-parse', 'HEAD'])).trim();
173
461
  const logOutput = (await execGit(gitRoot, [
@@ -203,7 +491,7 @@ async function getRepoOwnerAndName(gitRoot) {
203
491
  catch {
204
492
  // no remote configured
205
493
  }
206
- return { owner: 'unknown', name: path.basename(gitRoot) };
494
+ return { owner: 'unknown', name: path.basename(gitRoot.value) };
207
495
  }
208
496
 
209
497
  export { RenderCommand };
@@ -1 +1 @@
1
- {"version":3,"file":"renderCommand.js","sources":["../../src/commands/renderCommand.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAcM,MAAO,aAAc,SAAQ,OAAO,CAAA;IACzC,OAAgB,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEpC,IAAA,OAAgB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AACrC,QAAA,WAAW,EAAE,yDAAyD;AACtE,QAAA,QAAQ,EAAE;YACT,CAAC,qBAAqB,EAAE,WAAW,CAAC;YACpC,CAAC,+BAA+B,EAAE,oBAAoB,CAAC;YACvD,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;AACnD,SAAA;AACD,KAAA,CAAC;AAEO,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;AAC5G,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;AACtG,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;AACvG,IAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,yEAAyE,EAAE,CAAC;AACtI,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,oEAAoE,EAAE,CAAC;AAC7I,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,qGAAqG,EAAE,CAAC;AAC3K,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC;AACpG,IAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,sGAAsG,EAAE,CAAC;AAC3L,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC;AACjH,IAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC;AAC7G,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC;AACrH,IAAA,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,gGAAgG,EAAE,CAAC;AAElL,IAAA,MAAM,OAAO,GAAA;;QAEZ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC;AACnF,YAAA,OAAO,CAAC;QACT;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpJ,YAAY,CAAC,MAAM,CAAC;AAEpB,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;AACzC,QAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;AAC9E,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS;QACnC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM;;AAG9C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,uBAAuB,GAAG,sBAAsB;AACpF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;;AAG5F,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,sBAAsB,GAAG,uBAAuB;AAC3F,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,IAAI,oBAAoB;QACnE,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC;AAExH,QAAA,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,UAAU,CAAC;AACjD,QAAA,MAAM,cAAc,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;AAElG,QAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B;AAErD,QAAA,IAAI,OAAoC;AACxC,QAAA,IAAI;YACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC;AACjD,YAAA,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC;AAE1F,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,kBAAA,EAAqB,OAAO,CAAC,SAAS,CAAA,EAAA,CAAI,CAAC;YAErE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE;AACxD,YAAA,IAAI,UAAU,CAAC,SAAS,EAAE;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,gCAAA,EAAmC,UAAU,CAAC,SAAS,CAAA,EAAA,CAAI,CAAC;YACvF;AAEA,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;kBACnB,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,MAAO,CAAC;AACtE,kBAAE,UAAU,CAAC,QAAQ;AAEtB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,MAAA,EAAS,QAAQ,CAAC,MAAM,CAAA,aAAA,CAAe,CAAC;YAElE,MAAM,cAAc,GAA+B,EAAE;AACrD,YAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU;AAEvC,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC/B,gBAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC;AAE1E,gBAAA,IAAI,SAA6B;AACjC,gBAAA,IAAI,SAA6B;AAEjC,gBAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AACjB,oBAAA,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACnE,oBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACtB,wBAAA,SAAS,GAAG,CAAA,OAAA,EAAU,SAAS,CAAA,IAAA,CAAM;wBACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;4BAClC,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;AAC5C,4BAAA,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;wBAC7B;oBACD;yBAAO;AACN,wBAAA,SAAS,GAAG,CAAA,EAAG,OAAO,CAAC,SAAS,MAAM;wBACtC,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;oBAC7C;oBACA,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnH;gBAEA,cAAc,CAAC,IAAI,CAAC;oBACnB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS;oBACT,SAAS;oBACT,UAAU,EAAE,OAAO,CAAC,UAAU;AAC9B,oBAAA,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AAC3B,oBAAA,0BAA0B,EAAE,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC;oBACnE,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,YAAY,EAAE,MAAM,CAAC,YAAY;AACjC,iBAAA,CAAC;AAEF,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAClB,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,IAAA,EAAO,OAAO,CAAC,SAAS,CAAA,kBAAA,CAAoB,CAAC;gBACxE;AAAO,qBAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC3B,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,IAAA,EAAO,OAAO,CAAC,SAAS,CAAA,yBAAA,CAA2B,CAAC;gBAC/E;qBAAO;AACN,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,IAAA,EAAO,OAAO,CAAC,SAAS,CAAA,EAAA,CAAI,CAAC;gBACxD;YACD;AAEA,YAAA,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC;AAC5C,YAAA,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC;AACxD,YAAA,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC;AAErD,YAAA,MAAM,QAAQ,GAAmB;AAChC,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,MAAM,EAAE,cAAc;AACtB,gBAAA,QAAQ,EAAE,cAAc;aACxB;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC;AAC7D,YAAA,MAAM,SAAS,CACd,YAAY,EACZ,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CACxC;YAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,SAAS,CAAA,GAAA,CAAK,CAAC;YAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,YAAA,EAAe,YAAY,CAAA,EAAA,CAAI,CAAC;AAC1D,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,cAAc,CAAC,MAAM,CAAA,WAAA,EAAc,aAAa,CAAC,IAAI,CAAA,gBAAA,CAAkB,CAAC;QACxG;gBAAU;AACT,YAAA,MAAM,OAAO,EAAE,OAAO,EAAE;AACxB,YAAA,MAAM,cAAc,CAAC,OAAO,EAAE;YAC9B,WAAW,CAAC,OAAO,EAAE;QACtB;AACA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,oBAAA,EAAuB,gBAAgB,CAAA,KAAA,CAAO,CAAC;AACzE,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC;QACnF;AAEA,QAAA,OAAO,CAAC;IACT;IAEQ,MAAM,cAAc,CAC3B,WAAwC,EACxC,UAAkB,EAClB,iBAAyB,EACzB,UAAkB,EAAA;AAElB,QAAA,MAAM,cAAc,GAAG,IAAI,iBAAiB,CAAC,iBAAiB,CAAC;AAE/D,QAAA,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE;AAC5D,YAAA,IAAI,EAAE,YAAY,EAAE;YACpB,IAAI,EAAE,CAAC,EAAE,KAAK,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,CAAC,EAAE,KAAK,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;AACzC,SAAA,CAAC;QAEF,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAErD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;AACjG,YAAA,MAAM,qBAAqB,CAAC;gBAC3B,SAAS;gBACT,MAAM;AACN,gBAAA,YAAY,EAAE,iBAAiB;AAC/B,gBAAA,WAAW,EAAE,UAAU;AACvB,gBAAA,eAAe,EAAE,CAAC,EAAE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAA,EAAG,EAAE,MAAM,CAAC;AACzD,gBAAA,cAAc,EAAE,OAAO,EAAE,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,IAAI;AACvD,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAAC,MAAM,CAAA,GAAA,CAAK,CAAC;QACpE;QAEA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IACtE;;AAGD,eAAe,kBAAkB,CAAC,OAAe,EAAA;AAChD,IAAA,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE;AAEnE,IAAA,MAAM,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE;AACzC,QAAA,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM;AACjD,KAAA,CAAC,EAAE,IAAI,EAAE;AACV,IAAA,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IAEnF,IAAI,YAAY,GAAa,EAAE;AAC/B,IAAA,IAAI;AACH,QAAA,MAAM,YAAY,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE;QAC7E,IAAI,YAAY,EAAE;YACjB,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3E;IACD;AAAE,IAAA,MAAM;;IAER;IAEA,OAAO;QACN,IAAI;QACJ,YAAY;QACZ,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;QAChD,SAAS;AACT,QAAA,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;KAChC;AACF;AAEA,eAAe,mBAAmB,CAAC,OAAe,EAAA;AACjD,IAAA,IAAI;QACH,MAAM,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE;QAClF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,mCAAmC,CAAC;QAClE,IAAI,KAAK,EAAE;AACV,YAAA,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;QAC3C;IACD;AAAE,IAAA,MAAM;;IAER;AACA,IAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC1D;;;;"}
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
  }