@vscode/component-explorer-cli 0.2.1-163 → 0.2.1-164

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 (89) hide show
  1. package/README.md +90 -0
  2. package/dist/_virtual/_build-info.js +1 -1
  3. package/dist/commands/mcpCommand.js +6 -1
  4. package/dist/commands/mcpCommand.js.map +1 -1
  5. package/dist/commands/serveCommand.d.ts +4 -1
  6. package/dist/commands/serveCommand.d.ts.map +1 -1
  7. package/dist/commands/serveCommand.js +91 -25
  8. package/dist/commands/serveCommand.js.map +1 -1
  9. package/dist/daemon/DaemonService.d.ts +5 -208
  10. package/dist/daemon/DaemonService.d.ts.map +1 -1
  11. package/dist/daemon/DaemonService.js +228 -304
  12. package/dist/daemon/DaemonService.js.map +1 -1
  13. package/dist/daemon/client.d.ts +76 -5
  14. package/dist/daemon/client.d.ts.map +1 -1
  15. package/dist/daemon/daemonRpc.test.d.ts +2 -0
  16. package/dist/daemon/daemonRpc.test.d.ts.map +1 -0
  17. package/dist/daemon/endpointServer.d.ts +4 -0
  18. package/dist/daemon/endpointServer.d.ts.map +1 -0
  19. package/dist/daemon/endpointServer.js +24 -0
  20. package/dist/daemon/endpointServer.js.map +1 -0
  21. package/dist/daemon/inProcessClient.d.ts +3 -9
  22. package/dist/daemon/inProcessClient.d.ts.map +1 -1
  23. package/dist/daemon/inProcessClient.js +29 -30
  24. package/dist/daemon/inProcessClient.js.map +1 -1
  25. package/dist/daemon/lifecycle.d.ts +4 -5
  26. package/dist/daemon/lifecycle.d.ts.map +1 -1
  27. package/dist/daemon/lifecycle.js +3 -2
  28. package/dist/daemon/lifecycle.js.map +1 -1
  29. package/dist/daemon/pipeClient.d.ts +2 -3
  30. package/dist/daemon/pipeClient.d.ts.map +1 -1
  31. package/dist/daemon/pipeClient.js +93 -195
  32. package/dist/daemon/pipeClient.js.map +1 -1
  33. package/dist/daemon/pipeName.d.ts +2 -2
  34. package/dist/daemon/pipeName.d.ts.map +1 -1
  35. package/dist/daemon/pipeName.js +6 -4
  36. package/dist/daemon/pipeName.js.map +1 -1
  37. package/dist/daemon/pipeServer.d.ts +2 -2
  38. package/dist/daemon/pipeServer.d.ts.map +1 -1
  39. package/dist/daemon/pipeServer.js +79 -70
  40. package/dist/daemon/pipeServer.js.map +1 -1
  41. package/dist/daemon/registerDaemonConnection.d.ts +7 -0
  42. package/dist/daemon/registerDaemonConnection.d.ts.map +1 -0
  43. package/dist/daemon/registerDaemonConnection.js +37 -0
  44. package/dist/daemon/registerDaemonConnection.js.map +1 -0
  45. package/dist/daemon/transports.test.d.ts +2 -0
  46. package/dist/daemon/transports.test.d.ts.map +1 -0
  47. package/dist/daemon/types.d.ts +1655 -8
  48. package/dist/daemon/types.d.ts.map +1 -1
  49. package/dist/daemon/types.js +4 -0
  50. package/dist/daemon/types.js.map +1 -0
  51. package/dist/daemon/version.d.ts +1 -5
  52. package/dist/daemon/version.d.ts.map +1 -1
  53. package/dist/daemon/version.js +2 -6
  54. package/dist/daemon/version.js.map +1 -1
  55. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/inspectionHost-BA6ZmC_P.js +2523 -0
  56. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/inspectionHost-BA6ZmC_P.js.map +1 -0
  57. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/src-DYVSK_tz.js +1871 -0
  58. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/src-DYVSK_tz.js.map +1 -0
  59. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/webSocketTransport-Ct4OIdG9.js +220 -0
  60. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/webSocketTransport-Ct4OIdG9.js.map +1 -0
  61. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/node.js +721 -0
  62. package/dist/external/linkrpc/typescript/packages/linkrpc/dist/node.js.map +1 -0
  63. package/dist/index.d.ts +0 -2
  64. package/dist/js-component-explorer/packages/common/dist/daemonRpc.js +165 -0
  65. package/dist/js-component-explorer/packages/common/dist/daemonRpc.js.map +1 -0
  66. package/dist/mcp/DaemonAccessor.d.ts +2 -3
  67. package/dist/mcp/DaemonAccessor.d.ts.map +1 -1
  68. package/dist/mcp/McpServer.d.ts +1 -1
  69. package/dist/mcp/McpServer.d.ts.map +1 -1
  70. package/dist/mcp/McpServer.js +69 -58
  71. package/dist/mcp/McpServer.js.map +1 -1
  72. package/dist/renderManifest.d.ts +70 -5
  73. package/dist/server/serverConfig.d.ts +0 -2
  74. package/dist/server/serverConfig.d.ts.map +1 -1
  75. package/dist/server/serverConfig.js.map +1 -1
  76. package/dist/server/viteServer.d.ts +0 -2
  77. package/dist/server/viteServer.d.ts.map +1 -1
  78. package/dist/server/viteServer.js.map +1 -1
  79. package/package.json +9 -8
  80. package/dist/formatValue.js +0 -96
  81. package/dist/formatValue.js.map +0 -1
  82. package/dist/js-component-explorer/packages/simple-api/dist/chunk-FJ7AVNQE.js +0 -138
  83. package/dist/js-component-explorer/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +0 -1
  84. package/dist/js-component-explorer/packages/simple-api/dist/chunk-TTRCY65Z.js +0 -27
  85. package/dist/js-component-explorer/packages/simple-api/dist/chunk-TTRCY65Z.js.map +0 -1
  86. package/dist/js-component-explorer/packages/simple-api/dist/chunk-WNXMRXWV.js +0 -28
  87. package/dist/js-component-explorer/packages/simple-api/dist/chunk-WNXMRXWV.js.map +0 -1
  88. package/dist/js-component-explorer/packages/simple-api/dist/express.js +0 -104
  89. package/dist/js-component-explorer/packages/simple-api/dist/express.js.map +0 -1
