-
Notifications
You must be signed in to change notification settings - Fork 317
Expand file tree
/
Copy pathtypes.ts
More file actions
88 lines (76 loc) · 2.15 KB
/
types.ts
File metadata and controls
88 lines (76 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import type { QueryObject } from "ufo";
import type { H3Event } from "./event";
import type { Session } from "./utils/session";
import type { RouteNode } from "./router";
export type {
ValidateFunction,
ValidateResult,
} from "./utils/internal/validate";
// https://www.rfc-editor.org/rfc/rfc7231#section-4.1
export type HTTPMethod =
| "GET"
| "HEAD"
| "PATCH"
| "POST"
| "PUT"
| "DELETE"
| "CONNECT"
| "OPTIONS"
| "TRACE";
export type Encoding =
| false
| "ascii"
| "utf8"
| "utf-8" // eslint-disable-line unicorn/text-encoding-identifier-case
| "utf16le"
| "ucs2"
| "ucs-2"
| "base64"
| "latin1"
| "binary"
| "hex";
export interface H3EventContext extends Record<string, any> {
/* Matched router parameters */
params?: Record<string, string>;
/**
* Matched router Node
*
* @experimental The object structure may change in non-major version.
*/
matchedRoute?: RouteNode;
/* Cached session data */
sessions?: Record<string, Session>;
/* Trusted IP Address of client */
clientAddress?: string;
}
export type EventHandlerResponse<T = any> = T | Promise<T>;
export interface EventHandlerRequest {
// TODO: Default to unknown in next major version
body?: any;
query?: QueryObject;
}
export type InferEventInput<
Key extends keyof EventHandlerRequest,
Event extends H3Event,
T,
> = void extends T ? (Event extends H3Event<infer E> ? E[Key] : never) : T;
export interface EventHandler<
Request extends EventHandlerRequest = EventHandlerRequest,
Response extends EventHandlerResponse = EventHandlerResponse,
> {
__is_handler__?: true;
(event: H3Event<Request>): Response;
}
export type EventHandlerObject<
Request extends EventHandlerRequest = EventHandlerRequest,
Response extends EventHandlerResponse = EventHandlerResponse,
> = {
handler: EventHandler<Request, Response>;
before?: ((event: H3Event<Request>) => void | Promise<void>)[];
after?: ((
event: H3Event<Request>,
response: { body?: Response },
) => void | Promise<void>)[];
};
export type LazyEventHandler = () => EventHandler | Promise<EventHandler>;
export type RequestHeaders = { [name: string]: string | undefined };