@vscode/component-explorer-cli 0.2.1-6 → 0.2.1-60
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 +6 -6
- package/dist/WorktreePool.d.ts +5 -4
- package/dist/WorktreePool.d.ts.map +1 -1
- package/dist/WorktreePool.js +3 -3
- package/dist/WorktreePool.js.map +1 -1
- package/dist/_virtual/_build-info.js +1 -1
- package/dist/browserPage.d.ts +50 -0
- package/dist/browserPage.d.ts.map +1 -1
- package/dist/browserPage.js +78 -0
- package/dist/browserPage.js.map +1 -1
- package/dist/commands/acceptCommand.d.ts +1 -1
- package/dist/commands/acceptCommand.d.ts.map +1 -1
- package/dist/commands/acceptCommand.js +15 -8
- package/dist/commands/acceptCommand.js.map +1 -1
- package/dist/commands/checkStabilityCommand.d.ts +2 -0
- package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
- package/dist/commands/checkStabilityCommand.js +19 -2
- package/dist/commands/checkStabilityCommand.js.map +1 -1
- package/dist/commands/compareCommand.d.ts +1 -1
- package/dist/commands/compareCommand.d.ts.map +1 -1
- package/dist/commands/compareCommand.js +24 -15
- package/dist/commands/compareCommand.js.map +1 -1
- package/dist/commands/inputArg.d.ts +33 -0
- package/dist/commands/inputArg.d.ts.map +1 -0
- package/dist/commands/inputArg.js +103 -0
- package/dist/commands/inputArg.js.map +1 -0
- package/dist/commands/mcpCommand.d.ts +0 -2
- package/dist/commands/mcpCommand.d.ts.map +1 -1
- package/dist/commands/mcpCommand.js +136 -68
- package/dist/commands/mcpCommand.js.map +1 -1
- package/dist/commands/renderCommand.d.ts +9 -1
- package/dist/commands/renderCommand.d.ts.map +1 -1
- package/dist/commands/renderCommand.js +308 -21
- package/dist/commands/renderCommand.js.map +1 -1
- package/dist/commands/serveCommand.d.ts +1 -0
- package/dist/commands/serveCommand.d.ts.map +1 -1
- package/dist/commands/serveCommand.js +11 -6
- package/dist/commands/serveCommand.js.map +1 -1
- package/dist/commands/serviceDiffCommitsCommand.d.ts +1 -0
- package/dist/commands/serviceDiffCommitsCommand.d.ts.map +1 -1
- package/dist/commands/serviceDiffCommitsCommand.js +34 -28
- package/dist/commands/serviceDiffCommitsCommand.js.map +1 -1
- package/dist/commands/watchCommand.d.ts +1 -0
- package/dist/commands/watchCommand.d.ts.map +1 -1
- package/dist/commands/watchCommand.js +24 -13
- package/dist/commands/watchCommand.js.map +1 -1
- package/dist/comparison.d.ts +4 -3
- package/dist/comparison.d.ts.map +1 -1
- package/dist/comparison.js +17 -14
- package/dist/comparison.js.map +1 -1
- package/dist/component-explorer-config.schema.json +55 -2
- package/dist/componentExplorer.d.ts +106 -11
- package/dist/componentExplorer.d.ts.map +1 -1
- package/dist/componentExplorer.js +159 -16
- package/dist/componentExplorer.js.map +1 -1
- package/dist/config.d.ts +33 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +64 -27
- package/dist/config.js.map +1 -1
- package/dist/coverage.d.ts +64 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +212 -0
- package/dist/coverage.js.map +1 -0
- package/dist/daemon/DaemonService.d.ts +14 -5
- package/dist/daemon/DaemonService.d.ts.map +1 -1
- package/dist/daemon/DaemonService.js +39 -15
- package/dist/daemon/DaemonService.js.map +1 -1
- package/dist/daemon/approvalStore.d.ts +2 -1
- package/dist/daemon/approvalStore.d.ts.map +1 -1
- package/dist/daemon/approvalStore.js +4 -3
- package/dist/daemon/approvalStore.js.map +1 -1
- package/dist/daemon/inProcessClient.js +2 -2
- package/dist/daemon/lifecycle.d.ts +4 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +1 -1
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/pipeClient.d.ts +2 -0
- package/dist/daemon/pipeClient.d.ts.map +1 -1
- package/dist/daemon/pipeClient.js +21 -3
- package/dist/daemon/pipeClient.js.map +1 -1
- package/dist/daemon/pipeName.d.ts +3 -3
- package/dist/daemon/pipeName.d.ts.map +1 -1
- package/dist/daemon/pipeName.js +1 -2
- package/dist/daemon/pipeName.js.map +1 -1
- package/dist/daemon/pipeServer.js +2 -2
- package/dist/daemon/version.d.ts +1 -1
- package/dist/daemon/version.js +1 -1
- package/dist/dependencyInstaller.d.ts +2 -1
- package/dist/dependencyInstaller.d.ts.map +1 -1
- package/dist/dependencyInstaller.js +4 -4
- package/dist/dependencyInstaller.js.map +1 -1
- package/dist/git/gitCommitResolver.d.ts +2 -1
- package/dist/git/gitCommitResolver.d.ts.map +1 -1
- package/dist/git/gitCommitResolver.js +2 -2
- package/dist/git/gitCommitResolver.js.map +1 -1
- package/dist/git/gitIndexResolver.d.ts +2 -1
- package/dist/git/gitIndexResolver.d.ts.map +1 -1
- package/dist/git/gitIndexResolver.js +1 -1
- package/dist/git/gitIndexResolver.js.map +1 -1
- package/dist/git/gitService.d.ts +5 -4
- package/dist/git/gitService.d.ts.map +1 -1
- package/dist/git/gitService.js.map +1 -1
- package/dist/git/gitUtils.d.ts +6 -5
- package/dist/git/gitUtils.d.ts.map +1 -1
- package/dist/git/gitUtils.js +5 -4
- package/dist/git/gitUtils.js.map +1 -1
- package/dist/git/gitWorktreeManager.d.ts +15 -14
- package/dist/git/gitWorktreeManager.d.ts.map +1 -1
- package/dist/git/gitWorktreeManager.js +10 -11
- package/dist/git/gitWorktreeManager.js.map +1 -1
- package/dist/git/testUtils.d.ts +2 -1
- package/dist/git/testUtils.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.schema.json +38 -16
- package/dist/mcp/DaemonAccessor.d.ts +22 -0
- package/dist/mcp/DaemonAccessor.d.ts.map +1 -0
- package/dist/mcp/McpServer.d.ts +5 -19
- package/dist/mcp/McpServer.d.ts.map +1 -1
- package/dist/mcp/McpServer.js +367 -281
- package/dist/mcp/McpServer.js.map +1 -1
- package/dist/packages/common/dist/explorerUrl.js +21 -0
- package/dist/packages/common/dist/explorerUrl.js.map +1 -0
- package/dist/packages/common/dist/renderManifest.js +26 -5
- package/dist/packages/common/dist/renderManifest.js.map +1 -1
- 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/path.d.ts +30 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +78 -0
- package/dist/path.js.map +1 -0
- package/dist/processTree.d.ts +14 -0
- package/dist/processTree.d.ts.map +1 -0
- package/dist/processTree.js +84 -0
- package/dist/processTree.js.map +1 -0
- package/dist/screenshotServiceClient.d.ts +5 -1
- package/dist/screenshotServiceClient.d.ts.map +1 -1
- package/dist/screenshotServiceClient.js +8 -2
- package/dist/screenshotServiceClient.js.map +1 -1
- package/dist/server/httpServer.d.ts +1 -1
- package/dist/server/httpServer.d.ts.map +1 -1
- package/dist/server/httpServer.js +20 -22
- package/dist/server/httpServer.js.map +1 -1
- package/dist/server/serverConfig.d.ts +23 -6
- package/dist/server/serverConfig.d.ts.map +1 -1
- package/dist/server/serverConfig.js +11 -18
- package/dist/server/serverConfig.js.map +1 -1
- package/dist/server/viteServer.d.ts +16 -1
- package/dist/server/viteServer.d.ts.map +1 -1
- package/dist/server/viteServer.js +86 -5
- package/dist/server/viteServer.js.map +1 -1
- package/dist/storage.d.ts +2 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/storage.js.map +1 -1
- package/dist/utils.d.ts +3 -30
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +4 -24
- package/dist/utils.js.map +1 -1
- package/dist/visualCache.d.ts +2 -1
- package/dist/visualCache.d.ts.map +1 -1
- package/dist/visualCache.js +4 -3
- package/dist/visualCache.js.map +1 -1
- package/dist/viteProjectRef.d.ts +4 -12
- package/dist/viteProjectRef.d.ts.map +1 -1
- package/dist/viteProjectRef.js +9 -17
- package/dist/viteProjectRef.js.map +1 -1
- package/package.json +20 -19
- package/dist/commands/artifactCommand.d.ts +0 -14
- package/dist/commands/artifactCommand.d.ts.map +0 -1
- package/dist/commands/screenshotCommand.d.ts +0 -19
- package/dist/commands/screenshotCommand.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/coverage.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import libCoverage from 'istanbul-lib-coverage';
|
|
5
|
+
import v8ToIstanbul from 'v8-to-istanbul';
|
|
6
|
+
|
|
7
|
+
const { createCoverageMap } = libCoverage;
|
|
8
|
+
/**
|
|
9
|
+
* Reads `window.__coverage__` produced by vite-plugin-istanbul and validates
|
|
10
|
+
* it has the Istanbul shape. Returns an empty map if the global is not present.
|
|
11
|
+
*/
|
|
12
|
+
function validateIstanbulMap(raw, logger) {
|
|
13
|
+
if (!raw || typeof raw !== 'object') {
|
|
14
|
+
logger.debug('No __coverage__ global found on the page (or not an object)');
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
const map = raw;
|
|
18
|
+
const out = {};
|
|
19
|
+
for (const [, value] of Object.entries(map)) {
|
|
20
|
+
if (!value || typeof value !== 'object') {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const v = value;
|
|
24
|
+
if (typeof v.path !== 'string' || !v.statementMap || !v.s) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
// Normalize the path to OS-native absolute (e.g. `D:/foo` → `D:\foo` on Windows).
|
|
28
|
+
const absPath = path.resolve(v.path);
|
|
29
|
+
out[absPath] = { ...v, path: absPath };
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Convert raw V8 JS coverage entries (from Playwright) into an Istanbul-shaped
|
|
35
|
+
* coverage map. Entries without source content or with non-resolvable URLs
|
|
36
|
+
* are skipped.
|
|
37
|
+
*/
|
|
38
|
+
async function v8EntriesToIstanbul(entries, options) {
|
|
39
|
+
const { viteServerUrl, projectRoot, logger } = options;
|
|
40
|
+
const map = createCoverageMap({});
|
|
41
|
+
const baseUrl = viteServerUrl.endsWith('/') ? viteServerUrl.slice(0, -1) : viteServerUrl;
|
|
42
|
+
for (const entry of entries) {
|
|
43
|
+
if (!entry.source) {
|
|
44
|
+
logger.trace(`v8: skipping ${entry.url} (no source)`);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const filePath = _v8UrlToFsPath(entry.url, baseUrl, projectRoot.value);
|
|
48
|
+
if (!filePath) {
|
|
49
|
+
logger.trace(`v8: skipping ${entry.url} (cannot resolve to fs path)`);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (options.exclude?.some(re => re.test(filePath))) {
|
|
53
|
+
logger.trace(`v8: excluded ${filePath}`);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (options.include && !options.include.some(re => re.test(filePath))) {
|
|
57
|
+
logger.trace(`v8: not included ${filePath}`);
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const converter = v8ToIstanbul(filePath, 0, { source: entry.source });
|
|
62
|
+
await converter.load();
|
|
63
|
+
converter.applyCoverage(entry.functions);
|
|
64
|
+
const istanbul = converter.toIstanbul();
|
|
65
|
+
for (const fileCoverage of Object.values(istanbul)) {
|
|
66
|
+
map.merge({ [fileCoverage.path]: fileCoverage });
|
|
67
|
+
}
|
|
68
|
+
converter.destroy();
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
logger.debug(`v8: failed to convert ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return JSON.parse(JSON.stringify(map.toJSON()));
|
|
75
|
+
}
|
|
76
|
+
/** Merge multiple Istanbul coverage maps into one (file/statement/branch hit counts summed). */
|
|
77
|
+
function mergeIstanbul(maps) {
|
|
78
|
+
const merged = createCoverageMap({});
|
|
79
|
+
for (const m of maps) {
|
|
80
|
+
merged.merge(m);
|
|
81
|
+
}
|
|
82
|
+
return JSON.parse(JSON.stringify(merged.toJSON()));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Convert raw Playwright CSS coverage entries into an Istanbul-shaped coverage
|
|
86
|
+
* map by treating each non-blank line as a statement. A line is considered
|
|
87
|
+
* "hit" if any covered byte-range overlaps with the line's character range.
|
|
88
|
+
*
|
|
89
|
+
* This lets CSS files appear in the same `coverage-final.json` as JS sources,
|
|
90
|
+
* so any tool that consumes Istanbul coverage (nyc, the coverage viewer, etc.)
|
|
91
|
+
* renders CSS as if it were source code.
|
|
92
|
+
*/
|
|
93
|
+
function cssEntriesToIstanbul(entries, options) {
|
|
94
|
+
const { viteServerUrl, projectRoot, logger } = options;
|
|
95
|
+
const baseUrl = viteServerUrl.endsWith('/') ? viteServerUrl.slice(0, -1) : viteServerUrl;
|
|
96
|
+
const out = {};
|
|
97
|
+
for (const entry of entries) {
|
|
98
|
+
if (!entry.text) {
|
|
99
|
+
logger.trace(`css: skipping ${entry.url} (no text)`);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const filePath = _v8UrlToFsPath(entry.url, baseUrl, projectRoot.value);
|
|
103
|
+
if (!filePath) {
|
|
104
|
+
logger.trace(`css: skipping ${entry.url} (cannot resolve to fs path)`);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (options.exclude?.some(re => re.test(filePath))) {
|
|
108
|
+
logger.trace(`css: excluded ${filePath}`);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (options.include && !options.include.some(re => re.test(filePath))) {
|
|
112
|
+
logger.trace(`css: not included ${filePath}`);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const lines = entry.text.split('\n');
|
|
116
|
+
const statementMap = {};
|
|
117
|
+
const s = {};
|
|
118
|
+
let offset = 0;
|
|
119
|
+
let nextId = 0;
|
|
120
|
+
for (let lineIdx = 0; lineIdx < lines.length; lineIdx++) {
|
|
121
|
+
const line = lines[lineIdx];
|
|
122
|
+
const lineStart = offset;
|
|
123
|
+
const lineEnd = offset + line.length;
|
|
124
|
+
offset = lineEnd + 1; // account for the '\n' that split() consumed
|
|
125
|
+
if (line.trim() === '') {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
const id = String(nextId++);
|
|
129
|
+
statementMap[id] = {
|
|
130
|
+
start: { line: lineIdx + 1, column: 0 },
|
|
131
|
+
end: { line: lineIdx + 1, column: line.length },
|
|
132
|
+
};
|
|
133
|
+
const hit = entry.ranges.some(r => r.start < lineEnd && r.end > lineStart);
|
|
134
|
+
s[id] = hit ? 1 : 0;
|
|
135
|
+
}
|
|
136
|
+
// If we've already seen this file (e.g. multiple stylesheet records for
|
|
137
|
+
// the same URL — happens when a reload re-loads the same .css), merge
|
|
138
|
+
// hit counts: a line is covered if it was hit in any record. We assume
|
|
139
|
+
// the text is identical across records of the same URL; if it differs
|
|
140
|
+
// (post-reload edit), the first record's text wins.
|
|
141
|
+
const existing = out[filePath];
|
|
142
|
+
if (existing) {
|
|
143
|
+
for (const id of Object.keys(existing.s)) {
|
|
144
|
+
if (s[id] && s[id] > 0) {
|
|
145
|
+
existing.s[id] = (existing.s[id] ?? 0) + s[id];
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
out[filePath] = {
|
|
151
|
+
path: filePath,
|
|
152
|
+
statementMap,
|
|
153
|
+
fnMap: {},
|
|
154
|
+
branchMap: {},
|
|
155
|
+
s,
|
|
156
|
+
f: {},
|
|
157
|
+
b: {},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
/** Write a bare Istanbul coverage map (`coverage-final.json` format) to disk. */
|
|
163
|
+
async function writeIstanbulFile(filePath, map) {
|
|
164
|
+
await fs.mkdir(path.dirname(filePath.value), { recursive: true });
|
|
165
|
+
await fs.writeFile(filePath.value, JSON.stringify(map, null, 2) + '\n', 'utf-8');
|
|
166
|
+
}
|
|
167
|
+
function _v8UrlToFsPath(url, viteServerBase, projectRoot) {
|
|
168
|
+
// file:// urls are direct
|
|
169
|
+
if (url.startsWith('file://')) {
|
|
170
|
+
try {
|
|
171
|
+
return path.resolve(fileURLToPath(url));
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
let urlPath;
|
|
178
|
+
if (url.startsWith(viteServerBase)) {
|
|
179
|
+
const tail = url.slice(viteServerBase.length).split('?')[0].split('#')[0];
|
|
180
|
+
urlPath = tail.startsWith('/') ? tail : `/${tail}`;
|
|
181
|
+
}
|
|
182
|
+
else if (url.startsWith('/') && !url.startsWith('//')) {
|
|
183
|
+
// Root-relative URLs (e.g. `/src/foo.css`) — produced by sourceURL
|
|
184
|
+
// annotations on inline stylesheets, or stripped from a server URL.
|
|
185
|
+
urlPath = url.split('?')[0].split('#')[0];
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
// External URLs (CDN, etc.) — skip
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
// `/@fs/<abs>` is Vite's escape hatch for files outside the project root,
|
|
192
|
+
// where `<abs>` is already an absolute disk path (POSIX-encoded on Windows).
|
|
193
|
+
const fsMatch = /^\/@fs\/(.+)$/.exec(urlPath);
|
|
194
|
+
if (fsMatch) {
|
|
195
|
+
return path.resolve(decodeURIComponent(fsMatch[1]));
|
|
196
|
+
}
|
|
197
|
+
// Strip Vite-internal prefixes that aren't real files.
|
|
198
|
+
if (urlPath.startsWith('/@id/') || urlPath.startsWith('/@vite/') || urlPath.startsWith('/@react-refresh')) {
|
|
199
|
+
return undefined;
|
|
200
|
+
}
|
|
201
|
+
// Skip the explorer's own virtual HTML route (carries an inline <style>
|
|
202
|
+
// with the page reset rules — not a source file we want to cover).
|
|
203
|
+
if (urlPath === '/___explorer' || urlPath.startsWith('/___explorer.')) {
|
|
204
|
+
return undefined;
|
|
205
|
+
}
|
|
206
|
+
// Resolve against the project root. We use posix join then resolve to get a
|
|
207
|
+
// canonical OS-native absolute path (e.g. on Windows: D:\proj\src\foo.css).
|
|
208
|
+
return path.resolve(projectRoot, urlPath.replace(/^\/+/, ''));
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export { cssEntriesToIstanbul, mergeIstanbul, v8EntriesToIstanbul, validateIstanbulMap, writeIstanbulFile };
|
|
212
|
+
//# sourceMappingURL=coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.js","sources":["../src/coverage.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -90,6 +90,9 @@ export declare class DaemonService {
|
|
|
90
90
|
sessionName: string;
|
|
91
91
|
includeImage?: boolean | undefined;
|
|
92
92
|
stabilityCheck?: boolean | undefined;
|
|
93
|
+
reloadBeforeRender?: boolean | undefined;
|
|
94
|
+
input?: unknown;
|
|
95
|
+
disposeAfter?: boolean | undefined;
|
|
93
96
|
}, {
|
|
94
97
|
hash: string;
|
|
95
98
|
sourceTreeId: string;
|
|
@@ -97,13 +100,15 @@ export declare class DaemonService {
|
|
|
97
100
|
hasError: boolean;
|
|
98
101
|
error: import("../componentExplorer.js").ExceptionError | undefined;
|
|
99
102
|
events: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
100
|
-
|
|
103
|
+
output: unknown;
|
|
101
104
|
isStable: boolean;
|
|
102
105
|
stabilityScreenshots: {
|
|
103
106
|
hash: string;
|
|
104
107
|
delayMs: number;
|
|
105
108
|
image: string | undefined;
|
|
106
109
|
}[];
|
|
110
|
+
previousDispose: import("../componentExplorer.js").DisposeReport | undefined;
|
|
111
|
+
currentDispose: import("../componentExplorer.js").DisposeReport | undefined;
|
|
107
112
|
} | {
|
|
108
113
|
hash: string | undefined;
|
|
109
114
|
sourceTreeId: string;
|
|
@@ -111,7 +116,9 @@ export declare class DaemonService {
|
|
|
111
116
|
hasError: boolean;
|
|
112
117
|
error: import("../componentExplorer.js").ExceptionError | undefined;
|
|
113
118
|
events: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
114
|
-
|
|
119
|
+
output: unknown;
|
|
120
|
+
previousDispose: import("../componentExplorer.js").DisposeReport | undefined;
|
|
121
|
+
currentDispose: import("../componentExplorer.js").DisposeReport | undefined;
|
|
115
122
|
isStable?: undefined;
|
|
116
123
|
stabilityScreenshots?: undefined;
|
|
117
124
|
}, DaemonContext>;
|
|
@@ -120,6 +127,8 @@ export declare class DaemonService {
|
|
|
120
127
|
sourceTreeId: string;
|
|
121
128
|
sessionName: string;
|
|
122
129
|
includeImages?: boolean | undefined;
|
|
130
|
+
reloadBetweenFixtures?: boolean | undefined;
|
|
131
|
+
input?: unknown;
|
|
123
132
|
}, {
|
|
124
133
|
sourceTreeId: string;
|
|
125
134
|
screenshots: {
|
|
@@ -129,7 +138,7 @@ export declare class DaemonService {
|
|
|
129
138
|
hasError: boolean;
|
|
130
139
|
error: import("../componentExplorer.js").ExceptionError | undefined;
|
|
131
140
|
events: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
132
|
-
|
|
141
|
+
output: unknown;
|
|
133
142
|
}[];
|
|
134
143
|
}, DaemonContext>;
|
|
135
144
|
compare: import("@hediet/simple-api").IMethod<{
|
|
@@ -148,11 +157,11 @@ export declare class DaemonService {
|
|
|
148
157
|
baselineHasError: boolean;
|
|
149
158
|
baselineError: import("../componentExplorer.js").ExceptionError | undefined;
|
|
150
159
|
baselineEvents: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
151
|
-
|
|
160
|
+
baselineOutput: unknown;
|
|
152
161
|
currentHasError: boolean;
|
|
153
162
|
currentError: import("../componentExplorer.js").ExceptionError | undefined;
|
|
154
163
|
currentEvents: import("../componentExplorer.js").RenderEvent[] | undefined;
|
|
155
|
-
|
|
164
|
+
currentOutput: unknown;
|
|
156
165
|
labels: readonly string[] | undefined;
|
|
157
166
|
labelsBefore: readonly string[] | undefined;
|
|
158
167
|
approval: import("./approvalStore.js").ApprovalInfo | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonService.d.ts","sourceRoot":"","sources":["../../src/daemon/DaemonService.ts"],"names":[],"mappings":"AACA,OAAO,EAAmD,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEtH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAgD,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DaemonService.d.ts","sourceRoot":"","sources":["../../src/daemon/DaemonService.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,11 @@ import { derived } from '../external/vscode-observables/observables/dist/observa
|
|
|
7
7
|
import { waitForState } from '../external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js';
|
|
8
8
|
import '../external/vscode-observables/observables/dist/observableInternal/utils/utils.js';
|
|
9
9
|
import '../external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
|
|
10
|
-
import { createApiFactory } from '../packages/simple-api/dist/chunk-
|
|
11
|
-
import { AsyncStream } from '../packages/simple-api/dist/chunk-
|
|
10
|
+
import { createApiFactory } from '../packages/simple-api/dist/chunk-FJ7AVNQE.js';
|
|
11
|
+
import { AsyncStream } from '../packages/simple-api/dist/chunk-TTRCY65Z.js';
|
|
12
12
|
import { ExplorerSession } from '../explorerSession.js';
|
|
13
13
|
import '../config.js';
|
|
14
|
+
import { RelativePath } from '../path.js';
|
|
14
15
|
import { GitIndexResolver } from '../git/gitIndexResolver.js';
|
|
15
16
|
import { DirtyWorktreeError } from '../git/gitWorktreeManager.js';
|
|
16
17
|
import { execGit } from '../git/gitUtils.js';
|
|
@@ -114,7 +115,7 @@ class DaemonService {
|
|
|
114
115
|
this._logger = _logger;
|
|
115
116
|
this._browserFactory = _browserFactory;
|
|
116
117
|
this.approvals = new FileApprovalStore(approvalStorePath);
|
|
117
|
-
this.visualCache = new VisualCache(
|
|
118
|
+
this.visualCache = new VisualCache(_config.screenshotDir.join(new RelativePath('visual-cache.json')));
|
|
118
119
|
this._activityTracker = new ActivityTracker(idleTimeoutMs, () => this.requestShutdown(), this._logger);
|
|
119
120
|
if (_config.worktreePool) {
|
|
120
121
|
this._worktreePool = new WorktreePool(_config.worktreePool.maxSlots, _config.repo.worktreeRootPath());
|
|
@@ -123,7 +124,7 @@ class DaemonService {
|
|
|
123
124
|
}
|
|
124
125
|
static async create(config, logger, pipeName, options) {
|
|
125
126
|
const browserFactory = new PlaywrightBrowserPageFactory(options?.headed ?? false, 30_000, logger);
|
|
126
|
-
const approvalStorePath =
|
|
127
|
+
const approvalStorePath = config.screenshotDir.join(new RelativePath('approvals.json'));
|
|
127
128
|
const idleTimeoutMs = options?.idleTimeoutMs ?? 5 * 60 * 1000; // 5 minutes default
|
|
128
129
|
const svc = new DaemonService(config, pipeName, logger, browserFactory, approvalStorePath, idleTimeoutMs);
|
|
129
130
|
for (const sessionConfig of config.sessions) {
|
|
@@ -159,13 +160,20 @@ class DaemonService {
|
|
|
159
160
|
sessionName: z.string(),
|
|
160
161
|
includeImage: z.boolean().optional(),
|
|
161
162
|
stabilityCheck: z.boolean().optional(),
|
|
163
|
+
reloadBeforeRender: z.boolean().optional(),
|
|
164
|
+
input: z.unknown().optional(),
|
|
165
|
+
disposeAfter: z.boolean().optional(),
|
|
162
166
|
},
|
|
163
167
|
}, async (args) => {
|
|
164
168
|
this._activityTracker.reportActivity();
|
|
165
169
|
const session = this.getSession(args.sessionName);
|
|
166
170
|
this.assertSourceTreeId(args.sessionName, args.sourceTreeId);
|
|
167
171
|
if (args.stabilityCheck) {
|
|
168
|
-
const result = await session.explorer.screenshotFixtureStabilityCheck(args.fixtureId
|
|
172
|
+
const result = await session.explorer.screenshotFixtureStabilityCheck(args.fixtureId, {
|
|
173
|
+
reloadBeforeRender: args.reloadBeforeRender,
|
|
174
|
+
input: args.input,
|
|
175
|
+
disposeAfter: args.disposeAfter,
|
|
176
|
+
});
|
|
169
177
|
this.assertSourceTreeId(args.sessionName, args.sourceTreeId);
|
|
170
178
|
const hashes = result.screenshots.map(s => contentHash(s.image));
|
|
171
179
|
const isStable = hashes[0] === hashes[1] && hashes[1] === hashes[2];
|
|
@@ -185,12 +193,18 @@ class DaemonService {
|
|
|
185
193
|
hasError: result.hasError,
|
|
186
194
|
error: result.error,
|
|
187
195
|
events: result.events.length > 0 ? result.events : undefined,
|
|
188
|
-
|
|
196
|
+
output: result.output,
|
|
189
197
|
isStable,
|
|
190
198
|
stabilityScreenshots,
|
|
199
|
+
previousDispose: result.previousDispose,
|
|
200
|
+
currentDispose: result.currentDispose,
|
|
191
201
|
};
|
|
192
202
|
}
|
|
193
|
-
const result = await session.explorer.screenshotFixture(args.fixtureId
|
|
203
|
+
const result = await session.explorer.screenshotFixture(args.fixtureId, {
|
|
204
|
+
reloadBeforeRender: args.reloadBeforeRender,
|
|
205
|
+
input: args.input,
|
|
206
|
+
disposeAfter: args.disposeAfter,
|
|
207
|
+
});
|
|
194
208
|
this.assertSourceTreeId(args.sessionName, args.sourceTreeId);
|
|
195
209
|
return {
|
|
196
210
|
hash: result.image ? contentHash(result.image) : undefined,
|
|
@@ -201,7 +215,9 @@ class DaemonService {
|
|
|
201
215
|
hasError: result.hasError,
|
|
202
216
|
error: result.error,
|
|
203
217
|
events: result.events?.length > 0 ? result.events : undefined,
|
|
204
|
-
|
|
218
|
+
output: result.output,
|
|
219
|
+
previousDispose: result.previousDispose,
|
|
220
|
+
currentDispose: result.currentDispose,
|
|
205
221
|
};
|
|
206
222
|
}),
|
|
207
223
|
takeBatch: createMethod({
|
|
@@ -210,6 +226,8 @@ class DaemonService {
|
|
|
210
226
|
sourceTreeId: z.string(),
|
|
211
227
|
sessionName: z.string(),
|
|
212
228
|
includeImages: z.boolean().optional(),
|
|
229
|
+
reloadBetweenFixtures: z.boolean().optional(),
|
|
230
|
+
input: z.unknown().optional(),
|
|
213
231
|
},
|
|
214
232
|
}, async (args) => {
|
|
215
233
|
this._activityTracker.reportActivity();
|
|
@@ -219,8 +237,14 @@ class DaemonService {
|
|
|
219
237
|
this._logger.trace(`takeBatch: ${args.fixtureIds.length} fixtures, session=${args.sessionName}`);
|
|
220
238
|
const startTime = Date.now();
|
|
221
239
|
const screenshots = [];
|
|
222
|
-
for (
|
|
223
|
-
const
|
|
240
|
+
for (let i = 0; i < args.fixtureIds.length; i++) {
|
|
241
|
+
const fixtureId = args.fixtureIds[i];
|
|
242
|
+
const result = await session.explorer.screenshotFixture(fixtureId, {
|
|
243
|
+
reloadOnError: true,
|
|
244
|
+
// Reload between fixtures (skip before the first one — the page is already fresh)
|
|
245
|
+
reloadBeforeRender: args.reloadBetweenFixtures && i > 0,
|
|
246
|
+
input: args.input,
|
|
247
|
+
});
|
|
224
248
|
this.assertSourceTreeId(args.sessionName, args.sourceTreeId);
|
|
225
249
|
screenshots.push({
|
|
226
250
|
fixtureId,
|
|
@@ -231,7 +255,7 @@ class DaemonService {
|
|
|
231
255
|
hasError: result.hasError,
|
|
232
256
|
error: result.error,
|
|
233
257
|
events: result.events.length > 0 ? result.events : undefined,
|
|
234
|
-
|
|
258
|
+
output: result.output,
|
|
235
259
|
});
|
|
236
260
|
}
|
|
237
261
|
this._logger.trace(`takeBatch: done in ${Date.now() - startTime}ms`);
|
|
@@ -280,11 +304,11 @@ class DaemonService {
|
|
|
280
304
|
baselineHasError: baselineResult.hasError,
|
|
281
305
|
baselineError: baselineResult.error,
|
|
282
306
|
baselineEvents: baselineResult.events.length > 0 ? baselineResult.events : undefined,
|
|
283
|
-
|
|
307
|
+
baselineOutput: baselineResult.output,
|
|
284
308
|
currentHasError: currentResult.hasError,
|
|
285
309
|
currentError: currentResult.error,
|
|
286
310
|
currentEvents: currentResult.events.length > 0 ? currentResult.events : undefined,
|
|
287
|
-
|
|
311
|
+
currentOutput: currentResult.output,
|
|
288
312
|
labels,
|
|
289
313
|
labelsBefore: labelsChanged ? baselineFixture.labels : undefined,
|
|
290
314
|
approval: (baselineHash !== undefined && currentHash !== undefined && baselineHash !== currentHash)
|
|
@@ -466,7 +490,7 @@ class DaemonService {
|
|
|
466
490
|
sourceKind: 'worktree',
|
|
467
491
|
serverUrl: session.serverUrl,
|
|
468
492
|
sourceTreeId: reader ? session.sourceTreeId.read(reader).value : session.sourceTreeId.get().value,
|
|
469
|
-
worktreePath: meta.worktreePath,
|
|
493
|
+
worktreePath: meta.worktreePath.value,
|
|
470
494
|
ref: meta.ref,
|
|
471
495
|
});
|
|
472
496
|
}
|
|
@@ -494,7 +518,7 @@ class DaemonService {
|
|
|
494
518
|
sourceKind: 'worktree',
|
|
495
519
|
serverUrl: session.serverUrl,
|
|
496
520
|
sourceTreeId: reader ? session.sourceTreeId.read(reader).value : session.sourceTreeId.get().value,
|
|
497
|
-
worktreePath: meta.worktreePath,
|
|
521
|
+
worktreePath: meta.worktreePath.value,
|
|
498
522
|
ref: meta.ref,
|
|
499
523
|
});
|
|
500
524
|
}
|