@taserjs/router 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +0 -7
  2. package/dist/cjs/builder/constants.cjs +0 -6
  3. package/dist/cjs/builder/constants.cjs.map +1 -1
  4. package/dist/cjs/builder/constants.d.cts +0 -5
  5. package/dist/cjs/builder/middleware-unit.cjs +55 -0
  6. package/dist/cjs/builder/middleware-unit.cjs.map +1 -0
  7. package/dist/cjs/builder/middleware-unit.d.cts +18 -0
  8. package/dist/cjs/builder/middleware.cjs +2 -1
  9. package/dist/cjs/builder/middleware.cjs.map +1 -1
  10. package/dist/cjs/builder/route.cjs +6 -21
  11. package/dist/cjs/builder/route.cjs.map +1 -1
  12. package/dist/cjs/builder/router.cjs +0 -4
  13. package/dist/cjs/builder/router.cjs.map +1 -1
  14. package/dist/cjs/builder/router.d.cts +1 -11
  15. package/dist/cjs/define/middleware.cjs +10 -14
  16. package/dist/cjs/define/middleware.cjs.map +1 -1
  17. package/dist/cjs/define/middleware.d.cts +42 -31
  18. package/dist/cjs/index.cjs +2 -2
  19. package/dist/cjs/index.d.cts +2 -2
  20. package/dist/cjs/middleware/body-limit.cjs +3 -3
  21. package/dist/cjs/middleware/body-limit.cjs.map +1 -1
  22. package/dist/cjs/middleware/body-limit.d.cts +1 -1
  23. package/dist/cjs/middleware/compress.cjs +3 -3
  24. package/dist/cjs/middleware/compress.cjs.map +1 -1
  25. package/dist/cjs/middleware/compress.d.cts +1 -1
  26. package/dist/cjs/middleware/cors.cjs +3 -3
  27. package/dist/cjs/middleware/cors.cjs.map +1 -1
  28. package/dist/cjs/middleware/cors.d.cts +1 -1
  29. package/dist/cjs/middleware/csrf.cjs +3 -3
  30. package/dist/cjs/middleware/csrf.cjs.map +1 -1
  31. package/dist/cjs/middleware/csrf.d.cts +1 -1
  32. package/dist/cjs/middleware/etag.cjs +3 -3
  33. package/dist/cjs/middleware/etag.cjs.map +1 -1
  34. package/dist/cjs/middleware/etag.d.cts +1 -1
  35. package/dist/cjs/middleware/hono-mw.cjs +23 -0
  36. package/dist/cjs/middleware/hono-mw.cjs.map +1 -0
  37. package/dist/cjs/middleware/hono-mw.d.cts +16 -0
  38. package/dist/cjs/middleware/jwk.cjs +6 -2
  39. package/dist/cjs/middleware/jwk.cjs.map +1 -1
  40. package/dist/cjs/middleware/jwt.cjs +6 -2
  41. package/dist/cjs/middleware/jwt.cjs.map +1 -1
  42. package/dist/cjs/middleware/secure-headers.cjs +3 -3
  43. package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
  44. package/dist/cjs/middleware/secure-headers.d.cts +1 -1
  45. package/dist/cjs/middleware/timing.cjs +3 -3
  46. package/dist/cjs/middleware/timing.cjs.map +1 -1
  47. package/dist/cjs/middleware/timing.d.cts +1 -1
  48. package/dist/cjs/types/index.d.cts +4 -41
  49. package/dist/cjs/types/units.d.cts +9 -34
  50. package/dist/esm/builder/constants.d.ts +0 -5
  51. package/dist/esm/builder/constants.js +1 -6
  52. package/dist/esm/builder/constants.js.map +1 -1
  53. package/dist/esm/builder/middleware-unit.d.ts +18 -0
  54. package/dist/esm/builder/middleware-unit.js +55 -0
  55. package/dist/esm/builder/middleware-unit.js.map +1 -0
  56. package/dist/esm/builder/middleware.js +2 -1
  57. package/dist/esm/builder/middleware.js.map +1 -1
  58. package/dist/esm/builder/route.js +6 -21
  59. package/dist/esm/builder/route.js.map +1 -1
  60. package/dist/esm/builder/router.d.ts +1 -11
  61. package/dist/esm/builder/router.js +0 -4
  62. package/dist/esm/builder/router.js.map +1 -1
  63. package/dist/esm/define/middleware.d.ts +42 -31
  64. package/dist/esm/define/middleware.js +10 -14
  65. package/dist/esm/define/middleware.js.map +1 -1
  66. package/dist/esm/index.d.ts +2 -2
  67. package/dist/esm/index.js +2 -2
  68. package/dist/esm/middleware/body-limit.d.ts +1 -1
  69. package/dist/esm/middleware/body-limit.js +3 -3
  70. package/dist/esm/middleware/body-limit.js.map +1 -1
  71. package/dist/esm/middleware/compress.d.ts +1 -1
  72. package/dist/esm/middleware/compress.js +3 -3
  73. package/dist/esm/middleware/compress.js.map +1 -1
  74. package/dist/esm/middleware/cors.d.ts +1 -1
  75. package/dist/esm/middleware/cors.js +3 -3
  76. package/dist/esm/middleware/cors.js.map +1 -1
  77. package/dist/esm/middleware/csrf.d.ts +1 -1
  78. package/dist/esm/middleware/csrf.js +3 -3
  79. package/dist/esm/middleware/csrf.js.map +1 -1
  80. package/dist/esm/middleware/etag.d.ts +1 -1
  81. package/dist/esm/middleware/etag.js +3 -3
  82. package/dist/esm/middleware/etag.js.map +1 -1
  83. package/dist/esm/middleware/hono-mw.d.ts +16 -0
  84. package/dist/esm/middleware/hono-mw.js +23 -0
  85. package/dist/esm/middleware/hono-mw.js.map +1 -0
  86. package/dist/esm/middleware/jwk.js +6 -2
  87. package/dist/esm/middleware/jwk.js.map +1 -1
  88. package/dist/esm/middleware/jwt.js +6 -2
  89. package/dist/esm/middleware/jwt.js.map +1 -1
  90. package/dist/esm/middleware/secure-headers.d.ts +1 -1
  91. package/dist/esm/middleware/secure-headers.js +3 -3
  92. package/dist/esm/middleware/secure-headers.js.map +1 -1
  93. package/dist/esm/middleware/timing.d.ts +1 -1
  94. package/dist/esm/middleware/timing.js +3 -3
  95. package/dist/esm/middleware/timing.js.map +1 -1
  96. package/dist/esm/types/index.d.ts +4 -41
  97. package/dist/esm/types/units.d.ts +9 -34
  98. package/package.json +3 -3
  99. package/src/builder/constants.ts +0 -6
  100. package/src/builder/middleware-unit.ts +55 -0
  101. package/src/builder/middleware.ts +6 -2
  102. package/src/builder/route.ts +8 -34
  103. package/src/builder/router.ts +1 -18
  104. package/src/define/middleware.ts +133 -228
  105. package/src/index.ts +3 -1
  106. package/src/middleware/body-limit.ts +3 -4
  107. package/src/middleware/compress.ts +3 -4
  108. package/src/middleware/cors.ts +3 -4
  109. package/src/middleware/csrf.ts +3 -4
  110. package/src/middleware/etag.ts +3 -4
  111. package/src/middleware/hono-mw.ts +22 -0
  112. package/src/middleware/jwk.ts +9 -7
  113. package/src/middleware/jwt.ts +8 -6
  114. package/src/middleware/secure-headers.ts +3 -4
  115. package/src/middleware/timing.ts +3 -4
  116. package/src/types/index.ts +15 -172
  117. package/src/types/units.ts +119 -77
  118. package/dist/cjs/define/handler.cjs +0 -38
  119. package/dist/cjs/define/handler.cjs.map +0 -1
  120. package/dist/cjs/define/handler.d.cts +0 -13
  121. package/dist/cjs/middleware/wrap-hono.cjs +0 -19
  122. package/dist/cjs/middleware/wrap-hono.cjs.map +0 -1
  123. package/dist/cjs/middleware/wrap-hono.d.cts +0 -7
  124. package/dist/cjs/types/units.cjs +0 -8
  125. package/dist/cjs/types/units.cjs.map +0 -1
  126. package/dist/esm/define/handler.d.ts +0 -13
  127. package/dist/esm/define/handler.js +0 -38
  128. package/dist/esm/define/handler.js.map +0 -1
  129. package/dist/esm/middleware/wrap-hono.d.ts +0 -7
  130. package/dist/esm/middleware/wrap-hono.js +0 -18
  131. package/dist/esm/middleware/wrap-hono.js.map +0 -1
  132. package/dist/esm/types/units.js +0 -8
  133. package/dist/esm/types/units.js.map +0 -1
  134. package/src/define/handler.ts +0 -62
  135. package/src/middleware/wrap-hono.ts +0 -25
package/README.md CHANGED
@@ -10,13 +10,6 @@ Type-safe Node.js router with runtime validation and middleware
10
10
  npm install @taserjs/router
