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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +177 -0
  2. package/dist/commands/acceptCommand.d.ts +2 -1
  3. package/dist/commands/acceptCommand.d.ts.map +1 -1
  4. package/dist/commands/acceptCommand.js +12 -6
  5. package/dist/commands/acceptCommand.js.map +1 -1
  6. package/dist/commands/compareCommand.d.ts +5 -1
  7. package/dist/commands/compareCommand.d.ts.map +1 -1
  8. package/dist/commands/compareCommand.js +43 -71
  9. package/dist/commands/compareCommand.js.map +1 -1
  10. package/dist/commands/mcpCommand.d.ts +10 -0
  11. package/dist/commands/mcpCommand.d.ts.map +1 -0
  12. package/dist/commands/mcpCommand.js +58 -0
  13. package/dist/commands/mcpCommand.js.map +1 -0
  14. package/dist/commands/screenshotCommand.d.ts +7 -2
  15. package/dist/commands/screenshotCommand.d.ts.map +1 -1
  16. package/dist/commands/screenshotCommand.js +61 -14
  17. package/dist/commands/screenshotCommand.js.map +1 -1
  18. package/dist/commands/serveCommand.d.ts +19 -0
  19. package/dist/commands/serveCommand.d.ts.map +1 -0
  20. package/dist/commands/serveCommand.js +194 -0
  21. package/dist/commands/serveCommand.js.map +1 -0
  22. package/dist/commands/watchCommand.d.ts +1 -2
  23. package/dist/commands/watchCommand.d.ts.map +1 -1
  24. package/dist/commands/watchCommand.js +23 -19
  25. package/dist/commands/watchCommand.js.map +1 -1
  26. package/dist/comparison.d.ts +60 -0
  27. package/dist/comparison.d.ts.map +1 -0
  28. package/dist/comparison.js +250 -0
  29. package/dist/comparison.js.map +1 -0
  30. package/dist/component-explorer-config.schema.json +183 -0
  31. package/dist/componentExplorer.d.ts +44 -2
  32. package/dist/componentExplorer.d.ts.map +1 -1
  33. package/dist/componentExplorer.js +98 -16
  34. package/dist/componentExplorer.js.map +1 -1
  35. package/dist/daemon/DaemonContext.d.ts +4 -0
  36. package/dist/daemon/DaemonContext.d.ts.map +1 -0
  37. package/dist/daemon/DaemonService.d.ts +188 -0
  38. package/dist/daemon/DaemonService.d.ts.map +1 -0
  39. package/dist/daemon/DaemonService.js +610 -0
  40. package/dist/daemon/DaemonService.js.map +1 -0
  41. package/dist/daemon/approvalStore.d.ts +51 -0
  42. package/dist/daemon/approvalStore.d.ts.map +1 -0
  43. package/dist/daemon/approvalStore.js +58 -0
  44. package/dist/daemon/approvalStore.js.map +1 -0
  45. package/dist/daemon/lifecycle.d.ts +13 -0
  46. package/dist/daemon/lifecycle.d.ts.map +1 -0
  47. package/dist/daemon/lifecycle.js +68 -0
  48. package/dist/daemon/lifecycle.js.map +1 -0
  49. package/dist/daemon/pipeClient.d.ts +9 -0
  50. package/dist/daemon/pipeClient.d.ts.map +1 -0
  51. package/dist/daemon/pipeClient.js +111 -0
  52. package/dist/daemon/pipeClient.js.map +1 -0
  53. package/dist/daemon/pipeName.d.ts +2 -0
  54. package/dist/daemon/pipeName.d.ts.map +1 -0
  55. package/dist/daemon/pipeName.js +14 -0
  56. package/dist/daemon/pipeName.js.map +1 -0
  57. package/dist/daemon/pipeServer.d.ts +4 -0
  58. package/dist/daemon/pipeServer.d.ts.map +1 -0
  59. package/dist/daemon/pipeServer.js +25 -0
  60. package/dist/daemon/pipeServer.js.map +1 -0
  61. package/dist/daemon/types.d.ts +12 -0
  62. package/dist/daemon/types.d.ts.map +1 -0
  63. package/dist/dependencyInstaller.js +1 -1
  64. package/dist/dependencyInstaller.js.map +1 -1
  65. package/dist/explorerSession.d.ts +5 -3
  66. package/dist/explorerSession.d.ts.map +1 -1
  67. package/dist/explorerSession.js +6 -3
  68. package/dist/explorerSession.js.map +1 -1
  69. package/dist/external/vscode-observables/observables/dist/disposables.js +24 -1
  70. package/dist/external/vscode-observables/observables/dist/disposables.js.map +1 -1
  71. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js +1 -4
  72. package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -1
  73. package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js +3 -0
  74. package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -1
  75. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js +2 -5
  76. package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +1 -1
  77. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js +30 -6
  78. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -1
  79. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js +1 -1
  80. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -1
  81. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js +12 -1
  82. package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -1
  83. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js +55 -0
  84. package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
  85. package/dist/formatValue.d.ts +2 -0
  86. package/dist/formatValue.d.ts.map +1 -0
  87. package/dist/formatValue.js +96 -0
  88. package/dist/formatValue.js.map +1 -0
  89. package/dist/formatValue.test.d.ts +2 -0
  90. package/dist/formatValue.test.d.ts.map +1 -0
  91. package/dist/git/gitUtils.js +1 -1
  92. package/dist/git/gitUtils.js.map +1 -1
  93. package/dist/httpServer.d.ts +8 -7
  94. package/dist/httpServer.d.ts.map +1 -1
  95. package/dist/httpServer.js +59 -12
  96. package/dist/httpServer.js.map +1 -1
  97. package/dist/index.js +4 -0
  98. package/dist/index.js.map +1 -1
  99. package/dist/mcp/McpServer.d.ts +58 -0
  100. package/dist/mcp/McpServer.d.ts.map +1 -0
  101. package/dist/mcp/McpServer.js +820 -0
  102. package/dist/mcp/McpServer.js.map +1 -0
  103. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js +137 -0
  104. package/dist/packages/simple-api/dist/chunk-3R7GHWBM.js.map +1 -0
  105. package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js +27 -0
  106. package/dist/packages/simple-api/dist/chunk-Q24JOMNK.js.map +1 -0
  107. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js +24 -0
  108. package/dist/packages/simple-api/dist/chunk-SGBCNXYH.js.map +1 -0
  109. package/dist/packages/simple-api/dist/express.js +104 -0
  110. package/dist/packages/simple-api/dist/express.js.map +1 -0
  111. package/dist/resolveProject.d.ts +21 -0
  112. package/dist/resolveProject.d.ts.map +1 -0
  113. package/dist/resolveProject.js +39 -0
  114. package/dist/resolveProject.js.map +1 -0
  115. package/dist/utils.d.ts +24 -0
  116. package/dist/utils.d.ts.map +1 -0
  117. package/dist/utils.js +50 -0
  118. package/dist/utils.js.map +1 -0
  119. package/dist/watchConfig.d.ts +41 -0
  120. package/dist/watchConfig.d.ts.map +1 -1
  121. package/dist/watchConfig.js +41 -19
  122. package/dist/watchConfig.js.map +1 -1
  123. package/package.json +16 -6
  124. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js +0 -72
  125. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/debuggerRpc.js.map +0 -1
  126. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js +0 -447
  127. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/devToolsLogger.js.map +0 -1
  128. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js +0 -64
  129. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/rpc.js.map +0 -1
  130. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js +0 -52
  131. package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugger/utils.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ export interface ApprovalInfo {
2
+ readonly fixtureId: string;
3
+ readonly originalHash: string;
4
+ readonly modifiedHash: string;
5
+ readonly comment: string;
6
+ readonly approvedAt: string;
7
+ }
8
+ export interface ApprovalStore {
9
+ approve(args: {
10
+ fixtureId: string;
11
+ originalHash: string;
12
+ modifiedHash: string;
13
+ comment: string;
14
+ }): void;
15
+ revoke(args: {
16
+ fixtureId: string;
17
+ originalHash: string;
18
+ modifiedHash: string;
19
+ }): void;
20
+ lookup(args: {
21
+ fixtureId: string;
22
+ originalHash: string;
23
+ modifiedHash: string;
24
+ }): ApprovalInfo | undefined;
25
+ list(fixtureId?: string): ApprovalInfo[];
26
+ }
27
+ export declare class FileApprovalStore implements ApprovalStore {
28
+ private readonly _filePath;
29
+ private _approvals;
30
+ constructor(_filePath: string);
31
+ approve(args: {
32
+ fixtureId: string;
33
+ originalHash: string;
34
+ modifiedHash: string;
35
+ comment: string;
36
+ }): void;
37
+ revoke(args: {
38
+ fixtureId: string;
39
+ originalHash: string;
40
+ modifiedHash: string;
41
+ }): void;
42
+ lookup(args: {
43
+ fixtureId: string;
44
+ originalHash: string;
45
+ modifiedHash: string;
46
+ }): ApprovalInfo | undefined;
47
+ list(fixtureId?: string): ApprovalInfo[];
48
+ private _load;
49
+ private _save;
50
+ }
51
+ //# sourceMappingURL=approvalStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvalStore.d.ts","sourceRoot":"","sources":["../../src/daemon/approvalStore.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACxG,MAAM,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtF,MAAM,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY,GAAG,SAAS,CAAC;IAC1G,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;CACzC;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAG1C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,UAAU,CAAsB;gBAEX,SAAS,EAAE,MAAM;IAI9C,OAAO,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYvG,MAAM,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYrF,MAAM,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY,GAAG,SAAS;IAQzG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAOxC,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,KAAK;CAKb"}
@@ -0,0 +1,58 @@
1
+ import * as fs from 'node:fs';
2
+
3
+ class FileApprovalStore {
4
+ _filePath;
5
+ _approvals = [];
6
+ constructor(_filePath) {
7
+ this._filePath = _filePath;
8
+ this._load();
9
+ }
10
+ approve(args) {
11
+ this.revoke(args);
12
+ this._approvals.push({
13
+ fixtureId: args.fixtureId,
14
+ originalHash: args.originalHash,
15
+ modifiedHash: args.modifiedHash,
16
+ comment: args.comment,
17
+ approvedAt: new Date().toISOString(),
18
+ });
19
+ this._save();
20
+ }
21
+ revoke(args) {
22
+ const before = this._approvals.length;
23
+ this._approvals = this._approvals.filter(a => !(a.fixtureId === args.fixtureId
24
+ && a.originalHash === args.originalHash
25
+ && a.modifiedHash === args.modifiedHash));
26
+ if (this._approvals.length !== before) {
27
+ this._save();
28
+ }
29
+ }
30
+ lookup(args) {
31
+ return this._approvals.find(a => a.fixtureId === args.fixtureId
32
+ && a.originalHash === args.originalHash
33
+ && a.modifiedHash === args.modifiedHash);
34
+ }
35
+ list(fixtureId) {
36
+ if (fixtureId === undefined) {
37
+ return [...this._approvals];
38
+ }
39
+ return this._approvals.filter(a => a.fixtureId === fixtureId);
40
+ }
41
+ _load() {
42
+ try {
43
+ const raw = fs.readFileSync(this._filePath, 'utf-8');
44
+ this._approvals = JSON.parse(raw);
45
+ }
46
+ catch {
47
+ this._approvals = [];
48
+ }
49
+ }
50
+ _save() {
51
+ const dir = this._filePath.replace(/[/\\][^/\\]+$/, '');
52
+ fs.mkdirSync(dir, { recursive: true });
53
+ fs.writeFileSync(this._filePath, JSON.stringify(this._approvals, null, 2));
54
+ }
55
+ }
56
+
57
+ export { FileApprovalStore };
58
+ //# sourceMappingURL=approvalStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvalStore.js","sources":["../../src/daemon/approvalStore.ts"],"sourcesContent":[null],"names":[],"mappings":";;MAiBa,iBAAiB,CAAA;AAGA,IAAA,SAAA;IAFrB,UAAU,GAAmB,EAAE;AAEvC,IAAA,WAAA,CAA6B,SAAiB,EAAA;QAAjB,IAAA,CAAA,SAAS,GAAT,SAAS;QACrC,IAAI,CAAC,KAAK,EAAE;IACb;AAEA,IAAA,OAAO,CAAC,IAAwF,EAAA;AAC/F,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACpC,SAAA,CAAC;QACF,IAAI,CAAC,KAAK,EAAE;IACb;AAEA,IAAA,MAAM,CAAC,IAAuE,EAAA;AAC7E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CACvC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC;AACxB,eAAA,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC;eACxB,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CAAC,CACzC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE;YACtC,IAAI,CAAC,KAAK,EAAE;QACb;IACD;AAEA,IAAA,MAAM,CAAC,IAAuE,EAAA;AAC7E,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAC1B,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC;AACtB,eAAA,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC;AACxB,eAAA,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CACxC;IACF;AAEA,IAAA,IAAI,CAAC,SAAkB,EAAA;AACtB,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AAC5B,YAAA,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B;AACA,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;IAC9D;IAEQ,KAAK,GAAA;AACZ,QAAA,IAAI;AACH,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;YACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAClC;AAAE,QAAA,MAAM;AACP,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QACrB;IACD;IAEQ,KAAK,GAAA;AACZ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;QACvD,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACtC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3E;AACA;;;;"}
@@ -0,0 +1,13 @@
1
+ import type { ProxyApiClient } from '@hediet/simple-api/client';
2
+ import type { DaemonApiType } from './DaemonService.js';
3
+ import { type ILogger } from '../logger.js';
4
+ export interface ConnectOptions {
5
+ readonly logger?: ILogger;
6
+ readonly clientName?: string;
7
+ }
8
+ export declare function tryConnect(pipeName: string, options?: ConnectOptions): Promise<ProxyApiClient<DaemonApiType> | undefined>;
9
+ export declare function waitForDaemon(pipeName: string, options: {
10
+ timeoutMs: number;
11
+ } & ConnectOptions): Promise<ProxyApiClient<DaemonApiType>>;
12
+ export declare function ensureDaemon(configPath: string, options?: ConnectOptions): Promise<ProxyApiClient<DaemonApiType>>;
13
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AAOxD,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,CAwBzH;AAED,wBAAsB,aAAa,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,GAC7C,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAexC;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAkBvH"}
@@ -0,0 +1,68 @@
1
+ import http__default from 'node:http';
2
+ import { spawn } from 'node:child_process';
3
+ import { fileURLToPath } from 'node:url';
4
+ import * as path from 'node:path';
5
+ import { createPipeClient } from './pipeClient.js';
6
+ import { daemonPipeName } from './pipeName.js';
7
+ import { nullLogger } from '../logger.js';
8
+
9
+ const _cliEntryPoint = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../index.js');
10
+ function tryConnect(pipeName, options) {
11
+ const logger = options?.logger ?? nullLogger;
12
+ logger.debug(`tryConnect: ${pipeName}`);
13
+ return new Promise(resolve => {
14
+ const req = http__default.request({ socketPath: pipeName, path: '/api/sessions', method: 'POST', headers: { 'Content-Type': 'application/json' } }, (res) => {
15
+ let data = '';
16
+ res.on('data', chunk => data += chunk);
17
+ res.on('end', () => {
18
+ if (res.statusCode === 200) {
19
+ logger.debug(`tryConnect: success`);
20
+ resolve(createPipeClient(pipeName, options));
21
+ }
22
+ else {
23
+ logger.debug(`tryConnect: failed (status ${res.statusCode})`);
24
+ resolve(undefined);
25
+ }
26
+ });
27
+ });
28
+ req.on('error', (err) => {
29
+ logger.debug(`tryConnect: failed (${err.message})`);
30
+ resolve(undefined);
31
+ });
32
+ req.write('{}');
33
+ req.end();
34
+ });
35
+ }
36
+ async function waitForDaemon(pipeName, options) {
37
+ const logger = options.logger ?? nullLogger;
38
+ const deadline = Date.now() + options.timeoutMs;
39
+ logger.debug(`waitForDaemon: polling (timeout ${options.timeoutMs}ms)`);
40
+ let attempt = 0;
41
+ while (Date.now() < deadline) {
42
+ attempt++;
43
+ const client = await tryConnect(pipeName, options);
44
+ if (client) {
45
+ logger.debug(`waitForDaemon: connected after ${attempt} attempt(s)`);
46
+ return client;
47
+ }
48
+ await new Promise(r => setTimeout(r, 200));
49
+ }
50
+ throw new Error(`Daemon did not start within ${options.timeoutMs}ms`);
51
+ }
52
+ async function ensureDaemon(configPath, options) {
53
+ const logger = options?.logger ?? nullLogger;
54
+ const pipeName = daemonPipeName(configPath);
55
+ const existing = await tryConnect(pipeName, options);
56
+ if (existing) {
57
+ return existing;
58
+ }
59
+ logger.debug(`ensureDaemon: spawning child process`);
60
+ const args = [_cliEntryPoint, 'serve', '--project', configPath];
61
+ logger.trace(`ensureDaemon: spawn args: ${args.join(' ')}`);
62
+ const child = spawn(process.execPath, args, { detached: true, stdio: 'ignore', windowsHide: true });
63
+ child.unref();
64
+ return waitForDaemon(pipeName, { timeoutMs: 30_000, ...options });
65
+ }
66
+
67
+ export { ensureDaemon, tryConnect, waitForDaemon };
68
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sources":["../../src/daemon/lifecycle.ts"],"sourcesContent":[null],"names":["http"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ProxyApiClient } from '@hediet/simple-api/client';
2
+ import type { DaemonApiType } from './DaemonService.js';
3
+ import { type ILogger } from '../logger.js';
4
+ export interface PipeClientOptions {
5
+ readonly logger?: ILogger;
6
+ readonly clientName?: string;
7
+ }
8
+ export declare function createPipeClient(pipeName: string, options?: PipeClientOptions): ProxyApiClient<DaemonApiType>;
9
+ //# sourceMappingURL=pipeClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeClient.d.ts","sourceRoot":"","sources":["../../src/daemon/pipeClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AAGxD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC,aAAa,CAAC,CAoG7G"}
@@ -0,0 +1,111 @@
1
+ import http__default from 'node:http';
2
+ import { ProxyApiClient } from '../packages/simple-api/dist/chunk-Q24JOMNK.js';
3
+ import { AsyncStream } from '../packages/simple-api/dist/chunk-SGBCNXYH.js';
4
+ import 'zod';
5
+ import { nullLogger } from '../logger.js';
6
+ import { formatValue } from '../formatValue.js';
7
+
8
+ function createPipeClient(pipeName, options) {
9
+ const logger = options?.logger ?? nullLogger;
10
+ const clientName = options?.clientName ?? 'unknown';
11
+ return new ProxyApiClient(async (method, arg) => {
12
+ const body = JSON.stringify(arg ?? {});
13
+ logger.debug(`Daemon call: ${method} args=${formatValue(arg)}`);
14
+ return new Promise((resolve, reject) => {
15
+ const req = http__default.request({
16
+ socketPath: pipeName,
17
+ path: `/api/${method}`,
18
+ method: 'POST',
19
+ headers: {
20
+ 'Content-Type': 'application/json',
21
+ 'Content-Length': Buffer.byteLength(body),
22
+ 'X-Client-Name': clientName,
23
+ },
24
+ }, (res) => {
25
+ const contentType = res.headers['content-type'] ?? '';
26
+ if (contentType.startsWith('application/jsonl')) {
27
+ resolve(AsyncStream.fromFn(() => {
28
+ let buffer = '';
29
+ const pending = [];
30
+ let resolve;
31
+ let done = false;
32
+ res.on('data', (chunk) => {
33
+ buffer += chunk.toString();
34
+ let eol;
35
+ while ((eol = buffer.indexOf('\n')) >= 0) {
36
+ const line = buffer.slice(0, eol).trim();
37
+ buffer = buffer.slice(eol + 1);
38
+ if (line) {
39
+ const parsed = JSON.parse(line);
40
+ if (resolve) {
41
+ const r = resolve;
42
+ resolve = undefined;
43
+ r({ value: parsed, done: false });
44
+ }
45
+ else {
46
+ pending.push(parsed);
47
+ }
48
+ }
49
+ }
50
+ });
51
+ res.on('end', () => {
52
+ if (buffer.trim()) {
53
+ pending.push(JSON.parse(buffer.trim()));
54
+ }
55
+ done = true;
56
+ if (resolve) {
57
+ const r = resolve;
58
+ resolve = undefined;
59
+ r({ value: undefined, done: true });
60
+ }
61
+ });
62
+ res.on('error', (err) => {
63
+ logger.trace(`Daemon call: ${method} stream error: ${err.message}`);
64
+ done = true;
65
+ if (resolve) {
66
+ const r = resolve;
67
+ resolve = undefined;
68
+ r({ value: undefined, done: true });
69
+ }
70
+ });
71
+ return {
72
+ next() {
73
+ if (pending.length > 0) {
74
+ return Promise.resolve({ value: pending.shift(), done: false });
75
+ }
76
+ if (done) {
77
+ return Promise.resolve({ value: undefined, done: true });
78
+ }
79
+ return new Promise(r => { resolve = r; });
80
+ },
81
+ };
82
+ }));
83
+ }
84
+ else {
85
+ let data = '';
86
+ res.on('data', chunk => data += chunk);
87
+ res.on('end', () => {
88
+ if (res.statusCode !== 200) {
89
+ logger.debug(`Daemon call: ${method} error (${res.statusCode})`);
90
+ reject(new Error(`Daemon error (${res.statusCode}): ${data}`));
91
+ }
92
+ else {
93
+ const parsed = data ? JSON.parse(data) : null;
94
+ logger.debug(`Daemon call: ${method} result=${formatValue(parsed)}`);
95
+ resolve(parsed);
96
+ }
97
+ });
98
+ }
99
+ });
100
+ req.on('error', (err) => {
101
+ logger.trace(`Daemon call: ${method} connection error: ${err.message}`);
102
+ reject(err);
103
+ });
104
+ req.write(body);
105
+ req.end();
106
+ });
107
+ });
108
+ }
109
+
110
+ export { createPipeClient };
111
+ //# sourceMappingURL=pipeClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeClient.js","sources":["../../src/daemon/pipeClient.ts"],"sourcesContent":[null],"names":["http"],"mappings":";;;;;;;AAYM,SAAU,gBAAgB,CAAC,QAAgB,EAAE,OAA2B,EAAA;AAC7E,IAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,UAAU;AAC5C,IAAA,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,SAAS;IACnD,OAAO,IAAI,cAAc,CAAC,OAAO,MAAM,EAAE,GAAG,KAAI;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC;AACtC,QAAA,MAAM,CAAC,KAAK,CAAC,CAAA,aAAA,EAAgB,MAAM,CAAA,MAAA,EAAS,WAAW,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;QAC/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACtC,YAAA,MAAM,GAAG,GAAGA,aAAI,CAAC,OAAO,CAAC;AACxB,gBAAA,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE;AACtB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,OAAO,EAAE;AACR,oBAAA,cAAc,EAAE,kBAAkB;AAClC,oBAAA,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACzC,oBAAA,eAAe,EAAE,UAAU;AAC3B,iBAAA;aACD,EAAE,CAAC,GAAG,KAAI;gBACV,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;AAErD,gBAAA,IAAI,WAAW,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;AAChD,oBAAA,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAK;wBAC/B,IAAI,MAAM,GAAG,EAAE;wBACf,MAAM,OAAO,GAAc,EAAE;AAC7B,wBAAA,IAAI,OAA+D;wBACnE,IAAI,IAAI,GAAG,KAAK;wBAEhB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,KAAI;AAChC,4BAAA,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC1B,4BAAA,IAAI,GAAW;AACf,4BAAA,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACzC,gCAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;gCACxC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gCAC9B,IAAI,IAAI,EAAE;oCACT,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oCAC/B,IAAI,OAAO,EAAE;wCACZ,MAAM,CAAC,GAAG,OAAO;wCACjB,OAAO,GAAG,SAAS;wCACnB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oCAClC;yCAAO;AACN,wCAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;oCACrB;gCACD;4BACD;AACD,wBAAA,CAAC,CAAC;AAEF,wBAAA,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAK;AAClB,4BAAA,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE;AAClB,gCAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;4BACxC;4BACA,IAAI,GAAG,IAAI;4BACX,IAAI,OAAO,EAAE;gCACZ,MAAM,CAAC,GAAG,OAAO;gCACjB,OAAO,GAAG,SAAS;gCACnB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;4BACpC;AACD,wBAAA,CAAC,CAAC;wBAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAI;4BAAQ,MAAM,CAAC,KAAK,CAAC,CAAA,aAAA,EAAgB,MAAM,CAAA,eAAA,EAAkB,GAAG,CAAC,OAAO,CAAA,CAAE,CAAC;4BAAQ,IAAI,GAAG,IAAI;4BACrH,IAAI,OAAO,EAAE;gCACZ,MAAM,CAAC,GAAG,OAAO;gCACjB,OAAO,GAAG,SAAS;gCACnB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;4BACpC;AACD,wBAAA,CAAC,CAAC;wBAEF,OAAO;4BACN,IAAI,GAAA;AACH,gCAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,oCAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gCACjE;gCACA,IAAI,IAAI,EAAE;AACT,oCAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gCACzD;AACA,gCAAA,OAAO,IAAI,OAAO,CAAC,CAAC,IAAG,EAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC1C,CAAC;yBACD;oBACF,CAAC,CAAC,CAAC;gBACJ;qBAAO;oBACN,IAAI,IAAI,GAAG,EAAE;AACb,oBAAA,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;AACtC,oBAAA,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAK;AAClB,wBAAA,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;4BAC3B,MAAM,CAAC,KAAK,CAAC,CAAA,aAAA,EAAgB,MAAM,CAAA,QAAA,EAAW,GAAG,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC;AAChE,4BAAA,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,GAAG,CAAC,UAAU,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,CAAC,CAAC;wBAC/D;6BAAO;AACN,4BAAA,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI;AAC7C,4BAAA,MAAM,CAAC,KAAK,CAAC,CAAA,aAAA,EAAgB,MAAM,CAAA,QAAA,EAAW,WAAW,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;4BACpE,OAAO,CAAC,MAAM,CAAC;wBAChB;AACD,oBAAA,CAAC,CAAC;gBACH;AACD,YAAA,CAAC,CAAC;YACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAI;gBACvB,MAAM,CAAC,KAAK,CAAC,CAAA,aAAA,EAAgB,MAAM,CAAA,mBAAA,EAAsB,GAAG,CAAC,OAAO,CAAA,CAAE,CAAC;gBACvE,MAAM,CAAC,GAAG,CAAC;AACZ,YAAA,CAAC,CAAC;AACF,YAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACf,GAAG,CAAC,GAAG,EAAE;AACV,QAAA,CAAC,CAAC;AACH,IAAA,CAAC,CAAC;AACH;;;;"}
@@ -0,0 +1,2 @@
1
+ export declare function daemonPipeName(configPath: string): string;
2
+ //# sourceMappingURL=pipeName.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeName.d.ts","sourceRoot":"","sources":["../../src/daemon/pipeName.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMzD"}
@@ -0,0 +1,14 @@
1
+ import { createHash } from 'node:crypto';
2
+ import * as os from 'node:os';
3
+ import * as path from 'node:path';
4
+
5
+ function daemonPipeName(configPath) {
6
+ const absPath = path.resolve(configPath);
7
+ const h = createHash('sha256').update(absPath).digest('hex').slice(0, 16);
8
+ return process.platform === 'win32'
9
+ ? `\\\\.\\pipe\\component-explorer-${h}`
10
+ : path.join(os.tmpdir(), `component-explorer-${h}.sock`);
11
+ }
12
+
13
+ export { daemonPipeName };
14
+ //# sourceMappingURL=pipeName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeName.js","sources":["../../src/daemon/pipeName.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIM,SAAU,cAAc,CAAC,UAAkB,EAAA;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACxC,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACzE,IAAA,OAAO,OAAO,CAAC,QAAQ,KAAK;UACzB,CAAA,gCAAA,EAAmC,CAAC,CAAA;AACtC,UAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAA,mBAAA,EAAsB,CAAC,CAAA,KAAA,CAAO,CAAC;AAC1D;;;;"}
@@ -0,0 +1,4 @@
1
+ import http from 'node:http';
2
+ import type { DaemonService } from './DaemonService.js';
3
+ export declare function startPipeServer(pipeName: string, service: DaemonService): Promise<http.Server>;
4
+ //# sourceMappingURL=pipeServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeServer.d.ts","sourceRoot":"","sources":["../../src/daemon/pipeServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,wBAAsB,eAAe,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAetB"}
@@ -0,0 +1,25 @@
1
+ import http__default from 'node:http';
2
+ import * as fs from 'node:fs';
3
+ import express from 'express';
4
+ import { createApiRouter } from '../packages/simple-api/dist/express.js';
5
+
6
+ async function startPipeServer(pipeName, service) {
7
+ if (process.platform !== 'win32') {
8
+ try {
9
+ fs.unlinkSync(pipeName);
10
+ }
11
+ catch { /* may not exist */ }
12
+ }
13
+ const app = express();
14
+ app.use('/api', createApiRouter(service.api, {
15
+ contextFactory: (req) => ({
16
+ clientName: req.headers['x-client-name'] ?? 'unknown',
17
+ }),
18
+ }));
19
+ const server = http__default.createServer(app);
20
+ await new Promise(resolve => server.listen(pipeName, resolve));
21
+ return server;
22
+ }
23
+
24
+ export { startPipeServer };
25
+ //# sourceMappingURL=pipeServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeServer.js","sources":["../../src/daemon/pipeServer.ts"],"sourcesContent":[null],"names":["http"],"mappings":";;;;;AAOO,eAAe,eAAe,CACpC,QAAgB,EAChB,OAAsB,EAAA;AAEtB,IAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;AACjC,QAAA,IAAI;AAAE,YAAA,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE;AAAE,QAAA,MAAM,sBAAsB;IAC9D;AAEA,IAAA,MAAM,GAAG,GAAG,OAAO,EAAE;IACrB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE;AAC5C,QAAA,cAAc,EAAE,CAAC,GAAG,MAAqB;YACxC,UAAU,EAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAY,IAAI,SAAS;SACjE,CAAC;AACF,KAAA,CAAC,CAAC;IAEH,MAAM,MAAM,GAAGA,aAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACrC,IAAA,MAAM,IAAI,OAAO,CAAO,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpE,IAAA,OAAO,MAAM;AACd;;;;"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared types for the daemon API.
3
+ * These are imported by both the CLI (server) and the explorer (client).
4
+ */
5
+ import type { DaemonService } from './DaemonService.js';
6
+ /**
7
+ * The typed API interface for the daemon, extracted from DaemonService.
8
+ * Use this with `createFetchClient<DaemonApiType>()` for type-safe client calls.
9
+ */
10
+ export type DaemonApiType = DaemonService['api']['TMethods'];
11
+ export type { DaemonEvent, SessionInfo } from './DaemonService.js';
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/daemon/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;AAG7D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
@@ -9,7 +9,7 @@ async function installDependencies(worktreePath, config, logger) {
9
9
  const command = resolveCommand(worktreePath, config);
10
10
  logger.log(`Installing dependencies: ${command}`);
11
11
  await new Promise((resolve, reject) => {
12
- const proc = exec(command, { cwd: worktreePath, encoding: 'utf-8' }, (err) => {
12
+ const proc = exec(command, { cwd: worktreePath, encoding: 'utf-8', windowsHide: true }, (err) => {
13
13
  if (err) {
14
14
  reject(new Error(`Dependency install failed: ${err.message}`));
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dependencyInstaller.js","sources":["../src/dependencyInstaller.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMO,eAAe,mBAAmB,CACxC,YAAoB,EACpB,MAA6B,EAC7B,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;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,KAAI;YAC5E,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,MAA6B,EAAA;AAE7B,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;;;;"}
1
+ {"version":3,"file":"dependencyInstaller.js","sources":["../src/dependencyInstaller.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMO,eAAe,mBAAmB,CACxC,YAAoB,EACpB,MAA6B,EAC7B,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,MAA6B,EAAA;AAE7B,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;;;;"}
@@ -1,15 +1,17 @@
1
1
  import { type ComponentExplorer } from './componentExplorer.js';
2
2
  import type { BrowserPageFactory } from './browserPage.js';
3
- import { type ComponentExplorerHttpServerFactory } from './httpServer.js';
3
+ import { type ComponentExplorerHttpServerFactory, type ViteServerOptions } from './httpServer.js';
4
+ import type { IObservable } from '@vscode/observables';
5
+ import type { SourceTreeId } from './sourceTreeId.js';
4
6
  import type { ViteProjectRef } from './viteProjectRef.js';
5
- import type { ILogger } from './logger.js';
6
7
  export declare class ExplorerSession {
7
8
  readonly name: string;
8
9
  readonly explorer: ComponentExplorer;
9
10
  private readonly _server;
10
11
  private constructor();
11
- static create(name: string, project: ViteProjectRef, serverFactory: ComponentExplorerHttpServerFactory, browserFactory: BrowserPageFactory, logger: ILogger, resolveViteFrom?: string): Promise<ExplorerSession>;
12
+ static create(name: string, project: ViteProjectRef, serverFactory: ComponentExplorerHttpServerFactory, browserFactory: BrowserPageFactory, options?: ViteServerOptions): Promise<ExplorerSession>;
12
13
  get serverUrl(): string;
14
+ get sourceTreeId(): IObservable<SourceTreeId>;
13
15
  dispose(): Promise<void>;
14
16
  }
15
17
  //# sourceMappingURL=explorerSession.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"explorerSession.d.ts","sourceRoot":"","sources":["../src/explorerSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAoC,KAAK,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,eAAe;IAE1B,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHzB,OAAO;WAMM,MAAM,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,aAAa,EAAE,kCAAkC,EACjD,cAAc,EAAE,kBAAkB,EAClC,MAAM,EAAE,OAAO,EACf,eAAe,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC;IAM3B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI9B"}
1
+ {"version":3,"file":"explorerSession.d.ts","sourceRoot":"","sources":["../src/explorerSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAoC,KAAK,kCAAkC,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpI,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,qBAAa,eAAe;IAE1B,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHzB,OAAO;WAMM,MAAM,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,aAAa,EAAE,kCAAkC,EACjD,cAAc,EAAE,kBAAkB,EAClC,OAAO,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,eAAe,CAAC;IAM3B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,CAE5C;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI9B"}
@@ -9,14 +9,17 @@ class ExplorerSession {
9
9
  this.explorer = explorer;
10
10
  this._server = _server;
11
11
  }
12
- static async create(name, project, serverFactory, browserFactory, logger, resolveViteFrom) {
13
- const server = await serverFactory.createViteServer(project, resolveViteFrom, logger);
14
- const explorer = new BrowserComponentExplorer(browserFactory, server, logger);
12
+ static async create(name, project, serverFactory, browserFactory, options) {
13
+ const server = await serverFactory.createViteServer(project, options);
14
+ const explorer = new BrowserComponentExplorer(browserFactory, server, options?.logger);
15
15
  return new ExplorerSession(name, explorer, server);
16
16
  }
17
17
  get serverUrl() {
18
18
  return this._server.url;
19
19
  }
20
+ get sourceTreeId() {
21
+ return this._server.sourceTreeId;
22
+ }
20
23
  async dispose() {
21
24
  await this.explorer.dispose();
22
25
  await this._server.dispose();
@@ -1 +1 @@
1
- {"version":3,"file":"explorerSession.js","sources":["../src/explorerSession.ts"],"sourcesContent":[null],"names":[],"mappings":";;MAMa,eAAe,CAAA;AAEjB,IAAA,IAAA;AACA,IAAA,QAAA;AACQ,IAAA,OAAA;AAHlB,IAAA,WAAA,CACU,IAAY,EACZ,QAA2B,EACnB,OAAoC,EAAA;QAF5C,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACA,IAAA,CAAA,OAAO,GAAP,OAAO;IACtB;AAEH,IAAA,aAAa,MAAM,CAClB,IAAY,EACZ,OAAuB,EACvB,aAAiD,EACjD,cAAkC,EAClC,MAAe,EACf,eAAwB,EAAA;AAExB,QAAA,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC;QACrF,MAAM,QAAQ,GAAG,IAAI,wBAAwB,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC;QAC7E,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;IACnD;AAEA,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG;IACxB;AAEA,IAAA,MAAM,OAAO,GAAA;AACZ,QAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC7B,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;IAC7B;AACA;;;;"}
1
+ {"version":3,"file":"explorerSession.js","sources":["../src/explorerSession.ts"],"sourcesContent":[null],"names":[],"mappings":";;MAOa,eAAe,CAAA;AAEjB,IAAA,IAAA;AACA,IAAA,QAAA;AACQ,IAAA,OAAA;AAHlB,IAAA,WAAA,CACU,IAAY,EACZ,QAA2B,EACnB,OAAoC,EAAA;QAF5C,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACA,IAAA,CAAA,OAAO,GAAP,OAAO;IACtB;AAEH,IAAA,aAAa,MAAM,CAClB,IAAY,EACZ,OAAuB,EACvB,aAAiD,EACjD,cAAkC,EAClC,OAA2B,EAAA;QAE3B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;AACrE,QAAA,MAAM,QAAQ,GAAG,IAAI,wBAAwB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QACtF,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;IACnD;AAEA,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG;IACxB;AAEA,IAAA,IAAI,YAAY,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY;IACjC;AAEA,IAAA,MAAM,OAAO,GAAA;AACZ,QAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC7B,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;IAC7B;AACA;;;;"}
@@ -38,6 +38,29 @@ class DisposableStore {
38
38
  this.disposables = [];
39
39
  }
40
40
  }
41
+ class Disposable {
42
+ constructor() {
43
+ this._store = new DisposableStore();
44
+ }
45
+ dispose() {
46
+ this._store.dispose();
47
+ }
48
+ _register(t) {
49
+ this._store.add(t);
50
+ return t;
51
+ }
52
+ _registerOrDispose(t) {
53
+ if (t) {
54
+ if (this._store.isDisposed) {
55
+ t.dispose();
56
+ }
57
+ else {
58
+ this._store.add(t);
59
+ }
60
+ }
61
+ return t;
62
+ }
63
+ }
41
64
 
42
- export { DisposableStore };
65
+ export { Disposable, DisposableStore };
43
66
  //# sourceMappingURL=disposables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"disposables.js","sources":["../../../../../../../external/vscode-observables/observables/dist/disposables.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass DisposableStore {\n constructor() {\n this.disposables = [];\n this._isDisposed = false;\n }\n get isDisposed() { return this._isDisposed; }\n dispose() {\n this.clear();\n this._isDisposed = true;\n }\n add(disposable) {\n if (disposable) {\n this.disposables.push(disposable);\n }\n return disposable;\n }\n remove(disposable) {\n if (!disposable) {\n return disposable;\n }\n const index = this.disposables.indexOf(disposable);\n if (index !== -1) {\n this.disposables.splice(index, 1);\n }\n return disposable;\n }\n clear() {\n for (const disposable of this.disposables) {\n disposable.dispose();\n }\n this.disposables = [];\n }\n leakItems() {\n this.disposables = [];\n }\n}\nclass Disposable {\n constructor() {\n this._store = new DisposableStore();\n }\n dispose() {\n this._store.dispose();\n }\n _register(t) {\n this._store.add(t);\n return t;\n }\n _registerOrDispose(t) {\n if (t) {\n if (this._store.isDisposed) {\n t.dispose();\n }\n else {\n this._store.add(t);\n }\n }\n return t;\n }\n}\n\nexport { Disposable, DisposableStore };\n//# sourceMappingURL=disposables.js.map\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,MAAM,eAAe,CAAC;AACtB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;AAChC,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,IAAI;AACJ,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAQ;AACR,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ,IAAI,MAAM,CAAC,UAAU,EAAE;AACvB,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;AAC1D,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;AAC1B,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,QAAQ;AACR,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;AACnD,YAAY,UAAU,CAAC,OAAO,EAAE;AAChC,QAAQ;AACR,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,IAAI;AACJ;;;;"}
1
+ {"version":3,"file":"disposables.js","sources":["../../../../../../../external/vscode-observables/observables/dist/disposables.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass DisposableStore {\n constructor() {\n this.disposables = [];\n this._isDisposed = false;\n }\n get isDisposed() { return this._isDisposed; }\n dispose() {\n this.clear();\n this._isDisposed = true;\n }\n add(disposable) {\n if (disposable) {\n this.disposables.push(disposable);\n }\n return disposable;\n }\n remove(disposable) {\n if (!disposable) {\n return disposable;\n }\n const index = this.disposables.indexOf(disposable);\n if (index !== -1) {\n this.disposables.splice(index, 1);\n }\n return disposable;\n }\n clear() {\n for (const disposable of this.disposables) {\n disposable.dispose();\n }\n this.disposables = [];\n }\n leakItems() {\n this.disposables = [];\n }\n}\nclass Disposable {\n constructor() {\n this._store = new DisposableStore();\n }\n dispose() {\n this._store.dispose();\n }\n _register(t) {\n this._store.add(t);\n return t;\n }\n _registerOrDispose(t) {\n if (t) {\n if (this._store.isDisposed) {\n t.dispose();\n }\n else {\n this._store.add(t);\n }\n }\n return t;\n }\n}\n\nexport { Disposable, DisposableStore };\n//# sourceMappingURL=disposables.js.map\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,MAAM,eAAe,CAAC;AACtB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;AAChC,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,IAAI;AACJ,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAQ;AACR,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ,IAAI,MAAM,CAAC,UAAU,EAAE;AACvB,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;AAC1D,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;AAC1B,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,QAAQ;AACR,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;AACnD,YAAY,UAAU,CAAC,OAAO,EAAE;AAChC,QAAQ;AACR,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,IAAI;AACJ;AACA,MAAM,UAAU,CAAC;AACjB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,EAAE;AAC3C,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC7B,IAAI;AACJ,IAAI,SAAS,CAAC,CAAC,EAAE;AACjB,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ,IAAI,kBAAkB,CAAC,CAAC,EAAE;AAC1B,QAAQ,IAAI,CAAC,EAAE;AACf,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACxC,gBAAgB,CAAC,CAAC,OAAO,EAAE;AAC3B,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ;;;;"}
@@ -32,9 +32,6 @@ function onUnexpectedError(error) {
32
32
  * Compares two items for equality using strict equality.
33
33
  */
34
34
  const strictEquals = (a, b) => a === b;
35
- function isDefined(arg) {
36
- return arg !== undefined && arg !== null;
37
- }
38
35
 
39
- export { BugIndicatingError, isDefined, onBugIndicatingError, onUnexpectedError, strictEquals, toDisposable };
36
+ export { BugIndicatingError, onBugIndicatingError, onUnexpectedError, strictEquals, toDisposable };
40
37
  //# sourceMappingURL=deps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deps.js","sources":["../../../../../../../../../external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction toDisposable(fn) {\n return {\n dispose: fn\n };\n}\nclass BugIndicatingError extends Error {\n constructor(message) {\n super(message || 'An unexpected bug occurred.');\n Object.setPrototypeOf(this, BugIndicatingError.prototype);\n // Because we know for sure only buggy code throws this,\n // we definitely want to break here and fix the bug.\n // eslint-disable-next-line no-debugger\n // debugger;\n }\n}\nfunction onBugIndicatingError(error) {\n // debugger;\n throw error;\n}\nfunction onUnexpectedError(error) {\n console.error('Unexpected error:', error);\n}\n/**\n * Compares two items for equality using strict equality.\n*/\nconst strictEquals = (a, b) => a === b;\nfunction isDefined(arg) {\n return arg !== undefined && arg !== null;\n}\n\nexport { BugIndicatingError, isDefined, onBugIndicatingError, onUnexpectedError, strictEquals, toDisposable };\n//# sourceMappingURL=deps.js.map\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE;AACjB,KAAK;AACL;AACA,MAAM,kBAAkB,SAAS,KAAK,CAAC;AACvC,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,IAAI,6BAA6B,CAAC;AACvD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC;AACjE;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC;AACA,IAAI,MAAM,KAAK;AACf;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC;AAC7C;AACA;AACA;AACA;AACK,MAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AACrC,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;AAC5C;;;;"}
1
+ {"version":3,"file":"deps.js","sources":["../../../../../../../../../external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction toDisposable(fn) {\n return {\n dispose: fn\n };\n}\nclass BugIndicatingError extends Error {\n constructor(message) {\n super(message || 'An unexpected bug occurred.');\n Object.setPrototypeOf(this, BugIndicatingError.prototype);\n // Because we know for sure only buggy code throws this,\n // we definitely want to break here and fix the bug.\n // eslint-disable-next-line no-debugger\n // debugger;\n }\n}\nfunction onBugIndicatingError(error) {\n // debugger;\n throw error;\n}\nfunction onUnexpectedError(error) {\n console.error('Unexpected error:', error);\n}\n/**\n * Compares two items for equality using strict equality.\n*/\nconst strictEquals = (a, b) => a === b;\n\nexport { BugIndicatingError, onBugIndicatingError, onUnexpectedError, strictEquals, toDisposable };\n//# sourceMappingURL=deps.js.map\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE;AACjB,KAAK;AACL;AACA,MAAM,kBAAkB,SAAS,KAAK,CAAC;AACvC,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,IAAI,6BAA6B,CAAC;AACvD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC;AACjE;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC;AACA,IAAI,MAAM,KAAK;AACf;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC;AAC7C;AACA;AACA;AACA;AACK,MAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;;;;"}
@@ -49,6 +49,9 @@ class DebugLocationImpl {
49
49
  }
50
50
  }
51
51
  function parseLine(stackLine) {
52
+ if (!stackLine) {
53
+ return undefined;
54
+ }
52
55
  const match = stackLine.match(/\((.*):(\d+):(\d+)\)/);
53
56
  if (match) {
54
57
  return {