@nifrajs/core 4.0.2 → 5.1.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 (239) hide show
  1. package/README.md +6 -2
  2. package/dist/assurance.d.ts +86 -6
  3. package/dist/assurance.d.ts.map +1 -1
  4. package/dist/assurance.js +186 -95
  5. package/dist/assurance.js.map +1 -1
  6. package/dist/capabilities.d.ts +8 -0
  7. package/dist/capabilities.d.ts.map +1 -1
  8. package/dist/capabilities.js +53 -1
  9. package/dist/capabilities.js.map +1 -1
  10. package/dist/durable-effect.js +1 -1
  11. package/dist/durable-effect.js.map +1 -1
  12. package/dist/durable-saga.d.ts +6 -0
  13. package/dist/durable-saga.d.ts.map +1 -1
  14. package/dist/durable-saga.js +83 -10
  15. package/dist/durable-saga.js.map +1 -1
  16. package/dist/edge-kit.d.ts +8 -3
  17. package/dist/edge-kit.d.ts.map +1 -1
  18. package/dist/edge-kit.js +7 -2
  19. package/dist/edge-kit.js.map +1 -1
  20. package/dist/effect-scope.d.ts.map +1 -1
  21. package/dist/effect-scope.js +16 -5
  22. package/dist/effect-scope.js.map +1 -1
  23. package/dist/errors.d.ts +1 -1
  24. package/dist/errors.d.ts.map +1 -1
  25. package/dist/errors.js.map +1 -1
  26. package/dist/evidence.d.ts +2 -0
  27. package/dist/evidence.d.ts.map +1 -1
  28. package/dist/evidence.js +9 -1
  29. package/dist/evidence.js.map +1 -1
  30. package/dist/index.d.ts +5 -4
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +4 -3
  33. package/dist/index.js.map +1 -1
  34. package/dist/internal/durable-shared.d.ts +1 -2
  35. package/dist/internal/durable-shared.d.ts.map +1 -1
  36. package/dist/internal/durable-shared.js +25 -44
  37. package/dist/internal/durable-shared.js.map +1 -1
  38. package/dist/internal/durable-types.d.ts +3 -0
  39. package/dist/internal/durable-types.d.ts.map +1 -1
  40. package/dist/internal/hook-origins.d.ts +67 -0
  41. package/dist/internal/hook-origins.d.ts.map +1 -0
  42. package/dist/internal/hook-origins.js +86 -0
  43. package/dist/internal/hook-origins.js.map +1 -0
  44. package/dist/internal/route-assurance.d.ts +6 -3
  45. package/dist/internal/route-assurance.d.ts.map +1 -1
  46. package/dist/internal/route-assurance.js +29 -14
  47. package/dist/internal/route-assurance.js.map +1 -1
  48. package/dist/internal/route-compiler.d.ts +9 -0
  49. package/dist/internal/route-compiler.d.ts.map +1 -1
  50. package/dist/internal/route-compiler.js +95 -13
  51. package/dist/internal/route-compiler.js.map +1 -1
  52. package/dist/internal/route-program.d.ts +1 -1
  53. package/dist/internal/route-program.d.ts.map +1 -1
  54. package/dist/internal/route-program.js +59 -16
  55. package/dist/internal/route-program.js.map +1 -1
  56. package/dist/internal/same-origin.d.ts +11 -1
  57. package/dist/internal/same-origin.d.ts.map +1 -1
  58. package/dist/internal/same-origin.js +8 -0
  59. package/dist/internal/same-origin.js.map +1 -1
  60. package/dist/reconciliation-worker.d.ts.map +1 -1
  61. package/dist/reconciliation-worker.js +12 -2
  62. package/dist/reconciliation-worker.js.map +1 -1
  63. package/dist/reflection.d.ts +53 -2
  64. package/dist/reflection.d.ts.map +1 -1
  65. package/dist/reflection.js +352 -5
  66. package/dist/reflection.js.map +1 -1
  67. package/dist/router/pattern.d.ts +1 -1
  68. package/dist/router/pattern.d.ts.map +1 -1
  69. package/dist/router/pattern.js +6 -3
  70. package/dist/router/pattern.js.map +1 -1
  71. package/dist/security/baseline.d.ts +3 -0
  72. package/dist/security/baseline.d.ts.map +1 -1
  73. package/dist/security/baseline.js +9 -5
  74. package/dist/security/baseline.js.map +1 -1
  75. package/dist/server/auth.d.ts +32 -3
  76. package/dist/server/auth.d.ts.map +1 -1
  77. package/dist/server/auth.js +23 -0
  78. package/dist/server/auth.js.map +1 -1
  79. package/dist/server/body-lane.d.ts +8 -2
  80. package/dist/server/body-lane.d.ts.map +1 -1
  81. package/dist/server/body-lane.js +27 -2
  82. package/dist/server/body-lane.js.map +1 -1
  83. package/dist/server/body.d.ts +7 -0
  84. package/dist/server/body.d.ts.map +1 -1
  85. package/dist/server/body.js +34 -1
  86. package/dist/server/body.js.map +1 -1
  87. package/dist/server/client-ip.d.ts +3 -0
  88. package/dist/server/client-ip.d.ts.map +1 -1
  89. package/dist/server/client-ip.js +6 -5
  90. package/dist/server/client-ip.js.map +1 -1
  91. package/dist/server/context.d.ts +2 -1
  92. package/dist/server/context.d.ts.map +1 -1
  93. package/dist/server/cookies.d.ts.map +1 -1
  94. package/dist/server/cookies.js +13 -1
  95. package/dist/server/cookies.js.map +1 -1
  96. package/dist/server/edge.d.ts.map +1 -1
  97. package/dist/server/edge.js +2 -1
  98. package/dist/server/edge.js.map +1 -1
  99. package/dist/server/http.d.ts.map +1 -1
  100. package/dist/server/http.js +5 -1
  101. package/dist/server/http.js.map +1 -1
  102. package/dist/server/idempotency-lane.d.ts +6 -3
  103. package/dist/server/idempotency-lane.d.ts.map +1 -1
  104. package/dist/server/idempotency-lane.js +38 -17
  105. package/dist/server/idempotency-lane.js.map +1 -1
  106. package/dist/server/install.d.ts +2 -0
  107. package/dist/server/install.d.ts.map +1 -1
  108. package/dist/server/install.js +2 -0
  109. package/dist/server/install.js.map +1 -1
  110. package/dist/server/logger.d.ts.map +1 -1
  111. package/dist/server/logger.js +3 -1
  112. package/dist/server/logger.js.map +1 -1
  113. package/dist/server/methods.d.ts +1 -0
  114. package/dist/server/methods.d.ts.map +1 -1
  115. package/dist/server/methods.js +1 -0
  116. package/dist/server/methods.js.map +1 -1
  117. package/dist/server/node-outcome.d.ts.map +1 -1
  118. package/dist/server/node-outcome.js +29 -11
  119. package/dist/server/node-outcome.js.map +1 -1
  120. package/dist/server/platform-adapters.d.ts.map +1 -1
  121. package/dist/server/platform-adapters.js +3 -2
  122. package/dist/server/platform-adapters.js.map +1 -1
  123. package/dist/server/request-context.d.ts +2 -1
  124. package/dist/server/request-context.d.ts.map +1 -1
  125. package/dist/server/request-context.js +4 -1
  126. package/dist/server/request-context.js.map +1 -1
  127. package/dist/server/respond.d.ts +44 -11
  128. package/dist/server/respond.d.ts.map +1 -1
  129. package/dist/server/respond.js +192 -79
  130. package/dist/server/respond.js.map +1 -1
  131. package/dist/server/response-contract-lane.d.ts +21 -6
  132. package/dist/server/response-contract-lane.d.ts.map +1 -1
  133. package/dist/server/response-contract-lane.js +139 -14
  134. package/dist/server/response-contract-lane.js.map +1 -1
  135. package/dist/server/response-observer-runtime.d.ts.map +1 -1
  136. package/dist/server/response-observer-runtime.js +10 -41
  137. package/dist/server/response-observer-runtime.js.map +1 -1
  138. package/dist/server/runtime-core.d.ts +2 -0
  139. package/dist/server/runtime-core.d.ts.map +1 -1
  140. package/dist/server/runtime-core.js +2 -0
  141. package/dist/server/runtime-core.js.map +1 -1
  142. package/dist/server/server-types.d.ts +45 -10
  143. package/dist/server/server-types.d.ts.map +1 -1
  144. package/dist/server/server.d.ts +67 -32
  145. package/dist/server/server.d.ts.map +1 -1
  146. package/dist/server/server.js +481 -334
  147. package/dist/server/server.js.map +1 -1
  148. package/dist/server/sse.d.ts +11 -1
  149. package/dist/server/sse.d.ts.map +1 -1
  150. package/dist/server/sse.js +18 -3
  151. package/dist/server/sse.js.map +1 -1
  152. package/dist/server/transport-lane.d.ts +7 -1
  153. package/dist/server/transport-lane.d.ts.map +1 -1
  154. package/dist/server/transport-lane.js.map +1 -1
  155. package/dist/server/webhook.d.ts +5 -2
  156. package/dist/server/webhook.d.ts.map +1 -1
  157. package/dist/server/webhook.js +17 -1
  158. package/dist/server/webhook.js.map +1 -1
  159. package/dist/server/websocket.d.ts +33 -14
  160. package/dist/server/websocket.d.ts.map +1 -1
  161. package/dist/server/websocket.js +47 -12
  162. package/dist/server/websocket.js.map +1 -1
  163. package/dist/server/ws-bun.d.ts +7 -1
  164. package/dist/server/ws-bun.d.ts.map +1 -1
  165. package/dist/server/ws-bun.js +42 -2
  166. package/dist/server/ws-bun.js.map +1 -1
  167. package/dist/server/ws-hook.d.ts +15 -3
  168. package/dist/server/ws-hook.d.ts.map +1 -1
  169. package/dist/server.d.ts +4 -3
  170. package/dist/server.d.ts.map +1 -1
  171. package/dist/server.js +3 -2
  172. package/dist/server.js.map +1 -1
  173. package/dist/single-copy.d.ts +6 -0
  174. package/dist/single-copy.d.ts.map +1 -1
  175. package/dist/single-copy.js +55 -6
  176. package/dist/single-copy.js.map +1 -1
  177. package/dist/tool-contract.d.ts.map +1 -1
  178. package/dist/tool-contract.js +71 -40
  179. package/dist/tool-contract.js.map +1 -1
  180. package/dist/wire.d.ts +5 -0
  181. package/dist/wire.d.ts.map +1 -1
  182. package/dist/wire.js +5 -0
  183. package/dist/wire.js.map +1 -1
  184. package/dist/ws.d.ts.map +1 -1
  185. package/dist/ws.js +4 -1
  186. package/dist/ws.js.map +1 -1
  187. package/package.json +1 -1
  188. package/src/assurance.ts +299 -111
  189. package/src/capabilities.ts +62 -1
  190. package/src/durable-effect.ts +1 -1
  191. package/src/durable-saga.ts +94 -10
  192. package/src/edge-kit.ts +8 -3
  193. package/src/effect-scope.ts +15 -5
  194. package/src/errors.ts +1 -0
  195. package/src/evidence.ts +12 -3
  196. package/src/index.ts +7 -2
  197. package/src/internal/durable-shared.ts +25 -37
  198. package/src/internal/durable-types.ts +3 -0
  199. package/src/internal/hook-origins.ts +153 -0
  200. package/src/internal/route-assurance.ts +32 -18
  201. package/src/internal/route-compiler.ts +107 -16
  202. package/src/internal/route-program.ts +98 -44
  203. package/src/internal/same-origin.ts +14 -1
  204. package/src/reconciliation-worker.ts +10 -2
  205. package/src/reflection.ts +455 -4
  206. package/src/router/pattern.ts +6 -3
  207. package/src/security/baseline.ts +10 -5
  208. package/src/server/auth.ts +45 -3
  209. package/src/server/body-lane.ts +36 -1
  210. package/src/server/body.ts +34 -1
  211. package/src/server/client-ip.ts +8 -5
  212. package/src/server/context.ts +2 -1
  213. package/src/server/cookies.ts +12 -1
  214. package/src/server/edge.ts +2 -1
  215. package/src/server/http.ts +7 -1
  216. package/src/server/idempotency-lane.ts +64 -22
  217. package/src/server/install.ts +3 -0
  218. package/src/server/logger.ts +3 -1
  219. package/src/server/methods.ts +1 -0
  220. package/src/server/node-outcome.ts +34 -12
  221. package/src/server/platform-adapters.ts +3 -2
  222. package/src/server/request-context.ts +5 -0
  223. package/src/server/respond.ts +222 -69
  224. package/src/server/response-contract-lane.ts +162 -10
  225. package/src/server/response-observer-runtime.ts +16 -38
  226. package/src/server/runtime-core.ts +2 -0
  227. package/src/server/server-types.ts +45 -10
  228. package/src/server/server.ts +707 -539
  229. package/src/server/sse.ts +84 -55
  230. package/src/server/transport-lane.ts +7 -1
  231. package/src/server/webhook.ts +22 -3
  232. package/src/server/websocket.ts +83 -18
  233. package/src/server/ws-bun.ts +48 -1
  234. package/src/server/ws-hook.ts +14 -2
  235. package/src/server.ts +6 -1
  236. package/src/single-copy.ts +55 -5
  237. package/src/tool-contract.ts +67 -39
  238. package/src/wire.ts +14 -0
  239. package/src/ws.ts +6 -0
