@taserjs/router 0.1.4 → 0.1.5

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 (127) hide show
  1. package/dist/cjs/builder/factories.cjs.map +1 -1
  2. package/dist/cjs/builder/factories.d.cts +9 -9
  3. package/dist/cjs/builder/middleware-unit.cjs +21 -12
  4. package/dist/cjs/builder/middleware-unit.cjs.map +1 -1
  5. package/dist/cjs/builder/middleware-unit.d.cts +1 -18
  6. package/dist/cjs/builder/middleware.cjs +1 -0
  7. package/dist/cjs/builder/middleware.cjs.map +1 -1
  8. package/dist/cjs/builder/route.cjs +1 -0
  9. package/dist/cjs/builder/route.cjs.map +1 -1
  10. package/dist/cjs/builder/router.cjs +1 -16
  11. package/dist/cjs/builder/router.cjs.map +1 -1
  12. package/dist/cjs/builder/router.d.cts +6 -17
  13. package/dist/cjs/builder/standalone.cjs +43 -0
  14. package/dist/cjs/builder/standalone.cjs.map +1 -0
  15. package/dist/cjs/builder/standalone.d.cts +28 -0
  16. package/dist/cjs/define/middleware.cjs +2 -3
  17. package/dist/cjs/define/middleware.cjs.map +1 -1
  18. package/dist/cjs/define/middleware.d.cts +15 -16
  19. package/dist/cjs/index.cjs +13 -2
  20. package/dist/cjs/index.d.cts +5 -3
  21. package/dist/cjs/middleware/body-limit.cjs +1 -1
  22. package/dist/cjs/middleware/body-limit.cjs.map +1 -1
  23. package/dist/cjs/middleware/body-limit.d.cts +1 -1
  24. package/dist/cjs/middleware/compress.cjs +1 -1
  25. package/dist/cjs/middleware/compress.cjs.map +1 -1
  26. package/dist/cjs/middleware/compress.d.cts +1 -1
  27. package/dist/cjs/middleware/cors.cjs +1 -1
  28. package/dist/cjs/middleware/cors.cjs.map +1 -1
  29. package/dist/cjs/middleware/cors.d.cts +1 -1
  30. package/dist/cjs/middleware/csrf.cjs +1 -1
  31. package/dist/cjs/middleware/csrf.cjs.map +1 -1
  32. package/dist/cjs/middleware/csrf.d.cts +1 -1
  33. package/dist/cjs/middleware/etag.cjs +1 -1
  34. package/dist/cjs/middleware/etag.cjs.map +1 -1
  35. package/dist/cjs/middleware/etag.d.cts +1 -1
  36. package/dist/cjs/middleware/hono-mw.cjs +1 -1
  37. package/dist/cjs/middleware/hono-mw.cjs.map +1 -1
  38. package/dist/cjs/middleware/hono-mw.d.cts +1 -1
  39. package/dist/cjs/middleware/jwk.cjs +1 -1
  40. package/dist/cjs/middleware/jwk.cjs.map +1 -1
  41. package/dist/cjs/middleware/jwt.cjs +1 -1
  42. package/dist/cjs/middleware/jwt.cjs.map +1 -1
  43. package/dist/cjs/middleware/secure-headers.cjs +1 -1
  44. package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
  45. package/dist/cjs/middleware/secure-headers.d.cts +1 -1
  46. package/dist/cjs/middleware/timing.cjs +1 -1
  47. package/dist/cjs/middleware/timing.cjs.map +1 -1
  48. package/dist/cjs/middleware/timing.d.cts +1 -1
  49. package/dist/cjs/types/index.d.cts +18 -13
  50. package/dist/cjs/types/type-utils.d.cts +2 -2
  51. package/dist/cjs/types/units.d.cts +17 -19
  52. package/dist/esm/builder/factories.d.ts +9 -9
  53. package/dist/esm/builder/factories.js.map +1 -1
  54. package/dist/esm/builder/middleware-unit.d.ts +1 -18
  55. package/dist/esm/builder/middleware-unit.js +21 -12
  56. package/dist/esm/builder/middleware-unit.js.map +1 -1
  57. package/dist/esm/builder/middleware.js +1 -0
  58. package/dist/esm/builder/middleware.js.map +1 -1
  59. package/dist/esm/builder/route.js +1 -0
  60. package/dist/esm/builder/route.js.map +1 -1
  61. package/dist/esm/builder/router.d.ts +6 -17
  62. package/dist/esm/builder/router.js +1 -16
  63. package/dist/esm/builder/router.js.map +1 -1
  64. package/dist/esm/builder/standalone.d.ts +28 -0
  65. package/dist/esm/builder/standalone.js +32 -0
  66. package/dist/esm/builder/standalone.js.map +1 -0
  67. package/dist/esm/define/middleware.d.ts +15 -16
  68. package/dist/esm/define/middleware.js +2 -3
  69. package/dist/esm/define/middleware.js.map +1 -1
  70. package/dist/esm/index.d.ts +5 -3
  71. package/dist/esm/index.js +2 -2
  72. package/dist/esm/middleware/body-limit.d.ts +1 -1
  73. package/dist/esm/middleware/body-limit.js +2 -2
  74. package/dist/esm/middleware/body-limit.js.map +1 -1
  75. package/dist/esm/middleware/compress.d.ts +1 -1
  76. package/dist/esm/middleware/compress.js +2 -2
  77. package/dist/esm/middleware/compress.js.map +1 -1
  78. package/dist/esm/middleware/cors.d.ts +1 -1
  79. package/dist/esm/middleware/cors.js +2 -2
  80. package/dist/esm/middleware/cors.js.map +1 -1
  81. package/dist/esm/middleware/csrf.d.ts +1 -1
  82. package/dist/esm/middleware/csrf.js +2 -2
  83. package/dist/esm/middleware/csrf.js.map +1 -1
  84. package/dist/esm/middleware/etag.d.ts +1 -1
  85. package/dist/esm/middleware/etag.js +2 -2
  86. package/dist/esm/middleware/etag.js.map +1 -1
  87. package/dist/esm/middleware/hono-mw.d.ts +1 -1
  88. package/dist/esm/middleware/hono-mw.js +1 -1
  89. package/dist/esm/middleware/hono-mw.js.map +1 -1
  90. package/dist/esm/middleware/jwk.js +2 -2
  91. package/dist/esm/middleware/jwk.js.map +1 -1
  92. package/dist/esm/middleware/jwt.js +2 -2
  93. package/dist/esm/middleware/jwt.js.map +1 -1
  94. package/dist/esm/middleware/secure-headers.d.ts +1 -1
  95. package/dist/esm/middleware/secure-headers.js +2 -2
  96. package/dist/esm/middleware/secure-headers.js.map +1 -1
  97. package/dist/esm/middleware/timing.d.ts +1 -1
  98. package/dist/esm/middleware/timing.js +2 -2
  99. package/dist/esm/middleware/timing.js.map +1 -1
  100. package/dist/esm/types/index.d.ts +18 -13
  101. package/dist/esm/types/type-utils.d.ts +2 -2
  102. package/dist/esm/types/units.d.ts +17 -19
  103. package/package.json +3 -3
  104. package/src/builder/factories.ts +2 -2
  105. package/src/builder/middleware-unit.ts +22 -11
  106. package/src/builder/middleware.ts +2 -0
  107. package/src/builder/route.ts +2 -0
  108. package/src/builder/router.ts +7 -60
  109. package/src/builder/standalone.ts +70 -0
  110. package/src/define/middleware.ts +37 -18
  111. package/src/index.ts +26 -2
  112. package/src/middleware/body-limit.ts +2 -2
  113. package/src/middleware/compress.ts +2 -2
  114. package/src/middleware/cors.ts +2 -2
  115. package/src/middleware/csrf.ts +2 -2
  116. package/src/middleware/etag.ts +2 -2
  117. package/src/middleware/hono-mw.ts +1 -1
  118. package/src/middleware/jwk.ts +2 -2
  119. package/src/middleware/jwt.ts +2 -2
  120. package/src/middleware/secure-headers.ts +2 -2
  121. package/src/middleware/timing.ts +2 -2
  122. package/src/types/index.ts +39 -24
  123. package/src/types/type-utils.ts +8 -4
  124. package/src/types/units.ts +46 -22
  125. package/dist/cjs/register.d.cts +0 -2
  126. package/dist/esm/register.d.ts +0 -2
  127. package/src/register.ts +0 -1
@@ -1,37 +1,26 @@
1
1
  import { NotFoundHandler, OnErrorHandler, RouteManifestShape } from '@taserjs/router-core';
