@procedures/client 0.7.0 → 0.8.1
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/CHANGELOG.md +107 -0
- package/README.md +115 -11
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapters/http/client/transport.d.ts +4 -0
- package/dist/adapters/http/client/transport.d.ts.map +1 -1
- package/dist/adapters/http/client/transport.js +11 -1
- package/dist/adapters/http/client/transport.js.map +1 -1
- package/dist/adapters/http/client/types.d.ts +19 -0
- package/dist/adapters/http/client/types.d.ts.map +1 -1
- package/dist/adapters/http/server/cors.d.ts +64 -0
- package/dist/adapters/http/server/cors.d.ts.map +1 -0
- package/dist/adapters/http/server/cors.js +113 -0
- package/dist/adapters/http/server/cors.js.map +1 -0
- package/dist/adapters/http/server/handler.d.ts +136 -0
- package/dist/adapters/http/server/handler.d.ts.map +1 -0
- package/dist/adapters/http/server/handler.js +495 -0
- package/dist/adapters/http/server/handler.js.map +1 -0
- package/dist/adapters/http/server/strategies.d.ts +14 -5
- package/dist/adapters/http/server/strategies.d.ts.map +1 -1
- package/dist/adapters/http/server/strategies.js.map +1 -1
- package/dist/adapters/http/server/transport.d.ts +36 -46
- package/dist/adapters/http/server/transport.d.ts.map +1 -1
- package/dist/adapters/http/server/transport.js +58 -433
- package/dist/adapters/http/server/transport.js.map +1 -1
- package/dist/adapters/http/server/types.d.ts +13 -0
- package/dist/adapters/http/server/types.d.ts.map +1 -1
- package/dist/adapters/websocket/client/transport.d.ts +7 -3
- package/dist/adapters/websocket/client/transport.d.ts.map +1 -1
- package/dist/adapters/websocket/client/transport.js +9 -3
- package/dist/adapters/websocket/client/transport.js.map +1 -1
- package/dist/adapters/websocket/server/transport.d.ts +56 -1
- package/dist/adapters/websocket/server/transport.d.ts.map +1 -1
- package/dist/adapters/websocket/server/transport.js +174 -17
- package/dist/adapters/websocket/server/transport.js.map +1 -1
- package/dist/adapters/websocket/server/types.d.ts +10 -3
- package/dist/adapters/websocket/server/types.d.ts.map +1 -1
- package/dist/adapters/websocket/server/upgrade-router.d.ts +28 -0
- package/dist/adapters/websocket/server/upgrade-router.d.ts.map +1 -0
- package/dist/adapters/websocket/server/upgrade-router.js +62 -0
- package/dist/adapters/websocket/server/upgrade-router.js.map +1 -0
- package/dist/adapters/websocket/server/upgrade.d.ts +68 -0
- package/dist/adapters/websocket/server/upgrade.d.ts.map +1 -0
- package/dist/adapters/websocket/server/upgrade.js +49 -0
- package/dist/adapters/websocket/server/upgrade.js.map +1 -0
- package/dist/adapters/websocket/shared/rpc.d.ts +2 -0
- package/dist/adapters/websocket/shared/rpc.d.ts.map +1 -1
- package/dist/adapters/websocket/shared/rpc.js +8 -2
- package/dist/adapters/websocket/shared/rpc.js.map +1 -1
- package/dist/browser.d.ts +14 -6
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +12 -3
- package/dist/browser.js.map +1 -1
- package/dist/client/client.d.ts +43 -0
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +69 -1
- package/dist/client/client.js.map +1 -1
- package/dist/client/errors/registry.d.ts.map +1 -1
- package/dist/client/errors/registry.js +1 -0
- package/dist/client/errors/registry.js.map +1 -1
- package/dist/client/middleware/retry.d.ts +4 -0
- package/dist/client/middleware/retry.d.ts.map +1 -1
- package/dist/client/middleware/retry.js +86 -78
- package/dist/client/middleware/retry.js.map +1 -1
- package/dist/events/bus.d.ts +32 -14
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/bus.js +119 -65
- package/dist/events/bus.js.map +1 -1
- package/dist/events/index.d.ts +3 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/events/publisher.d.ts +14 -0
- package/dist/events/publisher.d.ts.map +1 -1
- package/dist/events/publisher.js +62 -10
- package/dist/events/publisher.js.map +1 -1
- package/dist/events/remote.d.ts +80 -18
- package/dist/events/remote.d.ts.map +1 -1
- package/dist/events/remote.js +448 -58
- package/dist/events/remote.js.map +1 -1
- package/dist/events/rows.d.ts +31 -0
- package/dist/events/rows.d.ts.map +1 -0
- package/dist/events/rows.js +39 -0
- package/dist/events/rows.js.map +1 -0
- package/dist/events/types.d.ts +13 -2
- package/dist/events/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +14 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +9 -0
- package/dist/node.js.map +1 -1
- package/dist/procedures/caller.d.ts +33 -0
- package/dist/procedures/caller.d.ts.map +1 -0
- package/dist/procedures/caller.js +27 -0
- package/dist/procedures/caller.js.map +1 -0
- package/dist/procedures/capability.d.ts +6 -0
- package/dist/procedures/capability.d.ts.map +1 -1
- package/dist/procedures/capability.js +25 -0
- package/dist/procedures/capability.js.map +1 -1
- package/dist/procedures/collection/changes.d.ts +94 -0
- package/dist/procedures/collection/changes.d.ts.map +1 -0
- package/dist/procedures/collection/changes.js +182 -0
- package/dist/procedures/collection/changes.js.map +1 -0
- package/dist/procedures/collection/index.d.ts +8 -3
- package/dist/procedures/collection/index.d.ts.map +1 -1
- package/dist/procedures/collection/index.js +6 -1
- package/dist/procedures/collection/index.js.map +1 -1
- package/dist/procedures/collection/procedures.d.ts +39 -2
- package/dist/procedures/collection/procedures.d.ts.map +1 -1
- package/dist/procedures/collection/procedures.js +131 -8
- package/dist/procedures/collection/procedures.js.map +1 -1
- package/dist/procedures/collection/query.d.ts +246 -0
- package/dist/procedures/collection/query.d.ts.map +1 -0
- package/dist/procedures/collection/query.js +854 -0
- package/dist/procedures/collection/query.js.map +1 -0
- package/dist/procedures/collection/schemas.d.ts +59 -0
- package/dist/procedures/collection/schemas.d.ts.map +1 -1
- package/dist/procedures/collection/schemas.js +172 -6
- package/dist/procedures/collection/schemas.js.map +1 -1
- package/dist/procedures/collection/storage.d.ts +64 -6
- package/dist/procedures/collection/storage.d.ts.map +1 -1
- package/dist/procedures/collection/storage.js +23 -0
- package/dist/procedures/collection/storage.js.map +1 -1
- package/dist/procedures/elicit.d.ts +190 -0
- package/dist/procedures/elicit.d.ts.map +1 -0
- package/dist/procedures/elicit.js +127 -0
- package/dist/procedures/elicit.js.map +1 -0
- package/dist/procedures/hints.d.ts +43 -0
- package/dist/procedures/hints.d.ts.map +1 -0
- package/dist/procedures/hints.js +74 -0
- package/dist/procedures/hints.js.map +1 -0
- package/dist/procedures/index.d.ts +12 -3
- package/dist/procedures/index.d.ts.map +1 -1
- package/dist/procedures/index.js +7 -1
- package/dist/procedures/index.js.map +1 -1
- package/dist/procedures/invoke.d.ts +20 -0
- package/dist/procedures/invoke.d.ts.map +1 -1
- package/dist/procedures/invoke.js +16 -0
- package/dist/procedures/invoke.js.map +1 -1
- package/dist/procedures/progress.d.ts +24 -0
- package/dist/procedures/progress.d.ts.map +1 -0
- package/dist/procedures/progress.js +11 -0
- package/dist/procedures/progress.js.map +1 -0
- package/dist/procedures/registry.d.ts.map +1 -1
- package/dist/procedures/registry.js +5 -0
- package/dist/procedures/registry.js.map +1 -1
- package/dist/procedures/types.d.ts +92 -0
- package/dist/procedures/types.d.ts.map +1 -1
- package/dist/procedures/types.js.map +1 -1
- package/dist/procedures/untrusted.d.ts +28 -0
- package/dist/procedures/untrusted.d.ts.map +1 -0
- package/dist/procedures/untrusted.js +32 -0
- package/dist/procedures/untrusted.js.map +1 -0
- package/dist/protocol.d.ts +1 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +1 -0
- package/dist/protocol.js.map +1 -1
- package/dist/server/browser-guard.d.ts +12 -2
- package/dist/server/browser-guard.d.ts.map +1 -1
- package/dist/server/browser-guard.js +43 -6
- package/dist/server/browser-guard.js.map +1 -1
- package/dist/server/host-policy.d.ts +10 -1
- package/dist/server/host-policy.d.ts.map +1 -1
- package/dist/server/host-policy.js +5 -0
- package/dist/server/host-policy.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/procedure-server.d.ts +75 -9
- package/dist/server/procedure-server.d.ts.map +1 -1
- package/dist/server/procedure-server.js +151 -17
- package/dist/server/procedure-server.js.map +1 -1
- package/dist/server/request-auth.d.ts +51 -4
- package/dist/server/request-auth.d.ts.map +1 -1
- package/dist/server/request-auth.js +116 -5
- package/dist/server/request-auth.js.map +1 -1
- package/dist/server/types.d.ts +73 -5
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js.map +1 -1
- package/dist/timers.d.ts +5 -0
- package/dist/timers.d.ts.map +1 -1
- package/dist/timers.js +3 -1
- package/dist/timers.js.map +1 -1
- package/package.json +5 -1
- package/src/adapters/http/client/transport.ts +11 -1
- package/src/adapters/http/client/types.ts +22 -0
- package/src/adapters/http/server/cors.ts +144 -0
- package/src/adapters/http/server/handler.ts +624 -0
- package/src/adapters/http/server/strategies.ts +16 -6
- package/src/adapters/http/server/transport.ts +66 -479
- package/src/adapters/http/server/types.ts +15 -0
- package/src/adapters/websocket/client/transport.ts +9 -3
- package/src/adapters/websocket/server/transport.ts +189 -18
- package/src/adapters/websocket/server/types.ts +11 -3
- package/src/adapters/websocket/server/upgrade-router.ts +77 -0
- package/src/adapters/websocket/server/upgrade.ts +88 -0
- package/src/adapters/websocket/shared/rpc.ts +9 -2
- package/src/browser.ts +85 -2
- package/src/client/client.ts +83 -1
- package/src/client/errors/registry.ts +1 -0
- package/src/client/middleware/retry.ts +89 -78
- package/src/events/bus.ts +141 -73
- package/src/events/index.ts +3 -0
- package/src/events/publisher.ts +71 -10
- package/src/events/remote.ts +575 -73
- package/src/events/rows.ts +48 -0
- package/src/events/types.ts +15 -2
- package/src/index.ts +1 -1
- package/src/node.ts +21 -0
- package/src/procedures/caller.ts +45 -0
- package/src/procedures/capability.ts +21 -0
- package/src/procedures/collection/changes.ts +245 -0
- package/src/procedures/collection/index.ts +56 -1
- package/src/procedures/collection/procedures.ts +185 -7
- package/src/procedures/collection/query.ts +1009 -0
- package/src/procedures/collection/schemas.ts +233 -7
- package/src/procedures/collection/storage.ts +84 -6
- package/src/procedures/elicit.ts +320 -0
- package/src/procedures/hints.ts +91 -0
- package/src/procedures/index.ts +82 -2
- package/src/procedures/invoke.ts +31 -0
- package/src/procedures/progress.ts +25 -0
- package/src/procedures/registry.ts +4 -0
- package/src/procedures/types.ts +102 -0
- package/src/procedures/untrusted.ts +50 -0
- package/src/protocol.ts +3 -1
- package/src/server/browser-guard.ts +48 -6
- package/src/server/host-policy.ts +13 -1
- package/src/server/index.ts +3 -0
- package/src/server/procedure-server.ts +185 -20
- package/src/server/request-auth.ts +128 -6
- package/src/server/types.ts +82 -5
- package/src/timers.ts +8 -1
|
@@ -3,14 +3,22 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Adapts WebSocket connections to unified RPC format.
|
|
5
5
|
* Supports bidirectional streaming and persistent connections.
|
|
6
|
+
*
|
|
7
|
+
* The transport runs the `WebSocketServer` of `ws` in its "no server" mode (CLI-3). `upgrade()`
|
|
8
|
+
* takes the upgrade requests of its path. With the option `server`, the transport attaches
|
|
9
|
+
* `upgrade()` to that server through one router for each server, so two endpoints of different
|
|
10
|
+
* paths can share a server. Without it, the owner of the listener gives the upgrades to
|
|
11
|
+
* `upgrade()`, or mounts `upgradeHandler()` of `@procedures/client/node`.
|
|
6
12
|
*/
|
|
7
13
|
import { WebSocketServer, WebSocket } from "ws";
|
|
8
14
|
import { pathToMethod } from "../../../server/method.js";
|
|
9
15
|
import { IncomingCalls, OutgoingCalls } from "../shared/rpc.js";
|
|
10
16
|
import { withoutInternalKeys } from "../../metadata.js";
|
|
11
|
-
import { checkBrowserRequest } from "../../../server/browser-guard.js";
|
|
17
|
+
import { assertNamedOrigins, checkBrowserRequest, needsNamedOrigin } from "../../../server/browser-guard.js";
|
|
12
18
|
import { optionalMs } from "../../../duration.js";
|
|
13
|
-
import {
|
|
19
|
+
import { headerNames, requestCredentials, urlParts, withoutSecretHeaders } from "../../../server/request-auth.js";
|
|
20
|
+
import { attachUpgradeTarget, refuseUpgrade } from "./upgrade-router.js";
|
|
21
|
+
import { realClock } from "../../../clock.js";
|
|
14
22
|
import { PROTOCOL_VERSION, protocolVersionOf } from "../../../protocol.js";
|
|
15
23
|
import { TIMER_DEFAULTS } from "../../../timers.js";
|
|
16
24
|
import { remoteEvents, subscribeRemote, } from "../../../events/remote.js";
|
|
@@ -43,6 +51,16 @@ export class WebSocketServerTransport {
|
|
|
43
51
|
name = "websocket";
|
|
44
52
|
wss = null;
|
|
45
53
|
options;
|
|
54
|
+
/** The more headers that carry a secret (CLI-2a) */
|
|
55
|
+
secretHeaders;
|
|
56
|
+
/** The function that detaches `upgrade()` from the `server` of the options */
|
|
57
|
+
detach;
|
|
58
|
+
/** True after `stopIntake()`: a new upgrade gets 503, and a new call gets `UNAVAILABLE` */
|
|
59
|
+
intakeStopped = false;
|
|
60
|
+
/** The functions that `drain()` waits on: each one runs when no call is in flight */
|
|
61
|
+
idleWaiters = [];
|
|
62
|
+
/** True: a cookie of an upgrade is trusted only from a named origin, with or without an auth path */
|
|
63
|
+
cookiesNamed = false;
|
|
46
64
|
server;
|
|
47
65
|
connections = new Set();
|
|
48
66
|
/** The time until the first frame of a call to a client, in milliseconds (R24) */
|
|
@@ -60,12 +78,17 @@ export class WebSocketServerTransport {
|
|
|
60
78
|
* sends (served by the server) and the calls that the server sends to the client.
|
|
61
79
|
*/
|
|
62
80
|
channels = new Map();
|
|
81
|
+
/**
|
|
82
|
+
* The transport of the remote events of each connection: one object for each connection, so the
|
|
83
|
+
* subscriptions of one connection to the same topics share one call (EVENTS.md).
|
|
84
|
+
*/
|
|
85
|
+
eventTransports = new Map();
|
|
63
86
|
/** The browser checks of each connection (see `server/browser-guard.ts`) */
|
|
64
87
|
guard;
|
|
65
88
|
// Connection lifecycle event handlers
|
|
66
89
|
connectHandlers = [];
|
|
67
90
|
disconnectHandlers = [];
|
|
68
|
-
constructor(server, options) {
|
|
91
|
+
constructor(server, options = {}) {
|
|
69
92
|
this.server = server;
|
|
70
93
|
this.options = {
|
|
71
94
|
server: options.server,
|
|
@@ -78,6 +101,9 @@ export class WebSocketServerTransport {
|
|
|
78
101
|
highWaterMark: options.highWaterMark ?? 1024 * 1024,
|
|
79
102
|
};
|
|
80
103
|
this.guard = { allowedOrigins: options.allowedOrigins, allowedHosts: options.allowedHosts };
|
|
104
|
+
// CSRF: a server that reads the cookies of each request needs named origins (CLI-2a)
|
|
105
|
+
assertNamedOrigins("WebSocketServerTransport", server.ambientCredentials, options.allowedOrigins, "allowedOrigins");
|
|
106
|
+
this.secretHeaders = headerNames(options.secretHeaders);
|
|
81
107
|
this.reverseRequestTimeoutMs = optionalMs(options.reverseRequestTimeout, "reverseRequestTimeout") ?? TIMER_DEFAULTS.webSocketServer.reverseRequestTimeoutMs;
|
|
82
108
|
this.heartbeat =
|
|
83
109
|
options.heartbeat === false
|
|
@@ -111,9 +137,21 @@ export class WebSocketServerTransport {
|
|
|
111
137
|
}
|
|
112
138
|
}
|
|
113
139
|
async start() {
|
|
114
|
-
|
|
140
|
+
this.open();
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* This method creates the WebSocket server at once, and attaches it to the `server` of the
|
|
144
|
+
* options. `start()` calls it, and `upgradeHandler()` too. A second call does nothing.
|
|
145
|
+
*
|
|
146
|
+
* @internal
|
|
147
|
+
*/
|
|
148
|
+
open() {
|
|
149
|
+
this.intakeStopped = false;
|
|
150
|
+
if (this.wss)
|
|
151
|
+
return;
|
|
152
|
+
// The "no server" mode: upgrade() takes the upgrades of the path, and leaves the others alone
|
|
115
153
|
this.wss = new WebSocketServer({
|
|
116
|
-
|
|
154
|
+
noServer: true,
|
|
117
155
|
path: this.options.path,
|
|
118
156
|
perMessageDeflate: this.options.perMessageDeflate,
|
|
119
157
|
maxPayload: this.options.maxPayload,
|
|
@@ -122,7 +160,11 @@ export class WebSocketServerTransport {
|
|
|
122
160
|
// when the host gave an authenticate handler, so any web page could open one and call
|
|
123
161
|
// procedures (cross-site WebSocket hijacking)
|
|
124
162
|
verifyClient: async ({ req }, callback) => {
|
|
125
|
-
|
|
163
|
+
// The cookies of an upgrade are trusted only from a named origin, when the server or the
|
|
164
|
+
// authenticate handler can read them (cross-site WebSocket hijacking with cookies)
|
|
165
|
+
const readsCookies = this.cookiesNamed || this.options.authenticate !== undefined;
|
|
166
|
+
const ambient = needsNamedOrigin(this.server.ambientCredentials, req.headers, readsCookies);
|
|
167
|
+
const guard = checkBrowserRequest(req, this.guard, false, ambient);
|
|
126
168
|
if (!guard.ok) {
|
|
127
169
|
callback(false, guard.status, guard.message);
|
|
128
170
|
return;
|
|
@@ -144,6 +186,8 @@ export class WebSocketServerTransport {
|
|
|
144
186
|
this.wss.on("connection", (ws, req) => {
|
|
145
187
|
this.handleConnection(ws, req);
|
|
146
188
|
});
|
|
189
|
+
if (this.options.server)
|
|
190
|
+
this.detach = attachUpgradeTarget(this.options.server, this);
|
|
147
191
|
if (this.heartbeat) {
|
|
148
192
|
this.heartbeatTimer = setInterval(() => this.beat(), this.heartbeat.interval);
|
|
149
193
|
// The heartbeat must not keep the process alive
|
|
@@ -156,6 +200,8 @@ export class WebSocketServerTransport {
|
|
|
156
200
|
clearInterval(this.heartbeatTimer);
|
|
157
201
|
this.heartbeatTimer = undefined;
|
|
158
202
|
}
|
|
203
|
+
this.detach?.();
|
|
204
|
+
this.detach = undefined;
|
|
159
205
|
if (this.wss) {
|
|
160
206
|
// Stop the requests in progress, so their handlers end (deep dive TRN-15), and fail the
|
|
161
207
|
// calls that the server sent to its clients
|
|
@@ -164,6 +210,7 @@ export class WebSocketServerTransport {
|
|
|
164
210
|
channel.outgoing.failAll("Server stopped");
|
|
165
211
|
}
|
|
166
212
|
this.channels.clear();
|
|
213
|
+
this.callSettled();
|
|
167
214
|
// Close all connections
|
|
168
215
|
for (const ws of this.connections) {
|
|
169
216
|
ws.close();
|
|
@@ -187,6 +234,90 @@ export class WebSocketServerTransport {
|
|
|
187
234
|
isRunning() {
|
|
188
235
|
return this.wss !== null;
|
|
189
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* This method makes the transport trust a cookie of an upgrade only from a named origin, also
|
|
239
|
+
* without an auth path that reads it. `upgradeHandler()` calls it.
|
|
240
|
+
*
|
|
241
|
+
* @internal
|
|
242
|
+
*/
|
|
243
|
+
nameOriginsForCookies() {
|
|
244
|
+
this.cookiesNamed = true;
|
|
245
|
+
}
|
|
246
|
+
/** The path of the WebSocket endpoint. */
|
|
247
|
+
get path() {
|
|
248
|
+
return this.options.path;
|
|
249
|
+
}
|
|
250
|
+
/** This method gives true when an upgrade request is for the path of this endpoint. */
|
|
251
|
+
matches(req) {
|
|
252
|
+
return urlParts(req.url).path === this.options.path;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* This method takes an upgrade request of its path and gives true. The browser checks, the
|
|
256
|
+
* `authenticate` handler and the handshake of `ws` follow. It gives false for another path, or
|
|
257
|
+
* before `start()`, and does not touch the socket. After `stopIntake()`, it refuses the upgrade
|
|
258
|
+
* with 503.
|
|
259
|
+
*/
|
|
260
|
+
upgrade(req, socket, head) {
|
|
261
|
+
const wss = this.wss;
|
|
262
|
+
if (!wss || !this.matches(req))
|
|
263
|
+
return false;
|
|
264
|
+
if (this.intakeStopped) {
|
|
265
|
+
refuseUpgrade(socket, 503, "The server is stopping");
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
wss.handleUpgrade(req, socket, head, (ws) => wss.emit("connection", ws, req));
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* This method stops the intake: a new upgrade gets 503, and a new call on an open connection gets
|
|
273
|
+
* the retryable error `UNAVAILABLE`. The calls in flight go on. `start()` accepts again.
|
|
274
|
+
*/
|
|
275
|
+
stopIntake() {
|
|
276
|
+
this.intakeStopped = true;
|
|
277
|
+
}
|
|
278
|
+
/** The number of the calls in flight on all connections, open streams too. */
|
|
279
|
+
inFlight() {
|
|
280
|
+
let count = 0;
|
|
281
|
+
for (const channel of this.channels.values())
|
|
282
|
+
count += channel.incoming.size;
|
|
283
|
+
return count;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* This method waits until no call is in flight, until the `deadline` (milliseconds on the
|
|
287
|
+
* monotonic clock of `performance.now()`), or until the signal aborts.
|
|
288
|
+
*/
|
|
289
|
+
drain(deadline, signal) {
|
|
290
|
+
if (this.inFlight() === 0 || signal?.aborted)
|
|
291
|
+
return Promise.resolve();
|
|
292
|
+
return new Promise((resolve) => {
|
|
293
|
+
let timer;
|
|
294
|
+
const done = () => {
|
|
295
|
+
timer?.();
|
|
296
|
+
signal?.removeEventListener("abort", done);
|
|
297
|
+
const index = this.idleWaiters.indexOf(done);
|
|
298
|
+
if (index >= 0)
|
|
299
|
+
this.idleWaiters.splice(index, 1);
|
|
300
|
+
resolve();
|
|
301
|
+
};
|
|
302
|
+
this.idleWaiters.push(done);
|
|
303
|
+
signal?.addEventListener("abort", done, { once: true });
|
|
304
|
+
timer = realClock.after(Math.max(0, deadline - realClock.now()), done);
|
|
305
|
+
timer.unref?.();
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
/** This method stops the transport: the same as `stop()`. */
|
|
309
|
+
close() {
|
|
310
|
+
return this.stop();
|
|
311
|
+
}
|
|
312
|
+
/** A call ended: a drain can end when no call is in flight. */
|
|
313
|
+
callSettled() {
|
|
314
|
+
if (this.idleWaiters.length === 0 || this.inFlight() > 0)
|
|
315
|
+
return;
|
|
316
|
+
const waiters = this.idleWaiters;
|
|
317
|
+
this.idleWaiters = [];
|
|
318
|
+
for (const waiter of waiters)
|
|
319
|
+
waiter();
|
|
320
|
+
}
|
|
190
321
|
/**
|
|
191
322
|
* Handle new WebSocket connection.
|
|
192
323
|
*/
|
|
@@ -201,10 +332,13 @@ export class WebSocketServerTransport {
|
|
|
201
332
|
connectedAt: new Date(),
|
|
202
333
|
metadata: {
|
|
203
334
|
remoteAddress: req.socket.remoteAddress,
|
|
204
|
-
headers: withoutSecretHeaders(req.headers),
|
|
335
|
+
headers: withoutSecretHeaders(req.headers, this.secretHeaders),
|
|
205
336
|
},
|
|
206
337
|
};
|
|
207
338
|
this.trackedConnections.set(connectionId, trackedConnection);
|
|
339
|
+
// The credentials of the upgrade, for each call of the connection: the bearer token of its
|
|
340
|
+
// Authorization header or of its token query, its cookies, its headers and its query (CLI-2a)
|
|
341
|
+
const credentials = requestCredentials({ headers: req.headers, url: req.url }, { tokenQuery: "token" });
|
|
208
342
|
// The calls of this connection in the two directions (roadmap R24)
|
|
209
343
|
const isOpen = () => ws.readyState === WebSocket.OPEN;
|
|
210
344
|
const send = (frame) => this.send(ws, frame);
|
|
@@ -214,7 +348,8 @@ export class WebSocketServerTransport {
|
|
|
214
348
|
send,
|
|
215
349
|
sendWithBackpressure: (frame, signal) => this.sendWithBackpressure(ws, frame, signal),
|
|
216
350
|
isOpen,
|
|
217
|
-
requestOf: (frame, signal) => this.requestOf(frame, req, connectionId, signal),
|
|
351
|
+
requestOf: (frame, signal) => this.requestOf(frame, req, connectionId, signal, credentials),
|
|
352
|
+
onSettled: () => this.callSettled(),
|
|
218
353
|
}),
|
|
219
354
|
outgoing: new OutgoingCalls({
|
|
220
355
|
send,
|
|
@@ -257,6 +392,8 @@ export class WebSocketServerTransport {
|
|
|
257
392
|
channel?.incoming.abortAll();
|
|
258
393
|
channel?.outgoing.failAll("WebSocket connection closed");
|
|
259
394
|
this.channels.delete(connectionId);
|
|
395
|
+
this.callSettled();
|
|
396
|
+
this.eventTransports.delete(connectionId);
|
|
260
397
|
const conn = this.trackedConnections.get(connectionId);
|
|
261
398
|
if (conn) {
|
|
262
399
|
this.trackedConnections.delete(connectionId);
|
|
@@ -282,7 +419,7 @@ export class WebSocketServerTransport {
|
|
|
282
419
|
* The server request of a `request` frame of a connection: the metadata of the frame and of the
|
|
283
420
|
* connection, the signal of the call, and the credentials of the upgrade (roadmap R18).
|
|
284
421
|
*/
|
|
285
|
-
requestOf(frame, req, connectionId, signal) {
|
|
422
|
+
requestOf(frame, req, connectionId, signal, credentials) {
|
|
286
423
|
return {
|
|
287
424
|
id: frame.id,
|
|
288
425
|
method: frame.method,
|
|
@@ -294,11 +431,12 @@ export class WebSocketServerTransport {
|
|
|
294
431
|
connectionId,
|
|
295
432
|
remoteAddress: req.socket.remoteAddress,
|
|
296
433
|
// The upgrade headers without their secrets (roadmap R18)
|
|
297
|
-
headers: withoutSecretHeaders(req.headers),
|
|
434
|
+
headers: withoutSecretHeaders(req.headers, this.secretHeaders),
|
|
298
435
|
},
|
|
299
436
|
signal,
|
|
300
|
-
// The credentials of the connection: the bearer token of its upgrade (R18)
|
|
301
|
-
|
|
437
|
+
// The credentials of the connection: the bearer token of its upgrade (R18), its cookies,
|
|
438
|
+
// its headers and its query (CLI-2a)
|
|
439
|
+
credentials,
|
|
302
440
|
};
|
|
303
441
|
}
|
|
304
442
|
/**
|
|
@@ -343,6 +481,11 @@ export class WebSocketServerTransport {
|
|
|
343
481
|
// A frame of a call that the server sent to this client (roadmap R24)
|
|
344
482
|
if (channel.outgoing.receive(message))
|
|
345
483
|
return;
|
|
484
|
+
// After stopIntake(), a new call goes to another server or comes again later
|
|
485
|
+
if (this.intakeStopped && message.type === "request") {
|
|
486
|
+
this.sendError(ws, message.id || "unknown", "The server is stopping", "UNAVAILABLE", true);
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
346
489
|
// A frame of a call of the client: a request, a cancel or a credit
|
|
347
490
|
if (channel.incoming.receive(message))
|
|
348
491
|
return;
|
|
@@ -382,7 +525,7 @@ export class WebSocketServerTransport {
|
|
|
382
525
|
/**
|
|
383
526
|
* Send error to client.
|
|
384
527
|
*/
|
|
385
|
-
sendError(ws, id, message, code = "INTERNAL_ERROR") {
|
|
528
|
+
sendError(ws, id, message, code = "INTERNAL_ERROR", retryable = false) {
|
|
386
529
|
const errorMessage = {
|
|
387
530
|
id,
|
|
388
531
|
type: "error",
|
|
@@ -390,12 +533,12 @@ export class WebSocketServerTransport {
|
|
|
390
533
|
type: "error",
|
|
391
534
|
code,
|
|
392
535
|
message,
|
|
393
|
-
retryable
|
|
536
|
+
retryable,
|
|
394
537
|
},
|
|
395
538
|
error: {
|
|
396
539
|
code,
|
|
397
540
|
message,
|
|
398
|
-
retryable
|
|
541
|
+
retryable,
|
|
399
542
|
},
|
|
400
543
|
};
|
|
401
544
|
this.send(ws, errorMessage);
|
|
@@ -489,7 +632,7 @@ export class WebSocketServerTransport {
|
|
|
489
632
|
* @param options - `onSubscribed`, `onError`, a signal, the metadata of the call
|
|
490
633
|
*/
|
|
491
634
|
subscribe(connectionId, topics, handler, options = {}) {
|
|
492
|
-
return subscribeRemote(this.
|
|
635
|
+
return subscribeRemote(this.eventTransportFor(connectionId), topics, handler, options, { resubscribe: false });
|
|
493
636
|
}
|
|
494
637
|
/**
|
|
495
638
|
* This function gives the events of topics of the bus of a client as an async iterator. The
|
|
@@ -500,7 +643,21 @@ export class WebSocketServerTransport {
|
|
|
500
643
|
* @param options - A signal, `onSubscribed`, the metadata of the call
|
|
501
644
|
*/
|
|
502
645
|
events(connectionId, topics, options = {}) {
|
|
503
|
-
return remoteEvents(this.
|
|
646
|
+
return remoteEvents(this.eventTransportFor(connectionId), topics, options, { resubscribe: false });
|
|
647
|
+
}
|
|
648
|
+
/**
|
|
649
|
+
* The transport of the remote events of a connection: the same object for each subscription of
|
|
650
|
+
* a tracked connection. The close of the connection removes it.
|
|
651
|
+
*/
|
|
652
|
+
eventTransportFor(connectionId) {
|
|
653
|
+
if (!this.trackedConnections.has(connectionId))
|
|
654
|
+
return this.transportFor(connectionId);
|
|
655
|
+
let transport = this.eventTransports.get(connectionId);
|
|
656
|
+
if (!transport) {
|
|
657
|
+
transport = this.transportFor(connectionId);
|
|
658
|
+
this.eventTransports.set(connectionId, transport);
|
|
659
|
+
}
|
|
660
|
+
return transport;
|
|
504
661
|
}
|
|
505
662
|
/**
|
|
506
663
|
* Call a procedure on a specific client (server-to-client RPC). It gives the value of the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/adapters/websocket/server/transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/adapters/websocket/server/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,10 +23,11 @@ export type WebSocketConnectionHandler = (ws: WebSocket, req: IncomingMessage) =
|
|
|
23
23
|
*/
|
|
24
24
|
export interface WebSocketServerTransportOptions extends Omit<BrowserGuardOptions, "allowGet"> {
|
|
25
25
|
/**
|
|
26
|
-
* HTTP server
|
|
27
|
-
*
|
|
26
|
+
* The HTTP server whose upgrade requests the transport takes. The transport takes only the
|
|
27
|
+
* upgrades of its path, so several endpoints can share one server. Without it, the owner of the
|
|
28
|
+
* listener gives each upgrade to `upgrade()`, or mounts `upgradeHandler()`.
|
|
28
29
|
*/
|
|
29
|
-
server
|
|
30
|
+
server?: HttpServer | undefined;
|
|
30
31
|
/**
|
|
31
32
|
* Path for WebSocket connections.
|
|
32
33
|
* @default "/ws"
|
|
@@ -79,6 +80,12 @@ export interface WebSocketServerTransportOptions extends Omit<BrowserGuardOption
|
|
|
79
80
|
* @default seconds(30)
|
|
80
81
|
*/
|
|
81
82
|
reverseRequestTimeout?: Duration;
|
|
83
|
+
/**
|
|
84
|
+
* More headers that carry a secret, for example the token header of an application. They go
|
|
85
|
+
* into the credentials of each call, not into its metadata. `Authorization`,
|
|
86
|
+
* `Proxy-Authorization`, `Cookie` and `X-Api-Key` are always secret.
|
|
87
|
+
*/
|
|
88
|
+
secretHeaders?: readonly string[] | undefined;
|
|
82
89
|
}
|
|
83
90
|
/**
|
|
84
91
|
* WebSocket message format for RPC.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapters/websocket/server/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,GAAG,EAAE,eAAe,KACjB,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEhC;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,+BAAgC,SAAQ,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC;IAC5F
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapters/websocket/server/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The router of the upgrade requests of one `node:http` server (CLI-3).
|
|
3
|
+
*
|
|
4
|
+
* Before, each `WebSocketServerTransport` attached its own `WebSocketServer` of `ws` to the server.
|
|
5
|
+
* Such a server refuses each upgrade of another path with 400, so a second endpoint on the same
|
|
6
|
+
* server did not get its upgrades. With this router, each transport of the server is a target of
|
|
7
|
+
* one router. The router gives an upgrade to the first target that takes it. When no target takes it and no other
|
|
8
|
+
* listener of the server can take it, the router refuses it with 400, as before.
|
|
9
|
+
*
|
|
10
|
+
* This module imports only types of Node.
|
|
11
|
+
*/
|
|
12
|
+
import type { IncomingMessage, Server as HttpServer } from "http";
|
|
13
|
+
import type { Duplex } from "stream";
|
|
14
|
+
/** A target of the router: it takes an upgrade (true), or leaves it alone (false). */
|
|
15
|
+
export interface UpgradeTarget {
|
|
16
|
+
upgrade(req: IncomingMessage, socket: Duplex, head: Buffer): boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* This function refuses an upgrade: it writes an HTTP response with the status and the message,
|
|
20
|
+
* then it destroys the socket.
|
|
21
|
+
*/
|
|
22
|
+
export declare function refuseUpgrade(socket: Duplex, status: number, message?: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* This function attaches a target to the upgrades of a server. It gives the function that
|
|
25
|
+
* detaches it. The router leaves the server when its last target goes.
|
|
26
|
+
*/
|
|
27
|
+
export declare function attachUpgradeTarget(server: HttpServer, target: UpgradeTarget): () => void;
|
|
28
|
+
//# sourceMappingURL=upgrade-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-router.d.ts","sourceRoot":"","sources":["../../../../src/adapters/websocket/server/upgrade-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACtE;AAUD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CASpF;AASD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,IAAI,CAsBzF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The router of the upgrade requests of one `node:http` server (CLI-3).
|
|
3
|
+
*
|
|
4
|
+
* Before, each `WebSocketServerTransport` attached its own `WebSocketServer` of `ws` to the server.
|
|
5
|
+
* Such a server refuses each upgrade of another path with 400, so a second endpoint on the same
|
|
6
|
+
* server did not get its upgrades. With this router, each transport of the server is a target of
|
|
7
|
+
* one router. The router gives an upgrade to the first target that takes it. When no target takes it and no other
|
|
8
|
+
* listener of the server can take it, the router refuses it with 400, as before.
|
|
9
|
+
*
|
|
10
|
+
* This module imports only types of Node.
|
|
11
|
+
*/
|
|
12
|
+
/** The reason texts of the statuses of a refused upgrade. */
|
|
13
|
+
const STATUS_TEXT = {
|
|
14
|
+
400: "Bad Request",
|
|
15
|
+
401: "Unauthorized",
|
|
16
|
+
403: "Forbidden",
|
|
17
|
+
503: "Service Unavailable",
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* This function refuses an upgrade: it writes an HTTP response with the status and the message,
|
|
21
|
+
* then it destroys the socket.
|
|
22
|
+
*/
|
|
23
|
+
export function refuseUpgrade(socket, status, message) {
|
|
24
|
+
if (socket.writable) {
|
|
25
|
+
const text = STATUS_TEXT[status] ?? "Error";
|
|
26
|
+
const body = message ?? text;
|
|
27
|
+
socket.write(`HTTP/1.1 ${status} ${text}\r\nConnection: close\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: ${Buffer.byteLength(body)}\r\n\r\n${body}`);
|
|
28
|
+
}
|
|
29
|
+
socket.destroy();
|
|
30
|
+
}
|
|
31
|
+
const routers = new WeakMap();
|
|
32
|
+
/**
|
|
33
|
+
* This function attaches a target to the upgrades of a server. It gives the function that
|
|
34
|
+
* detaches it. The router leaves the server when its last target goes.
|
|
35
|
+
*/
|
|
36
|
+
export function attachUpgradeTarget(server, target) {
|
|
37
|
+
let router = routers.get(server);
|
|
38
|
+
if (!router) {
|
|
39
|
+
const targets = new Set();
|
|
40
|
+
const listener = (req, socket, head) => {
|
|
41
|
+
for (const each of targets)
|
|
42
|
+
if (each.upgrade(req, socket, head))
|
|
43
|
+
return;
|
|
44
|
+
// Another listener of the server (the upgrade handler of the application) can take it
|
|
45
|
+
if (server.listenerCount("upgrade") <= 1)
|
|
46
|
+
refuseUpgrade(socket, 400);
|
|
47
|
+
};
|
|
48
|
+
router = { targets, listener };
|
|
49
|
+
routers.set(server, router);
|
|
50
|
+
server.on("upgrade", listener);
|
|
51
|
+
}
|
|
52
|
+
const current = router;
|
|
53
|
+
current.targets.add(target);
|
|
54
|
+
return () => {
|
|
55
|
+
current.targets.delete(target);
|
|
56
|
+
if (current.targets.size === 0 && routers.get(server) === current) {
|
|
57
|
+
server.off("upgrade", current.listener);
|
|
58
|
+
routers.delete(server);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=upgrade-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-router.js","sourceRoot":"","sources":["../../../../src/adapters/websocket/server/upgrade-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,6DAA6D;AAC7D,MAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,qBAAqB;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,MAAc,EAAE,OAAgB;IAC5E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC;QAC7B,MAAM,CAAC,KAAK,CACV,YAAY,MAAM,IAAI,IAAI,uFAAuF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAC1J,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC;AAOD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAsB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAkB,EAAE,MAAqB;IAC3E,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;QACzC,MAAM,QAAQ,GAAG,CAAC,GAAoB,EAAE,MAAc,EAAE,IAAY,EAAQ,EAAE;YAC5E,KAAK,MAAM,IAAI,IAAI,OAAO;gBAAE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;oBAAE,OAAO;YACxE,sFAAsF;YACtF,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;gBAAE,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC;QACF,MAAM,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;YAClE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The procedure upgrade handler of WebSocket: an upgrade handler of `node:http` for the "no
|
|
3
|
+
* server" mode of `ws` (CLI-3).
|
|
4
|
+
*
|
|
5
|
+
* `upgradeHandler(server, options)` gives a function `(req, socket, head) => boolean`. The function
|
|
6
|
+
* takes each upgrade request of its path and gives `true`. It gives `false` for each other path and
|
|
7
|
+
* does not touch the socket. Thus two endpoints can share one listener, and so can an endpoint and
|
|
8
|
+
* the WebSocket server of the application. The connections are the connections of
|
|
9
|
+
* `WebSocketServerTransport`: calls in the two directions, streams with credit and `seq`, events,
|
|
10
|
+
* the heartbeat and the browser checks. `handler.transport` gives that API.
|
|
11
|
+
*
|
|
12
|
+
* The handler also has the stop parts of a service transport: `start()`, `stopIntake()`,
|
|
13
|
+
* `drain(deadline, signal)`, `inFlight()` and `close()`. It does not make a server and does not
|
|
14
|
+
* listen: the owner of the listener does that.
|
|
15
|
+
*/
|
|
16
|
+
import type { IncomingMessage } from "http";
|
|
17
|
+
import type { Duplex } from "stream";
|
|
18
|
+
import type { RequestHandler } from "../../../server/types.js";
|
|
19
|
+
import type { WebSocketServerTransportOptions } from "./types.js";
|
|
20
|
+
import { WebSocketServerTransport } from "./transport.js";
|
|
21
|
+
/** The options of `upgradeHandler`: the options of `WebSocketServerTransport` without `server`. */
|
|
22
|
+
export type UpgradeHandlerOptions = Omit<WebSocketServerTransportOptions, "server">;
|
|
23
|
+
/**
|
|
24
|
+
* The upgrade handler of `upgradeHandler`. A call gives `true` when the handler takes the upgrade
|
|
25
|
+
* (its path is the path of the endpoint), and `false` for another path. The handler then does not
|
|
26
|
+
* touch the socket.
|
|
27
|
+
*/
|
|
28
|
+
export interface NodeUpgradeHandler {
|
|
29
|
+
(req: IncomingMessage, socket: Duplex, head: Buffer): boolean;
|
|
30
|
+
/** The path of the endpoint. */
|
|
31
|
+
readonly path: string;
|
|
32
|
+
/**
|
|
33
|
+
* The transport of the connections: `broadcast`, `callConnection`, `transportFor`, `subscribe`,
|
|
34
|
+
* `events`, `onConnect` and the other methods of `WebSocketServerTransport`.
|
|
35
|
+
*/
|
|
36
|
+
readonly transport: WebSocketServerTransport;
|
|
37
|
+
/** This method gives true when an upgrade request is for the path of the endpoint. */
|
|
38
|
+
matches(req: IncomingMessage): boolean;
|
|
39
|
+
/** This method accepts new upgrades and calls again, after `stopIntake()` or `close()`. */
|
|
40
|
+
start(): void;
|
|
41
|
+
/** This method refuses each new upgrade with 503, and each new call with `UNAVAILABLE`. */
|
|
42
|
+
stopIntake(): void;
|
|
43
|
+
/**
|
|
44
|
+
* This method waits until no call is in flight, until the `deadline` (milliseconds on the
|
|
45
|
+
* monotonic clock of `performance.now()`), or until the signal aborts.
|
|
46
|
+
*/
|
|
47
|
+
drain(deadline: number, signal?: AbortSignal): Promise<void>;
|
|
48
|
+
/** The number of the calls in flight on all connections. */
|
|
49
|
+
inFlight(): number;
|
|
50
|
+
/** This method closes each connection and the WebSocket server. */
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* This function makes a procedure upgrade handler: an upgrade handler of `node:http` that serves
|
|
55
|
+
* the procedures of `server` over WebSocket at `options.path`.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const events = upgradeHandler(server, { path: "/ws" });
|
|
60
|
+
* const live = upgradeHandler(server, { path: "/live" });
|
|
61
|
+
* http.on("upgrade", (req, socket, head) => {
|
|
62
|
+
* if (events(req, socket, head) || live(req, socket, head)) return;
|
|
63
|
+
* socket.destroy();
|
|
64
|
+
* });
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function upgradeHandler(server: RequestHandler, options?: UpgradeHandlerOptions): NodeUpgradeHandler;
|
|
68
|
+
//# sourceMappingURL=upgrade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../../src/adapters/websocket/server/upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,mGAAmG;AACnG,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC,CAAC;AAEpF;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9D,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;IAC7C,sFAAsF;IACtF,OAAO,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC;IACvC,2FAA2F;IAC3F,KAAK,IAAI,IAAI,CAAC;IACd,2FAA2F;IAC3F,UAAU,IAAI,IAAI,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,4DAA4D;IAC5D,QAAQ,IAAI,MAAM,CAAC;IACnB,mEAAmE;IACnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,qBAA0B,GAAG,kBAAkB,CAiB9G"}
|