@vscode/component-explorer-cli 0.2.1-17 → 0.2.1-171

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 (281) hide show
  1. package/README.md +130 -12
  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 +103 -7
  10. package/dist/browserPage.js.map +1 -1
  11. package/dist/browserPage.test.d.ts +2 -0
  12. package/dist/browserPage.test.d.ts.map +1 -0
  13. package/dist/commands/acceptCommand.d.ts +1 -1
  14. package/dist/commands/acceptCommand.d.ts.map +1 -1
  15. package/dist/commands/acceptCommand.js +21 -14
  16. package/dist/commands/acceptCommand.js.map +1 -1
  17. package/dist/commands/checkStabilityCommand.d.ts +2 -0
  18. package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
  19. package/dist/commands/checkStabilityCommand.js +25 -8
  20. package/dist/commands/checkStabilityCommand.js.map +1 -1
  21. package/dist/commands/compareCommand.d.ts +1 -1
  22. package/dist/commands/compareCommand.d.ts.map +1 -1
  23. package/dist/commands/compareCommand.js +31 -22
  24. package/dist/commands/compareCommand.js.map +1 -1
  25. package/dist/commands/inputArg.d.ts +33 -0
  26. package/dist/commands/inputArg.d.ts.map +1 -0
  27. package/dist/commands/inputArg.js +103 -0
  28. package/dist/commands/inputArg.js.map +1 -0
  29. package/dist/commands/mcpCommand.d.ts.map +1 -1
  30. package/dist/commands/mcpCommand.js +18 -12
  31. package/dist/commands/mcpCommand.js.map +1 -1
  32. package/dist/commands/renderCommand.d.ts +10 -1
  33. package/dist/commands/renderCommand.d.ts.map +1 -1
  34. package/dist/commands/renderCommand.js +390 -61
  35. package/dist/commands/renderCommand.js.map +1 -1
  36. package/dist/commands/renderCommand.test.d.ts +2 -0
  37. package/dist/commands/renderCommand.test.d.ts.map +1 -0
  38. package/dist/commands/serveCommand.d.ts +4 -1
  39. package/dist/commands/serveCommand.d.ts.map +1 -1
  40. package/dist/commands/serveCommand.js +105 -36
  41. package/dist/commands/serveCommand.js.map +1 -1
  42. package/dist/commands/serviceDiffCommitsCommand.d.ts.map +1 -1
  43. package/dist/commands/serviceDiffCommitsCommand.js +10 -9
  44. package/dist/commands/serviceDiffCommitsCommand.js.map +1 -1
  45. package/dist/commands/watchCommand.d.ts +1 -0
  46. package/dist/commands/watchCommand.d.ts.map +1 -1
  47. package/dist/commands/watchCommand.js +31 -20
  48. package/dist/commands/watchCommand.js.map +1 -1
  49. package/dist/comparison.d.ts +4 -3
  50. package/dist/comparison.d.ts.map +1 -1
  51. package/dist/comparison.js +17 -14
  52. package/dist/comparison.js.map +1 -1
  53. package/dist/component-explorer-config.schema.json +55 -2
  54. package/dist/componentExplorer.d.ts +110 -12
  55. package/dist/componentExplorer.d.ts.map +1 -1
  56. package/dist/componentExplorer.js +177 -24
  57. package/dist/componentExplorer.js.map +1 -1
  58. package/dist/config.d.ts +33 -4
  59. package/dist/config.d.ts.map +1 -1
  60. package/dist/config.js +64 -27
  61. package/dist/config.js.map +1 -1
  62. package/dist/coverage.d.ts +64 -0
  63. package/dist/coverage.d.ts.map +1 -0
  64. package/dist/coverage.js +212 -0
  65. package/dist/coverage.js.map +1 -0
  66. package/dist/daemon/DaemonService.d.ts +5 -199
  67. package/dist/daemon/DaemonService.d.ts.map +1 -1
  68. package/dist/daemon/DaemonService.js +248 -300
  69. package/dist/daemon/DaemonService.js.map +1 -1
  70. package/dist/daemon/approvalStore.d.ts +2 -1
  71. package/dist/daemon/approvalStore.d.ts.map +1 -1
  72. package/dist/daemon/approvalStore.js +4 -3
  73. package/dist/daemon/approvalStore.js.map +1 -1
  74. package/dist/daemon/client.d.ts +76 -5
  75. package/dist/daemon/client.d.ts.map +1 -1
  76. package/dist/daemon/daemonRpc.test.d.ts +2 -0
  77. package/dist/daemon/daemonRpc.test.d.ts.map +1 -0
  78. package/dist/daemon/endpointServer.d.ts +4 -0
  79. package/dist/daemon/endpointServer.d.ts.map +1 -0
  80. package/dist/daemon/endpointServer.js +24 -0
  81. package/dist/daemon/endpointServer.js.map +1 -0
  82. package/dist/daemon/inProcessClient.d.ts +3 -9
  83. package/dist/daemon/inProcessClient.d.ts.map +1 -1
  84. package/dist/daemon/inProcessClient.js +29 -30
  85. package/dist/daemon/inProcessClient.js.map +1 -1
  86. package/dist/daemon/lifecycle.d.ts +5 -5
  87. package/dist/daemon/lifecycle.d.ts.map +1 -1
  88. package/dist/daemon/lifecycle.js +4 -3
  89. package/dist/daemon/lifecycle.js.map +1 -1
  90. package/dist/daemon/pipeClient.d.ts +2 -3
  91. package/dist/daemon/pipeClient.d.ts.map +1 -1
  92. package/dist/daemon/pipeClient.js +93 -194
  93. package/dist/daemon/pipeClient.js.map +1 -1
  94. package/dist/daemon/pipeName.d.ts +3 -3
  95. package/dist/daemon/pipeName.d.ts.map +1 -1
  96. package/dist/daemon/pipeName.js +6 -5
  97. package/dist/daemon/pipeName.js.map +1 -1
  98. package/dist/daemon/pipeServer.d.ts +2 -2
  99. package/dist/daemon/pipeServer.d.ts.map +1 -1
  100. package/dist/daemon/pipeServer.js +79 -70
  101. package/dist/daemon/pipeServer.js.map +1 -1
  102. package/dist/daemon/registerDaemonConnection.d.ts +7 -0
  103. package/dist/daemon/registerDaemonConnection.d.ts.map +1 -0
  104. package/dist/daemon/registerDaemonConnection.js +37 -0
  105. package/dist/daemon/registerDaemonConnection.js.map +1 -0
  106. package/dist/daemon/transports.test.d.ts +2 -0
  107. package/dist/daemon/transports.test.d.ts.map +1 -0
  108. package/dist/daemon/types.d.ts +1655 -8
  109. package/dist/daemon/types.d.ts.map +1 -1
  110. package/dist/daemon/types.js +4 -0
  111. package/dist/daemon/types.js.map +1 -0
  112. package/dist/daemon/version.d.ts +1 -5
  113. package/dist/daemon/version.d.ts.map +1 -1
  114. package/dist/daemon/version.js +3 -7
  115. package/dist/daemon/version.js.map +1 -1
  116. package/dist/dependencyInstaller.d.ts +2 -1
  117. package/dist/dependencyInstaller.d.ts.map +1 -1
  118. package/dist/dependencyInstaller.js +4 -4
  119. package/dist/dependencyInstaller.js.map +1 -1
  120. package/dist/explorerSession.d.ts +5 -1
  121. package/dist/explorerSession.d.ts.map +1 -1
  122. package/dist/explorerSession.js +24 -7
  123. package/dist/explorerSession.js.map +1 -1
  124. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/inspectionHost-BA6ZmC_P.js +2523 -0
  125. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/inspectionHost-BA6ZmC_P.js.map +1 -0
  126. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/src-DYVSK_tz.js +1871 -0
  127. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/src-DYVSK_tz.js.map +1 -0
  128. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/webSocketTransport-Ct4OIdG9.js +220 -0
  129. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/webSocketTransport-Ct4OIdG9.js.map +1 -0
  130. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/node.js +721 -0
  131. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/node.js.map +1 -0
  132. package/dist/git/gitCommitResolver.d.ts +2 -1
  133. package/dist/git/gitCommitResolver.d.ts.map +1 -1
  134. package/dist/git/gitCommitResolver.js +8 -8
  135. package/dist/git/gitCommitResolver.js.map +1 -1
  136. package/dist/git/gitIndexResolver.d.ts +2 -1
  137. package/dist/git/gitIndexResolver.d.ts.map +1 -1
  138. package/dist/git/gitIndexResolver.js +7 -7
  139. package/dist/git/gitIndexResolver.js.map +1 -1
  140. package/dist/git/gitService.d.ts +5 -4
  141. package/dist/git/gitService.d.ts.map +1 -1
  142. package/dist/git/gitService.js.map +1 -1
  143. package/dist/git/gitUtils.d.ts +6 -5
  144. package/dist/git/gitUtils.d.ts.map +1 -1
  145. package/dist/git/gitUtils.js +5 -4
  146. package/dist/git/gitUtils.js.map +1 -1
  147. package/dist/git/gitWorktreeManager.d.ts +15 -14
  148. package/dist/git/gitWorktreeManager.d.ts.map +1 -1
  149. package/dist/git/gitWorktreeManager.js +10 -11
  150. package/dist/git/gitWorktreeManager.js.map +1 -1
  151. package/dist/git/testUtils.d.ts +2 -1
  152. package/dist/git/testUtils.d.ts.map +1 -1
  153. package/dist/index.d.ts +0 -2
  154. package/dist/index.js +10 -1
  155. package/dist/index.js.map +1 -1
  156. package/dist/js-component-explorer/packages/common/dist/daemonRpc.js +165 -0
  157. package/dist/js-component-explorer/packages/common/dist/daemonRpc.js.map +1 -0
  158. package/dist/js-component-explorer/packages/common/dist/explorerUrl.js +21 -0
  159. package/dist/js-component-explorer/packages/common/dist/explorerUrl.js.map +1 -0
  160. package/dist/js-component-explorer/packages/common/dist/renderManifest.js +68 -0
  161. package/dist/js-component-explorer/packages/common/dist/renderManifest.js.map +1 -0
  162. package/dist/js-component-explorer/packages/semver/dist/index.js.map +1 -0
  163. package/dist/manifest.schema.json +44 -16
  164. package/dist/mcp/DaemonAccessor.d.ts +2 -3
  165. package/dist/mcp/DaemonAccessor.d.ts.map +1 -1
  166. package/dist/mcp/McpServer.d.ts +1 -1
  167. package/dist/mcp/McpServer.d.ts.map +1 -1
  168. package/dist/mcp/McpServer.js +252 -159
  169. package/dist/mcp/McpServer.js.map +1 -1
  170. package/dist/path.d.ts +30 -0
  171. package/dist/path.d.ts.map +1 -0
  172. package/dist/path.js +78 -0
  173. package/dist/path.js.map +1 -0
  174. package/dist/processTree.d.ts +6 -1
  175. package/dist/processTree.d.ts.map +1 -1
  176. package/dist/processTree.js +48 -5
  177. package/dist/processTree.js.map +1 -1
  178. package/dist/renderManifest.d.ts +70 -5
  179. package/dist/renderManifest.js +1 -1
  180. package/dist/server/httpServer.d.ts +1 -1
  181. package/dist/server/httpServer.d.ts.map +1 -1
  182. package/dist/server/httpServer.js +4 -8
  183. package/dist/server/httpServer.js.map +1 -1
  184. package/dist/server/serverConfig.d.ts +23 -8
  185. package/dist/server/serverConfig.d.ts.map +1 -1
  186. package/dist/server/serverConfig.js +11 -18
  187. package/dist/server/serverConfig.js.map +1 -1
  188. package/dist/server/viteServer.d.ts +16 -3
  189. package/dist/server/viteServer.d.ts.map +1 -1
  190. package/dist/server/viteServer.js +86 -5
  191. package/dist/server/viteServer.js.map +1 -1
  192. package/dist/storage.d.ts +2 -1
  193. package/dist/storage.d.ts.map +1 -1
  194. package/dist/storage.js +1 -1
  195. package/dist/storage.js.map +1 -1
  196. package/dist/utils.d.ts +3 -30
  197. package/dist/utils.d.ts.map +1 -1
  198. package/dist/utils.js +4 -24
  199. package/dist/utils.js.map +1 -1
  200. package/dist/visualCache.d.ts +2 -1
  201. package/dist/visualCache.d.ts.map +1 -1
  202. package/dist/visualCache.js +4 -3
  203. package/dist/visualCache.js.map +1 -1
  204. package/dist/viteProjectRef.d.ts +4 -12
  205. package/dist/viteProjectRef.d.ts.map +1 -1
  206. package/dist/viteProjectRef.js +9 -17
  207. package/dist/viteProjectRef.js.map +1 -1
  208. package/dist/vscode-observables/observables/dist/disposables.js.map +1 -0
  209. package/dist/vscode-observables/observables/dist/observableInternal/base.js.map +1 -0
  210. package/dist/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -0
  211. package/dist/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -0
  212. package/dist/vscode-observables/observables/dist/observableInternal/debugName.js.map +1 -0
  213. package/dist/vscode-observables/observables/dist/observableInternal/index.js.map +1 -0
  214. package/dist/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -0
  215. package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/debugGetDependencyGraph.js +1 -1
  216. package/dist/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +1 -0
  217. package/dist/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +1 -0
  218. package/dist/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -0
  219. package/dist/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -0
  220. package/dist/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +1 -0
  221. package/dist/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +1 -0
  222. package/dist/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +1 -0
  223. package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js → vscode-observables/observables/dist/observableInternal/reactions/createEffect.js} +9 -5
  224. package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffect.js.map +1 -0
  225. package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js → vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js} +1 -1
  226. package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js.map +1 -0
  227. package/dist/vscode-observables/observables/dist/observableInternal/transaction.js.map +1 -0
  228. package/dist/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +1 -0
  229. package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/utils/utilsCancellation.js +2 -2
  230. package/dist/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
  231. package/package.json +18 -15
  232. package/dist/commands/artifactCommand.d.ts +0 -14
  233. package/dist/commands/artifactCommand.d.ts.map +0 -1
  234. package/dist/external/vscode-observables/observables/dist/disposables.js.map +0 -1
  235. package/dist/external/vscode-observables/observables/dist/observableInternal/base.js.map +0 -1
  236. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +0 -1
  237. package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +0 -1
  238. package/dist/external/vscode-observables/observables/dist/observableInternal/debugName.js.map +0 -1
  239. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +0 -1
  240. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +0 -1
  241. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +0 -1
  242. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +0 -1
  243. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +0 -1
  244. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +0 -1
  245. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +0 -1
  246. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +0 -1
  247. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +0 -1
  248. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js.map +0 -1
  249. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js.map +0 -1
  250. package/dist/external/vscode-observables/observables/dist/observableInternal/transaction.js.map +0 -1
  251. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +0 -1
  252. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +0 -1
  253. package/dist/formatValue.js +0 -96
  254. package/dist/formatValue.js.map +0 -1
  255. package/dist/packages/common/dist/renderManifest.js +0 -46
  256. package/dist/packages/common/dist/renderManifest.js.map +0 -1
  257. package/dist/packages/semver/dist/index.js.map +0 -1
  258. package/dist/packages/simple-api/dist/chunk-FJ7AVNQE.js +0 -138
  259. package/dist/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +0 -1
  260. package/dist/packages/simple-api/dist/chunk-TTRCY65Z.js +0 -27
  261. package/dist/packages/simple-api/dist/chunk-TTRCY65Z.js.map +0 -1
  262. package/dist/packages/simple-api/dist/chunk-WNXMRXWV.js +0 -28
  263. package/dist/packages/simple-api/dist/chunk-WNXMRXWV.js.map +0 -1
  264. package/dist/packages/simple-api/dist/express.js +0 -104
  265. package/dist/packages/simple-api/dist/express.js.map +0 -1
  266. /package/dist/{packages → js-component-explorer/packages}/semver/dist/index.js +0 -0
  267. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/disposables.js +0 -0
  268. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/base.js +0 -0
  269. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/commonFacade/deps.js +0 -0
  270. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/debugLocation.js +0 -0
  271. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/debugName.js +0 -0
  272. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/index.js +0 -0
  273. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/consoleObservableLogger.js +0 -0
  274. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/logging.js +0 -0
  275. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/baseObservable.js +0 -0
  276. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/derived.js +0 -0
  277. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/derivedImpl.js +0 -0
  278. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/observableFromEvent.js +0 -0
  279. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/observableValue.js +0 -0
  280. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/transaction.js +0 -0
  281. /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/utils/utils.js +0 -0
