@taserjs/router 0.0.0

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 (173) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +24 -0
  3. package/dist/cjs/constants.cjs +17 -0
  4. package/dist/cjs/constants.cjs.map +1 -0
  5. package/dist/cjs/constants.d.cts +8 -0
  6. package/dist/cjs/create-context.cjs +8 -0
  7. package/dist/cjs/create-context.cjs.map +1 -0
  8. package/dist/cjs/create-context.d.cts +5 -0
  9. package/dist/cjs/define/handler.cjs +38 -0
  10. package/dist/cjs/define/handler.cjs.map +1 -0
  11. package/dist/cjs/define/handler.d.cts +13 -0
  12. package/dist/cjs/define/middleware.cjs +36 -0
  13. package/dist/cjs/define/middleware.cjs.map +1 -0
  14. package/dist/cjs/define/middleware.d.cts +85 -0
  15. package/dist/cjs/define/validators.cjs +14 -0
  16. package/dist/cjs/define/validators.cjs.map +1 -0
  17. package/dist/cjs/define/validators.d.cts +8 -0
  18. package/dist/cjs/factories.cjs +29 -0
  19. package/dist/cjs/factories.cjs.map +1 -0
  20. package/dist/cjs/factories.d.cts +61 -0
  21. package/dist/cjs/index.cjs +42 -0
  22. package/dist/cjs/index.d.cts +12 -0
  23. package/dist/cjs/middleware/auth.cjs +34 -0
  24. package/dist/cjs/middleware/auth.cjs.map +1 -0
  25. package/dist/cjs/middleware/auth.d.cts +9 -0
  26. package/dist/cjs/middleware/body-limit.cjs +12 -0
  27. package/dist/cjs/middleware/body-limit.cjs.map +1 -0
  28. package/dist/cjs/middleware/body-limit.d.cts +3 -0
  29. package/dist/cjs/middleware/compress.cjs +12 -0
  30. package/dist/cjs/middleware/compress.cjs.map +1 -0
  31. package/dist/cjs/middleware/compress.d.cts +3 -0
  32. package/dist/cjs/middleware/cors.cjs +12 -0
  33. package/dist/cjs/middleware/cors.cjs.map +1 -0
  34. package/dist/cjs/middleware/cors.d.cts +3 -0
  35. package/dist/cjs/middleware/csrf.cjs +12 -0
  36. package/dist/cjs/middleware/csrf.cjs.map +1 -0
  37. package/dist/cjs/middleware/csrf.d.cts +3 -0
  38. package/dist/cjs/middleware/etag.cjs +12 -0
  39. package/dist/cjs/middleware/etag.cjs.map +1 -0
  40. package/dist/cjs/middleware/etag.d.cts +3 -0
  41. package/dist/cjs/middleware/jwk.cjs +25 -0
  42. package/dist/cjs/middleware/jwk.cjs.map +1 -0
  43. package/dist/cjs/middleware/jwk.d.cts +15 -0
  44. package/dist/cjs/middleware/jwt.cjs +16 -0
  45. package/dist/cjs/middleware/jwt.cjs.map +1 -0
  46. package/dist/cjs/middleware/jwt.d.cts +10 -0
  47. package/dist/cjs/middleware/secure-headers.cjs +12 -0
  48. package/dist/cjs/middleware/secure-headers.cjs.map +1 -0
  49. package/dist/cjs/middleware/secure-headers.d.cts +3 -0
  50. package/dist/cjs/middleware/timing.cjs +12 -0
  51. package/dist/cjs/middleware/timing.cjs.map +1 -0
  52. package/dist/cjs/middleware/timing.d.cts +3 -0
  53. package/dist/cjs/middleware.cjs +17 -0
  54. package/dist/cjs/middleware.cjs.map +1 -0
  55. package/dist/cjs/middleware.d.cts +2 -0
  56. package/dist/cjs/register.d.cts +2 -0
  57. package/dist/cjs/route.cjs +94 -0
  58. package/dist/cjs/route.cjs.map +1 -0
  59. package/dist/cjs/route.d.cts +5 -0
  60. package/dist/cjs/taser-app.cjs +42 -0
  61. package/dist/cjs/taser-app.cjs.map +1 -0
  62. package/dist/cjs/taser-app.d.cts +21 -0
  63. package/dist/cjs/taser-router.cjs +83 -0
  64. package/dist/cjs/taser-router.cjs.map +1 -0
  65. package/dist/cjs/taser-router.d.cts +44 -0
  66. package/dist/cjs/types/app.d.cts +46 -0
  67. package/dist/cjs/types/index.d.cts +305 -0
  68. package/dist/cjs/types/returns.d.cts +37 -0
  69. package/dist/cjs/types/schema.d.cts +14 -0
  70. package/dist/cjs/types/type-utils.d.cts +52 -0
  71. package/dist/cjs/types/units.cjs +8 -0
  72. package/dist/cjs/types/units.cjs.map +1 -0
  73. package/dist/cjs/types/units.d.cts +98 -0
  74. package/dist/esm/constants.d.ts +8 -0
  75. package/dist/esm/constants.js +16 -0
  76. package/dist/esm/constants.js.map +1 -0
  77. package/dist/esm/create-context.d.ts +5 -0
  78. package/dist/esm/create-context.js +8 -0
  79. package/dist/esm/create-context.js.map +1 -0
  80. package/dist/esm/define/handler.d.ts +13 -0
  81. package/dist/esm/define/handler.js +38 -0
  82. package/dist/esm/define/handler.js.map +1 -0
  83. package/dist/esm/define/middleware.d.ts +85 -0
  84. package/dist/esm/define/middleware.js +36 -0
  85. package/dist/esm/define/middleware.js.map +1 -0
  86. package/dist/esm/define/validators.d.ts +8 -0
  87. package/dist/esm/define/validators.js +14 -0
  88. package/dist/esm/define/validators.js.map +1 -0
  89. package/dist/esm/factories.d.ts +61 -0
  90. package/dist/esm/factories.js +21 -0
  91. package/dist/esm/factories.js.map +1 -0
  92. package/dist/esm/index.d.ts +12 -0
  93. package/dist/esm/index.js +8 -0
  94. package/dist/esm/middleware/auth.d.ts +9 -0
  95. package/dist/esm/middleware/auth.js +33 -0
  96. package/dist/esm/middleware/auth.js.map +1 -0
  97. package/dist/esm/middleware/body-limit.d.ts +3 -0
  98. package/dist/esm/middleware/body-limit.js +11 -0
  99. package/dist/esm/middleware/body-limit.js.map +1 -0
  100. package/dist/esm/middleware/compress.d.ts +3 -0
  101. package/dist/esm/middleware/compress.js +11 -0
  102. package/dist/esm/middleware/compress.js.map +1 -0
  103. package/dist/esm/middleware/cors.d.ts +3 -0
  104. package/dist/esm/middleware/cors.js +11 -0
  105. package/dist/esm/middleware/cors.js.map +1 -0
  106. package/dist/esm/middleware/csrf.d.ts +3 -0
  107. package/dist/esm/middleware/csrf.js +11 -0
  108. package/dist/esm/middleware/csrf.js.map +1 -0
  109. package/dist/esm/middleware/etag.d.ts +3 -0
  110. package/dist/esm/middleware/etag.js +11 -0
  111. package/dist/esm/middleware/etag.js.map +1 -0
  112. package/dist/esm/middleware/jwk.d.ts +15 -0
  113. package/dist/esm/middleware/jwk.js +24 -0
  114. package/dist/esm/middleware/jwk.js.map +1 -0
  115. package/dist/esm/middleware/jwt.d.ts +10 -0
  116. package/dist/esm/middleware/jwt.js +15 -0
  117. package/dist/esm/middleware/jwt.js.map +1 -0
  118. package/dist/esm/middleware/secure-headers.d.ts +3 -0
  119. package/dist/esm/middleware/secure-headers.js +11 -0
  120. package/dist/esm/middleware/secure-headers.js.map +1 -0
  121. package/dist/esm/middleware/timing.d.ts +3 -0
  122. package/dist/esm/middleware/timing.js +11 -0
  123. package/dist/esm/middleware/timing.js.map +1 -0
  124. package/dist/esm/middleware.d.ts +2 -0
  125. package/dist/esm/middleware.js +17 -0
  126. package/dist/esm/middleware.js.map +1 -0
  127. package/dist/esm/register.d.ts +2 -0
  128. package/dist/esm/route.d.ts +5 -0
  129. package/dist/esm/route.js +94 -0
  130. package/dist/esm/route.js.map +1 -0
  131. package/dist/esm/taser-app.d.ts +21 -0
  132. package/dist/esm/taser-app.js +40 -0
  133. package/dist/esm/taser-app.js.map +1 -0
  134. package/dist/esm/taser-router.d.ts +44 -0
  135. package/dist/esm/taser-router.js +82 -0
  136. package/dist/esm/taser-router.js.map +1 -0
  137. package/dist/esm/types/app.d.ts +46 -0
  138. package/dist/esm/types/index.d.ts +305 -0
  139. package/dist/esm/types/returns.d.ts +37 -0
  140. package/dist/esm/types/schema.d.ts +14 -0
  141. package/dist/esm/types/type-utils.d.ts +52 -0
  142. package/dist/esm/types/units.d.ts +98 -0
  143. package/dist/esm/types/units.js +8 -0
  144. package/dist/esm/types/units.js.map +1 -0
  145. package/package.json +149 -0
  146. package/src/constants.ts +10 -0
  147. package/src/create-context.ts +19 -0
  148. package/src/define/handler.ts +72 -0
  149. package/src/define/middleware.ts +289 -0
  150. package/src/define/validators.ts +22 -0
  151. package/src/factories.ts +183 -0
  152. package/src/index.ts +44 -0
  153. package/src/middleware/auth.ts +51 -0
  154. package/src/middleware/body-limit.ts +11 -0
  155. package/src/middleware/compress.ts +11 -0
  156. package/src/middleware/cors.ts +11 -0
  157. package/src/middleware/csrf.ts +11 -0
  158. package/src/middleware/etag.ts +11 -0
  159. package/src/middleware/jwk.ts +47 -0
  160. package/src/middleware/jwt.ts +18 -0
  161. package/src/middleware/secure-headers.ts +11 -0
  162. package/src/middleware/timing.ts +11 -0
  163. package/src/middleware.ts +19 -0
  164. package/src/register.ts +1 -0
  165. package/src/route.ts +145 -0
  166. package/src/taser-app.ts +43 -0
  167. package/src/taser-router.ts +160 -0
  168. package/src/types/app.ts +65 -0
  169. package/src/types/index.ts +1064 -0
  170. package/src/types/returns.ts +135 -0
  171. package/src/types/schema.ts +22 -0
  172. package/src/types/type-utils.ts +86 -0
  173. package/src/types/units.ts +167 -0
