@asenajs/asena 0.1.17 → 0.1.19

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 (273) hide show
  1. package/README.md +171 -41
  2. package/dist/index.d.ts +1 -10
  3. package/dist/index.js +1 -10
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/adapter/AsenaAdapter.d.ts +46 -53
  6. package/dist/lib/adapter/AsenaAdapter.js +22 -11
  7. package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
  8. package/dist/lib/adapter/AsenaContext.d.ts +70 -62
  9. package/dist/lib/adapter/AsenaWebsocketAdapter.d.ts +58 -34
  10. package/dist/lib/adapter/AsenaWebsocketAdapter.js +43 -12
  11. package/dist/lib/adapter/AsenaWebsocketAdapter.js.map +1 -1
  12. package/dist/lib/adapter/hono/HonoAdapter.d.ts +28 -0
  13. package/dist/lib/adapter/{defaultAdapter/DefaultAdapter.js → hono/HonoAdapter.js} +57 -35
  14. package/dist/lib/adapter/hono/HonoAdapter.js.map +1 -0
  15. package/dist/lib/adapter/{defaultAdapter/DefaultContextWrapper.d.ts → hono/HonoContextWrapper.d.ts} +4 -4
  16. package/dist/lib/adapter/{defaultAdapter/DefaultContextWrapper.js → hono/HonoContextWrapper.js} +6 -6
  17. package/dist/lib/adapter/hono/HonoContextWrapper.js.map +1 -0
  18. package/dist/lib/adapter/{defaultAdapter/DefaultWebsocketAdapter.d.ts → hono/HonoWebsocketAdapter.d.ts} +9 -5
  19. package/dist/lib/adapter/{defaultAdapter/DefaultWebsocketAdapter.js → hono/HonoWebsocketAdapter.js} +34 -24
  20. package/dist/lib/adapter/hono/HonoWebsocketAdapter.js.map +1 -0
  21. package/dist/lib/adapter/hono/defaults/ConfigService.d.ts +4 -0
  22. package/dist/lib/adapter/hono/defaults/ConfigService.js +3 -0
  23. package/dist/lib/adapter/hono/defaults/ConfigService.js.map +1 -0
  24. package/dist/lib/adapter/hono/defaults/Context.js +2 -0
  25. package/dist/lib/adapter/hono/defaults/Context.js.map +1 -0
  26. package/dist/lib/adapter/hono/defaults/MiddlewareService.d.ts +5 -0
  27. package/dist/lib/adapter/hono/defaults/MiddlewareService.js +4 -0
  28. package/dist/lib/adapter/hono/defaults/MiddlewareService.js.map +1 -0
  29. package/dist/lib/adapter/hono/defaults/ValidationService.d.ts +10 -0
  30. package/dist/lib/adapter/hono/defaults/ValidationService.js +3 -0
  31. package/dist/lib/adapter/hono/defaults/ValidationService.js.map +1 -0
  32. package/dist/lib/adapter/hono/defaults/index.d.ts +4 -0
  33. package/dist/lib/adapter/hono/defaults/index.js +5 -0
  34. package/dist/lib/adapter/hono/defaults/index.js.map +1 -0
  35. package/dist/lib/adapter/hono/index.d.ts +6 -0
  36. package/dist/lib/adapter/hono/index.js +7 -0
  37. package/dist/lib/adapter/hono/index.js.map +1 -0
  38. package/dist/lib/adapter/hono/types/HonoHandler.d.ts +5 -0
  39. package/dist/lib/adapter/hono/types/HonoHandler.js +2 -0
  40. package/dist/lib/adapter/hono/types/HonoHandler.js.map +1 -0
  41. package/dist/lib/adapter/hono/types/index.d.ts +2 -0
  42. package/dist/lib/adapter/hono/types/index.js +3 -0
  43. package/dist/lib/adapter/hono/types/index.js.map +1 -0
  44. package/dist/lib/adapter/hono/utils/createHonoAdapter.d.ts +3 -0
  45. package/dist/lib/adapter/hono/utils/createHonoAdapter.js +6 -0
  46. package/dist/lib/adapter/hono/utils/createHonoAdapter.js.map +1 -0
  47. package/dist/lib/adapter/hono/utils/middlewareParser.d.ts +4 -0
  48. package/dist/lib/adapter/hono/utils/middlewareParser.js +15 -0
  49. package/dist/lib/adapter/hono/utils/middlewareParser.js.map +1 -0
  50. package/dist/lib/adapter/index.d.ts +1 -0
  51. package/dist/lib/adapter/index.js +1 -0
  52. package/dist/lib/adapter/index.js.map +1 -1
  53. package/dist/lib/adapter/types/AsenaHandler.d.ts +2 -0
  54. package/dist/lib/adapter/types/AsenaHandler.js +2 -0
  55. package/dist/lib/adapter/types/AsenaHandler.js.map +1 -0
  56. package/dist/lib/adapter/types/AsenaMiddlewareHandler.d.ts +2 -0
  57. package/dist/lib/adapter/types/AsenaMiddlewareHandler.js +2 -0
  58. package/dist/lib/adapter/types/AsenaMiddlewareHandler.js.map +1 -0
  59. package/dist/lib/adapter/types/ErrorHandler.d.ts +2 -0
  60. package/dist/lib/adapter/types/ErrorHandler.js +2 -0
  61. package/dist/lib/adapter/types/ErrorHandler.js.map +1 -0
  62. package/dist/lib/adapter/types/RouteParams.d.ts +7 -4
  63. package/dist/lib/adapter/types/ServeOptions.d.ts +7 -0
  64. package/dist/lib/adapter/types/ServeOptions.js +2 -0
  65. package/dist/lib/adapter/types/ServeOptions.js.map +1 -0
  66. package/dist/lib/adapter/types/WebSocketRegistry.d.ts +5 -4
  67. package/dist/lib/adapter/types/WebsocketAdapterParams.d.ts +1 -1
  68. package/dist/lib/adapter/types/index.d.ts +3 -0
  69. package/dist/lib/adapter/types/index.js +3 -0
  70. package/dist/lib/adapter/types/index.js.map +1 -1
  71. package/dist/lib/ioc/Container.d.ts +7 -3
  72. package/dist/lib/ioc/Container.js +69 -87
  73. package/dist/lib/ioc/Container.js.map +1 -1
  74. package/dist/lib/ioc/IocEngine.d.ts +2 -2
  75. package/dist/lib/ioc/IocEngine.js +27 -15
  76. package/dist/lib/ioc/IocEngine.js.map +1 -1
  77. package/dist/lib/ioc/component/componentUtils.d.ts +1 -1
  78. package/dist/lib/ioc/component/componentUtils.js +16 -12
  79. package/dist/lib/ioc/component/componentUtils.js.map +1 -1
  80. package/dist/lib/{server/decorators/components → ioc/component/decorators}/Component.d.ts +1 -1
  81. package/dist/lib/{server/decorators/components → ioc/component/decorators}/Component.js +2 -2
  82. package/dist/lib/ioc/component/decorators/Component.js.map +1 -0
  83. package/dist/lib/ioc/component/decorators/Implements.js +2 -2
  84. package/dist/lib/ioc/component/decorators/Implements.js.map +1 -1
  85. package/dist/lib/ioc/component/decorators/Inject.d.ts +1 -1
  86. package/dist/lib/ioc/component/decorators/Inject.js +6 -7
  87. package/dist/lib/ioc/component/decorators/Inject.js.map +1 -1
  88. package/dist/lib/ioc/component/decorators/PostConstruct.d.ts +6 -0
  89. package/dist/lib/ioc/component/decorators/PostConstruct.js +17 -0
  90. package/dist/lib/ioc/component/decorators/PostConstruct.js.map +1 -0
  91. package/dist/lib/ioc/component/decorators/Strategy.js +6 -6
  92. package/dist/lib/ioc/component/decorators/Strategy.js.map +1 -1
  93. package/dist/lib/ioc/component/decorators/index.d.ts +1 -0
  94. package/dist/lib/ioc/component/decorators/index.js +1 -0
  95. package/dist/lib/ioc/component/decorators/index.js.map +1 -1
  96. package/dist/lib/ioc/component/index.d.ts +1 -0
  97. package/dist/lib/ioc/component/index.js +2 -0
  98. package/dist/lib/ioc/component/index.js.map +1 -0
  99. package/dist/lib/ioc/constants/ComponentConstants.d.ts +4 -2
  100. package/dist/lib/ioc/constants/ComponentConstants.js +3 -1
  101. package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
  102. package/dist/lib/ioc/helper/fileHelper.d.ts +1 -1
  103. package/dist/lib/ioc/helper/fileHelper.js +9 -3
  104. package/dist/lib/ioc/helper/fileHelper.js.map +1 -1
  105. package/dist/lib/ioc/helper/iocHelper.d.ts +2 -3
  106. package/dist/lib/ioc/helper/iocHelper.js +4 -2
  107. package/dist/lib/ioc/helper/iocHelper.js.map +1 -1
  108. package/dist/lib/ioc/types/{Component.d.ts → InjectableComponent.d.ts} +4 -4
  109. package/dist/lib/ioc/types/InjectableComponent.js +2 -0
  110. package/dist/lib/ioc/types/InjectableComponent.js.map +1 -0
  111. package/dist/lib/ioc/types/IocConfig.d.ts +1 -0
  112. package/dist/lib/ioc/types/decorators/ComponentParams.d.ts +1 -1
  113. package/dist/lib/ioc/types/decorators/ComponentType.d.ts +2 -2
  114. package/dist/lib/ioc/types/decorators/ComponentType.js +1 -1
  115. package/dist/lib/ioc/types/decorators/ComponentType.js.map +1 -1
  116. package/dist/lib/ioc/types/decorators/ControllerParams.d.ts +4 -3
  117. package/dist/lib/ioc/types/decorators/MiddlewareParams.d.ts +1 -1
  118. package/dist/lib/ioc/types/index.d.ts +1 -1
  119. package/dist/lib/ioc/types/index.js +1 -1
  120. package/dist/lib/ioc/types/index.js.map +1 -1
  121. package/dist/lib/{services/logger → logger}/DefaultLogger.d.ts +1 -1
  122. package/dist/lib/logger/DefaultLogger.js.map +1 -0
  123. package/dist/lib/{services/types → logger}/Logger.js.map +1 -1
  124. package/dist/lib/logger/index.d.ts +2 -0
  125. package/dist/lib/logger/index.js +3 -0
  126. package/dist/lib/logger/index.js.map +1 -0
  127. package/dist/lib/server/AsenaServer.d.ts +15 -14
  128. package/dist/lib/server/AsenaServer.js +125 -113
  129. package/dist/lib/server/AsenaServer.js.map +1 -1
  130. package/dist/lib/server/config/AsenaConfig.d.ts +43 -0
  131. package/dist/lib/server/config/AsenaConfig.js +2 -0
  132. package/dist/lib/server/config/AsenaConfig.js.map +1 -0
  133. package/dist/lib/server/decorators/Override.d.ts +4 -4
  134. package/dist/lib/server/decorators/Override.js +11 -7
  135. package/dist/lib/server/decorators/Override.js.map +1 -1
  136. package/dist/lib/server/decorators/components/Config.d.ts +10 -0
  137. package/dist/lib/server/decorators/components/Config.js +14 -0
  138. package/dist/lib/server/decorators/components/Config.js.map +1 -0
  139. package/dist/lib/server/decorators/components/Controller.js +4 -4
  140. package/dist/lib/server/decorators/components/Controller.js.map +1 -1
  141. package/dist/lib/server/decorators/components/Middleware.d.ts +1 -1
  142. package/dist/lib/server/decorators/components/Middleware.js +19 -9
  143. package/dist/lib/server/decorators/components/Middleware.js.map +1 -1
  144. package/dist/lib/server/decorators/components/Schedule.d.ts +2 -2
  145. package/dist/lib/server/decorators/components/Schedule.js +7 -7
  146. package/dist/lib/server/decorators/components/Schedule.js.map +1 -1
  147. package/dist/lib/server/decorators/components/Service.d.ts +1 -1
  148. package/dist/lib/server/decorators/components/Service.js +2 -2
  149. package/dist/lib/server/decorators/components/Service.js.map +1 -1
  150. package/dist/lib/server/decorators/components/WebSocket.js +4 -4
  151. package/dist/lib/server/decorators/components/WebSocket.js.map +1 -1
  152. package/dist/lib/server/decorators/components/index.d.ts +1 -2
  153. package/dist/lib/server/decorators/components/index.js +1 -2
  154. package/dist/lib/server/decorators/components/index.js.map +1 -1
  155. package/dist/lib/server/decorators/index.d.ts +2 -1
  156. package/dist/lib/server/decorators/index.js +2 -1
  157. package/dist/lib/server/decorators/index.js.map +1 -1
  158. package/dist/lib/server/index.d.ts +1 -0
  159. package/dist/lib/server/index.js +1 -0
  160. package/dist/lib/server/index.js.map +1 -1
  161. package/dist/lib/server/types/Class.d.ts +0 -3
  162. package/dist/lib/server/web/decorators/http.base.d.ts +4 -0
  163. package/dist/lib/server/web/decorators/http.base.js +35 -0
  164. package/dist/lib/server/web/decorators/http.base.js.map +1 -0
  165. package/dist/lib/server/web/decorators/index.d.ts +4 -0
  166. package/dist/lib/server/web/decorators/index.js +5 -0
  167. package/dist/lib/server/web/decorators/index.js.map +1 -0
  168. package/dist/lib/server/web/decorators/methods/Connect.d.ts +7 -0
  169. package/dist/lib/server/web/decorators/methods/Connect.js +12 -0
  170. package/dist/lib/server/web/decorators/methods/Connect.js.map +1 -0
  171. package/dist/lib/server/web/decorators/methods/Delete.d.ts +7 -0
  172. package/dist/lib/server/web/decorators/methods/Delete.js +12 -0
  173. package/dist/lib/server/web/decorators/methods/Delete.js.map +1 -0
  174. package/dist/lib/server/web/decorators/methods/Get.d.ts +7 -0
  175. package/dist/lib/server/web/decorators/methods/Get.js +12 -0
  176. package/dist/lib/server/web/decorators/methods/Get.js.map +1 -0
  177. package/dist/lib/server/web/decorators/methods/Head.d.ts +7 -0
  178. package/dist/lib/server/web/decorators/methods/Head.js +12 -0
  179. package/dist/lib/server/web/decorators/methods/Head.js.map +1 -0
  180. package/dist/lib/server/web/decorators/methods/Options.d.ts +7 -0
  181. package/dist/lib/server/web/decorators/methods/Options.js +12 -0
  182. package/dist/lib/server/web/decorators/methods/Options.js.map +1 -0
  183. package/dist/lib/server/web/decorators/methods/Patch.d.ts +7 -0
  184. package/dist/lib/server/web/decorators/methods/Patch.js +12 -0
  185. package/dist/lib/server/web/decorators/methods/Patch.js.map +1 -0
  186. package/dist/lib/server/web/decorators/methods/Post.d.ts +7 -0
  187. package/dist/lib/server/web/decorators/methods/Post.js +12 -0
  188. package/dist/lib/server/web/decorators/methods/Post.js.map +1 -0
  189. package/dist/lib/server/web/decorators/methods/Put.d.ts +7 -0
  190. package/dist/lib/server/web/decorators/methods/Put.js +12 -0
  191. package/dist/lib/server/web/decorators/methods/Put.js.map +1 -0
  192. package/dist/lib/server/web/decorators/methods/Trace.d.ts +7 -0
  193. package/dist/lib/server/web/decorators/methods/Trace.js +12 -0
  194. package/dist/lib/server/web/decorators/methods/Trace.js.map +1 -0
  195. package/dist/lib/server/web/decorators/methods/index.d.ts +9 -0
  196. package/dist/lib/server/web/decorators/methods/index.js +10 -0
  197. package/dist/lib/server/web/decorators/methods/index.js.map +1 -0
  198. package/dist/lib/server/web/helper/middlewareHelper.d.ts +7 -1
  199. package/dist/lib/server/web/helper/middlewareHelper.js +11 -5
  200. package/dist/lib/server/web/helper/middlewareHelper.js.map +1 -1
  201. package/dist/lib/server/web/http/HttpStatus.d.ts +69 -67
  202. package/dist/lib/server/web/http/HttpStatus.js +69 -68
  203. package/dist/lib/server/web/http/HttpStatus.js.map +1 -1
  204. package/dist/lib/server/web/middleware/AsenaMiddlewareService.d.ts +8 -10
  205. package/dist/lib/server/web/middleware/AsenaMiddlewareService.js +1 -4
  206. package/dist/lib/server/web/middleware/AsenaMiddlewareService.js.map +1 -1
  207. package/dist/lib/server/web/middleware/AsenaValidationService.d.ts +15 -16
  208. package/dist/lib/server/web/middleware/AsenaValidationService.js +1 -8
  209. package/dist/lib/server/web/middleware/AsenaValidationService.js.map +1 -1
  210. package/dist/lib/server/web/types/ApiParams.d.ts +73 -0
  211. package/dist/lib/server/web/types/ApiParams.js +2 -0
  212. package/dist/lib/server/web/types/ApiParams.js.map +1 -0
  213. package/dist/lib/server/web/types/BaseMiddleware.d.ts +50 -5
  214. package/dist/lib/server/web/types/BaseMiddleware.js +1 -1
  215. package/dist/lib/server/web/types/BaseMiddleware.js.map +1 -1
  216. package/dist/lib/server/web/types/index.d.ts +1 -1
  217. package/dist/lib/server/web/types/index.js +1 -1
  218. package/dist/lib/server/web/types/index.js.map +1 -1
  219. package/dist/lib/server/web/websocket/AsenaSocket.js +1 -0
  220. package/dist/lib/server/web/websocket/AsenaSocket.js.map +1 -1
  221. package/dist/lib/server/web/websocket/AsenaWebSocketServer.d.ts +39 -0
  222. package/dist/lib/server/web/websocket/AsenaWebSocketServer.js +40 -0
  223. package/dist/lib/server/web/websocket/AsenaWebSocketServer.js.map +1 -1
  224. package/dist/lib/server/web/websocket/AsenaWebSocketService.js +4 -4
  225. package/dist/lib/server/web/websocket/AsenaWebSocketService.js.map +1 -1
  226. package/dist/lib/utils/typedMetadata.d.ts +2 -0
  227. package/dist/lib/utils/typedMetadata.js +13 -0
  228. package/dist/lib/utils/typedMetadata.js.map +1 -0
  229. package/package.json +53 -5
  230. package/dist/lib/adapter/defaultAdapter/DefaultAdapter.d.ts +0 -26
  231. package/dist/lib/adapter/defaultAdapter/DefaultAdapter.js.map +0 -1
  232. package/dist/lib/adapter/defaultAdapter/DefaultContextWrapper.js.map +0 -1
  233. package/dist/lib/adapter/defaultAdapter/DefaultWebsocketAdapter.js.map +0 -1
  234. package/dist/lib/adapter/defaultAdapter/index.d.ts +0 -3
  235. package/dist/lib/adapter/defaultAdapter/index.js +0 -4
  236. package/dist/lib/adapter/defaultAdapter/index.js.map +0 -1
  237. package/dist/lib/adapter/defaultAdapter/types/Defaultcontext.js +0 -2
  238. package/dist/lib/adapter/defaultAdapter/types/Defaultcontext.js.map +0 -1
  239. package/dist/lib/adapter/defaultAdapter/types/Handler.d.ts +0 -4
  240. package/dist/lib/adapter/defaultAdapter/types/Handler.js +0 -2
  241. package/dist/lib/adapter/defaultAdapter/types/Handler.js.map +0 -1
  242. package/dist/lib/adapter/defaultAdapter/types/index.d.ts +0 -2
  243. package/dist/lib/adapter/defaultAdapter/types/index.js +0 -3
  244. package/dist/lib/adapter/defaultAdapter/types/index.js.map +0 -1
  245. package/dist/lib/ioc/types/Component.js +0 -2
  246. package/dist/lib/ioc/types/Component.js.map +0 -1
  247. package/dist/lib/server/decorators/components/Component.js.map +0 -1
  248. package/dist/lib/server/decorators/components/ServerService.d.ts +0 -9
  249. package/dist/lib/server/decorators/components/ServerService.js +0 -13
  250. package/dist/lib/server/decorators/components/ServerService.js.map +0 -1
  251. package/dist/lib/server/web/api/apiHandler.d.ts +0 -55
  252. package/dist/lib/server/web/api/apiHandler.js +0 -107
  253. package/dist/lib/server/web/api/apiHandler.js.map +0 -1
  254. package/dist/lib/server/web/api/index.d.ts +0 -1
  255. package/dist/lib/server/web/api/index.js +0 -2
  256. package/dist/lib/server/web/api/index.js.map +0 -1
  257. package/dist/lib/server/web/types/ApiHandler.d.ts +0 -23
  258. package/dist/lib/server/web/types/ApiHandler.js +0 -2
  259. package/dist/lib/server/web/types/ApiHandler.js.map +0 -1
  260. package/dist/lib/services/index.d.ts +0 -3
  261. package/dist/lib/services/index.js +0 -4
  262. package/dist/lib/services/index.js.map +0 -1
  263. package/dist/lib/services/logger/DefaultLogger.js.map +0 -1
  264. package/dist/lib/services/serverService/AsenaService.d.ts +0 -7
  265. package/dist/lib/services/serverService/AsenaService.js +0 -7
  266. package/dist/lib/services/serverService/AsenaService.js.map +0 -1
  267. package/dist/lib/services/types/index.d.ts +0 -2
  268. package/dist/lib/services/types/index.js +0 -3
  269. package/dist/lib/services/types/index.js.map +0 -1
  270. /package/dist/lib/adapter/{defaultAdapter/types/Defaultcontext.d.ts → hono/defaults/Context.d.ts} +0 -0
  271. /package/dist/lib/{services/logger → logger}/DefaultLogger.js +0 -0
  272. /package/dist/lib/{services/types → logger}/Logger.d.ts +0 -0
  273. /package/dist/lib/{services/types → logger}/Logger.js +0 -0
