@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
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How an app's type carries its `onRefusal` hook: what the hook may
|
|
3
|
+
* declare, and the marked replies that take the place of the default 400
|
|
4
|
+
* in the type of each route after it that validates, and of the default
|
|
5
|
+
* 413 in the type of each route under a `bodyLimit`.
|
|
6
|
+
*/
|
|
7
|
+
import type { ContentTooLargeBody, ValidationErrorBody } from '../../errors/errors';
|
|
8
|
+
import type { Reply } from '../../reply/reply';
|
|
9
|
+
import type { InferOutput, StandardSchemaV1 } from '../../schema/standard-schema';
|
|
10
|
+
import type { Jsonify } from '../../types/json';
|
|
11
|
+
import type { ClientErrorStatus } from '../../types/status';
|
|
12
|
+
import type { Outcome, OutcomeOf } from './route-table';
|
|
13
|
+
/** The schema of each status an `onRefusal` hook may answer, client errors only. */
|
|
14
|
+
export type RefusalResponses = {
|
|
15
|
+
readonly [Status in ClientErrorStatus]?: StandardSchemaV1;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* What an `onRefusal` hook declares: the schema of each status it may
|
|
19
|
+
* answer — its reply is checked by it, typed and documented — and the
|
|
20
|
+
* `content-type` its reply is sent with unless it sets one.
|
|
21
|
+
*/
|
|
22
|
+
export interface RefusalSchema<Responses extends RefusalResponses = RefusalResponses> {
|
|
23
|
+
readonly response: Responses;
|
|
24
|
+
readonly contentType?: string;
|
|
25
|
+
}
|
|
26
|
+
/** The replies an `onRefusal` hook answers with, marked; the default 400 when it may return nothing. */
|
|
27
|
+
export type RefusalsOf<Replies, Result> = (Replies & Refusing) | (undefined extends Result ? Reply<400, ValidationErrorBody> & FallsBack : never);
|
|
28
|
+
/** Every reply a hook declaring `Responses` may answer, as its schemas give it back. */
|
|
29
|
+
export type DeclaredRefusal<Responses> = {
|
|
30
|
+
[Status in keyof Responses & ClientErrorStatus]: Reply<Status, Responses[Status] extends StandardSchemaV1 ? InferOutput<Responses[Status]> : never>;
|
|
31
|
+
}[keyof Responses & ClientErrorStatus];
|
|
32
|
+
/**
|
|
33
|
+
* The mark, among an app's shortcuts, of each reply its `onRefusal` hook
|
|
34
|
+
* answers a refused request with: they replace the default 400 of a route
|
|
35
|
+
* that validates, and are no part of a route that does not.
|
|
36
|
+
*/
|
|
37
|
+
export interface Refusing {
|
|
38
|
+
readonly '~refusal': true;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The default 400 in a route's type, marked: the `onRefusal` hook of an
|
|
42
|
+
* app a plugin is used by replaces it on the plugin's routes, as it does
|
|
43
|
+
* at runtime. The client reads it as `Outcome<400, ValidationErrorBody>`.
|
|
44
|
+
*/
|
|
45
|
+
export interface DefaultRefusalOutcome extends Outcome<400, ValidationErrorBody> {
|
|
46
|
+
readonly '~default': true;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The mark of the default 400 among a hook's refusals: the hook may return
|
|
50
|
+
* nothing, and the default answers then.
|
|
51
|
+
*/
|
|
52
|
+
export interface FallsBack extends Refusing {
|
|
53
|
+
readonly '~fallback': true;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The default 413 in a route's type, marked as the default 400 is: the
|
|
57
|
+
* `onRefusal` hook of an app a plugin is used by replaces it.
|
|
58
|
+
*/
|
|
59
|
+
export interface DefaultLimitOutcome extends Outcome<413, Jsonify<ContentTooLargeBody>> {
|
|
60
|
+
readonly '~default': true;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The mark, among an app's shortcuts, of a `bodyLimit()` in force: every
|
|
64
|
+
* route after it may refuse its body with a `body_limit` refusal.
|
|
65
|
+
*/
|
|
66
|
+
export interface BodyLimited {
|
|
67
|
+
readonly '~bodyLimit': true;
|
|
68
|
+
}
|
|
69
|
+
/** What `bodyLimit()` adds to the shortcuts of the routes after it. */
|
|
70
|
+
export type BodyLimitShortcut = Reply<413, ContentTooLargeBody> & BodyLimited;
|
|
71
|
+
/** Whether a route is under a `bodyLimit`: its own, or one in force before it. */
|
|
72
|
+
export type IsLimited<Schema, Shortcuts> = Schema extends {
|
|
73
|
+
readonly bodyLimit: number;
|
|
74
|
+
} ? true : [Extract<Shortcuts, BodyLimited>] extends [never] ? false : true;
|
|
75
|
+
/**
|
|
76
|
+
* The outcomes a refused request may get: every reply of the hook in force,
|
|
77
|
+
* on every route it may refuse — one that `Validates` or is `Limited`,
|
|
78
|
+
* since its reply does not depend on the kind in its type — or the default
|
|
79
|
+
* of each kind the route may refuse with: the 400 of a route that
|
|
80
|
+
* `Validates`, the 413 of one that is `Limited`.
|
|
81
|
+
*/
|
|
82
|
+
export type RefusalOutcome<Shortcuts, Validates extends boolean = true, Limited extends boolean = false> = [Extract<Shortcuts, Refusing>] extends [never] ? (Validates extends true ? DefaultRefusalOutcome : never) | (Limited extends true ? DefaultLimitOutcome : never) : [Validates | Limited] extends [false] ? never : OutcomeOf<Exclude<Extract<Shortcuts, Refusing>, FallsBack>> | ([Extract<Shortcuts, FallsBack>] extends [never] ? never : (Validates extends true ? Outcome<400, ValidationErrorBody> : never) | (Limited extends true ? Outcome<413, Jsonify<ContentTooLargeBody>> : never));
|
|
83
|
+
/** `Shortcuts`, then the shortcuts of a later scope: its refusals, if any, replace these. */
|
|
84
|
+
export type ThenShortcuts<Shortcuts, Later> = [
|
|
85
|
+
Extract<Later, Refusing>
|
|
86
|
+
] extends [never] ? Shortcuts | Later : Exclude<Shortcuts, Refusing> | Later;
|
|
87
|
+
/**
|
|
88
|
+
* `Output`, a route of a plugin, behind the hooks of the app using it: its
|
|
89
|
+
* default 400 and 413 replaced by the app's refusals, and the app's other
|
|
90
|
+
* replies added. The app's `bodyLimit()` does not reach it: a plugin's
|
|
91
|
+
* route keeps the limit it was declared with.
|
|
92
|
+
*/
|
|
93
|
+
export type BehindShortcuts<Output, Shortcuts> = ([Extract<Shortcuts, Refusing>] extends [never] ? Output : Exclude<Output, DefaultRefusalOutcome | DefaultLimitOutcome> | ([Extract<Output, DefaultRefusalOutcome>] extends [never] ? never : RefusalOutcome<Shortcuts, true, false>) | ([Extract<Output, DefaultLimitOutcome>] extends [never] ? never : RefusalOutcome<Shortcuts, false, true>)) | OutcomeOf<Exclude<Shortcuts, Refusing | BodyLimited>>;
|
|
94
|
+
//# sourceMappingURL=refusal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../../../src/app/types/refusal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/** The record of an app's routes the client is typed from: what each one takes and answers. */
|
|
2
|
-
import type { InternalErrorBody
|
|
2
|
+
import type { InternalErrorBody } from '../../errors/errors';
|
|
3
3
|
import type { Reply } from '../../reply/reply';
|
|
4
4
|
import type { InferInput, InferOutput } from '../../schema/standard-schema';
|
|
5
5
|
import type { Jsonify, Simplify } from '../../types/json';
|
|
6
6
|
import type { PathParamName } from '../../types/path';
|
|
7
7
|
import type { RedirectStatus } from '../../types/status';
|
|
8
8
|
import type { Empty, Method } from './common';
|
|
9
|
+
import type { BodyLimited, IsLimited, RefusalOutcome, Refusing } from './refusal';
|
|
9
10
|
import type { ResponseSchemaAt, ResponsesOf, SchemaAt, StatusOf } from './schema';
|
|
10
11
|
/** One outcome of a call: a status, and the body read from it. */
|
|
11
12
|
export interface Outcome<Status extends number = number, Data = unknown> {
|
|
@@ -20,7 +21,7 @@ type ValidatesRequest<Schema> = [
|
|
|
20
21
|
/** Every outcome a client may read from a route. */
|
|
21
22
|
export type RouteOutput<Schema, Result, Shortcuts> = ([ResponsesOf<Schema>] extends [never] ? OutcomeOf<Result> : {
|
|
22
23
|
[Status in StatusOf<ResponsesOf<Schema>>]: Outcome<Status, Jsonify<InferOutput<ResponseSchemaAt<ResponsesOf<Schema>, Status>>>>;
|
|
23
|
-
}[StatusOf<ResponsesOf<Schema>>] | OutcomeOf<Extract<Result, Reply<RedirectStatus, undefined>>>) | OutcomeOf<Shortcuts
|
|
24
|
+
}[StatusOf<ResponsesOf<Schema>>] | OutcomeOf<Extract<Result, Reply<RedirectStatus, undefined>>>) | OutcomeOf<Exclude<Shortcuts, Refusing | BodyLimited>> | RefusalOutcome<Shortcuts, ValidatesRequest<Schema>, IsLimited<Schema, Shortcuts>> | Outcome<500, InternalErrorBody>;
|
|
24
25
|
type PartInput<Schema, Key extends 'query' | 'headers' | 'cookies' | 'body'> = [
|
|
25
26
|
SchemaAt<Schema, Key>
|
|
26
27
|
] extends [never] ? Empty : undefined extends InferInput<SchemaAt<Schema, Key>> ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-table.d.ts","sourceRoot":"","sources":["../../../src/app/types/route-table.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"route-table.d.ts","sourceRoot":"","sources":["../../../src/app/types/route-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,13 @@ export interface RouteSchema {
|
|
|
33
33
|
readonly body?: StandardSchemaV1;
|
|
34
34
|
/** The body of each status the route may answer. Its handler can answer no other. */
|
|
35
35
|
readonly response?: ResponseSchemas;
|
|
36
|
+
/**
|
|
37
|
+
* The most bytes the request body may hold, past which it is refused
|
|
38
|
+
* with a 413: checked on its `Content-Length`, then counted as it is
|
|
39
|
+
* read, by core's parsers or by the handler reading `request.body`.
|
|
40
|
+
* Overrides a `bodyLimit()` declared before the route.
|
|
41
|
+
*/
|
|
42
|
+
readonly bodyLimit?: number;
|
|
36
43
|
readonly detail?: RouteDetail;
|
|
37
44
|
}
|
|
38
45
|
/** The schema a route declares for `Key`, or `never`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/app/types/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACX,WAAW,EACX,gBAAgB,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,gDAAgD;AAChD,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,MAAM,IAAI,UAAU,CAAC,CAAC,EAAE,gBAAgB;CAClD,CAAC;AAEF,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,0GAA0G;IAC1G,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,oCAAoC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC9B;AAOD,yDAAyD;AACzD,MAAM,MAAM,QAAQ,CACnB,MAAM,EACN,GAAG,SAAS,MAAM,WAAW,IAC1B,GAAG,SAAS,MAAM,MAAM,GACzB,MAAM,CAAC,GAAG,CAAC,SAAS,gBAAgB,GACnC,MAAM,CAAC,GAAG,CAAC,GACX,KAAK,GACN,KAAK,CAAC;AAET,qFAAqF;AACrF,MAAM,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,SAAS,MAAM,WAAW,EAAE,QAAQ,IAAI;IACvE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;CACrB,SAAS,CAAC,KAAK,CAAC,GACd,QAAQ,GACR,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEtC,2DAA2D;AAC3D,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI,MAAM,SAAS;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,SAAS,SAAS,eAAe,CAAC;CAC3D,GACE,SAAS,GACT,KAAK,CAAC;AAET,sCAAsC;AACtC,MAAM,MAAM,QAAQ,CAAC,SAAS,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC;AAE/D,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,IAAI,MAAM,SAAS,MAAM,SAAS,GAC7E,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,MAAM,SAC1D,gBAAgB,GACf,MAAM,GACN,KAAK,GACN,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/app/types/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACX,WAAW,EACX,gBAAgB,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,gDAAgD;AAChD,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,MAAM,IAAI,UAAU,CAAC,CAAC,EAAE,gBAAgB;CAClD,CAAC;AAEF,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,0GAA0G;IAC1G,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,oCAAoC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC9B;AAOD,yDAAyD;AACzD,MAAM,MAAM,QAAQ,CACnB,MAAM,EACN,GAAG,SAAS,MAAM,WAAW,IAC1B,GAAG,SAAS,MAAM,MAAM,GACzB,MAAM,CAAC,GAAG,CAAC,SAAS,gBAAgB,GACnC,MAAM,CAAC,GAAG,CAAC,GACX,KAAK,GACN,KAAK,CAAC;AAET,qFAAqF;AACrF,MAAM,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,SAAS,MAAM,WAAW,EAAE,QAAQ,IAAI;IACvE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;CACrB,SAAS,CAAC,KAAK,CAAC,GACd,QAAQ,GACR,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEtC,2DAA2D;AAC3D,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI,MAAM,SAAS;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,SAAS,SAAS,eAAe,CAAC;CAC3D,GACE,SAAS,GACT,KAAK,CAAC;AAET,sCAAsC;AACtC,MAAM,MAAM,QAAQ,CAAC,SAAS,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC;AAE/D,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,IAAI,MAAM,SAAS,MAAM,SAAS,GAC7E,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,MAAM,SAC1D,gBAAgB,GACf,MAAM,GACN,KAAK,GACN,KAAK,CAAC"}
|
|
@@ -11,7 +11,7 @@ export type ValidSchema<Path extends string, Schema> = UnknownKeys<Schema> & Par
|
|
|
11
11
|
type UnknownKeys<Schema> = [Exclude<keyof Schema, keyof RouteSchema>] extends [
|
|
12
12
|
never
|
|
13
13
|
] ? unknown : {
|
|
14
|
-
readonly [Key in Exclude<keyof Schema, keyof RouteSchema>]: `"${Key & string}" is not a part of a route: params, query, headers, cookies, body, response or detail`;
|
|
14
|
+
readonly [Key in Exclude<keyof Schema, keyof RouteSchema>]: `"${Key & string}" is not a part of a route: params, query, headers, cookies, body, response, bodyLimit or detail`;
|
|
15
15
|
};
|
|
16
16
|
/** One message per key the path does not declare, or one for them all when no key can be named. */
|
|
17
17
|
type UndeclaredParams<Keys, Path extends string> = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valid-schema.d.ts","sourceRoot":"","sources":["../../../src/app/types/valid-schema.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,KAAK,EACX,UAAU,EACV,gBAAgB,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,GACzE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,GAC7B,aAAa,CAAC,MAAM,CAAC,CAAC;AAEvB,KAAK,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,WAAW,CAAC,CAAC,SAAS;IAC7E,KAAK;CACL,GACE,OAAO,GACP;IACA,QAAQ,EAAE,GAAG,IAAI,OAAO,CACvB,MAAM,MAAM,EACZ,MAAM,WAAW,CACjB,GAAG,IAAI,GAAG,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"valid-schema.d.ts","sourceRoot":"","sources":["../../../src/app/types/valid-schema.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,KAAK,EACX,UAAU,EACV,gBAAgB,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,GACzE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,GAC7B,aAAa,CAAC,MAAM,CAAC,CAAC;AAEvB,KAAK,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,WAAW,CAAC,CAAC,SAAS;IAC7E,KAAK;CACL,GACE,OAAO,GACP;IACA,QAAQ,EAAE,GAAG,IAAI,OAAO,CACvB,MAAM,MAAM,EACZ,MAAM,WAAW,CACjB,GAAG,IAAI,GAAG,GAAG,MAAM,kGAAkG;CACtH,CAAC;AAEJ,mGAAmG;AACnG,KAAK,gBAAgB,CAAC,IAAI,EAAE,IAAI,SAAS,MAAM,IAAI;IAClD,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;CACxB,SAAS,CAAC,KAAK,CAAC,GACd,iCAAiC,IAAI,oBAAoB,GACzD,4BAA4B,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,IAAI,oBAAoB,CAAC;AAE7F,KAAK,eAAe,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,MAAM,SAAS;IAClE,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,SAAS,gBAAgB,CAAC;CACvD,GACE,UAAU,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,GAC1C,MAAM,UAAU,CAAC,MAAM,CAAC,SAAS,aAAa,CAAC,IAAI,CAAC,GACnD,OAAO,GACP;IACA,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAChC,OAAO,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,EACtD,IAAI,CACJ,CAAC;CACF,GACD;IACA,QAAQ,CAAC,MAAM,EAAE,oDAAoD,IAAI,4BAA4B,CAAC;CACtG,GACD,OAAO,CAAC;AAEX,KAAK,aAAa,CAAC,MAAM,IAAI,MAAM,SAAS;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,SAAS,CAAC;CACnC,GACE,CAAC,OAAO,CAAC,MAAM,SAAS,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACrD,OAAO,GACP;IACA,QAAQ,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC;CACvG,GACD,OAAO,CAAC"}
|
package/dist/errors/errors.d.ts
CHANGED
|
@@ -6,6 +6,34 @@ export interface ValidationIssue {
|
|
|
6
6
|
readonly code: string;
|
|
7
7
|
readonly message: string;
|
|
8
8
|
}
|
|
9
|
+
/** A part of the request a route validates: where a refused value was read from. */
|
|
10
|
+
export type RequestPart = Exclude<ValidationTarget, 'message'>;
|
|
11
|
+
/**
|
|
12
|
+
* A request the route's schemas refused, as an `onRefusal` hook reads it:
|
|
13
|
+
* the first part that failed, in the order params, query, headers,
|
|
14
|
+
* cookies, body, and every issue, each naming its own part.
|
|
15
|
+
*/
|
|
16
|
+
export interface ValidationRefusal {
|
|
17
|
+
readonly kind: 'validation';
|
|
18
|
+
readonly part: RequestPart;
|
|
19
|
+
readonly issues: readonly ValidationIssue[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A request body larger than its route's `bodyLimit`, as an `onRefusal`
|
|
23
|
+
* hook reads it: the limit, in bytes. Its default is the 413 of
|
|
24
|
+
* `ContentTooLargeBody`.
|
|
25
|
+
*/
|
|
26
|
+
export interface BodyLimitRefusal {
|
|
27
|
+
readonly kind: 'body_limit';
|
|
28
|
+
readonly limit: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Why the app refused a request before its handler ran, as an `onRefusal`
|
|
32
|
+
* hook reads it, told apart by `kind`: `validation` or `body_limit`. A
|
|
33
|
+
* kind added later reaches a hook that returns nothing for it as its
|
|
34
|
+
* default.
|
|
35
|
+
*/
|
|
36
|
+
export type Refusal = ValidationRefusal | BodyLimitRefusal;
|
|
9
37
|
/** The body of the 400 every route that validates its request may answer. */
|
|
10
38
|
export interface ValidationErrorBody {
|
|
11
39
|
readonly error: 'validation';
|
|
@@ -27,11 +55,29 @@ export interface RoutingErrorBody {
|
|
|
27
55
|
* reads it as a status the route never declared.
|
|
28
56
|
*/
|
|
29
57
|
export declare class HttpError<Status extends number = number, Body = unknown> extends Error {
|
|
30
|
-
readonly name
|
|
58
|
+
readonly name: string;
|
|
31
59
|
readonly status: Status;
|
|
32
60
|
readonly body: Body;
|
|
33
61
|
constructor(status: Status, body: Body, message?: string);
|
|
34
62
|
}
|
|
63
|
+
/** The body of the 413 a route with a `bodyLimit` answers to a larger body. */
|
|
64
|
+
export interface ContentTooLargeBody {
|
|
65
|
+
readonly error: 'content_too_large';
|
|
66
|
+
/** The route's limit, in bytes. */
|
|
67
|
+
readonly limit: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* A request body larger than its route's `bodyLimit`: what reading it
|
|
71
|
+
* throws, as soon as its `Content-Length` or the bytes counted pass the
|
|
72
|
+
* limit. It is answered as a `body_limit` refusal: by the route's
|
|
73
|
+
* `onRefusal` hook, or with its 413. The `onError` hooks never see it.
|
|
74
|
+
*/
|
|
75
|
+
export declare class ContentTooLargeError extends HttpError<413, ContentTooLargeBody> {
|
|
76
|
+
readonly name = "ContentTooLargeError";
|
|
77
|
+
/** The route's limit, in bytes. */
|
|
78
|
+
readonly limit: number;
|
|
79
|
+
constructor(limit: number);
|
|
80
|
+
}
|
|
35
81
|
/**
|
|
36
82
|
* A reply that did not match the schema its route declares for its status.
|
|
37
83
|
* It is answered as a 500: the client must never read an undeclared shape.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GACzB,QAAQ,GACR,OAAO,GACP,SAAS,GACT,SAAS,GACT,MAAM,GACN,SAAS,CAAC;AAEb,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;CAC5C;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;CACxE;AAED;;;;;;GAMG;AACH,qBAAa,SAAS,CACrB,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,IAAI,GAAG,OAAO,CACb,SAAQ,KAAK;IACd,SAAkB,IAAI,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GACzB,QAAQ,GACR,OAAO,GACP,SAAS,GACT,SAAS,GACT,MAAM,GACN,SAAS,CAAC;AAEb,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,oFAAoF;AACpF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;CAC5C;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAE3D,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;CAC5C;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;CACxE;AAED;;;;;;GAMG;AACH,qBAAa,SAAS,CACrB,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,IAAI,GAAG,OAAO,CACb,SAAQ,KAAK;IACd,SAAkB,IAAI,EAAE,MAAM,CAAe;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;gBAER,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM;CAKxD;AAED,+EAA+E;AAC/E,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,SAAS,CAAC,GAAG,EAAE,mBAAmB,CAAC;IAC5E,SAAkB,IAAI,0BAA0B;IAChD,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,KAAK,EAAE,MAAM;CAQzB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,SAAkB,IAAI,6BAA6B;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;gBAG3C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,eAAe,EAAE;IAClC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM;IAcjB,6DAA6D;IAC7D,MAAM,CAAC,UAAU,CAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACZ,uBAAuB;CAgB1B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
export { Alxia, type AlxiaOptions, type AnyAlxia, alxia, type ContextOf, type ListenOptions, type Plugin, type RouteMethod, type RoutesOf, } from './app/alxia';
|
|
2
2
|
export { definePlugin } from './app/define-plugin';
|
|
3
|
-
export type { AroundHook, RequestHook, ResponseHook, RouteDefinition, SocketDefinition, StartHook, StopHook, } from './app/definition';
|
|
3
|
+
export type { AroundHook, RefusalHandler, RefusalHook, RequestHook, ResponseHook, RouteDefinition, SocketDefinition, StartHook, StopHook, } from './app/definition';
|
|
4
4
|
export type { OperationMethod, OperationSchema, RouteOperation, } from './app/route-operation';
|
|
5
|
-
export type { BaseContext, Context, DeclaredReply, Empty, HandlerResult, MaybePromise, Method, Outcome, OutcomeOf, ProvidedBy, RedirectFunction, RequestContext, RequiresOf, Requiring, ResponseSchemas, ResponseSettings, RouteDetail, RouteEntryOf, RouteInput, RouteOutput, RouteRecord, RouteSchema, RouteTable, TypedReplyFunction, TypedShortcuts, ValidSchema, } from './app/types';
|
|
6
|
-
export { HttpError, type InternalErrorBody, ResponseValidationError, type RoutingErrorBody, type ValidationErrorBody, type ValidationIssue, type ValidationTarget, } from './errors/errors';
|
|
5
|
+
export type { BaseContext, BehindShortcuts, BodyLimited, BodyLimitShortcut, Context, DeclaredRefusal, DeclaredReply, DefaultLimitOutcome, DefaultRefusalOutcome, Empty, FallsBack, HandlerResult, IsLimited, MaybePromise, Method, Outcome, OutcomeOf, ProvidedBy, RedirectFunction, RefusalOutcome, RefusalResponses, RefusalSchema, RefusalsOf, Refusing, RequestContext, RequiresOf, Requiring, ResponseSchemas, ResponseSettings, RouteDetail, RouteEntryOf, RouteInput, RouteOutput, RouteRecord, RouteSchema, RouteTable, ThenShortcuts, TypedReplyFunction, TypedShortcuts, ValidSchema, } from './app/types';
|
|
6
|
+
export { type BodyLimitRefusal, type ContentTooLargeBody, ContentTooLargeError, HttpError, type InternalErrorBody, type Refusal, type RequestPart, ResponseValidationError, type RoutingErrorBody, type ValidationErrorBody, type ValidationIssue, type ValidationRefusal, type ValidationTarget, } from './errors/errors';
|
|
7
7
|
export { vary, withHeaders } from './reply/headers';
|
|
8
|
+
export { type ProblemDetails, problem } from './reply/problem';
|
|
8
9
|
export { type AnyReply, type FreeReplyFunction, type FreeShortcuts, Reply, type ReplyInit, SHORTCUTS, type Shortcuts, } from './reply/reply';
|
|
9
10
|
export type { BodyParser } from './request/read';
|
|
10
11
|
export { joinPath, shapeOf } from './router/paths';
|
|
11
12
|
export type { InferInput, InferOutput, StandardIssue, StandardResult, StandardSchemaV1, } from './schema/standard-schema';
|
|
12
13
|
export { type Checked, check } from './schema/standard-schema';
|
|
13
14
|
export { type EventStreamSchema, eventStream, isEventStreamSchema, } from './sse/event-stream';
|
|
15
|
+
export { type EventFields, type EventInput, type EventOutput, type EventSchemas, isNamedEventStreamSchema, type NamedEventStreamSchema, } from './sse/named-events';
|
|
14
16
|
export { parseRange } from './static/conditional';
|
|
15
17
|
export type { FileNotFoundBody, FileOptions, FileSource, Precompressed, RangeNotSatisfiableBody, StaticOptions, StaticReply, } from './static/types';
|
|
16
18
|
export type { Jsonify, Simplify } from './types/json';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,EACL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,QAAQ,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,QAAQ,GACR,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,eAAe,EACf,eAAe,EACf,cAAc,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,WAAW,EACX,OAAO,EACP,aAAa,EACb,KAAK,EACL,aAAa,EACb,YAAY,EACZ,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,WAAW,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,SAAS,EACT,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,EACL,KAAK,SAAS,EACd,SAAS,EACT,KAAK,SAAS,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACN,KAAK,iBAAiB,EACtB,WAAW,EACX,mBAAmB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EACX,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,WAAW,GACX,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EACX,QAAQ,EACR,aAAa,EACb,UAAU,EACV,SAAS,GACT,MAAM,cAAc,CAAC;AACtB,YAAY,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,aAAa,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,MAAM,EACN,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,GACV,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|