@workflow/utils 4.0.1-beta.5 → 4.0.1-beta.7

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.
@@ -1,6 +1,24 @@
1
+ /**
2
+ * Gets all listening ports for the current process.
3
+ * @returns Array of port numbers the process is listening on, in deterministic order.
4
+ */
5
+ export declare function getAllPorts(): Promise<number[]>;
1
6
  /**
2
7
  * Gets the port number that the process is listening on.
3
8
  * @returns The port number that the process is listening on, or undefined if the process is not listening on any port.
4
9
  */
5
10
  export declare function getPort(): Promise<number | undefined>;
11
+ export interface ProbeOptions {
12
+ endpoint?: string;
13
+ timeout?: number;
14
+ }
15
+ /**
16
+ * Gets the workflow server port by probing all listening ports.
17
+ * This is more reliable than getPort() when other services (like Node.js inspector)
18
+ * may also be listening on ports.
19
+ *
20
+ * @param options - Optional configuration for probing
21
+ * @returns The port number of the workflow server, or undefined if not found
22
+ */
23
+ export declare function getWorkflowPort(options?: ProbeOptions): Promise<number | undefined>;
6
24
  //# sourceMappingURL=get-port.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-port.d.ts","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"AA4HA;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA+E3D"}
1
+ {"version":3,"file":"get-port.d.ts","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"AA0MA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBrD;AAED;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG3D;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiCD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqC7B"}
package/dist/get-port.js CHANGED
@@ -18,14 +18,14 @@ function parsePort(value, radix = 10) {
18
18
  const join = (arr, sep) => arr.join(sep);
19
19
  const PROC_ROOT = join(['', 'proc'], '/');
20
20
  /**
21
- * Gets listening ports for the current process on Linux by reading /proc filesystem.
22
- * This approach requires no external commands and works on all Linux systems.
21
+ * Gets ALL listening ports for the current process on Linux by reading /proc filesystem.
22
+ * Returns ports in order of file descriptor (deterministic ordering).
23
23
  */
24
- async function getLinuxPort(pid) {
24
+ async function getLinuxPorts(pid) {
25
25
  const listenState = '0A'; // TCP LISTEN state in /proc/net/tcp
26
26
  const tcpFiles = [`${PROC_ROOT}/net/tcp`, `${PROC_ROOT}/net/tcp6`];
27
27
  // Step 1: Get socket inodes from /proc/<pid>/fd/ in order
28
- // We preserve order to maintain deterministic behavior (return first port)
28
+ // We preserve order to maintain deterministic behavior
29
29
  // Use both array (for order) and Set (for O(1) lookup)
30
30
  const socketInodes = [];
31
31
  const socketInodesSet = new Set();
@@ -53,21 +53,19 @@ async function getLinuxPort(pid) {
53
53
  }
54
54
  catch {
55
55
  // Process might not exist or no permission
56
- return undefined;
56
+ return [];
57
57
  }
58
58
  if (socketInodes.length === 0) {
59
- return undefined;
59
+ return [];
60
60
  }
61
61
  // Step 2: Read /proc/net/tcp and /proc/net/tcp6 to find listening sockets
62
62
  // Format: sl local_address rem_address st ... inode
63
63
  // local_address is hex IP:port, st=0A means LISTEN
64
- // We iterate through socket inodes in order to maintain deterministic behavior
64
+ const inodeToPort = new Map();
65
65
  for (const tcpFile of tcpFiles) {
66
66
  try {
67
67
  const content = await readFile(tcpFile, 'utf8');
68
68
  const lines = content.split('\n').slice(1); // Skip header
69
- // Build a map of inode -> port for quick lookup
70
- const inodeToPort = new Map();
71
69
  for (const line of lines) {
72
70
  if (!line.trim())
73
71
  continue; // Skip empty lines
@@ -93,98 +91,190 @@ async function getLinuxPort(pid) {
93
91
  inodeToPort.set(inode, port);
94
92
  }
95
93
  }
96
- // Return the first port matching our socket inodes in order
97
- for (const inode of socketInodes) {
98
- const port = inodeToPort.get(inode);
99
- if (port !== undefined) {
100
- return port;
101
- }
102
- }
103
94
  }
104
95
  catch {
105
96
  // File might not exist (e.g., no IPv6 support) - continue to next file
106
97
  continue;
107
98
  }
108
99
  }
109
- return undefined;
100
+ // Return all ports in socket inode order (deterministic)
101
+ const ports = [];
102
+ for (const inode of socketInodes) {
103
+ const port = inodeToPort.get(inode);
104
+ if (port !== undefined) {
105
+ ports.push(port);
106
+ }
107
+ }
108
+ return ports;
110
109
  }
111
110
  /**
112
- * Gets the port number that the process is listening on.
113
- * @returns The port number that the process is listening on, or undefined if the process is not listening on any port.
111
+ * Gets ALL listening ports for the current process on macOS using lsof.
112
+ * Returns ports in the order they appear in lsof output.
114
113
  */
115
- export async function getPort() {
116
- const { pid, platform } = process;
117
- let port;
114
+ async function getDarwinPorts(pid) {
118
115
  try {
119
- switch (platform) {
120
- case 'linux': {
121
- port = await getLinuxPort(pid);
122
- break;
123
- }
124
- case 'darwin': {
125
- const { stdout } = await execFileAsync('lsof', [
126
- '-a',
127
- '-i',
128
- '-P',
129
- '-n',
130
- '-p',
131
- pid.toString(),
132
- ]);
133
- // Parse lsof output in JS instead of piping to awk
134
- // Find first LISTEN line and extract port from address (e.g., "*:3000" or "127.0.0.1:3000")
135
- const lines = stdout.split('\n');
136
- for (const line of lines) {
137
- if (line.includes('LISTEN')) {
138
- // Column 9 (0-indexed: 8) contains the address like "*:3000" or "127.0.0.1:3000"
139
- const parts = line.trim().split(/\s+/);
140
- const addr = parts[8];
141
- if (addr) {
142
- const colonIndex = addr.lastIndexOf(':');
143
- if (colonIndex !== -1) {
144
- port = parsePort(addr.slice(colonIndex + 1));
145
- if (port !== undefined) {
146
- break;
147
- }
148
- }
116
+ const { stdout } = await execFileAsync('lsof', [
117
+ '-a',
118
+ '-i',
119
+ '-P',
120
+ '-n',
121
+ '-p',
122
+ pid.toString(),
123
+ ]);
124
+ const ports = [];
125
+ const lines = stdout.split('\n');
126
+ for (const line of lines) {
127
+ if (line.includes('LISTEN')) {
128
+ // Column 9 (0-indexed: 8) contains the address like "*:3000" or "127.0.0.1:3000"
129
+ const parts = line.trim().split(/\s+/);
130
+ const addr = parts[8];
131
+ if (addr) {
132
+ const colonIndex = addr.lastIndexOf(':');
133
+ if (colonIndex !== -1) {
134
+ const port = parsePort(addr.slice(colonIndex + 1));
135
+ if (port !== undefined) {
136
+ ports.push(port);
149
137
  }
150
138
  }
151
139
  }
152
- break;
153
140
  }
154
- case 'win32': {
155
- // Use cmd to run the piped command
156
- const { stdout } = await execFileAsync('cmd', [
157
- '/c',
158
- `netstat -ano | findstr ${pid} | findstr LISTENING`,
159
- ]);
160
- const trimmedOutput = stdout.trim();
161
- if (trimmedOutput) {
162
- const lines = trimmedOutput.split('\n');
163
- for (const line of lines) {
164
- // Extract port from the local address column
165
- // Matches both IPv4 (e.g., "127.0.0.1:3000") and IPv6 bracket notation (e.g., "[::1]:3000")
166
- const match = line
167
- .trim()
168
- .match(/^\s*TCP\s+(?:\[[\da-f:]+\]|[\d.]+):(\d+)\s+/i);
169
- if (match) {
170
- port = parsePort(match[1]);
171
- if (port !== undefined) {
172
- break;
173
- }
174
- }
141
+ }
142
+ return ports;
143
+ }
144
+ catch {
145
+ return [];
146
+ }
147
+ }
148
+ /**
149
+ * Gets ALL listening ports for the current process on Windows using netstat.
150
+ * Returns ports in the order they appear in netstat output.
151
+ */
152
+ async function getWindowsPorts(pid) {
153
+ try {
154
+ const { stdout } = await execFileAsync('cmd', [
155
+ '/c',
156
+ `netstat -ano | findstr ${pid} | findstr LISTENING`,
157
+ ]);
158
+ const ports = [];
159
+ const trimmedOutput = stdout.trim();
160
+ if (trimmedOutput) {
161
+ const lines = trimmedOutput.split('\n');
162
+ for (const line of lines) {
163
+ // Extract port from the local address column
164
+ // Matches both IPv4 (e.g., "127.0.0.1:3000") and IPv6 bracket notation (e.g., "[::1]:3000")
165
+ const match = line
166
+ .trim()
167
+ .match(/^\s*TCP\s+(?:\[[\da-f:]+\]|[\d.]+):(\d+)\s+/i);
168
+ if (match) {
169
+ const port = parsePort(match[1]);
170
+ if (port !== undefined) {
171
+ ports.push(port);
175
172
  }
176
173
  }
177
- break;
178
174
  }
179
175
  }
176
+ return ports;
177
+ }
178
+ catch {
179
+ return [];
180
+ }
181
+ }
182
+ /**
183
+ * Gets all listening ports for the current process.
184
+ * @returns Array of port numbers the process is listening on, in deterministic order.
185
+ */
186
+ export async function getAllPorts() {
187
+ const { pid, platform } = process;
188
+ try {
189
+ switch (platform) {
190
+ case 'linux':
191
+ return await getLinuxPorts(pid);
192
+ case 'darwin':
193
+ return await getDarwinPorts(pid);
194
+ case 'win32':
195
+ return await getWindowsPorts(pid);
196
+ default:
197
+ return [];
198
+ }
180
199
  }
181
200
  catch (error) {
182
- // In dev, it's helpful to know why detection failed
183
201
  if (process.env.NODE_ENV === 'development') {
184
- console.debug('[getPort] Detection failed:', error);
202
+ console.debug('[getAllPorts] Detection failed:', error);
185
203
  }
204
+ return [];
205
+ }
206
+ }
207
+ /**
208
+ * Gets the port number that the process is listening on.
209
+ * @returns The port number that the process is listening on, or undefined if the process is not listening on any port.
210
+ */
211
+ export async function getPort() {
212
+ const ports = await getAllPorts();
213
+ return ports[0];
214
+ }
215
+ // Configuration for HTTP probing
216
+ const PROBE_TIMEOUT_MS = 500;
217
+ const PROBE_ENDPOINT = '/.well-known/workflow/v1/flow?__health';
218
+ /**
219
+ * Probes a port to check if it's serving the workflow HTTP server.
220
+ * Uses HEAD request to minimize overhead.
221
+ *
222
+ * @returns true if the port responds with a 200 status from the health check endpoint
223
+ */
224
+ async function probePort(port, options = {}) {
225
+ const { endpoint = PROBE_ENDPOINT, timeout = PROBE_TIMEOUT_MS } = options;
226
+ const controller = new AbortController();
227
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
228
+ try {
229
+ const response = await fetch(`http://localhost:${port}${endpoint}`, {
230
+ method: 'HEAD',
231
+ signal: controller.signal,
232
+ });
233
+ // The workflow health endpoint returns 200 for healthy
234
+ return response.status === 200;
235
+ }
236
+ catch {
237
+ // Connection refused, timeout, or other error
238
+ return false;
239
+ }
240
+ finally {
241
+ clearTimeout(timeoutId);
242
+ }
243
+ }
244
+ /**
245
+ * Gets the workflow server port by probing all listening ports.
246
+ * This is more reliable than getPort() when other services (like Node.js inspector)
247
+ * may also be listening on ports.
248
+ *
249
+ * @param options - Optional configuration for probing
250
+ * @returns The port number of the workflow server, or undefined if not found
251
+ */
252
+ export async function getWorkflowPort(options) {
253
+ const ports = await getAllPorts();
254
+ if (ports.length === 0) {
186
255
  return undefined;
187
256
  }
188
- return Number.isNaN(port) ? undefined : port;
257
+ if (ports.length === 1) {
258
+ // Only one port, no need to probe
259
+ return ports[0];
260
+ }
261
+ // Probe all ports in parallel
262
+ const probeResults = await Promise.all(ports.map(async (port) => ({
263
+ port,
264
+ isWorkflow: await probePort(port, options),
265
+ })));
266
+ // Return first port that responded as workflow server
267
+ const workflowPort = probeResults.find((r) => r.isWorkflow);
268
+ if (workflowPort) {
269
+ return workflowPort.port;
270
+ }
271
+ // Fallback to first port if probing doesn't identify workflow server
272
+ // This handles cases where:
273
+ // - Server hasn't started workflow routes yet
274
+ // - Network issues during probing
275
+ if (process.env.NODE_ENV === 'development') {
276
+ console.debug('[getWorkflowPort] Probing failed, falling back to first port:', ports[0]);
277
+ }
278
+ return ports[0];
189
279
  }
190
280
  //# sourceMappingURL=get-port.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-port.js","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-port.js","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workflow/utils",
3
3
  "description": "Utility functions for Workflow DevKit",
4
- "version": "4.0.1-beta.5",
4
+ "version": "4.0.1-beta.7",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "files": [