@vscode/component-explorer-cli 0.1.1-8 → 0.2.0
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/LICENSE +21 -0
- package/SECURITY.md +14 -0
- package/dist/WorktreePool.d.ts +22 -0
- package/dist/WorktreePool.d.ts.map +1 -0
- package/dist/WorktreePool.js +58 -0
- package/dist/WorktreePool.js.map +1 -0
- package/dist/WorktreePool.test.d.ts +2 -0
- package/dist/WorktreePool.test.d.ts.map +1 -0
- package/dist/_virtual/_build-info.js +4 -0
- package/dist/_virtual/_build-info.js.map +1 -0
- package/dist/browserPage.d.ts +5 -0
- package/dist/browserPage.d.ts.map +1 -1
- package/dist/browserPage.js +28 -2
- package/dist/browserPage.js.map +1 -1
- package/dist/commands/acceptCommand.d.ts.map +1 -1
- package/dist/commands/acceptCommand.js +3 -2
- package/dist/commands/acceptCommand.js.map +1 -1
- package/dist/commands/checkStabilityCommand.d.ts +12 -0
- package/dist/commands/checkStabilityCommand.d.ts.map +1 -0
- package/dist/commands/checkStabilityCommand.js +84 -0
- package/dist/commands/checkStabilityCommand.js.map +1 -0
- package/dist/commands/compareCommand.d.ts +1 -0
- package/dist/commands/compareCommand.d.ts.map +1 -1
- package/dist/commands/compareCommand.js +25 -4
- package/dist/commands/compareCommand.js.map +1 -1
- package/dist/commands/mcpCommand.d.ts +1 -0
- package/dist/commands/mcpCommand.d.ts.map +1 -1
- package/dist/commands/mcpCommand.js +13 -5
- package/dist/commands/mcpCommand.js.map +1 -1
- package/dist/commands/screenshotCommand.d.ts +2 -0
- package/dist/commands/screenshotCommand.d.ts.map +1 -1
- package/dist/commands/screenshotCommand.js +15 -4
- package/dist/commands/screenshotCommand.js.map +1 -1
- package/dist/commands/serveCommand.d.ts +2 -0
- package/dist/commands/serveCommand.d.ts.map +1 -1
- package/dist/commands/serveCommand.js +36 -11
- package/dist/commands/serveCommand.js.map +1 -1
- package/dist/commands/watchCommand.d.ts +2 -0
- package/dist/commands/watchCommand.d.ts.map +1 -1
- package/dist/commands/watchCommand.js +10 -63
- package/dist/commands/watchCommand.js.map +1 -1
- package/dist/comparison.d.ts +11 -1
- package/dist/comparison.d.ts.map +1 -1
- package/dist/comparison.js +25 -11
- package/dist/comparison.js.map +1 -1
- package/dist/component-explorer-config.schema.json +97 -58
- package/dist/componentExplorer.d.ts +13 -17
- package/dist/componentExplorer.d.ts.map +1 -1
- package/dist/componentExplorer.js +49 -31
- package/dist/componentExplorer.js.map +1 -1
- package/dist/daemon/DaemonContext.d.ts +4 -0
- package/dist/daemon/DaemonContext.d.ts.map +1 -0
- package/dist/daemon/DaemonService.d.ts +92 -23
- package/dist/daemon/DaemonService.d.ts.map +1 -1
- package/dist/daemon/DaemonService.js +473 -118
- package/dist/daemon/DaemonService.js.map +1 -1
- package/dist/daemon/dynamicSessions.test.d.ts +2 -0
- package/dist/daemon/dynamicSessions.test.d.ts.map +1 -0
- package/dist/daemon/lifecycle.d.ts +8 -3
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +28 -24
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/pipeClient.d.ts +6 -1
- package/dist/daemon/pipeClient.d.ts.map +1 -1
- package/dist/daemon/pipeClient.js +97 -5
- package/dist/daemon/pipeClient.js.map +1 -1
- package/dist/daemon/pipeServer.d.ts +2 -1
- package/dist/daemon/pipeServer.d.ts.map +1 -1
- package/dist/daemon/pipeServer.js +62 -3
- package/dist/daemon/pipeServer.js.map +1 -1
- package/dist/daemon/version.d.ts +10 -0
- package/dist/daemon/version.d.ts.map +1 -0
- package/dist/daemon/version.js +17 -0
- package/dist/daemon/version.js.map +1 -0
- package/dist/dependencyInstaller.d.ts +2 -2
- package/dist/dependencyInstaller.d.ts.map +1 -1
- package/dist/dependencyInstaller.js.map +1 -1
- package/dist/formatValue.d.ts +2 -0
- package/dist/formatValue.d.ts.map +1 -0
- package/dist/formatValue.js +96 -0
- package/dist/formatValue.js.map +1 -0
- package/dist/formatValue.test.d.ts +2 -0
- package/dist/formatValue.test.d.ts.map +1 -0
- package/dist/git/gitIndexResolver.d.ts +25 -0
- package/dist/git/gitIndexResolver.d.ts.map +1 -0
- package/dist/git/gitIndexResolver.js +91 -0
- package/dist/git/gitIndexResolver.js.map +1 -0
- package/dist/git/gitIndexResolver.test.d.ts +2 -0
- package/dist/git/gitIndexResolver.test.d.ts.map +1 -0
- package/dist/git/gitService.d.ts +2 -0
- package/dist/git/gitService.d.ts.map +1 -1
- package/dist/git/gitService.js +6 -0
- package/dist/git/gitService.js.map +1 -1
- package/dist/git/gitWorktreeManager.d.ts +6 -0
- package/dist/git/gitWorktreeManager.d.ts.map +1 -1
- package/dist/git/gitWorktreeManager.js +42 -13
- package/dist/git/gitWorktreeManager.js.map +1 -1
- package/dist/git/gitWorktreeManager.test.d.ts +2 -0
- package/dist/git/gitWorktreeManager.test.d.ts.map +1 -0
- package/dist/git/testUtils.d.ts +13 -0
- package/dist/git/testUtils.d.ts.map +1 -0
- package/dist/httpServer.d.ts +6 -1
- package/dist/httpServer.d.ts.map +1 -1
- package/dist/httpServer.js +17 -3
- package/dist/httpServer.js.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +7 -1
- package/dist/logger.js.map +1 -1
- package/dist/mcp/McpServer.d.ts +19 -5
- package/dist/mcp/McpServer.d.ts.map +1 -1
- package/dist/mcp/McpServer.js +447 -97
- package/dist/mcp/McpServer.js.map +1 -1
- package/dist/mcp/TaskManager.d.ts +28 -0
- package/dist/mcp/TaskManager.d.ts.map +1 -0
- package/dist/mcp/TaskManager.js +54 -0
- package/dist/mcp/TaskManager.js.map +1 -0
- package/dist/packages/simple-api/dist/{chunk-Q24JOMNK.js → chunk-TAEFVNPN.js} +1 -1
- package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js.map +1 -0
- package/dist/packages/simple-api/dist/express.js +11 -3
- package/dist/packages/simple-api/dist/express.js.map +1 -1
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -7
- package/dist/utils.js.map +1 -1
- package/dist/watchConfig.d.ts +19 -12
- package/dist/watchConfig.d.ts.map +1 -1
- package/dist/watchConfig.js +43 -48
- package/dist/watchConfig.js.map +1 -1
- package/package.json +21 -4
- package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyInstaller.js","sources":["../src/dependencyInstaller.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMO,eAAe,mBAAmB,CACxC,YAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"dependencyInstaller.js","sources":["../src/dependencyInstaller.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMO,eAAe,mBAAmB,CACxC,YAAoB,EACpB,MAA2B,EAC3B,MAAe,EAAA;AAEf,IAAA,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;QAAE;IAAQ;IAEtC,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC;AACpD,IAAA,MAAM,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAA,CAAE,CAAC;IAEjD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,KAAI;YAC/F,IAAI,GAAG,EAAE;gBACR,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,GAAG,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;YAC/D;iBAAO;AACN,gBAAA,OAAO,EAAE;YACV;AACD,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,KAAI,EAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,KAAI,EAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,IAAA,CAAC,CAAC;AACH;AAEA,SAAS,cAAc,CACtB,YAAoB,EACpB,MAA2B,EAAA;AAE3B,IAAA,QAAQ,MAAM,CAAC,IAAI;AAClB,QAAA,KAAK,KAAK,EAAE,OAAO,QAAQ;AAC3B,QAAA,KAAK,MAAM,EAAE,OAAO,gCAAgC;AACpD,QAAA,KAAK,MAAM,EAAE,OAAO,gCAAgC;AACpD,QAAA,KAAK,QAAQ,EAAE,OAAO,MAAM,CAAC,OAAO;QACpC,KAAK,MAAM,EAAE,OAAO,oBAAoB,CAAC,YAAY,CAAC;AACtD,QAAA,SAAS,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,EAAiC,MAA2B,CAAC,IAAI,CAAA,CAAE,CAAC;;AAE/F;AAEA,SAAS,oBAAoB,CAAC,YAAoB,EAAA;AACjD,IAAA,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,EAAE;AAC7D,QAAA,OAAO,gCAAgC;IACxC;AACA,IAAA,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE;AACxD,QAAA,OAAO,gCAAgC;IACxC;AACA,IAAA,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC,EAAE;AAChE,QAAA,OAAO,QAAQ;IAChB;AACA,IAAA,OAAO,aAAa;AACrB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatValue.d.ts","sourceRoot":"","sources":["../src/formatValue.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,SAAM,GAAG,MAAM,CAEnE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
function formatValue(value, maxLength = 100) {
|
|
2
|
+
return truncate(formatInner(value), maxLength);
|
|
3
|
+
}
|
|
4
|
+
function formatInner(value) {
|
|
5
|
+
if (value === null) {
|
|
6
|
+
return 'null';
|
|
7
|
+
}
|
|
8
|
+
if (value === undefined) {
|
|
9
|
+
return 'undefined';
|
|
10
|
+
}
|
|
11
|
+
switch (typeof value) {
|
|
12
|
+
case 'string':
|
|
13
|
+
return JSON.stringify(value);
|
|
14
|
+
case 'number':
|
|
15
|
+
case 'boolean':
|
|
16
|
+
return String(value);
|
|
17
|
+
}
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
if (value.length === 0) {
|
|
20
|
+
return '[]';
|
|
21
|
+
}
|
|
22
|
+
const items = value.map(formatInner);
|
|
23
|
+
const joined = `[${items.join(', ')}]`;
|
|
24
|
+
return joined;
|
|
25
|
+
}
|
|
26
|
+
if (typeof value === 'object') {
|
|
27
|
+
const entries = Object.entries(value);
|
|
28
|
+
if (entries.length === 0) {
|
|
29
|
+
return '{}';
|
|
30
|
+
}
|
|
31
|
+
const parts = entries.map(([k, v]) => `${k}: ${formatInner(v)}`);
|
|
32
|
+
return `{${parts.join(', ')}}`;
|
|
33
|
+
}
|
|
34
|
+
return String(value);
|
|
35
|
+
}
|
|
36
|
+
function truncate(str, maxLength) {
|
|
37
|
+
if (str.length <= maxLength) {
|
|
38
|
+
return str;
|
|
39
|
+
}
|
|
40
|
+
// Try to find the outermost container type for a smart summary suffix
|
|
41
|
+
const suffix = summarySuffix(str);
|
|
42
|
+
const available = maxLength - suffix.length - 1; // 1 for ellipsis char
|
|
43
|
+
if (available <= 0) {
|
|
44
|
+
return str.slice(0, maxLength - 1) + '…';
|
|
45
|
+
}
|
|
46
|
+
return str.slice(0, available) + '…' + suffix;
|
|
47
|
+
}
|
|
48
|
+
function summarySuffix(str) {
|
|
49
|
+
if (str.startsWith('[')) {
|
|
50
|
+
const count = countTopLevelCommas(str, '[', ']') + 1;
|
|
51
|
+
return ` (${count} items)`;
|
|
52
|
+
}
|
|
53
|
+
if (str.startsWith('{')) {
|
|
54
|
+
const count = countTopLevelCommas(str, '{', '}') + 1;
|
|
55
|
+
return ` (${count} keys)`;
|
|
56
|
+
}
|
|
57
|
+
if (str.startsWith('"')) {
|
|
58
|
+
return ` (${str.length - 2} chars)`;
|
|
59
|
+
}
|
|
60
|
+
return '';
|
|
61
|
+
}
|
|
62
|
+
function countTopLevelCommas(str, open, close) {
|
|
63
|
+
let depth = 0;
|
|
64
|
+
let count = 0;
|
|
65
|
+
let inString = false;
|
|
66
|
+
for (let i = 0; i < str.length; i++) {
|
|
67
|
+
const ch = str[i];
|
|
68
|
+
if (inString) {
|
|
69
|
+
if (ch === '\\') {
|
|
70
|
+
i++;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (ch === '"') {
|
|
74
|
+
inString = false;
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (ch === '"') {
|
|
79
|
+
inString = true;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (ch === open || ch === '[' || ch === '{') {
|
|
83
|
+
depth++;
|
|
84
|
+
}
|
|
85
|
+
else if (ch === close || ch === ']' || ch === '}') {
|
|
86
|
+
depth--;
|
|
87
|
+
}
|
|
88
|
+
else if (ch === ',' && depth === 1) {
|
|
89
|
+
count++;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return count;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { formatValue };
|
|
96
|
+
//# sourceMappingURL=formatValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatValue.js","sources":["../src/formatValue.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatValue.test.d.ts","sourceRoot":"","sources":["../src/formatValue.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { IDisposable } from '@vscode/observables';
|
|
2
|
+
import { type IObservable } from '@vscode/observables';
|
|
3
|
+
import { GitCommitId } from './gitCommitId.js';
|
|
4
|
+
/**
|
|
5
|
+
* Watches the git index and creates temporary commits representing the staged state.
|
|
6
|
+
* This enables worktree sessions checked out at "INDEX" — a snapshot of what's staged.
|
|
7
|
+
*/
|
|
8
|
+
export declare class GitIndexResolver implements IDisposable {
|
|
9
|
+
private readonly _gitRoot;
|
|
10
|
+
static readonly INDEX_REF = "INDEX";
|
|
11
|
+
private readonly _resolvedCommit;
|
|
12
|
+
private _watcher;
|
|
13
|
+
private _debounceTimer;
|
|
14
|
+
private _disposed;
|
|
15
|
+
get ref(): string;
|
|
16
|
+
get resolvedCommit(): IObservable<GitCommitId>;
|
|
17
|
+
private constructor();
|
|
18
|
+
static create(gitRoot: string): Promise<GitIndexResolver>;
|
|
19
|
+
private static _createIndexCommit;
|
|
20
|
+
private _startWatching;
|
|
21
|
+
private _scheduleResolve;
|
|
22
|
+
private _resolve;
|
|
23
|
+
dispose(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=gitIndexResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitIndexResolver.d.ts","sourceRoot":"","sources":["../../src/git/gitIndexResolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IAYlD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX1B,MAAM,CAAC,QAAQ,CAAC,SAAS,WAAW;IAEpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,SAAS,CAAS;IAE1B,IAAI,GAAG,IAAI,MAAM,CAAuC;IACxD,IAAI,cAAc,IAAI,WAAW,CAAC,WAAW,CAAC,CAAiC;IAE/E,OAAO;WAOM,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;mBAO1C,kBAAkB;IAWvC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,gBAAgB;YAMV,QAAQ;IAYtB,OAAO,IAAI,IAAI;CAMf"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import '../external/vscode-observables/observables/dist/observableInternal/index.js';
|
|
4
|
+
import { observableValue } from '../external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js';
|
|
5
|
+
import '../external/vscode-observables/observables/dist/observableInternal/debugLocation.js';
|
|
6
|
+
import '../external/vscode-observables/observables/dist/observableInternal/observables/derived.js';
|
|
7
|
+
import '../external/vscode-observables/observables/dist/observableInternal/utils/utils.js';
|
|
8
|
+
import '../external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
|
|
9
|
+
import { GitCommitId } from './gitCommitId.js';
|
|
10
|
+
import { execGit } from './gitUtils.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Watches the git index and creates temporary commits representing the staged state.
|
|
14
|
+
* This enables worktree sessions checked out at "INDEX" — a snapshot of what's staged.
|
|
15
|
+
*/
|
|
16
|
+
class GitIndexResolver {
|
|
17
|
+
_gitRoot;
|
|
18
|
+
static INDEX_REF = 'INDEX';
|
|
19
|
+
_resolvedCommit;
|
|
20
|
+
_watcher;
|
|
21
|
+
_debounceTimer;
|
|
22
|
+
_disposed = false;
|
|
23
|
+
get ref() { return GitIndexResolver.INDEX_REF; }
|
|
24
|
+
get resolvedCommit() { return this._resolvedCommit; }
|
|
25
|
+
constructor(_gitRoot, initialCommit) {
|
|
26
|
+
this._gitRoot = _gitRoot;
|
|
27
|
+
this._resolvedCommit = observableValue('commitResolver(INDEX)', initialCommit);
|
|
28
|
+
}
|
|
29
|
+
static async create(gitRoot) {
|
|
30
|
+
const commit = await GitIndexResolver._createIndexCommit(gitRoot);
|
|
31
|
+
const resolver = new GitIndexResolver(gitRoot, commit);
|
|
32
|
+
resolver._startWatching();
|
|
33
|
+
return resolver;
|
|
34
|
+
}
|
|
35
|
+
static async _createIndexCommit(gitRoot) {
|
|
36
|
+
const treeHash = (await execGit(gitRoot, ['write-tree'])).trim();
|
|
37
|
+
const headHash = (await execGit(gitRoot, ['rev-parse', 'HEAD'])).trim();
|
|
38
|
+
const commitHash = (await execGit(gitRoot, [
|
|
39
|
+
'commit-tree', treeHash,
|
|
40
|
+
'-p', headHash,
|
|
41
|
+
'-m', 'index snapshot',
|
|
42
|
+
])).trim();
|
|
43
|
+
return new GitCommitId(commitHash);
|
|
44
|
+
}
|
|
45
|
+
_startWatching() {
|
|
46
|
+
const indexPath = path.join(this._gitRoot, '.git', 'index');
|
|
47
|
+
try {
|
|
48
|
+
this._watcher = fs.watch(indexPath, { persistent: false }, () => {
|
|
49
|
+
this._scheduleResolve();
|
|
50
|
+
});
|
|
51
|
+
this._watcher.on('error', () => { });
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// If we can't watch, the resolver still works — just won't auto-update
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
_scheduleResolve() {
|
|
58
|
+
if (this._disposed) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (this._debounceTimer) {
|
|
62
|
+
clearTimeout(this._debounceTimer);
|
|
63
|
+
}
|
|
64
|
+
this._debounceTimer = setTimeout(() => { this._resolve(); }, 300);
|
|
65
|
+
}
|
|
66
|
+
async _resolve() {
|
|
67
|
+
if (this._disposed) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const newCommit = await GitIndexResolver._createIndexCommit(this._gitRoot);
|
|
72
|
+
if (!this._resolvedCommit.get().equals(newCommit)) {
|
|
73
|
+
this._resolvedCommit.set(newCommit, undefined);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// index may be temporarily in a bad state during staging, ignore
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
dispose() {
|
|
81
|
+
this._disposed = true;
|
|
82
|
+
if (this._debounceTimer) {
|
|
83
|
+
clearTimeout(this._debounceTimer);
|
|
84
|
+
}
|
|
85
|
+
this._watcher?.close();
|
|
86
|
+
this._watcher = undefined;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { GitIndexResolver };
|
|
91
|
+
//# sourceMappingURL=gitIndexResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitIndexResolver.js","sources":["../../src/git/gitIndexResolver.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitIndexResolver.test.d.ts","sourceRoot":"","sources":["../../src/git/gitIndexResolver.test.ts"],"names":[],"mappings":""}
|
package/dist/git/gitService.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IDisposable } from '@vscode/observables';
|
|
2
2
|
import type { IGitCommitResolver } from './gitCommitResolver.js';
|
|
3
|
+
import { GitIndexResolver } from './gitIndexResolver.js';
|
|
3
4
|
import { type GitWorktreeManager } from './gitWorktreeManager.js';
|
|
4
5
|
import { GitCommitId } from './gitCommitId.js';
|
|
5
6
|
export interface IGitService {
|
|
@@ -9,6 +10,7 @@ export interface IGitRepo extends IDisposable {
|
|
|
9
10
|
readonly gitRoot: string;
|
|
10
11
|
readonly worktrees: GitWorktreeManager;
|
|
11
12
|
createCommitResolver(ref: string): Promise<IGitCommitResolver>;
|
|
13
|
+
createIndexResolver(): Promise<GitIndexResolver>;
|
|
12
14
|
resolveRef(ref: string): Promise<GitCommitId>;
|
|
13
15
|
worktreeRootPath(): string;
|
|
14
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitService.d.ts","sourceRoot":"","sources":["../../src/git/gitService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,KAAK,kBAAkB,EAA6B,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC3B,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,QAAS,SAAQ,WAAW;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9C,gBAAgB,IAAI,MAAM,CAAC;CAC3B;AAED,qBAAa,UAAW,YAAW,WAAW;IACvC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAI5D"}
|
|
1
|
+
{"version":3,"file":"gitService.d.ts","sourceRoot":"","sources":["../../src/git/gitService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAA6B,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC3B,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,QAAS,SAAQ,WAAW;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9C,gBAAgB,IAAI,MAAM,CAAC;CAC3B;AAED,qBAAa,UAAW,YAAW,WAAW;IACvC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAI5D"}
|
package/dist/git/gitService.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GitCommitResolver } from './gitCommitResolver.js';
|
|
2
|
+
import { GitIndexResolver } from './gitIndexResolver.js';
|
|
2
3
|
import { DefaultGitWorktreeManager } from './gitWorktreeManager.js';
|
|
3
4
|
import { getGitRoot, resolveRef, worktreeRootPath } from './gitUtils.js';
|
|
4
5
|
import { GitCommitId } from './gitCommitId.js';
|
|
@@ -22,6 +23,11 @@ class GitRepo {
|
|
|
22
23
|
this._resolvers.add(resolver);
|
|
23
24
|
return resolver;
|
|
24
25
|
}
|
|
26
|
+
async createIndexResolver() {
|
|
27
|
+
const resolver = await GitIndexResolver.create(this.gitRoot);
|
|
28
|
+
this._resolvers.add(resolver);
|
|
29
|
+
return resolver;
|
|
30
|
+
}
|
|
25
31
|
async resolveRef(ref) {
|
|
26
32
|
const hash = await resolveRef(this.gitRoot, ref);
|
|
27
33
|
return new GitCommitId(hash);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitService.js","sources":["../../src/git/gitService.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitService.js","sources":["../../src/git/gitService.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAqBa,UAAU,CAAA;IACtB,MAAM,kBAAkB,CAAC,OAAe,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;AACzC,QAAA,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAC5B;AACA;AAED,MAAM,OAAO,CAAA;AAIS,IAAA,OAAA;AAHZ,IAAA,SAAS;AACD,IAAA,UAAU,GAAG,IAAI,GAAG,EAAsB;AAE3D,IAAA,WAAA,CAAqB,OAAe,EAAA;QAAf,IAAA,CAAA,OAAO,GAAP,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC;IACxD;IAEA,MAAM,oBAAoB,CAAC,GAAW,EAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,QAAA,OAAO,QAAQ;IAChB;AAEA,IAAA,MAAM,mBAAmB,GAAA;QACxB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,QAAA,OAAO,QAAQ;IAChB;IAEA,MAAM,UAAU,CAAC,GAAW,EAAA;QAC3B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAChD,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC;IAC7B;IAEA,gBAAgB,GAAA;AACf,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC;IAEA,OAAO,GAAA;AACN,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,QAAQ,CAAC,OAAO,EAAE;QACnB;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACxB;AACA;;;;"}
|
|
@@ -3,6 +3,12 @@ export interface GitWorktreeInfo {
|
|
|
3
3
|
readonly path: string;
|
|
4
4
|
readonly checkedOutCommit: GitCommitId;
|
|
5
5
|
readonly isDirty: boolean;
|
|
6
|
+
readonly dirtyFiles: readonly string[];
|
|
7
|
+
}
|
|
8
|
+
export declare class DirtyWorktreeError extends Error {
|
|
9
|
+
readonly worktreePath: string;
|
|
10
|
+
readonly dirtyFiles: readonly string[];
|
|
11
|
+
constructor(worktreePath: string, dirtyFiles: readonly string[], operation: string);
|
|
6
12
|
}
|
|
7
13
|
export interface GitWorktreeManager {
|
|
8
14
|
create(worktreePath: string, commit: GitCommitId): Promise<GitWorktreeInfo>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitWorktreeManager.d.ts","sourceRoot":"","sources":["../../src/git/gitWorktreeManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitWorktreeManager.d.ts","sourceRoot":"","sources":["../../src/git/gitWorktreeManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE;gBAD7B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,SAAS,MAAM,EAAE,EACtC,SAAS,EAAE,MAAM;CAQlB;AAED,MAAM,WAAW,kBAAkB;IAClC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5E,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9E,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IACjE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAC;CAChE;AAED,qBAAa,yBAA0B,YAAW,kBAAkB;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAEvC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAS3E,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAe7E,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAehE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAqCrE"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
1
2
|
import { GitCommitId } from './gitCommitId.js';
|
|
2
3
|
import { execGit } from './gitUtils.js';
|
|
3
4
|
|
|
5
|
+
class DirtyWorktreeError extends Error {
|
|
6
|
+
worktreePath;
|
|
7
|
+
dirtyFiles;
|
|
8
|
+
constructor(worktreePath, dirtyFiles, operation) {
|
|
9
|
+
super(`Worktree is dirty, refusing ${operation}: ${worktreePath}\n` +
|
|
10
|
+
dirtyFiles.map(f => ` ${f}`).join('\n'));
|
|
11
|
+
this.worktreePath = worktreePath;
|
|
12
|
+
this.dirtyFiles = dirtyFiles;
|
|
13
|
+
this.name = 'DirtyWorktreeError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
4
16
|
class DefaultGitWorktreeManager {
|
|
5
17
|
_gitRoot;
|
|
6
18
|
constructor(_gitRoot) {
|
|
@@ -20,7 +32,7 @@ class DefaultGitWorktreeManager {
|
|
|
20
32
|
throw new Error(`Worktree does not exist: ${worktreePath}`);
|
|
21
33
|
}
|
|
22
34
|
if (current.isDirty) {
|
|
23
|
-
throw new
|
|
35
|
+
throw new DirtyWorktreeError(worktreePath, current.dirtyFiles, 'remove');
|
|
24
36
|
}
|
|
25
37
|
await execGit(this._gitRoot, ['worktree', 'remove', worktreePath]);
|
|
26
38
|
}
|
|
@@ -30,7 +42,7 @@ class DefaultGitWorktreeManager {
|
|
|
30
42
|
throw new Error(`Worktree does not exist: ${worktreePath}`);
|
|
31
43
|
}
|
|
32
44
|
if (current.isDirty) {
|
|
33
|
-
throw new
|
|
45
|
+
throw new DirtyWorktreeError(worktreePath, current.dirtyFiles, 'checkout');
|
|
34
46
|
}
|
|
35
47
|
if (current.checkedOutCommit.equals(commit)) {
|
|
36
48
|
return current;
|
|
@@ -41,11 +53,12 @@ class DefaultGitWorktreeManager {
|
|
|
41
53
|
async info(worktreePath) {
|
|
42
54
|
try {
|
|
43
55
|
const head = (await execGit(worktreePath, ['rev-parse', 'HEAD'])).trim();
|
|
44
|
-
const
|
|
56
|
+
const dirtyFiles = parsePorcelainStatus(worktreePath, await execGit(worktreePath, ['status', '--porcelain']));
|
|
45
57
|
return {
|
|
46
58
|
path: worktreePath,
|
|
47
59
|
checkedOutCommit: new GitCommitId(head),
|
|
48
|
-
isDirty:
|
|
60
|
+
isDirty: dirtyFiles.length > 0,
|
|
61
|
+
dirtyFiles,
|
|
49
62
|
};
|
|
50
63
|
}
|
|
51
64
|
catch {
|
|
@@ -60,7 +73,6 @@ class DefaultGitWorktreeManager {
|
|
|
60
73
|
const lines = block.split('\n');
|
|
61
74
|
let entryPath;
|
|
62
75
|
let head;
|
|
63
|
-
let isDirty = false;
|
|
64
76
|
for (const line of lines) {
|
|
65
77
|
if (line.startsWith('worktree ')) {
|
|
66
78
|
entryPath = line.slice('worktree '.length);
|
|
@@ -72,23 +84,40 @@ class DefaultGitWorktreeManager {
|
|
|
72
84
|
if (entryPath && head && entryPath.startsWith(worktreeRoot)) {
|
|
73
85
|
// Check dirty status via git status
|
|
74
86
|
try {
|
|
75
|
-
const
|
|
76
|
-
|
|
87
|
+
const dirtyFiles = parsePorcelainStatus(entryPath, await execGit(entryPath, ['status', '--porcelain']));
|
|
88
|
+
entries.push({
|
|
89
|
+
path: entryPath,
|
|
90
|
+
checkedOutCommit: new GitCommitId(head),
|
|
91
|
+
isDirty: dirtyFiles.length > 0,
|
|
92
|
+
dirtyFiles,
|
|
93
|
+
});
|
|
77
94
|
}
|
|
78
95
|
catch {
|
|
79
96
|
// If we can't check, skip this entry
|
|
80
97
|
continue;
|
|
81
98
|
}
|
|
82
|
-
entries.push({
|
|
83
|
-
path: entryPath,
|
|
84
|
-
checkedOutCommit: new GitCommitId(head),
|
|
85
|
-
isDirty,
|
|
86
|
-
});
|
|
87
99
|
}
|
|
88
100
|
}
|
|
89
101
|
return entries;
|
|
90
102
|
}
|
|
91
103
|
}
|
|
104
|
+
function parsePorcelainStatus(worktreePath, output) {
|
|
105
|
+
// git status --porcelain format: "XY filename" where X=index status, Y=worktree status, then a space.
|
|
106
|
+
const results = [];
|
|
107
|
+
for (const raw of output.split('\n')) {
|
|
108
|
+
const line = raw.replace(/\r$/, '');
|
|
109
|
+
if (line === '') {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
// Expect exactly: 2 status chars + space + filename
|
|
113
|
+
const match = line.match(/^(.)(.) (.+)$/);
|
|
114
|
+
if (!match) {
|
|
115
|
+
throw new Error(`Unexpected git status --porcelain line: ${JSON.stringify(line)}`);
|
|
116
|
+
}
|
|
117
|
+
results.push(path.resolve(worktreePath, match[3]));
|
|
118
|
+
}
|
|
119
|
+
return results;
|
|
120
|
+
}
|
|
92
121
|
|
|
93
|
-
export { DefaultGitWorktreeManager };
|
|
122
|
+
export { DefaultGitWorktreeManager, DirtyWorktreeError };
|
|
94
123
|
//# sourceMappingURL=gitWorktreeManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitWorktreeManager.js","sources":["../../src/git/gitWorktreeManager.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitWorktreeManager.js","sources":["../../src/git/gitWorktreeManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitWorktreeManager.test.d.ts","sourceRoot":"","sources":["../../src/git/gitWorktreeManager.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GitCommitId } from './gitCommitId.js';
|
|
2
|
+
export declare class TempGitRepo {
|
|
3
|
+
readonly root: string;
|
|
4
|
+
private constructor();
|
|
5
|
+
static create(): Promise<TempGitRepo>;
|
|
6
|
+
writeFile(relativePath: string, content: string): Promise<string>;
|
|
7
|
+
readFile(relativePath: string): Promise<string>;
|
|
8
|
+
addAndCommit(message: string): Promise<GitCommitId>;
|
|
9
|
+
stageFile(relativePath: string): Promise<void>;
|
|
10
|
+
resolveRef(ref: string): Promise<GitCommitId>;
|
|
11
|
+
dispose(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=testUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/git/testUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,WAAW;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAzC,OAAO;WAEM,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAQrC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOjE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOnD,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAK7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO9B"}
|
package/dist/httpServer.d.ts
CHANGED
|
@@ -5,8 +5,13 @@ import { ViteProjectRef } from './viteProjectRef.js';
|
|
|
5
5
|
export interface ViteServerOptions {
|
|
6
6
|
readonly resolveViteFrom?: string;
|
|
7
7
|
readonly logger?: ILogger;
|
|
8
|
-
/** Glob patterns for files that keep HMR. Everything else triggers a full reload. */
|
|
9
8
|
readonly hmrAllowedPaths?: readonly string[];
|
|
9
|
+
readonly daemonConfig?: {
|
|
10
|
+
readonly pipeName: string;
|
|
11
|
+
readonly sessionName: string;
|
|
12
|
+
readonly daemonApiVersion: string;
|
|
13
|
+
readonly pluginProtocolVersion: string;
|
|
14
|
+
};
|
|
10
15
|
}
|
|
11
16
|
export interface ComponentExplorerHttpServerFactory {
|
|
12
17
|
createViteServer(project: ViteProjectRef, options?: ViteServerOptions): Promise<ComponentExplorerHttpServer>;
|
package/dist/httpServer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpServer.d.ts","sourceRoot":"","sources":["../src/httpServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,
|
|
1
|
+
{"version":3,"file":"httpServer.d.ts","sourceRoot":"","sources":["../src/httpServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,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,MAAM,WAAW,kCAAkC;IAClD,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC7G,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,qBAAa,yCAA0C,YAAW,kCAAkC;IAC7F,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAI5G,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAGhF"}
|
package/dist/httpServer.js
CHANGED
|
@@ -29,6 +29,7 @@ class ViteComponentExplorerHttpServer {
|
|
|
29
29
|
const log = options?.logger ?? nullLogger;
|
|
30
30
|
const resolveViteFrom = options?.resolveViteFrom;
|
|
31
31
|
const hmrAllowedPaths = options?.hmrAllowedPaths;
|
|
32
|
+
const daemonConfig = options?.daemonConfig;
|
|
32
33
|
// Import Vite from the target project's node_modules, not ours.
|
|
33
34
|
// This ensures the config is loaded with the same Vite version and
|
|
34
35
|
// module resolution context as the target project.
|
|
@@ -43,7 +44,10 @@ class ViteComponentExplorerHttpServer {
|
|
|
43
44
|
// the calling file instead of the specified parentUrl).
|
|
44
45
|
const resolveFrom = resolveViteFrom ?? project.configFile ?? project.cwd;
|
|
45
46
|
const parentUrl = pathToFileURL(resolveFrom).href;
|
|
46
|
-
log.
|
|
47
|
+
log.debug(`Resolving vite from: ${resolveFrom} (parentUrl: ${parentUrl})`);
|
|
48
|
+
log.debug(` resolveViteFrom=${resolveViteFrom}`);
|
|
49
|
+
log.debug(` project.configFile=${project.configFile}`);
|
|
50
|
+
log.debug(` project.cwd=${project.cwd}`);
|
|
47
51
|
let viteUrl;
|
|
48
52
|
try {
|
|
49
53
|
viteUrl = pathToFileURL(createRequire(parentUrl).resolve('vite')).href;
|
|
@@ -58,7 +62,7 @@ class ViteComponentExplorerHttpServer {
|
|
|
58
62
|
// through our ILogger so output stays clean in non-TTY terminals.
|
|
59
63
|
const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '').replace(/\x1b\].*?\x07/g, '');
|
|
60
64
|
const customLogger = {
|
|
61
|
-
info: (msg) => log.
|
|
65
|
+
info: (msg) => log.trace(stripAnsi(msg)),
|
|
62
66
|
warn: (msg) => log.info(`[warn] ${stripAnsi(msg)}`),
|
|
63
67
|
warnOnce: (msg) => log.info(`[warn] ${stripAnsi(msg)}`),
|
|
64
68
|
error: (msg) => log.info(`[error] ${stripAnsi(msg)}`),
|
|
@@ -73,13 +77,22 @@ class ViteComponentExplorerHttpServer {
|
|
|
73
77
|
const prevCwd = process.cwd();
|
|
74
78
|
process.chdir(project.cwd);
|
|
75
79
|
const plugins = [];
|
|
80
|
+
if (daemonConfig) {
|
|
81
|
+
plugins.push({
|
|
82
|
+
name: 'component-explorer-daemon-config',
|
|
83
|
+
enforce: 'pre',
|
|
84
|
+
configureServer(server) {
|
|
85
|
+
server._explorerDaemonConfig = daemonConfig;
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
}
|
|
76
89
|
if (hmrAllowedPaths) {
|
|
77
90
|
const matchers = hmrAllowedPaths.map(globToRegExp);
|
|
78
91
|
plugins.push({
|
|
79
92
|
name: 'component-explorer-hmr-filter',
|
|
80
93
|
handleHotUpdate({ file, server: s }) {
|
|
81
94
|
if (!matchers.some(re => re.test(file))) {
|
|
82
|
-
log.
|
|
95
|
+
log.debug(`Full reload for: ${file}`);
|
|
83
96
|
s.ws.send({ type: 'full-reload' });
|
|
84
97
|
return [];
|
|
85
98
|
}
|
|
@@ -102,6 +115,7 @@ class ViteComponentExplorerHttpServer {
|
|
|
102
115
|
}
|
|
103
116
|
const resolvedUrls = server.resolvedUrls;
|
|
104
117
|
const url = resolvedUrls?.local[0] ?? `http://localhost:${server.httpServer?.address()?.port}`;
|
|
118
|
+
log.debug(`Vite server started: ${url}`);
|
|
105
119
|
const treeId = observableValue('sourceTreeId', new SourceTreeId(Date.now().toString()));
|
|
106
120
|
server.watcher.on('change', () => {
|
|
107
121
|
treeId.set(new SourceTreeId(Date.now().toString()), undefined);
|
package/dist/httpServer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpServer.js","sources":["../src/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"httpServer.js","sources":["../src/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|