@browserlessapi/inferlo 0.6.0 → 0.8.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 (140) hide show
  1. package/README.md +9 -5
  2. package/dist/ai/ai-sdk.d.ts +48 -0
  3. package/dist/ai/ai-sdk.js +235 -0
  4. package/dist/ai/ai-sdk.js.map +1 -0
  5. package/dist/ai/index.d.ts +37 -3
  6. package/dist/ai/index.js +96 -7
  7. package/dist/ai/index.js.map +1 -1
  8. package/dist/ai/public.d.ts +5 -1
  9. package/dist/ai/public.js +2 -0
  10. package/dist/ai/public.js.map +1 -1
  11. package/dist/ai/ui.d.ts +47 -0
  12. package/dist/ai/ui.js +33 -0
  13. package/dist/ai/ui.js.map +1 -0
  14. package/dist/app.d.ts +55 -4
  15. package/dist/app.js +439 -39
  16. package/dist/app.js.map +1 -1
  17. package/dist/astro.d.ts +60 -0
  18. package/dist/astro.js +68 -0
  19. package/dist/astro.js.map +1 -0
  20. package/dist/audit.d.ts +8 -1
  21. package/dist/audit.js +9 -2
  22. package/dist/audit.js.map +1 -1
  23. package/dist/auth.d.ts +1 -0
  24. package/dist/auth.js +1 -0
  25. package/dist/auth.js.map +1 -1
  26. package/dist/authjs.d.ts +70 -0
  27. package/dist/authjs.js +94 -0
  28. package/dist/authjs.js.map +1 -0
  29. package/dist/azure.d.ts +66 -0
  30. package/dist/azure.js +119 -0
  31. package/dist/azure.js.map +1 -0
  32. package/dist/better-auth.d.ts +89 -0
  33. package/dist/better-auth.js +75 -0
  34. package/dist/better-auth.js.map +1 -0
  35. package/dist/cache.d.ts +13 -9
  36. package/dist/cache.js +11 -9
  37. package/dist/cache.js.map +1 -1
  38. package/dist/cli/main.js +5 -5
  39. package/dist/cli/main.js.map +1 -1
  40. package/dist/client-ip.d.ts +41 -1
  41. package/dist/client-ip.js +85 -1
  42. package/dist/client-ip.js.map +1 -1
  43. package/dist/cross-site.d.ts +14 -0
  44. package/dist/cross-site.js +56 -0
  45. package/dist/cross-site.js.map +1 -0
  46. package/dist/db/memory.js +2 -1
  47. package/dist/db/memory.js.map +1 -1
  48. package/dist/db/postgres.js +23 -6
  49. package/dist/db/postgres.js.map +1 -1
  50. package/dist/db/table.d.ts +37 -5
  51. package/dist/db/table.js +96 -15
  52. package/dist/db/table.js.map +1 -1
  53. package/dist/db/types.d.ts +2 -0
  54. package/dist/describe.d.ts +23 -5
  55. package/dist/describe.js +20 -2
  56. package/dist/describe.js.map +1 -1
  57. package/dist/disk-storage.d.ts +6 -0
  58. package/dist/disk-storage.js +96 -0
  59. package/dist/disk-storage.js.map +1 -0
  60. package/dist/events.d.ts +134 -0
  61. package/dist/events.js +196 -0
  62. package/dist/events.js.map +1 -0
  63. package/dist/files.d.ts +23 -0
  64. package/dist/files.js +168 -0
  65. package/dist/files.js.map +1 -0
  66. package/dist/index.d.ts +26 -8
  67. package/dist/index.js +10 -2
  68. package/dist/index.js.map +1 -1
  69. package/dist/jobs.d.ts +56 -10
  70. package/dist/jobs.js +71 -13
  71. package/dist/jobs.js.map +1 -1
  72. package/dist/jwt.d.ts +83 -0
  73. package/dist/jwt.js +312 -0
  74. package/dist/jwt.js.map +1 -0
  75. package/dist/langchain.d.ts +58 -0
  76. package/dist/langchain.js +220 -0
  77. package/dist/langchain.js.map +1 -0
  78. package/dist/model.d.ts +23 -6
  79. package/dist/model.js +41 -7
  80. package/dist/model.js.map +1 -1
  81. package/dist/oidc.d.ts +70 -0
  82. package/dist/oidc.js +379 -0
  83. package/dist/oidc.js.map +1 -0
  84. package/dist/openapi.js +17 -2
  85. package/dist/openapi.js.map +1 -1
  86. package/dist/passport.d.ts +54 -0
  87. package/dist/passport.js +68 -0
  88. package/dist/passport.js.map +1 -0
  89. package/dist/postgres-js.d.ts +39 -0
  90. package/dist/postgres-js.js +71 -0
  91. package/dist/postgres-js.js.map +1 -0
  92. package/dist/rate-limit.d.ts +5 -3
  93. package/dist/rate-limit.js +3 -3
  94. package/dist/rate-limit.js.map +1 -1
  95. package/dist/redis-events.d.ts +27 -0
  96. package/dist/redis-events.js +163 -0
  97. package/dist/redis-events.js.map +1 -0
  98. package/dist/redis-jobs.d.ts +24 -0
  99. package/dist/redis-jobs.js +203 -0
  100. package/dist/redis-jobs.js.map +1 -0
  101. package/dist/redis-sockets.d.ts +24 -0
  102. package/dist/redis-sockets.js +75 -0
  103. package/dist/redis-sockets.js.map +1 -0
  104. package/dist/redis.d.ts +30 -0
  105. package/dist/redis.js +106 -0
  106. package/dist/redis.js.map +1 -0
  107. package/dist/response-body.d.ts +6 -0
  108. package/dist/response-body.js +7 -0
  109. package/dist/response-body.js.map +1 -0
  110. package/dist/route.d.ts +117 -3
  111. package/dist/route.js +27 -0
  112. package/dist/route.js.map +1 -1
  113. package/dist/schema.d.ts +23 -3
  114. package/dist/schema.js +70 -0
  115. package/dist/schema.js.map +1 -1
  116. package/dist/serve.d.ts +24 -1
  117. package/dist/serve.js +200 -8
  118. package/dist/serve.js.map +1 -1
  119. package/dist/service-client.d.ts +91 -0
  120. package/dist/service-client.js +177 -0
  121. package/dist/service-client.js.map +1 -0
  122. package/dist/sessions.d.ts +2 -0
  123. package/dist/sessions.js +36 -4
  124. package/dist/sessions.js.map +1 -1
  125. package/dist/sockets.d.ts +58 -0
  126. package/dist/sockets.js +111 -0
  127. package/dist/sockets.js.map +1 -0
  128. package/dist/storage.d.ts +47 -0
  129. package/dist/storage.js +123 -0
  130. package/dist/storage.js.map +1 -0
  131. package/dist/tracing.d.ts +7 -3
  132. package/dist/tracing.js +8 -2
  133. package/dist/tracing.js.map +1 -1
  134. package/dist/websocket.d.ts +81 -0
  135. package/dist/websocket.js +251 -0
  136. package/dist/websocket.js.map +1 -0
  137. package/llms.txt +2 -0
  138. package/package.json +77 -5
  139. package/templates/app/AGENTS.md +9 -5
  140. package/templates/app/test/notes.test.ts +2 -0
