@taserjs/router 0.0.2 → 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 +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 +53 -139
- 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 +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 +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 +53 -139
- package/dist/esm/types/type-utils.d.ts +8 -10
- package/dist/esm/types/units.d.ts +27 -24
- 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 +66 -256
- 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 +299 -722
- 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 +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/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,68 +9,89 @@ 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,
|
|
@@ -78,50 +99,55 @@ export type StandaloneMiddlewareContext<
|
|
|
78
99
|
TBody = unknown,
|
|
79
100
|
TAppContext extends Record<string, unknown> = AppContext,
|
|
80
101
|
> = Simplify<
|
|
81
|
-
TAppContext &
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
102
|
+
TAppContext &
|
|
103
|
+
UnitRuntimeContext & {
|
|
104
|
+
query: Simplify<UnwrapPart<TQuery>>;
|
|
105
|
+
params: Simplify<UnwrapPart<TParams>>;
|
|
106
|
+
body: Simplify<UnwrapPart<TBody>>;
|
|
107
|
+
state: {};
|
|
108
|
+
headers: TaserHeaders;
|
|
109
|
+
cookies: TaserCookieJar;
|
|
110
|
+
}
|
|
111
|
+
>;
|
|
90
112
|
|
|
91
113
|
export type HandlerContext<
|
|
92
114
|
Acc extends readonly unknown[],
|
|
93
115
|
Validators extends ValidatorParts,
|
|
94
116
|
TAppContext extends Record<string, unknown> = AppContext,
|
|
95
117
|
> = Simplify<
|
|
96
|
-
TAppContext
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
118
|
+
TAppContext &
|
|
119
|
+
UnitRuntimeContext & {
|
|
120
|
+
query: Simplify<
|
|
121
|
+
MergePart<
|
|
122
|
+
Validators extends { query?: infer Q } ? Q : unknown,
|
|
123
|
+
MergeMiddlewareField<Acc, "query">
|
|
124
|
+
>
|
|
125
|
+
>;
|
|
126
|
+
params: Simplify<
|
|
127
|
+
MergePart<
|
|
128
|
+
Validators extends { params?: infer P } ? P : unknown,
|
|
129
|
+
MergeMiddlewareField<Acc, "params">
|
|
130
|
+
>
|
|
131
|
+
>;
|
|
132
|
+
body: Simplify<
|
|
133
|
+
MergePart<
|
|
134
|
+
Validators extends { body?: infer B } ? B : unknown,
|
|
135
|
+
MergeMiddlewareField<Acc, "body">
|
|
136
|
+
>
|
|
137
|
+
>;
|
|
138
|
+
state: Simplify<MergeMiddlewareField<Acc, "state">>;
|
|
139
|
+
headers: TaserHeaders;
|
|
140
|
+
cookies: TaserCookieJar;
|
|
141
|
+
}
|
|
142
|
+
>;
|
|
117
143
|
|
|
118
144
|
export type MiddlewareUnit<
|
|
119
145
|
TAcc = unknown,
|
|
120
146
|
TReturns extends ReturnsMap = {},
|
|
121
147
|
> = MiddlewareDefinition & {
|
|
122
|
-
readonly __middlewareAcc: TAcc
|
|
123
|
-
readonly __returns?: TReturns
|
|
124
|
-
}
|
|
148
|
+
readonly __middlewareAcc: TAcc;
|
|
149
|
+
readonly __returns?: TReturns;
|
|
150
|
+
};
|
|
125
151
|
|
|
126
152
|
export type HandlerUnit<
|
|
127
153
|
_Acc extends readonly unknown[],
|
|
@@ -129,39 +155,44 @@ export type HandlerUnit<
|
|
|
129
155
|
TReturns extends ReturnsMap = {},
|
|
130
156
|
TOutput = Response,
|
|
131
157
|
> = {
|
|
132
|
-
readonly __returns?: TReturns
|
|
158
|
+
readonly __returns?: TReturns;
|
|
133
159
|
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
|
-
}
|
|
160
|
+
Output: TOutput;
|
|
161
|
+
};
|
|
162
|
+
middlewares: readonly MiddlewareDefinition[];
|
|
163
|
+
handler: (ctx: unknown) => Awaitable<ReplyResult | Response>;
|
|
164
|
+
returns?: ReturnsMap;
|
|
165
|
+
query?: Schema<unknown>;
|
|
166
|
+
params?: Schema<unknown>;
|
|
167
|
+
body?: Schema<unknown>;
|
|
168
|
+
};
|
|
143
169
|
|
|
144
|
-
export type InlineMiddlewareOptions
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
170
|
+
export type InlineMiddlewareOptions<
|
|
171
|
+
Ctx = unknown,
|
|
172
|
+
TQuery = unknown,
|
|
173
|
+
TParams = unknown,
|
|
174
|
+
TBody = unknown,
|
|
175
|
+
TReturns extends ReturnsMap = {},
|
|
176
|
+
TQueryIn = unknown,
|
|
177
|
+
TParamsIn = unknown,
|
|
178
|
+
TBodyIn = unknown,
|
|
179
|
+
R = unknown,
|
|
180
|
+
> = {
|
|
181
|
+
query?: Schema<TQuery, TQueryIn>;
|
|
182
|
+
params?: Schema<TParams, TParamsIn>;
|
|
183
|
+
body?: Schema<TBody, TBodyIn>;
|
|
184
|
+
returns?: TReturns;
|
|
185
|
+
handler: (ctx: Ctx, next: NextFn) => Awaitable<R>;
|
|
186
|
+
};
|
|
156
187
|
|
|
157
188
|
export function isHandlerUnit(
|
|
158
189
|
value: unknown,
|
|
159
190
|
): value is HandlerUnit<readonly unknown[], ValidatorParts> {
|
|
160
191
|
return (
|
|
161
|
-
typeof value ===
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
)
|
|
192
|
+
typeof value === "object" &&
|
|
193
|
+
value !== null &&
|
|
194
|
+
"handler" in value &&
|
|
195
|
+
"middlewares" in value &&
|
|
196
|
+
Array.isArray((value as HandlerUnit<readonly unknown[], ValidatorParts>).middlewares)
|
|
197
|
+
);
|
|
167
198
|
}
|
|
@@ -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
|
-
}
|