@taserjs/router 0.1.3 → 0.1.5
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 +0 -7
- package/dist/cjs/builder/constants.cjs +0 -6
- package/dist/cjs/builder/constants.cjs.map +1 -1
- package/dist/cjs/builder/constants.d.cts +0 -5
- package/dist/cjs/builder/factories.cjs.map +1 -1
- package/dist/cjs/builder/factories.d.cts +9 -9
- package/dist/cjs/builder/middleware-unit.cjs +64 -0
- package/dist/cjs/builder/middleware-unit.cjs.map +1 -0
- package/dist/cjs/builder/middleware-unit.d.cts +1 -0
- package/dist/cjs/builder/middleware.cjs +3 -1
- package/dist/cjs/builder/middleware.cjs.map +1 -1
- package/dist/cjs/builder/route.cjs +7 -21
- package/dist/cjs/builder/route.cjs.map +1 -1
- package/dist/cjs/builder/router.cjs +1 -20
- package/dist/cjs/builder/router.cjs.map +1 -1
- package/dist/cjs/builder/router.d.cts +6 -27
- package/dist/cjs/builder/standalone.cjs +43 -0
- package/dist/cjs/builder/standalone.cjs.map +1 -0
- package/dist/cjs/builder/standalone.d.cts +28 -0
- package/dist/cjs/define/middleware.cjs +11 -16
- package/dist/cjs/define/middleware.cjs.map +1 -1
- package/dist/cjs/define/middleware.d.cts +44 -34
- package/dist/cjs/index.cjs +15 -4
- package/dist/cjs/index.d.cts +6 -4
- package/dist/cjs/middleware/body-limit.cjs +3 -3
- package/dist/cjs/middleware/body-limit.cjs.map +1 -1
- package/dist/cjs/middleware/body-limit.d.cts +1 -1
- package/dist/cjs/middleware/compress.cjs +3 -3
- package/dist/cjs/middleware/compress.cjs.map +1 -1
- package/dist/cjs/middleware/compress.d.cts +1 -1
- package/dist/cjs/middleware/cors.cjs +3 -3
- package/dist/cjs/middleware/cors.cjs.map +1 -1
- package/dist/cjs/middleware/cors.d.cts +1 -1
- package/dist/cjs/middleware/csrf.cjs +3 -3
- package/dist/cjs/middleware/csrf.cjs.map +1 -1
- package/dist/cjs/middleware/csrf.d.cts +1 -1
- package/dist/cjs/middleware/etag.cjs +3 -3
- package/dist/cjs/middleware/etag.cjs.map +1 -1
- package/dist/cjs/middleware/etag.d.cts +1 -1
- package/dist/cjs/middleware/hono-mw.cjs +23 -0
- package/dist/cjs/middleware/hono-mw.cjs.map +1 -0
- package/dist/cjs/middleware/hono-mw.d.cts +16 -0
- package/dist/cjs/middleware/jwk.cjs +6 -2
- package/dist/cjs/middleware/jwk.cjs.map +1 -1
- package/dist/cjs/middleware/jwt.cjs +6 -2
- package/dist/cjs/middleware/jwt.cjs.map +1 -1
- package/dist/cjs/middleware/secure-headers.cjs +3 -3
- package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
- package/dist/cjs/middleware/secure-headers.d.cts +1 -1
- package/dist/cjs/middleware/timing.cjs +3 -3
- package/dist/cjs/middleware/timing.cjs.map +1 -1
- package/dist/cjs/middleware/timing.d.cts +1 -1
- package/dist/cjs/types/index.d.cts +20 -52
- package/dist/cjs/types/type-utils.d.cts +2 -2
- package/dist/cjs/types/units.d.cts +18 -45
- package/dist/esm/builder/constants.d.ts +0 -5
- package/dist/esm/builder/constants.js +1 -6
- package/dist/esm/builder/constants.js.map +1 -1
- package/dist/esm/builder/factories.d.ts +9 -9
- package/dist/esm/builder/factories.js.map +1 -1
- package/dist/esm/builder/middleware-unit.d.ts +1 -0
- package/dist/esm/builder/middleware-unit.js +64 -0
- package/dist/esm/builder/middleware-unit.js.map +1 -0
- package/dist/esm/builder/middleware.js +3 -1
- package/dist/esm/builder/middleware.js.map +1 -1
- package/dist/esm/builder/route.js +7 -21
- package/dist/esm/builder/route.js.map +1 -1
- package/dist/esm/builder/router.d.ts +6 -27
- package/dist/esm/builder/router.js +1 -20
- package/dist/esm/builder/router.js.map +1 -1
- package/dist/esm/builder/standalone.d.ts +28 -0
- package/dist/esm/builder/standalone.js +32 -0
- package/dist/esm/builder/standalone.js.map +1 -0
- package/dist/esm/define/middleware.d.ts +44 -34
- package/dist/esm/define/middleware.js +11 -16
- package/dist/esm/define/middleware.js.map +1 -1
- package/dist/esm/index.d.ts +6 -4
- package/dist/esm/index.js +3 -3
- package/dist/esm/middleware/body-limit.d.ts +1 -1
- package/dist/esm/middleware/body-limit.js +3 -3
- package/dist/esm/middleware/body-limit.js.map +1 -1
- package/dist/esm/middleware/compress.d.ts +1 -1
- package/dist/esm/middleware/compress.js +3 -3
- package/dist/esm/middleware/compress.js.map +1 -1
- package/dist/esm/middleware/cors.d.ts +1 -1
- package/dist/esm/middleware/cors.js +3 -3
- package/dist/esm/middleware/cors.js.map +1 -1
- package/dist/esm/middleware/csrf.d.ts +1 -1
- package/dist/esm/middleware/csrf.js +3 -3
- package/dist/esm/middleware/csrf.js.map +1 -1
- package/dist/esm/middleware/etag.d.ts +1 -1
- package/dist/esm/middleware/etag.js +3 -3
- package/dist/esm/middleware/etag.js.map +1 -1
- package/dist/esm/middleware/hono-mw.d.ts +16 -0
- package/dist/esm/middleware/hono-mw.js +23 -0
- package/dist/esm/middleware/hono-mw.js.map +1 -0
- package/dist/esm/middleware/jwk.js +7 -3
- package/dist/esm/middleware/jwk.js.map +1 -1
- package/dist/esm/middleware/jwt.js +7 -3
- package/dist/esm/middleware/jwt.js.map +1 -1
- package/dist/esm/middleware/secure-headers.d.ts +1 -1
- package/dist/esm/middleware/secure-headers.js +3 -3
- package/dist/esm/middleware/secure-headers.js.map +1 -1
- package/dist/esm/middleware/timing.d.ts +1 -1
- package/dist/esm/middleware/timing.js +3 -3
- package/dist/esm/middleware/timing.js.map +1 -1
- package/dist/esm/types/index.d.ts +20 -52
- package/dist/esm/types/type-utils.d.ts +2 -2
- package/dist/esm/types/units.d.ts +18 -45
- package/package.json +3 -3
- package/src/builder/constants.ts +0 -6
- package/src/builder/factories.ts +2 -2
- package/src/builder/middleware-unit.ts +66 -0
- package/src/builder/middleware.ts +8 -2
- package/src/builder/route.ts +10 -34
- package/src/builder/router.ts +7 -77
- package/src/builder/standalone.ts +70 -0
- package/src/define/middleware.ts +155 -231
- package/src/index.ts +29 -3
- package/src/middleware/body-limit.ts +3 -4
- package/src/middleware/compress.ts +3 -4
- package/src/middleware/cors.ts +3 -4
- package/src/middleware/csrf.ts +3 -4
- package/src/middleware/etag.ts +3 -4
- package/src/middleware/hono-mw.ts +22 -0
- package/src/middleware/jwk.ts +10 -8
- package/src/middleware/jwt.ts +9 -7
- package/src/middleware/secure-headers.ts +3 -4
- package/src/middleware/timing.ts +3 -4
- package/src/types/index.ts +54 -196
- package/src/types/type-utils.ts +8 -4
- package/src/types/units.ts +153 -87
- package/dist/cjs/define/handler.cjs +0 -38
- package/dist/cjs/define/handler.cjs.map +0 -1
- package/dist/cjs/define/handler.d.cts +0 -13
- package/dist/cjs/middleware/wrap-hono.cjs +0 -19
- package/dist/cjs/middleware/wrap-hono.cjs.map +0 -1
- package/dist/cjs/middleware/wrap-hono.d.cts +0 -7
- package/dist/cjs/register.d.cts +0 -2
- package/dist/cjs/types/units.cjs +0 -8
- package/dist/cjs/types/units.cjs.map +0 -1
- package/dist/esm/define/handler.d.ts +0 -13
- package/dist/esm/define/handler.js +0 -38
- package/dist/esm/define/handler.js.map +0 -1
- package/dist/esm/middleware/wrap-hono.d.ts +0 -7
- package/dist/esm/middleware/wrap-hono.js +0 -18
- package/dist/esm/middleware/wrap-hono.js.map +0 -1
- package/dist/esm/register.d.ts +0 -2
- package/dist/esm/types/units.js +0 -8
- package/dist/esm/types/units.js.map +0 -1
- package/src/define/handler.ts +0 -62
- package/src/middleware/wrap-hono.ts +0 -25
- package/src/register.ts +0 -1
package/src/types/units.ts
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
Awaitable,
|
|
3
2
|
MiddlewareDefinition as CoreMiddlewareDefinition,
|
|
4
3
|
TaserCookieJar,
|
|
5
4
|
TaserHeaders,
|
|
6
5
|
} from "@taserjs/router-core";
|
|
7
6
|
|
|
8
|
-
import type {
|
|
9
|
-
MergeMiddlewareField,
|
|
10
|
-
MergePart,
|
|
11
|
-
RequestShape,
|
|
12
|
-
Simplify,
|
|
13
|
-
UnitRuntimeContext,
|
|
14
|
-
UnwrapPart,
|
|
15
|
-
} from "./type-utils.js";
|
|
7
|
+
import type { RequestShape, Simplify, UnitRuntimeContext, UnwrapPart } from "./type-utils.js";
|
|
16
8
|
import type { ReturnsMap } from "./returns.js";
|
|
17
9
|
import type { Schema } from "./schema.js";
|
|
18
10
|
|
|
@@ -29,7 +21,7 @@ export type {
|
|
|
29
21
|
} from "./returns.js";
|
|
30
22
|
|
|
31
23
|
/** Default empty app context for standalone units without a bound router instance. */
|
|
32
|
-
export type
|
|
24
|
+
export type EmptyAppContext = Record<never, never>;
|
|
33
25
|
|
|
34
26
|
export type ValidatorParts = {
|
|
35
27
|
query?: unknown;
|
|
@@ -46,13 +38,17 @@ export type NextResult<TState = unknown> = Response & {
|
|
|
46
38
|
readonly [StateBrand]?: TState;
|
|
47
39
|
};
|
|
48
40
|
|
|
49
|
-
export type
|
|
50
|
-
?
|
|
51
|
-
|
|
52
|
-
|
|
41
|
+
export type ExtractStateFromUnion<T> = T extends { readonly [StateBrand]?: infer S }
|
|
42
|
+
? [S] extends [never]
|
|
43
|
+
? never
|
|
44
|
+
: [unknown] extends [S]
|
|
53
45
|
? {}
|
|
54
46
|
: S
|
|
55
|
-
|
|
47
|
+
: never;
|
|
48
|
+
|
|
49
|
+
export type ExtractState<T> = [ExtractStateFromUnion<Awaited<T>>] extends [never]
|
|
50
|
+
? {}
|
|
51
|
+
: ExtractStateFromUnion<Awaited<T>>;
|
|
56
52
|
|
|
57
53
|
export type IsUnknown<T> = [unknown] extends [T] ? true : false;
|
|
58
54
|
|
|
@@ -61,8 +57,6 @@ export type NextFn<TExpectedState = unknown> =
|
|
|
61
57
|
? <S extends Record<string, unknown> = {}>(state?: S) => Promise<NextResult<S>>
|
|
62
58
|
: (state: TExpectedState) => Promise<NextResult<TExpectedState>>;
|
|
63
59
|
|
|
64
|
-
export type MiddlewareNext = NextFn;
|
|
65
|
-
|
|
66
60
|
export type MiddlewareDefinition = CoreMiddlewareDefinition<ReturnsMap>;
|
|
67
61
|
|
|
68
62
|
export type MiddlewareReturnFromParts<
|
|
@@ -117,7 +111,7 @@ export type StandaloneMiddlewareContext<
|
|
|
117
111
|
TQuery = unknown,
|
|
118
112
|
TParams = unknown,
|
|
119
113
|
TBody = unknown,
|
|
120
|
-
TAppContext extends Record<string, unknown> =
|
|
114
|
+
TAppContext extends Record<string, unknown> = EmptyAppContext,
|
|
121
115
|
TState = {},
|
|
122
116
|
> = Simplify<
|
|
123
117
|
TAppContext &
|
|
@@ -131,36 +125,7 @@ export type StandaloneMiddlewareContext<
|
|
|
131
125
|
}
|
|
132
126
|
>;
|
|
133
127
|
|
|
134
|
-
export
|
|
135
|
-
Acc extends readonly unknown[],
|
|
136
|
-
Validators extends ValidatorParts,
|
|
137
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
138
|
-
> = Simplify<
|
|
139
|
-
TAppContext &
|
|
140
|
-
UnitRuntimeContext & {
|
|
141
|
-
query: Simplify<
|
|
142
|
-
MergePart<
|
|
143
|
-
Validators extends { query?: infer Q } ? Q : unknown,
|
|
144
|
-
MergeMiddlewareField<Acc, "query">
|
|
145
|
-
>
|
|
146
|
-
>;
|
|
147
|
-
params: Simplify<
|
|
148
|
-
MergePart<
|
|
149
|
-
Validators extends { params?: infer P } ? P : unknown,
|
|
150
|
-
MergeMiddlewareField<Acc, "params">
|
|
151
|
-
>
|
|
152
|
-
>;
|
|
153
|
-
body: Simplify<
|
|
154
|
-
MergePart<
|
|
155
|
-
Validators extends { body?: infer B } ? B : unknown,
|
|
156
|
-
MergeMiddlewareField<Acc, "body">
|
|
157
|
-
>
|
|
158
|
-
>;
|
|
159
|
-
state: Simplify<MergeMiddlewareField<Acc, "state">>;
|
|
160
|
-
headers: TaserHeaders;
|
|
161
|
-
cookies: TaserCookieJar;
|
|
162
|
-
}
|
|
163
|
-
>;
|
|
128
|
+
export declare const MiddlewareUnitBrand: unique symbol;
|
|
164
129
|
|
|
165
130
|
export type MiddlewareUnit<
|
|
166
131
|
TAcc = unknown,
|
|
@@ -168,56 +133,157 @@ export type MiddlewareUnit<
|
|
|
168
133
|
TRequiredLayouts = unknown,
|
|
169
134
|
TRequiredState = unknown,
|
|
170
135
|
> = MiddlewareDefinition & {
|
|
136
|
+
readonly [MiddlewareUnitBrand]: true;
|
|
171
137
|
readonly __middlewareAcc: TAcc;
|
|
172
138
|
readonly __returns?: TReturns;
|
|
173
139
|
readonly __requiredLayouts?: TRequiredLayouts;
|
|
174
140
|
readonly __requiredState?: TRequiredState;
|
|
175
141
|
};
|
|
176
142
|
|
|
177
|
-
export type
|
|
178
|
-
_Acc extends readonly unknown[],
|
|
179
|
-
_Validators extends ValidatorParts,
|
|
180
|
-
TReturns extends ReturnsMap = {},
|
|
181
|
-
TOutput = Response,
|
|
182
|
-
> = {
|
|
183
|
-
readonly __returns?: TReturns;
|
|
184
|
-
readonly $Infer: {
|
|
185
|
-
Output: TOutput;
|
|
186
|
-
};
|
|
187
|
-
middlewares: readonly MiddlewareDefinition[];
|
|
188
|
-
handler: (ctx: unknown) => Awaitable<Response>;
|
|
189
|
-
returns?: ReturnsMap;
|
|
190
|
-
query?: Schema<unknown>;
|
|
191
|
-
params?: Schema<unknown>;
|
|
192
|
-
body?: Schema<unknown>;
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
export type InlineMiddlewareOptions<
|
|
196
|
-
Ctx = unknown,
|
|
143
|
+
export type MiddlewareUnitBuilder<
|
|
197
144
|
TQuery = unknown,
|
|
198
145
|
TParams = unknown,
|
|
199
146
|
TBody = unknown,
|
|
200
147
|
TReturns extends ReturnsMap = {},
|
|
148
|
+
TRequiredLayouts = unknown,
|
|
149
|
+
TRequiredState = {},
|
|
150
|
+
TAppContext extends Record<string, unknown> = EmptyAppContext,
|
|
151
|
+
TInheritedState = {},
|
|
201
152
|
TQueryIn = unknown,
|
|
202
153
|
TParamsIn = unknown,
|
|
203
154
|
TBodyIn = unknown,
|
|
204
|
-
|
|
205
|
-
> =
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
155
|
+
TExpectedState = unknown,
|
|
156
|
+
> = MiddlewareUnit<
|
|
157
|
+
MiddlewareReturnFromParts<
|
|
158
|
+
TQuery,
|
|
159
|
+
TParams,
|
|
160
|
+
TBody,
|
|
161
|
+
IsUnknown<TExpectedState> extends true ? {} : TExpectedState,
|
|
162
|
+
TQueryIn,
|
|
163
|
+
TParamsIn,
|
|
164
|
+
TBodyIn
|
|
165
|
+
>,
|
|
166
|
+
TReturns,
|
|
167
|
+
TRequiredLayouts,
|
|
168
|
+
TRequiredState
|
|
169
|
+
> & {
|
|
170
|
+
query<Q, QIn = unknown>(
|
|
171
|
+
schema: Schema<Q, QIn>,
|
|
172
|
+
): MiddlewareUnitBuilder<
|
|
173
|
+
Q,
|
|
174
|
+
TParams,
|
|
175
|
+
TBody,
|
|
176
|
+
TReturns,
|
|
177
|
+
TRequiredLayouts,
|
|
178
|
+
TRequiredState,
|
|
179
|
+
TAppContext,
|
|
180
|
+
TInheritedState,
|
|
181
|
+
QIn,
|
|
182
|
+
TParamsIn,
|
|
183
|
+
TBodyIn,
|
|
184
|
+
TExpectedState
|
|
185
|
+
>;
|
|
186
|
+
params<P, PIn = unknown>(
|
|
187
|
+
schema: Schema<P, PIn>,
|
|
188
|
+
): MiddlewareUnitBuilder<
|
|
189
|
+
TQuery,
|
|
190
|
+
P,
|
|
191
|
+
TBody,
|
|
192
|
+
TReturns,
|
|
193
|
+
TRequiredLayouts,
|
|
194
|
+
TRequiredState,
|
|
195
|
+
TAppContext,
|
|
196
|
+
TInheritedState,
|
|
197
|
+
TQueryIn,
|
|
198
|
+
PIn,
|
|
199
|
+
TBodyIn,
|
|
200
|
+
TExpectedState
|
|
201
|
+
>;
|
|
202
|
+
body<B, BIn = unknown>(
|
|
203
|
+
schema: Schema<B, BIn>,
|
|
204
|
+
): MiddlewareUnitBuilder<
|
|
205
|
+
TQuery,
|
|
206
|
+
TParams,
|
|
207
|
+
B,
|
|
208
|
+
TReturns,
|
|
209
|
+
TRequiredLayouts,
|
|
210
|
+
TRequiredState,
|
|
211
|
+
TAppContext,
|
|
212
|
+
TInheritedState,
|
|
213
|
+
TQueryIn,
|
|
214
|
+
TParamsIn,
|
|
215
|
+
BIn,
|
|
216
|
+
TExpectedState
|
|
217
|
+
>;
|
|
218
|
+
body<Mode extends "json" | "form" | "urlencoded", B, BIn = unknown>(
|
|
219
|
+
mode: Mode,
|
|
220
|
+
schema: Schema<B, BIn>,
|
|
221
|
+
): MiddlewareUnitBuilder<
|
|
222
|
+
TQuery,
|
|
223
|
+
TParams,
|
|
224
|
+
B,
|
|
225
|
+
TReturns,
|
|
226
|
+
TRequiredLayouts,
|
|
227
|
+
TRequiredState,
|
|
228
|
+
TAppContext,
|
|
229
|
+
TInheritedState,
|
|
230
|
+
TQueryIn,
|
|
231
|
+
TParamsIn,
|
|
232
|
+
BIn,
|
|
233
|
+
TExpectedState
|
|
234
|
+
>;
|
|
235
|
+
returns<const M extends ReturnsMap>(
|
|
236
|
+
map: M,
|
|
237
|
+
): MiddlewareUnitBuilder<
|
|
238
|
+
TQuery,
|
|
239
|
+
TParams,
|
|
240
|
+
TBody,
|
|
241
|
+
Omit<TReturns, keyof M> & M,
|
|
242
|
+
TRequiredLayouts,
|
|
243
|
+
TRequiredState,
|
|
244
|
+
TAppContext,
|
|
245
|
+
TInheritedState,
|
|
246
|
+
TQueryIn,
|
|
247
|
+
TParamsIn,
|
|
248
|
+
TBodyIn,
|
|
249
|
+
TExpectedState
|
|
250
|
+
>;
|
|
251
|
+
requires<Requires extends Record<string, unknown>>(): MiddlewareUnitBuilder<
|
|
252
|
+
TQuery,
|
|
253
|
+
TParams,
|
|
254
|
+
TBody,
|
|
255
|
+
TReturns,
|
|
256
|
+
TRequiredLayouts,
|
|
257
|
+
TRequiredState & Requires,
|
|
258
|
+
TAppContext,
|
|
259
|
+
TInheritedState,
|
|
260
|
+
TQueryIn,
|
|
261
|
+
TParamsIn,
|
|
262
|
+
TBodyIn,
|
|
263
|
+
TExpectedState
|
|
264
|
+
>;
|
|
265
|
+
handler<R>(
|
|
266
|
+
fn: (
|
|
267
|
+
ctx: StandaloneMiddlewareContext<
|
|
268
|
+
TQuery,
|
|
269
|
+
TParams,
|
|
270
|
+
TBody,
|
|
271
|
+
TAppContext,
|
|
272
|
+
TInheritedState & TRequiredState
|
|
273
|
+
>,
|
|
274
|
+
next: NextFn<TExpectedState>,
|
|
275
|
+
) => R,
|
|
276
|
+
): DefineMiddlewareResult<
|
|
277
|
+
TQuery,
|
|
278
|
+
TParams,
|
|
279
|
+
TBody,
|
|
280
|
+
IsUnknown<TExpectedState> extends true ? ExtractState<R> : TExpectedState,
|
|
281
|
+
R,
|
|
282
|
+
TQueryIn,
|
|
283
|
+
TParamsIn,
|
|
284
|
+
TBodyIn,
|
|
285
|
+
TReturns,
|
|
286
|
+
TRequiredLayouts,
|
|
287
|
+
TRequiredState
|
|
288
|
+
>;
|
|
211
289
|
};
|
|
212
|
-
|
|
213
|
-
export function isHandlerUnit(
|
|
214
|
-
value: unknown,
|
|
215
|
-
): value is HandlerUnit<readonly unknown[], ValidatorParts> {
|
|
216
|
-
return (
|
|
217
|
-
typeof value === "object" &&
|
|
218
|
-
value !== null &&
|
|
219
|
-
"handler" in value &&
|
|
220
|
-
"middlewares" in value &&
|
|
221
|
-
Array.isArray((value as HandlerUnit<readonly unknown[], ValidatorParts>).middlewares)
|
|
222
|
-
);
|
|
223
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const require_validators = require("./validators.cjs");
|
|
2
|
-
let _taserjs_router_utils = require("@taserjs/router-utils");
|
|
3
|
-
//#region src/define/handler.ts
|
|
4
|
-
function createHandlerBuilder(validators, middlewares, returnsMap) {
|
|
5
|
-
const builder = {
|
|
6
|
-
returns(map) {
|
|
7
|
-
return createHandlerBuilder(validators, middlewares, {
|
|
8
|
-
...returnsMap,
|
|
9
|
-
...map
|
|
10
|
-
});
|
|
11
|
-
},
|
|
12
|
-
use(unitOrOptions) {
|
|
13
|
-
middlewares.push(unitOrOptions);
|
|
14
|
-
return builder;
|
|
15
|
-
},
|
|
16
|
-
handler(fn) {
|
|
17
|
-
const mergedReturns = {
|
|
18
|
-
...(0, _taserjs_router_utils.collectReturnsFromDefinitions)(middlewares),
|
|
19
|
-
...returnsMap
|
|
20
|
-
};
|
|
21
|
-
return {
|
|
22
|
-
$Infer: { Output: void 0 },
|
|
23
|
-
middlewares: [...middlewares],
|
|
24
|
-
handler: fn,
|
|
25
|
-
...require_validators.pickDefinedSchemas(validators),
|
|
26
|
-
...Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
return builder;
|
|
31
|
-
}
|
|
32
|
-
function defineHandler(options) {
|
|
33
|
-
return createHandlerBuilder(options ?? {}, [], {});
|
|
34
|
-
}
|
|
35
|
-
//#endregion
|
|
36
|
-
exports.defineHandler = defineHandler;
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=handler.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.cjs","names":[],"sources":["../../../src/define/handler.ts"],"sourcesContent":["import type { HandlerBuilder } from \"../types/index.js\";\nimport type {\n AppContext,\n HandlerUnit,\n MiddlewareDefinition,\n ReturnsMap,\n ValidatorParts,\n} from \"../types/units.js\";\nimport type { Schema } from \"../types/schema.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"./validators.js\";\nimport { collectReturnsFromDefinitions } from \"@taserjs/router-utils\";\n\nfunction createHandlerBuilder<TAppContext extends Record<string, unknown> = AppContext>(\n validators: SchemaValidators,\n middlewares: MiddlewareDefinition[],\n returnsMap: ReturnsMap,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n const builder = {\n returns(map: ReturnsMap) {\n return createHandlerBuilder<TAppContext>(validators, middlewares, { ...returnsMap, ...map });\n },\n use(unitOrOptions: MiddlewareDefinition) {\n middlewares.push(unitOrOptions);\n return builder;\n },\n handler(fn: (ctx: unknown) => unknown) {\n const mwReturns = collectReturnsFromDefinitions(middlewares);\n const mergedReturns = { ...mwReturns, ...returnsMap };\n const unit = {\n $Infer: { Output: undefined as unknown as Response },\n middlewares: [...middlewares],\n handler: fn as HandlerUnit<readonly [], ValidatorParts>[\"handler\"],\n ...pickDefinedSchemas(validators),\n ...(Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}),\n } as HandlerUnit<readonly [], ValidatorParts>;\n return unit;\n },\n };\n\n return builder as unknown as HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext>;\n}\n\nexport function defineHandler<\n TAppContext extends Record<string, unknown> = AppContext,\n>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;\n\nexport function defineHandler<\n TAppContext extends Record<string, unknown> = AppContext,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n>(options: {\n query?: Schema<TQuery>;\n params?: Schema<TParams>;\n body?: Schema<TBody>;\n}): HandlerBuilder<readonly [], { query: TQuery; params: TParams; body: TBody }, {}, TAppContext>;\n\nexport function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(\n options?: SchemaValidators,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n return createHandlerBuilder<TAppContext>(options ?? {}, [], {});\n}\n"],"mappings":";;;AAYA,SAAS,qBACP,YACA,aACA,YAC8D;CAC9D,MAAM,UAAU;EACd,QAAQ,KAAiB;GACvB,OAAO,qBAAkC,YAAY,aAAa;IAAE,GAAG;IAAY,GAAG;GAAI,CAAC;EAC7F;EACA,IAAI,eAAqC;GACvC,YAAY,KAAK,aAAa;GAC9B,OAAO;EACT;EACA,QAAQ,IAA+B;GAErC,MAAM,gBAAgB;IAAE,IAAA,GAAA,sBAAA,8BAAA,CADwB,WACrB;IAAW,GAAG;GAAW;GAQpD,OAAO;IANL,QAAQ,EAAE,QAAQ,KAAA,EAAiC;IACnD,aAAa,CAAC,GAAG,WAAW;IAC5B,SAAS;IACT,GAAG,mBAAA,mBAAmB,UAAU;IAChC,GAAI,OAAO,KAAK,aAAa,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,cAAc,IAAI,CAAC;GAErE;EACT;CACF;CAEA,OAAO;AACT;AAiBA,SAAgB,cACd,SAC8D;CAC9D,OAAO,qBAAkC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { HandlerBuilder } from '../types/index.js';
|
|
2
|
-
import { AppContext } from '../types/units.js';
|
|
3
|
-
import { Schema } from '../types/schema.js';
|
|
4
|
-
export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;
|
|
5
|
-
export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
|
|
6
|
-
query?: Schema<TQuery>;
|
|
7
|
-
params?: Schema<TParams>;
|
|
8
|
-
body?: Schema<TBody>;
|
|
9
|
-
}): HandlerBuilder<readonly [], {
|
|
10
|
-
query: TQuery;
|
|
11
|
-
params: TParams;
|
|
12
|
-
body: TBody;
|
|
13
|
-
}, {}, TAppContext>;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
const require_middleware = require("../define/middleware.cjs");
|
|
2
|
-
let _taserjs_router_core = require("@taserjs/router-core");
|
|
3
|
-
//#region src/middleware/wrap-hono.ts
|
|
4
|
-
function wrapHonoMiddleware(honoFactory) {
|
|
5
|
-
return (...args) => require_middleware.defineMiddleware(honoFactory(...args));
|
|
6
|
-
}
|
|
7
|
-
/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */
|
|
8
|
-
function extractJwtPayload(honoMw) {
|
|
9
|
-
const taserHandler = (0, _taserjs_router_core.createTaserCompatHandler)(honoMw);
|
|
10
|
-
return (ctx, next) => taserHandler(ctx, async () => {
|
|
11
|
-
const payload = ctx.var.jwtPayload;
|
|
12
|
-
return next({ jwtPayload: payload });
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
exports.extractJwtPayload = extractJwtPayload;
|
|
17
|
-
exports.wrapHonoMiddleware = wrapHonoMiddleware;
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=wrap-hono.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrap-hono.cjs","names":[],"sources":["../../../src/middleware/wrap-hono.ts"],"sourcesContent":["import { createTaserCompatHandler } from \"@taserjs/router-core\";\nimport type { MiddlewareHandler } from \"hono\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport type { MiddlewareReturnFromParts, MiddlewareUnit } from \"../types/units.js\";\n\nexport function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(\n honoFactory: F,\n): (\n ...args: Parameters<F>\n) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>> {\n return (...args) => defineMiddleware(honoFactory(...args));\n}\n\n/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */\nexport function extractJwtPayload<TPayload>(\n honoMw: MiddlewareHandler,\n): (ctx: unknown, next: (state: { jwtPayload: TPayload }) => unknown) => unknown {\n const taserHandler = createTaserCompatHandler(honoMw);\n return (ctx, next) =>\n taserHandler(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n });\n}\n"],"mappings":";;;AAMA,SAAgB,mBACd,aAG4E;CAC5E,QAAQ,GAAG,SAAS,mBAAA,iBAAiB,YAAY,GAAG,IAAI,CAAC;AAC3D;;AAGA,SAAgB,kBACd,QAC+E;CAC/E,MAAM,gBAAA,GAAA,qBAAA,yBAAA,CAAwC,MAAM;CACpD,QAAQ,KAAK,SACX,aAAa,KAAK,YAAY;EAC5B,MAAM,UAAW,IAAqD,IAAI;EAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;CACjD,CAAC;AACL"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { MiddlewareHandler } from 'hono';
|
|
2
|
-
import { MiddlewareReturnFromParts, MiddlewareUnit } from '../types/units.js';
|
|
3
|
-
export declare function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(honoFactory: F): (...args: Parameters<F>) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
|
|
4
|
-
/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */
|
|
5
|
-
export declare function extractJwtPayload<TPayload>(honoMw: MiddlewareHandler): (ctx: unknown, next: (state: {
|
|
6
|
-
jwtPayload: TPayload;
|
|
7
|
-
}) => unknown) => unknown;
|
package/dist/cjs/register.d.cts
DELETED
package/dist/cjs/types/units.cjs
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
//#region src/types/units.ts
|
|
2
|
-
function isHandlerUnit(value) {
|
|
3
|
-
return typeof value === "object" && value !== null && "handler" in value && "middlewares" in value && Array.isArray(value.middlewares);
|
|
4
|
-
}
|
|
5
|
-
//#endregion
|
|
6
|
-
exports.isHandlerUnit = isHandlerUnit;
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=units.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"units.cjs","names":[],"sources":["../../../src/types/units.ts"],"sourcesContent":["import type {\n Awaitable,\n MiddlewareDefinition as CoreMiddlewareDefinition,\n TaserCookieJar,\n TaserHeaders,\n} from \"@taserjs/router-core\";\n\nimport type {\n MergeMiddlewareField,\n MergePart,\n RequestShape,\n Simplify,\n UnitRuntimeContext,\n UnwrapPart,\n} from \"./type-utils.js\";\nimport type { ReturnsMap } from \"./returns.js\";\nimport type { Schema } from \"./schema.js\";\n\nexport type { HttpMethod, Method } from \"./type-utils.js\";\nexport type {\n EmptyReturns,\n MergeReturns,\n ReturnsMap,\n HandlerReply,\n HasReturns,\n StatusCode,\n ValidHandlerReply,\n EnforceHandlerReply,\n} from \"./returns.js\";\n\n/** Default empty app context for standalone units without a bound router instance. */\nexport type AppContext = Record<never, never>;\n\nexport type ValidatorParts = {\n query?: unknown;\n params?: unknown;\n body?: unknown;\n queryIn?: unknown;\n paramsIn?: unknown;\n bodyIn?: unknown;\n};\n\nexport declare const StateBrand: unique symbol;\n\nexport type NextResult<TState = unknown> = Response & {\n readonly [StateBrand]?: TState;\n};\n\nexport type ExtractState<T> = [Extract<Awaited<T>, { [StateBrand]?: unknown }>] extends [never]\n ? {}\n : Extract<Awaited<T>, { [StateBrand]?: unknown }> extends { [StateBrand]?: infer S }\n ? [S] extends [never]\n ? {}\n : S\n : {};\n\nexport type IsUnknown<T> = [unknown] extends [T] ? true : false;\n\nexport type NextFn<TExpectedState = unknown> =\n IsUnknown<TExpectedState> extends true\n ? <S extends Record<string, unknown> = {}>(state?: S) => Promise<NextResult<S>>\n : (state: TExpectedState) => Promise<NextResult<TExpectedState>>;\n\nexport type MiddlewareNext = NextFn;\n\nexport type MiddlewareDefinition = CoreMiddlewareDefinition<ReturnsMap>;\n\nexport type MiddlewareReturnFromParts<\n TQuery,\n TParams,\n TBody,\n TState,\n TQueryIn = TQuery,\n TParamsIn = TParams,\n TBodyIn = TBody,\n> = {\n query: Simplify<UnwrapPart<TQuery>>;\n params: Simplify<UnwrapPart<TParams>>;\n body: Simplify<UnwrapPart<TBody>>;\n state: Simplify<UnwrapPart<TState>>;\n /** Pre-parse shapes merged into route `$Infer.Input`. */\n input: {\n query: RequestShape<TQueryIn, TQuery>;\n params: RequestShape<TParamsIn, TParams>;\n body: RequestShape<TBodyIn, TBody>;\n };\n};\n\nexport type DefineMiddlewareResult<\n TQuery,\n TParams,\n TBody,\n TState,\n R,\n TQueryIn = TQuery,\n TParamsIn = TParams,\n TBodyIn = TBody,\n TReturns extends ReturnsMap = {},\n TLayout = null,\n TRequires = {},\n> = MiddlewareUnit<\n MiddlewareReturnFromParts<\n TQuery,\n TParams,\n TBody,\n IsUnknown<TState> extends true ? ExtractState<R> : TState,\n TQueryIn,\n TParamsIn,\n TBodyIn\n >,\n TReturns,\n TLayout,\n TRequires\n>;\n\nexport type StandaloneMiddlewareContext<\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TAppContext extends Record<string, unknown> = AppContext,\n TState = {},\n> = Simplify<\n TAppContext &\n UnitRuntimeContext & {\n query: Simplify<UnwrapPart<TQuery>>;\n params: Simplify<UnwrapPart<TParams>>;\n body: Simplify<UnwrapPart<TBody>>;\n state: Simplify<UnwrapPart<TState>>;\n headers: TaserHeaders;\n cookies: TaserCookieJar;\n }\n>;\n\nexport type HandlerContext<\n Acc extends readonly unknown[],\n Validators extends ValidatorParts,\n TAppContext extends Record<string, unknown> = AppContext,\n> = Simplify<\n TAppContext &\n UnitRuntimeContext & {\n query: Simplify<\n MergePart<\n Validators extends { query?: infer Q } ? Q : unknown,\n MergeMiddlewareField<Acc, \"query\">\n >\n >;\n params: Simplify<\n MergePart<\n Validators extends { params?: infer P } ? P : unknown,\n MergeMiddlewareField<Acc, \"params\">\n >\n >;\n body: Simplify<\n MergePart<\n Validators extends { body?: infer B } ? B : unknown,\n MergeMiddlewareField<Acc, \"body\">\n >\n >;\n state: Simplify<MergeMiddlewareField<Acc, \"state\">>;\n headers: TaserHeaders;\n cookies: TaserCookieJar;\n }\n>;\n\nexport type MiddlewareUnit<\n TAcc = unknown,\n TReturns extends ReturnsMap = {},\n TRequiredLayouts = unknown,\n TRequiredState = unknown,\n> = MiddlewareDefinition & {\n readonly __middlewareAcc: TAcc;\n readonly __returns?: TReturns;\n readonly __requiredLayouts?: TRequiredLayouts;\n readonly __requiredState?: TRequiredState;\n};\n\nexport type HandlerUnit<\n _Acc extends readonly unknown[],\n _Validators extends ValidatorParts,\n TReturns extends ReturnsMap = {},\n TOutput = Response,\n> = {\n readonly __returns?: TReturns;\n readonly $Infer: {\n Output: TOutput;\n };\n middlewares: readonly MiddlewareDefinition[];\n handler: (ctx: unknown) => Awaitable<Response>;\n returns?: ReturnsMap;\n query?: Schema<unknown>;\n params?: Schema<unknown>;\n body?: Schema<unknown>;\n};\n\nexport type InlineMiddlewareOptions<\n Ctx = unknown,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n R = unknown,\n> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n body?: Schema<TBody, TBodyIn>;\n returns?: TReturns;\n handler: (ctx: Ctx, next: NextFn) => Awaitable<R>;\n};\n\nexport function isHandlerUnit(\n value: unknown,\n): value is HandlerUnit<readonly unknown[], ValidatorParts> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"handler\" in value &&\n \"middlewares\" in value &&\n Array.isArray((value as HandlerUnit<readonly unknown[], ValidatorParts>).middlewares)\n );\n}\n"],"mappings":";AAoNA,SAAgB,cACd,OAC0D;CAC1D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,iBAAiB,SACjB,MAAM,QAAS,MAA0D,WAAW;AAExF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { HandlerBuilder } from '../types/index.js';
|
|
2
|
-
import { AppContext } from '../types/units.js';
|
|
3
|
-
import { Schema } from '../types/schema.js';
|
|
4
|
-
export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;
|
|
5
|
-
export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
|
|
6
|
-
query?: Schema<TQuery>;
|
|
7
|
-
params?: Schema<TParams>;
|
|
8
|
-
body?: Schema<TBody>;
|
|
9
|
-
}): HandlerBuilder<readonly [], {
|
|
10
|
-
query: TQuery;
|
|
11
|
-
params: TParams;
|
|
12
|
-
body: TBody;
|
|
13
|
-
}, {}, TAppContext>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { pickDefinedSchemas } from "./validators.js";
|
|
2
|
-
import { collectReturnsFromDefinitions } from "@taserjs/router-utils";
|
|
3
|
-
//#region src/define/handler.ts
|
|
4
|
-
function createHandlerBuilder(validators, middlewares, returnsMap) {
|
|
5
|
-
const builder = {
|
|
6
|
-
returns(map) {
|
|
7
|
-
return createHandlerBuilder(validators, middlewares, {
|
|
8
|
-
...returnsMap,
|
|
9
|
-
...map
|
|
10
|
-
});
|
|
11
|
-
},
|
|
12
|
-
use(unitOrOptions) {
|
|
13
|
-
middlewares.push(unitOrOptions);
|
|
14
|
-
return builder;
|
|
15
|
-
},
|
|
16
|
-
handler(fn) {
|
|
17
|
-
const mergedReturns = {
|
|
18
|
-
...collectReturnsFromDefinitions(middlewares),
|
|
19
|
-
...returnsMap
|
|
20
|
-
};
|
|
21
|
-
return {
|
|
22
|
-
$Infer: { Output: void 0 },
|
|
23
|
-
middlewares: [...middlewares],
|
|
24
|
-
handler: fn,
|
|
25
|
-
...pickDefinedSchemas(validators),
|
|
26
|
-
...Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
return builder;
|
|
31
|
-
}
|
|
32
|
-
function defineHandler(options) {
|
|
33
|
-
return createHandlerBuilder(options ?? {}, [], {});
|
|
34
|
-
}
|
|
35
|
-
//#endregion
|
|
36
|
-
export { defineHandler };
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","names":[],"sources":["../../../src/define/handler.ts"],"sourcesContent":["import type { HandlerBuilder } from \"../types/index.js\";\nimport type {\n AppContext,\n HandlerUnit,\n MiddlewareDefinition,\n ReturnsMap,\n ValidatorParts,\n} from \"../types/units.js\";\nimport type { Schema } from \"../types/schema.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"./validators.js\";\nimport { collectReturnsFromDefinitions } from \"@taserjs/router-utils\";\n\nfunction createHandlerBuilder<TAppContext extends Record<string, unknown> = AppContext>(\n validators: SchemaValidators,\n middlewares: MiddlewareDefinition[],\n returnsMap: ReturnsMap,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n const builder = {\n returns(map: ReturnsMap) {\n return createHandlerBuilder<TAppContext>(validators, middlewares, { ...returnsMap, ...map });\n },\n use(unitOrOptions: MiddlewareDefinition) {\n middlewares.push(unitOrOptions);\n return builder;\n },\n handler(fn: (ctx: unknown) => unknown) {\n const mwReturns = collectReturnsFromDefinitions(middlewares);\n const mergedReturns = { ...mwReturns, ...returnsMap };\n const unit = {\n $Infer: { Output: undefined as unknown as Response },\n middlewares: [...middlewares],\n handler: fn as HandlerUnit<readonly [], ValidatorParts>[\"handler\"],\n ...pickDefinedSchemas(validators),\n ...(Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}),\n } as HandlerUnit<readonly [], ValidatorParts>;\n return unit;\n },\n };\n\n return builder as unknown as HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext>;\n}\n\nexport function defineHandler<\n TAppContext extends Record<string, unknown> = AppContext,\n>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;\n\nexport function defineHandler<\n TAppContext extends Record<string, unknown> = AppContext,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n>(options: {\n query?: Schema<TQuery>;\n params?: Schema<TParams>;\n body?: Schema<TBody>;\n}): HandlerBuilder<readonly [], { query: TQuery; params: TParams; body: TBody }, {}, TAppContext>;\n\nexport function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(\n options?: SchemaValidators,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n return createHandlerBuilder<TAppContext>(options ?? {}, [], {});\n}\n"],"mappings":";;;AAYA,SAAS,qBACP,YACA,aACA,YAC8D;CAC9D,MAAM,UAAU;EACd,QAAQ,KAAiB;GACvB,OAAO,qBAAkC,YAAY,aAAa;IAAE,GAAG;IAAY,GAAG;GAAI,CAAC;EAC7F;EACA,IAAI,eAAqC;GACvC,YAAY,KAAK,aAAa;GAC9B,OAAO;EACT;EACA,QAAQ,IAA+B;GAErC,MAAM,gBAAgB;IAAE,GADN,8BAA8B,WACrB;IAAW,GAAG;GAAW;GAQpD,OAAO;IANL,QAAQ,EAAE,QAAQ,KAAA,EAAiC;IACnD,aAAa,CAAC,GAAG,WAAW;IAC5B,SAAS;IACT,GAAG,mBAAmB,UAAU;IAChC,GAAI,OAAO,KAAK,aAAa,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,cAAc,IAAI,CAAC;GAErE;EACT;CACF;CAEA,OAAO;AACT;AAiBA,SAAgB,cACd,SAC8D;CAC9D,OAAO,qBAAkC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { MiddlewareHandler } from 'hono';
|
|
2
|
-
import { MiddlewareReturnFromParts, MiddlewareUnit } from '../types/units.js';
|
|
3
|
-
export declare function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(honoFactory: F): (...args: Parameters<F>) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
|
|
4
|
-
/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */
|
|
5
|
-
export declare function extractJwtPayload<TPayload>(honoMw: MiddlewareHandler): (ctx: unknown, next: (state: {
|
|
6
|
-
jwtPayload: TPayload;
|
|
7
|
-
}) => unknown) => unknown;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { defineMiddleware } from "../define/middleware.js";
|
|
2
|
-
import { createTaserCompatHandler } from "@taserjs/router-core";
|
|
3
|
-
//#region src/middleware/wrap-hono.ts
|
|
4
|
-
function wrapHonoMiddleware(honoFactory) {
|
|
5
|
-
return (...args) => defineMiddleware(honoFactory(...args));
|
|
6
|
-
}
|
|
7
|
-
/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */
|
|
8
|
-
function extractJwtPayload(honoMw) {
|
|
9
|
-
const taserHandler = createTaserCompatHandler(honoMw);
|
|
10
|
-
return (ctx, next) => taserHandler(ctx, async () => {
|
|
11
|
-
const payload = ctx.var.jwtPayload;
|
|
12
|
-
return next({ jwtPayload: payload });
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { extractJwtPayload, wrapHonoMiddleware };
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=wrap-hono.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrap-hono.js","names":[],"sources":["../../../src/middleware/wrap-hono.ts"],"sourcesContent":["import { createTaserCompatHandler } from \"@taserjs/router-core\";\nimport type { MiddlewareHandler } from \"hono\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport type { MiddlewareReturnFromParts, MiddlewareUnit } from \"../types/units.js\";\n\nexport function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(\n honoFactory: F,\n): (\n ...args: Parameters<F>\n) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>> {\n return (...args) => defineMiddleware(honoFactory(...args));\n}\n\n/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */\nexport function extractJwtPayload<TPayload>(\n honoMw: MiddlewareHandler,\n): (ctx: unknown, next: (state: { jwtPayload: TPayload }) => unknown) => unknown {\n const taserHandler = createTaserCompatHandler(honoMw);\n return (ctx, next) =>\n taserHandler(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n });\n}\n"],"mappings":";;;AAMA,SAAgB,mBACd,aAG4E;CAC5E,QAAQ,GAAG,SAAS,iBAAiB,YAAY,GAAG,IAAI,CAAC;AAC3D;;AAGA,SAAgB,kBACd,QAC+E;CAC/E,MAAM,eAAe,yBAAyB,MAAM;CACpD,QAAQ,KAAK,SACX,aAAa,KAAK,YAAY;EAC5B,MAAM,UAAW,IAAqD,IAAI;EAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;CACjD,CAAC;AACL"}
|
package/dist/esm/register.d.ts
DELETED
package/dist/esm/types/units.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
//#region src/types/units.ts
|
|
2
|
-
function isHandlerUnit(value) {
|
|
3
|
-
return typeof value === "object" && value !== null && "handler" in value && "middlewares" in value && Array.isArray(value.middlewares);
|
|
4
|
-
}
|
|
5
|
-
//#endregion
|
|
6
|
-
export { isHandlerUnit };
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=units.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"units.js","names":[],"sources":["../../../src/types/units.ts"],"sourcesContent":["import type {\n Awaitable,\n MiddlewareDefinition as CoreMiddlewareDefinition,\n TaserCookieJar,\n TaserHeaders,\n} from \"@taserjs/router-core\";\n\nimport type {\n MergeMiddlewareField,\n MergePart,\n RequestShape,\n Simplify,\n UnitRuntimeContext,\n UnwrapPart,\n} from \"./type-utils.js\";\nimport type { ReturnsMap } from \"./returns.js\";\nimport type { Schema } from \"./schema.js\";\n\nexport type { HttpMethod, Method } from \"./type-utils.js\";\nexport type {\n EmptyReturns,\n MergeReturns,\n ReturnsMap,\n HandlerReply,\n HasReturns,\n StatusCode,\n ValidHandlerReply,\n EnforceHandlerReply,\n} from \"./returns.js\";\n\n/** Default empty app context for standalone units without a bound router instance. */\nexport type AppContext = Record<never, never>;\n\nexport type ValidatorParts = {\n query?: unknown;\n params?: unknown;\n body?: unknown;\n queryIn?: unknown;\n paramsIn?: unknown;\n bodyIn?: unknown;\n};\n\nexport declare const StateBrand: unique symbol;\n\nexport type NextResult<TState = unknown> = Response & {\n readonly [StateBrand]?: TState;\n};\n\nexport type ExtractState<T> = [Extract<Awaited<T>, { [StateBrand]?: unknown }>] extends [never]\n ? {}\n : Extract<Awaited<T>, { [StateBrand]?: unknown }> extends { [StateBrand]?: infer S }\n ? [S] extends [never]\n ? {}\n : S\n : {};\n\nexport type IsUnknown<T> = [unknown] extends [T] ? true : false;\n\nexport type NextFn<TExpectedState = unknown> =\n IsUnknown<TExpectedState> extends true\n ? <S extends Record<string, unknown> = {}>(state?: S) => Promise<NextResult<S>>\n : (state: TExpectedState) => Promise<NextResult<TExpectedState>>;\n\nexport type MiddlewareNext = NextFn;\n\nexport type MiddlewareDefinition = CoreMiddlewareDefinition<ReturnsMap>;\n\nexport type MiddlewareReturnFromParts<\n TQuery,\n TParams,\n TBody,\n TState,\n TQueryIn = TQuery,\n TParamsIn = TParams,\n TBodyIn = TBody,\n> = {\n query: Simplify<UnwrapPart<TQuery>>;\n params: Simplify<UnwrapPart<TParams>>;\n body: Simplify<UnwrapPart<TBody>>;\n state: Simplify<UnwrapPart<TState>>;\n /** Pre-parse shapes merged into route `$Infer.Input`. */\n input: {\n query: RequestShape<TQueryIn, TQuery>;\n params: RequestShape<TParamsIn, TParams>;\n body: RequestShape<TBodyIn, TBody>;\n };\n};\n\nexport type DefineMiddlewareResult<\n TQuery,\n TParams,\n TBody,\n TState,\n R,\n TQueryIn = TQuery,\n TParamsIn = TParams,\n TBodyIn = TBody,\n TReturns extends ReturnsMap = {},\n TLayout = null,\n TRequires = {},\n> = MiddlewareUnit<\n MiddlewareReturnFromParts<\n TQuery,\n TParams,\n TBody,\n IsUnknown<TState> extends true ? ExtractState<R> : TState,\n TQueryIn,\n TParamsIn,\n TBodyIn\n >,\n TReturns,\n TLayout,\n TRequires\n>;\n\nexport type StandaloneMiddlewareContext<\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TAppContext extends Record<string, unknown> = AppContext,\n TState = {},\n> = Simplify<\n TAppContext &\n UnitRuntimeContext & {\n query: Simplify<UnwrapPart<TQuery>>;\n params: Simplify<UnwrapPart<TParams>>;\n body: Simplify<UnwrapPart<TBody>>;\n state: Simplify<UnwrapPart<TState>>;\n headers: TaserHeaders;\n cookies: TaserCookieJar;\n }\n>;\n\nexport type HandlerContext<\n Acc extends readonly unknown[],\n Validators extends ValidatorParts,\n TAppContext extends Record<string, unknown> = AppContext,\n> = Simplify<\n TAppContext &\n UnitRuntimeContext & {\n query: Simplify<\n MergePart<\n Validators extends { query?: infer Q } ? Q : unknown,\n MergeMiddlewareField<Acc, \"query\">\n >\n >;\n params: Simplify<\n MergePart<\n Validators extends { params?: infer P } ? P : unknown,\n MergeMiddlewareField<Acc, \"params\">\n >\n >;\n body: Simplify<\n MergePart<\n Validators extends { body?: infer B } ? B : unknown,\n MergeMiddlewareField<Acc, \"body\">\n >\n >;\n state: Simplify<MergeMiddlewareField<Acc, \"state\">>;\n headers: TaserHeaders;\n cookies: TaserCookieJar;\n }\n>;\n\nexport type MiddlewareUnit<\n TAcc = unknown,\n TReturns extends ReturnsMap = {},\n TRequiredLayouts = unknown,\n TRequiredState = unknown,\n> = MiddlewareDefinition & {\n readonly __middlewareAcc: TAcc;\n readonly __returns?: TReturns;\n readonly __requiredLayouts?: TRequiredLayouts;\n readonly __requiredState?: TRequiredState;\n};\n\nexport type HandlerUnit<\n _Acc extends readonly unknown[],\n _Validators extends ValidatorParts,\n TReturns extends ReturnsMap = {},\n TOutput = Response,\n> = {\n readonly __returns?: TReturns;\n readonly $Infer: {\n Output: TOutput;\n };\n middlewares: readonly MiddlewareDefinition[];\n handler: (ctx: unknown) => Awaitable<Response>;\n returns?: ReturnsMap;\n query?: Schema<unknown>;\n params?: Schema<unknown>;\n body?: Schema<unknown>;\n};\n\nexport type InlineMiddlewareOptions<\n Ctx = unknown,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n R = unknown,\n> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n body?: Schema<TBody, TBodyIn>;\n returns?: TReturns;\n handler: (ctx: Ctx, next: NextFn) => Awaitable<R>;\n};\n\nexport function isHandlerUnit(\n value: unknown,\n): value is HandlerUnit<readonly unknown[], ValidatorParts> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"handler\" in value &&\n \"middlewares\" in value &&\n Array.isArray((value as HandlerUnit<readonly unknown[], ValidatorParts>).middlewares)\n );\n}\n"],"mappings":";AAoNA,SAAgB,cACd,OAC0D;CAC1D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,iBAAiB,SACjB,MAAM,QAAS,MAA0D,WAAW;AAExF"}
|
package/src/define/handler.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { HandlerBuilder } from "../types/index.js";
|
|
2
|
-
import type {
|
|
3
|
-
AppContext,
|
|
4
|
-
HandlerUnit,
|
|
5
|
-
MiddlewareDefinition,
|
|
6
|
-
ReturnsMap,
|
|
7
|
-
ValidatorParts,
|
|
8
|
-
} from "../types/units.js";
|
|
9
|
-
import type { Schema } from "../types/schema.js";
|
|
10
|
-
import { pickDefinedSchemas, type SchemaValidators } from "./validators.js";
|
|
11
|
-
import { collectReturnsFromDefinitions } from "@taserjs/router-utils";
|
|
12
|
-
|
|
13
|
-
function createHandlerBuilder<TAppContext extends Record<string, unknown> = AppContext>(
|
|
14
|
-
validators: SchemaValidators,
|
|
15
|
-
middlewares: MiddlewareDefinition[],
|
|
16
|
-
returnsMap: ReturnsMap,
|
|
17
|
-
): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {
|
|
18
|
-
const builder = {
|
|
19
|
-
returns(map: ReturnsMap) {
|
|
20
|
-
return createHandlerBuilder<TAppContext>(validators, middlewares, { ...returnsMap, ...map });
|
|
21
|
-
},
|
|
22
|
-
use(unitOrOptions: MiddlewareDefinition) {
|
|
23
|
-
middlewares.push(unitOrOptions);
|
|
24
|
-
return builder;
|
|
25
|
-
},
|
|
26
|
-
handler(fn: (ctx: unknown) => unknown) {
|
|
27
|
-
const mwReturns = collectReturnsFromDefinitions(middlewares);
|
|
28
|
-
const mergedReturns = { ...mwReturns, ...returnsMap };
|
|
29
|
-
const unit = {
|
|
30
|
-
$Infer: { Output: undefined as unknown as Response },
|
|
31
|
-
middlewares: [...middlewares],
|
|
32
|
-
handler: fn as HandlerUnit<readonly [], ValidatorParts>["handler"],
|
|
33
|
-
...pickDefinedSchemas(validators),
|
|
34
|
-
...(Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}),
|
|
35
|
-
} as HandlerUnit<readonly [], ValidatorParts>;
|
|
36
|
-
return unit;
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
return builder as unknown as HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext>;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function defineHandler<
|
|
44
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
45
|
-
>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;
|
|
46
|
-
|
|
47
|
-
export function defineHandler<
|
|
48
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
49
|
-
TQuery = unknown,
|
|
50
|
-
TParams = unknown,
|
|
51
|
-
TBody = unknown,
|
|
52
|
-
>(options: {
|
|
53
|
-
query?: Schema<TQuery>;
|
|
54
|
-
params?: Schema<TParams>;
|
|
55
|
-
body?: Schema<TBody>;
|
|
56
|
-
}): HandlerBuilder<readonly [], { query: TQuery; params: TParams; body: TBody }, {}, TAppContext>;
|
|
57
|
-
|
|
58
|
-
export function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(
|
|
59
|
-
options?: SchemaValidators,
|
|
60
|
-
): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {
|
|
61
|
-
return createHandlerBuilder<TAppContext>(options ?? {}, [], {});
|
|
62
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { createTaserCompatHandler } from "@taserjs/router-core";
|
|
2
|
-
import type { MiddlewareHandler } from "hono";
|
|
3
|
-
|
|
4
|
-
import { defineMiddleware } from "../define/middleware.js";
|
|
5
|
-
import type { MiddlewareReturnFromParts, MiddlewareUnit } from "../types/units.js";
|
|
6
|
-
|
|
7
|
-
export function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(
|
|
8
|
-
honoFactory: F,
|
|
9
|
-
): (
|
|
10
|
-
...args: Parameters<F>
|
|
11
|
-
) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>> {
|
|
12
|
-
return (...args) => defineMiddleware(honoFactory(...args));
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */
|
|
16
|
-
export function extractJwtPayload<TPayload>(
|
|
17
|
-
honoMw: MiddlewareHandler,
|
|
18
|
-
): (ctx: unknown, next: (state: { jwtPayload: TPayload }) => unknown) => unknown {
|
|
19
|
-
const taserHandler = createTaserCompatHandler(honoMw);
|
|
20
|
-
return (ctx, next) =>
|
|
21
|
-
taserHandler(ctx, async () => {
|
|
22
|
-
const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;
|
|
23
|
-
return next({ jwtPayload: payload as TPayload });
|
|
24
|
-
});
|
|
25
|
-
}
|
package/src/register.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export interface RouterRegister {}
|