@procedures/client 0.8.0 → 0.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.
Files changed (197) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +95 -8
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/adapters/http/client/transport.d.ts +4 -0
  5. package/dist/adapters/http/client/transport.d.ts.map +1 -1
  6. package/dist/adapters/http/client/transport.js +11 -1
  7. package/dist/adapters/http/client/transport.js.map +1 -1
  8. package/dist/adapters/http/client/types.d.ts +19 -0
  9. package/dist/adapters/http/client/types.d.ts.map +1 -1
  10. package/dist/adapters/http/server/cors.d.ts +64 -0
  11. package/dist/adapters/http/server/cors.d.ts.map +1 -0
  12. package/dist/adapters/http/server/cors.js +113 -0
  13. package/dist/adapters/http/server/cors.js.map +1 -0
  14. package/dist/adapters/http/server/handler.d.ts +136 -0
  15. package/dist/adapters/http/server/handler.d.ts.map +1 -0
  16. package/dist/adapters/http/server/handler.js +495 -0
  17. package/dist/adapters/http/server/handler.js.map +1 -0
  18. package/dist/adapters/http/server/strategies.d.ts +14 -5
  19. package/dist/adapters/http/server/strategies.d.ts.map +1 -1
  20. package/dist/adapters/http/server/strategies.js.map +1 -1
  21. package/dist/adapters/http/server/transport.d.ts +30 -46
  22. package/dist/adapters/http/server/transport.d.ts.map +1 -1
  23. package/dist/adapters/http/server/transport.js +48 -432
  24. package/dist/adapters/http/server/transport.js.map +1 -1
  25. package/dist/adapters/http/server/types.d.ts +13 -0
  26. package/dist/adapters/http/server/types.d.ts.map +1 -1
  27. package/dist/adapters/websocket/client/transport.d.ts.map +1 -1
  28. package/dist/adapters/websocket/client/transport.js +4 -12
  29. package/dist/adapters/websocket/client/transport.js.map +1 -1
  30. package/dist/adapters/websocket/server/transport.d.ts +46 -1
  31. package/dist/adapters/websocket/server/transport.d.ts.map +1 -1
  32. package/dist/adapters/websocket/server/transport.js +152 -15
  33. package/dist/adapters/websocket/server/transport.js.map +1 -1
  34. package/dist/adapters/websocket/server/types.d.ts +10 -3
  35. package/dist/adapters/websocket/server/types.d.ts.map +1 -1
  36. package/dist/adapters/websocket/server/upgrade-router.d.ts +28 -0
  37. package/dist/adapters/websocket/server/upgrade-router.d.ts.map +1 -0
  38. package/dist/adapters/websocket/server/upgrade-router.js +62 -0
  39. package/dist/adapters/websocket/server/upgrade-router.js.map +1 -0
  40. package/dist/adapters/websocket/server/upgrade.d.ts +68 -0
  41. package/dist/adapters/websocket/server/upgrade.d.ts.map +1 -0
  42. package/dist/adapters/websocket/server/upgrade.js +49 -0
  43. package/dist/adapters/websocket/server/upgrade.js.map +1 -0
  44. package/dist/adapters/websocket/shared/rpc.d.ts +2 -0
  45. package/dist/adapters/websocket/shared/rpc.d.ts.map +1 -1
  46. package/dist/adapters/websocket/shared/rpc.js +8 -2
  47. package/dist/adapters/websocket/shared/rpc.js.map +1 -1
  48. package/dist/browser.d.ts +12 -4
  49. package/dist/browser.d.ts.map +1 -1
  50. package/dist/browser.js +13 -2
  51. package/dist/browser.js.map +1 -1
  52. package/dist/client/client.d.ts +43 -0
  53. package/dist/client/client.d.ts.map +1 -1
  54. package/dist/client/client.js +69 -1
  55. package/dist/client/client.js.map +1 -1
  56. package/dist/events/publisher.d.ts +25 -1
  57. package/dist/events/publisher.d.ts.map +1 -1
  58. package/dist/events/publisher.js +66 -9
  59. package/dist/events/publisher.js.map +1 -1
  60. package/dist/events/rows.d.ts +31 -0
  61. package/dist/events/rows.d.ts.map +1 -0
  62. package/dist/events/rows.js +39 -0
  63. package/dist/events/rows.js.map +1 -0
  64. package/dist/index.d.ts +1 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +1 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/node.d.ts +14 -0
  69. package/dist/node.d.ts.map +1 -1
  70. package/dist/node.js +9 -0
  71. package/dist/node.js.map +1 -1
  72. package/dist/procedures/capability.d.ts +6 -0
  73. package/dist/procedures/capability.d.ts.map +1 -1
  74. package/dist/procedures/capability.js +25 -0
  75. package/dist/procedures/capability.js.map +1 -1
  76. package/dist/procedures/collection/changes.d.ts +94 -0
  77. package/dist/procedures/collection/changes.d.ts.map +1 -0
  78. package/dist/procedures/collection/changes.js +182 -0
  79. package/dist/procedures/collection/changes.js.map +1 -0
  80. package/dist/procedures/collection/index.d.ts +10 -3
  81. package/dist/procedures/collection/index.d.ts.map +1 -1
  82. package/dist/procedures/collection/index.js +8 -1
  83. package/dist/procedures/collection/index.js.map +1 -1
  84. package/dist/procedures/collection/partition.d.ts +67 -0
  85. package/dist/procedures/collection/partition.d.ts.map +1 -0
  86. package/dist/procedures/collection/partition.js +82 -0
  87. package/dist/procedures/collection/partition.js.map +1 -0
  88. package/dist/procedures/collection/procedures.d.ts +39 -2
  89. package/dist/procedures/collection/procedures.d.ts.map +1 -1
  90. package/dist/procedures/collection/procedures.js +147 -44
  91. package/dist/procedures/collection/procedures.js.map +1 -1
  92. package/dist/procedures/collection/query.d.ts +246 -0
  93. package/dist/procedures/collection/query.d.ts.map +1 -0
  94. package/dist/procedures/collection/query.js +854 -0
  95. package/dist/procedures/collection/query.js.map +1 -0
  96. package/dist/procedures/collection/schemas.d.ts +50 -0
  97. package/dist/procedures/collection/schemas.d.ts.map +1 -1
  98. package/dist/procedures/collection/schemas.js +144 -6
  99. package/dist/procedures/collection/schemas.js.map +1 -1
  100. package/dist/procedures/collection/storage.d.ts +58 -6
  101. package/dist/procedures/collection/storage.d.ts.map +1 -1
  102. package/dist/procedures/collection/storage.js +23 -0
  103. package/dist/procedures/collection/storage.js.map +1 -1
  104. package/dist/procedures/elicit.d.ts +190 -0
  105. package/dist/procedures/elicit.d.ts.map +1 -0
  106. package/dist/procedures/elicit.js +127 -0
  107. package/dist/procedures/elicit.js.map +1 -0
  108. package/dist/procedures/hints.d.ts +43 -0
  109. package/dist/procedures/hints.d.ts.map +1 -0
  110. package/dist/procedures/hints.js +74 -0
  111. package/dist/procedures/hints.js.map +1 -0
  112. package/dist/procedures/index.d.ts +9 -2
  113. package/dist/procedures/index.d.ts.map +1 -1
  114. package/dist/procedures/index.js +5 -1
  115. package/dist/procedures/index.js.map +1 -1
  116. package/dist/procedures/invoke.d.ts +24 -2
  117. package/dist/procedures/invoke.d.ts.map +1 -1
  118. package/dist/procedures/invoke.js +14 -1
  119. package/dist/procedures/invoke.js.map +1 -1
  120. package/dist/procedures/progress.d.ts +24 -0
  121. package/dist/procedures/progress.d.ts.map +1 -0
  122. package/dist/procedures/progress.js +11 -0
  123. package/dist/procedures/progress.js.map +1 -0
  124. package/dist/procedures/registry.d.ts.map +1 -1
  125. package/dist/procedures/registry.js +5 -0
  126. package/dist/procedures/registry.js.map +1 -1
  127. package/dist/procedures/types.d.ts +55 -0
  128. package/dist/procedures/types.d.ts.map +1 -1
  129. package/dist/procedures/types.js.map +1 -1
  130. package/dist/procedures/untrusted.d.ts +28 -0
  131. package/dist/procedures/untrusted.d.ts.map +1 -0
  132. package/dist/procedures/untrusted.js +32 -0
  133. package/dist/procedures/untrusted.js.map +1 -0
  134. package/dist/server/browser-guard.d.ts +12 -2
  135. package/dist/server/browser-guard.d.ts.map +1 -1
  136. package/dist/server/browser-guard.js +43 -6
  137. package/dist/server/browser-guard.js.map +1 -1
  138. package/dist/server/host-policy.d.ts +10 -1
  139. package/dist/server/host-policy.d.ts.map +1 -1
  140. package/dist/server/host-policy.js +5 -0
  141. package/dist/server/host-policy.js.map +1 -1
  142. package/dist/server/index.d.ts +1 -1
  143. package/dist/server/index.d.ts.map +1 -1
  144. package/dist/server/index.js.map +1 -1
  145. package/dist/server/procedure-server.d.ts +68 -7
  146. package/dist/server/procedure-server.d.ts.map +1 -1
  147. package/dist/server/procedure-server.js +124 -24
  148. package/dist/server/procedure-server.js.map +1 -1
  149. package/dist/server/request-auth.d.ts +51 -4
  150. package/dist/server/request-auth.d.ts.map +1 -1
  151. package/dist/server/request-auth.js +116 -5
  152. package/dist/server/request-auth.js.map +1 -1
  153. package/dist/server/types.d.ts +73 -5
  154. package/dist/server/types.d.ts.map +1 -1
  155. package/dist/server/types.js.map +1 -1
  156. package/package.json +7 -3
  157. package/src/adapters/http/client/transport.ts +11 -1
  158. package/src/adapters/http/client/types.ts +22 -0
  159. package/src/adapters/http/server/cors.ts +144 -0
  160. package/src/adapters/http/server/handler.ts +624 -0
  161. package/src/adapters/http/server/strategies.ts +16 -6
  162. package/src/adapters/http/server/transport.ts +55 -478
  163. package/src/adapters/http/server/types.ts +15 -0
  164. package/src/adapters/websocket/client/transport.ts +4 -12
  165. package/src/adapters/websocket/server/transport.ts +166 -16
  166. package/src/adapters/websocket/server/types.ts +11 -3
  167. package/src/adapters/websocket/server/upgrade-router.ts +77 -0
  168. package/src/adapters/websocket/server/upgrade.ts +88 -0
  169. package/src/adapters/websocket/shared/rpc.ts +9 -2
  170. package/src/browser.ts +85 -2
  171. package/src/client/client.ts +83 -1
  172. package/src/events/publisher.ts +75 -11
  173. package/src/events/rows.ts +48 -0
  174. package/src/index.ts +1 -1
  175. package/src/node.ts +21 -0
  176. package/src/procedures/capability.ts +21 -0
  177. package/src/procedures/collection/changes.ts +245 -0
  178. package/src/procedures/collection/index.ts +57 -1
  179. package/src/procedures/collection/partition.ts +123 -0
  180. package/src/procedures/collection/procedures.ts +206 -51
  181. package/src/procedures/collection/query.ts +1009 -0
  182. package/src/procedures/collection/schemas.ts +196 -7
  183. package/src/procedures/collection/storage.ts +78 -6
  184. package/src/procedures/elicit.ts +320 -0
  185. package/src/procedures/hints.ts +91 -0
  186. package/src/procedures/index.ts +83 -2
  187. package/src/procedures/invoke.ts +33 -2
  188. package/src/procedures/progress.ts +25 -0
  189. package/src/procedures/registry.ts +4 -0
  190. package/src/procedures/types.ts +65 -0
  191. package/src/procedures/untrusted.ts +50 -0
  192. package/src/server/browser-guard.ts +48 -6
  193. package/src/server/host-policy.ts +13 -1
  194. package/src/server/index.ts +3 -0
  195. package/src/server/procedure-server.ts +147 -26
  196. package/src/server/request-auth.ts +128 -6
  197. package/src/server/types.ts +82 -5
