@daloyjs/core 0.16.0 → 0.28.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 (102) hide show
  1. package/README.md +3 -3
  2. package/dist/adapters/bun.d.ts.map +1 -1
  3. package/dist/adapters/bun.js +38 -7
  4. package/dist/adapters/bun.js.map +1 -1
  5. package/dist/adapters/node.d.ts.map +1 -1
  6. package/dist/adapters/node.js +29 -7
  7. package/dist/adapters/node.js.map +1 -1
  8. package/dist/app.d.ts +412 -3
  9. package/dist/app.d.ts.map +1 -1
  10. package/dist/app.js +895 -29
  11. package/dist/app.js.map +1 -1
  12. package/dist/cli.d.ts +4 -0
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +218 -1
  15. package/dist/cli.js.map +1 -1
  16. package/dist/combine.d.ts +97 -0
  17. package/dist/combine.d.ts.map +1 -0
  18. package/dist/combine.js +247 -0
  19. package/dist/combine.js.map +1 -0
  20. package/dist/compression.d.ts +127 -0
  21. package/dist/compression.d.ts.map +1 -0
  22. package/dist/compression.js +368 -0
  23. package/dist/compression.js.map +1 -0
  24. package/dist/config.d.ts +97 -0
  25. package/dist/config.d.ts.map +1 -0
  26. package/dist/config.js +132 -0
  27. package/dist/config.js.map +1 -0
  28. package/dist/conn-info.d.ts +121 -0
  29. package/dist/conn-info.d.ts.map +1 -0
  30. package/dist/conn-info.js +145 -0
  31. package/dist/conn-info.js.map +1 -0
  32. package/dist/cookie.d.ts +112 -0
  33. package/dist/cookie.d.ts.map +1 -0
  34. package/dist/cookie.js +185 -0
  35. package/dist/cookie.js.map +1 -0
  36. package/dist/dependency.d.ts +47 -0
  37. package/dist/dependency.d.ts.map +1 -0
  38. package/dist/dependency.js +68 -0
  39. package/dist/dependency.js.map +1 -0
  40. package/dist/etag.d.ts +48 -0
  41. package/dist/etag.d.ts.map +1 -0
  42. package/dist/etag.js +117 -0
  43. package/dist/etag.js.map +1 -0
  44. package/dist/index.d.ts +41 -12
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +20 -5
  47. package/dist/index.js.map +1 -1
  48. package/dist/ip-restriction.d.ts +75 -0
  49. package/dist/ip-restriction.d.ts.map +1 -0
  50. package/dist/ip-restriction.js +203 -0
  51. package/dist/ip-restriction.js.map +1 -0
  52. package/dist/jwk.d.ts +82 -0
  53. package/dist/jwk.d.ts.map +1 -0
  54. package/dist/jwk.js +269 -0
  55. package/dist/jwk.js.map +1 -0
  56. package/dist/jwt.d.ts +103 -0
  57. package/dist/jwt.d.ts.map +1 -0
  58. package/dist/jwt.js +437 -0
  59. package/dist/jwt.js.map +1 -0
  60. package/dist/load-shedding.d.ts +73 -0
  61. package/dist/load-shedding.d.ts.map +1 -0
  62. package/dist/load-shedding.js +171 -0
  63. package/dist/load-shedding.js.map +1 -0
  64. package/dist/middleware.d.ts +205 -2
  65. package/dist/middleware.d.ts.map +1 -1
  66. package/dist/middleware.js +399 -78
  67. package/dist/middleware.js.map +1 -1
  68. package/dist/multipart.d.ts +17 -0
  69. package/dist/multipart.d.ts.map +1 -1
  70. package/dist/multipart.js +117 -1
  71. package/dist/multipart.js.map +1 -1
  72. package/dist/openapi.d.ts +8 -0
  73. package/dist/openapi.d.ts.map +1 -1
  74. package/dist/openapi.js +18 -1
  75. package/dist/openapi.js.map +1 -1
  76. package/dist/security-schemes.d.ts +21 -5
  77. package/dist/security-schemes.d.ts.map +1 -1
  78. package/dist/security-schemes.js +32 -5
  79. package/dist/security-schemes.js.map +1 -1
  80. package/dist/security.d.ts +32 -0
  81. package/dist/security.d.ts.map +1 -1
  82. package/dist/security.js +79 -0
  83. package/dist/security.js.map +1 -1
  84. package/dist/session.d.ts +43 -1
  85. package/dist/session.d.ts.map +1 -1
  86. package/dist/session.js +130 -87
  87. package/dist/session.js.map +1 -1
  88. package/dist/subdomains.d.ts +97 -0
  89. package/dist/subdomains.d.ts.map +1 -0
  90. package/dist/subdomains.js +157 -0
  91. package/dist/subdomains.js.map +1 -0
  92. package/dist/time-claims.d.ts +72 -0
  93. package/dist/time-claims.d.ts.map +1 -0
  94. package/dist/time-claims.js +88 -0
  95. package/dist/time-claims.js.map +1 -0
  96. package/dist/types.d.ts +50 -0
  97. package/dist/types.d.ts.map +1 -1
  98. package/dist/websocket.d.ts +51 -34
  99. package/dist/websocket.d.ts.map +1 -1
  100. package/dist/websocket.js +162 -2
  101. package/dist/websocket.js.map +1 -1
  102. package/package.json +30 -3
