spiceflow 1.0.8 → 1.1.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 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/types.d.ts +1 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/ws.d.ts +1 -1
- package/dist/client/ws.d.ts.map +1 -1
- package/dist/client.test.js +1 -18
- package/dist/client.test.js.map +1 -1
- package/dist/{elysia-fork/context.d.ts → context.d.ts} +8 -7
- package/dist/context.d.ts.map +1 -0
- package/dist/{elysia-fork/context.js.map → context.js.map} +1 -1
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware.test.d.ts +2 -0
- package/dist/middleware.test.d.ts.map +1 -0
- package/dist/middleware.test.js +99 -0
- package/dist/middleware.test.js.map +1 -0
- package/dist/openapi.d.ts +4 -15
- package/dist/openapi.d.ts.map +1 -1
- package/dist/spiceflow.d.ts +39 -120
- package/dist/spiceflow.d.ts.map +1 -1
- package/dist/spiceflow.js +128 -165
- package/dist/spiceflow.js.map +1 -1
- package/dist/spiceflow.test.js +54 -16
- package/dist/spiceflow.test.js.map +1 -1
- package/dist/types.d.ts +406 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +72 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +69 -0
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/client/index.ts +1 -3
- package/src/client/types.ts +6 -13
- package/src/client/ws.ts +1 -1
- package/src/client.test.ts +1 -19
- package/src/context.ts +128 -0
- package/src/index.ts +1 -2
- package/src/middleware.test.ts +107 -0
- package/src/openapi.ts +1 -1
- package/src/spiceflow.test.ts +74 -16
- package/src/spiceflow.ts +212 -385
- package/src/types.test.ts +1 -1
- package/src/types.ts +926 -0
- package/src/utils.ts +84 -0
- package/dist/elysia-fork/context.d.ts.map +0 -1
- package/dist/elysia-fork/error.d.ts.map +0 -1
- package/dist/elysia-fork/error.js.map +0 -1
- package/dist/elysia-fork/types.d.ts +0 -560
- package/dist/elysia-fork/types.d.ts.map +0 -1
- package/dist/elysia-fork/types.js +0 -2
- package/dist/elysia-fork/types.js.map +0 -1
- package/dist/elysia-fork/utils.d.ts +0 -73
- package/dist/elysia-fork/utils.d.ts.map +0 -1
- package/dist/elysia-fork/utils.js +0 -70
- package/dist/elysia-fork/utils.js.map +0 -1
- package/src/elysia-fork/context.ts +0 -166
- package/src/elysia-fork/types.ts +0 -1281
- package/src/elysia-fork/utils.ts +0 -85
- /package/dist/{elysia-fork/context.js → context.js} +0 -0
- /package/dist/{elysia-fork/error.d.ts → error.d.ts} +0 -0
- /package/dist/{elysia-fork/error.js → error.js} +0 -0
- /package/src/{elysia-fork/error.ts → error.ts} +0 -0
package/src/utils.ts
CHANGED
|
@@ -24,3 +24,87 @@ export function isAsyncIterable(obj: any): obj is AsyncGenerator<any> {
|
|
|
24
24
|
export function sleep(ms: number) {
|
|
25
25
|
return new Promise((resolve) => setTimeout(resolve, ms))
|
|
26
26
|
}
|
|
27
|
+
|
|
28
|
+
export const StatusMap = {
|
|
29
|
+
Continue: 100,
|
|
30
|
+
'Switching Protocols': 101,
|
|
31
|
+
Processing: 102,
|
|
32
|
+
'Early Hints': 103,
|
|
33
|
+
OK: 200,
|
|
34
|
+
Created: 201,
|
|
35
|
+
Accepted: 202,
|
|
36
|
+
'Non-Authoritative Information': 203,
|
|
37
|
+
'No Content': 204,
|
|
38
|
+
'Reset Content': 205,
|
|
39
|
+
'Partial Content': 206,
|
|
40
|
+
'Multi-Status': 207,
|
|
41
|
+
'Already Reported': 208,
|
|
42
|
+
'Multiple Choices': 300,
|
|
43
|
+
'Moved Permanently': 301,
|
|
44
|
+
Found: 302,
|
|
45
|
+
'See Other': 303,
|
|
46
|
+
'Not Modified': 304,
|
|
47
|
+
'Temporary Redirect': 307,
|
|
48
|
+
'Permanent Redirect': 308,
|
|
49
|
+
'Bad Request': 400,
|
|
50
|
+
Unauthorized: 401,
|
|
51
|
+
'Payment Required': 402,
|
|
52
|
+
Forbidden: 403,
|
|
53
|
+
'Not Found': 404,
|
|
54
|
+
'Method Not Allowed': 405,
|
|
55
|
+
'Not Acceptable': 406,
|
|
56
|
+
'Proxy Authentication Required': 407,
|
|
57
|
+
'Request Timeout': 408,
|
|
58
|
+
Conflict: 409,
|
|
59
|
+
Gone: 410,
|
|
60
|
+
'Length Required': 411,
|
|
61
|
+
'Precondition Failed': 412,
|
|
62
|
+
'Payload Too Large': 413,
|
|
63
|
+
'URI Too Long': 414,
|
|
64
|
+
'Unsupported Media Type': 415,
|
|
65
|
+
'Range Not Satisfiable': 416,
|
|
66
|
+
'Expectation Failed': 417,
|
|
67
|
+
"I'm a teapot": 418,
|
|
68
|
+
'Misdirected Request': 421,
|
|
69
|
+
'Unprocessable Content': 422,
|
|
70
|
+
Locked: 423,
|
|
71
|
+
'Failed Dependency': 424,
|
|
72
|
+
'Too Early': 425,
|
|
73
|
+
'Upgrade Required': 426,
|
|
74
|
+
'Precondition Required': 428,
|
|
75
|
+
'Too Many Requests': 429,
|
|
76
|
+
'Request Header Fields Too Large': 431,
|
|
77
|
+
'Unavailable For Legal Reasons': 451,
|
|
78
|
+
'Internal Server Error': 500,
|
|
79
|
+
'Not Implemented': 501,
|
|
80
|
+
'Bad Gateway': 502,
|
|
81
|
+
'Service Unavailable': 503,
|
|
82
|
+
'Gateway Timeout': 504,
|
|
83
|
+
'HTTP Version Not Supported': 505,
|
|
84
|
+
'Variant Also Negotiates': 506,
|
|
85
|
+
'Insufficient Storage': 507,
|
|
86
|
+
'Loop Detected': 508,
|
|
87
|
+
'Not Extended': 510,
|
|
88
|
+
'Network Authentication Required': 511,
|
|
89
|
+
} as const
|
|
90
|
+
|
|
91
|
+
export const InvertedStatusMap = Object.fromEntries(
|
|
92
|
+
Object.entries(StatusMap).map(([k, v]) => [v, k]),
|
|
93
|
+
) as {
|
|
94
|
+
[K in keyof StatusMap as StatusMap[K]]: K
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export type StatusMap = typeof StatusMap
|
|
98
|
+
export type InvertedStatusMap = typeof InvertedStatusMap
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
*
|
|
102
|
+
* @param url URL to redirect to
|
|
103
|
+
* @param HTTP status code to send,
|
|
104
|
+
*/
|
|
105
|
+
export const redirect = (
|
|
106
|
+
url: string,
|
|
107
|
+
status: 301 | 302 | 303 | 307 | 308 = 302,
|
|
108
|
+
) => Response.redirect(url, status)
|
|
109
|
+
|
|
110
|
+
export type redirect = typeof redirect
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/elysia-fork/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/elysia-fork/error.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,UAAU,eAA+B,CAAA;AACtD,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAA;AAE1C,eAAO,MAAM,eAAe,eAA8B,CAAA;AAC1D,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAA;AAEpD,eAAO,MAAM,YAAY,SAA+C,CAAA;AAExE,qBAAa,eAAgB,SAAQ,KAAK;IACzC,IAAI,SAAe;IACnB,MAAM,SAAM;CACZ;AAED,qBAAa,aAAc,SAAQ,KAAK;IACvC,IAAI,SAAc;IAClB,MAAM,SAAM;CACZ;AAED,qBAAa,UAAW,SAAQ,KAAK;IACpC,IAAI,SAAU;IACd,MAAM,SAAM;CACZ;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,IAAI,SAA0B;IAC9B,MAAM,SAAM;CACZ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/elysia-fork/error.ts"],"names":[],"mappings":";AAEA,8BAA8B;AAC9B,MAAM,GAAG;AACR,aAAa;AACb,OAAO,GAAG,KAAK,WAAW;IACzB,CAAC,CAAC,aAAa;QACb,GAAG,CAAC,GAAG;IACT,CAAC,CAAC,OAAO,OAAO,KAAK,WAAW;QAChC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG;QACd,CAAC,CAAC,SAAS,CAAA;AAEb,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AAGtD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAG1D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,mCAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,CAAC,KAAK,YAAY,CAAA;AAExE,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAA1C;;QACC,SAAI,GAAG,YAAY,CAAA;QACnB,WAAM,GAAG,GAAG,CAAA;IACb,CAAC;CAAA;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IAAxC;;QACC,SAAI,GAAG,WAAW,CAAA;QAClB,WAAM,GAAG,GAAG,CAAA;IACb,CAAC;CAAA;AAED,MAAM,OAAO,UAAW,SAAQ,KAAK;IAArC;;QACC,SAAI,GAAG,OAAO,CAAA;QACd,WAAM,GAAG,GAAG,CAAA;IACb,CAAC;CAAA;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAA9C;;QACC,SAAI,GAAG,uBAAuB,CAAA;QAC9B,WAAM,GAAG,GAAG,CAAA;IACb,CAAC;CAAA"}
|
|
@@ -1,560 +0,0 @@
|
|
|
1
|
-
import z from 'zod';
|
|
2
|
-
import type { BunFile, Server } from 'bun';
|
|
3
|
-
import type { OptionalKind, Static, StaticDecode, TObject, TSchema } from '@sinclair/typebox';
|
|
4
|
-
import type { TypeCheck, ValueError } from '@sinclair/typebox/compiler';
|
|
5
|
-
import type { OpenAPIV3 } from 'openapi-types';
|
|
6
|
-
import { Spiceflow } from '../spiceflow.js';
|
|
7
|
-
import type { Context, ErrorContext, PreContext } from './context.js';
|
|
8
|
-
import { ELYSIA_RESPONSE, InternalServerError, NotFoundError, ParseError, ValidationError } from './error.js';
|
|
9
|
-
import { ZodTypeAny, ZodObject } from 'zod';
|
|
10
|
-
export type MaybeArray<T> = T | T[];
|
|
11
|
-
export type MaybePromise<T> = T | Promise<T>;
|
|
12
|
-
export type ObjectValues<T extends object> = T[keyof T];
|
|
13
|
-
type IsPathParameter<Part extends string> = Part extends `:${infer Parameter}` ? Parameter : Part extends `*` ? '*' : never;
|
|
14
|
-
export type GetPathParameter<Path extends string> = Path extends `${infer A}/${infer B}` ? IsPathParameter<A> | GetPathParameter<B> : IsPathParameter<Path>;
|
|
15
|
-
export type ResolvePath<Path extends string> = Prettify<{
|
|
16
|
-
[Param in GetPathParameter<Path> as Param extends `${string}?` ? never : Param]: string;
|
|
17
|
-
} & {
|
|
18
|
-
[Param in GetPathParameter<Path> as Param extends `${infer OptionalParam}?` ? OptionalParam : never]?: string;
|
|
19
|
-
}>;
|
|
20
|
-
export type Prettify<T> = {
|
|
21
|
-
[K in keyof T]: T[K];
|
|
22
|
-
} & {};
|
|
23
|
-
export type Prettify2<T> = {
|
|
24
|
-
[K in keyof T]: Prettify<T[K]>;
|
|
25
|
-
} & {};
|
|
26
|
-
export type Partial2<T> = {
|
|
27
|
-
[K in keyof T]?: Partial<T[K]>;
|
|
28
|
-
};
|
|
29
|
-
export type NeverKey<T> = {
|
|
30
|
-
[K in keyof T]?: T[K];
|
|
31
|
-
} & {};
|
|
32
|
-
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;
|
|
33
|
-
type IsClass<V> = V extends abstract new (...args: any) => any ? true : false;
|
|
34
|
-
export type Reconcile<A extends Object, B extends Object, Override extends boolean = false, Stack extends number[] = []> = Stack['length'] extends 16 ? A : Override extends true ? {
|
|
35
|
-
[key in keyof A as key extends keyof B ? never : key]: A[key];
|
|
36
|
-
} extends infer Collision ? {} extends Collision ? {
|
|
37
|
-
[key in keyof B]: IsBothObject<A[key], B[key]> extends true ? Reconcile<A[key], B[key], Override, [
|
|
38
|
-
0,
|
|
39
|
-
...Stack
|
|
40
|
-
]> : B[key];
|
|
41
|
-
} : Prettify<Collision & {
|
|
42
|
-
[key in keyof B]: B[key];
|
|
43
|
-
}> : never : {
|
|
44
|
-
[key in keyof B as key extends keyof A ? never : key]: B[key];
|
|
45
|
-
} extends infer Collision ? {} extends Collision ? {
|
|
46
|
-
[key in keyof A]: IsBothObject<A[key], B[key]> extends true ? Reconcile<A[key], B[key], Override, [
|
|
47
|
-
0,
|
|
48
|
-
...Stack
|
|
49
|
-
]> : A[key];
|
|
50
|
-
} : Prettify<{
|
|
51
|
-
[key in keyof A]: A[key];
|
|
52
|
-
} & Collision> : never;
|
|
53
|
-
export interface SingletonBase {
|
|
54
|
-
decorator: Record<string, unknown>;
|
|
55
|
-
store: Record<string, unknown>;
|
|
56
|
-
derive: Record<string, unknown>;
|
|
57
|
-
resolve: Record<string, unknown>;
|
|
58
|
-
}
|
|
59
|
-
export interface EphemeralType {
|
|
60
|
-
derive: SingletonBase['derive'];
|
|
61
|
-
resolve: SingletonBase['resolve'];
|
|
62
|
-
schema: MetadataBase['schema'];
|
|
63
|
-
}
|
|
64
|
-
export interface DefinitionBase {
|
|
65
|
-
type: Record<string, unknown>;
|
|
66
|
-
error: Record<string, Error>;
|
|
67
|
-
}
|
|
68
|
-
export type RouteBase = Record<string, unknown>;
|
|
69
|
-
export interface MetadataBase {
|
|
70
|
-
schema: RouteSchema;
|
|
71
|
-
macro: BaseMacro;
|
|
72
|
-
macroFn: BaseMacroFn;
|
|
73
|
-
}
|
|
74
|
-
export interface RouteSchema {
|
|
75
|
-
body?: unknown;
|
|
76
|
-
query?: unknown;
|
|
77
|
-
params?: unknown;
|
|
78
|
-
response?: unknown;
|
|
79
|
-
}
|
|
80
|
-
type OptionalField = {
|
|
81
|
-
[OptionalKind]: 'Optional';
|
|
82
|
-
};
|
|
83
|
-
export type TypeSchema = TSchema | ZodTypeAny;
|
|
84
|
-
export type TypeObject = TObject | ZodObject<any, any, any>;
|
|
85
|
-
export type UnwrapSchema<Schema extends TypeSchema | string | undefined, Definitions extends Record<string, unknown> = {}> = undefined extends Schema ? unknown : Schema extends ZodTypeAny ? z.infer<Schema> : Schema extends TSchema ? Schema extends OptionalField ? Prettify<Partial<Static<Schema>>> : StaticDecode<Schema> : Schema extends string ? Definitions extends Record<Schema, infer NamedSchema> ? NamedSchema : Definitions : unknown;
|
|
86
|
-
export interface UnwrapRoute<in out Schema extends InputSchema<any>, in out Definitions extends DefinitionBase['type'] = {}> {
|
|
87
|
-
body: UnwrapSchema<Schema['body'], Definitions>;
|
|
88
|
-
query: UnwrapSchema<Schema['query'], Definitions>;
|
|
89
|
-
params: UnwrapSchema<Schema['params'], Definitions>;
|
|
90
|
-
response: Schema['response'] extends TypeSchema | string ? {
|
|
91
|
-
200: CoExist<UnwrapSchema<Schema['response'], Definitions>, File, BunFile>;
|
|
92
|
-
} : Schema['response'] extends Record<number, TypeSchema | string> ? {
|
|
93
|
-
[k in keyof Schema['response']]: CoExist<UnwrapSchema<Schema['response'][k], Definitions>, File, BunFile>;
|
|
94
|
-
} : unknown | void;
|
|
95
|
-
}
|
|
96
|
-
export type HookContainer<T extends Function = Function> = {
|
|
97
|
-
checksum?: number;
|
|
98
|
-
scope?: LifeCycleType;
|
|
99
|
-
subType?: 'derive' | 'resolve' | 'mapDerive' | 'mapResolve' | (string & {});
|
|
100
|
-
fn: T;
|
|
101
|
-
};
|
|
102
|
-
export interface LifeCycleStore {
|
|
103
|
-
type?: ContentType;
|
|
104
|
-
start: HookContainer<GracefulHandler<any>>[];
|
|
105
|
-
request: HookContainer<PreHandler<any, any>>[];
|
|
106
|
-
parse: HookContainer<BodyHandler<any, any>>[];
|
|
107
|
-
transform: HookContainer<TransformHandler<any, any>>[];
|
|
108
|
-
beforeHandle: HookContainer<OptionalHandler<any, any>>[];
|
|
109
|
-
afterHandle: HookContainer<AfterHandler<any, any>>[];
|
|
110
|
-
mapResponse: HookContainer<MapResponse<any, any>>[];
|
|
111
|
-
afterResponse: HookContainer<AfterResponseHandler<any, any>>[];
|
|
112
|
-
error: HookContainer<ErrorHandler<any, any, any>>[];
|
|
113
|
-
stop: HookContainer<GracefulHandler<any>>[];
|
|
114
|
-
}
|
|
115
|
-
export type LifeCycleEvent = 'start' | 'request' | 'parse' | 'transform' | 'beforeHandle' | 'afterHandle' | 'response' | 'error' | 'stop';
|
|
116
|
-
export type ContentType = MaybeArray<(string & {}) | 'none' | 'text' | 'json' | 'formdata' | 'urlencoded' | 'arrayBuffer' | 'text/plain' | 'application/json' | 'multipart/form-data' | 'application/x-www-form-urlencoded'>;
|
|
117
|
-
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';
|
|
118
|
-
export interface InputSchema<Name extends string = string> {
|
|
119
|
-
body?: TypeSchema | Name;
|
|
120
|
-
query?: TypeObject | Name;
|
|
121
|
-
params?: TypeObject | Name;
|
|
122
|
-
response?: TypeSchema | Record<number, TypeSchema> | Name | Record<number, Name | TypeSchema>;
|
|
123
|
-
}
|
|
124
|
-
export interface MergeSchema<in out A extends RouteSchema, in out B extends RouteSchema> {
|
|
125
|
-
body: undefined extends A['body'] ? B['body'] : A['body'];
|
|
126
|
-
query: undefined extends A['query'] ? B['query'] : A['query'];
|
|
127
|
-
params: undefined extends A['params'] ? B['params'] : A['params'];
|
|
128
|
-
response: {} extends A['response'] ? {} extends B['response'] ? {} : B['response'] : {} extends B['response'] ? A['response'] : A['response'] & Omit<B['response'], keyof A['response']>;
|
|
129
|
-
}
|
|
130
|
-
export type Handler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
131
|
-
decorator: {};
|
|
132
|
-
store: {};
|
|
133
|
-
derive: {};
|
|
134
|
-
resolve: {};
|
|
135
|
-
}, Path extends string = ''> = (context: Context<Route, Singleton, Path>) => MaybePromise<{} extends Route['response'] ? unknown : Route['response'][keyof Route['response']]>;
|
|
136
|
-
export type Replace<Original, Target, With> = IsAny<Target> extends true ? Original : Original extends Record<string, unknown> ? {
|
|
137
|
-
[K in keyof Original]: Original[K] extends Target ? With : Original[K];
|
|
138
|
-
} : Original extends Target ? With : Original;
|
|
139
|
-
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
140
|
-
export type CoExist<Original, Target, With> = IsAny<Target> extends true ? Original : Original extends Record<string, unknown> ? {
|
|
141
|
-
[K in keyof Original]: Original[K] extends Target ? Original[K] | With : Original[K];
|
|
142
|
-
} : Original extends Target ? Original | With : Original;
|
|
143
|
-
export type InlineHandler<Route extends RouteSchema = {}, Singleton extends SingletonBase = {
|
|
144
|
-
decorator: {};
|
|
145
|
-
store: {};
|
|
146
|
-
derive: {};
|
|
147
|
-
resolve: {};
|
|
148
|
-
}, 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 {
|
|
149
|
-
200: any;
|
|
150
|
-
} ? Route['response'] : string | number | boolean | Object) | Route['response'][keyof Route['response']] | {
|
|
151
|
-
[Status in keyof Route['response']]: {
|
|
152
|
-
_type: Record<Status, Route['response'][Status]>;
|
|
153
|
-
[ELYSIA_RESPONSE]: Status;
|
|
154
|
-
};
|
|
155
|
-
}[keyof Route['response']]>;
|
|
156
|
-
export type OptionalHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
157
|
-
decorator: {};
|
|
158
|
-
store: {};
|
|
159
|
-
derive: {};
|
|
160
|
-
resolve: {};
|
|
161
|
-
}, Path extends string = ''> = Handler<Route, Singleton, Path> extends (context: infer Context) => infer Returned ? (context: Context) => Returned | MaybePromise<void> : never;
|
|
162
|
-
export type AfterHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
163
|
-
decorator: {};
|
|
164
|
-
store: {};
|
|
165
|
-
derive: {};
|
|
166
|
-
resolve: {};
|
|
167
|
-
}, Path extends string = ''> = Handler<Route, Singleton, Path> extends (context: infer Context) => infer Returned ? (context: Prettify<{
|
|
168
|
-
response: Route['response'];
|
|
169
|
-
} & Context>) => Returned | MaybePromise<void> : never;
|
|
170
|
-
export type MapResponse<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
171
|
-
decorator: {};
|
|
172
|
-
store: {};
|
|
173
|
-
derive: {};
|
|
174
|
-
resolve: {};
|
|
175
|
-
}, Path extends string = ''> = Handler<Omit<Route, 'response'> & {
|
|
176
|
-
response: MaybePromise<Response | undefined | unknown>;
|
|
177
|
-
}, Singleton & {
|
|
178
|
-
derive: {
|
|
179
|
-
response: Route['response'];
|
|
180
|
-
};
|
|
181
|
-
}, Path>;
|
|
182
|
-
export type VoidHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
183
|
-
decorator: {};
|
|
184
|
-
store: {};
|
|
185
|
-
derive: {};
|
|
186
|
-
resolve: {};
|
|
187
|
-
}> = (context: Context<Route, Singleton>) => MaybePromise<void>;
|
|
188
|
-
export type TransformHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
189
|
-
decorator: {};
|
|
190
|
-
store: {};
|
|
191
|
-
derive: {};
|
|
192
|
-
resolve: {};
|
|
193
|
-
}, BasePath extends string = ''> = {
|
|
194
|
-
(context: Prettify<Context<Route, Omit<Singleton, 'resolve'> & {
|
|
195
|
-
resolve: {};
|
|
196
|
-
}, BasePath>>): MaybePromise<void>;
|
|
197
|
-
};
|
|
198
|
-
export type BodyHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
199
|
-
decorator: {};
|
|
200
|
-
store: {};
|
|
201
|
-
derive: {};
|
|
202
|
-
resolve: {};
|
|
203
|
-
}, Path extends string = ''> = (context: Prettify<{
|
|
204
|
-
contentType: string;
|
|
205
|
-
} & Context<Route, Singleton, Path>>,
|
|
206
|
-
/**
|
|
207
|
-
* @deprecated
|
|
208
|
-
*
|
|
209
|
-
* use `context.contentType` instead
|
|
210
|
-
*
|
|
211
|
-
* @example
|
|
212
|
-
* ```ts
|
|
213
|
-
* new Spiceflow()
|
|
214
|
-
* .onParse(({ contentType, request }) => {
|
|
215
|
-
* if (contentType === 'application/json')
|
|
216
|
-
* return request.json()
|
|
217
|
-
* })
|
|
218
|
-
* ```
|
|
219
|
-
*/
|
|
220
|
-
contentType: string) => MaybePromise<any>;
|
|
221
|
-
export type PreHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
222
|
-
decorator: {};
|
|
223
|
-
store: {};
|
|
224
|
-
derive: {};
|
|
225
|
-
resolve: {};
|
|
226
|
-
}> = (context: PreContext<Singleton>) => MaybePromise<Route['response'] | void>;
|
|
227
|
-
export type AfterResponseHandler<in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
228
|
-
decorator: {};
|
|
229
|
-
store: {};
|
|
230
|
-
derive: {};
|
|
231
|
-
resolve: {};
|
|
232
|
-
}> = (context: Prettify<Context<Route, Singleton> & {
|
|
233
|
-
response: Route['response'];
|
|
234
|
-
}>) => MaybePromise<void>;
|
|
235
|
-
export type GracefulHandler<in Instance extends Spiceflow<any, any, any, any, any, any, any, any>> = (data: Instance) => any;
|
|
236
|
-
export type ErrorHandler<in out T extends Record<string, Error> = {}, in out Route extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
237
|
-
decorator: {};
|
|
238
|
-
store: {};
|
|
239
|
-
derive: {};
|
|
240
|
-
resolve: {};
|
|
241
|
-
}, in out Ephemeral extends EphemeralType = {
|
|
242
|
-
derive: {};
|
|
243
|
-
resolve: {};
|
|
244
|
-
schema: {};
|
|
245
|
-
}, in out Volatile extends EphemeralType = {
|
|
246
|
-
derive: {};
|
|
247
|
-
resolve: {};
|
|
248
|
-
schema: {};
|
|
249
|
-
}> = (context: ErrorContext<Route, {
|
|
250
|
-
store: Singleton['store'];
|
|
251
|
-
decorator: Singleton['decorator'];
|
|
252
|
-
derive: {};
|
|
253
|
-
resolve: {};
|
|
254
|
-
}> & (Prettify<{
|
|
255
|
-
request: Request;
|
|
256
|
-
code: 'UNKNOWN';
|
|
257
|
-
error: Readonly<Error>;
|
|
258
|
-
} & Partial<Singleton['derive'] & Ephemeral['derive'] & Volatile['derive']> & Partial<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
259
|
-
request: Request;
|
|
260
|
-
code: 'VALIDATION';
|
|
261
|
-
error: Readonly<ValidationError>;
|
|
262
|
-
} & Singleton['derive'] & Ephemeral['derive'] & Volatile['derive'] & NeverKey<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
263
|
-
request: Request;
|
|
264
|
-
code: 'NOT_FOUND';
|
|
265
|
-
error: Readonly<NotFoundError>;
|
|
266
|
-
} & NeverKey<Singleton['derive'] & Ephemeral['derive'] & Volatile['derive']> & NeverKey<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
267
|
-
request: Request;
|
|
268
|
-
code: 'PARSE';
|
|
269
|
-
error: Readonly<ParseError>;
|
|
270
|
-
} & Singleton['derive'] & Ephemeral['derive'] & Volatile['derive'] & NeverKey<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
271
|
-
request: Request;
|
|
272
|
-
code: 'INTERNAL_SERVER_ERROR';
|
|
273
|
-
error: Readonly<InternalServerError>;
|
|
274
|
-
} & Partial<Singleton['derive'] & Ephemeral['derive'] & Volatile['derive']> & Partial<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>> | Prettify<{
|
|
275
|
-
[K in keyof T]: {
|
|
276
|
-
request: Request;
|
|
277
|
-
code: K;
|
|
278
|
-
error: Readonly<T[K]>;
|
|
279
|
-
};
|
|
280
|
-
}[keyof T] & Partial<Singleton['derive'] & Ephemeral['derive'] & Volatile['derive']> & Partial<Singleton['derive'] & Ephemeral['resolve'] & Volatile['resolve']>>)) => any | Promise<any>;
|
|
281
|
-
export type Isolate<T> = {
|
|
282
|
-
[P in keyof T]: T[P];
|
|
283
|
-
};
|
|
284
|
-
export type DocumentDecoration = Partial<OpenAPIV3.OperationObject> & {
|
|
285
|
-
/**
|
|
286
|
-
* Pass `true` to hide route from OpenAPI/swagger document
|
|
287
|
-
* */
|
|
288
|
-
hide?: boolean;
|
|
289
|
-
};
|
|
290
|
-
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 {
|
|
291
|
-
params: Record<string, unknown>;
|
|
292
|
-
} ? Schema : Schema & {
|
|
293
|
-
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
294
|
-
}> = (LocalSchema extends {} ? LocalSchema : Isolate<LocalSchema>) & Extension & {
|
|
295
|
-
/**
|
|
296
|
-
* Short for 'Content-Type'
|
|
297
|
-
*
|
|
298
|
-
* Available:
|
|
299
|
-
* - 'none': do not parse body
|
|
300
|
-
* - 'text' / 'text/plain': parse body as string
|
|
301
|
-
* - 'json' / 'application/json': parse body as json
|
|
302
|
-
* - 'formdata' / 'multipart/form-data': parse body as form-data
|
|
303
|
-
* - 'urlencoded' / 'application/x-www-form-urlencoded: parse body as urlencoded
|
|
304
|
-
* - 'arraybuffer': parse body as readable stream
|
|
305
|
-
*/
|
|
306
|
-
type?: ContentType;
|
|
307
|
-
detail?: DocumentDecoration;
|
|
308
|
-
};
|
|
309
|
-
export type ComposedHandler = (context: Context) => MaybePromise<Response>;
|
|
310
|
-
export interface InternalRoute {
|
|
311
|
-
method: HTTPMethod;
|
|
312
|
-
path: string;
|
|
313
|
-
composed: ComposedHandler | Response | null;
|
|
314
|
-
handler: Handler;
|
|
315
|
-
hooks: LocalHook<any, any, any, any, any, any, any>;
|
|
316
|
-
}
|
|
317
|
-
export type ListenCallback = (server: Server) => MaybePromise<void>;
|
|
318
|
-
export type AddPrefix<Prefix extends string, T> = {
|
|
319
|
-
[K in keyof T as Prefix extends string ? `${Prefix}${K & string}` : K]: T[K];
|
|
320
|
-
};
|
|
321
|
-
export type AddPrefixCapitalize<Prefix extends string, T> = {
|
|
322
|
-
[K in keyof T as `${Prefix}${Capitalize<K & string>}`]: T[K];
|
|
323
|
-
};
|
|
324
|
-
export type AddSuffix<Suffix extends string, T> = {
|
|
325
|
-
[K in keyof T as `${K & string}${Suffix}`]: T[K];
|
|
326
|
-
};
|
|
327
|
-
export type AddSuffixCapitalize<Suffix extends string, T> = {
|
|
328
|
-
[K in keyof T as `${K & string}${Capitalize<Suffix>}`]: T[K];
|
|
329
|
-
};
|
|
330
|
-
export type Checksum = {
|
|
331
|
-
name?: string;
|
|
332
|
-
seed?: unknown;
|
|
333
|
-
checksum: number;
|
|
334
|
-
stack?: string;
|
|
335
|
-
routes?: InternalRoute[];
|
|
336
|
-
decorators?: SingletonBase['decorator'];
|
|
337
|
-
store?: SingletonBase['store'];
|
|
338
|
-
type?: DefinitionBase['type'];
|
|
339
|
-
error?: DefinitionBase['error'];
|
|
340
|
-
dependencies?: Record<string, Checksum[]>;
|
|
341
|
-
derive?: {
|
|
342
|
-
fn: string;
|
|
343
|
-
stack: string;
|
|
344
|
-
}[];
|
|
345
|
-
resolve?: {
|
|
346
|
-
fn: string;
|
|
347
|
-
stack: string;
|
|
348
|
-
}[];
|
|
349
|
-
};
|
|
350
|
-
export type BaseMacro = Record<string, string | number | boolean | Object | undefined | null>;
|
|
351
|
-
export type BaseMacroFn = Record<string, (...a: any) => unknown>;
|
|
352
|
-
export type MacroToProperty<in out T extends BaseMacroFn> = Prettify<{
|
|
353
|
-
[K in keyof T]: T[K] extends Function ? T[K] extends (a: infer Params) => any ? Params | undefined : T[K] : T[K];
|
|
354
|
-
}>;
|
|
355
|
-
interface MacroOptions {
|
|
356
|
-
insert?: 'before' | 'after';
|
|
357
|
-
stack?: 'global' | 'local';
|
|
358
|
-
}
|
|
359
|
-
export interface MacroManager<in out TypedRoute extends RouteSchema = {}, in out Singleton extends SingletonBase = {
|
|
360
|
-
decorator: {};
|
|
361
|
-
store: {};
|
|
362
|
-
derive: {};
|
|
363
|
-
resolve: {};
|
|
364
|
-
}, in out Errors extends Record<string, Error> = {}> {
|
|
365
|
-
onParse(fn: MaybeArray<BodyHandler<TypedRoute, Singleton>>): unknown;
|
|
366
|
-
onParse(options: MacroOptions, fn: MaybeArray<BodyHandler<TypedRoute, Singleton>>): unknown;
|
|
367
|
-
onTransform(fn: MaybeArray<VoidHandler<TypedRoute, Singleton>>): unknown;
|
|
368
|
-
onTransform(options: MacroOptions, fn: MaybeArray<VoidHandler<TypedRoute, Singleton>>): unknown;
|
|
369
|
-
onBeforeHandle(fn: MaybeArray<OptionalHandler<TypedRoute, Singleton>>): unknown;
|
|
370
|
-
onBeforeHandle(options: MacroOptions, fn: MaybeArray<OptionalHandler<TypedRoute, Singleton>>): unknown;
|
|
371
|
-
onAfterHandle(fn: MaybeArray<AfterHandler<TypedRoute, Singleton>>): unknown;
|
|
372
|
-
onAfterHandle(options: MacroOptions, fn: MaybeArray<AfterHandler<TypedRoute, Singleton>>): unknown;
|
|
373
|
-
onError(fn: MaybeArray<ErrorHandler<Errors, TypedRoute, Singleton>>): unknown;
|
|
374
|
-
onError(options: MacroOptions, fn: MaybeArray<ErrorHandler<Errors, TypedRoute, Singleton>>): unknown;
|
|
375
|
-
mapResponse(fn: MaybeArray<MapResponse<TypedRoute, Singleton>>): unknown;
|
|
376
|
-
mapResponse(options: MacroOptions, fn: MaybeArray<MapResponse<TypedRoute, Singleton>>): unknown;
|
|
377
|
-
onAfterResponse(fn: MaybeArray<AfterResponseHandler<TypedRoute, Singleton>>): unknown;
|
|
378
|
-
onAfterResponse(options: MacroOptions, fn: MaybeArray<AfterResponseHandler<TypedRoute, Singleton>>): unknown;
|
|
379
|
-
events: {
|
|
380
|
-
global: Prettify<LifeCycleStore & RouteSchema>;
|
|
381
|
-
local: Prettify<LifeCycleStore & RouteSchema>;
|
|
382
|
-
};
|
|
383
|
-
}
|
|
384
|
-
export type MacroQueue = HookContainer<(manager: MacroManager<any, any, any>) => unknown>;
|
|
385
|
-
type _CreateEden<Path extends string, Property extends Record<string, unknown> = {}> = Path extends `${infer Start}/${infer Rest}` ? {
|
|
386
|
-
[x in Start]: _CreateEden<Rest, Property>;
|
|
387
|
-
} : {
|
|
388
|
-
[x in Path]: Property;
|
|
389
|
-
};
|
|
390
|
-
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>;
|
|
391
|
-
export type ComposeSpiceflowResponse<Response, Handle> = Handle extends (...a: any[]) => infer A ? _ComposeSpiceflowResponse<Response, Replace<Awaited<A>, BunFile, File>> : _ComposeSpiceflowResponse<Response, Replace<Awaited<Handle>, BunFile, File>>;
|
|
392
|
-
type _ComposeSpiceflowResponse<Response, Handle> = Prettify<{} extends Response ? {
|
|
393
|
-
200: Exclude<Handle, {
|
|
394
|
-
[ELYSIA_RESPONSE]: any;
|
|
395
|
-
}>;
|
|
396
|
-
} & {
|
|
397
|
-
[ErrorResponse in Extract<Handle, {
|
|
398
|
-
response: any;
|
|
399
|
-
}> as ErrorResponse extends {
|
|
400
|
-
[ELYSIA_RESPONSE]: infer Status extends number;
|
|
401
|
-
} ? Status : never]: ErrorResponse['response'];
|
|
402
|
-
} : Response>;
|
|
403
|
-
export type MergeSpiceflowInstances<Instances extends Spiceflow<any, any, any, any, any, any>[] = [], Prefix extends string = '', Scoped extends boolean = false, Singleton extends SingletonBase = {
|
|
404
|
-
decorator: {};
|
|
405
|
-
store: {};
|
|
406
|
-
derive: {};
|
|
407
|
-
resolve: {};
|
|
408
|
-
}, Definitions extends DefinitionBase = {
|
|
409
|
-
type: {};
|
|
410
|
-
error: {};
|
|
411
|
-
}, Metadata extends MetadataBase = {
|
|
412
|
-
schema: {};
|
|
413
|
-
macro: {};
|
|
414
|
-
macroFn: {};
|
|
415
|
-
}, Routes extends RouteBase = {}> = Instances extends [
|
|
416
|
-
infer Current extends Spiceflow<any, any, any, any, any, any>,
|
|
417
|
-
...infer Rest extends Spiceflow<any, any, any, any, any, any>[]
|
|
418
|
-
] ? Current['_types']['Scoped'] extends true ? MergeSpiceflowInstances<Rest, Prefix, Scoped, Singleton, Definitions, Metadata, Routes> : MergeSpiceflowInstances<Rest, Prefix, Scoped, Singleton & Current['_types']['Singleton'], Definitions & Current['_types']['Definitions'], Metadata & Current['_types']['Metadata'], Routes & (Prefix extends `` ? Current['_routes'] : AddPrefix<Prefix, Current['_routes']>)> : Spiceflow<Prefix, Scoped, {
|
|
419
|
-
decorator: Prettify<Singleton['decorator']>;
|
|
420
|
-
store: Prettify<Singleton['store']>;
|
|
421
|
-
derive: Prettify<Singleton['derive']>;
|
|
422
|
-
resolve: Prettify<Singleton['resolve']>;
|
|
423
|
-
}, {
|
|
424
|
-
type: Prettify<Definitions['type']>;
|
|
425
|
-
error: Prettify<Definitions['error']>;
|
|
426
|
-
}, {
|
|
427
|
-
schema: Prettify<Metadata['schema']>;
|
|
428
|
-
macro: Prettify<Metadata['macro']>;
|
|
429
|
-
macroFn: Prettify<Metadata['macroFn']>;
|
|
430
|
-
}, Routes>;
|
|
431
|
-
export type LifeCycleType = 'global' | 'local' | 'scoped';
|
|
432
|
-
export type ExcludeSpiceflowResponse<T> = Exclude<undefined extends Awaited<T> ? Partial<Awaited<T>> : Awaited<T>, {
|
|
433
|
-
[ELYSIA_RESPONSE]: any;
|
|
434
|
-
}>;
|
|
435
|
-
export type InferContext<T extends Spiceflow<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'] & {
|
|
436
|
-
derive: T['_ephemeral']['derive'] & T['_volatile']['derive'];
|
|
437
|
-
resolve: T['_ephemeral']['resolve'] & T['_volatile']['resolve'];
|
|
438
|
-
}, Path>;
|
|
439
|
-
export type InferHandler<T extends Spiceflow<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'] & {
|
|
440
|
-
derive: T['_ephemeral']['derive'] & T['_volatile']['derive'];
|
|
441
|
-
resolve: T['_ephemeral']['resolve'] & T['_volatile']['resolve'];
|
|
442
|
-
}, Path>;
|
|
443
|
-
export interface ModelValidatorError extends ValueError {
|
|
444
|
-
summary: string;
|
|
445
|
-
}
|
|
446
|
-
export interface ModelValidator<T> extends TypeCheck<T> {
|
|
447
|
-
parse(a: T): T;
|
|
448
|
-
safeParse(a: T): {
|
|
449
|
-
success: true;
|
|
450
|
-
data: T;
|
|
451
|
-
error: null;
|
|
452
|
-
} | {
|
|
453
|
-
success: true;
|
|
454
|
-
data: null;
|
|
455
|
-
error: string;
|
|
456
|
-
errors: ModelValidatorError[];
|
|
457
|
-
};
|
|
458
|
-
}
|
|
459
|
-
export type UnionToIntersect<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;
|
|
460
|
-
export type ResolveMacroContext<Macro extends BaseMacro, MacroFn extends BaseMacroFn> = UnionToIntersect<{
|
|
461
|
-
[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;
|
|
462
|
-
}[keyof Macro]>;
|
|
463
|
-
export type ContextAppendType = 'append' | 'override';
|
|
464
|
-
export type HigherOrderFunction<T extends (...arg: unknown[]) => Function = (...arg: unknown[]) => Function> = (fn: T, request: Request) => ReturnType<T>;
|
|
465
|
-
export type HTTPHeaders = Record<string, string> & {
|
|
466
|
-
'www-authenticate'?: string;
|
|
467
|
-
authorization?: string;
|
|
468
|
-
'proxy-authenticate'?: string;
|
|
469
|
-
'proxy-authorization'?: string;
|
|
470
|
-
age?: string;
|
|
471
|
-
'cache-control'?: string;
|
|
472
|
-
'clear-site-data'?: string;
|
|
473
|
-
expires?: string;
|
|
474
|
-
'no-vary-search'?: string;
|
|
475
|
-
pragma?: string;
|
|
476
|
-
'last-modified'?: string;
|
|
477
|
-
etag?: string;
|
|
478
|
-
'if-match'?: string;
|
|
479
|
-
'if-none-match'?: string;
|
|
480
|
-
'if-modified-since'?: string;
|
|
481
|
-
'if-unmodified-since'?: string;
|
|
482
|
-
vary?: string;
|
|
483
|
-
connection?: string;
|
|
484
|
-
'keep-alive'?: string;
|
|
485
|
-
accept?: string;
|
|
486
|
-
'accept-encoding'?: string;
|
|
487
|
-
'accept-language'?: string;
|
|
488
|
-
expect?: string;
|
|
489
|
-
'max-forwards'?: string;
|
|
490
|
-
cookie?: string;
|
|
491
|
-
'set-cookie'?: string | string[];
|
|
492
|
-
'access-control-allow-origin'?: string;
|
|
493
|
-
'access-control-allow-credentials'?: string;
|
|
494
|
-
'access-control-allow-headers'?: string;
|
|
495
|
-
'access-control-allow-methods'?: string;
|
|
496
|
-
'access-control-expose-headers'?: string;
|
|
497
|
-
'access-control-max-age'?: string;
|
|
498
|
-
'access-control-request-headers'?: string;
|
|
499
|
-
'access-control-request-method'?: string;
|
|
500
|
-
origin?: string;
|
|
501
|
-
'timing-allow-origin'?: string;
|
|
502
|
-
'content-disposition'?: string;
|
|
503
|
-
'content-length'?: string;
|
|
504
|
-
'content-type'?: string;
|
|
505
|
-
'content-encoding'?: string;
|
|
506
|
-
'content-language'?: string;
|
|
507
|
-
'content-location'?: string;
|
|
508
|
-
forwarded?: string;
|
|
509
|
-
via?: string;
|
|
510
|
-
location?: string;
|
|
511
|
-
refresh?: string;
|
|
512
|
-
allow?: string;
|
|
513
|
-
server?: 'spiceflow' | (string & {});
|
|
514
|
-
'accept-ranges'?: string;
|
|
515
|
-
range?: string;
|
|
516
|
-
'if-range'?: string;
|
|
517
|
-
'content-range'?: string;
|
|
518
|
-
'content-security-policy'?: string;
|
|
519
|
-
'content-security-policy-report-only'?: string;
|
|
520
|
-
'cross-origin-embedder-policy'?: string;
|
|
521
|
-
'cross-origin-opener-policy'?: string;
|
|
522
|
-
'cross-origin-resource-policy'?: string;
|
|
523
|
-
'expect-ct'?: string;
|
|
524
|
-
'permission-policy'?: string;
|
|
525
|
-
'strict-transport-security'?: string;
|
|
526
|
-
'upgrade-insecure-requests'?: string;
|
|
527
|
-
'x-content-type-options'?: string;
|
|
528
|
-
'x-frame-options'?: string;
|
|
529
|
-
'x-xss-protection'?: string;
|
|
530
|
-
'last-event-id'?: string;
|
|
531
|
-
'ping-from'?: string;
|
|
532
|
-
'ping-to'?: string;
|
|
533
|
-
'report-to'?: string;
|
|
534
|
-
te?: string;
|
|
535
|
-
trailer?: string;
|
|
536
|
-
'transfer-encoding'?: string;
|
|
537
|
-
'alt-svg'?: string;
|
|
538
|
-
'alt-used'?: string;
|
|
539
|
-
date?: string;
|
|
540
|
-
dnt?: string;
|
|
541
|
-
'early-data'?: string;
|
|
542
|
-
'large-allocation'?: string;
|
|
543
|
-
link?: string;
|
|
544
|
-
'retry-after'?: string;
|
|
545
|
-
'service-worker-allowed'?: string;
|
|
546
|
-
'source-map'?: string;
|
|
547
|
-
upgrade?: string;
|
|
548
|
-
'x-dns-prefetch-control'?: string;
|
|
549
|
-
'x-forwarded-for'?: string;
|
|
550
|
-
'x-forwarded-host'?: string;
|
|
551
|
-
'x-forwarded-proto'?: string;
|
|
552
|
-
'x-powered-by'?: 'spiceflow' | (string & {});
|
|
553
|
-
'x-request-id'?: string;
|
|
554
|
-
'x-requested-with'?: string;
|
|
555
|
-
'x-robots-tag'?: string;
|
|
556
|
-
'x-ua-compatible'?: string;
|
|
557
|
-
};
|
|
558
|
-
export type JoinPath<A extends string, B extends string> = `${A}${B extends '/' ? '/index' : B extends '' ? B : B extends `/${string}` ? B : B}`;
|
|
559
|
-
export {};
|
|
560
|
-
//# sourceMappingURL=types.d.ts.map
|