@taserjs/router 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/constants.cjs.map +1 -1
  3. package/dist/cjs/create-context.cjs.map +1 -1
  4. package/dist/cjs/define/handler.cjs.map +1 -1
  5. package/dist/cjs/define/middleware.cjs +5 -24
  6. package/dist/cjs/define/middleware.cjs.map +1 -1
  7. package/dist/cjs/define/middleware.d.cts +10 -79
  8. package/dist/cjs/define/validators.cjs.map +1 -1
  9. package/dist/cjs/factories.cjs.map +1 -1
  10. package/dist/cjs/factories.d.cts +2 -2
  11. package/dist/cjs/index.cjs +7 -2
  12. package/dist/cjs/index.d.cts +2 -2
  13. package/dist/cjs/middleware/body-limit.cjs +2 -2
  14. package/dist/cjs/middleware/body-limit.cjs.map +1 -1
  15. package/dist/cjs/middleware/compress.cjs +2 -2
  16. package/dist/cjs/middleware/compress.cjs.map +1 -1
  17. package/dist/cjs/middleware/cors.cjs +2 -2
  18. package/dist/cjs/middleware/cors.cjs.map +1 -1
  19. package/dist/cjs/middleware/csrf.cjs +2 -2
  20. package/dist/cjs/middleware/csrf.cjs.map +1 -1
  21. package/dist/cjs/middleware/etag.cjs +2 -2
  22. package/dist/cjs/middleware/etag.cjs.map +1 -1
  23. package/dist/cjs/middleware/jwk.cjs +11 -4
  24. package/dist/cjs/middleware/jwk.cjs.map +1 -1
  25. package/dist/cjs/middleware/jwk.d.cts +4 -5
  26. package/dist/cjs/middleware/jwt.cjs +11 -5
  27. package/dist/cjs/middleware/jwt.cjs.map +1 -1
  28. package/dist/cjs/middleware/jwt.d.cts +7 -5
  29. package/dist/cjs/middleware/secure-headers.cjs +2 -2
  30. package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
  31. package/dist/cjs/middleware/timing.cjs +2 -2
  32. package/dist/cjs/middleware/timing.cjs.map +1 -1
  33. package/dist/cjs/middleware/wrap-hono.cjs +9 -0
  34. package/dist/cjs/middleware/wrap-hono.cjs.map +1 -0
  35. package/dist/cjs/middleware/wrap-hono.d.cts +3 -0
  36. package/dist/cjs/middleware.cjs.map +1 -1
  37. package/dist/cjs/reply.cjs +20 -0
  38. package/dist/cjs/reply.d.cts +2 -0
  39. package/dist/cjs/route.cjs.map +1 -1
  40. package/dist/cjs/route.d.cts +1 -1
  41. package/dist/cjs/stream.cjs +32 -0
  42. package/dist/cjs/stream.d.cts +1 -0
  43. package/dist/cjs/taser-app.cjs +0 -6
  44. package/dist/cjs/taser-app.cjs.map +1 -1
  45. package/dist/cjs/taser-app.d.cts +0 -3
  46. package/dist/cjs/taser-router.cjs +9 -10
  47. package/dist/cjs/taser-router.cjs.map +1 -1
  48. package/dist/cjs/taser-router.d.cts +9 -11
  49. package/dist/cjs/types/app.d.cts +3 -2
  50. package/dist/cjs/types/index.d.cts +53 -139
  51. package/dist/cjs/types/type-utils.d.cts +8 -11
  52. package/dist/cjs/types/units.cjs.map +1 -1
  53. package/dist/cjs/types/units.d.cts +27 -24
  54. package/dist/esm/constants.js.map +1 -1
  55. package/dist/esm/create-context.js.map +1 -1
  56. package/dist/esm/define/handler.js.map +1 -1
  57. package/dist/esm/define/middleware.d.ts +10 -79
  58. package/dist/esm/define/middleware.js +5 -24
  59. package/dist/esm/define/middleware.js.map +1 -1
  60. package/dist/esm/define/validators.js.map +1 -1
  61. package/dist/esm/factories.d.ts +2 -2
  62. package/dist/esm/factories.js.map +1 -1
  63. package/dist/esm/index.d.ts +2 -2
  64. package/dist/esm/index.js +4 -4
  65. package/dist/esm/middleware/body-limit.js +1 -1
  66. package/dist/esm/middleware/body-limit.js.map +1 -1
  67. package/dist/esm/middleware/compress.js +1 -1
  68. package/dist/esm/middleware/compress.js.map +1 -1
  69. package/dist/esm/middleware/cors.js +1 -1
  70. package/dist/esm/middleware/cors.js.map +1 -1
  71. package/dist/esm/middleware/csrf.js +1 -1
  72. package/dist/esm/middleware/csrf.js.map +1 -1
  73. package/dist/esm/middleware/etag.js +1 -1
  74. package/dist/esm/middleware/etag.js.map +1 -1
  75. package/dist/esm/middleware/jwk.d.ts +4 -5
  76. package/dist/esm/middleware/jwk.js +11 -4
  77. package/dist/esm/middleware/jwk.js.map +1 -1
  78. package/dist/esm/middleware/jwt.d.ts +7 -5
  79. package/dist/esm/middleware/jwt.js +11 -5
  80. package/dist/esm/middleware/jwt.js.map +1 -1
  81. package/dist/esm/middleware/secure-headers.js +1 -1
  82. package/dist/esm/middleware/secure-headers.js.map +1 -1
  83. package/dist/esm/middleware/timing.js +1 -1
  84. package/dist/esm/middleware/timing.js.map +1 -1
  85. package/dist/esm/middleware/wrap-hono.d.ts +3 -0
  86. package/dist/esm/middleware/wrap-hono.js +9 -0
  87. package/dist/esm/middleware/wrap-hono.js.map +1 -0
  88. package/dist/esm/middleware.js.map +1 -1
  89. package/dist/esm/reply.d.ts +2 -0
  90. package/dist/esm/reply.js +2 -0
  91. package/dist/esm/route.d.ts +1 -1
  92. package/dist/esm/route.js.map +1 -1
  93. package/dist/esm/stream.d.ts +1 -0
  94. package/dist/esm/stream.js +2 -0
  95. package/dist/esm/taser-app.d.ts +0 -3
  96. package/dist/esm/taser-app.js +1 -6
  97. package/dist/esm/taser-app.js.map +1 -1
  98. package/dist/esm/taser-router.d.ts +9 -11
  99. package/dist/esm/taser-router.js +7 -8
  100. package/dist/esm/taser-router.js.map +1 -1
  101. package/dist/esm/types/app.d.ts +3 -2
  102. package/dist/esm/types/index.d.ts +53 -139
  103. package/dist/esm/types/type-utils.d.ts +8 -11
  104. package/dist/esm/types/units.d.ts +27 -24
  105. package/dist/esm/types/units.js.map +1 -1
  106. package/package.json +37 -17
  107. package/src/constants.ts +6 -6
  108. package/src/create-context.ts +8 -8
  109. package/src/define/handler.ts +24 -34
  110. package/src/define/middleware.ts +66 -256
  111. package/src/define/validators.ts +10 -10
  112. package/src/factories.ts +63 -61
  113. package/src/index.ts +13 -12
  114. package/src/middleware/body-limit.ts +5 -5
  115. package/src/middleware/compress.ts +5 -5
  116. package/src/middleware/cors.ts +5 -5
  117. package/src/middleware/csrf.ts +5 -5
  118. package/src/middleware/etag.ts +5 -5
  119. package/src/middleware/jwk.ts +33 -26
  120. package/src/middleware/jwt.ts +26 -10
  121. package/src/middleware/secure-headers.ts +5 -5
  122. package/src/middleware/timing.ts +5 -5
  123. package/src/middleware/wrap-hono.ts +12 -0
  124. package/src/middleware.ts +7 -7
  125. package/src/reply.ts +11 -0
  126. package/src/route.ts +45 -48
  127. package/src/stream.ts +1 -0
  128. package/src/taser-app.ts +13 -18
  129. package/src/taser-router.ts +103 -98
  130. package/src/types/app.ts +33 -35
  131. package/src/types/index.ts +299 -722
  132. package/src/types/returns.ts +92 -97
  133. package/src/types/schema.ts +8 -9
  134. package/src/types/type-utils.ts +42 -46
  135. package/src/types/units.ts +135 -104
  136. package/dist/cjs/middleware/auth.cjs +0 -34
  137. package/dist/cjs/middleware/auth.cjs.map +0 -1
  138. package/dist/cjs/middleware/auth.d.cts +0 -9
  139. package/dist/esm/middleware/auth.d.ts +0 -9
  140. package/dist/esm/middleware/auth.js +0 -33
  141. package/dist/esm/middleware/auth.js.map +0 -1
  142. package/src/middleware/auth.ts +0 -51