11
11
  ```
12
12
 
13
- **JSR:**
14
-
15
- ```bash
16
- deno add jsr:@taserjs/router
17
- npx jsr add @taserjs/router
18
- ```
19
-
20
13
  ## Documentation
21
14
 
22
15
  See the [main documentation](https://github.com/taserjs/taserjs) for usage examples and API reference.
@@ -5,13 +5,7 @@ var SCHEMA_KEYS = [
5
5
  "params",
6
6
  "body"
7
7
  ];
8
- var HANDLER_SCHEMA_KEY_MAP = {
9
- query: "handlerQuery",
10
- params: "handlerParams",
11
- body: "handlerBody"
12
- };
13
8
  //#endregion
14
- exports.HANDLER_SCHEMA_KEY_MAP = HANDLER_SCHEMA_KEY_MAP;
15
9
  exports.SCHEMA_KEYS = SCHEMA_KEYS;
16
10
 
17
11
  //# sourceMappingURL=constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","names":[],"sources":["../../../src/builder/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"}
1
+ {"version":3,"file":"constants.cjs","names":[],"sources":["../../../src/builder/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"],"mappings":";;AACA,IAAa,cAAc;CAAC;CAAS;CAAU;AAAM"}
@@ -1,8 +1,3 @@
1
1
  /** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */
2
2
  export declare const SCHEMA_KEYS: readonly ["query", "params", "body"];
3
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,55 @@
1
+ const require_validators = require("../define/validators.cjs");
2
+ //#region src/builder/middleware-unit.ts
3
+ function createMiddlewareUnitBuilder(requiredLayouts) {
4
+ const validators = {};
5
+ let bodyMode;
6
+ let returnsMap;
7
+ const builder = {
8
+ query(schema) {
9
+ validators.query = schema;
10
+ return builder;
11
+ },
12
+ params(schema) {
13
+ validators.params = schema;
14
+ return builder;
15
+ },
16
+ body(modeOrSchema, schema) {
17
+ if (typeof modeOrSchema === "string") {
18
+ bodyMode = modeOrSchema;
19
+ if (schema !== void 0) validators.body = schema;
20
+ } else {
21
+ bodyMode = "json";
22
+ validators.body = modeOrSchema;
23
+ }
24
+ return builder;
25
+ },
26
+ returns(map) {
27
+ returnsMap = {
28
+ ...returnsMap,
29
+ ...map
30
+ };
31
+ return builder;
32
+ },
33
+ requires() {
34
+ return builder;
35
+ },
36
+ handler(fn) {
37
+ return {
38
+ handler: fn,
39
+ ...require_validators.pickDefinedSchemas(validators),
40
+ ...bodyMode ? { bodyMode } : {},
41
+ ...returnsMap ? {
42
+ returns: returnsMap,
43
+ __returns: returnsMap
44
+ } : {},
45
+ ...requiredLayouts !== void 0 ? { __requiredLayouts: requiredLayouts } : {},
46
+ __middlewareAcc: void 0
47
+ };
48
+ }
49
+ };
50
+ return builder;
51
+ }
52
+ //#endregion
53
+ exports.createMiddlewareUnitBuilder = createMiddlewareUnitBuilder;
54
+
55
+ //# sourceMappingURL=middleware-unit.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware-unit.cjs","names":[],"sources":["../../../src/builder/middleware-unit.ts"],"sourcesContent":["import type { BodyMode } from \"@taserjs/router-core\";\n\nimport type { ReturnsMap } from \"../types/returns.js\";\nimport type { Schema } from \"../types/schema.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"../define/validators.js\";\n\nexport function createMiddlewareUnitBuilder(requiredLayouts?: string | readonly string[]) {\n const validators: SchemaValidators = {};\n let bodyMode: BodyMode | undefined;\n let returnsMap: ReturnsMap | undefined;\n\n const builder = {\n query(schema: Schema<unknown>) {\n validators.query = schema;\n return builder;\n },\n params(schema: Schema<unknown>) {\n validators.params = schema;\n return builder;\n },\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>) {\n if (typeof modeOrSchema === \"string\") {\n bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n validators.body = schema;\n }\n } else {\n bodyMode = \"json\";\n validators.body = modeOrSchema;\n }\n return builder;\n },\n returns(map: ReturnsMap) {\n returnsMap = { ...returnsMap, ...map };\n return builder;\n },\n requires() {\n return builder;\n },\n handler(fn: (ctx: any, next: any) => any) {\n const schemas = pickDefinedSchemas(validators);\n const unit = {\n handler: fn,\n ...schemas,\n ...(bodyMode ? { bodyMode } : {}),\n ...(returnsMap ? { returns: returnsMap, __returns: returnsMap } : {}),\n ...(requiredLayouts !== undefined ? { __requiredLayouts: requiredLayouts } : {}),\n __middlewareAcc: undefined as unknown,\n };\n return unit;\n },\n };\n\n return builder;\n}\n"],"mappings":";;AAMA,SAAgB,4BAA4B,iBAA8C;CACxF,MAAM,aAA+B,CAAC;CACtC,IAAI;CACJ,IAAI;CAEJ,MAAM,UAAU;EACd,MAAM,QAAyB;GAC7B,WAAW,QAAQ;GACnB,OAAO;EACT;EACA,OAAO,QAAyB;GAC9B,WAAW,SAAS;GACpB,OAAO;EACT;EACA,KAAK,cAA0C,QAA0B;GACvE,IAAI,OAAO,iBAAiB,UAAU;IACpC,WAAW;IACX,IAAI,WAAW,KAAA,GACb,WAAW,OAAO;GAEtB,OAAO;IACL,WAAW;IACX,WAAW,OAAO;GACpB;GACA,OAAO;EACT;EACA,QAAQ,KAAiB;GACvB,aAAa;IAAE,GAAG;IAAY,GAAG;GAAI;GACrC,OAAO;EACT;EACA,WAAW;GACT,OAAO;EACT;EACA,QAAQ,IAAkC;GAUxC,OAAO;IAPL,SAAS;IACT,GAHc,mBAAA,mBAAmB,UAG9B;IACH,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;IAC/B,GAAI,aAAa;KAAE,SAAS;KAAY,WAAW;IAAW,IAAI,CAAC;IACnE,GAAI,oBAAoB,KAAA,IAAY,EAAE,mBAAmB,gBAAgB,IAAI,CAAC;IAC9E,iBAAiB,KAAA;GAEZ;EACT;CACF;CAEA,OAAO;AACT"}
@@ -0,0 +1,18 @@
1
+ import { BodyMode } from '@taserjs/router-core';
2
+ import { ReturnsMap } from '../types/returns.js';
3
+ import { Schema } from '../types/schema.js';
4
+ export declare function createMiddlewareUnitBuilder(requiredLayouts?: string | readonly string[]): {
5
+ query(schema: Schema<unknown>): /*elided*/ any;
6
+ params(schema: Schema<unknown>): /*elided*/ any;
7
+ body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>): /*elided*/ any;
8
+ returns(map: ReturnsMap): /*elided*/ any;
9
+ requires(): /*elided*/ any;
10
+ handler(fn: (ctx: any, next: any) => any): {
11
+ __middlewareAcc: unknown;
12
+ __requiredLayouts?: string | readonly string[];
13
+ returns?: ReturnsMap;
14
+ __returns?: ReturnsMap;
15
+ bodyMode?: BodyMode;
16
+ handler: (ctx: any, next: any) => any;
17
+ };
18
+ };
@@ -5,7 +5,8 @@ function createMiddleware(layout) {
5
5
  layout,
6
6
  middlewares: entries,
7
7
  use(definition) {
8
- entries.push(definition);
8
+ if (typeof definition === "function") entries.push({ handler: definition });
9
+ else entries.push(definition);
9
10
  return chain;
10
11
  }
11
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/builder/middleware.ts"],"sourcesContent":["import type { LayoutId, MiddlewareBuilder } from \"../types/index.js\";\nimport type { MiddlewareDefinition } from \"../types/units.js\";\n\nexport function createMiddleware<const Layout extends LayoutId>(\n layout: Layout,\n): MiddlewareBuilder<Layout, readonly []> {\n const entries: MiddlewareDefinition[] = [];\n\n const chain = {\n layout,\n middlewares: entries,\n use(definition: MiddlewareDefinition) {\n entries.push(definition);\n return chain;\n },\n };\n\n return chain as unknown as MiddlewareBuilder<Layout, readonly []>;\n}\n"],"mappings":";AAGA,SAAgB,iBACd,QACwC;CACxC,MAAM,UAAkC,CAAC;CAEzC,MAAM,QAAQ;EACZ;EACA,aAAa;EACb,IAAI,YAAkC;GACpC,QAAQ,KAAK,UAAU;GACvB,OAAO;EACT;CACF;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/builder/middleware.ts"],"sourcesContent":["import type { LayoutId, MiddlewareBuilder } from \"../types/index.js\";\nimport type { MiddlewareDefinition } from \"../types/units.js\";\n\nexport function createMiddleware<const Layout extends LayoutId>(\n layout: Layout,\n): MiddlewareBuilder<Layout, readonly []> {\n const entries: MiddlewareDefinition[] = [];\n\n const chain = {\n layout,\n middlewares: entries,\n use(definition: MiddlewareDefinition | ((ctx: any, next: any) => any)) {\n if (typeof definition === \"function\") {\n entries.push({ handler: definition as any });\n } else {\n entries.push(definition);\n }\n return chain;\n },\n };\n\n return chain as unknown as MiddlewareBuilder<Layout, readonly []>;\n}\n"],"mappings":";AAGA,SAAgB,iBACd,QACwC;CACxC,MAAM,UAAkC,CAAC;CAEzC,MAAM,QAAQ;EACZ;EACA,aAAa;EACb,IAAI,YAAmE;GACrE,IAAI,OAAO,eAAe,YACxB,QAAQ,KAAK,EAAE,SAAS,WAAkB,CAAC;QAE3C,QAAQ,KAAK,UAAU;GAEzB,OAAO;EACT;CACF;CAEA,OAAO;AACT"}
@@ -1,5 +1,3 @@
1
- const require_units = require("../types/units.cjs");
2
- const require_constants = require("./constants.cjs");
3
1
  const require_validators = require("../define/validators.cjs");
4
2
  let _taserjs_router_utils = require("@taserjs/router-utils");
5
3
  //#region src/builder/route.ts
@@ -10,7 +8,7 @@ function toUtilsMap(map) {
10
8
  return out;
11
9
  }
12
10
  function buildEffectiveReturns(args) {
13
- const with422 = (0, _taserjs_router_utils.withAuto422)((0, _taserjs_router_utils.mergeReturnsMaps)(toUtilsMap(args.middlewareReturns), toUtilsMap(args.routeReturns), toUtilsMap(args.handlerMiddlewareReturns), toUtilsMap(args.handlerReturns)), (0, _taserjs_router_utils.hasInputSchemas)(args.schemas));
11
+ const with422 = (0, _taserjs_router_utils.withAuto422)((0, _taserjs_router_utils.mergeReturnsMaps)(toUtilsMap(args.middlewareReturns), toUtilsMap(args.routeReturns)), (0, _taserjs_router_utils.hasInputSchemas)(args.schemas));
14
12
  return Object.keys(with422).length > 0 ? with422 : void 0;
15
13
  }
16
14
  function buildRouteBase(path, method, methods, middlewares) {
@@ -56,38 +54,25 @@ function createRouteBuilder(path, method, methods) {
56
54
  return builder;
57
55
  },
58
56
  use(definition) {
59
- middlewares.push(definition);
57
+ if (typeof definition === "function") middlewares.push({ handler: definition });
58
+ else middlewares.push(definition);
60
59
  return builder;
61
60
  },
62
- handler(fnOrUnit) {
61
+ handler(fn) {
63
62
  const routeSchemas = require_validators.pickDefinedSchemas(validators);
64
63
  const base = buildRouteBase(path, method, methods, middlewares);
65
- const unit = require_units.isHandlerUnit(fnOrUnit) ? fnOrUnit : {
66
- handler: fnOrUnit,
67
- middlewares: [],
68
- returns: void 0
69
- };
70
- const handlerSchemas = require_units.isHandlerUnit(fnOrUnit) ? require_validators.pickDefinedSchemas(fnOrUnit, require_constants.HANDLER_SCHEMA_KEY_MAP) : {};
71
64
  const returns = buildEffectiveReturns({
72
65
  middlewareReturns: (0, _taserjs_router_utils.collectReturnsFromDefinitions)(middlewares),
73
66
  routeReturns,
74
- handlerMiddlewareReturns: (0, _taserjs_router_utils.collectReturnsFromDefinitions)(unit.middlewares),
75
- handlerReturns: unit.returns,
76
67
  schemas: {
77
68
  ...validators,
78
- handlerQuery: unit.query,
79
- handlerParams: unit.params,
80
- handlerBody: unit.body,
81
- middlewares,
82
- handlerMiddlewares: unit.middlewares
69
+ middlewares
83
70
  }
84
71
  });
85
72
  return {
86
73
  ...base,
87
- handlerMiddlewares: [...unit.middlewares],
88
- handler: unit.handler,
74
+ handler: fn,
89
75
  ...routeSchemas,
90
- ...handlerSchemas,
91
76
  ...bodyMode ? { bodyMode } : {},
92
77
  ...returns ? { returns } : {}
93
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"route.cjs","names":[],"sources":["../../../src/builder/route.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport {\n collectReturnsFromDefinitions,\n hasInputSchemas,\n mergeReturnsMaps,\n withAuto422,\n} from \"@taserjs/router-utils\";\nimport type { BodyMode } from \"@taserjs/router-core\";\n\nimport type {\n Method,\n RouteBuilder,\n RoutePath,\n ReturnsMap,\n ValidatorParts,\n Schema,\n} from \"../types/index.js\";\nimport type { HttpMethod, MiddlewareDefinition } from \"../types/units.js\";\nimport { isHandlerUnit } from \"../types/units.js\";\nimport { HANDLER_SCHEMA_KEY_MAP } from \"./constants.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"../define/validators.js\";\n\nfunction toUtilsMap(map: ReturnsMap | undefined): Record<number, StandardSchemaV1> {\n if (!map) {\n return {};\n }\n const out: Record<number, StandardSchemaV1> = {};\n for (const [key, schema] of Object.entries(map)) {\n if (schema !== undefined) {\n out[Number(key)] = schema;\n }\n }\n return out;\n}\n\nfunction buildEffectiveReturns(args: {\n middlewareReturns: ReturnsMap;\n routeReturns: ReturnsMap;\n handlerMiddlewareReturns: ReturnsMap;\n handlerReturns: ReturnsMap | undefined;\n schemas: {\n query?: unknown;\n params?: unknown;\n body?: unknown;\n handlerQuery?: unknown;\n handlerParams?: unknown;\n handlerBody?: unknown;\n middlewares?: readonly MiddlewareDefinition[];\n handlerMiddlewares?: readonly MiddlewareDefinition[];\n };\n}): Record<number, StandardSchemaV1> | undefined {\n const merged = mergeReturnsMaps(\n toUtilsMap(args.middlewareReturns),\n toUtilsMap(args.routeReturns),\n toUtilsMap(args.handlerMiddlewareReturns),\n toUtilsMap(args.handlerReturns),\n );\n const with422 = withAuto422(merged, hasInputSchemas(args.schemas));\n return Object.keys(with422).length > 0 ? with422 : undefined;\n}\n\nfunction buildRouteBase(\n path: string,\n method: HttpMethod | \"ANY\" | \"ALL\",\n methods: readonly HttpMethod[] | undefined,\n middlewares: MiddlewareDefinition[],\n) {\n return {\n path,\n method,\n ...(methods ? { methods: [...methods] } : {}),\n middlewares: [...middlewares],\n };\n}\n\n/** Shared internal builder — not part of the public `@taserjs/router` API. */\nexport function createRouteBuilder(\n path: string,\n method: HttpMethod | \"ANY\" | \"ALL\",\n methods?: readonly HttpMethod[],\n): RouteBuilder<RoutePath, Method, readonly [], ValidatorParts> {\n const middlewares: MiddlewareDefinition[] = [];\n let routeReturns: Record<number, StandardSchemaV1> = {};\n const validators: SchemaValidators = {};\n let bodyMode: BodyMode | undefined;\n\n const builder = {\n path,\n method,\n query(schema: Schema<unknown>) {\n validators.query = schema;\n return builder;\n },\n params(schema: Schema<unknown>) {\n validators.params = schema;\n return builder;\n },\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>) {\n if (typeof modeOrSchema === \"string\") {\n bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n validators.body = schema;\n }\n } else {\n bodyMode = \"json\";\n validators.body = modeOrSchema;\n }\n return builder;\n },\n returns(map: ReturnsMap) {\n routeReturns = { ...routeReturns, ...toUtilsMap(map) };\n return builder;\n },\n use(definition: MiddlewareDefinition) {\n middlewares.push(definition);\n return builder;\n },\n handler(fnOrUnit: ((ctx: unknown) => unknown) | unknown) {\n const routeSchemas = pickDefinedSchemas(validators);\n const base = buildRouteBase(path, method, methods, middlewares);\n\n const unit = isHandlerUnit(fnOrUnit)\n ? fnOrUnit\n : {\n handler: fnOrUnit as (ctx: unknown) => Response | Promise<Response>,\n middlewares: [] as MiddlewareDefinition[],\n returns: undefined as ReturnsMap | undefined,\n };\n\n const handlerSchemas = isHandlerUnit(fnOrUnit)\n ? pickDefinedSchemas(fnOrUnit, HANDLER_SCHEMA_KEY_MAP)\n : {};\n\n const returns = buildEffectiveReturns({\n middlewareReturns: collectReturnsFromDefinitions(middlewares),\n routeReturns,\n handlerMiddlewareReturns: collectReturnsFromDefinitions(unit.middlewares),\n handlerReturns: unit.returns,\n schemas: {\n ...validators,\n handlerQuery: (unit as any).query,\n handlerParams: (unit as any).params,\n handlerBody: (unit as any).body,\n middlewares,\n handlerMiddlewares: unit.middlewares,\n },\n });\n\n return {\n ...base,\n handlerMiddlewares: [...unit.middlewares],\n handler: unit.handler,\n ...routeSchemas,\n ...handlerSchemas,\n ...(bodyMode ? { bodyMode } : {}),\n ...(returns ? { returns } : {}),\n };\n },\n };\n\n return builder as unknown as RouteBuilder<RoutePath, Method, readonly [], ValidatorParts>;\n}\n"],"mappings":";;;;;AAsBA,SAAS,WAAW,KAA+D;CACjF,IAAI,CAAC,KACH,OAAO,CAAC;CAEV,MAAM,MAAwC,CAAC;CAC/C,KAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,GAAG,GAC5C,IAAI,WAAW,KAAA,GACb,IAAI,OAAO,GAAG,KAAK;CAGvB,OAAO;AACT;AAEA,SAAS,sBAAsB,MAekB;CAO/C,MAAM,WAAA,GAAA,sBAAA,YAAA,EAAA,GAAA,sBAAA,iBAAA,CALJ,WAAW,KAAK,iBAAiB,GACjC,WAAW,KAAK,YAAY,GAC5B,WAAW,KAAK,wBAAwB,GACxC,WAAW,KAAK,cAAc,CAEJ,IAAA,GAAA,sBAAA,gBAAA,CAAwB,KAAK,OAAO,CAAC;CACjE,OAAO,OAAO,KAAK,OAAO,CAAC,CAAC,SAAS,IAAI,UAAU,KAAA;AACrD;AAEA,SAAS,eACP,MACA,QACA,SACA,aACA;CACA,OAAO;EACL;EACA;EACA,GAAI,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC;EAC3C,aAAa,CAAC,GAAG,WAAW;CAC9B;AACF;;AAGA,SAAgB,mBACd,MACA,QACA,SAC8D;CAC9D,MAAM,cAAsC,CAAC;CAC7C,IAAI,eAAiD,CAAC;CACtD,MAAM,aAA+B,CAAC;CACtC,IAAI;CAEJ,MAAM,UAAU;EACd;EACA;EACA,MAAM,QAAyB;GAC7B,WAAW,QAAQ;GACnB,OAAO;EACT;EACA,OAAO,QAAyB;GAC9B,WAAW,SAAS;GACpB,OAAO;EACT;EACA,KAAK,cAA0C,QAA0B;GACvE,IAAI,OAAO,iBAAiB,UAAU;IACpC,WAAW;IACX,IAAI,WAAW,KAAA,GACb,WAAW,OAAO;GAEtB,OAAO;IACL,WAAW;IACX,WAAW,OAAO;GACpB;GACA,OAAO;EACT;EACA,QAAQ,KAAiB;GACvB,eAAe;IAAE,GAAG;IAAc,GAAG,WAAW,GAAG;GAAE;GACrD,OAAO;EACT;EACA,IAAI,YAAkC;GACpC,YAAY,KAAK,UAAU;GAC3B,OAAO;EACT;EACA,QAAQ,UAAiD;GACvD,MAAM,eAAe,mBAAA,mBAAmB,UAAU;GAClD,MAAM,OAAO,eAAe,MAAM,QAAQ,SAAS,WAAW;GAE9D,MAAM,OAAO,cAAA,cAAc,QAAQ,IAC/B,WACA;IACE,SAAS;IACT,aAAa,CAAC;IACd,SAAS,KAAA;GACX;GAEJ,MAAM,iBAAiB,cAAA,cAAc,QAAQ,IACzC,mBAAA,mBAAmB,UAAU,kBAAA,sBAAsB,IACnD,CAAC;GAEL,MAAM,UAAU,sBAAsB;IACpC,oBAAA,GAAA,sBAAA,8BAAA,CAAiD,WAAW;IAC5D;IACA,2BAAA,GAAA,sBAAA,8BAAA,CAAwD,KAAK,WAAW;IACxE,gBAAgB,KAAK;IACrB,SAAS;KACP,GAAG;KACH,cAAe,KAAa;KAC5B,eAAgB,KAAa;KAC7B,aAAc,KAAa;KAC3B;KACA,oBAAoB,KAAK;IAC3B;GACF,CAAC;GAED,OAAO;IACL,GAAG;IACH,oBAAoB,CAAC,GAAG,KAAK,WAAW;IACxC,SAAS,KAAK;IACd,GAAG;IACH,GAAG;IACH,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;IAC/B,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;GAC/B;EACF;CACF;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"route.cjs","names":[],"sources":["../../../src/builder/route.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport {\n collectReturnsFromDefinitions,\n hasInputSchemas,\n mergeReturnsMaps,\n withAuto422,\n} from \"@taserjs/router-utils\";\nimport type { BodyMode } from \"@taserjs/router-core\";\n\nimport type {\n Method,\n RouteBuilder,\n RoutePath,\n ReturnsMap,\n ValidatorParts,\n Schema,\n} from \"../types/index.js\";\nimport type { HttpMethod, MiddlewareDefinition } from \"../types/units.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"../define/validators.js\";\n\nfunction toUtilsMap(map: ReturnsMap | undefined): Record<number, StandardSchemaV1> {\n if (!map) {\n return {};\n }\n const out: Record<number, StandardSchemaV1> = {};\n for (const [key, schema] of Object.entries(map)) {\n if (schema !== undefined) {\n out[Number(key)] = schema;\n }\n }\n return out;\n}\n\nfunction buildEffectiveReturns(args: {\n middlewareReturns: ReturnsMap;\n routeReturns: ReturnsMap;\n schemas: {\n query?: unknown;\n params?: unknown;\n body?: unknown;\n middlewares?: readonly MiddlewareDefinition[];\n };\n}): Record<number, StandardSchemaV1> | undefined {\n const merged = mergeReturnsMaps(\n toUtilsMap(args.middlewareReturns),\n toUtilsMap(args.routeReturns),\n );\n const with422 = withAuto422(merged, hasInputSchemas(args.schemas));\n return Object.keys(with422).length > 0 ? with422 : undefined;\n}\n\nfunction buildRouteBase(\n path: string,\n method: HttpMethod | \"ANY\" | \"ALL\",\n methods: readonly HttpMethod[] | undefined,\n middlewares: MiddlewareDefinition[],\n) {\n return {\n path,\n method,\n ...(methods ? { methods: [...methods] } : {}),\n middlewares: [...middlewares],\n };\n}\n\n/** Shared internal builder — not part of the public `@taserjs/router` API. */\nexport function createRouteBuilder(\n path: string,\n method: HttpMethod | \"ANY\" | \"ALL\",\n methods?: readonly HttpMethod[],\n): RouteBuilder<RoutePath, Method, readonly [], ValidatorParts> {\n const middlewares: MiddlewareDefinition[] = [];\n let routeReturns: Record<number, StandardSchemaV1> = {};\n const validators: SchemaValidators = {};\n let bodyMode: BodyMode | undefined;\n\n const builder = {\n path,\n method,\n query(schema: Schema<unknown>) {\n validators.query = schema;\n return builder;\n },\n params(schema: Schema<unknown>) {\n validators.params = schema;\n return builder;\n },\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>) {\n if (typeof modeOrSchema === \"string\") {\n bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n validators.body = schema;\n }\n } else {\n bodyMode = \"json\";\n validators.body = modeOrSchema;\n }\n return builder;\n },\n returns(map: ReturnsMap) {\n routeReturns = { ...routeReturns, ...toUtilsMap(map) };\n return builder;\n },\n use(definition: MiddlewareDefinition | ((ctx: any, next: any) => any)) {\n if (typeof definition === \"function\") {\n middlewares.push({ handler: definition as any });\n } else {\n middlewares.push(definition);\n }\n return builder;\n },\n handler(fn: (ctx: unknown) => Response | Promise<Response>) {\n const routeSchemas = pickDefinedSchemas(validators);\n const base = buildRouteBase(path, method, methods, middlewares);\n\n const returns = buildEffectiveReturns({\n middlewareReturns: collectReturnsFromDefinitions(middlewares),\n routeReturns,\n schemas: {\n ...validators,\n middlewares,\n },\n });\n\n return {\n ...base,\n handler: fn,\n ...routeSchemas,\n ...(bodyMode ? { bodyMode } : {}),\n ...(returns ? { returns } : {}),\n };\n },\n };\n\n return builder as unknown as RouteBuilder<RoutePath, Method, readonly [], ValidatorParts>;\n}\n"],"mappings":";;;AAoBA,SAAS,WAAW,KAA+D;CACjF,IAAI,CAAC,KACH,OAAO,CAAC;CAEV,MAAM,MAAwC,CAAC;CAC/C,KAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,GAAG,GAC5C,IAAI,WAAW,KAAA,GACb,IAAI,OAAO,GAAG,KAAK;CAGvB,OAAO;AACT;AAEA,SAAS,sBAAsB,MASkB;CAK/C,MAAM,WAAA,GAAA,sBAAA,YAAA,EAAA,GAAA,sBAAA,iBAAA,CAHJ,WAAW,KAAK,iBAAiB,GACjC,WAAW,KAAK,YAAY,CAEF,IAAA,GAAA,sBAAA,gBAAA,CAAwB,KAAK,OAAO,CAAC;CACjE,OAAO,OAAO,KAAK,OAAO,CAAC,CAAC,SAAS,IAAI,UAAU,KAAA;AACrD;AAEA,SAAS,eACP,MACA,QACA,SACA,aACA;CACA,OAAO;EACL;EACA;EACA,GAAI,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC;EAC3C,aAAa,CAAC,GAAG,WAAW;CAC9B;AACF;;AAGA,SAAgB,mBACd,MACA,QACA,SAC8D;CAC9D,MAAM,cAAsC,CAAC;CAC7C,IAAI,eAAiD,CAAC;CACtD,MAAM,aAA+B,CAAC;CACtC,IAAI;CAEJ,MAAM,UAAU;EACd;EACA;EACA,MAAM,QAAyB;GAC7B,WAAW,QAAQ;GACnB,OAAO;EACT;EACA,OAAO,QAAyB;GAC9B,WAAW,SAAS;GACpB,OAAO;EACT;EACA,KAAK,cAA0C,QAA0B;GACvE,IAAI,OAAO,iBAAiB,UAAU;IACpC,WAAW;IACX,IAAI,WAAW,KAAA,GACb,WAAW,OAAO;GAEtB,OAAO;IACL,WAAW;IACX,WAAW,OAAO;GACpB;GACA,OAAO;EACT;EACA,QAAQ,KAAiB;GACvB,eAAe;IAAE,GAAG;IAAc,GAAG,WAAW,GAAG;GAAE;GACrD,OAAO;EACT;EACA,IAAI,YAAmE;GACrE,IAAI,OAAO,eAAe,YACxB,YAAY,KAAK,EAAE,SAAS,WAAkB,CAAC;QAE/C,YAAY,KAAK,UAAU;GAE7B,OAAO;EACT;EACA,QAAQ,IAAoD;GAC1D,MAAM,eAAe,mBAAA,mBAAmB,UAAU;GAClD,MAAM,OAAO,eAAe,MAAM,QAAQ,SAAS,WAAW;GAE9D,MAAM,UAAU,sBAAsB;IACpC,oBAAA,GAAA,sBAAA,8BAAA,CAAiD,WAAW;IAC5D;IACA,SAAS;KACP,GAAG;KACH;IACF;GACF,CAAC;GAED,OAAO;IACL,GAAG;IACH,SAAS;IACT,GAAG;IACH,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;IAC/B,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;GAC/B;EACF;CACF;CAEA,OAAO;AACT"}
@@ -1,5 +1,4 @@
1
1
  const require_factories = require("./factories.cjs");
2
- const require_handler = require("../define/handler.cjs");
3
2
  const require_middleware = require("../define/middleware.cjs");
4
3
  const require_middleware$1 = require("./middleware.cjs");
5
4
  const require_app = require("./app.cjs");
@@ -44,9 +43,6 @@ var TaserRouter = class {
44
43
  middleware(layout) {
45
44
  return require_middleware$1.createMiddleware(layout);
46
45
  }
47
- defineHandler(options) {
48
- return options === void 0 ? require_handler.defineHandler() : require_handler.defineHandler(options);
49
- }
50
46
  defineMiddleware = require_middleware.defineMiddleware;
51
47
  create(manifest, runtimeOptions) {
52
48
  const definition = this.state.contextDef;
@@ -1 +1 @@
1
- {"version":3,"file":"router.cjs","names":[],"sources":["../../../src/builder/router.ts"],"sourcesContent":["import {\n createTaserRuntime,\n type NotFoundHandler,\n type OnErrorHandler,\n type RouteManifestShape,\n} from \"@taserjs/router-core\";\nimport { isPromise, normalizeOnError } from \"@taserjs/router-utils\";\n\nimport {\n createAllRoute,\n createAnyRoute,\n createDeleteRoute,\n createGetRoute,\n createHeadRoute,\n createOptionsRoute,\n createPatchRoute,\n createPostRoute,\n createPutRoute,\n} from \"./factories.js\";\nimport { defineHandler } from \"../define/handler.js\";\nimport { defineMiddleware, type DefineMiddlewareFn } from \"../define/middleware.js\";\nimport { createMiddleware } from \"./middleware.js\";\nimport { TaserApp } from \"./app.js\";\nimport type { ContextDefinition, CreateTaserAppOptions, OnErrorOptions } from \"../types/app.js\";\nimport type { AppContext } from \"../types/units.js\";\nimport type { HandlerBuilder, LayoutId, MiddlewareBuilder } from \"../types/index.js\";\nimport type { ReturnsMap } from \"../types/returns.js\";\nimport type { Schema } from \"../types/schema.js\";\nimport type {\n CreateAllRoute,\n CreateAnyRoute,\n CreateWithBodyRoute,\n CreateWithoutBodyRoute,\n} from \"./factories.js\";\n\nfunction toOnErrorHandler(\n onErrorOptions: OnErrorOptions | OnErrorOptions[\"handle\"],\n): OnErrorHandler {\n return normalizeOnError(onErrorOptions);\n}\n\ntype RouterState = {\n options: CreateTaserAppOptions;\n contextDef: ContextDefinition<Record<string, unknown>, Record<string, unknown>>;\n onError?: OnErrorHandler;\n notFound?: NotFoundHandler;\n};\n\nconst emptyContext: ContextDefinition<Record<string, unknown>, Record<string, unknown>> = {};\n\nexport class TaserRouter<\n TAppContext extends Record<string, unknown> = AppContext,\n THasNotFound extends boolean = false,\n> {\n private readonly state: RouterState;\n\n constructor(options: CreateTaserAppOptions = {}, state?: Partial<Omit<RouterState, \"options\">>) {\n this.state = {\n options,\n contextDef: state?.contextDef ?? emptyContext,\n ...(state?.onError !== undefined ? { onError: state.onError } : {}),\n ...(state?.notFound !== undefined ? { notFound: state.notFound } : {}),\n };\n }\n\n context<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>>(\n definition: ContextDefinition<TBoot, TReq>,\n ): TaserRouter<TBoot & TReq, THasNotFound> {\n this.state.contextDef = definition;\n return this as unknown as TaserRouter<TBoot & TReq, THasNotFound>;\n }\n\n onError<TResponses extends ReturnsMap = ReturnsMap>(\n options: OnErrorOptions<TResponses> | OnErrorOptions<TResponses>[\"handle\"],\n ): this {\n this.state.onError = toOnErrorHandler(options);\n return this;\n }\n\n notFound(\n handler: (ctx: unknown) => Response | Promise<Response> | unknown,\n ): TaserRouter<TAppContext, true> {\n this.state.notFound = (ctx) => handler(ctx);\n return this as unknown as TaserRouter<TAppContext, true>;\n }\n\n get: CreateWithoutBodyRoute<\"GET\", TAppContext> = createGetRoute as CreateWithoutBodyRoute<\n \"GET\",\n TAppContext\n >;\n post: CreateWithBodyRoute<\"POST\", TAppContext> = createPostRoute as CreateWithBodyRoute<\n \"POST\",\n TAppContext\n >;\n put: CreateWithBodyRoute<\"PUT\", TAppContext> = createPutRoute as CreateWithBodyRoute<\n \"PUT\",\n TAppContext\n >;\n patch: CreateWithBodyRoute<\"PATCH\", TAppContext> = createPatchRoute as CreateWithBodyRoute<\n \"PATCH\",\n TAppContext\n >;\n delete: CreateWithoutBodyRoute<\"DELETE\", TAppContext> =\n createDeleteRoute as CreateWithoutBodyRoute<\"DELETE\", TAppContext>;\n options: CreateWithoutBodyRoute<\"OPTIONS\", TAppContext> =\n createOptionsRoute as CreateWithoutBodyRoute<\"OPTIONS\", TAppContext>;\n head: CreateWithoutBodyRoute<\"HEAD\", TAppContext> = createHeadRoute as CreateWithoutBodyRoute<\n \"HEAD\",\n TAppContext\n >;\n any: CreateAnyRoute<TAppContext> = createAnyRoute as CreateAnyRoute<TAppContext>;\n all: CreateAllRoute<TAppContext> = createAllRoute as CreateAllRoute<TAppContext>;\n\n middleware<const Layout extends LayoutId>(\n layout: Layout,\n ): MiddlewareBuilder<Layout, readonly [], TAppContext> {\n return createMiddleware(layout) as MiddlewareBuilder<Layout, readonly [], TAppContext>;\n }\n\n defineHandler<TQuery = unknown, TParams = unknown, TBody = unknown>(options?: {\n query?: Schema<TQuery>;\n params?: Schema<TParams>;\n body?: Schema<TBody>;\n }): HandlerBuilder<\n readonly [],\n { query: TQuery; params: TParams; body: TBody },\n {},\n TAppContext\n > {\n return options === undefined\n ? defineHandler<TAppContext>()\n : defineHandler<TAppContext>(options);\n }\n\n defineMiddleware: DefineMiddlewareFn<TAppContext> =\n defineMiddleware as DefineMiddlewareFn<TAppContext>;\n\n create<const TManifest extends RouteManifestShape>(\n manifest: TManifest,\n runtimeOptions?: { basePath?: string },\n ): TaserApp<TManifest, THasNotFound> {\n const definition = this.state.contextDef;\n const validateResponse = this.state.options.response?.validate ?? true;\n const onValidationFailure = this.state.options.response?.onValidationFailure;\n const basePath = runtimeOptions?.basePath;\n\n const hasCustomContext = definition.boot !== undefined || definition.request !== undefined;\n let bootContextResolved: Record<string, unknown> | undefined;\n let bootPromise: Promise<Record<string, unknown>> | undefined;\n\n if (definition.boot !== undefined) {\n const bootResult = definition.boot();\n if (isPromise(bootResult)) {\n bootPromise = bootResult.then((ctx) => {\n bootContextResolved = (ctx ?? {}) as Record<string, unknown>;\n return bootContextResolved;\n });\n } else {\n bootContextResolved = (bootResult ?? {}) as Record<string, unknown>;\n }\n } else if (hasCustomContext) {\n bootContextResolved = {};\n }\n\n const contextFactory = hasCustomContext\n ? (req?: Request) => {\n if (bootPromise !== undefined && bootContextResolved === undefined) {\n return bootPromise.then(async (bootContext) => {\n if (!definition.request) {\n return { ...bootContext };\n }\n const requestResult = definition.request(req!);\n const requestContext = isPromise(requestResult) ? await requestResult : requestResult;\n return { ...bootContext, ...requestContext };\n });\n }\n\n const bootContext = bootContextResolved ?? {};\n if (!definition.request) {\n return { ...bootContext };\n }\n\n const requestResult = definition.request(req!);\n if (isPromise(requestResult)) {\n return requestResult.then((requestContext) => ({\n ...bootContext,\n ...requestContext,\n }));\n }\n\n return { ...bootContext, ...(requestResult as Record<string, unknown>) };\n }\n : () => ({});\n\n const runtime = createTaserRuntime(manifest, contextFactory, {\n ...(basePath !== undefined ? { basePath } : {}),\n response: {\n validate: validateResponse,\n ...(onValidationFailure !== undefined ? { onValidationFailure } : {}),\n },\n ...(this.state.onError !== undefined ? { onError: this.state.onError } : {}),\n ...(this.state.notFound !== undefined ? { notFound: this.state.notFound } : {}),\n ...(this.state.options.cookies !== undefined ? { cookies: this.state.options.cookies } : {}),\n });\n\n return new TaserApp(runtime, manifest) as unknown as TaserApp<TManifest, THasNotFound>;\n }\n}\n\nexport function createTaserApp(\n options: CreateTaserAppOptions = {},\n): TaserRouter<AppContext, false> {\n return new TaserRouter<AppContext, false>(options);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"router.cjs","names":[],"sources":["../../../src/builder/router.ts"],"sourcesContent":["import {\n createTaserRuntime,\n type NotFoundHandler,\n type OnErrorHandler,\n type RouteManifestShape,\n} from \"@taserjs/router-core\";\nimport { isPromise, normalizeOnError } from \"@taserjs/router-utils\";\n\nimport {\n createAllRoute,\n createAnyRoute,\n createDeleteRoute,\n createGetRoute,\n createHeadRoute,\n createOptionsRoute,\n createPatchRoute,\n createPostRoute,\n createPutRoute,\n} from \"./factories.js\";\nimport { defineMiddleware, type DefineMiddlewareFn } from \"../define/middleware.js\";\nimport { createMiddleware } from \"./middleware.js\";\nimport { TaserApp } from \"./app.js\";\nimport type { ContextDefinition, CreateTaserAppOptions, OnErrorOptions } from \"../types/app.js\";\nimport type { AppContext } from \"../types/units.js\";\nimport type { LayoutId, MiddlewareBuilder } from \"../types/index.js\";\nimport type { ReturnsMap } from \"../types/returns.js\";\nimport type {\n CreateAllRoute,\n CreateAnyRoute,\n CreateWithBodyRoute,\n CreateWithoutBodyRoute,\n} from \"./factories.js\";\n\nfunction toOnErrorHandler(\n onErrorOptions: OnErrorOptions | OnErrorOptions[\"handle\"],\n): OnErrorHandler {\n return normalizeOnError(onErrorOptions);\n}\n\ntype RouterState = {\n options: CreateTaserAppOptions;\n contextDef: ContextDefinition<Record<string, unknown>, Record<string, unknown>>;\n onError?: OnErrorHandler;\n notFound?: NotFoundHandler;\n};\n\nconst emptyContext: ContextDefinition<Record<string, unknown>, Record<string, unknown>> = {};\n\nexport class TaserRouter<\n TAppContext extends Record<string, unknown> = AppContext,\n THasNotFound extends boolean = false,\n> {\n private readonly state: RouterState;\n\n constructor(options: CreateTaserAppOptions = {}, state?: Partial<Omit<RouterState, \"options\">>) {\n this.state = {\n options,\n contextDef: state?.contextDef ?? emptyContext,\n ...(state?.onError !== undefined ? { onError: state.onError } : {}),\n ...(state?.notFound !== undefined ? { notFound: state.notFound } : {}),\n };\n }\n\n context<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>>(\n definition: ContextDefinition<TBoot, TReq>,\n ): TaserRouter<TBoot & TReq, THasNotFound> {\n this.state.contextDef = definition;\n return this as unknown as TaserRouter<TBoot & TReq, THasNotFound>;\n }\n\n onError<TResponses extends ReturnsMap = ReturnsMap>(\n options: OnErrorOptions<TResponses> | OnErrorOptions<TResponses>[\"handle\"],\n ): this {\n this.state.onError = toOnErrorHandler(options);\n return this;\n }\n\n notFound(\n handler: (ctx: unknown) => Response | Promise<Response> | unknown,\n ): TaserRouter<TAppContext, true> {\n this.state.notFound = (ctx) => handler(ctx);\n return this as unknown as TaserRouter<TAppContext, true>;\n }\n\n get: CreateWithoutBodyRoute<\"GET\", TAppContext> = createGetRoute as CreateWithoutBodyRoute<\n \"GET\",\n TAppContext\n >;\n post: CreateWithBodyRoute<\"POST\", TAppContext> = createPostRoute as CreateWithBodyRoute<\n \"POST\",\n TAppContext\n >;\n put: CreateWithBodyRoute<\"PUT\", TAppContext> = createPutRoute as CreateWithBodyRoute<\n \"PUT\",\n TAppContext\n >;\n patch: CreateWithBodyRoute<\"PATCH\", TAppContext> = createPatchRoute as CreateWithBodyRoute<\n \"PATCH\",\n TAppContext\n >;\n delete: CreateWithoutBodyRoute<\"DELETE\", TAppContext> =\n createDeleteRoute as CreateWithoutBodyRoute<\"DELETE\", TAppContext>;\n options: CreateWithoutBodyRoute<\"OPTIONS\", TAppContext> =\n createOptionsRoute as CreateWithoutBodyRoute<\"OPTIONS\", TAppContext>;\n head: CreateWithoutBodyRoute<\"HEAD\", TAppContext> = createHeadRoute as CreateWithoutBodyRoute<\n \"HEAD\",\n TAppContext\n >;\n any: CreateAnyRoute<TAppContext> = createAnyRoute as CreateAnyRoute<TAppContext>;\n all: CreateAllRoute<TAppContext> = createAllRoute as CreateAllRoute<TAppContext>;\n\n middleware<const Layout extends LayoutId>(\n layout: Layout,\n ): MiddlewareBuilder<Layout, readonly [], TAppContext> {\n return createMiddleware(layout) as MiddlewareBuilder<Layout, readonly [], TAppContext>;\n }\n\n defineMiddleware: DefineMiddlewareFn<TAppContext> =\n defineMiddleware as DefineMiddlewareFn<TAppContext>;\n\n create<const TManifest extends RouteManifestShape>(\n manifest: TManifest,\n runtimeOptions?: { basePath?: string },\n ): TaserApp<TManifest, THasNotFound> {\n const definition = this.state.contextDef;\n const validateResponse = this.state.options.response?.validate ?? true;\n const onValidationFailure = this.state.options.response?.onValidationFailure;\n const basePath = runtimeOptions?.basePath;\n\n const hasCustomContext = definition.boot !== undefined || definition.request !== undefined;\n let bootContextResolved: Record<string, unknown> | undefined;\n let bootPromise: Promise<Record<string, unknown>> | undefined;\n\n if (definition.boot !== undefined) {\n const bootResult = definition.boot();\n if (isPromise(bootResult)) {\n bootPromise = bootResult.then((ctx) => {\n bootContextResolved = (ctx ?? {}) as Record<string, unknown>;\n return bootContextResolved;\n });\n } else {\n bootContextResolved = (bootResult ?? {}) as Record<string, unknown>;\n }\n } else if (hasCustomContext) {\n bootContextResolved = {};\n }\n\n const contextFactory = hasCustomContext\n ? (req?: Request) => {\n if (bootPromise !== undefined && bootContextResolved === undefined) {\n return bootPromise.then(async (bootContext) => {\n if (!definition.request) {\n return { ...bootContext };\n }\n const requestResult = definition.request(req!);\n const requestContext = isPromise(requestResult) ? await requestResult : requestResult;\n return { ...bootContext, ...requestContext };\n });\n }\n\n const bootContext = bootContextResolved ?? {};\n if (!definition.request) {\n return { ...bootContext };\n }\n\n const requestResult = definition.request(req!);\n if (isPromise(requestResult)) {\n return requestResult.then((requestContext) => ({\n ...bootContext,\n ...requestContext,\n }));\n }\n\n return { ...bootContext, ...(requestResult as Record<string, unknown>) };\n }\n : () => ({});\n\n const runtime = createTaserRuntime(manifest, contextFactory, {\n ...(basePath !== undefined ? { basePath } : {}),\n response: {\n validate: validateResponse,\n ...(onValidationFailure !== undefined ? { onValidationFailure } : {}),\n },\n ...(this.state.onError !== undefined ? { onError: this.state.onError } : {}),\n ...(this.state.notFound !== undefined ? { notFound: this.state.notFound } : {}),\n ...(this.state.options.cookies !== undefined ? { cookies: this.state.options.cookies } : {}),\n });\n\n return new TaserApp(runtime, manifest) as unknown as TaserApp<TManifest, THasNotFound>;\n }\n}\n\nexport function createTaserApp(\n options: CreateTaserAppOptions = {},\n): TaserRouter<AppContext, false> {\n return new TaserRouter<AppContext, false>(options);\n}\n"],"mappings":"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"}
@@ -3,9 +3,8 @@ import { DefineMiddlewareFn } from '../define/middleware.js';
3
3
  import { TaserApp } from './app.js';
4
4
  import { ContextDefinition, CreateTaserAppOptions, OnErrorOptions } from '../types/app.js';
5
5
  import { AppContext } from '../types/units.js';
6
- import { HandlerBuilder, LayoutId, MiddlewareBuilder } from '../types/index.js';
6
+ import { LayoutId, MiddlewareBuilder } from '../types/index.js';
7
7
  import { ReturnsMap } from '../types/returns.js';
8
- import { Schema } from '../types/schema.js';
9
8
  import { CreateAllRoute, CreateAnyRoute, CreateWithBodyRoute, CreateWithoutBodyRoute } from './factories.js';
10
9
  type RouterState = {
11
10
  options: CreateTaserAppOptions;
@@ -29,15 +28,6 @@ export declare class TaserRouter<TAppContext extends Record<string, unknown> = A
29
28
  any: CreateAnyRoute<TAppContext>;
30
29
  all: CreateAllRoute<TAppContext>;
31
30
  middleware<const Layout extends LayoutId>(layout: Layout): MiddlewareBuilder<Layout, readonly [], TAppContext>;
32
- defineHandler<TQuery = unknown, TParams = unknown, TBody = unknown>(options?: {
33
- query?: Schema<TQuery>;
34
- params?: Schema<TParams>;
35
- body?: Schema<TBody>;
36
- }): HandlerBuilder<readonly [], {
37
- query: TQuery;
38
- params: TParams;
39
- body: TBody;
40
- }, {}, TAppContext>;
41
31
  defineMiddleware: DefineMiddlewareFn<TAppContext>;
42
32
  create<const TManifest extends RouteManifestShape>(manifest: TManifest, runtimeOptions?: {
43
33
  basePath?: string;
@@ -1,25 +1,21 @@
1
- let _taserjs_router_core = require("@taserjs/router-core");
1
+ const require_middleware_unit = require("../builder/middleware-unit.cjs");
2
+ require("@taserjs/router-core");
2
3
  //#region src/define/middleware.ts
3
4
  var defineMiddleware = function defineMiddleware(first, second) {
5
+ if (first === void 0) return require_middleware_unit.createMiddlewareUnitBuilder();
4
6
  if (typeof first === "string" || Array.isArray(first)) {
5
- const options = second;
6
- return {
7
- ...options,
7
+ if (typeof second === "function") return {
8
+ handler: second,
8
9
  __middlewareAcc: void 0,
9
- ...options?.returns ? { __returns: options.returns } : {},
10
10
  __requiredLayouts: first
11
11
  };
12
+ return require_middleware_unit.createMiddlewareUnitBuilder(first);
12
13
  }
13
- if (typeof first === "function") {
14
- const honoMiddleware = first;
15
- return defineMiddleware({ handler: (ctx, next) => (0, _taserjs_router_core.createTaserCompatHandler)(honoMiddleware)(ctx, next) });
16
- }
17
- const options = first;
18
- return {
19
- ...options,
20
- __middlewareAcc: void 0,
21
- ...options.returns ? { __returns: options.returns } : {}
14
+ if (typeof first === "function") return {
15
+ handler: first,
16
+ __middlewareAcc: void 0
22
17
  };
18
+ return require_middleware_unit.createMiddlewareUnitBuilder();
23
19
  };
24
20
  //#endregion
25
21
  exports.defineMiddleware = defineMiddleware;
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/define/middleware.ts"],"sourcesContent":["import { createTaserCompatHandler, type Awaitable } from \"@taserjs/router-core\";\n\nimport type { ReturnsMap } from \"../types/returns.js\";\nimport type {\n AppContext,\n DefineMiddlewareResult,\n MiddlewareReturnFromParts,\n MiddlewareUnit,\n NextFn,\n StandaloneMiddlewareContext,\n} from \"../types/units.js\";\nimport type {\n LayoutId,\n ResolveLayoutMiddlewaresState,\n ResolveLayoutsState,\n} from \"../types/index.js\";\nimport type { Schema } from \"../types/schema.js\";\n\nexport type HonoMiddlewareHandler = Parameters<typeof createTaserCompatHandler>[0];\n\nexport type HonoMiddlewareUnit = MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, {}>,\n {},\n null,\n {}\n>;\n\nexport type DefineMiddlewareOptions<\n TState = unknown,\n TRequires = {},\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n TAppContext extends Record<string, unknown> = AppContext,\n R = unknown,\n> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n body?: Schema<TBody, TBodyIn>;\n returns?: TReturns;\n handler: (\n ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext, TRequires>,\n next: NextFn<NoInfer<TState>>,\n ) => Awaitable<R>;\n};\n\nexport type ScopedMiddlewareOptions<\n Layout extends LayoutId,\n TState = unknown,\n TRequires = {},\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n TAppContext extends Record<string, unknown> = AppContext,\n R = unknown,\n> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n body?: Schema<TBody, TBodyIn>;\n returns?: TReturns;\n handler: (\n ctx: StandaloneMiddlewareContext<\n TQuery,\n TParams,\n TBody,\n TAppContext,\n ResolveLayoutMiddlewaresState<Layout> & TRequires\n >,\n next: NextFn<NoInfer<TState>>,\n ) => Awaitable<R>;\n};\n\nexport type MultiScopedMiddlewareOptions<\n Layouts extends readonly LayoutId[],\n TState = unknown,\n TRequires = {},\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n TAppContext extends Record<string, unknown> = AppContext,\n R = unknown,\n> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n body?: Schema<TBody, TBodyIn>;\n returns?: TReturns;\n handler: (\n ctx: StandaloneMiddlewareContext<\n TQuery,\n TParams,\n TBody,\n TAppContext,\n ResolveLayoutsState<Layouts> & TRequires\n >,\n next: NextFn<NoInfer<TState>>,\n ) => Awaitable<R>;\n};\n\nexport interface DefineMiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {\n (middleware: HonoMiddlewareHandler): HonoMiddlewareUnit;\n\n <\n const Layout extends LayoutId,\n TState = unknown,\n TRequires = {},\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n R = unknown,\n >(\n layout: Layout,\n options: ScopedMiddlewareOptions<\n Layout,\n TState,\n TRequires,\n TQuery,\n TParams,\n TBody,\n TReturns,\n TQueryIn,\n TParamsIn,\n TBodyIn,\n TAppContext,\n R\n >,\n ): DefineMiddlewareResult<\n TQuery,\n TParams,\n TBody,\n TState,\n R,\n TQueryIn,\n TParamsIn,\n TBodyIn,\n TReturns,\n Layout,\n TRequires\n >;\n\n <\n const Layouts extends readonly [LayoutId, ...LayoutId[]],\n TState = unknown,\n TRequires = {},\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n R = unknown,\n >(\n layouts: Layouts,\n options: MultiScopedMiddlewareOptions<\n Layouts,\n TState,\n TRequires,\n TQuery,\n TParams,\n TBody,\n TReturns,\n TQueryIn,\n TParamsIn,\n TBodyIn,\n TAppContext,\n R\n >,\n ): DefineMiddlewareResult<\n TQuery,\n TParams,\n TBody,\n TState,\n R,\n TQueryIn,\n TParamsIn,\n TBodyIn,\n TReturns,\n Layouts,\n TRequires\n >;\n\n <\n TState = unknown,\n TRequires = {},\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n R = unknown,\n >(\n options: DefineMiddlewareOptions<\n TState,\n TRequires,\n TQuery,\n TParams,\n TBody,\n TReturns,\n TQueryIn,\n TParamsIn,\n TBodyIn,\n TAppContext,\n R\n >,\n ): DefineMiddlewareResult<\n TQuery,\n TParams,\n TBody,\n TState,\n R,\n TQueryIn,\n TParamsIn,\n TBodyIn,\n TReturns,\n null,\n TRequires\n >;\n}\n\nexport const defineMiddleware: DefineMiddlewareFn<AppContext> = function defineMiddleware(\n first: any,\n second?: any,\n): any {\n if (typeof first === \"string\" || Array.isArray(first)) {\n const options = second!;\n const unit = {\n ...options,\n __middlewareAcc: undefined as unknown,\n ...(options?.returns ? { __returns: options.returns } : {}),\n __requiredLayouts: first,\n };\n return unit;\n }\n\n if (typeof first === \"function\") {\n const honoMiddleware = first as HonoMiddlewareHandler;\n return defineMiddleware({\n handler: (ctx: unknown, next: (state?: Record<string, unknown>) => unknown) =>\n createTaserCompatHandler(honoMiddleware)(ctx, next),\n });\n }\n\n const options = first as DefineMiddlewareOptions<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >;\n const unit = {\n ...options,\n __middlewareAcc: undefined as unknown,\n ...(options.returns ? { __returns: options.returns } : {}),\n };\n\n return unit;\n};\n"],"mappings":";;AA6OA,IAAa,mBAAmD,SAAS,iBACvE,OACA,QACK;CACL,IAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;EACrD,MAAM,UAAU;EAOhB,OAAO;GALL,GAAG;GACH,iBAAiB,KAAA;GACjB,GAAI,SAAS,UAAU,EAAE,WAAW,QAAQ,QAAQ,IAAI,CAAC;GACzD,mBAAmB;EAEd;CACT;CAEA,IAAI,OAAO,UAAU,YAAY;EAC/B,MAAM,iBAAiB;EACvB,OAAO,iBAAiB,EACtB,UAAU,KAAc,UAAA,GAAA,qBAAA,yBAAA,CACG,cAAc,CAAC,CAAC,KAAK,IAAI,EACtD,CAAC;CACH;CAEA,MAAM,UAAU;CAmBhB,OAAO;EALL,GAAG;EACH,iBAAiB,KAAA;EACjB,GAAI,QAAQ,UAAU,EAAE,WAAW,QAAQ,QAAQ,IAAI,CAAC;CAGnD;AACT"}
1
+ {"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/define/middleware.ts"],"sourcesContent":["import { type Awaitable } from \"@taserjs/router-core\";\n\nimport { createMiddlewareUnitBuilder } from \"../builder/middleware-unit.js\";\nimport type {\n AppContext,\n DefineMiddlewareResult,\n ExtractState,\n IsUnknown,\n MiddlewareUnitBuilder,\n NextFn,\n StandaloneMiddlewareContext,\n} from \"../types/units.js\";\nimport type {\n LayoutId,\n ResolveLayoutMiddlewaresState,\n ResolveLayoutsState,\n} from \"../types/index.js\";\n\nexport interface DefineMiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {\n /**\n * Constructs a fluent unscoped middleware builder.\n *\n * @example\n * ```ts\n * const auth = defineMiddleware()\n * .query(z.object({ token: z.string() }))\n * .body(\"form\", z.object({ file: z.instanceof(File) }))\n * .returns({ 401: z.string() })\n * .handler(async (ctx, next) => next({ user: \"alice\" }));\n * ```\n */\n (): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, null, {}, TAppContext>;\n\n /**\n * Constructs a fluent middleware builder scoped to a single layout branch.\n */\n <const Layout extends LayoutId>(\n layout: Layout,\n ): MiddlewareUnitBuilder<\n unknown,\n unknown,\n unknown,\n {},\n Layout,\n {},\n TAppContext,\n ResolveLayoutMiddlewaresState<Layout>\n >;\n\n /**\n * Constructs a fluent middleware builder scoped to multiple layout branches (branch union).\n */\n <const Layouts extends readonly [LayoutId, ...LayoutId[]]>(\n layouts: Layouts,\n ): MiddlewareUnitBuilder<\n unknown,\n unknown,\n unknown,\n {},\n Layouts,\n {},\n TAppContext,\n ResolveLayoutsState<Layouts>\n >;\n\n /**\n * Defines a standalone middleware scoped to a single layout branch using a short function signature.\n */\n <const Layout extends LayoutId, TState = unknown, TRequires = {}, R = unknown>(\n layout: Layout,\n fn: (\n ctx: StandaloneMiddlewareContext<\n unknown,\n unknown,\n unknown,\n TAppContext,\n ResolveLayoutMiddlewaresState<Layout> & TRequires\n >,\n next: NextFn<NoInfer<TState>>,\n ) => Awaitable<R>,\n ): DefineMiddlewareResult<\n unknown,\n unknown,\n unknown,\n IsUnknown<TState> extends true ? ExtractState<R> : TState,\n R,\n unknown,\n unknown,\n unknown,\n {},\n Layout,\n TRequires\n >;\n\n /**\n * Defines a standalone middleware scoped to multiple layout branches using a short function signature.\n */\n <\n const Layouts extends readonly [LayoutId, ...LayoutId[]],\n TState = unknown,\n TRequires = {},\n R = unknown,\n >(\n layouts: Layouts,\n fn: (\n ctx: StandaloneMiddlewareContext<\n unknown,\n unknown,\n unknown,\n TAppContext,\n ResolveLayoutsState<Layouts> & TRequires\n >,\n next: NextFn<NoInfer<TState>>,\n ) => Awaitable<R>,\n ): DefineMiddlewareResult<\n unknown,\n unknown,\n unknown,\n IsUnknown<TState> extends true ? ExtractState<R> : TState,\n R,\n unknown,\n unknown,\n unknown,\n {},\n Layouts,\n TRequires\n >;\n\n /**\n * Defines a standalone, unscoped middleware using a short function signature.\n *\n * @example\n * ```ts\n * const auth = defineMiddleware((ctx, next) => {\n * return next({ user: \"alice\" });\n * });\n * ```\n */\n <TState = unknown, TRequires = {}, R = unknown>(\n fn: (\n ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, TRequires>,\n next: NextFn<NoInfer<TState>>,\n ) => Awaitable<R>,\n ): DefineMiddlewareResult<\n unknown,\n unknown,\n unknown,\n IsUnknown<TState> extends true ? ExtractState<R> : TState,\n R,\n unknown,\n unknown,\n unknown,\n {},\n null,\n TRequires\n >;\n}\n\nexport const defineMiddleware: DefineMiddlewareFn<AppContext> = function defineMiddleware(\n first?: any,\n second?: any,\n): any {\n if (first === undefined) {\n return createMiddlewareUnitBuilder();\n }\n\n if (typeof first === \"string\" || Array.isArray(first)) {\n if (typeof second === \"function\") {\n return {\n handler: second,\n __middlewareAcc: undefined as unknown,\n __requiredLayouts: first,\n };\n }\n return createMiddlewareUnitBuilder(first);\n }\n\n if (typeof first === \"function\") {\n return {\n handler: first,\n __middlewareAcc: undefined as unknown,\n };\n }\n\n return createMiddlewareUnitBuilder();\n};\n"],"mappings":";;;AA8JA,IAAa,mBAAmD,SAAS,iBACvE,OACA,QACK;CACL,IAAI,UAAU,KAAA,GACZ,OAAO,wBAAA,4BAA4B;CAGrC,IAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;EACrD,IAAI,OAAO,WAAW,YACpB,OAAO;GACL,SAAS;GACT,iBAAiB,KAAA;GACjB,mBAAmB;EACrB;EAEF,OAAO,wBAAA,4BAA4B,KAAK;CAC1C;CAEA,IAAI,OAAO,UAAU,YACnB,OAAO;EACL,SAAS;EACT,iBAAiB,KAAA;CACnB;CAGF,OAAO,wBAAA,4BAA4B;AACrC"}
@@ -1,35 +1,46 @@
1
- import { createTaserCompatHandler, Awaitable } from '@taserjs/router-core';
2
- import { ReturnsMap } from '../types/returns.js';
3
- import { AppContext, DefineMiddlewareResult, MiddlewareReturnFromParts, MiddlewareUnit, NextFn, StandaloneMiddlewareContext } from '../types/units.js';
1
+ import { Awaitable } from '@taserjs/router-core';
2
+ import { AppContext, DefineMiddlewareResult, ExtractState, IsUnknown, MiddlewareUnitBuilder, NextFn, StandaloneMiddlewareContext } from '../types/units.js';
4
3
  import { LayoutId, ResolveLayoutMiddlewaresState, ResolveLayoutsState } from '../types/index.js';
