@inkbox/sdk 0.5.14 → 0.5.15
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/README.md +36 -0
- package/dist/tunnels/client/_listener.d.ts +12 -3
- package/dist/tunnels/client/_listener.d.ts.map +1 -1
- package/dist/tunnels/client/_listener.js +13 -23
- package/dist/tunnels/client/_listener.js.map +1 -1
- package/dist/tunnels/client/_runtime.d.ts +34 -2
- package/dist/tunnels/client/_runtime.d.ts.map +1 -1
- package/dist/tunnels/client/_runtime.js +335 -157
- package/dist/tunnels/client/_runtime.js.map +1 -1
- package/dist/tunnels/client/_ws.d.ts +6 -0
- package/dist/tunnels/client/_ws.d.ts.map +1 -1
- package/dist/tunnels/client/_ws.js +9 -0
- package/dist/tunnels/client/_ws.js.map +1 -1
- package/dist/tunnels/client/_ws_url_edge_bridge.d.ts.map +1 -1
- package/dist/tunnels/client/_ws_url_edge_bridge.js +6 -7
- package/dist/tunnels/client/_ws_url_edge_bridge.js.map +1 -1
- package/dist/tunnels/client/index.d.ts +2 -2
- package/dist/tunnels/client/index.d.ts.map +1 -1
- package/dist/tunnels/client/index.js +1 -1
- package/dist/tunnels/client/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1216,6 +1216,42 @@ await inkbox.phoneNumbers.release(num.id);
|
|
|
1216
1216
|
|
|
1217
1217
|
---
|
|
1218
1218
|
|
|
1219
|
+
## Tunnels
|
|
1220
|
+
|
|
1221
|
+
The Node-only data-plane runtime is exported separately so the main SDK remains
|
|
1222
|
+
browser-safe:
|
|
1223
|
+
|
|
1224
|
+
```ts
|
|
1225
|
+
import { connect } from "@inkbox/sdk/tunnels/connect";
|
|
1226
|
+
|
|
1227
|
+
const listener = await connect(inkbox, {
|
|
1228
|
+
name: "my-app",
|
|
1229
|
+
forwardTo: "http://127.0.0.1:8080",
|
|
1230
|
+
});
|
|
1231
|
+
|
|
1232
|
+
console.log(listener.publicUrl);
|
|
1233
|
+
console.log(listener.status); // idle, connecting, connected, ...
|
|
1234
|
+
console.log(listener.isConnected); // local runtime liveness
|
|
1235
|
+
console.log(listener.lastConnectedAt); // latest successful HELLO, or null
|
|
1236
|
+
await listener.wait();
|
|
1237
|
+
```
|
|
1238
|
+
|
|
1239
|
+
Transient connect, HELLO, transport, and PING failures retry with bounded
|
|
1240
|
+
establishment and exponential backoff. `status` is `idle`, `connecting`,
|
|
1241
|
+
`connected`, `reconnecting`, `closed`, or `superseded`; the timestamp remains
|
|
1242
|
+
available while reconnecting. These values describe the local listener, while
|
|
1243
|
+
`listener.tunnel` remains the bootstrap resource snapshot. Authentication,
|
|
1244
|
+
takeover, and unexpected fatal failures reject both `serveForever()` and
|
|
1245
|
+
`wait()`. Attach a rejection handler when calling `serveForever()` without
|
|
1246
|
+
awaiting it.
|
|
1247
|
+
|
|
1248
|
+
For in-process WebSocket handlers, planned drain throws `WsServerDraining`
|
|
1249
|
+
(`4500`) and unplanned tunnel connection loss throws `WsConnectionLost`
|
|
1250
|
+
(`1011`). Both extend `WsClosed` and advise the peer to reconnect. URL-forwarded
|
|
1251
|
+
WebSockets receive the matching CLOSE code on their local upstream connection.
|
|
1252
|
+
|
|
1253
|
+
---
|
|
1254
|
+
|
|
1219
1255
|
## Webhooks
|
|
1220
1256
|
|
|
1221
1257
|
Webhook delivery uses a dedicated subscription resource. Each
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
* via `wait()`.
|
|
7
7
|
*/
|
|
8
8
|
import type { Tunnel } from "../types.js";
|
|
9
|
-
import type { TunnelRuntime } from "./_runtime.js";
|
|
10
|
-
export type TunnelStatusCallback = (status:
|
|
9
|
+
import type { TunnelRuntime, TunnelRuntimeStatus } from "./_runtime.js";
|
|
10
|
+
export type TunnelStatusCallback = (status: Exclude<TunnelRuntimeStatus, "idle">) => void;
|
|
11
|
+
export type { TunnelRuntimeStatus } from "./_runtime.js";
|
|
11
12
|
/**
|
|
12
13
|
* Options that affect how the listener behaves around process signals.
|
|
13
14
|
*
|
|
@@ -31,6 +32,12 @@ export interface TunnelListener {
|
|
|
31
32
|
readonly publicUrl: string;
|
|
32
33
|
/** Snapshot of the resource record taken at bootstrap. Not refreshed. */
|
|
33
34
|
readonly tunnel: Tunnel;
|
|
35
|
+
/** Current local runtime lifecycle state. */
|
|
36
|
+
readonly status: TunnelRuntimeStatus;
|
|
37
|
+
/** Whether the local runtime currently has an active connection. */
|
|
38
|
+
readonly isConnected: boolean;
|
|
39
|
+
/** Time of the latest successful hello, retained while reconnecting. */
|
|
40
|
+
readonly lastConnectedAt: Date | null;
|
|
34
41
|
/** Block until shutdown. Resolves on clean close; throws on fatal. */
|
|
35
42
|
wait(): Promise<void>;
|
|
36
43
|
/** Drive a graceful shutdown. Idempotent. */
|
|
@@ -46,7 +53,6 @@ export declare class TunnelListenerImpl implements TunnelListener {
|
|
|
46
53
|
private readonly runtime;
|
|
47
54
|
private servePromise;
|
|
48
55
|
private closed;
|
|
49
|
-
private capturedError;
|
|
50
56
|
private installedSigintHandler;
|
|
51
57
|
private installedSigtermHandler;
|
|
52
58
|
private willExitOnSignal;
|
|
@@ -56,6 +62,9 @@ export declare class TunnelListenerImpl implements TunnelListener {
|
|
|
56
62
|
runtime: TunnelRuntime;
|
|
57
63
|
listenerOpts?: TunnelListenerOpts;
|
|
58
64
|
});
|
|
65
|
+
get status(): TunnelRuntimeStatus;
|
|
66
|
+
get isConnected(): boolean;
|
|
67
|
+
get lastConnectedAt(): Date | null;
|
|
59
68
|
serveForever(): Promise<void>;
|
|
60
69
|
wait(): Promise<void>;
|
|
61
70
|
close(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_listener.d.ts","sourceRoot":"","sources":["../../../src/tunnels/client/_listener.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"_listener.d.ts","sourceRoot":"","sources":["../../../src/tunnels/client/_listener.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,MAAM,oBAAoB,GAAG,CACjC,MAAM,EAAE,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,KACzC,IAAI,CAAC;AAEV,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IACtC,sEAAsE;IACtE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,6CAA6C;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,0CAA0C;IAC1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,qCAAqC;IACrC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,OAAO,CAAC,gBAAgB,CAAS;gBAErB,IAAI,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,aAAa,CAAC;QACvB,YAAY,CAAC,EAAE,kBAAkB,CAAC;KACnC;IAkDD,IAAI,MAAM,IAAI,mBAAmB,CAEhC;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,eAAe,IAAI,IAAI,GAAG,IAAI,CAEjC;IAED,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAe9B"}
|
|
@@ -11,7 +11,6 @@ export class TunnelListenerImpl {
|
|
|
11
11
|
runtime;
|
|
12
12
|
servePromise = null;
|
|
13
13
|
closed = false;
|
|
14
|
-
capturedError = null;
|
|
15
14
|
installedSigintHandler = null;
|
|
16
15
|
installedSigtermHandler = null;
|
|
17
16
|
willExitOnSignal = false;
|
|
@@ -63,26 +62,23 @@ export class TunnelListenerImpl {
|
|
|
63
62
|
process.on("SIGINT", handler);
|
|
64
63
|
}
|
|
65
64
|
}
|
|
66
|
-
|
|
65
|
+
get status() {
|
|
66
|
+
return this.runtime.status;
|
|
67
|
+
}
|
|
68
|
+
get isConnected() {
|
|
69
|
+
return this.runtime.isConnected;
|
|
70
|
+
}
|
|
71
|
+
get lastConnectedAt() {
|
|
72
|
+
return this.runtime.lastConnectedAt;
|
|
73
|
+
}
|
|
74
|
+
serveForever() {
|
|
67
75
|
if (this.servePromise !== null)
|
|
68
76
|
return this.servePromise;
|
|
69
|
-
this.servePromise = (
|
|
70
|
-
try {
|
|
71
|
-
await this.runtime.serveForever();
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
this.capturedError = err;
|
|
75
|
-
}
|
|
76
|
-
})();
|
|
77
|
+
this.servePromise = this.runtime.serveForever();
|
|
77
78
|
return this.servePromise;
|
|
78
79
|
}
|
|
79
80
|
async wait() {
|
|
80
81
|
await this.serveForever();
|
|
81
|
-
if (this.capturedError !== null) {
|
|
82
|
-
const err = this.capturedError;
|
|
83
|
-
this.capturedError = null;
|
|
84
|
-
throw err;
|
|
85
|
-
}
|
|
86
82
|
}
|
|
87
83
|
async close() {
|
|
88
84
|
return this.aclose();
|
|
@@ -91,6 +87,7 @@ export class TunnelListenerImpl {
|
|
|
91
87
|
if (this.closed)
|
|
92
88
|
return;
|
|
93
89
|
this.closed = true;
|
|
90
|
+
const settledServe = this.servePromise?.catch(() => undefined);
|
|
94
91
|
await this.runtime.aclose();
|
|
95
92
|
if (this.installedSigtermHandler !== null) {
|
|
96
93
|
process.off("SIGTERM", this.installedSigtermHandler);
|
|
@@ -100,14 +97,7 @@ export class TunnelListenerImpl {
|
|
|
100
97
|
process.off("SIGINT", this.installedSigintHandler);
|
|
101
98
|
this.installedSigintHandler = null;
|
|
102
99
|
}
|
|
103
|
-
|
|
104
|
-
try {
|
|
105
|
-
await this.servePromise;
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
/* swallow — captured in capturedError if relevant */
|
|
109
|
-
}
|
|
110
|
-
}
|
|
100
|
+
await settledServe;
|
|
111
101
|
}
|
|
112
102
|
}
|
|
113
103
|
//# sourceMappingURL=_listener.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_listener.js","sourceRoot":"","sources":["../../../src/tunnels/client/_listener.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"_listener.js","sourceRoot":"","sources":["../../../src/tunnels/client/_listener.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,9 @@ export declare const PING_INTERVAL_MS = 20000;
|
|
|
28
28
|
* a dead TCP doesn't strand the runtime past the next intake.
|
|
29
29
|
*/
|
|
30
30
|
export declare const PING_ACK_TIMEOUT_MS = 10000;
|
|
31
|
+
export declare const CONNECT_TIMEOUT_MS = 10000;
|
|
32
|
+
export declare const HELLO_TIMEOUT_MS = 15000;
|
|
33
|
+
export declare const INITIAL_BACKOFF_MS = 1000;
|
|
31
34
|
export declare const BACKOFF_CAP_SEC = 30;
|
|
32
35
|
export declare const BACKOFF_JITTER = 0.25;
|
|
33
36
|
export declare const DRAINING_CONNECTION_CLOSE_TIMEOUT_MS = 90000;
|
|
@@ -46,7 +49,8 @@ export declare class TunnelAuthError extends Error {
|
|
|
46
49
|
export declare class TunnelSupersededError extends Error {
|
|
47
50
|
constructor(message: string);
|
|
48
51
|
}
|
|
49
|
-
export type
|
|
52
|
+
export type TunnelRuntimeStatus = "idle" | "connecting" | "connected" | "reconnecting" | "closed" | "superseded";
|
|
53
|
+
export type StatusCallback = (status: Exclude<TunnelRuntimeStatus, "idle">) => void;
|
|
50
54
|
/**
|
|
51
55
|
* What this runtime forwards to. URL is required; `httpHandler` and
|
|
52
56
|
* `wsHandler` activate the in-process callable paths.
|
|
@@ -85,6 +89,13 @@ export interface TunnelRuntimeOpts {
|
|
|
85
89
|
rng?: () => number;
|
|
86
90
|
/** Internal injection point for tests; default is `node:http2` connect. */
|
|
87
91
|
http2Connect?: (authority: string, options: http2.ClientSessionOptions | http2.SecureClientSessionOptions) => ClientHttp2Session;
|
|
92
|
+
/** Internal timeout and scheduler injection points for tests. */
|
|
93
|
+
connectTimeoutMs?: number;
|
|
94
|
+
helloTimeoutMs?: number;
|
|
95
|
+
pingIntervalMs?: number;
|
|
96
|
+
pingAckTimeoutMs?: number;
|
|
97
|
+
handoffRedialBudgetMs?: number;
|
|
98
|
+
sleep?: (delayMs: number, signal?: AbortSignal) => Promise<void>;
|
|
88
99
|
}
|
|
89
100
|
/**
|
|
90
101
|
* The data-plane runtime. Construct with the bootstrap-derived
|
|
@@ -106,6 +117,12 @@ export declare class TunnelRuntime {
|
|
|
106
117
|
private readonly onStatus?;
|
|
107
118
|
private readonly rng;
|
|
108
119
|
private readonly http2Connect;
|
|
120
|
+
private readonly connectTimeoutMs;
|
|
121
|
+
private readonly helloTimeoutMs;
|
|
122
|
+
private readonly pingIntervalMs;
|
|
123
|
+
private readonly pingAckTimeoutMs;
|
|
124
|
+
private readonly handoffRedialBudgetMs;
|
|
125
|
+
private readonly sleep;
|
|
109
126
|
private active;
|
|
110
127
|
private readonly draining;
|
|
111
128
|
private nextConnId;
|
|
@@ -119,7 +136,18 @@ export declare class TunnelRuntime {
|
|
|
119
136
|
private passthroughDispatch;
|
|
120
137
|
private readonly undiciAgentCache;
|
|
121
138
|
private shutdownAbort;
|
|
139
|
+
private runtimeStatus;
|
|
140
|
+
private lastConnectedAtMs;
|
|
141
|
+
private hasConnected;
|
|
142
|
+
private coldAttempt;
|
|
143
|
+
private terminalError;
|
|
144
|
+
private pendingConnection;
|
|
145
|
+
private coldGeneration;
|
|
146
|
+
private readonly dispatchGeneration;
|
|
122
147
|
constructor(opts: TunnelRuntimeOpts);
|
|
148
|
+
get status(): TunnelRuntimeStatus;
|
|
149
|
+
get isConnected(): boolean;
|
|
150
|
+
get lastConnectedAt(): Date | null;
|
|
123
151
|
/**
|
|
124
152
|
* Drive the runtime forever. Reconnects with jittered exponential
|
|
125
153
|
* backoff; rejects only on permanent auth failure (rotate the
|
|
@@ -134,6 +162,10 @@ export declare class TunnelRuntime {
|
|
|
134
162
|
* `close()` would never resolve; we GOAWAY then destroy after 250ms.
|
|
135
163
|
*/
|
|
136
164
|
private closeConnection;
|
|
165
|
+
private publishConnectionClosed;
|
|
166
|
+
private destroyConnection;
|
|
167
|
+
private withPhaseTimeout;
|
|
168
|
+
private markConnected;
|
|
137
169
|
private runOnce;
|
|
138
170
|
/** Spawn a connection's intake pool + ping loop (cold open or handoff). */
|
|
139
171
|
private startServing;
|
|
@@ -171,7 +203,6 @@ export declare class TunnelRuntime {
|
|
|
171
203
|
/** Wait for a draining conn's bridges to finish, then close it. */
|
|
172
204
|
private drainOldConnection;
|
|
173
205
|
private openConnection;
|
|
174
|
-
private waitForSessionClose;
|
|
175
206
|
private sendHello;
|
|
176
207
|
private openStream;
|
|
177
208
|
private wake;
|
|
@@ -202,6 +233,7 @@ export declare class TunnelRuntime {
|
|
|
202
233
|
/** The active conn if it can take new streams, else the origin if it can. */
|
|
203
234
|
private pickReplyConnection;
|
|
204
235
|
private postResponse;
|
|
236
|
+
private dispatchIsCurrent;
|
|
205
237
|
private notifyStatus;
|
|
206
238
|
}
|
|
207
239
|
//# sourceMappingURL=_runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_runtime.d.ts","sourceRoot":"","sources":["../../../src/tunnels/client/_runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"_runtime.d.ts","sourceRoot":"","sources":["../../../src/tunnels/client/_runtime.ts"],"names":[],"mappings":"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"}
|