@@ -1,7 +1,7 @@
1
- import type { Awaitable, TaserCookieJar, TaserHeaders } from '@taserjs/router-core'
2
- import type { ReplyResult } from '@taserjs/router-utils'
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 '../register.js'
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 './type-utils.js'
13
- import type { ReturnsMap } from './returns.js'
14
- import type { Schema } from './schema.js'
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 './type-utils.js'
17
- export type { EmptyReturns, MergeReturns, ReturnsMap, HandlerReply, HasReturns, StatusCode, ValidHandlerReply, EnforceHandlerReply } from './returns.js'
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 type MiddlewareNext = {
34
- (args?: { state?: unknown, ctx?: unknown }): Promise<ReplyResult>
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
- state?: unknown
39
- ctx?: unknown
40
- query?: unknown
41
- params?: unknown
42
- body?: unknown
43
- returns?: ReturnsMap
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>, 'var'>
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 & UnitRuntimeContext & {
82
- query: Simplify<UnwrapPart<TQuery>>
83
- params: Simplify<UnwrapPart<TParams>>
84
- body: Simplify<UnwrapPart<TBody>>
85
- state: {}
86
- headers: TaserHeaders
87
- cookies: TaserCookieJar
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
- & UnitRuntimeContext
98
- & MergeMiddlewareField<Acc, 'ctx'>
99
- & {
100
- query: Simplify<MergePart<
101
- Validators extends { query?: infer Q } ? Q : unknown,
102
- MergeMiddlewareField<Acc, 'query'>
103
- >>
104
- params: Simplify<MergePart<
105
- Validators extends { params?: infer P } ? P : unknown,
106
- MergeMiddlewareField<Acc, 'params'>
107
- >>
108
- body: Simplify<MergePart<
109
- Validators extends { body?: infer B } ? B : unknown,
110
- MergeMiddlewareField<Acc, 'body'>
111
- >>
112
- state: Simplify<MergeMiddlewareField<Acc, 'state'>>
113
- headers: TaserHeaders
114
- cookies: TaserCookieJar
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
- state?: Schema<unknown>
146
- ctx?: Schema<unknown>
147
- query?: Schema<unknown>
148
- params?: Schema<unknown>
149
- body?: Schema<unknown>
150
- returns?: ReturnsMap
151
- handler: (
152
- ctx: unknown,
153
- next: MiddlewareNext,
154
- ) => Awaitable<unknown>
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 === 'object'
162
- && value !== null
163
- && 'handler' in value
164
- && 'middlewares' in value
165
- && Array.isArray((value as HandlerUnit<readonly unknown[], ValidatorParts>).middlewares)
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 ctx.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 { 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 ctx.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,IAAI,MAAM,UAAU;MAAE,OAAO;MAAa,QAAQ,MAAM;KAAO,CAAC;KAEzE,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, 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 ctx.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 { 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 ctx.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,IAAI,MAAM,UAAU;MAAE,OAAO;MAAa,QAAQ,MAAM;KAAO,CAAC;KAEzE,MAAM;IACR;GACF,CAAC;EACH;CACF,CAAC;AACH"}
@@ -1,51 +0,0 @@
1
- import { createTaserCompatHandler } from '@taserjs/router-core'
2
- import { 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 ctx.reply.forbidden({ error: 'Forbidden', issues: error.issues })
45
- }
46
- throw error
47
- }
48
- })
49
- },
50
- })
51
- }