@workflow/utils 4.0.1-beta.4 → 4.0.1-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/get-port.d.ts.map +1 -1
- package/dist/get-port.js +142 -13
- package/dist/get-port.js.map +1 -1
- package/package.json +1 -2
package/dist/get-port.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-port.d.ts","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/get-port.js
CHANGED
|
@@ -1,4 +1,113 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readdir, readFile, readlink } from 'node:fs/promises';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { execFile } from 'node:child_process';
|
|
4
|
+
const execFileAsync = promisify(execFile);
|
|
5
|
+
/**
|
|
6
|
+
* Parses a port string and returns it if valid (0-65535), otherwise undefined.
|
|
7
|
+
*/
|
|
8
|
+
function parsePort(value, radix = 10) {
|
|
9
|
+
const port = parseInt(value, radix);
|
|
10
|
+
if (!Number.isNaN(port) && port >= 0 && port <= 65535) {
|
|
11
|
+
return port;
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
// NOTE: We build /proc paths dynamically to prevent @vercel/nft from tracing them.
|
|
16
|
+
// NFT's static analysis tries to bundle any file path literal it finds (e.g., '/proc/net/tcp').
|
|
17
|
+
// Since /proc is a virtual Linux filesystem, this causes build failures in @sveltejs/adapter-vercel.
|
|
18
|
+
const join = (arr, sep) => arr.join(sep);
|
|
19
|
+
const PROC_ROOT = join(['', 'proc'], '/');
|
|
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.
|
|
23
|
+
*/
|
|
24
|
+
async function getLinuxPort(pid) {
|
|
25
|
+
const listenState = '0A'; // TCP LISTEN state in /proc/net/tcp
|
|
26
|
+
const tcpFiles = [`${PROC_ROOT}/net/tcp`, `${PROC_ROOT}/net/tcp6`];
|
|
27
|
+
// Step 1: Get socket inodes from /proc/<pid>/fd/ in order
|
|
28
|
+
// We preserve order to maintain deterministic behavior (return first port)
|
|
29
|
+
// Use both array (for order) and Set (for O(1) lookup)
|
|
30
|
+
const socketInodes = [];
|
|
31
|
+
const socketInodesSet = new Set();
|
|
32
|
+
const fdPath = `${PROC_ROOT}/${pid}/fd`;
|
|
33
|
+
try {
|
|
34
|
+
const fds = await readdir(fdPath);
|
|
35
|
+
// Sort FDs numerically to ensure deterministic order (FDs are always numeric strings)
|
|
36
|
+
const sortedFds = fds.sort((a, b) => {
|
|
37
|
+
const numA = Number.parseInt(a, 10);
|
|
38
|
+
const numB = Number.parseInt(b, 10);
|
|
39
|
+
return numA - numB;
|
|
40
|
+
});
|
|
41
|
+
const results = await Promise.allSettled(sortedFds.map(async (fd) => {
|
|
42
|
+
const link = await readlink(`${fdPath}/${fd}`);
|
|
43
|
+
// Socket links look like: socket:[12345]
|
|
44
|
+
const match = link.match(/^socket:\[(\d+)\]$/);
|
|
45
|
+
return match?.[1] ?? null;
|
|
46
|
+
}));
|
|
47
|
+
for (const result of results) {
|
|
48
|
+
if (result.status === 'fulfilled' && result.value) {
|
|
49
|
+
socketInodes.push(result.value);
|
|
50
|
+
socketInodesSet.add(result.value);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Process might not exist or no permission
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
if (socketInodes.length === 0) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
// Step 2: Read /proc/net/tcp and /proc/net/tcp6 to find listening sockets
|
|
62
|
+
// Format: sl local_address rem_address st ... inode
|
|
63
|
+
// local_address is hex IP:port, st=0A means LISTEN
|
|
64
|
+
// We iterate through socket inodes in order to maintain deterministic behavior
|
|
65
|
+
for (const tcpFile of tcpFiles) {
|
|
66
|
+
try {
|
|
67
|
+
const content = await readFile(tcpFile, 'utf8');
|
|
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
|
+
for (const line of lines) {
|
|
72
|
+
if (!line.trim())
|
|
73
|
+
continue; // Skip empty lines
|
|
74
|
+
const parts = line.trim().split(/\s+/);
|
|
75
|
+
if (parts.length < 10)
|
|
76
|
+
continue;
|
|
77
|
+
const localAddr = parts[1]; // e.g., "00000000:0BB8" (0.0.0.0:3000)
|
|
78
|
+
const state = parts[3]; // "0A" = LISTEN
|
|
79
|
+
const inode = parts[9];
|
|
80
|
+
if (!localAddr || state !== listenState || !inode)
|
|
81
|
+
continue;
|
|
82
|
+
if (!socketInodesSet.has(inode))
|
|
83
|
+
continue;
|
|
84
|
+
// Extract port from hex format (e.g., "0BB8" -> 3000)
|
|
85
|
+
const colonIndex = localAddr.indexOf(':');
|
|
86
|
+
if (colonIndex === -1)
|
|
87
|
+
continue;
|
|
88
|
+
const portHex = localAddr.slice(colonIndex + 1);
|
|
89
|
+
if (!portHex)
|
|
90
|
+
continue;
|
|
91
|
+
const port = parsePort(portHex, 16);
|
|
92
|
+
if (port !== undefined) {
|
|
93
|
+
inodeToPort.set(inode, port);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
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
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// File might not exist (e.g., no IPv6 support) - continue to next file
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
2
111
|
/**
|
|
3
112
|
* Gets the port number that the process is listening on.
|
|
4
113
|
* @returns The port number that the process is listening on, or undefined if the process is not listening on any port.
|
|
@@ -8,9 +117,12 @@ export async function getPort() {
|
|
|
8
117
|
let port;
|
|
9
118
|
try {
|
|
10
119
|
switch (platform) {
|
|
11
|
-
case 'linux':
|
|
120
|
+
case 'linux': {
|
|
121
|
+
port = await getLinuxPort(pid);
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
12
124
|
case 'darwin': {
|
|
13
|
-
const
|
|
125
|
+
const { stdout } = await execFileAsync('lsof', [
|
|
14
126
|
'-a',
|
|
15
127
|
'-i',
|
|
16
128
|
'-P',
|
|
@@ -18,21 +130,36 @@ export async function getPort() {
|
|
|
18
130
|
'-p',
|
|
19
131
|
pid.toString(),
|
|
20
132
|
]);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
25
152
|
break;
|
|
26
153
|
}
|
|
27
154
|
case 'win32': {
|
|
28
155
|
// Use cmd to run the piped command
|
|
29
|
-
const
|
|
156
|
+
const { stdout } = await execFileAsync('cmd', [
|
|
30
157
|
'/c',
|
|
31
158
|
`netstat -ano | findstr ${pid} | findstr LISTENING`,
|
|
32
159
|
]);
|
|
33
|
-
const
|
|
34
|
-
if (
|
|
35
|
-
const lines =
|
|
160
|
+
const trimmedOutput = stdout.trim();
|
|
161
|
+
if (trimmedOutput) {
|
|
162
|
+
const lines = trimmedOutput.split('\n');
|
|
36
163
|
for (const line of lines) {
|
|
37
164
|
// Extract port from the local address column
|
|
38
165
|
// Matches both IPv4 (e.g., "127.0.0.1:3000") and IPv6 bracket notation (e.g., "[::1]:3000")
|
|
@@ -40,8 +167,10 @@ export async function getPort() {
|
|
|
40
167
|
.trim()
|
|
41
168
|
.match(/^\s*TCP\s+(?:\[[\da-f:]+\]|[\d.]+):(\d+)\s+/i);
|
|
42
169
|
if (match) {
|
|
43
|
-
port =
|
|
44
|
-
|
|
170
|
+
port = parsePort(match[1]);
|
|
171
|
+
if (port !== undefined) {
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
45
174
|
}
|
|
46
175
|
}
|
|
47
176
|
}
|
package/dist/get-port.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-port.js","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
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.
|
|
4
|
+
"version": "4.0.1-beta.5",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"files": [
|
|
@@ -33,7 +33,6 @@
|
|
|
33
33
|
"@workflow/tsconfig": "4.0.1-beta.0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"execa": "9.6.0",
|
|
37
36
|
"ms": "2.1.3"
|
|
38
37
|
},
|
|
39
38
|
"scripts": {
|