@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.
Files changed (94) hide show
  1. package/dist/_virtual/_build-info.js +1 -1
  2. package/dist/browserPage.d.ts +5 -5
  3. package/dist/browserPage.d.ts.map +1 -1
  4. package/dist/browserPage.js +6 -1
  5. package/dist/browserPage.js.map +1 -1
  6. package/dist/commands/acceptCommand.d.ts.map +1 -1
  7. package/dist/commands/acceptCommand.js +14 -6
  8. package/dist/commands/acceptCommand.js.map +1 -1
  9. package/dist/commands/artifactCommand.d.ts +13 -0
  10. package/dist/commands/artifactCommand.d.ts.map +1 -0
  11. package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
  12. package/dist/commands/checkStabilityCommand.js +19 -16
  13. package/dist/commands/checkStabilityCommand.js.map +1 -1
  14. package/dist/commands/compareCommand.d.ts.map +1 -1
  15. package/dist/commands/compareCommand.js +27 -9
  16. package/dist/commands/compareCommand.js.map +1 -1
  17. package/dist/commands/mcpCommand.d.ts.map +1 -1
  18. package/dist/commands/mcpCommand.js +10 -5
  19. package/dist/commands/mcpCommand.js.map +1 -1
  20. package/dist/commands/renderCommand.d.ts +19 -0
  21. package/dist/commands/renderCommand.d.ts.map +1 -0
  22. package/dist/commands/renderCommand.js +207 -0
  23. package/dist/commands/renderCommand.js.map +1 -0
  24. package/dist/commands/screenshotCommand.d.ts +1 -1
  25. package/dist/commands/screenshotCommand.d.ts.map +1 -1
  26. package/dist/commands/serveCommand.d.ts.map +1 -1
  27. package/dist/commands/serveCommand.js +15 -6
  28. package/dist/commands/serveCommand.js.map +1 -1
  29. package/dist/commands/watchCommand.d.ts.map +1 -1
  30. package/dist/commands/watchCommand.js +18 -24
  31. package/dist/commands/watchCommand.js.map +1 -1
  32. package/dist/componentExplorer.d.ts +15 -11
  33. package/dist/componentExplorer.d.ts.map +1 -1
  34. package/dist/componentExplorer.js +12 -17
  35. package/dist/componentExplorer.js.map +1 -1
  36. package/dist/{watchConfig.d.ts → config.d.ts} +28 -24
  37. package/dist/config.d.ts.map +1 -0
  38. package/dist/{watchConfig.js → config.js} +63 -23
  39. package/dist/config.js.map +1 -0
  40. package/dist/daemon/DaemonService.d.ts +3 -3
  41. package/dist/daemon/DaemonService.d.ts.map +1 -1
  42. package/dist/daemon/DaemonService.js +15 -32
  43. package/dist/daemon/DaemonService.js.map +1 -1
  44. package/dist/daemon/pipeClient.js +2 -1
  45. package/dist/daemon/pipeClient.js.map +1 -1
  46. package/dist/daemon/version.d.ts +1 -1
  47. package/dist/daemon/version.d.ts.map +1 -1
  48. package/dist/daemon/version.js +1 -1
  49. package/dist/dependencyInstaller.d.ts +1 -1
  50. package/dist/dependencyInstaller.d.ts.map +1 -1
  51. package/dist/explorerSession.d.ts +2 -3
  52. package/dist/explorerSession.d.ts.map +1 -1
  53. package/dist/explorerSession.js +3 -20
  54. package/dist/explorerSession.js.map +1 -1
  55. package/dist/index.js +2 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/manifest.schema.json +187 -0
  58. package/dist/packages/common/dist/renderManifest.js +46 -0
  59. package/dist/packages/common/dist/renderManifest.js.map +1 -0
  60. package/dist/packages/semver/dist/index.js +186 -0
  61. package/dist/packages/semver/dist/index.js.map +1 -0
  62. package/dist/renderManifest.d.ts +5 -0
  63. package/dist/renderManifest.d.ts.map +1 -0
  64. package/dist/renderManifest.js +11 -0
  65. package/dist/renderManifest.js.map +1 -0
  66. package/dist/server/httpServer.d.ts +14 -0
  67. package/dist/server/httpServer.d.ts.map +1 -0
  68. package/dist/server/httpServer.js +112 -0
  69. package/dist/server/httpServer.js.map +1 -0
  70. package/dist/server/httpServer.test.d.ts.map +1 -0
  71. package/dist/server/serverConfig.d.ts +42 -0
  72. package/dist/server/serverConfig.d.ts.map +1 -0
  73. package/dist/server/serverConfig.js +60 -0
  74. package/dist/server/serverConfig.js.map +1 -0
  75. package/dist/server/types.d.ts +6 -0
  76. package/dist/server/types.d.ts.map +1 -0
  77. package/dist/server/viteServer.d.ts +16 -0
  78. package/dist/server/viteServer.d.ts.map +1 -0
  79. package/dist/{httpServer.js → server/viteServer.js} +5 -105
  80. package/dist/server/viteServer.js.map +1 -0
  81. package/package.json +13 -5
  82. package/dist/commands/screenshotCommand.js +0 -127
  83. package/dist/commands/screenshotCommand.js.map +0 -1
  84. package/dist/httpServer.d.ts +0 -36
  85. package/dist/httpServer.d.ts.map +0 -1
  86. package/dist/httpServer.js.map +0 -1
  87. package/dist/httpServer.test.d.ts.map +0 -1
  88. package/dist/resolveProject.d.ts +0 -21
  89. package/dist/resolveProject.d.ts.map +0 -1
  90. package/dist/resolveProject.js +0 -39
  91. package/dist/resolveProject.js.map +0 -1
  92. package/dist/watchConfig.d.ts.map +0 -1
  93. package/dist/watchConfig.js.map +0 -1
  94. /package/dist/{httpServer.test.d.ts → server/httpServer.test.d.ts} +0 -0
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Taken from https://semver.org/spec/v2.0.0.html.
3
+ */
4
+ const semanticVersionRegexEmbeddable = /(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?/;
5
+ /**
6
+ * Taken from https://semver.org/spec/v2.0.0.html.
7
+ */
8
+ const semanticVersionRegex = new RegExp(`^${semanticVersionRegexEmbeddable.source}$`);
9
+ const numberRegex = /0|[1-9][0-9]*/;
10
+ function semanticVersionRegexGroupsToVersion(groups) {
11
+ const prereleaseMatch = groups[4];
12
+ const buildMatch = groups[5];
13
+ let prereleaseInfo = null;
14
+ if (prereleaseMatch) {
15
+ prereleaseInfo = new PreReleaseInfo(prereleaseMatch
16
+ .split(".")
17
+ .map((r) => (r.match(numberRegex) ? parseInt(r) : r)));
18
+ }
19
+ const buildInfo = buildMatch !== undefined ? new BuildInfo(buildMatch.split(".")) : null;
20
+ return new SemanticVersion(parseInt(groups[1]), parseInt(groups[2]), parseInt(groups[3]), prereleaseInfo, buildInfo);
21
+ }
22
+ /**
23
+ * Represents a valid semantic version.
24
+ * See https://semver.org/spec/v2.0.0.html.
25
+ */
26
+ class SemanticVersion {
27
+ major;
28
+ minor;
29
+ patch;
30
+ prerelease;
31
+ build;
32
+ static parse(text) {
33
+ const exec = semanticVersionRegex.exec(text);
34
+ if (!exec) {
35
+ throw new Error(`Could not parse semantic version. "${text}" is not valid.`);
36
+ }
37
+ return semanticVersionRegexGroupsToVersion(exec);
38
+ }
39
+ constructor(major, minor, patch, prerelease, build) {
40
+ this.major = major;
41
+ this.minor = minor;
42
+ this.patch = patch;
43
+ this.prerelease = prerelease;
44
+ this.build = build;
45
+ function testValidNumber(n, arg) {
46
+ if (!Number.isInteger(n) || n < 0) {
47
+ throw new Error(`Invalid input. "${n}" is not valid for ${arg}`);
48
+ }
49
+ }
50
+ testValidNumber(major, "major");
51
+ testValidNumber(minor, "minor");
52
+ testValidNumber(patch, "patch");
53
+ }
54
+ get isStable() {
55
+ return this.major > 0;
56
+ }
57
+ toString() {
58
+ let result = `${this.major}.${this.minor}.${this.patch}`;
59
+ if (this.prerelease) {
60
+ result += `-${this.prerelease.toString()}`;
61
+ }
62
+ if (this.build) {
63
+ result += `+${this.build.toString()}`;
64
+ }
65
+ return result;
66
+ }
67
+ equals(other) {
68
+ return this.toString() === other.toString();
69
+ }
70
+ with(update) {
71
+ function defaultIfUndefined(val, defaultVal) {
72
+ return val !== undefined ? val : defaultVal;
73
+ }
74
+ function defaultIfUndefinedNumber(val, defaultVal) {
75
+ if (val === "increment") {
76
+ return defaultVal + 1;
77
+ }
78
+ return val !== undefined ? val : defaultVal;
79
+ }
80
+ return new SemanticVersion(defaultIfUndefinedNumber(update.major, this.major), defaultIfUndefinedNumber(update.minor, this.minor), defaultIfUndefinedNumber(update.patch, this.patch), defaultIfUndefined(update.prerelease, this.prerelease), defaultIfUndefined(update.build, this.build));
81
+ }
82
+ toJSON() {
83
+ return {
84
+ major: this.major,
85
+ minor: this.minor,
86
+ patch: this.patch,
87
+ ...(this.prerelease ? { prerelease: this.prerelease.parts } : {}),
88
+ ...(this.build ? { build: this.build.parts } : {}),
89
+ };
90
+ }
91
+ /**
92
+ * Returns -1 if this version is older than the other version, 0 if they are equal, or 1 if this version is newer.
93
+ */
94
+ compareTo(other) {
95
+ if (this.major != other.major) {
96
+ return comparePrimitives(this.major, other.major);
97
+ }
98
+ if (this.minor != other.minor) {
99
+ return comparePrimitives(this.minor, other.minor);
100
+ }
101
+ if (this.patch != other.patch) {
102
+ return comparePrimitives(this.patch, other.patch);
103
+ }
104
+ return PreReleaseInfo.compare(this.prerelease, other.prerelease);
105
+ }
106
+ }
107
+ function comparePrimitives(a, b) {
108
+ if (a < b) {
109
+ return -1;
110
+ }
111
+ if (a > b) {
112
+ return 1;
113
+ }
114
+ return 0;
115
+ }
116
+ class PreReleaseInfo {
117
+ parts;
118
+ static compare(a, b) {
119
+ if (!a && !b) {
120
+ return 0;
121
+ }
122
+ if (!a) {
123
+ // prefer non-prerelease version.
124
+ return 1;
125
+ }
126
+ if (!b) {
127
+ return -1;
128
+ }
129
+ return a.compareTo(b);
130
+ }
131
+ constructor(parts) {
132
+ this.parts = parts;
133
+ if (parts.length === 0) {
134
+ throw new Error("Must have at least one part!");
135
+ }
136
+ for (const p of parts) {
137
+ if (typeof p === "string") {
138
+ if (!/^[0-9a-zA-Z-]*[a-zA-Z-][0-9a-zA-Z-]*$/.exec(p)) {
139
+ throw new Error("Invalid input! Non-number parts must have at least one non-digit!");
140
+ }
141
+ }
142
+ }
143
+ }
144
+ toString() {
145
+ return this.parts.map((p) => p.toString()).join(".");
146
+ }
147
+ isNewer(other) {
148
+ return this.compareTo(other) === 1;
149
+ }
150
+ isOlder(other) {
151
+ return this.compareTo(other) === -1;
152
+ }
153
+ compareTo(other) {
154
+ for (let i = 0; i < Math.max(this.parts.length, other.parts.length); i++) {
155
+ const a = this.parts[i];
156
+ const b = other.parts[i];
157
+ if (a === undefined) {
158
+ // Other has longer prerelease
159
+ return -1;
160
+ }
161
+ if (b === undefined) {
162
+ // This has longer prerelease
163
+ return 1;
164
+ }
165
+ if (a !== b) {
166
+ return comparePrimitives(a, b);
167
+ }
168
+ }
169
+ return 0;
170
+ }
171
+ }
172
+ class BuildInfo {
173
+ parts;
174
+ constructor(parts) {
175
+ this.parts = parts;
176
+ if (parts.length === 0) {
177
+ throw new Error("Must have at least one part!");
178
+ }
179
+ }
180
+ toString() {
181
+ return this.parts.join(".");
182
+ }
183
+ }
184
+
185
+ export { BuildInfo, PreReleaseInfo, SemanticVersion, semanticVersionRegex, semanticVersionRegexEmbeddable, semanticVersionRegexGroupsToVersion };
186
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../semver/dist/index.js"],"sourcesContent":["/**\n * Taken from https://semver.org/spec/v2.0.0.html.\n */\nexport const semanticVersionRegexEmbeddable = /(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?/;\n/**\n * Taken from https://semver.org/spec/v2.0.0.html.\n */\nexport const semanticVersionRegex = new RegExp(`^${semanticVersionRegexEmbeddable.source}$`);\nconst numberRegex = /0|[1-9][0-9]*/;\nexport function semanticVersionRegexGroupsToVersion(groups) {\n const prereleaseMatch = groups[4];\n const buildMatch = groups[5];\n let prereleaseInfo = null;\n if (prereleaseMatch) {\n prereleaseInfo = new PreReleaseInfo(prereleaseMatch\n .split(\".\")\n .map((r) => (r.match(numberRegex) ? parseInt(r) : r)));\n }\n const buildInfo = buildMatch !== undefined ? new BuildInfo(buildMatch.split(\".\")) : null;\n return new SemanticVersion(parseInt(groups[1]), parseInt(groups[2]), parseInt(groups[3]), prereleaseInfo, buildInfo);\n}\n/**\n * Represents a valid semantic version.\n * See https://semver.org/spec/v2.0.0.html.\n */\nexport class SemanticVersion {\n major;\n minor;\n patch;\n prerelease;\n build;\n static parse(text) {\n const exec = semanticVersionRegex.exec(text);\n if (!exec) {\n throw new Error(`Could not parse semantic version. \"${text}\" is not valid.`);\n }\n return semanticVersionRegexGroupsToVersion(exec);\n }\n constructor(major, minor, patch, prerelease, build) {\n this.major = major;\n this.minor = minor;\n this.patch = patch;\n this.prerelease = prerelease;\n this.build = build;\n function testValidNumber(n, arg) {\n if (!Number.isInteger(n) || n < 0) {\n throw new Error(`Invalid input. \"${n}\" is not valid for ${arg}`);\n }\n }\n testValidNumber(major, \"major\");\n testValidNumber(minor, \"minor\");\n testValidNumber(patch, \"patch\");\n }\n get isStable() {\n return this.major > 0;\n }\n toString() {\n let result = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease) {\n result += `-${this.prerelease.toString()}`;\n }\n if (this.build) {\n result += `+${this.build.toString()}`;\n }\n return result;\n }\n equals(other) {\n return this.toString() === other.toString();\n }\n with(update) {\n function defaultIfUndefined(val, defaultVal) {\n return val !== undefined ? val : defaultVal;\n }\n function defaultIfUndefinedNumber(val, defaultVal) {\n if (val === \"increment\") {\n return defaultVal + 1;\n }\n return val !== undefined ? val : defaultVal;\n }\n return new SemanticVersion(defaultIfUndefinedNumber(update.major, this.major), defaultIfUndefinedNumber(update.minor, this.minor), defaultIfUndefinedNumber(update.patch, this.patch), defaultIfUndefined(update.prerelease, this.prerelease), defaultIfUndefined(update.build, this.build));\n }\n toJSON() {\n return {\n major: this.major,\n minor: this.minor,\n patch: this.patch,\n ...(this.prerelease ? { prerelease: this.prerelease.parts } : {}),\n ...(this.build ? { build: this.build.parts } : {}),\n };\n }\n /**\n * Returns -1 if this version is older than the other version, 0 if they are equal, or 1 if this version is newer.\n */\n compareTo(other) {\n if (this.major != other.major) {\n return comparePrimitives(this.major, other.major);\n }\n if (this.minor != other.minor) {\n return comparePrimitives(this.minor, other.minor);\n }\n if (this.patch != other.patch) {\n return comparePrimitives(this.patch, other.patch);\n }\n return PreReleaseInfo.compare(this.prerelease, other.prerelease);\n }\n}\nfunction comparePrimitives(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\nexport class PreReleaseInfo {\n parts;\n static compare(a, b) {\n if (!a && !b) {\n return 0;\n }\n if (!a) {\n // prefer non-prerelease version.\n return 1;\n }\n if (!b) {\n return -1;\n }\n return a.compareTo(b);\n }\n constructor(parts) {\n this.parts = parts;\n if (parts.length === 0) {\n throw new Error(\"Must have at least one part!\");\n }\n for (const p of parts) {\n if (typeof p === \"string\") {\n if (!/^[0-9a-zA-Z-]*[a-zA-Z-][0-9a-zA-Z-]*$/.exec(p)) {\n throw new Error(\"Invalid input! Non-number parts must have at least one non-digit!\");\n }\n }\n }\n }\n toString() {\n return this.parts.map((p) => p.toString()).join(\".\");\n }\n isNewer(other) {\n return this.compareTo(other) === 1;\n }\n isOlder(other) {\n return this.compareTo(other) === -1;\n }\n compareTo(other) {\n for (let i = 0; i < Math.max(this.parts.length, other.parts.length); i++) {\n const a = this.parts[i];\n const b = other.parts[i];\n if (a === undefined) {\n // Other has longer prerelease\n return -1;\n }\n if (b === undefined) {\n // This has longer prerelease\n return 1;\n }\n if (a !== b) {\n return comparePrimitives(a, b);\n }\n }\n return 0;\n }\n}\nexport class BuildInfo {\n parts;\n constructor(parts) {\n this.parts = parts;\n if (parts.length === 0) {\n throw new Error(\"Must have at least one part!\");\n }\n }\n toString() {\n return this.parts.join(\".\");\n }\n}\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { RenderManifestSchema, type RenderManifest, MANIFEST_FILENAME, generateRenderManifestJsonSchema } from "@vscode/component-explorer-common";
2
+ export declare const MANIFEST_SCHEMA_URL: string;
3
+ import type { RenderManifest } from "@vscode/component-explorer-common";
4
+ export declare function serializeManifest(manifest: RenderManifest): string;
5
+ //# sourceMappingURL=renderManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderManifest.d.ts","sourceRoot":"","sources":["../src/renderManifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,iBAAiB,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAGnJ,eAAO,MAAM,mBAAmB,QAA0G,CAAC;AAE3I,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAElE"}
@@ -0,0 +1,11 @@
1
+ export { MANIFEST_FILENAME } from './packages/common/dist/renderManifest.js';
2
+ import __buildInfo from './_virtual/_build-info.js';
3
+
4
+ /// <reference path="../../../scripts/build-info.d.ts" />
5
+ const MANIFEST_SCHEMA_URL = `https://cdn.jsdelivr.net/npm/@vscode/component-explorer-cli@${__buildInfo.version}/manifest.schema.json`;
6
+ function serializeManifest(manifest) {
7
+ return JSON.stringify({ $schema: MANIFEST_SCHEMA_URL, ...manifest }, null, '\t');
8
+ }
9
+
10
+ export { MANIFEST_SCHEMA_URL, serializeManifest };
11
+ //# sourceMappingURL=renderManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderManifest.js","sources":["../src/renderManifest.ts"],"sourcesContent":[null],"names":["buildInfo"],"mappings":";;;AAAA;MAIa,mBAAmB,GAAG,+DAA+DA,WAAS,CAAC,OAAO,CAAA,qBAAA;AAI7G,SAAU,iBAAiB,CAAC,QAAwB,EAAA;AACzD,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;AACjF;;;;"}
@@ -0,0 +1,14 @@
1
+ import { type ILogger } from '../logger.js';
2
+ import type { ComponentExplorerHttpServer } from './types.js';
3
+ export type { ComponentExplorerHttpServer } from './types.js';
4
+ export interface HttpServerOptions {
5
+ readonly cmd?: string;
6
+ readonly cwd?: string;
7
+ readonly logger?: ILogger;
8
+ readonly wait?: {
9
+ readonly stdout?: RegExp;
10
+ readonly stderr?: RegExp;
11
+ };
12
+ }
13
+ export declare function createHttpServer(url: string, options?: HttpServerOptions): Promise<ComponentExplorerHttpServer>;
14
+ //# sourceMappingURL=httpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpServer.d.ts","sourceRoot":"","sources":["../../src/server/httpServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,YAAY,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE;QACf,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAE/G"}
@@ -0,0 +1,112 @@
1
+ import { nullLogger } from '../logger.js';
2
+
3
+ function createHttpServer(url, options) {
4
+ return HttpComponentExplorerServer.create(url, options);
5
+ }
6
+ class HttpComponentExplorerServer {
7
+ url;
8
+ _process;
9
+ static async create(urlTemplate, options) {
10
+ let proc;
11
+ let vars = {};
12
+ if (options?.cmd) {
13
+ const log = options.logger ?? nullLogger;
14
+ log.debug(`Starting HTTP server: ${options.cmd}`);
15
+ log.debug(`HTTP server cwd: ${options.cwd ?? process.cwd()}`);
16
+ const { spawn } = await import('node:child_process');
17
+ proc = spawn(options.cmd, { shell: true, stdio: 'pipe', cwd: options.cwd });
18
+ proc.on('error', (e) => log.log(`HTTP server process error: ${e.message}`));
19
+ proc.on('exit', (code) => log.debug(`HTTP server process exited (code=${code})`));
20
+ if (options.wait?.stdout || options.wait?.stderr) {
21
+ vars = await waitForOutputPattern(proc, options.wait, log);
22
+ }
23
+ else {
24
+ proc.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
25
+ proc.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
26
+ }
27
+ }
28
+ const url = resolveUrlTemplate(urlTemplate, vars);
29
+ return new HttpComponentExplorerServer(url, proc);
30
+ }
31
+ constructor(url, _process) {
32
+ this.url = url;
33
+ this._process = _process;
34
+ }
35
+ async dispose() {
36
+ const proc = this._process;
37
+ if (!proc || proc.killed) {
38
+ return;
39
+ }
40
+ await new Promise((resolve) => {
41
+ proc.on('exit', () => resolve());
42
+ proc.stdout?.removeAllListeners('data');
43
+ proc.stderr?.removeAllListeners('data');
44
+ proc.stdout?.destroy();
45
+ proc.stderr?.destroy();
46
+ proc.kill();
47
+ });
48
+ }
49
+ }
50
+ function resolveUrlTemplate(template, vars) {
51
+ return template.replace(/\$\{var:([^}]+)\}/g, (match, name) => {
52
+ if (!(name in vars)) {
53
+ throw new Error(`Unresolved variable \${var:${name}} in URL. Available: ${Object.keys(vars).join(', ') || '(none)'}`);
54
+ }
55
+ return vars[name];
56
+ });
57
+ }
58
+ const _stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '').replace(/\x1b\].*?\x07/g, '');
59
+ function waitForOutputPattern(proc, wait, log) {
60
+ return new Promise((resolve, reject) => {
61
+ let resolved = false;
62
+ const vars = {};
63
+ let pendingCount = (wait.stdout ? 1 : 0) + (wait.stderr ? 1 : 0);
64
+ const buffers = { stdout: '', stderr: '' };
65
+ const tryResolve = () => {
66
+ if (resolved || pendingCount > 0) {
67
+ return;
68
+ }
69
+ resolved = true;
70
+ proc.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
71
+ proc.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
72
+ resolve(vars);
73
+ };
74
+ const makeHandler = (stream, pattern) => {
75
+ const handler = (d) => {
76
+ const text = d.toString();
77
+ log.trace(text.trimEnd());
78
+ buffers[stream] += _stripAnsi(text);
79
+ const m = pattern.exec(buffers[stream]);
80
+ if (m) {
81
+ log.debug(`${stream} pattern matched: ${JSON.stringify(m.groups ?? {})}`);
82
+ proc[stream]?.off('data', handler);
83
+ Object.assign(vars, m.groups ?? {});
84
+ pendingCount--;
85
+ tryResolve();
86
+ }
87
+ };
88
+ return handler;
89
+ };
90
+ if (wait.stdout) {
91
+ proc.stdout?.on('data', makeHandler('stdout', wait.stdout));
92
+ }
93
+ else {
94
+ proc.stdout?.on('data', (d) => log.trace(d.toString().trimEnd()));
95
+ }
96
+ if (wait.stderr) {
97
+ proc.stderr?.on('data', makeHandler('stderr', wait.stderr));
98
+ }
99
+ else {
100
+ proc.stderr?.on('data', (d) => log.trace(d.toString().trimEnd()));
101
+ }
102
+ proc.on('exit', (code) => {
103
+ if (!resolved) {
104
+ const details = [wait.stdout ? `stdout buffer:\n${buffers.stdout}` : '', wait.stderr ? `stderr buffer:\n${buffers.stderr}` : ''].filter(Boolean).join('\n');
105
+ reject(new Error(`HTTP server process exited (code=${code}) before output matched wait patterns.\n${details}`));
106
+ }
107
+ });
108
+ });
109
+ }
110
+
111
+ export { createHttpServer };
112
+ //# 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,107 +1,7 @@
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;
@@ -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