@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
package/README.md CHANGED
@@ -1,19 +1,19 @@
1
1
  # @taserjs/router
2
2
 
3
- Type-safe Node.js router with runtime validation and middleware
3
+ Type-safe route builder and middleware composition for Taser.js.
4
4
 
5
5
  ## Installation
6
6
 
7
- **npm:**
8
-
9
7
  ```bash
10
8
  npm install @taserjs/router
9
+ # or
10
+ pnpm add @taserjs/router
11
11
  ```
12
12
 
13
13
  ## Documentation
14
14
 
15
- See the [main documentation](https://github.com/taserjs/taserjs) for usage examples and API reference.
15
+ Guides and API reference: [taserjs.dev](https://taserjs.dev)
16
16
 
17
17
  ## License
18
18
 
19
- ISC
19
+ [ISC](https://github.com/taserjs/taserjs/blob/main/LICENSE)
@@ -0,0 +1,284 @@
1
+ const require_hono = require("./hono-Ddk3waH-.cjs");
2
+ //#region src/taser.ts
3
+ var TaserBuilder = class {
4
+ _context;
5
+ options;
6
+ constructor(options) {
7
+ this.options = options ? { ...options } : {};
8
+ }
9
+ basePath(path) {
10
+ this.options.basePath = path;
11
+ return this;
12
+ }
13
+ response(options) {
14
+ this.options.response = {
15
+ ...this.options.response,
16
+ ...options
17
+ };
18
+ return this;
19
+ }
20
+ context(ctxDef) {
21
+ this.options.context = ctxDef;
22
+ return this;
23
+ }
24
+ notFound(fn) {
25
+ this.options.notFound = fn;
26
+ return this;
27
+ }
28
+ onError(fn) {
29
+ this.options.onError = fn;
30
+ return this;
31
+ }
32
+ };
33
+ function defineTaser(options) {
34
+ return new TaserBuilder(options);
35
+ }
36
+ //#endregion
37
+ //#region src/builder.ts
38
+ function toMiddlewareDefinition(input) {
39
+ if (typeof input === "function") return {
40
+ kind: "middleware",
41
+ handler: input
42
+ };
43
+ return input;
44
+ }
45
+ var MiddlewareBuilder = class {
46
+ kind = "middleware";
47
+ schemas = {};
48
+ layoutId;
49
+ _services;
50
+ _state;
51
+ _params;
52
+ _query;
53
+ _body;
54
+ _layoutId;
55
+ _requires;
56
+ constructor(layoutId) {
57
+ this.layoutId = layoutId;
58
+ this.handler = this.handler.bind(this);
59
+ }
60
+ requires() {
61
+ return this;
62
+ }
63
+ params(schema) {
64
+ this.schemas.params = schema;
65
+ return this;
66
+ }
67
+ query(schema) {
68
+ this.schemas.query = schema;
69
+ return this;
70
+ }
71
+ body(schema, mode) {
72
+ this.schemas.body = {
73
+ schema,
74
+ mode
75
+ };
76
+ return this;
77
+ }
78
+ handler(arg1, arg2) {
79
+ if (typeof arg1 === "function" && arg2 === void 0) return {
80
+ kind: "middleware",
81
+ layoutId: this.layoutId,
82
+ handler: arg1,
83
+ schemas: Object.keys(this.schemas).length > 0 ? { ...this.schemas } : void 0
84
+ };
85
+ if (typeof arg2 === "function") return Promise.resolve(arg2());
86
+ return async (_args, next) => next();
87
+ }
88
+ };
89
+ function middleware(arg1, arg2) {
90
+ if (typeof arg1 === "string") {
91
+ if (typeof arg2 === "function") return {
92
+ kind: "middleware",
93
+ layoutId: arg1,
94
+ handler: arg2
95
+ };
96
+ return new MiddlewareBuilder(arg1);
97
+ }
98
+ if (typeof arg1 === "function") return {
99
+ kind: "middleware",
100
+ handler: arg1
101
+ };
102
+ return new MiddlewareBuilder();
103
+ }
104
+ var LayoutBuilder = class {
105
+ kind = "layout";
106
+ path;
107
+ middlewares = [];
108
+ _services;
109
+ _state;
110
+ _params;
111
+ _query;
112
+ _body;
113
+ schemas = {};
114
+ constructor(path) {
115
+ this.path = path;
116
+ }
117
+ pushSchemaMiddleware(schemas) {
118
+ this.middlewares.push({
119
+ kind: "middleware",
120
+ handler: async (_args, next) => next(),
121
+ schemas
122
+ });
123
+ }
124
+ params(schema) {
125
+ this.schemas.params = schema;
126
+ this.pushSchemaMiddleware({ params: schema });
127
+ return this;
128
+ }
129
+ query(schema) {
130
+ this.schemas.query = schema;
131
+ this.pushSchemaMiddleware({ query: schema });
132
+ return this;
133
+ }
134
+ body(schema, mode) {
135
+ this.schemas.body = {
136
+ schema,
137
+ mode
138
+ };
139
+ this.pushSchemaMiddleware({ body: {
140
+ schema,
141
+ mode
142
+ } });
143
+ return this;
144
+ }
145
+ use(middleware) {
146
+ this.middlewares.push(toMiddlewareDefinition(middleware));
147
+ return this;
148
+ }
149
+ };
150
+ function layout(path) {
151
+ return new LayoutBuilder(path);
152
+ }
153
+ var RouteValidationBuilder = class {
154
+ method;
155
+ path;
156
+ methods;
157
+ middlewares = [];
158
+ schemas = {};
159
+ constructor(method, path, methods) {
160
+ this.method = method;
161
+ this.path = path;
162
+ this.methods = methods;
163
+ }
164
+ params(schema) {
165
+ this.schemas.params = schema;
166
+ return this;
167
+ }
168
+ query(schema) {
169
+ this.schemas.query = schema;
170
+ return this;
171
+ }
172
+ body(schema, mode) {
173
+ this.schemas.body = {
174
+ schema,
175
+ mode
176
+ };
177
+ return this;
178
+ }
179
+ returns(map) {
180
+ this.schemas.returns = {
181
+ ...this.schemas.returns,
182
+ ...map
183
+ };
184
+ return this;
185
+ }
186
+ handler(fn) {
187
+ return {
188
+ kind: "route",
189
+ method: this.method,
190
+ methods: this.methods,
191
+ path: this.path,
192
+ middlewares: [...this.middlewares],
193
+ handler: fn,
194
+ schemas: { ...this.schemas },
195
+ returns: this.schemas.returns ? { ...this.schemas.returns } : void 0
196
+ };
197
+ }
198
+ };
199
+ var RouteBuilder = class extends RouteValidationBuilder {
200
+ constructor(method, path, methods) {
201
+ super(method, path, methods);
202
+ }
203
+ use(middleware) {
204
+ this.middlewares.push(toMiddlewareDefinition(middleware));
205
+ return this;
206
+ }
207
+ };
208
+ const t = {
209
+ get: (path) => new RouteBuilder("GET", path),
210
+ post: (path) => new RouteBuilder("POST", path),
211
+ put: (path) => new RouteBuilder("PUT", path),
212
+ delete: (path) => new RouteBuilder("DELETE", path),
213
+ patch: (path) => new RouteBuilder("PATCH", path),
214
+ options: (path) => new RouteBuilder("OPTIONS", path),
215
+ head: (path) => new RouteBuilder("HEAD", path),
216
+ query: (path) => new RouteBuilder("QUERY", path),
217
+ all: (path) => new RouteBuilder("ALL", path),
218
+ any: (path, methods) => new RouteBuilder("ANY", path, methods.map((m) => m.toUpperCase())),
219
+ layout,
220
+ middleware,
221
+ hono: require_hono.hono,
222
+ app: defineTaser
223
+ };
224
+ //#endregion
225
+ Object.defineProperty(exports, "LayoutBuilder", {
226
+ enumerable: true,
227
+ get: function() {
228
+ return LayoutBuilder;
229
+ }
230
+ });
231
+ Object.defineProperty(exports, "MiddlewareBuilder", {
232
+ enumerable: true,
233
+ get: function() {
234
+ return MiddlewareBuilder;
235
+ }
236
+ });
237
+ Object.defineProperty(exports, "RouteBuilder", {
238
+ enumerable: true,
239
+ get: function() {
240
+ return RouteBuilder;
241
+ }
242
+ });
243
+ Object.defineProperty(exports, "RouteValidationBuilder", {
244
+ enumerable: true,
245
+ get: function() {
246
+ return RouteValidationBuilder;
247
+ }
248
+ });
249
+ Object.defineProperty(exports, "TaserBuilder", {
250
+ enumerable: true,
251
+ get: function() {
252
+ return TaserBuilder;
253
+ }
254
+ });
255
+ Object.defineProperty(exports, "defineTaser", {
256
+ enumerable: true,
257
+ get: function() {
258
+ return defineTaser;
259
+ }
260
+ });
261
+ Object.defineProperty(exports, "layout", {
262
+ enumerable: true,
263
+ get: function() {
264
+ return layout;
265
+ }
266
+ });
267
+ Object.defineProperty(exports, "middleware", {
268
+ enumerable: true,
269
+ get: function() {
270
+ return middleware;
271
+ }
272
+ });
273
+ Object.defineProperty(exports, "t", {
274
+ enumerable: true,
275
+ get: function() {
276
+ return t;
277
+ }
278
+ });
279
+ Object.defineProperty(exports, "toMiddlewareDefinition", {
280
+ enumerable: true,
281
+ get: function() {
282
+ return toMiddlewareDefinition;
283
+ }
284
+ });
@@ -0,0 +1,227 @@
1
+ import { t as hono } from "./hono-kDZSomjd.js";
2
+ //#region src/taser.ts
3
+ var TaserBuilder = class {
4
+ _context;
5
+ options;
6
+ constructor(options) {
7
+ this.options = options ? { ...options } : {};
8
+ }
9
+ basePath(path) {
10
+ this.options.basePath = path;
11
+ return this;
12
+ }
13
+ response(options) {
14
+ this.options.response = {
15
+ ...this.options.response,
16
+ ...options
17
+ };
18
+ return this;
19
+ }
20
+ context(ctxDef) {
21
+ this.options.context = ctxDef;
22
+ return this;
23
+ }
24
+ notFound(fn) {
25
+ this.options.notFound = fn;
26
+ return this;
27
+ }
28
+ onError(fn) {
29
+ this.options.onError = fn;
30
+ return this;
31
+ }
32
+ };
33
+ function defineTaser(options) {
34
+ return new TaserBuilder(options);
35
+ }
36
+ //#endregion
37
+ //#region src/builder.ts
38
+ function toMiddlewareDefinition(input) {
39
+ if (typeof input === "function") return {
40
+ kind: "middleware",
41
+ handler: input
42
+ };
43
+ return input;
44
+ }
45
+ var MiddlewareBuilder = class {
46
+ kind = "middleware";
47
+ schemas = {};
48
+ layoutId;
49
+ _services;
50
+ _state;
51
+ _params;
52
+ _query;
53
+ _body;
54
+ _layoutId;
55
+ _requires;
56
+ constructor(layoutId) {
57
+ this.layoutId = layoutId;
58
+ this.handler = this.handler.bind(this);
59
+ }
60
+ requires() {
61
+ return this;
62
+ }
63
+ params(schema) {
64
+ this.schemas.params = schema;
65
+ return this;
66
+ }
67
+ query(schema) {
68
+ this.schemas.query = schema;
69
+ return this;
70
+ }
71
+ body(schema, mode) {
72
+ this.schemas.body = {
73
+ schema,
74
+ mode
75
+ };
76
+ return this;
77
+ }
78
+ handler(arg1, arg2) {
79
+ if (typeof arg1 === "function" && arg2 === void 0) return {
80
+ kind: "middleware",
81
+ layoutId: this.layoutId,
82
+ handler: arg1,
83
+ schemas: Object.keys(this.schemas).length > 0 ? { ...this.schemas } : void 0
84
+ };
85
+ if (typeof arg2 === "function") return Promise.resolve(arg2());
86
+ return async (_args, next) => next();
87
+ }
88
+ };
89
+ function middleware(arg1, arg2) {
90
+ if (typeof arg1 === "string") {
91
+ if (typeof arg2 === "function") return {
92
+ kind: "middleware",
93
+ layoutId: arg1,
94
+ handler: arg2
95
+ };
96
+ return new MiddlewareBuilder(arg1);
97
+ }
98
+ if (typeof arg1 === "function") return {
99
+ kind: "middleware",
100
+ handler: arg1
101
+ };
102
+ return new MiddlewareBuilder();
103
+ }
104
+ var LayoutBuilder = class {
105
+ kind = "layout";
106
+ path;
107
+ middlewares = [];
108
+ _services;
109
+ _state;
110
+ _params;
111
+ _query;
112
+ _body;
113
+ schemas = {};
114
+ constructor(path) {
115
+ this.path = path;
116
+ }
117
+ pushSchemaMiddleware(schemas) {
118
+ this.middlewares.push({
119
+ kind: "middleware",
120
+ handler: async (_args, next) => next(),
121
+ schemas
122
+ });
123
+ }
124
+ params(schema) {
125
+ this.schemas.params = schema;
126
+ this.pushSchemaMiddleware({ params: schema });
127
+ return this;
128
+ }
129
+ query(schema) {
130
+ this.schemas.query = schema;
131
+ this.pushSchemaMiddleware({ query: schema });
132
+ return this;
133
+ }
134
+ body(schema, mode) {
135
+ this.schemas.body = {
136
+ schema,
137
+ mode
138
+ };
139
+ this.pushSchemaMiddleware({ body: {
140
+ schema,
141
+ mode
142
+ } });
143
+ return this;
144
+ }
145
+ use(middleware) {
146
+ this.middlewares.push(toMiddlewareDefinition(middleware));
147
+ return this;
148
+ }
149
+ };
150
+ function layout(path) {
151
+ return new LayoutBuilder(path);
152
+ }
153
+ var RouteValidationBuilder = class {
154
+ method;
155
+ path;
156
+ methods;
157
+ middlewares = [];
158
+ schemas = {};
159
+ constructor(method, path, methods) {
160
+ this.method = method;
161
+ this.path = path;
162
+ this.methods = methods;
163
+ }
164
+ params(schema) {
165
+ this.schemas.params = schema;
166
+ return this;
167
+ }
168
+ query(schema) {
169
+ this.schemas.query = schema;
170
+ return this;
171
+ }
172
+ body(schema, mode) {
173
+ this.schemas.body = {
174
+ schema,
175
+ mode
176
+ };
177
+ return this;
178
+ }
179
+ returns(map) {
180
+ this.schemas.returns = {
181
+ ...this.schemas.returns,
182
+ ...map
183
+ };
184
+ return this;
185
+ }
186
+ handler(fn) {
187
+ return {
188
+ kind: "route",
189
+ method: this.method,
190
+ methods: this.methods,
191
+ path: this.path,
192
+ middlewares: [...this.middlewares],
193
+ handler: fn,
194
+ schemas: { ...this.schemas },
195
+ returns: this.schemas.returns ? { ...this.schemas.returns } : void 0
196
+ };
197
+ }
198
+ };
199
+ var RouteBuilder = class extends RouteValidationBuilder {
200
+ constructor(method, path, methods) {
201
+ super(method, path, methods);
202
+ }
203
+ use(middleware) {
204
+ this.middlewares.push(toMiddlewareDefinition(middleware));
205
+ return this;
206
+ }
207
+ };
208
+ const t = {
209
+ get: (path) => new RouteBuilder("GET", path),
210
+ post: (path) => new RouteBuilder("POST", path),
211
+ put: (path) => new RouteBuilder("PUT", path),
212
+ delete: (path) => new RouteBuilder("DELETE", path),
213
+ patch: (path) => new RouteBuilder("PATCH", path),
214
+ options: (path) => new RouteBuilder("OPTIONS", path),
215
+ head: (path) => new RouteBuilder("HEAD", path),
216
+ query: (path) => new RouteBuilder("QUERY", path),
217
+ all: (path) => new RouteBuilder("ALL", path),
218
+ any: (path, methods) => new RouteBuilder("ANY", path, methods.map((m) => m.toUpperCase())),
219
+ layout,
220
+ middleware,
221
+ hono,
222
+ app: defineTaser
223
+ };
224
+ //#endregion
225
+ export { layout as a, toMiddlewareDefinition as c, RouteValidationBuilder as i, TaserBuilder as l, MiddlewareBuilder as n, middleware as o, RouteBuilder as r, t as s, LayoutBuilder as t, defineTaser as u };
226
+
227
+ //# sourceMappingURL=builder-DObEWeC0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-DObEWeC0.js","names":[],"sources":["../src/taser.ts","../src/builder.ts"],"sourcesContent":["import type {\n ContextDefinition,\n NotFoundHandler,\n OnErrorHandler,\n ResponseOptions,\n Simplify,\n TaserAppOptions,\n TaserDefinition,\n} from \"./types.js\";\n\nexport class TaserBuilder<TContext = {}> implements TaserDefinition<TContext> {\n readonly _context?: TContext;\n declare readonly $Infer: {\n Context: TContext;\n };\n public readonly options: TaserAppOptions<any>;\n\n constructor(options?: TaserAppOptions<any>) {\n this.options = options ? { ...options } : {};\n }\n\n basePath(path: string): this {\n this.options.basePath = path;\n return this;\n }\n\n response(options: ResponseOptions): this {\n this.options.response = { ...this.options.response, ...options };\n return this;\n }\n\n context<\n TBoot extends Record<string, unknown> = {},\n TRequest extends Record<string, unknown> = {},\n >(ctxDef: ContextDefinition<TBoot, TRequest>): TaserBuilder<Simplify<TBoot & TRequest>> {\n this.options.context = ctxDef;\n return this as unknown as TaserBuilder<Simplify<TBoot & TRequest>>;\n }\n\n notFound(fn: NotFoundHandler<TContext>): this {\n this.options.notFound = fn;\n return this;\n }\n\n onError(fn: OnErrorHandler): this {\n this.options.onError = fn;\n return this;\n }\n}\n\nexport function defineTaser<TContext = {}>(\n options?: TaserAppOptions<TContext>,\n): TaserBuilder<TContext> {\n return new TaserBuilder<TContext>(options);\n}\n","import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { hono } from \"./hono.js\";\nimport { defineTaser } from \"./taser.js\";\nimport type {\n BodyMode,\n ExtractBodyFromMiddleware,\n ExtractLayoutIdFromMiddleware,\n ExtractParamsFromMiddleware,\n ExtractPreconditionsFromMiddleware,\n ExtractQueryFromMiddleware,\n HttpMethod,\n HttpNoBodyMethod,\n InferEffectiveBody,\n InferEffectiveParams,\n InferEffectiveQuery,\n InferLayoutBody,\n InferLayoutBranchParams,\n InferLayoutBranchServices,\n InferLayoutBranchState,\n InferLayoutParams,\n InferLayoutQuery,\n InferLayoutServices,\n InferLayoutState,\n InferMiddlewareArgs,\n InferReturnsResponse,\n InferRouteServices,\n InferRouteState,\n InferServicesFromMw,\n InferStateFromMw,\n LayoutDefinition,\n MiddlewareArgs,\n MiddlewareDefinition,\n MiddlewareHandler,\n MiddlewarePreconditions,\n MiddlewareResponse,\n NextFunction,\n Overwrite,\n RegisteredRoutePath,\n RegisteredLayoutId,\n RouteDefaultParams,\n RouteDefinition,\n RouteHandler,\n RouteSchemas,\n StatusCode,\n ValidateLayoutMiddlewareUse,\n ValidateRouteMiddlewareUse,\n} from \"./types.js\";\n\nexport function toMiddlewareDefinition<TMw>(\n input: TMw,\n): TMw extends MiddlewareDefinition<any, any, any, any, any, any, any>\n ? TMw\n : MiddlewareDefinition<\n InferServicesFromMw<TMw>,\n InferStateFromMw<TMw>,\n ExtractParamsFromMiddleware<TMw>,\n ExtractQueryFromMiddleware<TMw>,\n ExtractBodyFromMiddleware<TMw>,\n ExtractLayoutIdFromMiddleware<TMw>,\n ExtractPreconditionsFromMiddleware<TMw>\n > {\n if (typeof input === \"function\") {\n return {\n kind: \"middleware\",\n handler: input as MiddlewareHandler,\n } as any;\n }\n return input as any;\n}\n\nexport class MiddlewareBuilder<\n TParams = unknown,\n TQuery = unknown,\n TBody = unknown,\n TServices = {},\n TState = {},\n TLayoutId extends string | undefined = undefined,\n TRequires extends MiddlewarePreconditions = {},\n> implements MiddlewareDefinition<TServices, TState, TParams, TQuery, TBody, TLayoutId, TRequires> {\n public readonly kind = \"middleware\" as const;\n public readonly schemas: RouteSchemas = {};\n public readonly layoutId?: string | undefined;\n\n readonly _services?: TServices;\n readonly _state?: TState;\n readonly _params?: TParams;\n readonly _query?: TQuery;\n readonly _body?: TBody;\n readonly _layoutId?: TLayoutId;\n readonly _requires?: TRequires;\n\n constructor(layoutId?: string | undefined) {\n this.layoutId = layoutId;\n this.handler = this.handler.bind(this);\n }\n\n requires<TPreconditions extends MiddlewarePreconditions>(): MiddlewareBuilder<\n TParams,\n TQuery,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires & TPreconditions\n > {\n return this as unknown as MiddlewareBuilder<\n TParams,\n TQuery,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires & TPreconditions\n >;\n }\n\n params<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): MiddlewareBuilder<\n StandardSchemaV1.InferOutput<TSchema>,\n TQuery,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires\n > {\n this.schemas.params = schema;\n return this as unknown as MiddlewareBuilder<\n StandardSchemaV1.InferOutput<TSchema>,\n TQuery,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires\n >;\n }\n\n query<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): MiddlewareBuilder<\n TParams,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires\n > {\n this.schemas.query = schema;\n return this as unknown as MiddlewareBuilder<\n TParams,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody,\n TServices,\n TState,\n TLayoutId,\n TRequires\n >;\n }\n\n body<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n mode?: BodyMode,\n ): MiddlewareBuilder<\n TParams,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>,\n TServices,\n TState,\n TLayoutId,\n TRequires\n > {\n this.schemas.body = { schema, mode };\n return this as unknown as MiddlewareBuilder<\n TParams,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>,\n TServices,\n TState,\n TLayoutId,\n TRequires\n >;\n }\n\n handler(\n args: MiddlewareArgs<any, any, any, any, any>,\n next: NextFunction,\n ):\n | Response\n | Promise<Response>\n | MiddlewareResponse<any, any>\n | Promise<MiddlewareResponse<any, any>>;\n handler<\n F extends (\n args: InferMiddlewareArgs<TLayoutId, TParams, TQuery, TBody, TRequires>,\n next: NextFunction,\n ) => any,\n >(\n fn: F,\n ): MiddlewareDefinition<\n InferServicesFromMw<F>,\n InferStateFromMw<F>,\n TParams,\n TQuery,\n TBody,\n TLayoutId,\n TRequires\n >;\n handler(arg1?: any, arg2?: any): any {\n if (typeof arg1 === \"function\" && arg2 === undefined) {\n return {\n kind: \"middleware\",\n layoutId: this.layoutId,\n handler: arg1 as unknown as MiddlewareHandler,\n schemas: Object.keys(this.schemas).length > 0 ? { ...this.schemas } : undefined,\n };\n }\n if (typeof arg2 === \"function\") {\n return Promise.resolve(arg2());\n }\n return async (_args: any, next: NextFunction) => next();\n }\n}\n\nexport function middleware<\n TLayoutId extends RegisteredLayoutId,\n F extends (\n args: MiddlewareArgs<\n InferLayoutBranchServices<TLayoutId>,\n InferLayoutBranchState<TLayoutId>,\n InferLayoutBranchParams<TLayoutId>\n >,\n next: NextFunction,\n ) => any,\n>(\n layoutId: TLayoutId,\n fn: F,\n): MiddlewareDefinition<\n InferServicesFromMw<F>,\n InferStateFromMw<F>,\n InferLayoutBranchParams<TLayoutId>,\n unknown,\n unknown,\n TLayoutId,\n {}\n>;\nexport function middleware<TLayoutId extends RegisteredLayoutId>(\n layoutId: TLayoutId,\n): MiddlewareBuilder<InferLayoutBranchParams<TLayoutId>, unknown, unknown, {}, {}, TLayoutId, {}>;\nexport function middleware<F extends (args: MiddlewareArgs<{}, {}>, next: NextFunction) => any>(\n fn: F,\n): MiddlewareDefinition<\n InferServicesFromMw<F>,\n InferStateFromMw<F>,\n unknown,\n unknown,\n unknown,\n undefined,\n {}\n>;\nexport function middleware(): MiddlewareBuilder<unknown, unknown, unknown, {}, {}, undefined, {}>;\nexport function middleware(\n arg1?: any,\n arg2?: any,\n):\n | MiddlewareBuilder<any, any, any, any, any, any, any>\n | MiddlewareDefinition<any, any, any, any, any, any, any> {\n if (typeof arg1 === \"string\") {\n if (typeof arg2 === \"function\") {\n return {\n kind: \"middleware\",\n layoutId: arg1,\n handler: arg2 as MiddlewareHandler,\n };\n }\n return new MiddlewareBuilder(arg1);\n }\n if (typeof arg1 === \"function\") {\n return {\n kind: \"middleware\",\n handler: arg1 as MiddlewareHandler,\n };\n }\n return new MiddlewareBuilder();\n}\n\nexport class LayoutBuilder<\n TPath extends string = string,\n TParams = RouteDefaultParams<TPath>,\n TServices = {},\n TState = {},\n TQuery = {},\n TBody = {},\n> implements LayoutDefinition<TPath, TServices, TState, TParams, TQuery, TBody> {\n readonly kind = \"layout\" as const;\n public readonly path: TPath;\n public readonly middlewares: MiddlewareDefinition<any, any, any, any, any>[] = [];\n\n readonly _services?: TServices;\n readonly _state?: TState;\n readonly _params?: TParams;\n readonly _query?: TQuery;\n readonly _body?: TBody;\n\n public readonly schemas: RouteSchemas = {};\n\n constructor(path: TPath) {\n this.path = path;\n }\n\n private pushSchemaMiddleware(schemas: RouteSchemas): void {\n this.middlewares.push({\n kind: \"middleware\",\n handler: async (_args, next) => next(),\n schemas,\n });\n }\n\n params<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): LayoutBuilder<\n TPath,\n Overwrite<TParams, StandardSchemaV1.InferOutput<TSchema>>,\n TServices,\n TState,\n TQuery,\n TBody\n > {\n this.schemas.params = schema;\n this.pushSchemaMiddleware({ params: schema });\n return this as unknown as LayoutBuilder<\n TPath,\n Overwrite<TParams, StandardSchemaV1.InferOutput<TSchema>>,\n TServices,\n TState,\n TQuery,\n TBody\n >;\n }\n\n query<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): LayoutBuilder<\n TPath,\n TParams,\n TServices,\n TState,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody\n > {\n this.schemas.query = schema;\n this.pushSchemaMiddleware({ query: schema });\n return this as unknown as LayoutBuilder<\n TPath,\n TParams,\n TServices,\n TState,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody\n >;\n }\n\n body<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n mode?: BodyMode,\n ): LayoutBuilder<\n TPath,\n TParams,\n TServices,\n TState,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>\n > {\n this.schemas.body = { schema, mode };\n this.pushSchemaMiddleware({ body: { schema, mode } });\n return this as unknown as LayoutBuilder<\n TPath,\n TParams,\n TServices,\n TState,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>\n >;\n }\n\n use<\n TMw extends\n | MiddlewareDefinition<any, any, any, any, any, any, any>\n | ((\n args: MiddlewareArgs<\n InferLayoutServices<TPath> & TServices,\n InferLayoutState<TPath> & TState,\n [keyof InferLayoutParams<TPath>] extends [never]\n ? TParams\n : Overwrite<InferLayoutParams<TPath>, TParams>,\n Overwrite<InferLayoutQuery<TPath>, TQuery>,\n Overwrite<InferLayoutBody<TPath>, TBody>\n >,\n next: NextFunction,\n ) => any),\n >(\n middleware: ValidateLayoutMiddlewareUse<\n TPath,\n [keyof InferLayoutParams<TPath>] extends [never]\n ? TParams\n : Overwrite<InferLayoutParams<TPath>, TParams>,\n Overwrite<InferLayoutQuery<TPath>, TQuery>,\n Overwrite<InferLayoutBody<TPath>, TBody>,\n TServices,\n TState,\n TMw\n >,\n ): LayoutBuilder<\n TPath,\n Overwrite<TParams, ExtractParamsFromMiddleware<TMw>>,\n TServices & InferServicesFromMw<TMw>,\n TState & InferStateFromMw<TMw>,\n Overwrite<TQuery, ExtractQueryFromMiddleware<TMw>>,\n Overwrite<TBody, ExtractBodyFromMiddleware<TMw>>\n > {\n this.middlewares.push(toMiddlewareDefinition(middleware));\n return this as unknown as LayoutBuilder<\n TPath,\n Overwrite<TParams, ExtractParamsFromMiddleware<TMw>>,\n TServices & InferServicesFromMw<TMw>,\n TState & InferStateFromMw<TMw>,\n Overwrite<TQuery, ExtractQueryFromMiddleware<TMw>>,\n Overwrite<TBody, ExtractBodyFromMiddleware<TMw>>\n >;\n }\n}\n\nexport function layout<TPath extends string>(\n path: TPath,\n): LayoutBuilder<TPath, RouteDefaultParams<TPath>> {\n return new LayoutBuilder<TPath, RouteDefaultParams<TPath>>(path);\n}\n\nexport class RouteValidationBuilder<\n TMethod extends HttpMethod = HttpMethod,\n TPath extends string = string,\n TParams = RouteDefaultParams<TPath>,\n TQuery = {},\n TBody = [TMethod] extends [HttpNoBodyMethod] ? never : {},\n TRouteServices = {},\n TRouteState = {},\n TReturns = undefined,\n TParamsIn = TParams,\n TQueryIn = TQuery,\n TBodyIn = TBody,\n> {\n public readonly middlewares: MiddlewareDefinition<any, any, any, any, any, any, any>[] = [];\n public readonly schemas: RouteSchemas = {};\n\n constructor(\n public readonly method: TMethod,\n public readonly path: TPath,\n public readonly methods?: readonly string[] | undefined,\n ) {}\n\n params<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): RouteValidationBuilder<\n TMethod,\n TPath,\n StandardSchemaV1.InferOutput<TSchema>,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n StandardSchemaV1.InferInput<TSchema>,\n TQueryIn,\n TBodyIn\n > {\n this.schemas.params = schema;\n return this as unknown as RouteValidationBuilder<\n TMethod,\n TPath,\n StandardSchemaV1.InferOutput<TSchema>,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n StandardSchemaV1.InferInput<TSchema>,\n TQueryIn,\n TBodyIn\n >;\n }\n\n query<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n ): RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n StandardSchemaV1.InferInput<TSchema>,\n TBodyIn\n > {\n this.schemas.query = schema;\n return this as unknown as RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n StandardSchemaV1.InferOutput<TSchema>,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n StandardSchemaV1.InferInput<TSchema>,\n TBodyIn\n >;\n }\n\n body<TSchema extends StandardSchemaV1>(\n this: [TMethod] extends [HttpNoBodyMethod] ? never : any,\n schema: TSchema,\n mode?: BodyMode,\n ): RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n TQueryIn,\n StandardSchemaV1.InferInput<TSchema>\n > {\n (this as any).schemas.body = { schema, mode };\n return this as unknown as RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n StandardSchemaV1.InferOutput<TSchema>,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n TQueryIn,\n StandardSchemaV1.InferInput<TSchema>\n >;\n }\n\n returns<const TMap extends Record<StatusCode, StandardSchemaV1>>(\n map: TMap,\n ): RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns extends Record<StatusCode, StandardSchemaV1> ? TReturns & TMap : TMap,\n TParamsIn,\n TQueryIn,\n TBodyIn\n > {\n this.schemas.returns = { ...this.schemas.returns, ...map };\n return this as unknown as RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns extends Record<StatusCode, StandardSchemaV1> ? TReturns & TMap : TMap,\n TParamsIn,\n TQueryIn,\n TBodyIn\n >;\n }\n\n handler<\n TReturn extends ([TReturns] extends [undefined]\n ? any\n : [TReturns] extends [never]\n ? any\n : unknown extends TReturns\n ? any\n : InferReturnsResponse<TReturns> | Promise<InferReturnsResponse<TReturns>>),\n >(\n fn: RouteHandler<\n InferEffectiveParams<TPath, TMethod, TParams>,\n InferEffectiveQuery<TPath, TMethod, TQuery>,\n InferEffectiveBody<TPath, TMethod, TBody>,\n InferRouteServices<TPath, TMethod> & TRouteServices,\n InferRouteState<TPath, TMethod> & TRouteState,\n TReturn\n >,\n ): RouteDefinition<\n TPath,\n TParams,\n TQuery,\n TBody,\n TReturns,\n TReturn,\n TParamsIn,\n TQueryIn,\n TBodyIn\n > {\n return {\n kind: \"route\",\n method: this.method,\n methods: this.methods,\n path: this.path,\n middlewares: [...this.middlewares],\n handler: fn as RouteHandler<any, any, any, any, any>,\n schemas: { ...this.schemas },\n returns: this.schemas.returns ? { ...this.schemas.returns } : undefined,\n } as unknown as RouteDefinition<\n TPath,\n TParams,\n TQuery,\n TBody,\n TReturns,\n TReturn,\n TParamsIn,\n TQueryIn,\n TBodyIn\n >;\n }\n}\n\nexport class RouteBuilder<\n TMethod extends HttpMethod = HttpMethod,\n TPath extends string = string,\n TParams = RouteDefaultParams<TPath>,\n TQuery = {},\n TBody = [TMethod] extends [HttpNoBodyMethod] ? never : {},\n TRouteServices = {},\n TRouteState = {},\n TReturns = undefined,\n TParamsIn = TParams,\n TQueryIn = TQuery,\n TBodyIn = TBody,\n> extends RouteValidationBuilder<\n TMethod,\n TPath,\n TParams,\n TQuery,\n TBody,\n TRouteServices,\n TRouteState,\n TReturns,\n TParamsIn,\n TQueryIn,\n TBodyIn\n> {\n constructor(method: TMethod, path: TPath, methods?: readonly string[] | undefined) {\n super(method, path, methods);\n }\n\n use<\n TMw extends\n | MiddlewareDefinition<any, any, any, any, any, any, any>\n | ((\n args: MiddlewareArgs<\n InferRouteServices<TPath, TMethod> & TRouteServices,\n InferRouteState<TPath, TMethod> & TRouteState,\n InferEffectiveParams<TPath, TMethod, TParams>,\n InferEffectiveQuery<TPath, TMethod, TQuery>,\n InferEffectiveBody<TPath, TMethod, TBody>\n >,\n next: NextFunction,\n ) => any),\n >(\n middleware: ValidateRouteMiddlewareUse<\n TPath,\n TMethod,\n InferEffectiveParams<TPath, TMethod, TParams>,\n InferEffectiveQuery<TPath, TMethod, TQuery>,\n InferEffectiveBody<TPath, TMethod, TBody>,\n TRouteServices,\n TRouteState,\n TMw\n >,\n ): RouteBuilder<\n TMethod,\n TPath,\n Overwrite<TParams, ExtractParamsFromMiddleware<TMw>>,\n Overwrite<TQuery, ExtractQueryFromMiddleware<TMw>>,\n Overwrite<TBody, ExtractBodyFromMiddleware<TMw>>,\n TRouteServices & InferServicesFromMw<TMw>,\n TRouteState & InferStateFromMw<TMw>,\n TReturns,\n TParamsIn,\n TQueryIn,\n TBodyIn\n > {\n this.middlewares.push(toMiddlewareDefinition(middleware));\n return this as unknown as RouteBuilder<\n TMethod,\n TPath,\n Overwrite<TParams, ExtractParamsFromMiddleware<TMw>>,\n Overwrite<TQuery, ExtractQueryFromMiddleware<TMw>>,\n Overwrite<TBody, ExtractBodyFromMiddleware<TMw>>,\n TRouteServices & InferServicesFromMw<TMw>,\n TRouteState & InferStateFromMw<TMw>,\n TReturns,\n TParamsIn,\n TQueryIn,\n TBodyIn\n >;\n }\n}\n\nexport const t = {\n get: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"GET\", TPath>(\"GET\", path),\n post: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"POST\", TPath>(\"POST\", path),\n put: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"PUT\", TPath>(\"PUT\", path),\n delete: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"DELETE\", TPath>(\"DELETE\", path),\n patch: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"PATCH\", TPath>(\"PATCH\", path),\n options: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"OPTIONS\", TPath>(\"OPTIONS\", path),\n head: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"HEAD\", TPath>(\"HEAD\", path),\n query: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"QUERY\", TPath>(\"QUERY\", path),\n all: <TPath extends RegisteredRoutePath>(path: TPath) =>\n new RouteBuilder<\"ALL\", TPath>(\"ALL\", path),\n any: <TPath extends RegisteredRoutePath, const TMethods extends readonly string[]>(\n path: TPath,\n methods: TMethods,\n ) =>\n new RouteBuilder<\"ANY\", TPath>(\n \"ANY\",\n path,\n methods.map((m) => m.toUpperCase()),\n ),\n layout,\n middleware,\n hono,\n app: defineTaser,\n};\n"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ let hono = require("hono");
2
+ let _taserjs_utils = require("@taserjs/utils");
3
+ //#region src/hono.ts
4
+ function hono$1(honoMw, refine) {
5
+ return {
6
+ kind: "middleware",
7
+ handler: async (args, next) => {
8
+ let c = args.ctx.context;
9
+ if (!c) {
10
+ c = new hono.Context(args.req.raw);
11
+ args.ctx.context = c;
12
+ }
13
+ let nextCalled = false;
14
+ let downstreamResponse;
15
+ const honoNext = async () => {
16
+ nextCalled = true;
17
+ c.res;
18
+ downstreamResponse = refine ? await refine(c, next) : await next();
19
+ (0, _taserjs_utils.mergeResponseCookies)(c, downstreamResponse);
20
+ };
21
+ let result;
22
+ try {
23
+ result = await honoMw(c, honoNext);
24
+ } catch (err) {
25
+ if (typeof err?.getResponse === "function") return err.getResponse();
26
+ if (err?.res instanceof Response) return err.res;
27
+ throw err;
28
+ }
29
+ if (result instanceof Response) return result;
30
+ if (nextCalled) return c.res ?? downstreamResponse;
31
+ if (c.res instanceof Response) return c.res;
32
+ throw new Error("Hono middleware did not call next() or return a Response");
33
+ }
34
+ };
35
+ }
36
+ //#endregion
37
+ Object.defineProperty(exports, "hono", {
38
+ enumerable: true,
39
+ get: function() {
40
+ return hono$1;
41
+ }
42
+ });
@@ -0,0 +1,39 @@
1
+ import { Context } from "hono";
2
+ import { mergeResponseCookies } from "@taserjs/utils";
3
+ //#region src/hono.ts
4
+ function hono(honoMw, refine) {
5
+ return {
6
+ kind: "middleware",
7
+ handler: async (args, next) => {
8
+ let c = args.ctx.context;
9
+ if (!c) {
10
+ c = new Context(args.req.raw);
11
+ args.ctx.context = c;
12
+ }
13
+ let nextCalled = false;
14
+ let downstreamResponse;
15
+ const honoNext = async () => {
16
+ nextCalled = true;
17
+ c.res;
18
+ downstreamResponse = refine ? await refine(c, next) : await next();
19
+ mergeResponseCookies(c, downstreamResponse);
20
+ };
21
+ let result;
22
+ try {
23
+ result = await honoMw(c, honoNext);
24
+ } catch (err) {
25
+ if (typeof err?.getResponse === "function") return err.getResponse();
26
+ if (err?.res instanceof Response) return err.res;
27
+ throw err;
28
+ }
29
+ if (result instanceof Response) return result;
30
+ if (nextCalled) return c.res ?? downstreamResponse;
31
+ if (c.res instanceof Response) return c.res;
32
+ throw new Error("Hono middleware did not call next() or return a Response");
33
+ }
34
+ };
35
+ }
36
+ //#endregion
37
+ export { hono as t };
38
+
39
+ //# sourceMappingURL=hono-kDZSomjd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-kDZSomjd.js","names":[],"sources":["../src/hono.ts"],"sourcesContent":["import { Context } from \"hono\";\nimport type { MiddlewareHandler as HonoMiddlewareHandler, Next as HonoNext } from \"hono\";\nimport { mergeResponseCookies } from \"@taserjs/utils\";\nimport type {\n DistributeServices,\n DistributeState,\n MiddlewareDefinition,\n MiddlewareResponse,\n NextFunction,\n} from \"./types.js\";\n\nexport function hono<\n R extends\n | Response\n | Promise<Response>\n | MiddlewareResponse<any, any>\n | Promise<MiddlewareResponse<any, any>> = Promise<Response>,\n>(\n honoMw: HonoMiddlewareHandler,\n refine?: (c: Context, next: NextFunction) => R,\n): MiddlewareDefinition<\n DistributeServices<Awaited<R>>,\n DistributeState<Awaited<R>>,\n unknown,\n unknown,\n unknown\n> {\n return {\n kind: \"middleware\",\n handler: async (args, next) => {\n let c = (args.ctx as Record<string, unknown>).context as Context | undefined;\n if (!c) {\n c = new Context(args.req.raw);\n (args.ctx as Record<string, unknown>).context = c;\n }\n\n let nextCalled = false;\n let downstreamResponse: Response | undefined;\n\n const honoNext: HonoNext = async () => {\n nextCalled = true;\n void c.res;\n downstreamResponse = refine ? await refine(c, next) : await next();\n mergeResponseCookies(c, downstreamResponse);\n };\n\n let result: Response | void;\n try {\n result = await honoMw(c, honoNext);\n } catch (err: any) {\n if (typeof err?.getResponse === \"function\") {\n return err.getResponse();\n }\n if (err?.res instanceof Response) {\n return err.res;\n }\n throw err;\n }\n\n if (result instanceof Response) {\n return result;\n }\n\n if (nextCalled) {\n return c.res ?? downstreamResponse!;\n }\n\n if (c.res instanceof Response) {\n return c.res;\n }\n\n throw new Error(\"Hono middleware did not call next() or return a Response\");\n },\n };\n}\n"],"mappings":";;;AAWA,SAAgB,KAOd,QACA,QAOA;CACA,OAAO;EACL,MAAM;EACN,SAAS,OAAO,MAAM,SAAS;GAC7B,IAAI,IAAK,KAAK,IAAgC;GAC9C,IAAI,CAAC,GAAG;IACN,IAAI,IAAI,QAAQ,KAAK,IAAI,GAAG;IAC5B,KAAM,IAAgC,UAAU;GAClD;GAEA,IAAI,aAAa;GACjB,IAAI;GAEJ,MAAM,WAAqB,YAAY;IACrC,aAAa;IACb,EAAO;IACP,qBAAqB,SAAS,MAAM,OAAO,GAAG,IAAI,IAAI,MAAM,KAAK;IACjE,qBAAqB,GAAG,kBAAkB;GAC5C;GAEA,IAAI;GACJ,IAAI;IACF,SAAS,MAAM,OAAO,GAAG,QAAQ;GACnC,SAAS,KAAU;IACjB,IAAI,OAAO,KAAK,gBAAgB,YAC9B,OAAO,IAAI,YAAY;IAEzB,IAAI,KAAK,eAAe,UACtB,OAAO,IAAI;IAEb,MAAM;GACR;GAEA,IAAI,kBAAkB,UACpB,OAAO;GAGT,IAAI,YACF,OAAO,EAAE,OAAO;GAGlB,IAAI,EAAE,eAAe,UACnB,OAAO,EAAE;GAGX,MAAM,IAAI,MAAM,0DAA0D;EAC5E;CACF;AACF"}