@taserjs/router 0.1.12 → 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
@@ -1,79 +0,0 @@
1
- import type { AppContext, LayoutBuilder, RouteBuilder, RoutePath } from "../types/index.js";
2
- import type { HttpMethod } from "../types/units.js";
3
- import { createRouteBuilder } from "./route.js";
4
- import { createMiddleware } from "./middleware.js";
5
- import { middleware as createMiddlewareFn, type MiddlewareFn } from "../define/middleware.js";
6
-
7
- export type CreateWithoutBodyRoute<
8
- M extends "GET" | "DELETE" | "OPTIONS" | "HEAD",
9
- TAppContext extends Record<string, unknown> = AppContext,
10
- > = <const Path extends RoutePath>(
11
- path: Path,
12
- ) => RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
13
-
14
- export type CreateWithBodyRoute<
15
- M extends "POST" | "PUT" | "PATCH" | "QUERY",
16
- TAppContext extends Record<string, unknown> = AppContext,
17
- > = <const Path extends RoutePath>(
18
- path: Path,
19
- ) => RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
20
-
21
- export type CreateAnyRoute<TAppContext extends Record<string, unknown> = AppContext> = <
22
- const Path extends RoutePath,
23
- const Methods extends readonly HttpMethod[],
24
- >(
25
- path: Path,
26
- methods: Methods,
27
- ) => RouteBuilder<Path, Methods[number], readonly [], {}, {}, TAppContext>;
28
-
29
- export type CreateAllRoute<TAppContext extends Record<string, unknown> = AppContext> = <
30
- const Path extends RoutePath,
31
- >(
32
- path: Path,
33
- ) => RouteBuilder<Path, HttpMethod, readonly [], {}, {}, TAppContext>;
34
-
35
- function createWithoutBodyRoute<M extends "GET" | "DELETE" | "OPTIONS" | "HEAD">(
36
- method: M,
37
- ): CreateWithoutBodyRoute<M> {
38
- return ((path: string) =>
39
- createRouteBuilder(path, method)) as unknown as CreateWithoutBodyRoute<M>;
40
- }
41
-
42
- function createWithBodyRoute<M extends "POST" | "PUT" | "PATCH" | "QUERY">(
43
- method: M,
44
- ): CreateWithBodyRoute<M> {
45
- return ((path: string) => createRouteBuilder(path, method)) as unknown as CreateWithBodyRoute<M>;
46
- }
47
-
48
- export type TaserNamespace<TAppContext extends Record<string, unknown> = AppContext> = {
49
- readonly get: CreateWithoutBodyRoute<"GET", TAppContext>;
50
- readonly post: CreateWithBodyRoute<"POST", TAppContext>;
51
- readonly put: CreateWithBodyRoute<"PUT", TAppContext>;
52
- readonly patch: CreateWithBodyRoute<"PATCH", TAppContext>;
53
- readonly delete: CreateWithoutBodyRoute<"DELETE", TAppContext>;
54
- readonly options: CreateWithoutBodyRoute<"OPTIONS", TAppContext>;
55
- readonly head: CreateWithoutBodyRoute<"HEAD", TAppContext>;
56
- readonly query: CreateWithBodyRoute<"QUERY", TAppContext>;
57
- readonly any: CreateAnyRoute<TAppContext>;
58
- readonly all: CreateAllRoute<TAppContext>;
59
- readonly layout: LayoutBuilder<TAppContext>;
60
- readonly middleware: MiddlewareFn<TAppContext>;
61
- };
62
-
63
- export const middleware: MiddlewareFn<AppContext> = createMiddlewareFn as MiddlewareFn<AppContext>;
64
-
65
- export const t: TaserNamespace<AppContext> = {
66
- get: createWithoutBodyRoute("GET"),
67
- post: createWithBodyRoute("POST"),
68
- put: createWithBodyRoute("PUT"),
69
- patch: createWithBodyRoute("PATCH"),
70
- delete: createWithoutBodyRoute("DELETE"),
71
- options: createWithoutBodyRoute("OPTIONS"),
72
- head: createWithoutBodyRoute("HEAD"),
73
- query: createWithBodyRoute("QUERY"),
74
- any: ((path: string, methods: readonly HttpMethod[]) =>
75
- createRouteBuilder(path, "ANY", methods)) as unknown as CreateAnyRoute<AppContext>,
76
- all: ((path: string) => createRouteBuilder(path, "ALL")) as unknown as CreateAllRoute<AppContext>,
77
- layout: createMiddleware as LayoutBuilder<AppContext>,
78
- middleware,
79
- };
@@ -1,19 +0,0 @@
1
- import type { ReservedContextKey } from "@taserjs/router-core";
2
-
3
- import type { ContextDefinition } from "../types/app.js";
4
-
5
- type NoReservedKeysConstraint<
6
- TBoot extends Record<string, unknown>,
7
- TReq extends Record<string, unknown>,
8
- > = Extract<keyof TBoot | keyof TReq, ReservedContextKey> extends never ? unknown : never;
9
-
10
- export function createContext<
11
- TBoot extends Record<string, unknown> = Record<string, never>,
12
- TReq extends Record<string, unknown> = Record<string, never>,
13
- >(
14
- definition: ContextDefinition<TBoot, TReq> & NoReservedKeysConstraint<TBoot, TReq>,
15
- ): ContextDefinition<TBoot, TReq> {
16
- return definition;
17
- }
18
-
19
- export type { ContextDefinition, InferAppContext } from "../types/app.js";
@@ -1,214 +0,0 @@
1
- import { createMiddlewareUnitBuilder } from "../builder/middleware-unit.js";
2
- import type {
3
- DefineMiddlewareResult,
4
- ExtractState,
5
- IsUnknown,
6
- MiddlewareRequirements,
7
- MiddlewareUnitBuilder,
8
- NextFn,
9
- StandaloneMiddlewareContext,
10
- } from "../types/units.js";
11
- import type {
12
- AppContext,
13
- LayoutId,
14
- LayoutParams,
15
- ResolveLayoutMiddlewaresState,
16
- ResolveLayoutsState,
17
- } from "../types/index.js";
18
-
19
- export interface MiddlewareFn<TAppContext extends Record<string, unknown> = AppContext> {
20
- /**
21
- * Defines a standalone, unscoped middleware using a short function signature.
22
- *
23
- * @example
24
- * ```ts
25
- * const auth = middleware((ctx, next) => {
26
- * return next({ user: "alice" });
27
- * });
28
- * ```
29
- */
30
- <TState = unknown, TRequires extends MiddlewareRequirements = {}, R = unknown>(
31
- fn: (
32
- ctx: StandaloneMiddlewareContext<unknown, unknown, unknown, TAppContext, {}, TRequires>,
33
- next: NextFn<NoInfer<TState>>,
34
- ) => R,
35
- ): DefineMiddlewareResult<
36
- unknown,
37
- unknown,
38
- unknown,
39
- IsUnknown<TState> extends true ? ExtractState<R> : TState,
40
- R,
41
- unknown,
42
- unknown,
43
- unknown,
44
- {},
45
- null,
46
- TRequires
47
- >;
48
-
49
- /**
50
- * Constructs a fluent unscoped middleware builder, with optional explicit State generic.
51
- *
52
- * @example
53
- * ```ts
54
- * const auth = middleware<{ user: string }>()
55
- * .query(z.object({ token: z.string() }))
56
- * .body("form", z.object({ file: z.instanceof(File) }))
57
- * .returns({ 401: z.string() })
58
- * .handler(async (ctx, next) => next({ user: "alice" }));
59
- * ```
60
- */
61
- <TState = unknown>(): MiddlewareUnitBuilder<
62
- unknown,
63
- unknown,
64
- unknown,
65
- {},
66
- null,
67
- {},
68
- TAppContext,
69
- {},
70
- unknown,
71
- unknown,
72
- unknown,
73
- TState
74
- >;
75
-
76
- /**
77
- * Defines a standalone middleware scoped to a single layout branch using a short function signature.
78
- */
79
- <
80
- const Layout extends LayoutId,
81
- TState = unknown,
82
- TRequires extends MiddlewareRequirements = {},
83
- R = unknown,
84
- >(
85
- layout: Layout,
86
- fn: (
87
- ctx: StandaloneMiddlewareContext<
88
- unknown,
89
- LayoutParams<Layout>,
90
- unknown,
91
- TAppContext,
92
- ResolveLayoutMiddlewaresState<Layout>,
93
- TRequires
94
- >,
95
- next: NextFn<NoInfer<TState>>,
96
- ) => R,
97
- ): DefineMiddlewareResult<
98
- unknown,
99
- unknown,
100
- unknown,
101
- IsUnknown<TState> extends true ? ExtractState<R> : TState,
102
- R,
103
- unknown,
104
- unknown,
105
- unknown,
106
- {},
107
- Layout,
108
- TRequires
109
- >;
110
-
111
- /**
112
- * Defines a standalone middleware scoped to multiple layout branches using a short function signature.
113
- */
114
- <
115
- const Layouts extends readonly [LayoutId, ...LayoutId[]],
116
- TState = unknown,
117
- TRequires extends MiddlewareRequirements = {},
118
- R = unknown,
119
- >(
120
- layouts: Layouts,
121
- fn: (
122
- ctx: StandaloneMiddlewareContext<
123
- unknown,
124
- LayoutParams<Layouts[number]>,
125
- unknown,
126
- TAppContext,
127
- ResolveLayoutsState<Layouts>,
128
- TRequires
129
- >,
130
- next: NextFn<NoInfer<TState>>,
131
- ) => R,
132
- ): DefineMiddlewareResult<
133
- unknown,
134
- unknown,
135
- unknown,
136
- IsUnknown<TState> extends true ? ExtractState<R> : TState,
137
- R,
138
- unknown,
139
- unknown,
140
- unknown,
141
- {},
142
- Layouts,
143
- TRequires
144
- >;
145
-
146
- /**
147
- * Constructs a fluent middleware builder scoped to a single layout branch, with optional explicit State generic.
148
- */
149
- <const Layout extends LayoutId, TState = unknown>(
150
- layout: Layout,
151
- ): MiddlewareUnitBuilder<
152
- unknown,
153
- LayoutParams<Layout>,
154
- unknown,
155
- {},
156
- Layout,
157
- {},
158
- TAppContext,
159
- ResolveLayoutMiddlewaresState<Layout>,
160
- unknown,
161
- unknown,
162
- unknown,
163
- TState
164
- >;
165
-
166
- /**
167
- * Constructs a fluent middleware builder scoped to multiple layout branches (branch union), with optional explicit State generic.
168
- */
169
- <const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown>(
170
- layouts: Layouts,
171
- ): MiddlewareUnitBuilder<
172
- unknown,
173
- LayoutParams<Layouts[number]>,
174
- unknown,
175
- {},
176
- Layouts,
177
- {},
178
- TAppContext,
179
- ResolveLayoutsState<Layouts>,
180
- unknown,
181
- unknown,
182
- unknown,
183
- TState
184
- >;
185
- }
186
-
187
- export const middleware: MiddlewareFn<AppContext> = function middleware(
188
- first?: any,
189
- second?: any,
190
- ): any {
191
- if (first === undefined) {
192
- return createMiddlewareUnitBuilder();
193
- }
194
-
195
- if (typeof first === "string" || Array.isArray(first)) {
196
- if (typeof second === "function") {
197
- return {
198
- handler: second,
199
- __middlewareAcc: undefined as unknown,
200
- __requiredLayouts: first,
201
- };
202
- }
203
- return createMiddlewareUnitBuilder(first);
204
- }
205
-
206
- if (typeof first === "function") {
207
- return {
208
- handler: first,
209
- __middlewareAcc: undefined as unknown,
210
- };
211
- }
212
-
213
- return createMiddlewareUnitBuilder();
214
- };
@@ -1,22 +0,0 @@
1
- import type { Schema } from "../types/schema.js";
2
- import { SCHEMA_KEYS, type SchemaKey } from "../builder/constants.js";
3
-
4
- export type SchemaValidators = {
5
- query?: Schema<unknown>;
6
- params?: Schema<unknown>;
7
- body?: Schema<unknown>;
8
- };
9
-
10
- export function pickDefinedSchemas(
11
- source: SchemaValidators,
12
- keyMap?: Partial<Record<SchemaKey, string>>,
13
- ): Record<string, Schema<unknown>> {
14
- const result: Record<string, Schema<unknown>> = {};
15
- for (const key of SCHEMA_KEYS) {
16
- const value = source[key];
17
- if (value !== undefined) {
18
- result[keyMap?.[key] ?? key] = value;
19
- }
20
- }
21
- return result;
22
- }
@@ -1,27 +0,0 @@
1
- import { createTaserCompatHandler } from "@taserjs/router-core";
2
- import type { MiddlewareHandler } from "hono";
3
-
4
- import type { NextFn } from "../types/units.js";
5
-
6
- /**
7
- * Adapts a standard Web / Hono-compatible middleware function `(c, next) => ...`
8
- * into a Taser.js-compatible middleware handler function `(ctx, next) => Promise<Response>`.
9
- *
10
- * @example
11
- * ```ts
12
- * import { honoMw } from "@taserjs/router";
13
- * import { cors } from "hono/cors";
14
- *
15
- * const app = t.get("/hello").use(honoMw(cors()));
16
- * // or
17
- * const customCors = middleware(honoMw(cors()));
18
- * ```
19
- */
20
- export function honoMw<TState extends Record<string, unknown> = {}>(
21
- middleware: MiddlewareHandler,
22
- ): (ctx: unknown, next: NextFn<TState>) => Promise<Response> {
23
- return createTaserCompatHandler(middleware) as (
24
- ctx: unknown,
25
- next: NextFn<TState>,
26
- ) => Promise<Response>;
27
- }
package/src/types/app.ts DELETED
@@ -1,48 +0,0 @@
1
- import type { CookieRuntimeConfig, RouteManifestShape } from "@taserjs/router-core";
2
- import type { ResponseValidationFailureHandler } from "@taserjs/router-utils";
3
-
4
- import type { TaserApp } from "../builder/app.js";
5
- import type { ReturnsMap } from "./returns.js";
6
- import type { Schema } from "./schema.js";
7
-
8
- export type CreateTaserAppOptions = {
9
- response?: {
10
- /** Validate handler replies against returns maps. Default true. */
11
- validate?: boolean;
12
- onValidationFailure?: ResponseValidationFailureHandler;
13
- };
14
- /** Global cookie defaults and signing secret. Per-call `ctx.cookies.set` options override defaults. */
15
- cookies?: CookieRuntimeConfig;
16
- };
17
-
18
- export type ContextDefinition<
19
- TBoot extends Record<string, unknown> = Record<string, never>,
20
- TReq extends Record<string, unknown> = Record<string, never>,
21
- > = {
22
- boot?: () => TBoot | Promise<TBoot>;
23
- request?: (req: Request) => TReq | Promise<TReq>;
24
- };
25
-
26
- export type InferAppContext<
27
- T extends ContextDefinition<Record<string, unknown>, Record<string, unknown>>,
28
- > = T extends ContextDefinition<infer TBoot, infer TReq> ? TBoot & TReq : Record<string, never>;
29
-
30
- export type OnErrorOptions<TResponses extends ReturnsMap = ReturnsMap> = {
31
- responses?: TResponses;
32
- handle: (error: unknown, ctx?: unknown) => Response | Promise<Response>;
33
- };
34
-
35
- export type InferAppManifest<TApp> =
36
- TApp extends TaserApp<infer TManifest, any>
37
- ? TManifest
38
- : TApp extends { manifest: infer TManifest }
39
- ? TManifest
40
- : TApp extends RouteManifestShape
41
- ? TApp
42
- : never;
43
-
44
- export type { RouteManifestShape } from "@taserjs/router-core";
45
-
46
- export type { Schema };
47
-
48
- export type { TaserApp } from "../builder/app.js";