@@ -1,22 +1,26 @@
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 { availableParallelism } from 'node:os';
5
+ import '../vscode-observables/observables/dist/observableInternal/index.js';
6
+ import { DisposableStore } from '../vscode-observables/observables/dist/disposables.js';
7
+ import '../vscode-observables/observables/dist/observableInternal/debugLocation.js';
8
+ import '../vscode-observables/observables/dist/observableInternal/observables/derived.js';
9
+ import '../vscode-observables/observables/dist/observableInternal/utils/utils.js';
10
+ import '../vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
10
11
  import { PlaywrightBrowserPageFactory } from '../browserPage.js';
11
12
  import { compareScreenshotsInMemory, printComparisonToConsole, writeComparisonReport } from '../comparison.js';
12
13
  import { ConsoleLogger, verbosityToLogLevel, createLogFileOptions, logBuildInfo } from '../logger.js';
13
- import { ResolvedConfig } from '../config.js';
14
+ import { ResolvedConfig, ResolvedCoverageConfig } from '../config.js';
15
+ import { AbsolutePath, RelativePath } from '../path.js';
14
16
  import { ExplorerSession } from '../explorerSession.js';
15
17
  import { FileSystemStorage } from '../storage.js';
16
- import { matchGlob, writeFile } from '../utils.js';
18
+ import { writeFile } from '../utils.js';
17
19
  import { getGitRoot, execGit } from '../git/gitUtils.js';