5
- import { Schema } from '../types/schema.js';
6
- export type HonoMiddlewareHandler = Parameters<typeof createTaserCompatHandler>[0];
7
- export type HonoMiddlewareUnit = MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>, {}, null, {}>;
8
- export type DefineMiddlewareOptions<TState = unknown, TRequires = {}, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, TAppContext extends Record<string, unknown> = AppContext, R = unknown> = {
9
- query?: Schema<TQuery, TQueryIn>;
10
- params?: Schema<TParams, TParamsIn>;
11
- body?: Schema<TBody, TBodyIn>;
12
- returns?: TReturns;
13
- handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext, TRequires>, next: NextFn<NoInfer<TState>>) => Awaitable<R>;
14
- };
15
- export type ScopedMiddlewareOptions<Layout extends LayoutId, TState = unknown, TRequires = {}, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, TAppContext extends Record<string, unknown> = AppContext, R = unknown> = {
16
- query?: Schema<TQuery, TQueryIn>;
17
- params?: Schema<TParams, TParamsIn>;
18
- body?: Schema<TBody, TBodyIn>;
19
- returns?: TReturns;
20
- handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext, ResolveLayoutMiddlewaresState<Layout> & TRequires>, next: NextFn<NoInfer<TState>>) => Awaitable<R>;
21
- };
22
- export type MultiScopedMiddlewareOptions<Layouts extends readonly LayoutId[], TState = unknown, TRequires = {}, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, TAppContext extends Record<string, unknown> = AppContext, R = unknown> = {
23
- query?: Schema<TQuery, TQueryIn>;
24
- params?: Schema<TParams, TParamsIn>;
25
- body?: Schema<TBody, TBodyIn>;
26
- returns?: TReturns;
27
- handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext, ResolveLayoutsState<Layouts> & TRequires>, next: NextFn<NoInfer<TState>>) => Awaitable<R>;
28
- };
29
4
  export interface DefineMiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {
30
- (middleware: HonoMiddlewareHandler): HonoMiddlewareUnit;
31
- <const Layout extends LayoutId, TState = unknown, TRequires = {}, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, R = unknown>(layout: Layout, options: ScopedMiddlewareOptions<Layout, TState, TRequires, TQuery, TParams, TBody, TReturns, TQueryIn, TParamsIn, TBodyIn, TAppContext, R>): DefineMiddlewareResult<TQuery, TParams, TBody, TState, R, TQueryIn, TParamsIn, TBodyIn, TReturns, Layout, TRequires>;
32
- <const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown, TRequires = {}, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, R = unknown>(layouts: Layouts, options: MultiScopedMiddlewareOptions<Layouts, TState, TRequires, TQuery, TParams, TBody, TReturns, TQueryIn, TParamsIn, TBodyIn, TAppContext, R>): DefineMiddlewareResult<TQuery, TParams, TBody, TState, R, TQueryIn, TParamsIn, TBodyIn, TReturns, Layouts, TRequires>;
33
- <TState = unknown, TRequires = {}, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, R = unknown>(options: DefineMiddlewareOptions<TState, TRequires, TQuery, TParams, TBody, TReturns, TQueryIn, TParamsIn, TBodyIn, TAppContext, R>): DefineMiddlewareResult<TQuery, TParams, TBody, TState, R, TQueryIn, TParamsIn, TBodyIn, TReturns, null, TRequires>;
5
+ /**
6
+ * Constructs a fluent unscoped middleware builder.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const auth = defineMiddleware()
11
+ * .query(z.object({ token: z.string() }))
12
+ * .body("form", z.object({ file: z.instanceof(File) }))
13
+ * .returns({ 401: z.string() })
14
+ * .handler(async (ctx, next) => next({ user: "alice" }));
15
+ * ```
16
+ */
17
+ (): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, null, {}, TAppContext>;
18
+ /**
19
+ * Constructs a fluent middleware builder scoped to a single layout branch.
20
+ */
21
+ <const Layout extends LayoutId>(layout: Layout): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layout, {}, TAppContext, ResolveLayoutMiddlewaresState<Layout>>;
22
+ /**
23
+ * Constructs a fluent middleware builder scoped to multiple layout branches (branch union).
24
+ */
25
+ <const Layouts extends readonly [LayoutId, ...LayoutId[]]>(layouts: Layouts): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layouts, {}, TAppContext, ResolveLayoutsState<Layouts>>;
26
+ /**
27
+ * Defines a standalone middleware scoped to a single layout branch using a short function signature.
28
+ */
29
+ <const Layout extends LayoutId, TState = unknown, TRequires = {}, R = unknown>(layout: Layout, fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, ResolveLayoutMiddlewaresState<Layout> & TRequires>, next: NextFn<NoInfer<TState>>) => Awaitable<R>): DefineMiddlewareResult<unknown, unknown, unknown, IsUnknown<TState> extends true ? ExtractState<R> : TState, R, unknown, unknown, unknown, {}, Layout, TRequires>;
30
+ /**
31
+ * Defines a standalone middleware scoped to multiple layout branches using a short function signature.
32
+ */
33
+ <const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown, TRequires = {}, R = unknown>(layouts: Layouts, fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, ResolveLayoutsState<Layouts> & TRequires>, next: NextFn<NoInfer<TState>>) => Awaitable<R>): DefineMiddlewareResult<unknown, unknown, unknown, IsUnknown<TState> extends true ? ExtractState<R> : TState, R, unknown, unknown, unknown, {}, Layouts, TRequires>;
34
+ /**
35
+ * Defines a standalone, unscoped middleware using a short function signature.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const auth = defineMiddleware((ctx, next) => {
40
+ * return next({ user: "alice" });
41
+ * });
42
+ * ```
43
+ */
44
+ <TState = unknown, TRequires = {}, R = unknown>(fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, TRequires>, next: NextFn<NoInfer<TState>>) => Awaitable<R>): DefineMiddlewareResult<unknown, unknown, unknown, IsUnknown<TState> extends true ? ExtractState<R> : TState, R, unknown, unknown, unknown, {}, null, TRequires>;
34
45
  }