@@ -11,7 +11,10 @@ export interface SSEMessage {
11
11
  }
12
12
  /** The stream handed to the `run` callback. */
13
13
  export interface SSEStream {
14
- /** Enqueue an event frame. No-op once the stream is closed. */
14
+ /**
15
+ * Enqueue an event frame. No-op once the stream is closed, including after a client that fell
16
+ * more than `maxBufferedBytes` behind was dropped.
17
+ */
15
18
  send(message: SSEMessage): void;
16
19
  /** End the stream now. */
17
20
  close(): void;
@@ -27,6 +30,13 @@ export interface SSEInit {
27
30
  readonly headers?: ConstructorParameters<typeof Headers>[0];
28
31
  /** Send a `: ` comment ping every N ms so idle proxies don't drop the connection. */
29
32
  readonly keepAlive?: number;
33
+ /**
34
+ * Bytes of sent events one client may leave unread, default 1 MiB. Past it the client is dropped:
35
+ * `signal` aborts, the queued frames are released, and later sends are no-ops, so a reader that
36
+ * stalls cannot hold server memory without limit. Raise it for a burst larger than this sent before
37
+ * the client can read; `Infinity` turns the limit off.
38
+ */
39
+ readonly maxBufferedBytes?: number;
30
40
  }
31
41
  /**
32
42
  * The stream handed to an `app.sse()` handler: `send` takes the route's TYPED event payload and
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD,4GAA4G;AAC5G,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,+DAA+D;IAC/D,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAA;IAC/B,0BAA0B;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AAED,8FAA8F;AAC9F,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAGxB,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,qFAAqF;IACrF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK;IACnC,gGAAgG;IAChG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3E,uDAAuD;IACvD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,0BAA0B;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAW9E;AAkBD,wBAAgB,GAAG,CACjB,CAAC,EAAE,UAAU,EACb,GAAG,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAChD,IAAI,GAAE,OAAY,GACjB,QAAQ,CAmFV;AAOD;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,cAAc,CAU1C"}
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIjD,4GAA4G;AAC5G,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAA;IAC/B,0BAA0B;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AAED,8FAA8F;AAC9F,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAGxB,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,qFAAqF;IACrF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC;AAID;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK;IACnC,gGAAgG;IAChG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3E,uDAAuD;IACvD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,0BAA0B;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAW9E;AAkBD,wBAAgB,GAAG,CACjB,CAAC,EAAE,UAAU,EACb,GAAG,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAChD,IAAI,GAAE,OAAY,GACjB,QAAQ,CAoGV;AAOD;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,cAAc,CAU1C"}
@@ -22,6 +22,7 @@
22
22
  * }, { keepAlive: 15_000 }))
23
23
  */
24
24
  import { INSTALL_SSE } from "./install.js";
25
+ const DEFAULT_MAX_BUFFERED_BYTES = 1024 * 1024;
25
26
  /** Wrap a raw {@link SSEStream} in the typed, JSON-serializing surface `app.sse()` hands out. */
26
27
  export function typedSSEStream(stream) {
27
28
  return {
@@ -55,6 +56,9 @@ function formatMessage(m) {
55
56
  return `${frame}\n`; // the blank line terminates the event
56
57
  }
57
58
  export function sse(c, run, init = {}) {
59
+ const maxBuffered = init.maxBufferedBytes ?? DEFAULT_MAX_BUFFERED_BYTES;
60
+ if (!(maxBuffered >= 0))
61
+ throw new RangeError("sse maxBufferedBytes must be a non-negative number");
58
62
  const encoder = new TextEncoder();
59
63
  const requestSignal = c.req?.signal;
60
64
  // The producer's signal also aborts when the runtime cancels the body: a writer that finds the
@@ -86,8 +90,19 @@ export function sse(c, run, init = {}) {
86
90
  };
87
91
  const stream = {
88
92
  send(message) {
89
- if (!closed)
90
- controller.enqueue(encoder.encode(formatMessage(message)));
93
+ if (closed)
94
+ return;
95
+ // The queue only shrinks as the runtime writes to the socket, so a backlog past the cap
96
+ // is a client that stopped reading. Erroring the body releases the queue and the socket.
97
+ if ((controller.desiredSize ?? 0) < 0) {
98
+ closed = true;
99
+ teardown();
100
+ const reason = new Error("sse_client_too_slow");
101
+ stopped.abort(reason);
102
+ controller.error(reason);
103
+ return;
104
+ }
105
+ controller.enqueue(encoder.encode(formatMessage(message)));
91
106
  },
92
107
  close,
93
108
  signal: stopped.signal,
@@ -132,7 +147,7 @@ export function sse(c, run, init = {}) {
132
147
  teardown();
133
148
  stopped.abort();
134
149
  },
135
- });
150
+ }, { highWaterMark: maxBuffered, size: (chunk) => chunk?.byteLength ?? 0 });
136
151
  const headers = new Headers(init.headers);
137
152
  headers.set("content-type", "text/event-stream; charset=utf-8");
138
153
  headers.set("cache-control", "no-cache, no-transform");
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAuD1C,iGAAiG;AACjG,MAAM,UAAU,cAAc,CAAQ,MAAiB;IACrD,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,CAAC,IAAI;YACV,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAChC,CAAC;QACD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAA;AACH,CAAC;AAED,MAAM,IAAI,GAAG,SAAS,CAAA;AACtB,MAAM,UAAU,GAAG,YAAY,CAAA;AAE/B,mGAAmG;AACnG,SAAS,aAAa,CAAC,CAAa;IAClC,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;IAC1E,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAAE,KAAK,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;IAC3E,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS;QAAE,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;IAClE,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAAE,KAAK,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;IACrE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YAAE,KAAK,IAAI,SAAS,IAAI,IAAI,CAAA;IACzE,CAAC;IACD,OAAO,GAAG,KAAK,IAAI,CAAA,CAAC,sCAAsC;AAC5D,CAAC;AAED,MAAM,UAAU,GAAG,CACjB,CAAa,EACb,GAAgD,EAChD,OAAgB,EAAE;IAElB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,MAAM,aAAa,GAA4B,CAAC,CAAC,GAAG,EAAE,MAAM,CAAA;IAC5D,+FAA+F;IAC/F,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAA;IACrC,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,SAAqD,CAAA;IACzD,IAAI,OAAiC,CAAA;IAErC,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,SAAS,KAAK,SAAS;YAAE,aAAa,CAAC,SAAS,CAAC,CAAA;QACrD,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACzD,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACrD,CAAC;IACH,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,IAAI,cAAc,CAAa;QAC1C,KAAK,CAAC,UAAU;YACd,MAAM,KAAK,GAAG,GAAS,EAAE;gBACvB,IAAI,MAAM;oBAAE,OAAM;gBAClB,MAAM,GAAG,IAAI,CAAA;gBACb,QAAQ,EAAE,CAAA;gBACV,IAAI,CAAC;oBACH,UAAU,CAAC,KAAK,EAAE,CAAA;gBACpB,CAAC;gBAAC,MAAM,CAAC;oBACP,6DAA6D;gBAC/D,CAAC;YACH,CAAC,CAAA;YACD,MAAM,MAAM,GAAc;gBACxB,IAAI,CAAC,OAAO;oBACV,IAAI,CAAC,MAAM;wBAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACzE,CAAC;gBACD,KAAK;gBACL,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAA;YAED,wCAAwC;YACxC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC1B,OAAO,CAAC,KAAK,EAAE,CAAA;oBACf,KAAK,EAAE,CAAA;oBACP,OAAM;gBACR,CAAC;gBACD,OAAO,GAAG,GAAG,EAAE;oBACb,OAAO,CAAC,KAAK,EAAE,CAAA;oBACf,KAAK,EAAE,CAAA;gBACT,CAAC,CAAA;gBACD,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAClE,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBACvD,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAE1E;gBAAC,SAAoC,CAAC,KAAK,EAAE,EAAE,CAAA;YAClD,CAAC;YACD,oFAAoF;YACpF,CAAC;YAAA,CAAC,KAAK,IAAI,EAAE;gBACX,MAAM,GAAG,CAAC,MAAM,CAAC,CAAA;YACnB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAY,EAAE,EAAE;gBAChC,IAAI,MAAM;oBAAE,OAAM;gBAClB,MAAM,GAAG,IAAI,CAAA;gBACb,QAAQ,EAAE,CAAA;gBACV,IAAI,CAAC;oBACH,UAAU,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;gBACjF,CAAC;gBAAC,MAAM,CAAC;oBACP,4BAA4B;gBAC9B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,MAAM;YACJ,yEAAyE;YACzE,MAAM,GAAG,IAAI,CAAA;YACb,QAAQ,EAAE,CAAA;YACV,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kCAAkC,CAAC,CAAA;IAC/D,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAA;IACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAA,CAAC,yBAAyB;IACvG,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;AACpE,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,CAAsB,GAAM,EAAK,EAAE;QAC/C,CAAC;QAAC,GAAiC,CAAC,WAAW,CAAC,CAAC;YAC/C,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI;gBACzB,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YACpE,CAAC;SACF,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAmB,CAAA;AAClF,CAAC"}
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,13 @@ export interface TransportRuntime {
22
22
  decodeRequest(source: TransportBodySource, contentType: string, maxBytes: number): Promise<TransportDecodeResult>;
23
23
  }
24
24
  export interface TransportCodecsOptions {
25
- /** Maximum encoded request bytes. Keep aligned with `server({ maxBodyBytes })`. */
25
+ /**
26
+ * Maximum encoded request bytes. Default 1,000,000. Keep aligned with `server({ maxBodyBytes })`.
27
+ *
28
+ * The plugin decodes a codec body in an `onRequest` hook, before routing, so a route's own
29
+ * `bodyLimit` and its `authenticate()` stages run only after the decode. This cap is the only
30
+ * bound on that work: set it to the largest codec body any route should accept.
31
+ */
26
32
  readonly maxBytes?: number;
27
33
  /**
28
34
  * Prototype-poisoning policy for decoded request bodies, mirroring
@@ -1 +1 @@
1
- {"version":3,"file":"transport-lane.d.ts","sourceRoot":"","sources":["../../src/server/transport-lane.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAGnF,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEzE,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5D,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;IAChD,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAA;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAAA;IACpD,aAAa,CACX,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,sBAAsB,EAChC,OAAO,GAAE,sBAA2B,GACnC,cAAc,CA6GhB"}
1
+ {"version":3,"file":"transport-lane.d.ts","sourceRoot":"","sources":["../../src/server/transport-lane.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAGnF,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEzE,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5D,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;IAChD,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAA;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAAA;IACpD,aAAa,CACX,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,sBAAsB,EAChC,OAAO,GAAE,sBAA2B,GACnC,cAAc,CA6GhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"transport-lane.js","sourceRoot":"","sources":["../../src/server/transport-lane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport-lane.js","sourceRoot":"","sources":["../../src/server/transport-lane.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  export type WebhookProvider = "stripe" | "github" | "generic";
2
- export type SignatureEncoding = "hex" | "base64";
2
+ export type SignatureEncoding = "hex" | "base64" | "base64url";
3
3
  export interface VerifyWebhookOptions {
4
4
  /** Known-provider preset. Default `"generic"` (which requires {@link header}). */
5
5
  readonly provider?: WebhookProvider;
6
6
  /** Header carrying the signature. Required for `generic`; overrides the preset otherwise. */
7
7
  readonly header?: string;
8
- /** How the signature is encoded in the header. Default `"hex"`. */
8
+ /**
9
+ * How the signature is encoded in the header. Default `"hex"`. `"base64url"` accepts the padded and
10
+ * unpadded forms and nothing outside its alphabet.
11
+ */
9
12
  readonly encoding?: SignatureEncoding;
10
13
  /** A prefix stripped from the header value before decoding, e.g. `"sha256="`. */
11
14
  readonly prefix?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,CAAA;AAEhD,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;IACnC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IACrC,iFAAiF;IACjF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,wFAAwF;IACxF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,MAAM,oBAAoB,GAC5B,mBAAmB,GACnB,mBAAmB,GACnB,4BAA4B,GAC5B,qBAAqB,GACrB,mBAAmB,GACnB,wBAAwB,CAAA;AAE5B,mGAAmG;AACnG,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAAA;AAqFjE;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CAgExB"}
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE9D,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;IACnC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IACrC,iFAAiF;IACjF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,wFAAwF;IACxF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,MAAM,oBAAoB,GAC5B,mBAAmB,GACnB,mBAAmB,GACnB,4BAA4B,GAC5B,qBAAqB,GACrB,mBAAmB,GACnB,wBAAwB,CAAA;AAE5B,mGAAmG;AACnG,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAAA;AAqGjE;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CAgExB"}
@@ -48,7 +48,23 @@ const fromBase64 = (value) => {
48
48
  return null;
49
49
  }
50
50
  };
51
- const decodeSignature = (value, encoding) => (encoding === "hex" ? fromHex(value) : fromBase64(value));
51
+ const BASE64URL = /^[A-Za-z0-9_-]+={0,2}$/;
52
+ const fromBase64Url = (value) => {
53
+ if (!BASE64URL.test(value))
54
+ return null;
55
+ const unpadded = value.replace(/=+$/, "");
56
+ // Padding only ever completes the last quartet; a lone trailing character encodes no byte.
57
+ if (unpadded.length % 4 === 1)
58
+ return null;
59
+ if (unpadded.length !== value.length && value.length % 4 !== 0)
60
+ return null;
61
+ return fromBase64(unpadded.replaceAll("-", "+").replaceAll("_", "/"));
62
+ };
63
+ const decodeSignature = (value, encoding) => encoding === "hex"
64
+ ? fromHex(value)
65
+ : encoding === "base64url"
66
+ ? fromBase64Url(value)
67
+ : fromBase64(value);
52
68
  /** True iff `sig` is a valid HMAC-SHA256 of `payload` under any of `keys` (constant-time per check). */
53
69
  async function verifyAny(keys, sig, payload) {
54
70
  for (const key of keys) {
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"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"}
@@ -67,7 +67,7 @@ export interface WebSocketContext<Env = unknown> {
67
67
  boundedJson<T = unknown>(maxBytes?: number): Promise<T>;
68
68
  }
69
69
  /** A WebSocket route's lifecycle. All callbacks optional; only `message` is needed for an echo. */
70
- export interface WebSocketHandler<Data = unknown, Env = unknown, Schema extends StandardSchemaV1 | undefined = undefined, Send extends StandardSchemaV1 | undefined = undefined> {
70
+ export interface WebSocketHandler<Data = unknown, Env = unknown, Schema extends StandardSchemaV1 | undefined = undefined, Send extends StandardSchemaV1 | undefined = undefined, Extra = unknown> {
71
71
  /**
72
72
  * Cross-site WebSocket hijacking (CSWSH) guard - checked BEFORE `upgrade()`. A browser does not
73
73
  * apply CORS to WebSocket handshakes and DOES send the page's cookies, so without an Origin check
@@ -84,12 +84,22 @@ export interface WebSocketHandler<Data = unknown, Env = unknown, Schema extends
84
84
  */
85
85
  allowedOrigins?: ReadonlyArray<string> | ((origin: string | null) => boolean);
86
86
  /**
87
- * Runs in the HTTP request context **before** the upgrade (and after {@link allowedOrigins}) - the
88
- * place to authenticate or rate-limit. Return the initial per-connection `data` (→ `ws.data`), or a
89
- * `Response` to **reject** the upgrade (the client never connects). Omit to accept with
90
- * `data: undefined`. A thrown error rejects with a flat 500.
87
+ * The capability ids this socket's code may reach, exactly as an HTTP route's `capabilities`.
88
+ * `nifra capabilities check` compares them with the effects reachable from the module that
89
+ * registers the socket. The handshake context carries the guard, so a runtime beacon in `upgrade()`
90
+ * (or one that keeps `c`) fails closed on an undeclared capability.
91
91
  */
92
- upgrade?(c: WebSocketContext<Env>): MaybePromise<Data | Response>;
92
+ capabilities?: readonly string[];
93
+ /**
94
+ * Runs in the HTTP request context **before** the upgrade, last in the chain an HTTP `GET` to the
95
+ * same path runs: after {@link allowedOrigins}, then the `authenticate()` stages, `derive`s and
96
+ * `beforeHandle`s registered before this route, any of which can refuse the handshake. `c` carries
97
+ * what they derived. Return the initial per-connection `data` (→ `ws.data`), or a `Response` or
98
+ * `status(...)` to **reject** the upgrade (the client never connects). Omit to accept with
99
+ * `data: undefined`. A thrown `Response` rejects with it; any other throw goes to the route's
100
+ * `onError` hooks, then a flat 500.
101
+ */
102
+ upgrade?(c: WebSocketContext<Env> & Extra): MaybePromise<Data | Response>;
93
103
  /**
94
104
  * Contract-first messages: a Standard Schema (`t`, zod, valibot, …) validating each **inbound** frame.
95
105
  * Text frames are parsed as JSON first. When set, `message` receives the validated, typed value; a
@@ -152,7 +162,13 @@ export type WebSocketUpgradeOutcome = {
152
162
  * `.use(websocket())` tree-shaking). `@nifrajs/workers` may import `attachWebSocket` directly instead. */
153
163
  readonly attach: WsAttach;
154
164
  readonly maxPayloadBytes?: number;
165
+ /** Builds `ws.send` over an adapter's native send, enforcing the route's {@link
166
+ * WebSocketHandler.validateSend}. Set on every outcome a nifra app produces; an adapter that
167
+ * wires its own sockets instead of calling `attach` (Node, Deno) builds `send` with it. */
168
+ readonly sender?: WsSender;
155
169
  };
170
+ /** The send-builder the upgrade outcome carries (the installed runtime's `sender`). */
171
+ export type WsSender = (handler: WebSocketHandler, send: (payload: string | ArrayBufferView | ArrayBuffer) => void, onError: (error: unknown) => void) => (payload: string | ArrayBufferView | ArrayBuffer) => void;
156
172
  /** The socket-wiring signature the upgrade outcome carries (the installed runtime's `attach`). */
157
173
  export type WsAttach = (socket: StandardWebSocket, handler: WebSocketHandler, data: unknown, options: {
158
174
  openNow: boolean;
@@ -183,6 +199,9 @@ export declare function attachWebSocket<Data = unknown, Env = unknown, Schema ex
183
199
  pubsub: TopicRegistry;
184
200
  maxPayloadBytes?: number | undefined;
185
201
  }): NifraWebSocket<Data>;
202
+ /** Whether a message is over `cap` UTF-8 bytes, without encoding a text one: each UTF-16 unit takes
203
+ * 1-3 bytes (a surrogate pair 4 for its 2), so only a length between those bounds is counted. */
204
+ export declare function exceedsPayloadCap(message: string | ArrayBuffer | Uint8Array, cap: number): boolean;
186
205
  type WebSocketSendPayload = string | ArrayBufferView | ArrayBuffer;
187
206
  /**
188
207
  * Build the socket's send function once. The disabled path returns the native sender directly, so
@@ -191,14 +210,14 @@ type WebSocketSendPayload = string | ArrayBufferView | ArrayBuffer;
191
210
  * the portable API, so an async result fails closed and is never sent.
192
211
  */
193
212
  export declare function createWebSocketSender(send: (payload: WebSocketSendPayload) => void, schema: StandardSchemaV1 | undefined, enabled: boolean | undefined, transport: WebSocketHandler["transport"], onError: (error: unknown) => void): (payload: WebSocketSendPayload) => void;
194
- /**
195
- * If the handler declares a `messageSchema`, return a copy whose `message` validates each frame -
196
- * parse as JSON, run the Standard Schema, then call the user's `message` with the typed value, or
197
- * `onInvalidMessage` on failure. Returns the handler unchanged when no schema is set. Called once at
198
- * `app.ws()` registration, so every adapter dispatches validated messages with no per-adapter code.
199
- * `protoPoisoning` is the app's body policy: a frame with a `__proto__` key gets what a JSON body
200
- * with one gets, and under `"reject"` reads as invalid JSON.
201
- */
213
+ /** {@link createWebSocketSender} configured from a route's handler: the outcome's `sender`. */
214
+ export declare const webSocketSender: WsSender;
215
+ /** The step a handshake's route chain ends in: the route's `upgrade()`, or an acceptance without data. */
216
+ export declare function handshakeUpgradeStep(handler: WebSocketHandler): (ctx: WebSocketContext) => unknown;
217
+ /** The acceptance a handshake's route chain ended in, or `undefined` when the chain refused it. */
218
+ export declare function acceptedHandshake(result: unknown): {
219
+ readonly data: unknown;
220
+ } | undefined;
202
221
  export declare function wrapWebSocketMessageValidation(handler: WebSocketHandler, protoPoisoning?: ProtoPoisoning): WebSocketHandler;
203
222
  export {};
204
223
  //# sourceMappingURL=websocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/server/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/server/websocket.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  import { validateStandard } from "../schema/standard.js";
12
12
  import { decodeTransportFrame } from "../transport-codec.js";
13
13
  import { guardDecodedValue, parseJsonGuarded } from "./proto-guard.js";
14
+ import { isResponseResult } from "./runtime-core.js";
14
15
  /**
15
16
  * In-process pub/sub for `ws.subscribe(topic)` + `app.publish(topic, data)`. **Single-instance only** -
16
17
  * topics live in this process's memory, so a multi-instance deploy (multiple servers behind a load
@@ -134,17 +135,11 @@ export function attachWebSocket(socket, handler, data, options) {
134
135
  socket.addEventListener("message", (event) => {
135
136
  const raw = event.data;
136
137
  const payload = typeof raw === "string" ? raw : toBinary(raw);
137
- // Measuring a text frame costs a full UTF-8 encode plus the buffer it allocates, so it happens
138
- // only for a route that actually declared a cap. Reading `.byteLength` off an already-decoded
139
- // binary frame is free, but the branch stays under the same guard to keep one shape here.
140
- if (maxPayloadBytes !== undefined) {
141
- const payloadBytes = typeof raw === "string"
142
- ? WS_PAYLOAD_ENCODER.encode(raw).byteLength
143
- : payload.byteLength;
144
- if (payloadBytes > maxPayloadBytes) {
145
- socket.close(1009, "message too large");
146
- return;
147
- }
138
+ // The runtime hands over each message whole, so this bounds what reaches the handler, not what
139
+ // the runtime buffered to deliver it.
140
+ if (maxPayloadBytes !== undefined && exceedsPayloadCap(payload, maxPayloadBytes)) {
141
+ socket.close(1009, "message too large");
142
+ return;
148
143
  }
149
144
  safe(() => handler.message?.(ws, payload));
150
145
  });
@@ -162,7 +157,25 @@ export function attachWebSocket(socket, handler, data, options) {
162
157
  return ws;
163
158
  }
164
159
  const WS_MESSAGE_DECODER = new TextDecoder();
165
- const WS_PAYLOAD_ENCODER = new TextEncoder();
160
+ /** Whether a message is over `cap` UTF-8 bytes, without encoding a text one: each UTF-16 unit takes
161
+ * 1-3 bytes (a surrogate pair 4 for its 2), so only a length between those bounds is counted. */
162
+ export function exceedsPayloadCap(message, cap) {
163
+ if (typeof message !== "string")
164
+ return message.byteLength > cap;
165
+ const units = message.length;
166
+ if (units > cap)
167
+ return true;
168
+ if (units * 3 <= cap)
169
+ return false;
170
+ let bytes = 0;
171
+ for (let i = 0; i < units; i++) {
172
+ const unit = message.charCodeAt(i);
173
+ bytes += unit < 0x80 ? 1 : unit < 0x800 || (unit >= 0xd800 && unit <= 0xdfff) ? 2 : 3;
174
+ if (bytes > cap)
175
+ return true;
176
+ }
177
+ return false;
178
+ }
166
179
  const OUTBOUND_VALIDATION_ERROR = "outbound WebSocket frame failed sendSchema validation";
167
180
  function outboundValueOf(payload, transport) {
168
181
  const text = typeof payload === "string"
@@ -231,6 +244,8 @@ export function createWebSocketSender(send, schema, enabled, transport, onError)
231
244
  send(payload);
232
245
  };
233
246
  }
247
+ /** {@link createWebSocketSender} configured from a route's handler: the outcome's `sender`. */
248
+ export const webSocketSender = (handler, send, onError) => createWebSocketSender(send, handler.sendSchema, handler.validateSend, handler.transport, onError);
234
249
  /**
235
250
  * If the handler declares a `messageSchema`, return a copy whose `message` validates each frame -
236
251
  * parse as JSON, run the Standard Schema, then call the user's `message` with the typed value, or
@@ -239,6 +254,26 @@ export function createWebSocketSender(send, schema, enabled, transport, onError)
239
254
  * `protoPoisoning` is the app's body policy: a frame with a `__proto__` key gets what a JSON body
240
255
  * with one gets, and under `"reject"` reads as invalid JSON.
241
256
  */
257
+ /** `upgrade()`'s acceptance, wrapped so a handshake's route chain tells it from an early result such
258
+ * as a guard's `Response` or a rejected auth stage. */
259
+ class HandshakeAccepted {
260
+ data;
261
+ constructor(data) {
262
+ this.data = data;
263
+ }
264
+ }
265
+ const acceptHandshake = (value) => value instanceof Response || isResponseResult(value) ? value : new HandshakeAccepted(value);
266
+ /** The step a handshake's route chain ends in: the route's `upgrade()`, or an acceptance without data. */
267
+ export function handshakeUpgradeStep(handler) {
268
+ return (ctx) => {
269
+ const data = handler.upgrade?.(ctx);
270
+ return data instanceof Promise ? data.then(acceptHandshake) : acceptHandshake(data);
271
+ };
272
+ }
273
+ /** The acceptance a handshake's route chain ended in, or `undefined` when the chain refused it. */
274
+ export function acceptedHandshake(result) {
275
+ return result instanceof HandshakeAccepted ? result : undefined;
276
+ }
242
277
  export function wrapWebSocketMessageValidation(handler, protoPoisoning = "reject") {
243
278
  const schema = handler.messageSchema;
244
279
  if (schema === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/server/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/server/websocket.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,9 @@ export interface BunWsData {
12
12
  readonly handler: WebSocketHandler;
13
13
  /** Mounted/modern upgrades carry this registry; old/manual fixtures may omit it. */
14
14
  readonly pubsub?: TopicRegistry;
15
+ /** The inbound cap of the app this socket belongs to (the upgrade outcome's). Absent, the
16
+ * listening app's applies. */
17
+ readonly maxPayloadBytes?: number | undefined;
15
18
  data: unknown;
16
19
  nifra?: NifraWebSocket;
17
20
  }
@@ -32,6 +35,9 @@ export interface BunSocket {
32
35
  * `nativePubsub` (set by `listen()` when the app has no validated-send route) makes subscriptions use
33
36
  * Bun's own pub/sub; there the registry holds nothing and Bun auto-drops native subscriptions on
34
37
  * close, so the `unsubscribeAll` sweep is skipped.
38
+ *
39
+ * `app` is the listening server. Its `wsMaxPayloadBytes` and its mounted apps' set the listener's
40
+ * `maxPayloadLength`; a socket whose app declares less is closed with `1009` here.
35
41
  */
36
- export declare function createBunWsHandlers(topics: TopicRegistry, nativePubsub?: boolean): BunWsHandlers;
42
+ export declare function createBunWsHandlers(topics: TopicRegistry, nativePubsub?: boolean, app?: object): BunWsHandlers;
37
43
  //# sourceMappingURL=ws-bun.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws-bun.d.ts","sourceRoot":"","sources":["../../src/server/ws-bun.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD;6FAC6F;AAC7F,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,oFAAoF;IACpF,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAA;IAC/B,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED;6EAC6E;AAC7E,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAG3B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAEhC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB;AAoFD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,UAAQ,GAAG,aAAa,CAgC9F"}
1
+ {"version":3,"file":"ws-bun.d.ts","sourceRoot":"","sources":["../../src/server/ws-bun.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD;6FAC6F;AAC7F,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,oFAAoF;IACpF,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAA;IAC/B;kCAC8B;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7C,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED;6EAC6E;AAC7E,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAG3B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAEhC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB;AA6GD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,YAAY,UAAQ,EACpB,GAAG,CAAC,EAAE,MAAM,GACX,aAAa,CA2Cf"}
@@ -4,7 +4,34 @@
4
4
  * bundle of a no-WebSocket app never ships it; `server.ts` only imports the **types** from here
5
5
  * (erased). No `Bun.*` calls here - the runtime seam stays in `server.ts` (see runtime-boundary.test).
6
6
  */
7
- import { createWebSocketSender, } from "./websocket.js";
7
+ import { createWebSocketSender, exceedsPayloadCap, } from "./websocket.js";
8
+ /**
9
+ * The largest `wsMaxPayloadBytes` among the nifra apps mounted under `app` that serve sockets, or
10
+ * `floor` when none declares more. Bun takes one frame limit per listener, so it has to admit every
11
+ * mounted app's cap. Reads each server's own mount table, as reflection does, so an app that never
12
+ * listens pays nothing for it; a child that is not a nifra server names no cap here.
13
+ */
14
+ function mountedPayloadCeiling(app, floor, seen) {
15
+ if (seen.has(app))
16
+ return floor;
17
+ seen.add(app);
18
+ const mounts = Reflect.get(app, "fetchMounts");
19
+ if (!Array.isArray(mounts))
20
+ return floor;
21
+ let ceiling = floor;
22
+ for (const mount of mounts) {
23
+ const child = typeof mount === "object" && mount !== null ? mount.app : undefined;
24
+ if (typeof child !== "object" || child === null)
25
+ continue;
26
+ const routes = Reflect.get(child, "wsRoutes");
27
+ const cap = Reflect.get(child, "wsMaxPayloadBytes");
28
+ if (Array.isArray(routes) && routes.length > 0 && typeof cap === "number" && cap > ceiling) {
29
+ ceiling = cap;
30
+ }
31
+ ceiling = mountedPayloadCeiling(child, ceiling, seen);
32
+ }
33
+ return ceiling;
34
+ }
8
35
  /** Normalize a received binary frame to `Uint8Array` (Bun hands a `Buffer`, already one; an
9
36
  * `ArrayBuffer` is wrapped). Text frames stay `string`. */
10
37
  function toBinaryData(message) {
@@ -80,9 +107,16 @@ function dispatchWsCallback(call, ws, handler) {
80
107
  * `nativePubsub` (set by `listen()` when the app has no validated-send route) makes subscriptions use
81
108
  * Bun's own pub/sub; there the registry holds nothing and Bun auto-drops native subscriptions on
82
109
  * close, so the `unsubscribeAll` sweep is skipped.
110
+ *
111
+ * `app` is the listening server. Its `wsMaxPayloadBytes` and its mounted apps' set the listener's
112
+ * `maxPayloadLength`; a socket whose app declares less is closed with `1009` here.
83
113
  */
84
- export function createBunWsHandlers(topics, nativePubsub = false) {
114
+ export function createBunWsHandlers(topics, nativePubsub = false, app) {
115
+ const own = app === undefined ? undefined : Reflect.get(app, "wsMaxPayloadBytes");
116
+ const appCap = typeof own === "number" ? own : Number.POSITIVE_INFINITY;
117
+ const listenerCap = app === undefined ? appCap : mountedPayloadCeiling(app, appCap, new Set());
85
118
  return {
119
+ maxPayloadLength: listenerCap,
86
120
  open: (raw) => {
87
121
  const ws = raw;
88
122
  const nifra = wrapBunSocket(ws, topics, ws.data.handler, nativePubsub);
@@ -91,6 +125,12 @@ export function createBunWsHandlers(topics, nativePubsub = false) {
91
125
  },
92
126
  message: (raw, message) => {
93
127
  const ws = raw;
128
+ // Only a socket whose app declares less than the listener admits pays for a size check.
129
+ const cap = ws.data.maxPayloadBytes ?? appCap;
130
+ if (cap < listenerCap && exceedsPayloadCap(message, cap)) {
131
+ ws.close(1009, "message too large");
132
+ return;
133
+ }
94
134
  const handler = ws.data.handler;
95
135
  const nifra = ws.data.nifra ?? wrapBunSocket(ws, topics, handler, nativePubsub);
96
136
  const data = typeof message === "string" ? message : toBinaryData(message);