18
20
  import { serializeManifest } from '../renderManifest.js';
19
- import { MANIFEST_FILENAME } from '../packages/common/dist/renderManifest.js';
21
+ import { parseInputJson } from './inputArg.js';
22
+ import { validateIstanbulMap, v8EntriesToIstanbul, mergeIstanbul, cssEntriesToIstanbul, writeIstanbulFile } from '../coverage.js';
23
+ import { RenderManifestSchema, MANIFEST_FILENAME } from '../js-component-explorer/packages/common/dist/renderManifest.js';
20
24
 
21
25
  class RenderCommand extends Command {
22
26
  static paths = [['render']];
@@ -25,12 +29,12 @@ class RenderCommand extends Command {
25
29
  examples: [
26
30
  ['Render all fixtures', '$0 render'],
27
31
  ['Render and accept as baseline', '$0 render --accept'],
28
- ['Filter by glob', '$0 render --filter "Button/*"'],
32
+ ['Filter by fixture-id regex', '$0 render --fixture-id-regex "^Button/"'],
29
33
  ],
30
34
  });
31
35
  verbose = Option.Counter('-v,--verbose', 0, { description: 'Increase log verbosity (-v debug, -vv trace)' });
32
36
  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' });
37
+ fixtureIdRegex = Option.String('--fixture-id-regex', { required: false, description: 'Filter fixtures whose fixtureId matches this regular expression (unanchored)' });
34
38
  accept = Option.Boolean('--accept', false, { description: 'Write to baseline instead of current (mutually exclusive with --target)' });
