@vscode/component-explorer-cli 0.1.1-0 → 0.1.1-10

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 (167) hide show
  1. package/README.md +177 -0
  2. package/dist/browserPage.js +4 -2
  3. package/dist/browserPage.js.map +1 -1
  4. package/dist/commands/acceptCommand.d.ts +3 -1
  5. package/dist/commands/acceptCommand.d.ts.map +1 -1
  6. package/dist/commands/acceptCommand.js +20 -8
  7. package/dist/commands/acceptCommand.js.map +1 -1
  8. package/dist/commands/compareCommand.d.ts +6 -1
  9. package/dist/commands/compareCommand.d.ts.map +1 -1
  10. package/dist/commands/compareCommand.js +51 -73
  11. package/dist/commands/compareCommand.js.map +1 -1
  12. package/dist/commands/mcpCommand.d.ts +10 -0
  13. package/dist/commands/mcpCommand.d.ts.map +1 -0
  14. package/dist/commands/mcpCommand.js +58 -0
  15. package/dist/commands/mcpCommand.js.map +1 -0
  16. package/dist/commands/screenshotCommand.d.ts +8 -2
  17. package/dist/commands/screenshotCommand.d.ts.map +1 -1
  18. package/dist/commands/screenshotCommand.js +70 -17
  19. package/dist/commands/screenshotCommand.js.map +1 -1
  20. package/dist/commands/serveCommand.d.ts +19 -0
  21. package/dist/commands/serveCommand.d.ts.map +1 -0
  22. package/dist/commands/serveCommand.js +194 -0
  23. package/dist/commands/serveCommand.js.map +1 -0
  24. package/dist/commands/watchCommand.d.ts +2 -2
  25. package/dist/commands/watchCommand.d.ts.map +1 -1
  26. package/dist/commands/watchCommand.js +39 -26
  27. package/dist/commands/watchCommand.js.map +1 -1
  28. package/dist/comparison.d.ts +60 -0
  29. package/dist/comparison.d.ts.map +1 -0
  30. package/dist/comparison.js +250 -0
  31. package/dist/comparison.js.map +1 -0
  32. package/dist/component-explorer-config.schema.json +183 -0
  33. package/dist/componentExplorer.d.ts +44 -2
  34. package/dist/componentExplorer.d.ts.map +1 -1
  35. package/dist/componentExplorer.js +103 -18
  36. package/dist/componentExplorer.js.map +1 -1
  37. package/dist/daemon/DaemonContext.d.ts +4 -0
  38. package/dist/daemon/DaemonContext.d.ts.map +1 -0
  39. package/dist/daemon/DaemonService.d.ts +188 -0
  40. package/dist/daemon/DaemonService.d.ts.map +1 -0
  41. package/dist/daemon/DaemonService.js +610 -0
  42. package/dist/daemon/DaemonService.js.map +1 -0
  43. package/dist/daemon/approvalStore.d.ts +51 -0
  44. package/dist/daemon/approvalStore.d.ts.map +1 -0
  45. package/dist/daemon/approvalStore.js +58 -0
  46. package/dist/daemon/approvalStore.js.map +1 -0
  47. package/dist/daemon/lifecycle.d.ts +13 -0
  48. package/dist/daemon/lifecycle.d.ts.map +1 -0
  49. package/dist/daemon/lifecycle.js +68 -0
  50. package/dist/daemon/lifecycle.js.map +1 -0
  51. package/dist/daemon/pipeClient.d.ts +9 -0
  52. package/dist/daemon/pipeClient.d.ts.map +1 -0
  53. package/dist/daemon/pipeClient.js +111 -0
  54. package/dist/daemon/pipeClient.js.map +1 -0
  55. package/dist/daemon/pipeName.d.ts +2 -0
  56. package/dist/daemon/pipeName.d.ts.map +1 -0
  57. package/dist/daemon/pipeName.js +14 -0
  58. package/dist/daemon/pipeName.js.map +1 -0
  59. package/dist/daemon/pipeServer.d.ts +4 -0
  60. package/dist/daemon/pipeServer.d.ts.map +1 -0
  61. package/dist/daemon/pipeServer.js +25 -0
  62. package/dist/daemon/pipeServer.js.map +1 -0
  63. package/dist/daemon/types.d.ts +12 -0
  64. package/dist/daemon/types.d.ts.map +1 -0
  65. package/dist/dependencyInstaller.js +8 -5
  66. package/dist/dependencyInstaller.js.map +1 -1
  67. package/dist/explorerSession.d.ts +5 -3
  68. package/dist/explorerSession.d.ts.map +1 -1
  69. package/dist/explorerSession.js +11 -5
  70. package/dist/explorerSession.js.map +1 -1
  71. package/dist/external/vscode-observables/observables/dist/disposables.js +66 -0
  72. package/dist/external/vscode-observables/observables/dist/disposables.js.map +1 -0
  73. package/dist/external/vscode-observables/observables/dist/observableInternal/base.js +22 -0
  74. package/dist/external/vscode-observables/observables/dist/observableInternal/base.js.map +1 -0
  75. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js +37 -0
  76. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -0
  77. package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js +77 -0
  78. package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -0
  79. package/dist/external/vscode-observables/observables/dist/observableInternal/debugName.js +114 -0
  80. package/dist/external/vscode-observables/observables/dist/observableInternal/debugName.js.map +1 -0
  81. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js +22 -0
  82. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +1 -0
  83. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js +356 -0
  84. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -0
  85. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js +79 -0
  86. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +1 -0
  87. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/logging.js +100 -0
  88. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +1 -0
  89. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js +143 -0
  90. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -0
  91. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js +28 -0
  92. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -0
  93. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js +362 -0
  94. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +1 -0
  95. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js +123 -0
  96. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +1 -0
  97. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js +81 -0
  98. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +1 -0
  99. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js +23 -0
  100. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js.map +1 -0
  101. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js +226 -0
  102. package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js.map +1 -0
  103. package/dist/external/vscode-observables/observables/dist/observableInternal/transaction.js +87 -0
  104. package/dist/external/vscode-observables/observables/dist/observableInternal/transaction.js.map +1 -0
  105. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utils.js +68 -0
  106. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +1 -0
  107. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js +55 -0
  108. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
  109. package/dist/formatValue.d.ts +2 -0
  110. package/dist/formatValue.d.ts.map +1 -0
  111. package/dist/formatValue.js +96 -0
  112. package/dist/formatValue.js.map +1 -0
  113. package/dist/formatValue.test.d.ts +2 -0
  114. package/dist/formatValue.test.d.ts.map +1 -0
  115. package/dist/git/gitCommitId.js +4 -2
  116. package/dist/git/gitCommitId.js.map +1 -1
  117. package/dist/git/gitCommitResolver.js +11 -3
  118. package/dist/git/gitCommitResolver.js.map +1 -1
  119. package/dist/git/gitService.js +5 -2
  120. package/dist/git/gitService.js.map +1 -1
  121. package/dist/git/gitUtils.js +10 -7
  122. package/dist/git/gitUtils.js.map +1 -1
  123. package/dist/git/gitWorktreeManager.js +5 -2
  124. package/dist/git/gitWorktreeManager.js.map +1 -1
  125. package/dist/httpServer.d.ts +9 -7
  126. package/dist/httpServer.d.ts.map +1 -1
  127. package/dist/httpServer.js +75 -11
  128. package/dist/httpServer.js.map +1 -1
  129. package/dist/index.js +6 -1
  130. package/dist/index.js.map +1 -1
  131. package/dist/logger.d.ts +17 -1
  132. package/dist/logger.d.ts.map +1 -1
  133. package/dist/logger.js +43 -6
  134. package/dist/logger.js.map +1 -1
  135. package/dist/mcp/McpServer.d.ts +58 -0
  136. package/dist/mcp/McpServer.d.ts.map +1 -0
  137. package/dist/mcp/McpServer.js +820 -0
  138. package/dist/mcp/McpServer.js.map +1 -0
  139. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js +137 -0
  140. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +1 -0
  141. package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js +27 -0
  142. package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js.map +1 -0
  143. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js +24 -0
  144. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +1 -0
  145. package/dist/packages/simple-api/dist/express.js +104 -0
  146. package/dist/packages/simple-api/dist/express.js.map +1 -0
  147. package/dist/resolveProject.d.ts +21 -0
  148. package/dist/resolveProject.d.ts.map +1 -0
  149. package/dist/resolveProject.js +39 -0
  150. package/dist/resolveProject.js.map +1 -0
  151. package/dist/screenshotCache.js +7 -4
  152. package/dist/screenshotCache.js.map +1 -1
  153. package/dist/sourceTreeId.js +4 -2
  154. package/dist/sourceTreeId.js.map +1 -1
  155. package/dist/storage.js +5 -2
  156. package/dist/storage.js.map +1 -1
  157. package/dist/utils.d.ts +24 -0
  158. package/dist/utils.d.ts.map +1 -0
  159. package/dist/utils.js +50 -0
  160. package/dist/utils.js.map +1 -0
  161. package/dist/viteProjectRef.js +5 -2
  162. package/dist/viteProjectRef.js.map +1 -1
  163. package/dist/watchConfig.d.ts +41 -0
  164. package/dist/watchConfig.d.ts.map +1 -1
  165. package/dist/watchConfig.js +48 -23
  166. package/dist/watchConfig.js.map +1 -1
  167. package/package.json +19 -6