35
46
  export declare const defineMiddleware: DefineMiddlewareFn<AppContext>;
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_handler = require("./define/handler.cjs");
3
2
  const require_middleware = require("./define/middleware.cjs");
4
3
  const require_app = require("./builder/app.cjs");
5
4
  const require_router = require("./builder/router.cjs");
6
5
  const require_create_context = require("./context/create-context.cjs");
6
+ const require_hono_mw = require("./middleware/hono-mw.cjs");
7
7
  let _taserjs_router_utils = require("@taserjs/router-utils");
8
8
  exports.TaserApp = require_app.TaserApp;
9
9
  exports.TaserRouter = require_router.TaserRouter;
@@ -15,8 +15,8 @@ Object.defineProperty(exports, "ValidationError", {
15
15
  });
16
16
  exports.createContext = require_create_context.createContext;
17
17
  exports.createTaserApp = require_router.createTaserApp;
18
- exports.defineHandler = require_handler.defineHandler;
19
18
  exports.defineMiddleware = require_middleware.defineMiddleware;
19
+ exports.honoMw = require_hono_mw.honoMw;
20
20
  Object.defineProperty(exports, "validationErrorSchema", {
21
21
  enumerable: true,
22
22
  get: function() {
@@ -1,11 +1,11 @@
1
1
  export type { RouterRegister } from './register.js';
2
- export type { HttpMethod, InferInput, InferOutput, InferRouteContext, InferRouteInput, InferRouteOutput, Method, MiddlewareDefinition, PathParams, ReturnsMap, RouteDefinition, RouteExport, RoutePath, Schema, Simplify, StatusCode, } from './types/index.js';
2
+ export type { HttpMethod, InferInput, InferOutput, InferRouteContext, InferRouteInput, InferRouteOutput, Method, MiddlewareDefinition, MiddlewareUnit, MiddlewareUnitBuilder, PathParams, ReturnsMap, RouteDefinition, RouteExport, RoutePath, Schema, Simplify, StatusCode, } from './types/index.js';
3
3
  export type { ContextDefinition, CreateTaserAppOptions, InferAppContext, InferAppManifest, OnErrorOptions, RouteManifestShape, } from './types/app.js';
4
4
  export { ValidationError, validationErrorSchema } from '@taserjs/router-utils';
5
5
  export type { ResponseValidationFailureHandler, SuccessStatusCode } from '@taserjs/router-utils';
6
6
  export { createTaserApp, TaserRouter } from './builder/router.js';
7
7
  export { TaserApp } from './builder/app.js';
8
8
  export { createContext } from './context/create-context.js';
9
- export { defineHandler } from './define/handler.js';
10
9
  export { defineMiddleware } from './define/middleware.js';
10
+ export { honoMw } from './middleware/hono-mw.js';
11
11
  export type { TaserCookieJar, TaserHeaders } from '@taserjs/router-core';
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_wrap_hono = require("./wrap-hono.cjs");
2
+ const require_middleware = require("../define/middleware.cjs");
3
+ const require_hono_mw = require("./hono-mw.cjs");
3
4
  let hono_body_limit = require("hono/body-limit");
4
5
  //#region src/middleware/body-limit.ts
5
- var wrapped = require_wrap_hono.wrapHonoMiddleware(hono_body_limit.bodyLimit);
6
6
  function bodyLimit(...args) {
7
- return wrapped(...args);
7
+ return require_middleware.defineMiddleware(require_hono_mw.honoMw((0, hono_body_limit.bodyLimit)(...args)));
8
8
  }
9
9
  //#endregion
10
10
  exports.bodyLimit = bodyLimit;
@@ -1 +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 \"./wrap-hono.js\";\n\nconst wrapped = wrapHonoMiddleware(honoBodyLimit);\n\nexport function bodyLimit(...args: Parameters<typeof honoBodyLimit>) {\n return wrapped(...args);\n}\n\nexport type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];\n"],"mappings":";;;;AAIA,IAAM,UAAU,kBAAA,mBAAmB,gBAAA,SAAa;AAEhD,SAAgB,UAAU,GAAG,MAAwC;CACnE,OAAO,QAAQ,GAAG,IAAI;AACxB"}
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 { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function bodyLimit(...args: Parameters<typeof honoBodyLimit>) {\n return defineMiddleware(honoMw(honoBodyLimit(...args)));\n}\n\nexport type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];\n"],"mappings":";;;;;AAKA,SAAgB,UAAU,GAAG,MAAwC;CACnE,OAAO,mBAAA,iBAAiB,gBAAA,QAAA,GAAA,gBAAA,UAAA,CAAqB,GAAG,IAAI,CAAC,CAAC;AACxD"}
@@ -1,3 +1,3 @@
1
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, {}>>;
2
+ export declare function bodyLimit(...args: Parameters<typeof honoBodyLimit>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
3
3
  export type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_wrap_hono = require("./wrap-hono.cjs");
2
+ const require_middleware = require("../define/middleware.cjs");
3
+ const require_hono_mw = require("./hono-mw.cjs");
3
4
  let hono_compress = require("hono/compress");
4
5
  //#region src/middleware/compress.ts
5
- var wrapped = require_wrap_hono.wrapHonoMiddleware(hono_compress.compress);
6
6
  function compress(...args) {
7
- return wrapped(...args);
7
+ return require_middleware.defineMiddleware(require_hono_mw.honoMw((0, hono_compress.compress)(...args)));
8
8
  }
9
9
  //#endregion
10
10
  exports.compress = compress;
@@ -1 +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 \"./wrap-hono.js\";\n\nconst wrapped = wrapHonoMiddleware(honoCompress);\n\nexport function compress(...args: Parameters<typeof honoCompress>) {\n return wrapped(...args);\n}\n\nexport type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>;\n"],"mappings":";;;;AAIA,IAAM,UAAU,kBAAA,mBAAmB,cAAA,QAAY;AAE/C,SAAgB,SAAS,GAAG,MAAuC;CACjE,OAAO,QAAQ,GAAG,IAAI;AACxB"}
1
+ {"version":3,"file":"compress.cjs","names":[],"sources":["../../../src/middleware/compress.ts"],"sourcesContent":["import { compress as honoCompress } from \"hono/compress\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function compress(...args: Parameters<typeof honoCompress>) {\n return defineMiddleware(honoMw(honoCompress(...args)));\n}\n\nexport type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>;\n"],"mappings":";;;;;AAKA,SAAgB,SAAS,GAAG,MAAuC;CACjE,OAAO,mBAAA,iBAAiB,gBAAA,QAAA,GAAA,cAAA,SAAA,CAAoB,GAAG,IAAI,CAAC,CAAC;AACvD"}
@@ -1,3 +1,3 @@
1
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, {}>>;
2
+ export declare function compress(...args: Parameters<typeof honoCompress>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
3
3
  export type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>;
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_wrap_hono = require("./wrap-hono.cjs");
2
+ const require_middleware = require("../define/middleware.cjs");
3
+ const require_hono_mw = require("./hono-mw.cjs");
3
4
  let hono_cors = require("hono/cors");
4
5
  //#region src/middleware/cors.ts
5
- var wrapped = require_wrap_hono.wrapHonoMiddleware(hono_cors.cors);
6
6
  function cors(...args) {
7
- return wrapped(...args);
7
+ return require_middleware.defineMiddleware(require_hono_mw.honoMw((0, hono_cors.cors)(...args)));
8
8
  }
9
9
  //#endregion
10
10
  exports.cors = cors;