35
39
  project = Option.String('-p,--project', process.cwd(), { description: 'Project: a directory, vite config file, or component-explorer.json' });
36
40
  target = Option.String('--target', { required: false, description: 'Screenshot output directory (default: .screenshots/current, or .screenshots/baseline with --accept)' });
@@ -39,105 +43,386 @@ class RenderCommand extends Command {
39
43
  report = Option.String('--report', { required: false, description: 'Output report folder (requires --compare)' });
40
44
  headed = Option.Boolean('--headed', false, { description: 'Show the browser window (useful for debugging)' });
41
45
  timeout = Option.String('--timeout', '30000', { description: 'Navigation timeout in milliseconds (default: 30000)' });
46
+ workers = Option.String('--workers', { description: 'Number of parallel render workers (default: available CPUs, capped at 8; use 1 for serial rendering)' });
42
47
  useHashPaths = Option.Boolean('--useHashPaths', false, { description: 'Use content-hash image paths (images/<hash>.png) for deduplication instead of fixture-id paths' });
48
+ reloadBetweenFixtures = Option.Boolean('--reload-between-fixtures', false, { description: 'Reload the browser page between fixtures for cleaner isolation (slower)' });
49
+ 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.' });
50
+ coverage = Option.Boolean('--coverage', false, { description: 'Collect code coverage during rendering. Output is written to <target>/<coverage-output>/' });
51
+ 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)' });
52
+ coverageJs = Option.String('--coverage-js', { required: false, description: 'JavaScript coverage strategy: "istanbul" (default; vite-plugin-istanbul), "v8" (Playwright V8 + v8-to-istanbul), or "off"' });
53
+ coverageCss = Option.Boolean('--coverage-css', false, { description: 'Also collect CSS coverage via Playwright (raw range data)' });
54
+ coverageOutput = Option.String('--coverage-output', { required: false, description: 'Coverage output directory, relative to --target (default: "coverage")' });
43
55
  async execute() {
44
56
  // Validate mutually exclusive options
45
57
  if (this.accept && this.target) {
46
58
  this.context.stderr.write('Error: --accept and --target are mutually exclusive.\n');
47
59
  return 1;
48
60
  }
61
+ const workerCount = this.workers === undefined
62
+ ? Math.max(1, Math.min(8, availableParallelism()))
63
+ : Number(this.workers);
64
+ if (!Number.isSafeInteger(workerCount) || workerCount < 1) {
65
+ this.context.stderr.write('Error: --workers must be a positive integer.\n');
66
+ return 1;
67
+ }
68
+ let input;
69
+ try {
70
+ input = parseInputJson(this.input);
71
+ }
72
+ catch (e) {
73
+ this.context.stderr.write(`Error: ${e instanceof Error ? e.message : String(e)}\n`);
74
+ return 1;
75
+ }
49
76
  const logger = new ConsoleLogger('render', this.context.stdout, verbosityToLogLevel(this.verbose), createLogFileOptions(this.logFile, this.verbose));
50
77
  logBuildInfo(logger);
78
+ const projectPath = AbsolutePath.resolve(this.project);
51
79
  const disposables = new DisposableStore();
52
- const config = await ResolvedConfig.fromProjectPath(this.project, disposables);
80
+ const config = await ResolvedConfig.fromProjectPath(projectPath, disposables);
53
81
  const projectDir = config.configDir;
54
82
  const serverConfig = config.sessions[0].server;
83
+ // Resolve coverage settings — CLI flags override JSON config.
84
+ let coverage;
85
+ try {
86
+ coverage = this._resolveCoverage(config.coverage);
87
+ }
88
+ catch (e) {
89
+ this.context.stderr.write(`Error: ${e instanceof Error ? e.message : String(e)}\n`);
90
+ return 1;
91
+ }
92
+ if (coverage && coverage.js !== 'istanbul' && coverage.js !== 'v8' && !coverage.css) {
93
+ coverage = undefined;
94
+ }
95
+ // Per-fixture coverage requires page reload between fixtures so the
96
+ // `__coverage__` global / V8 sampler restarts cleanly each iteration.
97
+ const effectiveReloadBetween = this.reloadBetweenFixtures || (coverage?.mode === 'per-fixture' && coverage.enabled);
98
+ if (coverage?.mode === 'per-fixture' && !this.reloadBetweenFixtures) {
99
+ logger.debug('Coverage mode "per-fixture" implies reload-between-fixtures=true');
100
+ }
55
101
  // Determine target directory
56
102
  const defaultTarget = this.accept ? '.screenshots/baseline' : '.screenshots/current';
57
103
  const targetDir = this.target ?? defaultTarget;
58
- const targetPath = path.isAbsolute(targetDir) ? targetDir : path.join(projectDir, targetDir);
104
+ const targetPath = AbsolutePath.fromAbsoluteOrRelative(targetDir, { base: projectDir });
59
105
  // Determine compare target directory
60
106
  const defaultCompareTarget = this.accept ? '.screenshots/current' : '.screenshots/baseline';
61
107
  const compareTargetDir = this.compareTarget ?? defaultCompareTarget;
62
- const compareTargetPath = path.isAbsolute(compareTargetDir) ? compareTargetDir : path.join(projectDir, compareTargetDir);
108
+ const compareTargetPath = AbsolutePath.fromAbsoluteOrRelative(compareTargetDir, { base: projectDir });
63
109
  const storage = new FileSystemStorage(targetPath);
64
110
  const browserFactory = new PlaywrightBrowserPageFactory(this.headed, Number(this.timeout), logger);
65
111
  const screenshots = new Map();
66
112
  let session;
67
113
  try {
68
114
  this.context.stdout.write('Starting server...\n');
69
- session = await ExplorerSession.create('render', serverConfig, browserFactory, { logger });
115
+ const istanbulCoverage = coverage && coverage.js === 'istanbul'
116
+ ? { include: coverage.include, exclude: coverage.exclude }
117
+ : undefined;
118
+ if (istanbulCoverage && serverConfig.kind !== 'vite') {
119
+ 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');
120
+ }
121
+ // Enable CSS sourceURL annotation when CSS coverage is requested.
122
+ // Without it, Vite's HMR-injected `<style>` tags are anonymous and
123
+ // Playwright's CSS coverage drops them.
124
+ const cssSourceUrl = coverage?.css === true && serverConfig.kind === 'vite';
125
+ session = await ExplorerSession.create('render', serverConfig, browserFactory, { logger, istanbulCoverage, cssSourceUrl });
70
126
  this.context.stdout.write(`Server running at ${session.serverUrl}\n`);
71
127
  const listResult = await session.explorer.listFixtures();
72
128
  if (listResult.loadError) {
73
129
  this.context.stderr.write(`Warning: Fixture loading error: ${listResult.loadError}\n`);
74
130
  }
75
- const filtered = this.filter
76
- ? listResult.fixtures.filter(f => matchGlob(f.fixtureId, this.filter))
77
- : listResult.fixtures;
131
+ let filtered;
132
+ if (this.fixtureIdRegex) {
133
+ let regex;
134
+ try {
135
+ regex = new RegExp(this.fixtureIdRegex);
136
+ }
137
+ catch (e) {
138
+ this.context.stderr.write(`Error: Invalid --fixture-id-regex: ${e instanceof Error ? e.message : String(e)}\n`);
139
+ return 1;
140
+ }
141
+ filtered = listResult.fixtures.filter(f => regex.test(f.fixtureId));
142
+ }
143
+ else {
144
+ filtered = listResult.fixtures;
145
+ }
78
146
  this.context.stdout.write(`Found ${filtered.length} fixture(s)\n`);
79
147
  const fixtureEntries = [];
80
148
  const writtenHashes = new Set();
81
- for (const fixture of filtered) {
82
- const result = await session.explorer.screenshotFixture(fixture.fixtureId);
83
- let imageHash;
84
- let imagePath;
85
- if (result.image) {
86
- imageHash = createHash('sha256').update(result.image).digest('hex');
87
- if (this.useHashPaths) {
88
- imagePath = `images/${imageHash}.png`;
89
- if (!writtenHashes.has(imageHash)) {
90
- await storage.write(imagePath, result.image);
91
- writtenHashes.add(imageHash);
149
+ // Coverage state
150
+ const useV8Js = coverage?.js === 'v8';
151
+ const useIstanbulJs = coverage?.js === 'istanbul' && serverConfig.kind === 'vite';
152
+ const useCss = coverage?.css === true;
153
+ const v8FilterInclude = useV8Js ? coverage.include.map(_globToRegExp) : undefined;
154
+ const v8FilterExclude = useV8Js ? coverage.exclude.map(_globToRegExp) : undefined;
155
+ const perFixtureMaps = [];
156
+ const totalMaps = [];
157
+ const renderSession = session;
158
+ const explorers = filtered.length === 0 ? [] : [
159
+ renderSession.explorer,
160
+ ...Array.from({ length: Math.min(workerCount, filtered.length) - 1 }, () => renderSession.createExplorer()),
161
+ ];
162
+ this.context.stdout.write(`Rendering with ${explorers.length} worker(s)\n`);
163
+ let failed = false;
164
+ const serverUrl = session.serverUrl;
165
+ const runWorker = async (explorer, workerIndex) => {
166
+ const startIndex = Math.floor(workerIndex * filtered.length / explorers.length);
167
+ const endIndex = Math.floor((workerIndex + 1) * filtered.length / explorers.length);
168
+ try {
169
+ // Total mode: start coverage once before the loop. The BrowserPage
170
+ // snapshots active trackers automatically on every triggered reload
171
+ // (e.g. `reloadOnError`, `reloadBeforeRender`) and reapplies them on
172
+ // the new document, so callers get the union when they finally stop.
173
+ if (coverage && coverage.mode === 'total' && (useV8Js || useCss || useIstanbulJs)) {
174
+ const page = await explorer.getOrOpenPage();
175
+ if (useV8Js) {
176
+ await page.startJSCoverage({ resetOnNavigation: false });
177
+ }
178
+ if (useCss) {
179
+ await page.startCSSCoverage({ resetOnNavigation: false });
180
+ }
181
+ if (useIstanbulJs) {
182
+ page.startIstanbulSnapshot();
92
183
  }
93
184
  }
94
- else {
95
- imagePath = `${fixture.fixtureId}.png`;
96
- await storage.write(imagePath, result.image);
185
+ for (let i = startIndex; !failed && i < endIndex; i++) {
186
+ const fixture = filtered[i];
187
+ // For per-fixture coverage we reload BEFORE rendering, then start
188
+ // V8/CSS coverage on the fresh page so each fixture is isolated.
189
+ const reloadBeforeRender = effectiveReloadBetween && i > startIndex;
190
+ if (coverage && coverage.mode === 'per-fixture' && (useV8Js || useCss)) {
191
+ const page = await explorer.getOrOpenPage();
192
+ // Reload first (mirrors what screenshotFixture would have done) so
193
+ // that __coverage__ resets and the V8 sampler starts on a clean page.
194
+ if (reloadBeforeRender) {
195
+ await page.reload();
196
+ }
197
+ if (useV8Js) {
198
+ await page.startJSCoverage({ resetOnNavigation: false });
199
+ }
200
+ if (useCss) {
201
+ await page.startCSSCoverage({ resetOnNavigation: false });
202
+ }
203
+ }
204
+ const result = await explorer.screenshotFixture(fixture.fixtureId, {
205
+ reloadOnError: true,
206
+ // We already handled the reload manually above for per-fixture coverage.
207
+ reloadBeforeRender: coverage?.mode === 'per-fixture' && (useV8Js || useCss) ? false : reloadBeforeRender,
208
+ input,
209
+ disposeAfter: true,
210
+ });
211
+ let imageHash;
212
+ let imagePath;
213
+ if (result.image) {
214
+ imageHash = createHash('sha256').update(result.image).digest('hex');
215
+ if (this.useHashPaths) {
216
+ imagePath = `images/${imageHash}.png`;
217
+ if (!writtenHashes.has(imageHash)) {
218
+ writtenHashes.add(imageHash);
219
+ await storage.write(imagePath, result.image);
220
+ }
221
+ }
222
+ else {
223
+ imagePath = `${fixture.fixtureId}.png`;
224
+ await storage.write(imagePath, result.image);
225
+ }
226
+ screenshots.set(fixture.fixtureId, { data: result.image, background: fixture.background, labels: fixture.labels });
227
+ }
228
+ const events = [];
229
+ for (const e of result.events) {
230
+ events.push({ ...e, phase: 'render', isError: e.type !== 'console.log' });
231
+ }
232
+ if (result.renderError) {
233
+ events.push({ type: 'thrownError', phase: 'render', isError: true, message: result.renderError.message, stack: result.renderError.stack });
234
+ }
235
+ if (result.captureError) {
236
+ events.push({ type: 'thrownError', phase: 'render', isError: true, message: result.captureError.message, stack: result.captureError.stack });
237
+ }
238
+ if (result.currentDispose) {
239
+ for (const e of result.currentDispose.events) {
240
+ events.push({ ...e, phase: 'dispose', isError: e.type !== 'console.log' });
241
+ }
242
+ for (const err of result.currentDispose.errors) {
243
+ events.push({ type: 'thrownError', phase: 'dispose', isError: true, message: err.message, stack: err.stack });
244
+ }
245
+ }
246
+ const hasError = events.some(e => e.isError);
247
+ fixtureEntries[i] = {
248
+ fixtureId: fixture.fixtureId,
249
+ imageHash,
250
+ imagePath,
251
+ background: fixture.background,
252
+ labels: [...fixture.labels],
253
+ expectedVisualDescriptions: [...fixture.expectedVisualDescriptions],
254
+ hasError,
255
+ events,
256
+ renderTimeMs: result.renderTimeMs,
257
+ ...(result.output !== undefined ? { output: result.output } : {}),
258
+ };
259
+ const firstError = events.find(e => e.isError);
260
+ const errorLine = firstError ? firstError.message.split('\n')[0].slice(0, 200) : 'unknown error';
261
+ if (!result.image) {
262
+ this.context.stderr.write(` ✗ ${fixture.fixtureId} (no screenshot: ${errorLine})\n`);
263
+ }
264
+ else if (hasError) {
265
+ this.context.stdout.write(` ⚠ ${fixture.fixtureId} (error: ${errorLine})\n`);
266
+ }
267
+ else {
268
+ this.context.stdout.write(` ✓ ${fixture.fixtureId}\n`);
269
+ }
270
+ // Per-fixture coverage: collect after each fixture renders.
271
+ if (coverage && coverage.mode === 'per-fixture' && (useV8Js || useIstanbulJs || useCss)) {
272
+ const page = await explorer.getOrOpenPage();
273
+ let map = {};
274
+ if (useIstanbulJs) {
275
+ const raw = await page.evaluateJs('window.__coverage__ ?? null');
276
+ map = validateIstanbulMap(raw, logger);
277
+ }
278
+ if (useV8Js) {
279
+ const v8 = await page.stopJSCoverage();
280
+ const v8Map = await v8EntriesToIstanbul(v8, {
281
+ viteServerUrl: serverUrl,
282
+ projectRoot: projectDir,
283
+ logger,
284
+ include: v8FilterInclude,
285
+ exclude: v8FilterExclude,
286
+ });
287
+ map = mergeIstanbul([map, v8Map]);
288
+ }
289
+ if (useCss) {
290
+ const css = await page.stopCSSCoverage();
291
+ const cssMap = cssEntriesToIstanbul(css, {
292
+ viteServerUrl: serverUrl,
293
+ projectRoot: projectDir,
294
+ logger,
295
+ });
296
+ map = mergeIstanbul([map, cssMap]);
297
+ }
298
+ perFixtureMaps[i] = { fixtureId: fixture.fixtureId, map };
299
+ }
300
+ }
301
+ // Total mode: collect once at the end. Reload-triggered snapshotting
302
+ // is handled inside `BrowserPage.reload()`, which preserves coverage
303
+ // data across our explicit reloads (e.g. `reloadOnError`,
304
+ // `reloadBeforeRender`). Reloads we don't trigger (e.g. Vite's
305
+ // "optimized dependencies changed") are not handled — for now we
306
+ // accept losing data from before such navigations.
307
+ if (coverage && coverage.mode === 'total' && (useV8Js || useIstanbulJs || useCss)) {
308
+ const page = await explorer.getOrOpenPage();
309
+ if (useIstanbulJs) {
310
+ const raw = await page.evaluateJs('window.__coverage__ ?? null');
311
+ totalMaps.push(validateIstanbulMap(raw, logger));
312
+ // Plus any pre-reload snapshots collected during the run.
313
+ for (const snap of page.stopIstanbulSnapshot()) {
314
+ totalMaps.push(validateIstanbulMap(snap, logger));
315
+ }
316
+ }
317
+ if (useV8Js) {
318
+ const v8 = await page.stopJSCoverage();
319
+ totalMaps.push(await v8EntriesToIstanbul(v8, {
320
+ viteServerUrl: serverUrl,
321
+ projectRoot: projectDir,
322
+ logger,
323
+ include: v8FilterInclude,
324
+ exclude: v8FilterExclude,
325
+ }));
326
+ }
327
+ if (useCss) {
328
+ const css = await page.stopCSSCoverage();
329
+ totalMaps.push(cssEntriesToIstanbul(css, {
330
+ viteServerUrl: serverUrl,
331
+ projectRoot: projectDir,
332
+ logger,
333
+ }));
334
+ }
97
335
  }
98
- screenshots.set(fixture.fixtureId, { data: result.image, background: fixture.background, labels: fixture.labels });
99
- }
100
- fixtureEntries.push({
101
- fixtureId: fixture.fixtureId,
102
- imageHash,
103
- imagePath,
104
- background: fixture.background,
105
- labels: [...fixture.labels],
106
- expectedVisualDescriptions: [...fixture.expectedVisualDescriptions],
107
- hasError: result.hasError,
108
- error: result.error,
109
- events: result.events,
110
- renderTimeMs: result.renderTimeMs,
111
- });
112
- if (!result.image) {
113
- this.context.stderr.write(` ✗ ${fixture.fixtureId} (no screenshot)\n`);
114
- }
115
- else if (result.hasError) {
116
- this.context.stdout.write(` ⚠ ${fixture.fixtureId} (rendered with errors)\n`);
117
336
  }
118
- else {
119
- this.context.stdout.write(` ✓ ${fixture.fixtureId}\n`);
337
+ catch (error) {
338
+ failed = true;
339
+ throw error;
120
340
  }
341
+ };
342
+ // Drain in-flight workers before disposing their pages or writing the manifest.
343
+ const results = await Promise.allSettled(explorers.map(runWorker));
344
+ const errors = results.filter(result => result.status === 'rejected').map(result => result.reason);
345
+ if (errors.length > 0) {
346
+ throw new AggregateError(errors, `Failed to render fixtures: ${errors.map(error => error instanceof Error ? error.message : String(error)).join('; ')}`);
121
347
  }
122
348
  const gitRoot = await getGitRoot(projectDir);
123
349
  const commitMetadata = await collectGitMetadata(gitRoot);
124
350
  const repoOrigin = await getRepoOwnerAndName(gitRoot);
125
- const manifest = {
351
+ // Write coverage output(s) BEFORE the manifest so we can reference
352
+ // each emitted file from the manifest by relative path.
353
+ let topLevelCoverage;
354
+ const perFixtureCoverageRef = new Map();
355
+ if (coverage && coverage.enabled) {
356
+ const coverageDir = AbsolutePath.fromAbsoluteOrRelative(coverage.outputDir, { base: targetPath });
357
+ const toManifestRelative = (absPath) => {
358
+ const rel = path.relative(targetPath.value, absPath.value).split(path.sep).join('/');
359
+ return rel.startsWith('.') ? rel : './' + rel;
360
+ };
361
+ if (coverage.mode === 'per-fixture') {
362
+ for (const { fixtureId, map } of perFixtureMaps) {
363
+ if (Object.keys(map).length === 0) {
364
+ continue;
365
+ }
366
+ const safeId = fixtureId.replace(/[/\\:*?"<>|]/g, '_');
367
+ const outPath = coverageDir.join(new RelativePath(`${safeId}.coverage.json`));
368
+ await writeIstanbulFile(outPath, map);
369
+ perFixtureCoverageRef.set(fixtureId, {
370
+ coverageDataIstanbul: toManifestRelative(outPath),
371
+ });
372
+ }
373
+ // Aggregated total alongside per-fixture files.
374
+ const merged = mergeIstanbul(perFixtureMaps.map(p => p.map));
375
+ if (Object.keys(merged).length > 0) {
376
+ const totalPath = coverageDir.join(new RelativePath('coverage-final.json'));
377
+ await writeIstanbulFile(totalPath, merged);
378
+ topLevelCoverage = { coverageDataIstanbul: toManifestRelative(totalPath) };
379
+ }
380
+ this.context.stdout.write(` Coverage: ${perFixtureCoverageRef.size} per-fixture report(s) + total in ${path.relative(projectDir.value, coverageDir.value)}/\n`);
381
+ }
382
+ else {
383
+ const merged = mergeIstanbul(totalMaps);
384
+ if (Object.keys(merged).length > 0) {
385
+ const totalPath = coverageDir.join(new RelativePath('coverage-final.json'));
386
+ await writeIstanbulFile(totalPath, merged);
387
+ topLevelCoverage = { coverageDataIstanbul: toManifestRelative(totalPath) };
388
+ }
389
+ this.context.stdout.write(` Coverage: ${path.relative(projectDir.value, coverageDir.value)}/\n`);
390
+ }
391
+ }
392
+ // Attach per-fixture coverage refs to manifest entries (per-fixture mode only).
393
+ if (perFixtureCoverageRef.size > 0) {
394
+ for (const entry of fixtureEntries) {
395
+ const ref = perFixtureCoverageRef.get(entry.fixtureId);
396
+ if (ref) {
397
+ entry.coverage = ref;
398
+ }
399
+ }
400
+ }
401
+ const manifest = RenderManifestSchema.parse({
126
402
  version: 1,
127
403
  repository: repoOrigin,
128
404
  commit: commitMetadata,
405
+ coverage: topLevelCoverage,
129
406
  fixtures: fixtureEntries,
130
- };
131
- const manifestPath = path.join(targetPath, MANIFEST_FILENAME);
407
+ });
408
+ const manifestPath = targetPath.join(new RelativePath(MANIFEST_FILENAME));
132
409
  await writeFile(manifestPath, Buffer.from(serializeManifest(manifest)));
133
410
  this.context.stdout.write(`\nRendered to ${targetDir}/\n`);
134
411
  this.context.stdout.write(` Manifest: ${manifestPath}\n`);
135
412
  this.context.stdout.write(` ${fixtureEntries.length} fixtures, ${writtenHashes.size} unique images\n`);
136
413
  }
137
414
  finally {
138
- await session?.dispose();
139
- await browserFactory.dispose();
140
- disposables.dispose();
415
+ try {
416
+ await session?.dispose();
417
+ }
418
+ finally {
419
+ try {
420
+ await browserFactory.dispose();
421
+ }
422
+ finally {
423
+ disposables.dispose();
424
+ }
425
+ }
141
426
  }
142
427
  if (this.compare) {
143
428
  this.context.stdout.write(`\nComparing against ${compareTargetDir}...\n`);
@@ -145,6 +430,40 @@ class RenderCommand extends Command {
145
430
  }
146
431
  return 0;
147
432
  }
433
+ _resolveCoverage(fromConfig) {
434
+ // If neither CLI nor config requests coverage, do nothing.
435
+ const configWantsCoverage = fromConfig?.enabled ?? false;
436
+ const cliWantsCoverage = this.coverage || this.coverageCss || this.coverageJs !== undefined || this.coverageMode !== undefined;
437
+ if (!configWantsCoverage && !cliWantsCoverage) {
438
+ return undefined;
439
+ }
440
+ 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}']);
441
+ // Mode override
442
+ let mode = base.mode;
443
+ if (this.coverageMode !== undefined) {
444
+ if (this.coverageMode !== 'total' && this.coverageMode !== 'per-fixture') {
445
+ throw new Error(`--coverage-mode must be "total" or "per-fixture", got "${this.coverageMode}"`);
446
+ }
447
+ mode = this.coverageMode;
448
+ }
449
+ // JS strategy override
450
+ let js = base.js;
451
+ if (this.coverageJs !== undefined) {
452
+ if (this.coverageJs === 'off' || this.coverageJs === 'false') {
453
+ js = false;
454
+ }
455
+ else if (this.coverageJs === 'istanbul' || this.coverageJs === 'v8') {
456
+ js = this.coverageJs;
457
+ }
458
+ else {
459
+ throw new Error(`--coverage-js must be "istanbul", "v8", or "off", got "${this.coverageJs}"`);
460
+ }
461
+ }
462
+ // CSS toggle: CLI flag forces on; config decides otherwise.
463
+ const css = this.coverageCss || base.css;
464
+ const outputDir = this.coverageOutput ?? base.outputDir;
465
+ return new ResolvedCoverageConfig(mode, js, css, outputDir, base.include, base.exclude);
466
+ }
148
467
  async _runComparison(screenshots, targetPath, compareTargetPath, projectDir) {
149
468
  const compareStorage = new FileSystemStorage(compareTargetPath);
150
469
  const result = await compareScreenshotsInMemory(screenshots, {
@@ -154,7 +473,7 @@ class RenderCommand extends Command {
154
473
  });
155
474
  printComparisonToConsole(result, this.context.stdout);
156
475
  if (this.report) {
157
- const reportDir = path.isAbsolute(this.report) ? this.report : path.join(projectDir, this.report);
476
+ const reportDir = AbsolutePath.fromAbsoluteOrRelative(this.report, { base: projectDir });
158
477
  await writeComparisonReport({
159
478
  reportDir,
160
479
  result,
@@ -168,6 +487,16 @@ class RenderCommand extends Command {
168
487
  return (result.added.length > 0 || result.changed.length > 0) ? 1 : 0;
169
488
  }
170
489
  }
490
+ function _globToRegExp(glob) {
491
+ // Escape regex metacharacters EXCEPT glob ones we'll process below: * ? { } , and /.
492
+ let pattern = glob.replace(/([.+^$()|[\]\\])/g, '\\$1');
493
+ // Brace expansion: {a,b,c} → (a|b|c)
494
+ pattern = pattern.replace(/\{([^{}]+)\}/g, (_, body) => '(' + body.split(',').join('|') + ')');
495
+ // ** → placeholder, * → [^/]*, then placeholder → .*
496
+ pattern = pattern.replace(/\*\*/g, '\u29eb').replace(/\*/g, '[^/]*').replace(/\u29eb/g, '.*');
497
+ pattern = pattern.replace(/\?/g, '.');
498
+ return new RegExp(pattern);
499
+ }
171
500
  async function collectGitMetadata(gitRoot) {
172
501
  const hash = (await execGit(gitRoot, ['rev-parse', 'HEAD'])).trim();
173
502
  const logOutput = (await execGit(gitRoot, [
@@ -203,7 +532,7 @@ async function getRepoOwnerAndName(gitRoot) {
203
532
  catch {
204
533
  // no remote configured
205
534
  }
206
- return { owner: 'unknown', name: path.basename(gitRoot) };
535
+ return { owner: 'unknown', name: path.basename(gitRoot.value) };
207
536
  }
208
537
 
209
538
  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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=renderCommand.test.d.ts.map