@vscode/component-explorer-cli 0.2.1-1 → 0.2.1-11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +8 -0
  2. package/dist/_virtual/_build-info.js +1 -1
  3. package/dist/browserPage.d.ts +5 -5
  4. package/dist/browserPage.d.ts.map +1 -1
  5. package/dist/browserPage.js +35 -2
  6. package/dist/browserPage.js.map +1 -1
  7. package/dist/commands/acceptCommand.d.ts +1 -0
  8. package/dist/commands/acceptCommand.d.ts.map +1 -1
  9. package/dist/commands/acceptCommand.js +17 -8
  10. package/dist/commands/acceptCommand.js.map +1 -1
  11. package/dist/commands/artifactCommand.d.ts +14 -0
  12. package/dist/commands/artifactCommand.d.ts.map +1 -0
  13. package/dist/commands/checkStabilityCommand.d.ts +1 -0
  14. package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
  15. package/dist/commands/checkStabilityCommand.js +22 -18
  16. package/dist/commands/checkStabilityCommand.js.map +1 -1
  17. package/dist/commands/compareCommand.d.ts +1 -0
  18. package/dist/commands/compareCommand.d.ts.map +1 -1
  19. package/dist/commands/compareCommand.js +30 -11
  20. package/dist/commands/compareCommand.js.map +1 -1
  21. package/dist/commands/mcpCommand.d.ts +5 -0
  22. package/dist/commands/mcpCommand.d.ts.map +1 -1
  23. package/dist/commands/mcpCommand.js +86 -16
  24. package/dist/commands/mcpCommand.js.map +1 -1
  25. package/dist/commands/{screenshotCommand.d.ts → renderCommand.d.ts} +4 -2
  26. package/dist/commands/renderCommand.d.ts.map +1 -0
  27. package/dist/commands/renderCommand.js +210 -0
  28. package/dist/commands/renderCommand.js.map +1 -0
  29. package/dist/commands/serveCommand.d.ts +2 -0
  30. package/dist/commands/serveCommand.d.ts.map +1 -1
  31. package/dist/commands/serveCommand.js +79 -41
  32. package/dist/commands/serveCommand.js.map +1 -1
  33. package/dist/commands/serviceDiffCommitsCommand.d.ts +16 -0
  34. package/dist/commands/serviceDiffCommitsCommand.d.ts.map +1 -0
  35. package/dist/commands/serviceDiffCommitsCommand.js +229 -0
  36. package/dist/commands/serviceDiffCommitsCommand.js.map +1 -0
  37. package/dist/commands/watchCommand.d.ts +1 -0
  38. package/dist/commands/watchCommand.d.ts.map +1 -1
  39. package/dist/commands/watchCommand.js +22 -27
  40. package/dist/commands/watchCommand.js.map +1 -1
  41. package/dist/componentExplorer.d.ts +18 -11
  42. package/dist/componentExplorer.d.ts.map +1 -1
  43. package/dist/componentExplorer.js +95 -66
  44. package/dist/componentExplorer.js.map +1 -1
  45. package/dist/{watchConfig.d.ts → config.d.ts} +28 -24
  46. package/dist/config.d.ts.map +1 -0
  47. package/dist/{watchConfig.js → config.js} +63 -23
  48. package/dist/config.js.map +1 -0
  49. package/dist/daemon/DaemonService.d.ts +3 -3
  50. package/dist/daemon/DaemonService.d.ts.map +1 -1
  51. package/dist/daemon/DaemonService.js +19 -36
  52. package/dist/daemon/DaemonService.js.map +1 -1
  53. package/dist/daemon/client.d.ts +5 -0
  54. package/dist/daemon/client.d.ts.map +1 -0
  55. package/dist/daemon/client.js +7 -0
  56. package/dist/daemon/client.js.map +1 -0
  57. package/dist/daemon/inProcessClient.d.ts +11 -0
  58. package/dist/daemon/inProcessClient.d.ts.map +1 -0
  59. package/dist/daemon/inProcessClient.js +35 -0
  60. package/dist/daemon/inProcessClient.js.map +1 -0
  61. package/dist/daemon/lifecycle.d.ts +4 -0
  62. package/dist/daemon/lifecycle.d.ts.map +1 -1
  63. package/dist/daemon/lifecycle.js +12 -2
  64. package/dist/daemon/lifecycle.js.map +1 -1
  65. package/dist/daemon/pipeClient.js +5 -3
  66. package/dist/daemon/pipeClient.js.map +1 -1
  67. package/dist/daemon/pipeName.d.ts +6 -0
  68. package/dist/daemon/pipeName.d.ts.map +1 -1
  69. package/dist/daemon/pipeName.js +8 -3
  70. package/dist/daemon/pipeName.js.map +1 -1
  71. package/dist/daemon/pipeServer.d.ts.map +1 -1
  72. package/dist/daemon/pipeServer.js +9 -3
  73. package/dist/daemon/pipeServer.js.map +1 -1
  74. package/dist/daemon/version.d.ts +1 -1
  75. package/dist/daemon/version.d.ts.map +1 -1
  76. package/dist/daemon/version.js +1 -1
  77. package/dist/dependencyInstaller.d.ts +1 -1
  78. package/dist/dependencyInstaller.d.ts.map +1 -1
  79. package/dist/evaluateFn.d.ts +21 -0
  80. package/dist/evaluateFn.d.ts.map +1 -0
  81. package/dist/evaluateFn.js +17 -0
  82. package/dist/evaluateFn.js.map +1 -0
  83. package/dist/explorerSession.d.ts +2 -3
  84. package/dist/explorerSession.d.ts.map +1 -1
  85. package/dist/explorerSession.js +3 -20
  86. package/dist/explorerSession.js.map +1 -1
  87. package/dist/git/gitUtils.d.ts +1 -0
  88. package/dist/git/gitUtils.d.ts.map +1 -1
  89. package/dist/git/gitUtils.js +5 -1
  90. package/dist/git/gitUtils.js.map +1 -1
  91. package/dist/index.js +11 -2
  92. package/dist/index.js.map +1 -1
  93. package/dist/logger.d.ts +12 -1
  94. package/dist/logger.d.ts.map +1 -1
  95. package/dist/logger.js +35 -2
  96. package/dist/logger.js.map +1 -1
  97. package/dist/manifest.schema.json +187 -0
  98. package/dist/mcp/McpServer.d.ts +1 -0
  99. package/dist/mcp/McpServer.d.ts.map +1 -1
  100. package/dist/mcp/McpServer.js +113 -20
  101. package/dist/mcp/McpServer.js.map +1 -1
  102. package/dist/packages/common/dist/renderManifest.js +46 -0
  103. package/dist/packages/common/dist/renderManifest.js.map +1 -0
  104. package/dist/packages/semver/dist/index.js +186 -0
  105. package/dist/packages/semver/dist/index.js.map +1 -0
  106. package/dist/packages/simple-api/dist/{chunk-3R7GHWBM.js → chunk-FJ7AVNQE.js} +2 -1
  107. package/dist/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +1 -0
  108. package/dist/packages/simple-api/dist/{chunk-SGBCNXYH.js → chunk-TTRCY65Z.js} +4 -1
  109. package/dist/packages/simple-api/dist/chunk-TTRCY65Z.js.map +1 -0
  110. package/dist/packages/simple-api/dist/{chunk-TAEFVNPN.js → chunk-WNXMRXWV.js} +2 -1
  111. package/dist/packages/simple-api/dist/chunk-WNXMRXWV.js.map +1 -0
  112. package/dist/packages/simple-api/dist/express.js +1 -1
  113. package/dist/packages/simple-api/dist/express.js.map +1 -1
  114. package/dist/processTree.d.ts +9 -0
  115. package/dist/processTree.d.ts.map +1 -0
  116. package/dist/processTree.js +41 -0
  117. package/dist/processTree.js.map +1 -0
  118. package/dist/renderManifest.d.ts +5 -0
  119. package/dist/renderManifest.d.ts.map +1 -0
  120. package/dist/renderManifest.js +11 -0
  121. package/dist/renderManifest.js.map +1 -0
  122. package/dist/screenshotServiceClient.d.ts +31 -0
  123. package/dist/screenshotServiceClient.d.ts.map +1 -0
  124. package/dist/screenshotServiceClient.js +38 -0
  125. package/dist/screenshotServiceClient.js.map +1 -0
  126. package/dist/server/httpServer.d.ts +14 -0
  127. package/dist/server/httpServer.d.ts.map +1 -0
  128. package/dist/server/httpServer.js +114 -0
  129. package/dist/server/httpServer.js.map +1 -0
  130. package/dist/server/httpServer.test.d.ts.map +1 -0
  131. package/dist/server/serverConfig.d.ts +42 -0
  132. package/dist/server/serverConfig.d.ts.map +1 -0
  133. package/dist/server/serverConfig.js +60 -0
  134. package/dist/server/serverConfig.js.map +1 -0
  135. package/dist/server/types.d.ts +6 -0
  136. package/dist/server/types.d.ts.map +1 -0
  137. package/dist/server/viteServer.d.ts +16 -0
  138. package/dist/server/viteServer.d.ts.map +1 -0
  139. package/dist/{httpServer.js → server/viteServer.js} +10 -110
  140. package/dist/server/viteServer.js.map +1 -0
  141. package/dist/utils.d.ts +11 -6
  142. package/dist/utils.d.ts.map +1 -1
  143. package/dist/utils.js +7 -6
  144. package/dist/utils.js.map +1 -1
  145. package/package.json +30 -19
  146. package/dist/commands/screenshotCommand.d.ts.map +0 -1
  147. package/dist/commands/screenshotCommand.js +0 -127
  148. package/dist/commands/screenshotCommand.js.map +0 -1
  149. package/dist/httpServer.d.ts +0 -36
  150. package/dist/httpServer.d.ts.map +0 -1
  151. package/dist/httpServer.js.map +0 -1
  152. package/dist/httpServer.test.d.ts.map +0 -1
  153. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +0 -1
  154. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +0 -1
  155. package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js.map +0 -1
  156. package/dist/resolveProject.d.ts +0 -21
  157. package/dist/resolveProject.d.ts.map +0 -1
  158. package/dist/resolveProject.js +0 -39
  159. package/dist/resolveProject.js.map +0 -1
  160. package/dist/watchConfig.d.ts.map +0 -1
  161. package/dist/watchConfig.js.map +0 -1
  162. /package/dist/{httpServer.test.d.ts → server/httpServer.test.d.ts} +0 -0