package/dist/route.d.ts CHANGED
@@ -9,15 +9,18 @@
9
9
  * Secure by default: routes require a signed-in user unless you set auth: "public".
10
10
  */
11
11
  import type { Deprecation } from "./deprecation.ts";
12
- import type { AI } from "./ai/index.ts";
12
+ import type { AI, StreamResult, Usage } from "./ai/index.ts";
13
13
  import type { Db } from "./db/table.ts";
14
+ import type { Events } from "./events.ts";
14
15
  import type { Jobs } from "./jobs.ts";
15
16
  import type { AnyModel } from "./model.ts";
16
17
  import type { Audit } from "./audit.ts";
17
18
  import type { Cache, RouteCache } from "./cache.ts";
19
+ import type { Storage } from "./storage.ts";
18
20
  import type { PermissionInput, Permissions } from "./permissions.ts";
19
21
  import type { RateLimit } from "./rate-limit.ts";
20
- import type { AnySchema, Infer, ObjectSchema } from "./schema.ts";
22
+ import type { Sockets } from "./sockets.ts";
23
+ import type { AnySchema, Infer, InferInput, ObjectSchema } from "./schema.ts";
21
24
  /**
22
25
  * Register your app's models and user type once, so every handler is fully typed:
23
26
  *
@@ -63,7 +66,7 @@ export interface RouteOptions<B extends AnySchema | undefined, Q extends ObjectS
63
66
  * resource, call access.authorize(name, { user, ticket }) in the handler instead. Typed from Register's permissions.
64
67
  */
65
68
  permission?: AppPermission;
66
- /** Request body schema (JSON or form). */
69
+ /** Request body schema: JSON, a URL-encoded form, or multipart/form-data when it has t.file() fields. */
67
70
  body?: B;
68
71
  /** Query string schema. Strings are converted to numbers and booleans automatically. */
69
72
  query?: Q;