@@ -0,0 +1,38 @@
1
+ import { pickDefinedSchemas } from "./validators.js";
2
+ import { collectReturnsFromDefinitions } from "@taserjs/router-utils";
3
+ //#region src/define/handler.ts
4
+ function createHandlerBuilder(validators, middlewares, returnsMap) {
5
+ const builder = {
6
+ returns(map) {
7
+ return createHandlerBuilder(validators, middlewares, {
8
+ ...returnsMap,
9
+ ...map
10
+ });
11
+ },
12
+ use(unitOrOptions) {
13
+ middlewares.push(unitOrOptions);
14
+ return builder;
15
+ },
16
+ handler(fn) {
17
+ const mergedReturns = {
18
+ ...collectReturnsFromDefinitions(middlewares),
19
+ ...returnsMap
20
+ };
21
+ return {
22
+ $Infer: { Output: void 0 },
23
+ middlewares: [...middlewares],
24
+ handler: fn,
25
+ ...pickDefinedSchemas(validators),
26
+ ...Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}
27
+ };
28
+ }
29
+ };
30
+ return builder;
31
+ }
32
+ function defineHandler(options) {
33
+ return createHandlerBuilder(options ?? {}, [], {});
34
+ }
35
+ //#endregion
36
+ export { defineHandler };
37
+
38
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","names":[],"sources":["../../../src/define/handler.ts"],"sourcesContent":["import type { HandlerBuilder } from '../types/index.js'\nimport type {\n AppContext,\n HandlerUnit,\n MiddlewareDefinition,\n ReturnsMap,\n ValidatorParts,\n} from '../types/units.js'\nimport type { Schema } from '../types/schema.js'\nimport { pickDefinedSchemas, type SchemaValidators } from './validators.js'\nimport { collectReturnsFromDefinitions } from '@taserjs/router-utils'\n\nfunction createHandlerBuilder<TAppContext extends Record<string, unknown> = AppContext>(\n validators: SchemaValidators,\n middlewares: MiddlewareDefinition[],\n returnsMap: ReturnsMap,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n const builder = {\n returns(map: ReturnsMap) {\n return createHandlerBuilder<TAppContext>(validators, middlewares, { ...returnsMap, ...map })\n },\n use(unitOrOptions: MiddlewareDefinition) {\n middlewares.push(unitOrOptions)\n return builder\n },\n handler(fn: (ctx: unknown) => unknown) {\n const mwReturns = collectReturnsFromDefinitions(middlewares)\n const mergedReturns = { ...mwReturns, ...returnsMap }\n const unit = {\n $Infer: { Output: undefined as unknown as Response },\n middlewares: [...middlewares],\n handler: fn as HandlerUnit<readonly [], ValidatorParts>['handler'],\n ...pickDefinedSchemas(validators),\n ...(Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}),\n } as HandlerUnit<readonly [], ValidatorParts>\n return unit\n },\n }\n\n return builder as unknown as HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext>\n}\n\nexport function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(): HandlerBuilder<\n readonly [],\n {},\n {},\n TAppContext\n>\n\nexport function defineHandler<\n TAppContext extends Record<string, unknown> = AppContext,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n>(\n options: {\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n },\n): HandlerBuilder<\n readonly [],\n { query: TQuery, params: TParams, body: TBody },\n {},\n TAppContext\n>\n\nexport function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(\n options?: SchemaValidators,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n return createHandlerBuilder<TAppContext>(options ?? {}, [], {})\n}\n"],"mappings":";;;AAYA,SAAS,qBACP,YACA,aACA,YAC8D;CAC9D,MAAM,UAAU;EACd,QAAQ,KAAiB;GACvB,OAAO,qBAAkC,YAAY,aAAa;IAAE,GAAG;IAAY,GAAG;GAAI,CAAC;EAC7F;EACA,IAAI,eAAqC;GACvC,YAAY,KAAK,aAAa;GAC9B,OAAO;EACT;EACA,QAAQ,IAA+B;GAErC,MAAM,gBAAgB;IAAE,GADN,8BAA8B,WACrB;IAAW,GAAG;GAAW;GAQpD,OAAO;IANL,QAAQ,EAAE,QAAQ,KAAA,EAAiC;IACnD,aAAa,CAAC,GAAG,WAAW;IAC5B,SAAS;IACT,GAAG,mBAAmB,UAAU;IAChC,GAAI,OAAO,KAAK,aAAa,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,cAAc,IAAI,CAAC;GAErE;EACT;CACF;CAEA,OAAO;AACT;AA2BA,SAAgB,cACd,SAC8D;CAC9D,OAAO,qBAAkC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE"}
@@ -0,0 +1,85 @@
1
+ import { ReplyResult } from '@taserjs/router-utils';
2
+ import { createTaserCompatHandler } from '@taserjs/router-core';
3
+ import { Awaitable, ReturnsMap } from '../types/index.js';
4
+ import { AppContext, MiddlewareReturnFromParts, MiddlewareUnit, StandaloneMiddlewareContext } from '../types/units.js';
5
+ import { Schema } from '../types/schema.js';
6
+ type HonoMiddlewareHandler = Parameters<typeof createTaserCompatHandler>[0];
7
+ type HonoMiddlewareUnit = MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
8
+ type FluentNext<TState, TCtx> = [TState] extends [undefined] ? [TCtx] extends [undefined] ? () => Promise<ReplyResult> : (args: {
9
+ ctx: TCtx;
10
+ }) => Promise<ReplyResult> : [TCtx] extends [undefined] ? (args: {
11
+ state: TState;
12
+ }) => Promise<ReplyResult> : (args: {
13
+ state: TState;
14
+ ctx: TCtx;
15
+ }) => Promise<ReplyResult>;
16
+ type FluentMiddlewareBuilder<TQuery = unknown, TParams = unknown, TBody = unknown, TState = undefined, TCtx = undefined, TReturns extends ReturnsMap = {}, TAppContext extends Record<string, unknown> = AppContext> = {
17
+ returns<const M extends ReturnsMap>(map: M): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, TCtx, Omit<TReturns, keyof M> & M, TAppContext>;
18
+ handler(fn: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next: FluentNext<TState, TCtx>) => Awaitable<ReplyResult | Response | unknown>): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, TState extends undefined ? {} : TState, TCtx extends undefined ? {} : TCtx>, TReturns>;
19
+ };
20
+ export declare function defineMiddleware(middleware: HonoMiddlewareHandler): HonoMiddlewareUnit;
21
+ export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TState = unknown, TCtx = unknown, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}>(options: {
22
+ state: Schema<TState>;
23
+ ctx: Schema<TCtx>;
24
+ query?: Schema<TQuery>;
25
+ params?: Schema<TParams>;
26
+ body?: Schema<TBody>;
27
+ returns?: TReturns;
28
+ handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next: (args: {
29
+ state: TState;
30
+ ctx: TCtx;
31
+ }) => Promise<ReplyResult>) => Awaitable<ReplyResult | Response | unknown>;
32
+ }): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, TState, TCtx>, TReturns>;
33
+ export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TState = unknown, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}>(options: {
34
+ state: Schema<TState>;
35
+ query?: Schema<TQuery>;
36
+ params?: Schema<TParams>;
37
+ body?: Schema<TBody>;
38
+ returns?: TReturns;
39
+ handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next: (args: {
40
+ state: TState;
41
+ }) => Promise<ReplyResult>) => Awaitable<ReplyResult | Response | unknown>;
42
+ }): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, TState>, TReturns>;
43
+ export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TCtx = unknown, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}>(options: {
44
+ ctx: Schema<TCtx>;
45
+ query?: Schema<TQuery>;
46
+ params?: Schema<TParams>;
47
+ body?: Schema<TBody>;
48
+ returns?: TReturns;
49
+ handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next: (args: {
50
+ ctx: TCtx;
51
+ }) => Promise<ReplyResult>) => Awaitable<ReplyResult | Response | unknown>;
52
+ }): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, {}, TCtx>, TReturns>;
53
+ export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}>(options: {
54
+ query?: Schema<TQuery>;
55
+ params?: Schema<TParams>;
56
+ body?: Schema<TBody>;
57
+ returns?: TReturns;
58
+ handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next: () => Promise<ReplyResult>) => Awaitable<ReplyResult | Response | unknown>;
59
+ }): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, {}>, TReturns>;
60
+ export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext>(): FluentMiddlewareBuilder<unknown, unknown, unknown, undefined, undefined, {}, TAppContext>;
61
+ export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
62
+ query?: Schema<TQuery>;
63
+ params?: Schema<TParams>;
64
+ body?: Schema<TBody>;
65
+ }): FluentMiddlewareBuilder<TQuery, TParams, TBody, undefined, undefined, {}, TAppContext>;
66
+ export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TState = unknown, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
67
+ state: Schema<TState>;
68
+ query?: Schema<TQuery>;
69
+ params?: Schema<TParams>;
70
+ body?: Schema<TBody>;
71
+ }): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, undefined, {}, TAppContext>;
72
+ export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TCtx = unknown, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
73
+ ctx: Schema<TCtx>;
74
+ query?: Schema<TQuery>;
75
+ params?: Schema<TParams>;
76
+ body?: Schema<TBody>;
77
+ }): FluentMiddlewareBuilder<TQuery, TParams, TBody, undefined, TCtx, {}, TAppContext>;
78
+ export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TState = unknown, TCtx = unknown, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
79
+ state: Schema<TState>;
80
+ ctx: Schema<TCtx>;
81
+ query?: Schema<TQuery>;
82
+ params?: Schema<TParams>;
83
+ body?: Schema<TBody>;
84
+ }): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, TCtx, {}, TAppContext>;
85
+ export {};
@@ -0,0 +1,36 @@
1
+ import { createTaserCompatHandler } from "@taserjs/router-core";
2
+ //#region src/define/middleware.ts
3
+ function createFluentBuilder(state) {
4
+ return {
5
+ returns(map) {
6
+ return createFluentBuilder({
7
+ ...state,
8
+ returns: {
9
+ ...state.returns ?? {},
10
+ ...map
11
+ }
12
+ });
13
+ },
14
+ handler(fn) {
15
+ return {
16
+ ...state,
17
+ handler: fn,
18
+ __middlewareAcc: void 0,
19
+ ...state.returns ? { __returns: state.returns } : {}
20
+ };
21
+ }
22
+ };
23
+ }
24
+ function defineMiddleware(options) {
25
+ if (typeof options === "function") {
26
+ const honoMiddleware = options;
27
+ return defineMiddleware({ handler: (ctx, next) => createTaserCompatHandler(honoMiddleware)(ctx, next) });
28
+ }
29
+ if (options === void 0) return createFluentBuilder({});
30
+ if (typeof options === "object" && options !== null && !("handler" in options)) return createFluentBuilder(options);
31
+ return options;
32
+ }
33
+ //#endregion
34
+ export { defineMiddleware };
35
+
36
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","names":[],"sources":["../../../src/define/middleware.ts"],"sourcesContent":["import type { ReplyResult } from '@taserjs/router-utils'\nimport { createTaserCompatHandler } from '@taserjs/router-core'\n\nimport type { Awaitable, ReturnsMap } from '../types/index.js'\nimport type {\n AppContext,\n MiddlewareReturnFromParts,\n MiddlewareUnit,\n StandaloneMiddlewareContext,\n} from '../types/units.js'\nimport type { Schema } from '../types/schema.js'\n\ntype HonoMiddlewareHandler = Parameters<typeof createTaserCompatHandler>[0]\n\ntype HonoMiddlewareUnit = MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, {}>\n>\n\ntype MiddlewareBuilderState<\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TState = unknown,\n TCtx = unknown,\n TReturns extends ReturnsMap = {},\n> = {\n state?: Schema<TState>\n ctx?: Schema<TCtx>\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n returns?: TReturns\n}\n\ntype FluentNext<TState, TCtx>\n = [TState] extends [undefined]\n ? [TCtx] extends [undefined]\n ? () => Promise<ReplyResult>\n : (args: { ctx: TCtx }) => Promise<ReplyResult>\n : [TCtx] extends [undefined]\n ? (args: { state: TState }) => Promise<ReplyResult>\n : (args: { state: TState, ctx: TCtx }) => Promise<ReplyResult>\n\ntype FluentMiddlewareBuilder<\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TState = undefined,\n TCtx = undefined,\n TReturns extends ReturnsMap = {},\n TAppContext extends Record<string, unknown> = AppContext,\n> = {\n returns<const M extends ReturnsMap>(\n map: M,\n ): FluentMiddlewareBuilder<\n TQuery,\n TParams,\n TBody,\n TState,\n TCtx,\n Omit<TReturns, keyof M> & M,\n TAppContext\n >\n handler(\n fn: (\n ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,\n next: FluentNext<TState, TCtx>,\n ) => Awaitable<ReplyResult | Response | unknown>,\n ): MiddlewareUnit<\n MiddlewareReturnFromParts<\n TQuery,\n TParams,\n TBody,\n TState extends undefined ? {} : TState,\n TCtx extends undefined ? {} : TCtx\n >,\n TReturns\n >\n}\n\nfunction createFluentBuilder<TAppContext extends Record<string, unknown> = AppContext>(\n state: MiddlewareBuilderState,\n): FluentMiddlewareBuilder<unknown, unknown, unknown, undefined, undefined, {}, TAppContext> {\n return {\n returns(map: ReturnsMap) {\n return createFluentBuilder<TAppContext>({\n ...state,\n returns: { ...(state.returns ?? {}), ...map },\n })\n },\n handler(fn: (...args: never[]) => unknown) {\n const unit = {\n ...state,\n handler: fn,\n __middlewareAcc: undefined as unknown,\n ...(state.returns ? { __returns: state.returns } : {}),\n }\n return unit as unknown as MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, unknown, unknown>,\n ReturnsMap\n >\n },\n } as unknown as FluentMiddlewareBuilder<unknown, unknown, unknown, undefined, undefined, {}, TAppContext>\n}\n\nexport function defineMiddleware(middleware: HonoMiddlewareHandler): HonoMiddlewareUnit\n\nexport function defineMiddleware<\n TAppContext extends Record<string, unknown> = AppContext,\n TState = unknown,\n TCtx = unknown,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n>(\n options: {\n state: Schema<TState>\n ctx: Schema<TCtx>\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n returns?: TReturns\n handler: (\n ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,\n next: (args: { state: TState, ctx: TCtx }) => Promise<ReplyResult>,\n ) => Awaitable<ReplyResult | Response | unknown>\n },\n): MiddlewareUnit<\n MiddlewareReturnFromParts<TQuery, TParams, TBody, TState, TCtx>,\n TReturns\n>\n\nexport function defineMiddleware<\n TAppContext extends Record<string, unknown> = AppContext,\n TState = unknown,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n>(\n options: {\n state: Schema<TState>\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n returns?: TReturns\n handler: (\n ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,\n next: (args: { state: TState }) => Promise<ReplyResult>,\n ) => Awaitable<ReplyResult | Response | unknown>\n },\n): MiddlewareUnit<\n MiddlewareReturnFromParts<TQuery, TParams, TBody, TState>,\n TReturns\n>\n\nexport function defineMiddleware<\n TAppContext extends Record<string, unknown> = AppContext,\n TCtx = unknown,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n>(\n options: {\n ctx: Schema<TCtx>\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n returns?: TReturns\n handler: (\n ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,\n next: (args: { ctx: TCtx }) => Promise<ReplyResult>,\n ) => Awaitable<ReplyResult | Response | unknown>\n },\n): MiddlewareUnit<\n MiddlewareReturnFromParts<TQuery, TParams, TBody, {}, TCtx>,\n TReturns\n>\n\nexport function defineMiddleware<\n TAppContext extends Record<string, unknown> = AppContext,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n>(\n options: {\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n returns?: TReturns\n handler: (\n ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>,\n next: () => Promise<ReplyResult>,\n ) => Awaitable<ReplyResult | Response | unknown>\n },\n): MiddlewareUnit<\n MiddlewareReturnFromParts<TQuery, TParams, TBody, {}>,\n TReturns\n>\n\nexport function defineMiddleware<\n TAppContext extends Record<string, unknown> = AppContext,\n>(): FluentMiddlewareBuilder<unknown, unknown, unknown, undefined, undefined, {}, TAppContext>\n\nexport function defineMiddleware<\n TAppContext extends Record<string, unknown> = AppContext,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n>(\n options: {\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n },\n): FluentMiddlewareBuilder<TQuery, TParams, TBody, undefined, undefined, {}, TAppContext>\n\nexport function defineMiddleware<\n TAppContext extends Record<string, unknown> = AppContext,\n TState = unknown,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n>(\n options: {\n state: Schema<TState>\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n },\n): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, undefined, {}, TAppContext>\n\nexport function defineMiddleware<\n TAppContext extends Record<string, unknown> = AppContext,\n TCtx = unknown,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n>(\n options: {\n ctx: Schema<TCtx>\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n },\n): FluentMiddlewareBuilder<TQuery, TParams, TBody, undefined, TCtx, {}, TAppContext>\n\nexport function defineMiddleware<\n TAppContext extends Record<string, unknown> = AppContext,\n TState = unknown,\n TCtx = unknown,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n>(\n options: {\n state: Schema<TState>\n ctx: Schema<TCtx>\n query?: Schema<TQuery>\n params?: Schema<TParams>\n body?: Schema<TBody>\n },\n): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, TCtx, {}, TAppContext>\n\nexport function defineMiddleware(options?: unknown): unknown {\n if (typeof options === 'function') {\n const honoMiddleware = options as HonoMiddlewareHandler\n return defineMiddleware({\n handler: (ctx, next) => createTaserCompatHandler(honoMiddleware)(ctx, next),\n })\n }\n\n if (options === undefined) {\n return createFluentBuilder({})\n }\n\n if (\n typeof options === 'object'\n && options !== null\n && !('handler' in options)\n ) {\n return createFluentBuilder(options)\n }\n\n return options\n}\n"],"mappings":";;AAgFA,SAAS,oBACP,OAC2F;CAC3F,OAAO;EACL,QAAQ,KAAiB;GACvB,OAAO,oBAAiC;IACtC,GAAG;IACH,SAAS;KAAE,GAAI,MAAM,WAAW,CAAC;KAAI,GAAG;IAAI;GAC9C,CAAC;EACH;EACA,QAAQ,IAAmC;GAOzC,OAAO;IALL,GAAG;IACH,SAAS;IACT,iBAAiB,KAAA;IACjB,GAAI,MAAM,UAAU,EAAE,WAAW,MAAM,QAAQ,IAAI,CAAC;GAE/C;EAIT;CACF;AACF;AAoKA,SAAgB,iBAAiB,SAA4B;CAC3D,IAAI,OAAO,YAAY,YAAY;EACjC,MAAM,iBAAiB;EACvB,OAAO,iBAAiB,EACtB,UAAU,KAAK,SAAS,yBAAyB,cAAc,CAAC,CAAC,KAAK,IAAI,EAC5E,CAAC;CACH;CAEA,IAAI,YAAY,KAAA,GACd,OAAO,oBAAoB,CAAC,CAAC;CAG/B,IACE,OAAO,YAAY,YAChB,YAAY,QACZ,EAAE,aAAa,UAElB,OAAO,oBAAoB,OAAO;CAGpC,OAAO;AACT"}
@@ -0,0 +1,8 @@
1
+ import { Schema } from '../types/schema.js';
2
+ import { SchemaKey } from '../constants.js';
3
+ export type SchemaValidators = {
4
+ query?: Schema<unknown>;
5
+ params?: Schema<unknown>;
6
+ body?: Schema<unknown>;
7
+ };
8
+ export declare function pickDefinedSchemas(source: SchemaValidators, keyMap?: Partial<Record<SchemaKey, string>>): Record<string, Schema<unknown>>;
@@ -0,0 +1,14 @@
1
+ import { SCHEMA_KEYS } from "../constants.js";
2
+ //#region src/define/validators.ts
3
+ function pickDefinedSchemas(source, keyMap) {
4
+ const result = {};
5
+ for (const key of SCHEMA_KEYS) {
6
+ const value = source[key];
7
+ if (value !== void 0) result[keyMap?.[key] ?? key] = value;
8
+ }
9
+ return result;
10
+ }
11
+ //#endregion
12
+ export { pickDefinedSchemas };
13
+
14
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","names":[],"sources":["../../../src/define/validators.ts"],"sourcesContent":["import type { Schema } from '../types/schema.js'\nimport { SCHEMA_KEYS, type SchemaKey } from '../constants.js'\n\nexport type SchemaValidators = {\n query?: Schema<unknown>\n params?: Schema<unknown>\n body?: Schema<unknown>\n}\n\nexport function pickDefinedSchemas(\n source: SchemaValidators,\n keyMap?: Partial<Record<SchemaKey, string>>,\n): Record<string, Schema<unknown>> {\n const result: Record<string, Schema<unknown>> = {}\n for (const key of SCHEMA_KEYS) {\n const value = source[key]\n if (value !== undefined) {\n result[keyMap?.[key] ?? key] = value\n }\n }\n return result\n}\n"],"mappings":";;AASA,SAAgB,mBACd,QACA,QACiC;CACjC,MAAM,SAA0C,CAAC;CACjD,KAAK,MAAM,OAAO,aAAa;EAC7B,MAAM,QAAQ,OAAO;EACrB,IAAI,UAAU,KAAA,GACZ,OAAO,SAAS,QAAQ,OAAO;CAEnC;CACA,OAAO;AACT"}
@@ -0,0 +1,61 @@
1
+ import { RouteBuilder, RoutePath, Schema } from './types/index.js';
2
+ import { AppContext, HttpMethod } from './types/units.js';
3
+ type WithoutBodyOptions<TQuery, TParams, TQueryIn = unknown, TParamsIn = unknown> = {
4
+ query?: Schema<TQuery, TQueryIn>;
5
+ params?: Schema<TParams, TParamsIn>;
6
+ };
7
+ type WithBodyOptions<TQuery, TParams, TBody, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown> = WithoutBodyOptions<TQuery, TParams, TQueryIn, TParamsIn> & {
8
+ body?: Schema<TBody, TBodyIn>;
9
+ };
10
+ export type CreateWithoutBodyRoute<M extends 'GET' | 'DELETE' | 'OPTIONS' | 'HEAD', TAppContext extends Record<string, unknown> = AppContext> = {
11
+ <const Path extends RoutePath>(path: Path): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
12
+ <const Path extends RoutePath, TQuery = unknown, TParams = unknown, TQueryIn = unknown, TParamsIn = unknown>(path: Path, options: WithoutBodyOptions<TQuery, TParams, TQueryIn, TParamsIn>): RouteBuilder<Path, M, readonly [], {
13
+ query: TQuery;
14
+ params: TParams;
15
+ queryIn: TQueryIn;
16
+ paramsIn: TParamsIn;
17
+ }, {}, TAppContext>;
18
+ };
19
+ export type CreateWithBodyRoute<M extends 'POST' | 'PUT' | 'PATCH', TAppContext extends Record<string, unknown> = AppContext> = {
20
+ <const Path extends RoutePath>(path: Path): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
21
+ <const Path extends RoutePath, TQuery = unknown, TParams = unknown, TBody = unknown, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown>(path: Path, options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>): RouteBuilder<Path, M, readonly [], {
22
+ query: TQuery;
23
+ params: TParams;
24
+ body: TBody;
25
+ queryIn: TQueryIn;
26
+ paramsIn: TParamsIn;
27
+ bodyIn: TBodyIn;
28
+ }, {}, TAppContext>;
29
+ };
30
+ export type CreateAnyRoute<TAppContext extends Record<string, unknown> = AppContext> = {
31
+ <const Path extends RoutePath, const Methods extends readonly HttpMethod[]>(path: Path, methods: Methods): RouteBuilder<Path, Methods[number], readonly [], {}, {}, TAppContext>;
32
+ <const Path extends RoutePath, const Methods extends readonly HttpMethod[], TQuery = unknown, TParams = unknown, TBody = unknown, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown>(path: Path, methods: Methods, options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>): RouteBuilder<Path, Methods[number], readonly [], {
33
+ query: TQuery;
34
+ params: TParams;
35
+ body: TBody;
36
+ queryIn: TQueryIn;
37
+ paramsIn: TParamsIn;
38
+ bodyIn: TBodyIn;
39
+ }, {}, TAppContext>;
40
+ };
41
+ export type CreateAllRoute<TAppContext extends Record<string, unknown> = AppContext> = {
42
+ <const Path extends RoutePath>(path: Path): RouteBuilder<Path, HttpMethod, readonly [], {}, {}, TAppContext>;
43
+ <const Path extends RoutePath, TQuery = unknown, TParams = unknown, TBody = unknown, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown>(path: Path, options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>): RouteBuilder<Path, HttpMethod, readonly [], {
44
+ query: TQuery;
45
+ params: TParams;
46
+ body: TBody;
47
+ queryIn: TQueryIn;
48
+ paramsIn: TParamsIn;
49
+ bodyIn: TBodyIn;
50
+ }, {}, TAppContext>;
51
+ };
52
+ export declare const createGetRoute: CreateWithoutBodyRoute<"GET", AppContext>;
53
+ export declare const createDeleteRoute: CreateWithoutBodyRoute<"DELETE", AppContext>;
54
+ export declare const createOptionsRoute: CreateWithoutBodyRoute<"OPTIONS", AppContext>;
55
+ export declare const createHeadRoute: CreateWithoutBodyRoute<"HEAD", AppContext>;
56
+ export declare const createPostRoute: CreateWithBodyRoute<"POST", AppContext>;
57
+ export declare const createPutRoute: CreateWithBodyRoute<"PUT", AppContext>;
58
+ export declare const createPatchRoute: CreateWithBodyRoute<"PATCH", AppContext>;
59
+ export declare const createAnyRoute: CreateAnyRoute;
60
+ export declare const createAllRoute: CreateAllRoute;
61
+ export {};
@@ -0,0 +1,21 @@
1
+ import { createRouteBuilder } from "./route.js";
2
+ //#region src/factories.ts
3
+ function createWithoutBodyRoute(method) {
4
+ return ((path, options) => createRouteBuilder(path, method, options));
5
+ }
6
+ function createWithBodyRoute(method) {
7
+ return ((path, options) => createRouteBuilder(path, method, options));
8
+ }
9
+ var createGetRoute = createWithoutBodyRoute("GET");
10
+ var createDeleteRoute = createWithoutBodyRoute("DELETE");
11
+ var createOptionsRoute = createWithoutBodyRoute("OPTIONS");
12
+ var createHeadRoute = createWithoutBodyRoute("HEAD");
13
+ var createPostRoute = createWithBodyRoute("POST");
14
+ var createPutRoute = createWithBodyRoute("PUT");
15
+ var createPatchRoute = createWithBodyRoute("PATCH");
16
+ var createAnyRoute = ((path, methods, options) => createRouteBuilder(path, "ANY", options, methods));
17
+ var createAllRoute = ((path, options) => createRouteBuilder(path, "ALL", options));
18
+ //#endregion
19
+ export { createAllRoute, createAnyRoute, createDeleteRoute, createGetRoute, createHeadRoute, createOptionsRoute, createPatchRoute, createPostRoute, createPutRoute };
20
+
21
+ //# sourceMappingURL=factories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factories.js","names":[],"sources":["../../src/factories.ts"],"sourcesContent":["import { createRouteBuilder } from './route.js'\nimport type { RouteBuilder, RoutePath, Schema } from './types/index.js'\nimport type { AppContext, HttpMethod } from './types/units.js'\n\ntype WithoutBodyOptions<TQuery, TParams, TQueryIn = unknown, TParamsIn = unknown> = {\n query?: Schema<TQuery, TQueryIn>\n params?: Schema<TParams, TParamsIn>\n}\n\ntype WithBodyOptions<\n TQuery,\n TParams,\n TBody,\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n> = WithoutBodyOptions<TQuery, TParams, TQueryIn, TParamsIn> & {\n body?: Schema<TBody, TBodyIn>\n}\n\nexport type CreateWithoutBodyRoute<\n M extends 'GET' | 'DELETE' | 'OPTIONS' | 'HEAD',\n TAppContext extends Record<string, unknown> = AppContext,\n> = {\n <const Path extends RoutePath>(path: Path): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>\n <\n const Path extends RoutePath,\n TQuery = unknown,\n TParams = unknown,\n TQueryIn = unknown,\n TParamsIn = unknown,\n >(\n path: Path,\n options: WithoutBodyOptions<TQuery, TParams, TQueryIn, TParamsIn>,\n ): RouteBuilder<\n Path,\n M,\n readonly [],\n {\n query: TQuery\n params: TParams\n queryIn: TQueryIn\n paramsIn: TParamsIn\n },\n {},\n TAppContext\n >\n}\n\nexport type CreateWithBodyRoute<\n M extends 'POST' | 'PUT' | 'PATCH',\n TAppContext extends Record<string, unknown> = AppContext,\n> = {\n <const Path extends RoutePath>(path: Path): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>\n <\n const Path extends RoutePath,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n >(\n path: Path,\n options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>,\n ): RouteBuilder<\n Path,\n M,\n readonly [],\n {\n query: TQuery\n params: TParams\n body: TBody\n queryIn: TQueryIn\n paramsIn: TParamsIn\n bodyIn: TBodyIn\n },\n {},\n TAppContext\n >\n}\n\nexport type CreateAnyRoute<TAppContext extends Record<string, unknown> = AppContext> = {\n <const Path extends RoutePath, const Methods extends readonly HttpMethod[]>(\n path: Path,\n methods: Methods,\n ): RouteBuilder<Path, Methods[number], readonly [], {}, {}, TAppContext>\n <\n const Path extends RoutePath,\n const Methods extends readonly HttpMethod[],\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n >(\n path: Path,\n methods: Methods,\n options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>,\n ): RouteBuilder<\n Path,\n Methods[number],\n readonly [],\n {\n query: TQuery\n params: TParams\n body: TBody\n queryIn: TQueryIn\n paramsIn: TParamsIn\n bodyIn: TBodyIn\n },\n {},\n TAppContext\n >\n}\n\nexport type CreateAllRoute<TAppContext extends Record<string, unknown> = AppContext> = {\n <const Path extends RoutePath>(path: Path): RouteBuilder<Path, HttpMethod, readonly [], {}, {}, TAppContext>\n <\n const Path extends RoutePath,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n >(\n path: Path,\n options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>,\n ): RouteBuilder<\n Path,\n HttpMethod,\n readonly [],\n {\n query: TQuery\n params: TParams\n body: TBody\n queryIn: TQueryIn\n paramsIn: TParamsIn\n bodyIn: TBodyIn\n },\n {},\n TAppContext\n >\n}\n\nfunction createWithoutBodyRoute<M extends 'GET' | 'DELETE' | 'OPTIONS' | 'HEAD'>(\n method: M,\n): CreateWithoutBodyRoute<M> {\n return ((path: string, options?: WithoutBodyOptions<unknown, unknown>) =>\n createRouteBuilder(path, method, options)\n ) as unknown as CreateWithoutBodyRoute<M>\n}\n\nfunction createWithBodyRoute<M extends 'POST' | 'PUT' | 'PATCH'>(\n method: M,\n): CreateWithBodyRoute<M> {\n return ((path: string, options?: WithBodyOptions<unknown, unknown, unknown>) =>\n createRouteBuilder(path, method, options)\n ) as unknown as CreateWithBodyRoute<M>\n}\n\nexport const createGetRoute = createWithoutBodyRoute('GET')\nexport const createDeleteRoute = createWithoutBodyRoute('DELETE')\nexport const createOptionsRoute = createWithoutBodyRoute('OPTIONS')\nexport const createHeadRoute = createWithoutBodyRoute('HEAD')\nexport const createPostRoute = createWithBodyRoute('POST')\nexport const createPutRoute = createWithBodyRoute('PUT')\nexport const createPatchRoute = createWithBodyRoute('PATCH')\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\nexport const createAnyRoute: CreateAnyRoute = ((\n path: string,\n methods: readonly HttpMethod[],\n options?: WithBodyOptions<unknown, unknown, unknown>,\n) => createRouteBuilder(path, 'ANY', options, methods)) as unknown as CreateAnyRoute\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\nexport const createAllRoute: CreateAllRoute = ((\n path: string,\n options?: WithBodyOptions<unknown, unknown, unknown>,\n) => createRouteBuilder(path, 'ALL', options)) as unknown as CreateAllRoute\n"],"mappings":";;AAmJA,SAAS,uBACP,QAC2B;CAC3B,SAAS,MAAc,YACrB,mBAAmB,MAAM,QAAQ,OAAO;AAE5C;AAEA,SAAS,oBACP,QACwB;CACxB,SAAS,MAAc,YACrB,mBAAmB,MAAM,QAAQ,OAAO;AAE5C;AAEA,IAAa,iBAAiB,uBAAuB,KAAK;AAC1D,IAAa,oBAAoB,uBAAuB,QAAQ;AAChE,IAAa,qBAAqB,uBAAuB,SAAS;AAClE,IAAa,kBAAkB,uBAAuB,MAAM;AAC5D,IAAa,kBAAkB,oBAAoB,MAAM;AACzD,IAAa,iBAAiB,oBAAoB,KAAK;AACvD,IAAa,mBAAmB,oBAAoB,OAAO;AAG3D,IAAa,mBACX,MACA,SACA,YACG,mBAAmB,MAAM,OAAO,SAAS,OAAO;AAGrD,IAAa,mBACX,MACA,YACG,mBAAmB,MAAM,OAAO,OAAO"}
@@ -0,0 +1,12 @@
1
+ export type { RouterRegister } from './register.js';
2
+ export type { InferInput, InferOutput, Method, PathParams, ReturnsMap, RoutePath, Schema, Simplify, } from './types/index.js';
3
+ export type { ContextDefinition, CreateContextArgs, CreateTaserAppOptions, InferAppContext, InferAppManifest, OnErrorOptions, RouteManifestShape, TaserHandler, } from './types/app.js';
4
+ export { isReplyResult, reply, ValidationError, validationErrorSchema, } from '@taserjs/router-utils';
5
+ export type { ReplyBodyKind, ReplyOf, ResponseValidationFailureHandler, SuccessReplyData, SuccessStatusCode, } from '@taserjs/router-utils';
6
+ export { createAnyRoute, createAllRoute } from './factories.js';
7
+ export { createTaserApp, TaserRouter } from './taser-router.js';
8
+ export { TaserApp, TaserMountedApp, TaserNativeBound } from './taser-app.js';
9
+ export { createContext } from './create-context.js';
10
+ export { defineHandler } from './define/handler.js';
11
+ export { defineMiddleware } from './define/middleware.js';
12
+ export type { TaserCookieJar, TaserHeaders } from '@taserjs/router-core';
@@ -0,0 +1,8 @@
1
+ import { createAllRoute, createAnyRoute } from "./factories.js";
2
+ import { defineHandler } from "./define/handler.js";
3
+ import { defineMiddleware } from "./define/middleware.js";
4
+ import { TaserApp, TaserMountedApp, TaserNativeBound } from "./taser-app.js";
5
+ import { TaserRouter, createTaserApp } from "./taser-router.js";
6
+ import { createContext } from "./create-context.js";
7
+ import { ValidationError, isReplyResult, reply, validationErrorSchema } from "@taserjs/router-utils";
8
+ export { TaserApp, TaserMountedApp, TaserNativeBound, TaserRouter, ValidationError, createAllRoute, createAnyRoute, createContext, createTaserApp, defineHandler, defineMiddleware, isReplyResult, reply, validationErrorSchema };
@@ -0,0 +1,9 @@
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>>>;
@@ -0,0 +1,33 @@
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
@@ -0,0 +1 @@
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.var as { jwtPayload?: unknown }).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,IAAI,IAAiC;IACtD,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"}
@@ -0,0 +1,3 @@
1
+ import { bodyLimit as honoBodyLimit } from 'hono/body-limit';
2
+ export declare function bodyLimit(...args: Parameters<typeof honoBodyLimit>): import('../types/units.js').MiddlewareUnit<import('../types/units.js').MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
3
+ export type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];
@@ -0,0 +1,11 @@
1
+ import { wrapHonoMiddleware } from "./auth.js";
2
+ import { bodyLimit as bodyLimit$1 } from "hono/body-limit";
3
+ //#region src/middleware/body-limit.ts
4
+ var honoBodyLimitMiddleware = wrapHonoMiddleware(bodyLimit$1);
5
+ function bodyLimit(...args) {
6
+ return honoBodyLimitMiddleware(...args);
7
+ }
8
+ //#endregion
9
+ export { bodyLimit };
10
+
11
+ //# sourceMappingURL=body-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body-limit.js","names":[],"sources":["../../../src/middleware/body-limit.ts"],"sourcesContent":["import { bodyLimit as honoBodyLimit } from 'hono/body-limit'\n\nimport { wrapHonoMiddleware } from './auth.js'\n\nconst honoBodyLimitMiddleware = wrapHonoMiddleware(honoBodyLimit)\n\nexport function bodyLimit(...args: Parameters<typeof honoBodyLimit>) {\n return honoBodyLimitMiddleware(...args)\n}\n\nexport type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0]\n"],"mappings":";;;AAIA,IAAM,0BAA0B,mBAAmB,WAAa;AAEhE,SAAgB,UAAU,GAAG,MAAwC;CACnE,OAAO,wBAAwB,GAAG,IAAI;AACxC"}
@@ -0,0 +1,3 @@
1
+ import { compress as honoCompress } from 'hono/compress';
2
+ export declare function compress(...args: Parameters<typeof honoCompress>): import('../types/units.js').MiddlewareUnit<import('../types/units.js').MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
3
+ export type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>;
@@ -0,0 +1,11 @@
1
+ import { wrapHonoMiddleware } from "./auth.js";
2
+ import { compress as compress$1 } from "hono/compress";
3
+ //#region src/middleware/compress.ts
4
+ var honoCompressMiddleware = wrapHonoMiddleware(compress$1);
5
+ function compress(...args) {
6
+ return honoCompressMiddleware(...args);
7
+ }
8
+ //#endregion
9
+ export { compress };
10
+
11
+ //# sourceMappingURL=compress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress.js","names":[],"sources":["../../../src/middleware/compress.ts"],"sourcesContent":["import { compress as honoCompress } from 'hono/compress'\n\nimport { wrapHonoMiddleware } from './auth.js'\n\nconst honoCompressMiddleware = wrapHonoMiddleware(honoCompress)\n\nexport function compress(...args: Parameters<typeof honoCompress>) {\n return honoCompressMiddleware(...args)\n}\n\nexport type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>\n"],"mappings":";;;AAIA,IAAM,yBAAyB,mBAAmB,UAAY;AAE9D,SAAgB,SAAS,GAAG,MAAuC;CACjE,OAAO,uBAAuB,GAAG,IAAI;AACvC"}
@@ -0,0 +1,3 @@
1
+ import { cors as honoCors } from 'hono/cors';
2
+ export declare function cors(...args: Parameters<typeof honoCors>): import('../types/units.js').MiddlewareUnit<import('../types/units.js').MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
3
+ export type CorsOptions = NonNullable<Parameters<typeof honoCors>[0]>;
@@ -0,0 +1,11 @@
1
+ import { wrapHonoMiddleware } from "./auth.js";
2
+ import { cors as cors$1 } from "hono/cors";
3
+ //#region src/middleware/cors.ts
4
+ var honoCorsMiddleware = wrapHonoMiddleware(cors$1);
5
+ function cors(...args) {
6
+ return honoCorsMiddleware(...args);
7
+ }
8
+ //#endregion
9
+ export { cors };
10
+
11
+ //# sourceMappingURL=cors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.js","names":[],"sources":["../../../src/middleware/cors.ts"],"sourcesContent":["import { cors as honoCors } from 'hono/cors'\n\nimport { wrapHonoMiddleware } from './auth.js'\n\nconst honoCorsMiddleware = wrapHonoMiddleware(honoCors)\n\nexport function cors(...args: Parameters<typeof honoCors>) {\n return honoCorsMiddleware(...args)\n}\n\nexport type CorsOptions = NonNullable<Parameters<typeof honoCors>[0]>\n"],"mappings":";;;AAIA,IAAM,qBAAqB,mBAAmB,MAAQ;AAEtD,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAmB,GAAG,IAAI;AACnC"}
@@ -0,0 +1,3 @@
1
+ import { csrf as honoCsrf } from 'hono/csrf';
2
+ export declare function csrf(...args: Parameters<typeof honoCsrf>): import('../types/units.js').MiddlewareUnit<import('../types/units.js').MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
3
+ export type CsrfOptions = NonNullable<Parameters<typeof honoCsrf>[0]>;
@@ -0,0 +1,11 @@
1
+ import { wrapHonoMiddleware } from "./auth.js";
2
+ import { csrf as csrf$1 } from "hono/csrf";
3
+ //#region src/middleware/csrf.ts
4
+ var honoCsrfMiddleware = wrapHonoMiddleware(csrf$1);
5
+ function csrf(...args) {
6
+ return honoCsrfMiddleware(...args);
7
+ }
8
+ //#endregion
9
+ export { csrf };
10
+
11
+ //# sourceMappingURL=csrf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csrf.js","names":[],"sources":["../../../src/middleware/csrf.ts"],"sourcesContent":["import { csrf as honoCsrf } from 'hono/csrf'\n\nimport { wrapHonoMiddleware } from './auth.js'\n\nconst honoCsrfMiddleware = wrapHonoMiddleware(honoCsrf)\n\nexport function csrf(...args: Parameters<typeof honoCsrf>) {\n return honoCsrfMiddleware(...args)\n}\n\nexport type CsrfOptions = NonNullable<Parameters<typeof honoCsrf>[0]>\n"],"mappings":";;;AAIA,IAAM,qBAAqB,mBAAmB,MAAQ;AAEtD,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAmB,GAAG,IAAI;AACnC"}
@@ -0,0 +1,3 @@
1
+ import { etag as honoEtag } from 'hono/etag';
2
+ export declare function etag(...args: Parameters<typeof honoEtag>): import('../types/units.js').MiddlewareUnit<import('../types/units.js').MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
3
+ export type EtagOptions = NonNullable<Parameters<typeof honoEtag>[0]>;
@@ -0,0 +1,11 @@
1
+ import { wrapHonoMiddleware } from "./auth.js";
2
+ import { etag as etag$1 } from "hono/etag";
3
+ //#region src/middleware/etag.ts
4
+ var honoEtagMiddleware = wrapHonoMiddleware(etag$1);
5
+ function etag(...args) {
6
+ return honoEtagMiddleware(...args);
7
+ }
8
+ //#endregion
9
+ export { etag };
10
+
11
+ //# sourceMappingURL=etag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etag.js","names":[],"sources":["../../../src/middleware/etag.ts"],"sourcesContent":["import { etag as honoEtag } from 'hono/etag'\n\nimport { wrapHonoMiddleware } from './auth.js'\n\nconst honoEtagMiddleware = wrapHonoMiddleware(honoEtag)\n\nexport function etag(...args: Parameters<typeof honoEtag>) {\n return honoEtagMiddleware(...args)\n}\n\nexport type EtagOptions = NonNullable<Parameters<typeof honoEtag>[0]>\n"],"mappings":";;;AAIA,IAAM,qBAAqB,mBAAmB,MAAQ;AAEtD,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAmB,GAAG,IAAI;AACnC"}
@@ -0,0 +1,15 @@
1
+ import { jwk as honoJwk } from 'hono/jwk';
2
+ import { AuthMiddlewareUnit } from './auth.js';
3
+ import { InferOutput, Schema } from '../types/schema.js';
4
+ export type JwkOptions = Parameters<typeof honoJwk>[0];
5
+ export type JwkRequestInit = Pick<RequestInit, 'headers'>;
6
+ export type JwkMiddlewareOptions = JwkOptions & {
7
+ /** Allow `http://` JWKS URLs (local dev). Default false — requires `https://`. */
8
+ allowInsecure?: boolean;
9
+ };
10
+ /**
11
+ * JWK auth middleware. Invalid or missing tokens return **401** (Hono).
12
+ * Valid tokens whose payload fails `payloadSchema` return **403**.
13
+ * Static `jwks_uri` must use HTTPS unless `allowInsecure: true`.
14
+ */
15
+ export declare function jwk<TPayload>(payloadSchema: Schema<TPayload>, options: JwkMiddlewareOptions, init?: JwkRequestInit): AuthMiddlewareUnit<InferOutput<Schema<TPayload>>>;
@@ -0,0 +1,24 @@
1
+ import { createAuthMiddleware } from "./auth.js";
2
+ import { jwk as jwk$1 } from "hono/jwk";
3
+ //#region src/middleware/jwk.ts
4
+ function assertJwksScheme(jwksUri, allowInsecure) {
5
+ const scheme = new URL(jwksUri).protocol.replace(":", "");
6
+ if (scheme === "https") return;
7
+ if (scheme === "http" && allowInsecure) return;
8
+ throw new Error(`JWKS URL must use https:// (or http:// with allowInsecure: true): "${jwksUri}"`);
9
+ }
10
+ /**
11
+ * JWK auth middleware. Invalid or missing tokens return **401** (Hono).
12
+ * Valid tokens whose payload fails `payloadSchema` return **403**.
13
+ * Static `jwks_uri` must use HTTPS unless `allowInsecure: true`.
14
+ */
15
+ function jwk(payloadSchema, options, init) {
16
+ const jwksUri = options.jwks_uri;
17
+ if (typeof jwksUri === "string") assertJwksScheme(jwksUri, options.allowInsecure ?? false);
18
+ const { allowInsecure: _allowInsecure, ...honoOptions } = options;
19
+ return createAuthMiddleware(payloadSchema, jwk$1(honoOptions, init?.headers !== void 0 ? { headers: init.headers } : void 0));
20
+ }
21
+ //#endregion
22
+ export { jwk };
23
+
24
+ //# sourceMappingURL=jwk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwk.js","names":[],"sources":["../../../src/middleware/jwk.ts"],"sourcesContent":["import { jwk as honoJwk } from 'hono/jwk'\n\nimport { createAuthMiddleware, type AuthMiddlewareUnit } from './auth.js'\nimport type { InferOutput, Schema } from '../types/schema.js'\n\nexport type JwkOptions = Parameters<typeof honoJwk>[0]\n\nexport type JwkRequestInit = Pick<RequestInit, 'headers'>\n\nexport type JwkMiddlewareOptions = JwkOptions & {\n /** Allow `http://` JWKS URLs (local dev). Default false — requires `https://`. */\n allowInsecure?: boolean\n}\n\nfunction assertJwksScheme(jwksUri: string, allowInsecure: boolean): void {\n const scheme = new URL(jwksUri).protocol.replace(':', '')\n if (scheme === 'https') {\n return\n }\n if (scheme === 'http' && allowInsecure) {\n return\n }\n throw new Error(\n `JWKS URL must use https:// (or http:// with allowInsecure: true): \"${jwksUri}\"`,\n )\n}\n\n/**\n * JWK auth middleware. Invalid or missing tokens return **401** (Hono).\n * Valid tokens whose payload fails `payloadSchema` return **403**.\n * Static `jwks_uri` must use HTTPS unless `allowInsecure: true`.\n */\nexport function jwk<TPayload>(\n payloadSchema: Schema<TPayload>,\n options: JwkMiddlewareOptions,\n init?: JwkRequestInit,\n): AuthMiddlewareUnit<InferOutput<Schema<TPayload>>> {\n const jwksUri = options.jwks_uri\n if (typeof jwksUri === 'string') {\n assertJwksScheme(jwksUri, options.allowInsecure ?? false)\n }\n\n const { allowInsecure: _allowInsecure, ...honoOptions } = options\n const safeInit = init?.headers !== undefined ? { headers: init.headers } : undefined\n\n return createAuthMiddleware(payloadSchema, honoJwk(honoOptions, safeInit))\n}\n"],"mappings":";;;AAcA,SAAS,iBAAiB,SAAiB,eAA8B;CACvE,MAAM,SAAS,IAAI,IAAI,OAAO,CAAC,CAAC,SAAS,QAAQ,KAAK,EAAE;CACxD,IAAI,WAAW,SACb;CAEF,IAAI,WAAW,UAAU,eACvB;CAEF,MAAM,IAAI,MACR,sEAAsE,QAAQ,EAChF;AACF;;;;;;AAOA,SAAgB,IACd,eACA,SACA,MACmD;CACnD,MAAM,UAAU,QAAQ;CACxB,IAAI,OAAO,YAAY,UACrB,iBAAiB,SAAS,QAAQ,iBAAiB,KAAK;CAG1D,MAAM,EAAE,eAAe,gBAAgB,GAAG,gBAAgB;CAG1D,OAAO,qBAAqB,eAAe,MAAQ,aAFlC,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,QAAQ,IAAI,KAAA,CAEH,CAAC;AAC3E"}
@@ -0,0 +1,10 @@
1
+ import { jwt as honoJwt } from 'hono/jwt';
2
+ import { AuthMiddlewareUnit } from './auth.js';
3
+ import { InferOutput, Schema } from '../types/schema.js';
4
+ export type JwtOptions = Parameters<typeof honoJwt>[0];
5
+ /**
6
+ * JWT auth middleware. Invalid or missing tokens return **401** (Hono).
7
+ * Valid tokens whose payload fails `payloadSchema` return **403**.
8
+ * Use optional schema fields for intentionally optional claims.
9
+ */
10
+ export declare function jwt<TPayload>(payloadSchema: Schema<TPayload>, options: JwtOptions): AuthMiddlewareUnit<InferOutput<Schema<TPayload>>>;
@@ -0,0 +1,15 @@
1
+ import { createAuthMiddleware } from "./auth.js";
2
+ import { jwt as jwt$1 } from "hono/jwt";
3
+ //#region src/middleware/jwt.ts
4
+ /**
5
+ * JWT auth middleware. Invalid or missing tokens return **401** (Hono).
6
+ * Valid tokens whose payload fails `payloadSchema` return **403**.
7
+ * Use optional schema fields for intentionally optional claims.
8
+ */
9
+ function jwt(payloadSchema, options) {
10
+ return createAuthMiddleware(payloadSchema, jwt$1(options));
11
+ }
12
+ //#endregion
13
+ export { jwt };
14
+
15
+ //# sourceMappingURL=jwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.js","names":[],"sources":["../../../src/middleware/jwt.ts"],"sourcesContent":["import { jwt as honoJwt } from 'hono/jwt'\n\nimport { createAuthMiddleware, type AuthMiddlewareUnit } from './auth.js'\nimport type { InferOutput, Schema } from '../types/schema.js'\n\nexport type JwtOptions = Parameters<typeof honoJwt>[0]\n\n/**\n * JWT auth middleware. Invalid or missing tokens return **401** (Hono).\n * Valid tokens whose payload fails `payloadSchema` return **403**.\n * Use optional schema fields for intentionally optional claims.\n */\nexport function jwt<TPayload>(\n payloadSchema: Schema<TPayload>,\n options: JwtOptions,\n): AuthMiddlewareUnit<InferOutput<Schema<TPayload>>> {\n return createAuthMiddleware(payloadSchema, honoJwt(options))\n}\n"],"mappings":";;;;;;;;AAYA,SAAgB,IACd,eACA,SACmD;CACnD,OAAO,qBAAqB,eAAe,MAAQ,OAAO,CAAC;AAC7D"}
@@ -0,0 +1,3 @@
1
+ import { secureHeaders as honoSecureHeaders } from 'hono/secure-headers';
2
+ export declare function secureHeaders(...args: Parameters<typeof honoSecureHeaders>): import('../types/units.js').MiddlewareUnit<import('../types/units.js').MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
3
+ export type SecureHeadersOptions = NonNullable<Parameters<typeof honoSecureHeaders>[0]>;
@@ -0,0 +1,11 @@
1
+ import { wrapHonoMiddleware } from "./auth.js";
2
+ import { secureHeaders as secureHeaders$1 } from "hono/secure-headers";
3
+ //#region src/middleware/secure-headers.ts
4
+ var honoSecureHeadersMiddleware = wrapHonoMiddleware(secureHeaders$1);
5
+ function secureHeaders(...args) {
6
+ return honoSecureHeadersMiddleware(...args);
7
+ }
8
+ //#endregion
9
+ export { secureHeaders };
10
+
11
+ //# sourceMappingURL=secure-headers.js.map