@vscode/component-explorer-cli 0.1.1-9 → 0.2.1-0
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/LICENSE +21 -0
- package/SECURITY.md +14 -0
- package/dist/WorktreePool.d.ts +22 -0
- package/dist/WorktreePool.d.ts.map +1 -0
- package/dist/WorktreePool.js +58 -0
- package/dist/WorktreePool.js.map +1 -0
- package/dist/WorktreePool.test.d.ts +2 -0
- package/dist/WorktreePool.test.d.ts.map +1 -0
- package/dist/_virtual/_build-info.js +4 -0
- package/dist/_virtual/_build-info.js.map +1 -0
- package/dist/browserPage.d.ts +15 -1
- package/dist/browserPage.d.ts.map +1 -1
- package/dist/browserPage.js +51 -7
- package/dist/browserPage.js.map +1 -1
- package/dist/commands/acceptCommand.d.ts.map +1 -1
- package/dist/commands/acceptCommand.js +3 -2
- package/dist/commands/acceptCommand.js.map +1 -1
- package/dist/commands/checkStabilityCommand.d.ts +12 -0
- package/dist/commands/checkStabilityCommand.d.ts.map +1 -0
- package/dist/commands/checkStabilityCommand.js +84 -0
- package/dist/commands/checkStabilityCommand.js.map +1 -0
- package/dist/commands/compareCommand.d.ts +1 -0
- package/dist/commands/compareCommand.d.ts.map +1 -1
- package/dist/commands/compareCommand.js +25 -4
- package/dist/commands/compareCommand.js.map +1 -1
- package/dist/commands/mcpCommand.d.ts +1 -0
- package/dist/commands/mcpCommand.d.ts.map +1 -1
- package/dist/commands/mcpCommand.js +23 -10
- package/dist/commands/mcpCommand.js.map +1 -1
- package/dist/commands/screenshotCommand.d.ts +2 -0
- package/dist/commands/screenshotCommand.d.ts.map +1 -1
- package/dist/commands/screenshotCommand.js +19 -4
- package/dist/commands/screenshotCommand.js.map +1 -1
- package/dist/commands/serveCommand.d.ts +4 -0
- package/dist/commands/serveCommand.d.ts.map +1 -1
- package/dist/commands/serveCommand.js +101 -26
- package/dist/commands/serveCommand.js.map +1 -1
- package/dist/commands/watchCommand.d.ts +2 -0
- package/dist/commands/watchCommand.d.ts.map +1 -1
- package/dist/commands/watchCommand.js +18 -66
- package/dist/commands/watchCommand.js.map +1 -1
- package/dist/comparison.d.ts +11 -1
- package/dist/comparison.d.ts.map +1 -1
- package/dist/comparison.js +25 -11
- package/dist/comparison.js.map +1 -1
- package/dist/component-explorer-config.schema.json +260 -55
- package/dist/componentExplorer.d.ts +21 -18
- package/dist/componentExplorer.d.ts.map +1 -1
- package/dist/componentExplorer.js +60 -19
- package/dist/componentExplorer.js.map +1 -1
- package/dist/daemon/DaemonService.d.ts +100 -11
- package/dist/daemon/DaemonService.d.ts.map +1 -1
- package/dist/daemon/DaemonService.js +512 -129
- package/dist/daemon/DaemonService.js.map +1 -1
- package/dist/daemon/dynamicSessions.test.d.ts +2 -0
- package/dist/daemon/dynamicSessions.test.d.ts.map +1 -0
- package/dist/daemon/lifecycle.d.ts +2 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +52 -30
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/pipeClient.d.ts.map +1 -1
- package/dist/daemon/pipeClient.js +81 -2
- package/dist/daemon/pipeClient.js.map +1 -1
- package/dist/daemon/pipeServer.d.ts +2 -1
- package/dist/daemon/pipeServer.d.ts.map +1 -1
- package/dist/daemon/pipeServer.js +59 -2
- package/dist/daemon/pipeServer.js.map +1 -1
- package/dist/daemon/version.d.ts +10 -0
- package/dist/daemon/version.d.ts.map +1 -0
- package/dist/daemon/version.js +17 -0
- package/dist/daemon/version.js.map +1 -0
- package/dist/dependencyInstaller.d.ts +2 -2
- package/dist/dependencyInstaller.d.ts.map +1 -1
- package/dist/dependencyInstaller.js.map +1 -1
- package/dist/explorerSession.d.ts +3 -3
- package/dist/explorerSession.d.ts.map +1 -1
- package/dist/explorerSession.js +26 -9
- package/dist/explorerSession.js.map +1 -1
- package/dist/git/gitIndexResolver.d.ts +25 -0
- package/dist/git/gitIndexResolver.d.ts.map +1 -0
- package/dist/git/gitIndexResolver.js +91 -0
- package/dist/git/gitIndexResolver.js.map +1 -0
- package/dist/git/gitIndexResolver.test.d.ts +2 -0
- package/dist/git/gitIndexResolver.test.d.ts.map +1 -0
- package/dist/git/gitService.d.ts +2 -0
- package/dist/git/gitService.d.ts.map +1 -1
- package/dist/git/gitService.js +6 -0
- package/dist/git/gitService.js.map +1 -1
- package/dist/git/gitWorktreeManager.d.ts +6 -0
- package/dist/git/gitWorktreeManager.d.ts.map +1 -1
- package/dist/git/gitWorktreeManager.js +42 -13
- package/dist/git/gitWorktreeManager.js.map +1 -1
- package/dist/git/gitWorktreeManager.test.d.ts +2 -0
- package/dist/git/gitWorktreeManager.test.d.ts.map +1 -0
- package/dist/git/testUtils.d.ts +13 -0
- package/dist/git/testUtils.d.ts.map +1 -0
- package/dist/httpServer.d.ts +18 -7
- package/dist/httpServer.d.ts.map +1 -1
- package/dist/httpServer.js +117 -18
- package/dist/httpServer.js.map +1 -1
- package/dist/httpServer.test.d.ts +2 -0
- package/dist/httpServer.test.d.ts.map +1 -0
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +7 -1
- package/dist/logger.js.map +1 -1
- package/dist/mcp/McpServer.d.ts +18 -0
- package/dist/mcp/McpServer.d.ts.map +1 -1
- package/dist/mcp/McpServer.js +555 -13
- package/dist/mcp/McpServer.js.map +1 -1
- package/dist/mcp/TaskManager.d.ts +28 -0
- package/dist/mcp/TaskManager.d.ts.map +1 -0
- package/dist/mcp/TaskManager.js +54 -0
- package/dist/mcp/TaskManager.js.map +1 -0
- package/dist/packages/simple-api/dist/{chunk-Q24JOMNK.js → chunk-TAEFVNPN.js} +1 -1
- package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js.map +1 -0
- package/dist/packages/simple-api/dist/express.js +11 -3
- package/dist/packages/simple-api/dist/express.js.map +1 -1
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -7
- package/dist/utils.js.map +1 -1
- package/dist/visualCache.d.ts +34 -0
- package/dist/visualCache.d.ts.map +1 -0
- package/dist/visualCache.js +90 -0
- package/dist/visualCache.js.map +1 -0
- package/dist/watchConfig.d.ts +68 -15
- package/dist/watchConfig.d.ts.map +1 -1
- package/dist/watchConfig.js +109 -65
- package/dist/watchConfig.js.map +1 -1
- package/package.json +21 -4
- package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentExplorer.d.ts","sourceRoot":"","sources":["../src/componentExplorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"componentExplorer.d.ts","sourceRoot":"","sources":["../src/componentExplorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
|
+
import './external/vscode-observables/observables/dist/observableInternal/index.js';
|
|
2
|
+
import { observableValue } from './external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js';
|
|
3
|
+
import './external/vscode-observables/observables/dist/observableInternal/debugLocation.js';
|
|
4
|
+
import './external/vscode-observables/observables/dist/observableInternal/observables/derived.js';
|
|
5
|
+
import './external/vscode-observables/observables/dist/observableInternal/utils/utils.js';
|
|
6
|
+
import './external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
|
|
1
7
|
import { nullLogger } from './logger.js';
|
|
8
|
+
import { SourceTreeId } from './sourceTreeId.js';
|
|
2
9
|
import { buildExplorerUrl } from './utils.js';
|
|
10
|
+
import { parseVersion, isCompatibleVersion, runtimeVersionNeededByCliText } from './daemon/version.js';
|
|
3
11
|
|
|
12
|
+
async function unwrapScreenshot(page, domExpr) {
|
|
13
|
+
const result = await page.screenshot(domExpr);
|
|
14
|
+
if (!result.ok) {
|
|
15
|
+
throw new Error(`Fixture DOM node not found`);
|
|
16
|
+
}
|
|
17
|
+
return result.screenshot;
|
|
18
|
+
}
|
|
4
19
|
class BrowserComponentExplorer {
|
|
5
20
|
_browserPageFactory;
|
|
6
21
|
_server;
|
|
@@ -8,10 +23,20 @@ class BrowserComponentExplorer {
|
|
|
8
23
|
_page;
|
|
9
24
|
_lastState;
|
|
10
25
|
_screenshotMutex = Promise.resolve();
|
|
26
|
+
sourceTreeId;
|
|
11
27
|
constructor(_browserPageFactory, _server, _logger = nullLogger) {
|
|
12
28
|
this._browserPageFactory = _browserPageFactory;
|
|
13
29
|
this._server = _server;
|
|
14
30
|
this._logger = _logger;
|
|
31
|
+
this.sourceTreeId = observableValue(this, new SourceTreeId(Date.now().toString()));
|
|
32
|
+
if (_server.onSourceChange) {
|
|
33
|
+
_server.onSourceChange(() => {
|
|
34
|
+
this._bumpSourceTreeId();
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
_bumpSourceTreeId() {
|
|
39
|
+
this.sourceTreeId.set(new SourceTreeId(Date.now().toString()), undefined);
|
|
15
40
|
}
|
|
16
41
|
async _ensureReady() {
|
|
17
42
|
if (!this._page) {
|
|
@@ -23,28 +48,37 @@ class BrowserComponentExplorer {
|
|
|
23
48
|
return this._page;
|
|
24
49
|
}
|
|
25
50
|
async _waitForCliApi(page) {
|
|
26
|
-
this._logger.trace('Polling for
|
|
51
|
+
this._logger.trace('Polling for __componentExplorer__ to initialize...');
|
|
27
52
|
await page.evaluateJs(`
|
|
28
53
|
new Promise(resolve => {
|
|
29
54
|
function check() {
|
|
30
|
-
if (window.
|
|
55
|
+
if (window.__componentExplorer__) resolve();
|
|
31
56
|
else setTimeout(check, 50);
|
|
32
57
|
}
|
|
33
58
|
check();
|
|
34
59
|
})
|
|
35
60
|
`);
|
|
36
61
|
this._lastState = await this._getState(page);
|
|
62
|
+
this._assertRuntimeVersionCompatibility(this._lastState.runtimeVersion);
|
|
37
63
|
this._logger.debug(`CLI API ready, sessionId=${this._lastState.sessionId}, version=${this._lastState.updateVersion}`);
|
|
38
64
|
}
|
|
65
|
+
_assertRuntimeVersionCompatibility(runtimeVersion) {
|
|
66
|
+
const expected = parseVersion(runtimeVersionNeededByCliText);
|
|
67
|
+
const actual = parseVersion(runtimeVersion);
|
|
68
|
+
if (!isCompatibleVersion(expected, actual)) {
|
|
69
|
+
throw new Error(`Explorer runtime version mismatch. CLI requires ${runtimeVersionNeededByCliText}, browser runtime provides ${runtimeVersion}. Update CLI and explorer runtime together.`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
39
72
|
async _getState(page) {
|
|
40
73
|
return page.evaluateJs(`({
|
|
41
|
-
sessionId: window.
|
|
42
|
-
updateVersion: window.
|
|
74
|
+
sessionId: window.__componentExplorer__.sessionId,
|
|
75
|
+
updateVersion: window.__componentExplorer__.updateVersion,
|
|
76
|
+
runtimeVersion: window.__componentExplorer__.runtimeVersion,
|
|
43
77
|
})`);
|
|
44
78
|
}
|
|
45
79
|
async listFixtures() {
|
|
46
80
|
const page = await this._ensureReady();
|
|
47
|
-
return page.evaluateJs('window.
|
|
81
|
+
return page.evaluateJs('window.__componentExplorer__.listFixtures()');
|
|
48
82
|
}
|
|
49
83
|
async screenshotFixture(fixtureId) {
|
|
50
84
|
// Serialize screenshot calls — the single browser page can only render one fixture at a time
|
|
@@ -60,10 +94,11 @@ class BrowserComponentExplorer {
|
|
|
60
94
|
const escapedId = JSON.stringify(fixtureId);
|
|
61
95
|
const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, rawRender: true, fixtureId });
|
|
62
96
|
this._logger.debug(`Rendering fixture: ${debugUrl}`);
|
|
63
|
-
const renderResult = await page.evaluateJs(`window.
|
|
97
|
+
const renderResult = await page.evaluateJs(`window.__componentExplorer__.renderFixture(${escapedId})`);
|
|
98
|
+
this._logger.debug(`Render completed: ${fixtureId} (hasError=${renderResult.hasError}, ${Date.now() - startTime}ms)`);
|
|
64
99
|
const image = await page.screenshot(`document.getElementById('root').lastElementChild`);
|
|
65
|
-
this._logger.debug(`Screenshot done: ${fixtureId} (${Date.now() - startTime}ms)`);
|
|
66
|
-
return { image
|
|
100
|
+
this._logger.debug(`Screenshot done: ${fixtureId} (ok=${image.ok}, ${Date.now() - startTime}ms)`);
|
|
101
|
+
return { image: image.ok ? image.screenshot : undefined, ...renderResult };
|
|
67
102
|
}
|
|
68
103
|
finally {
|
|
69
104
|
this._logger.trace(`Screenshot mutex: released for ${fixtureId}`);
|
|
@@ -82,25 +117,25 @@ class BrowserComponentExplorer {
|
|
|
82
117
|
const escapedId = JSON.stringify(fixtureId);
|
|
83
118
|
const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, rawRender: true, fixtureId });
|
|
84
119
|
this._logger.debug(`Stability check: ${debugUrl}`);
|
|
85
|
-
await page.evaluateJs(`window.
|
|
120
|
+
await page.evaluateJs(`window.__componentExplorer__.disposeCurrentFixture?.()`);
|
|
86
121
|
const startTime = Date.now();
|
|
87
|
-
const renderResult = await page.evaluateJs(`window.
|
|
122
|
+
const renderResult = await page.evaluateJs(`window.__componentExplorer__.renderFixture(${escapedId})`);
|
|
88
123
|
const domExpr = `document.getElementById('root').lastElementChild`;
|
|
89
|
-
const image0 = await page
|
|
124
|
+
const image0 = await unwrapScreenshot(page, domExpr);
|
|
90
125
|
const delay0 = Date.now() - startTime;
|
|
91
126
|
this._logger.debug(`Stability screenshot 1/3 at ${delay0}ms`);
|
|
92
127
|
const elapsed1 = Date.now() - startTime;
|
|
93
128
|
if (elapsed1 < 500) {
|
|
94
129
|
await new Promise(r => setTimeout(r, 500 - elapsed1));
|
|
95
130
|
}
|
|
96
|
-
const image1 = await page
|
|
131
|
+
const image1 = await unwrapScreenshot(page, domExpr);
|
|
97
132
|
const delay1 = Date.now() - startTime;
|
|
98
133
|
this._logger.debug(`Stability screenshot 2/3 at ${delay1}ms`);
|
|
99
134
|
const elapsed2 = Date.now() - startTime;
|
|
100
135
|
if (elapsed2 < 3000) {
|
|
101
136
|
await new Promise(r => setTimeout(r, 3000 - elapsed2));
|
|
102
137
|
}
|
|
103
|
-
const image2 = await page
|
|
138
|
+
const image2 = await unwrapScreenshot(page, domExpr);
|
|
104
139
|
const delay2 = Date.now() - startTime;
|
|
105
140
|
this._logger.debug(`Stability check done: ${fixtureId} (${delay2}ms total)`);
|
|
106
141
|
return {
|
|
@@ -109,7 +144,7 @@ class BrowserComponentExplorer {
|
|
|
109
144
|
{ image: image1, delayMs: delay1 },
|
|
110
145
|
{ image: image2, delayMs: delay2 },
|
|
111
146
|
],
|
|
112
|
-
|
|
147
|
+
...renderResult,
|
|
113
148
|
};
|
|
114
149
|
}
|
|
115
150
|
finally {
|
|
@@ -127,7 +162,7 @@ class BrowserComponentExplorer {
|
|
|
127
162
|
const page = await this._ensureReady();
|
|
128
163
|
if (fixtureId !== undefined) {
|
|
129
164
|
const escapedId = JSON.stringify(fixtureId);
|
|
130
|
-
await page.evaluateJs(`window.
|
|
165
|
+
await page.evaluateJs(`window.__componentExplorer__.renderFixture(${escapedId})`);
|
|
131
166
|
}
|
|
132
167
|
const result = await page.evaluateJs(expression);
|
|
133
168
|
this._logger.trace(`evaluateJs: result length=${JSON.stringify(result)?.length ?? 0}`);
|
|
@@ -148,16 +183,17 @@ class BrowserComponentExplorer {
|
|
|
148
183
|
new Promise((resolve, reject) => {
|
|
149
184
|
${timeoutMs > 0 ? `const timeout = setTimeout(() => reject(new Error('Timeout waiting for HMR update')), ${timeoutMs});` : ''}
|
|
150
185
|
function check() {
|
|
151
|
-
if (!window.
|
|
186
|
+
if (!window.__componentExplorer__) {
|
|
152
187
|
// Page reloaded — CLI not yet re-initialized, keep waiting
|
|
153
188
|
setTimeout(check, 50);
|
|
154
189
|
return;
|
|
155
190
|
}
|
|
156
|
-
const s = window.
|
|
157
|
-
const v = window.
|
|
191
|
+
const s = window.__componentExplorer__.sessionId;
|
|
192
|
+
const v = window.__componentExplorer__.updateVersion;
|
|
193
|
+
const r = window.__componentExplorer__.runtimeVersion;
|
|
158
194
|
if (s !== '${prev.sessionId}' || v > ${prev.updateVersion}) {
|
|
159
195
|
${timeoutMs > 0 ? 'clearTimeout(timeout);' : ''}
|
|
160
|
-
resolve({ sessionId: s, updateVersion: v });
|
|
196
|
+
resolve({ sessionId: s, updateVersion: v, runtimeVersion: r });
|
|
161
197
|
} else {
|
|
162
198
|
setTimeout(check, 50);
|
|
163
199
|
}
|
|
@@ -165,6 +201,7 @@ class BrowserComponentExplorer {
|
|
|
165
201
|
check();
|
|
166
202
|
})
|
|
167
203
|
`);
|
|
204
|
+
this._assertRuntimeVersionCompatibility(newState.runtimeVersion);
|
|
168
205
|
const reloaded = newState.sessionId !== prev.sessionId;
|
|
169
206
|
if (reloaded) {
|
|
170
207
|
this._logger.debug(`Page reloaded: sessionId ${prev.sessionId} → ${newState.sessionId}`);
|
|
@@ -173,6 +210,10 @@ class BrowserComponentExplorer {
|
|
|
173
210
|
this._logger.debug(`HMR update: version ${prev.updateVersion} → ${newState.updateVersion}`);
|
|
174
211
|
}
|
|
175
212
|
this._lastState = newState;
|
|
213
|
+
this._bumpSourceTreeId();
|
|
214
|
+
}
|
|
215
|
+
closePage() {
|
|
216
|
+
this._page = undefined;
|
|
176
217
|
}
|
|
177
218
|
async dispose() {
|
|
178
219
|
await this._page?.dispose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentExplorer.js","sources":["../src/componentExplorer.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"componentExplorer.js","sources":["../src/componentExplorer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,9 @@ import { ExplorerSession } from '../explorerSession.js';
|
|
|
4
4
|
import type { ResolvedWatchConfig } from '../watchConfig.js';
|
|
5
5
|
import { type ILogger } from '../logger.js';
|
|
6
6
|
import { type ApprovalStore } from './approvalStore.js';
|
|
7
|
+
import { VisualCache } from '../visualCache.js';
|
|
7
8
|
import type { DaemonContext } from './DaemonContext.js';
|
|
9
|
+
export { daemonApiVersionText, pluginProtocolVersionText, parseVersion, isCompatibleVersion, } from './version.js';
|
|
8
10
|
export declare class ActivityTracker implements IDisposable {
|
|
9
11
|
private readonly _idleTimeoutMs;
|
|
10
12
|
private readonly _onIdle;
|
|
@@ -29,6 +31,8 @@ export type DaemonEvent = {
|
|
|
29
31
|
readonly type: 'ref-change';
|
|
30
32
|
readonly sessionName: string;
|
|
31
33
|
readonly newCommit: string;
|
|
34
|
+
} | {
|
|
35
|
+
readonly type: 'session-change';
|
|
32
36
|
} | {
|
|
33
37
|
readonly type: 'log';
|
|
34
38
|
readonly level: 'info' | 'debug' | 'trace';
|
|
@@ -44,11 +48,17 @@ export type SessionInfo = {
|
|
|
44
48
|
readonly isLoading?: false;
|
|
45
49
|
readonly serverUrl: string;
|
|
46
50
|
readonly sourceTreeId: string;
|
|
51
|
+
readonly worktreePath?: string;
|
|
52
|
+
readonly ref?: string;
|
|
47
53
|
};
|
|
48
54
|
export declare class SourceTreeChangedError extends Error {
|
|
49
55
|
constructor(sessionName: string);
|
|
50
56
|
}
|
|
51
57
|
export type DaemonApiType = DaemonService['api']['TMethods'];
|
|
58
|
+
export interface DaemonVersionInfo {
|
|
59
|
+
readonly daemonApiVersion: string;
|
|
60
|
+
readonly pluginProtocolVersion: string;
|
|
61
|
+
}
|
|
52
62
|
export declare class DaemonService {
|
|
53
63
|
private readonly _config;
|
|
54
64
|
private readonly _pipeName;
|
|
@@ -57,13 +67,16 @@ export declare class DaemonService {
|
|
|
57
67
|
private readonly _serverFactory;
|
|
58
68
|
private readonly _sessions;
|
|
59
69
|
private readonly _sessionConfigs;
|
|
70
|
+
private readonly _dynamicSessionMeta;
|
|
60
71
|
private readonly _resolvers;
|
|
61
72
|
private readonly _eventListenerCount;
|
|
62
73
|
private readonly _eventListeners;
|
|
63
74
|
private _shutdownRequested;
|
|
64
75
|
private _shutdownResolvers;
|
|
65
76
|
private readonly _activityTracker;
|
|
77
|
+
private readonly _worktreePool;
|
|
66
78
|
readonly approvals: ApprovalStore;
|
|
79
|
+
readonly visualCache: VisualCache;
|
|
67
80
|
readonly api: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
|
|
68
81
|
fixtures: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
|
|
69
82
|
list: import("@hediet/simple-api").IMethod<{
|
|
@@ -82,7 +95,10 @@ export declare class DaemonService {
|
|
|
82
95
|
hash: string;
|
|
83
96
|
sourceTreeId: string;
|
|
84
97
|
image: string | undefined;
|
|
85
|
-
|
|
98
|
+
hasError: boolean;
|
|
99
|
+
error: import("../componentExplorer.js").ExceptionError | undefined;
|
|
100
|
+
events: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
101
|
+
resultData: unknown;
|
|
86
102
|
isStable: boolean;
|
|
87
103
|
stabilityScreenshots: {
|
|
88
104
|
hash: string;
|
|
@@ -90,10 +106,13 @@ export declare class DaemonService {
|
|
|
90
106
|
image: string | undefined;
|
|
91
107
|
}[];
|
|
92
108
|
} | {
|
|
93
|
-
hash: string;
|
|
109
|
+
hash: string | undefined;
|
|
94
110
|
sourceTreeId: string;
|
|
95
111
|
image: string | undefined;
|
|
96
|
-
|
|
112
|
+
hasError: boolean;
|
|
113
|
+
error: import("../componentExplorer.js").ExceptionError | undefined;
|
|
114
|
+
events: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
115
|
+
resultData: unknown;
|
|
97
116
|
isStable?: undefined;
|
|
98
117
|
stabilityScreenshots?: undefined;
|
|
99
118
|
}, DaemonContext>;
|
|
@@ -106,9 +125,12 @@ export declare class DaemonService {
|
|
|
106
125
|
sourceTreeId: string;
|
|
107
126
|
screenshots: {
|
|
108
127
|
fixtureId: string;
|
|
109
|
-
hash: string;
|
|
128
|
+
hash: string | undefined;
|
|
110
129
|
image: string | undefined;
|
|
111
|
-
|
|
130
|
+
hasError: boolean;
|
|
131
|
+
error: import("../componentExplorer.js").ExceptionError | undefined;
|
|
132
|
+
events: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
133
|
+
resultData: unknown;
|
|
112
134
|
}[];
|
|
113
135
|
}, DaemonContext>;
|
|
114
136
|
compare: import("@hediet/simple-api").IMethod<{
|
|
@@ -120,12 +142,20 @@ export declare class DaemonService {
|
|
|
120
142
|
includeImages?: boolean | undefined;
|
|
121
143
|
}, {
|
|
122
144
|
match: boolean;
|
|
123
|
-
baselineHash: string;
|
|
124
|
-
currentHash: string;
|
|
145
|
+
baselineHash: string | undefined;
|
|
146
|
+
currentHash: string | undefined;
|
|
125
147
|
baselineImage: string | undefined;
|
|
126
148
|
currentImage: string | undefined;
|
|
127
|
-
|
|
128
|
-
|
|
149
|
+
baselineHasError: boolean;
|
|
150
|
+
baselineError: import("../componentExplorer.js").ExceptionError | undefined;
|
|
151
|
+
baselineEvents: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
152
|
+
baselineResultData: unknown;
|
|
153
|
+
currentHasError: boolean;
|
|
154
|
+
currentError: import("../componentExplorer.js").ExceptionError | undefined;
|
|
155
|
+
currentEvents: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
156
|
+
currentResultData: unknown;
|
|
157
|
+
labels: readonly string[] | undefined;
|
|
158
|
+
labelsBefore: readonly string[] | undefined;
|
|
129
159
|
approval: import("./approvalStore.js").ApprovalInfo | undefined;
|
|
130
160
|
}, DaemonContext>;
|
|
131
161
|
}>, DaemonContext>;
|
|
@@ -150,6 +180,19 @@ export declare class DaemonService {
|
|
|
150
180
|
modifiedHash: string;
|
|
151
181
|
}, import("./approvalStore.js").ApprovalInfo | null, DaemonContext>;
|
|
152
182
|
}>, DaemonContext>;
|
|
183
|
+
visualReview: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
|
|
184
|
+
getStatus: import("@hediet/simple-api").IMethod<{
|
|
185
|
+
fixtureId: string;
|
|
186
|
+
expectedVisualDescriptions: string[];
|
|
187
|
+
screenshotHash: string;
|
|
188
|
+
}, import("../visualCache.js").VisualReviewStatus, DaemonContext>;
|
|
189
|
+
approve: import("@hediet/simple-api").IMethod<{
|
|
190
|
+
fixtureId: string;
|
|
191
|
+
expectedVisualDescriptions: string[];
|
|
192
|
+
screenshotHash: string;
|
|
193
|
+
comment: string;
|
|
194
|
+
}, void, DaemonContext>;
|
|
195
|
+
}>, DaemonContext>;
|
|
153
196
|
evaluate: import("@hediet/simple-api").IMethod<{
|
|
154
197
|
sessionName: string;
|
|
155
198
|
sourceTreeId: string;
|
|
@@ -158,13 +201,49 @@ export declare class DaemonService {
|
|
|
158
201
|
}, {
|
|
159
202
|
result: unknown;
|
|
160
203
|
}, DaemonContext>;
|
|
204
|
+
setBrowserVisibility: import("@hediet/simple-api").IMethod<{
|
|
205
|
+
visible: boolean;
|
|
206
|
+
}, {
|
|
207
|
+
visible: boolean;
|
|
208
|
+
}, DaemonContext>;
|
|
161
209
|
events: import("@hediet/simple-api").IMethod<Record<string, never>, AsyncStream<DaemonEvent>, DaemonContext>;
|
|
162
210
|
sessions: import("@hediet/simple-api").IMethod<Record<string, never>, SessionInfo[], DaemonContext>;
|
|
211
|
+
version: import("@hediet/simple-api").IMethod<Record<string, never>, {
|
|
212
|
+
daemonApiVersion: string;
|
|
213
|
+
pluginProtocolVersion: string;
|
|
214
|
+
}, DaemonContext>;
|
|
215
|
+
restartSession: import("@hediet/simple-api").IMethod<{
|
|
216
|
+
sessionName: string;
|
|
217
|
+
}, SessionInfo[], DaemonContext>;
|
|
218
|
+
openSession: import("@hediet/simple-api").IMethod<{
|
|
219
|
+
name: string;
|
|
220
|
+
ref: string;
|
|
221
|
+
}, {
|
|
222
|
+
sessions: SessionInfo[];
|
|
223
|
+
} | {
|
|
224
|
+
error: string;
|
|
225
|
+
}, DaemonContext>;
|
|
226
|
+
closeSession: import("@hediet/simple-api").IMethod<{
|
|
227
|
+
name: string;
|
|
228
|
+
}, {
|
|
229
|
+
sessions: SessionInfo[];
|
|
230
|
+
} | {
|
|
231
|
+
error: string;
|
|
232
|
+
}, DaemonContext>;
|
|
233
|
+
updateSessionRef: import("@hediet/simple-api").IMethod<{
|
|
234
|
+
name: string;
|
|
235
|
+
ref: string;
|
|
236
|
+
}, {
|
|
237
|
+
sessions: SessionInfo[];
|
|
238
|
+
} | {
|
|
239
|
+
error: string;
|
|
240
|
+
}, DaemonContext>;
|
|
163
241
|
shutdown: import("@hediet/simple-api").IMethod<Record<string, never>, void, DaemonContext>;
|
|
164
242
|
}>, DaemonContext>;
|
|
165
243
|
private constructor();
|
|
166
244
|
static create(config: ResolvedWatchConfig, logger: ILogger, pipeName?: string, options?: {
|
|
167
245
|
idleTimeoutMs?: number;
|
|
246
|
+
headed?: boolean;
|
|
168
247
|
}): Promise<DaemonService>;
|
|
169
248
|
private _buildApi;
|
|
170
249
|
getSession(name: string): ExplorerSession;
|
|
@@ -178,11 +257,21 @@ export declare class DaemonService {
|
|
|
178
257
|
runEventLoop(): Promise<void>;
|
|
179
258
|
private _sourceChangeDisposables;
|
|
180
259
|
private _startSourceChangeWatchers;
|
|
260
|
+
private _addSourceChangeWatcher;
|
|
181
261
|
private _handleRefChange;
|
|
262
|
+
private _getChangedFiles;
|
|
182
263
|
requestShutdown(): void;
|
|
183
264
|
dispose(): Promise<void>;
|
|
184
|
-
|
|
185
|
-
|
|
265
|
+
private _emit;
|
|
266
|
+
private _restartSession;
|
|
267
|
+
private _createExplorerSession;
|
|
268
|
+
private _createWorktreeExplorerSession;
|
|
186
269
|
private _setupSession;
|
|
270
|
+
private _setupWorktreeSession;
|
|
271
|
+
private _openDynamicSession;
|
|
272
|
+
private _closeDynamicSession;
|
|
273
|
+
private _updateDynamicSessionRef;
|
|
274
|
+
private readonly _dynamicRefWatchers;
|
|
275
|
+
private _addDynamicRefWatcher;
|
|
187
276
|
}
|
|
188
277
|
//# sourceMappingURL=DaemonService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonService.d.ts","sourceRoot":"","sources":["../../src/daemon/DaemonService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DaemonService.d.ts","sourceRoot":"","sources":["../../src/daemon/DaemonService.ts"],"names":[],"mappings":"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"}
|