@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.
Files changed (138) 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 +18 -27
  6. package/dist/cjs/define/middleware.cjs.map +1 -1
  7. package/dist/cjs/define/middleware.d.cts +27 -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 +1 -2
  12. package/dist/cjs/index.d.cts +1 -1
  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.d.cts +1 -1
  38. package/dist/cjs/route.cjs.map +1 -1
  39. package/dist/cjs/route.d.cts +1 -1
  40. package/dist/cjs/stream.d.cts +1 -1
  41. package/dist/cjs/taser-app.cjs +0 -6
  42. package/dist/cjs/taser-app.cjs.map +1 -1
  43. package/dist/cjs/taser-app.d.cts +0 -3
  44. package/dist/cjs/taser-router.cjs +9 -10
  45. package/dist/cjs/taser-router.cjs.map +1 -1
  46. package/dist/cjs/taser-router.d.cts +9 -11
  47. package/dist/cjs/types/app.d.cts +3 -2
  48. package/dist/cjs/types/index.d.cts +94 -143
  49. package/dist/cjs/types/type-utils.d.cts +8 -10
  50. package/dist/cjs/types/units.cjs.map +1 -1
  51. package/dist/cjs/types/units.d.cts +32 -27
  52. package/dist/esm/constants.js.map +1 -1
  53. package/dist/esm/create-context.js.map +1 -1
  54. package/dist/esm/define/handler.js.map +1 -1
  55. package/dist/esm/define/middleware.d.ts +27 -79
  56. package/dist/esm/define/middleware.js +18 -27
  57. package/dist/esm/define/middleware.js.map +1 -1
  58. package/dist/esm/define/validators.js.map +1 -1
  59. package/dist/esm/factories.d.ts +2 -2
  60. package/dist/esm/factories.js.map +1 -1
  61. package/dist/esm/index.d.ts +1 -1
  62. package/dist/esm/index.js +3 -3
  63. package/dist/esm/middleware/body-limit.js +1 -1
  64. package/dist/esm/middleware/body-limit.js.map +1 -1
  65. package/dist/esm/middleware/compress.js +1 -1
  66. package/dist/esm/middleware/compress.js.map +1 -1
  67. package/dist/esm/middleware/cors.js +1 -1
  68. package/dist/esm/middleware/cors.js.map +1 -1
  69. package/dist/esm/middleware/csrf.js +1 -1
  70. package/dist/esm/middleware/csrf.js.map +1 -1
  71. package/dist/esm/middleware/etag.js +1 -1
  72. package/dist/esm/middleware/etag.js.map +1 -1
  73. package/dist/esm/middleware/jwk.d.ts +4 -5
  74. package/dist/esm/middleware/jwk.js +11 -4
  75. package/dist/esm/middleware/jwk.js.map +1 -1
  76. package/dist/esm/middleware/jwt.d.ts +7 -5
  77. package/dist/esm/middleware/jwt.js +11 -5
  78. package/dist/esm/middleware/jwt.js.map +1 -1
  79. package/dist/esm/middleware/secure-headers.js +1 -1
  80. package/dist/esm/middleware/secure-headers.js.map +1 -1
  81. package/dist/esm/middleware/timing.js +1 -1
  82. package/dist/esm/middleware/timing.js.map +1 -1
  83. package/dist/esm/middleware/wrap-hono.d.ts +3 -0
  84. package/dist/esm/middleware/wrap-hono.js +9 -0
  85. package/dist/esm/middleware/wrap-hono.js.map +1 -0
  86. package/dist/esm/middleware.js.map +1 -1
  87. package/dist/esm/reply.d.ts +1 -1
  88. package/dist/esm/route.d.ts +1 -1
  89. package/dist/esm/route.js.map +1 -1
  90. package/dist/esm/stream.d.ts +1 -1
  91. package/dist/esm/taser-app.d.ts +0 -3
  92. package/dist/esm/taser-app.js +1 -6
  93. package/dist/esm/taser-app.js.map +1 -1
  94. package/dist/esm/taser-router.d.ts +9 -11
  95. package/dist/esm/taser-router.js +7 -8
  96. package/dist/esm/taser-router.js.map +1 -1
  97. package/dist/esm/types/app.d.ts +3 -2
  98. package/dist/esm/types/index.d.ts +94 -143
  99. package/dist/esm/types/type-utils.d.ts +8 -10
  100. package/dist/esm/types/units.d.ts +32 -27
  101. package/dist/esm/types/units.js.map +1 -1
  102. package/package.json +17 -17
  103. package/src/constants.ts +6 -6
  104. package/src/create-context.ts +8 -8
  105. package/src/define/handler.ts +24 -34
  106. package/src/define/middleware.ts +222 -222
  107. package/src/define/validators.ts +10 -10
  108. package/src/factories.ts +63 -61
  109. package/src/index.ts +12 -12
  110. package/src/middleware/body-limit.ts +5 -5
  111. package/src/middleware/compress.ts +5 -5
  112. package/src/middleware/cors.ts +5 -5
  113. package/src/middleware/csrf.ts +5 -5
  114. package/src/middleware/etag.ts +5 -5
  115. package/src/middleware/jwk.ts +33 -26
  116. package/src/middleware/jwt.ts +26 -10
  117. package/src/middleware/secure-headers.ts +5 -5
  118. package/src/middleware/timing.ts +5 -5
  119. package/src/middleware/wrap-hono.ts +12 -0
  120. package/src/middleware.ts +7 -7
  121. package/src/reply.ts +2 -6
  122. package/src/route.ts +45 -48
  123. package/src/stream.ts +1 -7
  124. package/src/taser-app.ts +13 -18
  125. package/src/taser-router.ts +103 -98
  126. package/src/types/app.ts +33 -35
  127. package/src/types/index.ts +403 -731
  128. package/src/types/returns.ts +92 -97
  129. package/src/types/schema.ts +8 -9
  130. package/src/types/type-utils.ts +42 -45
  131. package/src/types/units.ts +140 -104
  132. package/dist/cjs/middleware/auth.cjs +0 -34
  133. package/dist/cjs/middleware/auth.cjs.map +0 -1
  134. package/dist/cjs/middleware/auth.d.cts +0 -9
  135. package/dist/esm/middleware/auth.d.ts +0 -9
  136. package/dist/esm/middleware/auth.js +0 -33
  137. package/dist/esm/middleware/auth.js.map +0 -1
  138. 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,119 +9,150 @@ 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,
77
98
  TParams = unknown,
78
99
  TBody = unknown,
79
100
  TAppContext extends Record<string, unknown> = AppContext,
101
+ TState = {},
80
102
  > = 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
- >
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
- & 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
- >
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
- 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
- }
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 === 'object'
162
- && value !== null
163
- && 'handler' in value
164
- && 'middlewares' in value
165
- && Array.isArray((value as HandlerUnit<readonly unknown[], ValidatorParts>).middlewares)
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"}
@@ -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
- }