@@ -1,37 +1,6 @@
1
- /**
2
- * WebSocket primitives — runtime-agnostic types, handshake, and RFC 6455
3
- * frame protocol. Adapter packages (`@daloyjs/core/node`, `@daloyjs/core/bun`)
4
- * wire these primitives into their respective servers.
5
- *
6
- * The public API mirrors the WHATWG `WebSocket` interface where it makes
7
- * sense for the server side (`readyState`, `send`, `close`, `protocol`,
8
- * `extensions`, `bufferedAmount`, `binaryType`) and uses Bun-style handler
9
- * callbacks (`open`, `message`, `close`, `drain`, `error`) so the same
10
- * handler shape runs on both Node and Bun.
11
- *
12
- * ```ts
13
- * import { App } from "@daloyjs/core";
14
- * import { serve } from "@daloyjs/core/node";
15
- *
16
- * const app = new App();
17
- *
18
- * app.ws("/chat/:room", {
19
- * open(conn, ctx) {
20
- * conn.data = { user: ctx.query.user ?? "anon", room: ctx.params.room };
21
- * conn.send(`welcome ${(conn.data as any).user}`);
22
- * },
23
- * message(conn, data) {
24
- * conn.send(typeof data === "string" ? data.toUpperCase() : data);
25
- * },
26
- * close(conn, code, reason) {
27
- * // cleanup
28
- * },
29
- * });
30
- *
31
- * serve(app, { port: 3000 });
32
- * ```
33
- */
1
+ import { type RateLimitOptions } from "./middleware.js";
34
2
  import { type RouteMatch } from "./router.js";
3
+ import type { StandardSchemaV1 } from "./schema.js";
35
4
  import type { AppState, PathString, PathParams } from "./types.js";
36
5
  /** RFC 6455 magic GUID used to compute `Sec-WebSocket-Accept`. */
37
6
  export declare const WS_GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
@@ -66,6 +35,9 @@ export declare const WS_CLOSE_CODE: {
66
35
  };
67
36
  /** Maximum payload length permitted on a single control frame (RFC 6455 §5.5). */
68
37
  export declare const WS_MAX_CONTROL_PAYLOAD = 125;
38
+ export declare const DEFAULT_WS_BACKPRESSURE_LIMIT: number;
39
+ export declare const DEFAULT_WS_MAX_PAYLOAD_LENGTH: number;
40
+ export declare const DEFAULT_WS_IDLE_TIMEOUT_SECONDS = 120;
69
41
  /**
70
42
  * Live, server-side view of a WebSocket connection. Implementations are
71
43
  * supplied by the runtime adapter; user handlers receive an instance and
@@ -119,6 +91,20 @@ export interface WebSocketContext<P extends string = string, S = AppState> {
119
91
  * same handler runs on both Node and Bun.
120
92
  */
121
93
  export interface WebSocketHandler<P extends string = string, S = AppState, TData = unknown> {
94
+ /** Optional schema used for payload-size consistency checks. */
95
+ request?: {
96
+ body?: StandardSchemaV1;
97
+ };
98
+ /** Close the connection when queued outbound bytes exceed backpressureLimit. Default: true. */
99
+ closeOnBackpressureLimit?: boolean;
100
+ /** Maximum queued outbound bytes before backpressure handling triggers. Default: 1 MiB. */
101
+ backpressureLimit?: number;
102
+ /** Per-message compression. Default: false; refused in production secureDefaults. */
103
+ perMessageDeflate?: boolean;
104
+ /** Idle timeout in seconds. Default: 120; `0` is refused. */
105
+ idleTimeout?: number;
106
+ /** Maximum inbound message payload length in bytes. Default: 1 MiB. */
107
+ maxPayloadLength?: number;
122
108
  beforeUpgrade?(request: Request, ctx: WebSocketContext<P, S>): Response | string | undefined | Promise<Response | string | undefined>;
123
109
  open?(conn: WebSocketConnection<TData>, ctx: WebSocketContext<P, S>): void | Promise<void>;
124
110
  message?(conn: WebSocketConnection<TData>, data: string | Uint8Array | ArrayBuffer, isBinary: boolean): void | Promise<void>;
@@ -126,12 +112,33 @@ export interface WebSocketHandler<P extends string = string, S = AppState, TData
126
112
  error?(conn: WebSocketConnection<TData>, err: unknown): void | Promise<void>;
127
113
  drain?(conn: WebSocketConnection<TData>): void | Promise<void>;
128
114
  }
