@taserjs/router 0.1.13 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/README.md +5 -5
  2. package/dist/builder-BNkN_JKi.cjs +284 -0
  3. package/dist/builder-DObEWeC0.js +227 -0
  4. package/dist/builder-DObEWeC0.js.map +1 -0
  5. package/dist/hono-Ddk3waH-.cjs +42 -0
  6. package/dist/hono-kDZSomjd.js +39 -0
  7. package/dist/hono-kDZSomjd.js.map +1 -0
  8. package/dist/index.cjs +60 -0
  9. package/dist/index.d.cts +105 -0
  10. package/dist/index.d.cts.map +1 -0
  11. package/dist/index.d.ts +105 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +14 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/middleware/body-limit.cjs +15 -0
  16. package/dist/middleware/body-limit.d.cts +11 -0
  17. package/dist/middleware/body-limit.d.cts.map +1 -0
  18. package/dist/middleware/body-limit.d.ts +11 -0
  19. package/dist/middleware/body-limit.d.ts.map +1 -0
  20. package/dist/middleware/body-limit.js +16 -0
  21. package/dist/middleware/body-limit.js.map +1 -0
  22. package/dist/middleware/compress.cjs +10 -0
  23. package/dist/middleware/compress.d.cts +8 -0
  24. package/dist/middleware/compress.d.cts.map +1 -0
  25. package/dist/middleware/compress.d.ts +8 -0
  26. package/dist/middleware/compress.d.ts.map +1 -0
  27. package/dist/middleware/compress.js +10 -0
  28. package/dist/middleware/compress.js.map +1 -0
  29. package/dist/middleware/cookie.cjs +87 -0
  30. package/dist/middleware/cookie.d.cts +26 -0
  31. package/dist/middleware/cookie.d.cts.map +1 -0
  32. package/dist/middleware/cookie.d.ts +26 -0
  33. package/dist/middleware/cookie.d.ts.map +1 -0
  34. package/dist/middleware/cookie.js +87 -0
  35. package/dist/middleware/cookie.js.map +1 -0
  36. package/dist/middleware/cors.cjs +9 -0
  37. package/dist/middleware/cors.d.cts +7 -0
  38. package/dist/middleware/cors.d.cts.map +1 -0
  39. package/dist/middleware/cors.d.ts +7 -0
  40. package/dist/middleware/cors.d.ts.map +1 -0
  41. package/dist/middleware/cors.js +10 -0
  42. package/dist/middleware/cors.js.map +1 -0
  43. package/dist/middleware/csrf.cjs +9 -0
  44. package/dist/middleware/csrf.d.cts +7 -0
  45. package/dist/middleware/csrf.d.cts.map +1 -0
  46. package/dist/middleware/csrf.d.ts +7 -0
  47. package/dist/middleware/csrf.d.ts.map +1 -0
  48. package/dist/middleware/csrf.js +10 -0
  49. package/dist/middleware/csrf.js.map +1 -0
  50. package/dist/middleware/etag.cjs +10 -0
  51. package/dist/middleware/etag.d.cts +8 -0
  52. package/dist/middleware/etag.d.cts.map +1 -0
  53. package/dist/middleware/etag.d.ts +8 -0
  54. package/dist/middleware/etag.d.ts.map +1 -0
  55. package/dist/middleware/etag.js +10 -0
  56. package/dist/middleware/etag.js.map +1 -0
  57. package/dist/middleware/index.cjs +39 -0
  58. package/dist/middleware/index.d.cts +11 -0
  59. package/dist/middleware/index.d.ts +11 -0
  60. package/dist/middleware/index.js +11 -0
  61. package/dist/middleware/jwk.cjs +12 -0
  62. package/dist/middleware/jwk.d.cts +9 -0
  63. package/dist/middleware/jwk.d.cts.map +1 -0
  64. package/dist/middleware/jwk.d.ts +9 -0
  65. package/dist/middleware/jwk.d.ts.map +1 -0
  66. package/dist/middleware/jwk.js +13 -0
  67. package/dist/middleware/jwk.js.map +1 -0
  68. package/dist/middleware/jwt.cjs +21 -0
  69. package/dist/middleware/jwt.d.cts +13 -0
  70. package/dist/middleware/jwt.d.cts.map +1 -0
  71. package/dist/middleware/jwt.d.ts +13 -0
  72. package/dist/middleware/jwt.d.ts.map +1 -0
  73. package/dist/middleware/jwt.js +17 -0
  74. package/dist/middleware/jwt.js.map +1 -0
  75. package/dist/middleware/secure-headers.cjs +10 -0
  76. package/dist/middleware/secure-headers.d.cts +8 -0
  77. package/dist/middleware/secure-headers.d.cts.map +1 -0
  78. package/dist/middleware/secure-headers.d.ts +8 -0
  79. package/dist/middleware/secure-headers.d.ts.map +1 -0
  80. package/dist/middleware/secure-headers.js +10 -0
  81. package/dist/middleware/secure-headers.js.map +1 -0
  82. package/dist/middleware/timing.cjs +13 -0
  83. package/dist/middleware/timing.d.cts +8 -0
  84. package/dist/middleware/timing.d.cts.map +1 -0
  85. package/dist/middleware/timing.d.ts +8 -0
  86. package/dist/middleware/timing.d.ts.map +1 -0
  87. package/dist/middleware/timing.js +10 -0
  88. package/dist/middleware/timing.js.map +1 -0
  89. package/dist/reply.cjs +128 -0
  90. package/dist/reply.d.cts +2 -0
  91. package/dist/reply.d.ts +2 -0
  92. package/dist/reply.js +2 -0
  93. package/dist/stream.cjs +32 -0
  94. package/dist/stream.d.cts +2 -0
  95. package/dist/stream.d.ts +2 -0
  96. package/dist/stream.js +2 -0
  97. package/dist/types-BjPmu9B-.d.cts +294 -0
  98. package/dist/types-BjPmu9B-.d.cts.map +1 -0
  99. package/dist/types-COZ0UN-A.d.ts +294 -0
  100. package/dist/types-COZ0UN-A.d.ts.map +1 -0
  101. package/package.json +49 -107
  102. package/src/builder.ts +755 -0
  103. package/src/context.ts +11 -0
  104. package/src/hono.ts +75 -0
  105. package/src/index.ts +67 -49
  106. package/src/middleware/body-limit.ts +17 -5
  107. package/src/middleware/compress.ts +7 -6
  108. package/src/middleware/cookie.ts +128 -0
  109. package/src/middleware/cors.ts +5 -6
  110. package/src/middleware/csrf.ts +5 -6
  111. package/src/middleware/etag.ts +7 -6
  112. package/src/middleware/index.ts +35 -0
  113. package/src/middleware/jwk.ts +12 -46
  114. package/src/middleware/jwt.ts +21 -26
  115. package/src/middleware/secure-headers.ts +7 -6
  116. package/src/middleware/timing.ts +9 -6
  117. package/src/reply.ts +26 -1
  118. package/src/stream.ts +10 -1
  119. package/src/taser.ts +55 -0
  120. package/src/types.ts +810 -0
  121. package/dist/cjs/builder/app.cjs +0 -27
  122. package/dist/cjs/builder/app.cjs.map +0 -1
  123. package/dist/cjs/builder/app.d.cts +0 -11
  124. package/dist/cjs/builder/constants.cjs +0 -11
  125. package/dist/cjs/builder/constants.cjs.map +0 -1
  126. package/dist/cjs/builder/constants.d.cts +0 -3
  127. package/dist/cjs/builder/middleware-unit.cjs +0 -64
  128. package/dist/cjs/builder/middleware-unit.cjs.map +0 -1
  129. package/dist/cjs/builder/middleware-unit.d.cts +0 -34
  130. package/dist/cjs/builder/middleware.cjs +0 -20
  131. package/dist/cjs/builder/middleware.cjs.map +0 -1
  132. package/dist/cjs/builder/middleware.d.cts +0 -2
  133. package/dist/cjs/builder/normalize.cjs +0 -10
  134. package/dist/cjs/builder/normalize.cjs.map +0 -1
  135. package/dist/cjs/builder/normalize.d.cts +0 -2
  136. package/dist/cjs/builder/route.cjs +0 -83
  137. package/dist/cjs/builder/route.cjs.map +0 -1
  138. package/dist/cjs/builder/route.d.cts +0 -4
  139. package/dist/cjs/builder/router.cjs +0 -88
  140. package/dist/cjs/builder/router.cjs.map +0 -1
  141. package/dist/cjs/builder/router.d.cts +0 -26
  142. package/dist/cjs/builder/standalone.cjs +0 -30
  143. package/dist/cjs/builder/standalone.cjs.map +0 -1
  144. package/dist/cjs/builder/standalone.d.cts +0 -23
  145. package/dist/cjs/context/create-context.cjs +0 -8
  146. package/dist/cjs/context/create-context.cjs.map +0 -1
  147. package/dist/cjs/context/create-context.d.cts +0 -5
  148. package/dist/cjs/define/middleware.cjs +0 -22
  149. package/dist/cjs/define/middleware.cjs.map +0 -1
  150. package/dist/cjs/define/middleware.d.cts +0 -45
  151. package/dist/cjs/define/validators.cjs +0 -14
  152. package/dist/cjs/define/validators.cjs.map +0 -1
  153. package/dist/cjs/define/validators.d.cts +0 -8
  154. package/dist/cjs/index.cjs +0 -26
  155. package/dist/cjs/index.d.cts +0 -17
  156. package/dist/cjs/middleware/body-limit.cjs +0 -12
  157. package/dist/cjs/middleware/body-limit.cjs.map +0 -1
  158. package/dist/cjs/middleware/body-limit.d.cts +0 -3
  159. package/dist/cjs/middleware/compress.cjs +0 -12
  160. package/dist/cjs/middleware/compress.cjs.map +0 -1
  161. package/dist/cjs/middleware/compress.d.cts +0 -3
  162. package/dist/cjs/middleware/cors.cjs +0 -12
  163. package/dist/cjs/middleware/cors.cjs.map +0 -1
  164. package/dist/cjs/middleware/cors.d.cts +0 -3
  165. package/dist/cjs/middleware/csrf.cjs +0 -12
  166. package/dist/cjs/middleware/csrf.cjs.map +0 -1
  167. package/dist/cjs/middleware/csrf.d.cts +0 -3
  168. package/dist/cjs/middleware/etag.cjs +0 -12
  169. package/dist/cjs/middleware/etag.cjs.map +0 -1
  170. package/dist/cjs/middleware/etag.d.cts +0 -3
  171. package/dist/cjs/middleware/hono-mw.cjs +0 -23
  172. package/dist/cjs/middleware/hono-mw.cjs.map +0 -1
  173. package/dist/cjs/middleware/hono-mw.d.cts +0 -17
  174. package/dist/cjs/middleware/jwk.cjs +0 -30
  175. package/dist/cjs/middleware/jwk.cjs.map +0 -1
  176. package/dist/cjs/middleware/jwk.d.cts +0 -14
  177. package/dist/cjs/middleware/jwt.cjs +0 -20
  178. package/dist/cjs/middleware/jwt.cjs.map +0 -1
  179. package/dist/cjs/middleware/jwt.d.cts +0 -12
  180. package/dist/cjs/middleware/secure-headers.cjs +0 -12
  181. package/dist/cjs/middleware/secure-headers.cjs.map +0 -1
  182. package/dist/cjs/middleware/secure-headers.d.cts +0 -3
  183. package/dist/cjs/middleware/timing.cjs +0 -12
  184. package/dist/cjs/middleware/timing.cjs.map +0 -1
  185. package/dist/cjs/middleware/timing.d.cts +0 -3
  186. package/dist/cjs/reply.cjs +0 -9
  187. package/dist/cjs/reply.d.cts +0 -1
  188. package/dist/cjs/stream.cjs +0 -9
  189. package/dist/cjs/stream.d.cts +0 -1
  190. package/dist/cjs/types/app.d.cts +0 -29
  191. package/dist/cjs/types/index.d.cts +0 -297
  192. package/dist/cjs/types/returns.d.cts +0 -34
  193. package/dist/cjs/types/schema.d.cts +0 -14
  194. package/dist/cjs/types/type-utils.d.cts +0 -50
  195. package/dist/cjs/types/units.d.cts +0 -71
  196. package/dist/esm/builder/app.d.ts +0 -11
  197. package/dist/esm/builder/app.js +0 -26
  198. package/dist/esm/builder/app.js.map +0 -1
  199. package/dist/esm/builder/constants.d.ts +0 -3
  200. package/dist/esm/builder/constants.js +0 -11
  201. package/dist/esm/builder/constants.js.map +0 -1
  202. package/dist/esm/builder/middleware-unit.d.ts +0 -34
  203. package/dist/esm/builder/middleware-unit.js +0 -64
  204. package/dist/esm/builder/middleware-unit.js.map +0 -1
  205. package/dist/esm/builder/middleware.d.ts +0 -2
  206. package/dist/esm/builder/middleware.js +0 -20
  207. package/dist/esm/builder/middleware.js.map +0 -1
  208. package/dist/esm/builder/normalize.d.ts +0 -2
  209. package/dist/esm/builder/normalize.js +0 -10
  210. package/dist/esm/builder/normalize.js.map +0 -1
  211. package/dist/esm/builder/route.d.ts +0 -4
  212. package/dist/esm/builder/route.js +0 -83
  213. package/dist/esm/builder/route.js.map +0 -1
  214. package/dist/esm/builder/router.d.ts +0 -26
  215. package/dist/esm/builder/router.js +0 -87
  216. package/dist/esm/builder/router.js.map +0 -1
  217. package/dist/esm/builder/standalone.d.ts +0 -23
  218. package/dist/esm/builder/standalone.js +0 -29
  219. package/dist/esm/builder/standalone.js.map +0 -1
  220. package/dist/esm/context/create-context.d.ts +0 -5
  221. package/dist/esm/context/create-context.js +0 -8
  222. package/dist/esm/context/create-context.js.map +0 -1
  223. package/dist/esm/define/middleware.d.ts +0 -45
  224. package/dist/esm/define/middleware.js +0 -22
  225. package/dist/esm/define/middleware.js.map +0 -1
  226. package/dist/esm/define/validators.d.ts +0 -8
  227. package/dist/esm/define/validators.js +0 -14
  228. package/dist/esm/define/validators.js.map +0 -1
  229. package/dist/esm/index.d.ts +0 -17
  230. package/dist/esm/index.js +0 -7
  231. package/dist/esm/middleware/body-limit.d.ts +0 -3
  232. package/dist/esm/middleware/body-limit.js +0 -11
  233. package/dist/esm/middleware/body-limit.js.map +0 -1
  234. package/dist/esm/middleware/compress.d.ts +0 -3
  235. package/dist/esm/middleware/compress.js +0 -11
  236. package/dist/esm/middleware/compress.js.map +0 -1
  237. package/dist/esm/middleware/cors.d.ts +0 -3
  238. package/dist/esm/middleware/cors.js +0 -11
  239. package/dist/esm/middleware/cors.js.map +0 -1
  240. package/dist/esm/middleware/csrf.d.ts +0 -3
  241. package/dist/esm/middleware/csrf.js +0 -11
  242. package/dist/esm/middleware/csrf.js.map +0 -1
  243. package/dist/esm/middleware/etag.d.ts +0 -3
  244. package/dist/esm/middleware/etag.js +0 -11
  245. package/dist/esm/middleware/etag.js.map +0 -1
  246. package/dist/esm/middleware/hono-mw.d.ts +0 -17
  247. package/dist/esm/middleware/hono-mw.js +0 -23
  248. package/dist/esm/middleware/hono-mw.js.map +0 -1
  249. package/dist/esm/middleware/jwk.d.ts +0 -14
  250. package/dist/esm/middleware/jwk.js +0 -29
  251. package/dist/esm/middleware/jwk.js.map +0 -1
  252. package/dist/esm/middleware/jwt.d.ts +0 -12
  253. package/dist/esm/middleware/jwt.js +0 -19
  254. package/dist/esm/middleware/jwt.js.map +0 -1
  255. package/dist/esm/middleware/secure-headers.d.ts +0 -3
  256. package/dist/esm/middleware/secure-headers.js +0 -11
  257. package/dist/esm/middleware/secure-headers.js.map +0 -1
  258. package/dist/esm/middleware/timing.d.ts +0 -3
  259. package/dist/esm/middleware/timing.js +0 -11
  260. package/dist/esm/middleware/timing.js.map +0 -1
  261. package/dist/esm/reply.d.ts +0 -1
  262. package/dist/esm/reply.js +0 -1
  263. package/dist/esm/stream.d.ts +0 -1
  264. package/dist/esm/stream.js +0 -1
  265. package/dist/esm/types/app.d.ts +0 -29
  266. package/dist/esm/types/index.d.ts +0 -297
  267. package/dist/esm/types/returns.d.ts +0 -34
  268. package/dist/esm/types/schema.d.ts +0 -14
  269. package/dist/esm/types/type-utils.d.ts +0 -50
  270. package/dist/esm/types/units.d.ts +0 -71
  271. package/src/builder/app.ts +0 -39
  272. package/src/builder/constants.ts +0 -4
  273. package/src/builder/middleware-unit.ts +0 -71
  274. package/src/builder/middleware.ts +0 -23
  275. package/src/builder/normalize.ts +0 -13
  276. package/src/builder/route.ts +0 -137
  277. package/src/builder/router.ts +0 -144
  278. package/src/builder/standalone.ts +0 -79
  279. package/src/context/create-context.ts +0 -19
  280. package/src/define/middleware.ts +0 -214
  281. package/src/define/validators.ts +0 -22
  282. package/src/middleware/hono-mw.ts +0 -27
  283. package/src/types/app.ts +0 -48
  284. package/src/types/index.ts +0 -801
  285. package/src/types/returns.ts +0 -61
  286. package/src/types/schema.ts +0 -21
  287. package/src/types/type-utils.ts +0 -90
  288. package/src/types/units.ts +0 -314
