@vscode/component-explorer-cli 0.2.1-1 → 0.2.1-11
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 +8 -0
- package/dist/_virtual/_build-info.js +1 -1
- package/dist/browserPage.d.ts +5 -5
- package/dist/browserPage.d.ts.map +1 -1
- package/dist/browserPage.js +35 -2
- package/dist/browserPage.js.map +1 -1
- package/dist/commands/acceptCommand.d.ts +1 -0
- package/dist/commands/acceptCommand.d.ts.map +1 -1
- package/dist/commands/acceptCommand.js +17 -8
- package/dist/commands/acceptCommand.js.map +1 -1
- package/dist/commands/artifactCommand.d.ts +14 -0
- package/dist/commands/artifactCommand.d.ts.map +1 -0
- package/dist/commands/checkStabilityCommand.d.ts +1 -0
- package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
- package/dist/commands/checkStabilityCommand.js +22 -18
- package/dist/commands/checkStabilityCommand.js.map +1 -1
- package/dist/commands/compareCommand.d.ts +1 -0
- package/dist/commands/compareCommand.d.ts.map +1 -1
- package/dist/commands/compareCommand.js +30 -11
- package/dist/commands/compareCommand.js.map +1 -1
- package/dist/commands/mcpCommand.d.ts +5 -0
- package/dist/commands/mcpCommand.d.ts.map +1 -1
- package/dist/commands/mcpCommand.js +86 -16
- package/dist/commands/mcpCommand.js.map +1 -1
- package/dist/commands/{screenshotCommand.d.ts → renderCommand.d.ts} +4 -2
- package/dist/commands/renderCommand.d.ts.map +1 -0
- package/dist/commands/renderCommand.js +210 -0
- package/dist/commands/renderCommand.js.map +1 -0
- package/dist/commands/serveCommand.d.ts +2 -0
- package/dist/commands/serveCommand.d.ts.map +1 -1
- package/dist/commands/serveCommand.js +79 -41
- package/dist/commands/serveCommand.js.map +1 -1
- package/dist/commands/serviceDiffCommitsCommand.d.ts +16 -0
- package/dist/commands/serviceDiffCommitsCommand.d.ts.map +1 -0
- package/dist/commands/serviceDiffCommitsCommand.js +229 -0
- package/dist/commands/serviceDiffCommitsCommand.js.map +1 -0
- package/dist/commands/watchCommand.d.ts +1 -0
- package/dist/commands/watchCommand.d.ts.map +1 -1
- package/dist/commands/watchCommand.js +22 -27
- package/dist/commands/watchCommand.js.map +1 -1
- package/dist/componentExplorer.d.ts +18 -11
- package/dist/componentExplorer.d.ts.map +1 -1
- package/dist/componentExplorer.js +95 -66
- package/dist/componentExplorer.js.map +1 -1
- package/dist/{watchConfig.d.ts → config.d.ts} +28 -24
- package/dist/config.d.ts.map +1 -0
- package/dist/{watchConfig.js → config.js} +63 -23
- package/dist/config.js.map +1 -0
- package/dist/daemon/DaemonService.d.ts +3 -3
- package/dist/daemon/DaemonService.d.ts.map +1 -1
- package/dist/daemon/DaemonService.js +19 -36
- package/dist/daemon/DaemonService.js.map +1 -1
- package/dist/daemon/client.d.ts +5 -0
- package/dist/daemon/client.d.ts.map +1 -0
- package/dist/daemon/client.js +7 -0
- package/dist/daemon/client.js.map +1 -0
- package/dist/daemon/inProcessClient.d.ts +11 -0
- package/dist/daemon/inProcessClient.d.ts.map +1 -0
- package/dist/daemon/inProcessClient.js +35 -0
- package/dist/daemon/inProcessClient.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +4 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +12 -2
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/pipeClient.js +5 -3
- package/dist/daemon/pipeClient.js.map +1 -1
- package/dist/daemon/pipeName.d.ts +6 -0
- package/dist/daemon/pipeName.d.ts.map +1 -1
- package/dist/daemon/pipeName.js +8 -3
- package/dist/daemon/pipeName.js.map +1 -1
- package/dist/daemon/pipeServer.d.ts.map +1 -1
- package/dist/daemon/pipeServer.js +9 -3
- package/dist/daemon/pipeServer.js.map +1 -1
- package/dist/daemon/version.d.ts +1 -1
- package/dist/daemon/version.d.ts.map +1 -1
- package/dist/daemon/version.js +1 -1
- package/dist/dependencyInstaller.d.ts +1 -1
- package/dist/dependencyInstaller.d.ts.map +1 -1
- package/dist/evaluateFn.d.ts +21 -0
- package/dist/evaluateFn.d.ts.map +1 -0
- package/dist/evaluateFn.js +17 -0
- package/dist/evaluateFn.js.map +1 -0
- package/dist/explorerSession.d.ts +2 -3
- package/dist/explorerSession.d.ts.map +1 -1
- package/dist/explorerSession.js +3 -20
- package/dist/explorerSession.js.map +1 -1
- package/dist/git/gitUtils.d.ts +1 -0
- package/dist/git/gitUtils.d.ts.map +1 -1
- package/dist/git/gitUtils.js +5 -1
- package/dist/git/gitUtils.js.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +12 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +35 -2
- package/dist/logger.js.map +1 -1
- package/dist/manifest.schema.json +187 -0
- package/dist/mcp/McpServer.d.ts +1 -0
- package/dist/mcp/McpServer.d.ts.map +1 -1
- package/dist/mcp/McpServer.js +113 -20
- package/dist/mcp/McpServer.js.map +1 -1
- package/dist/packages/common/dist/renderManifest.js +46 -0
- package/dist/packages/common/dist/renderManifest.js.map +1 -0
- package/dist/packages/semver/dist/index.js +186 -0
- package/dist/packages/semver/dist/index.js.map +1 -0
- package/dist/packages/simple-api/dist/{chunk-3R7GHWBM.js → chunk-FJ7AVNQE.js} +2 -1
- package/dist/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +1 -0
- package/dist/packages/simple-api/dist/{chunk-SGBCNXYH.js → chunk-TTRCY65Z.js} +4 -1
- package/dist/packages/simple-api/dist/chunk-TTRCY65Z.js.map +1 -0
- package/dist/packages/simple-api/dist/{chunk-TAEFVNPN.js → chunk-WNXMRXWV.js} +2 -1
- package/dist/packages/simple-api/dist/chunk-WNXMRXWV.js.map +1 -0
- package/dist/packages/simple-api/dist/express.js +1 -1
- package/dist/packages/simple-api/dist/express.js.map +1 -1
- package/dist/processTree.d.ts +9 -0
- package/dist/processTree.d.ts.map +1 -0
- package/dist/processTree.js +41 -0
- package/dist/processTree.js.map +1 -0
- package/dist/renderManifest.d.ts +5 -0
- package/dist/renderManifest.d.ts.map +1 -0
- package/dist/renderManifest.js +11 -0
- package/dist/renderManifest.js.map +1 -0
- package/dist/screenshotServiceClient.d.ts +31 -0
- package/dist/screenshotServiceClient.d.ts.map +1 -0
- package/dist/screenshotServiceClient.js +38 -0
- package/dist/screenshotServiceClient.js.map +1 -0
- package/dist/server/httpServer.d.ts +14 -0
- package/dist/server/httpServer.d.ts.map +1 -0
- package/dist/server/httpServer.js +114 -0
- package/dist/server/httpServer.js.map +1 -0
- package/dist/server/httpServer.test.d.ts.map +1 -0
- package/dist/server/serverConfig.d.ts +42 -0
- package/dist/server/serverConfig.d.ts.map +1 -0
- package/dist/server/serverConfig.js +60 -0
- package/dist/server/serverConfig.js.map +1 -0
- package/dist/server/types.d.ts +6 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/viteServer.d.ts +16 -0
- package/dist/server/viteServer.d.ts.map +1 -0
- package/dist/{httpServer.js → server/viteServer.js} +10 -110
- package/dist/server/viteServer.js.map +1 -0
- package/dist/utils.d.ts +11 -6
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +7 -6
- package/dist/utils.js.map +1 -1
- package/package.json +30 -19
- package/dist/commands/screenshotCommand.d.ts.map +0 -1
- package/dist/commands/screenshotCommand.js +0 -127
- package/dist/commands/screenshotCommand.js.map +0 -1
- package/dist/httpServer.d.ts +0 -36
- package/dist/httpServer.d.ts.map +0 -1
- package/dist/httpServer.js.map +0 -1
- package/dist/httpServer.test.d.ts.map +0 -1
- package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +0 -1
- package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +0 -1
- package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js.map +0 -1
- package/dist/resolveProject.d.ts +0 -21
- package/dist/resolveProject.d.ts.map +0 -1
- package/dist/resolveProject.js +0 -39
- package/dist/resolveProject.js.map +0 -1
- package/dist/watchConfig.d.ts.map +0 -1
- package/dist/watchConfig.js.map +0 -1
- /package/dist/{httpServer.test.d.ts → server/httpServer.test.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -175,3 +175,11 @@ component-explorer mcp --project config.json
|
|
|
175
175
|
## Global Options
|
|
176
176
|
|
|
177
177
|
All commands support `-v` / `--verbose` for increased log output. Use `-vv` for trace-level logging.
|
|
178
|
+
|
|
179
|
+
All commands also support `--log-file <path>` to append log messages to a file. This works in combination with `-v`/`-vv` to control what gets written. Multiple processes can safely append to the same file. Log entries include timestamp, log level, process type, and PID:
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
2024-01-15T10:30:45.123Z [DEBUG] [serve] [pid:12345] Server started on port 5173
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
When the MCP server spawns a daemon, it inherits the verbosity level and log file path.
|
package/dist/browserPage.d.ts
CHANGED
|
@@ -3,6 +3,11 @@ export interface BrowserPageFactory {
|
|
|
3
3
|
openPage(url: string): Promise<BrowserPage>;
|
|
4
4
|
dispose(): Promise<void>;
|
|
5
5
|
}
|
|
6
|
+
export interface BrowserPage {
|
|
7
|
+
evaluateJs(expression: string): Promise<unknown>;
|
|
8
|
+
screenshot(domNodeExpression: string): Promise<ScreenshotResult>;
|
|
9
|
+
dispose(): Promise<void>;
|
|
10
|
+
}
|
|
6
11
|
export type ScreenshotResult = {
|
|
7
12
|
ok: true;
|
|
8
13
|
screenshot: Uint8Array;
|
|
@@ -10,11 +15,6 @@ export type ScreenshotResult = {
|
|
|
10
15
|
ok: false;
|
|
11
16
|
error: 'noDomNode';
|
|
12
17
|
};
|
|
13
|
-
export interface BrowserPage {
|
|
14
|
-
evaluateJs<T>(expression: string): Promise<T>;
|
|
15
|
-
screenshot(domNodeExpression: string): Promise<ScreenshotResult>;
|
|
16
|
-
dispose(): Promise<void>;
|
|
17
|
-
}
|
|
18
18
|
export declare class PlaywrightBrowserPageFactory implements BrowserPageFactory {
|
|
19
19
|
readonly timeoutMs: number;
|
|
20
20
|
private _browser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserPage.d.ts","sourceRoot":"","sources":["../src/browserPage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browserPage.d.ts","sourceRoot":"","sources":["../src/browserPage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC3B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,UAAU,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAExG,qBAAa,4BAA6B,YAAW,kBAAkB;IAKjC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAJ/D,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,GAAE,OAAe,EAAW,SAAS,GAAE,MAAe,EAAE,MAAM,CAAC,EAAE,OAAO;IAK1F,IAAI,MAAM,IAAI,OAAO,CAAyB;IAExC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA+B3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI9B"}
|
package/dist/browserPage.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
1
2
|
import { nullLogger } from './logger.js';
|
|
2
3
|
|
|
3
4
|
class PlaywrightBrowserPageFactory {
|
|
@@ -24,7 +25,7 @@ class PlaywrightBrowserPageFactory {
|
|
|
24
25
|
async openPage(url) {
|
|
25
26
|
if (!this._browser) {
|
|
26
27
|
const { chromium } = await import('playwright');
|
|
27
|
-
this._browser = await chromium.launch({ headless: !this._headed });
|
|
28
|
+
this._browser = await withWindowsHide(() => chromium.launch({ headless: !this._headed }));
|
|
28
29
|
}
|
|
29
30
|
const page = await this._browser.newPage();
|
|
30
31
|
page.on('console', (msg) => {
|
|
@@ -43,7 +44,12 @@ class PlaywrightBrowserPageFactory {
|
|
|
43
44
|
page.on('pageerror', (err) => {
|
|
44
45
|
this._logger.debug(`[browser] uncaught error: ${err.message}`);
|
|
45
46
|
});
|
|
46
|
-
await page.goto(url, { waitUntil: 'networkidle', timeout: this.timeoutMs });
|
|
47
|
+
const response = await page.goto(url, { waitUntil: 'networkidle', timeout: this.timeoutMs });
|
|
48
|
+
if (!response || !response.ok()) {
|
|
49
|
+
const status = response?.status() ?? 'no response';
|
|
50
|
+
await page.close();
|
|
51
|
+
throw new Error(`Failed to load page: ${url} (status: ${status})`);
|
|
52
|
+
}
|
|
47
53
|
return new PlaywrightBrowserPage(page);
|
|
48
54
|
}
|
|
49
55
|
async dispose() {
|
|
@@ -80,6 +86,33 @@ class PlaywrightBrowserPage {
|
|
|
80
86
|
await this._page.close();
|
|
81
87
|
}
|
|
82
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Playwright doesn't pass `windowsHide: true` when spawning the browser process,
|
|
91
|
+
* which causes a visible console window when the daemon runs in the background.
|
|
92
|
+
* This temporarily patches `child_process.spawn` to inject `windowsHide: true`.
|
|
93
|
+
*/
|
|
94
|
+
async function withWindowsHide(fn) {
|
|
95
|
+
if (process.platform !== 'win32') {
|
|
96
|
+
return fn();
|
|
97
|
+
}
|
|
98
|
+
// Use createRequire to get the mutable CJS module object.
|
|
99
|
+
// ESM namespace objects (import * as X) are frozen and can't be patched.
|
|
100
|
+
const cp = createRequire(import.meta.url)('node:child_process');
|
|
101
|
+
const original = cp.spawn;
|
|
102
|
+
cp.spawn = function patchedSpawn(...args) {
|
|
103
|
+
const opts = typeof args[args.length - 1] === 'object' ? args[args.length - 1] : undefined;
|
|
104
|
+
if (opts && !('windowsHide' in opts)) {
|
|
105
|
+
opts.windowsHide = true;
|
|
106
|
+
}
|
|
107
|
+
return original.apply(this, args);
|
|
108
|
+
};
|
|
109
|
+
try {
|
|
110
|
+
return await fn();
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
cp.spawn = original;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
83
116
|
|
|
84
117
|
export { PlaywrightBrowserPageFactory };
|
|
85
118
|
//# sourceMappingURL=browserPage.js.map
|
package/dist/browserPage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserPage.js","sources":["../src/browserPage.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browserPage.js","sources":["../src/browserPage.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export declare class AcceptCommand extends Command {
|
|
|
3
3
|
static paths: string[][];
|
|
4
4
|
static usage: import("clipanion").Usage;
|
|
5
5
|
readonly verbose: number;
|
|
6
|
+
readonly logFile: string | undefined;
|
|
6
7
|
readonly filter: string | undefined;
|
|
7
8
|
readonly project: string;
|
|
8
9
|
readonly screenshotDir: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptCommand.d.ts","sourceRoot":"","sources":["../../src/commands/acceptCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"acceptCommand.d.ts","sourceRoot":"","sources":["../../src/commands/acceptCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAO5C,qBAAa,aAAc,SAAQ,OAAO;IACzC,OAAgB,KAAK,aAAuB;IAE5C,OAAgB,KAAK,4BAMlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,OAAO,qBAAgG;IAChH,QAAQ,CAAC,MAAM,qBAAkG;IACjH,QAAQ,CAAC,OAAO,SAAuI;IACvJ,QAAQ,CAAC,aAAa,SAA+F;IAE/G,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAiC9B"}
|
|
@@ -1,26 +1,35 @@
|
|
|
1
1
|
import { Command, Option } from 'clipanion';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
-
import
|
|
3
|
+
import '../external/vscode-observables/observables/dist/observableInternal/index.js';
|
|
4
|
+
import { DisposableStore } from '../external/vscode-observables/observables/dist/disposables.js';
|
|
5
|
+
import '../external/vscode-observables/observables/dist/observableInternal/debugLocation.js';
|
|
6
|
+
import '../external/vscode-observables/observables/dist/observableInternal/observables/derived.js';
|
|
7
|
+
import '../external/vscode-observables/observables/dist/observableInternal/utils/utils.js';
|
|
8
|
+
import '../external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
|
|
9
|
+
import { ConsoleLogger, verbosityToLogLevel, createLogFileOptions, logBuildInfo } from '../logger.js';
|
|
4
10
|
import { FileSystemStorage } from '../storage.js';
|
|
5
|
-
import {
|
|
11
|
+
import { ResolvedConfig } from '../config.js';
|
|
6
12
|
|
|
7
13
|
class AcceptCommand extends Command {
|
|
8
|
-
static paths = [['
|
|
14
|
+
static paths = [['render:accept']];
|
|
9
15
|
static usage = Command.Usage({
|
|
10
16
|
description: 'Promote current screenshots to baseline (file-level only)',
|
|
11
17
|
examples: [
|
|
12
|
-
['Accept all', '$0
|
|
13
|
-
['Accept specific fixtures', '$0
|
|
18
|
+
['Accept all', '$0 render:accept'],
|
|
19
|
+
['Accept specific fixtures', '$0 render:accept --filter "Button/*"'],
|
|
14
20
|
],
|
|
15
21
|
});
|
|
16
22
|
verbose = Option.Counter('-v,--verbose', 0, { description: 'Increase log verbosity (-v debug, -vv trace)' });
|
|
23
|
+
logFile = Option.String('--log-file', { description: 'Append logs to this file (works with -v/-vv)' });
|
|
17
24
|
filter = Option.String('--filter', { required: false, description: 'Filter fixtures by glob pattern' });
|
|
18
25
|
project = Option.String('-p,--project', process.cwd(), { description: 'Project: a directory, vite config file, or component-explorer.json' });
|
|
19
26
|
screenshotDir = Option.String('--screenshot-dir', '.screenshots', { description: 'Screenshots directory' });
|
|
20
27
|
async execute() {
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
28
|
+
const disposables = new DisposableStore();
|
|
29
|
+
const config = await ResolvedConfig.fromProjectPath(this.project, disposables);
|
|
30
|
+
const projectDir = config.configDir;
|
|
31
|
+
disposables.dispose();
|
|
32
|
+
const _logger = new ConsoleLogger('accept', this.context.stdout, verbosityToLogLevel(this.verbose), createLogFileOptions(this.logFile, this.verbose));
|
|
24
33
|
logBuildInfo(_logger);
|
|
25
34
|
const screenshotPath = path.isAbsolute(this.screenshotDir) ? this.screenshotDir : path.join(projectDir, this.screenshotDir);
|
|
26
35
|
const storage = new FileSystemStorage(screenshotPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptCommand.js","sources":["../../src/commands/acceptCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"acceptCommand.js","sources":["../../src/commands/acceptCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from 'clipanion';
|
|
2
|
+
export declare class ArtifactCommand extends Command {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
readonly verbose: number;
|
|
6
|
+
readonly logFile: string | undefined;
|
|
7
|
+
readonly filter: string | undefined;
|
|
8
|
+
readonly project: string;
|
|
9
|
+
readonly output: string;
|
|
10
|
+
readonly headed: boolean;
|
|
11
|
+
readonly timeout: string;
|
|
12
|
+
execute(): Promise<number>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=artifactCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifactCommand.d.ts","sourceRoot":"","sources":["../../src/commands/artifactCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAa5C,qBAAa,eAAgB,SAAQ,OAAO;IAC3C,OAAgB,KAAK,aAAkB;IAEvC,OAAgB,KAAK,4BAOlB;IAEH,QAAQ,CAAC,OAAO,SAAgF;IAChG,QAAQ,CAAC,OAAO,qBAAgG;IAChH,QAAQ,CAAC,MAAM,qBAAkG;IACjH,QAAQ,CAAC,OAAO,SAAqG;IACrH,QAAQ,CAAC,MAAM,SAA+G;IAC9H,QAAQ,CAAC,MAAM,UAA6E;IAC5F,QAAQ,CAAC,OAAO,SAAoF;IAE9F,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAuFhC"}
|
|
@@ -3,6 +3,7 @@ export declare class CheckStabilityCommand extends Command {
|
|
|
3
3
|
static paths: string[][];
|
|
4
4
|
static usage: import("clipanion").Usage;
|
|
5
5
|
readonly verbose: number;
|
|
6
|
+
readonly logFile: string | undefined;
|
|
6
7
|
readonly project: string;
|
|
7
8
|
readonly labelPattern: string | undefined;
|
|
8
9
|
readonly headed: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkStabilityCommand.d.ts","sourceRoot":"","sources":["../../src/commands/checkStabilityCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAQ5C,qBAAa,qBAAsB,SAAQ,OAAO;IACjD,OAAgB,KAAK,aAAyB;IAE9C,OAAgB,KAAK,4BAMlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,OAAO,SAAuI;IACvJ,QAAQ,CAAC,YAAY,qBAA+I;IACpK,QAAQ,CAAC,MAAM,UAAwG;IACvH,QAAQ,CAAC,OAAO,SAA+G;IAEzH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"checkStabilityCommand.d.ts","sourceRoot":"","sources":["../../src/commands/checkStabilityCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAQ5C,qBAAa,qBAAsB,SAAQ,OAAO;IACjD,OAAgB,KAAK,aAAyB;IAE9C,OAAgB,KAAK,4BAMlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,OAAO,qBAAgG;IAChH,QAAQ,CAAC,OAAO,SAAuI;IACvJ,QAAQ,CAAC,YAAY,qBAA+I;IACpK,QAAQ,CAAC,MAAM,UAAwG;IACvH,QAAQ,CAAC,OAAO,SAA+G;IAEzH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAyEhC"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { Command, Option } from 'clipanion';
|
|
2
|
+
import '../external/vscode-observables/observables/dist/observableInternal/index.js';
|
|
3
|
+
import { DisposableStore } from '../external/vscode-observables/observables/dist/disposables.js';
|
|
4
|
+
import '../external/vscode-observables/observables/dist/observableInternal/debugLocation.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';
|
|
2
8
|
import { PlaywrightBrowserPageFactory } from '../browserPage.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { resolveProject, resolvedProjectToViteProjectRef } from '../resolveProject.js';
|
|
9
|
+
import { ConsoleLogger, verbosityToLogLevel, createLogFileOptions, logBuildInfo } from '../logger.js';
|
|
10
|
+
import { ResolvedConfig } from '../config.js';
|
|
11
|
+
import { ExplorerSession } from '../explorerSession.js';
|
|
7
12
|
import { contentHash } from '../screenshotCache.js';
|
|
8
13
|
|
|
9
14
|
class CheckStabilityCommand extends Command {
|
|
@@ -16,12 +21,13 @@ class CheckStabilityCommand extends Command {
|
|
|
16
21
|
],
|
|
17
22
|
});
|
|
18
23
|
verbose = Option.Counter('-v,--verbose', 0, { description: 'Increase log verbosity (-v debug, -vv trace)' });
|
|
24
|
+
logFile = Option.String('--log-file', { description: 'Append logs to this file (works with -v/-vv)' });
|
|
19
25
|
project = Option.String('-p,--project', process.cwd(), { description: 'Project: a directory, vite config file, or component-explorer.json' });
|
|
20
26
|
labelPattern = Option.String('--label-pattern', { required: false, description: 'RegExp to filter fixtures by label (matched against inherited labels)' });
|
|
21
27
|
headed = Option.Boolean('--headed', false, { description: 'Show the browser window (useful for debugging)' });
|
|
22
28
|
timeout = Option.String('--timeout', '30000', { description: 'Navigation timeout in milliseconds (default: 30000)' });
|
|
23
29
|
async execute() {
|
|
24
|
-
const logger = new ConsoleLogger('check-stability', this.context.stderr, verbosityToLogLevel(this.verbose));
|
|
30
|
+
const logger = new ConsoleLogger('check-stability', this.context.stderr, verbosityToLogLevel(this.verbose), createLogFileOptions(this.logFile, this.verbose));
|
|
25
31
|
logBuildInfo(logger);
|
|
26
32
|
let labelRegex;
|
|
27
33
|
if (this.labelPattern) {
|
|
@@ -33,18 +39,16 @@ class CheckStabilityCommand extends Command {
|
|
|
33
39
|
return 1;
|
|
34
40
|
}
|
|
35
41
|
}
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
42
|
+
const disposables = new DisposableStore();
|
|
43
|
+
const config = await ResolvedConfig.fromProjectPath(this.project, disposables);
|
|
44
|
+
const serverConfig = config.sessions[0].server;
|
|
39
45
|
const browserFactory = new PlaywrightBrowserPageFactory(this.headed, Number(this.timeout));
|
|
40
|
-
let
|
|
41
|
-
let explorer;
|
|
46
|
+
let session;
|
|
42
47
|
try {
|
|
43
|
-
this.context.stderr.write('Starting
|
|
44
|
-
|
|
45
|
-
this.context.stderr.write(`Server running at ${
|
|
46
|
-
|
|
47
|
-
const listResult = await explorer.listFixtures();
|
|
48
|
+
this.context.stderr.write('Starting server...\n');
|
|
49
|
+
session = await ExplorerSession.create('check-stability', serverConfig, browserFactory, { logger });
|
|
50
|
+
this.context.stderr.write(`Server running at ${session.serverUrl}\n`);
|
|
51
|
+
const listResult = await session.explorer.listFixtures();
|
|
48
52
|
if (listResult.loadError) {
|
|
49
53
|
this.context.stderr.write(`Warning: Fixture loading error: ${listResult.loadError}\n`);
|
|
50
54
|
}
|
|
@@ -56,7 +60,7 @@ class CheckStabilityCommand extends Command {
|
|
|
56
60
|
for (let i = 0; i < fixtures.length; i++) {
|
|
57
61
|
const fixture = fixtures[i];
|
|
58
62
|
this.context.stderr.write(`[${i + 1}/${fixtures.length}] Checking ${fixture.fixtureId}...`);
|
|
59
|
-
const result = await explorer.screenshotFixtureStabilityCheck(fixture.fixtureId);
|
|
63
|
+
const result = await session.explorer.screenshotFixtureStabilityCheck(fixture.fixtureId);
|
|
60
64
|
const hashes = result.screenshots.map(s => contentHash(s.image));
|
|
61
65
|
const isStable = hashes[0] === hashes[1] && hashes[1] === hashes[2];
|
|
62
66
|
results.push({
|
|
@@ -76,9 +80,9 @@ class CheckStabilityCommand extends Command {
|
|
|
76
80
|
return unstable > 0 ? 1 : 0;
|
|
77
81
|
}
|
|
78
82
|
finally {
|
|
79
|
-
await
|
|
83
|
+
await session?.dispose();
|
|
80
84
|
await browserFactory.dispose();
|
|
81
|
-
|
|
85
|
+
disposables.dispose();
|
|
82
86
|
}
|
|
83
87
|
}
|
|
84
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkStabilityCommand.js","sources":["../../src/commands/checkStabilityCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkStabilityCommand.js","sources":["../../src/commands/checkStabilityCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export declare class CompareCommand extends Command {
|
|
|
3
3
|
static paths: string[][];
|
|
4
4
|
static usage: import("clipanion").Usage;
|
|
5
5
|
readonly verbose: number;
|
|
6
|
+
readonly logFile: string | undefined;
|
|
6
7
|
readonly filter: string | undefined;
|
|
7
8
|
readonly project: string;
|
|
8
9
|
readonly baseline: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compareCommand.d.ts","sourceRoot":"","sources":["../../src/commands/compareCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"compareCommand.d.ts","sourceRoot":"","sources":["../../src/commands/compareCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAW5C,qBAAa,cAAe,SAAQ,OAAO;IAC1C,OAAgB,KAAK,aAAwB;IAE7C,OAAgB,KAAK,4BAOlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,OAAO,qBAAgG;IAChH,QAAQ,CAAC,MAAM,qBAAkG;IACjH,QAAQ,CAAC,OAAO,SAAuI;IACvJ,QAAQ,CAAC,QAAQ,SAA2G;IAC5H,QAAQ,CAAC,OAAO,SAAwG;IACxH,QAAQ,CAAC,MAAM,qBAAkJ;IACjK,QAAQ,CAAC,YAAY,uBAAuI;IAEtJ,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAwDhC"}
|
|
@@ -1,23 +1,32 @@
|
|
|
1
1
|
import { Command, Option } from 'clipanion';
|
|
2
2
|
import * as fs from 'node:fs/promises';
|
|
3
3
|
import * as path from 'node:path';
|
|
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
10
|
import { compareScreenshotsOnDisk, printComparisonToConsole, writeComparisonReport } from '../comparison.js';
|
|
5
|
-
import { ConsoleLogger, verbosityToLogLevel, logBuildInfo } from '../logger.js';
|
|
11
|
+
import { ConsoleLogger, verbosityToLogLevel, createLogFileOptions, logBuildInfo } from '../logger.js';
|
|
6
12
|
import { FileSystemStorage } from '../storage.js';
|
|
7
|
-
import {
|
|
13
|
+
import { ResolvedConfig } from '../config.js';
|
|
8
14
|
import { listPngFiles, matchGlob } from '../utils.js';
|
|
15
|
+
import '../renderManifest.js';
|
|
16
|
+
import { MANIFEST_FILENAME } from '../packages/common/dist/renderManifest.js';
|
|
9
17
|
|
|
10
18
|
class CompareCommand extends Command {
|
|
11
|
-
static paths = [['
|
|
19
|
+
static paths = [['render:compare']];
|
|
12
20
|
static usage = Command.Usage({
|
|
13
21
|
description: 'Compare screenshot directories (file-level only)',
|
|
14
22
|
examples: [
|
|
15
|
-
['Compare default directories', '$0
|
|
16
|
-
['Compare with custom paths', '$0
|
|
17
|
-
['Generate report folder', '$0
|
|
23
|
+
['Compare default directories', '$0 render:compare'],
|
|
24
|
+
['Compare with custom paths', '$0 render:compare --baseline ./golden --current ./actual'],
|
|
25
|
+
['Generate report folder', '$0 render:compare --report ./report'],
|
|
18
26
|
],
|
|
19
27
|
});
|
|
20
28
|
verbose = Option.Counter('-v,--verbose', 0, { description: 'Increase log verbosity (-v debug, -vv trace)' });
|
|
29
|
+
logFile = Option.String('--log-file', { description: 'Append logs to this file (works with -v/-vv)' });
|
|
21
30
|
filter = Option.String('--filter', { required: false, description: 'Filter fixtures by glob pattern' });
|
|
22
31
|
project = Option.String('-p,--project', process.cwd(), { description: 'Project: a directory, vite config file, or component-explorer.json' });
|
|
23
32
|
baseline = Option.String('--baseline', '.screenshots/baseline', { description: 'Baseline screenshots directory' });
|
|
@@ -25,9 +34,11 @@ class CompareCommand extends Command {
|
|
|
25
34
|
report = Option.String('--report', { required: false, description: 'Output report folder (contains report.json, report.md, and changed screenshots)' });
|
|
26
35
|
failOnLabels = Option.Array('--fail-on-labels', { required: false, description: 'Only fail when fixtures with any of these labels have changes' });
|
|
27
36
|
async execute() {
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
37
|
+
const disposables = new DisposableStore();
|
|
38
|
+
const config = await ResolvedConfig.fromProjectPath(this.project, disposables);
|
|
39
|
+
const projectDir = config.configDir;
|
|
40
|
+
disposables.dispose();
|
|
41
|
+
const _logger = new ConsoleLogger('compare', this.context.stdout, verbosityToLogLevel(this.verbose), createLogFileOptions(this.logFile, this.verbose));
|
|
31
42
|
logBuildInfo(_logger);
|
|
32
43
|
const baselineDir = path.isAbsolute(this.baseline) ? this.baseline : path.join(projectDir, this.baseline);
|
|
33
44
|
const currentDir = path.isAbsolute(this.current) ? this.current : path.join(projectDir, this.current);
|
|
@@ -71,8 +82,16 @@ function hasChangesWithLabels(result, labels) {
|
|
|
71
82
|
}
|
|
72
83
|
async function readFixturesJson(dir) {
|
|
73
84
|
try {
|
|
74
|
-
const data = await fs.readFile(path.join(dir,
|
|
75
|
-
|
|
85
|
+
const data = await fs.readFile(path.join(dir, MANIFEST_FILENAME), 'utf-8');
|
|
86
|
+
const manifest = JSON.parse(data);
|
|
87
|
+
if (manifest.fixtures && Array.isArray(manifest.fixtures)) {
|
|
88
|
+
const result = {};
|
|
89
|
+
for (const f of manifest.fixtures) {
|
|
90
|
+
result[f.fixtureId] = { background: f.background, labels: f.labels };
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
return manifest;
|
|
76
95
|
}
|
|
77
96
|
catch {
|
|
78
97
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compareCommand.js","sources":["../../src/commands/compareCommand.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compareCommand.js","sources":["../../src/commands/compareCommand.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAWM,MAAO,cAAe,SAAQ,OAAO,CAAA;IAC1C,OAAgB,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAE5C,IAAA,OAAgB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AACrC,QAAA,WAAW,EAAE,kDAAkD;AAC/D,QAAA,QAAQ,EAAE;YACT,CAAC,6BAA6B,EAAE,mBAAmB,CAAC;YACpD,CAAC,2BAA2B,EAAE,0DAA0D,CAAC;YACzF,CAAC,wBAAwB,EAAE,qCAAqC,CAAC;AACjE,SAAA;AACD,KAAA,CAAC;AAEO,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;AAC5G,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;AACtG,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;AACvG,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,oEAAoE,EAAE,CAAC;AAC7I,IAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,uBAAuB,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;AAClH,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,sBAAsB,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;AAC9G,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,iFAAiF,EAAE,CAAC;AACvJ,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,+DAA+D,EAAE,CAAC;AAE3J,IAAA,MAAM,OAAO,GAAA;AACZ,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;AACzC,QAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;AAC9E,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS;QACnC,WAAW,CAAC,OAAO,EAAE;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtJ,YAAY,CAAC,OAAO,CAAC;AAErB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;AACzG,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;AAErG,QAAA,MAAM,eAAe,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC;AAC1D,QAAA,MAAM,cAAc,GAAG,IAAI,iBAAiB,CAAC,UAAU,CAAC;;AAGxD,QAAA,IAAI,aAAa,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;AACnD,QAAA,IAAI,YAAY,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC;;AAGjD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,QAAQ,GAAG,CAAC,IAAY,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,MAAO,CAAC;AACtF,YAAA,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9C,YAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7C;AAEA,QAAA,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC;AAC1D,QAAA,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC;AAE5D,QAAA,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAC5C,EAAE,IAAI,EAAE,YAAY,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EACpH,EAAE,IAAI,EAAE,YAAY,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EACvH,YAAY,EACZ,aAAa,EACb,EAAE,eAAe,EAAE,gBAAgB,EAAE,CACrC;QAED,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAErD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;AACpG,YAAA,MAAM,qBAAqB,CAAC;gBAC3B,SAAS;gBACT,MAAM;gBACN,YAAY,EAAE,IAAI,CAAC,QAAQ;gBAC3B,WAAW,EAAE,IAAI,CAAC,OAAO;AACzB,gBAAA,eAAe,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,IAAI,CAAC,CAAA,EAAG,EAAE,MAAM,CAAC;AAC1D,gBAAA,cAAc,EAAE,CAAC,EAAE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAA,EAAG,EAAE,MAAM,CAAC;AACxD,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAAC,MAAM,CAAA,GAAA,CAAK,CAAC;QACpE;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;cACnB,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY;cAC9C,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACpF,OAAO,QAAQ,GAAG,CAAC,GAAG,CAAC;IACxB;;AAGD,SAAS,oBAAoB,CAAC,MAAwB,EAAE,MAAgB,EAAA;AACvE,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AAChC,IAAA,MAAM,QAAQ,GAAG,CAAC,EAAU,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;IACjG,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrG;AAEA,eAAe,gBAAgB,CAAC,GAAW,EAAA;AAC1C,IAAA,IAAI;AACH,QAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC1D,MAAM,MAAM,GAAoC,EAAE;AAClD,YAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE;AAClC,gBAAA,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YACrE;AACA,YAAA,OAAO,MAAM;QACd;AACA,QAAA,OAAO,QAAQ;IAChB;AAAE,IAAA,MAAM;AACP,QAAA,OAAO,SAAS;IACjB;AACD;;;;"}
|
|
@@ -2,10 +2,15 @@ import { Command } from 'clipanion';
|
|
|
2
2
|
export declare class McpCommand extends Command {
|
|
3
3
|
static paths: string[][];
|
|
4
4
|
static usage: import("clipanion").Usage;
|
|
5
|
+
readonly verbose: number;
|
|
6
|
+
readonly logFile: string | undefined;
|
|
5
7
|
readonly project: string;
|
|
8
|
+
readonly useDaemon: boolean;
|
|
6
9
|
readonly noAutostart: boolean;
|
|
7
10
|
readonly noAutostartHint: string | undefined;
|
|
8
11
|
readonly callTimeout: string | undefined;
|
|
9
12
|
execute(): Promise<void>;
|
|
13
|
+
private _runInProcess;
|
|
14
|
+
private _runWithExternalDaemon;
|
|
10
15
|
}
|
|
11
16
|
//# sourceMappingURL=mcpCommand.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpCommand.d.ts","sourceRoot":"","sources":["../../src/commands/mcpCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"mcpCommand.d.ts","sourceRoot":"","sources":["../../src/commands/mcpCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAW5C,qBAAa,UAAW,SAAQ,OAAO;IACtC,OAAgB,KAAK,aAAa;IAElC,OAAgB,KAAK,4BAOlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,OAAO,qBAAgG;IAChH,QAAQ,CAAC,OAAO,SAAwI;IACxJ,QAAQ,CAAC,SAAS,UAA6I;IAC/J,QAAQ,CAAC,WAAW,UAA4I;IAChK,QAAQ,CAAC,eAAe,qBAAsJ;IAC9K,QAAQ,CAAC,WAAW,qBAAyG;IAEvH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAwBhB,aAAa;YA2Cb,sBAAsB;CA4DpC"}
|