@@ -1,211 +1,109 @@
1
- import http__default from 'node:http';
2
- import { ProxyApiClient } from '../js-component-explorer/packages/simple-api/dist/chunk-WNXMRXWV.js';
3
- import { AsyncStream } from '../js-component-explorer/packages/simple-api/dist/chunk-TTRCY65Z.js';
4
- import 'zod';
1
+ import * as net from 'node:net';
2
+ import { HeaderDelimitedTransport } from '../external/linkrpc/typescript/packages/linkrpc/dist/node.js';
3
+ import { xt as ErrorCode } from '../external/linkrpc/typescript/packages/linkrpc/dist/chunks/inspectionHost-BA6ZmC_P.js';
4
+ import { et as LinkRpcConnection, st as RpcError } from '../external/linkrpc/typescript/packages/linkrpc/dist/chunks/src-DYVSK_tz.js';
5
+ import { initializeDaemonMethods } from '../js-component-explorer/packages/common/dist/daemonRpc.js';
5
6
  import { nullLogger } from '../logger.js';
6
- import { formatValue } from '../formatValue.js';
7
- import '../vscode-observables/observables/dist/observableInternal/index.js';
8
- import '../vscode-observables/observables/dist/observableInternal/debugLocation.js';
9
- import '../vscode-observables/observables/dist/observableInternal/observables/derived.js';
10
- import '../vscode-observables/observables/dist/observableInternal/utils/utils.js';
11
- import '../vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
12
- import '../js-component-explorer/packages/common/dist/renderManifest.js';
13
- import 'node:fs/promises';
14
- import 'node:path';
15
- import { parseVersion, daemonApiVersionText, isCompatibleVersion } from './version.js';
16
- import '../config.js';
17
- import 'node:fs';
18
- import 'node:child_process';
19
- import 'node:module';
20
- import 'node:crypto';
7
+ import { s as runInitializeHandshake } from '../external/linkrpc/typescript/packages/linkrpc/dist/chunks/webSocketTransport-Ct4OIdG9.js';
21
8
 
22
9
  function isPipeConnectionError(e) {
10
+ if (e instanceof RpcError && e.code === ErrorCode.peerDisconnected) {
11
+ return true;
12
+ }
23
13
  if (!(e instanceof Error)) {
24
14
  return false;
25
15
  }
26
16
  const code = e.code;
27
- if (code === 'ENOENT' || code === 'ECONNREFUSED' || code === 'ECONNRESET' || code === 'EPIPE') {
28
- return true;
29
- }
30
- return /connect ENOENT|ECONNREFUSED|ECONNRESET|EPIPE/.test(e.message);
17
+ return code === 'ENOENT' || code === 'ECONNREFUSED' || code === 'ECONNRESET' || code === 'EPIPE'
18
+ || /connect ENOENT|ECONNREFUSED|ECONNRESET|EPIPE/.test(e.message);
31
19
  }
