@taserjs/router 0.0.1 → 0.0.3
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 +2 -0
- package/dist/cjs/constants.cjs.map +1 -1
- package/dist/cjs/create-context.cjs.map +1 -1
- package/dist/cjs/define/handler.cjs.map +1 -1
- package/dist/cjs/define/middleware.cjs +5 -24
- package/dist/cjs/define/middleware.cjs.map +1 -1
- package/dist/cjs/define/middleware.d.cts +10 -79
- package/dist/cjs/define/validators.cjs.map +1 -1
- package/dist/cjs/factories.cjs.map +1 -1
- package/dist/cjs/factories.d.cts +2 -2
- package/dist/cjs/index.cjs +7 -2
- package/dist/cjs/index.d.cts +2 -2
- package/dist/cjs/middleware/body-limit.cjs +2 -2
- package/dist/cjs/middleware/body-limit.cjs.map +1 -1
- package/dist/cjs/middleware/compress.cjs +2 -2
- package/dist/cjs/middleware/compress.cjs.map +1 -1
- package/dist/cjs/middleware/cors.cjs +2 -2
- package/dist/cjs/middleware/cors.cjs.map +1 -1
- package/dist/cjs/middleware/csrf.cjs +2 -2
- package/dist/cjs/middleware/csrf.cjs.map +1 -1
- package/dist/cjs/middleware/etag.cjs +2 -2
- package/dist/cjs/middleware/etag.cjs.map +1 -1
- package/dist/cjs/middleware/jwk.cjs +11 -4
- package/dist/cjs/middleware/jwk.cjs.map +1 -1
- package/dist/cjs/middleware/jwk.d.cts +4 -5
- package/dist/cjs/middleware/jwt.cjs +11 -5
- package/dist/cjs/middleware/jwt.cjs.map +1 -1
- package/dist/cjs/middleware/jwt.d.cts +7 -5
- package/dist/cjs/middleware/secure-headers.cjs +2 -2
- package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
- package/dist/cjs/middleware/timing.cjs +2 -2
- package/dist/cjs/middleware/timing.cjs.map +1 -1
- package/dist/cjs/middleware/wrap-hono.cjs +9 -0
- package/dist/cjs/middleware/wrap-hono.cjs.map +1 -0
- package/dist/cjs/middleware/wrap-hono.d.cts +3 -0
- package/dist/cjs/middleware.cjs.map +1 -1
- package/dist/cjs/reply.cjs +20 -0
- package/dist/cjs/reply.d.cts +2 -0
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +1 -1
- package/dist/cjs/stream.cjs +32 -0
- package/dist/cjs/stream.d.cts +1 -0
- package/dist/cjs/taser-app.cjs +0 -6
- package/dist/cjs/taser-app.cjs.map +1 -1
- package/dist/cjs/taser-app.d.cts +0 -3
- package/dist/cjs/taser-router.cjs +9 -10
- package/dist/cjs/taser-router.cjs.map +1 -1
- package/dist/cjs/taser-router.d.cts +9 -11
- package/dist/cjs/types/app.d.cts +3 -2
- package/dist/cjs/types/index.d.cts +53 -139
- package/dist/cjs/types/type-utils.d.cts +8 -11
- package/dist/cjs/types/units.cjs.map +1 -1
- package/dist/cjs/types/units.d.cts +27 -24
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/create-context.js.map +1 -1
- package/dist/esm/define/handler.js.map +1 -1
- package/dist/esm/define/middleware.d.ts +10 -79
- package/dist/esm/define/middleware.js +5 -24
- package/dist/esm/define/middleware.js.map +1 -1
- package/dist/esm/define/validators.js.map +1 -1
- package/dist/esm/factories.d.ts +2 -2
- package/dist/esm/factories.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +4 -4
- package/dist/esm/middleware/body-limit.js +1 -1
- package/dist/esm/middleware/body-limit.js.map +1 -1
- package/dist/esm/middleware/compress.js +1 -1
- package/dist/esm/middleware/compress.js.map +1 -1
- package/dist/esm/middleware/cors.js +1 -1
- package/dist/esm/middleware/cors.js.map +1 -1
- package/dist/esm/middleware/csrf.js +1 -1
- package/dist/esm/middleware/csrf.js.map +1 -1
- package/dist/esm/middleware/etag.js +1 -1
- package/dist/esm/middleware/etag.js.map +1 -1
- package/dist/esm/middleware/jwk.d.ts +4 -5
- package/dist/esm/middleware/jwk.js +11 -4
- package/dist/esm/middleware/jwk.js.map +1 -1
- package/dist/esm/middleware/jwt.d.ts +7 -5
- package/dist/esm/middleware/jwt.js +11 -5
- package/dist/esm/middleware/jwt.js.map +1 -1
- package/dist/esm/middleware/secure-headers.js +1 -1
- package/dist/esm/middleware/secure-headers.js.map +1 -1
- package/dist/esm/middleware/timing.js +1 -1
- package/dist/esm/middleware/timing.js.map +1 -1
- package/dist/esm/middleware/wrap-hono.d.ts +3 -0
- package/dist/esm/middleware/wrap-hono.js +9 -0
- package/dist/esm/middleware/wrap-hono.js.map +1 -0
- package/dist/esm/middleware.js.map +1 -1
- package/dist/esm/reply.d.ts +2 -0
- package/dist/esm/reply.js +2 -0
- package/dist/esm/route.d.ts +1 -1
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/stream.d.ts +1 -0
- package/dist/esm/stream.js +2 -0
- package/dist/esm/taser-app.d.ts +0 -3
- package/dist/esm/taser-app.js +1 -6
- package/dist/esm/taser-app.js.map +1 -1
- package/dist/esm/taser-router.d.ts +9 -11
- package/dist/esm/taser-router.js +7 -8
- package/dist/esm/taser-router.js.map +1 -1
- package/dist/esm/types/app.d.ts +3 -2
- package/dist/esm/types/index.d.ts +53 -139
- package/dist/esm/types/type-utils.d.ts +8 -11
- package/dist/esm/types/units.d.ts +27 -24
- package/dist/esm/types/units.js.map +1 -1
- package/package.json +37 -17
- package/src/constants.ts +6 -6
- package/src/create-context.ts +8 -8
- package/src/define/handler.ts +24 -34
- package/src/define/middleware.ts +66 -256
- package/src/define/validators.ts +10 -10
- package/src/factories.ts +63 -61
- package/src/index.ts +13 -12
- package/src/middleware/body-limit.ts +5 -5
- package/src/middleware/compress.ts +5 -5
- package/src/middleware/cors.ts +5 -5
- package/src/middleware/csrf.ts +5 -5
- package/src/middleware/etag.ts +5 -5
- package/src/middleware/jwk.ts +33 -26
- package/src/middleware/jwt.ts +26 -10
- package/src/middleware/secure-headers.ts +5 -5
- package/src/middleware/timing.ts +5 -5
- package/src/middleware/wrap-hono.ts +12 -0
- package/src/middleware.ts +7 -7
- package/src/reply.ts +11 -0
- package/src/route.ts +45 -48
- package/src/stream.ts +1 -0
- package/src/taser-app.ts +13 -18
- package/src/taser-router.ts +103 -98
- package/src/types/app.ts +33 -35
- package/src/types/index.ts +299 -722
- package/src/types/returns.ts +92 -97
- package/src/types/schema.ts +8 -9
- package/src/types/type-utils.ts +42 -46
- package/src/types/units.ts +135 -104
- package/dist/cjs/middleware/auth.cjs +0 -34
- package/dist/cjs/middleware/auth.cjs.map +0 -1
- package/dist/cjs/middleware/auth.d.cts +0 -9
- package/dist/esm/middleware/auth.d.ts +0 -9
- package/dist/esm/middleware/auth.js +0 -33
- package/dist/esm/middleware/auth.js.map +0 -1
- package/src/middleware/auth.ts +0 -51
package/src/define/middleware.ts
CHANGED
|
@@ -1,289 +1,99 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { createTaserCompatHandler } from '@taserjs/router-core'
|
|
1
|
+
import { createTaserCompatHandler, type Awaitable } from "@taserjs/router-core";
|
|
3
2
|
|
|
4
|
-
import type {
|
|
3
|
+
import type { ReturnsMap } from "../types/returns.js";
|
|
5
4
|
import type {
|
|
6
5
|
AppContext,
|
|
6
|
+
ExtractState,
|
|
7
|
+
IsUnknown,
|
|
7
8
|
MiddlewareReturnFromParts,
|
|
8
9
|
MiddlewareUnit,
|
|
10
|
+
NextFn,
|
|
9
11
|
StandaloneMiddlewareContext,
|
|
10
|
-
} from
|
|
11
|
-
import type { Schema } from
|
|
12
|
+
} from "../types/units.js";
|
|
13
|
+
import type { Schema } from "../types/schema.js";
|
|
12
14
|
|
|
13
|
-
type HonoMiddlewareHandler = Parameters<typeof createTaserCompatHandler>[0]
|
|
15
|
+
type HonoMiddlewareHandler = Parameters<typeof createTaserCompatHandler>[0];
|
|
14
16
|
|
|
15
|
-
type HonoMiddlewareUnit = MiddlewareUnit<
|
|
16
|
-
MiddlewareReturnFromParts<unknown, unknown, unknown, {}>
|
|
17
|
-
>
|
|
17
|
+
type HonoMiddlewareUnit = MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
|
|
18
18
|
|
|
19
|
-
type
|
|
20
|
-
TQuery = unknown,
|
|
21
|
-
TParams = unknown,
|
|
22
|
-
TBody = unknown,
|
|
19
|
+
export type DefineMiddlewareOptions<
|
|
23
20
|
TState = unknown,
|
|
24
|
-
TCtx = unknown,
|
|
25
|
-
TReturns extends ReturnsMap = {},
|
|
26
|
-
> = {
|
|
27
|
-
state?: Schema<TState>
|
|
28
|
-
ctx?: Schema<TCtx>
|
|
29
|
-
query?: Schema<TQuery>
|
|
30
|
-
params?: Schema<TParams>
|
|
31
|
-
body?: Schema<TBody>
|
|
32
|
-
returns?: TReturns
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
type FluentNext<TState, TCtx>
|
|
36
|
-
= [TState] extends [undefined]
|
|
37
|
-
? [TCtx] extends [undefined]
|
|
38
|
-
? () => Promise<ReplyResult>
|
|
39
|
-
: (args: { ctx: TCtx }) => Promise<ReplyResult>
|
|
40
|
-
: [TCtx] extends [undefined]
|
|
41
|
-
? (args: { state: TState }) => Promise<ReplyResult>
|
|
42
|
-
: (args: { state: TState, ctx: TCtx }) => Promise<ReplyResult>
|
|
43
|
-
|
|
44
|
-
type FluentMiddlewareBuilder<
|
|
45
21
|
TQuery = unknown,
|
|
46
22
|
TParams = unknown,
|
|
47
23
|
TBody = unknown,
|
|
48
|
-
TState = undefined,
|
|
49
|
-
TCtx = undefined,
|
|
50
24
|
TReturns extends ReturnsMap = {},
|
|
25
|
+
TQueryIn = unknown,
|
|
26
|
+
TParamsIn = unknown,
|
|
27
|
+
TBodyIn = unknown,
|
|
51
28
|
TAppContext extends Record<string, unknown> = AppContext,
|
|
29
|
+
R = unknown,
|
|
52
30
|
> = {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
TBody,
|
|
59
|
-
TState
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
handler(
|
|
65
|
-
fn: (
|
|
66
|
-
ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,
|
|
67
|
-
next: FluentNext<TState, TCtx>,
|
|
68
|
-
) => Awaitable<ReplyResult | Response | unknown>,
|
|
69
|
-
): MiddlewareUnit<
|
|
70
|
-
MiddlewareReturnFromParts<
|
|
71
|
-
TQuery,
|
|
72
|
-
TParams,
|
|
73
|
-
TBody,
|
|
74
|
-
TState extends undefined ? {} : TState,
|
|
75
|
-
TCtx extends undefined ? {} : TCtx
|
|
76
|
-
>,
|
|
77
|
-
TReturns
|
|
78
|
-
>
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function createFluentBuilder<TAppContext extends Record<string, unknown> = AppContext>(
|
|
82
|
-
state: MiddlewareBuilderState,
|
|
83
|
-
): FluentMiddlewareBuilder<unknown, unknown, unknown, undefined, undefined, {}, TAppContext> {
|
|
84
|
-
return {
|
|
85
|
-
returns(map: ReturnsMap) {
|
|
86
|
-
return createFluentBuilder<TAppContext>({
|
|
87
|
-
...state,
|
|
88
|
-
returns: { ...(state.returns ?? {}), ...map },
|
|
89
|
-
})
|
|
90
|
-
},
|
|
91
|
-
handler(fn: (...args: never[]) => unknown) {
|
|
92
|
-
const unit = {
|
|
93
|
-
...state,
|
|
94
|
-
handler: fn,
|
|
95
|
-
__middlewareAcc: undefined as unknown,
|
|
96
|
-
...(state.returns ? { __returns: state.returns } : {}),
|
|
97
|
-
}
|
|
98
|
-
return unit as unknown as MiddlewareUnit<
|
|
99
|
-
MiddlewareReturnFromParts<unknown, unknown, unknown, unknown, unknown>,
|
|
100
|
-
ReturnsMap
|
|
101
|
-
>
|
|
102
|
-
},
|
|
103
|
-
} as unknown as FluentMiddlewareBuilder<unknown, unknown, unknown, undefined, undefined, {}, TAppContext>
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export function defineMiddleware(middleware: HonoMiddlewareHandler): HonoMiddlewareUnit
|
|
107
|
-
|
|
108
|
-
export function defineMiddleware<
|
|
109
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
110
|
-
TState = unknown,
|
|
111
|
-
TCtx = unknown,
|
|
112
|
-
TQuery = unknown,
|
|
113
|
-
TParams = unknown,
|
|
114
|
-
TBody = unknown,
|
|
115
|
-
TReturns extends ReturnsMap = {},
|
|
116
|
-
>(
|
|
117
|
-
options: {
|
|
118
|
-
state: Schema<TState>
|
|
119
|
-
ctx: Schema<TCtx>
|
|
120
|
-
query?: Schema<TQuery>
|
|
121
|
-
params?: Schema<TParams>
|
|
122
|
-
body?: Schema<TBody>
|
|
123
|
-
returns?: TReturns
|
|
124
|
-
handler: (
|
|
125
|
-
ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,
|
|
126
|
-
next: (args: { state: TState, ctx: TCtx }) => Promise<ReplyResult>,
|
|
127
|
-
) => Awaitable<ReplyResult | Response | unknown>
|
|
128
|
-
},
|
|
129
|
-
): MiddlewareUnit<
|
|
130
|
-
MiddlewareReturnFromParts<TQuery, TParams, TBody, TState, TCtx>,
|
|
131
|
-
TReturns
|
|
132
|
-
>
|
|
31
|
+
query?: Schema<TQuery, TQueryIn>;
|
|
32
|
+
params?: Schema<TParams, TParamsIn>;
|
|
33
|
+
body?: Schema<TBody, TBodyIn>;
|
|
34
|
+
returns?: TReturns;
|
|
35
|
+
handler: (
|
|
36
|
+
ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,
|
|
37
|
+
next: NextFn<NoInfer<TState>>,
|
|
38
|
+
) => Awaitable<R>;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export function defineMiddleware(middleware: HonoMiddlewareHandler): HonoMiddlewareUnit;
|
|
133
42
|
|
|
134
43
|
export function defineMiddleware<
|
|
135
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
136
44
|
TState = unknown,
|
|
137
|
-
TQuery = unknown,
|
|
138
|
-
TParams = unknown,
|
|
139
|
-
TBody = unknown,
|
|
140
|
-
TReturns extends ReturnsMap = {},
|
|
141
|
-
>(
|
|
142
|
-
options: {
|
|
143
|
-
state: Schema<TState>
|
|
144
|
-
query?: Schema<TQuery>
|
|
145
|
-
params?: Schema<TParams>
|
|
146
|
-
body?: Schema<TBody>
|
|
147
|
-
returns?: TReturns
|
|
148
|
-
handler: (
|
|
149
|
-
ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,
|
|
150
|
-
next: (args: { state: TState }) => Promise<ReplyResult>,
|
|
151
|
-
) => Awaitable<ReplyResult | Response | unknown>
|
|
152
|
-
},
|
|
153
|
-
): MiddlewareUnit<
|
|
154
|
-
MiddlewareReturnFromParts<TQuery, TParams, TBody, TState>,
|
|
155
|
-
TReturns
|
|
156
|
-
>
|
|
157
|
-
|
|
158
|
-
export function defineMiddleware<
|
|
159
45
|
TAppContext extends Record<string, unknown> = AppContext,
|
|
160
|
-
TCtx = unknown,
|
|
161
46
|
TQuery = unknown,
|
|
162
47
|
TParams = unknown,
|
|
163
48
|
TBody = unknown,
|
|
164
49
|
TReturns extends ReturnsMap = {},
|
|
50
|
+
TQueryIn = unknown,
|
|
51
|
+
TParamsIn = unknown,
|
|
52
|
+
TBodyIn = unknown,
|
|
53
|
+
R = unknown,
|
|
165
54
|
>(
|
|
166
|
-
options:
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
MiddlewareReturnFromParts<TQuery, TParams, TBody, {}, TCtx>,
|
|
179
|
-
TReturns
|
|
180
|
-
>
|
|
181
|
-
|
|
182
|
-
export function defineMiddleware<
|
|
183
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
184
|
-
TQuery = unknown,
|
|
185
|
-
TParams = unknown,
|
|
186
|
-
TBody = unknown,
|
|
187
|
-
TReturns extends ReturnsMap = {},
|
|
188
|
-
>(
|
|
189
|
-
options: {
|
|
190
|
-
query?: Schema<TQuery>
|
|
191
|
-
params?: Schema<TParams>
|
|
192
|
-
body?: Schema<TBody>
|
|
193
|
-
returns?: TReturns
|
|
194
|
-
handler: (
|
|
195
|
-
ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,
|
|
196
|
-
next: () => Promise<ReplyResult>,
|
|
197
|
-
) => Awaitable<ReplyResult | Response | unknown>
|
|
198
|
-
},
|
|
55
|
+
options: DefineMiddlewareOptions<
|
|
56
|
+
TState,
|
|
57
|
+
TQuery,
|
|
58
|
+
TParams,
|
|
59
|
+
TBody,
|
|
60
|
+
TReturns,
|
|
61
|
+
TQueryIn,
|
|
62
|
+
TParamsIn,
|
|
63
|
+
TBodyIn,
|
|
64
|
+
TAppContext,
|
|
65
|
+
R
|
|
66
|
+
>,
|
|
199
67
|
): MiddlewareUnit<
|
|
200
|
-
MiddlewareReturnFromParts<
|
|
68
|
+
MiddlewareReturnFromParts<
|
|
69
|
+
TQuery,
|
|
70
|
+
TParams,
|
|
71
|
+
TBody,
|
|
72
|
+
IsUnknown<TState> extends true ? ExtractState<R> : TState,
|
|
73
|
+
TQueryIn,
|
|
74
|
+
TParamsIn,
|
|
75
|
+
TBodyIn
|
|
76
|
+
>,
|
|
201
77
|
TReturns
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
export function defineMiddleware
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
TParams = unknown,
|
|
212
|
-
TBody = unknown,
|
|
213
|
-
>(
|
|
214
|
-
options: {
|
|
215
|
-
query?: Schema<TQuery>
|
|
216
|
-
params?: Schema<TParams>
|
|
217
|
-
body?: Schema<TBody>
|
|
218
|
-
},
|
|
219
|
-
): FluentMiddlewareBuilder<TQuery, TParams, TBody, undefined, undefined, {}, TAppContext>
|
|
220
|
-
|
|
221
|
-
export function defineMiddleware<
|
|
222
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
223
|
-
TState = unknown,
|
|
224
|
-
TQuery = unknown,
|
|
225
|
-
TParams = unknown,
|
|
226
|
-
TBody = unknown,
|
|
227
|
-
>(
|
|
228
|
-
options: {
|
|
229
|
-
state: Schema<TState>
|
|
230
|
-
query?: Schema<TQuery>
|
|
231
|
-
params?: Schema<TParams>
|
|
232
|
-
body?: Schema<TBody>
|
|
233
|
-
},
|
|
234
|
-
): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, undefined, {}, TAppContext>
|
|
235
|
-
|
|
236
|
-
export function defineMiddleware<
|
|
237
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
238
|
-
TCtx = unknown,
|
|
239
|
-
TQuery = unknown,
|
|
240
|
-
TParams = unknown,
|
|
241
|
-
TBody = unknown,
|
|
242
|
-
>(
|
|
243
|
-
options: {
|
|
244
|
-
ctx: Schema<TCtx>
|
|
245
|
-
query?: Schema<TQuery>
|
|
246
|
-
params?: Schema<TParams>
|
|
247
|
-
body?: Schema<TBody>
|
|
248
|
-
},
|
|
249
|
-
): FluentMiddlewareBuilder<TQuery, TParams, TBody, undefined, TCtx, {}, TAppContext>
|
|
250
|
-
|
|
251
|
-
export function defineMiddleware<
|
|
252
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
253
|
-
TState = unknown,
|
|
254
|
-
TCtx = unknown,
|
|
255
|
-
TQuery = unknown,
|
|
256
|
-
TParams = unknown,
|
|
257
|
-
TBody = unknown,
|
|
258
|
-
>(
|
|
259
|
-
options: {
|
|
260
|
-
state: Schema<TState>
|
|
261
|
-
ctx: Schema<TCtx>
|
|
262
|
-
query?: Schema<TQuery>
|
|
263
|
-
params?: Schema<TParams>
|
|
264
|
-
body?: Schema<TBody>
|
|
265
|
-
},
|
|
266
|
-
): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, TCtx, {}, TAppContext>
|
|
267
|
-
|
|
268
|
-
export function defineMiddleware(options?: unknown): unknown {
|
|
269
|
-
if (typeof options === 'function') {
|
|
270
|
-
const honoMiddleware = options as HonoMiddlewareHandler
|
|
78
|
+
>;
|
|
79
|
+
|
|
80
|
+
export function defineMiddleware(
|
|
81
|
+
options:
|
|
82
|
+
| HonoMiddlewareHandler
|
|
83
|
+
| DefineMiddlewareOptions<any, any, any, any, any, any, any, any, any, any>,
|
|
84
|
+
): unknown {
|
|
85
|
+
if (typeof options === "function") {
|
|
86
|
+
const honoMiddleware = options as HonoMiddlewareHandler;
|
|
271
87
|
return defineMiddleware({
|
|
272
88
|
handler: (ctx, next) => createTaserCompatHandler(honoMiddleware)(ctx, next),
|
|
273
|
-
})
|
|
89
|
+
});
|
|
274
90
|
}
|
|
275
91
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
typeof options === 'object'
|
|
282
|
-
&& options !== null
|
|
283
|
-
&& !('handler' in options)
|
|
284
|
-
) {
|
|
285
|
-
return createFluentBuilder(options)
|
|
286
|
-
}
|
|
92
|
+
const unit = {
|
|
93
|
+
...options,
|
|
94
|
+
__middlewareAcc: undefined as unknown,
|
|
95
|
+
...(options.returns ? { __returns: options.returns } : {}),
|
|
96
|
+
};
|
|
287
97
|
|
|
288
|
-
return
|
|
98
|
+
return unit;
|
|
289
99
|
}
|
package/src/define/validators.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import type { Schema } from
|
|
2
|
-
import { SCHEMA_KEYS, type SchemaKey } from
|
|
1
|
+
import type { Schema } from "../types/schema.js";
|
|
2
|
+
import { SCHEMA_KEYS, type SchemaKey } from "../constants.js";
|
|
3
3
|
|
|
4
4
|
export type SchemaValidators = {
|
|
5
|
-
query?: Schema<unknown
|
|
6
|
-
params?: Schema<unknown
|
|
7
|
-
body?: Schema<unknown
|
|
8
|
-
}
|
|
5
|
+
query?: Schema<unknown>;
|
|
6
|
+
params?: Schema<unknown>;
|
|
7
|
+
body?: Schema<unknown>;
|
|
8
|
+
};
|
|
9
9
|
|
|
10
10
|
export function pickDefinedSchemas(
|
|
11
11
|
source: SchemaValidators,
|
|
12
12
|
keyMap?: Partial<Record<SchemaKey, string>>,
|
|
13
13
|
): Record<string, Schema<unknown>> {
|
|
14
|
-
const result: Record<string, Schema<unknown>> = {}
|
|
14
|
+
const result: Record<string, Schema<unknown>> = {};
|
|
15
15
|
for (const key of SCHEMA_KEYS) {
|
|
16
|
-
const value = source[key]
|
|
16
|
+
const value = source[key];
|
|
17
17
|
if (value !== undefined) {
|
|
18
|
-
result[keyMap?.[key] ?? key] = value
|
|
18
|
+
result[keyMap?.[key] ?? key] = value;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
return result
|
|
21
|
+
return result;
|
|
22
22
|
}
|
package/src/factories.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { createRouteBuilder } from
|
|
2
|
-
import type { RouteBuilder, RoutePath, Schema } from
|
|
3
|
-
import type { AppContext, HttpMethod } from
|
|
1
|
+
import { createRouteBuilder } from "./route.js";
|
|
2
|
+
import type { RouteBuilder, RoutePath, Schema } from "./types/index.js";
|
|
3
|
+
import type { AppContext, HttpMethod } from "./types/units.js";
|
|
4
4
|
|
|
5
5
|
type WithoutBodyOptions<TQuery, TParams, TQueryIn = unknown, TParamsIn = unknown> = {
|
|
6
|
-
query?: Schema<TQuery, TQueryIn
|
|
7
|
-
params?: Schema<TParams, TParamsIn
|
|
8
|
-
}
|
|
6
|
+
query?: Schema<TQuery, TQueryIn>;
|
|
7
|
+
params?: Schema<TParams, TParamsIn>;
|
|
8
|
+
};
|
|
9
9
|
|
|
10
10
|
type WithBodyOptions<
|
|
11
11
|
TQuery,
|
|
@@ -15,14 +15,16 @@ type WithBodyOptions<
|
|
|
15
15
|
TParamsIn = unknown,
|
|
16
16
|
TBodyIn = unknown,
|
|
17
17
|
> = WithoutBodyOptions<TQuery, TParams, TQueryIn, TParamsIn> & {
|
|
18
|
-
body?: Schema<TBody, TBodyIn
|
|
19
|
-
}
|
|
18
|
+
body?: Schema<TBody, TBodyIn>;
|
|
19
|
+
};
|
|
20
20
|
|
|
21
21
|
export type CreateWithoutBodyRoute<
|
|
22
|
-
M extends
|
|
22
|
+
M extends "GET" | "DELETE" | "OPTIONS" | "HEAD",
|
|
23
23
|
TAppContext extends Record<string, unknown> = AppContext,
|
|
24
24
|
> = {
|
|
25
|
-
<const Path extends RoutePath>(
|
|
25
|
+
<const Path extends RoutePath>(
|
|
26
|
+
path: Path,
|
|
27
|
+
): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
|
|
26
28
|
<
|
|
27
29
|
const Path extends RoutePath,
|
|
28
30
|
TQuery = unknown,
|
|
@@ -37,21 +39,23 @@ export type CreateWithoutBodyRoute<
|
|
|
37
39
|
M,
|
|
38
40
|
readonly [],
|
|
39
41
|
{
|
|
40
|
-
query: TQuery
|
|
41
|
-
params: TParams
|
|
42
|
-
queryIn: TQueryIn
|
|
43
|
-
paramsIn: TParamsIn
|
|
42
|
+
query: TQuery;
|
|
43
|
+
params: TParams;
|
|
44
|
+
queryIn: TQueryIn;
|
|
45
|
+
paramsIn: TParamsIn;
|
|
44
46
|
},
|
|
45
47
|
{},
|
|
46
48
|
TAppContext
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
+
>;
|
|
50
|
+
};
|
|
49
51
|
|
|
50
52
|
export type CreateWithBodyRoute<
|
|
51
|
-
M extends
|
|
53
|
+
M extends "POST" | "PUT" | "PATCH",
|
|
52
54
|
TAppContext extends Record<string, unknown> = AppContext,
|
|
53
55
|
> = {
|
|
54
|
-
<const Path extends RoutePath>(
|
|
56
|
+
<const Path extends RoutePath>(
|
|
57
|
+
path: Path,
|
|
58
|
+
): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
|
|
55
59
|
<
|
|
56
60
|
const Path extends RoutePath,
|
|
57
61
|
TQuery = unknown,
|
|
@@ -68,23 +72,23 @@ export type CreateWithBodyRoute<
|
|
|
68
72
|
M,
|
|
69
73
|
readonly [],
|
|
70
74
|
{
|
|
71
|
-
query: TQuery
|
|
72
|
-
params: TParams
|
|
73
|
-
body: TBody
|
|
74
|
-
queryIn: TQueryIn
|
|
75
|
-
paramsIn: TParamsIn
|
|
76
|
-
bodyIn: TBodyIn
|
|
75
|
+
query: TQuery;
|
|
76
|
+
params: TParams;
|
|
77
|
+
body: TBody;
|
|
78
|
+
queryIn: TQueryIn;
|
|
79
|
+
paramsIn: TParamsIn;
|
|
80
|
+
bodyIn: TBodyIn;
|
|
77
81
|
},
|
|
78
82
|
{},
|
|
79
83
|
TAppContext
|
|
80
|
-
|
|
81
|
-
}
|
|
84
|
+
>;
|
|
85
|
+
};
|
|
82
86
|
|
|
83
87
|
export type CreateAnyRoute<TAppContext extends Record<string, unknown> = AppContext> = {
|
|
84
88
|
<const Path extends RoutePath, const Methods extends readonly HttpMethod[]>(
|
|
85
89
|
path: Path,
|
|
86
90
|
methods: Methods,
|
|
87
|
-
): RouteBuilder<Path, Methods[number], readonly [], {}, {}, TAppContext
|
|
91
|
+
): RouteBuilder<Path, Methods[number], readonly [], {}, {}, TAppContext>;
|
|
88
92
|
<
|
|
89
93
|
const Path extends RoutePath,
|
|
90
94
|
const Methods extends readonly HttpMethod[],
|
|
@@ -103,20 +107,22 @@ export type CreateAnyRoute<TAppContext extends Record<string, unknown> = AppCont
|
|
|
103
107
|
Methods[number],
|
|
104
108
|
readonly [],
|
|
105
109
|
{
|
|
106
|
-
query: TQuery
|
|
107
|
-
params: TParams
|
|
108
|
-
body: TBody
|
|
109
|
-
queryIn: TQueryIn
|
|
110
|
-
paramsIn: TParamsIn
|
|
111
|
-
bodyIn: TBodyIn
|
|
110
|
+
query: TQuery;
|
|
111
|
+
params: TParams;
|
|
112
|
+
body: TBody;
|
|
113
|
+
queryIn: TQueryIn;
|
|
114
|
+
paramsIn: TParamsIn;
|
|
115
|
+
bodyIn: TBodyIn;
|
|
112
116
|
},
|
|
113
117
|
{},
|
|
114
118
|
TAppContext
|
|
115
|
-
|
|
116
|
-
}
|
|
119
|
+
>;
|
|
120
|
+
};
|
|
117
121
|
|
|
118
122
|
export type CreateAllRoute<TAppContext extends Record<string, unknown> = AppContext> = {
|
|
119
|
-
<const Path extends RoutePath>(
|
|
123
|
+
<const Path extends RoutePath>(
|
|
124
|
+
path: Path,
|
|
125
|
+
): RouteBuilder<Path, HttpMethod, readonly [], {}, {}, TAppContext>;
|
|
120
126
|
<
|
|
121
127
|
const Path extends RoutePath,
|
|
122
128
|
TQuery = unknown,
|
|
@@ -133,51 +139,47 @@ export type CreateAllRoute<TAppContext extends Record<string, unknown> = AppCont
|
|
|
133
139
|
HttpMethod,
|
|
134
140
|
readonly [],
|
|
135
141
|
{
|
|
136
|
-
query: TQuery
|
|
137
|
-
params: TParams
|
|
138
|
-
body: TBody
|
|
139
|
-
queryIn: TQueryIn
|
|
140
|
-
paramsIn: TParamsIn
|
|
141
|
-
bodyIn: TBodyIn
|
|
142
|
+
query: TQuery;
|
|
143
|
+
params: TParams;
|
|
144
|
+
body: TBody;
|
|
145
|
+
queryIn: TQueryIn;
|
|
146
|
+
paramsIn: TParamsIn;
|
|
147
|
+
bodyIn: TBodyIn;
|
|
142
148
|
},
|
|
143
149
|
{},
|
|
144
150
|
TAppContext
|
|
145
|
-
|
|
146
|
-
}
|
|
151
|
+
>;
|
|
152
|
+
};
|
|
147
153
|
|
|
148
|
-
function createWithoutBodyRoute<M extends
|
|
154
|
+
function createWithoutBodyRoute<M extends "GET" | "DELETE" | "OPTIONS" | "HEAD">(
|
|
149
155
|
method: M,
|
|
150
156
|
): CreateWithoutBodyRoute<M> {
|
|
151
157
|
return ((path: string, options?: WithoutBodyOptions<unknown, unknown>) =>
|
|
152
|
-
createRouteBuilder(path, method, options)
|
|
153
|
-
) as unknown as CreateWithoutBodyRoute<M>
|
|
158
|
+
createRouteBuilder(path, method, options)) as unknown as CreateWithoutBodyRoute<M>;
|
|
154
159
|
}
|
|
155
160
|
|
|
156
|
-
function createWithBodyRoute<M extends
|
|
161
|
+
function createWithBodyRoute<M extends "POST" | "PUT" | "PATCH">(
|
|
157
162
|
method: M,
|
|
158
163
|
): CreateWithBodyRoute<M> {
|
|
159
164
|
return ((path: string, options?: WithBodyOptions<unknown, unknown, unknown>) =>
|
|
160
|
-
createRouteBuilder(path, method, options)
|
|
161
|
-
) as unknown as CreateWithBodyRoute<M>
|
|
165
|
+
createRouteBuilder(path, method, options)) as unknown as CreateWithBodyRoute<M>;
|
|
162
166
|
}
|
|
163
167
|
|
|
164
|
-
export const createGetRoute = createWithoutBodyRoute(
|
|
165
|
-
export const createDeleteRoute = createWithoutBodyRoute(
|
|
166
|
-
export const createOptionsRoute = createWithoutBodyRoute(
|
|
167
|
-
export const createHeadRoute = createWithoutBodyRoute(
|
|
168
|
-
export const createPostRoute = createWithBodyRoute(
|
|
169
|
-
export const createPutRoute = createWithBodyRoute(
|
|
170
|
-
export const createPatchRoute = createWithBodyRoute(
|
|
168
|
+
export const createGetRoute = createWithoutBodyRoute("GET");
|
|
169
|
+
export const createDeleteRoute = createWithoutBodyRoute("DELETE");
|
|
170
|
+
export const createOptionsRoute = createWithoutBodyRoute("OPTIONS");
|
|
171
|
+
export const createHeadRoute = createWithoutBodyRoute("HEAD");
|
|
172
|
+
export const createPostRoute = createWithBodyRoute("POST");
|
|
173
|
+
export const createPutRoute = createWithBodyRoute("PUT");
|
|
174
|
+
export const createPatchRoute = createWithBodyRoute("PATCH");
|
|
171
175
|
|
|
172
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
173
176
|
export const createAnyRoute: CreateAnyRoute = ((
|
|
174
177
|
path: string,
|
|
175
178
|
methods: readonly HttpMethod[],
|
|
176
179
|
options?: WithBodyOptions<unknown, unknown, unknown>,
|
|
177
|
-
) => createRouteBuilder(path,
|
|
180
|
+
) => createRouteBuilder(path, "ANY", options, methods)) as unknown as CreateAnyRoute;
|
|
178
181
|
|
|
179
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
180
182
|
export const createAllRoute: CreateAllRoute = ((
|
|
181
183
|
path: string,
|
|
182
184
|
options?: WithBodyOptions<unknown, unknown, unknown>,
|
|
183
|
-
) => createRouteBuilder(path,
|
|
185
|
+
) => createRouteBuilder(path, "ALL", options)) as unknown as CreateAllRoute;
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { RouterRegister } from
|
|
1
|
+
export type { RouterRegister } from "./register.js";
|
|
2
2
|
export type {
|
|
3
3
|
InferInput,
|
|
4
4
|
InferOutput,
|
|
@@ -8,7 +8,7 @@ export type {
|
|
|
8
8
|
RoutePath,
|
|
9
9
|
Schema,
|
|
10
10
|
Simplify,
|
|
11
|
-
} from
|
|
11
|
+
} from "./types/index.js";
|
|
12
12
|
export type {
|
|
13
13
|
ContextDefinition,
|
|
14
14
|
CreateContextArgs,
|
|
@@ -18,27 +18,28 @@ export type {
|
|
|
18
18
|
OnErrorOptions,
|
|
19
19
|
RouteManifestShape,
|
|
20
20
|
TaserHandler,
|
|
21
|
-
} from
|
|
21
|
+
} from "./types/app.js";
|
|
22
22
|
|
|
23
23
|
export {
|
|
24
24
|
isReplyResult,
|
|
25
25
|
reply,
|
|
26
|
+
stream,
|
|
26
27
|
ValidationError,
|
|
27
28
|
validationErrorSchema,
|
|
28
|
-
} from
|
|
29
|
+
} from "@taserjs/router-utils";
|
|
29
30
|
export type {
|
|
30
31
|
ReplyBodyKind,
|
|
31
32
|
ReplyOf,
|
|
32
33
|
ResponseValidationFailureHandler,
|
|
33
34
|
SuccessReplyData,
|
|
34
35
|
SuccessStatusCode,
|
|
35
|
-
} from
|
|
36
|
+
} from "@taserjs/router-utils";
|
|
36
37
|
|
|
37
|
-
export { createAnyRoute, createAllRoute } from
|
|
38
|
-
export { createTaserApp, TaserRouter } from
|
|
39
|
-
export { TaserApp,
|
|
40
|
-
export { createContext } from
|
|
41
|
-
export { defineHandler } from
|
|
42
|
-
export { defineMiddleware } from
|
|
38
|
+
export { createAnyRoute, createAllRoute } from "./factories.js";
|
|
39
|
+
export { createTaserApp, TaserRouter } from "./taser-router.js";
|
|
40
|
+
export { TaserApp, TaserNativeBound } from "./taser-app.js";
|
|
41
|
+
export { createContext } from "./create-context.js";
|
|
42
|
+
export { defineHandler } from "./define/handler.js";
|
|
43
|
+
export { defineMiddleware } from "./define/middleware.js";
|
|
43
44
|
|
|
44
|
-
export type { TaserCookieJar, TaserHeaders } from
|
|
45
|
+
export type { TaserCookieJar, TaserHeaders } from "@taserjs/router-core";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { bodyLimit as honoBodyLimit } from
|
|
1
|
+
import { bodyLimit as honoBodyLimit } from "hono/body-limit";
|
|
2
2
|
|
|
3
|
-
import { wrapHonoMiddleware } from
|
|
3
|
+
import { wrapHonoMiddleware } from "./wrap-hono.js";
|
|
4
4
|
|
|
5
|
-
const honoBodyLimitMiddleware = wrapHonoMiddleware(honoBodyLimit)
|
|
5
|
+
const honoBodyLimitMiddleware = wrapHonoMiddleware(honoBodyLimit);
|
|
6
6
|
|
|
7
7
|
export function bodyLimit(...args: Parameters<typeof honoBodyLimit>) {
|
|
8
|
-
return honoBodyLimitMiddleware(...args)
|
|
8
|
+
return honoBodyLimitMiddleware(...args);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0]
|
|
11
|
+
export type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];
|