@monotykamary/localterm-server 1.6.0 → 1.9.0
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/constants.d.ts +4 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +25 -16
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -14
- package/dist/index.js.map +1 -1
- package/dist/security.d.ts +3 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +87 -1
- package/dist/security.js.map +1 -1
- package/dist/session.d.ts +4 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +43 -11
- package/dist/session.js.map +1 -1
- package/package.json +9 -9
- package/LICENSE +0 -21
package/dist/constants.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const DEFAULT_PORT = 3417;
|
|
2
|
-
export declare const DEFAULT_HOST = "
|
|
2
|
+
export declare const DEFAULT_HOST = "127.0.0.1";
|
|
3
3
|
export declare const DEFAULT_COLS = 120;
|
|
4
4
|
export declare const DEFAULT_ROWS = 32;
|
|
5
5
|
export declare const DEFAULT_SHELL_FALLBACK = "/bin/sh";
|
|
@@ -22,6 +22,7 @@ export declare const MAX_OUTPUT_BYTES: number;
|
|
|
22
22
|
export declare const MAX_FOREGROUND_LENGTH = 256;
|
|
23
23
|
export declare const MAX_TITLE_LENGTH: number;
|
|
24
24
|
export declare const MAX_NOTIFICATION_LENGTH = 1024;
|
|
25
|
+
export declare const MAX_PENDING_PARSE_BYTES = 4096;
|
|
25
26
|
export declare const MAX_COLS = 1000;
|
|
26
27
|
export declare const MAX_ROWS = 1000;
|
|
27
28
|
export declare const MAX_CONCURRENT_SESSIONS = 64;
|
|
@@ -29,7 +30,8 @@ export declare const WS_OUTBOUND_PAUSE_HIGH_WATER_BYTES: number;
|
|
|
29
30
|
export declare const WS_OUTBOUND_RESUME_LOW_WATER_BYTES: number;
|
|
30
31
|
export declare const WS_OUTBOUND_DRAIN_POLL_MS = 50;
|
|
31
32
|
export declare const WS_BACKPRESSURE_THRESHOLD_BYTES: number;
|
|
32
|
-
export declare const
|
|
33
|
+
export declare const OUTPUT_BATCH_FLUSH_BYTES: number;
|
|
34
|
+
export declare const OUTPUT_BATCH_WINDOW_MS = 2;
|
|
33
35
|
export declare const WS_HEARTBEAT_INTERVAL_MS = 20000;
|
|
34
36
|
export declare const WS_HEARTBEAT_TIMEOUT_MS = 60000;
|
|
35
37
|
export declare const SERVER_STOP_GRACE_MS = 1500;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAC1C,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,UAgB5B,CAAC;AAEF,eAAO,MAAM,eAAe,QAAY,CAAC;AACzC,eAAO,MAAM,gBAAgB,QAAkB,CAAC;AAChD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,gBAAgB,QAAW,CAAC;AACzC,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAO1C,eAAO,MAAM,kCAAkC,QAAkB,CAAC;AAClE,eAAO,MAAM,kCAAkC,QAAkB,CAAC;AAClE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,+BAA+B,QAAmB,CAAC;AAUhE,eAAO,MAAM,wBAAwB,QAAW,CAAC;AAajD,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAOxC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAK9C,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAE1C,eAAO,MAAM,cAAc,aAAoE,CAAC;AAEhG,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,yBAAyB,OAAO,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const DEFAULT_PORT = 3417;
|
|
2
|
-
export const DEFAULT_HOST = "
|
|
2
|
+
export const DEFAULT_HOST = "127.0.0.1";
|
|
3
3
|
export const DEFAULT_COLS = 120;
|
|
4
4
|
export const DEFAULT_ROWS = 32;
|
|
5
5
|
export const DEFAULT_SHELL_FALLBACK = "/bin/sh";
|
|
@@ -18,6 +18,7 @@ export const TITLE_MAX_PATH_SEGMENTS = 1;
|
|
|
18
18
|
*/
|
|
19
19
|
export const PTY_ENV_DENYLIST = [
|
|
20
20
|
"LOCALTERM_DAEMON_CHILD",
|
|
21
|
+
"__LOCALTERM_ORIG_ZDOTDIR",
|
|
21
22
|
"TERM_PROGRAM",
|
|
22
23
|
"TERM_PROGRAM_VERSION",
|
|
23
24
|
"TERM_SESSION_ID",
|
|
@@ -37,6 +38,7 @@ export const MAX_OUTPUT_BYTES = 1 * 1024 * 1024;
|
|
|
37
38
|
export const MAX_FOREGROUND_LENGTH = 256;
|
|
38
39
|
export const MAX_TITLE_LENGTH = 4 * 1024;
|
|
39
40
|
export const MAX_NOTIFICATION_LENGTH = 1024;
|
|
41
|
+
export const MAX_PENDING_PARSE_BYTES = 4096;
|
|
40
42
|
export const MAX_COLS = 1000;
|
|
41
43
|
export const MAX_ROWS = 1000;
|
|
42
44
|
export const MAX_CONCURRENT_SESSIONS = 64;
|
|
@@ -50,14 +52,27 @@ export const WS_OUTBOUND_PAUSE_HIGH_WATER_BYTES = 4 * 1024 * 1024;
|
|
|
50
52
|
export const WS_OUTBOUND_RESUME_LOW_WATER_BYTES = 1 * 1024 * 1024;
|
|
51
53
|
export const WS_OUTBOUND_DRAIN_POLL_MS = 50;
|
|
52
54
|
export const WS_BACKPRESSURE_THRESHOLD_BYTES = 64 * 1024 * 1024;
|
|
53
|
-
//
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
|
|
55
|
+
// Output batch early-flush threshold. During continuous high-throughput output
|
|
56
|
+
// (ASCII animations, cat of large files), waiting the full OUTPUT_BATCH_WINDOW_MS
|
|
57
|
+
// can accumulate hundreds of KB in one WebSocket message. Flushing when the
|
|
58
|
+
// batch passes this size keeps individual messages small, maintaining a steady
|
|
59
|
+
// data flow to the client. The value is calibrated to be generous enough for
|
|
60
|
+
// the largest single TUI frame (ink erase + repaint typically 3–6KB on a
|
|
61
|
+
// 120×40 terminal) so that the 2ms window can still coalesce those frames into
|
|
62
|
+
// one message before the size threshold is hit.
|
|
63
|
+
export const OUTPUT_BATCH_FLUSH_BYTES = 8 * 1024;
|
|
64
|
+
// Output batching window. The kernel PTY delivers child writes in 1024-byte
|
|
65
|
+
// chunks on macOS, and node-pty emits each chunk as a separate data event in
|
|
66
|
+
// its own event loop iteration — a setImmediate scheduled on the first chunk
|
|
67
|
+
// fires before the remaining chunks of the same child write are read. That
|
|
68
|
+
// split a single ink/TUI redraw frame (erase + repaint, ~3KB) across multiple
|
|
69
|
+
// WebSocket messages, and xterm.js rendering between them flashed the
|
|
70
|
+
// half-erased frame (visible flicker in cmd/Claude Code on every keypress).
|
|
71
|
+
// A small timer window lets all chunks of one frame (measured 0.02–0.8ms
|
|
72
|
+
// apart) coalesce into one message, which xterm.js parses atomically.
|
|
73
|
+
// For continuous high-throughput output, OUTPUT_BATCH_FLUSH_BYTES triggers an
|
|
74
|
+
// immediate flush regardless of the timer, keeping the data flowing.
|
|
75
|
+
export const OUTPUT_BATCH_WINDOW_MS = 2;
|
|
61
76
|
// Heartbeat: send a WS ping every N ms; if no pong arrives within the timeout
|
|
62
77
|
// we tear down the socket. Without this, half-open connections (laptop sleep,
|
|
63
78
|
// VPN dropout, kernel‑side TCP keepalives at 2h+) wedge the session — the
|
|
@@ -70,13 +85,7 @@ export const WS_HEARTBEAT_TIMEOUT_MS = 60_000;
|
|
|
70
85
|
// the daemon's SIGTERM path bounded so the CLI's force-exit fallback never
|
|
71
86
|
// fires for normal shutdowns.
|
|
72
87
|
export const SERVER_STOP_GRACE_MS = 1_500;
|
|
73
|
-
export const LOOPBACK_HOSTS = new Set([
|
|
74
|
-
"127.0.0.1",
|
|
75
|
-
"localhost",
|
|
76
|
-
"::1",
|
|
77
|
-
"[::1]",
|
|
78
|
-
"0:0:0:0:0:0:0:1",
|
|
79
|
-
]);
|
|
88
|
+
export const LOOPBACK_HOSTS = new Set(["127.0.0.1", "localhost", "[::1]", "[0:0:0:0:0:0:0:1]"]);
|
|
80
89
|
export const HTTP_STATUS_NOT_FOUND = 404;
|
|
81
90
|
export const WS_READY_STATE_OPEN = 1;
|
|
82
91
|
export const WS_CLOSE_POLICY_VIOLATION = 1008;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export type { Session } from "./session.js";
|
|
|
15
15
|
export type { SessionRegistry } from "./session-registry.js";
|
|
16
16
|
export type * from "./types.js";
|
|
17
17
|
export { DEFAULT_HOST, DEFAULT_PORT, WS_CLOSE_BACKPRESSURE } from "./constants.js";
|
|
18
|
-
export { isLoopbackHost } from "./security.js";
|
|
18
|
+
export { isLoopbackHost, isPrivateHost, isAllowedSourceIp } from "./security.js";
|
|
19
19
|
export { healthSchema } from "./schemas.js";
|
|
20
20
|
export { ServerErrorException, formatServerError, isServerErrorException, serverError, } from "./errors.js";
|
|
21
21
|
export type { ServerError, ServerErrorCode, ServerErrorKind } from "./errors.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AA+DD,eAAO,MAAM,YAAY,GAAU,UAAS,aAAkB,KAAG,OAAO,CAAC,aAAa,CA6VrF,CAAC;AAEF,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,10 +3,11 @@ import path from "node:path";
|
|
|
3
3
|
import { serve } from "@hono/node-server";
|
|
4
4
|
import { createNodeWebSocket } from "@hono/node-ws";
|
|
5
5
|
import { Hono } from "hono";
|
|
6
|
-
import { DEFAULT_HOST, DEFAULT_PORT, HTTP_STATUS_NOT_FOUND, MAX_CONCURRENT_SESSIONS,
|
|
6
|
+
import { DEFAULT_HOST, DEFAULT_PORT, HTTP_STATUS_NOT_FOUND, MAX_CONCURRENT_SESSIONS, OUTPUT_BATCH_FLUSH_BYTES, OUTPUT_BATCH_WINDOW_MS, SERVER_STOP_GRACE_MS, WS_BACKPRESSURE_THRESHOLD_BYTES, WS_CLOSE_BACKPRESSURE, WS_CLOSE_CAPACITY_REACHED, WS_CLOSE_POLICY_VIOLATION, WS_HEARTBEAT_INTERVAL_MS, WS_HEARTBEAT_TIMEOUT_MS, WS_OUTBOUND_DRAIN_POLL_MS, WS_OUTBOUND_PAUSE_HIGH_WATER_BYTES, WS_OUTBOUND_RESUME_LOW_WATER_BYTES, WS_READY_STATE_OPEN, } from "./constants.js";
|
|
7
7
|
import { ServerErrorException, serverError } from "./errors.js";
|
|
8
8
|
import { clientToServerMessageSchema } from "./schemas.js";
|
|
9
9
|
import { Session } from "./session.js";
|
|
10
|
+
import { createNetworkPolicyMiddleware, isAllowedSourceIp, isLoopbackHost } from "./security.js";
|
|
10
11
|
import { SessionRegistry } from "./session-registry.js";
|
|
11
12
|
import { resolveStaticAsset } from "./static-resolver.js";
|
|
12
13
|
const getRawBufferedAmount = (raw) => {
|
|
@@ -46,6 +47,15 @@ const onRawEvent = (raw, event, listener) => {
|
|
|
46
47
|
}
|
|
47
48
|
};
|
|
48
49
|
};
|
|
50
|
+
const extractRemoteAddress = (raw) => {
|
|
51
|
+
if (!raw || typeof raw !== "object")
|
|
52
|
+
return null;
|
|
53
|
+
const socket = Reflect.get(raw, "_socket");
|
|
54
|
+
if (!socket || typeof socket !== "object")
|
|
55
|
+
return null;
|
|
56
|
+
const addr = Reflect.get(socket, "remoteAddress");
|
|
57
|
+
return typeof addr === "string" ? addr : null;
|
|
58
|
+
};
|
|
49
59
|
const safeSend = (ws, payload) => {
|
|
50
60
|
if (ws.readyState !== WS_READY_STATE_OPEN)
|
|
51
61
|
return;
|
|
@@ -64,8 +74,10 @@ export const createServer = async (options = {}) => {
|
|
|
64
74
|
const port = options.port ?? DEFAULT_PORT;
|
|
65
75
|
const host = options.host ?? DEFAULT_HOST;
|
|
66
76
|
const staticRoot = typeof options.staticRoot === "string" ? path.resolve(options.staticRoot) : null;
|
|
77
|
+
const isLoopbackBind = isLoopbackHost(host);
|
|
67
78
|
const registry = new SessionRegistry();
|
|
68
79
|
const app = new Hono();
|
|
80
|
+
app.use("*", createNetworkPolicyMiddleware(host));
|
|
69
81
|
const { injectWebSocket, upgradeWebSocket, wss } = createNodeWebSocket({ app });
|
|
70
82
|
const api = new Hono();
|
|
71
83
|
api.get("/health", (context) => context.json({ ok: true, sessions: registry.size() }));
|
|
@@ -110,6 +122,13 @@ export const createServer = async (options = {}) => {
|
|
|
110
122
|
return {
|
|
111
123
|
onOpen(_event, ws) {
|
|
112
124
|
activeWs = ws;
|
|
125
|
+
if (!isLoopbackBind) {
|
|
126
|
+
const remoteAddress = extractRemoteAddress(ws.raw);
|
|
127
|
+
if (remoteAddress && !isAllowedSourceIp(remoteAddress, host)) {
|
|
128
|
+
ws.close(WS_CLOSE_POLICY_VIOLATION, "source IP not allowed");
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
113
132
|
if (registry.size() >= MAX_CONCURRENT_SESSIONS) {
|
|
114
133
|
ws.close(WS_CLOSE_CAPACITY_REACHED, "session capacity reached");
|
|
115
134
|
return;
|
|
@@ -169,9 +188,7 @@ export const createServer = async (options = {}) => {
|
|
|
169
188
|
outputBatchTimer = null;
|
|
170
189
|
if (!outputBatch)
|
|
171
190
|
return;
|
|
172
|
-
const payload = outputBatch
|
|
173
|
-
? `\x1b[?2026h${outputBatch}\x1b[?2026l`
|
|
174
|
-
: outputBatch;
|
|
191
|
+
const payload = outputBatch;
|
|
175
192
|
outputBatch = "";
|
|
176
193
|
safeSend(ws, { type: "output", data: payload });
|
|
177
194
|
if (!newSession.isPaused &&
|
|
@@ -180,13 +197,20 @@ export const createServer = async (options = {}) => {
|
|
|
180
197
|
ensureDrainPoll();
|
|
181
198
|
}
|
|
182
199
|
};
|
|
183
|
-
// Wire listeners
|
|
184
|
-
//
|
|
185
|
-
//
|
|
200
|
+
// Wire listeners so any emit from Session (current or future)
|
|
201
|
+
// reaches the client. Today node-pty's data/exit are async, but
|
|
202
|
+
// this guards against drift.
|
|
186
203
|
const onOutput = (data) => {
|
|
187
204
|
outputBatch += data;
|
|
188
|
-
if (
|
|
189
|
-
outputBatchTimer
|
|
205
|
+
if (outputBatch.length >= OUTPUT_BATCH_FLUSH_BYTES) {
|
|
206
|
+
if (outputBatchTimer !== null) {
|
|
207
|
+
clearTimeout(outputBatchTimer);
|
|
208
|
+
outputBatchTimer = null;
|
|
209
|
+
}
|
|
210
|
+
flushOutputBatch();
|
|
211
|
+
}
|
|
212
|
+
else if (outputBatchTimer === null) {
|
|
213
|
+
outputBatchTimer = setTimeout(flushOutputBatch, OUTPUT_BATCH_WINDOW_MS);
|
|
190
214
|
}
|
|
191
215
|
};
|
|
192
216
|
const onTitle = (title) => safeSend(ws, { type: "title", title });
|
|
@@ -195,7 +219,7 @@ export const createServer = async (options = {}) => {
|
|
|
195
219
|
const onNotification = (body) => safeSend(ws, { type: "notification", body });
|
|
196
220
|
const onExit = (code) => {
|
|
197
221
|
if (outputBatchTimer !== null) {
|
|
198
|
-
|
|
222
|
+
clearTimeout(outputBatchTimer);
|
|
199
223
|
outputBatchTimer = null;
|
|
200
224
|
}
|
|
201
225
|
flushOutputBatch();
|
|
@@ -242,7 +266,7 @@ export const createServer = async (options = {}) => {
|
|
|
242
266
|
},
|
|
243
267
|
onClose(event) {
|
|
244
268
|
if (outputBatchTimer !== null) {
|
|
245
|
-
|
|
269
|
+
clearTimeout(outputBatchTimer);
|
|
246
270
|
outputBatchTimer = null;
|
|
247
271
|
}
|
|
248
272
|
if (outputBatch && activeWs) {
|
|
@@ -266,7 +290,7 @@ export const createServer = async (options = {}) => {
|
|
|
266
290
|
},
|
|
267
291
|
onError(event) {
|
|
268
292
|
if (outputBatchTimer !== null) {
|
|
269
|
-
|
|
293
|
+
clearTimeout(outputBatchTimer);
|
|
270
294
|
outputBatchTimer = null;
|
|
271
295
|
}
|
|
272
296
|
if (outputBatch && activeWs) {
|
|
@@ -304,6 +328,7 @@ export const createServer = async (options = {}) => {
|
|
|
304
328
|
});
|
|
305
329
|
}
|
|
306
330
|
let httpServer = null;
|
|
331
|
+
let actualPort = port;
|
|
307
332
|
await new Promise((resolve, reject) => {
|
|
308
333
|
const handleError = (error) => {
|
|
309
334
|
reject(new ServerErrorException(serverError.listenFailed(host, port, error)));
|
|
@@ -313,6 +338,9 @@ export const createServer = async (options = {}) => {
|
|
|
313
338
|
hostname: host,
|
|
314
339
|
port,
|
|
315
340
|
}, () => {
|
|
341
|
+
const addr = node.address();
|
|
342
|
+
if (addr && typeof addr === "object")
|
|
343
|
+
actualPort = addr.port;
|
|
316
344
|
node.removeListener("error", handleError);
|
|
317
345
|
resolve();
|
|
318
346
|
});
|
|
@@ -366,10 +394,10 @@ export const createServer = async (options = {}) => {
|
|
|
366
394
|
});
|
|
367
395
|
});
|
|
368
396
|
};
|
|
369
|
-
return { port, host, registry, stop };
|
|
397
|
+
return { port: actualPort, host, registry, stop };
|
|
370
398
|
};
|
|
371
399
|
export { DEFAULT_HOST, DEFAULT_PORT, WS_CLOSE_BACKPRESSURE } from "./constants.js";
|
|
372
|
-
export { isLoopbackHost } from "./security.js";
|
|
400
|
+
export { isLoopbackHost, isPrivateHost, isAllowedSourceIp } from "./security.js";
|
|
373
401
|
export { healthSchema } from "./schemas.js";
|
|
374
402
|
export { ServerErrorException, formatServerError, isServerErrorException, serverError, } from "./errors.js";
|
|
375
403
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAmB,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,iCAAiC,EACjC,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,kCAAkC,EAClC,kCAAkC,EAClC,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAuB1D,MAAM,oBAAoB,GAAG,CAAC,GAAY,EAAU,EAAE;IACpD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACrD,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAY,EAAE,MAA4B,EAAW,EAAE;IAC5E,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,KAAa,EAAE,QAAoB,EAAuB,EAAE;IAC5F,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,IAAI,OAAO,EAAE,KAAK,UAAU,IAAI,OAAO,GAAG,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACvE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9B,OAAO,GAAG,EAAE;QACV,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,EAAmB,EAAE,OAA8B,EAAE,EAAE;IACvE,IAAI,EAAE,CAAC,UAAU,KAAK,mBAAmB;QAAE,OAAO;IAClD,IAAI,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,+BAA+B,EAAE,CAAC;QACnE,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,UAAyB,EAAE,EAA0B,EAAE;IACxF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAE1C,MAAM,UAAU,GACd,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnF,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAEhF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACvF,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACvF,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEvB,GAAG,CAAC,GAAG,CACL,KAAK,EACL,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,OAAO,GAAmB,IAAI,CAAC;QACnC,IAAI,QAAQ,GAA2B,IAAI,CAAC;QAC5C,IAAI,cAAc,GAA0B,IAAI,CAAC;QACjD,IAAI,cAAc,GAA0B,IAAI,CAAC;QACjD,IAAI,aAAa,GAAwB,IAAI,CAAC;QAC9C,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,gBAAgB,GAA4B,IAAI,CAAC;QAErD,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,IAAI,cAAc,KAAK,IAAI;gBAAE,OAAO;YACpC,aAAa,CAAC,cAAc,CAAC,CAAC;YAC9B,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC5B,aAAa,CAAC,cAAc,CAAC,CAAC;gBAC9B,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,EAAE,CAAC;gBAChB,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,YAAgC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,WAAW,EAAE;oBAAE,YAAY,GAAG,MAAM,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,4DAA4D;YAC9D,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,CAAC,MAAM,EAAE,EAAE;gBACf,QAAQ,GAAG,EAAE,CAAC;gBACd,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,uBAAuB,EAAE,CAAC;oBAC/C,EAAE,CAAC,KAAK,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,CAAC;oBAChE,OAAO;gBACT,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;gBACtD,OAAO,GAAG,UAAU,CAAC;gBACrB,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAE9B,oEAAoE;gBACpE,iEAAiE;gBACjE,mEAAmE;gBACnE,oEAAoE;gBACpE,gEAAgE;gBAChE,qBAAqB;gBACrB,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;oBAC9C,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1B,CAAC,CAAC,CAAC;gBACH,IAAI,aAAa,EAAE,CAAC;oBAClB,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;wBAChC,IAAI,EAAE,CAAC,UAAU,KAAK,mBAAmB;4BAAE,OAAO;wBAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;wBACvC,IAAI,MAAM,GAAG,uBAAuB,EAAE,CAAC;4BACrC,OAAO,CAAC,IAAI,CACV,qCAAqC,MAAM,WAAW,UAAU,CAAC,GAAG,gBAAgB,CACrF,CAAC;4BACF,mBAAmB,EAAE,CAAC;4BACtB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC;gCAAE,EAAE,CAAC,KAAK,EAAE,CAAC;4BACpD,OAAO;wBACT,CAAC;wBACD,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBAChC,CAAC,EAAE,wBAAwB,CAAC,CAAC;oBAC7B,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC3B,CAAC;gBAED,iEAAiE;gBACjE,+DAA+D;gBAC/D,iEAAiE;gBACjE,iEAAiE;gBACjE,2DAA2D;gBAC3D,iEAAiE;gBACjE,6DAA6D;gBAC7D,MAAM,eAAe,GAAG,GAAG,EAAE;oBAC3B,IAAI,cAAc,KAAK,IAAI;wBAAE,OAAO;oBACpC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;wBAChC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;4BACzB,aAAa,EAAE,CAAC;4BAChB,OAAO;wBACT,CAAC;wBACD,IAAI,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,kCAAkC,EAAE,CAAC;4BACvE,UAAU,CAAC,MAAM,EAAE,CAAC;4BACpB,aAAa,EAAE,CAAC;wBAClB,CAAC;oBACH,CAAC,EAAE,yBAAyB,CAAC,CAAC;oBAC9B,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC3B,CAAC,CAAC;gBAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;oBAC5B,gBAAgB,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,WAAW;wBAAE,OAAO;oBACzB,MAAM,OAAO,GACX,WAAW,CAAC,MAAM,IAAI,iCAAiC;wBACrD,CAAC,CAAC,cAAc,WAAW,aAAa;wBACxC,CAAC,CAAC,WAAW,CAAC;oBAClB,WAAW,GAAG,EAAE,CAAC;oBACjB,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBAChD,IACE,CAAC,UAAU,CAAC,QAAQ;wBACpB,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,kCAAkC,EAClE,CAAC;wBACD,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnB,eAAe,EAAE,CAAC;oBACpB,CAAC;gBACH,CAAC,CAAC;gBAEF,mEAAmE;gBACnE,6DAA6D;gBAC7D,iEAAiE;gBACjE,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;oBAChC,WAAW,IAAI,IAAI,CAAC;oBACpB,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;wBAC9B,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC,CAAC;gBACF,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1E,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBAClE,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAE,EAAE,CAC9C,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;gBAChD,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtF,MAAM,MAAM,GAAG,CAAC,IAAmB,EAAE,EAAE;oBACrC,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;wBAC9B,cAAc,CAAC,gBAAgB,CAAC,CAAC;wBACjC,gBAAgB,GAAG,IAAI,CAAC;oBAC1B,CAAC;oBACD,gBAAgB,EAAE,CAAC;oBACnB,aAAa,EAAE,CAAC;oBAChB,mBAAmB,EAAE,CAAC;oBACtB,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACb,CAAC,CAAC;gBACF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAClC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAChC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC5B,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBAC1C,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;gBAC9C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAE9B,QAAQ,CAAC,EAAE,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,SAAS,EAAE,UAAU,CAAC,aAAa;oBACnC,GAAG,EAAE,UAAU,CAAC,GAAG;oBACnB,GAAG,EAAE,UAAU,CAAC,GAAG;oBACnB,KAAK,EAAE,UAAU,CAAC,oBAAoB;iBACvC,CAAC,CAAC;YACL,CAAC;YACD,SAAS,CAAC,KAAK;gBACb,IAAI,CAAC,OAAO;oBAAE,OAAO;gBACrB,IAAI,UAAmB,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChF,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO;gBACT,CAAC;gBACD,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO;gBAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACjC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CACZ,MAAM,CAAC,IAAI,CAAC,IAAI,EAChB,MAAM,CAAC,IAAI,CAAC,IAAI,EAChB,MAAM,CAAC,IAAI,CAAC,UAAU,EACtB,MAAM,CAAC,IAAI,CAAC,WAAW,CACxB,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,CAAC,KAAK;gBACX,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;oBAC9B,cAAc,CAAC,gBAAgB,CAAC,CAAC;oBACjC,gBAAgB,GAAG,IAAI,CAAC;gBAC1B,CAAC;gBACD,IAAI,WAAW,IAAI,QAAQ,EAAE,CAAC;oBAC5B,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;oBAC1D,WAAW,GAAG,EAAE,CAAC;gBACnB,CAAC;gBACD,aAAa,EAAE,CAAC;gBAChB,mBAAmB,EAAE,CAAC;gBACtB,gEAAgE;gBAChE,+DAA+D;gBAC/D,2DAA2D;gBAC3D,2BAA2B;gBAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,CAAC,IAAI,CACV,YAAY,QAAQ,UAAU,KAAK,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAC7G,CAAC;gBACF,IAAI,CAAC,OAAO;oBAAE,OAAO;gBACrB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC7B,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,GAAG,IAAI,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,KAAK;gBACX,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;oBAC9B,cAAc,CAAC,gBAAgB,CAAC,CAAC;oBACjC,gBAAgB,GAAG,IAAI,CAAC;gBAC1B,CAAC;gBACD,IAAI,WAAW,IAAI,QAAQ,EAAE,CAAC;oBAC5B,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;oBAC1D,WAAW,GAAG,EAAE,CAAC;gBACnB,CAAC;gBACD,aAAa,EAAE,CAAC;gBAChB,mBAAmB,EAAE,CAAC;gBACtB,MAAM,UAAU,GACd,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACtF,MAAM,OAAO,GAAG,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtF,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,WAAW,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,OAAO;oBAAE,OAAO;gBACrB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC7B,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,GAAG,IAAI,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;YACvB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACrC,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrE,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;YACpE,OAAO,IAAI,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC9C,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,WAAW,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,GAAsB,IAAI,CAAC;IACzC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,EAAE;YACnC,MAAM,CAAC,IAAI,oBAAoB,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,CAChB;YACE,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,IAAI;SACL,EACD,GAAG,EAAE;YACH,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC,CACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChC,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,oBAAoB,CAC5B,WAAW,CAAC,YAAY,CACtB,IAAI,EACJ,IAAI,EACJ,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAClE,CACF,CAAC;IACJ,CAAC;IACD,eAAe,CAAC,UAAU,CAAC,CAAC;IAE5B,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtB,oEAAoE;QACpE,0EAA0E;QAC1E,0EAA0E;QAC1E,0BAA0B;QAC1B,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,MAAM,MAAM,GAAG,UAAU,CAAC;QAC1B,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACvE,IAAI,OAAO,mBAAmB,KAAK,UAAU,EAAE,CAAC;YAC9C,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;YACvD,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC,CAAC;AAKF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,GACZ,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/security.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { Context, MiddlewareHandler } from "hono";
|
|
2
2
|
export declare const isLoopbackHost: (host: string) => boolean;
|
|
3
|
+
export declare const isPrivateHost: (host: string) => boolean;
|
|
3
4
|
export declare const enforceLoopback: (context: Context) => Response | null;
|
|
4
5
|
export declare const loopbackMiddleware: MiddlewareHandler;
|
|
6
|
+
export declare const createNetworkPolicyMiddleware: (bindHost: string) => MiddlewareHandler;
|
|
7
|
+
export declare const isAllowedSourceIp: (remoteAddress: string, bindHost: string) => boolean;
|
|
5
8
|
//# sourceMappingURL=security.d.ts.map
|
package/dist/security.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AA+DvD,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,OAA8C,CAAC;AAO7F,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAS5C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,OAAO,KAAG,QAAQ,GAAG,IAc7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,iBAIhC,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,UAAU,MAAM,KAAG,iBAmBhE,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,eAAe,MAAM,EAAE,UAAU,MAAM,KAAG,OAS3E,CAAC"}
|
package/dist/security.js
CHANGED
|
@@ -9,6 +9,9 @@ const stripPort = (hostHeader) => {
|
|
|
9
9
|
const end = trimmed.indexOf("]");
|
|
10
10
|
return end === -1 ? trimmed : trimmed.slice(0, end + 1);
|
|
11
11
|
}
|
|
12
|
+
if (trimmed.includes(":") && !trimmed.includes(".")) {
|
|
13
|
+
return `[${trimmed}]`;
|
|
14
|
+
}
|
|
12
15
|
const colon = trimmed.lastIndexOf(":");
|
|
13
16
|
if (colon === -1)
|
|
14
17
|
return trimmed;
|
|
@@ -35,7 +38,60 @@ const isLoopback = (hostname) => {
|
|
|
35
38
|
return true;
|
|
36
39
|
return false;
|
|
37
40
|
};
|
|
38
|
-
|
|
41
|
+
const IPV4_OCTET = /(\d+)/g;
|
|
42
|
+
const isPrivateIpv4 = (ip) => {
|
|
43
|
+
const octets = [];
|
|
44
|
+
let match;
|
|
45
|
+
while ((match = IPV4_OCTET.exec(ip)) !== null) {
|
|
46
|
+
octets.push(Number.parseInt(match[1], 10));
|
|
47
|
+
}
|
|
48
|
+
if (octets.length !== 4)
|
|
49
|
+
return false;
|
|
50
|
+
const [first, second] = octets;
|
|
51
|
+
if (first === 10)
|
|
52
|
+
return true;
|
|
53
|
+
if (first === 172 && second >= 16 && second <= 31)
|
|
54
|
+
return true;
|
|
55
|
+
if (first === 192 && second === 168)
|
|
56
|
+
return true;
|
|
57
|
+
if (first === 100 && second >= 64 && second <= 127)
|
|
58
|
+
return true;
|
|
59
|
+
if (first === 127)
|
|
60
|
+
return true;
|
|
61
|
+
if (first === 169 && second === 254)
|
|
62
|
+
return true;
|
|
63
|
+
return false;
|
|
64
|
+
};
|
|
65
|
+
const isPrivateIpv6 = (hostname) => {
|
|
66
|
+
if (hostname === "::1")
|
|
67
|
+
return true;
|
|
68
|
+
if (hostname.startsWith("fc") || hostname.startsWith("fd"))
|
|
69
|
+
return true;
|
|
70
|
+
if (hostname.startsWith("fe80"))
|
|
71
|
+
return true;
|
|
72
|
+
if (hostname.startsWith("::ffff:"))
|
|
73
|
+
return isPrivateIpv4(hostname.slice(7));
|
|
74
|
+
return false;
|
|
75
|
+
};
|
|
76
|
+
export const isLoopbackHost = (host) => isLoopback(normalizeBareIpv6(host));
|
|
77
|
+
const normalizeBareIpv6 = (host) => {
|
|
78
|
+
if (host.includes(":") && !host.startsWith("["))
|
|
79
|
+
return `[${host}]`;
|
|
80
|
+
return host;
|
|
81
|
+
};
|
|
82
|
+
export const isPrivateHost = (host) => {
|
|
83
|
+
const normalized = normalizeBareIpv6(host);
|
|
84
|
+
if (isLoopback(normalized))
|
|
85
|
+
return true;
|
|
86
|
+
if (normalized.endsWith(".localhost"))
|
|
87
|
+
return true;
|
|
88
|
+
const bare = normalized.startsWith("[") && normalized.endsWith("]") ? normalized.slice(1, -1) : normalized;
|
|
89
|
+
if (bare.includes(":"))
|
|
90
|
+
return isPrivateIpv6(bare);
|
|
91
|
+
if (/^\d{1,3}(\.\d{1,3}){3}$/.test(bare))
|
|
92
|
+
return isPrivateIpv4(bare);
|
|
93
|
+
return false;
|
|
94
|
+
};
|
|
39
95
|
export const enforceLoopback = (context) => {
|
|
40
96
|
const hostHeader = context.req.header("host");
|
|
41
97
|
const hostname = stripPort(hostHeader);
|
|
@@ -57,4 +113,34 @@ export const loopbackMiddleware = async (context, next) => {
|
|
|
57
113
|
return blocked;
|
|
58
114
|
await next();
|
|
59
115
|
};
|
|
116
|
+
export const createNetworkPolicyMiddleware = (bindHost) => {
|
|
117
|
+
const loopbackBind = isLoopback(bindHost);
|
|
118
|
+
const hostAllowed = loopbackBind ? isLoopback : isPrivateHost;
|
|
119
|
+
return async (context, next) => {
|
|
120
|
+
const hostHeader = context.req.header("host");
|
|
121
|
+
const hostname = stripPort(hostHeader);
|
|
122
|
+
if (!hostname || !hostAllowed(hostname)) {
|
|
123
|
+
return new Response("forbidden: host not allowed", { status: 403 });
|
|
124
|
+
}
|
|
125
|
+
const origin = context.req.header("origin");
|
|
126
|
+
if (origin !== undefined) {
|
|
127
|
+
const originHost = originHostname(origin);
|
|
128
|
+
if (!originHost || !hostAllowed(originHost)) {
|
|
129
|
+
return new Response("forbidden: cross-origin", { status: 403 });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
await next();
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
export const isAllowedSourceIp = (remoteAddress, bindHost) => {
|
|
136
|
+
if (isLoopback(bindHost))
|
|
137
|
+
return true;
|
|
138
|
+
const bare = remoteAddress.startsWith("[") && remoteAddress.endsWith("]")
|
|
139
|
+
? remoteAddress.slice(1, -1)
|
|
140
|
+
: remoteAddress;
|
|
141
|
+
const withoutZone = bare.split("%")[0];
|
|
142
|
+
if (withoutZone.includes(":"))
|
|
143
|
+
return isPrivateIpv6(withoutZone) || isLoopback(withoutZone);
|
|
144
|
+
return isPrivateIpv4(withoutZone) || isLoopback(withoutZone);
|
|
145
|
+
};
|
|
60
146
|
//# sourceMappingURL=security.js.map
|
package/dist/security.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,SAAS,GAAG,CAAC,UAA8B,EAAiB,EAAE;IAClE,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IACjC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,YAAgC,EAAiB,EAAE;IACzE,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,YAAY,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,QAAuB,EAAW,EAAE;IACtD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export declare class Session extends EventEmitter<SessionEvents> {
|
|
|
22
22
|
private lastEmittedTitle;
|
|
23
23
|
private lastEmittedCwd;
|
|
24
24
|
private lastEmittedForeground;
|
|
25
|
+
private hookCleanupPaths;
|
|
26
|
+
private pendingParse;
|
|
25
27
|
constructor(input: SpawnPtyInput);
|
|
26
28
|
get pid(): number;
|
|
27
29
|
get shellBaseName(): string;
|
|
@@ -38,10 +40,12 @@ export declare class Session extends EventEmitter<SessionEvents> {
|
|
|
38
40
|
dispose(): void;
|
|
39
41
|
private emitInitialMetadata;
|
|
40
42
|
private onPtyOutput;
|
|
43
|
+
private hasIncompleteOsc;
|
|
41
44
|
private prepareOsc7Hook;
|
|
42
45
|
private zshOsc7ChpwdFunction;
|
|
43
46
|
private bashOsc7Function;
|
|
44
47
|
private inferForegroundProcess;
|
|
48
|
+
private cleanUpHookFiles;
|
|
45
49
|
}
|
|
46
50
|
export {};
|
|
47
51
|
//# sourceMappingURL=session.d.ts.map
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsB3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhD,UAAU,aAAa;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,qBAAa,OAAQ,SAAQ,YAAY,CAAC,aAAa,CAAC;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,YAAY,CAAM;gBAEd,KAAK,EAAE,aAAa;IAqDhC,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKzB,KAAK,IAAI,IAAI;IAUb,MAAM,IAAI,IAAI;IAUd,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAanF,IAAI,CAAC,MAAM,GAAE,MAAM,CAAC,OAAkB,GAAG,IAAI;IAS7C,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,WAAW;IAkDnB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IA6CvB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,gBAAgB;CAUzB"}
|
package/dist/session.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
|
-
import { mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { spawn } from "node-pty";
|
|
6
|
-
import { COLORTERM_VALUE, DEFAULT_COLS, DEFAULT_ROWS, LOCALTERM_VALUE, MAX_NOTIFICATION_LENGTH, PTY_ENV_DENYLIST, TERM_TYPE, } from "./constants.js";
|
|
6
|
+
import { COLORTERM_VALUE, DEFAULT_COLS, DEFAULT_ROWS, LOCALTERM_VALUE, MAX_NOTIFICATION_LENGTH, MAX_PENDING_PARSE_BYTES, PTY_ENV_DENYLIST, TERM_TYPE, } from "./constants.js";
|
|
7
7
|
// Titles are emitted on a dedicated `title` event so they travel as a separate
|
|
8
8
|
// WebSocket frame. We deliberately do NOT splice OSC sequences into the PTY
|
|
9
9
|
// output stream — doing so corrupts in-flight escape sequences from modern
|
|
@@ -30,6 +30,8 @@ export class Session extends EventEmitter {
|
|
|
30
30
|
lastEmittedTitle = "";
|
|
31
31
|
lastEmittedCwd = "";
|
|
32
32
|
lastEmittedForeground = undefined;
|
|
33
|
+
hookCleanupPaths = [];
|
|
34
|
+
pendingParse = "";
|
|
33
35
|
constructor(input) {
|
|
34
36
|
super();
|
|
35
37
|
ensureSpawnHelperExecutable();
|
|
@@ -155,6 +157,7 @@ export class Session extends EventEmitter {
|
|
|
155
157
|
dispose() {
|
|
156
158
|
this.kill();
|
|
157
159
|
this.exited = true;
|
|
160
|
+
this.cleanUpHookFiles();
|
|
158
161
|
this.removeAllListeners();
|
|
159
162
|
}
|
|
160
163
|
emitInitialMetadata() {
|
|
@@ -162,22 +165,21 @@ export class Session extends EventEmitter {
|
|
|
162
165
|
if (initialTitle) {
|
|
163
166
|
this.initialTitle = initialTitle;
|
|
164
167
|
this.lastEmittedTitle = initialTitle;
|
|
165
|
-
this.emit("title", initialTitle);
|
|
166
168
|
}
|
|
167
169
|
this.lastEmittedCwd = this.cwd;
|
|
168
|
-
this.emit("cwd", this.cwd);
|
|
169
170
|
this.lastEmittedForeground = null;
|
|
170
|
-
this.emit("foreground", null);
|
|
171
171
|
}
|
|
172
172
|
onPtyOutput(data) {
|
|
173
|
-
const
|
|
173
|
+
const combined = this.pendingParse + data;
|
|
174
|
+
this.pendingParse = "";
|
|
175
|
+
const osc7Path = parseOsc7FromChunk(combined);
|
|
174
176
|
let cwdChanged = false;
|
|
175
177
|
if (osc7Path && osc7Path !== this.lastEmittedCwd) {
|
|
176
178
|
this.lastEmittedCwd = osc7Path;
|
|
177
179
|
this.emit("cwd", osc7Path);
|
|
178
180
|
cwdChanged = true;
|
|
179
181
|
}
|
|
180
|
-
const oscTitle = parseOscTitleFromChunk(
|
|
182
|
+
const oscTitle = parseOscTitleFromChunk(combined);
|
|
181
183
|
if (oscTitle) {
|
|
182
184
|
const trimmed = oscTitle.trim();
|
|
183
185
|
if (trimmed && trimmed !== this.lastEmittedTitle) {
|
|
@@ -192,7 +194,7 @@ export class Session extends EventEmitter {
|
|
|
192
194
|
this.emit("title", cwdTitle);
|
|
193
195
|
}
|
|
194
196
|
}
|
|
195
|
-
const altScreen = parseAltScreenFromChunk(
|
|
197
|
+
const altScreen = parseAltScreenFromChunk(combined);
|
|
196
198
|
if (altScreen !== null) {
|
|
197
199
|
const nextForeground = altScreen ? this.inferForegroundProcess() : null;
|
|
198
200
|
if (nextForeground !== this.lastEmittedForeground) {
|
|
@@ -200,10 +202,24 @@ export class Session extends EventEmitter {
|
|
|
200
202
|
this.emit("foreground", nextForeground);
|
|
201
203
|
}
|
|
202
204
|
}
|
|
203
|
-
const notifications = parseOscNotificationsFromChunk(
|
|
205
|
+
const notifications = parseOscNotificationsFromChunk(combined);
|
|
204
206
|
for (const body of notifications) {
|
|
205
207
|
this.emit("notification", body.slice(0, MAX_NOTIFICATION_LENGTH));
|
|
206
208
|
}
|
|
209
|
+
const lastEsc = combined.lastIndexOf("\x1b");
|
|
210
|
+
if (lastEsc !== -1 && combined.length - lastEsc <= MAX_PENDING_PARSE_BYTES) {
|
|
211
|
+
const tail = combined.slice(lastEsc);
|
|
212
|
+
if (this.hasIncompleteOsc(tail)) {
|
|
213
|
+
this.pendingParse = tail;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
hasIncompleteOsc(tail) {
|
|
218
|
+
if (tail.length < 2)
|
|
219
|
+
return true;
|
|
220
|
+
if (tail[1] !== "]")
|
|
221
|
+
return false;
|
|
222
|
+
return tail.indexOf("\x07", 2) === -1 && tail.indexOf("\x1b\\", 2) === -1;
|
|
207
223
|
}
|
|
208
224
|
prepareOsc7Hook(shellName, env) {
|
|
209
225
|
const hookId = `${process.pid}-${Date.now()}`;
|
|
@@ -211,10 +227,13 @@ export class Session extends EventEmitter {
|
|
|
211
227
|
case "zsh": {
|
|
212
228
|
const hookDir = path.join(os.tmpdir(), `localterm-zdot-${hookId}`);
|
|
213
229
|
mkdirSync(hookDir, { recursive: true });
|
|
230
|
+
this.hookCleanupPaths.push(hookDir);
|
|
214
231
|
const hookScript = this.zshOsc7ChpwdFunction();
|
|
215
232
|
const userZdotdir = env.ZDOTDIR || os.homedir();
|
|
233
|
+
const escapedZdotdir = userZdotdir.replace(/'/g, "'\\''");
|
|
216
234
|
const lines = [
|
|
217
|
-
`source '${
|
|
235
|
+
`source '${escapedZdotdir}/.zshenv' 2>/dev/null`,
|
|
236
|
+
`source '${escapedZdotdir}/.zshrc' 2>/dev/null`,
|
|
218
237
|
hookScript,
|
|
219
238
|
"chpwd_functions=(${chpwd_functions[@]} __localterm_osc7_chpwd)",
|
|
220
239
|
"__localterm_osc7_chpwd",
|
|
@@ -222,13 +241,15 @@ export class Session extends EventEmitter {
|
|
|
222
241
|
writeFileSync(path.join(hookDir, ".zshrc"), lines.join("\n") + "\n", {
|
|
223
242
|
mode: 0o644,
|
|
224
243
|
});
|
|
225
|
-
return [[], { ZDOTDIR: hookDir }];
|
|
244
|
+
return [[], { ZDOTDIR: hookDir, __LOCALTERM_ORIG_ZDOTDIR: userZdotdir }];
|
|
226
245
|
}
|
|
227
246
|
case "bash": {
|
|
228
247
|
const hookPath = path.join(os.tmpdir(), `localterm-bashrc-${hookId}`);
|
|
248
|
+
this.hookCleanupPaths.push(hookPath);
|
|
229
249
|
const hookScript = this.bashOsc7Function();
|
|
230
250
|
const lines = [
|
|
231
251
|
"source /etc/bashrc 2>/dev/null",
|
|
252
|
+
"source /etc/bash.bashrc 2>/dev/null",
|
|
232
253
|
"source ~/.bashrc 2>/dev/null",
|
|
233
254
|
hookScript,
|
|
234
255
|
'PROMPT_COMMAND="${PROMPT_COMMAND:+${PROMPT_COMMAND};}__localterm_osc7_prompt"',
|
|
@@ -259,5 +280,16 @@ export class Session extends EventEmitter {
|
|
|
259
280
|
const raw = this.pty.process?.trim() ?? "";
|
|
260
281
|
return raw && raw !== this.shellName ? raw : null;
|
|
261
282
|
}
|
|
283
|
+
cleanUpHookFiles() {
|
|
284
|
+
for (const hookPath of this.hookCleanupPaths) {
|
|
285
|
+
try {
|
|
286
|
+
rmSync(hookPath, { recursive: true, force: true });
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
/* temp files may already be removed or inaccessible */
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
this.hookCleanupPaths = [];
|
|
293
|
+
}
|
|
262
294
|
}
|
|
263
295
|
//# sourceMappingURL=session.js.map
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monotykamary/localterm-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "PTY-backed HTTP/WebSocket server that powers localterm, built on Hono + node-pty.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hono",
|
|
@@ -45,11 +45,17 @@
|
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
|
+
"scripts": {
|
|
49
|
+
"build": "tsc -p tsconfig.build.json",
|
|
50
|
+
"dev": "tsc -p tsconfig.build.json --watch",
|
|
51
|
+
"test": "vp test --run",
|
|
52
|
+
"typecheck": "tsc --noEmit"
|
|
53
|
+
},
|
|
48
54
|
"dependencies": {
|
|
49
55
|
"@hono/node-server": "^1.14.0",
|
|
50
56
|
"@hono/node-ws": "^1.1.1",
|
|
51
57
|
"hono": "^4.6.13",
|
|
52
|
-
"node-pty": "
|
|
58
|
+
"node-pty": "1.1.0",
|
|
53
59
|
"zod": "^4.3.6"
|
|
54
60
|
},
|
|
55
61
|
"devDependencies": {
|
|
@@ -59,11 +65,5 @@
|
|
|
59
65
|
},
|
|
60
66
|
"engines": {
|
|
61
67
|
"node": ">=22"
|
|
62
|
-
},
|
|
63
|
-
"scripts": {
|
|
64
|
-
"build": "tsc -p tsconfig.build.json",
|
|
65
|
-
"dev": "tsc -p tsconfig.build.json --watch",
|
|
66
|
-
"test": "vp test --run",
|
|
67
|
-
"typecheck": "tsc --noEmit"
|
|
68
68
|
}
|
|
69
|
-
}
|
|
69
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Aiden Bai
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|