@vscode/component-explorer-cli 0.1.1-1 → 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/commands/acceptCommand.d.ts +2 -1
- package/dist/commands/acceptCommand.d.ts.map +1 -1
- package/dist/commands/acceptCommand.js +12 -6
- package/dist/commands/acceptCommand.js.map +1 -1
- package/dist/commands/compareCommand.d.ts +5 -1
- package/dist/commands/compareCommand.d.ts.map +1 -1
- package/dist/commands/compareCommand.js +43 -71
- 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 +7 -2
- package/dist/commands/screenshotCommand.d.ts.map +1 -1
- package/dist/commands/screenshotCommand.js +61 -14
- 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 +1 -2
- package/dist/commands/watchCommand.d.ts.map +1 -1
- package/dist/commands/watchCommand.js +23 -19
- 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 +98 -16
- 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 +1 -1
- 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 +6 -3
- package/dist/explorerSession.js.map +1 -1
- package/dist/external/vscode-observables/observables/dist/disposables.js +24 -1
- package/dist/external/vscode-observables/observables/dist/disposables.js.map +1 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js +1 -4
- package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js +3 -0
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/index.js +2 -5
- package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +1 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js +30 -6
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js +1 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js +12 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -1
- 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/gitUtils.js +1 -1
- package/dist/git/gitUtils.js.map +1 -1
- package/dist/httpServer.d.ts +8 -7
- package/dist/httpServer.d.ts.map +1 -1
- package/dist/httpServer.js +59 -12
- package/dist/httpServer.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.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/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/watchConfig.d.ts +41 -0
- package/dist/watchConfig.d.ts.map +1 -1
- package/dist/watchConfig.js +41 -19
- package/dist/watchConfig.js.map +1 -1
- package/package.json +16 -6
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js +0 -72
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js +0 -447
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js +0 -64
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js +0 -52
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { nullLogger } from './logger.js';
|
|
2
|
+
import { buildExplorerUrl } from './utils.js';
|
|
2
3
|
|
|
3
4
|
class BrowserComponentExplorer {
|
|
4
5
|
_browserPageFactory;
|
|
@@ -6,6 +7,7 @@ class BrowserComponentExplorer {
|
|
|
6
7
|
_logger;
|
|
7
8
|
_page;
|
|
8
9
|
_lastState;
|
|
10
|
+
_screenshotMutex = Promise.resolve();
|
|
9
11
|
constructor(_browserPageFactory, _server, _logger = nullLogger) {
|
|
10
12
|
this._browserPageFactory = _browserPageFactory;
|
|
11
13
|
this._server = _server;
|
|
@@ -13,15 +15,15 @@ class BrowserComponentExplorer {
|
|
|
13
15
|
}
|
|
14
16
|
async _ensureReady() {
|
|
15
17
|
if (!this._page) {
|
|
16
|
-
const cliUrl = this._server.url
|
|
17
|
-
this._logger.
|
|
18
|
+
const cliUrl = buildExplorerUrl({ baseUrl: this._server.url, rawRender: true });
|
|
19
|
+
this._logger.debug(`Opening browser page: ${cliUrl}`);
|
|
18
20
|
this._page = await this._browserPageFactory.openPage(cliUrl);
|
|
19
21
|
await this._waitForCliApi(this._page);
|
|
20
22
|
}
|
|
21
23
|
return this._page;
|
|
22
24
|
}
|
|
23
25
|
async _waitForCliApi(page) {
|
|
24
|
-
this._logger.
|
|
26
|
+
this._logger.trace('Polling for __componentExplorerCli__ to initialize...');
|
|
25
27
|
await page.evaluateJs(`
|
|
26
28
|
new Promise(resolve => {
|
|
27
29
|
function check() {
|
|
@@ -32,7 +34,7 @@ class BrowserComponentExplorer {
|
|
|
32
34
|
})
|
|
33
35
|
`);
|
|
34
36
|
this._lastState = await this._getState(page);
|
|
35
|
-
this._logger.
|
|
37
|
+
this._logger.debug(`CLI API ready, sessionId=${this._lastState.sessionId}, version=${this._lastState.updateVersion}`);
|
|
36
38
|
}
|
|
37
39
|
async _getState(page) {
|
|
38
40
|
return page.evaluateJs(`({
|
|
@@ -45,23 +47,103 @@ class BrowserComponentExplorer {
|
|
|
45
47
|
return page.evaluateJs('window.__componentExplorerCli__.listFixtures()');
|
|
46
48
|
}
|
|
47
49
|
async screenshotFixture(fixtureId) {
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
this.
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
// Serialize screenshot calls — the single browser page can only render one fixture at a time
|
|
51
|
+
const prev = this._screenshotMutex;
|
|
52
|
+
let resolve;
|
|
53
|
+
this._screenshotMutex = new Promise(r => { resolve = r; });
|
|
54
|
+
this._logger.trace(`Screenshot mutex: waiting for ${fixtureId}`);
|
|
55
|
+
await prev;
|
|
56
|
+
this._logger.trace(`Screenshot mutex: acquired for ${fixtureId}`);
|
|
57
|
+
const startTime = Date.now();
|
|
58
|
+
try {
|
|
59
|
+
const page = await this._ensureReady();
|
|
60
|
+
const escapedId = JSON.stringify(fixtureId);
|
|
61
|
+
const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, rawRender: true, fixtureId });
|
|
62
|
+
this._logger.debug(`Rendering fixture: ${debugUrl}`);
|
|
63
|
+
const renderResult = await page.evaluateJs(`window.__componentExplorerCli__.renderFixture(${escapedId})`);
|
|
64
|
+
const image = await page.screenshot(`document.getElementById('root').lastElementChild`);
|
|
65
|
+
this._logger.debug(`Screenshot done: ${fixtureId} (${Date.now() - startTime}ms)`);
|
|
66
|
+
return { image, errors: renderResult.errors };
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
this._logger.trace(`Screenshot mutex: released for ${fixtureId}`);
|
|
70
|
+
resolve();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async screenshotFixtureStabilityCheck(fixtureId) {
|
|
74
|
+
const prev = this._screenshotMutex;
|
|
75
|
+
let resolve;
|
|
76
|
+
this._screenshotMutex = new Promise(r => { resolve = r; });
|
|
77
|
+
this._logger.trace(`Screenshot mutex: waiting for stability check ${fixtureId}`);
|
|
78
|
+
await prev;
|
|
79
|
+
this._logger.trace(`Screenshot mutex: acquired for stability check ${fixtureId}`);
|
|
80
|
+
try {
|
|
81
|
+
const page = await this._ensureReady();
|
|
82
|
+
const escapedId = JSON.stringify(fixtureId);
|
|
83
|
+
const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, rawRender: true, fixtureId });
|
|
84
|
+
this._logger.debug(`Stability check: ${debugUrl}`);
|
|
85
|
+
await page.evaluateJs(`window.__componentExplorerCli__.disposeCurrentFixture?.()`);
|
|
86
|
+
const startTime = Date.now();
|
|
87
|
+
const renderResult = await page.evaluateJs(`window.__componentExplorerCli__.renderFixture(${escapedId})`);
|
|
88
|
+
const domExpr = `document.getElementById('root').lastElementChild`;
|
|
89
|
+
const image0 = await page.screenshot(domExpr);
|
|
90
|
+
const delay0 = Date.now() - startTime;
|
|
91
|
+
this._logger.debug(`Stability screenshot 1/3 at ${delay0}ms`);
|
|
92
|
+
const elapsed1 = Date.now() - startTime;
|
|
93
|
+
if (elapsed1 < 500) {
|
|
94
|
+
await new Promise(r => setTimeout(r, 500 - elapsed1));
|
|
95
|
+
}
|
|
96
|
+
const image1 = await page.screenshot(domExpr);
|
|
97
|
+
const delay1 = Date.now() - startTime;
|
|
98
|
+
this._logger.debug(`Stability screenshot 2/3 at ${delay1}ms`);
|
|
99
|
+
const elapsed2 = Date.now() - startTime;
|
|
100
|
+
if (elapsed2 < 3000) {
|
|
101
|
+
await new Promise(r => setTimeout(r, 3000 - elapsed2));
|
|
102
|
+
}
|
|
103
|
+
const image2 = await page.screenshot(domExpr);
|
|
104
|
+
const delay2 = Date.now() - startTime;
|
|
105
|
+
this._logger.debug(`Stability check done: ${fixtureId} (${delay2}ms total)`);
|
|
106
|
+
return {
|
|
107
|
+
screenshots: [
|
|
108
|
+
{ image: image0, delayMs: delay0 },
|
|
109
|
+
{ image: image1, delayMs: delay1 },
|
|
110
|
+
{ image: image2, delayMs: delay2 },
|
|
111
|
+
],
|
|
112
|
+
errors: renderResult.errors,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
this._logger.trace(`Screenshot mutex: released for stability check ${fixtureId}`);
|
|
117
|
+
resolve();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async evaluateJs(expression, fixtureId) {
|
|
121
|
+
const prev = this._screenshotMutex;
|
|
122
|
+
let resolve;
|
|
123
|
+
this._screenshotMutex = new Promise(r => { resolve = r; });
|
|
124
|
+
await prev;
|
|
125
|
+
try {
|
|
126
|
+
this._logger.trace(`evaluateJs: expression length=${expression.length}${fixtureId ? `, fixtureId=${fixtureId}` : ''}`);
|
|
127
|
+
const page = await this._ensureReady();
|
|
128
|
+
if (fixtureId !== undefined) {
|
|
129
|
+
const escapedId = JSON.stringify(fixtureId);
|
|
130
|
+
await page.evaluateJs(`window.__componentExplorerCli__.renderFixture(${escapedId})`);
|
|
131
|
+
}
|
|
132
|
+
const result = await page.evaluateJs(expression);
|
|
133
|
+
this._logger.trace(`evaluateJs: result length=${JSON.stringify(result)?.length ?? 0}`);
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
resolve();
|
|
138
|
+
}
|
|
54
139
|
}
|
|
55
140
|
async codeCoverage(_id) {
|
|
56
141
|
throw new Error('Code coverage not yet implemented');
|
|
57
142
|
}
|
|
58
143
|
async waitForUpdate(timeoutMs = 0) {
|
|
59
144
|
const page = await this._ensureReady();
|
|
60
|
-
// Read the current state NOW, not from _lastState. This ensures any
|
|
61
|
-
// spurious version bumps that happened during prior operations (e.g.
|
|
62
|
-
// initial screenshot capture, Vite dependency optimization) are ignored.
|
|
63
145
|
const prev = await this._getState(page);
|
|
64
|
-
this._logger.
|
|
146
|
+
this._logger.debug(`Waiting for update (sessionId=${prev.sessionId}, version=${prev.updateVersion})...`);
|
|
65
147
|
const newState = await page.evaluateJs(`
|
|
66
148
|
new Promise((resolve, reject) => {
|
|
67
149
|
${timeoutMs > 0 ? `const timeout = setTimeout(() => reject(new Error('Timeout waiting for HMR update')), ${timeoutMs});` : ''}
|
|
@@ -85,10 +167,10 @@ class BrowserComponentExplorer {
|
|
|
85
167
|
`);
|
|
86
168
|
const reloaded = newState.sessionId !== prev.sessionId;
|
|
87
169
|
if (reloaded) {
|
|
88
|
-
this._logger.
|
|
170
|
+
this._logger.debug(`Page reloaded: sessionId ${prev.sessionId} → ${newState.sessionId}`);
|
|
89
171
|
}
|
|
90
172
|
else {
|
|
91
|
-
this._logger.
|
|
173
|
+
this._logger.debug(`HMR update: version ${prev.updateVersion} → ${newState.updateVersion}`);
|
|
92
174
|
}
|
|
93
175
|
this._lastState = newState;
|
|
94
176
|
}
|
|
@@ -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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DaemonContext.d.ts","sourceRoot":"","sources":["../../src/daemon/DaemonContext.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { type IDisposable, type IReader } from '@vscode/observables';
|
|
2
|
+
import { AsyncStream } from '@hediet/simple-api';
|
|
3
|
+
import { ExplorerSession } from '../explorerSession.js';
|
|
4
|
+
import type { ResolvedWatchConfig } from '../watchConfig.js';
|
|
5
|
+
import { type ILogger } from '../logger.js';
|
|
6
|
+
import { type ApprovalStore } from './approvalStore.js';
|
|
7
|
+
import type { DaemonContext } from './DaemonContext.js';
|
|
8
|
+
export declare class ActivityTracker implements IDisposable {
|
|
9
|
+
private readonly _idleTimeoutMs;
|
|
10
|
+
private readonly _onIdle;
|
|
11
|
+
private readonly _logger;
|
|
12
|
+
private _lastActivityTime;
|
|
13
|
+
private _idleCheckInterval;
|
|
14
|
+
private _autorunDisposable;
|
|
15
|
+
private _disposed;
|
|
16
|
+
private _started;
|
|
17
|
+
private _activeCount;
|
|
18
|
+
constructor(_idleTimeoutMs: number, _onIdle: () => void, _logger: ILogger);
|
|
19
|
+
setActive(value: boolean): void;
|
|
20
|
+
reportActivity(): void;
|
|
21
|
+
start(): void;
|
|
22
|
+
dispose(): void;
|
|
23
|
+
}
|
|
24
|
+
export type DaemonEvent = {
|
|
25
|
+
readonly type: 'source-change';
|
|
26
|
+
readonly sessionName: string;
|
|
27
|
+
readonly sourceTreeId: string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly type: 'ref-change';
|
|
30
|
+
readonly sessionName: string;
|
|
31
|
+
readonly newCommit: string;
|
|
32
|
+
} | {
|
|
33
|
+
readonly type: 'log';
|
|
34
|
+
readonly level: 'info' | 'debug' | 'trace';
|
|
35
|
+
readonly message: string;
|
|
36
|
+
};
|
|
37
|
+
export type SessionInfo = {
|
|
38
|
+
readonly name: string;
|
|
39
|
+
readonly sourceKind: 'current' | 'worktree';
|
|
40
|
+
readonly isLoading: true;
|
|
41
|
+
} | {
|
|
42
|
+
readonly name: string;
|
|
43
|
+
readonly sourceKind: 'current' | 'worktree';
|
|
44
|
+
readonly isLoading?: false;
|
|
45
|
+
readonly serverUrl: string;
|
|
46
|
+
readonly sourceTreeId: string;
|
|
47
|
+
};
|
|
48
|
+
export declare class SourceTreeChangedError extends Error {
|
|
49
|
+
constructor(sessionName: string);
|
|
50
|
+
}
|
|
51
|
+
export type DaemonApiType = DaemonService['api']['TMethods'];
|
|
52
|
+
export declare class DaemonService {
|
|
53
|
+
private readonly _config;
|
|
54
|
+
private readonly _pipeName;
|
|
55
|
+
private readonly _logger;
|
|
56
|
+
private readonly _browserFactory;
|
|
57
|
+
private readonly _serverFactory;
|
|
58
|
+
private readonly _sessions;
|
|
59
|
+
private readonly _sessionConfigs;
|
|
60
|
+
private readonly _resolvers;
|
|
61
|
+
private readonly _eventListenerCount;
|
|
62
|
+
private readonly _eventListeners;
|
|
63
|
+
private _shutdownRequested;
|
|
64
|
+
private _shutdownResolvers;
|
|
65
|
+
private readonly _activityTracker;
|
|
66
|
+
readonly approvals: ApprovalStore;
|
|
67
|
+
readonly api: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
|
|
68
|
+
fixtures: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
|
|
69
|
+
list: import("@hediet/simple-api").IMethod<{
|
|
70
|
+
sessionName: string;
|
|
71
|
+
sourceTreeId: string;
|
|
72
|
+
}, import("../componentExplorer.js").FixtureInfo[], DaemonContext>;
|
|
73
|
+
}>, DaemonContext>;
|
|
74
|
+
screenshots: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
|
|
75
|
+
take: import("@hediet/simple-api").IMethod<{
|
|
76
|
+
fixtureId: string;
|
|
77
|
+
sourceTreeId: string;
|
|
78
|
+
sessionName: string;
|
|
79
|
+
includeImage?: boolean | undefined;
|
|
80
|
+
stabilityCheck?: boolean | undefined;
|
|
81
|
+
}, {
|
|
82
|
+
hash: string;
|
|
83
|
+
sourceTreeId: string;
|
|
84
|
+
image: string | undefined;
|
|
85
|
+
errors: import("../componentExplorer.js").ErrorInfo[] | undefined;
|
|
86
|
+
isStable: boolean;
|
|
87
|
+
stabilityScreenshots: {
|
|
88
|
+
hash: string;
|
|
89
|
+
delayMs: number;
|
|
90
|
+
image: string | undefined;
|
|
91
|
+
}[];
|
|
92
|
+
} | {
|
|
93
|
+
hash: string;
|
|
94
|
+
sourceTreeId: string;
|
|
95
|
+
image: string | undefined;
|
|
96
|
+
errors: import("../componentExplorer.js").ErrorInfo[] | undefined;
|
|
97
|
+
isStable?: undefined;
|
|
98
|
+
stabilityScreenshots?: undefined;
|
|
99
|
+
}, DaemonContext>;
|
|
100
|
+
takeBatch: import("@hediet/simple-api").IMethod<{
|
|
101
|
+
fixtureIds: string[];
|
|
102
|
+
sourceTreeId: string;
|
|
103
|
+
sessionName: string;
|
|
104
|
+
includeImages?: boolean | undefined;
|
|
105
|
+
}, {
|
|
106
|
+
sourceTreeId: string;
|
|
107
|
+
screenshots: {
|
|
108
|
+
fixtureId: string;
|
|
109
|
+
hash: string;
|
|
110
|
+
image: string | undefined;
|
|
111
|
+
errors: import("../componentExplorer.js").ErrorInfo[] | undefined;
|
|
112
|
+
}[];
|
|
113
|
+
}, DaemonContext>;
|
|
114
|
+
compare: import("@hediet/simple-api").IMethod<{
|
|
115
|
+
fixtureId: string;
|
|
116
|
+
baselineSessionName: string;
|
|
117
|
+
baselineSourceTreeId: string;
|
|
118
|
+
currentSessionName: string;
|
|
119
|
+
currentSourceTreeId: string;
|
|
120
|
+
includeImages?: boolean | undefined;
|
|
121
|
+
}, {
|
|
122
|
+
match: boolean;
|
|
123
|
+
baselineHash: string;
|
|
124
|
+
currentHash: string;
|
|
125
|
+
baselineImage: string | undefined;
|
|
126
|
+
currentImage: string | undefined;
|
|
127
|
+
baselineErrors: import("../componentExplorer.js").ErrorInfo[] | undefined;
|
|
128
|
+
currentErrors: import("../componentExplorer.js").ErrorInfo[] | undefined;
|
|
129
|
+
approval: import("./approvalStore.js").ApprovalInfo | undefined;
|
|
130
|
+
}, DaemonContext>;
|
|
131
|
+
}>, DaemonContext>;
|
|
132
|
+
approvals: import("@hediet/simple-api").ApiImplementation<import("@hediet/simple-api").MapMethods<{
|
|
133
|
+
approve: import("@hediet/simple-api").IMethod<{
|
|
134
|
+
fixtureId: string;
|
|
135
|
+
originalHash: string;
|
|
136
|
+
modifiedHash: string;
|
|
137
|
+
comment: string;
|
|
138
|
+
}, void, DaemonContext>;
|
|
139
|
+
revoke: import("@hediet/simple-api").IMethod<{
|
|
140
|
+
fixtureId: string;
|
|
141
|
+
originalHash: string;
|
|
142
|
+
modifiedHash: string;
|
|
143
|
+
}, void, DaemonContext>;
|
|
144
|
+
list: import("@hediet/simple-api").IMethod<{
|
|
145
|
+
fixtureId?: string | undefined;
|
|
146
|
+
}, import("./approvalStore.js").ApprovalInfo[], DaemonContext>;
|
|
147
|
+
lookup: import("@hediet/simple-api").IMethod<{
|
|
148
|
+
fixtureId: string;
|
|
149
|
+
originalHash: string;
|
|
150
|
+
modifiedHash: string;
|
|
151
|
+
}, import("./approvalStore.js").ApprovalInfo | null, DaemonContext>;
|
|
152
|
+
}>, DaemonContext>;
|
|
153
|
+
evaluate: import("@hediet/simple-api").IMethod<{
|
|
154
|
+
sessionName: string;
|
|
155
|
+
sourceTreeId: string;
|
|
156
|
+
expression: string;
|
|
157
|
+
fixtureId?: string | undefined;
|
|
158
|
+
}, {
|
|
159
|
+
result: unknown;
|
|
160
|
+
}, DaemonContext>;
|
|
161
|
+
events: import("@hediet/simple-api").IMethod<Record<string, never>, AsyncStream<DaemonEvent>, DaemonContext>;
|
|
162
|
+
sessions: import("@hediet/simple-api").IMethod<Record<string, never>, SessionInfo[], DaemonContext>;
|
|
163
|
+
shutdown: import("@hediet/simple-api").IMethod<Record<string, never>, void, DaemonContext>;
|
|
164
|
+
}>, DaemonContext>;
|
|
165
|
+
private constructor();
|
|
166
|
+
static create(config: ResolvedWatchConfig, logger: ILogger, pipeName?: string, options?: {
|
|
167
|
+
idleTimeoutMs?: number;
|
|
168
|
+
}): Promise<DaemonService>;
|
|
169
|
+
private _buildApi;
|
|
170
|
+
getSession(name: string): ExplorerSession;
|
|
171
|
+
getSessionInfos(reader?: IReader): SessionInfo[];
|
|
172
|
+
waitForSession(sessionName: string | undefined): Promise<SessionInfo & {
|
|
173
|
+
isLoading?: false;
|
|
174
|
+
}>;
|
|
175
|
+
getSourceTreeId(sessionName: string): string;
|
|
176
|
+
assertSourceTreeId(sessionName: string, expected: string): void;
|
|
177
|
+
eventStream(): AsyncIterable<DaemonEvent>;
|
|
178
|
+
runEventLoop(): Promise<void>;
|
|
179
|
+
private _sourceChangeDisposables;
|
|
180
|
+
private _startSourceChangeWatchers;
|
|
181
|
+
private _handleRefChange;
|
|
182
|
+
requestShutdown(): void;
|
|
183
|
+
dispose(): Promise<void>;
|
|
184
|
+
/** @internal — also called by EventStreamLogger */
|
|
185
|
+
_emit(event: DaemonEvent): void;
|
|
186
|
+
private _setupSession;
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=DaemonService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DaemonService.d.ts","sourceRoot":"","sources":["../../src/daemon/DaemonService.ts"],"names":[],"mappings":"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"}
|