@@ -112,8 +115,14 @@ export interface Context<Body, Query, Params, User> {
112
115
  ai: AI;
113
116
  /** Queue background jobs: await jobs.enqueue(sendEmail, { to }). */
114
117
  jobs: Jobs;
118
+ /** Publish events: await events.publish(orderPaid, { orderId }) queues the jobs subscribed with on(event, job). */
119
+ events: Events;
115
120
  /** The app cache: await cache.getOrSet(key, { ttlMs: 60_000, tags: ["tickets"] }, compute), cache.invalidate("tickets"). */
116
121
  cache: Cache;
122
+ /** Files (createApp({ storage })): await storage.put(`avatars/${user.id}.png`, body.avatar), storage.get(key), storage.delete(key). */
123
+ storage: Storage;
124
+ /** Send to WebSocket rooms: await sockets.broadcast(`project:${id}`, data), to the user's tenant's room with a tenant. */
125
+ sockets: Sockets;
117
126
  req: Request;
118
127
  url: URL;
119
128
  headers: Headers;
@@ -139,6 +148,15 @@ export interface Context<Body, Query, Params, User> {
139
148
  audit: Audit;
140
149
  }
141
150
  export type AnyContext = Context<any, any, any, any>;
151
+ /**
152
+ * What a caller sends to a route, before validation (defaults not yet applied): the body, query and path params.
153
+ * Type only ($input on the route returned by handle()), used by serviceClient for typed calls.
154
+ */
155
+ export interface RouteInput<Path extends string, B, Q, P> {
156
+ body: B extends AnySchema ? InferInput<B> : undefined;
157
+ query: Q extends AnySchema ? InferInput<Q> : Record<string, string | undefined>;
158
+ params: P extends AnySchema ? InferInput<P> : PathParams<Path>;
159
+ }
142
160
  export type Handler<C, R> = (ctx: C) => R | Promise<R>;
143
161
  export interface RouteDef {
144
162
  readonly kind: "inferlo.route";
@@ -150,6 +168,8 @@ export interface RouteDef {
150
168
  name?: string;
151
169
  /** API version ("v1") when the route comes from apiVersion("v1", routes). */
152
170
  readonly version?: string;
171
+ /** Set for WebSocket routes from route.ws(): the handler runs once per message instead of once per request. */
172
+ readonly websocket?: true;
153
173
  }
154
174
  export declare class RouteBuilder<Path extends string, B extends AnySchema | undefined, Q extends ObjectSchema<any> | undefined, P extends ObjectSchema<any> | undefined, A> {
155
175
  readonly method: Method;
@@ -159,6 +179,93 @@ export declare class RouteBuilder<Path extends string, B extends AnySchema | und
159
179
  /** The request handler. Return data (sent as JSON), a Response, or nothing (204). */
160
180
  handle<R>(handler: Handler<Context<B extends AnySchema ? Infer<B> : undefined, Q extends AnySchema ? Infer<Q> : Record<string, string | undefined>, P extends AnySchema ? Infer<P> : PathParams<Path>, UserFor<A>>, R>): RouteDef & {
161
181
  readonly $response: Awaited<R>;
182
+ readonly $input: RouteInput<Path, B, Q, P>;
183
+ };
184
+ }
185
+ export interface SocketRouteOptions<M extends AnySchema | undefined, Q extends ObjectSchema<any> | undefined, P extends ObjectSchema<any> | undefined> {
186
+ /** Who may connect. Default "user" (signed in), checked once when the socket opens. */
187
+ auth?: Auth;
188
+ /** A permission from createApp({ permissions }) the user must have to connect (checked with { user }). */
189
+ permission?: AppPermission;
190
+ /** Schema of each message (JSON text). A message that does not match gets an IL1001 error message back. */
191
+ message?: M;
192
+ /** Query string schema of the connection URL. */
193
+ query?: Q;
194
+ /** Path parameter schema. Without it, path params are strings. */
195
+ params?: P;
196
+ /**
197
+ * Limit connections and messages per user, tenant or IP: { max: 30, per: "minute", by: "user" }. Opening the
198
+ * socket and every message count. A refused connection answers 429; a message over the limit gets an IL2005 error message.
199
+ */
200
+ rateLimit?: RateLimit;
201
+ /** One line shown in describe. */
202
+ summary?: string;
203
+ description?: string;
204
+ tags?: string[];
205
+ }
206
+ /** The open connection, in a WebSocket handler. */
207
+ export interface Socket {
208
+ /** A random id for this connection. */
209
+ readonly id: string;
210
+ /** Send a message to this client, as JSON. Does nothing once the socket is closed. */
211
+ send(data: unknown): void;
212
+ /** Close the connection: code 1000 (normal) by default. */
213
+ close(code?: number, reason?: string): void;
214
+ /**
215
+ * Join a room, so sockets.broadcast(room, data) reaches this client. Rooms are per tenant: with a signed-in user
216
+ * who has a tenant, the room is that tenant's. A closed socket leaves every room.
217
+ */
218
+ join(room: string): void;
219
+ /** Leave a room joined with socket.join(room). */
220
+ leave(room: string): void;
221
+ /**
222
+ * Stream a model's answer to this client: await socket.stream(ai.stream({ model: "fast", prompt })) sends
223
+ * { type: "text", text } for each chunk as it arrives, then { type: "done", usage }, and resolves with the full
224
+ * text and usage. Streams from ctx.ai stop when the socket closes (ctx.signal).
225
+ */
226
+ stream(result: StreamResult): Promise<{
227
+ text: string;
228
+ usage: Usage;
229
+ }>;
230
+ }
231
+ export interface SocketContext<Message, Query, Params, User> {
232
+ /** This message, validated against the route's message schema. */
233
+ message: Message;
234
+ query: Query;
235
+ params: Params;
236
+ /** The user who opened the socket (null only on public routes with no session). */
237
+ user: User;
238
+ socket: Socket;
239
+ db: AppDb;
240
+ ai: AI;
241
+ jobs: Jobs;
242
+ events: Events;
243
+ cache: Cache;
244
+ /** Files (createApp({ storage })), the same as ctx.storage in routes. */
245
+ storage: Storage;
246
+ /** Send to WebSocket rooms, this client's included when it joined: await sockets.broadcast(room, data). */
247
+ sockets: Sockets;
248
+ /** Write an audit log entry with the user and this connection's request id. */
249
+ audit: Audit;
250
+ /** Aborted when the socket closes. ctx.ai calls use it automatically. */
251
+ signal: AbortSignal;
252
+ /** The id of the request that opened the socket, also in its log entries. */
253
+ requestId: string;
254
+ /** URL and headers of the request that opened the socket. */
255
+ url: URL;
256
+ headers: Headers;
257
+ }
258
+ export declare class SocketRouteBuilder<Path extends string, M extends AnySchema | undefined, Q extends ObjectSchema<any> | undefined, P extends ObjectSchema<any> | undefined, A> {
259
+ readonly path: Path;
260
+ readonly options: SocketRouteOptions<M, Q, P>;
261
+ constructor(path: Path, options: SocketRouteOptions<M, Q, P>);
262
+ /**
263
+ * The message handler, run for each message in the order they arrive. Return data to send it back as JSON, or
264
+ * nothing; call ctx.socket.send(data) to send more. A thrown error is sent back as an error message (the socket stays open).
265
+ */
266
+ handle<R>(handler: Handler<SocketContext<M extends AnySchema ? Infer<M> : unknown, Q extends AnySchema ? Infer<Q> : Record<string, string | undefined>, P extends AnySchema ? Infer<P> : PathParams<Path>, UserFor<A>>, R>): RouteDef & {
267
+ readonly $message: M extends AnySchema ? InferInput<M> : unknown;
268
+ readonly $reply: Awaited<R>;
162
269
  };
163
270
  }
164
271
  export declare const route: {
@@ -177,6 +284,13 @@ export declare const route: {
177
284
  delete: <const Path extends string, B extends AnySchema | undefined = undefined, Q extends ObjectSchema<any> | undefined = undefined, P extends ObjectSchema<any> | undefined = undefined, const A extends Auth = "user">(path: Path, options?: RouteOptions<B, Q, P> & {
178
285
  auth?: A;
179
286
  }) => RouteBuilder<Path, B, Q, P, A>;
287
+ /**
288
+ * A WebSocket route: route.ws("/chat", { message: t.object({ text: t.string() }) }).handle(({ message, user, socket }) => ...).
289
+ * Same auth, permissions and rate limits as HTTP routes; each JSON message is validated and handled in order.
290
+ */
291
+ ws: <const Path extends string, M extends AnySchema | undefined = undefined, Q extends ObjectSchema<any> | undefined = undefined, P extends ObjectSchema<any> | undefined = undefined, const A extends Auth = "user">(path: Path, options?: SocketRouteOptions<M, Q, P> & {
292
+ auth?: A;
293
+ }) => SocketRouteBuilder<Path, M, Q, P, A>;
180
294
  };
181
295
  export declare function isRoute(value: unknown): value is RouteDef;
182
296
  /** The routes in route sources: routes, arrays and modules (import * as tickets), named after their exports. */
package/dist/route.js CHANGED
@@ -15,12 +15,39 @@ export class RouteBuilder {
15
15
  function builder(method) {
16
16
  return (path, options = {}) => new RouteBuilder(method, path, options);
17
17
  }
18
+ export class SocketRouteBuilder {
19
+ path;
20
+ options;
21
+ constructor(path, options) {
22
+ this.path = path;
23
+ this.options = options;
24
+ }
25
+ /**
26
+ * The message handler, run for each message in the order they arrive. Return data to send it back as JSON, or
27
+ * nothing; call ctx.socket.send(data) to send more. A thrown error is sent back as an error message (the socket stays open).
28
+ */
29
+ handle(handler) {
30
+ return {
31
+ kind: "inferlo.route",
32
+ method: "GET",
33
+ path: this.path,
34
+ options: this.options,
35
+ handler: handler,
36
+ websocket: true,
37
+ };
38
+ }
39
+ }
18
40
  export const route = {
19
41
  get: builder("GET"),
20
42
  post: builder("POST"),
21
43
  put: builder("PUT"),
22
44
  patch: builder("PATCH"),
23
45
  delete: builder("DELETE"),
46
+ /**
47
+ * A WebSocket route: route.ws("/chat", { message: t.object({ text: t.string() }) }).handle(({ message, user, socket }) => ...).
48
+ * Same auth, permissions and rate limits as HTTP routes; each JSON message is validated and handled in order.
49
+ */
50
+ ws: (path, options = {}) => new SocketRouteBuilder(path, options),
24
51
  };
25
52
  export function isRoute(value) {
26
53
  return typeof value === "object" && value !== null && value.kind === "inferlo.route";
package/dist/route.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"AA8JA,MAAM,OAAO,YAAY;IACd,MAAM,CAAS;IACf,IAAI,CAAO;IACX,OAAO,CAAwB;IAExC,YAAY,MAAc,EAAE,IAAU,EAAE,OAA8B;QACpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,qFAAqF;IACrF,MAAM,CACJ,OAQC;QAED,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAuC,EAE5I,CAAC;IACJ,CAAC;CACF;AAED,SAAS,OAAO,CAAC,MAAc;IAC7B,OAAO,CAOL,IAAU,EACV,UAAgD,EAAE,EAClD,EAAE,CAAC,IAAI,YAAY,CAAmB,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC;CAC1B,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAAkB,CAAC,IAAI,KAAK,eAAe,CAAC;AACrG,CAAC;AAED,gHAAgH;AAChH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,MAAe,EAAE,IAAa,EAAE,EAAE;QAC/C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QACtE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,IAAI,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnJ,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
package/dist/schema.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  * type User = Infer<typeof User>
7
7
  */
8
8
  import { InferloError } from "./errors.ts";
9
- export type Kind = "string" | "text" | "email" | "url" | "uuid" | "ref" | "number" | "int" | "boolean" | "date" | "enum" | "literal" | "json" | "array" | "object" | "any";
9
+ export type Kind = "string" | "text" | "email" | "url" | "uuid" | "ref" | "number" | "int" | "boolean" | "date" | "enum" | "literal" | "json" | "array" | "object" | "file" | "any";
10
10
  export interface Def {
11
11
  kind: Kind;
12
12
  optional: boolean;
@@ -17,6 +17,8 @@ export interface Def {
17
17
  max?: number;
18
18
  pattern?: RegExp;
19
19
  values?: readonly (string | number | boolean)[];
20
+ /** t.file(): accepted media types ("image/png", "image/*"); empty means any type. */
21
+ fileTypes?: readonly string[];
20
22
  item?: AnySchema;
21
23
  shape?: Shape;
22
24
  unknownKeys?: "strict" | "strip";
@@ -26,8 +28,8 @@ export interface Def {
26
28
  example?: unknown;
27
29
  unique?: boolean;
28
30
  index?: boolean;
29
- /** Filled in by the framework (id, createdAt, updatedAt). Never accepted as input. */
30
- system?: "id" | "createdAt" | "updatedAt";
31
+ /** Filled in by the framework (id, createdAt, updatedAt, and tenantId on tenant-scoped models). Never accepted as input. */
32
+ system?: "id" | "createdAt" | "updatedAt" | "tenantId";
31
33
  }
32
34
  export interface Issue {
33
35
  path: (string | number)[];
@@ -159,6 +161,24 @@ export declare const t: {
159
161
  onDelete?: "restrict" | "cascade" | "set null";
160
162
  }) => RefSchema<Table, string, string>;
161
163
  any: () => Schema<unknown, unknown>;
164
+ /**
165
+ * An uploaded file in a multipart/form-data body: body: t.object({ avatar: t.file({ maxBytes: 2_000_000, types: ["image/png", "image/jpeg"] }) }).
166
+ * The handler gets a web File. maxBytes defaults to 10 MiB; types defaults to any type. Only in route bodies.
167
+ */
168
+ file: (options?: FileOptions) => Schema<File, File>;
162
169
  };
170
+ /** Options of t.file(). */
171
+ export interface FileOptions {
172
+ /** Largest accepted file in bytes. Default 10 MiB (10485760). */
173
+ maxBytes?: number;
174
+ /** Accepted media types, exact ("image/png") or by family ("image/*"). Default: any type. */
175
+ types?: readonly string[];
176
+ }
177
+ /** Default t.file() limit: 10 MiB. */
178
+ export declare const DEFAULT_FILE_MAX_BYTES: number;
179
+ /** Whether a media type ("image/png; x=1") is one of the accepted types (exact or "image/*"). */
180
+ export declare function fileTypeAccepted(type: string, accepted: readonly string[]): boolean;
181
+ /** Whether a schema has a t.file() anywhere in it. */
182
+ export declare function containsFile(schema: AnySchema): boolean;
163
183
  export declare function toJSONSchema(schema: AnySchema): JSONSchema;
164
184
  export {};
package/dist/schema.js CHANGED
@@ -179,7 +179,58 @@ export const t = {
179
179
  /** Id of a row in another model's table: t.ref("users"). */
180
180
  ref: (table, options = {}) => new RefSchema(base("ref", { refTable: table, onDelete: options.onDelete ?? "restrict" })),
181
181
  any: () => new Schema(base("any", { optional: true })),
182
+ /**
183
+ * An uploaded file in a multipart/form-data body: body: t.object({ avatar: t.file({ maxBytes: 2_000_000, types: ["image/png", "image/jpeg"] }) }).
184
+ * The handler gets a web File. maxBytes defaults to 10 MiB; types defaults to any type. Only in route bodies.
185
+ */
186
+ file: (options = {}) => new Schema(fileDef(options)),
182
187
  };
188
+ /** Default t.file() limit: 10 MiB. */
189
+ export const DEFAULT_FILE_MAX_BYTES = 10 * 1024 * 1024;
190
+ const MEDIA_TYPE = /^[a-z0-9][a-z0-9!#$&^_.+-]*\/([a-z0-9][a-z0-9!#$&^_.+-]*|\*)$/;
191
+ function fileDef(options) {
192
+ if (options === null || typeof options !== "object" || Array.isArray(options)) {
193
+ throw new InferloError("IL1004", "t.file() takes an options object.", { fix: 't.file({ maxBytes: 2_000_000, types: ["image/png", "image/jpeg"] }), or t.file() for any file up to 10 MiB.' });
194
+ }
195
+ for (const key of Object.keys(options)) {
196
+ if (key !== "maxBytes" && key !== "types") {
197
+ throw new InferloError("IL1004", `Unknown t.file() option "${key}".${didYouMean(key, ["maxBytes", "types"])}`, { fix: "t.file() takes maxBytes and types." });
198
+ }
199
+ }
200
+ const maxBytes = options.maxBytes ?? DEFAULT_FILE_MAX_BYTES;
201
+ if (!Number.isSafeInteger(maxBytes) || maxBytes < 1) {
202
+ throw new InferloError("IL1004", `t.file({ maxBytes }) must be a whole number of bytes above 0, got ${String(options.maxBytes)}.`, { fix: "Use t.file({ maxBytes: 5 * 1024 * 1024 }) for 5 MiB." });
203
+ }
204
+ const types = options.types ?? [];
205
+ if (!Array.isArray(types) || types.some((type) => typeof type !== "string" || !MEDIA_TYPE.test(type.toLowerCase()))) {
206
+ throw new InferloError("IL1004", `t.file({ types }) must be a list of media types such as "image/png" or "image/*", got ${JSON.stringify(options.types)}.`, { fix: 'Use t.file({ types: ["image/png", "image/jpeg"] }), or leave types out to accept any type.' });
207
+ }
208
+ return base("file", { max: maxBytes, fileTypes: types.map((type) => type.toLowerCase()) });
209
+ }
210
+ /** Whether a media type ("image/png; x=1") is one of the accepted types (exact or "image/*"). */
211
+ export function fileTypeAccepted(type, accepted) {
212
+ if (!accepted.length)
213
+ return true;
214
+ const actual = type.split(";")[0].trim().toLowerCase();
215
+ return accepted.some((a) => (a.endsWith("/*") ? actual.startsWith(a.slice(0, -1)) : actual === a));
216
+ }
217
+ /** Whether a schema has a t.file() anywhere in it. */
218
+ export function containsFile(schema) {
219
+ // Not a schema at all (a mistake reported by the caller's own checks): no files.
220
+ const def = schema?.def;
221
+ if (!def || typeof def !== "object")
222
+ return false;
223
+ if (def.kind === "file")
224
+ return true;
225
+ if (def.kind === "array")
226
+ return def.item !== undefined && containsFile(def.item);
227
+ if (def.kind === "object")
228
+ return Object.values(def.shape ?? {}).some(containsFile);
229
+ return false;
230
+ }
231
+ function isFile(value) {
232
+ return typeof Blob !== "undefined" && value instanceof Blob;
233
+ }
183
234
  // ---------------------------------------------------------------------------------------------
184
235
  // Validation
185
236
  // ---------------------------------------------------------------------------------------------
@@ -236,6 +287,18 @@ function check(schema, raw, path, issues, options) {
236
287
  case "any":
237
288
  case "json":
238
289
  return value;
290
+ case "file": {
291
+ if (!isFile(value))
292
+ return fail("invalid_type", `Expected a file, got ${describeType(value)}. Send the body as multipart/form-data.`);
293
+ if (def.max !== undefined && value.size > def.max)
294
+ return fail("file_too_large", `File is ${value.size} bytes, at most ${def.max} bytes are accepted.`);
295
+ if (def.min !== undefined && value.size < def.min)
296
+ return fail("file_too_small", `File must be at least ${def.min} bytes.`);
297
+ const types = def.fileTypes ?? [];
298
+ if (!fileTypeAccepted(value.type, types))
299
+ return fail("file_type", `File type ${JSON.stringify(value.type || "unknown")} is not accepted. Expected ${types.join(", ")}.`);
300
+ return value;
301
+ }
239
302
  case "string":
240
303
  case "text":
241
304
  case "email":
@@ -418,6 +481,13 @@ export function toJSONSchema(schema) {
418
481
  out.required = required;
419
482
  break;
420
483
  }
484
+ case "file":
485
+ // OpenAPI 3.1 file in a multipart body; the accepted types go in the request body's encoding.
486
+ out = { type: "string", format: "binary" };
487
+ if (def.fileTypes?.length === 1)
488
+ out.contentMediaType = def.fileTypes[0];
489
+ out["x-inferlo-max-bytes"] = def.max;
490
+ break;
421
491
  case "json":
422
492
  case "any":
423
493
  out = {};
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2DvD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACtC,MAAM,CAAU;IACzB,YAAY,MAAe,EAAE,KAAK,GAAG,OAAO;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9G,KAAK,CAAC,QAAQ,EAAE,WAAW,KAAK,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5G,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,4FAA4F;SAClG,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAwBD,MAAM,QAAQ,GAAG,iFAAiF,CAAC;AACnG,MAAM,IAAI,GAAG,iEAAiE,CAAC;AAC/E,MAAM,KAAK,GAAG,4BAA4B,CAAC;AAE3C,gGAAgG;AAChG,SAAS;AACT,gGAAgG;AAEhG,MAAM,OAAO,MAAM;IACR,GAAG,CAAM;IAKlB,YAAY,GAAQ;QAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAES,IAAI,CAAC,OAAqB;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAqC,CAAC;QACxD,OAAO,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,6BAA6B;IAC7B,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAU,CAAC;IAChD,CAAC;IAED,yBAAyB;IACzB,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAU,CAAC;IAChD,CAAC;IAED,oFAAoF;IACpF,OAAO,CAAC,KAAgE;QACtE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAU,CAAC;IACxF,CAAC;IAED,mEAAmE;IACnE,GAAG,CAAC,CAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,mEAAmE;IACnE,GAAG,CAAC,CAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,6DAA6D;IAC7D,QAAQ,CAAC,WAAmB;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,KAAU;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,+BAA+B;IAC/B,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,6CAA6C;IAC7C,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,KAAc,EAAE,OAAsB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,iCAAiC;IACjC,SAAS,CAAC,KAAc,EAAE,UAAwB,EAAE;QAClD,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAY,EAAE,CAAC;IACnF,CAAC;IAED,wFAAwF;IACxF,YAAY;QACV,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,YAA8B,SAAQ,MAAqC;IACtF,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,KAAU,CAAC;IAC7B,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAA6B,GAAG,IAAS;QAC3C,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE;oBACpH,GAAG,EAAE,eAAe,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBACzD,CAAC,CAAC;YACL,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,YAAY,CAAa,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,wBAAwB;IACxB,IAAI,CAA6B,GAAG,IAAS;QAC3C,MAAM,KAAK,GAAU,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,IAAI,YAAY,CAAa,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,yEAAyE;IACzE,OAAO;QACL,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,GAAG,CAAC,GAAG,IAAK,KAAK,CAAC,WAA2C,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3H,CAAC;QACD,OAAO,IAAI,YAAY,CAAkB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB;IAClB,MAAM,CAAkB,KAAQ;QAC9B,OAAO,IAAI,YAAY,CAAuB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,uFAAuF;IACvF,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,OAAO,WAAiC,SAAQ,MAAmC;IACvF,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAS,CAAC;IAC5B,CAAC;CACF;AAED,wGAAwG;AACxG,MAAM,OAAO,SAAwD,SAAQ,MAAe;IAIjF,QAAQ;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAU,CAAC;IAChD,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAU,CAAC;IAChD,CAAC;IAEQ,OAAO,CAAC,KAAgE;QAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAU,CAAC;IACxF,CAAC;CACF;AAED,gGAAgG;AAChG,WAAW;AACX,gGAAgG;AAEhG,SAAS,IAAI,CAAC,IAAU,EAAE,QAAsB,EAAE;IAChD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,uEAAuE;IACvE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAS,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,qCAAqC;IACrC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAS,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAS,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAS,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAS,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAS,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,oBAAoB;IACpB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAS,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAU,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,mEAAmE;IACnE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAsB,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,2EAA2E;IAC3E,IAAI,EAAE,CAAiD,MAAS,EAAE,EAAE,CAAC,IAAI,MAAM,CAAY,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACpH,OAAO,EAAE,CAA4C,KAAQ,EAAE,EAAE,CAAC,IAAI,MAAM,CAAI,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrH,uCAAuC;IACvC,IAAI,EAAE,GAAgB,EAAE,CAAC,IAAI,MAAM,CAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,KAAK,EAAE,CAAsB,IAAO,EAAE,EAAE,CAAC,IAAI,WAAW,CAAI,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,MAAM,EAAE,CAAkB,KAAQ,EAAE,EAAE,CAAC,IAAI,YAAY,CAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5G,4DAA4D;IAC5D,GAAG,EAAE,CAA6B,KAAY,EAAE,UAA8D,EAAE,EAAE,EAAE,CAClH,IAAI,SAAS,CAAQ,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC;IAClG,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAU,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D;;;OAGG;IACH,IAAI,EAAE,CAAC,UAAuB,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAO,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE,CAAC;AAUF,sCAAsC;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACvD,MAAM,UAAU,GAAG,+DAA+D,CAAC;AAEnF,SAAS,OAAO,CAAC,OAAoB;IACnC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,mCAAmC,EAAE,EAAE,GAAG,EAAE,6GAA6G,EAAE,CAAC,CAAC;IAChM,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1C,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,4BAA4B,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,oCAAoC,EAAE,CAAC,CAAC;QAChK,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,sBAAsB,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,qEAAqE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,sDAAsD,EAAE,CAAC,CAAC;IACtM,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;QACpH,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,yFAAyF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,4FAA4F,EAAE,CAAC,CAAC;IACrQ,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAA2B;IACxE,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,iFAAiF;IACjF,MAAM,GAAG,GAAI,MAAgC,EAAE,GAAsB,CAAC;IACtE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClF,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,KAAK,YAAY,IAAI,CAAC;AAC9D,CAAC;AAED,gGAAgG;AAChG,aAAa;AACb,gGAAgG;AAEhG,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,MAAM,CAAC;IACzC,OAAO,OAAO,KAAK,CAAC;AACtB,CAAC;AAED,SAAS,WAAW,CAAC,IAAU,EAAE,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvH,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACnD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,MAAiB,EAAE,GAAY,EAAE,IAAyB,EAAE,MAAe,EAAE,OAAqB;IAC/G,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;YAC3B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAE,CAAmB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;QACpF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE;QAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,OAAO,KAAK,CAAC;QAEf,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,cAAc,EAAE,wBAAwB,YAAY,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACtI,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK,CAAC,IAAI,mBAAmB,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC;YACxJ,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;YAC5H,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,WAAW,EAAE,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,8BAA8B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1K,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,cAAc,EAAE,0BAA0B,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7G,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,eAAe,EAAE,4BAA4B,CAAC,CAAC;YAC3G,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YACtH,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ;wBAAE,OAAO,IAAI,CAAC,aAAa,EAAE,gCAAgC,CAAC,CAAC;gBACtH,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,WAAW,EAAE,oBAAoB,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;YACzH,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,UAAU,EAAE,mBAAmB,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;YACvH,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,cAAc,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;YACzG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,cAAc,EAAE,0BAA0B,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxI,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;YAC5G,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,WAAW,EAAE,oBAAoB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACvG,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,SAAS,EAAE,mBAAmB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACpG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,SAAS;YACZ,IAAI,OAAO,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,cAAc,EAAE,+BAA+B,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnH,OAAO,KAAK,CAAC;QAEf,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,IAAsB,CAAC;YAC3B,IAAI,KAAK,YAAY,IAAI;gBAAE,IAAI,GAAG,KAAK,CAAC;iBACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YACnF,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC,cAAc,EAAE,mCAAmC,CAAC,CAAC;YAC5G,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAe,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpF,OAAO,IAAI,CAAC,cAAc,EAAE,mBAAmB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC5G,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;oBACzF,OAAO,IAAI,CAAC,cAAc,EAAE,0BAA0B,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,IAAI,GAAG,KAAkB,CAAC;YAChC,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,WAAW,EAAE,sBAAsB,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;YACrH,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,UAAU,EAAE,qBAAqB,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;YACnH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAK,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBAC/E,OAAO,IAAI,CAAC,cAAc,EAAE,2BAA2B,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,KAAgC,CAAC;YAC/C,MAAM,GAAG,GAA4B,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;oBACjD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,GAAG,+CAA+C,EAAE,CAAC,CAAC;oBAC1H,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACzE,IAAI,MAAM,KAAK,SAAS;oBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAC9C,CAAC;YACD,IAAI,GAAG,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;gBAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;wBAChD,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC;4BACpB,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,kBAAkB,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;yBACzE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAI,KAAQ;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,gGAAgG;AAChG,cAAc;AACd,gGAAgG;AAEhG,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,GAAe,CAAC;IACpB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;gBAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;YACnD,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;gBAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;YACnD,IAAI,GAAG,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAClD,MAAM;QACR,KAAK,OAAO;YACV,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC9D,MAAM;QACR,KAAK,KAAK;YACR,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5D,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACzC,MAAM;QACR,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK;YACR,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1D,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;gBAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC;YACjD,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;gBAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC;YACjD,MAAM;QACR,KAAK,SAAS;YACZ,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC1B,MAAM;QACR,KAAK,MAAM;YACT,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAC9C,MAAM;QACR,KAAK,MAAM;YACT,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM;QACR,KAAK,SAAS;YACZ,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM;QACR,KAAK,OAAO;YACV,GAAG,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC;YACxD,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;gBAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;YAClD,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;gBAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;YAClD,MAAM;QACR,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,UAAU,GAA+B,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC3D,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU;oBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvE,CAAC;YACD,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YACxF,IAAI,QAAQ,CAAC,MAAM;gBAAE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7C,MAAM;QACR,CAAC;QACD,KAAK,MAAM;YACT,8FAA8F;YAC9F,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC;gBAAE,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACzE,GAAG,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YACrC,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,GAAG,GAAG,EAAE,CAAC;YACT,MAAM;IACV,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7F,CAAC;IACD,IAAI,GAAG,CAAC,WAAW;QAAE,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACvD,IAAI,GAAG,CAAC,UAAU,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,UAAU;QAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC;IAC7F,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,GAAG,CAAC,MAAM;QAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO,GAAG,CAAC;AACb,CAAC"}
package/dist/serve.d.ts CHANGED
@@ -24,6 +24,11 @@ export interface NodeRequest {
24
24
  * array. Used instead of the stream. Instances of other classes are ignored and the stream is read.
25
25
  */
26
26
  body?: unknown;
27
+ /**
28
+ * The exact bytes of a body the host already read, as Google Cloud Run functions (the Functions Framework)
29
+ * and Firebase set them. Preferred over body when present, so forms and JSON reach the app unchanged.
30
+ */
31
+ rawBody?: unknown;
27
32
  [Symbol.asyncIterator](): AsyncIterator<unknown>;
28
33
  }
29
34
  /** The parts of a Node.js http.ServerResponse that Inferlo writes to. */
@@ -78,5 +83,23 @@ export declare function writeResponse(res: NodeResponse, response: Response, met
78
83
  */
79
84
  export declare function toNodeHandler(app: Pick<App<any>, "fetch">, options?: NodeHandlerOptions): NodeHandler;
80
85
  export declare function serve(app: Pick<App<any>, "fetch">, options?: ServeOptions): Promise<Server>;
81
- /** Closes every open connection of a Node server from serve(), for app.close() after its timeout. */
86
+ /** The parts of a Node.js net.Socket (the socket of an "upgrade" event) an upgraded connection uses. */
87
+ export interface NodeSocket {
88
+ write(data: Uint8Array | string): boolean;
89
+ end(data?: Uint8Array | string): void;
90
+ destroy(): void;
91
+ setNoDelay?(noDelay: boolean): void;
92
+ on(event: "data", listener: (chunk: Uint8Array) => void): unknown;
93
+ on(event: "close" | "end", listener: () => void): unknown;
94
+ on(event: "error", listener: (error: unknown) => void): unknown;
95
+ }
96
+ export type NodeUpgradeHandler = (req: NodeRequest, socket: NodeSocket, head: Uint8Array) => void;
97
+ /**
98
+ * A listener for a Node.js server's "upgrade" event that serves the app's WebSocket routes (route.ws), for servers
99
+ * that another framework created: server.on("upgrade", toNodeUpgradeHandler(app, { prefix: "/api" })). Upgrade
100
+ * requests outside the prefix are left to the server's other "upgrade" listeners, and so are paths the app has no
101
+ * route for when fallthrough is true; otherwise the app answers them (404).
102
+ */
103
+ export declare function toNodeUpgradeHandler(app: Pick<App<any>, "fetch">, options?: NodeHandlerOptions): NodeUpgradeHandler;
104
+ /** Closes every open connection of a server from serve() (Node.js, Bun and Deno), for app.close() after its timeout. */
82
105
  export declare const forceClosers: WeakMap<Server, () => void>;