@@ -1,143 +1,151 @@
1
- import type { CookieExtra } from './types';
2
- import type { SendOptions } from './types';
3
- import type { TypedResponse } from 'hono';
1
+ import type { CookieExtra, SendOptions } from './types';
4
2
  /**
5
- * Interface representing the context for Asena.
3
+ * AsenaContext represents the core context interface for handling HTTP requests and responses in Asena framework.
4
+ * It provides essential methods and properties for request/response handling, data manipulation, and state management.
6
5
  *
7
- * @template R - The type of the request object.
8
- * @template S - The type of the response object.
6
+ * @template R - Type parameter for the underlying request object
7
+ * @template S - Type parameter for the underlying response object
9
8
  */
10
9
  export interface AsenaContext<R, S> {
10
+ /** The original request object */
11
11
  req: R;
12
+ /** The original response object */
12
13
  res: S;
13
14
  /**
14
- * Headers associated with the request.
15
+ * Request headers stored as key-value pairs
15
16
  */
16
17
  headers: Record<string, string>;
17
18
  /**
18
- * Retrieves the request body as an ArrayBuffer.
19
+ * Retrieves the raw request body as an ArrayBuffer.
20
+ * Useful for handling binary data.
19
21
  *
20
- * @returns {Promise<ArrayBuffer>} A promise that resolves to an ArrayBuffer.
22
+ * @returns {Promise<ArrayBuffer>} The request body as an ArrayBuffer
21
23
  */
22
24
  getArrayBuffer: () => Promise<ArrayBuffer>;
23
25
  /**
24
- * Parses and retrieves the request body.
26
+ * Automatically parses the request body based on content type.
27
+ * Supports JSON, form data, and other common formats.
25
28
  *
26
- * @returns {Promise<any>} A promise that resolves to the parsed body.
29
+ * @returns {Promise<any>} The parsed request body
27
30
  */
28
31
  getParseBody: () => Promise<any>;
29
32
  /**
30
- * Retrieves the request body as a Blob.
33
+ * Retrieves the request body as a Blob object.
34
+ * Useful for handling file uploads and binary data.
31
35
  *
32
- * @returns {Promise<Blob>} A promise that resolves to a Blob.
36
+ * @returns {Promise<Blob>} The request body as a Blob
33
37
  */
34
38
  getBlob: () => Promise<Blob>;
35
39
  /**
36
40
  * Retrieves the request body as FormData.
41
+ * Useful for processing multipart/form-data submissions.
37
42
  *
38
- * @returns {Promise<FormData>} A promise that resolves to FormData.
43
+ * @returns {Promise<FormData>} The request body as FormData
39
44
  */
40
45
  getFormData: () => Promise<FormData>;
41
46
  /**
42
- * Retrieves a parameter from the request.
47
+ * Retrieves a route parameter by name.
48
+ * Example: For route "/users/:id", getParam("id") returns the actual ID value.
43
49
  *
44
- * @param {string} s - The name of the parameter.
45
- * @returns {string} The value of the parameter.
50
+ * @param {string} s - The parameter name to retrieve
51
+ * @returns {string} The parameter value
46
52
  */
47
53
  getParam: (s: string) => string;
48
54
  /**
49
- * Retrieves the request body as a specified type.
55
+ * Retrieves and automatically type-casts the request body.
50
56
  *
51
- * @template U - The type to which the body should be parsed.
52
- * @returns {Promise<U>} A promise that resolves to the parsed body.
57
+ * @template U - The expected type of the body
58
+ * @returns {Promise<U>} The typed request body
53
59
  */
54
60
  getBody: <U>() => Promise<U>;
55
61
  /**
56
- * Retrieves a query parameter from the request.
62
+ * Retrieves a single query parameter value.
63
+ * For URL "?name=john", getQuery("name") returns "john".
57
64
  *
58
- * @param {string} query - The name of the query parameter.
59
- * @returns {Promise<string>} A promise that resolves to the value of the query parameter.
65
+ * @param {string} query - The query parameter name
66
+ * @returns {Promise<string>} The query parameter value
60
67
  */
61
68
  getQuery: (query: string) => Promise<string>;
62
69
  /**
63
- * Retrieves all values of a query parameter from the request.
70
+ * Retrieves all values for a query parameter that appears multiple times.
71
+ * For URL "?color=red&color=blue", getQueryAll("color") returns ["red", "blue"].
64
72
  *
65
- * @param {string} query - The name of the query parameter.
66
- * @returns {Promise<string[]>} A promise that resolves to an array of values.
73
+ * @param {string} query - The query parameter name
74
+ * @returns {Promise<string[]>} Array of all values for the query parameter
67
75
  */
68
76
  getQueryAll: (query: string) => Promise<string[]>;
69
77
  /**
70
- * Retrieves a cookie from the request.
78
+ * Retrieves a cookie value by name, with optional signature verification.
71
79
  *
72
- * @param {string} name - The name of the cookie.
73
- * @param {string | BufferSource} [secret] - Optional secret for signed cookies.
74
- * @returns {Promise<string | false>} A promise that resolves to the cookie value or false if not found.
80
+ * @param {string} name - The cookie name
81
+ * @param {string | BufferSource} [secret] - Optional secret for verifying signed cookies
82
+ * @returns {Promise<string | false>} The cookie value if found, false otherwise
75
83
  */
76
84
  getCookie: (name: string, secret?: string | BufferSource) => Promise<string | false>;
77
85
  /**
78
- * Sets a cookie in the response.
86
+ * Sets a cookie with the specified name, value, and options.
79
87
  *
80
- * @param {string} name - The name of the cookie.
81
- * @param {string} value - The value of the cookie.
82
- * @param {CookieExtra<any>} [options] - Optional settings for the cookie.
83
- * @returns {Promise<void>} A promise that resolves when the cookie is set.
88
+ * @param {string} name - The cookie name
89
+ * @param {string} value - The cookie value
90
+ * @param {CookieExtra<any>} [options] - Cookie options (expires, domain, path, etc.)
91
+ * @returns {Promise<void>}
84
92
  */
85
93
  setCookie: (name: string, value: string, options?: CookieExtra<any>) => Promise<void>;
86
94
  /**
87
- * Deletes a cookie from the response.
95
+ * Deletes a cookie by setting its expiration to the past.
88
96
  *
89
- * @param {string} name - The name of the cookie to delete.
90
- * @param {CookieExtra<any>} [options] - Optional settings for the cookie.
91
- * @returns {Promise<void>} A promise that resolves when the cookie is deleted.
97
+ * @param {string} name - The cookie name to delete
98
+ * @param {CookieExtra<any>} [options] - Cookie options (domain, path, etc.)
99
+ * @returns {Promise<void>}
92
100
  */
93
101
  deleteCookie: (name: string, options?: CookieExtra<any>) => Promise<void>;
94
102
  /**
95
- * Retrieves a value from the context.
103
+ * Retrieves a value from the context's state storage.
96
104
  *
97
- * @template T - The type of the value.
98
- * @param {string} key - The key of the value.
99
- * @returns {T} The value associated with the key.
105
+ * @template T - The expected type of the value
106
+ * @param {string} key - The key to retrieve
107
+ * @returns {T} The stored value
100
108
  */
101
109
  getValue: <T>(key: string) => T;
102
110
  /**
103
- * Sets a value in the context.
111
+ * Stores a value in the context's state storage.
104
112
  *
105
- * @param {string} key - The key of the value.
106
- * @param {any} value - The value to set.
113
+ * @param {string} key - The key to store under
114
+ * @param {any} value - The value to store
107
115
  */
108
116
  setValue: (key: string, value: any) => void;
109
117
  /**
110
- * Sets a value for WebSocket communication.
118
+ * Stores a value specifically for WebSocket communication.
111
119
  *
112
- * @param {any} value - The value to set.
120
+ * @param {any} value - The value to store for WebSocket context
113
121
  */
114
122
  setWebSocketValue: (value: any) => void;
115
123
  /**
116
- * Retrieves a value for WebSocket communication.
124
+ * Retrieves the stored WebSocket-specific value.
117
125
  *
118
- * @template T - The type of the value.
119
- * @returns {T} The value associated with the WebSocket.
126
+ * @template T - The expected type of the WebSocket value
127
+ * @returns {T} The stored WebSocket value
120
128
  */
121
129
  getWebSocketValue: <T>() => T;
122
130
  /**
123
- * Sends an HTML response.
131
+ * Sends an HTML response with appropriate content-type headers.
124
132
  *
125
- * @param {string} data - The HTML data to send.
126
- * @returns {Response | Promise<Response> | TypedResponse | Promise<TypedResponse>} The response object.
133
+ * @param {string} data - The HTML content to send
134
+ * @returns {Response | Promise<Response>} The response object
127
135
  */
128
- html: (data: string) => Response | Promise<Response> | TypedResponse | Promise<TypedResponse>;
136
+ html: (data: string) => Response | Promise<Response>;
129
137
  /**
130
- * Sends a response.
138
+ * Sends a response with automatic content-type detection.
131
139
  *
132
- * @param {string | any} data - The data to send.
133
- * @param {SendOptions | number} [status] - Optional status code or send options.
134
- * @returns {Response | Promise<Response> | TypedResponse | Promise<TypedResponse>} The response object.
140
+ * @param {string | any} data - The content to send
141
+ * @param {SendOptions | number} [status] - HTTP status code or send options
142
+ * @returns {Response | Promise<Response>} The response object
135
143
  */
136
- send: (data: string | any, status?: SendOptions | number) => Response | Promise<Response> | TypedResponse | Promise<TypedResponse>;
144
+ send: (data: string | any, status?: SendOptions | number) => Response | Promise<Response>;
137
145
  /**
138
- * Redirects the request to a new URL.
146
+ * Performs an HTTP redirect to the specified URL.
139
147
  *
140
- * @param {string} url - The URL to redirect to.
148
+ * @param {string} url - The destination URL
141
149
  */
142
150
  redirect: (url: string) => void;
143
151
  }
