@vscode/component-explorer-cli 0.1.1-2 → 0.1.1-20

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 (169) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +177 -0
  3. package/SECURITY.md +14 -0
  4. package/dist/WorktreePool.d.ts +22 -0
  5. package/dist/WorktreePool.d.ts.map +1 -0
  6. package/dist/WorktreePool.js +58 -0
  7. package/dist/WorktreePool.js.map +1 -0
  8. package/dist/WorktreePool.test.d.ts +2 -0
  9. package/dist/WorktreePool.test.d.ts.map +1 -0
  10. package/dist/_virtual/_build-info.js +4 -0
  11. package/dist/_virtual/_build-info.js.map +1 -0
  12. package/dist/browserPage.d.ts +5 -0
  13. package/dist/browserPage.d.ts.map +1 -1
  14. package/dist/browserPage.js +28 -2
  15. package/dist/browserPage.js.map +1 -1
  16. package/dist/commands/acceptCommand.d.ts +2 -1
  17. package/dist/commands/acceptCommand.d.ts.map +1 -1
  18. package/dist/commands/acceptCommand.js +15 -8
  19. package/dist/commands/acceptCommand.js.map +1 -1
  20. package/dist/commands/checkStabilityCommand.d.ts +12 -0
  21. package/dist/commands/checkStabilityCommand.d.ts.map +1 -0
  22. package/dist/commands/checkStabilityCommand.js +84 -0
  23. package/dist/commands/checkStabilityCommand.js.map +1 -0
  24. package/dist/commands/compareCommand.d.ts +5 -1
  25. package/dist/commands/compareCommand.d.ts.map +1 -1
  26. package/dist/commands/compareCommand.js +56 -71
  27. package/dist/commands/compareCommand.js.map +1 -1
  28. package/dist/commands/mcpCommand.d.ts +4 -1
  29. package/dist/commands/mcpCommand.d.ts.map +1 -1
  30. package/dist/commands/mcpCommand.js +51 -8
  31. package/dist/commands/mcpCommand.js.map +1 -1
  32. package/dist/commands/screenshotCommand.d.ts +9 -2
  33. package/dist/commands/screenshotCommand.d.ts.map +1 -1
  34. package/dist/commands/screenshotCommand.js +73 -15
  35. package/dist/commands/screenshotCommand.js.map +1 -1
  36. package/dist/commands/serveCommand.d.ts +6 -1
  37. package/dist/commands/serveCommand.d.ts.map +1 -1
  38. package/dist/commands/serveCommand.js +104 -23
  39. package/dist/commands/serveCommand.js.map +1 -1
  40. package/dist/commands/watchCommand.d.ts +3 -2
  41. package/dist/commands/watchCommand.d.ts.map +1 -1
  42. package/dist/commands/watchCommand.js +28 -80
  43. package/dist/commands/watchCommand.js.map +1 -1
  44. package/dist/comparison.d.ts +70 -0
  45. package/dist/comparison.d.ts.map +1 -0
  46. package/dist/comparison.js +264 -0
  47. package/dist/comparison.js.map +1 -0
  48. package/dist/component-explorer-config.schema.json +222 -0
  49. package/dist/componentExplorer.d.ts +40 -2
  50. package/dist/componentExplorer.d.ts.map +1 -1
  51. package/dist/componentExplorer.js +118 -24
  52. package/dist/componentExplorer.js.map +1 -1
  53. package/dist/daemon/DaemonContext.d.ts +4 -0
  54. package/dist/daemon/DaemonContext.d.ts.map +1 -0
  55. package/dist/daemon/DaemonService.d.ts +146 -21
  56. package/dist/daemon/DaemonService.d.ts.map +1 -1
  57. package/dist/daemon/DaemonService.js +620 -123
  58. package/dist/daemon/DaemonService.js.map +1 -1
  59. package/dist/daemon/dynamicSessions.test.d.ts +2 -0
  60. package/dist/daemon/dynamicSessions.test.d.ts.map +1 -0
  61. package/dist/daemon/lifecycle.d.ts +8 -3
  62. package/dist/daemon/lifecycle.d.ts.map +1 -1
  63. package/dist/daemon/lifecycle.js +27 -10
  64. package/dist/daemon/lifecycle.js.map +1 -1
  65. package/dist/daemon/pipeClient.d.ts +6 -1
  66. package/dist/daemon/pipeClient.d.ts.map +1 -1
  67. package/dist/daemon/pipeClient.js +101 -8
  68. package/dist/daemon/pipeClient.js.map +1 -1
  69. package/dist/daemon/pipeServer.d.ts +2 -1
  70. package/dist/daemon/pipeServer.d.ts.map +1 -1
  71. package/dist/daemon/pipeServer.js +56 -6
  72. package/dist/daemon/pipeServer.js.map +1 -1
  73. package/dist/daemon/types.d.ts +12 -0
  74. package/dist/daemon/types.d.ts.map +1 -0
  75. package/dist/daemon/version.d.ts +10 -0
  76. package/dist/daemon/version.d.ts.map +1 -0
  77. package/dist/daemon/version.js +17 -0
  78. package/dist/daemon/version.js.map +1 -0
  79. package/dist/dependencyInstaller.d.ts +2 -2
  80. package/dist/dependencyInstaller.d.ts.map +1 -1
  81. package/dist/dependencyInstaller.js +1 -1
  82. package/dist/dependencyInstaller.js.map +1 -1
  83. package/dist/external/vscode-observables/observables/dist/disposables.js +24 -1
  84. package/dist/external/vscode-observables/observables/dist/disposables.js.map +1 -1
  85. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js +1 -4
  86. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -1
  87. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js +2 -5
  88. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +1 -1
  89. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js +30 -6
  90. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -1
  91. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js +1 -1
  92. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -1
  93. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js +12 -1
  94. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -1
  95. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js +55 -0
  96. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
  97. package/dist/formatValue.d.ts +2 -0
  98. package/dist/formatValue.d.ts.map +1 -0
  99. package/dist/formatValue.js +96 -0
  100. package/dist/formatValue.js.map +1 -0
  101. package/dist/formatValue.test.d.ts +2 -0
  102. package/dist/formatValue.test.d.ts.map +1 -0
  103. package/dist/git/gitIndexResolver.d.ts +25 -0
  104. package/dist/git/gitIndexResolver.d.ts.map +1 -0
  105. package/dist/git/gitIndexResolver.js +91 -0
  106. package/dist/git/gitIndexResolver.js.map +1 -0
  107. package/dist/git/gitIndexResolver.test.d.ts +2 -0
  108. package/dist/git/gitIndexResolver.test.d.ts.map +1 -0
  109. package/dist/git/gitService.d.ts +2 -0
  110. package/dist/git/gitService.d.ts.map +1 -1
  111. package/dist/git/gitService.js +6 -0
  112. package/dist/git/gitService.js.map +1 -1
  113. package/dist/git/gitUtils.js +1 -1
  114. package/dist/git/gitUtils.js.map +1 -1
  115. package/dist/git/gitWorktreeManager.d.ts +6 -0
  116. package/dist/git/gitWorktreeManager.d.ts.map +1 -1
  117. package/dist/git/gitWorktreeManager.js +42 -13
  118. package/dist/git/gitWorktreeManager.js.map +1 -1
  119. package/dist/git/gitWorktreeManager.test.d.ts +2 -0
  120. package/dist/git/gitWorktreeManager.test.d.ts.map +1 -0
  121. package/dist/git/testUtils.d.ts +13 -0
  122. package/dist/git/testUtils.d.ts.map +1 -0
  123. package/dist/httpServer.d.ts +6 -1
  124. package/dist/httpServer.d.ts.map +1 -1
  125. package/dist/httpServer.js +30 -10
  126. package/dist/httpServer.js.map +1 -1
  127. package/dist/index.js +11 -2
  128. package/dist/index.js.map +1 -1
  129. package/dist/logger.d.ts +1 -0
  130. package/dist/logger.d.ts.map +1 -1
  131. package/dist/logger.js +7 -1
  132. package/dist/logger.js.map +1 -1
  133. package/dist/mcp/McpServer.d.ts +47 -4
  134. package/dist/mcp/McpServer.d.ts.map +1 -1
  135. package/dist/mcp/McpServer.js +913 -155
  136. package/dist/mcp/McpServer.js.map +1 -1
  137. package/dist/mcp/TaskManager.d.ts +28 -0
  138. package/dist/mcp/TaskManager.d.ts.map +1 -0
  139. package/dist/mcp/TaskManager.js +54 -0
  140. package/dist/mcp/TaskManager.js.map +1 -0
  141. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js +137 -0
  142. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +1 -0
  143. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js +24 -0
  144. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +1 -0
  145. package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js +27 -0
  146. package/dist/packages/simple-api/dist/chunk-TAEFVNPN.js.map +1 -0
  147. package/dist/packages/simple-api/dist/express.js +104 -0
  148. package/dist/packages/simple-api/dist/express.js.map +1 -0
  149. package/dist/resolveProject.d.ts +21 -0
  150. package/dist/resolveProject.d.ts.map +1 -0
  151. package/dist/resolveProject.js +39 -0
  152. package/dist/resolveProject.js.map +1 -0
  153. package/dist/utils.d.ts +31 -0
  154. package/dist/utils.d.ts.map +1 -0
  155. package/dist/utils.js +49 -0
  156. package/dist/utils.js.map +1 -0
  157. package/dist/watchConfig.d.ts +52 -9
  158. package/dist/watchConfig.d.ts.map +1 -1
  159. package/dist/watchConfig.js +67 -62
  160. package/dist/watchConfig.js.map +1 -1
  161. package/package.json +31 -8
  162. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js +0 -72
  163. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js.map +0 -1
  164. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js +0 -447
  165. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js.map +0 -1
  166. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js +0 -64
  167. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js.map +0 -1
  168. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js +0 -52
  169. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js.map +0 -1
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gitIndexResolver.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitIndexResolver.test.d.ts","sourceRoot":"","sources":["../../src/git/gitIndexResolver.test.ts"],"names":[],"mappings":""}
@@ -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"}
@@ -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":";;;;;MAmBa,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;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;;;;"}
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;;;;"}
@@ -18,7 +18,7 @@ function worktreeRootPath(gitRoot) {
18
18
  }