@@ -0,0 +1,294 @@
1
+ import { BodyMode, TypedResponse, ValidationFacet } from "@taserjs/utils";
2
+ import { StandardSchemaV1 as StandardSchemaV1$1 } from "@standard-schema/spec";
3
+ import { RequestHeader } from "hono/utils/headers";
4
+ //#region src/types.d.ts
5
+ type HeaderKey = RequestHeader | (string & {});
6
+ interface TaserHeaders extends Headers {
7
+ get(name: HeaderKey): string | null;
8
+ has(name: HeaderKey): boolean;
9
+ }
10
+ type StatusCode = number;
11
+ interface RouteBodySchema {
12
+ readonly schema: StandardSchemaV1$1;
13
+ readonly mode?: BodyMode | undefined;
14
+ }
15
+ interface RouteSchemas {
16
+ params?: StandardSchemaV1$1 | undefined;
17
+ query?: StandardSchemaV1$1 | undefined;
18
+ body?: RouteBodySchema | undefined;
19
+ returns?: Record<StatusCode, StandardSchemaV1$1> | undefined;
20
+ }
21
+ type StandardHttpMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "OPTIONS" | "HEAD" | "QUERY";
22
+ type HttpMethod = StandardHttpMethod | "ALL" | "ANY";
23
+ type HttpNoBodyMethod = "GET" | "HEAD";
24
+ type Simplify<T> = unknown extends T ? T : T extends ((...args: any[]) => any) ? T : T extends readonly any[] ? T : { [K in keyof T]: T[K]; } & {};
25
+ type ExtractParamName<T extends string> = T extends `:${infer P}` ? P : never;
26
+ type ExtractPathSegments<T extends string> = T extends `/${infer Rest}` ? ExtractPathSegments<Rest> : T extends `${infer Segment}/${infer Rest}` ? Segment | ExtractPathSegments<Rest> : T extends "" ? never : T;
27
+ type HasWildcard<T extends string> = string extends T ? false : T extends `${string}*${string}` ? true : false;
28
+ type ParamsFromSegments<T extends string> = Simplify<{ [K in ExtractPathSegments<T> as ExtractParamName<K>]: string; }>;
29
+ type RouteDefaultParams<TPath extends string = string> = string extends TPath ? Record<string, string> : Simplify<(HasWildcard<TPath> extends true ? {
30
+ _splat: string;
31
+ } : {}) & ParamsFromSegments<TPath>>;
32
+ interface TaserRequest<TParams = {}, TQuery = {}, TBody = unknown> {
33
+ params: Simplify<TParams>;
34
+ query: Simplify<TQuery>;
35
+ headers: TaserHeaders;
36
+ method: string;
37
+ url: string;
38
+ path: string;
39
+ raw: Request;
40
+ body: TBody;
41
+ }
42
+ interface RouterRegister {}
43
+ type RegisteredRoutePath = RouterRegister extends {
44
+ RoutePath: infer P extends string;
45
+ } ? [P] extends [never] ? string : P : string;
46
+ type RegisteredLayoutId = RouterRegister extends {
47
+ LayoutTree: infer LT;
48
+ } ? [keyof LT] extends [never] ? never : keyof LT & string : never;
49
+ type InferredAppContext = RouterRegister extends {
50
+ AppContext: infer C;
51
+ } ? C : {};
52
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
53
+ type SafeIntersect<U> = [U] extends [never] ? {} : Simplify<UnionToIntersection<U>>;
54
+ type Overwrite<T, U> = unknown extends U ? T : [U] extends [never] ? T : Simplify<Omit<T, keyof U> & U>;
55
+ type DistributeServices<T> = T extends {
56
+ readonly _services?: infer S;
57
+ } ? [S] extends [never] ? {} : NonNullable<S> : {};
58
+ type DistributeState<T> = T extends {
59
+ readonly _state?: infer St;
60
+ } ? [St] extends [never] ? {} : NonNullable<St> : {};
61
+ type InferServicesFromMw<T> = T extends ((args: any, next: any) => infer R) ? DistributeServices<Awaited<R>> : T extends {
62
+ readonly _services?: infer S;
63
+ } ? [S] extends [never] ? {} : NonNullable<S> : {};
64
+ type InferStateFromMw<T> = T extends ((args: any, next: any) => infer R) ? DistributeState<Awaited<R>> : T extends {
65
+ readonly _state?: infer St;
66
+ } ? [St] extends [never] ? {} : NonNullable<St> : {};
67
+ type ExtractServicesFromMiddleware<TMw> = TMw extends {
68
+ readonly _services?: infer S;
69
+ } ? NonNullable<S> : TMw extends MiddlewareDefinition<infer S, any, any, any, any> ? NonNullable<S> : {};
70
+ type ExtractStateFromMiddleware<TMw> = TMw extends {
71
+ readonly _state?: infer St;
72
+ } ? NonNullable<St> : TMw extends MiddlewareDefinition<any, infer St, any, any, any> ? NonNullable<St> : {};
73
+ type ExtractParamsFromMiddleware<TMw> = TMw extends {
74
+ readonly _params?: infer P;
75
+ } ? [P] extends [never] ? {} : unknown extends P ? {} : NonNullable<P> : TMw extends MiddlewareDefinition<any, any, infer P, any, any> ? [P] extends [never] ? {} : unknown extends P ? {} : NonNullable<P> : {};
76
+ type ExtractQueryFromMiddleware<TMw> = TMw extends {
77
+ readonly _query?: infer Q;
78
+ } ? [Q] extends [never] ? {} : unknown extends Q ? {} : NonNullable<Q> : TMw extends MiddlewareDefinition<any, any, any, infer Q, any> ? [Q] extends [never] ? {} : unknown extends Q ? {} : NonNullable<Q> : {};
79
+ type ExtractBodyFromMiddleware<TMw> = TMw extends {
80
+ readonly _body?: infer B;
81
+ } ? [B] extends [never] ? unknown : unknown extends B ? unknown : NonNullable<B> : TMw extends MiddlewareDefinition<any, any, any, any, infer B> ? [B] extends [never] ? unknown : unknown extends B ? unknown : NonNullable<B> : unknown;
82
+ type ExtractServicesFromLayout<TLayout> = TLayout extends {
83
+ readonly _services?: infer S;
84
+ } ? NonNullable<S> : TLayout extends LayoutDefinition<any, infer S, any, any, any, any> ? NonNullable<S> : TLayout extends {
85
+ readonly middlewares: readonly (infer M)[];
86
+ } ? ExtractServicesFromMiddleware<M> : {};
87
+ type ExtractStateFromLayout<TLayout> = TLayout extends {
88
+ readonly _state?: infer St;
89
+ } ? NonNullable<St> : TLayout extends LayoutDefinition<any, any, infer St, any, any, any> ? NonNullable<St> : TLayout extends {
90
+ readonly middlewares: readonly (infer M)[];
91
+ } ? ExtractStateFromMiddleware<M> : {};
92
+ type NormalizeFacet<T> = unknown extends T ? {} : [T] extends [never] ? {} : NonNullable<T>;
93
+ type ExtractParamsFromLayout<TLayout> = TLayout extends {
94
+ readonly _params?: infer P;
95
+ } ? NormalizeFacet<P> : TLayout extends LayoutDefinition<any, any, any, infer P, any, any> ? NormalizeFacet<P> : TLayout extends {
96
+ readonly middlewares: readonly (infer M)[];
97
+ } ? ExtractParamsFromMiddleware<M> : {};
98
+ type ExtractQueryFromLayout<TLayout> = TLayout extends {
99
+ readonly _query?: infer Q;
100
+ } ? NormalizeFacet<Q> : TLayout extends LayoutDefinition<any, any, any, any, infer Q, any> ? NormalizeFacet<Q> : TLayout extends {
101
+ readonly middlewares: readonly (infer M)[];
102
+ } ? ExtractQueryFromMiddleware<M> : {};
103
+ type ExtractBodyFromLayout<TLayout> = TLayout extends {
104
+ readonly _body?: infer B;
105
+ } ? NormalizeFacet<B> : TLayout extends LayoutDefinition<any, any, any, any, any, infer B> ? NormalizeFacet<B> : TLayout extends {
106
+ readonly middlewares: readonly (infer M)[];
107
+ } ? ExtractBodyFromMiddleware<M> : {};
108
+ type GetRouteLayoutIds<TPath extends string, TMethod extends HttpMethod> = RouterRegister extends {
109
+ RouteByPathMethod: infer R;
110
+ } ? TPath extends keyof R ? TMethod extends keyof R[TPath] ? R[TPath][TMethod] extends {
111
+ layouts: infer L;
112
+ } ? L extends readonly (infer Id)[] ? [Id] extends [string] ? Id : never : L extends (infer Id)[] ? [Id] extends [string] ? Id : never : never : never : never : never : never;
113
+ type GetLayoutServices<LId extends string> = [LId] extends [never] ? never : RouterRegister extends {
114
+ LayoutTree: infer LT;
115
+ } ? LId extends keyof LT ? ExtractServicesFromLayout<LT[LId]> : {} : {};
116
+ type GetLayoutState<LId extends string> = [LId] extends [never] ? never : RouterRegister extends {
117
+ LayoutTree: infer LT;
118
+ } ? LId extends keyof LT ? ExtractStateFromLayout<LT[LId]> : {} : {};
119
+ type InferRouteServices<TPath extends string, TMethod extends HttpMethod> = SafeIntersect<GetLayoutServices<GetRouteLayoutIds<TPath, TMethod>>>;
120
+ type InferRouteState<TPath extends string, TMethod extends HttpMethod> = SafeIntersect<GetLayoutState<GetRouteLayoutIds<TPath, TMethod>>>;
121
+ type GetLayoutParams<LId extends string> = [LId] extends [never] ? never : RouterRegister extends {
122
+ LayoutTree: infer LT;
123
+ } ? LId extends keyof LT ? ExtractParamsFromLayout<LT[LId]> : {} : {};
124
+ type GetLayoutQuery<LId extends string> = [LId] extends [never] ? never : RouterRegister extends {
125
+ LayoutTree: infer LT;
126
+ } ? LId extends keyof LT ? ExtractQueryFromLayout<LT[LId]> : {} : {};
127
+ type GetLayoutBody<LId extends string> = [LId] extends [never] ? never : RouterRegister extends {
128
+ LayoutTree: infer LT;
129
+ } ? LId extends keyof LT ? ExtractBodyFromLayout<LT[LId]> : {} : {};
130
+ type InferRouteParams<TPath extends string, TMethod extends HttpMethod> = Simplify<Omit<SafeIntersect<GetLayoutParams<GetRouteLayoutIds<TPath, TMethod>>>, "_splat">>;
131
+ type InferRouteQuery<TPath extends string, TMethod extends HttpMethod> = SafeIntersect<GetLayoutQuery<GetRouteLayoutIds<TPath, TMethod>>>;
132
+ type InferRouteBody<TPath extends string, TMethod extends HttpMethod> = SafeIntersect<GetLayoutBody<GetRouteLayoutIds<TPath, TMethod>>>;
133
+ type GetParentLayoutIds<LId extends string> = RouterRegister extends {
134
+ LayoutHierarchy: infer LH;
135
+ } ? LId extends keyof LH ? LH[LId] extends readonly (infer Id)[] ? [Id] extends [string] ? Id : never : never : never : never;
136
+ type InferLayoutState<TPath extends string> = SafeIntersect<GetLayoutState<GetParentLayoutIds<TPath>>>;
137
+ type InferLayoutServices<TPath extends string> = SafeIntersect<GetLayoutServices<GetParentLayoutIds<TPath>>>;
138
+ type InferLayoutParams<TPath extends string> = Simplify<Omit<SafeIntersect<GetLayoutParams<GetParentLayoutIds<TPath>>>, "_splat">>;
139
+ type InferLayoutQuery<TPath extends string> = SafeIntersect<GetLayoutQuery<GetParentLayoutIds<TPath>>>;
140
+ type InferLayoutBody<TPath extends string> = SafeIntersect<GetLayoutBody<GetParentLayoutIds<TPath>>>;
141
+ type InferLayoutBranchState<LId extends string | undefined> = [LId] extends [undefined] ? {} : [LId] extends [never] ? {} : SafeIntersect<GetLayoutState<NonNullable<LId> | GetParentLayoutIds<NonNullable<LId>>>>;
142
+ type InferLayoutBranchServices<LId extends string | undefined> = [LId] extends [undefined] ? {} : [LId] extends [never] ? {} : SafeIntersect<GetLayoutServices<NonNullable<LId> | GetParentLayoutIds<NonNullable<LId>>>>;
143
+ type InferLayoutBranchParams<LId extends string | undefined> = Simplify<[LId] extends [undefined] ? {
144
+ _splat: string;
145
+ } : [LId] extends [never] ? {
146
+ _splat: string;
147
+ } : RouteDefaultParams<NonNullable<LId>> & SafeIntersect<GetLayoutParams<NonNullable<LId> | GetParentLayoutIds<NonNullable<LId>>>>>;
148
+ interface MiddlewarePreconditions {
149
+ state?: Record<string, any> | undefined;
150
+ services?: Record<string, any> | undefined;
151
+ params?: Record<string, any> | undefined;
152
+ query?: Record<string, any> | undefined;
153
+ body?: any;
154
+ }
155
+ type InferEffectiveParams<TPath extends string, TMethod extends HttpMethod, TRouteParams = unknown> = Simplify<(HasWildcard<TPath> extends true ? {
156
+ _splat: string;
157
+ } : {}) & ([keyof InferRouteParams<TPath, TMethod>] extends [never] ? TRouteParams : [TRouteParams] extends [RouteDefaultParams<TPath>] ? Overwrite<RouteDefaultParams<TPath>, InferRouteParams<TPath, TMethod>> : Overwrite<InferRouteParams<TPath, TMethod>, TRouteParams>)>;
158
+ type InferEffectiveQuery<TPath extends string, TMethod extends HttpMethod, TRouteQuery = unknown> = Simplify<Overwrite<InferRouteQuery<TPath, TMethod>, TRouteQuery>>;
159
+ type InferEffectiveBody<TPath extends string, TMethod extends HttpMethod, TRouteBody = unknown> = [TMethod] extends [HttpNoBodyMethod] ? never : Simplify<Overwrite<InferRouteBody<TPath, TMethod>, TRouteBody>>;
160
+ type RouteHandlerArgs<TParams = {}, TQuery = {}, TBody = unknown, TServices = {}, TState = {}> = Simplify<{
161
+ req: Simplify<TaserRequest<Simplify<TParams>, Simplify<TQuery>, TBody>>;
162
+ ctx: InferredAppContext;
163
+ state: [keyof TState] extends [never] ? {} : Simplify<TState>;
164
+ } & TServices>;
165
+ type RouteHandler<TParams = {}, TQuery = {}, TBody = unknown, TServices = {}, TState = {}, TReturn extends Response | Promise<Response> = Response | Promise<Response>> = (args: RouteHandlerArgs<TParams, TQuery, TBody, TServices, TState>) => TReturn;
166
+ interface MiddlewareResponse<TServices = {}, TState = {}> extends Response {
167
+ readonly _services?: TServices;
168
+ readonly _state?: TState;
169
+ }
170
+ interface NextFunction {
171
+ <TState extends Record<string, unknown> = {}>(state?: TState): Promise<MiddlewareResponse<{}, TState>>;
172
+ provide<TServices extends Record<string, unknown>, TState extends Record<string, unknown> = {}>(services: TServices, state?: TState): Promise<MiddlewareResponse<TServices, TState>>;
173
+ }
174
+ type MiddlewareArgs<TServices = {}, TState = {}, TParams = {}, TQuery = {}, TBody = unknown> = Simplify<{
175
+ req: Simplify<TaserRequest<Simplify<TParams & {
176
+ _splat: string;
177
+ }>, Simplify<TQuery>, TBody>>;
178
+ ctx: InferredAppContext;
179
+ state: [keyof TState] extends [never] ? Record<string, unknown> : Simplify<TState>;
180
+ } & TServices>;
181
+ type MiddlewareHandler<TServices = Record<string, any>, TState = Record<string, unknown>, TParams = Record<string, string>, TQuery = Record<string, string | string[]>, TBody = unknown> = (args: MiddlewareArgs<TServices, TState, TParams, TQuery, TBody>, next: NextFunction) => Response | Promise<Response> | MiddlewareResponse<any, any> | Promise<MiddlewareResponse<any, any>>;
182
+ interface MiddlewareDefinition<TServices = {}, TState = {}, TParams = unknown, TQuery = unknown, TBody = unknown, TLayoutId extends string | undefined = undefined, TRequires extends MiddlewarePreconditions = {}> {
183
+ readonly kind: "middleware";
184
+ readonly handler: MiddlewareHandler<any, any, any, any, any>;
185
+ readonly schemas?: RouteSchemas | undefined;
186
+ readonly layoutId?: string | undefined;
187
+ readonly _services?: TServices;
188
+ readonly _state?: TState;
189
+ readonly _params?: TParams;
190
+ readonly _query?: TQuery;
191
+ readonly _body?: TBody;
192
+ readonly _layoutId?: TLayoutId;
193
+ readonly _requires?: TRequires;
194
+ }
195
+ type MiddlewareInput = MiddlewareHandler | MiddlewareDefinition<any, any, any, any, any, any, any>;
196
+ interface LayoutDefinition<TPath extends string = string, TServices = {}, TState = {}, TParams = unknown, TQuery = unknown, TBody = unknown> {
197
+ readonly kind: "layout";
198
+ readonly path: TPath;
199
+ readonly middlewares: readonly MiddlewareDefinition<any, any, any, any, any, any, any>[];
200
+ readonly schemas?: RouteSchemas | undefined;
201
+ readonly _services?: TServices;
202
+ readonly _state?: TState;
203
+ readonly _params?: TParams;
204
+ readonly _query?: TQuery;
205
+ readonly _body?: TBody;
206
+ }
207
+ interface RouteDefinition<TPath extends string = string, TParams = any, TQuery = any, TBody = any, TReturns = any, THandlerReturn = any, TParamsIn = TParams, TQueryIn = TQuery, TBodyIn = TBody> {
208
+ readonly kind: "route";
209
+ readonly method: HttpMethod;
210
+ readonly methods?: readonly string[] | undefined;
211
+ readonly path: TPath;
212
+ readonly middlewares?: readonly MiddlewareDefinition<any, any, any, any, any, any, any>[] | undefined;
213
+ readonly handler: RouteHandler<any, any, any, any, any>;
214
+ readonly schemas?: RouteSchemas | undefined;
215
+ readonly returns?: Record<StatusCode, StandardSchemaV1$1> | undefined;
216
+ readonly $Infer?: {
217
+ Params: TParams;
218
+ Query: TQuery;
219
+ Body: TBody;
220
+ ParamsIn: TParamsIn;
221
+ QueryIn: TQueryIn;
222
+ BodyIn: TBodyIn;
223
+ Returns: TReturns;
224
+ HandlerReturn: THandlerReturn;
225
+ Input: {
226
+ params: TParamsIn;
227
+ query: TQueryIn;
228
+ body: TBodyIn;
229
+ };
230
+ Output: TReturns;
231
+ };
232
+ }
233
+ type ExtractPreconditionsFromMiddleware<TMw> = TMw extends {
234
+ readonly _requires?: infer R;
235
+ } ? [R] extends [MiddlewarePreconditions] ? R : {} : {};
236
+ type ExtractLayoutIdFromMiddleware<TMw> = TMw extends {
237
+ readonly _layoutId?: infer L;
238
+ } ? [L] extends [string] ? L : undefined : undefined;
239
+ type IsBranchAllowedForLayout<TCurrentLayoutPath extends string, TTargetLayoutId extends string | undefined> = [TTargetLayoutId] extends [undefined] ? true : [TTargetLayoutId] extends [never] ? true : string extends TTargetLayoutId ? true : string extends TCurrentLayoutPath ? true : TTargetLayoutId extends TCurrentLayoutPath ? true : RouterRegister extends {
240
+ LayoutHierarchy: infer LH;
241
+ } ? TCurrentLayoutPath extends keyof LH ? TTargetLayoutId extends GetParentLayoutIds<TCurrentLayoutPath> ? true : false : false : true;
242
+ type IsBranchAllowedForRoute<TRoutePath extends string, TMethod extends HttpMethod, TTargetLayoutId extends string | undefined> = [TTargetLayoutId] extends [undefined] ? true : [TTargetLayoutId] extends [never] ? true : string extends TTargetLayoutId ? true : string extends TRoutePath ? true : RouterRegister extends {
243
+ RouteByPathMethod: infer R;
244
+ } ? TRoutePath extends keyof R ? TMethod extends keyof R[TRoutePath] ? TTargetLayoutId extends GetRouteLayoutIds<TRoutePath, TMethod> ? true : false : false : false : true;
245
+ type CheckFacetPrecondition<TAvailable, TRequired> = [TRequired] extends [never] ? true : [TRequired] extends [undefined] ? true : unknown extends TRequired ? true : [Exclude<TRequired, undefined>] extends [never] ? true : [TAvailable] extends [never] ? false : TAvailable extends Exclude<TRequired, undefined> ? true : false;
246
+ type CheckMiddlewarePreconditions<TState, TServices, TParams, TQuery, TBody, TRequires extends MiddlewarePreconditions> = CheckFacetPrecondition<TState, TRequires["state"]> extends false ? false : CheckFacetPrecondition<TServices, TRequires["services"]> extends false ? false : CheckFacetPrecondition<TParams, TRequires["params"]> extends false ? false : CheckFacetPrecondition<TQuery, TRequires["query"]> extends false ? false : CheckFacetPrecondition<TBody, TRequires["body"]> extends false ? false : true;
247
+ type CompileError<TMessage extends string> = {
248
+ readonly __compile_error: TMessage;
249
+ } & never;
250
+ type NormalizeParams<T> = unknown extends T ? Record<string, string> : [T] extends [never] ? Record<string, string> : T;
251
+ type NormalizeQuery<T> = unknown extends T ? Record<string, string | string[]> : [T] extends [never] ? Record<string, string | string[]> : T;
252
+ type ValidateRouteMiddlewareUse<TPath extends string, TMethod extends HttpMethod, TParams, TQuery, TBody, TRouteServices, TRouteState, TMw> = IsBranchAllowedForRoute<TPath, TMethod, ExtractLayoutIdFromMiddleware<TMw>> extends false ? CompileError<`Cannot mount layout-scoped middleware: route "${TPath}" is outside layout branch "${NonNullable<ExtractLayoutIdFromMiddleware<TMw>>}"`> : CheckMiddlewarePreconditions<InferRouteState<TPath, TMethod> & TRouteState, InferRouteServices<TPath, TMethod> & TRouteServices, NormalizeParams<TParams>, NormalizeQuery<TQuery>, TBody, ExtractPreconditionsFromMiddleware<TMw>> extends false ? CompileError<`Cannot mount middleware: route does not satisfy declared preconditions`> : TMw;
253
+ type ValidateLayoutMiddlewareUse<TPath extends string, TParams, TQuery, TBody, TServices, TState, TMw> = IsBranchAllowedForLayout<TPath, ExtractLayoutIdFromMiddleware<TMw>> extends false ? CompileError<`Cannot mount layout-scoped middleware: layout "${TPath}" is outside layout branch "${NonNullable<ExtractLayoutIdFromMiddleware<TMw>>}"`> : CheckMiddlewarePreconditions<InferLayoutState<TPath> & TState, InferLayoutServices<TPath> & TServices, NormalizeParams<TParams>, NormalizeQuery<TQuery>, TBody, ExtractPreconditionsFromMiddleware<TMw>> extends false ? CompileError<`Cannot mount middleware: layout does not satisfy declared preconditions`> : TMw;
254
+ type ResolveMwParam<T, TReq> = unknown extends T ? [TReq] extends [undefined] ? Record<string, string> : NonNullable<TReq> : [T] extends [never] ? [TReq] extends [undefined] ? Record<string, string> : NonNullable<TReq> : T;
255
+ type ResolveMwQuery<T, TReq> = unknown extends T ? [TReq] extends [undefined] ? Record<string, string | string[]> : NonNullable<TReq> : [T] extends [never] ? [TReq] extends [undefined] ? Record<string, string | string[]> : NonNullable<TReq> : T;
256
+ type ResolveMwBody<T, TReq> = unknown extends T ? ([TReq] extends [undefined] ? unknown : TReq) : T;
257
+ type InferMiddlewareArgs<TLayoutId extends string | undefined, TParams, TQuery, TBody, TRequires extends MiddlewarePreconditions> = MiddlewareArgs<InferLayoutBranchServices<TLayoutId> & (TRequires extends {
258
+ services?: infer S;
259
+ } ? NonNullable<S> : {}), InferLayoutBranchState<TLayoutId> & (TRequires extends {
260
+ state?: infer St;
261
+ } ? NonNullable<St> : {}), ResolveMwParam<TParams, TRequires["params"]>, ResolveMwQuery<TQuery, TRequires["query"]>, ResolveMwBody<TBody, TRequires["body"]>>;
262
+ interface ContextOptions<TBoot extends Record<string, unknown> = {}, TRequest extends Record<string, unknown> = {}> {
263
+ boot?: (() => TBoot | Promise<TBoot>) | undefined;
264
+ request?: ((req: TaserRequest<any, any, any>) => TRequest | Promise<TRequest>) | undefined;
265
+ }
266
+ interface ContextDefinition<TBoot extends Record<string, unknown> = {}, TRequest extends Record<string, unknown> = {}> extends ContextOptions<TBoot, TRequest> {
267
+ readonly kind: "context";
268
+ }
269
+ type NotFoundHandler<TContext = {}> = (args: {
270
+ req: TaserRequest<any, any, any>;
271
+ ctx: TContext;
272
+ }) => Response | Promise<Response>;
273
+ type OnErrorHandler = (err: unknown, req: TaserRequest<any, any, any>) => Response | Promise<Response>;
274
+ interface ResponseOptions {
275
+ validate?: boolean | undefined;
276
+ }
277
+ type InferReturnsResponse<TReturns> = [TReturns] extends [undefined] ? Response : [TReturns] extends [never] ? Response : unknown extends TReturns ? Response : { [K in keyof TReturns & number]: TypedResponse<TReturns[K] extends StandardSchemaV1$1 ? StandardSchemaV1$1.InferOutput<TReturns[K]> : unknown, K>; }[keyof TReturns & number];
278
+ interface TaserAppOptions<TContext = {}> {
279
+ basePath?: string | undefined;
280
+ context?: ContextDefinition<any, any> | undefined;
281
+ notFound?: NotFoundHandler<TContext> | undefined;
282
+ onError?: OnErrorHandler | undefined;
283
+ response?: ResponseOptions | undefined;
284
+ }
285
+ interface TaserDefinition<TContext = {}> {
286
+ readonly _context?: TContext;
287
+ readonly $Infer: {
288
+ Context: TContext;
289
+ };
290
+ readonly options: TaserAppOptions<TContext>;
291
+ }
292
+ //#endregion
293
+ export { RouteDefinition as $, InferReturnsResponse as A, MiddlewareInput as B, InferLayoutBranchServices as C, InferLayoutServices as D, InferLayoutQuery as E, InferredAppContext as F, OnErrorHandler as G, MiddlewareResponse as H, LayoutDefinition as I, RegisteredRoutePath as J, Overwrite as K, MiddlewareArgs as L, InferRouteState as M, InferServicesFromMw as N, InferLayoutState as O, InferStateFromMw as P, RouteDefaultParams as Q, MiddlewareDefinition as R, InferLayoutBranchParams as S, InferLayoutParams as T, NextFunction as U, MiddlewarePreconditions as V, NotFoundHandler as W, ResponseOptions as X, RequestHeader as Y, RouteBodySchema as Z, HttpNoBodyMethod as _, DistributeState as a, Simplify as at, InferEffectiveQuery as b, ExtractParamsFromMiddleware as c, StatusCode as ct, ExtractServicesFromLayout as d, TaserHeaders as dt, RouteHandler as et, ExtractServicesFromMiddleware as f, TaserRequest as ft, HttpMethod as g, ValidationFacet as gt, HeaderKey as h, ValidateRouteMiddlewareUse as ht, DistributeServices as i, SafeIntersect as it, InferRouteServices as j, InferMiddlewareArgs as k, ExtractPreconditionsFromMiddleware as l, TaserAppOptions as lt, ExtractStateFromMiddleware as m, ValidateLayoutMiddlewareUse as mt, ContextDefinition as n, RouteSchemas as nt, ExtractBodyFromMiddleware as o, StandardHttpMethod as ot, ExtractStateFromLayout as p, UnionToIntersection as pt, RegisteredLayoutId as q, ContextOptions as r, RouterRegister as rt, ExtractLayoutIdFromMiddleware as s, StandardSchemaV1$1 as st, BodyMode as t, RouteHandlerArgs as tt, ExtractQueryFromMiddleware as u, TaserDefinition as ut, InferEffectiveBody as v, InferLayoutBranchState as w, InferLayoutBody as x, InferEffectiveParams as y, MiddlewareHandler as z };
294
+ //# sourceMappingURL=types-COZ0UN-A.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-COZ0UN-A.d.ts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,19 @@
1
1
  {
2
2
  "name": "@taserjs/router",
3
- "version": "0.1.13",
4
- "description": "Type-safe Node.js router with runtime validation and middleware",
3
+ "version": "0.2.0",
4
+ "description": "Type-safe route builder and middleware composition for Taser.js",
5
+ "keywords": [
6
+ "express",
7
+ "fastify",
8
+ "file-based-routing",
9
+ "hono",
10
+ "middleware",
11
+ "rest-api",
12
+ "standard-schema",
13
+ "taserjs",
14
+ "type-safe-api",
15
+ "typescript"
16
+ ],
5
17
  "license": "ISC",
6
18
  "repository": {
7
19
  "type": "git",
@@ -14,128 +26,58 @@
14
26
  ],
15
27
  "type": "module",
16
28
  "sideEffects": false,
17
- "main": "./dist/cjs/index.cjs",
18
- "module": "./dist/esm/index.js",
19
- "types": "./dist/esm/index.d.ts",
29
+ "main": "./dist/index.cjs",
30
+ "module": "./dist/index.js",
31
+ "types": "./dist/index.d.ts",
20
32
  "exports": {
21
33
  ".": {
22
34
  "import": {
23
- "types": "./dist/esm/index.d.ts",
24
- "default": "./dist/esm/index.js"
25
- },
26
- "require": {
27
- "types": "./dist/cjs/index.d.cts",
28
- "default": "./dist/cjs/index.cjs"
29
- }
30
- },
31
- "./reply": {
32
- "import": {
33
- "types": "./dist/esm/reply.d.ts",
34
- "default": "./dist/esm/reply.js"
35
- },
36
- "require": {
37
- "types": "./dist/cjs/reply.d.cts",
38
- "default": "./dist/cjs/reply.cjs"
39
- }
40
- },
41
- "./stream": {
42
- "import": {
43
- "types": "./dist/esm/stream.d.ts",
44
- "default": "./dist/esm/stream.js"
45
- },
46
- "require": {
47
- "types": "./dist/cjs/stream.d.cts",
48
- "default": "./dist/cjs/stream.cjs"
49
- }
50
- },
51
- "./body-limit": {
52
- "import": {
53
- "types": "./dist/esm/middleware/body-limit.d.ts",
54
- "default": "./dist/esm/middleware/body-limit.js"
55
- },
56
- "require": {
57
- "types": "./dist/cjs/middleware/body-limit.d.cts",
58
- "default": "./dist/cjs/middleware/body-limit.cjs"
59
- }
60
- },
61
- "./compress": {
62
- "import": {
63
- "types": "./dist/esm/middleware/compress.d.ts",
64
- "default": "./dist/esm/middleware/compress.js"
65
- },
66
- "require": {
67
- "types": "./dist/cjs/middleware/compress.d.cts",
68
- "default": "./dist/cjs/middleware/compress.cjs"
69
- }
70
- },
71
- "./cors": {
72
- "import": {
73
- "types": "./dist/esm/middleware/cors.d.ts",
74
- "default": "./dist/esm/middleware/cors.js"
75
- },
76
- "require": {
77
- "types": "./dist/cjs/middleware/cors.d.cts",
78
- "default": "./dist/cjs/middleware/cors.cjs"
79
- }
80
- },
81
- "./csrf": {
82
- "import": {
83
- "types": "./dist/esm/middleware/csrf.d.ts",
84
- "default": "./dist/esm/middleware/csrf.js"
85
- },
86
- "require": {
87
- "types": "./dist/cjs/middleware/csrf.d.cts",
88
- "default": "./dist/cjs/middleware/csrf.cjs"
89
- }
90
- },
91
- "./etag": {
92
- "import": {
93
- "types": "./dist/esm/middleware/etag.d.ts",
94
- "default": "./dist/esm/middleware/etag.js"
35
+ "types": "./dist/index.d.ts",
36
+ "default": "./dist/index.js"
95
37
  },
96
38
  "require": {
97
- "types": "./dist/cjs/middleware/etag.d.cts",
98
- "default": "./dist/cjs/middleware/etag.cjs"
39
+ "types": "./dist/index.d.cts",
40
+ "default": "./dist/index.cjs"
99
41
  }
100
42
  },
101
- "./jwk": {
43
+ "./middleware": {
102
44
  "import": {
103
- "types": "./dist/esm/middleware/jwk.d.ts",
104
- "default": "./dist/esm/middleware/jwk.js"
45
+ "types": "./dist/middleware/index.d.ts",
46
+ "default": "./dist/middleware/index.js"
105
47
  },
106
48
  "require": {
107
- "types": "./dist/cjs/middleware/jwk.d.cts",
108
- "default": "./dist/cjs/middleware/jwk.cjs"
49
+ "types": "./dist/middleware/index.d.cts",
50
+ "default": "./dist/middleware/index.cjs"
109
51
  }
110
52
  },
111
- "./jwt": {
53
+ "./middleware/*": {
112
54
  "import": {
113
- "types": "./dist/esm/middleware/jwt.d.ts",
114
- "default": "./dist/esm/middleware/jwt.js"
55
+ "types": "./dist/middleware/*.d.ts",
56
+ "default": "./dist/middleware/*.js"
115
57
  },
116
58
  "require": {
117
- "types": "./dist/cjs/middleware/jwt.d.cts",
118
- "default": "./dist/cjs/middleware/jwt.cjs"
59
+ "types": "./dist/middleware/*.d.cts",
60
+ "default": "./dist/middleware/*.cjs"
119
61
  }
120
62
  },
121
- "./secure-headers": {
63
+ "./reply": {
122
64
  "import": {
123
- "types": "./dist/esm/middleware/secure-headers.d.ts",
124
- "default": "./dist/esm/middleware/secure-headers.js"
65
+ "types": "./dist/reply.d.ts",
66
+ "default": "./dist/reply.js"
125
67
  },
126
68
  "require": {
127
- "types": "./dist/cjs/middleware/secure-headers.d.cts",
128
- "default": "./dist/cjs/middleware/secure-headers.cjs"
69
+ "types": "./dist/reply.d.cts",
70
+ "default": "./dist/reply.cjs"
129
71
  }
130
72
  },
131
- "./timing": {
73
+ "./stream": {
132
74
  "import": {
133
- "types": "./dist/esm/middleware/timing.d.ts",
134
- "default": "./dist/esm/middleware/timing.js"
75
+ "types": "./dist/stream.d.ts",
76
+ "default": "./dist/stream.js"
135
77
  },
136
78
  "require": {
137
- "types": "./dist/cjs/middleware/timing.d.cts",
138
- "default": "./dist/cjs/middleware/timing.cjs"
79
+ "types": "./dist/stream.d.cts",
80
+ "default": "./dist/stream.cjs"
139
81
  }
140
82
  },
141
83
  "./package.json": "./package.json"
@@ -147,23 +89,23 @@
147
89
  "dependencies": {
148
90
  "@standard-schema/spec": "^1.1.0",
149
91
  "hono": "^4.10.3",
150
- "@taserjs/router-core": "0.1.13",
151
- "@taserjs/router-utils": "0.1.13"
92
+ "@taserjs/utils": "0.2.0"
152
93
  },
153
94
  "devDependencies": {
154
- "@tanstack/vite-config": "^0.6.0",
155
95
  "publint": "^0.3.22",
156
- "vite": "^8.1.5",
157
- "vitest": "^4.1.10",
158
- "zod": "^4.4.3"
96
+ "rimraf": "^6.0.1",
97
+ "tsdown": "^0.23.0",
98
+ "typescript": "^5.9.3",
99
+ "vitest": "^4.1.10"
159
100
  },
160
101
  "engines": {
161
102
  "node": ">=20.19"
162
103
  },
163
104
  "scripts": {
164
105
  "clean": "rimraf dist",
165
- "build": "vite build && publint --strict",
106
+ "build": "tsdown",
166
107
  "typecheck": "tsc --noEmit -p tsconfig.json",
167
- "test": "vitest run"
108
+ "test": "vitest run",
109
+ "lint": "oxlint ."
168
110
  }
169
111
  }