115
+ export interface NormalizedWebSocketOptions {
116
+ closeOnBackpressureLimit: boolean;
117
+ backpressureLimit: number;
118
+ perMessageDeflate: boolean;
119
+ idleTimeout: number;
120
+ maxPayloadLength: number;
121
+ }
122
+ export declare function normalizeWebSocketOptions(handler: WebSocketHandler<any, any, any>, context: {
123
+ production: boolean;
124
+ secureDefaults: boolean;
125
+ }): NormalizedWebSocketOptions;
126
+ export type WebSocketBeforeUpgrade<P extends string = string, S = AppState> = NonNullable<WebSocketHandler<P, S>["beforeUpgrade"]>;
127
+ /**
128
+ * Adapt `rateLimit({ groupId })` to the WebSocket upgrade boundary. Use it as
129
+ * a `beforeUpgrade` handler to spend from the same shared buckets as HTTP
130
+ * routes (for example, login and WebSocket session-establishment endpoints).
131
+ *
132
+ * @since 0.23.0
133
+ */
134
+ export declare function wsRateLimit<P extends string = string, S = AppState>(options: RateLimitOptions): WebSocketBeforeUpgrade<P, S>;
129
135
  /** Helper for declaring a handler with full type-inference. */
130
136
  export declare function defineWebSocket<P extends string, S = AppState, TData = unknown>(handler: WebSocketHandler<P, S, TData>): WebSocketHandler<P, S, TData>;
131
137
  export interface WebSocketRouteEntry {
132
138
  path: PathString;
133
139
  handler: WebSocketHandler<any, any, any>;
134
140
  createState: WebSocketStateFactory;
141
+ options: NormalizedWebSocketOptions;
135
142
  }
136
143
  type WebSocketStateFactory = () => Record<string, unknown>;
137
144
  /**
@@ -144,9 +151,11 @@ type WebSocketStateFactory = () => Record<string, unknown>;
144
151
  export declare class WebSocketRegistry {
145
152
  private router;
146
153
  private _size;
147
- add(path: PathString, handler: WebSocketHandler<any, any, any>, createState?: WebSocketStateFactory): void;
154
+ private entries;
155
+ add(path: PathString, handler: WebSocketHandler<any, any, any>, createState?: WebSocketStateFactory, options?: NormalizedWebSocketOptions): void;
148
156
  find(pathname: string): RouteMatch<WebSocketRouteEntry> | undefined;
149
157
  get size(): number;
158
+ runtimeOptions(): NormalizedWebSocketOptions;
150
159
  }
151
160
  /**
152
161
  * Compute the `Sec-WebSocket-Accept` response header value for a given
@@ -231,6 +240,11 @@ export declare function decodeClosePayload(payload: Uint8Array): {
231
240
  export declare class WebSocketProtocolError extends Error {
232
241
  constructor(message: string);
233
242
  }
243
+ export declare class WebSocketPayloadTooLargeError extends WebSocketProtocolError {
244
+ readonly limit: number;
245
+ readonly actual: number;
246
+ constructor(limit: number, actual: number);
247
+ }
234
248
  /**
235
249
  * Incremental parser that buffers bytes from a socket and emits whole
236
250
  * frames. Handles fragmentation, interleaved control frames, and UTF-8
@@ -259,12 +273,15 @@ export declare class FrameSink {
259
273
  private buffer;
260
274
  private fragments;
261
275
  private fragmentOpcode;
276
+ private fragmentBytes;
262
277
  private closed;
263
278
  constructor(opts: FrameSinkEvents & {
264
279
  requireMask?: boolean;
280
+ maxPayloadLength?: number;
265
281
  });
266
282
  push(chunk: Uint8Array): void;
267
283
  private handle;
284
+ private assertMessageSize;
268
285
  }
269
286
  /** Coerce arbitrary `send()` payloads to a `Uint8Array` + opcode pair. */
