@taserjs/router 0.0.2 → 0.0.4
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 +18 -27
- package/dist/cjs/define/middleware.cjs.map +1 -1
- package/dist/cjs/define/middleware.d.cts +27 -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 +1 -2
- package/dist/cjs/index.d.cts +1 -1
- 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.d.cts +1 -1
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +1 -1
- package/dist/cjs/stream.d.cts +1 -1
- 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 +94 -143
- package/dist/cjs/types/type-utils.d.cts +8 -10
- package/dist/cjs/types/units.cjs.map +1 -1
- package/dist/cjs/types/units.d.cts +32 -27
- 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 +27 -79
- package/dist/esm/define/middleware.js +18 -27
- 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 +1 -1
- package/dist/esm/index.js +3 -3
- 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 +1 -1
- package/dist/esm/route.d.ts +1 -1
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/stream.d.ts +1 -1
- 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 +94 -143
- package/dist/esm/types/type-utils.d.ts +8 -10
- package/dist/esm/types/units.d.ts +32 -27
- package/dist/esm/types/units.js.map +1 -1
- package/package.json +17 -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 +222 -222
- package/src/define/validators.ts +10 -10
- package/src/factories.ts +63 -61
- package/src/index.ts +12 -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 +2 -6
- package/src/route.ts +45 -48
- package/src/stream.ts +1 -7
- 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 +403 -731
- package/src/types/returns.ts +92 -97
- package/src/types/schema.ts +8 -9
- package/src/types/type-utils.ts +42 -45
- package/src/types/units.ts +140 -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/types/units.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Awaitable, TaserCookieJar, TaserHeaders } from
|
|
2
|
-
import type { ReplyResult } from
|
|
1
|
+
import type { Awaitable, TaserCookieJar, TaserHeaders } from "@taserjs/router-core";
|
|
2
|
+
import type { ReplyResult } from "@taserjs/router-utils";
|
|
3
3
|
|
|
4
|
-
import type { RouterRegister } from
|
|
4
|
+
import type { RouterRegister } from "../register.js";
|
|
5
5
|
import type {
|
|
6
6
|
MergeMiddlewareField,
|
|
7
7
|
MergePart,
|
|
@@ -9,119 +9,150 @@ import type {
|
|
|
9
9
|
RuntimeContextFields,
|
|
10
10
|
Simplify,
|
|
11
11
|
UnwrapPart,
|
|
12
|
-
} from
|
|
13
|
-
import type { ReturnsMap } from
|
|
14
|
-
import type { Schema } from
|
|
12
|
+
} from "./type-utils.js";
|
|
13
|
+
import type { ReturnsMap } from "./returns.js";
|
|
14
|
+
import type { Schema } from "./schema.js";
|
|
15
15
|
|
|
16
|
-
export type { HttpMethod, Method } from
|
|
17
|
-
export type {
|
|
16
|
+
export type { HttpMethod, Method } from "./type-utils.js";
|
|
17
|
+
export type {
|
|
18
|
+
EmptyReturns,
|
|
19
|
+
MergeReturns,
|
|
20
|
+
ReturnsMap,
|
|
21
|
+
HandlerReply,
|
|
22
|
+
HasReturns,
|
|
23
|
+
StatusCode,
|
|
24
|
+
ValidHandlerReply,
|
|
25
|
+
EnforceHandlerReply,
|
|
26
|
+
} from "./returns.js";
|
|
18
27
|
|
|
19
28
|
/** Default empty app context for standalone units without a bound router instance. */
|
|
20
|
-
export type AppContext = Record<never, never
|
|
29
|
+
export type AppContext = Record<never, never>;
|
|
21
30
|
|
|
22
|
-
export type NativeContext = RouterRegister extends { NativeContext: infer N } ? N : unknown
|
|
31
|
+
export type NativeContext = RouterRegister extends { NativeContext: infer N } ? N : unknown;
|
|
23
32
|
|
|
24
33
|
export type ValidatorParts = {
|
|
25
|
-
query?: unknown
|
|
26
|
-
params?: unknown
|
|
27
|
-
body?: unknown
|
|
28
|
-
queryIn?: unknown
|
|
29
|
-
paramsIn?: unknown
|
|
30
|
-
bodyIn?: unknown
|
|
31
|
-
}
|
|
34
|
+
query?: unknown;
|
|
35
|
+
params?: unknown;
|
|
36
|
+
body?: unknown;
|
|
37
|
+
queryIn?: unknown;
|
|
38
|
+
paramsIn?: unknown;
|
|
39
|
+
bodyIn?: unknown;
|
|
40
|
+
};
|
|
32
41
|
|
|
33
|
-
export
|
|
34
|
-
|
|
35
|
-
|
|
42
|
+
export declare const StateBrand: unique symbol;
|
|
43
|
+
|
|
44
|
+
export type NextResult<TState = unknown> = ReplyResult & {
|
|
45
|
+
readonly [StateBrand]?: TState;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export type ExtractState<T> = [Extract<Awaited<T>, { [StateBrand]?: unknown }>] extends [never]
|
|
49
|
+
? {}
|
|
50
|
+
: Extract<Awaited<T>, { [StateBrand]?: unknown }> extends { [StateBrand]?: infer S }
|
|
51
|
+
? [S] extends [never]
|
|
52
|
+
? {}
|
|
53
|
+
: S
|
|
54
|
+
: {};
|
|
55
|
+
|
|
56
|
+
export type IsUnknown<T> = [unknown] extends [T] ? true : false;
|
|
57
|
+
|
|
58
|
+
export type NextFn<TExpectedState = unknown> =
|
|
59
|
+
IsUnknown<TExpectedState> extends true
|
|
60
|
+
? <S extends Record<string, unknown> = {}>(state?: S) => Promise<NextResult<S>>
|
|
61
|
+
: (state: TExpectedState) => Promise<NextResult<TExpectedState>>;
|
|
62
|
+
|
|
63
|
+
export type MiddlewareNext = NextFn;
|
|
36
64
|
|
|
37
65
|
export type MiddlewareDefinition = {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
handler: (
|
|
45
|
-
ctx: unknown,
|
|
46
|
-
next: MiddlewareNext,
|
|
47
|
-
) => Awaitable<ReplyResult | Response | unknown>
|
|
48
|
-
}
|
|
66
|
+
query?: unknown;
|
|
67
|
+
params?: unknown;
|
|
68
|
+
body?: unknown;
|
|
69
|
+
returns?: ReturnsMap;
|
|
70
|
+
handler: (ctx: unknown, next: MiddlewareNext) => Awaitable<ReplyResult | Response | unknown>;
|
|
71
|
+
};
|
|
49
72
|
|
|
50
73
|
export type MiddlewareReturnFromParts<
|
|
51
74
|
TQuery,
|
|
52
75
|
TParams,
|
|
53
76
|
TBody,
|
|
54
77
|
TState,
|
|
55
|
-
TCtx = unknown,
|
|
56
78
|
TQueryIn = TQuery,
|
|
57
79
|
TParamsIn = TParams,
|
|
58
80
|
TBodyIn = TBody,
|
|
59
81
|
> = {
|
|
60
|
-
query: Simplify<UnwrapPart<TQuery
|
|
61
|
-
params: Simplify<UnwrapPart<TParams
|
|
62
|
-
body: Simplify<UnwrapPart<TBody
|
|
63
|
-
state: Simplify<UnwrapPart<TState
|
|
64
|
-
ctx: Simplify<UnwrapPart<TCtx>>
|
|
82
|
+
query: Simplify<UnwrapPart<TQuery>>;
|
|
83
|
+
params: Simplify<UnwrapPart<TParams>>;
|
|
84
|
+
body: Simplify<UnwrapPart<TBody>>;
|
|
85
|
+
state: Simplify<UnwrapPart<TState>>;
|
|
65
86
|
/** Pre-parse shapes merged into route `$Infer.Input`. */
|
|
66
87
|
input: {
|
|
67
|
-
query: RequestShape<TQueryIn, TQuery
|
|
68
|
-
params: RequestShape<TParamsIn, TParams
|
|
69
|
-
body: RequestShape<TBodyIn, TBody
|
|
70
|
-
}
|
|
71
|
-
}
|
|
88
|
+
query: RequestShape<TQueryIn, TQuery>;
|
|
89
|
+
params: RequestShape<TParamsIn, TParams>;
|
|
90
|
+
body: RequestShape<TBodyIn, TBody>;
|
|
91
|
+
};
|
|
92
|
+
};
|
|
72
93
|
|
|
73
|
-
type UnitRuntimeContext = Omit<RuntimeContextFields<NativeContext>,
|
|
94
|
+
type UnitRuntimeContext = Omit<RuntimeContextFields<NativeContext>, "var">;
|
|
74
95
|
|
|
75
96
|
export type StandaloneMiddlewareContext<
|
|
76
97
|
TQuery = unknown,
|
|
77
98
|
TParams = unknown,
|
|
78
99
|
TBody = unknown,
|
|
79
100
|
TAppContext extends Record<string, unknown> = AppContext,
|
|
101
|
+
TState = {},
|
|
80
102
|
> = Simplify<
|
|
81
|
-
TAppContext &
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
103
|
+
TAppContext &
|
|
104
|
+
UnitRuntimeContext & {
|
|
105
|
+
query: Simplify<UnwrapPart<TQuery>>;
|
|
106
|
+
params: Simplify<UnwrapPart<TParams>>;
|
|
107
|
+
body: Simplify<UnwrapPart<TBody>>;
|
|
108
|
+
state: Simplify<UnwrapPart<TState>>;
|
|
109
|
+
headers: TaserHeaders;
|
|
110
|
+
cookies: TaserCookieJar;
|
|
111
|
+
}
|
|
112
|
+
>;
|
|
90
113
|
|
|
91
114
|
export type HandlerContext<
|
|
92
115
|
Acc extends readonly unknown[],
|
|
93
116
|
Validators extends ValidatorParts,
|
|
94
117
|
TAppContext extends Record<string, unknown> = AppContext,
|
|
95
118
|
> = Simplify<
|
|
96
|
-
TAppContext
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
TAppContext &
|
|
120
|
+
UnitRuntimeContext & {
|
|
121
|
+
query: Simplify<
|
|
122
|
+
MergePart<
|
|
123
|
+
Validators extends { query?: infer Q } ? Q : unknown,
|
|
124
|
+
MergeMiddlewareField<Acc, "query">
|
|
125
|
+
>
|
|
126
|
+
>;
|
|
127
|
+
params: Simplify<
|
|
128
|
+
MergePart<
|
|
129
|
+
Validators extends { params?: infer P } ? P : unknown,
|
|
130
|
+
MergeMiddlewareField<Acc, "params">
|
|
131
|
+
>
|
|
132
|
+
>;
|
|
133
|
+
body: Simplify<
|
|
134
|
+
MergePart<
|
|
135
|
+
Validators extends { body?: infer B } ? B : unknown,
|
|
136
|
+
MergeMiddlewareField<Acc, "body">
|
|
137
|
+
>
|
|
138
|
+
>;
|
|
139
|
+
state: Simplify<MergeMiddlewareField<Acc, "state">>;
|
|
140
|
+
headers: TaserHeaders;
|
|
141
|
+
cookies: TaserCookieJar;
|
|
142
|
+
}
|
|
143
|
+
>;
|
|
117
144
|
|
|
118
145
|
export type MiddlewareUnit<
|
|
119
146
|
TAcc = unknown,
|
|
120
147
|
TReturns extends ReturnsMap = {},
|
|
148
|
+
TRequiredLayouts = unknown,
|
|
149
|
+
TRequiredState = unknown,
|
|
121
150
|
> = MiddlewareDefinition & {
|
|
122
|
-
readonly __middlewareAcc: TAcc
|
|
123
|
-
readonly __returns?: TReturns
|
|
124
|
-
|
|
151
|
+
readonly __middlewareAcc: TAcc;
|
|
152
|
+
readonly __returns?: TReturns;
|
|
153
|
+
readonly __requiredLayouts?: TRequiredLayouts;
|
|
154
|
+
readonly __requiredState?: TRequiredState;
|
|
155
|
+
};
|
|
125
156
|
|
|
126
157
|
export type HandlerUnit<
|
|
127
158
|
_Acc extends readonly unknown[],
|
|
@@ -129,39 +160,44 @@ export type HandlerUnit<
|
|
|
129
160
|
TReturns extends ReturnsMap = {},
|
|
130
161
|
TOutput = Response,
|
|
131
162
|
> = {
|
|
132
|
-
readonly __returns?: TReturns
|
|
163
|
+
readonly __returns?: TReturns;
|
|
133
164
|
readonly $Infer: {
|
|
134
|
-
Output: TOutput
|
|
135
|
-
}
|
|
136
|
-
middlewares: readonly MiddlewareDefinition[]
|
|
137
|
-
handler: (ctx: unknown) => Awaitable<ReplyResult | Response
|
|
138
|
-
returns?: ReturnsMap
|
|
139
|
-
query?: Schema<unknown
|
|
140
|
-
params?: Schema<unknown
|
|
141
|
-
body?: Schema<unknown
|
|
142
|
-
}
|
|
165
|
+
Output: TOutput;
|
|
166
|
+
};
|
|
167
|
+
middlewares: readonly MiddlewareDefinition[];
|
|
168
|
+
handler: (ctx: unknown) => Awaitable<ReplyResult | Response>;
|
|
169
|
+
returns?: ReturnsMap;
|
|
170
|
+
query?: Schema<unknown>;
|
|
171
|
+
params?: Schema<unknown>;
|
|
172
|
+
body?: Schema<unknown>;
|
|
173
|
+
};
|
|
143
174
|
|
|
144
|
-
export type InlineMiddlewareOptions
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
175
|
+
export type InlineMiddlewareOptions<
|
|
176
|
+
Ctx = unknown,
|
|
177
|
+
TQuery = unknown,
|
|
178
|
+
TParams = unknown,
|
|
179
|
+
TBody = unknown,
|
|
180
|
+
TReturns extends ReturnsMap = {},
|
|
181
|
+
TQueryIn = unknown,
|
|
182
|
+
TParamsIn = unknown,
|
|
183
|
+
TBodyIn = unknown,
|
|
184
|
+
R = unknown,
|
|
185
|
+
> = {
|
|
186
|
+
query?: Schema<TQuery, TQueryIn>;
|
|
187
|
+
params?: Schema<TParams, TParamsIn>;
|
|
188
|
+
body?: Schema<TBody, TBodyIn>;
|
|
189
|
+
returns?: TReturns;
|
|
190
|
+
handler: (ctx: Ctx, next: NextFn) => Awaitable<R>;
|
|
191
|
+
};
|
|
156
192
|
|
|
157
193
|
export function isHandlerUnit(
|
|
158
194
|
value: unknown,
|
|
159
195
|
): value is HandlerUnit<readonly unknown[], ValidatorParts> {
|
|
160
196
|
return (
|
|
161
|
-
typeof value ===
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
)
|
|
197
|
+
typeof value === "object" &&
|
|
198
|
+
value !== null &&
|
|
199
|
+
"handler" in value &&
|
|
200
|
+
"middlewares" in value &&
|
|
201
|
+
Array.isArray((value as HandlerUnit<readonly unknown[], ValidatorParts>).middlewares)
|
|
202
|
+
);
|
|
167
203
|
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
const require_middleware = require("../define/middleware.cjs");
|
|
2
|
-
let _taserjs_router_utils = require("@taserjs/router-utils");
|
|
3
|
-
let _taserjs_router_core = require("@taserjs/router-core");
|
|
4
|
-
//#region src/middleware/auth.ts
|
|
5
|
-
function wrapHonoMiddleware(honoFactory) {
|
|
6
|
-
return (...args) => require_middleware.defineMiddleware(honoFactory(...args));
|
|
7
|
-
}
|
|
8
|
-
function asJwtPayloadStateSchema(payloadSchema) {
|
|
9
|
-
return payloadSchema;
|
|
10
|
-
}
|
|
11
|
-
function createAuthMiddleware(payloadSchema, honoMw) {
|
|
12
|
-
return require_middleware.defineMiddleware({
|
|
13
|
-
state: asJwtPayloadStateSchema(payloadSchema),
|
|
14
|
-
handler: (ctx, next) => {
|
|
15
|
-
return (0, _taserjs_router_core.createTaserCompatHandler)(honoMw)(ctx, async () => {
|
|
16
|
-
const payload = ctx.var.jwtPayload;
|
|
17
|
-
try {
|
|
18
|
-
return next({ state: { jwtPayload: await (0, _taserjs_router_utils.validateSchema)(payloadSchema, payload) } });
|
|
19
|
-
} catch (error) {
|
|
20
|
-
if (error instanceof _taserjs_router_utils.ValidationError) return _taserjs_router_utils.reply.forbidden({
|
|
21
|
-
error: "Forbidden",
|
|
22
|
-
issues: error.issues
|
|
23
|
-
});
|
|
24
|
-
throw error;
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
//#endregion
|
|
31
|
-
exports.createAuthMiddleware = createAuthMiddleware;
|
|
32
|
-
exports.wrapHonoMiddleware = wrapHonoMiddleware;
|
|
33
|
-
|
|
34
|
-
//# sourceMappingURL=auth.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.cjs","names":[],"sources":["../../../src/middleware/auth.ts"],"sourcesContent":["import { createTaserCompatHandler } from '@taserjs/router-core'\nimport { reply, validateSchema, ValidationError } from '@taserjs/router-utils'\nimport type { MiddlewareHandler } from 'hono'\n\nimport { defineMiddleware } from '../define/middleware.js'\nimport type { InferOutput, Schema } from '../types/schema.js'\nimport type { MiddlewareReturnFromParts, MiddlewareUnit } from '../types/units.js'\n\nexport function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(\n honoFactory: F,\n): (...args: Parameters<F>) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>> {\n return (...args) => defineMiddleware(honoFactory(...args))\n}\n\nexport type JwtPayloadState<TPayload> = {\n jwtPayload: TPayload\n}\n\nexport type AuthMiddlewareUnit<TPayload> = MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, JwtPayloadState<TPayload>>\n>\n\nfunction asJwtPayloadStateSchema<TPayload>(\n payloadSchema: Schema<TPayload>,\n): Schema<JwtPayloadState<InferOutput<Schema<TPayload>>>> {\n return payloadSchema as unknown as Schema<JwtPayloadState<InferOutput<Schema<TPayload>>>>\n}\n\nexport function createAuthMiddleware<TPayload>(\n payloadSchema: Schema<TPayload>,\n honoMw: MiddlewareHandler,\n): AuthMiddlewareUnit<InferOutput<Schema<TPayload>>> {\n return defineMiddleware({\n state: asJwtPayloadStateSchema(payloadSchema),\n handler: (ctx, next) => {\n return createTaserCompatHandler(honoMw)(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload\n try {\n const validated = await validateSchema(payloadSchema, payload)\n return next({ state: { jwtPayload: validated } })\n }\n catch (error) {\n if (error instanceof ValidationError) {\n return reply.forbidden({ error: 'Forbidden', issues: error.issues })\n }\n throw error\n }\n })\n },\n })\n}\n"],"mappings":";;;;AAQA,SAAgB,mBACd,aACsG;CACtG,QAAQ,GAAG,SAAS,mBAAA,iBAAiB,YAAY,GAAG,IAAI,CAAC;AAC3D;AAUA,SAAS,wBACP,eACwD;CACxD,OAAO;AACT;AAEA,SAAgB,qBACd,eACA,QACmD;CACnD,OAAO,mBAAA,iBAAiB;EACtB,OAAO,wBAAwB,aAAa;EAC5C,UAAU,KAAK,SAAS;GACtB,QAAA,GAAA,qBAAA,yBAAA,CAAgC,MAAM,CAAC,CAAC,KAAK,YAAY;IACvD,MAAM,UAAW,IAAqD,IAAI;IAC1E,IAAI;KAEF,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,OAAA,GAAA,sBAAA,eAAA,CADI,eAAe,OAAO,EAChB,EAAE,CAAC;IAClD,SACO,OAAO;KACZ,IAAI,iBAAiB,sBAAA,iBACnB,OAAO,sBAAA,MAAM,UAAU;MAAE,OAAO;MAAa,QAAQ,MAAM;KAAO,CAAC;KAErE,MAAM;IACR;GACF,CAAC;EACH;CACF,CAAC;AACH"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { MiddlewareHandler } from 'hono';
|
|
2
|
-
import { InferOutput, Schema } from '../types/schema.js';
|
|
3
|
-
import { MiddlewareReturnFromParts, MiddlewareUnit } from '../types/units.js';
|
|
4
|
-
export declare function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(honoFactory: F): (...args: Parameters<F>) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
|
|
5
|
-
export type JwtPayloadState<TPayload> = {
|
|
6
|
-
jwtPayload: TPayload;
|
|
7
|
-
};
|
|
8
|
-
export type AuthMiddlewareUnit<TPayload> = MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, JwtPayloadState<TPayload>>>;
|
|
9
|
-
export declare function createAuthMiddleware<TPayload>(payloadSchema: Schema<TPayload>, honoMw: MiddlewareHandler): AuthMiddlewareUnit<InferOutput<Schema<TPayload>>>;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { MiddlewareHandler } from 'hono';
|
|
2
|
-
import { InferOutput, Schema } from '../types/schema.js';
|
|
3
|
-
import { MiddlewareReturnFromParts, MiddlewareUnit } from '../types/units.js';
|
|
4
|
-
export declare function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(honoFactory: F): (...args: Parameters<F>) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
|
|
5
|
-
export type JwtPayloadState<TPayload> = {
|
|
6
|
-
jwtPayload: TPayload;
|
|
7
|
-
};
|
|
8
|
-
export type AuthMiddlewareUnit<TPayload> = MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, JwtPayloadState<TPayload>>>;
|
|
9
|
-
export declare function createAuthMiddleware<TPayload>(payloadSchema: Schema<TPayload>, honoMw: MiddlewareHandler): AuthMiddlewareUnit<InferOutput<Schema<TPayload>>>;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { defineMiddleware } from "../define/middleware.js";
|
|
2
|
-
import { ValidationError, reply, validateSchema } from "@taserjs/router-utils";
|
|
3
|
-
import { createTaserCompatHandler } from "@taserjs/router-core";
|
|
4
|
-
//#region src/middleware/auth.ts
|
|
5
|
-
function wrapHonoMiddleware(honoFactory) {
|
|
6
|
-
return (...args) => defineMiddleware(honoFactory(...args));
|
|
7
|
-
}
|
|
8
|
-
function asJwtPayloadStateSchema(payloadSchema) {
|
|
9
|
-
return payloadSchema;
|
|
10
|
-
}
|
|
11
|
-
function createAuthMiddleware(payloadSchema, honoMw) {
|
|
12
|
-
return defineMiddleware({
|
|
13
|
-
state: asJwtPayloadStateSchema(payloadSchema),
|
|
14
|
-
handler: (ctx, next) => {
|
|
15
|
-
return createTaserCompatHandler(honoMw)(ctx, async () => {
|
|
16
|
-
const payload = ctx.var.jwtPayload;
|
|
17
|
-
try {
|
|
18
|
-
return next({ state: { jwtPayload: await validateSchema(payloadSchema, payload) } });
|
|
19
|
-
} catch (error) {
|
|
20
|
-
if (error instanceof ValidationError) return reply.forbidden({
|
|
21
|
-
error: "Forbidden",
|
|
22
|
-
issues: error.issues
|
|
23
|
-
});
|
|
24
|
-
throw error;
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
//#endregion
|
|
31
|
-
export { createAuthMiddleware, wrapHonoMiddleware };
|
|
32
|
-
|
|
33
|
-
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","names":[],"sources":["../../../src/middleware/auth.ts"],"sourcesContent":["import { createTaserCompatHandler } from '@taserjs/router-core'\nimport { reply, validateSchema, ValidationError } from '@taserjs/router-utils'\nimport type { MiddlewareHandler } from 'hono'\n\nimport { defineMiddleware } from '../define/middleware.js'\nimport type { InferOutput, Schema } from '../types/schema.js'\nimport type { MiddlewareReturnFromParts, MiddlewareUnit } from '../types/units.js'\n\nexport function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(\n honoFactory: F,\n): (...args: Parameters<F>) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>> {\n return (...args) => defineMiddleware(honoFactory(...args))\n}\n\nexport type JwtPayloadState<TPayload> = {\n jwtPayload: TPayload\n}\n\nexport type AuthMiddlewareUnit<TPayload> = MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, JwtPayloadState<TPayload>>\n>\n\nfunction asJwtPayloadStateSchema<TPayload>(\n payloadSchema: Schema<TPayload>,\n): Schema<JwtPayloadState<InferOutput<Schema<TPayload>>>> {\n return payloadSchema as unknown as Schema<JwtPayloadState<InferOutput<Schema<TPayload>>>>\n}\n\nexport function createAuthMiddleware<TPayload>(\n payloadSchema: Schema<TPayload>,\n honoMw: MiddlewareHandler,\n): AuthMiddlewareUnit<InferOutput<Schema<TPayload>>> {\n return defineMiddleware({\n state: asJwtPayloadStateSchema(payloadSchema),\n handler: (ctx, next) => {\n return createTaserCompatHandler(honoMw)(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload\n try {\n const validated = await validateSchema(payloadSchema, payload)\n return next({ state: { jwtPayload: validated } })\n }\n catch (error) {\n if (error instanceof ValidationError) {\n return reply.forbidden({ error: 'Forbidden', issues: error.issues })\n }\n throw error\n }\n })\n },\n })\n}\n"],"mappings":";;;;AAQA,SAAgB,mBACd,aACsG;CACtG,QAAQ,GAAG,SAAS,iBAAiB,YAAY,GAAG,IAAI,CAAC;AAC3D;AAUA,SAAS,wBACP,eACwD;CACxD,OAAO;AACT;AAEA,SAAgB,qBACd,eACA,QACmD;CACnD,OAAO,iBAAiB;EACtB,OAAO,wBAAwB,aAAa;EAC5C,UAAU,KAAK,SAAS;GACtB,OAAO,yBAAyB,MAAM,CAAC,CAAC,KAAK,YAAY;IACvD,MAAM,UAAW,IAAqD,IAAI;IAC1E,IAAI;KAEF,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,MADX,eAAe,eAAe,OAAO,EAChB,EAAE,CAAC;IAClD,SACO,OAAO;KACZ,IAAI,iBAAiB,iBACnB,OAAO,MAAM,UAAU;MAAE,OAAO;MAAa,QAAQ,MAAM;KAAO,CAAC;KAErE,MAAM;IACR;GACF,CAAC;EACH;CACF,CAAC;AACH"}
|
package/src/middleware/auth.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { createTaserCompatHandler } from '@taserjs/router-core'
|
|
2
|
-
import { reply, validateSchema, ValidationError } from '@taserjs/router-utils'
|
|
3
|
-
import type { MiddlewareHandler } from 'hono'
|
|
4
|
-
|
|
5
|
-
import { defineMiddleware } from '../define/middleware.js'
|
|
6
|
-
import type { InferOutput, Schema } from '../types/schema.js'
|
|
7
|
-
import type { MiddlewareReturnFromParts, MiddlewareUnit } from '../types/units.js'
|
|
8
|
-
|
|
9
|
-
export function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(
|
|
10
|
-
honoFactory: F,
|
|
11
|
-
): (...args: Parameters<F>) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>> {
|
|
12
|
-
return (...args) => defineMiddleware(honoFactory(...args))
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export type JwtPayloadState<TPayload> = {
|
|
16
|
-
jwtPayload: TPayload
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export type AuthMiddlewareUnit<TPayload> = MiddlewareUnit<
|
|
20
|
-
MiddlewareReturnFromParts<unknown, unknown, unknown, JwtPayloadState<TPayload>>
|
|
21
|
-
>
|
|
22
|
-
|
|
23
|
-
function asJwtPayloadStateSchema<TPayload>(
|
|
24
|
-
payloadSchema: Schema<TPayload>,
|
|
25
|
-
): Schema<JwtPayloadState<InferOutput<Schema<TPayload>>>> {
|
|
26
|
-
return payloadSchema as unknown as Schema<JwtPayloadState<InferOutput<Schema<TPayload>>>>
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function createAuthMiddleware<TPayload>(
|
|
30
|
-
payloadSchema: Schema<TPayload>,
|
|
31
|
-
honoMw: MiddlewareHandler,
|
|
32
|
-
): AuthMiddlewareUnit<InferOutput<Schema<TPayload>>> {
|
|
33
|
-
return defineMiddleware({
|
|
34
|
-
state: asJwtPayloadStateSchema(payloadSchema),
|
|
35
|
-
handler: (ctx, next) => {
|
|
36
|
-
return createTaserCompatHandler(honoMw)(ctx, async () => {
|
|
37
|
-
const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload
|
|
38
|
-
try {
|
|
39
|
-
const validated = await validateSchema(payloadSchema, payload)
|
|
40
|
-
return next({ state: { jwtPayload: validated } })
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
if (error instanceof ValidationError) {
|
|
44
|
-
return reply.forbidden({ error: 'Forbidden', issues: error.issues })
|
|
45
|
-
}
|
|
46
|
-
throw error
|
|
47
|
-
}
|
|
48
|
-
})
|
|
49
|
-
},
|
|
50
|
-
})
|
|
51
|
-
}
|