2
- import { DefineMiddlewareFn } from '../define/middleware.js';
3
2
  import { TaserApp } from './app.js';
4
3
  import { ContextDefinition, CreateTaserAppOptions, OnErrorOptions } from '../types/app.js';
5
- import { AppContext } from '../types/units.js';
6
- import { LayoutId, MiddlewareBuilder } from '../types/index.js';
4
+ import { EmptyAppContext } from '../types/units.js';
7
5
  import { ReturnsMap } from '../types/returns.js';
8
- import { CreateAllRoute, CreateAnyRoute, CreateWithBodyRoute, CreateWithoutBodyRoute } from './factories.js';
9
6
  type RouterState = {
10
7
  options: CreateTaserAppOptions;
11
8
  contextDef: ContextDefinition<Record<string, unknown>, Record<string, unknown>>;
12
9
  onError?: OnErrorHandler;
13
10
  notFound?: NotFoundHandler;
14
11
  };
15
- export declare class TaserRouter<TAppContext extends Record<string, unknown> = AppContext, THasNotFound extends boolean = false> {
12
+ export declare class TaserRouter<TAppContext extends Record<string, unknown> = EmptyAppContext, THasNotFound extends boolean = false> {
16
13
  private readonly state;
14
+ readonly $Infer: {
15
+ Context: TAppContext;
16
+ };
17
17
  constructor(options?: CreateTaserAppOptions, state?: Partial<Omit<RouterState, "options">>);
18
18
  context<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>>(definition: ContextDefinition<TBoot, TReq>): TaserRouter<TBoot & TReq, THasNotFound>;
19
19
  onError<TResponses extends ReturnsMap = ReturnsMap>(options: OnErrorOptions<TResponses> | OnErrorOptions<TResponses>["handle"]): this;
20
20
  notFound(handler: (ctx: unknown) => Response | Promise<Response> | unknown): TaserRouter<TAppContext, true>;
21
- get: CreateWithoutBodyRoute<"GET", TAppContext>;
22
- post: CreateWithBodyRoute<"POST", TAppContext>;
23
- put: CreateWithBodyRoute<"PUT", TAppContext>;
24
- patch: CreateWithBodyRoute<"PATCH", TAppContext>;
25
- delete: CreateWithoutBodyRoute<"DELETE", TAppContext>;
26
- options: CreateWithoutBodyRoute<"OPTIONS", TAppContext>;
27
- head: CreateWithoutBodyRoute<"HEAD", TAppContext>;
28
- any: CreateAnyRoute<TAppContext>;
29
- all: CreateAllRoute<TAppContext>;
30
- middleware<const Layout extends LayoutId>(layout: Layout): MiddlewareBuilder<Layout, readonly [], TAppContext>;
31
- defineMiddleware: DefineMiddlewareFn<TAppContext>;
32
21
  create<const TManifest extends RouteManifestShape>(manifest: TManifest, runtimeOptions?: {
33
22
  basePath?: string;
34
23
  }): TaserApp<TManifest, THasNotFound>;
35
24
  }
36
- export declare function createTaserApp(options?: CreateTaserAppOptions): TaserRouter<AppContext, false>;
25
+ export declare function createTaserApp(options?: CreateTaserAppOptions): TaserRouter<EmptyAppContext, false>;
37
26
  export {};
@@ -1,6 +1,3 @@
1
- import { createAllRoute, createAnyRoute, createDeleteRoute, createGetRoute, createHeadRoute, createOptionsRoute, createPatchRoute, createPostRoute, createPutRoute } from "./factories.js";
2
- import { defineMiddleware } from "../define/middleware.js";
3
- import { createMiddleware } from "./middleware.js";
4
1
  import { TaserApp } from "./app.js";
5
2
  import { isPromise, normalizeOnError } from "@taserjs/router-utils";
6
3
  import { createTaserRuntime } from "@taserjs/router-core";
@@ -11,6 +8,7 @@ function toOnErrorHandler(onErrorOptions) {
11
8
  var emptyContext = {};
12
9
  var TaserRouter = class {
13
10
  state;
11
+ $Infer;
14
12
  constructor(options = {}, state) {
15
13
  this.state = {
16
14
  options,
@@ -31,19 +29,6 @@ var TaserRouter = class {
31
29
  this.state.notFound = (ctx) => handler(ctx);
32
30
  return this;
33
31
  }
34
- get = createGetRoute;
35
- post = createPostRoute;
36
- put = createPutRoute;
37
- patch = createPatchRoute;
38
- delete = createDeleteRoute;
39
- options = createOptionsRoute;
40
- head = createHeadRoute;
41
- any = createAnyRoute;
42
- all = createAllRoute;
43
- middleware(layout) {
44
- return createMiddleware(layout);
45
- }
46
- defineMiddleware = defineMiddleware;
47
32
  create(manifest, runtimeOptions) {
48
33
  const definition = this.state.contextDef;
49
34
  const validateResponse = this.state.options.response?.validate ?? true;
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","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":";;;;;;;AAiCA,SAAS,iBACP,gBACgB;CAChB,OAAO,iBAAiB,cAAc;AACxC;AASA,IAAM,eAAoF,CAAC;AAE3F,IAAa,cAAb,MAGE;CACA;CAEA,YAAY,UAAiC,CAAC,GAAG,OAA+C;EAC9F,KAAK,QAAQ;GACX;GACA,YAAY,OAAO,cAAc;GACjC,GAAI,OAAO,YAAY,KAAA,IAAY,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;GACjE,GAAI,OAAO,aAAa,KAAA,IAAY,EAAE,UAAU,MAAM,SAAS,IAAI,CAAC;EACtE;CACF;CAEA,QACE,YACyC;EACzC,KAAK,MAAM,aAAa;EACxB,OAAO;CACT;CAEA,QACE,SACM;EACN,KAAK,MAAM,UAAU,iBAAiB,OAAO;EAC7C,OAAO;CACT;CAEA,SACE,SACgC;EAChC,KAAK,MAAM,YAAY,QAAQ,QAAQ,GAAG;EAC1C,OAAO;CACT;CAEA,MAAkD;CAIlD,OAAiD;CAIjD,MAA+C;CAI/C,QAAmD;CAInD,SACE;CACF,UACE;CACF,OAAoD;CAIpD,MAAmC;CACnC,MAAmC;CAEnC,WACE,QACqD;EACrD,OAAO,iBAAiB,MAAM;CAChC;CAEA,mBACE;CAEF,OACE,UACA,gBACmC;EACnC,MAAM,aAAa,KAAK,MAAM;EAC9B,MAAM,mBAAmB,KAAK,MAAM,QAAQ,UAAU,YAAY;EAClE,MAAM,sBAAsB,KAAK,MAAM,QAAQ,UAAU;EACzD,MAAM,WAAW,gBAAgB;EAEjC,MAAM,mBAAmB,WAAW,SAAS,KAAA,KAAa,WAAW,YAAY,KAAA;EACjF,IAAI;EACJ,IAAI;EAEJ,IAAI,WAAW,SAAS,KAAA,GAAW;GACjC,MAAM,aAAa,WAAW,KAAK;GACnC,IAAI,UAAU,UAAU,GACtB,cAAc,WAAW,MAAM,QAAQ;IACrC,sBAAuB,OAAO,CAAC;IAC/B,OAAO;GACT,CAAC;QAED,sBAAuB,cAAc,CAAC;EAE1C,OAAO,IAAI,kBACT,sBAAsB,CAAC;EA4CzB,OAAO,IAAI,SAXK,mBAAmB,UA9BZ,oBAClB,QAAkB;GACjB,IAAI,gBAAgB,KAAA,KAAa,wBAAwB,KAAA,GACvD,OAAO,YAAY,KAAK,OAAO,gBAAgB;IAC7C,IAAI,CAAC,WAAW,SACd,OAAO,EAAE,GAAG,YAAY;IAE1B,MAAM,gBAAgB,WAAW,QAAQ,GAAI;IAC7C,MAAM,iBAAiB,UAAU,aAAa,IAAI,MAAM,gBAAgB;IACxE,OAAO;KAAE,GAAG;KAAa,GAAG;IAAe;GAC7C,CAAC;GAGH,MAAM,cAAc,uBAAuB,CAAC;GAC5C,IAAI,CAAC,WAAW,SACd,OAAO,EAAE,GAAG,YAAY;GAG1B,MAAM,gBAAgB,WAAW,QAAQ,GAAI;GAC7C,IAAI,UAAU,aAAa,GACzB,OAAO,cAAc,MAAM,oBAAoB;IAC7C,GAAG;IACH,GAAG;GACL,EAAE;GAGJ,OAAO;IAAE,GAAG;IAAa,GAAI;GAA0C;EACzE,WACO,CAAC,IAEiD;GAC3D,GAAI,aAAa,KAAA,IAAY,EAAE,SAAS,IAAI,CAAC;GAC7C,UAAU;IACR,UAAU;IACV,GAAI,wBAAwB,KAAA,IAAY,EAAE,oBAAoB,IAAI,CAAC;GACrE;GACA,GAAI,KAAK,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,MAAM,QAAQ,IAAI,CAAC;GAC1E,GAAI,KAAK,MAAM,aAAa,KAAA,IAAY,EAAE,UAAU,KAAK,MAAM,SAAS,IAAI,CAAC;GAC7E,GAAI,KAAK,MAAM,QAAQ,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,MAAM,QAAQ,QAAQ,IAAI,CAAC;EAC5F,CAEoB,GAAS,QAAQ;CACvC;AACF;AAEA,SAAgB,eACd,UAAiC,CAAC,GACF;CAChC,OAAO,IAAI,YAA+B,OAAO;AACnD"}
1
+ {"version":3,"file":"router.js","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 { TaserApp } from \"./app.js\";\nimport type { ContextDefinition, CreateTaserAppOptions, OnErrorOptions } from \"../types/app.js\";\nimport type { EmptyAppContext } from \"../types/units.js\";\nimport type { ReturnsMap } from \"../types/returns.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> = EmptyAppContext,\n THasNotFound extends boolean = false,\n> {\n private readonly state: RouterState;\n readonly $Infer!: {\n Context: TAppContext;\n };\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 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<EmptyAppContext, false> {\n return new TaserRouter<EmptyAppContext, false>(options);\n}\n"],"mappings":";;;;AAaA,SAAS,iBACP,gBACgB;CAChB,OAAO,iBAAiB,cAAc;AACxC;AASA,IAAM,eAAoF,CAAC;AAE3F,IAAa,cAAb,MAGE;CACA;CACA;CAIA,YAAY,UAAiC,CAAC,GAAG,OAA+C;EAC9F,KAAK,QAAQ;GACX;GACA,YAAY,OAAO,cAAc;GACjC,GAAI,OAAO,YAAY,KAAA,IAAY,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;GACjE,GAAI,OAAO,aAAa,KAAA,IAAY,EAAE,UAAU,MAAM,SAAS,IAAI,CAAC;EACtE;CACF;CAEA,QACE,YACyC;EACzC,KAAK,MAAM,aAAa;EACxB,OAAO;CACT;CAEA,QACE,SACM;EACN,KAAK,MAAM,UAAU,iBAAiB,OAAO;EAC7C,OAAO;CACT;CAEA,SACE,SACgC;EAChC,KAAK,MAAM,YAAY,QAAQ,QAAQ,GAAG;EAC1C,OAAO;CACT;CAEA,OACE,UACA,gBACmC;EACnC,MAAM,aAAa,KAAK,MAAM;EAC9B,MAAM,mBAAmB,KAAK,MAAM,QAAQ,UAAU,YAAY;EAClE,MAAM,sBAAsB,KAAK,MAAM,QAAQ,UAAU;EACzD,MAAM,WAAW,gBAAgB;EAEjC,MAAM,mBAAmB,WAAW,SAAS,KAAA,KAAa,WAAW,YAAY,KAAA;EACjF,IAAI;EACJ,IAAI;EAEJ,IAAI,WAAW,SAAS,KAAA,GAAW;GACjC,MAAM,aAAa,WAAW,KAAK;GACnC,IAAI,UAAU,UAAU,GACtB,cAAc,WAAW,MAAM,QAAQ;IACrC,sBAAuB,OAAO,CAAC;IAC/B,OAAO;GACT,CAAC;QAED,sBAAuB,cAAc,CAAC;EAE1C,OAAO,IAAI,kBACT,sBAAsB,CAAC;EA4CzB,OAAO,IAAI,SAXK,mBAAmB,UA9BZ,oBAClB,QAAkB;GACjB,IAAI,gBAAgB,KAAA,KAAa,wBAAwB,KAAA,GACvD,OAAO,YAAY,KAAK,OAAO,gBAAgB;IAC7C,IAAI,CAAC,WAAW,SACd,OAAO,EAAE,GAAG,YAAY;IAE1B,MAAM,gBAAgB,WAAW,QAAQ,GAAI;IAC7C,MAAM,iBAAiB,UAAU,aAAa,IAAI,MAAM,gBAAgB;IACxE,OAAO;KAAE,GAAG;KAAa,GAAG;IAAe;GAC7C,CAAC;GAGH,MAAM,cAAc,uBAAuB,CAAC;GAC5C,IAAI,CAAC,WAAW,SACd,OAAO,EAAE,GAAG,YAAY;GAG1B,MAAM,gBAAgB,WAAW,QAAQ,GAAI;GAC7C,IAAI,UAAU,aAAa,GACzB,OAAO,cAAc,MAAM,oBAAoB;IAC7C,GAAG;IACH,GAAG;GACL,EAAE;GAGJ,OAAO;IAAE,GAAG;IAAa,GAAI;GAA0C;EACzE,WACO,CAAC,IAEiD;GAC3D,GAAI,aAAa,KAAA,IAAY,EAAE,SAAS,IAAI,CAAC;GAC7C,UAAU;IACR,UAAU;IACV,GAAI,wBAAwB,KAAA,IAAY,EAAE,oBAAoB,IAAI,CAAC;GACrE;GACA,GAAI,KAAK,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,MAAM,QAAQ,IAAI,CAAC;GAC1E,GAAI,KAAK,MAAM,aAAa,KAAA,IAAY,EAAE,UAAU,KAAK,MAAM,SAAS,IAAI,CAAC;GAC7E,GAAI,KAAK,MAAM,QAAQ,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,MAAM,QAAQ,QAAQ,IAAI,CAAC;EAC5F,CAEoB,GAAS,QAAQ;CACvC;AACF;AAEA,SAAgB,eACd,UAAiC,CAAC,GACG;CACrC,OAAO,IAAI,YAAoC,OAAO;AACxD"}
@@ -0,0 +1,28 @@
1
+ import { AppContext, LayoutBuilder } from '../types/index.js';
2
+ import { CreateAllRoute, CreateAnyRoute, CreateWithBodyRoute, CreateWithoutBodyRoute } from './factories.js';
3
+ import { MiddlewareFn } from '../define/middleware.js';
4
+ export declare const get: CreateWithoutBodyRoute<"GET", AppContext>;
5
+ export declare const post: CreateWithBodyRoute<"POST", AppContext>;
6
+ export declare const put: CreateWithBodyRoute<"PUT", AppContext>;
7
+ export declare const patch: CreateWithBodyRoute<"PATCH", AppContext>;
8
+ export declare const del: CreateWithoutBodyRoute<"DELETE", AppContext>;
9
+ export declare const options: CreateWithoutBodyRoute<"OPTIONS", AppContext>;
10
+ export declare const head: CreateWithoutBodyRoute<"HEAD", AppContext>;
11
+ export declare const any: CreateAnyRoute<AppContext>;
12
+ export declare const all: CreateAllRoute<AppContext>;
13
+ export declare const layout: LayoutBuilder<AppContext>;
14
+ export declare const middleware: MiddlewareFn<AppContext>;
15
+ export type TaserNamespace<TAppContext extends Record<string, unknown> = AppContext> = {
16
+ readonly get: CreateWithoutBodyRoute<"GET", TAppContext>;
17
+ readonly post: CreateWithBodyRoute<"POST", TAppContext>;
18
+ readonly put: CreateWithBodyRoute<"PUT", TAppContext>;
19
+ readonly patch: CreateWithBodyRoute<"PATCH", TAppContext>;
20
+ readonly delete: CreateWithoutBodyRoute<"DELETE", TAppContext>;
21
+ readonly options: CreateWithoutBodyRoute<"OPTIONS", TAppContext>;
22
+ readonly head: CreateWithoutBodyRoute<"HEAD", TAppContext>;
23
+ readonly any: CreateAnyRoute<TAppContext>;
24
+ readonly all: CreateAllRoute<TAppContext>;
25
+ readonly layout: LayoutBuilder<TAppContext>;
26
+ readonly middleware: MiddlewareFn<TAppContext>;
27
+ };
28
+ export declare const t: TaserNamespace<AppContext>;
@@ -0,0 +1,32 @@
1
+ import { createAllRoute, createAnyRoute, createDeleteRoute, createGetRoute, createHeadRoute, createOptionsRoute, createPatchRoute, createPostRoute, createPutRoute } from "./factories.js";
2
+ import { createMiddleware } from "./middleware.js";
3
+ import { middleware as middleware$1 } from "../define/middleware.js";
4
+ //#region src/builder/standalone.ts
5
+ var get = createGetRoute;
6
+ var post = createPostRoute;
7
+ var put = createPutRoute;
8
+ var patch = createPatchRoute;
9
+ var del = createDeleteRoute;
10
+ var options = createOptionsRoute;
11
+ var head = createHeadRoute;
12
+ var any = createAnyRoute;
13
+ var all = createAllRoute;
14
+ var layout = createMiddleware;
15
+ var middleware = middleware$1;
16
+ var t = {
17
+ get,
18
+ post,
19
+ put,
20
+ patch,
21
+ delete: del,
22
+ options,
23
+ head,
24
+ any,
25
+ all,
26
+ layout,
27
+ middleware
28
+ };
29
+ //#endregion
30
+ export { all, any, del, get, head, layout, middleware, options, patch, post, put, t };
31
+
32
+ //# sourceMappingURL=standalone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone.js","names":[],"sources":["../../../src/builder/standalone.ts"],"sourcesContent":["import type { AppContext, LayoutBuilder } from \"../types/index.js\";\nimport {\n createAllRoute,\n createAnyRoute,\n createDeleteRoute,\n createGetRoute,\n createHeadRoute,\n createOptionsRoute,\n createPatchRoute,\n createPostRoute,\n createPutRoute,\n type CreateAllRoute,\n type CreateAnyRoute,\n type CreateWithBodyRoute,\n type CreateWithoutBodyRoute,\n} from \"./factories.js\";\nimport { createMiddleware } from \"./middleware.js\";\nimport { middleware as createMiddlewareFn, type MiddlewareFn } from \"../define/middleware.js\";\n\nexport const get: CreateWithoutBodyRoute<\"GET\", AppContext> =\n createGetRoute as CreateWithoutBodyRoute<\"GET\", AppContext>;\nexport const post: CreateWithBodyRoute<\"POST\", AppContext> = createPostRoute as CreateWithBodyRoute<\n \"POST\",\n AppContext\n>;\nexport const put: CreateWithBodyRoute<\"PUT\", AppContext> = createPutRoute as CreateWithBodyRoute<\n \"PUT\",\n AppContext\n>;\nexport const patch: CreateWithBodyRoute<\"PATCH\", AppContext> =\n createPatchRoute as CreateWithBodyRoute<\"PATCH\", AppContext>;\nexport const del: CreateWithoutBodyRoute<\"DELETE\", AppContext> =\n createDeleteRoute as CreateWithoutBodyRoute<\"DELETE\", AppContext>;\nexport const options: CreateWithoutBodyRoute<\"OPTIONS\", AppContext> =\n createOptionsRoute as CreateWithoutBodyRoute<\"OPTIONS\", AppContext>;\nexport const head: CreateWithoutBodyRoute<\"HEAD\", AppContext> =\n createHeadRoute as CreateWithoutBodyRoute<\"HEAD\", AppContext>;\nexport const any: CreateAnyRoute<AppContext> = createAnyRoute as CreateAnyRoute<AppContext>;\nexport const all: CreateAllRoute<AppContext> = createAllRoute as CreateAllRoute<AppContext>;\n\nexport const layout: LayoutBuilder<AppContext> = createMiddleware as LayoutBuilder<AppContext>;\nexport const middleware: MiddlewareFn<AppContext> = createMiddlewareFn as MiddlewareFn<AppContext>;\n\nexport type TaserNamespace<TAppContext extends Record<string, unknown> = AppContext> = {\n readonly get: CreateWithoutBodyRoute<\"GET\", TAppContext>;\n readonly post: CreateWithBodyRoute<\"POST\", TAppContext>;\n readonly put: CreateWithBodyRoute<\"PUT\", TAppContext>;\n readonly patch: CreateWithBodyRoute<\"PATCH\", TAppContext>;\n readonly delete: CreateWithoutBodyRoute<\"DELETE\", TAppContext>;\n readonly options: CreateWithoutBodyRoute<\"OPTIONS\", TAppContext>;\n readonly head: CreateWithoutBodyRoute<\"HEAD\", TAppContext>;\n readonly any: CreateAnyRoute<TAppContext>;\n readonly all: CreateAllRoute<TAppContext>;\n readonly layout: LayoutBuilder<TAppContext>;\n readonly middleware: MiddlewareFn<TAppContext>;\n};\n\nexport const t: TaserNamespace<AppContext> = {\n get,\n post,\n put,\n patch,\n delete: del,\n options,\n head,\n any,\n all,\n layout,\n middleware,\n};\n"],"mappings":";;;;AAmBA,IAAa,MACX;AACF,IAAa,OAAgD;AAI7D,IAAa,MAA8C;AAI3D,IAAa,QACX;AACF,IAAa,MACX;AACF,IAAa,UACX;AACF,IAAa,OACX;AACF,IAAa,MAAkC;AAC/C,IAAa,MAAkC;AAE/C,IAAa,SAAoC;AACjD,IAAa,aAAuC;AAgBpD,IAAa,IAAgC;CAC3C;CACA;CACA;CACA;CACA,QAAQ;CACR;CACA;CACA;CACA;CACA;CACA;AACF"}
@@ -1,46 +1,45 @@
1
- import { Awaitable } from '@taserjs/router-core';
2
- import { AppContext, DefineMiddlewareResult, ExtractState, IsUnknown, MiddlewareUnitBuilder, NextFn, StandaloneMiddlewareContext } from '../types/units.js';
3
- import { LayoutId, ResolveLayoutMiddlewaresState, ResolveLayoutsState } from '../types/index.js';
4
- export interface DefineMiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {
1
+ import { DefineMiddlewareResult, ExtractState, IsUnknown, MiddlewareUnitBuilder, NextFn, StandaloneMiddlewareContext } from '../types/units.js';
2
+ import { AppContext, LayoutId, ResolveLayoutMiddlewaresState, ResolveLayoutsState } from '../types/index.js';
3
+ export interface MiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {
5
4
  /**
6
- * Constructs a fluent unscoped middleware builder.
5
+ * Constructs a fluent unscoped middleware builder, with optional explicit State generic.
7
6
  *
8
7
  * @example
9
8
  * ```ts
10
- * const auth = defineMiddleware()
9
+ * const auth = middleware<{ user: string }>()
11
10
  * .query(z.object({ token: z.string() }))
12
11
  * .body("form", z.object({ file: z.instanceof(File) }))
13
12
  * .returns({ 401: z.string() })
14
13
  * .handler(async (ctx, next) => next({ user: "alice" }));
15
14
  * ```
16
15
  */
17
- (): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, null, {}, TAppContext>;
16
+ <TState = unknown>(): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, null, {}, TAppContext, {}, unknown, unknown, unknown, TState>;
18
17
  /**
19
- * Constructs a fluent middleware builder scoped to a single layout branch.
18
+ * Constructs a fluent middleware builder scoped to a single layout branch, with optional explicit State generic.
20
19
  */
21
- <const Layout extends LayoutId>(layout: Layout): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layout, {}, TAppContext, ResolveLayoutMiddlewaresState<Layout>>;
20
+ <const Layout extends LayoutId, TState = unknown>(layout: Layout): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layout, {}, TAppContext, ResolveLayoutMiddlewaresState<Layout>, unknown, unknown, unknown, TState>;
22
21
  /**
23
- * Constructs a fluent middleware builder scoped to multiple layout branches (branch union).
22
+ * Constructs a fluent middleware builder scoped to multiple layout branches (branch union), with optional explicit State generic.
24
23
  */
25
- <const Layouts extends readonly [LayoutId, ...LayoutId[]]>(layouts: Layouts): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layouts, {}, TAppContext, ResolveLayoutsState<Layouts>>;
24
+ <const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown>(layouts: Layouts): MiddlewareUnitBuilder<unknown, unknown, unknown, {}, Layouts, {}, TAppContext, ResolveLayoutsState<Layouts>, unknown, unknown, unknown, TState>;
26
25
  /**
27
26
  * Defines a standalone middleware scoped to a single layout branch using a short function signature.
28
27
  */
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>;
28
+ <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>>) => R): DefineMiddlewareResult<unknown, unknown, unknown, IsUnknown<TState> extends true ? ExtractState<R> : TState, R, unknown, unknown, unknown, {}, Layout, TRequires>;
30
29
  /**
31
30
  * Defines a standalone middleware scoped to multiple layout branches using a short function signature.
32
31
  */
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>;
32
+ <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>>) => R): DefineMiddlewareResult<unknown, unknown, unknown, IsUnknown<TState> extends true ? ExtractState<R> : TState, R, unknown, unknown, unknown, {}, Layouts, TRequires>;
34
33
  /**
35
34
  * Defines a standalone, unscoped middleware using a short function signature.
36
35
  *
37
36
  * @example
38
37
  * ```ts
39
- * const auth = defineMiddleware((ctx, next) => {
38
+ * const auth = middleware((ctx, next) => {
40
39
  * return next({ user: "alice" });
41
40
  * });
42
41
  * ```
43
42
  */
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>;
43
+ <TState = unknown, TRequires = {}, R = unknown>(fn: (ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, TRequires>, next: NextFn<NoInfer<TState>>) => R): DefineMiddlewareResult<unknown, unknown, unknown, IsUnknown<TState> extends true ? ExtractState<R> : TState, R, unknown, unknown, unknown, {}, null, TRequires>;
45
44
  }
46
- export declare const defineMiddleware: DefineMiddlewareFn<AppContext>;
45
+ export declare const middleware: MiddlewareFn<AppContext>;
@@ -1,7 +1,6 @@
1
1
  import { createMiddlewareUnitBuilder } from "../builder/middleware-unit.js";
2
- import "@taserjs/router-core";
3
2
  //#region src/define/middleware.ts
4
- var defineMiddleware = function defineMiddleware(first, second) {
3
+ var middleware = function middleware(first, second) {
5
4
  if (first === void 0) return createMiddlewareUnitBuilder();
6
5
  if (typeof first === "string" || Array.isArray(first)) {
7
6
  if (typeof second === "function") return {
@@ -18,6 +17,6 @@ var defineMiddleware = function defineMiddleware(first, second) {
18
17
  return createMiddlewareUnitBuilder();
19
18
  };
20
19
  //#endregion
21
- export { defineMiddleware };
20
+ export { middleware };
22
21
 
23
22
  //# sourceMappingURL=middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","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,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,4BAA4B,KAAK;CAC1C;CAEA,IAAI,OAAO,UAAU,YACnB,OAAO;EACL,SAAS;EACT,iBAAiB,KAAA;CACnB;CAGF,OAAO,4BAA4B;AACrC"}
1
+ {"version":3,"file":"middleware.js","names":[],"sources":["../../../src/define/middleware.ts"],"sourcesContent":["import { createMiddlewareUnitBuilder } from \"../builder/middleware-unit.js\";\nimport type {\n DefineMiddlewareResult,\n ExtractState,\n IsUnknown,\n MiddlewareUnitBuilder,\n NextFn,\n StandaloneMiddlewareContext,\n} from \"../types/units.js\";\nimport type {\n AppContext,\n LayoutId,\n ResolveLayoutMiddlewaresState,\n ResolveLayoutsState,\n} from \"../types/index.js\";\n\nexport interface MiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {\n /**\n * Constructs a fluent unscoped middleware builder, with optional explicit State generic.\n *\n * @example\n * ```ts\n * const auth = middleware<{ user: string }>()\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 <TState = unknown>(): MiddlewareUnitBuilder<\n unknown,\n unknown,\n unknown,\n {},\n null,\n {},\n TAppContext,\n {},\n unknown,\n unknown,\n unknown,\n TState\n >;\n\n /**\n * Constructs a fluent middleware builder scoped to a single layout branch, with optional explicit State generic.\n */\n <const Layout extends LayoutId, TState = unknown>(\n layout: Layout,\n ): MiddlewareUnitBuilder<\n unknown,\n unknown,\n unknown,\n {},\n Layout,\n {},\n TAppContext,\n ResolveLayoutMiddlewaresState<Layout>,\n unknown,\n unknown,\n unknown,\n TState\n >;\n\n /**\n * Constructs a fluent middleware builder scoped to multiple layout branches (branch union), with optional explicit State generic.\n */\n <const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown>(\n layouts: Layouts,\n ): MiddlewareUnitBuilder<\n unknown,\n unknown,\n unknown,\n {},\n Layouts,\n {},\n TAppContext,\n ResolveLayoutsState<Layouts>,\n unknown,\n unknown,\n unknown,\n TState\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 ) => 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 ) => 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 = middleware((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 ) => 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 middleware: MiddlewareFn<AppContext> = function middleware(\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":";;AAiLA,IAAa,aAAuC,SAAS,WAC3D,OACA,QACK;CACL,IAAI,UAAU,KAAA,GACZ,OAAO,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,4BAA4B,KAAK;CAC1C;CAEA,IAAI,OAAO,UAAU,YACnB,OAAO;EACL,SAAS;EACT,iBAAiB,KAAA;CACnB;CAGF,OAAO,4BAA4B;AACrC"}
@@ -1,11 +1,13 @@
1
- export type { RouterRegister } from './register.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';
1
+ export interface RouterRegister {
2
+ }
3
+ export type { AppContext, EmptyAppContext, HttpMethod, InferInput, InferOutput, InferRouteContext, InferRouteInput, InferRouteInputFromPath, InferRouteOutput, LayoutBuilder, LayoutId, LayoutTree, Method, MiddlewareBuilder, MiddlewareDefinition, MiddlewareUnit, MiddlewareUnitBuilder, PathParams, ReturnsMap, RouteByPathMethod, RouteDefinition, RouteExport, RoutePath, Schema, Simplify, StatusCode, } from './types/index.js';
3
4
  export type { ContextDefinition, CreateTaserAppOptions, InferAppContext, InferAppManifest, OnErrorOptions, RouteManifestShape, } from './types/app.js';
4
5
  export { ValidationError, validationErrorSchema } from '@taserjs/router-utils';
5
6
  export type { ResponseValidationFailureHandler, SuccessStatusCode } from '@taserjs/router-utils';
7
+ export { all, any, del, get, head, layout, middleware, options, patch, post, put, t, type TaserNamespace, } from './builder/standalone.js';
6
8
  export { createTaserApp, TaserRouter } from './builder/router.js';
7
9
  export { TaserApp } from './builder/app.js';
8
10
  export { createContext } from './context/create-context.js';
9
- export { defineMiddleware } from './define/middleware.js';
10
11
  export { honoMw } from './middleware/hono-mw.js';
12
+ export type { MiddlewareFn } from './define/middleware.js';
11
13
  export type { TaserCookieJar, TaserHeaders } from '@taserjs/router-core';
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { defineMiddleware } from "./define/middleware.js";
1
+ import { all, any, del, get, head, layout, middleware, options, patch, post, put, t } from "./builder/standalone.js";
2
2
  import { TaserApp } from "./builder/app.js";
3
3
  import { TaserRouter, createTaserApp } from "./builder/router.js";
4
4
  import { createContext } from "./context/create-context.js";
5
5
  import { honoMw } from "./middleware/hono-mw.js";
6
6
  import { ValidationError, validationErrorSchema } from "@taserjs/router-utils";
7
- export { TaserApp, TaserRouter, ValidationError, createContext, createTaserApp, defineMiddleware, honoMw, validationErrorSchema };
7
+ export { TaserApp, TaserRouter, ValidationError, all, any, createContext, createTaserApp, del, get, head, honoMw, layout, middleware, options, patch, post, put, t, validationErrorSchema };
@@ -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').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
2
+ export declare function bodyLimit(...args: Parameters<typeof honoBodyLimit>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
3
3
  export type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];
@@ -1,9 +1,9 @@
1
- import { defineMiddleware } from "../define/middleware.js";
1
+ import { middleware } from "../define/middleware.js";
2
2
  import { honoMw } from "./hono-mw.js";
3
3
  import { bodyLimit as bodyLimit$1 } from "hono/body-limit";
4
4
  //#region src/middleware/body-limit.ts
5
5
  function bodyLimit(...args) {
6
- return defineMiddleware(honoMw(bodyLimit$1(...args)));
6
+ return middleware(honoMw(bodyLimit$1(...args)));
7
7
  }
8
8
  //#endregion
9
9
  export { bodyLimit };
@@ -1 +1 @@
1
- {"version":3,"file":"body-limit.js","names":[],"sources":["../../../src/middleware/body-limit.ts"],"sourcesContent":["import { bodyLimit as honoBodyLimit } from \"hono/body-limit\";\n\nimport { 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,iBAAiB,OAAO,YAAc,GAAG,IAAI,CAAC,CAAC;AACxD"}
1
+ {"version":3,"file":"body-limit.js","names":[],"sources":["../../../src/middleware/body-limit.ts"],"sourcesContent":["import { bodyLimit as honoBodyLimit } from \"hono/body-limit\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function bodyLimit(...args: Parameters<typeof honoBodyLimit>) {\n return middleware(honoMw(honoBodyLimit(...args)));\n}\n\nexport type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];\n"],"mappings":";;;;AAKA,SAAgB,UAAU,GAAG,MAAwC;CACnE,OAAO,WAAW,OAAO,YAAc,GAAG,IAAI,CAAC,CAAC;AAClD"}
@@ -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').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
2
+ export declare function compress(...args: Parameters<typeof honoCompress>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
3
3
  export type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>;
@@ -1,9 +1,9 @@
1
- import { defineMiddleware } from "../define/middleware.js";
1
+ import { middleware } from "../define/middleware.js";
2
2
  import { honoMw } from "./hono-mw.js";
3
3
  import { compress as compress$1 } from "hono/compress";
4
4
  //#region src/middleware/compress.ts
5
5
  function compress(...args) {
6
- return defineMiddleware(honoMw(compress$1(...args)));
6
+ return middleware(honoMw(compress$1(...args)));
7
7
  }
8
8
  //#endregion
9
9
  export { compress };
@@ -1 +1 @@
1
- {"version":3,"file":"compress.js","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,iBAAiB,OAAO,WAAa,GAAG,IAAI,CAAC,CAAC;AACvD"}
1
+ {"version":3,"file":"compress.js","names":[],"sources":["../../../src/middleware/compress.ts"],"sourcesContent":["import { compress as honoCompress } from \"hono/compress\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function compress(...args: Parameters<typeof honoCompress>) {\n return middleware(honoMw(honoCompress(...args)));\n}\n\nexport type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>;\n"],"mappings":";;;;AAKA,SAAgB,SAAS,GAAG,MAAuC;CACjE,OAAO,WAAW,OAAO,WAAa,GAAG,IAAI,CAAC,CAAC;AACjD"}
@@ -1,3 +1,3 @@
1
1
  import { cors as honoCors } from 'hono/cors';
2
- export declare function cors(...args: Parameters<typeof honoCors>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
2
+ export declare function cors(...args: Parameters<typeof honoCors>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
3
3
  export type CorsOptions = NonNullable<Parameters<typeof honoCors>[0]>;
@@ -1,9 +1,9 @@
1
- import { defineMiddleware } from "../define/middleware.js";
1
+ import { middleware } from "../define/middleware.js";
2
2
  import { honoMw } from "./hono-mw.js";
3
3
  import { cors as cors$1 } from "hono/cors";
4
4
  //#region src/middleware/cors.ts
5
5
  function cors(...args) {
6
- return defineMiddleware(honoMw(cors$1(...args)));
6
+ return middleware(honoMw(cors$1(...args)));
7
7
  }
8
8
  //#endregion
9
9
  export { cors };
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","names":[],"sources":["../../../src/middleware/cors.ts"],"sourcesContent":["import { cors as honoCors } from \"hono/cors\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function cors(...args: Parameters<typeof honoCors>) {\n return defineMiddleware(honoMw(honoCors(...args)));\n}\n\nexport type CorsOptions = NonNullable<Parameters<typeof honoCors>[0]>;\n"],"mappings":";;;;AAKA,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,iBAAiB,OAAO,OAAS,GAAG,IAAI,CAAC,CAAC;AACnD"}
1
+ {"version":3,"file":"cors.js","names":[],"sources":["../../../src/middleware/cors.ts"],"sourcesContent":["import { cors as honoCors } from \"hono/cors\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function cors(...args: Parameters<typeof honoCors>) {\n return middleware(honoMw(honoCors(...args)));\n}\n\nexport type CorsOptions = NonNullable<Parameters<typeof honoCors>[0]>;\n"],"mappings":";;;;AAKA,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,WAAW,OAAO,OAAS,GAAG,IAAI,CAAC,CAAC;AAC7C"}
@@ -1,3 +1,3 @@
1
1
  import { csrf as honoCsrf } from 'hono/csrf';
2
- export declare function csrf(...args: Parameters<typeof honoCsrf>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
2
+ export declare function csrf(...args: Parameters<typeof honoCsrf>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
3
3
  export type CsrfOptions = NonNullable<Parameters<typeof honoCsrf>[0]>;
@@ -1,9 +1,9 @@
1
- import { defineMiddleware } from "../define/middleware.js";
1
+ import { middleware } from "../define/middleware.js";
2
2
  import { honoMw } from "./hono-mw.js";
3
3
  import { csrf as csrf$1 } from "hono/csrf";
4
4
  //#region src/middleware/csrf.ts
5
5
  function csrf(...args) {
6
- return defineMiddleware(honoMw(csrf$1(...args)));
6
+ return middleware(honoMw(csrf$1(...args)));
7
7
  }
8
8
  //#endregion
9
9
  export { csrf };
@@ -1 +1 @@
1
- {"version":3,"file":"csrf.js","names":[],"sources":["../../../src/middleware/csrf.ts"],"sourcesContent":["import { csrf as honoCsrf } from \"hono/csrf\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function csrf(...args: Parameters<typeof honoCsrf>) {\n return defineMiddleware(honoMw(honoCsrf(...args)));\n}\n\nexport type CsrfOptions = NonNullable<Parameters<typeof honoCsrf>[0]>;\n"],"mappings":";;;;AAKA,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,iBAAiB,OAAO,OAAS,GAAG,IAAI,CAAC,CAAC;AACnD"}
1
+ {"version":3,"file":"csrf.js","names":[],"sources":["../../../src/middleware/csrf.ts"],"sourcesContent":["import { csrf as honoCsrf } from \"hono/csrf\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function csrf(...args: Parameters<typeof honoCsrf>) {\n return middleware(honoMw(honoCsrf(...args)));\n}\n\nexport type CsrfOptions = NonNullable<Parameters<typeof honoCsrf>[0]>;\n"],"mappings":";;;;AAKA,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,WAAW,OAAO,OAAS,GAAG,IAAI,CAAC,CAAC;AAC7C"}
@@ -1,3 +1,3 @@
1
1
  import { etag as honoEtag } from 'hono/etag';
2
- export declare function etag(...args: Parameters<typeof honoEtag>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
2
+ export declare function etag(...args: Parameters<typeof honoEtag>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
3
3
  export type EtagOptions = NonNullable<Parameters<typeof honoEtag>[0]>;
@@ -1,9 +1,9 @@
1
- import { defineMiddleware } from "../define/middleware.js";
1
+ import { middleware } from "../define/middleware.js";
2
2
  import { honoMw } from "./hono-mw.js";
3
3
  import { etag as etag$1 } from "hono/etag";
4
4
  //#region src/middleware/etag.ts
5
5
  function etag(...args) {
6
- return defineMiddleware(honoMw(etag$1(...args)));
6
+ return middleware(honoMw(etag$1(...args)));
7
7
  }
8
8
  //#endregion
9
9
  export { etag };
@@ -1 +1 @@
1
- {"version":3,"file":"etag.js","names":[],"sources":["../../../src/middleware/etag.ts"],"sourcesContent":["import { etag as honoEtag } from \"hono/etag\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function etag(...args: Parameters<typeof honoEtag>) {\n return defineMiddleware(honoMw(honoEtag(...args)));\n}\n\nexport type EtagOptions = NonNullable<Parameters<typeof honoEtag>[0]>;\n"],"mappings":";;;;AAKA,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,iBAAiB,OAAO,OAAS,GAAG,IAAI,CAAC,CAAC;AACnD"}
1
+ {"version":3,"file":"etag.js","names":[],"sources":["../../../src/middleware/etag.ts"],"sourcesContent":["import { etag as honoEtag } from \"hono/etag\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function etag(...args: Parameters<typeof honoEtag>) {\n return middleware(honoMw(honoEtag(...args)));\n}\n\nexport type EtagOptions = NonNullable<Parameters<typeof honoEtag>[0]>;\n"],"mappings":";;;;AAKA,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,WAAW,OAAO,OAAS,GAAG,IAAI,CAAC,CAAC;AAC7C"}
@@ -10,7 +10,7 @@ import { MiddlewareHandler } from 'hono';
10
10
  *
11
11
  * const app = t.get("/hello").use(honoMw(cors()));
12
12
  * // or
13
- * const customCors = defineMiddleware(honoMw(cors()));
13
+ * const customCors = middleware(honoMw(cors()));
14
14
  * ```
15
15
  */
16
16
  export declare function honoMw(middleware: MiddlewareHandler): (ctx: unknown, next: any) => Promise<Response>;
@@ -11,7 +11,7 @@ import { createTaserCompatHandler } from "@taserjs/router-core";
11
11
  *
12
12
  * const app = t.get("/hello").use(honoMw(cors()));
13
13
  * // or
14
- * const customCors = defineMiddleware(honoMw(cors()));
14
+ * const customCors = middleware(honoMw(cors()));
15
15
  * ```
16
16
  */
17
17
  function honoMw(middleware) {
@@ -1 +1 @@
1
- {"version":3,"file":"hono-mw.js","names":[],"sources":["../../../src/middleware/hono-mw.ts"],"sourcesContent":["import { createTaserCompatHandler } from \"@taserjs/router-core\";\nimport type { MiddlewareHandler } from \"hono\";\n\n/**\n * Adapts a standard Web / Hono-compatible middleware function `(c, next) => ...`\n * into a Taser-compatible middleware handler function `(ctx, next) => Promise<Response>`.\n *\n * @example\n * ```ts\n * import { honoMw } from \"@taserjs/router\";\n * import { cors } from \"hono/cors\";\n *\n * const app = t.get(\"/hello\").use(honoMw(cors()));\n * // or\n * const customCors = defineMiddleware(honoMw(cors()));\n * ```\n */\nexport function honoMw(\n middleware: MiddlewareHandler,\n): (ctx: unknown, next: any) => Promise<Response> {\n return createTaserCompatHandler(middleware) as (ctx: unknown, next: any) => Promise<Response>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,SAAgB,OACd,YACgD;CAChD,OAAO,yBAAyB,UAAU;AAC5C"}
1
+ {"version":3,"file":"hono-mw.js","names":[],"sources":["../../../src/middleware/hono-mw.ts"],"sourcesContent":["import { createTaserCompatHandler } from \"@taserjs/router-core\";\nimport type { MiddlewareHandler } from \"hono\";\n\n/**\n * Adapts a standard Web / Hono-compatible middleware function `(c, next) => ...`\n * into a Taser-compatible middleware handler function `(ctx, next) => Promise<Response>`.\n *\n * @example\n * ```ts\n * import { honoMw } from \"@taserjs/router\";\n * import { cors } from \"hono/cors\";\n *\n * const app = t.get(\"/hello\").use(honoMw(cors()));\n * // or\n * const customCors = middleware(honoMw(cors()));\n * ```\n */\nexport function honoMw(\n middleware: MiddlewareHandler,\n): (ctx: unknown, next: any) => Promise<Response> {\n return createTaserCompatHandler(middleware) as (ctx: unknown, next: any) => Promise<Response>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,SAAgB,OACd,YACgD;CAChD,OAAO,yBAAyB,UAAU;AAC5C"}
@@ -1,4 +1,4 @@
1
- import { defineMiddleware } from "../define/middleware.js";
1
+ import { middleware } from "../define/middleware.js";
2
2
  import { honoMw } from "./hono-mw.js";
3
3
  import { jwk as jwk$1 } from "hono/jwk";
4
4
  //#region src/middleware/jwk.ts
@@ -18,7 +18,7 @@ function jwk(options, init) {
18
18
  if (typeof jwksUri === "string") assertJwksScheme(jwksUri, options.allowInsecure ?? false);
19
19
  const { allowInsecure: _allowInsecure, ...honoOptions } = options;
20
20
  const mw = honoMw(jwk$1(honoOptions, init?.headers !== void 0 ? { headers: init.headers } : void 0));
21
- return defineMiddleware((ctx, next) => mw(ctx, async () => {
21
+ return middleware((ctx, next) => mw(ctx, async () => {
22
22
  const payload = ctx.var.jwtPayload;
23
23
  return next({ jwtPayload: payload });
24
24
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"jwk.js","names":[],"sources":["../../../src/middleware/jwk.ts"],"sourcesContent":["import { jwk as honoJwk } from \"hono/jwk\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\nimport type { JwtMiddlewareUnit, JwtPayloadState } from \"./jwt.js\";\n\nexport type JwkOptions = Parameters<typeof honoJwk>[0];\n\nexport type JwkRequestInit = Pick<RequestInit, \"headers\">;\n\nexport type JwkMiddlewareOptions = JwkOptions & {\n /** Allow `http://` JWKS URLs (local dev). Default false — requires `https://`. */\n allowInsecure?: boolean;\n};\n\nfunction assertJwksScheme(jwksUri: string, allowInsecure: boolean): void {\n const scheme = new URL(jwksUri).protocol.replace(\":\", \"\");\n if (scheme === \"https\") {\n return;\n }\n if (scheme === \"http\" && allowInsecure) {\n return;\n }\n throw new Error(`JWKS URL must use https:// (or http:// with allowInsecure: true): \"${jwksUri}\"`);\n}\n\n/**\n * JWK auth middleware. Invalid or missing tokens return **401** (Hono).\n * Successfully decoded payload is placed in `ctx.state.jwtPayload`.\n * Static `jwks_uri` must use HTTPS unless `allowInsecure: true`.\n */\nexport function jwk<TPayload = Record<string, unknown>>(\n options: JwkMiddlewareOptions,\n init?: JwkRequestInit,\n): JwtMiddlewareUnit<TPayload> {\n const jwksUri = options.jwks_uri;\n if (typeof jwksUri === \"string\") {\n assertJwksScheme(jwksUri, options.allowInsecure ?? false);\n }\n\n const { allowInsecure: _allowInsecure, ...honoOptions } = options;\n const safeInit = init?.headers !== undefined ? { headers: init.headers } : undefined;\n const mw = honoMw(honoJwk(honoOptions, safeInit));\n\n return defineMiddleware<JwtPayloadState<TPayload>>((ctx, next) =>\n mw(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n }),\n );\n}\n"],"mappings":";;;;AAeA,SAAS,iBAAiB,SAAiB,eAA8B;CACvE,MAAM,SAAS,IAAI,IAAI,OAAO,CAAC,CAAC,SAAS,QAAQ,KAAK,EAAE;CACxD,IAAI,WAAW,SACb;CAEF,IAAI,WAAW,UAAU,eACvB;CAEF,MAAM,IAAI,MAAM,sEAAsE,QAAQ,EAAE;AAClG;;;;;;AAOA,SAAgB,IACd,SACA,MAC6B;CAC7B,MAAM,UAAU,QAAQ;CACxB,IAAI,OAAO,YAAY,UACrB,iBAAiB,SAAS,QAAQ,iBAAiB,KAAK;CAG1D,MAAM,EAAE,eAAe,gBAAgB,GAAG,gBAAgB;CAE1D,MAAM,KAAK,OAAO,MAAQ,aADT,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,QAAQ,IAAI,KAAA,CAC5B,CAAC;CAEhD,OAAO,kBAA6C,KAAK,SACvD,GAAG,KAAK,YAAY;EAClB,MAAM,UAAW,IAAqD,IAAI;EAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;CACjD,CAAC,CACH;AACF"}
1
+ {"version":3,"file":"jwk.js","names":[],"sources":["../../../src/middleware/jwk.ts"],"sourcesContent":["import { jwk as honoJwk } from \"hono/jwk\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\nimport type { JwtMiddlewareUnit, JwtPayloadState } from \"./jwt.js\";\n\nexport type JwkOptions = Parameters<typeof honoJwk>[0];\n\nexport type JwkRequestInit = Pick<RequestInit, \"headers\">;\n\nexport type JwkMiddlewareOptions = JwkOptions & {\n /** Allow `http://` JWKS URLs (local dev). Default false — requires `https://`. */\n allowInsecure?: boolean;\n};\n\nfunction assertJwksScheme(jwksUri: string, allowInsecure: boolean): void {\n const scheme = new URL(jwksUri).protocol.replace(\":\", \"\");\n if (scheme === \"https\") {\n return;\n }\n if (scheme === \"http\" && allowInsecure) {\n return;\n }\n throw new Error(`JWKS URL must use https:// (or http:// with allowInsecure: true): \"${jwksUri}\"`);\n}\n\n/**\n * JWK auth middleware. Invalid or missing tokens return **401** (Hono).\n * Successfully decoded payload is placed in `ctx.state.jwtPayload`.\n * Static `jwks_uri` must use HTTPS unless `allowInsecure: true`.\n */\nexport function jwk<TPayload = Record<string, unknown>>(\n options: JwkMiddlewareOptions,\n init?: JwkRequestInit,\n): JwtMiddlewareUnit<TPayload> {\n const jwksUri = options.jwks_uri;\n if (typeof jwksUri === \"string\") {\n assertJwksScheme(jwksUri, options.allowInsecure ?? false);\n }\n\n const { allowInsecure: _allowInsecure, ...honoOptions } = options;\n const safeInit = init?.headers !== undefined ? { headers: init.headers } : undefined;\n const mw = honoMw(honoJwk(honoOptions, safeInit));\n\n return middleware<JwtPayloadState<TPayload>>((ctx, next) =>\n mw(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n }),\n );\n}\n"],"mappings":";;;;AAeA,SAAS,iBAAiB,SAAiB,eAA8B;CACvE,MAAM,SAAS,IAAI,IAAI,OAAO,CAAC,CAAC,SAAS,QAAQ,KAAK,EAAE;CACxD,IAAI,WAAW,SACb;CAEF,IAAI,WAAW,UAAU,eACvB;CAEF,MAAM,IAAI,MAAM,sEAAsE,QAAQ,EAAE;AAClG;;;;;;AAOA,SAAgB,IACd,SACA,MAC6B;CAC7B,MAAM,UAAU,QAAQ;CACxB,IAAI,OAAO,YAAY,UACrB,iBAAiB,SAAS,QAAQ,iBAAiB,KAAK;CAG1D,MAAM,EAAE,eAAe,gBAAgB,GAAG,gBAAgB;CAE1D,MAAM,KAAK,OAAO,MAAQ,aADT,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,QAAQ,IAAI,KAAA,CAC5B,CAAC;CAEhD,OAAO,YAAuC,KAAK,SACjD,GAAG,KAAK,YAAY;EAClB,MAAM,UAAW,IAAqD,IAAI;EAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;CACjD,CAAC,CACH;AACF"}
@@ -1,4 +1,4 @@
1
- import { defineMiddleware } from "../define/middleware.js";
1
+ import { middleware } from "../define/middleware.js";
2
2
  import { honoMw } from "./hono-mw.js";
3
3
  import { jwt as jwt$1 } from "hono/jwt";
4
4
  //#region src/middleware/jwt.ts
@@ -8,7 +8,7 @@ import { jwt as jwt$1 } from "hono/jwt";
8
8
  */
9
9
  function jwt(options) {
10
10
  const mw = honoMw(jwt$1(options));
11
- return defineMiddleware((ctx, next) => mw(ctx, async () => {
11
+ return middleware((ctx, next) => mw(ctx, async () => {
12
12
  const payload = ctx.var.jwtPayload;
13
13
  return next({ jwtPayload: payload });
14
14
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.js","names":[],"sources":["../../../src/middleware/jwt.ts"],"sourcesContent":["import { jwt as honoJwt } from \"hono/jwt\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport type { MiddlewareReturnFromParts, MiddlewareUnit } from \"../types/units.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport type JwtPayloadState<TPayload> = {\n jwtPayload: TPayload;\n};\n\nexport type JwtMiddlewareUnit<TPayload> = MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, JwtPayloadState<TPayload>>\n>;\n\nexport type JwtOptions = Parameters<typeof honoJwt>[0];\n\n/**\n * JWT auth middleware. Invalid or missing tokens return **401** (Hono).\n * Successfully decoded payload is placed in `ctx.state.jwtPayload`.\n */\nexport function jwt<TPayload = Record<string, unknown>>(\n options: JwtOptions,\n): JwtMiddlewareUnit<TPayload> {\n const mw = honoMw(honoJwt(options));\n return defineMiddleware<JwtPayloadState<TPayload>>((ctx, next) =>\n mw(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n }),\n );\n}\n"],"mappings":";;;;;;;;AAoBA,SAAgB,IACd,SAC6B;CAC7B,MAAM,KAAK,OAAO,MAAQ,OAAO,CAAC;CAClC,OAAO,kBAA6C,KAAK,SACvD,GAAG,KAAK,YAAY;EAClB,MAAM,UAAW,IAAqD,IAAI;EAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;CACjD,CAAC,CACH;AACF"}
1
+ {"version":3,"file":"jwt.js","names":[],"sources":["../../../src/middleware/jwt.ts"],"sourcesContent":["import { jwt as honoJwt } from \"hono/jwt\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport type { MiddlewareReturnFromParts, MiddlewareUnit } from \"../types/units.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport type JwtPayloadState<TPayload> = {\n jwtPayload: TPayload;\n};\n\nexport type JwtMiddlewareUnit<TPayload> = MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, JwtPayloadState<TPayload>>\n>;\n\nexport type JwtOptions = Parameters<typeof honoJwt>[0];\n\n/**\n * JWT auth middleware. Invalid or missing tokens return **401** (Hono).\n * Successfully decoded payload is placed in `ctx.state.jwtPayload`.\n */\nexport function jwt<TPayload = Record<string, unknown>>(\n options: JwtOptions,\n): JwtMiddlewareUnit<TPayload> {\n const mw = honoMw(honoJwt(options));\n return middleware<JwtPayloadState<TPayload>>((ctx, next) =>\n mw(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n }),\n );\n}\n"],"mappings":";;;;;;;;AAoBA,SAAgB,IACd,SAC6B;CAC7B,MAAM,KAAK,OAAO,MAAQ,OAAO,CAAC;CAClC,OAAO,YAAuC,KAAK,SACjD,GAAG,KAAK,YAAY;EAClB,MAAM,UAAW,IAAqD,IAAI;EAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;CACjD,CAAC,CACH;AACF"}
@@ -1,3 +1,3 @@
1
1
  import { secureHeaders as honoSecureHeaders } from 'hono/secure-headers';
2
- export declare function secureHeaders(...args: Parameters<typeof honoSecureHeaders>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
2
+ export declare function secureHeaders(...args: Parameters<typeof honoSecureHeaders>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
3
3
  export type SecureHeadersOptions = NonNullable<Parameters<typeof honoSecureHeaders>[0]>;
@@ -1,9 +1,9 @@
1
- import { defineMiddleware } from "../define/middleware.js";
1
+ import { middleware } from "../define/middleware.js";
2
2
  import { honoMw } from "./hono-mw.js";
3
3
  import { secureHeaders as secureHeaders$1 } from "hono/secure-headers";
4
4
  //#region src/middleware/secure-headers.ts
5
5
  function secureHeaders(...args) {
6
- return defineMiddleware(honoMw(secureHeaders$1(...args)));
6
+ return middleware(honoMw(secureHeaders$1(...args)));
7
7
  }
8
8
  //#endregion
9
9
  export { secureHeaders };
@@ -1 +1 @@
1
- {"version":3,"file":"secure-headers.js","names":[],"sources":["../../../src/middleware/secure-headers.ts"],"sourcesContent":["import { secureHeaders as honoSecureHeaders } from \"hono/secure-headers\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function secureHeaders(...args: Parameters<typeof honoSecureHeaders>) {\n return defineMiddleware(honoMw(honoSecureHeaders(...args)));\n}\n\nexport type SecureHeadersOptions = NonNullable<Parameters<typeof honoSecureHeaders>[0]>;\n"],"mappings":";;;;AAKA,SAAgB,cAAc,GAAG,MAA4C;CAC3E,OAAO,iBAAiB,OAAO,gBAAkB,GAAG,IAAI,CAAC,CAAC;AAC5D"}
1
+ {"version":3,"file":"secure-headers.js","names":[],"sources":["../../../src/middleware/secure-headers.ts"],"sourcesContent":["import { secureHeaders as honoSecureHeaders } from \"hono/secure-headers\";\n\nimport { middleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function secureHeaders(...args: Parameters<typeof honoSecureHeaders>) {\n return middleware(honoMw(honoSecureHeaders(...args)));\n}\n\nexport type SecureHeadersOptions = NonNullable<Parameters<typeof honoSecureHeaders>[0]>;\n"],"mappings":";;;;AAKA,SAAgB,cAAc,GAAG,MAA4C;CAC3E,OAAO,WAAW,OAAO,gBAAkB,GAAG,IAAI,CAAC,CAAC;AACtD"}
@@ -1,3 +1,3 @@
1
1
  import { timing as honoTiming } from 'hono/timing';
2
- export declare function timing(...args: Parameters<typeof honoTiming>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
2
+ export declare function timing(...args: Parameters<typeof honoTiming>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Promise<Response>, unknown, unknown, unknown, {}, null, {}>;
3
3
  export type TimingOptions = NonNullable<Parameters<typeof honoTiming>[0]>;