19
19
  function execGit(cwd, args) {
20
20
  return new Promise((resolve, reject) => {
21
- execFile('git', ['-C', cwd, ...args], { encoding: 'utf-8' }, (err, stdout, stderr) => {
21
+ execFile('git', ['-C', cwd, ...args], { encoding: 'utf-8', windowsHide: true }, (err, stdout, stderr) => {
22
22
  if (err) {
23
23
  reject(new Error(`git ${args.join(' ')} failed: ${stderr || err.message}`));
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gitUtils.js","sources":["../../src/git/gitUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGO,eAAe,UAAU,CAAC,OAAe,EAAA;AAC/C,IAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACvE,IAAA,OAAO,MAAM,CAAC,IAAI,EAAE;AACrB;AAEO,eAAe,UAAU,CAAC,OAAe,EAAE,GAAW,EAAA;AAC5D,IAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACzD,IAAA,OAAO,MAAM,CAAC,IAAI,EAAE;AACrB;AAEM,SAAU,oBAAoB,CAAC,GAAW,EAAA;AAC/C,IAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC;AAEM,SAAU,gBAAgB,CAAC,OAAe,EAAA;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACvC,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAA,UAAA,CAAY,CAAC;AAC5D;AAEM,SAAU,OAAO,CAAC,GAAW,EAAE,IAAuB,EAAA;IAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;QACtC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,KAAI;YACpF,IAAI,GAAG,EAAE;gBACR,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,SAAA,EAAY,MAAM,IAAI,GAAG,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;YAC5E;iBAAO;gBACN,OAAO,CAAC,MAAM,CAAC;YAChB;AACD,QAAA,CAAC,CAAC;AACH,IAAA,CAAC,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"gitUtils.js","sources":["../../src/git/gitUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGO,eAAe,UAAU,CAAC,OAAe,EAAA;AAC/C,IAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACvE,IAAA,OAAO,MAAM,CAAC,IAAI,EAAE;AACrB;AAEO,eAAe,UAAU,CAAC,OAAe,EAAE,GAAW,EAAA;AAC5D,IAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACzD,IAAA,OAAO,MAAM,CAAC,IAAI,EAAE;AACrB;AAEM,SAAU,oBAAoB,CAAC,GAAW,EAAA;AAC/C,IAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC;AAEM,SAAU,gBAAgB,CAAC,OAAe,EAAA;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACvC,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAA,UAAA,CAAY,CAAC;AAC5D;AAEM,SAAU,OAAO,CAAC,GAAW,EAAE,IAAuB,EAAA;IAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACtC,QAAA,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,KAAI;YACvG,IAAI,GAAG,EAAE;gBACR,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,SAAA,EAAY,MAAM,IAAI,GAAG,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;YAC5E;iBAAO;gBACN,OAAO,CAAC,MAAM,CAAC;YAChB;AACD,QAAA,CAAC,CAAC;AACH,IAAA,CAAC,CAAC;AACH;;;;"}
@@ -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":"AAAA,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;CAC1B;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;IAchE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAsCrE"}
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 Error(`Worktree is dirty, refusing remove: ${worktreePath}`);
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 Error(`Worktree is dirty, refusing checkout: ${worktreePath}`);
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 status = (await execGit(worktreePath, ['status', '--porcelain'])).trim();
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: status.length > 0,
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 status = (await execGit(entryPath, ['status', '--porcelain'])).trim();
76
- isDirty = status.length > 0;
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":"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"}
1
+ {"version":3,"file":"gitWorktreeManager.js","sources":["../../src/git/gitWorktreeManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gitWorktreeManager.test.d.ts.map
@@ -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"}
@@ -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>;
@@ -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,qFAAqF;IACrF,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;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"}
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"}
@@ -29,30 +29,40 @@ 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.
35
36
  // For worktree sessions, resolveViteFrom points to the main worktree's
36
37
  // project dir so both sessions share the same Vite.
37
38
  const { pathToFileURL } = await import('node:url');
38
- const resolveFrom = resolveViteFrom ?? project.cwd;
39
- const parentUrl = pathToFileURL(resolveFrom + '/').href;
40
- // Vitest's SSR transform replaces import.meta with a shim that lacks .resolve
39
+ const { createRequire } = await import('node:module');
40
+ // Resolve vite from the config file location (as importer) so it finds
41
+ // the correct node_modules even when the CLI is installed elsewhere.
42
+ // We always use createRequire because import.meta.resolve's second
43
+ // argument is ignored in some Node.js versions (it resolves from
44
+ // the calling file instead of the specified parentUrl).
45
+ const resolveFrom = resolveViteFrom ?? project.configFile ?? project.cwd;
46
+ const parentUrl = pathToFileURL(resolveFrom).href;
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}`);
41
51
  let viteUrl;
42
- if (typeof import.meta.resolve === 'function') {
43
- viteUrl = import.meta.resolve('vite', parentUrl);
44
- }
45
- else {
46
- const { createRequire } = await import('node:module');
52
+ try {
47
53
  viteUrl = pathToFileURL(createRequire(parentUrl).resolve('vite')).href;
48
54
  }
55
+ catch (e) {
56
+ log.log(`Failed to resolve vite from parentUrl=${parentUrl}: ${e}`);
57
+ throw e;
58
+ }
49
59
  log.trace(`Resolved vite: ${viteUrl}`);
50
60
  const { createServer } = await import(/* @vite-ignore */ viteUrl);
51
61
  // Build a custom Vite logger that strips ANSI escape codes and routes
52
62
  // through our ILogger so output stays clean in non-TTY terminals.
53
63
  const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '').replace(/\x1b\].*?\x07/g, '');
54
64
  const customLogger = {
55
- info: (msg) => log.info(stripAnsi(msg)),
65
+ info: (msg) => log.trace(stripAnsi(msg)),
56
66
  warn: (msg) => log.info(`[warn] ${stripAnsi(msg)}`),
57
67
  warnOnce: (msg) => log.info(`[warn] ${stripAnsi(msg)}`),
58
68
  error: (msg) => log.info(`[error] ${stripAnsi(msg)}`),
@@ -67,13 +77,22 @@ class ViteComponentExplorerHttpServer {
67
77
  const prevCwd = process.cwd();
68
78
  process.chdir(project.cwd);
69
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
+ }
70
89
  if (hmrAllowedPaths) {
71
90
  const matchers = hmrAllowedPaths.map(globToRegExp);
72
91
  plugins.push({
73
92
  name: 'component-explorer-hmr-filter',
74
93
  handleHotUpdate({ file, server: s }) {
75
94
  if (!matchers.some(re => re.test(file))) {
76
- log.info(`Full reload for: ${file}`);
95
+ log.debug(`Full reload for: ${file}`);
77
96
  s.ws.send({ type: 'full-reload' });
78
97
  return [];
79
98
  }
@@ -96,6 +115,7 @@ class ViteComponentExplorerHttpServer {
96
115
  }
97
116
  const resolvedUrls = server.resolvedUrls;
98
117
  const url = resolvedUrls?.local[0] ?? `http://localhost:${server.httpServer?.address()?.port}`;
118
+ log.debug(`Vite server started: ${url}`);
99
119
  const treeId = observableValue('sourceTreeId', new SourceTreeId(Date.now().toString()));
100
120
  server.watcher.on('change', () => {
101
121
  treeId.set(new SourceTreeId(Date.now().toString()), undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"httpServer.js","sources":["../src/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpServer.js","sources":["../src/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,15 +1,19 @@
1
1
  #!/usr/bin/env node
2
- import { Cli } from 'clipanion';
2
+ import __buildInfo from './_virtual/_build-info.js';
3
+ import { Cli, Builtins } from 'clipanion';
3
4
  import { ScreenshotCommand } from './commands/screenshotCommand.js';
4
5
  import { CompareCommand } from './commands/compareCommand.js';
5
6
  import { AcceptCommand } from './commands/acceptCommand.js';
6
7
  import { WatchCommand } from './commands/watchCommand.js';
7
8
  import { ServeCommand } from './commands/serveCommand.js';
8
9
  import { McpCommand } from './commands/mcpCommand.js';
10
+ import { CheckStabilityCommand } from './commands/checkStabilityCommand.js';
9
11
 
12
+ globalThis._buildInfo = __buildInfo;
13
+ const buildInfo = globalThis._buildInfo;
10
14
  const cli = new Cli({
11
15
  binaryLabel: 'component-explorer',
12
- binaryVersion: '0.1.0',
16
+ binaryVersion: buildInfo ? `${buildInfo.version} (${buildInfo.date})` : '0.0.0',
13
17
  binaryName: 'component-explorer',
14
18
  });
15
19
  cli.register(ScreenshotCommand);
@@ -18,6 +22,11 @@ cli.register(AcceptCommand);
18
22
  cli.register(WatchCommand);
19
23
  cli.register(ServeCommand);
20
24
  cli.register(McpCommand);
25
+ cli.register(CheckStabilityCommand);
26
+ cli.register(Builtins.HelpCommand);
27
+ cli.register(Builtins.DefinitionsCommand);
28
+ cli.register(Builtins.TokensCommand);
29
+ cli.register(Builtins.VersionCommand);
21
30
  const [, , ...args] = process.argv;
22
31
  await cli.runExit(args);
23
32
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAUA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;AACnB,IAAA,WAAW,EAAE,oBAAoB;AACjC,IAAA,aAAa,EAAE,OAAO;AACtB,IAAA,UAAU,EAAE,oBAAoB;AAChC,CAAA,CAAC;AAEF,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC/B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC5B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AAExB,MAAM,KAAI,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI;AACjC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;AAWA,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU;AAEvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;AACnB,IAAA,WAAW,EAAE,oBAAoB;AACjC,IAAA,aAAa,EAAE,SAAS,GAAG,GAAG,SAAS,CAAC,OAAO,CAAA,EAAA,EAAK,SAAS,CAAC,IAAI,GAAG,GAAG,OAAO;AAC/E,IAAA,UAAU,EAAE,oBAAoB;AAChC,CAAA,CAAC;AAEF,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC/B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC5B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC1B,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxB,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC;AAEnC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;AAClC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AACzC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;AACpC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;AAErC,MAAM,KAAI,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI;AACjC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC"}
package/dist/logger.d.ts CHANGED
@@ -24,4 +24,5 @@ export declare class ConsoleLogger implements ILogger {
24
24
  export declare const nullLogger: ILogger;
25
25
  /** Map a `-v` counter (0, 1, 2, …) to a `LogLevel`. */
26
26
  export declare function verbosityToLogLevel(verbosity: number): LogLevel;
27
+ export declare function logBuildInfo(logger: ILogger): void;
27
28
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IACnB,MAAM,IAAI;IACV,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;CACT;AAED,MAAM,WAAW,OAAO;IACvB,wBAAwB;IACxB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,qBAAa,aAAc,YAAW,OAAO;IAE3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,cAAc,EAC9B,MAAM,GAAE,QAAwB;IAGlD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAE1B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAK5B;AAED,eAAO,MAAM,UAAU,EAAE,OAKxB,CAAC;AAEF,uDAAuD;AACvD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAI/D"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IACnB,MAAM,IAAI;IACV,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;CACT;AAED,MAAM,WAAW,OAAO;IACvB,wBAAwB;IACxB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,qBAAa,aAAc,YAAW,OAAO;IAE3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,cAAc,EAC9B,MAAM,GAAE,QAAwB;IAGlD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAE1B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAK5B;AAED,eAAO,MAAM,UAAU,EAAE,OAKxB,CAAC;AAEF,uDAAuD;AACvD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAI/D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAKlD"}
package/dist/logger.js CHANGED
@@ -45,6 +45,12 @@ function verbosityToLogLevel(verbosity) {
45
45
  return LogLevel.debug;
46
46
  return LogLevel.trace;
47
47
  }
48
+ function logBuildInfo(logger) {
49
+ const info = globalThis._buildInfo;
50
+ if (info) {
51
+ logger.debug(`v${info.version} (built ${info.date})`);
52
+ }
53
+ }
48
54
 
49
- export { ConsoleLogger, LogLevel, nullLogger, verbosityToLogLevel };
55
+ export { ConsoleLogger, LogLevel, logBuildInfo, nullLogger, verbosityToLogLevel };
50
56
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sources":["../src/logger.ts"],"sourcesContent":[null],"names":[],"mappings":"IAAY;AAAZ,CAAA,UAAY,QAAQ,EAAA;AACnB,IAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACT,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACV,CAAC,EALW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;MAeP,aAAa,CAAA;AAEP,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AAHlB,IAAA,WAAA,CACkB,OAAe,EACf,OAA8B,EAC9B,MAAA,GAAmB,QAAQ,CAAC,IAAI,EAAA;QAFhC,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,MAAM,GAAN,MAAM;IACrB;IAEH,GAAG,CAAC,OAAe,EAAA,EAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjD,IAAA,IAAI,CAAC,OAAe,EAAA;QACnB,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,CAAI,CAAC;QACrD;IACD;AAEA,IAAA,KAAK,CAAC,OAAe,EAAA;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,CAAI,CAAC;QACrD;IACD;AAEA,IAAA,KAAK,CAAC,OAAe,EAAA;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,CAAI,CAAC;QACrD;IACD;AACA;AAEM,MAAM,UAAU,GAAY;AAClC,IAAA,GAAG,EAAE,MAAK,EAAE,CAAC;AACb,IAAA,IAAI,EAAE,MAAK,EAAE,CAAC;AACd,IAAA,KAAK,EAAE,MAAK,EAAE,CAAC;AACf,IAAA,KAAK,EAAE,MAAK,EAAE,CAAC;;AAGhB;AACM,SAAU,mBAAmB,CAAC,SAAiB,EAAA;IACpD,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI;IACxC,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK;IAC1C,OAAO,QAAQ,CAAC,KAAK;AACtB;;;;"}
1
+ {"version":3,"file":"logger.js","sources":["../src/logger.ts"],"sourcesContent":[null],"names":[],"mappings":"IAAY;AAAZ,CAAA,UAAY,QAAQ,EAAA;AACnB,IAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACT,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACV,CAAC,EALW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;MAeP,aAAa,CAAA;AAEP,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AAHlB,IAAA,WAAA,CACkB,OAAe,EACf,OAA8B,EAC9B,MAAA,GAAmB,QAAQ,CAAC,IAAI,EAAA;QAFhC,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,MAAM,GAAN,MAAM;IACrB;IAEH,GAAG,CAAC,OAAe,EAAA,EAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjD,IAAA,IAAI,CAAC,OAAe,EAAA;QACnB,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,CAAI,CAAC;QACrD;IACD;AAEA,IAAA,KAAK,CAAC,OAAe,EAAA;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,CAAI,CAAC;QACrD;IACD;AAEA,IAAA,KAAK,CAAC,OAAe,EAAA;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,CAAI,CAAC;QACrD;IACD;AACA;AAEM,MAAM,UAAU,GAAY;AAClC,IAAA,GAAG,EAAE,MAAK,EAAE,CAAC;AACb,IAAA,IAAI,EAAE,MAAK,EAAE,CAAC;AACd,IAAA,KAAK,EAAE,MAAK,EAAE,CAAC;AACf,IAAA,KAAK,EAAE,MAAK,EAAE,CAAC;;AAGhB;AACM,SAAU,mBAAmB,CAAC,SAAiB,EAAA;IACpD,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI;IACxC,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK;IAC1C,OAAO,QAAQ,CAAC,KAAK;AACtB;AAEM,SAAU,YAAY,CAAC,MAAe,EAAA;AAC3C,IAAA,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU;IAClC,IAAI,IAAI,EAAE;AACT,QAAA,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,QAAA,EAAW,IAAI,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;IACtD;AACD;;;;"}