@@ -0,0 +1,114 @@
1
+ import { nullLogger } from '../logger.js';
2
+ import { spawnShellWithTree } from '../processTree.js';
3
+
4
+ function createHttpServer(url, options) {
5
+ return HttpComponentExplorerServer.create(url, options);
6
+ }
7
+ class HttpComponentExplorerServer {
8
+ url;
9
+ _tree;
10
+ static async create(urlTemplate, options) {
11
+ let proc;
12
+ let vars = {};
13
+ if (options?.cmd) {
14
+ const log = options.logger ?? nullLogger;
15
+ log.debug(`Starting HTTP server: ${options.cmd}`);
16
+ log.debug(`HTTP server cwd: ${options.cwd ?? process.cwd()}`);
17
+ const tree = spawnShellWithTree(options.cmd, { cwd: options.cwd });
18
+ proc = tree;
19
+ tree.process.on('error', (e) => log.log(`HTTP server process error: ${e.message}`));
20
+ tree.process.on('exit', (code) => log.debug(`HTTP server process exited (code=${code})`));
21
+ if (options.wait?.stdout || options.wait?.stderr) {
22
+ vars = await waitForOutputPattern(tree.process, options.wait, log);
23
+ }
24
+ else {
25
+ tree.process.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
26
+ tree.process.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
27
+ }
28
+ }
29
+ const url = resolveUrlTemplate(urlTemplate, vars);
30
+ return new HttpComponentExplorerServer(url, proc);
31
+ }
32
+ constructor(url, _tree) {
33
+ this.url = url;
34
+ this._tree = _tree;
35
+ }
36
+ async dispose() {
37
+ const tree = this._tree;
38
+ const proc = tree?.process;
39
+ if (!tree || !proc || proc.killed || proc.pid === undefined) {
40
+ return;
41
+ }
42
+ proc.stdout?.destroy();
43
+ proc.stderr?.destroy();
44
+ const exitPromise = new Promise((resolve) => {
45
+ proc.on('exit', () => resolve());
46
+ });
47
+ tree.kill();
48
+ const timeout = new Promise((resolve) => setTimeout(resolve, 5_000));
49
+ await Promise.race([exitPromise, timeout]);
50
+ }
51
+ }
52
+ function resolveUrlTemplate(template, vars) {
53
+ return template.replace(/\$\{var:([^}]+)\}/g, (match, name) => {
54
+ if (!(name in vars)) {
55
+ throw new Error(`Unresolved variable \${var:${name}} in URL. Available: ${Object.keys(vars).join(', ') || '(none)'}`);
56
+ }
57
+ return vars[name];
58
+ });
59
+ }
60
+ const _stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '').replace(/\x1b\].*?\x07/g, '');
61
+ function waitForOutputPattern(proc, wait, log) {
62
+ return new Promise((resolve, reject) => {
63
+ let resolved = false;
64
+ const vars = {};
65
+ let pendingCount = (wait.stdout ? 1 : 0) + (wait.stderr ? 1 : 0);
66
+ const buffers = { stdout: '', stderr: '' };
67
+ const tryResolve = () => {
68
+ if (resolved || pendingCount > 0) {
69
+ return;
70
+ }
71
+ resolved = true;
72
+ proc.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
73
+ proc.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
74
+ resolve(vars);
75
+ };
76
+ const makeHandler = (stream, pattern) => {
77
+ const handler = (d) => {
78
+ const text = d.toString();
79
+ log.trace(text.trimEnd());
80
+ buffers[stream] += _stripAnsi(text);
81
+ const m = pattern.exec(buffers[stream]);
82
+ if (m) {
83
+ log.debug(`${stream} pattern matched: ${JSON.stringify(m.groups ?? {})}`);
84
+ proc[stream]?.off('data', handler);
85
+ Object.assign(vars, m.groups ?? {});
86
+ pendingCount--;
87
+ tryResolve();
88
+ }
89
+ };
90
+ return handler;
91
+ };
92
+ if (wait.stdout) {
93
+ proc.stdout?.on('data', makeHandler('stdout', wait.stdout));
94
+ }
95
+ else {
96
+ proc.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
97
+ }
98
+ if (wait.stderr) {
99
+ proc.stderr?.on('data', makeHandler('stderr', wait.stderr));
100
+ }
101
+ else {
102
+ proc.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
103
+ }
104
+ proc.on('exit', (code) => {
105
+ if (!resolved) {
106
+ const details = [wait.stdout ? `stdout buffer:\n${buffers.stdout}` : '', wait.stderr ? `stderr buffer:\n${buffers.stderr}` : ''].filter(Boolean).join('\n');
107
+ reject(new Error(`HTTP server process exited (code=${code}) before output matched wait patterns.\n${details}`));
108
+ }
109
+ });
110
+ });
111
+ }
112
+
113
+ export { createHttpServer };
114
+ //# sourceMappingURL=httpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpServer.js","sources":["../../src/server/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpServer.test.d.ts","sourceRoot":"","sources":["../../src/server/httpServer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ import type { ComponentExplorerHttpServer } from './types.js';
2
+ import type { ILogger } from '../logger.js';
3
+ import { ViteProjectRef } from '../viteProjectRef.js';
4
+ export declare abstract class ResolvedServerConfig {
5
+ abstract readonly kind: 'vite' | 'http';
6
+ abstract createServer(ctx: ServerContext): Promise<ComponentExplorerHttpServer>;
7
+ }
8
+ export interface ServerContext {
9
+ readonly logger: ILogger;
10
+ readonly daemonConfig?: {
11
+ readonly pipeName: string;
12
+ readonly sessionName: string;
13
+ readonly daemonApiVersion: string;
14
+ readonly pluginProtocolVersion: string;
15
+ };
16
+ }
17
+ export interface ResolvedViteHmrConfig {
18
+ readonly allowedPaths: readonly string[];
19
+ }
20
+ export declare class ViteServerConfig extends ResolvedServerConfig {
21
+ readonly viteProject: ViteProjectRef;
22
+ readonly hmr: ResolvedViteHmrConfig | undefined;
23
+ private readonly _resolveViteFrom?;
24
+ readonly kind = "vite";
25
+ constructor(viteProject: ViteProjectRef, hmr: ResolvedViteHmrConfig | undefined, _resolveViteFrom?: string | undefined);
26
+ forWorktree(repoRoot: string, worktreePath: string, configDir: string): ViteServerConfig;
27
+ createServer(ctx: ServerContext): Promise<ComponentExplorerHttpServer>;
28
+ }
29
+ export interface ResolvedHttpWaitConfig {
30
+ readonly stdout?: RegExp;
31
+ readonly stderr?: RegExp;
32
+ }
33
+ export declare class HttpServerConfig extends ResolvedServerConfig {
34
+ readonly url: string;
35
+ readonly cmd: string | undefined;
36
+ readonly cwd: string;
37
+ readonly wait: ResolvedHttpWaitConfig | undefined;
38
+ readonly kind = "http";
39
+ constructor(url: string, cmd: string | undefined, cwd: string, wait: ResolvedHttpWaitConfig | undefined);
40
+ createServer(ctx: ServerContext): Promise<ComponentExplorerHttpServer>;
41
+ }
42
+ //# sourceMappingURL=serverConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverConfig.d.ts","sourceRoot":"","sources":["../../src/server/serverConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8BAAsB,oBAAoB;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAC/E;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE;QACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;KAC1C,CAAC;CACL;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,qBAAa,gBAAiB,SAAQ,oBAAoB;IAIxD,QAAQ,CAAC,WAAW,EAAE,cAAc;IACpC,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IALnC,QAAQ,CAAC,IAAI,UAAU;gBAGb,WAAW,EAAE,cAAc,EAC3B,GAAG,EAAE,qBAAqB,GAAG,SAAS,EAC9B,gBAAgB,CAAC,EAAE,MAAM,YAAA;IAK3C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;IASlF,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAQ5E;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,gBAAiB,SAAQ,oBAAoB;IAIxD,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS;IANlD,QAAQ,CAAC,IAAI,UAAU;gBAGb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,sBAAsB,GAAG,SAAS;IAK5C,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAQ5E"}
@@ -0,0 +1,60 @@
1
+ import * as path from 'node:path';
2
+ import { createHttpServer } from './httpServer.js';
3
+ import { createViteServer } from './viteServer.js';
4
+ import { ViteProjectRef } from '../viteProjectRef.js';
5
+
6
+ class ResolvedServerConfig {
7
+ }
8
+ class ViteServerConfig extends ResolvedServerConfig {
9
+ viteProject;
10
+ hmr;
11
+ _resolveViteFrom;
12
+ kind = 'vite';
13
+ constructor(viteProject, hmr, _resolveViteFrom) {
14
+ super();
15
+ this.viteProject = viteProject;
16
+ this.hmr = hmr;
17
+ this._resolveViteFrom = _resolveViteFrom;
18
+ }
19
+ forWorktree(repoRoot, worktreePath, configDir) {
20
+ const configDirRelToGitRoot = path.relative(repoRoot, configDir);
21
+ const worktreeConfigDir = path.resolve(worktreePath, configDirRelToGitRoot);
22
+ const defaultViteConfig = path.basename(this.viteProject.configFile ?? 'vite.config.ts');
23
+ const viteConfigPath = path.resolve(worktreeConfigDir, defaultViteConfig);
24
+ const viteProject = ViteProjectRef.fromViteConfigPath(viteConfigPath);
25
+ return new ViteServerConfig(viteProject, this.hmr, this.viteProject.configFile);
26
+ }
27
+ async createServer(ctx) {
28
+ return createViteServer(this.viteProject, {
29
+ logger: ctx.logger,
30
+ resolveViteFrom: this._resolveViteFrom,
31
+ hmrAllowedPaths: this.hmr?.allowedPaths,
32
+ daemonConfig: ctx.daemonConfig,
33
+ });
34
+ }
35
+ }
36
+ class HttpServerConfig extends ResolvedServerConfig {
37
+ url;
38
+ cmd;
39
+ cwd;
40
+ wait;
41
+ kind = 'http';
42
+ constructor(url, cmd, cwd, wait) {
43
+ super();
44
+ this.url = url;
45
+ this.cmd = cmd;
46
+ this.cwd = cwd;
47
+ this.wait = wait;
48
+ }
49
+ async createServer(ctx) {
50
+ return createHttpServer(this.url, {
51
+ cmd: this.cmd,
52
+ cwd: this.cwd,
53
+ wait: this.wait,
54
+ logger: ctx.logger,
55
+ });
56
+ }
57
+ }
58
+
59
+ export { HttpServerConfig, ResolvedServerConfig, ViteServerConfig };
60
+ //# sourceMappingURL=serverConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverConfig.js","sources":["../../src/server/serverConfig.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;MAOsB,oBAAoB,CAAA;AAGzC;AAgBK,MAAO,gBAAiB,SAAQ,oBAAoB,CAAA;AAI/C,IAAA,WAAA;AACA,IAAA,GAAA;AACQ,IAAA,gBAAA;IALT,IAAI,GAAG,MAAM;AAEtB,IAAA,WAAA,CACU,WAA2B,EAC3B,GAAsC,EAC9B,gBAAyB,EAAA;AAE1C,QAAA,KAAK,EAAE;QAJE,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,GAAG,GAAH,GAAG;QACK,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAGlC;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAE,YAAoB,EAAE,SAAiB,EAAA;QACpE,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;QAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,qBAAqB,CAAC;AAC3E,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,gBAAgB,CAAC;QACxF,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;QACzE,MAAM,WAAW,GAAG,cAAc,CAAC,kBAAkB,CAAC,cAAc,CAAC;AACrE,QAAA,OAAO,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;IAChF;IAEA,MAAM,YAAY,CAAC,GAAkB,EAAA;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE;YACzC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,eAAe,EAAE,IAAI,CAAC,gBAAgB;AACtC,YAAA,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY;YACvC,YAAY,EAAE,GAAG,CAAC,YAAY;AAC9B,SAAA,CAAC;IACH;AACA;AAOK,MAAO,gBAAiB,SAAQ,oBAAoB,CAAA;AAI/C,IAAA,GAAA;AACA,IAAA,GAAA;AACA,IAAA,GAAA;AACA,IAAA,IAAA;IAND,IAAI,GAAG,MAAM;AAEtB,IAAA,WAAA,CACU,GAAW,EACX,GAAuB,EACvB,GAAW,EACX,IAAwC,EAAA;AAEjD,QAAA,KAAK,EAAE;QALE,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,IAAI,GAAJ,IAAI;IAGd;IAEA,MAAM,YAAY,CAAC,GAAkB,EAAA;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE;YACjC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,GAAG,CAAC,MAAM;AAClB,SAAA,CAAC;IACH;AACA;;;;"}
@@ -0,0 +1,6 @@
1
+ export interface ComponentExplorerHttpServer {
2
+ readonly url: string;
3
+ readonly onSourceChange?: (callback: () => void) => void;
4
+ dispose(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB"}
@@ -0,0 +1,16 @@
1
+ import { type ILogger } from '../logger.js';
2
+ import { ViteProjectRef } from '../viteProjectRef.js';
3
+ import type { ComponentExplorerHttpServer } from './types.js';
4
+ export interface ViteServerOptions {
5
+ readonly resolveViteFrom?: string;
6
+ readonly logger?: ILogger;
7
+ readonly hmrAllowedPaths?: readonly string[];
8
+ readonly daemonConfig?: {
9
+ readonly pipeName: string;
10
+ readonly sessionName: string;
11
+ readonly daemonApiVersion: string;
12
+ readonly pluginProtocolVersion: string;
13
+ };
14
+ }
15
+ export declare function createViteServer(project: ViteProjectRef, options?: ViteServerOptions): Promise<ComponentExplorerHttpServer>;
16
+ //# sourceMappingURL=viteServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viteServer.d.ts","sourceRoot":"","sources":["../../src/server/viteServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;KACvC,CAAC;CACF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAE3H"}
@@ -1,117 +1,12 @@
1
- import { nullLogger } from './logger.js';
1
+ import { nullLogger } from '../logger.js';
2
2
 
3
- class DefaultComponentExplorerHttpServerFactory {
4
- async createViteServer(project, options) {
5
- return ViteComponentExplorerHttpServer.create(project, options);
6
- }
7
- async createHttpServer(url, options) {
8
- return HttpComponentExplorerServer.create(url, options);
9
- }
10
- }
11
- class HttpComponentExplorerServer {
12
- url;
13
- _process;
14
- static async create(urlTemplate, options) {
15
- let proc;
16
- let vars = {};
17
- if (options?.cmd) {
18
- const log = options.logger ?? nullLogger;
19
- log.debug(`Starting HTTP server: ${options.cmd}`);
20
- log.debug(`HTTP server cwd: ${options.cwd ?? process.cwd()}`);
21
- const { spawn } = await import('node:child_process');
22
- proc = spawn(options.cmd, { shell: true, stdio: 'pipe', cwd: options.cwd });
23
- proc.on('error', (e) => log.log(`HTTP server process error: ${e.message}`));
24
- proc.on('exit', (code) => log.debug(`HTTP server process exited (code=${code})`));
25
- if (options.wait?.stdout || options.wait?.stderr) {
26
- vars = await waitForOutputPattern(proc, options.wait, log);
27
- }
28
- else {
29
- proc.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
30
- proc.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
31
- }
32
- }
33
- const url = resolveUrlTemplate(urlTemplate, vars);
34
- return new HttpComponentExplorerServer(url, proc);
35
- }
36
- constructor(url, _process) {
37
- this.url = url;
38
- this._process = _process;
39
- }
40
- async dispose() {
41
- if (this._process && !this._process.killed) {
42
- this._process.kill();
43
- }
44
- }
45
- }
46
- function resolveUrlTemplate(template, vars) {
47
- return template.replace(/\$\{var:([^}]+)\}/g, (match, name) => {
48
- if (!(name in vars)) {
49
- throw new Error(`Unresolved variable \${var:${name}} in URL. Available: ${Object.keys(vars).join(', ') || '(none)'}`);
50
- }
51
- return vars[name];
52
- });
53
- }
54
- const _stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '').replace(/\x1b\].*?\x07/g, '');
55
- function waitForOutputPattern(proc, wait, log) {
56
- return new Promise((resolve, reject) => {
57
- let resolved = false;
58
- const vars = {};
59
- let pendingCount = (wait.stdout ? 1 : 0) + (wait.stderr ? 1 : 0);
60
- const buffers = { stdout: '', stderr: '' };
61
- const tryResolve = () => {
62
- if (resolved || pendingCount > 0) {
63
- return;
64
- }
65
- resolved = true;
66
- proc.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
67
- proc.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
68
- resolve(vars);
69
- };
70
- const makeHandler = (stream, pattern) => {
71
- const handler = (d) => {
72
- const text = d.toString();
73
- log.trace(text.trimEnd());
74
- buffers[stream] += _stripAnsi(text);
75
- const m = pattern.exec(buffers[stream]);
76
- if (m) {
77
- log.debug(`${stream} pattern matched: ${JSON.stringify(m.groups ?? {})}`);
78
- proc[stream]?.off('data', handler);
79
- Object.assign(vars, m.groups ?? {});
80
- pendingCount--;
81
- tryResolve();
82
- }
83
- };
84
- return handler;
85
- };
86
- if (wait.stdout) {
87
- proc.stdout?.on('data', makeHandler('stdout', wait.stdout));
88
- }
89
- else {
90
- proc.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
91
- }
92
- if (wait.stderr) {
93
- proc.stderr?.on('data', makeHandler('stderr', wait.stderr));
94
- }
95
- else {
96
- proc.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
97
- }
98
- proc.on('exit', (code) => {
99
- if (!resolved) {
100
- const details = [wait.stdout ? `stdout buffer:\n${buffers.stdout}` : '', wait.stderr ? `stderr buffer:\n${buffers.stderr}` : ''].filter(Boolean).join('\n');
101
- reject(new Error(`HTTP server process exited (code=${code}) before output matched wait patterns.\n${details}`));
102
- }
103
- });
104
- });
3
+ function createViteServer(project, options) {
4
+ return ViteComponentExplorerHttpServer.create(project, options);
105
5
  }
106
6
  class ViteComponentExplorerHttpServer {
107
7
  _server;
108
8
  url;
109
9
  onSourceChange;
110
- constructor(_server, url, onSourceChange) {
111
- this._server = _server;
112
- this.url = url;
113
- this.onSourceChange = onSourceChange;
114
- }
115
10
  static async create(project, options) {
116
11
  const log = options?.logger ?? nullLogger;
117
12
  const resolveViteFrom = options?.resolveViteFrom;
@@ -208,6 +103,11 @@ class ViteComponentExplorerHttpServer {
208
103
  };
209
104
  return new ViteComponentExplorerHttpServer(server, url.replace(/\/$/, ''), onSourceChange);
210
105
  }
106
+ constructor(_server, url, onSourceChange) {
107
+ this._server = _server;
108
+ this.url = url;
109
+ this.onSourceChange = onSourceChange;
110
+ }
211
111
  async dispose() {
212
112
  await this._server.close();
213
113
  }
@@ -222,5 +122,5 @@ function globToRegExp(glob) {
222
122
  return new RegExp(`(?:^|/)${escaped}$`);
223
123
  }
224
124
 
225
- export { DefaultComponentExplorerHttpServerFactory };
226
- //# sourceMappingURL=httpServer.js.map
125
+ export { createViteServer };
126
+ //# sourceMappingURL=viteServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viteServer.js","sources":["../../src/server/viteServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -13,16 +13,21 @@ export declare const EXPLORER_ROUTE = "/___explorer";
13
13
  export interface ExplorerUrlOptions {
14
14
  /** Base URL of the server (e.g. 'http://localhost:5173') */
15
15
  readonly baseUrl: string;
16
- /** Use raw render mode instead of the full Explorer UI */
17
- readonly rawRender?: boolean;
18
- /** Specific fixture to render (only relevant in raw render mode) */
16
+ /**
17
+ * Explicit mode for the explorer URL:
18
+ * - 'headless': for API/screenshot operations (no UI)
19
+ * - 'embedded': single fixture view for user inspection
20
+ * - undefined: full Explorer UI
21
+ */
22
+ readonly mode?: 'headless' | 'embedded';
23
+ /** Specific fixture to render (required for 'headless' and 'embedded' modes) */
19
24
  readonly fixtureId?: string;
20
25
  }
21
26
  /**
22
27
  * Builds a URL for the Component Explorer.
23
- * - Default: Explorer UI at `/___explorer`
24
- * - rawRender: `/___explorer?mode=render`
25
- * - rawRender + fixtureId: `/___explorer?mode=render&fixture=<id>`
28
+ * - Default: Explorer UI at `/___explorer` (with optional `fixture=<id>` to pre-select)
29
+ * - mode='embedded': `/___explorer?mode=embedded&fixture=<id>` (user-facing single fixture view)
30
+ * - mode='headless': `/___explorer?mode=headless&fixture=<id>` (API/screenshot operations)
26
31
  */
27
32
  export declare function buildExplorerUrl(options: ExplorerUrlOptions): string;
28
33
  export declare function writeFile(filePath: string, data: Uint8Array): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAUpE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAKrE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAajE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACxC,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAWpE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAKrE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAajE"}
package/dist/utils.js CHANGED
@@ -8,15 +8,16 @@ import * as path from 'node:path';
8
8
  const EXPLORER_ROUTE = '/___explorer';
9
9
  /**
10
10
  * Builds a URL for the Component Explorer.
11
- * - Default: Explorer UI at `/___explorer`
12
- * - rawRender: `/___explorer?mode=render`
13
- * - rawRender + fixtureId: `/___explorer?mode=render&fixture=<id>`
11
+ * - Default: Explorer UI at `/___explorer` (with optional `fixture=<id>` to pre-select)
12
+ * - mode='embedded': `/___explorer?mode=embedded&fixture=<id>` (user-facing single fixture view)
13
+ * - mode='headless': `/___explorer?mode=headless&fixture=<id>` (API/screenshot operations)
14
14
  */
15
15
  function buildExplorerUrl(options) {
16
16
  const base = `${options.baseUrl}${EXPLORER_ROUTE}`;
17
- const query = options.rawRender
18
- ? { mode: 'headless', fixture: options.fixtureId }
19
- : {};
17
+ const query = {
18
+ mode: options.mode,
19
+ fixture: options.fixtureId,
20
+ };
20
21
  const params = new URLSearchParams(Object.entries(query).filter((entry) => entry[1] !== undefined));
21
22
  const queryString = params.toString();
22
23
  return queryString ? `${base}?${queryString}` : base;
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAYA;;;AAGG;AACI,MAAM,cAAc,GAAG;AAW9B;;;;;AAKG;AACG,SAAU,gBAAgB,CAAC,OAA2B,EAAA;IAC3D,MAAM,IAAI,GAAG,CAAA,EAAG,OAAO,CAAC,OAAO,CAAA,EAAG,cAAc,CAAA,CAAE;AAClD,IAAA,MAAM,KAAK,GAAwB,OAAO,CAAC;UACxC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS;UAC9C,EAAE;IACL,MAAM,MAAM,GAAG,IAAI,eAAe,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAgC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAC1F;AACD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE;AACrC,IAAA,OAAO,WAAW,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,IAAI;AACrD;AAEO,eAAe,SAAS,CAAC,QAAgB,EAAE,IAAgB,EAAA;AACjE,IAAA,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACnC;AAEM,SAAU,SAAS,CAAC,SAAiB,EAAE,OAAe,EAAA;IAC3D,MAAM,KAAK,GAAG,IAAI,MAAM,CACvB,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAC5D;AACD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B;AAEO,eAAe,YAAY,CAAC,GAAW,EAAA;AAC7C,IAAA,IAAI;AACH,QAAA,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9C;QACD;AACA,QAAA,OAAO,OAAO;IACf;AAAE,IAAA,MAAM;AACP,QAAA,OAAO,EAAE;IACV;AACD;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAYA;;;AAGG;AACI,MAAM,cAAc,GAAG;AAgB9B;;;;;AAKG;AACG,SAAU,gBAAgB,CAAC,OAA2B,EAAA;IAC3D,MAAM,IAAI,GAAG,CAAA,EAAG,OAAO,CAAC,OAAO,CAAA,EAAG,cAAc,CAAA,CAAE;AAClD,IAAA,MAAM,KAAK,GAAwB;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,SAAS;KAC1B;IACD,MAAM,MAAM,GAAG,IAAI,eAAe,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAgC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAC1F;AACD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE;AACrC,IAAA,OAAO,WAAW,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,IAAI;AACrD;AAEO,eAAe,SAAS,CAAC,QAAgB,EAAE,IAAgB,EAAA;AACjE,IAAA,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACnC;AAEM,SAAU,SAAS,CAAC,SAAiB,EAAE,OAAe,EAAA;IAC3D,MAAM,KAAK,GAAG,IAAI,MAAM,CACvB,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAC5D;AACD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B;AAEO,eAAe,YAAY,CAAC,GAAW,EAAA;AAC7C,IAAA,IAAI;AACH,QAAA,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9C;QACD;AACA,QAAA,OAAO,OAAO;IACf;AAAE,IAAA,MAAM;AACP,QAAA,OAAO,EAAE;IACV;AACD;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vscode/component-explorer-cli",
3
- "version": "0.2.1-1",
3
+ "version": "0.2.1-11",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,11 +26,20 @@
26
26
  "import": "./dist/daemon/DaemonService.js",
27
27
  "types": "./dist/daemon/DaemonService.d.ts"
28
28
  },
29
+ "./daemon-client": {
30
+ "import": "./dist/daemon/client.js",
31
+ "types": "./dist/daemon/client.d.ts"
32
+ },
29
33
  "./explorer-types": {
30
34
  "import": "./dist/utils.js",
31
35
  "types": "./dist/utils.d.ts"
32
36
  },
33
- "./config-schema.json": "./dist/component-explorer-config.schema.json"
37
+ "./render-manifest": {
38
+ "import": "./dist/renderManifest.js",
39
+ "types": "./dist/renderManifest.d.ts"
40
+ },
41
+ "./config-schema.json": "./dist/component-explorer-config.schema.json",
42
+ "./manifest.schema.json": "./dist/manifest.schema.json"
34
43
  },
35
44
  "files": [
36
45
  "dist",
@@ -39,16 +48,15 @@
39
48
  "SECURITY.md"
40
49
  ],
41
50
  "scripts": {
42
- "build": "rollup -c && node --experimental-strip-types scripts/generate-json-schema.ts",
51
+ "build": "rollup -c && tsx scripts/generate-json-schema.ts",
43
52
  "dev": "rollup -c -w",
44
53
  "test": "vitest --run",
45
- "generate-schema": "node --experimental-strip-types scripts/generate-json-schema.ts"
54
+ "generate-schema": "tsx scripts/generate-json-schema.ts"
46
55
  },
47
56
  "dependencies": {
48
- "@hediet/semver": "^0.2.2",
49
- "@modelcontextprotocol/sdk": "^1.26.0",
50
- "clipanion": "^4.0.0-rc.4",
51
- "express": "^5.0.0",
57
+ "@modelcontextprotocol/sdk": "^1.29.0",
58
+ "clipanion": "4.0.0-rc.4",
59
+ "express": "^5.2.1",
52
60
  "zod": "^4.3.6"
53
61
  },
54
62
  "peerDependencies": {
@@ -59,17 +67,20 @@
59
67
  "@hediet/simple-api": "workspace:*",
60
68
  "@rollup/plugin-node-resolve": "^16.0.3",
61
69
  "@rollup/plugin-typescript": "^12.3.0",
62
- "@types/express": "^5.0.0",
63
- "@types/node": "^20.0.0",
64
- "@vitejs/plugin-react": "^4.3.0",
65
- "@vscode/component-explorer-vite-plugin": "workspace:*",
70
+ "@types/express": "^5.0.6",
71
+ "@types/node": "^20.19.39",
72
+ "@vitejs/plugin-react": "^4.7.0",
73
+ "@vscode/component-explorer-common": "workspace:*",
66
74
  "@vscode/observables": "workspace:*",
67
- "playwright": "^1.40.0",
68
- "react": "^18.3.0",
69
- "react-dom": "^18.3.0",
70
- "rollup": "^4.59.0",
71
- "typescript": "^5.4.0",
72
- "vite": "^6.0.0",
73
- "vitest": "^1.3.0"
75
+ "@vscode/screenshot-service": "workspace:*",
76
+ "playwright": "^1.59.1",
77
+ "react": "^18.3.1",
78
+ "react-dom": "^18.3.1",
79
+ "rollup": "^4.60.1",
80
+ "semver": "workspace:*",
81
+ "tsx": "^4.21.0",
82
+ "typescript": "^5.9.3",
83
+ "vite": "^6.4.2",
84
+ "vitest": "^1.6.1"
74
85
  }
75
86
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"screenshotCommand.d.ts","sourceRoot":"","sources":["../../src/commands/screenshotCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAW5C,qBAAa,iBAAkB,SAAQ,OAAO;IAC7C,OAAgB,KAAK,aAAoB;IAEzC,OAAgB,KAAK,4BAOlB;IAEH,QAAQ,CAAC,OAAO,SAAsG;IACtH,QAAQ,CAAC,MAAM,qBAAkG;IACjH,QAAQ,CAAC,MAAM,UAAiI;IAChJ,QAAQ,CAAC,OAAO,SAAuI;IACvJ,QAAQ,CAAC,MAAM,qBAAsK;IACrL,QAAQ,CAAC,OAAO,UAA8F;IAC9G,QAAQ,CAAC,aAAa,qBAA+K;IACrM,QAAQ,CAAC,MAAM,qBAA4G;IAC3H,QAAQ,CAAC,MAAM,UAAwG;IACvH,QAAQ,CAAC,OAAO,SAA+G;IAEzH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;YA+ElB,cAAc;CA+B5B"}