@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.
- package/README.md +177 -0
- package/dist/browserPage.js +4 -2
- package/dist/browserPage.js.map +1 -1
- package/dist/commands/acceptCommand.d.ts +3 -1
- package/dist/commands/acceptCommand.d.ts.map +1 -1
- package/dist/commands/acceptCommand.js +20 -8
- package/dist/commands/acceptCommand.js.map +1 -1
- package/dist/commands/compareCommand.d.ts +6 -1
- package/dist/commands/compareCommand.d.ts.map +1 -1
- package/dist/commands/compareCommand.js +51 -73
- package/dist/commands/compareCommand.js.map +1 -1
- package/dist/commands/mcpCommand.d.ts +10 -0
- package/dist/commands/mcpCommand.d.ts.map +1 -0
- package/dist/commands/mcpCommand.js +58 -0
- package/dist/commands/mcpCommand.js.map +1 -0
- package/dist/commands/screenshotCommand.d.ts +8 -2
- package/dist/commands/screenshotCommand.d.ts.map +1 -1
- package/dist/commands/screenshotCommand.js +70 -17
- package/dist/commands/screenshotCommand.js.map +1 -1
- package/dist/commands/serveCommand.d.ts +19 -0
- package/dist/commands/serveCommand.d.ts.map +1 -0
- package/dist/commands/serveCommand.js +194 -0
- package/dist/commands/serveCommand.js.map +1 -0
- package/dist/commands/watchCommand.d.ts +2 -2
- package/dist/commands/watchCommand.d.ts.map +1 -1
- package/dist/commands/watchCommand.js +39 -26
- package/dist/commands/watchCommand.js.map +1 -1
- package/dist/comparison.d.ts +60 -0
- package/dist/comparison.d.ts.map +1 -0
- package/dist/comparison.js +250 -0
- package/dist/comparison.js.map +1 -0
- package/dist/component-explorer-config.schema.json +183 -0
- package/dist/componentExplorer.d.ts +44 -2
- package/dist/componentExplorer.d.ts.map +1 -1
- package/dist/componentExplorer.js +103 -18
- package/dist/componentExplorer.js.map +1 -1
- package/dist/daemon/DaemonContext.d.ts +4 -0
- package/dist/daemon/DaemonContext.d.ts.map +1 -0
- package/dist/daemon/DaemonService.d.ts +188 -0
- package/dist/daemon/DaemonService.d.ts.map +1 -0
- package/dist/daemon/DaemonService.js +610 -0
- package/dist/daemon/DaemonService.js.map +1 -0
- package/dist/daemon/approvalStore.d.ts +51 -0
- package/dist/daemon/approvalStore.d.ts.map +1 -0
- package/dist/daemon/approvalStore.js +58 -0
- package/dist/daemon/approvalStore.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +13 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +68 -0
- package/dist/daemon/lifecycle.js.map +1 -0
- package/dist/daemon/pipeClient.d.ts +9 -0
- package/dist/daemon/pipeClient.d.ts.map +1 -0
- package/dist/daemon/pipeClient.js +111 -0
- package/dist/daemon/pipeClient.js.map +1 -0
- package/dist/daemon/pipeName.d.ts +2 -0
- package/dist/daemon/pipeName.d.ts.map +1 -0
- package/dist/daemon/pipeName.js +14 -0
- package/dist/daemon/pipeName.js.map +1 -0
- package/dist/daemon/pipeServer.d.ts +4 -0
- package/dist/daemon/pipeServer.d.ts.map +1 -0
- package/dist/daemon/pipeServer.js +25 -0
- package/dist/daemon/pipeServer.js.map +1 -0
- package/dist/daemon/types.d.ts +12 -0
- package/dist/daemon/types.d.ts.map +1 -0
- package/dist/dependencyInstaller.js +8 -5
- package/dist/dependencyInstaller.js.map +1 -1
- package/dist/explorerSession.d.ts +5 -3
- package/dist/explorerSession.d.ts.map +1 -1
- package/dist/explorerSession.js +11 -5
- package/dist/explorerSession.js.map +1 -1
- package/dist/external/vscode-observables/observables/dist/disposables.js +66 -0
- package/dist/external/vscode-observables/observables/dist/disposables.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/base.js +22 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/base.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js +37 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js +77 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugName.js +114 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugName.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/index.js +22 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js +356 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js +79 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/logging.js +100 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js +143 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js +28 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js +362 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js +123 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js +81 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js +23 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js +226 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/transaction.js +87 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/transaction.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utils.js +68 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +1 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js +55 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
- package/dist/formatValue.d.ts +2 -0
- package/dist/formatValue.d.ts.map +1 -0
- package/dist/formatValue.js +96 -0
- package/dist/formatValue.js.map +1 -0
- package/dist/formatValue.test.d.ts +2 -0
- package/dist/formatValue.test.d.ts.map +1 -0
- package/dist/git/gitCommitId.js +4 -2
- package/dist/git/gitCommitId.js.map +1 -1
- package/dist/git/gitCommitResolver.js +11 -3
- package/dist/git/gitCommitResolver.js.map +1 -1
- package/dist/git/gitService.js +5 -2
- package/dist/git/gitService.js.map +1 -1
- package/dist/git/gitUtils.js +10 -7
- package/dist/git/gitUtils.js.map +1 -1
- package/dist/git/gitWorktreeManager.js +5 -2
- package/dist/git/gitWorktreeManager.js.map +1 -1
- package/dist/httpServer.d.ts +9 -7
- package/dist/httpServer.d.ts.map +1 -1
- package/dist/httpServer.js +75 -11
- package/dist/httpServer.js.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +17 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +43 -6
- package/dist/logger.js.map +1 -1
- package/dist/mcp/McpServer.d.ts +58 -0
- package/dist/mcp/McpServer.d.ts.map +1 -0
- package/dist/mcp/McpServer.js +820 -0
- package/dist/mcp/McpServer.js.map +1 -0
- package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js +137 -0
- package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +1 -0
- package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js +27 -0
- package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js.map +1 -0
- package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js +24 -0
- package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +1 -0
- package/dist/packages/simple-api/dist/express.js +104 -0
- package/dist/packages/simple-api/dist/express.js.map +1 -0
- package/dist/resolveProject.d.ts +21 -0
- package/dist/resolveProject.d.ts.map +1 -0
- package/dist/resolveProject.js +39 -0
- package/dist/resolveProject.js.map +1 -0
- package/dist/screenshotCache.js +7 -4
- package/dist/screenshotCache.js.map +1 -1
- package/dist/sourceTreeId.js +4 -2
- package/dist/sourceTreeId.js.map +1 -1
- package/dist/storage.js +5 -2
- package/dist/storage.js.map +1 -1
- package/dist/utils.d.ts +24 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +50 -0
- package/dist/utils.js.map +1 -0
- package/dist/viteProjectRef.js +5 -2
- package/dist/viteProjectRef.js.map +1 -1
- package/dist/watchConfig.d.ts +41 -0
- package/dist/watchConfig.d.ts.map +1 -1
- package/dist/watchConfig.js +48 -23
- package/dist/watchConfig.js.map +1 -1
- 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 {
|
|
7
|
-
|
|
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
|
|
19
|
-
|
|
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
|
-
|
|
22
|
-
|
|
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(
|
|
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
|
|
39
|
-
|
|
40
|
-
|
|
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
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=screenshotCommand.js.map
|
|
107
|
+
|
|
108
|
+
export { ScreenshotCommand };
|
|
109
|
+
//# sourceMappingURL=screenshotCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshotCommand.js","
|
|
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
|
|
6
|
-
readonly
|
|
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,
|
|
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
|
|
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 {
|
|
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 {
|
|
13
|
-
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
|
|
26
|
-
|
|
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(`${
|
|
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(
|
|
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 ${
|
|
65
|
-
const resolvedConfig = await ResolvedWatchConfig.fromFile(
|
|
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,
|
|
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
|
|
228
|
-
screenshots.set(fixture.fixtureId,
|
|
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
|
|
277
|
+
const result = await explorer.screenshotFixture(fixture.fixtureId);
|
|
267
278
|
const currentPath = `current/${fixture.fixtureId}.png`;
|
|
268
|
-
await storage.write(currentPath,
|
|
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(
|
|
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
|
-
|
|
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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"}
|