@@ -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 { credentialsOf, withoutSecretHeaders } from "../../../server/request-auth.js";
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) */
@@ -70,7 +88,7 @@ export class WebSocketServerTransport {
70
88
  // Connection lifecycle event handlers
71
89
  connectHandlers = [];
72
90
  disconnectHandlers = [];
73
- constructor(server, options) {
91
+ constructor(server, options = {}) {
74
92
  this.server = server;
75
93
  this.options = {
76
94
  server: options.server,
@@ -83,6 +101,9 @@ export class WebSocketServerTransport {
83
101
  highWaterMark: options.highWaterMark ?? 1024 * 1024,
84
102
  };
85
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);
86
107
  this.reverseRequestTimeoutMs = optionalMs(options.reverseRequestTimeout, "reverseRequestTimeout") ?? TIMER_DEFAULTS.webSocketServer.reverseRequestTimeoutMs;
87
108
  this.heartbeat =
88
109
  options.heartbeat === false
@@ -116,9 +137,21 @@ export class WebSocketServerTransport {
116
137
  }
117
138
  }
118
139
  async start() {
119
- // Create WebSocket server
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
120
153
  this.wss = new WebSocketServer({
121
- server: this.options.server,
154
+ noServer: true,
122
155
  path: this.options.path,
123
156
  perMessageDeflate: this.options.perMessageDeflate,
124
157
  maxPayload: this.options.maxPayload,
@@ -127,7 +160,11 @@ export class WebSocketServerTransport {
127
160
  // when the host gave an authenticate handler, so any web page could open one and call
128
161
  // procedures (cross-site WebSocket hijacking)
129
162
  verifyClient: async ({ req }, callback) => {
130
- const guard = checkBrowserRequest(req, this.guard);
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);
131
168
  if (!guard.ok) {
132
169
  callback(false, guard.status, guard.message);
133
170
  return;
@@ -149,6 +186,8 @@ export class WebSocketServerTransport {
149
186
  this.wss.on("connection", (ws, req) => {
150
187
  this.handleConnection(ws, req);
151
188
  });
189
+ if (this.options.server)
190
+ this.detach = attachUpgradeTarget(this.options.server, this);
152
191
  if (this.heartbeat) {
153
192
  this.heartbeatTimer = setInterval(() => this.beat(), this.heartbeat.interval);
154
193
  // The heartbeat must not keep the process alive
@@ -161,6 +200,8 @@ export class WebSocketServerTransport {
161
200
  clearInterval(this.heartbeatTimer);
162
201
  this.heartbeatTimer = undefined;
163
202
  }
203
+ this.detach?.();
204
+ this.detach = undefined;
164
205
  if (this.wss) {
165
206
  // Stop the requests in progress, so their handlers end (deep dive TRN-15), and fail the
166
207
  // calls that the server sent to its clients
@@ -169,6 +210,7 @@ export class WebSocketServerTransport {
169
210
  channel.outgoing.failAll("Server stopped");
170
211
  }
171
212
  this.channels.clear();
213
+ this.callSettled();
172
214
  // Close all connections
173
215
  for (const ws of this.connections) {
174
216
  ws.close();
@@ -192,6 +234,90 @@ export class WebSocketServerTransport {
192
234
  isRunning() {
193
235
  return this.wss !== null;
194
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
+ }
195
321
  /**
196
322
  * Handle new WebSocket connection.
197
323
  */
@@ -206,10 +332,13 @@ export class WebSocketServerTransport {
206
332
  connectedAt: new Date(),
207
333
  metadata: {
208
334
  remoteAddress: req.socket.remoteAddress,
209
- headers: withoutSecretHeaders(req.headers),
335
+ headers: withoutSecretHeaders(req.headers, this.secretHeaders),
210
336
  },
211
337
  };
212
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" });
213
342
  // The calls of this connection in the two directions (roadmap R24)
214
343
  const isOpen = () => ws.readyState === WebSocket.OPEN;
215
344
  const send = (frame) => this.send(ws, frame);
@@ -219,7 +348,8 @@ export class WebSocketServerTransport {
219
348
  send,
220
349
  sendWithBackpressure: (frame, signal) => this.sendWithBackpressure(ws, frame, signal),
221
350
  isOpen,
222
- requestOf: (frame, signal) => this.requestOf(frame, req, connectionId, signal),
351
+ requestOf: (frame, signal) => this.requestOf(frame, req, connectionId, signal, credentials),
352
+ onSettled: () => this.callSettled(),
223
353
  }),
224
354
  outgoing: new OutgoingCalls({
225
355
  send,
@@ -262,6 +392,7 @@ export class WebSocketServerTransport {
262
392
  channel?.incoming.abortAll();
263
393
  channel?.outgoing.failAll("WebSocket connection closed");
264
394
  this.channels.delete(connectionId);
395
+ this.callSettled();
265
396
  this.eventTransports.delete(connectionId);
266
397
  const conn = this.trackedConnections.get(connectionId);
267
398
  if (conn) {
@@ -288,7 +419,7 @@ export class WebSocketServerTransport {
288
419
  * The server request of a `request` frame of a connection: the metadata of the frame and of the
289
420
  * connection, the signal of the call, and the credentials of the upgrade (roadmap R18).
290
421
  */
291
- requestOf(frame, req, connectionId, signal) {
422
+ requestOf(frame, req, connectionId, signal, credentials) {
292
423
  return {
293
424
  id: frame.id,
294
425
  method: frame.method,
@@ -300,11 +431,12 @@ export class WebSocketServerTransport {
300
431
  connectionId,
301
432
  remoteAddress: req.socket.remoteAddress,
302
433
  // The upgrade headers without their secrets (roadmap R18)
303
- headers: withoutSecretHeaders(req.headers),
434
+ headers: withoutSecretHeaders(req.headers, this.secretHeaders),
304
435
  },
305
436
  signal,
306
- // The credentials of the connection: the bearer token of its upgrade (R18)
307
- credentials: credentialsOf(req),
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,
308
440
  };
309
441
  }
310
442
  /**
@@ -349,6 +481,11 @@ export class WebSocketServerTransport {
349
481
  // A frame of a call that the server sent to this client (roadmap R24)
350
482
  if (channel.outgoing.receive(message))
351
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
+ }
352
489
  // A frame of a call of the client: a request, a cancel or a credit
353
490
  if (channel.incoming.receive(message))
354
491
  return;
@@ -388,7 +525,7 @@ export class WebSocketServerTransport {
388
525
  /**
389
526
  * Send error to client.
390
527
  */
391
- sendError(ws, id, message, code = "INTERNAL_ERROR") {
528
+ sendError(ws, id, message, code = "INTERNAL_ERROR", retryable = false) {
392
529
  const errorMessage = {
393
530
  id,
394
531
  type: "error",
@@ -396,12 +533,12 @@ export class WebSocketServerTransport {
396
533
  type: "error",
397
534
  code,
398
535
  message,
399
- retryable: false,
536
+ retryable,
400
537
  },
401
538
  error: {
402
539
  code,
403
540
  message,
404
- retryable: false,
541
+ retryable,
405
542
  },
406
543
  };
407
544
  this.send(ws, errorMessage);
@@ -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 to attach WebSocket server to.
27
- * Required - WebSocket upgrades HTTP connections.
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: HttpServer;
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":"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"}
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"}