@alxia/core 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -3
- package/dist/app/alxia.d.ts +53 -5
- package/dist/app/alxia.d.ts.map +1 -1
- package/dist/app/chain.d.ts +5 -8
- package/dist/app/chain.d.ts.map +1 -1
- package/dist/app/context.d.ts +12 -0
- package/dist/app/context.d.ts.map +1 -0
- package/dist/app/definition.d.ts +22 -1
- package/dist/app/definition.d.ts.map +1 -1
- package/dist/app/pipeline.d.ts.map +1 -1
- package/dist/app/refusal.d.ts +15 -0
- package/dist/app/refusal.d.ts.map +1 -0
- package/dist/app/send.d.ts +24 -1
- package/dist/app/send.d.ts.map +1 -1
- package/dist/app/socket.d.ts +1 -1
- package/dist/app/socket.d.ts.map +1 -1
- package/dist/app/types/index.d.ts +1 -0
- package/dist/app/types/index.d.ts.map +1 -1
- package/dist/app/types/refusal.d.ts +94 -0
- package/dist/app/types/refusal.d.ts.map +1 -0
- package/dist/app/types/route-table.d.ts +3 -2
- package/dist/app/types/route-table.d.ts.map +1 -1
- package/dist/app/types/schema.d.ts +7 -0
- package/dist/app/types/schema.d.ts.map +1 -1
- package/dist/app/types/valid-schema.d.ts +1 -1
- package/dist/app/types/valid-schema.d.ts.map +1 -1
- package/dist/errors/errors.d.ts +47 -1
- package/dist/errors/errors.d.ts.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +413 -103
- package/dist/index.js.map +20 -13
- package/dist/reply/problem.d.ts +33 -0
- package/dist/reply/problem.d.ts.map +1 -0
- package/dist/reply/reply.d.ts.map +1 -1
- package/dist/request/limit.d.ts +13 -0
- package/dist/request/limit.d.ts.map +1 -0
- package/dist/request/read.d.ts +3 -2
- package/dist/request/read.d.ts.map +1 -1
- package/dist/sse/async-iterable.d.ts +6 -0
- package/dist/sse/async-iterable.d.ts.map +1 -0
- package/dist/sse/event-stream.d.ts +29 -6
- package/dist/sse/event-stream.d.ts.map +1 -1
- package/dist/sse/frame.d.ts +35 -0
- package/dist/sse/frame.d.ts.map +1 -0
- package/dist/sse/named-events.d.ts +70 -0
- package/dist/sse/named-events.d.ts.map +1 -0
- package/docs/README.md +3 -3
- package/docs/guide/groups-and-plugins.md +8 -1
- package/docs/guide/hooks.md +131 -4
- package/docs/guide/replies.md +47 -0
- package/docs/guide/routes.md +115 -1
- package/docs/guide/server-sent-events.md +177 -5
- package/docs/guide/serving.md +1 -1
- package/docs/guide/types.md +3 -1
- package/docs/guide/websockets.md +1 -1
- package/docs/guide/writing-a-plugin.md +1 -1
- package/docs/roadmap.md +35 -2
- package/docs/troubleshooting.md +331 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -88,6 +88,40 @@ whatever part it is in:
|
|
|
88
88
|
{ "error": "validation", "issues": [{ "target": "params", "path": ["id"], "code": "invalid_type", "message": "…" }] }
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
+
`onRefusal(hook)` answers it in your format instead, for the routes declared
|
|
92
|
+
after it: the hook reads the refusal's `kind` — for a `validation`, the
|
|
93
|
+
`part` that failed and the `issues` — and returns a reply with a 4xx
|
|
94
|
+
status, or nothing, for the default.
|
|
95
|
+
`problem(details)` builds an RFC 9457 problem, sent as
|
|
96
|
+
`application/problem+json`, its extension members typed:
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
import { alxia, problem } from '@alxia/core';
|
|
100
|
+
import { z } from 'zod';
|
|
101
|
+
|
|
102
|
+
const JmapRequest = z.object({ using: z.array(z.string()), methodCalls: z.array(z.unknown()) });
|
|
103
|
+
|
|
104
|
+
const app = alxia()
|
|
105
|
+
.onRefusal((refusal) =>
|
|
106
|
+
refusal.kind === 'body_limit'
|
|
107
|
+
? problem({ type: 'urn:ietf:params:jmap:error:limit', status: 413, limit: 'maxSizeRequest' })
|
|
108
|
+
: problem({
|
|
109
|
+
type: refusal.issues.some((issue) => issue.code === 'invalid_json')
|
|
110
|
+
? 'urn:ietf:params:jmap:error:notJSON'
|
|
111
|
+
: 'urn:ietf:params:jmap:error:notRequest',
|
|
112
|
+
status: 400,
|
|
113
|
+
detail: `the ${refusal.part} is invalid`,
|
|
114
|
+
}),
|
|
115
|
+
)
|
|
116
|
+
.post('/jmap', { body: JmapRequest }, ({ reply }) => reply(200, { methodResponses: [] }));
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Its reply replaces the 400 in the type of every route after it that
|
|
120
|
+
validates, so the client reads the problem. Given schemas first —
|
|
121
|
+
`onRefusal({ response: { 400: Problem }, contentType: 'application/problem+json' }, hook)`
|
|
122
|
+
— its `reply` is typed by them, its body checked and sent as their output,
|
|
123
|
+
and `@alxia/openapi` documents it.
|
|
124
|
+
|
|
91
125
|
`ip` is the client's address — the `ip` option reads it behind a proxy —
|
|
92
126
|
and `server` the Bun server, when there is one. `HEAD` runs the `GET` route.
|
|
93
127
|
|
|
@@ -119,6 +153,39 @@ const getUser = {
|
|
|
119
153
|
app.route(getUser, async ({ params, reply }) => reply.ok(await findUser(params.id)));
|
|
120
154
|
```
|
|
121
155
|
|
|
156
|
+
### Body size
|
|
157
|
+
|
|
158
|
+
`bodyLimit`, in bytes, caps a route's request body below the server's
|
|
159
|
+
`maxRequestBodySize`. Set it on a route, or call `bodyLimit(bytes)` for
|
|
160
|
+
every route declared after the call: on the app, for every later route; in a
|
|
161
|
+
group, for the group's routes alone. A route's own limit wins.
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
const app = alxia()
|
|
165
|
+
.bodyLimit(64 * 1024)
|
|
166
|
+
.post('/notes', { body: z.object({ text: z.string() }) }, ({ body, reply }) => reply.created(body))
|
|
167
|
+
.post('/upload', { bodyLimit: 25 * 1024 * 1024 }, async ({ request, reply }) => {
|
|
168
|
+
await Bun.write('upload.bin', new Response(request.body));
|
|
169
|
+
return reply.noContent();
|
|
170
|
+
});
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
A `Content-Length` over the limit is refused without reading the body.
|
|
174
|
+
Without one, the bytes are counted as they arrive, and reading stops once
|
|
175
|
+
they pass the limit, so a chunked upload is never buffered whole. The
|
|
176
|
+
limit applies to JSON, forms, text, an app's own parsers, and a handler
|
|
177
|
+
reading `request.body` as a stream. Either way the answer is a 413, which
|
|
178
|
+
the route's type and its OpenAPI document include:
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
{ "error": "content_too_large", "limit": 65536 }
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
It is a refusal, as a 400 is: the `onRefusal` hook above reads it as `{ kind: 'body_limit', limit }` and may answer it in its
|
|
185
|
+
own format, JMAP's `limit` problem there, sent with 413 by that app's
|
|
186
|
+
choice. A route with no limit reads its
|
|
187
|
+
body as before.
|
|
188
|
+
|
|
122
189
|
## Replies
|
|
123
190
|
|
|
124
191
|
A handler returns `reply(status, body, init?)`. With `response` schemas,
|
|
@@ -219,6 +286,27 @@ Each value is checked by the event's schema and sent as one `data:` line of
|
|
|
219
286
|
JSON; a comment keeps an idle stream open, and the generator is closed when
|
|
220
287
|
the client leaves. The client reads `data` as an `AsyncIterable` of events.
|
|
221
288
|
|
|
289
|
+
Name the events, each with its schema, and each is sent with its `event:`
|
|
290
|
+
line, plus `id:` and `retry:` when given:
|
|
291
|
+
|
|
292
|
+
```ts
|
|
293
|
+
const Push = eventStream({ state: StateChange, ping: Ping });
|
|
294
|
+
|
|
295
|
+
app.get('/push', { response: { 200: Push } }, ({ reply }) =>
|
|
296
|
+
reply(200, (async function* () {
|
|
297
|
+
yield Push.event('ping', { interval: 30 });
|
|
298
|
+
yield Push.event('state', change, { id: 's42' });
|
|
299
|
+
})()),
|
|
300
|
+
);
|
|
301
|
+
// event: ping
|
|
302
|
+
// data: {"interval":30}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
`Push.event(name, data, fields?)` types each by its name's schema. The
|
|
306
|
+
client reads `{ event, data, id? }`, a union discriminated by `event`. A
|
|
307
|
+
line break in an `id`, or a `retry` that is not a whole number, ends the
|
|
308
|
+
stream before it is written.
|
|
309
|
+
|
|
222
310
|
## WebSockets
|
|
223
311
|
|
|
224
312
|
```ts
|
|
@@ -267,7 +355,11 @@ response, which the hook returns — or a reply of its own, typed like a
|
|
|
267
355
|
Hooks run before validation: `pathParams` holds the path's parameters as
|
|
268
356
|
they arrived. `onError` turns a thrown
|
|
269
357
|
error into a reply the same way; an `HttpError` is answered as it says, and
|
|
270
|
-
anything else is a 500 that leaks nothing
|
|
358
|
+
anything else is a 500 that leaks nothing, but for a client that hung up
|
|
359
|
+
mid-request, a 499 nobody reads. `onRefusal` answers a request
|
|
360
|
+
the route's schemas refuse, or whose body passes its `bodyLimit`
|
|
361
|
+
([Requests](#requests)); the last one declared
|
|
362
|
+
before a route is the one it uses.
|
|
271
363
|
|
|
272
364
|
Global hooks apply to the whole app, wherever they are declared:
|
|
273
365
|
|
|
@@ -350,12 +442,16 @@ covers all three kinds.
|
|
|
350
442
|
| export | |
|
|
351
443
|
| --- | --- |
|
|
352
444
|
| `alxia(options?)`, `AlxiaOptions` | a new app: `prefix`, `validateResponses`, `ip` |
|
|
353
|
-
| `Alxia` | `get` `post` `put` `patch` `delete` `options` `head` `query` `route` `ws`, `static` `file` `page`, `decorate` `derive` `wrap` `onError`, `around` `onRequest` `onResponse` `onStart` `onStop` `parser`, `group` `use`, `fetch` `websocket` `request` `listen` `stop`, `routes` `sockets` `server` |
|
|
445
|
+
| `Alxia` | `get` `post` `put` `patch` `delete` `options` `head` `query` `route` `ws`, `static` `file` `page`, `decorate` `derive` `wrap` `onError` `onRefusal` `bodyLimit`, `around` `onRequest` `onResponse` `onStart` `onStop` `parser`, `group` `use`, `fetch` `websocket` `request` `listen` `stop`, `routes` `sockets` `server` |
|
|
354
446
|
| `eventStream(schema)`, `EventStreamSchema` | the response schema of a stream of events |
|
|
355
|
-
| `isEventStreamSchema(schema)` | whether a schema is one `eventStream` made |
|
|
447
|
+
| `isEventStreamSchema(schema)` | whether a schema is one `eventStream(schema)` made |
|
|
448
|
+
| `eventStream({ name: schema })`, `NamedEventStreamSchema`, `EventSchemas` | the response schema of a stream of named events, its `event(name, data, fields?)` builder, its schemas by name under `~events` |
|
|
449
|
+
| `EventInput<Of>`, `EventOutput<Of>`, `EventFields` | what a handler yields on a named stream, what the client reads of it, and an event's `id` and `retry` |
|
|
450
|
+
| `isNamedEventStreamSchema(schema)` | whether a schema is one `eventStream({ … })` made |
|
|
356
451
|
| `FileSource`, `StaticOptions`, `FileOptions`, `StaticReply`, `parseRange` | static files |
|
|
357
452
|
| `Precompressed`, `FileNotFoundBody`, `RangeNotSatisfiableBody` | a coding stored beside a file, the bodies of the 404 and 416 |
|
|
358
453
|
| `Reply`, `HttpError`, `ResponseValidationError` | what a handler returns or throws |
|
|
454
|
+
| `ContentTooLargeError`, `ContentTooLargeBody` | what reading a body past its route's `bodyLimit` throws — answered as a `body_limit` refusal — and the body of its default 413: `{ error: 'content_too_large', limit }` |
|
|
359
455
|
| `ReplyInit` | a reply's options: `headers` |
|
|
360
456
|
| `AnyReply`, `FreeReplyFunction`, `TypedReplyFunction`, `DeclaredReply`, `RedirectFunction` | any reply, `reply` without and with schemas, every reply a route with schemas may return, `redirect` |
|
|
361
457
|
| `FreeShortcuts`, `TypedShortcuts`, `SHORTCUTS`, `Shortcuts` | `reply`'s shortcuts without and with schemas, and the status of each |
|
|
@@ -379,6 +475,11 @@ covers all three kinds.
|
|
|
379
475
|
| `StandardSchemaV1`, `StandardResult`, `StandardIssue`, `InferInput`, `InferOutput` | the Standard Schema types |
|
|
380
476
|
| `ValidationErrorBody`, `InternalErrorBody`, `RoutingErrorBody` | the bodies of the 400, 500, 404, 405 and 426 |
|
|
381
477
|
| `ValidationIssue`, `ValidationTarget` | one issue of a 400, and where the refused value was read from |
|
|
478
|
+
| `Refusal`, `ValidationRefusal`, `BodyLimitRefusal`, `RequestPart` | what an `onRefusal` hook reads: the refusal by `kind` — `validation`, with the `part` that failed first and its `issues`, or `body_limit`, with the route's `limit` |
|
|
479
|
+
| `RefusalSchema`, `RefusalResponses` | what an `onRefusal` hook may declare: the schema of each 4xx it answers, and its `contentType` |
|
|
480
|
+
| `RefusalHook`, `RefusalHandler` | an `onRefusal` hook, and the one in force for a route: `RouteDefinition['refusal']`, what `@alxia/openapi` documents |
|
|
481
|
+
| `Refusing`, `FallsBack`, `DefaultRefusalOutcome`, `DefaultLimitOutcome`, `RefusalOutcome`, `RefusalsOf`, `DeclaredRefusal`, `ThenShortcuts`, `BehindShortcuts`, `BodyLimited`, `BodyLimitShortcut`, `IsLimited` | how an app's type carries its `onRefusal` hook and its `bodyLimit()`: the mark of the hook's replies, of the default it falls back to, the default 400 and 413 a plugin's route keeps, how a later scope's and a using app's hooks replace them, the mark of a `bodyLimit()` in force and the shortcut it adds, whether a route is under a limit, the outcomes a refused request may get (`RefusalOutcome`), the replies a hook may answer (`RefusalsOf`) and, for a hook declaring schemas, those replies as its schemas give them back (`DeclaredRefusal`). Exported so an app's type can be named in a declaration file |
|
|
482
|
+
| `problem(details, init?)`, `ProblemDetails` | a reply whose body is an RFC 9457 problem — `type`, `title`, `status`, `detail`, `instance` and typed extension members — sent with its `status` as `application/problem+json` |
|
|
382
483
|
| `RoutePath`, `JoinPath`, `PathParams`, `PathParamName` | paths: an absolute path, a prefix joined to a path, the parameters a path declares |
|
|
383
484
|
| `StatusCode`, `InformationalStatus`, `SuccessStatus`, `RedirectStatus`, `ClientErrorStatus`, `ServerErrorStatus` | every status a route may declare, and each class of them |
|
|
384
485
|
| `Method`, `Empty`, `MaybePromise`, `Simplify` | an HTTP method, no properties, a value or its promise, an object type with its intersections flattened |
|
package/dist/app/alxia.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Refusal } from '../errors/errors';
|
|
2
|
+
import type { AnyReply, Reply } from '../reply/reply';
|
|
2
3
|
import type { BodyParser } from '../request/read';
|
|
3
4
|
import type { FileOptions, FileSource, StaticOptions, StaticReply } from '../static/types';
|
|
4
5
|
import type { JoinPath, RoutePath } from '../types/path';
|
|
6
|
+
import type { ClientErrorStatus } from '../types/status';
|
|
5
7
|
import type { SocketContext, SocketEntryOf, SocketHandlers, SocketMessage, SocketSchema, SocketSend } from '../ws/types';
|
|
6
8
|
import type { AroundHook, RequestHook, ResponseHook, RouteDefinition, SocketDefinition, StartHook, StopHook } from './definition';
|
|
7
9
|
import type { OperationMethod } from './route-operation';
|
|
8
10
|
import { type SocketData } from './socket';
|
|
9
|
-
import type { BaseContext, Context, Empty, HandlerResult, MaybePromise, Method, Outcome,
|
|
11
|
+
import type { BaseContext, BehindShortcuts, BodyLimitShortcut, Context, DeclaredRefusal, DeclaredReply, Empty, HandlerResult, MaybePromise, Method, Outcome, ProvidedBy, RefusalResponses, RefusalSchema, RefusalsOf, Refusing, RouteEntryOf, RouteRecord, RouteSchema, ThenShortcuts, TypedReplyFunction, ValidSchema } from './types';
|
|
10
12
|
/** The route a static directory is served at: its path, then a wildcard. */
|
|
11
13
|
type StaticPath<Path extends string> = Path extends '/' ? '/*' : `${Path}/*`;
|
|
12
14
|
export interface AlxiaOptions<Prefix extends string> {
|
|
@@ -41,7 +43,7 @@ export interface RouteMethod<M extends Method, Ctx extends object, Routes extend
|
|
|
41
43
|
/** The routes of a plugin, under the prefix of the app it is used by. */
|
|
42
44
|
type Prefixed<Prefix extends string, Routes, Shortcuts> = {
|
|
43
45
|
readonly [Path in keyof Routes as Path extends string ? JoinPath<Prefix, Path> : never]: {
|
|
44
|
-
readonly [M in keyof Routes[Path]]: Routes[Path][M] extends RouteRecord<infer Input, infer Output> ? RouteRecord<Input, Output
|
|
46
|
+
readonly [M in keyof Routes[Path]]: Routes[Path][M] extends RouteRecord<infer Input, infer Output> ? RouteRecord<Input, BehindShortcuts<Output, Shortcuts>> : Routes[Path][M];
|
|
45
47
|
};
|
|
46
48
|
};
|
|
47
49
|
/** Any app, whatever it holds. */
|
|
@@ -65,7 +67,7 @@ export type Plugin = <App extends AnyAlxia>(app: App) => App;
|
|
|
65
67
|
* export type App = typeof app;
|
|
66
68
|
* ```
|
|
67
69
|
*
|
|
68
|
-
* A route hook (`derive`, `decorate`, `onError`) applies to the routes
|
|
70
|
+
* A route hook (`derive`, `decorate`, `onError`, `onRefusal`) applies to the routes
|
|
69
71
|
* declared after it, never before: the order of the chain is the order of
|
|
70
72
|
* the request. A global hook (`onRequest`, `onResponse`, `onStart`,
|
|
71
73
|
* `onStop`, `parser`) applies to the whole app, wherever it is declared.
|
|
@@ -168,12 +170,58 @@ export declare class Alxia<Ctx extends object = Empty, Routes extends object = E
|
|
|
168
170
|
* ```
|
|
169
171
|
*/
|
|
170
172
|
wrap<Result extends AnyReply | Response>(hook: (ctx: BaseContext & Ctx, next: () => Promise<Response>) => MaybePromise<Result>): Alxia<Ctx, Routes, Prefix, Shortcuts | Extract<Result, AnyReply>>;
|
|
173
|
+
/**
|
|
174
|
+
* The most bytes the request body of every route declared after it may
|
|
175
|
+
* hold, unless the route's own `bodyLimit` says otherwise. Inside a
|
|
176
|
+
* group, only the group's routes. A body past it is refused with a 413
|
|
177
|
+
* as soon as its `Content-Length` or the bytes counted pass the limit,
|
|
178
|
+
* which is added to the type of every such route.
|
|
179
|
+
*
|
|
180
|
+
* ```ts
|
|
181
|
+
* alxia()
|
|
182
|
+
* .bodyLimit(64 * 1024) // every route below: 64 KiB
|
|
183
|
+
* .post('/notes', { body: Note }, handler)
|
|
184
|
+
* .post('/upload', { bodyLimit: 25 * 1024 * 1024 }, handler); // its own
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
bodyLimit(bytes: number): Alxia<Ctx, Routes, Prefix, Shortcuts | BodyLimitShortcut>;
|
|
171
188
|
/**
|
|
172
189
|
* A hook that turns an error thrown by a route declared after it into a
|
|
173
190
|
* reply. Returning nothing lets the next one try; past the last, an
|
|
174
191
|
* `HttpError` is answered as it says and anything else as a 500.
|
|
175
192
|
*/
|
|
176
193
|
onError<Result extends AnyReply | undefined | void>(hook: (error: unknown, ctx: BaseContext & Partial<Ctx>) => MaybePromise<Result>): Alxia<Ctx, Routes, Prefix, Shortcuts | Extract<Result, AnyReply>>;
|
|
194
|
+
/**
|
|
195
|
+
* A hook that answers a request a route declared after it refuses
|
|
196
|
+
* before its handler runs: one its schemas refuse, the default of which
|
|
197
|
+
* is `400 { error: 'validation', issues }`, or one whose body passes its
|
|
198
|
+
* `bodyLimit`, the default of which is
|
|
199
|
+
* `413 { error: 'content_too_large', limit }`. The hook reads
|
|
200
|
+
* the refusal — its `kind`: `validation`, with the `part` that failed
|
|
201
|
+
* and the `issues`, or `body_limit`, with the route's `limit` — and
|
|
202
|
+
* returns a reply with a 4xx status, or nothing for that kind's default.
|
|
203
|
+
* The last one declared before a route is the one in force; a group's
|
|
204
|
+
* stays inside it. Its reply replaces the default 400 in the type of
|
|
205
|
+
* every such route that validates, so the client reads it:
|
|
206
|
+
*
|
|
207
|
+
* ```ts
|
|
208
|
+
* .onRefusal((refusal) => refusal.kind === 'validation'
|
|
209
|
+
* ? problem({ type: 'urn:example:invalid', status: 400, detail: `the ${refusal.part} is invalid` })
|
|
210
|
+
* : problem({ type: 'urn:example:limit', status: 413, limit: refusal.limit }))
|
|
211
|
+
* ```
|
|
212
|
+
*
|
|
213
|
+
* Given schemas first, its `reply` is typed by them, its reply is
|
|
214
|
+
* checked and sent as their output, and `@alxia/openapi` documents it:
|
|
215
|
+
*
|
|
216
|
+
* ```ts
|
|
217
|
+
* .onRefusal({ response: { 400: Problem }, contentType: 'application/problem+json' },
|
|
218
|
+
* (refusal, { reply }) => reply(400, { type: 'urn:example:invalid', status: 400, detail: refusal.kind }))
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
onRefusal<Result extends Reply<ClientErrorStatus, any> | undefined | void>(hook: (refusal: Refusal, ctx: BaseContext & Ctx) => MaybePromise<Result>): Alxia<Ctx, Routes, Prefix, Exclude<Shortcuts, Refusing> | RefusalsOf<Extract<Result, AnyReply>, Result>>;
|
|
222
|
+
onRefusal<Responses extends RefusalResponses, Result extends DeclaredReply<Responses> | undefined | void>(schema: RefusalSchema<Responses>, hook: (refusal: Refusal, ctx: Omit<BaseContext, 'reply'> & Ctx & {
|
|
223
|
+
readonly reply: TypedReplyFunction<Responses>;
|
|
224
|
+
}) => MaybePromise<Result>): Alxia<Ctx, Routes, Prefix, Exclude<Shortcuts, Refusing> | RefusalsOf<DeclaredRefusal<Responses>, Result>>;
|
|
177
225
|
/**
|
|
178
226
|
* A global hook run on every request, before routing: a 404 included. A
|
|
179
227
|
* `Response` it returns is sent as it is, and is no part of any route's
|
|
@@ -237,7 +285,7 @@ export declare class Alxia<Ctx extends object = Empty, Routes extends object = E
|
|
|
237
285
|
use<Result extends AnyAlxia>(plugin: (app: this) => Result): Result;
|
|
238
286
|
use<PluginCtx extends object, PluginRoutes extends object, PluginPrefix extends string, PluginShortcuts extends AnyReply, PluginRequires = Empty>(plugin: Alxia<PluginCtx, PluginRoutes, PluginPrefix, PluginShortcuts> & {
|
|
239
287
|
readonly '~requires'?: PluginRequires;
|
|
240
|
-
} & ProvidedBy<Ctx, PluginRequires>): Alxia<Ctx & PluginCtx, Routes & Prefixed<Prefix, PluginRoutes, Shortcuts>, Prefix, Shortcuts
|
|
288
|
+
} & ProvidedBy<Ctx, PluginRequires>): Alxia<Ctx & PluginCtx, Routes & Prefixed<Prefix, PluginRoutes, Shortcuts>, Prefix, ThenShortcuts<Shortcuts, PluginShortcuts>>;
|
|
241
289
|
/** Every route, in the order declared: what `@alxia/openapi` documents. */
|
|
242
290
|
get routes(): readonly RouteDefinition[];
|
|
243
291
|
/** Every socket route, in the order declared. */
|
package/dist/app/alxia.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alxia.d.ts","sourceRoot":"","sources":["../../src/app/alxia.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alxia.d.ts","sourceRoot":"","sources":["../../src/app/alxia.ts"],"names":[],"mappings":"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"}
|
package/dist/app/chain.d.ts
CHANGED
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
import { type BodyParser } from '../request/read';
|
|
2
2
|
import type { RouteDefinition, SocketDefinition } from './definition';
|
|
3
3
|
import type { BaseContext, RequestContext, ResponseSettings } from './types';
|
|
4
|
-
/** The context a route's hooks and handler read, and what they set on its response. */
|
|
5
|
-
export declare function routeContext(definition: RouteDefinition | SocketDefinition, request: RequestContext, pathParams: Record<string, string>): {
|
|
6
|
-
ctx: Record<string, unknown> & BaseContext;
|
|
7
|
-
set: ResponseSettings;
|
|
8
|
-
};
|
|
9
4
|
/**
|
|
10
5
|
* Runs the hooks of a route in order — a `derive` adds to the context or
|
|
11
6
|
* ends the request, a `wrap` runs the rest inside it — then validates the
|
|
12
7
|
* request, then `last`. A socket's upgrade skips the `wrap` hooks: it has
|
|
13
8
|
* no response to wrap.
|
|
14
9
|
*/
|
|
15
|
-
export declare function chain<Last>(definition: RouteDefinition | SocketDefinition, request: RequestContext, rawParams: Record<string, string>, set: ResponseSettings, ctx: Record<string, unknown> & BaseContext, parsers: readonly BodyParser[], last: () => Promise<Response | Last>): Promise<Response | Last>;
|
|
10
|
+
export declare function chain<Last>(definition: RouteDefinition | SocketDefinition, request: RequestContext, rawParams: Record<string, string>, set: ResponseSettings, ctx: Record<string, unknown> & BaseContext, parsers: readonly BodyParser[], validateResponses: boolean, last: () => Promise<Response | Last>): Promise<Response | Last>;
|
|
16
11
|
/** A route's request, from its hooks to its handler's reply, sent. */
|
|
17
12
|
export declare function handle(route: RouteDefinition, request: RequestContext, rawParams: Record<string, string>, parsers: readonly BodyParser[], validateResponses: boolean): Promise<Response>;
|
|
18
13
|
/**
|
|
19
14
|
* An error a route threw, answered by its `onError` hooks in order; past
|
|
20
|
-
* the last, an `HttpError` as it says and anything else as a 500.
|
|
15
|
+
* the last, an `HttpError` as it says and anything else as a 500. A body
|
|
16
|
+
* past the route's `bodyLimit` is a refusal instead, answered as
|
|
17
|
+
* `refuse` answers one: by the `onRefusal` hook in force, or its 413.
|
|
21
18
|
*/
|
|
22
|
-
export declare function fail(definition: RouteDefinition | SocketDefinition, error: unknown, ctx: BaseContext): Promise<Response>;
|
|
19
|
+
export declare function fail(definition: RouteDefinition | SocketDefinition, error: unknown, ctx: BaseContext, validateResponses?: boolean): Promise<Response>;
|
|
23
20
|
//# sourceMappingURL=chain.d.ts.map
|
package/dist/app/chain.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/app/chain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/app/chain.ts"],"names":[],"mappings":"AAYA,OAAO,EACN,KAAK,UAAU,EAKf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE7E;;;;;GAKG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAC/B,UAAU,EAAE,eAAe,GAAG,gBAAgB,EAC9C,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAC1C,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,iBAAiB,EAAE,OAAO,EAC1B,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAClC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAiC1B;AA4DD,sEAAsE;AACtE,wBAAsB,MAAM,CAC3B,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,iBAAiB,EAAE,OAAO,GACxB,OAAO,CAAC,QAAQ,CAAC,CAiCnB;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CACzB,UAAU,EAAE,eAAe,GAAG,gBAAgB,EAC9C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,WAAW,EAChB,iBAAiB,UAAO,GACtB,OAAO,CAAC,QAAQ,CAAC,CA2BnB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RouteDefinition, SocketDefinition } from './definition';
|
|
2
|
+
import type { BaseContext, RequestContext, ResponseSettings } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* The context a route's hooks and handler read, and what they set on its
|
|
5
|
+
* response. Under a `bodyLimit`, its `request` is the one whose body is
|
|
6
|
+
* bounded: every reader of the body, core's or the handler's, counts.
|
|
7
|
+
*/
|
|
8
|
+
export declare function routeContext(definition: RouteDefinition | SocketDefinition, request: RequestContext, pathParams: Record<string, string>): {
|
|
9
|
+
ctx: Record<string, unknown> & BaseContext;
|
|
10
|
+
set: ResponseSettings;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/app/context.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EACX,WAAW,EAEX,cAAc,EACd,gBAAgB,EAChB,MAAM,SAAS,CAAC;AAOjB;;;;GAIG;AACH,wBAAgB,YAAY,CAC3B,UAAU,EAAE,eAAe,GAAG,gBAAgB,EAC9C,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC;IAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC;IAAC,GAAG,EAAE,gBAAgB,CAAA;CAAE,CAuBvE"}
|
package/dist/app/definition.d.ts
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
* An app as it runs: its hooks, and the definition of each route and socket
|
|
3
3
|
* route it holds, with the hooks declared before it.
|
|
4
4
|
*/
|
|
5
|
+
import type { Refusal } from '../errors/errors';
|
|
5
6
|
import type { AnyReply } from '../reply/reply';
|
|
6
7
|
import type { BodyParser } from '../request/read';
|
|
7
8
|
import type { Router } from '../router/router';
|
|
8
9
|
import type { SocketHandlers, SocketSchema } from '../ws/types';
|
|
9
|
-
import type { BaseContext, MaybePromise, Method, RequestContext, RouteSchema } from './types';
|
|
10
|
+
import type { BaseContext, MaybePromise, Method, RequestContext, ResponseSchemas, RouteSchema } from './types';
|
|
10
11
|
/** A hook that runs before validation, and may add to the context or end the request. */
|
|
11
12
|
export type DeriveHook = (ctx: Record<string, unknown>) => unknown;
|
|
12
13
|
/** A hook around the rest of a route: the hooks after it, validation, the handler. */
|
|
@@ -21,6 +22,16 @@ export type ChainHook = {
|
|
|
21
22
|
};
|
|
22
23
|
/** A hook that turns an error into a reply, or lets the next one try. */
|
|
23
24
|
export type ErrorHook = (error: unknown, ctx: BaseContext) => MaybePromise<AnyReply | undefined | void>;
|
|
25
|
+
/** A hook that answers a request the app refused: a reply, or nothing for the default. */
|
|
26
|
+
export type RefusalHook = (refusal: Refusal, ctx: BaseContext) => MaybePromise<AnyReply | undefined | void>;
|
|
27
|
+
/** The `onRefusal` hook in force for a route, and the schemas it declares. */
|
|
28
|
+
export interface RefusalHandler {
|
|
29
|
+
readonly hook: RefusalHook;
|
|
30
|
+
/** The schema of each status the hook may answer: its reply is checked by it, and documented. */
|
|
31
|
+
readonly response?: ResponseSchemas;
|
|
32
|
+
/** The `content-type` of its reply, unless the reply sets one; documented too. */
|
|
33
|
+
readonly contentType?: string;
|
|
34
|
+
}
|
|
24
35
|
/** Runs on every request, before routing; a `Response` it returns is sent as it is. */
|
|
25
36
|
export type RequestHook = (ctx: RequestContext) => MaybePromise<Response | undefined | void>;
|
|
26
37
|
/** Runs on every response, routed or not; a `Response` it returns replaces it. */
|
|
@@ -39,9 +50,17 @@ export interface RouteDefinition {
|
|
|
39
50
|
readonly method: Method;
|
|
40
51
|
readonly path: string;
|
|
41
52
|
readonly schema: RouteSchema;
|
|
53
|
+
/**
|
|
54
|
+
* The most bytes its request body may hold: its schema's `bodyLimit`,
|
|
55
|
+
* else the `bodyLimit` in effect where it was declared. None, no limit
|
|
56
|
+
* beyond the server's `maxRequestBodySize`.
|
|
57
|
+
*/
|
|
58
|
+
readonly bodyLimit?: number;
|
|
42
59
|
readonly handler: (ctx: never) => MaybePromise<AnyReply>;
|
|
43
60
|
readonly derive: readonly ChainHook[];
|
|
44
61
|
readonly onError: readonly ErrorHook[];
|
|
62
|
+
/** The `onRefusal` hook declared last before it; none, and a refused request is the default 400. */
|
|
63
|
+
readonly refusal?: RefusalHandler | undefined;
|
|
45
64
|
}
|
|
46
65
|
/** A socket route as the app runs it. */
|
|
47
66
|
export interface SocketDefinition {
|
|
@@ -50,6 +69,8 @@ export interface SocketDefinition {
|
|
|
50
69
|
readonly handlers: SocketHandlers<never, never, never>;
|
|
51
70
|
readonly derive: readonly ChainHook[];
|
|
52
71
|
readonly onError: readonly ErrorHook[];
|
|
72
|
+
/** Answers a refused upgrade request, as a route's. */
|
|
73
|
+
readonly refusal?: RefusalHandler | undefined;
|
|
53
74
|
}
|
|
54
75
|
export type Definition = ({
|
|
55
76
|
readonly kind: 'http';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/app/definition.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,cAAc,EACd,WAAW,EACX,MAAM,SAAS,CAAC;AAEjB,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;AACnE,sFAAsF;AACtF,MAAM,MAAM,QAAQ,GAAG,CACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,KACzB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACvC,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,CAAC;AACrD,yEAAyE;AACzE,MAAM,MAAM,SAAS,GAAG,CACvB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,WAAW,KACZ,YAAY,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/app/definition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/app/pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,cAAc,CAAC;AAKxD,4EAA4E;AAC5E,wBAAsB,KAAK,CAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,EACvC,IAAI,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/app/pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,cAAc,CAAC;AAKxD,4EAA4E;AAC5E,wBAAsB,KAAK,CAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,EACvC,IAAI,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,QAAQ,CAAC,CAuBnB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A request the app refused before its handler ran, answered: by the
|
|
3
|
+
* route's `onRefusal` hook, or by the default.
|
|
4
|
+
*/
|
|
5
|
+
import type { Refusal } from '../errors/errors';
|
|
6
|
+
import type { RouteDefinition, SocketDefinition } from './definition';
|
|
7
|
+
import type { BaseContext, ResponseSettings } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* A refused request, answered by the route's `onRefusal` hook — its reply
|
|
10
|
+
* checked by the schemas the hook declares — or, when it has none or
|
|
11
|
+
* returns nothing, by the default of its kind: a 400 with the issues of a
|
|
12
|
+
* `validation`, the 413 of a `body_limit`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function refuse(definition: RouteDefinition | SocketDefinition, refusal: Refusal, set: ResponseSettings, ctx: BaseContext, validateResponses: boolean): Promise<Response>;
|
|
15
|
+
//# sourceMappingURL=refusal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../../src/app/refusal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAEX,OAAO,EAEP,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE7D;;;;;GAKG;AACH,wBAAsB,MAAM,CAC3B,UAAU,EAAE,eAAe,GAAG,gBAAgB,EAC9C,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,OAAO,GACxB,OAAO,CAAC,QAAQ,CAAC,CAyBnB"}
|
package/dist/app/send.d.ts
CHANGED
|
@@ -6,9 +6,25 @@
|
|
|
6
6
|
import { type RoutingErrorBody } from '../errors/errors';
|
|
7
7
|
import { type AnyReply } from '../reply/reply';
|
|
8
8
|
import type { RouteDefinition } from './definition';
|
|
9
|
-
import type { ResponseSettings } from './types';
|
|
9
|
+
import type { ResponseSchemas, ResponseSettings } from './types';
|
|
10
10
|
/** The 500 of a request that failed: its body says no more than `internal`. */
|
|
11
11
|
export declare function internalError(): Response;
|
|
12
|
+
/**
|
|
13
|
+
* Whether `error` is the client hanging up: the request's signal is
|
|
14
|
+
* aborted and the error is that abort, as Bun's body read throws it (an
|
|
15
|
+
* `AbortError`, not the signal's own reason). Any other error raised after
|
|
16
|
+
* the client left, a bug included, is the app's.
|
|
17
|
+
*/
|
|
18
|
+
export declare function clientGone(error: unknown, request: Request): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* What a request that failed with `error` gets. The client hanging up
|
|
21
|
+
* mid-request (`clientGone`) is no app error: nothing is logged, and the
|
|
22
|
+
* 499 nobody reads is only what an `onResponse` hook, a logger's, sees. Any
|
|
23
|
+
* other error is logged and answered 500.
|
|
24
|
+
*/
|
|
25
|
+
export declare function failed(error: unknown, request: Request): Response;
|
|
26
|
+
/** nginx's "client closed request": the status of a request its client left. */
|
|
27
|
+
export declare const CLIENT_GONE = 499;
|
|
12
28
|
/** A reply as it is, with what the route set on its response. */
|
|
13
29
|
export declare function send(reply: AnyReply, set: ResponseSettings, signal?: AbortSignal): Response;
|
|
14
30
|
/**
|
|
@@ -17,6 +33,13 @@ export declare function send(reply: AnyReply, set: ResponseSettings, signal?: Ab
|
|
|
17
33
|
* declare, or a body its schema refuses, throws a `ResponseValidationError`.
|
|
18
34
|
*/
|
|
19
35
|
export declare function sendDeclared(route: RouteDefinition, reply: AnyReply, set: ResponseSettings, signal: AbortSignal, validateResponses: boolean): Promise<Response>;
|
|
36
|
+
/**
|
|
37
|
+
* `reply` checked against the schema `responses` declares for its status,
|
|
38
|
+
* as that schema's output: what a handler's reply and an `onRefusal`
|
|
39
|
+
* hook's go through. A status with no schema, or a body its schema
|
|
40
|
+
* refuses, throws a `ResponseValidationError`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function checkReply(method: string, path: string, responses: ResponseSchemas, reply: AnyReply, validateResponses: boolean): Promise<AnyReply>;
|
|
20
43
|
/** What the router answers when no route takes the request. */
|
|
21
44
|
export declare function routingError(status: 404 | 405 | 426, error: RoutingErrorBody['error'], allowed?: readonly string[]): Response;
|
|
22
45
|
//# sourceMappingURL=send.d.ts.map
|
package/dist/app/send.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/app/send.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAGN,KAAK,gBAAgB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/app/send.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAGN,KAAK,gBAAgB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAIlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIjE,+EAA+E;AAC/E,wBAAgB,aAAa,IAAI,QAAQ,CAExC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAMpE;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAMjE;AAED,gFAAgF;AAChF,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,iEAAiE;AACjE,wBAAgB,IAAI,CACnB,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,gBAAgB,EACrB,MAAM,CAAC,EAAE,WAAW,GAClB,QAAQ,CAmBV;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CACjC,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,WAAW,EACnB,iBAAiB,EAAE,OAAO,GACxB,OAAO,CAAC,QAAQ,CAAC,CAanB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,QAAQ,EACf,iBAAiB,EAAE,OAAO,GACxB,OAAO,CAAC,QAAQ,CAAC,CAkBnB;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAC3B,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EACvB,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GACzB,QAAQ,CAKV"}
|
package/dist/app/socket.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export interface SocketData {
|
|
|
11
11
|
socket?: Socket<unknown, unknown>;
|
|
12
12
|
}
|
|
13
13
|
/** The upgrade request of a socket route: its hooks, its validation, then the upgrade. */
|
|
14
|
-
export declare function upgradeSocket(definition: SocketDefinition, request: RequestContext, rawParams: Record<string, string>, parsers: readonly BodyParser[]): Promise<Response | typeof UPGRADED>;
|
|
14
|
+
export declare function upgradeSocket(definition: SocketDefinition, request: RequestContext, rawParams: Record<string, string>, parsers: readonly BodyParser[], validateResponses: boolean): Promise<Response | typeof UPGRADED>;
|
|
15
15
|
/** The `websocket` handler `Bun.serve` runs every open socket through. */
|
|
16
16
|
export declare function websocketHandler(validate: boolean): Bun.WebSocketHandler<SocketData>;
|
|
17
17
|
//# sourceMappingURL=socket.d.ts.map
|
package/dist/app/socket.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/app/socket.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/app/socket.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAC;AAE5D,mFAAmF;AACnF,eAAO,MAAM,QAAQ,eAAqB,CAAC;AAE3C,+FAA+F;AAC/F,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,0FAA0F;AAC1F,wBAAsB,aAAa,CAClC,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,iBAAiB,EAAE,OAAO,GACxB,OAAO,CAAC,QAAQ,GAAG,OAAO,QAAQ,CAAC,CA8BrC;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,OAAO,GACf,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CA4DlC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export type { Empty, MaybePromise, Method } from './common';
|
|
7
7
|
export type { BaseContext, Context, RequestContext, ResponseSettings, } from './context';
|
|
8
|
+
export type { BehindShortcuts, BodyLimited, BodyLimitShortcut, DeclaredRefusal, DefaultLimitOutcome, DefaultRefusalOutcome, FallsBack, IsLimited, RefusalOutcome, RefusalResponses, RefusalSchema, RefusalsOf, Refusing, ThenShortcuts, } from './refusal';
|
|
8
9
|
export type { ProvidedBy, RequiresOf, Requiring } from './requires';
|
|
9
10
|
export type { Outcome, OutcomeOf, RouteEntryOf, RouteInput, RouteOutput, RouteRecord, RouteTable, } from './route-table';
|
|
10
11
|
export type { ResponseSchemas, RouteDetail, RouteSchema } from './schema';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EACX,WAAW,EACX,OAAO,EACP,cAAc,EACd,gBAAgB,GAChB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACpE,YAAY,EACX,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,GACV,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC1E,YAAY,EACX,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EACX,WAAW,EACX,OAAO,EACP,cAAc,EACd,gBAAgB,GAChB,MAAM,WAAW,CAAC;AACnB,YAAY,EACX,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,QAAQ,EACR,aAAa,GACb,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACpE,YAAY,EACX,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,GACV,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC1E,YAAY,EACX,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|