32
- function createPipeClient(pipeName, options) {
20
+ async function createPipeClient(pipeName, options) {
33
21
  const logger = options?.logger ?? nullLogger;
34
- const clientName = options?.clientName ?? 'unknown';
35
- const onConnectionError = options?.onConnectionError;
36
- let versionCheckPromise;
37
- const ensureVersionCompatibility = () => {
38
- if (versionCheckPromise) {
39
- return versionCheckPromise;
22
+ const socket = net.createConnection(pipeName);
23
+ socket.setTimeout(10_000, () => socket.destroy(new Error('Timed out connecting to daemon')));
24
+ let connection;
25
+ let disposed = false;
26
+ let failed = false;
27
+ const reportConnectionError = (error) => {
28
+ if (!disposed && !failed) {
29
+ failed = true;
30
+ logger.trace(`Daemon connection error: ${error.message}`);
31
+ options?.onConnectionError?.(error);
40
32
  }
41
- versionCheckPromise = new Promise((resolve, reject) => {
42
- const req = http__default.request({
43
- socketPath: pipeName,
44
- path: '/api/version',
45
- method: 'POST',
46
- agent: false,
47
- headers: {
48
- 'Content-Type': 'application/json',
49
- 'Content-Length': Buffer.byteLength('{}'),
50
- 'X-Client-Name': clientName,
51
- },
52
- }, (res) => {
53
- let data = '';
54
- res.on('data', chunk => data += chunk);
55
- res.on('end', () => {
56
- if (res.statusCode !== 200) {
57
- reject(new Error(`Failed to query daemon version (${res.statusCode}): ${data}`));
58
- return;
59
- }
60
- let parsed;
61
- try {
62
- parsed = JSON.parse(data);
63
- }
64
- catch {
65
- reject(new Error(`Failed to parse daemon version response: ${data}`));
66
- return;
67
- }
68
- const daemonVersion = parseVersion(parsed.daemonApiVersion);
69
- const expectedVersion = parseVersion(daemonApiVersionText);
70
- if (!isCompatibleVersion(expectedVersion, daemonVersion)) {
71
- reject(new Error(`Daemon API version mismatch. CLI expects ${daemonApiVersionText}, daemon provides ${parsed.daemonApiVersion}. Restart the daemon and ensure CLI + runtime are updated together.`));
72
- return;
73
- }
74
- resolve();
75
- });
76
- });
77
- req.on('error', reject);
78
- req.write('{}');
79
- req.end();
80
- });
81
- return versionCheckPromise;
82
33
  };
83
- return new ProxyApiClient(async (method, arg) => {
84
- if (method !== 'version') {
85
- await ensureVersionCompatibility();
34
+ socket.on('error', reportConnectionError);
35
+ socket.on('close', () => {
36
+ if (!disposed) {
37
+ reportConnectionError(new Error('Daemon connection closed'));
86
38
  }
87
- const body = JSON.stringify(arg ?? {});
88
- logger.debug(`Daemon call: ${method} args=${formatValue(arg)}`);
89
- return new Promise((resolve, reject) => {
90
- const req = http__default.request({
91
- socketPath: pipeName,
92
- path: `/api/${method}`,
93
- method: 'POST',
94
- agent: false,
95
- headers: {
96
- 'Content-Type': 'application/json',
97
- 'Content-Length': Buffer.byteLength(body),
98
- 'X-Client-Name': clientName,
99
- },
100
- }, (res) => {
101
- const contentType = res.headers['content-type'] ?? '';
102
- if (contentType.startsWith('application/jsonl')) {
103
- resolve(AsyncStream.fromFn(() => {
104
- let buffer = '';
105
- const pending = [];
106
- let resolve;
107
- let done = false;
108
- res.on('data', (chunk) => {
109
- buffer += chunk.toString();
110
- let eol;
111
- while ((eol = buffer.indexOf('\n')) >= 0) {
112
- const line = buffer.slice(0, eol).trim();
113
- buffer = buffer.slice(eol + 1);
114
- if (line) {
115
- const parsed = JSON.parse(line);
116
- if (resolve) {
117
- const r = resolve;
118
- resolve = undefined;
119
- r({ value: parsed, done: false });
120
- }
121
- else {
122
- pending.push(parsed);
123
- }
124
- }
125
- }
126
- });
127
- res.on('end', () => {
128
- if (buffer.trim()) {
129
- pending.push(JSON.parse(buffer.trim()));
130
- }
131
- done = true;
132
- if (resolve) {
133
- const r = resolve;
134
- resolve = undefined;
135
- r({ value: undefined, done: true });
136
- }
137
- });
138
- res.on('error', (err) => {
139
- logger.trace(`Daemon call: ${method} stream error: ${err.message}`);
140
- if (isPipeConnectionError(err)) {
141
- onConnectionError?.(err);
142
- }
143
- done = true;
144
- if (resolve) {
145
- const r = resolve;
146
- resolve = undefined;
147
- r({ value: undefined, done: true });
148
- }
149
- });
150
- return {
151
- next() {
152
- if (pending.length > 0) {
153
- return Promise.resolve({ value: pending.shift(), done: false });
154
- }
155
- if (done) {
156
- return Promise.resolve({ value: undefined, done: true });
157
- }
158
- return new Promise(r => { resolve = r; });
159
- },
160
- return() {
161
- done = true;
162
- res.destroy();
163
- if (resolve) {
164
- const r = resolve;
165
- resolve = undefined;
166
- r({ value: undefined, done: true });
167
- }
168
- return Promise.resolve({ value: undefined, done: true });
169
- },
170
- };
171
- }));
172
- }
173
- else {
174
- let data = '';
175
- res.on('data', chunk => data += chunk);
176
- res.on('end', () => {
177
- if (res.statusCode !== 200) {
178
- logger.debug(`Daemon call: ${method} error (${res.statusCode})`);
179
- let parsed;
180
- try {
181
- parsed = JSON.parse(data);
182
- }
183
- catch { }
184
- const errorMsg = parsed?.error ?? data;
185
- if (parsed?.stack) {
186
- logger.debug(`Remote stack trace:\n${parsed.stack}`);
187
- }
188
- reject(new Error(`Daemon error calling "${method}" (${res.statusCode}): ${errorMsg}${parsed?.stack ? `\n${parsed.stack}` : ''}`));
189
- }
190
- else {
191
- const parsed = data ? JSON.parse(data) : null;
192
- logger.debug(`Daemon call: ${method} result=${formatValue(parsed)}`);
193
- resolve(parsed);
194
- }
195
- });
196
- }
197
- });
198
- req.on('error', (err) => {
199
- logger.trace(`Daemon call: ${method} connection error: ${err.message}`);
200
- if (isPipeConnectionError(err)) {
201
- onConnectionError?.(err);
202
- }
203
- reject(err);
204
- });
205
- req.write(body);
206
- req.end();
207
- });
39
+ connection?.close();
208
40
  });
41
+ const transport = new HeaderDelimitedTransport(socket, socket, () => {
42
+ connection?.close();
43
+ if (!disposed) {
44
+ reportConnectionError(new Error('Daemon transport closed'));
45
+ }
46
+ socket.destroy();
47
+ });
48
+ try {
49
+ await new Promise((resolve, reject) => {
50
+ if (socket.destroyed) {
51
+ reject(new Error('Daemon connection closed'));
52
+ return;
53
+ }
54
+ const cleanup = () => {
55
+ socket.off('connect', connected);
56
+ socket.off('error', failedToConnect);
57
+ socket.off('close', closed);
58
+ };
59
+ const connected = () => { cleanup(); resolve(); };
60
+ const failedToConnect = (error) => { cleanup(); reject(error); };
61
+ const closed = () => { cleanup(); reject(new Error('Daemon connection closed')); };
62
+ socket.once('connect', connected);
63
+ socket.once('error', failedToConnect);
64
+ socket.once('close', closed);
65
+ });
66
+ let onClosed;
67
+ const closed = new Promise((_, reject) => {
68
+ onClosed = () => reject(new Error('Daemon connection closed during handshake'));
69
+ socket.once('close', onClosed);
70
+ });
71
+ try {
72
+ await Promise.race([
73
+ runInitializeHandshake(transport, { kind: 'client' }),
74
+ closed,
75
+ ]);
76
+ }
77
+ finally {
78
+ socket.off('close', onClosed);
79
+ }
80
+ if (socket.destroyed) {
81
+ throw new Error('Daemon connection closed during handshake');
82
+ }
83
+ connection = LinkRpcConnection.fromTransport(transport);
84
+ const methods = await initializeDaemonMethods(connection, options?.clientName ?? 'unknown');
85
+ const client = {
86
+ methods,
87
+ dispose() {
88
+ if (disposed) {
89
+ return;
90
+ }
91
+ disposed = true;
92
+ connection?.close();
93
+ socket.destroy();
94
+ },
95
+ };
96
+ socket.setTimeout(0);
97
+ logger.debug(`Connected to daemon at ${pipeName}`);
98
+ return client;
99
+ }
100
+ catch (error) {
101
+ disposed = true;
102
+ connection?.close();
103
+ transport.dispose();
104
+ socket.destroy();
105
+ throw error;
106
+ }
209
107
  }
210
108
 
211
109
  export { createPipeClient, isPipeConnectionError };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeClient.js","sources":["../../src/daemon/pipeClient.ts"],"sourcesContent":[null],"names":["http"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQM,SAAU,qBAAqB,CAAC,CAAU,EAAA;AAC/C,IAAA,IAAI,EAAE,CAAC,YAAY,KAAK,CAAC,EAAE;AAAE,QAAA,OAAO,KAAK;IAAE;AAC3C,IAAA,MAAM,IAAI,GAAI,CAA2B,CAAC,IAAI;AAC9C,IAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,OAAO,EAAE;AAC9F,QAAA,OAAO,IAAI;IACZ;IACA,OAAO,8CAA8C,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACtE;AAQM,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;AACnD,IAAA,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB;AACpD,IAAA,IAAI,mBAA8C;IAElD,MAAM,0BAA0B,GAAG,MAAoB;QACtD,IAAI,mBAAmB,EAAE;AACxB,YAAA,OAAO,mBAAmB;QAC3B;QACA,mBAAmB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrD,YAAA,MAAM,GAAG,GAAGA,aAAI,CAAC,OAAO,CAAC;AACxB,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,KAAK,EAAE,KAAK;AACZ,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,IAAI,IAAI,GAAG,EAAE;AACb,gBAAA,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;AACtC,gBAAA,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAK;AAClB,oBAAA,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;AAC3B,wBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,GAAG,CAAC,UAAU,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,CAAC,CAAC;wBAChF;oBACD;AACA,oBAAA,IAAI,MAAqC;AACzC,oBAAA,IAAI;AACH,wBAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB;oBAC/C;AAAE,oBAAA,MAAM;wBACP,MAAM,CAAC,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAA,CAAE,CAAC,CAAC;wBACrE;oBACD;oBACA,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAC3D,oBAAA,MAAM,eAAe,GAAG,YAAY,CAAC,oBAAoB,CAAC;oBAC1D,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE;AACzD,wBAAA,MAAM,CAAC,IAAI,KAAK,CACf,CAAA,yCAAA,EAA4C,oBAAoB,CAAA,kBAAA,EAAqB,MAAM,CAAC,gBAAgB,CAAA,mEAAA,CAAqE,CACjL,CAAC;wBACF;oBACD;AACA,oBAAA,OAAO,EAAE;AACV,gBAAA,CAAC,CAAC;AACH,YAAA,CAAC,CAAC;AACF,YAAA,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AACvB,YAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACf,GAAG,CAAC,GAAG,EAAE;AACV,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,mBAAmB;AAC3B,IAAA,CAAC;IAED,OAAO,IAAI,cAAc,CAAC,OAAO,MAAM,EAAE,GAAG,KAAI;AAC/C,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;YACzB,MAAM,0BAA0B,EAAE;QACnC;QACA,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,KAAK,EAAE,KAAK;AACZ,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;4BACvB,MAAM,CAAC,KAAK,CAAC,CAAA,aAAA,EAAgB,MAAM,CAAA,eAAA,EAAkB,GAAG,CAAC,OAAO,CAAA,CAAE,CAAC;AACnE,4BAAA,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE;AAAE,gCAAA,iBAAiB,GAAG,GAAG,CAAC;4BAAE;4BAC5D,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,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;4BACD,MAAM,GAAA;gCACL,IAAI,GAAG,IAAI;gCACX,GAAG,CAAC,OAAO,EAAE;gCACb,IAAI,OAAO,EAAE;oCACZ,MAAM,CAAC,GAAG,OAAO;oCACjB,OAAO,GAAG,SAAS;oCACnB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gCACpC;AACA,gCAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;4BACzD,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,IAAI,MAAsD;AAC1D,4BAAA,IAAI;AAAE,gCAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;4BAAE;4BAAE,MAAM,EAAE;AAC3C,4BAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,KAAK,IAAI,IAAI;AACtC,4BAAA,IAAI,MAAM,EAAE,KAAK,EAAE;gCAClB,MAAM,CAAC,KAAK,CAAC,CAAA,qBAAA,EAAwB,MAAM,CAAC,KAAK,CAAA,CAAE,CAAC;4BACrD;AACA,4BAAA,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,sBAAA,EAAyB,MAAM,CAAA,GAAA,EAAM,GAAG,CAAC,UAAU,CAAA,GAAA,EAAM,QAAQ,GAAG,MAAM,EAAE,KAAK,GAAG,CAAA,EAAA,EAAK,MAAM,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE,CAAA,CAAE,CAAC,CAAC;wBAClI;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;AACvE,gBAAA,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE;AAAE,oBAAA,iBAAiB,GAAG,GAAG,CAAC;gBAAE;gBAC5D,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;;;;"}
1
+ {"version":3,"file":"pipeClient.js","sources":["../../src/daemon/pipeClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -3,6 +3,6 @@ export interface DaemonPipeInfo {
3
3
  readonly pipeName: string;
4
4
  readonly source: string;
5
5
  }
6
- export declare function daemonPipeName(configPath: AbsolutePath): string;
7
- export declare function daemonPipeInfo(configPath: AbsolutePath): DaemonPipeInfo;
6
+ export declare function daemonPipeName(configPath: AbsolutePath | string): string;
7
+ export declare function daemonPipeInfo(configPath: AbsolutePath | string): DaemonPipeInfo;
8
8
  //# sourceMappingURL=pipeName.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeName.d.ts","sourceRoot":"","sources":["../../src/daemon/pipeName.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,YAAY,GAAG,MAAM,CAE/D;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,YAAY,GAAG,cAAc,CAOvE"}
1
+ {"version":3,"file":"pipeName.d.ts","sourceRoot":"","sources":["../../src/daemon/pipeName.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,YAAY,GAAG,MAAM,GAAG,cAAc,CAUhF"}
@@ -1,16 +1,18 @@
1
1
  import { createHash } from 'node:crypto';
2
- import * as os from 'node:os';
3
2
  import * as path from 'node:path';
4
3
 
5
4
  function daemonPipeName(configPath) {
6
5
  return daemonPipeInfo(configPath).pipeName;
7
6
  }
8
7
  function daemonPipeInfo(configPath) {
9
- const source = process.platform === 'win32' ? configPath.value.toLowerCase() : configPath.value;
8
+ const configPathValue = typeof configPath === 'string' ? path.resolve(configPath) : configPath.value;
9
+ const source = process.platform === 'win32' ? configPathValue.toLowerCase() : configPathValue;
10
10
  const h = createHash('sha256').update(source).digest('hex').slice(0, 16);
11
11
  const pipeName = process.platform === 'win32'
12
- ? `\\\\.\\pipe\\component-explorer-${h}`
13
- : path.join(os.tmpdir(), `component-explorer-${h}.sock`);
12
+ ? `\\\\.\\pipe\\component-explorer-v2-${h}`
13
+ : process.platform === 'linux'
14
+ ? `\0component-explorer-v2-${h}`
15
+ : path.join(path.dirname(configPathValue), `.component-explorer-v2-${h}.sock`);
14
16
  return { pipeName, source };
15
17
  }
16
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"pipeName.js","sources":["../../src/daemon/pipeName.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAUM,SAAU,cAAc,CAAC,UAAwB,EAAA;AACtD,IAAA,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC,QAAQ;AAC3C;AAEM,SAAU,cAAc,CAAC,UAAwB,EAAA;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK;IAC/F,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACxE,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK;UACnC,CAAA,gCAAA,EAAmC,CAAC,CAAA;AACtC,UAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAA,mBAAA,EAAsB,CAAC,CAAA,KAAA,CAAO,CAAC;AACzD,IAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC5B;;;;"}
1
+ {"version":3,"file":"pipeName.js","sources":["../../src/daemon/pipeName.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AASM,SAAU,cAAc,CAAC,UAAiC,EAAA;AAC/D,IAAA,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC,QAAQ;AAC3C;AAEM,SAAU,cAAc,CAAC,UAAiC,EAAA;IAC/D,MAAM,eAAe,GAAG,OAAO,UAAU,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK;AACpG,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,GAAG,eAAe;IAC7F,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACxE,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK;UACnC,CAAA,mCAAA,EAAsC,CAAC,CAAA;AACzC,UAAE,OAAO,CAAC,QAAQ,KAAK;cACpB,CAAA,wBAAA,EAA2B,CAAC,CAAA;AAC9B,cAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAA,uBAAA,EAA0B,CAAC,CAAA,KAAA,CAAO,CAAC;AAChF,IAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC5B;;;;"}
@@ -1,5 +1,5 @@
1
- import http from 'node:http';
1
+ import * as net from 'node:net';
2
2
  import type { DaemonService } from './DaemonService.js';
3
3
  import { type ILogger } from '../logger.js';
4
- export declare function startPipeServer(pipeName: string, service: DaemonService, logger?: ILogger): Promise<http.Server>;
4
+ export declare function startPipeServer(pipeName: string, service: DaemonService, logger?: ILogger): Promise<net.Server>;
5
5
  //# sourceMappingURL=pipeServer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeServer.d.ts","sourceRoot":"","sources":["../../src/daemon/pipeServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AAIxD,wBAAsB,eAAe,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,EACtB,MAAM,GAAE,OAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAsBtB"}
1
+ {"version":3,"file":"pipeServer.d.ts","sourceRoot":"","sources":["../../src/daemon/pipeServer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AAGxD,wBAAsB,eAAe,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,EACtB,MAAM,GAAE,OAAoB,GAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CA0ErB"}
@@ -1,87 +1,96 @@
1
- import http__default from 'node:http';
2
1
  import * as fs from 'node:fs';
3
- import express from 'express';
4
- import { createApiRouter } from '../js-component-explorer/packages/simple-api/dist/express.js';
5
- import { ApiImplementation } from '../js-component-explorer/packages/simple-api/dist/chunk-FJ7AVNQE.js';
6
- import { AsyncStream } from '../js-component-explorer/packages/simple-api/dist/chunk-TTRCY65Z.js';
2
+ import * as net from 'node:net';
3
+ import { HeaderDelimitedTransport } from '../external/linkrpc/typescript/packages/linkrpc/dist/node.js';
7
4
  import { nullLogger } from '../logger.js';
8
- import { formatValue } from '../formatValue.js';
5
+ import { registerDaemonConnection } from './registerDaemonConnection.js';
6
+ import { s as runInitializeHandshake } from '../external/linkrpc/typescript/packages/linkrpc/dist/chunks/webSocketTransport-Ct4OIdG9.js';
7
+ import { et as LinkRpcConnection } from '../external/linkrpc/typescript/packages/linkrpc/dist/chunks/src-DYVSK_tz.js';
9
8
 
10
9
  async function startPipeServer(pipeName, service, logger = nullLogger) {
11
- if (process.platform !== 'win32') {
10
+ if (process.platform !== 'win32' && !pipeName.startsWith('\0')) {
12
11
  try {
13
12
  fs.unlinkSync(pipeName);
14
13
  }
15
14
  catch { /* may not exist */ }
16
15
  }
17
- const api = new LoggingApiImplementation(service.api, logger);
18
- const app = express();
19
- app.use('/api', createApiRouter(api, {
20
- contextFactory: (req) => ({
21
- clientName: req.headers['x-client-name'] ?? 'unknown',
22
- }),
23
- }));
24
- const server = http__default.createServer(app);
25
- await new Promise((resolve, reject) => {
26
- server.on('error', (err) => {
27
- logger.log(`Pipe server error: ${err.message}`);
28
- reject(err);
16
+ const sockets = new Set();
17
+ const server = net.createServer(socket => {
18
+ sockets.add(socket);
19
+ let connection;
20
+ let registration;
21
+ const disposeRegistration = () => {
22
+ const current = registration;
23
+ registration = undefined;
24
+ current?.dispose();
25
+ };
26
+ const transport = new HeaderDelimitedTransport(socket, socket, () => {
27
+ disposeRegistration();
28
+ connection?.close();
29
+ socket.destroy();
29
30
  });
30
- server.listen(pipeName, resolve);
31
- });
32
- return server;
33
- }
34
- class LoggingApiImplementation extends ApiImplementation {
35
- _inner;
36
- _logger;
37
- static _streamCount = 0;
38
- constructor(_inner, _logger) {
39
- super(_inner._factoryToken, {});
40
- this._inner = _inner;
41
- this._logger = _logger;
42
- }
43
- async run(method, arg, context) {
44
- const quiet = method === 'version';
45
- const prefix = `Client "${context.clientName}" ${method}`;
46
- if (!quiet) {
47
- this._logger.trace(`${prefix}(${formatValue(arg)})`);
48
- }
49
- const result = await this._inner.run(method, arg, context);
50
- if (result instanceof AsyncStream) {
51
- const streamId = LoggingApiImplementation._streamCount++;
52
- if (!quiet) {
53
- this._logger.trace(`${prefix} → stream[${streamId}] started`);
31
+ socket.on('error', err => logger.debug(`Pipe connection error: ${err.message}`));
32
+ socket.on('close', () => {
33
+ sockets.delete(socket);
34
+ disposeRegistration();
35
+ connection?.close();
36
+ transport.dispose();
37
+ });
38
+ void (async () => {
39
+ try {
40
+ let onClosed;
41
+ const closed = new Promise((_, reject) => {
42
+ onClosed = () => reject(new Error('Pipe closed during handshake'));
43
+ socket.once('close', onClosed);
44
+ });
45
+ try {
46
+ await Promise.race([
47
+ runInitializeHandshake(transport, {
48
+ kind: 'server',
49
+ isTokenAccepted: async (token) => token === undefined,
50
+ }),
51
+ closed,
52
+ ]);
53
+ }
54
+ finally {
55
+ socket.off('close', onClosed);
56
+ }
57
+ if (socket.destroyed) {
58
+ return;
59
+ }
60
+ const rpcConnection = LinkRpcConnection.fromTransport(transport);
61
+ connection = rpcConnection;
62
+ registration = registerDaemonConnection(rpcConnection, service, logger);
63
+ }
64
+ catch (err) {
65
+ logger.debug(`Pipe handshake failed: ${err instanceof Error ? err.message : String(err)}`);
66
+ socket.destroy();
54
67
  }
55
- const inner = result[Symbol.asyncIterator]();
56
- const logger = this._logger;
57
- let i = 0;
58
- // Delegate directly instead of wrapping in an async generator.
59
- // An async generator's .return() is queued when it's mid-await,
60
- // which prevents immediate cleanup on client disconnect.
61
- return new AsyncStream({
62
- async next() {
63
- const r = await inner.next();
64
- if (!r.done && !quiet) {
65
- logger.trace(`${prefix} stream[${streamId}][${i++}]=${formatValue(r.value)}`);
66
- }
67
- return r;
68
- },
69
- async return() {
70
- const r = await (inner.return?.() ?? Promise.resolve({ done: true, value: undefined }));
71
- if (!quiet) {
72
- logger.trace(`${prefix} → stream[${streamId}] ended`);
73
- }
74
- return r;
75
- },
76
- });
68
+ })();
69
+ });
70
+ const closeServer = server.close.bind(server);
71
+ server.close = callback => {
72
+ for (const socket of sockets) {
73
+ socket.destroySoon();
77
74
  }
78
- else {
79
- if (!quiet) {
80
- this._logger.trace(`${prefix} result=${formatValue(result)}`);
75
+ return closeServer(callback);
76
+ };
77
+ server.on('close', () => {
78
+ if (process.platform !== 'win32' && !pipeName.startsWith('\0')) {
79
+ try {
80
+ fs.unlinkSync(pipeName);
81
81
  }
82
- return result;
82
+ catch { /* best effort */ }
83
83
  }
84
- }
84
+ });
85
+ server.on('error', err => logger.log(`Pipe server error: ${err.message}`));
86
+ await new Promise((resolve, reject) => {
87
+ server.once('error', reject);
88
+ server.listen(pipeName, () => {
89
+ server.off('error', reject);
90
+ resolve();
91
+ });
92
+ });
93
+ return server;
85
94
  }
86
95
 
87
96
  export { startPipeServer };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeServer.js","sources":["../../src/daemon/pipeServer.ts"],"sourcesContent":[null],"names":["http"],"mappings":"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"}
1
+ {"version":3,"file":"pipeServer.js","sources":["../../src/daemon/pipeServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { LinkRpcConnection } from '@hediet/linkrpc';
2
+ import type { DaemonService } from './DaemonService.js';
3
+ import { type ILogger } from '../logger.js';
4
+ export declare function registerDaemonConnection(connection: LinkRpcConnection, service: DaemonService | Promise<DaemonService>, logger?: ILogger): {
5
+ dispose(): void;
6
+ };
7
+ //# sourceMappingURL=registerDaemonConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerDaemonConnection.d.ts","sourceRoot":"","sources":["../../src/daemon/registerDaemonConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,cAAc,CAAC;AAExD,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,EAC/C,MAAM,GAAE,OAAoB,GAC1B;IAAE,OAAO,IAAI,IAAI,CAAA;CAAE,CA0BrB"}