270
287
  export declare function encodeSendPayload(data: string | ArrayBufferLike | ArrayBufferView): {
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAe,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAChF,kEAAkE;AAClE,eAAO,MAAM,OAAO,yCAAyC,CAAC;AAE9D,+CAA+C;AAC/C,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,wBAAwB;AACxB,eAAO,MAAM,SAAS;;;;;;;CAOZ,CAAC;AAEX,0CAA0C;AAC1C,eAAO,MAAM,aAAa;;;;;;;;;;;CAWhB,CAAC;AAEX,kFAAkF;AAClF,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,6BAA6B,QAAc,CAAC;AACzD,eAAO,MAAM,6BAA6B,QAAc,CAAC;AACzD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAInD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,KAAK,GAAG,OAAO;IAClD,0BAA0B;IAC1B,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,2DAA2D;IAC3D,UAAU,EAAE,aAAa,GAAG,YAAY,CAAC;IACzC,6EAA6E;IAC7E,IAAI,EAAE,KAAK,CAAC;IACZ,mCAAmC;IACnC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC;IAC7D,0DAA0D;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,uCAAuC;IACvC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC;IAC9D,uCAAuC;IACvC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC;IAC9D,mEAAmE;IACnE,SAAS,IAAI,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,QAAQ;IACvE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC;IACT,iFAAiF;IACjF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,GAAG,QAAQ,EACZ,KAAK,GAAG,OAAO;IAEf,gEAAgE;IAChE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACtC,+FAA+F;IAC/F,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,CACZ,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1B,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC,CACH,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAChC,GAAG,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,CAAC,CACN,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAChC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,EACvC,QAAQ,EAAE,OAAO,GAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,CAAC,CACJ,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,CAAC,CAAC,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,KAAK,CAAC,CAAC,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,0BAA0B;IACzC,wBAAwB,EAAE,OAAO,CAAC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAmCD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACxC,OAAO,EAAE;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,GACxD,0BAA0B,CAmC5B;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,QAAQ,IAAI,WAAW,CACvF,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CACxC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,QAAQ,EACjE,OAAO,EAAE,gBAAgB,GACxB,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CA4B9B;AAQD,+DAA+D;AAC/D,wBAAgB,eAAe,CAC7B,CAAC,SAAS,MAAM,EAChB,CAAC,GAAG,QAAQ,EACZ,KAAK,GAAG,OAAO,EACf,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAEvE;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,WAAW,EAAE,qBAAqB,CAAC;IACnC,OAAO,EAAE,0BAA0B,CAAC;CACrC;AAED,KAAK,qBAAqB,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3D;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAqC;IAAC,OAAO,CAAC,KAAK,CAAK;IACtE,OAAO,CAAC,OAAO,CAA6B;IAC5C,GAAG,CACD,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACxC,WAAW,GAAE,qBAAkC,EAC/C,OAAO,GAAE,0BAGP,GACD,IAAI;IAOP,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,mBAAmB,CAAC,GAAG,SAAS;IAInE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,cAAc,IAAI,0BAA0B;CAoB7C;AAsBD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAM7E;AAID;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,CAYR;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GACpD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAClC,GAAG,OAAO,CAAC,eAAe,CAAC,CAuC3B;AAaD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,UAAU,CAAC;IACpB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,eAAqC,CAAC;AAEnE;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,WAAW,GAAG,OAAO,gBAAgB,CAsFvC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,UAAU,CAgEb;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,UAAU,CAUxE;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAUA;AAED,gFAAgF;AAChF,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;IAErE,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;CAK1B;AAID;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,eAAe,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACpD;AAED;;;;GAIG;AACH,qBAAa,SAAS;IAQlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,MAAM,CAAS;gBAGJ,IAAI,EAAE,eAAe,GAAG;QACvC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;IAGH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IA8B7B,OAAO,CAAC,MAAM;IA6Dd,OAAO,CAAC,iBAAiB;CAQ1B;AAID,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAC/C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAiBzC"}
package/dist/websocket.js CHANGED
@@ -31,6 +31,9 @@
31
31
  * serve(app, { port: 3000 });
32
32
  * ```
33
33
  */
34
+ import { HttpError, InternalError } from "./errors.js";
35
+ import { rateLimit } from "./middleware.js";
36
+ import { getFileFieldOptions } from "./multipart.js";
34
37
  import { Router } from "./router.js";
35
38
  /** RFC 6455 magic GUID used to compute `Sec-WebSocket-Accept`. */
36
39
  export const WS_GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
@@ -65,6 +68,117 @@ export const WS_CLOSE_CODE = {
65
68
  };
66
69
  /** Maximum payload length permitted on a single control frame (RFC 6455 §5.5). */
67
70
  export const WS_MAX_CONTROL_PAYLOAD = 125;
71
+ export const DEFAULT_WS_BACKPRESSURE_LIMIT = 1024 * 1024;
72
+ export const DEFAULT_WS_MAX_PAYLOAD_LENGTH = 1024 * 1024;
73
+ export const DEFAULT_WS_IDLE_TIMEOUT_SECONDS = 120;
74
+ function assertPositiveWebSocketInteger(name, value) {
75
+ if (!Number.isInteger(value) || value <= 0) {
76
+ throw new Error(`app.ws(): ${name} must be a positive integer.`);
77
+ }
78
+ }
79
+ function schemaToJson(schema) {
80
+ const converter = schema?.toJSONSchema;
81
+ if (typeof converter !== "function")
82
+ return undefined;
83
+ try {
84
+ return converter.call(schema);
85
+ }
86
+ catch {
87
+ return undefined;
88
+ }
89
+ }
90
+ function declaredSchemaMaxBytes(schema) {
91
+ const fileOptions = getFileFieldOptions(schema);
92
+ if (fileOptions?.maxBytes !== undefined)
93
+ return fileOptions.maxBytes;
94
+ const jsonSchema = schemaToJson(schema);
95
+ if (!jsonSchema || typeof jsonSchema !== "object")
96
+ return undefined;
97
+ const record = jsonSchema;
98
+ const maxLength = record.maxLength;
99
+ if (typeof maxLength === "number" && Number.isFinite(maxLength) && maxLength >= 0) {
100
+ return Math.floor(maxLength);
101
+ }
102
+ const maxBytes = record["x-max-bytes"] ?? record.maxBytes;
103
+ if (typeof maxBytes === "number" && Number.isFinite(maxBytes) && maxBytes >= 0) {
104
+ return Math.floor(maxBytes);
105
+ }
106
+ return undefined;
107
+ }
108
+ export function normalizeWebSocketOptions(handler, context) {
109
+ const closeOnBackpressureLimit = handler.closeOnBackpressureLimit ?? true;
110
+ const backpressureLimit = handler.backpressureLimit ?? DEFAULT_WS_BACKPRESSURE_LIMIT;
111
+ const perMessageDeflate = handler.perMessageDeflate ?? false;
112
+ const idleTimeout = handler.idleTimeout ?? DEFAULT_WS_IDLE_TIMEOUT_SECONDS;
113
+ const maxPayloadLength = handler.maxPayloadLength ?? DEFAULT_WS_MAX_PAYLOAD_LENGTH;
114
+ assertPositiveWebSocketInteger("backpressureLimit", backpressureLimit);
115
+ assertPositiveWebSocketInteger("idleTimeout", idleTimeout);
116
+ assertPositiveWebSocketInteger("maxPayloadLength", maxPayloadLength);
117
+ if (typeof closeOnBackpressureLimit !== "boolean") {
118
+ throw new Error("app.ws(): closeOnBackpressureLimit must be a boolean.");
119
+ }
120
+ if (typeof perMessageDeflate !== "boolean") {
121
+ throw new Error("app.ws(): perMessageDeflate must be a boolean.");
122
+ }
123
+ if (perMessageDeflate && context.secureDefaults && context.production) {
124
+ throw new Error("app.ws(): perMessageDeflate: true is refused in production under secureDefaults. " +
125
+ "Leave it false or pass app({ secureDefaults: false }) only for a reviewed deployment.");
126
+ }
127
+ const schemaMaxBytes = declaredSchemaMaxBytes(handler.request?.body);
128
+ if (schemaMaxBytes !== undefined && maxPayloadLength > schemaMaxBytes) {
129
+ throw new Error(`app.ws(): maxPayloadLength (${maxPayloadLength}) exceeds the route body schema maximum (${schemaMaxBytes}).`);
130
+ }
131
+ return {
132
+ closeOnBackpressureLimit,
133
+ backpressureLimit,
134
+ perMessageDeflate,
135
+ idleTimeout,
136
+ maxPayloadLength,
137
+ };
138
+ }
139
+ /**
140
+ * Adapt `rateLimit({ groupId })` to the WebSocket upgrade boundary. Use it as
141
+ * a `beforeUpgrade` handler to spend from the same shared buckets as HTTP
142
+ * routes (for example, login and WebSocket session-establishment endpoints).
143
+ *
144
+ * @since 0.23.0
145
+ */
146
+ export function wsRateLimit(options) {
147
+ const hooks = rateLimit(options);
148
+ return async (request, wsContext) => {
149
+ const setHeaders = new Headers();
150
+ const ctx = {
151
+ request,
152
+ params: wsContext.params,
153
+ query: wsContext.query,
154
+ headers: wsContext.headers,
155
+ body: undefined,
156
+ state: wsContext.state,
157
+ set: { headers: setHeaders },
158
+ };
159
+ try {
160
+ const result = await hooks.beforeHandle?.(ctx);
161
+ if (result instanceof Response) {
162
+ copyWsRateLimitHeaders(setHeaders, result);
163
+ return result;
164
+ }
165
+ return undefined;
166
+ }
167
+ catch (err) {
168
+ const response = err instanceof HttpError
169
+ ? err.toResponse()
170
+ : new InternalError(err instanceof Error ? err.message : "WebSocket rate limit failed").toResponse();
171
+ copyWsRateLimitHeaders(setHeaders, response);
172
+ return response;
173
+ }
174
+ };
175
+ }
176
+ function copyWsRateLimitHeaders(headers, response) {
177
+ headers.forEach((value, key) => {
178
+ if (!response.headers.has(key))
179
+ response.headers.set(key, value);
180
+ });
181
+ }
68
182
  /** Helper for declaring a handler with full type-inference. */
69
183
  export function defineWebSocket(handler) {
70
184
  return handler;
@@ -79,8 +193,14 @@ export function defineWebSocket(handler) {
79
193
  export class WebSocketRegistry {
80
194
  router = new Router();
81
195
  _size = 0;
82
- add(path, handler, createState = () => ({})) {
83
- this.router.add("GET", path, { path, handler, createState });
196
+ entries = [];
197
+ add(path, handler, createState = () => ({}), options = normalizeWebSocketOptions(handler, {
198
+ production: false,
199
+ secureDefaults: true,
200
+ })) {
201
+ const entry = { path, handler, createState, options };
202
+ this.router.add("GET", path, entry);
203
+ this.entries.push(entry);
84
204
  this._size += 1;
85
205
  }
86
206
  find(pathname) {
@@ -89,6 +209,24 @@ export class WebSocketRegistry {
89
209
  get size() {
90
210
  return this._size;
91
211
  }
212
+ runtimeOptions() {
213
+ if (this.entries.length === 0) {
214
+ return {
215
+ closeOnBackpressureLimit: true,
216
+ backpressureLimit: DEFAULT_WS_BACKPRESSURE_LIMIT,
217
+ perMessageDeflate: false,
218
+ idleTimeout: DEFAULT_WS_IDLE_TIMEOUT_SECONDS,
219
+ maxPayloadLength: DEFAULT_WS_MAX_PAYLOAD_LENGTH,
220
+ };
221
+ }
222
+ return {
223
+ closeOnBackpressureLimit: this.entries.every((entry) => entry.options.closeOnBackpressureLimit),
224
+ backpressureLimit: Math.max(...this.entries.map((entry) => entry.options.backpressureLimit)),
225
+ perMessageDeflate: this.entries.some((entry) => entry.options.perMessageDeflate),
226
+ idleTimeout: Math.min(...this.entries.map((entry) => entry.options.idleTimeout)),
227
+ maxPayloadLength: Math.max(...this.entries.map((entry) => entry.options.maxPayloadLength)),
228
+ };
229
+ }
92
230
  }
93
231
  // ---------- Handshake helpers ----------
94
232
  const enc = new TextEncoder();
@@ -376,6 +514,16 @@ export class WebSocketProtocolError extends Error {
376
514
  this.name = "WebSocketProtocolError";
377
515
  }
378
516
  }
517
+ export class WebSocketPayloadTooLargeError extends WebSocketProtocolError {
518
+ limit;
519
+ actual;
520
+ constructor(limit, actual) {
521
+ super(`WebSocket message exceeds maxPayloadLength (${actual} > ${limit})`);
522
+ this.limit = limit;
523
+ this.actual = actual;
524
+ this.name = "WebSocketPayloadTooLargeError";
525
+ }
526
+ }
379
527
  /**
380
528
  * Stream-oriented assembler. Push chunks via {@link FrameSink.push}; callbacks
381
529
  * fire as whole messages and control frames become available. Designed to be
@@ -386,6 +534,7 @@ export class FrameSink {
386
534
  buffer = new Uint8Array(0);
387
535
  fragments = [];
388
536
  fragmentOpcode = -1;
537
+ fragmentBytes = 0;
389
538
  closed = false;
390
539
  constructor(opts) {
391
540
  this.opts = opts;
@@ -446,6 +595,7 @@ export class FrameSink {
446
595
  if (this.fragmentOpcode === -1) {
447
596
  throw new WebSocketProtocolError("Continuation frame without an initial data frame");
448
597
  }
598
+ this.assertMessageSize(frame.payload.length);
449
599
  this.fragments.push(frame.payload.slice());
450
600
  }
451
601
  else {
@@ -453,6 +603,7 @@ export class FrameSink {
453
603
  throw new WebSocketProtocolError("New data frame received while a fragmented message is in progress");
454
604
  }
455
605
  this.fragmentOpcode = frame.opcode;
606
+ this.assertMessageSize(frame.payload.length);
456
607
  this.fragments.push(frame.payload.slice());
457
608
  }
458
609
  if (frame.fin) {
@@ -466,6 +617,7 @@ export class FrameSink {
466
617
  const isBinary = this.fragmentOpcode === WS_OPCODE.BINARY;
467
618
  this.fragments = [];
468
619
  this.fragmentOpcode = -1;
620
+ this.fragmentBytes = 0;
469
621
  if (isBinary) {
470
622
  this.opts.onMessage({ data: joined, isBinary: true });
471
623
  }
@@ -481,6 +633,14 @@ export class FrameSink {
481
633
  }
482
634
  }
483
635
  }
636
+ assertMessageSize(nextPayloadLength) {
637
+ const limit = this.opts.maxPayloadLength;
638
+ const nextTotal = this.fragmentBytes + nextPayloadLength;
639
+ if (limit !== undefined && nextTotal > limit) {
640
+ throw new WebSocketPayloadTooLargeError(limit, nextTotal);
641
+ }
642
+ this.fragmentBytes = nextTotal;
643
+ }
484
644
  }
485
645
  // ---------- Helpers shared by adapters ----------
486
646
  /** Coerce arbitrary `send()` payloads to a `Uint8Array` + opcode pair. */
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AACtD,kEAAkE;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,sCAAsC,CAAC;AAE9D,+CAA+C;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;CACD,CAAC;AAEX,wBAAwB;AACxB,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY,EAAE,GAAG;IACjB,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;CACD,CAAC;AAEX,0CAA0C;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,IAAI;IACrB,cAAc,EAAE,IAAI;CACZ,CAAC;AAEX,kFAAkF;AAClF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAqF1C,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAI7B,OAAsC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IACpB,MAAM,GAAG,IAAI,MAAM,EAAuB,CAAC;IAAS,KAAK,GAAG,CAAC,CAAC;IACtE,GAAG,CAAC,IAAgB,EAAE,OAAwC,EAAE,cAAqC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAC7G,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,QAAgB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED,0CAA0C;AAE1C,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAE9B,SAAS,aAAa,CAAC,KAAiB;IACtC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,CAAC,GAAwB,UAAkC,CAAC,MAAM,CAAC;IACzE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAChD,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAC5E,OAAO,aAAa,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAiC;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,MAAM;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,WAAW,GAAG,gCAAgC,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAgB,EAChB,OAA0B;IAE1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,sBAAsB,CAC9B,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,sBAAsB,CAC9B,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAWD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAErC;IACC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE,CAAC;QACtD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,mCAAmC;SAC5C,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,sCAAsC;SAC/C,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,mCAAmC;SAC5C,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,sCAAsC;SAC/C,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO;QACL,EAAE,EAAE,IAAI;QACR,SAAS;QACT,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAYD,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CACxB,GAAe,EACf,OAAkC,EAAE;IAEpC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC5C,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IACnB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IACnB,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IACtB,IAAI,GAAG,KAAK,CAAC;QACX,MAAM,IAAI,sBAAsB,CAC9B,kDAAkD,CACnD,CAAC;IACJ,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG;YACN,MAAM,IAAI,sBAAsB,CAAC,uCAAuC,CAAC,CAAC;QAC5E,IAAI,UAAU,GAAG,sBAAsB;YACrC,MAAM,IAAI,sBAAsB,CAC9B,yCAAyC,CAC1C,CAAC;QACJ,IACE,MAAM,KAAK,SAAS,CAAC,KAAK;YAC1B,MAAM,KAAK,SAAS,CAAC,IAAI;YACzB,MAAM,KAAK,SAAS,CAAC,IAAI;YAEzB,MAAM,IAAI,sBAAsB,CAC9B,4BAA4B,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAClD,CAAC;IACN,CAAC;SAAM,IACL,MAAM,KAAK,SAAS,CAAC,YAAY;QACjC,MAAM,KAAK,SAAS,CAAC,IAAI;QACzB,MAAM,KAAK,SAAS,CAAC,MAAM,EAC3B,CAAC;QACD,MAAM,IAAI,sBAAsB,CAC9B,yBAAyB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAC/C,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,gBAAgB,CAAC;QACrD,UAAU,GAAG,CAAC,GAAG,CAAC,MAAM,CAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACpD,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;SAAM,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,gBAAgB,CAAC;QACrD,0EAA0E;QAC1E,MAAM,EAAE,GACN,GAAG,CAAC,MAAM,CAAE,GAAG,CAAC,IAAI,EAAE;YACtB,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,EAAE,CAAC;YACxB,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC;YACvB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACnB,MAAM,EAAE,GACN,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,CAAC,IAAI,EAAE;YAC1B,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,EAAE,CAAC;YACxB,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC;YACvB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACnB,IAAI,EAAE,GAAG,QAAQ;YACf,MAAM,IAAI,sBAAsB,CAC9B,+CAA+C,CAChD,CAAC;QACJ,UAAU,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,sBAAsB,CAAC,8BAA8B,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,IAA4B,CAAC;IACjC,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,gBAAgB,CAAC;QACrD,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU;QAAE,OAAO,gBAAgB,CAAC;IAE9D,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;IAC1D,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAK3B;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACpE,MAAM,IAAI,sBAAsB,CAAC,yCAAyC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,MAAM,GAAc,CAAC,CAAC;IAC1B,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK;QAAE,MAAM,GAAG,CAAC,CAAC;SACnC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,GAAG,CAAC,CAAC;IAC1C,SAAS,IAAI,MAAM,CAAC;IACpB,IAAI,MAAM;QAAE,SAAS,IAAI,CAAC,CAAC;IAE3B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IACnC,IAAI,MAAM,KAAK,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;SAC3D,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACnC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACtC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACnC,kEAAkE;QAClE,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;QACpB,iFAAiF;QACjF,IAAI,GAAG,GAAG,UAAU,EAAE,CAAC;YACrB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC;QAC3B,MAAM,CAAC,GAAI,UAAkC,CAAC,MAAM,CAAC;QACrD,IAAI,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;QACJ,CAAC;QACD,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAChD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAAM,GAAG,EAAE;IAC1D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,WAAW,CAAC,MAAM,GAAG,sBAAsB,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,sBAAsB,CAAC,gCAAgC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,OAAmB;IAIpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,kBAAkB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QACtB,MAAM,IAAI,sBAAsB,CAAC,yCAAyC,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAC7D,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpB,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,gFAAgF;AAChF,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAwBD;;;;GAIG;AACH,MAAM,OAAO,SAAS;IAOD;IANX,MAAM,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACvC,SAAS,GAAiB,EAAE,CAAC;IAC7B,cAAc,GAAG,CAAC,CAAC,CAAC;IACpB,MAAM,GAAG,KAAK,CAAC;IAEvB,YACmB,IAAiD;QAAjD,SAAI,GAAJ,IAAI,CAA6C;IACjE,CAAC;IAEJ,IAAI,CAAC,KAAiB;QACpB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;oBACpC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;iBACnC,CAAC,CAAC;gBACH,IAAI,KAAK,KAAK,gBAAgB;oBAAE,OAAO;gBACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnB,IAAI,IAAI,CAAC,MAAM;oBAAE,OAAO;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,sBAAsB,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAkB;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,uEAAuE;YACvE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBACrC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,sBAAsB,CAC9B,kDAAkD,CACnD,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,sBAAsB,CAC9B,mEAAmE,CACpE,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACtB,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;YACrB,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,MAAM,CAAC;YAC1D,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAY,CAAC;gBACjB,IAAI,CAAC;oBACH,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClE,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,sBAAsB,CAAC,+BAA+B,CAAC,CAAC;gBACpE,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,mDAAmD;AAEnD,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAC/B,IAAgD;IAEhD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/D,CAAC;IACD,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,OAAO,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;SACvE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,OAAO,EAAE,IAAI,UAAU,CAAC,IAAuB,CAAC;KACjD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daloyjs/core",
3
- "version": "0.16.0",
3
+ "version": "0.28.0",
4
4
  "description": "DaloyJS is a runtime-portable, contract-first TypeScript web framework with built-in OpenAPI (Hey API), typed client generation, large-scale maintainability, and security-first defaults. Hono-grade portability, Elysia-grade DX, FastAPI-grade docs, Fastify-grade ops — distributed via pnpm.",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -124,6 +124,30 @@
124
124
  "./hashing": {
125
125
  "types": "./dist/hashing.d.ts",
126
126
  "import": "./dist/hashing.js"
127
+ },
128
+ "./jwt": {
129
+ "types": "./dist/jwt.d.ts",
130
+ "import": "./dist/jwt.js"
131
+ },
132
+ "./jwk": {
133
+ "types": "./dist/jwk.d.ts",
134
+ "import": "./dist/jwk.js"
135
+ },
136
+ "./etag": {
137
+ "types": "./dist/etag.d.ts",
138
+ "import": "./dist/etag.js"
139
+ },
140
+ "./compression": {
141
+ "types": "./dist/compression.d.ts",
142
+ "import": "./dist/compression.js"
143
+ },
144
+ "./cookie": {
145
+ "types": "./dist/cookie.d.ts",
146
+ "import": "./dist/cookie.js"
147
+ },
148
+ "./time-claims": {
149
+ "types": "./dist/time-claims.d.ts",
150
+ "import": "./dist/time-claims.js"
127
151
  }
128
152
  },
129
153
  "devDependencies": {
@@ -146,13 +170,16 @@
146
170
  "example": "node --import tsx examples/basic.ts",
147
171
  "bench": "node --import tsx bench/router.bench.ts",
148
172
  "test": "node --import tsx --test tests/**/*.test.ts",
149
- "coverage": "node --import tsx --test --experimental-test-coverage --test-coverage-include='src/**' --test-coverage-lines=99.9 --test-coverage-functions=100 tests/**/*.test.ts",
150
- "coverage:branches": "tsc -p tsconfig.coverage.json && node --test --experimental-test-coverage --test-coverage-include='dist-coverage/src/**' --test-coverage-branches=93 dist-coverage/tests/**/*.test.js",
173
+ "coverage": "node --import tsx --test --experimental-test-coverage --test-coverage-include='src/**' --test-coverage-lines=90 --test-coverage-functions=90 tests/**/*.test.ts",
174
+ "coverage:branches": "tsc -p tsconfig.coverage.json && node --test --experimental-test-coverage --test-coverage-include='dist-coverage/src/**' --test-coverage-branches=90 dist-coverage/tests/**/*.test.js",
151
175
  "typecheck": "tsc --noEmit",
152
176
  "gen:openapi": "node --import tsx scripts/dump-openapi.ts",
153
177
  "gen:client": "openapi-ts",
154
178
  "gen": "pnpm gen:openapi && pnpm gen:client",
155
179
  "verify:lockfile": "node --import tsx scripts/verify-lockfile-sources.ts",
180
+ "verify:no-runtime-deps": "node --import tsx scripts/verify-no-runtime-deps.ts",
181
+ "verify:secret-comparisons": "node --import tsx scripts/verify-secret-comparisons.ts",
182
+ "verify:wave9-audits": "node --import tsx scripts/verify-wave9-audits.ts",
156
183
  "audit": "pnpm audit --prod"
157
184
  }
158
185
  }