@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
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2026, Taserjs contributors
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # @taserjs/router
2
+
3
+ Type-safe Node.js router with runtime validation and middleware
4
+
5
+ ## Installation
6
+
7
+ **npm:**
8
+ ```bash
9
+ npm install @taserjs/router
10
+ ```
11
+
12
+ **JSR:**
13
+ ```bash
14
+ deno add jsr:@taserjs/router
15
+ npx jsr add @taserjs/router
16
+ ```
17
+
18
+ ## Documentation
19
+
20
+ See the [main documentation](https://github.com/taserjs/taserjs) for usage examples and API reference.
21
+
22
+ ## License
23
+
24
+ ISC
@@ -0,0 +1,17 @@
1
+ //#region src/constants.ts
2
+ /** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */
3
+ var SCHEMA_KEYS = [
4
+ "query",
5
+ "params",
6
+ "body"
7
+ ];
8
+ var HANDLER_SCHEMA_KEY_MAP = {
9
+ query: "handlerQuery",
10
+ params: "handlerParams",
11
+ body: "handlerBody"
12
+ };
13
+ //#endregion
14
+ exports.HANDLER_SCHEMA_KEY_MAP = HANDLER_SCHEMA_KEY_MAP;
15
+ exports.SCHEMA_KEYS = SCHEMA_KEYS;
16
+
17
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.cjs","names":[],"sources":["../../src/constants.ts"],"sourcesContent":["/** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */\nexport const SCHEMA_KEYS = ['query', 'params', 'body'] as const\n\nexport type SchemaKey = (typeof SCHEMA_KEYS)[number]\n\nexport const HANDLER_SCHEMA_KEY_MAP = {\n query: 'handlerQuery',\n params: 'handlerParams',\n body: 'handlerBody',\n} as const satisfies Record<SchemaKey, string>\n"],"mappings":";;AACA,IAAa,cAAc;CAAC;CAAS;CAAU;AAAM;AAIrD,IAAa,yBAAyB;CACpC,OAAO;CACP,QAAQ;CACR,MAAM;AACR"}
@@ -0,0 +1,8 @@
1
+ /** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */
2
+ export declare const SCHEMA_KEYS: readonly ["query", "params", "body"];
3
+ export type SchemaKey = (typeof SCHEMA_KEYS)[number];
4
+ export declare const HANDLER_SCHEMA_KEY_MAP: {
5
+ readonly query: "handlerQuery";
6
+ readonly params: "handlerParams";
7
+ readonly body: "handlerBody";
8
+ };
@@ -0,0 +1,8 @@
1
+ //#region src/create-context.ts
2
+ function createContext(definition) {
3
+ return definition;
4
+ }
5
+ //#endregion
6
+ exports.createContext = createContext;
7
+
8
+ //# sourceMappingURL=create-context.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-context.cjs","names":[],"sources":["../../src/create-context.ts"],"sourcesContent":["import type { ReservedContextKey } from '@taserjs/router-core'\n\nimport type { ContextDefinition } from './types/app.js'\n\ntype NoReservedKeysConstraint<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>>\n = Extract<keyof TBoot | keyof TReq, ReservedContextKey> extends never\n ? unknown\n : never\n\nexport function createContext<\n TBoot extends Record<string, unknown> = Record<string, never>,\n TReq extends Record<string, unknown> = Record<string, never>,\n>(\n definition: ContextDefinition<TBoot, TReq> & NoReservedKeysConstraint<TBoot, TReq>,\n): ContextDefinition<TBoot, TReq> {\n return definition\n}\n\nexport type { ContextDefinition, InferAppContext } from './types/app.js'\n"],"mappings":";AASA,SAAgB,cAId,YACgC;CAChC,OAAO;AACT"}
@@ -0,0 +1,5 @@
1
+ import { ReservedContextKey } from '@taserjs/router-core';
2
+ import { ContextDefinition } from './types/app.js';
3
+ type NoReservedKeysConstraint<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>> = Extract<keyof TBoot | keyof TReq, ReservedContextKey> extends never ? unknown : never;
4
+ export declare function createContext<TBoot extends Record<string, unknown> = Record<string, never>, TReq extends Record<string, unknown> = Record<string, never>>(definition: ContextDefinition<TBoot, TReq> & NoReservedKeysConstraint<TBoot, TReq>): ContextDefinition<TBoot, TReq>;
5
+ export type { ContextDefinition, InferAppContext } from './types/app.js';
@@ -0,0 +1,38 @@
1
+ const require_validators = require("./validators.cjs");
2
+ let _taserjs_router_utils = require("@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
+ ...(0, _taserjs_router_utils.collectReturnsFromDefinitions)(middlewares),
19
+ ...returnsMap
20
+ };
21
+ return {
22
+ $Infer: { Output: void 0 },
23
+ middlewares: [...middlewares],
24
+ handler: fn,
25
+ ...require_validators.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
+ exports.defineHandler = defineHandler;
37
+
38
+ //# sourceMappingURL=handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.cjs","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,IAAA,GAAA,sBAAA,8BAAA,CADwB,WACrB;IAAW,GAAG;GAAW;GAQpD,OAAO;IANL,QAAQ,EAAE,QAAQ,KAAA,EAAiC;IACnD,aAAa,CAAC,GAAG,WAAW;IAC5B,SAAS;IACT,GAAG,mBAAA,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,13 @@
1
+ import { HandlerBuilder } from '../types/index.js';
2
+ import { AppContext } from '../types/units.js';
3
+ import { Schema } from '../types/schema.js';
4
+ export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;
5
+ export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
6
+ query?: Schema<TQuery>;
7
+ params?: Schema<TParams>;
8
+ body?: Schema<TBody>;
9
+ }): HandlerBuilder<readonly [], {
10
+ query: TQuery;
11
+ params: TParams;
12
+ body: TBody;
13
+ }, {}, TAppContext>;
@@ -0,0 +1,36 @@
1
+ let _taserjs_router_core = require("@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) => (0, _taserjs_router_core.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
+ exports.defineMiddleware = defineMiddleware;
35
+
36
+ //# sourceMappingURL=middleware.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.cjs","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,UAAA,GAAA,qBAAA,yBAAA,CAAkC,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,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,14 @@
1
+ const require_constants = require("../constants.cjs");
2
+ //#region src/define/validators.ts
3
+ function pickDefinedSchemas(source, keyMap) {
4
+ const result = {};
5
+ for (const key of require_constants.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
+ exports.pickDefinedSchemas = pickDefinedSchemas;
13
+
14
+ //# sourceMappingURL=validators.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.cjs","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,kBAAA,aAAa;EAC7B,MAAM,QAAQ,OAAO;EACrB,IAAI,UAAU,KAAA,GACZ,OAAO,SAAS,QAAQ,OAAO;CAEnC;CACA,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,29 @@
1
+ const require_route = require("./route.cjs");
2
+ //#region src/factories.ts
3
+ function createWithoutBodyRoute(method) {
4
+ return ((path, options) => require_route.createRouteBuilder(path, method, options));
5
+ }
6
+ function createWithBodyRoute(method) {
7
+ return ((path, options) => require_route.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) => require_route.createRouteBuilder(path, "ANY", options, methods));
17
+ var createAllRoute = ((path, options) => require_route.createRouteBuilder(path, "ALL", options));
18
+ //#endregion
19
+ exports.createAllRoute = createAllRoute;
20
+ exports.createAnyRoute = createAnyRoute;
21
+ exports.createDeleteRoute = createDeleteRoute;
22
+ exports.createGetRoute = createGetRoute;
23
+ exports.createHeadRoute = createHeadRoute;
24
+ exports.createOptionsRoute = createOptionsRoute;
25
+ exports.createPatchRoute = createPatchRoute;
26
+ exports.createPostRoute = createPostRoute;
27
+ exports.createPutRoute = createPutRoute;
28
+
29
+ //# sourceMappingURL=factories.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factories.cjs","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,cAAA,mBAAmB,MAAM,QAAQ,OAAO;AAE5C;AAEA,SAAS,oBACP,QACwB;CACxB,SAAS,MAAc,YACrB,cAAA,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,cAAA,mBAAmB,MAAM,OAAO,SAAS,OAAO;AAGrD,IAAa,mBACX,MACA,YACG,cAAA,mBAAmB,MAAM,OAAO,OAAO"}
@@ -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,42 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_factories = require("./factories.cjs");
3
+ const require_handler = require("./define/handler.cjs");
4
+ const require_middleware = require("./define/middleware.cjs");
5
+ const require_taser_app = require("./taser-app.cjs");
6
+ const require_taser_router = require("./taser-router.cjs");
7
+ const require_create_context = require("./create-context.cjs");
8
+ let _taserjs_router_utils = require("@taserjs/router-utils");
9
+ exports.TaserApp = require_taser_app.TaserApp;
10
+ exports.TaserMountedApp = require_taser_app.TaserMountedApp;
11
+ exports.TaserNativeBound = require_taser_app.TaserNativeBound;
12
+ exports.TaserRouter = require_taser_router.TaserRouter;
13
+ Object.defineProperty(exports, "ValidationError", {
14
+ enumerable: true,
15
+ get: function() {
16
+ return _taserjs_router_utils.ValidationError;
17
+ }
18
+ });
19
+ exports.createAllRoute = require_factories.createAllRoute;
20
+ exports.createAnyRoute = require_factories.createAnyRoute;
21
+ exports.createContext = require_create_context.createContext;
22
+ exports.createTaserApp = require_taser_router.createTaserApp;
23
+ exports.defineHandler = require_handler.defineHandler;
24
+ exports.defineMiddleware = require_middleware.defineMiddleware;
25
+ Object.defineProperty(exports, "isReplyResult", {
26
+ enumerable: true,
27
+ get: function() {
28
+ return _taserjs_router_utils.isReplyResult;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "reply", {
32
+ enumerable: true,
33
+ get: function() {
34
+ return _taserjs_router_utils.reply;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "validationErrorSchema", {
38
+ enumerable: true,
39
+ get: function() {
40
+ return _taserjs_router_utils.validationErrorSchema;
41
+ }
42
+ });
@@ -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,34 @@
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
@@ -0,0 +1 @@
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.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,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,IAAI,IAAiC;IACtD,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"}
@@ -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,12 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_auth = require("./auth.cjs");
3
+ let hono_body_limit = require("hono/body-limit");
4
+ //#region src/middleware/body-limit.ts
5
+ var honoBodyLimitMiddleware = require_auth.wrapHonoMiddleware(hono_body_limit.bodyLimit);
6
+ function bodyLimit(...args) {
7
+ return honoBodyLimitMiddleware(...args);
8
+ }
9
+ //#endregion
10
+ exports.bodyLimit = bodyLimit;
11
+
12
+ //# sourceMappingURL=body-limit.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body-limit.cjs","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,aAAA,mBAAmB,gBAAA,SAAa;AAEhE,SAAgB,UAAU,GAAG,MAAwC;CACnE,OAAO,wBAAwB,GAAG,IAAI;AACxC"}
@@ -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,12 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_auth = require("./auth.cjs");
3
+ let hono_compress = require("hono/compress");
4
+ //#region src/middleware/compress.ts
5
+ var honoCompressMiddleware = require_auth.wrapHonoMiddleware(hono_compress.compress);
6
+ function compress(...args) {
7
+ return honoCompressMiddleware(...args);
8
+ }
9
+ //#endregion
10
+ exports.compress = compress;
11
+
12
+ //# sourceMappingURL=compress.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress.cjs","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,aAAA,mBAAmB,cAAA,QAAY;AAE9D,SAAgB,SAAS,GAAG,MAAuC;CACjE,OAAO,uBAAuB,GAAG,IAAI;AACvC"}
@@ -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,12 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_auth = require("./auth.cjs");
3
+ let hono_cors = require("hono/cors");
4
+ //#region src/middleware/cors.ts
5
+ var honoCorsMiddleware = require_auth.wrapHonoMiddleware(hono_cors.cors);
6
+ function cors(...args) {
7
+ return honoCorsMiddleware(...args);
8
+ }
9
+ //#endregion
10
+ exports.cors = cors;
11
+
12
+ //# sourceMappingURL=cors.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.cjs","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,aAAA,mBAAmB,UAAA,IAAQ;AAEtD,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAmB,GAAG,IAAI;AACnC"}