@@ -1,10 +1,15 @@
1
1
  import { Command, Option } from 'clipanion';
2
+ import * as path from 'node:path';
2
3
  import { PlaywrightBrowserPageFactory } from '../browserPage.js';
4
+ import { compareScreenshotsInMemory, printComparisonToConsole, writeComparisonReport } from '../comparison.js';
3
5
  import { BrowserComponentExplorer } from '../componentExplorer.js';
4
6
  import { DefaultComponentExplorerHttpServerFactory } from '../httpServer.js';
7
+ import { ConsoleLogger, verbosityToLogLevel } from '../logger.js';
8
+ import { resolveProject, resolvedProjectToViteProjectRef } from '../resolveProject.js';
5
9
  import { FileSystemStorage } from '../storage.js';
6
- import { ViteProjectRef } from '../viteProjectRef.js';
7
- export class ScreenshotCommand extends Command {
10
+ import { matchGlob } from '../utils.js';
11
+
12
+ class ScreenshotCommand extends Command {
8
13
  static paths = [['screenshot']];
9
14
  static usage = Command.Usage({
10
15
  description: 'Capture screenshots of all fixtures',
@@ -14,43 +19,91 @@ export class ScreenshotCommand extends Command {
14
19
  ['Filter by glob', '$0 screenshot --filter "Button/*"'],
15
20
  ],
16
21
  });
22
+ verbose = Option.Counter('-v,--verbose', 0, { description: 'Increase log verbosity (-v debug, -vv trace)' });
17
23
  filter = Option.String('--filter', { required: false, description: 'Filter fixtures by glob pattern' });
18
- accept = Option.Boolean('--accept', false, { description: 'Write directly to baseline instead of current' });
19
- root = Option.String('--root', process.cwd(), { description: 'Project root directory' });
24
+ accept = Option.Boolean('--accept', false, { description: 'Write to baseline instead of current (mutually exclusive with --target)' });
25
+ project = Option.String('-p,--project', process.cwd(), { description: 'Project: a directory, vite config file, or component-explorer.json' });
26
+ target = Option.String('--target', { required: false, description: 'Screenshot output directory (default: .screenshots/current, or .screenshots/baseline with --accept)' });
27
+ compare = Option.Boolean('--compare', false, { description: 'Compare screenshots after capturing' });
28
+ compareTarget = Option.String('--compare-target', { required: false, description: 'Directory to compare against (default: .screenshots/baseline, or .screenshots/current with --accept)' });
29
+ report = Option.String('--report', { required: false, description: 'Output report folder (requires --compare)' });
20
30
  async execute() {
21
- const outputDir = this.accept ? 'baseline' : 'current';
22
- const storage = new FileSystemStorage(`${this.root}/.screenshots`);
31
+ // Validate mutually exclusive options
32
+ if (this.accept && this.target) {
33
+ this.context.stderr.write('Error: --accept and --target are mutually exclusive.\n');
34
+ return 1;
35
+ }
36
+ const logger = new ConsoleLogger('screenshot', this.context.stdout, verbosityToLogLevel(this.verbose));
37
+ const resolved = await resolveProject(this.project);
38
+ const projectDir = resolved.projectDir;
39
+ const viteProject = resolvedProjectToViteProjectRef(resolved);
40
+ // Determine target directory
41
+ const defaultTarget = this.accept ? '.screenshots/baseline' : '.screenshots/current';
42
+ const targetDir = this.target ?? defaultTarget;
43
+ const targetPath = path.isAbsolute(targetDir) ? targetDir : path.join(projectDir, targetDir);
44
+ // Determine compare target directory
45
+ const defaultCompareTarget = this.accept ? '.screenshots/current' : '.screenshots/baseline';
46
+ const compareTargetDir = this.compareTarget ?? defaultCompareTarget;
47
+ const compareTargetPath = path.isAbsolute(compareTargetDir) ? compareTargetDir : path.join(projectDir, compareTargetDir);
48
+ const storage = new FileSystemStorage(targetPath);
23
49
  const serverFactory = new DefaultComponentExplorerHttpServerFactory();
24
50
  const browserFactory = new PlaywrightBrowserPageFactory();
51
+ const screenshots = new Map();
25
52
  let server;
26
53
  let explorer;
27
54
  try {
28
55
  this.context.stdout.write('Starting Vite dev server...\n');
29
- server = await serverFactory.createViteServer(ViteProjectRef.fromSourceRootDir(this.root));
56
+ server = await serverFactory.createViteServer(viteProject, { logger });
30
57
  this.context.stdout.write(`Server running at ${server.url}\n`);
31
- explorer = new BrowserComponentExplorer(browserFactory, server);
58
+ explorer = new BrowserComponentExplorer(browserFactory, server, logger);
32
59
  const fixtures = await explorer.listFixtures();
33
60
  const filtered = this.filter
34
61
  ? fixtures.filter(f => matchGlob(f.fixtureId, this.filter))
35
62
  : fixtures;
36
63
  this.context.stdout.write(`Found ${filtered.length} fixture(s)\n`);
37
64
  for (const fixture of filtered) {
38
- const png = await explorer.screenshotFixture(fixture.fixtureId);
39
- const filePath = `${outputDir}/${fixture.fixtureId}.png`;
40
- await storage.write(filePath, png);
65
+ const result = await explorer.screenshotFixture(fixture.fixtureId);
66
+ await storage.write(`${fixture.fixtureId}.png`, result.image);
67
+ screenshots.set(fixture.fixtureId, { data: result.image, background: fixture.background });
41
68
  this.context.stdout.write(` ✓ ${fixture.fixtureId}\n`);
42
69
  }
43
- this.context.stdout.write(`\nScreenshots saved to .screenshots/${outputDir}/\n`);
70
+ this.context.stdout.write(`\nScreenshots saved to ${targetDir}/\n`);
44
71
  }
45
72
  finally {
46
73
  await explorer?.dispose();
47
74
  await browserFactory.dispose();
48
75
  await server?.dispose();
49
76
  }
77
+ // Compare if requested
78
+ if (this.compare) {
79
+ this.context.stdout.write(`\nComparing against ${compareTargetDir}...\n`);
80
+ return this._runComparison(screenshots, targetPath, compareTargetPath, projectDir);
81
+ }
82
+ return 0;
83
+ }
84
+ async _runComparison(screenshots, targetPath, compareTargetPath, projectDir) {
85
+ const compareStorage = new FileSystemStorage(compareTargetPath);
86
+ const result = await compareScreenshotsInMemory(screenshots, {
87
+ list: async () => [],
88
+ read: (id) => compareStorage.read(id),
89
+ exists: (id) => compareStorage.exists(id),
90
+ });
91
+ printComparisonToConsole(result, this.context.stdout);
92
+ if (this.report) {
93
+ const reportDir = path.isAbsolute(this.report) ? this.report : path.join(projectDir, this.report);
94
+ await writeComparisonReport({
95
+ reportDir,
96
+ result,
97
+ baselinePath: compareTargetPath,
98
+ currentPath: targetPath,
99
+ getBaselineData: (id) => compareStorage.read(`${id}.png`),
100
+ getCurrentData: async (id) => screenshots.get(id).data,
101
+ });
102
+ this.context.stdout.write(`\nReport written to: ${this.report}/\n`);
103
+ }
104
+ return (result.added.length > 0 || result.changed.length > 0) ? 1 : 0;
50
105
  }
51
106
  }
52
- function matchGlob(fixtureId, pattern) {
53
- const regex = new RegExp('^' + pattern.replace(/\*/g, '.*').replace(/\?/g, '.') + '$');
54
- return regex.test(fixtureId);
55
- }
56
- //# sourceMappingURL=screenshotCommand.js.map
107
+
108
+ export { ScreenshotCommand };
109
+ //# sourceMappingURL=screenshotCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenshotCommand.js","sourceRoot":"","sources":["../../src/commands/screenshotCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenshotCommand.js","sources":["../../src/commands/screenshotCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Command } from 'clipanion';
2
+ export declare class ServeCommand extends Command {
3
+ static paths: string[][];
4
+ static usage: import("clipanion").Usage;
5
+ readonly verbose: number;
6
+ readonly project: string;
7
+ readonly background: boolean;
8
+ readonly attach: boolean;
9
+ readonly kill: boolean;
10
+ readonly redirectionPort: string | undefined;
11
+ readonly redirectionHost: string | undefined;
12
+ execute(): Promise<void>;
13
+ private _ensureBackground;
14
+ private _attach;
15
+ private _printEvent;
16
+ private _startDaemon;
17
+ private _startRedirectionServer;
18
+ }
19
+ //# sourceMappingURL=serveCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serveCommand.d.ts","sourceRoot":"","sources":["../../src/commands/serveCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAe5C,qBAAa,YAAa,SAAQ,OAAO;IACxC,OAAgB,KAAK,aAAe;IAEpC,OAAgB,KAAK,4BAgBlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,OAAO,SAA2I;IAC3J,QAAQ,CAAC,UAAU,UAAoG;IACvH,QAAQ,CAAC,MAAM,UAAsG;IACrH,QAAQ,CAAC,IAAI,UAAkF;IAC/F,QAAQ,CAAC,eAAe,qBAA8H;IACtJ,QAAQ,CAAC,eAAe,qBAAsH;IAExI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAuDhB,iBAAiB;YA0BjB,OAAO;IAgBrB,OAAO,CAAC,WAAW;YAeL,YAAY;IA+C1B,OAAO,CAAC,uBAAuB;CAyB/B"}
@@ -0,0 +1,194 @@
1
+ import { Command, Option } from 'clipanion';
2
+ import { spawn } from 'node:child_process';
3
+ import { fileURLToPath } from 'node:url';
4
+ import * as path from 'node:path';
5
+ import * as http from 'node:http';
6
+ import { ConsoleLogger, verbosityToLogLevel } from '../logger.js';
7
+ import { ResolvedWatchConfig } from '../watchConfig.js';
8
+ import { DaemonService } from '../daemon/DaemonService.js';
9
+ import { startPipeServer } from '../daemon/pipeServer.js';
10
+ import { daemonPipeName } from '../daemon/pipeName.js';
11
+ import { tryConnect, waitForDaemon } from '../daemon/lifecycle.js';
12
+ import { resolveProject } from '../resolveProject.js';
13
+ import { buildExplorerUrl } from '../utils.js';
14
+
15
+ class ServeCommand extends Command {
16
+ static paths = [['serve']];
17
+ static usage = Command.Usage({
18
+ description: 'Start or attach to a Component Explorer daemon.',
19
+ details: `
20
+ Without flags: starts a foreground daemon. Errors if one is already running.
21
+ --background: spawns a detached daemon, prints pipe name, exits. No-op if already running.
22
+ --attach: connects to a running daemon and streams events. Errors if none is running.
23
+ --background --attach: ensures a daemon is running, then attaches.
24
+ --kill: shuts down a running daemon.
25
+ `,
26
+ examples: [
27
+ ['Start in foreground', '$0 serve -c config.json'],
28
+ ['Start in background', '$0 serve -c config.json --background'],
29
+ ['Attach to running daemon', '$0 serve -c config.json --attach'],
30
+ ['Ensure daemon + attach', '$0 serve -c config.json --background --attach'],
31
+ ['Kill running daemon', '$0 serve -c config.json --kill'],
32
+ ],
33
+ });
34
+ verbose = Option.Counter('-v,--verbose', 0, { description: 'Increase log verbosity (-v debug, -vv trace)' });
35
+ project = Option.String('-p,--project,-c', { required: true, description: 'Project: a directory, vite config file, or component-explorer.json' });
36
+ background = Option.Boolean('--background', false, { description: 'Spawn as a detached background process' });
37
+ attach = Option.Boolean('--attach', false, { description: 'Attach to a running daemon and stream events' });
38
+ kill = Option.Boolean('--kill', false, { description: 'Shut down a running daemon' });
39
+ redirectionPort = Option.String('--redirectionPort', { description: 'Start an HTTP server that redirects /___explorer to the session URL' });
40
+ redirectionHost = Option.String('--redirectionHost', { description: 'Host to bind the redirection server to (default: localhost)' });
41
+ async execute() {
42
+ const resolved = await resolveProject(this.project);
43
+ if (resolved.kind !== 'explorerConfig') {
44
+ this.context.stderr.write('Error: serve requires a component-explorer.json config file.\n');
45
+ return;
46
+ }
47
+ const configPath = resolved.configPath;
48
+ const pipeName = daemonPipeName(configPath);
49
+ if (this.kill) {
50
+ const client = await tryConnect(pipeName, { clientName: 'cli-kill' });
51
+ if (!client) {
52
+ this.context.stderr.write('No daemon running.\n');
53
+ return;
54
+ }
55
+ await client.methods.shutdown();
56
+ this.context.stdout.write('Daemon shut down.\n');
57
+ return;
58
+ }
59
+ if (this.background && this.attach) {
60
+ await this._ensureBackground(pipeName, configPath);
61
+ const client = await tryConnect(pipeName, { clientName: 'cli-attach' });
62
+ if (!client) {
63
+ this.context.stderr.write('Failed to connect after starting daemon.\n');
64
+ return;
65
+ }
66
+ return this._attach(client, pipeName);
67
+ }
68
+ if (this.background) {
69
+ return this._ensureBackground(pipeName, configPath);
70
+ }
71
+ if (this.attach) {
72
+ const client = await tryConnect(pipeName, { clientName: 'cli-attach' });
73
+ if (!client) {
74
+ this.context.stderr.write(`No daemon running. Start one first:\n $0 serve --project ${this.project}\n`);
75
+ return;
76
+ }
77
+ return this._attach(client, pipeName);
78
+ }
79
+ // Default: start foreground daemon
80
+ const existing = await tryConnect(pipeName, { clientName: 'cli-serve' });
81
+ if (existing) {
82
+ this.context.stderr.write(`Daemon already running (pipe: ${pipeName}).\n`);
83
+ this.context.stderr.write(` Attach: component-explorer serve -c ${configPath} --attach\n`);
84
+ this.context.stderr.write(` Kill: component-explorer serve -c ${configPath} --kill\n`);
85
+ return;
86
+ }
87
+ return this._startDaemon(pipeName, configPath);
88
+ }
89
+ async _ensureBackground(pipeName, configPath) {
90
+ if (await tryConnect(pipeName, { clientName: 'cli-serve' })) {
91
+ this.context.stdout.write('Daemon already running.\n');
92
+ return;
93
+ }
94
+ const cliEntryPoint = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../index.js');
95
+ const args = [cliEntryPoint, 'serve', '--project', configPath];
96
+ if (this.redirectionPort) {
97
+ args.push('--redirectionPort', this.redirectionPort);
98
+ }
99
+ if (this.redirectionHost) {
100
+ args.push('--redirectionHost', this.redirectionHost);
101
+ }
102
+ const child = spawn(process.execPath, args, { detached: true, stdio: 'ignore', windowsHide: true });
103
+ child.unref();
104
+ await waitForDaemon(pipeName, { timeoutMs: 30_000, clientName: 'cli-serve' });
105
+ this.context.stdout.write(`Daemon started (pipe: ${pipeName})\n`);
106
+ }
107
+ async _attach(client, pipeName) {
108
+ this.context.stdout.write(`Attached to daemon (pipe: ${pipeName})\n`);
109
+ this.context.stdout.write('Listening for events... (Ctrl+C to detach)\n\n');
110
+ const events = await client.methods.events();
111
+ for await (const event of events) {
112
+ this._printEvent(event);
113
+ }
114
+ this.context.stdout.write('\nEvent stream ended.\n');
115
+ }
116
+ _printEvent(event) {
117
+ const ts = new Date().toLocaleTimeString();
118
+ switch (event.type) {
119
+ case 'source-change':
120
+ this.context.stdout.write(`[${ts}] source-change ${event.sessionName} sourceTreeId=${event.sourceTreeId}\n`);
121
+ break;
122
+ case 'ref-change':
123
+ this.context.stdout.write(`[${ts}] ref-change ${event.sessionName} newCommit=${event.newCommit}\n`);
124
+ break;
125
+ case 'log':
126
+ this.context.stdout.write(`[${ts}] [${event.level}] ${event.message}\n`);
127
+ break;
128
+ }
129
+ }
130
+ async _startDaemon(pipeName, configPath) {
131
+ const logger = new ConsoleLogger('serve', this.context.stdout, verbosityToLogLevel(this.verbose));
132
+ logger.log(`Reading config from ${configPath}`);
133
+ const resolvedConfig = await ResolvedWatchConfig.fromFile(configPath);
134
+ logger.log('Setting up sessions...');
135
+ const service = await DaemonService.create(resolvedConfig, logger, pipeName);
136
+ logger.log(`Starting pipe server on ${pipeName}`);
137
+ const server = await startPipeServer(pipeName, service);
138
+ this.context.stdout.write(`Daemon listening on ${pipeName}\n`);
139
+ this.context.stdout.write('Press Ctrl+C to stop.\n\n');
140
+ const sessionInfos = service.getSessionInfos();
141
+ for (const s of sessionInfos) {
142
+ if (s.isLoading) {
143
+ this.context.stdout.write(` ${s.name}: (loading) (${s.sourceKind})\n`);
144
+ }
145
+ else {
146
+ const explorerUrl = buildExplorerUrl({ baseUrl: s.serverUrl });
147
+ this.context.stdout.write(` ${s.name}: ${explorerUrl} (${s.sourceKind})\n`);
148
+ }
149
+ }
150
+ this.context.stdout.write('\n');
151
+ let redirectServer;
152
+ const redirectPort = this.redirectionPort
153
+ ? parseInt(this.redirectionPort, 10)
154
+ : resolvedConfig.redirection?.port;
155
+ const redirectHost = this.redirectionHost ?? resolvedConfig.redirection?.host ?? 'localhost';
156
+ if (redirectPort) {
157
+ redirectServer = this._startRedirectionServer(service, redirectPort, redirectHost);
158
+ }
159
+ process.on('SIGINT', () => {
160
+ service.requestShutdown();
161
+ });
162
+ await service.runEventLoop();
163
+ this.context.stdout.write('\nShutting down...\n');
164
+ redirectServer?.dispose();
165
+ server.close();
166
+ await service.dispose();
167
+ }
168
+ _startRedirectionServer(service, port, host) {
169
+ const server = http.createServer(async (req, res) => {
170
+ const url = new URL(req.url ?? '/', `http://${req.headers.host}`);
171
+ const sessionName = url.searchParams.get('sessionName');
172
+ try {
173
+ const session = await service.waitForSession(sessionName ?? undefined);
174
+ const target = new URL(session.serverUrl);
175
+ target.pathname = url.pathname;
176
+ url.searchParams.delete('sessionName');
177
+ target.search = url.search;
178
+ res.writeHead(302, { Location: target.href });
179
+ res.end();
180
+ }
181
+ catch {
182
+ res.writeHead(503);
183
+ res.end('Session not available.\\n');
184
+ }
185
+ });
186
+ server.listen(port, host, () => {
187
+ this.context.stdout.write(`Redirection server listening on http://${host}:${port}\\n`);
188
+ });
189
+ return { dispose: () => server.close() };
190
+ }
191
+ }
192
+
193
+ export { ServeCommand };
194
+ //# sourceMappingURL=serveCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serveCommand.js","sources":["../../src/commands/serveCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@ import { Command } from 'clipanion';
2
2
  export declare class WatchCommand extends Command {
3
3
  static paths: string[][];
4
4
  static usage: import("clipanion").Usage;
5
- readonly root: string;
6
- readonly config: string | undefined;
5
+ readonly verbose: number;
6
+ readonly project: string;
7
7
  execute(): Promise<void>;
8
8
  private _executeLegacy;
9
9
  private _executeWithConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"watchCommand.d.ts","sourceRoot":"","sources":["../../src/commands/watchCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAiB5C,qBAAa,YAAa,SAAQ,OAAO;IACxC,OAAgB,KAAK,aAAe;IAEpC,OAAgB,KAAK,4BAMlB;IAEH,QAAQ,CAAC,IAAI,SAAqF;IAClG,QAAQ,CAAC,MAAM,qBAA+F;IAExG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAOhB,cAAc;YAoCd,kBAAkB;YAkHlB,aAAa;CA6C3B"}
1
+ {"version":3,"file":"watchCommand.d.ts","sourceRoot":"","sources":["../../src/commands/watchCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAiB5C,qBAAa,YAAa,SAAQ,OAAO;IACxC,OAAgB,KAAK,aAAe;IAEpC,OAAgB,KAAK,4BAMlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,OAAO,SAAuI;IAEjJ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAQhB,cAAc;YAsCd,kBAAkB;YAkHlB,aAAa;CAgD3B"}
@@ -1,16 +1,22 @@
1
1
  import { Command, Option } from 'clipanion';
2
- import { autorun } from '@vscode/observables';
2
+ import '../external/vscode-observables/observables/dist/observableInternal/index.js';
3
+ import '../external/vscode-observables/observables/dist/observableInternal/debugLocation.js';
4
+ import { autorun } from '../external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js';
5
+ import '../external/vscode-observables/observables/dist/observableInternal/observables/derived.js';
6
+ import '../external/vscode-observables/observables/dist/observableInternal/utils/utils.js';
7
+ import '../external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
3
8
  import { PlaywrightBrowserPageFactory } from '../browserPage.js';
4
9
  import { BrowserComponentExplorer } from '../componentExplorer.js';
5
10
  import { DefaultComponentExplorerHttpServerFactory } from '../httpServer.js';
6
- import { ConsoleLogger } from '../logger.js';
11
+ import { ConsoleLogger, verbosityToLogLevel } from '../logger.js';
7
12
  import { FileSystemStorage } from '../storage.js';
8
- import { ViteProjectRef } from '../viteProjectRef.js';
13
+ import { resolveProject, resolvedProjectToViteProjectRef } from '../resolveProject.js';
9
14
  import { ResolvedWatchConfig } from '../watchConfig.js';
10
15
  import { ExplorerSession } from '../explorerSession.js';
11
16
  import { installDependencies } from '../dependencyInstaller.js';
12
- import { ScreenshotCache, compareScreenshots, contentHash } from '../screenshotCache.js';
13
- export class WatchCommand extends Command {
17
+ import { compareScreenshots, ScreenshotCache, contentHash } from '../screenshotCache.js';
18
+
19
+ class WatchCommand extends Command {
14
20
  static paths = [['watch']];
15
21
  static usage = Command.Usage({
16
22
  description: 'Watch for changes and compare screenshots against baseline',
@@ -19,21 +25,23 @@ export class WatchCommand extends Command {
19
25
  ['Watch with config', '$0 watch -c component-explorer-watch-config.json'],
20
26
  ],
21
27
  });
22
- root = Option.String('--root', process.cwd(), { description: 'Project root directory' });
23
- config = Option.String('-c,--config', { required: false, description: 'Path to watch config JSON' });
28
+ verbose = Option.Counter('-v,--verbose', 0, { description: 'Increase log verbosity (-v debug, -vv trace)' });
29
+ project = Option.String('-p,--project', process.cwd(), { description: 'Project: a directory, vite config file, or component-explorer.json' });
24
30
  async execute() {
25
- if (this.config) {
26
- return this._executeWithConfig();
31
+ const resolved = await resolveProject(this.project);
32
+ if (resolved.kind === 'explorerConfig') {
33
+ return this._executeWithConfig(resolved.configPath);
27
34
  }
28
- return this._executeLegacy();
35
+ return this._executeLegacy(resolved);
29
36
  }
30
- async _executeLegacy() {
31
- const logger = new ConsoleLogger('watch', this.context.stdout);
32
- const storage = new FileSystemStorage(`${this.root}/.screenshots`);
37
+ async _executeLegacy(resolved) {
38
+ const logger = new ConsoleLogger('watch', this.context.stdout, verbosityToLogLevel(this.verbose));
39
+ const storage = new FileSystemStorage(`${resolved.projectDir}/.screenshots`);
33
40
  const serverFactory = new DefaultComponentExplorerHttpServerFactory();
34
41
  const browserFactory = new PlaywrightBrowserPageFactory();
42
+ const viteProject = resolvedProjectToViteProjectRef(resolved);
35
43
  logger.log('Starting Vite dev server...');
36
- const server = await serverFactory.createViteServer(ViteProjectRef.fromSourceRootDir(this.root));
44
+ const server = await serverFactory.createViteServer(viteProject, { logger });
37
45
  logger.log(`Server running at ${server.url}`);
38
46
  const explorer = new BrowserComponentExplorer(browserFactory, server, logger);
39
47
  logger.log('Taking initial screenshots...');
@@ -57,12 +65,12 @@ export class WatchCommand extends Command {
57
65
  await browserFactory.dispose();
58
66
  await server.dispose();
59
67
  }
60
- async _executeWithConfig() {
61
- const logger = new ConsoleLogger('watch', this.context.stdout);
68
+ async _executeWithConfig(configPath) {
69
+ const logger = new ConsoleLogger('watch', this.context.stdout, verbosityToLogLevel(this.verbose));
62
70
  const serverFactory = new DefaultComponentExplorerHttpServerFactory();
63
71
  const browserFactory = new PlaywrightBrowserPageFactory();
64
- logger.log(`Reading config from ${this.config}`);
65
- const resolvedConfig = await ResolvedWatchConfig.fromFile(this.config);
72
+ logger.log(`Reading config from ${configPath}`);
73
+ const resolvedConfig = await ResolvedWatchConfig.fromFile(configPath);
66
74
  const git = resolvedConfig.repo;
67
75
  const storage = new FileSystemStorage(resolvedConfig.screenshotDir);
68
76
  const sessions = new Map();
@@ -126,7 +134,7 @@ export class WatchCommand extends Command {
126
134
  }
127
135
  await installDependencies(wt.worktreePath, wt.install, logger);
128
136
  // Recreate session
129
- const newSession = await ExplorerSession.create(sessionConfig.name, sessionConfig.viteProject, serverFactory, browserFactory, logger, resolveViteFrom);
137
+ const newSession = await ExplorerSession.create(sessionConfig.name, sessionConfig.viteProject, serverFactory, browserFactory, { logger, resolveViteFrom });
130
138
  sessions.set(sessionConfig.name, newSession);
131
139
  const cache = caches.get(sessionConfig.name);
132
140
  const screenshots = await captureAll(newSession.explorer);
@@ -188,7 +196,10 @@ export class WatchCommand extends Command {
188
196
  }
189
197
  }
190
198
  logger.log(`Starting server: ${sessionConfig.name}`);
191
- const session = await ExplorerSession.create(sessionConfig.name, sessionConfig.viteProject, serverFactory, browserFactory, logger, sessionConfig.source.kind === 'worktree' ? resolveViteFrom : undefined);
199
+ const session = await ExplorerSession.create(sessionConfig.name, sessionConfig.viteProject, serverFactory, browserFactory, {
200
+ logger,
201
+ resolveViteFrom: sessionConfig.source.kind === 'worktree' ? resolveViteFrom : undefined,
202
+ });
192
203
  sessions.set(sessionConfig.name, session);
193
204
  caches.set(sessionConfig.name, new ScreenshotCache());
194
205
  logger.log(`Server ready: ${sessionConfig.name} (${session.serverUrl})`);
@@ -224,8 +235,8 @@ async function captureAll(explorer) {
224
235
  const fixtures = await explorer.listFixtures();
225
236
  const screenshots = new Map();
226
237
  for (const fixture of fixtures) {
227
- const png = await explorer.screenshotFixture(fixture.fixtureId);
228
- screenshots.set(fixture.fixtureId, png);
238
+ const result = await explorer.screenshotFixture(fixture.fixtureId);
239
+ screenshots.set(fixture.fixtureId, result.image);
229
240
  }
230
241
  return screenshots;
231
242
  }
@@ -263,13 +274,13 @@ async function captureAndCompare(explorer, storage, stdout) {
263
274
  const changed = [];
264
275
  const unchanged = [];
265
276
  for (const fixture of fixtures) {
266
- const png = await explorer.screenshotFixture(fixture.fixtureId);
277
+ const result = await explorer.screenshotFixture(fixture.fixtureId);
267
278
  const currentPath = `current/${fixture.fixtureId}.png`;
268
- await storage.write(currentPath, png);
279
+ await storage.write(currentPath, result.image);
269
280
  const baselinePath = `baseline/${fixture.fixtureId}.png`;
270
281
  if (await storage.exists(baselinePath)) {
271
282
  const baseline = await storage.read(baselinePath);
272
- if (buffersEqual(png, baseline)) {
283
+ if (buffersEqual(result.image, baseline)) {
273
284
  unchanged.push(fixture.fixtureId);
274
285
  }
275
286
  else {
@@ -304,4 +315,6 @@ function buffersEqual(a, b) {
304
315
  }
305
316
  return true;
306
317
  }
307
- //# sourceMappingURL=watchCommand.js.map
318
+
319
+ export { WatchCommand };
320
+ //# sourceMappingURL=watchCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watchCommand.js","sourceRoot":"","sources":["../../src/commands/watchCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watchCommand.js","sources":["../../src/commands/watchCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}