spiceflow 0.0.6 → 1.0.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.
- package/README.md +1 -171
- package/dist/client/errors.d.ts +7 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +18 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +14 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +376 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +87 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/utils.d.ts +2 -0
- package/dist/client/utils.d.ts.map +1 -0
- package/dist/client/utils.js +9 -0
- package/dist/client/utils.js.map +1 -0
- package/dist/client/ws.d.ts +15 -0
- package/dist/client/ws.d.ts.map +1 -0
- package/dist/client/ws.js +51 -0
- package/dist/client/ws.js.map +1 -0
- package/dist/client.test.d.ts +2 -0
- package/dist/client.test.d.ts.map +1 -0
- package/dist/client.test.js +237 -0
- package/dist/client.test.js.map +1 -0
- package/dist/elysia-fork/context.d.ts +87 -0
- package/dist/elysia-fork/context.d.ts.map +1 -0
- package/dist/elysia-fork/context.js +2 -0
- package/dist/elysia-fork/context.js.map +1 -0
- package/dist/elysia-fork/error.d.ts +246 -0
- package/dist/elysia-fork/error.d.ts.map +1 -0
- package/dist/elysia-fork/error.js +195 -0
- package/dist/elysia-fork/error.js.map +1 -0
- package/dist/elysia-fork/types.d.ts +652 -0
- package/dist/elysia-fork/types.d.ts.map +1 -0
- package/dist/elysia-fork/types.js +3 -0
- package/dist/elysia-fork/types.js.map +1 -0
- package/dist/elysia-fork/utils.d.ts +134 -0
- package/dist/elysia-fork/utils.d.ts.map +1 -0
- package/dist/elysia-fork/utils.js +70 -0
- package/dist/elysia-fork/utils.js.map +1 -0
- package/dist/spiceflow.d.ts +253 -0
- package/dist/spiceflow.d.ts.map +1 -0
- package/dist/spiceflow.js +500 -0
- package/dist/spiceflow.js.map +1 -0
- package/dist/spiceflow.test.d.ts +2 -0
- package/dist/spiceflow.test.d.ts.map +1 -0
- package/dist/spiceflow.test.js +225 -0
- package/dist/spiceflow.test.js.map +1 -0
- package/dist/stream.test.d.ts +2 -0
- package/dist/stream.test.d.ts.map +1 -0
- package/dist/stream.test.js +286 -0
- package/dist/stream.test.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +4 -20
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +17 -46
- package/dist/utils.js.map +1 -1
- package/package.json +12 -36
- package/src/client/errors.ts +21 -0
- package/src/client/index.ts +539 -0
- package/src/client/types.ts +233 -0
- package/src/client/utils.ts +7 -0
- package/src/client/ws.ts +99 -0
- package/src/client.test.ts +235 -0
- package/src/elysia-fork/context.ts +196 -0
- package/src/elysia-fork/error.ts +293 -0
- package/src/elysia-fork/types.ts +1454 -0
- package/src/elysia-fork/utils.ts +85 -0
- package/src/spiceflow.test.ts +290 -0
- package/src/spiceflow.ts +1266 -0
- package/src/stream.test.ts +342 -0
- package/src/types.ts +0 -0
- package/src/utils.ts +21 -70
- package/context.d.ts +0 -2
- package/context.js +0 -1
- package/dist/babel.test.d.ts +0 -2
- package/dist/babel.test.d.ts.map +0 -1
- package/dist/babel.test.js +0 -27
- package/dist/babel.test.js.map +0 -1
- package/dist/babelDebugOutputs.d.ts +0 -9
- package/dist/babelDebugOutputs.d.ts.map +0 -1
- package/dist/babelDebugOutputs.js +0 -34
- package/dist/babelDebugOutputs.js.map +0 -1
- package/dist/babelTransformRpc.d.ts +0 -19
- package/dist/babelTransformRpc.d.ts.map +0 -1
- package/dist/babelTransformRpc.js +0 -285
- package/dist/babelTransformRpc.js.map +0 -1
- package/dist/browser.d.ts +0 -8
- package/dist/browser.d.ts.map +0 -1
- package/dist/browser.js +0 -126
- package/dist/browser.js.map +0 -1
- package/dist/build.d.ts +0 -13
- package/dist/build.d.ts.map +0 -1
- package/dist/build.js +0 -230
- package/dist/build.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -111
- package/dist/cli.js.map +0 -1
- package/dist/context-internal.d.ts +0 -20
- package/dist/context-internal.d.ts.map +0 -1
- package/dist/context-internal.js +0 -16
- package/dist/context-internal.js.map +0 -1
- package/dist/context.d.ts +0 -2
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -2
- package/dist/context.js.map +0 -1
- package/dist/expose.d.ts +0 -6
- package/dist/expose.d.ts.map +0 -1
- package/dist/expose.js +0 -32
- package/dist/expose.js.map +0 -1
- package/dist/headers.d.ts +0 -2
- package/dist/headers.d.ts.map +0 -1
- package/dist/headers.js +0 -18
- package/dist/headers.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -23
- package/dist/index.js.map +0 -1
- package/dist/jsonRpc.d.ts +0 -32
- package/dist/jsonRpc.d.ts.map +0 -1
- package/dist/jsonRpc.js +0 -3
- package/dist/jsonRpc.js.map +0 -1
- package/dist/server.d.ts +0 -32
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -292
- package/dist/server.js.map +0 -1
- package/headers.d.ts +0 -2
- package/headers.js +0 -1
- package/sdk-template/package.json +0 -22
- package/sdk-template/src/index.ts +0 -2
- package/sdk-template/src/v1/example.ts +0 -5
- package/sdk-template/src/v1/generator.ts +0 -12
- package/sdk-template/tsconfig.json +0 -16
- package/src/babel.test.ts +0 -35
- package/src/babelDebugOutputs.ts +0 -56
- package/src/babelTransformRpc.ts +0 -394
- package/src/browser.ts +0 -141
- package/src/build.ts +0 -298
- package/src/cli.ts +0 -132
- package/src/context-internal.ts +0 -36
- package/src/context.ts +0 -5
- package/src/expose.ts +0 -34
- package/src/headers.ts +0 -19
- package/src/index.ts +0 -34
- package/src/jsonRpc.ts +0 -43
- package/src/server.ts +0 -384
|
@@ -0,0 +1,652 @@
|
|
|
1
|
+
/// <reference types="bun-types" />
|
|
2
|
+
/// <reference types="bun-types" />
|
|
3
|
+
import type { BunFile, Server } from 'bun';
|
|
4
|
+
import type { TSchema, Static, TAnySchema, StaticDecode, OptionalKind } from '@sinclair/typebox';
|
|
5
|
+
import type { TypeCheck, ValueError } from '@sinclair/typebox/compiler';
|
|
6
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
7
|
+
import type { Context, ErrorContext, PreContext } from './context';
|
|
8
|
+
import { ELYSIA_RESPONSE, InternalServerError, InvalidCookieSignature, NotFoundError, ParseError, ValidationError } from './error';
|
|
9
|
+
import { Elysia } from '../spiceflow';
|
|
10
|
+
export type ElysiaConfig<Prefix extends string | undefined, Scoped extends boolean | undefined> = {
|
|
11
|
+
/**
|
|
12
|
+
* Path prefix of the instance
|
|
13
|
+
*
|
|
14
|
+
* @default '''
|
|
15
|
+
*/
|
|
16
|
+
prefix?: Prefix;
|
|
17
|
+
/**
|
|
18
|
+
* If set to true, other Elysia handler will not inherits global life-cycle, store, decorators from the current instance
|
|
19
|
+
*
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
scoped?: Scoped;
|
|
23
|
+
/**
|
|
24
|
+
* Name of the instance for debugging, and plugin deduplication purpose
|
|
25
|
+
*/
|
|
26
|
+
name?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Seed for generating checksum for plugin deduplication
|
|
29
|
+
*
|
|
30
|
+
* @see https://elysiajs.com/essential/plugin.html#plugin-deduplication
|
|
31
|
+
*/
|
|
32
|
+
seed?: unknown;
|
|
33
|
+
/**
|
|
34
|
+
* OpenAPI documentation (use in Swagger)
|
|
35
|
+
*
|
|
36
|
+
* @see https://swagger.io/specification/
|
|
37
|
+
*/
|
|
38
|
+
detail?: DocumentDecoration;
|
|
39
|
+
/**
|
|
40
|
+
* OpenAPI tags
|
|
41
|
+
*
|
|
42
|
+
* current instance' routes with tags
|
|
43
|
+
*
|
|
44
|
+
* @see https://swagger.io/specification/#tag-object
|
|
45
|
+
*/
|
|
46
|
+
tags?: DocumentDecoration['tags'];
|
|
47
|
+
/**
|
|
48
|
+
* Warm up Elysia before starting the server
|
|
49
|
+
*
|
|
50
|
+
* This will perform Ahead of Time compilation and generate code for route handlers
|
|
51
|
+
*
|
|
52
|
+
* If set to false, Elysia will perform Just in Time compilation
|
|
53
|
+
*
|
|
54
|
+
* Only required for root instance (instance which use listen) to effect
|
|
55
|
+
*
|
|
56
|
+
* ! If performing a benchmark, it's recommended to set this to `true`
|
|
57
|
+
*
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
60
|
+
precompile?: boolean | {
|
|
61
|
+
/**
|
|
62
|
+
* Perform dynamic code generation for route handlers before starting the server
|
|
63
|
+
*
|
|
64
|
+
* @default false
|
|
65
|
+
*/
|
|
66
|
+
compose?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Perform Ahead of Time compilation for schema before starting the server
|
|
69
|
+
*
|
|
70
|
+
* @default false
|
|
71
|
+
*/
|
|
72
|
+
schema?: boolean;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Capture more detail information for each dependencies
|
|
76
|
+
*/
|
|
77
|
+
analytic?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Enable experimental features
|
|
80
|
+
*/
|
|
81
|
+
experimental?: {};
|
|
82
|
+
/**
|
|
83
|
+
* If enabled, the handlers will run a [clean](https://github.com/sinclairzx81/typebox?tab=readme-ov-file#clean) on incoming and outgoing bodies instead of failing directly.
|
|
84
|
+
* This allows for sending unknown or disallowed properties in the bodies. These will simply be filtered out instead of failing the request.
|
|
85
|
+
* This has no effect when the schemas allow additional properties.
|
|
86
|
+
* Since this uses dynamic schema it may have an impact on performance.
|
|
87
|
+
*
|
|
88
|
+
* @default false
|
|
89
|
+
*/
|
|
90
|
+
normalize?: boolean;
|
|
91
|
+
};
|
|
92
|
+
export type MaybeArray<T> = T | T[];
|
|
93
|
+
export type MaybePromise<T> = T | Promise<T>;
|
|
94
|
+
export type ObjectValues<T extends object> = T[keyof T];
|
|
95
|
+
type IsPathParameter<Part extends string> = Part extends `:${infer Parameter}` ? Parameter : Part extends `*` ? '*' : never;
|
|
96
|
+
export type GetPathParameter<Path extends string> = Path extends `${infer A}/${infer B}` ? IsPathParameter<A> | GetPathParameter<B> : IsPathParameter<Path>;
|
|
97
|
+
export type ResolvePath<Path extends string> = Prettify<{
|
|
98
|
+
[Param in GetPathParameter<Path> as Param extends `${string}?` ? never : Param]: string;
|
|
99
|
+
} & {
|
|
100
|
+
[Param in GetPathParameter<Path> as Param extends `${infer OptionalParam}?` ? OptionalParam : never]?: string;
|
|
101
|
+
}>;
|
|
102
|
+
export type Prettify<T> = {
|
|
103
|
+
[K in keyof T]: T[K];
|
|
104
|
+
} & {};
|
|
105
|
+
export type Prettify2<T> = {
|
|
106
|
+
[K in keyof T]: Prettify<T[K]>;
|
|
107
|
+
} & {};
|
|
108
|
+
export type Partial2<T> = {
|
|
109
|
+
[K in keyof T]?: Partial<T[K]>;
|
|
110
|
+
};
|
|
111
|
+
export type NeverKey<T> = {
|
|
112
|
+
[K in keyof T]?: T[K];
|
|
113
|
+
} & {};
|
|
114
|
+
type IsBothObject<A, B> = A extends Record<string | number | symbol, unknown> ? B extends Record<string | number | symbol, unknown> ? IsClass<A> extends false ? IsClass<B> extends false ? true : false : false : false : false;
|
|
115
|
+
type IsClass<V> = V extends abstract new (...args: any) => any ? true : false;
|
|
116
|
+
export type Reconcile<A extends Object, B extends Object, Override extends boolean = false, Stack extends number[] = []> = Stack['length'] extends 16 ? A : Override extends true ? {
|
|
117
|
+
[key in keyof A as key extends keyof B ? never : key]: A[key];
|
|
118
|
+
} extends infer Collision ? {} extends Collision ? {
|
|
119
|
+
[key in keyof B]: IsBothObject<A[key], B[key]> extends true ? Reconcile<A[key], B[key], Override, [
|
|
120
|
+
0,
|
|
121
|
+
...Stack
|
|
122
|
+
]> : B[key];
|
|
123
|
+
} : Prettify<Collision & {
|
|
124
|
+
[key in keyof B]: B[key];
|
|
125
|
+
}> : never : {
|
|
126
|
+
[key in keyof B as key extends keyof A ? never : key]: B[key];
|
|
127
|
+
} extends infer Collision ? {} extends Collision ? {
|
|
128
|
+
[key in keyof A]: IsBothObject<A[key], B[key]> extends true ? Reconcile<A[key], B[key], Override, [
|
|
129
|
+
0,
|
|
130
|
+
...Stack
|
|
131
|
+
]> : A[key];
|
|
132
|
+
} : Prettify<{
|
|
133
|
+
[key in keyof A]: A[key];
|
|
134
|
+
} & Collision> : never;
|
|
135
|
+
export interface SingletonBase {
|
|
136
|
+
decorator: Record<string, unknown>;
|
|
137
|
+
store: Record<string, unknown>;
|
|
138
|
+
derive: Record<string, unknown>;
|
|
139
|
+
resolve: Record<string, unknown>;
|
|
140
|
+
}
|
|
141
|
+
export interface EphemeralType {
|
|
142
|
+
derive: SingletonBase['derive'];
|
|
143
|
+
resolve: SingletonBase['resolve'];
|
|
144
|
+
schema: MetadataBase['schema'];
|
|
145
|
+
}
|
|
146
|
+
export interface DefinitionBase {
|
|
147
|
+
type: Record<string, unknown>;
|
|
148
|
+
error: Record<string, Error>;
|
|
149
|
+
}
|
|
150
|
+
export type RouteBase = Record<string, unknown>;
|
|
151
|
+
export interface MetadataBase {
|
|
152
|
+
schema: RouteSchema;
|
|
153
|
+
macro: BaseMacro;
|
|
154
|
+
macroFn: BaseMacroFn;
|
|
155
|
+
}
|
|
156
|
+
export interface RouteSchema {
|
|
157
|
+
body?: unknown;
|
|
158
|
+
headers?: unknown;
|
|
159
|
+
query?: unknown;
|
|
160
|
+
params?: unknown;
|
|
161
|
+
cookie?: unknown;
|
|
162
|
+
response?: unknown;
|
|
163
|
+
}
|
|
164
|
+
type OptionalField = {
|
|
165
|
+
[OptionalKind]: 'Optional';
|
|
166
|
+
};
|
|
167
|
+
export type UnwrapSchema<Schema extends TSchema | string | undefined, Definitions extends Record<string, unknown> = {}> = undefined extends Schema ? unknown : Schema extends TSchema ? Schema extends OptionalField ? Prettify<Partial<Static<Schema>>> : StaticDecode<Schema> : Schema extends string ? Definitions extends Record<Schema, infer NamedSchema> ? NamedSchema : Definitions : unknown;
|
|
168
|
+
export type UnwrapBodySchema<Schema extends TSchema | string | undefined, Definitions extends Record<string, unknown> = {}> = undefined extends Schema ? unknown : Schema extends TSchema ? Schema extends OptionalField ? Prettify<Partial<Static<Schema>>> | null : StaticDecode<Schema> : Schema extends string ? Definitions extends Record<Schema, infer NamedSchema> ? NamedSchema : Definitions : unknown;
|
|
169
|
+
export interface UnwrapRoute<in out Schema extends InputSchema<any>, in out Definitions extends DefinitionBase['type'] = {}> {
|
|
170
|
+
body: UnwrapBodySchema<Schema['body'], Definitions>;
|
|
171
|
+
response: Schema['response'] extends TSchema | string ? {
|
|
172
|
+
200: CoExist<UnwrapSchema<Schema['response'], Definitions>, File, BunFile>;
|
|
173
|
+
} : Schema['response'] extends Record<number, TAnySchema | string> ? {
|
|
174
|
+
[k in keyof Schema['response']]: CoExist<UnwrapSchema<Schema['response'][k], Definitions>, File, BunFile>;
|
|
175
|
+
} : unknown | void;
|
|
176
|
+
}
|
|
177
|
+
export type HookContainer<T extends Function = Function> = {
|
|
178
|
+
checksum?: number;
|
|
179
|
+
scope?: LifeCycleType;
|
|
180
|
+
subType?: 'derive' | 'resolve' | 'mapDerive' | 'mapResolve' | (string & {});
|
|
181
|
+
fn: T;
|
|
182
|
+
};
|
|
183
|
+
export interface LifeCycleStore {
|
|
184
|
+
type?: ContentType;
|
|
185
|
+
start: HookContainer<GracefulHandler<any>>[];
|
|
186
|
+
request: HookContainer<PreHandler<any, any>>[];
|
|
187
|
+
parse: HookContainer<BodyHandler<any, any>>[];
|
|
188
|
+
transform: HookContainer<TransformHandler<any, any>>[];
|
|
189
|
+
beforeHandle: HookContainer<OptionalHandler<any, any>>[];
|
|
190
|
+
afterHandle: HookContainer<AfterHandler<any, any>>[];
|
|
191
|
+
mapResponse: HookContainer<MapResponse<any, any>>[];
|
|
192
|
+
afterResponse: HookContainer<AfterResponseHandler<any, any>>[];
|
|
193
|
+
error: HookContainer<ErrorHandler<any, any, any>>[];
|
|
194
|
+
stop: HookContainer<GracefulHandler<any>>[];
|
|
195
|
+
}
|
|
196
|
+
export type LifeCycleEvent = 'start' | 'request' | 'parse' | 'transform' | 'beforeHandle' | 'afterHandle' | 'response' | 'error' | 'stop';
|
|
197
|
+
export type ContentType = MaybeArray<(string & {}) | 'none' | 'text' | 'json' | 'formdata' | 'urlencoded' | 'arrayBuffer' | 'text/plain' | 'application/json' | 'multipart/form-data' | 'application/x-www-form-urlencoded'>;
|
|
198
|
+
export type HTTPMethod = (string & {}) | 'ACL' | 'BIND' | 'CHECKOUT' | 'CONNECT' | 'COPY' | 'DELETE' | 'GET' | 'HEAD' | 'LINK' | 'LOCK' | 'M-SEARCH' | 'MERGE' | 'MKACTIVITY' | 'MKCALENDAR' | 'MKCOL' | 'MOVE' | 'NOTIFY' | 'OPTIONS' | 'PATCH' | 'POST' | 'PROPFIND' | 'PROPPATCH' | 'PURGE' | 'PUT' | 'REBIND' | 'REPORT' | 'SEARCH' | 'SOURCE' | 'SUBSCRIBE' | 'TRACE' | 'UNBIND' | 'UNLINK' | 'UNLOCK' | 'UNSUBSCRIBE' | 'ALL';
|
|
199
|
+
export interface InputSchema<Name extends string = string> {
|
|
200
|
+
body?: TSchema | Name;
|
|
201
|
+
response?: TSchema | Record<number, TSchema> | Name | Record<number, Name | TSchema>;
|
|
202
|
+
}
|
|
203
|
+
export interface MergeSchema<in out A extends RouteSchema, in out B extends RouteSchema> {
|
|
204
|
+
body: undefined extends A['body'] ? B['body'] : A['body'];
|
|
205
|
+
headers: undefined extends A['headers'] ? B['headers'] : A['headers'];
|
|
206
|
+
query: undefined extends A['query'] ? B['query'] : A['query'];
|
|
207
|
+
params: undefined extends A['params'] ? B['params'] : A['params'];
|
|
208
|
+
cookie: undefined extends A['cookie'] ? B['cookie'] : A['cookie'];
|
|
209
|
+
response: {} extends A['response'] ? {} extends B['response'] ? {} : B['response'] : {} extends B['response'] ? A['response'] : A['response'] & Omit<B['response'], keyof A['response']>;
|
|
210
|
+
}
|
|
211
|
+
export type Handler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
212
|
+
decorator: {};
|
|
213
|
+
store: {};
|
|
214
|
+
derive: {};
|
|
215
|
+
resolve: {};
|
|
216
|
+
}, Path extends string = ''> = (context: Context<Route, Singleton, Path>) => MaybePromise<{} extends Route['response'] ? unknown : Route['response'][keyof Route['response']]>;
|
|
217
|
+
export type Replace<Original, Target, With> = IsAny<Target> extends true ? Original : Original extends Record<string, unknown> ? {
|
|
218
|
+
[K in keyof Original]: Original[K] extends Target ? With : Original[K];
|
|
219
|
+
} : Original extends Target ? With : Original;
|
|
220
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
221
|
+
export type CoExist<Original, Target, With> = IsAny<Target> extends true ? Original : Original extends Record<string, unknown> ? {
|
|
222
|
+
[K in keyof Original]: Original[K] extends Target ? Original[K] | With : Original[K];
|
|
223
|
+
} : Original extends Target ? Original | With : Original;
|
|
224
|
+
export type InlineHandler<Route extends RouteSchema = {}, Singleton extends SingletonBase = {
|
|
225
|
+
decorator: {};
|
|
226
|
+
store: {};
|
|
227
|
+
derive: {};
|
|
228
|
+
resolve: {};
|
|
229
|
+
}, Path extends string = '', MacroContext = {}> = ((context: MacroContext extends Record<string | number | symbol, unknown> ? Prettify<MacroContext & Context<Route, Singleton, Path>> : Context<Route, Singleton, Path>) => Response | MaybePromise<{} extends Route['response'] ? unknown : (Route['response'] extends {
|
|
230
|
+
200: any;
|
|
231
|
+
} ? Route['response'] : string | number | boolean | Object) | Route['response'][keyof Route['response']] | {
|
|
232
|
+
[Status in keyof Route['response']]: {
|
|
233
|
+
_type: Record<Status, Route['response'][Status]>;
|
|
234
|
+
[ELYSIA_RESPONSE]: Status;
|
|
235
|
+
};
|
|
236
|
+
}[keyof Route['response']]>) | ({} extends Route['response'] ? string | number | boolean | Object : (Route['response'] extends {
|
|
237
|
+
200: any;
|
|
238
|
+
} ? Route['response'] : string | number | boolean | Object) | Route['response'][keyof Route['response']] | {
|
|
239
|
+
[Status in keyof Route['response']]: {
|
|
240
|
+
_type: Record<Status, Route['response'][Status]>;
|
|
241
|
+
[ELYSIA_RESPONSE]: Status;
|
|
242
|
+
};
|
|
243
|
+
}[keyof Route['response']]);
|
|
244
|
+
export type OptionalHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
245
|
+
decorator: {};
|
|
246
|
+
store: {};
|
|
247
|
+
derive: {};
|
|
248
|
+
resolve: {};
|
|
249
|
+
}, Path extends string = ''> = Handler<Route, Singleton, Path> extends (context: infer Context) => infer Returned ? (context: Context) => Returned | MaybePromise<void> : never;
|
|
250
|
+
export type AfterHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
251
|
+
decorator: {};
|
|
252
|
+
store: {};
|
|
253
|
+
derive: {};
|
|
254
|
+
resolve: {};
|
|
255
|
+
}, Path extends string = ''> = Handler<Route, Singleton, Path> extends (context: infer Context) => infer Returned ? (context: Prettify<{
|
|
256
|
+
response: Route['response'];
|
|
257
|
+
} & Context>) => Returned | MaybePromise<void> : never;
|
|
258
|
+
export type MapResponse<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
259
|
+
decorator: {};
|
|
260
|
+
store: {};
|
|
261
|
+
derive: {};
|
|
262
|
+
resolve: {};
|
|
263
|
+
}, Path extends string = ''> = Handler<Omit<Route, 'response'> & {
|
|
264
|
+
response: MaybePromise<Response | undefined | unknown>;
|
|
265
|
+
}, Singleton & {
|
|
266
|
+
derive: {
|
|
267
|
+
response: Route['response'];
|
|
268
|
+
};
|
|
269
|
+
}, Path>;
|
|
270
|
+
export type VoidHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
271
|
+
decorator: {};
|
|
272
|
+
store: {};
|
|
273
|
+
derive: {};
|
|
274
|
+
resolve: {};
|
|
275
|
+
}> = (context: Context<Route, Singleton>) => MaybePromise<void>;
|
|
276
|
+
export type TransformHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
277
|
+
decorator: {};
|
|
278
|
+
store: {};
|
|
279
|
+
derive: {};
|
|
280
|
+
resolve: {};
|
|
281
|
+
}, BasePath extends string = ''> = {
|
|
282
|
+
(context: Prettify<Context<Route, Omit<Singleton, 'resolve'> & {
|
|
283
|
+
resolve: {};
|
|
284
|
+
}, BasePath>>): MaybePromise<void>;
|
|
285
|
+
};
|
|
286
|
+
export type BodyHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
287
|
+
decorator: {};
|
|
288
|
+
store: {};
|
|
289
|
+
derive: {};
|
|
290
|
+
resolve: {};
|
|
291
|
+
}, Path extends string = ''> = (context: Prettify<{
|
|
292
|
+
contentType: string;
|
|
293
|
+
} & Context<Route, Singleton, Path>>,
|
|
294
|
+
/**
|
|
295
|
+
* @deprecated
|
|
296
|
+
*
|
|
297
|
+
* use `context.contentType` instead
|
|
298
|
+
*
|
|
299
|
+
* @example
|
|
300
|
+
* ```ts
|
|
301
|
+
* new Elysia()
|
|
302
|
+
* .onParse(({ contentType, request }) => {
|
|
303
|
+
* if (contentType === 'application/json')
|
|
304
|
+
* return request.json()
|
|
305
|
+
* })
|
|
306
|
+
* ```
|
|
307
|
+
*/
|
|
308
|
+
contentType: string) => MaybePromise<any>;
|
|
309
|
+
export type PreHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
310
|
+
decorator: {};
|
|
311
|
+
store: {};
|
|
312
|
+
derive: {};
|
|
313
|
+
resolve: {};
|
|
314
|
+
}> = (context: PreContext<Singleton>) => MaybePromise<Route['response'] | void>;
|
|
315
|
+
export type AfterResponseHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
316
|
+
decorator: {};
|
|
317
|
+
store: {};
|
|
318
|
+
derive: {};
|
|
319
|
+
resolve: {};
|
|
320
|
+
}> = (context: Prettify<Context<Route, Singleton> & {
|
|
321
|
+
response: Route['response'];
|
|
322
|
+
}>) => MaybePromise<void>;
|
|
323
|
+
export type GracefulHandler<in Instance extends Elysia<any, any, any, any, any, any, any, any>> = (data: Instance) => any;
|
|
324
|
+
export type ErrorHandler<in out T extends Record<string, Error> = {}, in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
325
|
+
decorator: {};
|
|
326
|
+
store: {};
|
|
327
|
+
derive: {};
|
|
328
|
+
resolve: {};
|
|
329
|
+
}, in out Ephemeral extends EphemeralType = {
|
|
330
|
+
derive: {};
|
|
331
|
+
resolve: {};
|
|
332
|
+
schema: {};
|
|
333
|
+
}, in out Volatile extends EphemeralType = {
|
|
334
|
+
derive: {};
|
|
335
|
+
resolve: {};
|
|
336
|
+
schema: {};
|
|
337
|
+
}> = (context: ErrorContext<Route, {
|
|
338
|
+
store: Singleton['store'];
|
|
339
|
+
decorator: Singleton['decorator'];
|
|
340
|
+
derive: {};
|
|
341
|
+
resolve: {};
|
|
342
|
+
}> & (Prettify<{
|
|
343
|
+
request: Request;
|
|
344
|
+
code: 'UNKNOWN';
|
|
345
|
+
error: Readonly<Error>;
|
|
346
|
+
} & Partial<Singleton['derive'] & Ephemeral['derive'] & Volatile['derive']> & Partial<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
347
|
+
request: Request;
|
|
348
|
+
code: 'VALIDATION';
|
|
349
|
+
error: Readonly<ValidationError>;
|
|
350
|
+
} & Singleton['derive'] & Ephemeral['derive'] & Volatile['derive'] & NeverKey<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
351
|
+
request: Request;
|
|
352
|
+
code: 'NOT_FOUND';
|
|
353
|
+
error: Readonly<NotFoundError>;
|
|
354
|
+
} & NeverKey<Singleton['derive'] & Ephemeral['derive'] & Volatile['derive']> & NeverKey<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
355
|
+
request: Request;
|
|
356
|
+
code: 'PARSE';
|
|
357
|
+
error: Readonly<ParseError>;
|
|
358
|
+
} & Singleton['derive'] & Ephemeral['derive'] & Volatile['derive'] & NeverKey<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
359
|
+
request: Request;
|
|
360
|
+
code: 'INTERNAL_SERVER_ERROR';
|
|
361
|
+
error: Readonly<InternalServerError>;
|
|
362
|
+
} & Partial<Singleton['derive'] & Ephemeral['derive'] & Volatile['derive']> & Partial<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
363
|
+
request: Request;
|
|
364
|
+
code: 'INVALID_COOKIE_SIGNATURE';
|
|
365
|
+
error: Readonly<InvalidCookieSignature>;
|
|
366
|
+
} & NeverKey<Singleton['derive'] & Ephemeral['derive'] & Volatile['derive']> & NeverKey<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
367
|
+
[K in keyof T]: {
|
|
368
|
+
request: Request;
|
|
369
|
+
code: K;
|
|
370
|
+
error: Readonly<T[K]>;
|
|
371
|
+
};
|
|
372
|
+
}[keyof T] & Partial<Singleton['derive'] & Ephemeral['derive'] & Volatile['derive']> & Partial<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>>)) => any | Promise<any>;
|
|
373
|
+
export type Isolate<T> = {
|
|
374
|
+
[P in keyof T]: T[P];
|
|
375
|
+
};
|
|
376
|
+
export type DocumentDecoration = Partial<OpenAPIV3.OperationObject> & {
|
|
377
|
+
/**
|
|
378
|
+
* Pass `true` to hide route from OpenAPI/swagger document
|
|
379
|
+
* */
|
|
380
|
+
hide?: boolean;
|
|
381
|
+
};
|
|
382
|
+
export type LocalHook<LocalSchema extends InputSchema, Schema extends RouteSchema, Singleton extends SingletonBase, Errors extends Record<string, Error>, Extension extends BaseMacro, Path extends string = '', TypedRoute extends RouteSchema = Schema extends {
|
|
383
|
+
params: Record<string, unknown>;
|
|
384
|
+
} ? Schema : Schema & {
|
|
385
|
+
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
386
|
+
}> = (LocalSchema extends {} ? LocalSchema : Isolate<LocalSchema>) & Extension & {
|
|
387
|
+
/**
|
|
388
|
+
* Short for 'Content-Type'
|
|
389
|
+
*
|
|
390
|
+
* Available:
|
|
391
|
+
* - 'none': do not parse body
|
|
392
|
+
* - 'text' / 'text/plain': parse body as string
|
|
393
|
+
* - 'json' / 'application/json': parse body as json
|
|
394
|
+
* - 'formdata' / 'multipart/form-data': parse body as form-data
|
|
395
|
+
* - 'urlencoded' / 'application/x-www-form-urlencoded: parse body as urlencoded
|
|
396
|
+
* - 'arraybuffer': parse body as readable stream
|
|
397
|
+
*/
|
|
398
|
+
type?: ContentType;
|
|
399
|
+
detail?: DocumentDecoration;
|
|
400
|
+
};
|
|
401
|
+
export type ComposedHandler = (context: Context) => MaybePromise<Response>;
|
|
402
|
+
export interface InternalRoute {
|
|
403
|
+
method: HTTPMethod;
|
|
404
|
+
path: string;
|
|
405
|
+
composed: ComposedHandler | Response | null;
|
|
406
|
+
handler: Handler;
|
|
407
|
+
hooks: LocalHook<any, any, any, any, any, any, any>;
|
|
408
|
+
}
|
|
409
|
+
export type ListenCallback = (server: Server) => MaybePromise<void>;
|
|
410
|
+
export type AddPrefix<Prefix extends string, T> = {
|
|
411
|
+
[K in keyof T as Prefix extends string ? `${Prefix}${K & string}` : K]: T[K];
|
|
412
|
+
};
|
|
413
|
+
export type AddPrefixCapitalize<Prefix extends string, T> = {
|
|
414
|
+
[K in keyof T as `${Prefix}${Capitalize<K & string>}`]: T[K];
|
|
415
|
+
};
|
|
416
|
+
export type AddSuffix<Suffix extends string, T> = {
|
|
417
|
+
[K in keyof T as `${K & string}${Suffix}`]: T[K];
|
|
418
|
+
};
|
|
419
|
+
export type AddSuffixCapitalize<Suffix extends string, T> = {
|
|
420
|
+
[K in keyof T as `${K & string}${Capitalize<Suffix>}`]: T[K];
|
|
421
|
+
};
|
|
422
|
+
export type Checksum = {
|
|
423
|
+
name?: string;
|
|
424
|
+
seed?: unknown;
|
|
425
|
+
checksum: number;
|
|
426
|
+
stack?: string;
|
|
427
|
+
routes?: InternalRoute[];
|
|
428
|
+
decorators?: SingletonBase['decorator'];
|
|
429
|
+
store?: SingletonBase['store'];
|
|
430
|
+
type?: DefinitionBase['type'];
|
|
431
|
+
error?: DefinitionBase['error'];
|
|
432
|
+
dependencies?: Record<string, Checksum[]>;
|
|
433
|
+
derive?: {
|
|
434
|
+
fn: string;
|
|
435
|
+
stack: string;
|
|
436
|
+
}[];
|
|
437
|
+
resolve?: {
|
|
438
|
+
fn: string;
|
|
439
|
+
stack: string;
|
|
440
|
+
}[];
|
|
441
|
+
};
|
|
442
|
+
export type BaseMacro = Record<string, string | number | boolean | Object | undefined | null>;
|
|
443
|
+
export type BaseMacroFn = Record<string, (...a: any) => unknown>;
|
|
444
|
+
export type MacroToProperty<in out T extends BaseMacroFn> = Prettify<{
|
|
445
|
+
[K in keyof T]: T[K] extends Function ? T[K] extends (a: infer Params) => any ? Params | undefined : T[K] : T[K];
|
|
446
|
+
}>;
|
|
447
|
+
interface MacroOptions {
|
|
448
|
+
insert?: 'before' | 'after';
|
|
449
|
+
stack?: 'global' | 'local';
|
|
450
|
+
}
|
|
451
|
+
export interface MacroManager<in out TypedRoute extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
452
|
+
decorator: {};
|
|
453
|
+
store: {};
|
|
454
|
+
derive: {};
|
|
455
|
+
resolve: {};
|
|
456
|
+
}, in out Errors extends Record<string, Error> = {}> {
|
|
457
|
+
onParse(fn: MaybeArray<BodyHandler<TypedRoute, Singleton>>): unknown;
|
|
458
|
+
onParse(options: MacroOptions, fn: MaybeArray<BodyHandler<TypedRoute, Singleton>>): unknown;
|
|
459
|
+
onTransform(fn: MaybeArray<VoidHandler<TypedRoute, Singleton>>): unknown;
|
|
460
|
+
onTransform(options: MacroOptions, fn: MaybeArray<VoidHandler<TypedRoute, Singleton>>): unknown;
|
|
461
|
+
onBeforeHandle(fn: MaybeArray<OptionalHandler<TypedRoute, Singleton>>): unknown;
|
|
462
|
+
onBeforeHandle(options: MacroOptions, fn: MaybeArray<OptionalHandler<TypedRoute, Singleton>>): unknown;
|
|
463
|
+
onAfterHandle(fn: MaybeArray<AfterHandler<TypedRoute, Singleton>>): unknown;
|
|
464
|
+
onAfterHandle(options: MacroOptions, fn: MaybeArray<AfterHandler<TypedRoute, Singleton>>): unknown;
|
|
465
|
+
onError(fn: MaybeArray<ErrorHandler<Errors, TypedRoute, Singleton>>): unknown;
|
|
466
|
+
onError(options: MacroOptions, fn: MaybeArray<ErrorHandler<Errors, TypedRoute, Singleton>>): unknown;
|
|
467
|
+
mapResponse(fn: MaybeArray<MapResponse<TypedRoute, Singleton>>): unknown;
|
|
468
|
+
mapResponse(options: MacroOptions, fn: MaybeArray<MapResponse<TypedRoute, Singleton>>): unknown;
|
|
469
|
+
onAfterResponse(fn: MaybeArray<AfterResponseHandler<TypedRoute, Singleton>>): unknown;
|
|
470
|
+
onAfterResponse(options: MacroOptions, fn: MaybeArray<AfterResponseHandler<TypedRoute, Singleton>>): unknown;
|
|
471
|
+
events: {
|
|
472
|
+
global: Prettify<LifeCycleStore & RouteSchema>;
|
|
473
|
+
local: Prettify<LifeCycleStore & RouteSchema>;
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
export type MacroQueue = HookContainer<(manager: MacroManager<any, any, any>) => unknown>;
|
|
477
|
+
type _CreateEden<Path extends string, Property extends Record<string, unknown> = {}> = Path extends `${infer Start}/${infer Rest}` ? {
|
|
478
|
+
[x in Start]: _CreateEden<Rest, Property>;
|
|
479
|
+
} : {
|
|
480
|
+
[x in Path]: Property;
|
|
481
|
+
};
|
|
482
|
+
export type CreateEden<Path extends string, Property extends Record<string, unknown> = {}> = Path extends `/${infer Rest}` ? _CreateEden<Rest, Property> : Path extends '' ? _CreateEden<'index', Property> : _CreateEden<Path, Property>;
|
|
483
|
+
export type ComposeElysiaResponse<Response, Handle> = Handle extends (...a: any[]) => infer A ? _ComposeElysiaResponse<Response, Replace<Awaited<A>, BunFile, File>> : _ComposeElysiaResponse<Response, Replace<Awaited<Handle>, BunFile, File>>;
|
|
484
|
+
type _ComposeElysiaResponse<Response, Handle> = Prettify<{} extends Response ? {
|
|
485
|
+
200: Exclude<Handle, {
|
|
486
|
+
[ELYSIA_RESPONSE]: any;
|
|
487
|
+
}>;
|
|
488
|
+
} & {
|
|
489
|
+
[ErrorResponse in Extract<Handle, {
|
|
490
|
+
response: any;
|
|
491
|
+
}> as ErrorResponse extends {
|
|
492
|
+
[ELYSIA_RESPONSE]: infer Status extends number;
|
|
493
|
+
} ? Status : never]: ErrorResponse['response'];
|
|
494
|
+
} : Response>;
|
|
495
|
+
export type MergeElysiaInstances<Instances extends Elysia<any, any, any, any, any, any>[] = [], Prefix extends string = '', Scoped extends boolean = false, Singleton extends SingletonBase = {
|
|
496
|
+
decorator: {};
|
|
497
|
+
store: {};
|
|
498
|
+
derive: {};
|
|
499
|
+
resolve: {};
|
|
500
|
+
}, Definitions extends DefinitionBase = {
|
|
501
|
+
type: {};
|
|
502
|
+
error: {};
|
|
503
|
+
}, Metadata extends MetadataBase = {
|
|
504
|
+
schema: {};
|
|
505
|
+
macro: {};
|
|
506
|
+
macroFn: {};
|
|
507
|
+
}, Routes extends RouteBase = {}> = Instances extends [
|
|
508
|
+
infer Current extends Elysia<any, any, any, any, any, any>,
|
|
509
|
+
...infer Rest extends Elysia<any, any, any, any, any, any>[]
|
|
510
|
+
] ? Current['_types']['Scoped'] extends true ? MergeElysiaInstances<Rest, Prefix, Scoped, Singleton, Definitions, Metadata, Routes> : MergeElysiaInstances<Rest, Prefix, Scoped, Singleton & Current['_types']['Singleton'], Definitions & Current['_types']['Definitions'], Metadata & Current['_types']['Metadata'], Routes & (Prefix extends `` ? Current['_routes'] : AddPrefix<Prefix, Current['_routes']>)> : Elysia<Prefix, Scoped, {
|
|
511
|
+
decorator: Prettify<Singleton['decorator']>;
|
|
512
|
+
store: Prettify<Singleton['store']>;
|
|
513
|
+
derive: Prettify<Singleton['derive']>;
|
|
514
|
+
resolve: Prettify<Singleton['resolve']>;
|
|
515
|
+
}, {
|
|
516
|
+
type: Prettify<Definitions['type']>;
|
|
517
|
+
error: Prettify<Definitions['error']>;
|
|
518
|
+
}, {
|
|
519
|
+
schema: Prettify<Metadata['schema']>;
|
|
520
|
+
macro: Prettify<Metadata['macro']>;
|
|
521
|
+
macroFn: Prettify<Metadata['macroFn']>;
|
|
522
|
+
}, Routes>;
|
|
523
|
+
export type LifeCycleType = 'global' | 'local' | 'scoped';
|
|
524
|
+
export type ExcludeElysiaResponse<T> = Exclude<undefined extends Awaited<T> ? Partial<Awaited<T>> : Awaited<T>, {
|
|
525
|
+
[ELYSIA_RESPONSE]: any;
|
|
526
|
+
}>;
|
|
527
|
+
export type InferContext<T extends Elysia<any, any, any, any, any, any, any, any>, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = Context<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
|
|
528
|
+
derive: T['_ephemeral']['derive'] & T['_volatile']['derive'];
|
|
529
|
+
resolve: T['_ephemeral']['resolve'] & T['_volatile']['resolve'];
|
|
530
|
+
}, Path>;
|
|
531
|
+
export type InferHandler<T extends Elysia<any, any, any, any, any, any, any, any>, Path extends string = T['_types']['Prefix'], Schema extends RouteSchema = T['_types']['Metadata']['schema']> = InlineHandler<MergeSchema<Schema, T['_types']['Metadata']['schema']>, T['_types']['Singleton'] & {
|
|
532
|
+
derive: T['_ephemeral']['derive'] & T['_volatile']['derive'];
|
|
533
|
+
resolve: T['_ephemeral']['resolve'] & T['_volatile']['resolve'];
|
|
534
|
+
}, Path>;
|
|
535
|
+
export interface ModelValidatorError extends ValueError {
|
|
536
|
+
summary: string;
|
|
537
|
+
}
|
|
538
|
+
export interface ModelValidator<T> extends TypeCheck<T> {
|
|
539
|
+
parse(a: T): T;
|
|
540
|
+
safeParse(a: T): {
|
|
541
|
+
success: true;
|
|
542
|
+
data: T;
|
|
543
|
+
error: null;
|
|
544
|
+
} | {
|
|
545
|
+
success: true;
|
|
546
|
+
data: null;
|
|
547
|
+
error: string;
|
|
548
|
+
errors: ModelValidatorError[];
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
export type UnionToIntersect<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;
|
|
552
|
+
export type ResolveMacroContext<Macro extends BaseMacro, MacroFn extends BaseMacroFn> = UnionToIntersect<{
|
|
553
|
+
[K in keyof Macro]-?: undefined extends Macro[K] ? never : K extends keyof MacroFn ? ReturnType<MacroFn[K]> extends infer A extends Record<string | number | symbol, unknown> ? A : never : never;
|
|
554
|
+
}[keyof Macro]>;
|
|
555
|
+
export type ContextAppendType = 'append' | 'override';
|
|
556
|
+
export type HigherOrderFunction<T extends (...arg: unknown[]) => Function = (...arg: unknown[]) => Function> = (fn: T, request: Request) => ReturnType<T>;
|
|
557
|
+
export type HTTPHeaders = Record<string, string> & {
|
|
558
|
+
'www-authenticate'?: string;
|
|
559
|
+
authorization?: string;
|
|
560
|
+
'proxy-authenticate'?: string;
|
|
561
|
+
'proxy-authorization'?: string;
|
|
562
|
+
age?: string;
|
|
563
|
+
'cache-control'?: string;
|
|
564
|
+
'clear-site-data'?: string;
|
|
565
|
+
expires?: string;
|
|
566
|
+
'no-vary-search'?: string;
|
|
567
|
+
pragma?: string;
|
|
568
|
+
'last-modified'?: string;
|
|
569
|
+
etag?: string;
|
|
570
|
+
'if-match'?: string;
|
|
571
|
+
'if-none-match'?: string;
|
|
572
|
+
'if-modified-since'?: string;
|
|
573
|
+
'if-unmodified-since'?: string;
|
|
574
|
+
vary?: string;
|
|
575
|
+
connection?: string;
|
|
576
|
+
'keep-alive'?: string;
|
|
577
|
+
accept?: string;
|
|
578
|
+
'accept-encoding'?: string;
|
|
579
|
+
'accept-language'?: string;
|
|
580
|
+
expect?: string;
|
|
581
|
+
'max-forwards'?: string;
|
|
582
|
+
cookie?: string;
|
|
583
|
+
'set-cookie'?: string | string[];
|
|
584
|
+
'access-control-allow-origin'?: string;
|
|
585
|
+
'access-control-allow-credentials'?: string;
|
|
586
|
+
'access-control-allow-headers'?: string;
|
|
587
|
+
'access-control-allow-methods'?: string;
|
|
588
|
+
'access-control-expose-headers'?: string;
|
|
589
|
+
'access-control-max-age'?: string;
|
|
590
|
+
'access-control-request-headers'?: string;
|
|
591
|
+
'access-control-request-method'?: string;
|
|
592
|
+
origin?: string;
|
|
593
|
+
'timing-allow-origin'?: string;
|
|
594
|
+
'content-disposition'?: string;
|
|
595
|
+
'content-length'?: string;
|
|
596
|
+
'content-type'?: string;
|
|
597
|
+
'content-encoding'?: string;
|
|
598
|
+
'content-language'?: string;
|
|
599
|
+
'content-location'?: string;
|
|
600
|
+
forwarded?: string;
|
|
601
|
+
via?: string;
|
|
602
|
+
location?: string;
|
|
603
|
+
refresh?: string;
|
|
604
|
+
allow?: string;
|
|
605
|
+
server?: 'Elysia' | (string & {});
|
|
606
|
+
'accept-ranges'?: string;
|
|
607
|
+
range?: string;
|
|
608
|
+
'if-range'?: string;
|
|
609
|
+
'content-range'?: string;
|
|
610
|
+
'content-security-policy'?: string;
|
|
611
|
+
'content-security-policy-report-only'?: string;
|
|
612
|
+
'cross-origin-embedder-policy'?: string;
|
|
613
|
+
'cross-origin-opener-policy'?: string;
|
|
614
|
+
'cross-origin-resource-policy'?: string;
|
|
615
|
+
'expect-ct'?: string;
|
|
616
|
+
'permission-policy'?: string;
|
|
617
|
+
'strict-transport-security'?: string;
|
|
618
|
+
'upgrade-insecure-requests'?: string;
|
|
619
|
+
'x-content-type-options'?: string;
|
|
620
|
+
'x-frame-options'?: string;
|
|
621
|
+
'x-xss-protection'?: string;
|
|
622
|
+
'last-event-id'?: string;
|
|
623
|
+
'ping-from'?: string;
|
|
624
|
+
'ping-to'?: string;
|
|
625
|
+
'report-to'?: string;
|
|
626
|
+
te?: string;
|
|
627
|
+
trailer?: string;
|
|
628
|
+
'transfer-encoding'?: string;
|
|
629
|
+
'alt-svg'?: string;
|
|
630
|
+
'alt-used'?: string;
|
|
631
|
+
date?: string;
|
|
632
|
+
dnt?: string;
|
|
633
|
+
'early-data'?: string;
|
|
634
|
+
'large-allocation'?: string;
|
|
635
|
+
link?: string;
|
|
636
|
+
'retry-after'?: string;
|
|
637
|
+
'service-worker-allowed'?: string;
|
|
638
|
+
'source-map'?: string;
|
|
639
|
+
upgrade?: string;
|
|
640
|
+
'x-dns-prefetch-control'?: string;
|
|
641
|
+
'x-forwarded-for'?: string;
|
|
642
|
+
'x-forwarded-host'?: string;
|
|
643
|
+
'x-forwarded-proto'?: string;
|
|
644
|
+
'x-powered-by'?: 'Elysia' | (string & {});
|
|
645
|
+
'x-request-id'?: string;
|
|
646
|
+
'x-requested-with'?: string;
|
|
647
|
+
'x-robots-tag'?: string;
|
|
648
|
+
'x-ua-compatible'?: string;
|
|
649
|
+
};
|
|
650
|
+
export type JoinPath<A extends string, B extends string> = `${A}${B extends '/' ? '/index' : B extends '' ? B : B extends `/${string}` ? B : B}`;
|
|
651
|
+
export {};
|
|
652
|
+
//# sourceMappingURL=types.d.ts.map
|