@vscode/component-explorer-cli 0.2.1-1 → 0.2.1-3
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/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 +6 -1
- package/dist/browserPage.js.map +1 -1
- package/dist/commands/acceptCommand.d.ts.map +1 -1
- package/dist/commands/acceptCommand.js +14 -6
- package/dist/commands/acceptCommand.js.map +1 -1
- package/dist/commands/artifactCommand.d.ts +13 -0
- package/dist/commands/artifactCommand.d.ts.map +1 -0
- package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
- package/dist/commands/checkStabilityCommand.js +19 -16
- package/dist/commands/checkStabilityCommand.js.map +1 -1
- package/dist/commands/compareCommand.d.ts.map +1 -1
- package/dist/commands/compareCommand.js +27 -9
- package/dist/commands/compareCommand.js.map +1 -1
- package/dist/commands/mcpCommand.d.ts.map +1 -1
- package/dist/commands/mcpCommand.js +10 -5
- package/dist/commands/mcpCommand.js.map +1 -1
- package/dist/commands/renderCommand.d.ts +19 -0
- package/dist/commands/renderCommand.d.ts.map +1 -0
- package/dist/commands/renderCommand.js +207 -0
- package/dist/commands/renderCommand.js.map +1 -0
- package/dist/commands/screenshotCommand.d.ts +1 -1
- package/dist/commands/screenshotCommand.d.ts.map +1 -1
- package/dist/commands/serveCommand.d.ts.map +1 -1
- package/dist/commands/serveCommand.js +15 -6
- package/dist/commands/serveCommand.js.map +1 -1
- package/dist/commands/watchCommand.d.ts.map +1 -1
- package/dist/commands/watchCommand.js +18 -24
- package/dist/commands/watchCommand.js.map +1 -1
- package/dist/componentExplorer.d.ts +15 -11
- package/dist/componentExplorer.d.ts.map +1 -1
- package/dist/componentExplorer.js +12 -17
- 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 +15 -32
- package/dist/daemon/DaemonService.js.map +1 -1
- package/dist/daemon/pipeClient.js +2 -1
- package/dist/daemon/pipeClient.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/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/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/manifest.schema.json +187 -0
- 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/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/server/httpServer.d.ts +14 -0
- package/dist/server/httpServer.d.ts.map +1 -0
- package/dist/server/httpServer.js +112 -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} +5 -105
- package/dist/server/viteServer.js.map +1 -0
- package/package.json +13 -5
- 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/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
|
@@ -9,13 +9,6 @@ import { SourceTreeId } from './sourceTreeId.js';
|
|
|
9
9
|
import { buildExplorerUrl } from './utils.js';
|
|
10
10
|
import { parseVersion, isCompatibleVersion, runtimeVersionNeededByCliText } from './daemon/version.js';
|
|
11
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
|
-
}
|
|
19
12
|
class BrowserComponentExplorer {
|
|
20
13
|
_browserPageFactory;
|
|
21
14
|
_server;
|
|
@@ -48,16 +41,11 @@ class BrowserComponentExplorer {
|
|
|
48
41
|
return this._page;
|
|
49
42
|
}
|
|
50
43
|
async _waitForCliApi(page) {
|
|
51
|
-
this._logger.trace('
|
|
52
|
-
await page.evaluateJs(`
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
else setTimeout(check, 50);
|
|
57
|
-
}
|
|
58
|
-
check();
|
|
59
|
-
})
|
|
60
|
-
`);
|
|
44
|
+
this._logger.trace('Checking for __componentExplorer__ global...');
|
|
45
|
+
const hasGlobal = await page.evaluateJs(`!!window.__componentExplorer__`);
|
|
46
|
+
if (!hasGlobal) {
|
|
47
|
+
throw new Error('Component Explorer runtime not found. Ensure the explorer is properly configured and the page serves the explorer bundle.');
|
|
48
|
+
}
|
|
61
49
|
this._lastState = await this._getState(page);
|
|
62
50
|
this._assertRuntimeVersionCompatibility(this._lastState.runtimeVersion);
|
|
63
51
|
this._logger.debug(`CLI API ready, sessionId=${this._lastState.sessionId}, version=${this._lastState.updateVersion}`);
|
|
@@ -227,6 +215,13 @@ class BrowserComponentExplorer {
|
|
|
227
215
|
this._page = undefined;
|
|
228
216
|
}
|
|
229
217
|
}
|
|
218
|
+
async function unwrapScreenshot(page, domExpr) {
|
|
219
|
+
const result = await page.screenshot(domExpr);
|
|
220
|
+
if (!result.ok) {
|
|
221
|
+
throw new Error(`Fixture DOM node not found`);
|
|
222
|
+
}
|
|
223
|
+
return result.screenshot;
|
|
224
|
+
}
|
|
230
225
|
|
|
231
226
|
export { BrowserComponentExplorer };
|
|
232
227
|
//# sourceMappingURL=componentExplorer.js.map
|
|
@@ -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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"}
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { DisposableStore } from '@vscode/observables';
|
|
2
3
|
import type { IGitRepo } from './git/gitService.js';
|
|
3
|
-
import {
|
|
4
|
-
export
|
|
4
|
+
import { type ResolvedServerConfig } from './server/serverConfig.js';
|
|
5
|
+
export { type ResolvedServerConfig, type ResolvedViteHmrConfig, type ResolvedHttpWaitConfig, ViteServerConfig, HttpServerConfig } from './server/serverConfig.js';
|
|
6
|
+
export type { ServerContext } from './server/serverConfig.js';
|
|
7
|
+
export declare const serverConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
8
|
+
type: z.ZodLiteral<"vite">;
|
|
9
|
+
viteConfig: z.ZodOptional<z.ZodString>;
|
|
10
|
+
hmr: z.ZodOptional<z.ZodObject<{
|
|
11
|
+
allowedPaths: z.ZodArray<z.ZodString>;
|
|
12
|
+
}, z.core.$strip>>;
|
|
13
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
14
|
+
type: z.ZodLiteral<"http">;
|
|
15
|
+
url: z.ZodString;
|
|
16
|
+
cmd: z.ZodOptional<z.ZodString>;
|
|
17
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
18
|
+
wait: z.ZodOptional<z.ZodObject<{
|
|
19
|
+
stdout: z.ZodOptional<z.ZodString>;
|
|
20
|
+
stderr: z.ZodOptional<z.ZodString>;
|
|
21
|
+
}, z.core.$strip>>;
|
|
22
|
+
}, z.core.$strip>], "type">;
|
|
23
|
+
export declare const configSchema: z.ZodObject<{
|
|
5
24
|
screenshotDir: z.ZodOptional<z.ZodString>;
|
|
6
25
|
sessions: z.ZodArray<z.ZodObject<{
|
|
7
26
|
name: z.ZodString;
|
|
@@ -89,21 +108,6 @@ export type ResolvedSourceConfig = {
|
|
|
89
108
|
readonly ref: string;
|
|
90
109
|
readonly install: WorktreeSetupConfig | undefined;
|
|
91
110
|
};
|
|
92
|
-
export interface ResolvedHttpWaitConfig {
|
|
93
|
-
readonly stdout?: RegExp;
|
|
94
|
-
readonly stderr?: RegExp;
|
|
95
|
-
}
|
|
96
|
-
export type ResolvedServerConfig = {
|
|
97
|
-
readonly kind: 'vite';
|
|
98
|
-
readonly viteProject: ViteProjectRef;
|
|
99
|
-
readonly hmr: ResolvedViteHmrConfig | undefined;
|
|
100
|
-
} | {
|
|
101
|
-
readonly kind: 'http';
|
|
102
|
-
readonly url: string;
|
|
103
|
-
readonly cmd: string | undefined;
|
|
104
|
-
readonly cwd: string;
|
|
105
|
-
readonly wait: ResolvedHttpWaitConfig | undefined;
|
|
106
|
-
};
|
|
107
111
|
export declare class ResolvedSessionConfig {
|
|
108
112
|
readonly name: string;
|
|
109
113
|
readonly source: ResolvedSourceConfig;
|
|
@@ -120,14 +124,11 @@ export declare class ResolvedCompareConfig {
|
|
|
120
124
|
readonly current: string;
|
|
121
125
|
constructor(baseline: string, current: string);
|
|
122
126
|
}
|
|
123
|
-
export interface ResolvedViteHmrConfig {
|
|
124
|
-
readonly allowedPaths: readonly string[];
|
|
125
|
-
}
|
|
126
127
|
export interface ResolvedRedirectionConfig {
|
|
127
128
|
readonly port: number;
|
|
128
129
|
readonly host: string;
|
|
129
130
|
}
|
|
130
|
-
export declare class
|
|
131
|
+
export declare class ResolvedConfig {
|
|
131
132
|
readonly screenshotDir: string;
|
|
132
133
|
readonly sessions: readonly ResolvedSessionConfig[];
|
|
133
134
|
readonly worktreePool: ResolvedWorktreePoolConfig | undefined;
|
|
@@ -136,8 +137,11 @@ export declare class ResolvedWatchConfig {
|
|
|
136
137
|
readonly redirection: ResolvedRedirectionConfig | undefined;
|
|
137
138
|
readonly configDir: string;
|
|
138
139
|
readonly defaultServerConfig: ResolvedServerConfig;
|
|
140
|
+
readonly isFullConfig: boolean;
|
|
141
|
+
static fromFile(configPath: string, disposables: DisposableStore): Promise<ResolvedConfig>;
|
|
142
|
+
private static _fromData;
|
|
143
|
+
private static readonly _viteConfigNames;
|
|
144
|
+
static fromProjectPath(projectPath: string, disposables: DisposableStore): Promise<ResolvedConfig>;
|
|
139
145
|
private constructor();
|
|
140
|
-
static fromFile(configPath: string): Promise<ResolvedWatchConfig>;
|
|
141
|
-
static fromData(data: unknown, configDir: string, repo: IGitRepo): ResolvedWatchConfig;
|
|
142
146
|
}
|
|
143
|
-
//# sourceMappingURL=
|
|
147
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import * as fs from 'node:fs';
|
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
import { GitService } from './git/gitService.js';
|
|
5
5
|
import { ViteProjectRef } from './viteProjectRef.js';
|
|
6
|
+
import { ViteServerConfig, HttpServerConfig } from './server/serverConfig.js';
|
|
6
7
|
|
|
7
8
|
// --- Zod schemas ---
|
|
8
9
|
const worktreeSetupSchema = z.union([
|
|
@@ -64,7 +65,7 @@ const redirectionConfigSchema = z.object({
|
|
|
64
65
|
port: z.number().int().min(1).max(65535).describe('Port for the redirection HTTP server'),
|
|
65
66
|
host: z.string().optional().describe('Host to bind the redirection server to (default: localhost)'),
|
|
66
67
|
}).describe('HTTP redirection server that redirects to the session URL');
|
|
67
|
-
const
|
|
68
|
+
const configSchema = z.object({
|
|
68
69
|
screenshotDir: z.string().optional().describe('Directory for storing screenshots (default: .screenshots)'),
|
|
69
70
|
sessions: z.array(sessionConfigSchema).min(1).describe('List of explorer sessions (currently only "current" working tree sessions)'),
|
|
70
71
|
worktree: worktreePoolConfigSchema.optional().describe('Dynamic worktree session pool configuration'),
|
|
@@ -102,7 +103,7 @@ class ResolvedCompareConfig {
|
|
|
102
103
|
this.current = current;
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
|
-
class
|
|
106
|
+
class ResolvedConfig {
|
|
106
107
|
screenshotDir;
|
|
107
108
|
sessions;
|
|
108
109
|
worktreePool;
|
|
@@ -111,26 +112,17 @@ class ResolvedWatchConfig {
|
|
|
111
112
|
redirection;
|
|
112
113
|
configDir;
|
|
113
114
|
defaultServerConfig;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
this.sessions = sessions;
|
|
117
|
-
this.worktreePool = worktreePool;
|
|
118
|
-
this.compare = compare;
|
|
119
|
-
this.repo = repo;
|
|
120
|
-
this.redirection = redirection;
|
|
121
|
-
this.configDir = configDir;
|
|
122
|
-
this.defaultServerConfig = defaultServerConfig;
|
|
123
|
-
}
|
|
124
|
-
static async fromFile(configPath) {
|
|
115
|
+
isFullConfig;
|
|
116
|
+
static async fromFile(configPath, disposables) {
|
|
125
117
|
const absConfigPath = path.resolve(configPath);
|
|
126
118
|
const raw = JSON.parse(fs.readFileSync(absConfigPath, 'utf-8'));
|
|
127
119
|
const configDir = path.dirname(absConfigPath);
|
|
128
120
|
const gitService = new GitService();
|
|
129
|
-
const repo = await gitService.getRootRepoFromDir(configDir);
|
|
130
|
-
return
|
|
121
|
+
const repo = disposables.add(await gitService.getRootRepoFromDir(configDir));
|
|
122
|
+
return ResolvedConfig._fromData(raw, configDir, repo);
|
|
131
123
|
}
|
|
132
|
-
static
|
|
133
|
-
const parsed =
|
|
124
|
+
static _fromData(data, configDir, repo) {
|
|
125
|
+
const parsed = configSchema.parse(data);
|
|
134
126
|
const screenshotDir = path.resolve(configDir, parsed.screenshotDir ?? '.screenshots');
|
|
135
127
|
// Resolve top-level server config, normalizing legacy fields
|
|
136
128
|
const defaultServerConfig = resolveServerConfig(parsed.server, parsed.viteConfig, parsed.vite, configDir);
|
|
@@ -165,7 +157,55 @@ class ResolvedWatchConfig {
|
|
|
165
157
|
const redirection = parsed.redirection
|
|
166
158
|
? { port: parsed.redirection.port, host: parsed.redirection.host ?? 'localhost' }
|
|
167
159
|
: undefined;
|
|
168
|
-
return new
|
|
160
|
+
return new ResolvedConfig(screenshotDir, sessions, worktreePool, compare, repo, redirection, configDir, defaultServerConfig, true);
|
|
161
|
+
}
|
|
162
|
+
static _viteConfigNames = [
|
|
163
|
+
'vite.config.ts', 'vite.config.js', 'vite.config.mts', 'vite.config.mjs',
|
|
164
|
+
'vite.config.cts', 'vite.config.cjs',
|
|
165
|
+
];
|
|
166
|
+
static async fromProjectPath(projectPath, disposables) {
|
|
167
|
+
const absPath = path.resolve(projectPath);
|
|
168
|
+
const stat = fs.statSync(absPath);
|
|
169
|
+
if (stat.isFile()) {
|
|
170
|
+
if (path.extname(absPath).toLowerCase() === '.json') {
|
|
171
|
+
return ResolvedConfig.fromFile(absPath, disposables);
|
|
172
|
+
}
|
|
173
|
+
// Explicit vite config file
|
|
174
|
+
const serverConfig = new ViteServerConfig(ViteProjectRef.fromViteConfigPath(absPath), undefined);
|
|
175
|
+
const projectDir = path.dirname(absPath);
|
|
176
|
+
const gitService = new GitService();
|
|
177
|
+
const repo = disposables.add(await gitService.getRootRepoFromDir(projectDir));
|
|
178
|
+
const screenshotDir = path.resolve(projectDir, '.screenshots');
|
|
179
|
+
const session = new ResolvedSessionConfig('current', { kind: 'current' }, serverConfig);
|
|
180
|
+
return new ResolvedConfig(screenshotDir, [session], undefined, undefined, repo, undefined, projectDir, serverConfig, false);
|
|
181
|
+
}
|
|
182
|
+
// Directory: check for component-explorer.json first
|
|
183
|
+
const configFile = path.join(absPath, 'component-explorer.json');
|
|
184
|
+
if (fs.existsSync(configFile)) {
|
|
185
|
+
return ResolvedConfig.fromFile(configFile, disposables);
|
|
186
|
+
}
|
|
187
|
+
// Then check for a vite config file
|
|
188
|
+
const viteConfig = ResolvedConfig._viteConfigNames.find(name => fs.existsSync(path.join(absPath, name)));
|
|
189
|
+
if (viteConfig) {
|
|
190
|
+
const serverConfig = new ViteServerConfig(ViteProjectRef.fromViteConfigPath(path.join(absPath, viteConfig)), undefined);
|
|
191
|
+
const gitService = new GitService();
|
|
192
|
+
const repo = disposables.add(await gitService.getRootRepoFromDir(absPath));
|
|
193
|
+
const screenshotDir = path.resolve(absPath, '.screenshots');
|
|
194
|
+
const session = new ResolvedSessionConfig('current', { kind: 'current' }, serverConfig);
|
|
195
|
+
return new ResolvedConfig(screenshotDir, [session], undefined, undefined, repo, undefined, absPath, serverConfig, false);
|
|
196
|
+
}
|
|
197
|
+
throw new Error(`No component-explorer.json or vite config found in ${absPath}`);
|
|
198
|
+
}
|
|
199
|
+
constructor(screenshotDir, sessions, worktreePool, compare, repo, redirection, configDir, defaultServerConfig, isFullConfig) {
|
|
200
|
+
this.screenshotDir = screenshotDir;
|
|
201
|
+
this.sessions = sessions;
|
|
202
|
+
this.worktreePool = worktreePool;
|
|
203
|
+
this.compare = compare;
|
|
204
|
+
this.repo = repo;
|
|
205
|
+
this.redirection = redirection;
|
|
206
|
+
this.configDir = configDir;
|
|
207
|
+
this.defaultServerConfig = defaultServerConfig;
|
|
208
|
+
this.isFullConfig = isFullConfig;
|
|
169
209
|
}
|
|
170
210
|
}
|
|
171
211
|
function resolveSetupConfig(raw) {
|
|
@@ -199,19 +239,19 @@ function resolveServerConfig(server, legacyViteConfig, legacyVite, configDir) {
|
|
|
199
239
|
}
|
|
200
240
|
: undefined;
|
|
201
241
|
const cwd = server.cwd ? path.resolve(configDir, server.cwd) : configDir;
|
|
202
|
-
return
|
|
242
|
+
return new HttpServerConfig(server.url, server.cmd, cwd, wait);
|
|
203
243
|
}
|
|
204
244
|
const viteConfigRel = server.viteConfig ?? 'vite.config.ts';
|
|
205
245
|
const viteProject = ViteProjectRef.fromViteConfigPath(path.resolve(configDir, viteConfigRel));
|
|
206
246
|
const hmr = server.hmr ? { allowedPaths: server.hmr.allowedPaths } : undefined;
|
|
207
|
-
return
|
|
247
|
+
return new ViteServerConfig(viteProject, hmr);
|
|
208
248
|
}
|
|
209
249
|
// Legacy normalization
|
|
210
250
|
const viteConfigRel = legacyViteConfig ?? 'vite.config.ts';
|
|
211
251
|
const viteProject = ViteProjectRef.fromViteConfigPath(path.resolve(configDir, viteConfigRel));
|
|
212
252
|
const hmr = legacyVite?.hmr ? { allowedPaths: legacyVite.hmr.allowedPaths } : undefined;
|
|
213
|
-
return
|
|
253
|
+
return new ViteServerConfig(viteProject, hmr);
|
|
214
254
|
}
|
|
215
255
|
|
|
216
|
-
export { ResolvedCompareConfig,
|
|
217
|
-
//# sourceMappingURL=
|
|
256
|
+
export { HttpServerConfig, ResolvedCompareConfig, ResolvedConfig, ResolvedSessionConfig, ResolvedWorktreePoolConfig, ViteServerConfig, configSchema, serverConfigSchema };
|
|
257
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../src/config.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type IDisposable, type IReader } from '@vscode/observables';
|
|
2
2
|
import { AsyncStream } from '@hediet/simple-api';
|
|
3
3
|
import { ExplorerSession } from '../explorerSession.js';
|
|
4
|
-
import type
|
|
4
|
+
import { type ResolvedConfig } from '../config.js';
|
|
5
5
|
import { type ILogger } from '../logger.js';
|
|
6
6
|
import { type ApprovalStore } from './approvalStore.js';
|
|
7
7
|
import { VisualCache } from '../visualCache.js';
|
|
@@ -64,7 +64,6 @@ export declare class DaemonService {
|
|
|
64
64
|
private readonly _pipeName;
|
|
65
65
|
private readonly _logger;
|
|
66
66
|
private readonly _browserFactory;
|
|
67
|
-
private readonly _serverFactory;
|
|
68
67
|
private readonly _sessions;
|
|
69
68
|
private readonly _sessionConfigs;
|
|
70
69
|
private readonly _dynamicSessionMeta;
|
|
@@ -241,7 +240,7 @@ export declare class DaemonService {
|
|
|
241
240
|
shutdown: import("@hediet/simple-api").IMethod<Record<string, never>, void, DaemonContext>;
|
|
242
241
|
}>, DaemonContext>;
|
|
243
242
|
private constructor();
|
|
244
|
-
static create(config:
|
|
243
|
+
static create(config: ResolvedConfig, logger: ILogger, pipeName?: string, options?: {
|
|
245
244
|
idleTimeoutMs?: number;
|
|
246
245
|
headed?: boolean;
|
|
247
246
|
}): Promise<DaemonService>;
|
|
@@ -264,6 +263,7 @@ export declare class DaemonService {
|
|
|
264
263
|
dispose(): Promise<void>;
|
|
265
264
|
private _emit;
|
|
266
265
|
private _restartSession;
|
|
266
|
+
private _serverContext;
|
|
267
267
|
private _createExplorerSession;
|
|
268
268
|
private _createWorktreeExplorerSession;
|
|
269
269
|
private _setupSession;
|
|
@@ -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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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import * as path from 'node:path';
|
|
3
2
|
import '../external/vscode-observables/observables/dist/observableInternal/index.js';
|
|
4
3
|
import { observableValue } from '../external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js';
|
|
5
4
|
import '../external/vscode-observables/observables/dist/observableInternal/debugLocation.js';
|
|
@@ -11,19 +10,19 @@ import '../external/vscode-observables/observables/dist/observableInternal/obser
|
|
|
11
10
|
import { createApiFactory } from '../packages/simple-api/dist/chunk-3R7GHWBM.js';
|
|
12
11
|
import { AsyncStream } from '../packages/simple-api/dist/chunk-SGBCNXYH.js';
|
|
13
12
|
import { ExplorerSession } from '../explorerSession.js';
|
|
13
|
+
import '../config.js';
|
|
14
14
|
import { GitIndexResolver } from '../git/gitIndexResolver.js';
|
|
15
15
|
import { DirtyWorktreeError } from '../git/gitWorktreeManager.js';
|
|
16
16
|
import { execGit } from '../git/gitUtils.js';
|
|
17
17
|
import { PlaywrightBrowserPageFactory } from '../browserPage.js';
|
|
18
|
-
import { DefaultComponentExplorerHttpServerFactory } from '../httpServer.js';
|
|
19
18
|
import { installDependencies } from '../dependencyInstaller.js';
|
|
20
19
|
import { FileApprovalStore } from './approvalStore.js';
|
|
21
20
|
import { VisualCache } from '../visualCache.js';
|
|
22
21
|
import { contentHash } from '../screenshotCache.js';
|
|
23
22
|
import { WorktreePool } from '../WorktreePool.js';
|
|
24
|
-
import { ViteProjectRef } from '../viteProjectRef.js';
|
|
25
23
|
import { pluginProtocolVersionText, daemonApiVersionText } from './version.js';
|
|
26
24
|
export { isCompatibleVersion, parseVersion } from './version.js';
|
|
25
|
+
import { ViteServerConfig } from '../server/serverConfig.js';
|
|
27
26
|
|
|
28
27
|
// ---------------------------------------------------------------------------
|
|
29
28
|
// ActivityTracker — monitors idle time and triggers shutdown
|
|
@@ -96,7 +95,6 @@ class DaemonService {
|
|
|
96
95
|
_pipeName;
|
|
97
96
|
_logger;
|
|
98
97
|
_browserFactory;
|
|
99
|
-
_serverFactory;
|
|
100
98
|
_sessions = new Map();
|
|
101
99
|
_sessionConfigs = new Map();
|
|
102
100
|
_dynamicSessionMeta = new Map();
|
|
@@ -110,12 +108,11 @@ class DaemonService {
|
|
|
110
108
|
approvals;
|
|
111
109
|
visualCache;
|
|
112
110
|
api;
|
|
113
|
-
constructor(_config, _pipeName, _logger, _browserFactory,
|
|
111
|
+
constructor(_config, _pipeName, _logger, _browserFactory, approvalStorePath, idleTimeoutMs) {
|
|
114
112
|
this._config = _config;
|
|
115
113
|
this._pipeName = _pipeName;
|
|
116
114
|
this._logger = _logger;
|
|
117
115
|
this._browserFactory = _browserFactory;
|
|
118
|
-
this._serverFactory = _serverFactory;
|
|
119
116
|
this.approvals = new FileApprovalStore(approvalStorePath);
|
|
120
117
|
this.visualCache = new VisualCache(`${_config.screenshotDir}/visual-cache.json`);
|
|
121
118
|
this._activityTracker = new ActivityTracker(idleTimeoutMs, () => this.requestShutdown(), this._logger);
|
|
@@ -126,10 +123,9 @@ class DaemonService {
|
|
|
126
123
|
}
|
|
127
124
|
static async create(config, logger, pipeName, options) {
|
|
128
125
|
const browserFactory = new PlaywrightBrowserPageFactory(options?.headed ?? false, 30_000, logger);
|
|
129
|
-
const serverFactory = new DefaultComponentExplorerHttpServerFactory();
|
|
130
126
|
const approvalStorePath = `${config.screenshotDir}/approvals.json`;
|
|
131
127
|
const idleTimeoutMs = options?.idleTimeoutMs ?? 5 * 60 * 1000; // 5 minutes default
|
|
132
|
-
const svc = new DaemonService(config, pipeName ?? '', logger, browserFactory,
|
|
128
|
+
const svc = new DaemonService(config, pipeName ?? '', logger, browserFactory, approvalStorePath, idleTimeoutMs);
|
|
133
129
|
for (const sessionConfig of config.sessions) {
|
|
134
130
|
svc._sessionConfigs.set(sessionConfig.name, sessionConfig);
|
|
135
131
|
await svc._setupSession(sessionConfig);
|
|
@@ -707,43 +703,30 @@ class DaemonService {
|
|
|
707
703
|
await this._createExplorerSession(config);
|
|
708
704
|
}
|
|
709
705
|
}
|
|
710
|
-
|
|
711
|
-
|
|
706
|
+
_serverContext(sessionName) {
|
|
707
|
+
return {
|
|
712
708
|
logger: this._logger,
|
|
713
709
|
daemonConfig: {
|
|
714
710
|
pipeName: this._pipeName,
|
|
715
|
-
sessionName
|
|
711
|
+
sessionName,
|
|
716
712
|
daemonApiVersion: daemonApiVersionText,
|
|
717
713
|
pluginProtocolVersion: pluginProtocolVersionText,
|
|
718
714
|
},
|
|
719
|
-
}
|
|
715
|
+
};
|
|
716
|
+
}
|
|
717
|
+
async _createExplorerSession(sessionConfig) {
|
|
718
|
+
const session = await ExplorerSession.create(sessionConfig.name, sessionConfig.server, this._browserFactory, this._serverContext(sessionConfig.name));
|
|
720
719
|
this._sessions.set(sessionConfig.name, session);
|
|
721
720
|
this._logger.debug(`Session ready: ${sessionConfig.name} (${session.serverUrl})`);
|
|
722
721
|
}
|
|
723
722
|
async _createWorktreeExplorerSession(sessionName, worktreePath) {
|
|
724
723
|
const defaultServer = this._config.defaultServerConfig;
|
|
725
|
-
if (defaultServer
|
|
724
|
+
if (!(defaultServer instanceof ViteServerConfig)) {
|
|
726
725
|
throw new Error(`Worktree sessions require a Vite server configuration`);
|
|
727
726
|
}
|
|
728
|
-
const
|
|
729
|
-
|
|
730
|
-
const
|
|
731
|
-
const viteConfigPath = path.resolve(worktreeConfigDir, defaultViteConfig);
|
|
732
|
-
const viteProject = ViteProjectRef.fromViteConfigPath(viteConfigPath);
|
|
733
|
-
const currentSession = this._config.sessions.find(s => s.source.kind === 'current');
|
|
734
|
-
const resolveViteFrom = currentSession?.server.kind === 'vite' ? currentSession.server.viteProject.configFile : undefined;
|
|
735
|
-
this._logger.debug(`Worktree session "${sessionName}": resolveViteFrom=${resolveViteFrom}`);
|
|
736
|
-
const worktreeServerConfig = { kind: 'vite', viteProject, hmr: defaultServer.hmr };
|
|
737
|
-
const session = await ExplorerSession.create(sessionName, worktreeServerConfig, this._serverFactory, this._browserFactory, {
|
|
738
|
-
logger: this._logger,
|
|
739
|
-
resolveViteFrom,
|
|
740
|
-
daemonConfig: {
|
|
741
|
-
pipeName: this._pipeName,
|
|
742
|
-
sessionName,
|
|
743
|
-
daemonApiVersion: daemonApiVersionText,
|
|
744
|
-
pluginProtocolVersion: pluginProtocolVersionText,
|
|
745
|
-
},
|
|
746
|
-
});
|
|
727
|
+
const worktreeServerConfig = defaultServer.forWorktree(this._config.repo.gitRoot, worktreePath, this._config.configDir);
|
|
728
|
+
this._logger.debug(`Worktree session "${sessionName}": resolveViteFrom=${worktreeServerConfig.viteProject.configFile}`);
|
|
729
|
+
const session = await ExplorerSession.create(sessionName, worktreeServerConfig, this._browserFactory, this._serverContext(sessionName));
|
|
747
730
|
this._sessions.set(sessionName, session);
|
|
748
731
|
this._logger.debug(`Session ready: ${sessionName} (${session.serverUrl})`);
|
|
749
732
|
}
|