@@ -1,71 +1,95 @@
1
1
  import type { AsenaWebSocketService, WSOptions } from '../server/web/websocket';
2
2
  import type { WebSocketHandler } from 'bun';
3
- import type { ServerLogger } from '../services';
4
- import type { WebsocketAdapterParams } from './types';
5
- import type { WebSocketRegistry } from './types';
3
+ import type { WebsocketAdapterParams, WebSocketRegistry } from './types';
4
+ import type { ServerLogger } from '../logger';
5
+ import type { BaseMiddleware } from '../server/web/types';
6
+ import type { AsenaContext } from './AsenaContext';
6
7
  /**
7
- * Abstract class representing a WebSocket adapter.
8
+ * Abstract class that provides a base implementation for WebSocket adapters.
9
+ * Handles WebSocket connections, registration, and management.
8
10
  *
9
- * @template A - The type of the application.
10
- * @template AM - The type of the message.
11
+ * @template A - Type of the application instance
12
+ * @template R - Type of the request object
13
+ * @template S - Type of the response object
11
14
  */
12
- export declare abstract class AsenaWebsocketAdapter<A, MH> {
15
+ export declare abstract class AsenaWebsocketAdapter<A, C extends AsenaContext<any, any>> {
16
+ readonly name: string;
13
17
  /**
14
- * The WebSocket services.
15
- * @ string - The namespace of the WebSocket.
16
- * @ AsenaWebSocketService<any> - The WebSocket service.
17
- * @ MH[] - The middlewares to use.
18
+ * Registry containing WebSocket services and their configurations
19
+ * Structure:
20
+ * - Key: WebSocket namespace
21
+ * - Value: Object containing:
22
+ * - service: WebSocket service instance
23
+ * - middlewares: Array of middleware functions
18
24
  * @protected
19
25
  */
20
- protected _websockets: WebSocketRegistry;
26
+ protected _websockets: WebSocketRegistry<C>;
21
27
  /**
22
- * The application instance.
28
+ * Reference to the main application instance
23
29
  * @private
24
30
  */
25
31
  private _app;
26
32
  /**
27
- * The WebSocket handler.
33
+ * WebSocket handler instance for managing connections
28
34
  * @private
29
35
  */
30
36
  private _websocket;
31
37
  /**
32
- * The logger instance.
38
+ * Logger instance for WebSocket-related logging
39
+ * @private
33
40
  */
34
41
  private _logger;
35
42
  /**
36
- * Constructor for the AsenaWebSocketAdapter class.
37
- * @param params - The parameters for the constructor.
43
+ * Initializes a new WebSocket adapter instance
44
+ * @param params - Configuration parameters including app instance and logger
38
45
  */
39
46
  protected constructor(params?: WebsocketAdapterParams<A>);
40
47
  /**
41
- * Registers a WebSocket handler.
42
- *
43
- * @param {websocket<any>} websocket - The WebSocket to register.
44
- * @param middlewares to used in upgrade function
48
+ * Registers a new WebSocket service with associated middlewares
49
+ * @param websocket - WebSocket service instance to register
50
+ * @param middlewares - Array of middleware functions to be executed during connection upgrade
45
51
  */
46
- abstract registerWebSocket(websocket: AsenaWebSocketService<any>, middlewares: MH[]): void;
52
+ abstract registerWebSocket(websocket: AsenaWebSocketService<any>, middlewares: BaseMiddleware<C>[]): Promise<void> | void;
47
53
  /**
48
- * Prepares the WebSocket with the given options.
49
- *
50
- * @param {WSOptions} [wsOptions] - Optional WebSocket options.
54
+ * Configures and initializes the WebSocket server with provided options
55
+ * @param wsOptions - Configuration options for the WebSocket server
51
56
  */
52
- abstract prepareWebSocket(wsOptions?: WSOptions): void;
57
+ abstract buildWebsocket(wsOptions?: WSOptions): Promise<void> | void;
53
58
  /**
54
- * Build the WebSocket object for the server.
59
+ * Starts the WebSocket server on the provided HTTP/S server instance
60
+ * @param server - HTTP/S server instance to attach the WebSocket server to
55
61
  */
56
- abstract buildWebsocket(): void;
62
+ abstract startWebsocket(server: any): Promise<void> | void;
57
63
  /**
58
- * Start the WebSocket server.
59
- *
60
- * @param {Server} server - The server to start.
64
+ * Gets the application instance
61
65
  */
62
- abstract startWebsocket(server: any): void;
63
66
  get app(): A;
67
+ /**
68
+ * Sets the application instance
69
+ */
64
70
  set app(value: A);
65
- protected get websockets(): WebSocketRegistry;
66
- protected set websockets(value: WebSocketRegistry);
71
+ /**
72
+ * Gets the WebSocket registry
73
+ */
74
+ protected get websockets(): WebSocketRegistry<C>;
75
+ /**
76
+ * Sets the WebSocket registry
77
+ */
78
+ protected set websockets(value: WebSocketRegistry<C>);
79
+ /**
80
+ * Gets the WebSocket handler
81
+ */
67
82
  get websocket(): WebSocketHandler;
83
+ /**
84
+ * Sets the WebSocket handler
85
+ */
68
86
  set websocket(value: WebSocketHandler);
87
+ /**
88
+ * Gets the logger instance
89
+ */
69
90
  get logger(): ServerLogger;
91
+ /**
92
+ * Sets the logger instance
93
+ */
70
94
  set logger(value: ServerLogger);
71
95
  }
@@ -1,61 +1,92 @@
1
1
  /**
2
- * Abstract class representing a WebSocket adapter.
2
+ * Abstract class that provides a base implementation for WebSocket adapters.
3
+ * Handles WebSocket connections, registration, and management.
3
4
  *
4
- * @template A - The type of the application.
5
- * @template AM - The type of the message.
5
+ * @template A - Type of the application instance
6
+ * @template R - Type of the request object
7
+ * @template S - Type of the response object
6
8
  */
7
9
  export class AsenaWebsocketAdapter {
10
+ name;
8
11
  /**
9
- * The WebSocket services.
10
- * @ string - The namespace of the WebSocket.
11
- * @ AsenaWebSocketService<any> - The WebSocket service.
12
- * @ MH[] - The middlewares to use.
12
+ * Registry containing WebSocket services and their configurations
13
+ * Structure:
14
+ * - Key: WebSocket namespace
15
+ * - Value: Object containing:
16
+ * - service: WebSocket service instance
17
+ * - middlewares: Array of middleware functions
13
18
  * @protected
14
19
  */
15
20
  _websockets;
16
21
  /**
17
- * The application instance.
22
+ * Reference to the main application instance
18
23
  * @private
19
24
  */
20
25
  _app;
21
26
  /**
22
- * The WebSocket handler.
27
+ * WebSocket handler instance for managing connections
23
28
  * @private
24
29
  */
25
30
  _websocket;
26
31
  /**
27
- * The logger instance.
32
+ * Logger instance for WebSocket-related logging
33
+ * @private
28
34
  */
29
35
  _logger = console;
30
36
  /**
31
- * Constructor for the AsenaWebSocketAdapter class.
32
- * @param params - The parameters for the constructor.
37
+ * Initializes a new WebSocket adapter instance
38
+ * @param params - Configuration parameters including app instance and logger
33
39
  */
34
40
  constructor(params) {
35
41
  this._app = params?.app;
36
42
  this._logger = params?.logger;
37
43
  }
44
+ // Getters and Setters with improved documentation
45
+ /**
46
+ * Gets the application instance
47
+ */
38
48
  get app() {
39
49
  return this._app;
40
50
  }
51
+ /**
52
+ * Sets the application instance
53
+ */
41
54
  set app(value) {
42
55
  this._app = value;
43
56
  }
57
+ /**
58
+ * Gets the WebSocket registry
59
+ */
44
60
  get websockets() {
45
61
  return this._websockets;
46
62
  }
63
+ /**
64
+ * Sets the WebSocket registry
65
+ */
47
66
  set websockets(value) {
48
67
  this._websockets = value;
49
68
  }
69
+ /**
70
+ * Gets the WebSocket handler
71
+ */
50
72
  get websocket() {
51
73
  return this._websocket;
52
74
  }
75
+ /**
76
+ * Sets the WebSocket handler
77
+ */
53
78
  set websocket(value) {
54
79
  this._websocket = value;
55
80
  }
81
+ /**
82
+ * Gets the logger instance
83
+ */
56
84
  get logger() {
57
85
  return this._logger;
58
86
  }
87
+ /**
88
+ * Sets the logger instance
89
+ */
59
90
  set logger(value) {
60
91
  this._logger = value;
61
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AsenaWebsocketAdapter.js","sourceRoot":"","sources":["../../../lib/adapter/AsenaWebsocketAdapter.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,OAAgB,qBAAqB;IAEzC;;;;;;OAMG;IACO,WAAW,CAAoB;IAEzC;;;OAGG;IACK,IAAI,CAAI;IAEhB;;;OAGG;IACK,UAAU,CAAmB;IAErC;;OAEG;IACK,OAAO,GAAiB,OAAO,CAAC;IAExC;;;OAGG;IACH,YAAsB,MAAkC;QACtD,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC;IAChC,CAAC;IA6BD,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAW,GAAG,CAAC,KAAQ;QACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAc,UAAU,CAAC,KAAwB;QAC/C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAW,SAAS,CAAC,KAAuB;QAC1C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,MAAM,CAAC,KAAmB;QACnC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;CAEF"}
1
+ {"version":3,"file":"AsenaWebsocketAdapter.js","sourceRoot":"","sources":["../../../lib/adapter/AsenaWebsocketAdapter.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,MAAM,OAAgB,qBAAqB;IAEzB,IAAI,CAAS;IAE7B;;;;;;;;OAQG;IACO,WAAW,CAAuB;IAE5C;;;OAGG;IACK,IAAI,CAAI;IAEhB;;;OAGG;IACK,UAAU,CAAmB;IAErC;;;OAGG;IACK,OAAO,GAAiB,OAAO,CAAC;IAExC;;;OAGG;IACH,YAAsB,MAAkC;QACtD,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC;IAChC,CAAC;IAwBD,kDAAkD;IAElD;;OAEG;IACH,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,GAAG,CAAC,KAAQ;QACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAc,UAAU,CAAC,KAA2B;QAClD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAW,SAAS,CAAC,KAAuB;QAC1C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAW,MAAM,CAAC,KAAmB;QACnC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;CAEF"}
@@ -0,0 +1,28 @@
1
+ import { AsenaAdapter } from '../AsenaAdapter';
2
+ import { Hono } from 'hono';
3
+ import type { Server } from 'bun';
4
+ import type { AsenaServeOptions, RouteParams } from '../types';
5
+ import { type BaseMiddleware } from '../../server/web/types';
6
+ import type { HonoErrorHandler } from './types';
7
+ import { type ServerLogger } from '../../logger';
8
+ import type { AsenaWebsocketAdapter } from '../AsenaWebsocketAdapter';
9
+ import type { ValidationSchema } from './defaults';
10
+ import type { Context as HonoAdapterContext } from './defaults/Context';
11
+ export declare class HonoAdapter extends AsenaAdapter<Hono, HonoAdapterContext, ValidationSchema, AsenaWebsocketAdapter<Hono, HonoAdapterContext>> {
12
+ name: string;
13
+ app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
14
+ private server;
15
+ private options;
16
+ private readonly methodMap;
17
+ constructor(websocketAdapter: AsenaWebsocketAdapter<Hono, HonoAdapterContext>, logger?: ServerLogger);
18
+ use(middleware: BaseMiddleware<HonoAdapterContext>, path?: string): void;
19
+ registerRoute({ method, path, middleware, handler, staticServe, validator, }: RouteParams<HonoAdapterContext, ValidationSchema>): Promise<void>;
20
+ start(): Promise<Server>;
21
+ onError(errorHandler: HonoErrorHandler): void;
22
+ serveOptions(options: () => Promise<AsenaServeOptions> | AsenaServeOptions): Promise<void>;
23
+ setPort(port: number): void;
24
+ private prepareMiddlewares;
25
+ private prepareHandler;
26
+ private prepareValidator;
27
+ private normalizePath;
28
+ }
@@ -1,14 +1,18 @@
1
1
  import { AsenaAdapter } from '../AsenaAdapter';
2
2
  import { Hono } from 'hono';
3
3
  import * as bun from 'bun';
4
- import { createFactory } from 'hono/factory';
5
- import { DefaultContextWrapper } from './DefaultContextWrapper';
4
+ import { HonoContextWrapper } from './HonoContextWrapper';
6
5
  import { HttpMethod } from '../../server/web/http';
7
- import { green, yellow } from '../../services';
8
- export class DefaultAdapter extends AsenaAdapter {
9
- static VALIDATOR_METHODS = ['json', 'query', 'form', 'param', 'header'];
6
+ import { VALIDATOR_METHODS, } from '../../server/web/types';
7
+ import { green, yellow } from '../../logger';
8
+ import { zValidator } from '@hono/zod-validator';
9
+ import { middlewareParser } from './utils/middlewareParser';
10
+ export class HonoAdapter extends AsenaAdapter {
11
+ name = 'HonoAdapter';
10
12
  app = new Hono();
11
13
  server;
14
+ // @ts-ignore
15
+ options = {};
12
16
  methodMap = {
13
17
  [HttpMethod.GET]: (path, ...handlers) => this.app.get(path, ...handlers),
14
18
  [HttpMethod.POST]: (path, ...handlers) => this.app.post(path, ...handlers),
@@ -30,63 +34,81 @@ export class DefaultAdapter extends AsenaAdapter {
30
34
  }
31
35
  use(middleware, path) {
32
36
  const normalizedPath = path ? this.normalizePath(path) : undefined;
33
- const preparedMiddlewares = this.prepareMiddlewares(middleware);
37
+ const preparedMiddlewares = this.prepareMiddlewares([middleware]);
34
38
  if (normalizedPath) {
35
39
  this.app.use(normalizedPath, ...preparedMiddlewares);
36
40
  return;
37
41
  }
38
42
  this.app.use(...preparedMiddlewares);
39
43
  }
40
- registerRoute({ method, path, middleware, handler, staticServe, validator, }) {
41
- const middlewares = validator ? [...validator, ...middleware] : middleware;
42
- const routeHandler = staticServe ? middleware : [...middlewares, handler];
44
+ async registerRoute({ method, path, middleware, handler, staticServe, validator, }) {
45
+ const middlewares = this.prepareMiddlewares(middleware);
46
+ const allMiddlewares = validator
47
+ ? [...(await this.prepareValidator(validator)), ...middlewares]
48
+ : middlewares;
49
+ const routeHandler = staticServe ? allMiddlewares : [...allMiddlewares, this.prepareHandler(handler)];
43
50
  const methodHandler = this.methodMap[method];
44
51
  if (!methodHandler) {
45
52
  throw new Error('Invalid method');
46
53
  }
47
54
  methodHandler(path, ...routeHandler);
48
- this.logger.info(`${green('Successfully')} registered ${yellow(method.toUpperCase())} route for PATH: ${green(`/${path}`)}`);
55
+ this.logger.info(`${green('Successfully')} registered ${yellow(method.toUpperCase())} route for PATH: ${green(`${path}`)}`);
49
56
  }
50
57
  async start() {
51
- this.websocketAdapter.buildWebsocket();
52
- this.server = bun.serve({ port: this.port, fetch: this.app.fetch, websocket: this.websocketAdapter.websocket });
58
+ this.websocketAdapter.buildWebsocket(this.options?.wsOptions);
59
+ this.server = bun.serve({
60
+ ...this.options.serveOptions,
61
+ port: this.port,
62
+ fetch: this.app.fetch,
63
+ websocket: this.websocketAdapter.websocket,
64
+ });
53
65
  this.websocketAdapter.startWebsocket(this.server);
54
66
  return this.server;
55
67
  }
56
- prepareMiddlewares(middlewares) {
57
- const _middlewares = Array.isArray(middlewares) ? middlewares : [middlewares];
58
- const factory = createFactory();
59
- return _middlewares.map((middleware) => {
60
- if (middleware.override) {
61
- return (c, next) => middleware.middlewareService.handle(c, next);
62
- }
63
- return factory.createMiddleware(async (context, next) => {
64
- await middleware.middlewareService.handle(new DefaultContextWrapper(context), next);
65
- });
66
- });
67
- }
68
- prepareHandler(handler) {
69
- return (c) => handler()(new DefaultContextWrapper(c));
70
- }
71
68
  onError(errorHandler) {
72
69
  this.app.onError((error, context) => {
73
- return errorHandler(error, new DefaultContextWrapper(context));
70
+ return errorHandler(error, new HonoContextWrapper(context));
74
71
  });
75
72
  }
73
+ async serveOptions(options) {
74
+ this.options = await options();
75
+ }
76
76
  setPort(port) {
77
77
  this.port = port;
78
78
  }
79
- prepareValidator(Validator) {
80
- if (!Validator) {
79
+ prepareMiddlewares(middlewares) {
80
+ return middlewareParser(middlewares);
81
+ }
82
+ prepareHandler(handler) {
83
+ return (c) => handler(new HonoContextWrapper(c));
84
+ }
85
+ async prepareValidator(baseValidator) {
86
+ if (!baseValidator) {
81
87
  return [];
82
88
  }
83
- const validatorInstance = new Validator();
84
- return DefaultAdapter.VALIDATOR_METHODS.filter((key) => validatorInstance[key]).map((key) => {
85
- return validatorInstance[key]();
86
- });
89
+ const validators = [];
90
+ for (const key of VALIDATOR_METHODS) {
91
+ // if the key is not a validator method, skip
92
+ if (typeof baseValidator[key]?.handle !== 'function') {
93
+ continue;
94
+ }
95
+ const validator = baseValidator[key];
96
+ const validationSchema = await validator.handle();
97
+ let schema;
98
+ let hook;
99
+ if ('schema' in validationSchema) {
100
+ schema = validationSchema['schema'];
101
+ hook = validationSchema['hook'];
102
+ }
103
+ else {
104
+ schema = validationSchema;
105
+ }
106
+ validators.push(zValidator(key, schema, hook));
107
+ }
108
+ return validators;
87
109
  }
88
110
  normalizePath(path) {
89
111
  return `${path.endsWith('/') ? path : `${path}/`}*`;
90
112
  }
91
113
  }
92
- //# sourceMappingURL=DefaultAdapter.js.map
114
+ //# sourceMappingURL=HonoAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HonoAdapter.js","sourceRoot":"","sources":["../../../../lib/adapter/hono/HonoAdapter.ts"],"names":[],"mappings":"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"}