@adaas/a-server 0.0.22 → 0.0.23

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 (516) hide show
  1. package/.conf/tsconfig.base.json +79 -0
  2. package/.conf/tsconfig.browser.json +32 -0
  3. package/.conf/tsconfig.node.json +33 -0
  4. package/LICENSE +10 -19
  5. package/dist/browser/index.d.mts +1669 -0
  6. package/dist/browser/index.mjs +2869 -0
  7. package/dist/browser/index.mjs.map +1 -0
  8. package/dist/node/A-Request.entity-8_9MCXT2.d.ts +533 -0
  9. package/dist/node/A-Request.entity-r905O60G.d.mts +533 -0
  10. package/dist/node/A-Response.entity-BVYAc6-8.d.mts +318 -0
  11. package/dist/node/A-Response.entity-CRc-t-vr.d.ts +318 -0
  12. package/dist/node/channels/A-Http/A-Http.channel.constants.d.mts +9 -0
  13. package/dist/node/channels/A-Http/A-Http.channel.constants.d.ts +9 -0
  14. package/dist/node/channels/A-Http/A-Http.channel.constants.js +13 -0
  15. package/dist/node/channels/A-Http/A-Http.channel.constants.js.map +1 -0
  16. package/dist/node/channels/A-Http/A-Http.channel.constants.mjs +12 -0
  17. package/dist/node/channels/A-Http/A-Http.channel.constants.mjs.map +1 -0
  18. package/dist/node/channels/A-Http/A-Http.channel.d.mts +23 -0
  19. package/dist/node/channels/A-Http/A-Http.channel.d.ts +23 -0
  20. package/dist/node/channels/A-Http/A-Http.channel.error.d.mts +7 -0
  21. package/dist/node/channels/A-Http/A-Http.channel.error.d.ts +7 -0
  22. package/dist/node/channels/A-Http/A-Http.channel.error.js +11 -0
  23. package/dist/node/channels/A-Http/A-Http.channel.error.js.map +1 -0
  24. package/dist/node/channels/A-Http/A-Http.channel.error.mjs +10 -0
  25. package/dist/node/channels/A-Http/A-Http.channel.error.mjs.map +1 -0
  26. package/dist/node/channels/A-Http/A-Http.channel.js +122 -0
  27. package/dist/node/channels/A-Http/A-Http.channel.js.map +1 -0
  28. package/dist/node/channels/A-Http/A-Http.channel.mjs +110 -0
  29. package/dist/node/channels/A-Http/A-Http.channel.mjs.map +1 -0
  30. package/dist/node/channels/A-Http/A-Http.channel.types.d.mts +67 -0
  31. package/dist/node/channels/A-Http/A-Http.channel.types.d.ts +67 -0
  32. package/dist/node/channels/A-Http/A-Http.channel.types.js +4 -0
  33. package/dist/node/channels/A-Http/A-Http.channel.types.js.map +1 -0
  34. package/dist/node/channels/A-Http/A-Http.channel.types.mjs +3 -0
  35. package/dist/node/channels/A-Http/A-Http.channel.types.mjs.map +1 -0
  36. package/dist/node/channels/A-Websockets/A-Websockets.channel.d.mts +7 -0
  37. package/dist/node/channels/A-Websockets/A-Websockets.channel.d.ts +7 -0
  38. package/dist/node/channels/A-Websockets/A-Websockets.channel.js +13 -0
  39. package/dist/node/channels/A-Websockets/A-Websockets.channel.js.map +1 -0
  40. package/dist/node/channels/A-Websockets/A-Websockets.channel.mjs +12 -0
  41. package/dist/node/channels/A-Websockets/A-Websockets.channel.mjs.map +1 -0
  42. package/dist/node/chunk-EQQGB2QZ.mjs +15 -0
  43. package/dist/node/chunk-EQQGB2QZ.mjs.map +1 -0
  44. package/dist/node/constants/env.constants.d.mts +12 -0
  45. package/dist/node/constants/env.constants.d.ts +12 -0
  46. package/dist/node/constants/env.constants.js +23 -0
  47. package/dist/node/constants/env.constants.js.map +1 -0
  48. package/dist/node/constants/env.constants.mjs +22 -0
  49. package/dist/node/constants/env.constants.mjs.map +1 -0
  50. package/dist/node/controllers/A-CommandController/A-CommandController.component.d.mts +29 -0
  51. package/dist/node/controllers/A-CommandController/A-CommandController.component.d.ts +29 -0
  52. package/dist/node/controllers/A-CommandController/A-CommandController.component.js +55 -0
  53. package/dist/node/controllers/A-CommandController/A-CommandController.component.js.map +1 -0
  54. package/dist/node/controllers/A-CommandController/A-CommandController.component.mjs +43 -0
  55. package/dist/node/controllers/A-CommandController/A-CommandController.component.mjs.map +1 -0
  56. package/dist/node/controllers/A-EntityController/A-EntityController.component.d.mts +44 -0
  57. package/dist/node/controllers/A-EntityController/A-EntityController.component.d.ts +44 -0
  58. package/dist/node/controllers/A-EntityController/A-EntityController.component.js +189 -0
  59. package/dist/node/controllers/A-EntityController/A-EntityController.component.js.map +1 -0
  60. package/dist/node/controllers/A-EntityController/A-EntityController.component.mjs +177 -0
  61. package/dist/node/controllers/A-EntityController/A-EntityController.component.mjs.map +1 -0
  62. package/dist/node/controllers/A-EntityController/A-EntityController.component.types.d.mts +2 -0
  63. package/dist/node/controllers/A-EntityController/A-EntityController.component.types.d.ts +2 -0
  64. package/dist/node/controllers/A-EntityController/A-EntityController.component.types.js +4 -0
  65. package/dist/node/controllers/A-EntityController/A-EntityController.component.types.js.map +1 -0
  66. package/dist/node/controllers/A-EntityController/A-EntityController.component.types.mjs +3 -0
  67. package/dist/node/controllers/A-EntityController/A-EntityController.component.types.mjs.map +1 -0
  68. package/dist/node/controllers/A-ListingController/A-ListingController.component.d.mts +28 -0
  69. package/dist/node/controllers/A-ListingController/A-ListingController.component.d.ts +28 -0
  70. package/dist/node/controllers/A-ListingController/A-ListingController.component.js +59 -0
  71. package/dist/node/controllers/A-ListingController/A-ListingController.component.js.map +1 -0
  72. package/dist/node/controllers/A-ListingController/A-ListingController.component.mjs +47 -0
  73. package/dist/node/controllers/A-ListingController/A-ListingController.component.mjs.map +1 -0
  74. package/dist/node/controllers/A-ListingController/A-ListingController.types.d.mts +2 -0
  75. package/dist/node/controllers/A-ListingController/A-ListingController.types.d.ts +2 -0
  76. package/dist/node/controllers/A-ListingController/A-ListingController.types.js +4 -0
  77. package/dist/node/controllers/A-ListingController/A-ListingController.types.js.map +1 -0
  78. package/dist/node/controllers/A-ListingController/A-ListingController.types.mjs +3 -0
  79. package/dist/node/controllers/A-ListingController/A-ListingController.types.mjs.map +1 -0
  80. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.d.mts +30 -0
  81. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.d.ts +30 -0
  82. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.js +46 -0
  83. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.js.map +1 -0
  84. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.mjs +34 -0
  85. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.mjs.map +1 -0
  86. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.types.d.mts +2 -0
  87. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.types.d.ts +2 -0
  88. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.types.js +4 -0
  89. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.types.js.map +1 -0
  90. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.types.mjs +3 -0
  91. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.types.mjs.map +1 -0
  92. package/dist/node/index.d.mts +51 -0
  93. package/dist/node/index.d.ts +51 -0
  94. package/dist/node/index.js +320 -0
  95. package/dist/node/index.js.map +1 -0
  96. package/dist/node/index.mjs +48 -0
  97. package/dist/node/index.mjs.map +1 -0
  98. package/dist/node/lib/A-Request/A-HttpRequestData.context.d.mts +12 -0
  99. package/dist/node/lib/A-Request/A-HttpRequestData.context.d.ts +12 -0
  100. package/dist/node/lib/A-Request/A-HttpRequestData.context.js +25 -0
  101. package/dist/node/lib/A-Request/A-HttpRequestData.context.js.map +1 -0
  102. package/dist/node/lib/A-Request/A-HttpRequestData.context.mjs +24 -0
  103. package/dist/node/lib/A-Request/A-HttpRequestData.context.mjs.map +1 -0
  104. package/dist/node/lib/A-Request/A-HttpServerRequest.context.d.mts +39 -0
  105. package/dist/node/lib/A-Request/A-HttpServerRequest.context.d.ts +39 -0
  106. package/dist/node/lib/A-Request/A-HttpServerRequest.context.js +56 -0
  107. package/dist/node/lib/A-Request/A-HttpServerRequest.context.js.map +1 -0
  108. package/dist/node/lib/A-Request/A-HttpServerRequest.context.mjs +55 -0
  109. package/dist/node/lib/A-Request/A-HttpServerRequest.context.mjs.map +1 -0
  110. package/dist/node/lib/A-Request/A-Request.constants.d.mts +18 -0
  111. package/dist/node/lib/A-Request/A-Request.constants.d.ts +18 -0
  112. package/dist/node/lib/A-Request/A-Request.constants.js +22 -0
  113. package/dist/node/lib/A-Request/A-Request.constants.js.map +1 -0
  114. package/dist/node/lib/A-Request/A-Request.constants.mjs +22 -0
  115. package/dist/node/lib/A-Request/A-Request.constants.mjs.map +1 -0
  116. package/dist/node/lib/A-Request/A-Request.entity.d.mts +17 -0
  117. package/dist/node/lib/A-Request/A-Request.entity.d.ts +17 -0
  118. package/dist/node/lib/A-Request/A-Request.entity.js +651 -0
  119. package/dist/node/lib/A-Request/A-Request.entity.js.map +1 -0
  120. package/dist/node/lib/A-Request/A-Request.entity.mjs +639 -0
  121. package/dist/node/lib/A-Request/A-Request.entity.mjs.map +1 -0
  122. package/dist/node/lib/A-Request/A-Request.env.d.mts +37 -0
  123. package/dist/node/lib/A-Request/A-Request.env.d.ts +37 -0
  124. package/dist/node/lib/A-Request/A-Request.env.js +39 -0
  125. package/dist/node/lib/A-Request/A-Request.env.js.map +1 -0
  126. package/dist/node/lib/A-Request/A-Request.env.mjs +38 -0
  127. package/dist/node/lib/A-Request/A-Request.env.mjs.map +1 -0
  128. package/dist/node/lib/A-Request/A-Request.error.d.mts +11 -0
  129. package/dist/node/lib/A-Request/A-Request.error.d.ts +11 -0
  130. package/dist/node/lib/A-Request/A-Request.error.js +15 -0
  131. package/dist/node/lib/A-Request/A-Request.error.js.map +1 -0
  132. package/dist/node/lib/A-Request/A-Request.error.mjs +14 -0
  133. package/dist/node/lib/A-Request/A-Request.error.mjs.map +1 -0
  134. package/dist/node/lib/A-Request/A-Request.helper.d.mts +105 -0
  135. package/dist/node/lib/A-Request/A-Request.helper.d.ts +105 -0
  136. package/dist/node/lib/A-Request/A-Request.helper.js +181 -0
  137. package/dist/node/lib/A-Request/A-Request.helper.js.map +1 -0
  138. package/dist/node/lib/A-Request/A-Request.helper.mjs +180 -0
  139. package/dist/node/lib/A-Request/A-Request.helper.mjs.map +1 -0
  140. package/dist/node/lib/A-Request/A-Request.types.d.mts +17 -0
  141. package/dist/node/lib/A-Request/A-Request.types.d.ts +17 -0
  142. package/dist/node/lib/A-Request/A-Request.types.js +14 -0
  143. package/dist/node/lib/A-Request/A-Request.types.js.map +1 -0
  144. package/dist/node/lib/A-Request/A-Request.types.mjs +14 -0
  145. package/dist/node/lib/A-Request/A-Request.types.mjs.map +1 -0
  146. package/dist/node/lib/A-Response/A-Response.constants.d.mts +24 -0
  147. package/dist/node/lib/A-Response/A-Response.constants.d.ts +24 -0
  148. package/dist/node/lib/A-Response/A-Response.constants.js +28 -0
  149. package/dist/node/lib/A-Response/A-Response.constants.js.map +1 -0
  150. package/dist/node/lib/A-Response/A-Response.constants.mjs +28 -0
  151. package/dist/node/lib/A-Response/A-Response.constants.mjs.map +1 -0
  152. package/dist/node/lib/A-Response/A-Response.entity.d.mts +20 -0
  153. package/dist/node/lib/A-Response/A-Response.entity.d.ts +20 -0
  154. package/dist/node/lib/A-Response/A-Response.entity.js +544 -0
  155. package/dist/node/lib/A-Response/A-Response.entity.js.map +1 -0
  156. package/dist/node/lib/A-Response/A-Response.entity.mjs +532 -0
  157. package/dist/node/lib/A-Response/A-Response.entity.mjs.map +1 -0
  158. package/dist/node/lib/A-Response/A-Response.env.d.mts +2 -0
  159. package/dist/node/lib/A-Response/A-Response.env.d.ts +2 -0
  160. package/dist/node/lib/A-Response/A-Response.env.js +4 -0
  161. package/dist/node/lib/A-Response/A-Response.env.js.map +1 -0
  162. package/dist/node/lib/A-Response/A-Response.env.mjs +3 -0
  163. package/dist/node/lib/A-Response/A-Response.env.mjs.map +1 -0
  164. package/dist/node/lib/A-Response/A-Response.error.d.mts +6 -0
  165. package/dist/node/lib/A-Response/A-Response.error.d.ts +6 -0
  166. package/dist/node/lib/A-Response/A-Response.error.js +10 -0
  167. package/dist/node/lib/A-Response/A-Response.error.js.map +1 -0
  168. package/dist/node/lib/A-Response/A-Response.error.mjs +9 -0
  169. package/dist/node/lib/A-Response/A-Response.error.mjs.map +1 -0
  170. package/dist/node/lib/A-Response/A-Response.types.d.mts +20 -0
  171. package/dist/node/lib/A-Response/A-Response.types.d.ts +20 -0
  172. package/dist/node/lib/A-Response/A-Response.types.js +4 -0
  173. package/dist/node/lib/A-Response/A-Response.types.js.map +1 -0
  174. package/dist/node/lib/A-Response/A-Response.types.mjs +3 -0
  175. package/dist/node/lib/A-Response/A-Response.types.mjs.map +1 -0
  176. package/dist/node/lib/A-Server/A-HttpServer.constants.d.mts +7 -0
  177. package/dist/node/lib/A-Server/A-HttpServer.constants.d.ts +7 -0
  178. package/dist/node/lib/A-Server/A-HttpServer.constants.js +11 -0
  179. package/dist/node/lib/A-Server/A-HttpServer.constants.js.map +1 -0
  180. package/dist/node/lib/A-Server/A-HttpServer.constants.mjs +11 -0
  181. package/dist/node/lib/A-Server/A-HttpServer.constants.mjs.map +1 -0
  182. package/dist/node/lib/A-Server/A-HttpServer.container.d.mts +50 -0
  183. package/dist/node/lib/A-Server/A-HttpServer.container.d.ts +50 -0
  184. package/dist/node/lib/A-Server/A-HttpServer.container.js +194 -0
  185. package/dist/node/lib/A-Server/A-HttpServer.container.js.map +1 -0
  186. package/dist/node/lib/A-Server/A-HttpServer.container.mjs +182 -0
  187. package/dist/node/lib/A-Server/A-HttpServer.container.mjs.map +1 -0
  188. package/dist/node/lib/A-Server/A-HttpServer.error.d.mts +54 -0
  189. package/dist/node/lib/A-Server/A-HttpServer.error.d.ts +54 -0
  190. package/dist/node/lib/A-Server/A-HttpServer.error.js +118 -0
  191. package/dist/node/lib/A-Server/A-HttpServer.error.js.map +1 -0
  192. package/dist/node/lib/A-Server/A-HttpServer.error.mjs +117 -0
  193. package/dist/node/lib/A-Server/A-HttpServer.error.mjs.map +1 -0
  194. package/dist/node/lib/A-Server/A-HttpServer.types.d.mts +19 -0
  195. package/dist/node/lib/A-Server/A-HttpServer.types.d.ts +19 -0
  196. package/dist/node/lib/A-Server/A-HttpServer.types.js +4 -0
  197. package/dist/node/lib/A-Server/A-HttpServer.types.js.map +1 -0
  198. package/dist/node/lib/A-Server/A-HttpServer.types.mjs +3 -0
  199. package/dist/node/lib/A-Server/A-HttpServer.types.mjs.map +1 -0
  200. package/dist/node/lib/A-Server/A-Server.context.d.mts +22 -0
  201. package/dist/node/lib/A-Server/A-Server.context.d.ts +22 -0
  202. package/dist/node/lib/A-Server/A-Server.context.js +24 -0
  203. package/dist/node/lib/A-Server/A-Server.context.js.map +1 -0
  204. package/dist/node/lib/A-Server/A-Server.context.mjs +23 -0
  205. package/dist/node/lib/A-Server/A-Server.context.mjs.map +1 -0
  206. package/dist/node/lib/A-Server/A-Server.error.d.mts +14 -0
  207. package/dist/node/lib/A-Server/A-Server.error.d.ts +14 -0
  208. package/dist/node/lib/A-Server/A-Server.error.js +26 -0
  209. package/dist/node/lib/A-Server/A-Server.error.js.map +1 -0
  210. package/dist/node/lib/A-Server/A-Server.error.mjs +25 -0
  211. package/dist/node/lib/A-Server/A-Server.error.mjs.map +1 -0
  212. package/dist/node/lib/A-Server/A-Server.types.d.mts +26 -0
  213. package/dist/node/lib/A-Server/A-Server.types.d.ts +26 -0
  214. package/dist/node/lib/A-Server/A-Server.types.js +4 -0
  215. package/dist/node/lib/A-Server/A-Server.types.js.map +1 -0
  216. package/dist/node/lib/A-Server/A-Server.types.mjs +3 -0
  217. package/dist/node/lib/A-Server/A-Server.types.mjs.map +1 -0
  218. package/dist/node/lib/A-ServerController/A-ServerController.component.d.mts +29 -0
  219. package/dist/node/lib/A-ServerController/A-ServerController.component.d.ts +29 -0
  220. package/dist/node/lib/A-ServerController/A-ServerController.component.js +49 -0
  221. package/dist/node/lib/A-ServerController/A-ServerController.component.js.map +1 -0
  222. package/dist/node/lib/A-ServerController/A-ServerController.component.mjs +37 -0
  223. package/dist/node/lib/A-ServerController/A-ServerController.component.mjs.map +1 -0
  224. package/dist/node/lib/A-ServerController/A-ServerController.types.d.mts +2 -0
  225. package/dist/node/lib/A-ServerController/A-ServerController.types.d.ts +2 -0
  226. package/dist/node/lib/A-ServerController/A-ServerController.types.js +4 -0
  227. package/dist/node/lib/A-ServerController/A-ServerController.types.js.map +1 -0
  228. package/dist/node/lib/A-ServerController/A-ServerController.types.mjs +3 -0
  229. package/dist/node/lib/A-ServerController/A-ServerController.types.mjs.map +1 -0
  230. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.d.mts +49 -0
  231. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.d.ts +49 -0
  232. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.js +91 -0
  233. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.js.map +1 -0
  234. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.mjs +90 -0
  235. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.mjs.map +1 -0
  236. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.d.mts +22 -0
  237. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.d.ts +22 -0
  238. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.js +10 -0
  239. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.js.map +1 -0
  240. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.mjs +10 -0
  241. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.mjs.map +1 -0
  242. package/dist/node/lib/A-ServerListQuery/A-ServerListQueryFilter.context.d.mts +13 -0
  243. package/dist/node/lib/A-ServerListQuery/A-ServerListQueryFilter.context.d.ts +13 -0
  244. package/dist/node/lib/A-ServerListQuery/A-ServerListQueryFilter.context.js +32 -0
  245. package/dist/node/lib/A-ServerListQuery/A-ServerListQueryFilter.context.js.map +1 -0
  246. package/dist/node/lib/A-ServerListQuery/A-ServerListQueryFilter.context.mjs +31 -0
  247. package/dist/node/lib/A-ServerListQuery/A-ServerListQueryFilter.context.mjs.map +1 -0
  248. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.d.mts +48 -0
  249. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.d.ts +48 -0
  250. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.js +88 -0
  251. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.js.map +1 -0
  252. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.mjs +76 -0
  253. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.mjs.map +1 -0
  254. package/dist/node/lib/A-ServerLogger/A-ServerLogger.constants.d.mts +24 -0
  255. package/dist/node/lib/A-ServerLogger/A-ServerLogger.constants.d.ts +24 -0
  256. package/dist/node/lib/A-ServerLogger/A-ServerLogger.constants.js +33 -0
  257. package/dist/node/lib/A-ServerLogger/A-ServerLogger.constants.js.map +1 -0
  258. package/dist/node/lib/A-ServerLogger/A-ServerLogger.constants.mjs +33 -0
  259. package/dist/node/lib/A-ServerLogger/A-ServerLogger.constants.mjs.map +1 -0
  260. package/dist/node/lib/A-ServerLogger/A-ServerLogger.types.d.mts +12 -0
  261. package/dist/node/lib/A-ServerLogger/A-ServerLogger.types.d.ts +12 -0
  262. package/dist/node/lib/A-ServerLogger/A-ServerLogger.types.js +4 -0
  263. package/dist/node/lib/A-ServerLogger/A-ServerLogger.types.js.map +1 -0
  264. package/dist/node/lib/A-ServerLogger/A-ServerLogger.types.mjs +3 -0
  265. package/dist/node/lib/A-ServerLogger/A-ServerLogger.types.mjs.map +1 -0
  266. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.component.d.mts +6 -0
  267. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.component.d.ts +6 -0
  268. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.component.js +18 -0
  269. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.component.js.map +1 -0
  270. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.component.mjs +17 -0
  271. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.component.mjs.map +1 -0
  272. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.constants.d.mts +2 -0
  273. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.constants.d.ts +2 -0
  274. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.constants.js +4 -0
  275. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.constants.js.map +1 -0
  276. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.constants.mjs +3 -0
  277. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.constants.mjs.map +1 -0
  278. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.types.d.mts +2 -0
  279. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.types.d.ts +2 -0
  280. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.types.js +4 -0
  281. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.types.js.map +1 -0
  282. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.types.mjs +3 -0
  283. package/dist/node/lib/A-ServerMiddleware/A-ServerMiddleware.types.mjs.map +1 -0
  284. package/dist/node/lib/A-ServerProxy/A-ServerProxy.component.d.mts +31 -0
  285. package/dist/node/lib/A-ServerProxy/A-ServerProxy.component.d.ts +31 -0
  286. package/dist/node/lib/A-ServerProxy/A-ServerProxy.component.js +90 -0
  287. package/dist/node/lib/A-ServerProxy/A-ServerProxy.component.js.map +1 -0
  288. package/dist/node/lib/A-ServerProxy/A-ServerProxy.component.mjs +78 -0
  289. package/dist/node/lib/A-ServerProxy/A-ServerProxy.component.mjs.map +1 -0
  290. package/dist/node/lib/A-ServerProxy/A-ServerProxy.constants.d.mts +9 -0
  291. package/dist/node/lib/A-ServerProxy/A-ServerProxy.constants.d.ts +9 -0
  292. package/dist/node/lib/A-ServerProxy/A-ServerProxy.constants.js +14 -0
  293. package/dist/node/lib/A-ServerProxy/A-ServerProxy.constants.js.map +1 -0
  294. package/dist/node/lib/A-ServerProxy/A-ServerProxy.constants.mjs +14 -0
  295. package/dist/node/lib/A-ServerProxy/A-ServerProxy.constants.mjs.map +1 -0
  296. package/dist/node/lib/A-ServerProxy/A-ServerProxy.context.d.mts +36 -0
  297. package/dist/node/lib/A-ServerProxy/A-ServerProxy.context.d.ts +36 -0
  298. package/dist/node/lib/A-ServerProxy/A-ServerProxy.context.js +60 -0
  299. package/dist/node/lib/A-ServerProxy/A-ServerProxy.context.js.map +1 -0
  300. package/dist/node/lib/A-ServerProxy/A-ServerProxy.context.mjs +59 -0
  301. package/dist/node/lib/A-ServerProxy/A-ServerProxy.context.mjs.map +1 -0
  302. package/dist/node/lib/A-ServerProxy/A-ServerProxy.types.d.mts +23 -0
  303. package/dist/node/lib/A-ServerProxy/A-ServerProxy.types.d.ts +23 -0
  304. package/dist/node/lib/A-ServerProxy/A-ServerProxy.types.js +4 -0
  305. package/dist/node/lib/A-ServerProxy/A-ServerProxy.types.js.map +1 -0
  306. package/dist/node/lib/A-ServerProxy/A-ServerProxy.types.mjs +3 -0
  307. package/dist/node/lib/A-ServerProxy/A-ServerProxy.types.mjs.map +1 -0
  308. package/dist/node/lib/A-ServerRoute/A-ServerRoute.constants.d.mts +20 -0
  309. package/dist/node/lib/A-ServerRoute/A-ServerRoute.constants.d.ts +20 -0
  310. package/dist/node/lib/A-ServerRoute/A-ServerRoute.constants.js +25 -0
  311. package/dist/node/lib/A-ServerRoute/A-ServerRoute.constants.js.map +1 -0
  312. package/dist/node/lib/A-ServerRoute/A-ServerRoute.constants.mjs +24 -0
  313. package/dist/node/lib/A-ServerRoute/A-ServerRoute.constants.mjs.map +1 -0
  314. package/dist/node/lib/A-ServerRoute/A-ServerRoute.entity.d.mts +15 -0
  315. package/dist/node/lib/A-ServerRoute/A-ServerRoute.entity.d.ts +15 -0
  316. package/dist/node/lib/A-ServerRoute/A-ServerRoute.entity.js +24 -0
  317. package/dist/node/lib/A-ServerRoute/A-ServerRoute.entity.js.map +1 -0
  318. package/dist/node/lib/A-ServerRoute/A-ServerRoute.entity.mjs +23 -0
  319. package/dist/node/lib/A-ServerRoute/A-ServerRoute.entity.mjs.map +1 -0
  320. package/dist/node/lib/A-ServerRoute/A-ServerRoute.types.d.mts +6 -0
  321. package/dist/node/lib/A-ServerRoute/A-ServerRoute.types.d.ts +6 -0
  322. package/dist/node/lib/A-ServerRoute/A-ServerRoute.types.js +4 -0
  323. package/dist/node/lib/A-ServerRoute/A-ServerRoute.types.js.map +1 -0
  324. package/dist/node/lib/A-ServerRoute/A-ServerRoute.types.mjs +3 -0
  325. package/dist/node/lib/A-ServerRoute/A-ServerRoute.types.mjs.map +1 -0
  326. package/dist/node/lib/A-ServerRouter/A-ServerRouter.component.d.mts +84 -0
  327. package/dist/node/lib/A-ServerRouter/A-ServerRouter.component.d.ts +84 -0
  328. package/dist/node/lib/A-ServerRouter/A-ServerRouter.component.js +194 -0
  329. package/dist/node/lib/A-ServerRouter/A-ServerRouter.component.js.map +1 -0
  330. package/dist/node/lib/A-ServerRouter/A-ServerRouter.component.mjs +184 -0
  331. package/dist/node/lib/A-ServerRouter/A-ServerRouter.component.mjs.map +1 -0
  332. package/dist/node/lib/A-ServerRouter/A-ServerRouter.constants.d.mts +6 -0
  333. package/dist/node/lib/A-ServerRouter/A-ServerRouter.constants.d.ts +6 -0
  334. package/dist/node/lib/A-ServerRouter/A-ServerRouter.constants.js +10 -0
  335. package/dist/node/lib/A-ServerRouter/A-ServerRouter.constants.js.map +1 -0
  336. package/dist/node/lib/A-ServerRouter/A-ServerRouter.constants.mjs +10 -0
  337. package/dist/node/lib/A-ServerRouter/A-ServerRouter.constants.mjs.map +1 -0
  338. package/dist/node/lib/A-ServerRouter/A-ServerRouter.meta.d.mts +16 -0
  339. package/dist/node/lib/A-ServerRouter/A-ServerRouter.meta.d.ts +16 -0
  340. package/dist/node/lib/A-ServerRouter/A-ServerRouter.meta.js +40 -0
  341. package/dist/node/lib/A-ServerRouter/A-ServerRouter.meta.js.map +1 -0
  342. package/dist/node/lib/A-ServerRouter/A-ServerRouter.meta.mjs +39 -0
  343. package/dist/node/lib/A-ServerRouter/A-ServerRouter.meta.mjs.map +1 -0
  344. package/dist/node/lib/A-ServerRouter/A-ServerRouter.types.d.mts +24 -0
  345. package/dist/node/lib/A-ServerRouter/A-ServerRouter.types.d.ts +24 -0
  346. package/dist/node/lib/A-ServerRouter/A-ServerRouter.types.js +4 -0
  347. package/dist/node/lib/A-ServerRouter/A-ServerRouter.types.js.map +1 -0
  348. package/dist/node/lib/A-ServerRouter/A-ServerRouter.types.mjs +3 -0
  349. package/dist/node/lib/A-ServerRouter/A-ServerRouter.types.mjs.map +1 -0
  350. package/dist/node/lib/A-ServerRouter/A-ServerRouterDefine.decorator.d.mts +16 -0
  351. package/dist/node/lib/A-ServerRouter/A-ServerRouterDefine.decorator.d.ts +16 -0
  352. package/dist/node/lib/A-ServerRouter/A-ServerRouterDefine.decorator.js +25 -0
  353. package/dist/node/lib/A-ServerRouter/A-ServerRouterDefine.decorator.js.map +1 -0
  354. package/dist/node/lib/A-ServerRouter/A-ServerRouterDefine.decorator.mjs +24 -0
  355. package/dist/node/lib/A-ServerRouter/A-ServerRouterDefine.decorator.mjs.map +1 -0
  356. package/dist/node/lib/A-ServerStatic/A-ServerStatic.component.d.mts +65 -0
  357. package/dist/node/lib/A-ServerStatic/A-ServerStatic.component.d.ts +65 -0
  358. package/dist/node/lib/A-ServerStatic/A-ServerStatic.component.js +260 -0
  359. package/dist/node/lib/A-ServerStatic/A-ServerStatic.component.js.map +1 -0
  360. package/dist/node/lib/A-ServerStatic/A-ServerStatic.component.mjs +248 -0
  361. package/dist/node/lib/A-ServerStatic/A-ServerStatic.component.mjs.map +1 -0
  362. package/dist/node/lib/A-ServerStatic/A-ServerStatic.context.d.mts +110 -0
  363. package/dist/node/lib/A-ServerStatic/A-ServerStatic.context.d.ts +110 -0
  364. package/dist/node/lib/A-ServerStatic/A-ServerStatic.context.js +180 -0
  365. package/dist/node/lib/A-ServerStatic/A-ServerStatic.context.js.map +1 -0
  366. package/dist/node/lib/A-ServerStatic/A-ServerStatic.context.mjs +179 -0
  367. package/dist/node/lib/A-ServerStatic/A-ServerStatic.context.mjs.map +1 -0
  368. package/dist/node/lib/A-ServerStatic/A-ServerStatic.types.d.mts +8 -0
  369. package/dist/node/lib/A-ServerStatic/A-ServerStatic.types.d.ts +8 -0
  370. package/dist/node/lib/A-ServerStatic/A-ServerStatic.types.js +4 -0
  371. package/dist/node/lib/A-ServerStatic/A-ServerStatic.types.js.map +1 -0
  372. package/dist/node/lib/A-ServerStatic/A-ServerStatic.types.mjs +3 -0
  373. package/dist/node/lib/A-ServerStatic/A-ServerStatic.types.mjs.map +1 -0
  374. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.d.mts +29 -0
  375. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.d.ts +29 -0
  376. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.js +62 -0
  377. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.js.map +1 -0
  378. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.mjs +50 -0
  379. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.mjs.map +1 -0
  380. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.constants.d.mts +5 -0
  381. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.constants.d.ts +5 -0
  382. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.constants.js +14 -0
  383. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.constants.js.map +1 -0
  384. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.constants.mjs +14 -0
  385. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.constants.mjs.map +1 -0
  386. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.types.d.mts +9 -0
  387. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.types.d.ts +9 -0
  388. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.types.js +4 -0
  389. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.types.js.map +1 -0
  390. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.types.mjs +3 -0
  391. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.types.mjs.map +1 -0
  392. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.component.d.mts +24 -0
  393. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.component.d.ts +24 -0
  394. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.component.js +94 -0
  395. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.component.js.map +1 -0
  396. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.component.mjs +82 -0
  397. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.component.mjs.map +1 -0
  398. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.error.d.mts +2 -0
  399. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.error.d.ts +2 -0
  400. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.error.js +4 -0
  401. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.error.js.map +1 -0
  402. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.error.mjs +3 -0
  403. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.error.mjs.map +1 -0
  404. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.types.d.mts +2 -0
  405. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.types.d.ts +2 -0
  406. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.types.js +4 -0
  407. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.types.js.map +1 -0
  408. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.types.mjs +3 -0
  409. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.types.mjs.map +1 -0
  410. package/examples/simple-server/commands/SignIn.command.ts +17 -1
  411. package/examples/simple-server/components/Test.controller.ts +8 -7
  412. package/examples/simple-server/components/Users.repository.ts +28 -26
  413. package/examples/simple-server/concept.ts +56 -66
  414. package/examples/simple-server/entities/User/User.entity.ts +17 -7
  415. package/jest.config.ts +24 -10
  416. package/package.json +267 -25
  417. package/src/channels/A-Http/A-Http.channel.constants.ts +6 -7
  418. package/src/channels/A-Http/A-Http.channel.error.ts +2 -2
  419. package/src/channels/A-Http/A-Http.channel.ts +76 -125
  420. package/src/channels/A-Http/A-Http.channel.types.ts +6 -3
  421. package/src/channels/A-Websockets/A-Websockets.channel.ts +1 -1
  422. package/src/{components → controllers}/A-CommandController/A-CommandController.component.ts +16 -10
  423. package/src/{components → controllers}/A-EntityController/A-EntityController.component.ts +24 -28
  424. package/src/{components → controllers}/A-ListingController/A-ListingController.component.ts +10 -12
  425. package/src/{components → controllers}/A-ServerHealthMonitor/A-ServerHealthMonitor.component.ts +11 -11
  426. package/src/index.ts +58 -63
  427. package/src/lib/A-Request/A-HttpRequestData.context.ts +30 -0
  428. package/src/lib/A-Request/A-HttpServerRequest.context.ts +103 -0
  429. package/src/lib/A-Request/A-Request.constants.ts +30 -0
  430. package/src/lib/A-Request/A-Request.entity.ts +844 -0
  431. package/src/lib/A-Request/A-Request.env.ts +50 -0
  432. package/src/lib/A-Request/A-Request.error.ts +11 -0
  433. package/src/lib/A-Request/A-Request.helper.ts +276 -0
  434. package/src/lib/A-Request/A-Request.types.ts +284 -0
  435. package/src/lib/A-Request/README.md +567 -0
  436. package/src/lib/A-Response/A-Response.constants.ts +24 -0
  437. package/src/lib/A-Response/A-Response.entity.ts +689 -0
  438. package/src/lib/A-Response/A-Response.error.ts +6 -0
  439. package/src/lib/A-Response/A-Response.types.ts +127 -0
  440. package/src/lib/A-Response/README.md +793 -0
  441. package/src/lib/A-Server/A-HttpServer.constants.ts +9 -0
  442. package/src/lib/A-Server/A-HttpServer.container.ts +251 -0
  443. package/src/lib/A-Server/A-HttpServer.error.ts +165 -0
  444. package/src/lib/A-Server/A-HttpServer.types.ts +37 -0
  445. package/src/{context/A-Server/A_Server.context.ts → lib/A-Server/A-Server.context.ts} +6 -7
  446. package/src/lib/A-Server/A-Server.error.ts +26 -0
  447. package/src/{components/A-ServerError/A-ServerError.types.ts → lib/A-Server/A-Server.types.ts} +8 -0
  448. package/src/{components/A-Controller/A-Controller.component.ts → lib/A-ServerController/A-ServerController.component.ts} +5 -5
  449. package/src/{entities/A_EntityList/A_EntityList.entity.ts → lib/A-ServerEntityList/A-EntityList.entity.ts} +2 -2
  450. package/src/{entities/A_EntityList/A_EntityList.entity.types.ts → lib/A-ServerEntityList/A-EntityList.types.ts} +2 -2
  451. package/src/{context/A-ListQueryFilter/A_ListQueryFilter.context.ts → lib/A-ServerListQuery/A-ServerListQueryFilter.context.ts} +1 -1
  452. package/src/lib/A-ServerLogger/A-ServerLogger.component.ts +121 -0
  453. package/src/lib/A-ServerLogger/A-ServerLogger.types.ts +13 -0
  454. package/src/lib/A-ServerMiddleware/A-ServerMiddleware.component.ts +17 -0
  455. package/src/{components → lib}/A-ServerProxy/A-ServerProxy.component.ts +17 -12
  456. package/src/{context/A-ProxyConfig/A_ProxyConfig.constants.ts → lib/A-ServerProxy/A-ServerProxy.constants.ts} +1 -1
  457. package/src/{context/A-ProxyConfig/A_ProxyConfig.context.ts → lib/A-ServerProxy/A-ServerProxy.context.ts} +4 -4
  458. package/src/{context/A-ProxyConfig/A_ProxyConfig.types.ts → lib/A-ServerProxy/A-ServerProxy.types.ts} +4 -4
  459. package/src/lib/A-ServerRoute/A-ServerRoute.constants.ts +20 -0
  460. package/src/lib/A-ServerRoute/A-ServerRoute.entity.ts +48 -0
  461. package/src/lib/A-ServerRoute/A-ServerRoute.types.ts +6 -0
  462. package/src/{components/A-Router/A-Router.component.ts → lib/A-ServerRouter/A-ServerRouter.component.ts} +77 -97
  463. package/src/lib/A-ServerRouter/A-ServerRouter.constants.ts +8 -0
  464. package/src/lib/A-ServerRouter/A-ServerRouter.meta.ts +48 -0
  465. package/src/lib/A-ServerRouter/A-ServerRouter.types.ts +27 -0
  466. package/src/lib/A-ServerRouter/A-ServerRouterDefine.decorator.ts +37 -0
  467. package/src/{components/A-StaticLoader/A-StaticLoader.component.ts → lib/A-ServerStatic/A-ServerStatic.component.ts} +73 -54
  468. package/src/{context/A-StaticConfig/A-StaticConfig.context.ts → lib/A-ServerStatic/A-ServerStatic.context.ts} +16 -6
  469. package/src/{components → middlewares}/A-ServerCORS/A_ServerCORS.component.ts +16 -13
  470. package/src/{components/A-ServerCORS/A_ServerCORS.component.defaults.ts → middlewares/A-ServerCORS/A_ServerCORS.constants.ts} +2 -2
  471. package/src/{components → repositories}/A-EntityRepository/A-EntityRepository.component.ts +39 -30
  472. package/tests/A-HttpChannel.test.ts +41 -48
  473. package/tests/A-HttpServerError.test.ts +204 -0
  474. package/tests/A-Request.test.ts +351 -0
  475. package/tsconfig.json +40 -50
  476. package/tsup.config.ts +111 -13
  477. package/dist/index.d.mts +0 -855
  478. package/dist/index.d.ts +0 -855
  479. package/dist/index.js +0 -2179
  480. package/dist/index.js.map +0 -1
  481. package/dist/index.mjs +0 -2144
  482. package/dist/index.mjs.map +0 -1
  483. package/examples/microservices-server/components/controllers/Statistics.controller.ts +0 -18
  484. package/examples/microservices-server/components/repositories/Memory.repository.ts +0 -66
  485. package/examples/microservices-server/concept.ts +0 -43
  486. package/examples/microservices-server/context/MemoryStore.context.ts +0 -31
  487. package/examples/microservices-server/entities/Order.entity.ts +0 -7
  488. package/examples/microservices-server/entities/User.entity.ts +0 -8
  489. package/src/components/A-Router/A-Router.component.types.ts +0 -38
  490. package/src/components/A-ServerError/A-ServerError.class.ts +0 -98
  491. package/src/components/A-ServerLogger/A_ServerLogger.component.ts +0 -194
  492. package/src/components/A-ServerLogger/A_ServerLogger.component.types.ts +0 -14
  493. package/src/containers/A-Service/A-Service.container.ts +0 -218
  494. package/src/containers/A-Service/A-Service.container.types.ts +0 -46
  495. package/src/context/A-EntityFactory/A-EntityFactory.context.ts +0 -163
  496. package/src/context/A-EntityFactory/A-EntityFactory.context.types.ts +0 -11
  497. package/src/context/A-HttpChannel/A-HttpChannel.context.ts +0 -36
  498. package/src/context/A-Server/A_Server.context.types.ts +0 -9
  499. package/src/entities/A-Request/A-Request.entity.ts +0 -163
  500. package/src/entities/A-Request/A-Request.entity.types.ts +0 -41
  501. package/src/entities/A-Response/A-Response.entity.ts +0 -194
  502. package/src/entities/A-Response/A-Response.entity.types.ts +0 -26
  503. package/src/entities/A-Route/A-Route.entity.ts +0 -117
  504. package/tests/A-Service.test.ts +0 -18
  505. /package/src/{components → controllers}/A-EntityController/A-EntityController.component.types.ts +0 -0
  506. /package/src/{components/A-Controller/A-Controller.component.types.ts → controllers/A-ListingController/A-ListingController.types.ts} +0 -0
  507. /package/src/{components/A-ServerHealthMonitor/A-ServerHealthMonitor.component.types.ts → controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.types.ts} +0 -0
  508. /package/src/{components/A-EntityRepository/A-EntityRepository.error.ts → lib/A-Response/A-Response.env.ts} +0 -0
  509. /package/src/{components/A-EntityRepository/A-EntityRepository.types.ts → lib/A-ServerController/A-ServerController.types.ts} +0 -0
  510. /package/src/{components → lib}/A-ServerLogger/A-ServerLogger.constants.ts +0 -0
  511. /package/src/{components/A-ListingController/A-ListingController.component.types.ts → lib/A-ServerMiddleware/A-ServerMiddleware.constants.ts} +0 -0
  512. /package/src/{components/A-ServerError/A-ServerError.constants.ts → lib/A-ServerMiddleware/A-ServerMiddleware.types.ts} +0 -0
  513. /package/src/{components/A-StaticLoader/A-StaticLoader.component.types.ts → lib/A-ServerStatic/A-ServerStatic.types.ts} +0 -0
  514. /package/src/{components/A-ServerCORS/A_ServerCORS.component.types.ts → middlewares/A-ServerCORS/A_ServerCORS.types.ts} +0 -0
  515. /package/src/{context/A-StaticConfig/A-StaticConfig.context.types.ts → repositories/A-EntityRepository/A-EntityRepository.error.ts} +0 -0
  516. /package/src/{entities/A-Route/A-Route.entity.types.ts → repositories/A-EntityRepository/A-EntityRepository.types.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/containers/A-Service/A-Service.container.types.ts","../src/context/A-HttpChannel/A-HttpChannel.context.ts","../src/channels/A-Http/A-Http.channel.constants.ts","../src/components/A-ServerError/A-ServerError.class.ts","../src/channels/A-Http/A-Http.channel.error.ts","../src/channels/A-Http/A-Http.channel.ts","../src/constants/env.constants.ts","../src/context/A-Server/A_Server.context.ts","../src/entities/A-Request/A-Request.entity.types.ts","../src/entities/A-Route/A-Route.entity.ts","../src/entities/A-Request/A-Request.entity.ts","../src/entities/A-Response/A-Response.entity.types.ts","../src/entities/A-Response/A-Response.entity.ts","../src/components/A-ServerLogger/A_ServerLogger.component.ts","../src/containers/A-Service/A-Service.container.ts","../src/context/A-ProxyConfig/A_ProxyConfig.constants.ts","../src/context/A-ProxyConfig/A_ProxyConfig.context.ts","../src/context/A-StaticConfig/A-StaticConfig.context.ts","../src/context/A-ListQueryFilter/A_ListQueryFilter.context.ts","../src/context/A-EntityFactory/A-EntityFactory.context.ts","../src/entities/A_EntityList/A_EntityList.entity.ts","../src/components/A-Router/A-Router.component.types.ts","../src/components/A-Router/A-Router.component.ts","../src/components/A-EntityController/A-EntityController.component.ts","../src/components/A-ServerHealthMonitor/A-ServerHealthMonitor.component.ts","../src/components/A-ServerProxy/A-ServerProxy.component.ts","../src/components/A-ServerCORS/A_ServerCORS.component.defaults.ts","../src/components/A-ServerCORS/A_ServerCORS.component.ts","../src/components/A-StaticLoader/A-StaticLoader.component.ts","../src/components/A-Controller/A-Controller.component.ts","../src/components/A-ListingController/A-ListingController.component.ts","../src/components/A-CommandController/A-CommandController.component.ts","../src/components/A-EntityRepository/A-EntityRepository.component.ts"],"names":["A_SERVER_TYPES__ServerFeature","A_SERVER_TYPES__ServerMethod","A_SERVER_CONSTANTS__A_HttpChannel_Lifecycle","A_Error","A_Fragment","A_SERVER_TYPES__RequestEvent","A_Context","A_SERVER_TYPES__ResponseEvent","A_Entity","ASEID","A_Logger","A_Container","A_Config","config","A_Scope","A_IdentityHelper","A_Feature","A_SERVER_TYPES__RouterMethod","A_SERVER_TYPES__ARouterComponentMetaKey","A_Concept","A_Inject","A_Component","A_Polyfill","A_Manifest"],"mappings":"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","file":"index.mjs","sourcesContent":["import { A_Component, A_Fragment } from \"@adaas/a-concept\";\n\n\nexport type A_SERVER_TYPES__ServerFeatures = [\n A_SERVER_TYPES__ServerFeature.beforeStart,\n A_SERVER_TYPES__ServerFeature.afterStart,\n A_SERVER_TYPES__ServerFeature.beforeStop,\n A_SERVER_TYPES__ServerFeature.afterStop,\n A_SERVER_TYPES__ServerFeature.onRequest\n]\n\nexport enum A_SERVER_TYPES__ServerFeature {\n beforeStart = 'beforeStart',\n afterStart = 'afterStart',\n beforeStop = 'beforeStop',\n afterStop = 'afterStop',\n beforeRequest = 'beforeRequest',\n onRequest = 'onRequest',\n afterRequest = 'afterRequest',\n}\n\n\nexport type A_SERVER_TYPES__ServerConstructor = {\n name: string,\n version: string,\n controllers: Array<A_Component>,\n entities: Array<A_Fragment>,\n extensions: Array<A_Component>\n}\n\n\n\nexport enum A_SERVER_TYPES__ServerMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n DELETE = 'DELETE',\n PATCH = 'PATCH',\n OPTIONS = 'OPTIONS',\n HEAD = 'HEAD',\n CONNECT = 'CONNECT',\n TRACE = 'TRACE',\n DEFAULT = 'DEFAULT'\n}\n\n\n","import { A_Fragment } from \"@adaas/a-concept\";\nimport { A_SERVER_TYPES__ServerMethod } from \"@adaas/a-server/containers/A-Service/A-Service.container.types\";\nimport { A_SERVER_TYPES__HttpChannelRequestParams } from \"@adaas/a-server/channels/A-Http/A-Http.channel.types\";\n\n\n\n\n\nexport class A_HTTPChannel_RequestContext<\n T extends any = any\n> extends A_Fragment {\n url: string;\n method: A_SERVER_TYPES__ServerMethod;\n data?: any;\n config?: Partial<A_SERVER_TYPES__HttpChannelRequestParams['config']>;\n\n constructor(params: A_SERVER_TYPES__HttpChannelRequestParams) {\n super();\n\n const {\n method,\n url,\n data,\n config,\n } = params;\n\n this.url = url;\n this.method = method;\n this.data = data;\n this.config = config;\n }\n\n result?: T;\n error?: any;\n\n}\n","\n\n\nexport enum A_SERVER_CONSTANTS__A_HttpChannel_Lifecycle {\n onAfterRequest = 'onAfterHttpChannelRequest',\n onError = 'onHttpChannelError',\n onBeforeRequest = 'onBeforeHttpChannelRequest',\n}","import { A_Error } from '@adaas/a-concept';\nimport { A_SERVER_TYPES__ServerError_Init, A_SERVER_TYPES__ServerError_Serialized } from './A-ServerError.types';\n\n\nexport class A_ServerError extends A_Error<A_SERVER_TYPES__ServerError_Init, A_SERVER_TYPES__ServerError_Serialized> {\n\n status: number = 500;\n\n\n // constructor(\n // /**\n // * A_Error Constructor params\n // */\n // params: A_SERVER_TYPES__ServerError_Init\n // )\n // constructor(\n // /**\n // * HTTP Status Code of the error\n // */\n // status: number,\n // /**\n // * Error message\n // */\n // message: string\n // )\n // constructor(\n // /**\n // * Original JS Error\n // */\n // error: Error\n // )\n // constructor(\n // /**\n // * HTTP Status Code of the error\n // */\n // status: number,\n // /**\n // * Error message\n // */\n // title: string,\n // /**\n // * Detailed description of the error\n // */\n // description: string\n // )\n // constructor(\n // param1: A_SERVER_TYPES__ServerError_Init | Error | string | A_Error | number,\n // param2?: string | A_Error,\n // param3?: string\n // ) {\n // switch (true) {\n // case typeof param1 === 'number':\n // if (typeof param2 === 'string' && param3) {\n // super({\n // title: param2,\n // description: param3\n // });\n // }\n // else if (param2 instanceof A_Error) {\n // super(param2);\n // }\n // else {\n // super();\n // }\n // this.status = param1;\n // break;\n\n // case param1 instanceof A_Error:\n // super (param1);\n // break;\n // case param1 instanceof Error:\n // super (param1);\n // break;\n \n // default:\n // break;\n // }\n\n // }\n\n\n protected fromConstructor(params: A_SERVER_TYPES__ServerError_Init): void {\n super.fromConstructor(params);\n if (params.status) {\n this.status = params.status;\n }\n }\n\n\n toJSON(): A_SERVER_TYPES__ServerError_Serialized {\n return {\n ...super.toJSON(),\n status: this.status\n }\n }\n}\n\n\n","import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_HTTPChannelError extends A_Error {\n\n static readonly HttpRequestError = 'HTTP Channel Request Error';\n\n}","import { A_Context, A_Scope } from \"@adaas/a-concept\";\nimport { A_SERVER_TYPES__ServerMethod } from \"../../containers/A-Service/A-Service.container.types\";\nimport { A_HTTPChannel_RequestContext } from \"../../context/A-HttpChannel/A-HttpChannel.context\";\nimport { A_SERVER_CONSTANTS__A_HttpChannel_Lifecycle } from \"./A-Http.channel.constants\";\nimport { A_ServerError } from \"@adaas/a-server/components/A-ServerError/A-ServerError.class\";\nimport { A_Channel } from \"@adaas/a-utils\";\nimport { A_HTTPChannelError } from \"./A-Http.channel.error\";\nimport { A_SERVER_TYPES__HttpChannelRequestConfig, A_SERVER_TYPES__HttpChannelRequestParams, A_SERVER_TYPES__HttpChannelSendParams } from \"./A-Http.channel.types\";\n\n\n\nexport class A_HTTPChannel extends A_Channel {\n\n protected baseUrl?: string;\n\n\n async connect(): Promise<void> {\n // keep it empty since HTTP channel does not require persistent connection\n return;\n }\n\n /**\n * Allows to send an HTTP request without expecting a response\n * \n * @param params \n */\n async send(params: A_SERVER_TYPES__HttpChannelSendParams): Promise<void> {\n this.request(params);\n }\n\n /**\n * Makes an HTTP request\n * \n * @param params \n * @returns \n */\n async request<T = any, M extends Record<string, any> = any>(\n /**\n * Provide request parameters\n */\n params: A_SERVER_TYPES__HttpChannelRequestParams<M>\n ): Promise<A_HTTPChannel_RequestContext<T>> {\n const { method, url, data, config } = params;\n\n await this.initialize;\n\n this._processing = true;\n\n const fullUrl = this.buildURL(url, config?.params);\n\n const requestScope = new A_Scope({ name: `a-http-channel-request-scope-${method}-${url}-${Date.now()}` });\n const context = new A_HTTPChannel_RequestContext({\n method,\n url,\n data,\n config\n });\n\n requestScope.inherit(A_Context.scope(this));\n requestScope.register(context);\n\n try {\n await this.call(A_SERVER_CONSTANTS__A_HttpChannel_Lifecycle.onBeforeRequest, requestScope);\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n ...config?.headers,\n };\n\n const options: RequestInit = {\n method,\n headers,\n };\n\n if (data && method !== A_SERVER_TYPES__ServerMethod.GET) {\n options.body = JSON.stringify(data);\n }\n\n const response = await fetch(fullUrl, options);\n\n if (!response.ok) {\n throw new A_ServerError({\n status: response.status,\n title: response.statusText,\n description: `HTTP request to ${fullUrl} failed with status ${response.status}`,\n });\n }\n\n context.result =\n config?.params?.responseType === \"text\"\n ? await response.text()\n : config?.params?.responseType === \"blob\"\n ? await response.blob()\n : await response.json();\n\n await this.call(A_SERVER_CONSTANTS__A_HttpChannel_Lifecycle.onAfterRequest, requestScope);\n\n this._processing = false;\n\n return context as A_HTTPChannel_RequestContext<T>;\n\n } catch (error) {\n\n this._processing = false;\n\n context.error = error;\n\n await this.call(A_SERVER_CONSTANTS__A_HttpChannel_Lifecycle.onError, requestScope);\n\n if (config?.throwOnError === false)\n return context as A_HTTPChannel_RequestContext<T>;\n else\n throw error;\n }\n }\n\n async post<T, M extends Record<string, any> = any>(\n url: string,\n body?: any,\n config?: Partial<A_SERVER_TYPES__HttpChannelRequestConfig>,\n ): Promise<A_HTTPChannel_RequestContext<T>> {\n return this.request<T, M>(\n {\n method: A_SERVER_TYPES__ServerMethod.POST,\n url,\n data: body,\n config,\n }\n );\n }\n\n async get<T, M extends Record<string, any> = any>(\n url: string,\n params?: any,\n config?: Partial<A_SERVER_TYPES__HttpChannelRequestConfig>,\n ): Promise<A_HTTPChannel_RequestContext<T>> {\n return this.request<T, M>(\n {\n method: A_SERVER_TYPES__ServerMethod.GET,\n url,\n config: {\n ...config,\n params,\n }\n }\n );\n }\n\n async put<T, M extends Record<string, any> = any>(\n url: string,\n body?: any,\n config?: Partial<A_SERVER_TYPES__HttpChannelRequestConfig>,\n ): Promise<A_HTTPChannel_RequestContext<T>> {\n return this.request<T, M>({\n method: A_SERVER_TYPES__ServerMethod.PUT,\n url,\n data: body,\n config,\n });\n }\n\n async delete<T, M extends Record<string, any> = any>(\n url: string,\n params?: any,\n config?: Partial<A_SERVER_TYPES__HttpChannelRequestConfig>,\n ): Promise<A_HTTPChannel_RequestContext<T>> {\n return this.request<T, M>({\n method: A_SERVER_TYPES__ServerMethod.DELETE,\n url,\n data: params,\n config,\n });\n }\n\n\n protected buildURL(path: string = '', params: Record<string, any> = {}): string {\n\n if (!this.baseUrl)\n throw new A_HTTPChannelError(\n A_HTTPChannelError.HttpRequestError,\n \"Base URL is not set for HTTP Channel\"\n );\n\n const url = new URL(`${this.baseUrl}${path.startsWith('/') ? path : `/${path}`}`);\n\n Object.keys(params).forEach(key => {\n if (params[key] !== undefined && params[key] !== null) {\n url.searchParams.append(key, params[key]);\n }\n });\n\n return url.toString()\n }\n}\n","export const A_SERVER_CONSTANTS__DEFAULT_ENV_VARIABLES = {\n // ----------------------------------------------------------\n // A-Server Environment Variables\n // ----------------------------------------------------------\n // These environment variables are used by A-Server to configure the application\n // ----------------------------------------------------------\n /**\n * Port for the server to listen on\n * [!] Default is 3000\n * @default 3000\n */\n A_SERVER_PORT: 'A_SERVER_PORT',\n\n} as const;\n\nexport type A_TYPES__ServerENVVariables = (typeof A_SERVER_CONSTANTS__DEFAULT_ENV_VARIABLES)[keyof typeof A_SERVER_CONSTANTS__DEFAULT_ENV_VARIABLES][];\n\n\n\nexport const A_SERVER_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY = [\n A_SERVER_CONSTANTS__DEFAULT_ENV_VARIABLES.A_SERVER_PORT,\n] as const;\n\n\n\n\n","import { A_Fragment } from \"@adaas/a-concept\";\nimport { A_SERVER_TYPES__ServerConstructor } from \"./A_Server.context.types\";\nimport { A_Route } from \"@adaas/a-server/entities/A-Route/A-Route.entity\";\nimport { A_TYPES__Required } from \"@adaas/a-concept/dist/src/types/A_Common.types\";\n\n\nexport class A_Server extends A_Fragment {\n\n public port: number;\n public version: string;\n protected _routes: A_Route[] = [];\n\n constructor(\n params: A_TYPES__Required<Partial<A_SERVER_TYPES__ServerConstructor>, [\n 'port',\n 'name'\n ]>\n ) {\n super(params);\n\n this.port = params.port;\n this.name = params.name;\n this.version = params.version || 'v1';\n\n this._routes = params.routes || this._routes;\n }\n\n\n /**\n * A list of routes that the server will listen to\n */\n get routes(): A_Route[] {\n return this._routes\n }\n\n}\n\n\n","import type { IncomingMessage } from \"http\";\nimport { A_Request } from \"./A-Request.entity\";\nimport { A_TYPES__Entity_Serialized } from \"@adaas/a-concept\";\n\n\nexport type A_SERVER_TYPES__RequestConstructor = {\n /**\n * Should correspond to Response id\n */\n id: string,\n request: IncomingMessage,\n scope: string,\n};\n\nexport type A_SERVER_TYPES__RequestSerialized = {\n} & A_TYPES__Entity_Serialized;\n\n\n\nexport type A_SERVER_TYPES__RequestMethods = 'GET'\n | 'POST'\n | 'PUT'\n | 'DELETE'\n | 'PATCH'\n | 'OPTIONS'\n | 'HEAD'\n | 'CONNECT'\n | 'TRACE'\n | 'DEFAULT'; // Default is used for routes that do not have a method specified\n\n\nexport enum A_SERVER_TYPES__RequestEvent {\n Error = 'error',\n Finish = 'finish',\n Data = 'data',\n End = 'end',\n Close = 'close',\n}\n\n\nexport type A_SERVER_TYPES__RequestEventCallback = (request: A_Request) => void;","import { A_SERVER_TYPES__RequestMethods } from '../A-Request/A-Request.entity.types';\n\n\n\nexport class A_Route {\n\n public url!: string;\n public method!: A_SERVER_TYPES__RequestMethods;\n\n\n constructor(\n url: string | RegExp,\n method: A_SERVER_TYPES__RequestMethods\n )\n constructor(\n url: string | RegExp,\n )\n constructor(\n param1: string | RegExp,\n param2?: A_SERVER_TYPES__RequestMethods\n ) {\n\n this.url = param1 instanceof RegExp ? param1.source : param1;\n this.method = param2 || 'GET';\n\n }\n\n\n /**\n * returns path only without query and hash\n */\n get path(): string {\n const p = this.url.split('?')[0].split('#')[0];\n\n // ensure that last char is not /\n return p.endsWith('/') ? p.slice(0, -1) : p;\n }\n\n\n get params(): string[] {\n return this.path\n .match(/:([^\\/]+)/g)\n ?.map((param) => param.slice(1))\n || [];\n }\n\n\n \n\n\n extractParams(url: string): Record<string, string> {\n // Remove query string (anything after ?)\n const cleanUrl = url.split('?')[0];\n\n const urlSegments = cleanUrl.split('/').filter(Boolean);\n const maskSegments = this.path.split('/').filter(Boolean);\n\n const params: Record<string, string> = {};\n\n for (let i = 0; i < maskSegments.length; i++) {\n const maskSegment = maskSegments[i];\n const urlSegment = urlSegments[i];\n\n if (maskSegment.startsWith(':')) {\n const paramName = maskSegment.slice(1); // Remove ':' from mask\n params[paramName] = urlSegment;\n } else if (maskSegment !== urlSegment) {\n // If static segments don’t match → fail\n return {};\n }\n }\n\n return params;\n }\n\n extractQuery(url: string): Record<string, string> {\n const query: Record<string, string> = {};\n\n // Take only the part after \"?\"\n const queryString = url.split('?')[1];\n if (!queryString) return query;\n\n // Remove fragment (#...) if present\n const cleanQuery = queryString.split('#')[0];\n\n // Split into key=value pairs\n for (const pair of cleanQuery.split('&')) {\n if (!pair) continue;\n const [key, value = ''] = pair.split('=');\n query[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n\n return query;\n }\n\n\n\n toString(): string {\n // path can be like /api/v1/users/:id\n // and because of that :id we need to replace it with regex that matches chars and numbers only \n return `${this.method}::${this.path }`;\n\n // .replace(/\\/:([^\\/]+)/g, '\\\\/([^\\/]+)')\n }\n\n toRegExp(): RegExp {\n return new RegExp(`^${this.method}::${this.path.replace(/\\/:([^\\/]+)/g, '/([^/]+)')}$`);\n }\n\n toAFeatureExtension(extensionScope: Array<string> = []): RegExp {\n return new RegExp(`^${extensionScope.length\n ? `(${extensionScope.join('|')})`\n : '.*'\n }\\\\.${this.method}::${this.path.replace(/\\/:([^\\/]+)/g, '/([^/]+)')}$`);\n }\n}\n\n","import type { IncomingHttpHeaders, IncomingMessage } from \"http\";\nimport { A_Context, A_Entity, A_IdentityHelper, ASEID, } from '@adaas/a-concept';\nimport {\n A_SERVER_TYPES__RequestConstructor,\n A_SERVER_TYPES__RequestEvent,\n A_SERVER_TYPES__RequestMethods,\n A_SERVER_TYPES__RequestSerialized\n} from \"./A-Request.entity.types\";\nimport { A_Route } from '../A-Route/A-Route.entity';\nimport { A_ServerError } from \"@adaas/a-server/components/A-ServerError/A-ServerError.class\";\n\n\nexport class A_Request<\n _ReqBodyType = any,\n _ResponseType = any,\n _ParamsType extends Record<string, string> = any,\n _QueryType = any,\n>\n extends A_Entity<\n A_SERVER_TYPES__RequestConstructor,\n A_SERVER_TYPES__RequestSerialized\n > {\n\n static get namespace(): string {\n return 'a-server';\n }\n\n req!: IncomingMessage;\n\n body: _ReqBodyType = {} as _ReqBodyType;\n params: _ParamsType = {} as _ParamsType;\n query: _QueryType = {} as _QueryType;\n response?: _ResponseType;\n\n error?: A_ServerError;\n\n /**\n * Duration of the request in milliseconds\n */\n duration: number = 0;\n\n fromNew(newEntity: A_SERVER_TYPES__RequestConstructor): void {\n this.req = newEntity.request;\n\n this.aseid = new ASEID({\n concept: A_Context.root.name,\n scope: newEntity.scope,\n entity: (this.constructor as typeof A_Request).entity,\n id: newEntity.id\n });\n }\n\n get startedAt(): Date | undefined {\n const timeId = A_IdentityHelper.parseTimeId(this.aseid.id.split('-')[0]);\n\n return timeId ? new Date(timeId.timestamp) : undefined;\n }\n\n\n\n // Getter for request URL\n public get url(): string {\n return this.req.url!;\n }\n\n // Getter for request method\n public get method(): A_SERVER_TYPES__RequestMethods {\n return (String(this.req.method).toUpperCase() as A_SERVER_TYPES__RequestMethods) || 'DEFAULT';\n }\n\n get headers(): IncomingHttpHeaders {\n return this.req.headers;\n }\n\n\n get route(): A_Route {\n return new A_Route(this.url, this.method);\n }\n\n\n pipe(\n destination: NodeJS.WritableStream,\n options?: { end?: boolean | undefined; }\n ): NodeJS.WritableStream {\n return this.req.pipe(destination, options);\n }\n\n\n\n async init(): Promise<void> {\n this.req.on('error', async (err) => {\n this.error = new A_ServerError(err);\n await this.call(A_SERVER_TYPES__RequestEvent.Error);\n });\n\n this.params = this.extractParams(this.url) as _ParamsType;\n this.query = this.extractQuery(this.url) as _QueryType;\n }\n\n\n extractParams(url: string): Record<string, string> {\n // Remove query string (anything after ?)\n const cleanUrl = url.split('?')[0];\n\n const urlSegments = cleanUrl.split('/').filter(Boolean);\n const maskSegments = this.url.split('/').filter(Boolean);\n\n const params: Record<string, string> = {};\n\n for (let i = 0; i < maskSegments.length; i++) {\n const maskSegment = maskSegments[i];\n const urlSegment = urlSegments[i];\n\n if (maskSegment.startsWith(':')) {\n const paramName = maskSegment.slice(1); // Remove ':' from mask\n params[paramName] = urlSegment;\n } else if (maskSegment !== urlSegment) {\n // If static segments don’t match → fail\n return {};\n }\n }\n\n return params;\n }\n\n extractQuery(url: string): Record<string, string> {\n const query: Record<string, string> = {};\n\n // Take only the part after \"?\"\n const queryString = url.split('?')[1];\n if (!queryString) return query;\n\n // Remove fragment (#...) if present\n const cleanQuery = queryString.split('#')[0];\n\n // Split into key=value pairs\n for (const pair of cleanQuery.split('&')) {\n if (!pair) continue;\n const [key, value = ''] = pair.split('=');\n query[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n\n return query;\n }\n\n\n\n parseBody(): Promise<any> {\n return new Promise((resolve, reject) => {\n let body = '';\n this.req.on('data', chunk => body += chunk);\n this.req.on('end', () => {\n try {\n resolve(JSON.parse(body));\n } catch (err) {\n reject(err);\n }\n });\n this.req.on('error', reject);\n });\n }\n\n} ","import { A_TYPES__Entity_Serialized } from \"@adaas/a-concept\";\nimport type { ServerResponse } from \"http\";\n\n\nexport type A_SERVER_TYPES__ResponseConstructor = {\n /**\n * Should correspond to Request id\n */\n id: string,\n scope: string,\n response: ServerResponse,\n}\n\nexport enum A_SERVER_TYPES__ResponseEvent {\n Error = 'error',\n Finish = 'finish',\n Data = 'data',\n End = 'end',\n Close = 'close',\n}\n\nexport type A_SERVER_TYPES__ResponseSerialized = A_TYPES__Entity_Serialized;\n\n\nexport type A_SERVER_TYPES__SendResponseObject<_ResponseType = any> = \nRecord<string, _ResponseType> ;","import {\n A_Context,\n A_Entity,\n A_Error,\n A_Scope,\n ASEID,\n} from \"@adaas/a-concept\";\nimport type {\n IncomingHttpHeaders,\n ServerResponse\n} from \"http\";\nimport {\n A_SERVER_TYPES__ResponseConstructor,\n A_SERVER_TYPES__ResponseEvent,\n A_SERVER_TYPES__ResponseSerialized,\n A_SERVER_TYPES__SendResponseObject\n} from \"./A-Response.entity.types\";\nimport { A_ServerError } from \"@adaas/a-server/components/A-ServerError/A-ServerError.class\";\nimport { A_Logger } from \"@adaas/a-utils\";\n\n\n\n\nexport class A_Response<\n _ResponseType = any\n> extends A_Entity<\n A_SERVER_TYPES__ResponseConstructor,\n A_SERVER_TYPES__ResponseSerialized\n> {\n\n\n\n /**\n * Duration of the request in milliseconds\n */\n duration: number = 0;\n\n private res!: ServerResponse;\n private data: Map<string, _ResponseType> = new Map();\n error?: A_ServerError;\n\n\n fromNew(newEntity: A_SERVER_TYPES__ResponseConstructor): void {\n this.res = newEntity.response;\n\n this.aseid = new ASEID({\n concept: A_Context.root.name,\n scope: newEntity.scope,\n entity: (this.constructor as typeof A_Response).entity,\n id: newEntity.id\n });\n }\n\n get headersSent(): boolean {\n return this.res.headersSent;\n }\n\n get original() {\n return this.res;\n }\n\n get statusCode(): number {\n return this.res.statusCode;\n }\n\n async init(): Promise<void> {\n const startTime = process.hrtime();\n\n this.res.on('finish', async () => {\n const elapsedTime = process.hrtime(startTime);\n const elapsedMilliseconds = elapsedTime[0] * 1000 + elapsedTime[1] / 1e6;\n\n this.duration = elapsedMilliseconds;\n await this.call(A_SERVER_TYPES__ResponseEvent.Finish);\n });\n\n this.res.on('close', async () => {\n await this.call(A_SERVER_TYPES__ResponseEvent.Close)\n });\n\n }\n\n\n\n public failed(error: A_ServerError | A_Error | Error | any): void {\n switch (true) {\n case error instanceof A_ServerError:\n this.error = error;\n\n break;\n\n case error instanceof A_Error:\n this.error = new A_ServerError(error);\n\n break;\n\n default:\n this.error = new A_ServerError(error)\n\n break;\n }\n\n return this.status(this.error.status).json(this.error);\n }\n\n // Send a plain text or JSON response\n public send(\n data: string | object = this.toResponse()\n ): void {\n const logger = A_Context.scope(this).resolve(A_Logger);\n if (this.headersSent) {\n logger.warning('Response headers already sent, cannot send response again.');\n return;\n }\n\n try {\n switch (true) {\n case !!data && typeof data === 'object':\n return this.json(data);\n\n case !!data && typeof data === 'string':\n this.res.setHeader('Content-Type', 'text/plain');\n this.res.writeHead(this.statusCode);\n this.res.end(data);\n\n return;\n\n default:\n this.res.writeHead(this.statusCode);\n this.res.end(data);\n\n return;\n }\n } catch (error) {\n logger.warning('Response send error:', error);\n }\n }\n\n destroy(error: Error | unknown, scope?: A_Scope): Promise<any> {\n this.res.end();\n return super.destroy(scope);\n }\n\n // Explicit JSON response\n public json(\n data: object = this.toResponse()\n ): void {\n const logger = A_Context.scope(this).resolve(A_Logger);\n\n if (this.headersSent) {\n logger.warning('Response headers already sent, cannot send response again.');\n return;\n }\n this.res.setHeader('Content-Type', 'application/json');\n this.res.writeHead(this.statusCode);\n this.res.end(JSON.stringify(data));\n }\n\n // Set HTTP status code\n public status(code: number): this {\n this.res.statusCode = code;\n return this;\n }\n\n writeHead(statusCode: number, headers?: Record<string, string> | IncomingHttpHeaders | any) {\n this.res.writeHead(statusCode, headers);\n }\n\n\n setHeader(key: string, value: string) {\n this.res.setHeader(key, value);\n }\n\n getHeader(key: string): string | number | string[] | undefined {\n return this.res.getHeader(key) as string | number | string[] | undefined;\n }\n\n\n add(key: string, data: _ResponseType) {\n this.data.set(key, data);\n }\n\n\n toResponse(): A_SERVER_TYPES__SendResponseObject<_ResponseType> {\n return Array.from(this.data.entries()).reduce((acc, [key, value]) => {\n if (value instanceof A_Entity)\n acc[key] = value.toJSON();\n else\n\n acc[key] = value;\n return acc;\n }, {});\n }\n}","import { A_Container, A_Feature, A_Inject, } from \"@adaas/a-concept\";\nimport { A_SERVER_TYPES__ServerFeature } from \"@adaas/a-server/containers/A-Service/A-Service.container.types\";\nimport { A_Server } from \"@adaas/a-server/context/A-Server/A_Server.context\";\nimport { A_SERVER_TYPES__ServerLoggerEnvVariables, A_SERVER_TYPES__ServerLoggerRouteParams } from \"./A_ServerLogger.component.types\";\nimport { A_Service } from \"@adaas/a-server/containers/A-Service/A-Service.container\";\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_SERVER_TYPES__ResponseEvent } from \"@adaas/a-server/entities/A-Response/A-Response.entity.types\";\nimport { A_Route } from \"@adaas/a-server/entities/A-Route/A-Route.entity\";\nimport { A_SERVER_TYPES__RequestEvent } from \"@adaas/a-server/entities/A-Request/A-Request.entity.types\";\nimport { A_Config, A_Logger } from \"@adaas/a-utils\";\n\n\nexport class A_ServerLogger extends A_Logger {\n\n protected declare config: A_Config<A_SERVER_TYPES__ServerLoggerEnvVariables>\n\n\n @A_Feature.Extend({\n name: A_SERVER_TYPES__ResponseEvent.Finish,\n scope: [A_Response]\n })\n async onRequestEnd(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response\n ) {\n\n this.route({\n method: request.method,\n url: request.url,\n status: response.statusCode,\n responseTime: response.duration\n });\n }\n\n\n @A_Feature.Extend({\n name: A_SERVER_TYPES__RequestEvent.Error,\n })\n async onRequestError(\n @A_Inject(A_Request) request: A_Request\n ) {\n }\n\n\n @A_Feature.Extend({\n name: A_SERVER_TYPES__ServerFeature.afterStart,\n scope: [A_Service]\n })\n logStart(\n @A_Inject(A_Service) container: A_Service,\n ): void {\n this.serverReady({\n port: container.port,\n app: {\n name: container.name,\n }\n })\n }\n\n\n\n\n @A_Feature.Extend({\n name: A_SERVER_TYPES__ServerFeature.afterStop,\n scope: [A_Service]\n })\n logStop(\n @A_Inject(A_Server) server: A_Server,\n ) {\n this.log('red', `Server ${server.name} stopped`);\n }\n\n\n\n\n metrics() {\n\n }\n\n\n\n routes(routes: Array<A_Route>) {\n const time = this.getTime();\n\n console.log(`\\x1b[36m[${this.scope.name}] |${time}| Exposed Routes:\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${routes.map(route => `${' '.repeat(this.scopeLength + 3)}| [${route.method.toUpperCase()}]${' '.repeat(7 - route.method.length)} ${route.path}`).join('\\n')\n }\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\\x1b[0m`);\n\n }\n\n /**\n * Logs the route information based on status code\n * \n * @param route \n */\n route(route: A_SERVER_TYPES__ServerLoggerRouteParams) {\n\n switch (route.status) {\n case 200:\n this.log200(route);\n break;\n case 404:\n this.log404(route);\n break;\n case 500:\n this.log500(route);\n break;\n case 400:\n this.log400(route);\n break;\n default:\n this.logDefault(route);\n break;\n }\n }\n\n\n log200(route: A_SERVER_TYPES__ServerLoggerRouteParams) {\n if (this.config.get('SERVER_IGNORE_LOG_200'))\n return\n console.log(`\\x1b[32m[${this.scope.name}] |${this.getTime()}| ${route.status} | [${route.method.toUpperCase()}]${' '.repeat(7 - route.method.length)} ${route.url} | ${route.responseTime}ms\\x1b[0m`);\n }\n\n log404(route: A_SERVER_TYPES__ServerLoggerRouteParams) {\n if (this.config.get('SERVER_IGNORE_LOG_404'))\n return;\n\n console.log(`\\x1b[33m[${this.scope.name}] |${this.getTime()}| ${route.status} | [${route.method.toUpperCase()}]${' '.repeat(7 - route.method.length)} ${route.url} | ${route.responseTime}ms\\x1b[0m`);\n }\n\n log500(route: A_SERVER_TYPES__ServerLoggerRouteParams) {\n if (this.config.get('SERVER_IGNORE_LOG_500'))\n return;\n\n console.log(`\\x1b[31m[${this.scope.name}] |${this.getTime()}| ${route.status} | [${route.method.toUpperCase()}]${' '.repeat(7 - route.method.length)} ${route.url} | ${route.responseTime}ms\\x1b[0m`);\n }\n\n log400(route: A_SERVER_TYPES__ServerLoggerRouteParams) {\n if (this.config.get('SERVER_IGNORE_LOG_400'))\n return;\n console.log(`\\x1b[33m[${this.scope.name}] |${this.getTime()}| ${route.status} | [${route.method.toUpperCase()}]${' '.repeat(7 - route.method.length)} ${route.url} | ${route.responseTime}ms\\x1b[0m`);\n }\n\n logDefault(route: A_SERVER_TYPES__ServerLoggerRouteParams) {\n if (this.config.get('SERVER_IGNORE_LOG_DEFAULT'))\n return\n console.log(`\\x1b[36m[${this.scope.name}] |${this.getTime()}| ${route.status} | [${route.method.toUpperCase()}]${' '.repeat(7 - route.method.length)} ${route.url} | ${route.responseTime}ms\\x1b[0m`);\n }\n\n\n serverReady(\n params: {\n port: number,\n\n app: {\n name: string,\n version?: string\n }\n }\n ) {\n const processId = process.pid;\n\n console.log(`\\x1b[36m[${this.scope.name}] |${this.getTime()}| Server Ready:\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ${params.app.name} v${params.app.version || '0.0.1'} is running on port ${params.port}\n${' '.repeat(this.scopeLength + 3)}| Process ID: ${processId}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ==============================\n${' '.repeat(this.scopeLength + 3)}| LISTENING... \n${' '.repeat(this.scopeLength + 3)}| ==============================\n\\x1b[0m`);\n }\n\n\n /**\n * Displays a proxy routes \n * \n * @param params \n */\n proxy(\n params: {\n original: string,\n destination: string,\n }\n ) {\n console.log(`\\x1b[35m[${this.scope.name}] |${this.getTime()}| Proxy:\n${' '.repeat(this.scopeLength + 3)}| ${params.original} -> ${params.destination}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\\x1b[0m`);\n }\n\n}","import type { IncomingMessage, Server, ServerResponse } from \"http\";\nimport { A_SERVER_TYPES__ServerFeature } from \"./A-Service.container.types\";\nimport { A_Server } from \"@adaas/a-server/context/A-Server/A_Server.context\";\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_SERVER_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY, A_TYPES__ServerENVVariables } from \"@adaas/a-server/constants/env.constants\";\nimport { A_Concept, A_Container, A_Error, A_Feature, A_IdentityHelper, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_Config, A_Logger, A_Polyfill, IcryptoInterface } from \"@adaas/a-utils\";\nimport { A_ServerLogger } from \"@adaas/a-server/components/A-ServerLogger/A_ServerLogger.component\";\n\n\n\n\n/**\n * A-Service is a container that can run different types of services, such as HTTP servers, workers, etc.\n * Depending on the provided config and configuration, it will load the necessary components and start the service.\n * \n */\nexport class A_Service extends A_Container {\n\n private server!: Server;\n port!: number;\n\n @A_Concept.Load()\n async load(\n ) {\n // Initialize Logger\n let logger: A_ServerLogger;\n if (!this.scope.has(A_ServerLogger))\n this.scope.register(A_ServerLogger);\n\n logger = this.scope.resolve(A_ServerLogger);\n\n // Initialize Polyfill\n let polyfill: A_Polyfill;\n if (!this.scope.has(A_Polyfill))\n this.scope.register(A_Polyfill);\n\n polyfill = this.scope.resolve(A_Polyfill);\n\n // Initialize Config\n let config: A_Config<A_TYPES__ServerENVVariables>;\n if (!this.scope.has(A_Config<A_TYPES__ServerENVVariables>)) {\n const config = new A_Config<A_TYPES__ServerENVVariables>({\n variables: [...Array.from(A_SERVER_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY)],\n defaults: {\n A_SERVER_PORT: 3000\n }\n });\n\n this.scope.register(config);\n }\n config = this.scope.resolve(A_Config) as A_Config<A_TYPES__ServerENVVariables>;\n\n let aServer: A_Server;\n\n\n if (!this.scope.has(A_Server)) {\n aServer = new A_Server({\n port: config.get('A_SERVER_PORT'),\n name: this.name,\n version: 'v1'\n });\n }\n\n // Set the server to listen on port 3000\n this.port = config.get('A_SERVER_PORT');\n\n const http = await polyfill.http();\n\n // Create the HTTP server\n this.server = http.createServer(this.onRequest.bind(this));\n\n }\n\n protected listen(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.server.listen(this.port, () => {\n resolve();\n });\n });\n }\n\n protected close(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.server.close(() => {\n resolve();\n });\n });\n }\n\n\n @A_Concept.Start()\n /**\n * Start the server\n */\n async start() {\n await this.beforeStart();\n\n await this.listen();\n\n await this.afterStart();\n }\n\n\n @A_Feature.Define({ invoke: true })\n async beforeStart() { }\n\n @A_Feature.Define({ invoke: true })\n async afterStart() { }\n\n\n\n @A_Concept.Stop()\n /**\n * Stop service \n */\n async stop() {\n await this.call(A_SERVER_TYPES__ServerFeature.beforeStop);\n\n await this.server.close();\n\n await this.call(A_SERVER_TYPES__ServerFeature.afterStop)\n }\n\n @A_Feature.Define({\n name: A_SERVER_TYPES__ServerFeature.beforeRequest,\n invoke: true\n })\n async beforeRequest(scope: A_Scope) { }\n\n @A_Feature.Define({\n name: A_SERVER_TYPES__ServerFeature.beforeRequest,\n invoke: true\n })\n async afterRequest(scope: A_Scope) { }\n\n @A_Feature.Define({\n name: A_SERVER_TYPES__ServerFeature.onRequest,\n invoke: false\n })\n async onRequest(\n request: IncomingMessage,\n response: ServerResponse\n ) {\n const scope = new A_Scope({\n name: `a-server-request::${Date.now()}`,\n });\n\n // We need it to stop feature execution in case request ends\n const { req, res } = await this.convertToAServer(request, response);\n\n try {\n scope.register(req);\n scope.register(res);\n\n scope.inherit(this.scope);\n\n await this.beforeRequest(scope);\n await this.call(A_SERVER_TYPES__ServerFeature.onRequest, scope);\n await this.afterRequest(scope);\n\n await res.status(200).send();\n\n } catch (error) {\n\n const logger = this.scope.resolve(A_Logger);\n\n logger.error(error);\n\n return res.failed(error);\n }\n }\n\n\n\n protected async convertToAServer(\n request: IncomingMessage,\n response: ServerResponse\n ): Promise<{ req: A_Request, res: A_Response }> {\n\n if (!request.method || !request.url)\n throw new A_Error('Request method or url is missing');\n\n\n\n const id = await this.generateRequestId(request.method, request.url);\n\n const req = new A_Request({ id, request, scope: this.scope.name });\n const res = new A_Response({ id, response, scope: this.scope.name });\n\n await req.init();\n await res.init();\n\n return { req, res };\n }\n\n protected async generateRequestId(\n method: string,\n url: string\n ): Promise<string> {\n const crypto = await this.scope.resolve(A_Polyfill).crypto();\n\n // Use the current time, request URL, and a few other details to create a unique ID\n const timeId = A_IdentityHelper.generateTimeId();\n const randomValue = Math.random().toString(); // Adds extra randomness\n\n const hash = await crypto.createTextHash(`${timeId}-${method}-${url}-${randomValue}`, 'sha256');\n\n return `${timeId}-${hash}`;\n }\n\n @A_Feature.Define({ invoke: true })\n async beforeStop() { }\n\n @A_Feature.Define({ invoke: true })\n async afterStop() { }\n}","import { A_SERVER_TYPES__ProxyConfigConstructorConfig } from \"./A_ProxyConfig.types\";\n\nexport const PROXY_CONFIG_DEFAULTS: A_SERVER_TYPES__ProxyConfigConstructorConfig = {\n path: '/',\n hostname: 'localhost',\n port: 80,\n method: 'GET',\n headers: {},\n protocol: 'http'\n};\n","import { A_Fragment } from \"@adaas/a-concept\";\nimport { A_SERVER_TYPES__ProxyConfigConstructor, A_SERVER_TYPES__ProxyConfigConstructorConfig, A_SERVER_TYPES__RoutesConfig } from \"./A_ProxyConfig.types\";\nimport { PROXY_CONFIG_DEFAULTS } from \"./A_ProxyConfig.constants\";\nimport { A_Route } from \"@adaas/a-server/entities/A-Route/A-Route.entity\";\n\n\n\nexport class A_ProxyConfig extends A_Fragment {\n\n protected readonly _configs: Array<A_SERVER_TYPES__RoutesConfig>\n\n constructor(\n /**\n * Setup proxy configs, where key is the path to match, and value is either a full URL or a partial config object\n */\n configs: A_SERVER_TYPES__ProxyConfigConstructor = {}\n ) {\n super();\n\n this._configs = Object.entries(configs).map(([path, config]) => {\n\n const targetUrl = new URL(typeof config === 'string' ? config : config.hostname || ''); // parse hostname, may include scheme\n\n const port =\n targetUrl.port ||\n (targetUrl.protocol === \"https:\" ? '443' : '80');\n\n\n const prepared = {\n ...PROXY_CONFIG_DEFAULTS,\n ...(typeof config === 'string' ? {\n path,\n port: parseInt(port),\n protocol: targetUrl.protocol,\n hostname: targetUrl.hostname\n } : config)\n }\n\n return {\n route: new A_Route(prepared.path, prepared.method),\n hostname: prepared.hostname,\n port: prepared.port,\n headers: prepared.headers,\n protocol: prepared.protocol\n }\n });\n }\n\n /**\n * Returns all configured proxy configs\n * \n */\n get configs(): Array<A_SERVER_TYPES__RoutesConfig> {\n return this._configs;\n }\n\n\n /**\n * Checks if a given path is configured in the proxy\n * \n * @param path \n * @returns \n */\n has(path: string): boolean {\n return this._configs.some(route => route.route.toRegExp().test(path));\n }\n\n /**\n * Returns the proxy configuration for a given path, if exists\n *\n * @param path \n * @returns \n */\n config(path: string): A_SERVER_TYPES__RoutesConfig | undefined {\n \n\n return this._configs.find(route => route.route.toRegExp().test(path));\n }\n}","import { A_Fragment } from \"@adaas/a-concept\";\nimport { A_Route } from \"@adaas/a-server/entities/A-Route/A-Route.entity\";\n\nexport interface A_StaticAlias {\n alias: string;\n path: string;\n directory: string;\n enabled?: boolean;\n}\n\nexport interface A_StaticDirectoryConfig {\n path: string;\n directory: string;\n alias?: string;\n}\n\nexport class A_StaticConfig extends A_Fragment {\n\n readonly directories: Array<string>;\n private _aliases: Map<string, A_StaticAlias> = new Map();\n private _directoryConfigs: A_StaticDirectoryConfig[] = [];\n\n constructor(\n /**\n * Setup directories to serve static files from, comma separated\n */\n directories: string[] = [],\n /**\n * Custom directory configurations with aliases\n */\n directoryConfigs: A_StaticDirectoryConfig[] = []\n ) {\n super();\n\n this.directories = directories;\n this._directoryConfigs = directoryConfigs;\n \n // Initialize default aliases from directories\n this.initializeDefaultAliases();\n \n // Initialize custom aliases from directoryConfigs\n this.initializeCustomAliases();\n }\n\n private initializeDefaultAliases(): void {\n this.directories.forEach((dir, index) => {\n const alias: A_StaticAlias = {\n alias: `/static${index > 0 ? index : ''}`,\n path: `/static${index > 0 ? index : ''}`,\n directory: dir,\n enabled: true\n };\n this._aliases.set(alias.path, alias);\n });\n }\n\n private initializeCustomAliases(): void {\n this._directoryConfigs.forEach((config) => {\n const alias: A_StaticAlias = {\n alias: config.alias || config.path,\n path: config.path,\n directory: config.directory,\n enabled: true\n };\n this._aliases.set(alias.path, alias);\n });\n }\n\n /**\n * Add a custom static file alias\n * @param alias - The URL path alias (e.g., '/assets')\n * @param directory - The local directory path\n * @param path - Optional custom path (defaults to alias)\n */\n public addAlias(alias: string, directory: string, path?: string): void {\n const staticAlias: A_StaticAlias = {\n alias,\n path: path || alias,\n directory,\n enabled: true\n };\n \n this._aliases.set(staticAlias.path, staticAlias);\n }\n\n /**\n * Remove a static file alias\n * @param aliasPath - The path of the alias to remove\n */\n public removeAlias(aliasPath: string): boolean {\n return this._aliases.delete(aliasPath);\n }\n\n /**\n * Enable or disable an alias\n * @param aliasPath - The path of the alias\n * @param enabled - Whether to enable or disable\n */\n public setAliasEnabled(aliasPath: string, enabled: boolean): boolean {\n const alias = this._aliases.get(aliasPath);\n if (alias) {\n alias.enabled = enabled;\n return true;\n }\n return false;\n }\n\n /**\n * Get all configured aliases\n */\n public getAliases(): A_StaticAlias[] {\n return Array.from(this._aliases.values());\n }\n\n /**\n * Get enabled aliases only\n */\n public getEnabledAliases(): A_StaticAlias[] {\n return Array.from(this._aliases.values()).filter(alias => alias.enabled !== false);\n }\n\n /**\n * Find the best matching alias for a given request path\n * @param requestPath - The request path to match\n */\n public findMatchingAlias(requestPath: string): A_StaticAlias | null {\n let bestMatch: A_StaticAlias | null = null;\n let longestMatch = 0;\n\n for (const alias of this.getEnabledAliases()) {\n if (requestPath.startsWith(alias.path) && alias.path.length > longestMatch) {\n bestMatch = alias;\n longestMatch = alias.path.length;\n }\n }\n\n return bestMatch;\n }\n\n /**\n * Check if an alias exists\n * @param aliasPath - The path to check\n */\n public hasAlias(aliasPath: string): boolean {\n return this._aliases.has(aliasPath);\n }\n\n /**\n * Get a specific alias by path\n * @param aliasPath - The path of the alias\n */\n public getAlias(aliasPath: string): A_StaticAlias | undefined {\n return this._aliases.get(aliasPath);\n }\n\n /**\n * Add multiple aliases at once\n * @param aliases - Array of alias configurations\n */\n public addAliases(aliases: A_StaticDirectoryConfig[]): void {\n aliases.forEach(config => {\n this.addAlias(config.alias || config.path, config.directory, config.path);\n });\n }\n\n /**\n * Clear all aliases\n */\n public clearAliases(): void {\n this._aliases.clear();\n }\n\n /**\n * Update an existing alias\n * @param aliasPath - The path of the alias to update\n * @param updates - Partial updates to apply\n */\n public updateAlias(aliasPath: string, updates: Partial<A_StaticAlias>): boolean {\n const alias = this._aliases.get(aliasPath);\n if (alias) {\n Object.assign(alias, updates);\n return true;\n }\n return false;\n }\n\n /**\n * Get statistics about configured aliases\n */\n public getStats(): {\n total: number;\n enabled: number;\n disabled: number;\n directories: string[];\n } {\n const aliases = this.getAliases();\n const enabled = aliases.filter(a => a.enabled !== false);\n const disabled = aliases.filter(a => a.enabled === false);\n const directories = [...new Set(aliases.map(a => a.directory))];\n\n return {\n total: aliases.length,\n enabled: enabled.length,\n disabled: disabled.length,\n directories\n };\n }\n\n /**\n * Checks if a given path is configured in the proxy (legacy method)\n * @deprecated Use findMatchingAlias instead\n * @param path \n * @returns \n */\n has(path: string): false | string {\n const alias = this.findMatchingAlias(path);\n return alias ? alias.directory : false;\n }\n}","import { A_Fragment } from \"@adaas/a-concept\";\n\n\n\nexport class A_ListQueryFilter<FilterFields extends string[]> extends A_Fragment {\n\n protected parsedQuery!: Record<FilterFields[number], string>;\n\n constructor(\n protected _query: string | Partial<Record<FilterFields[number], string>> = {},\n protected defaults: Partial<Record<FilterFields[number], string>> = {}\n ) {\n super();\n this.parsedQuery = this.parseQueryString(_query);\n }\n\n\n get query() {\n return this._query;\n }\n\n\n get(property: FilterFields[number], defaultValue: string = '') {\n return this.parsedQuery[property] || this.defaults[property] || defaultValue;\n }\n\n protected parseQueryString(value: string | Partial<Record<FilterFields[number], string>> = {}): Record<FilterFields[number], string> {\n if (typeof value === 'string') {\n return value.split('&').reduce((acc, part) => {\n const [key, val] = part.split('=');\n acc[decodeURIComponent(key)] = decodeURIComponent(val || '');\n return acc;\n }, {}) as Record<FilterFields[number], string>;\n }\n return value as Record<FilterFields[number], string>;\n }\n}","import { A_Entity, A_Fragment, ASEID } from \"@adaas/a-concept\"\nimport { A_SERVER_TYPES__AEntityFactoryConstructor1, A_SERVER_TYPES__AEntityFactoryConstructor2 } from \"./A-EntityFactory.context.types\";\n\n\nexport class A_EntityFactory extends A_Fragment {\n\n\n private _entities: Map<string, { new(...args: any[]): any }> = new Map();\n\n\n constructor(\n map: A_SERVER_TYPES__AEntityFactoryConstructor1\n )\n constructor(\n entities: A_SERVER_TYPES__AEntityFactoryConstructor2\n )\n constructor(\n map: A_SERVER_TYPES__AEntityFactoryConstructor1,\n entities: A_SERVER_TYPES__AEntityFactoryConstructor2\n )\n constructor(\n param1: A_SERVER_TYPES__AEntityFactoryConstructor1 | A_SERVER_TYPES__AEntityFactoryConstructor2,\n param2?: A_SERVER_TYPES__AEntityFactoryConstructor2\n ) {\n super();\n\n this._setEntities(param1);\n this._setEntities(param2);\n }\n\n\n protected _setEntities(\n entities: A_SERVER_TYPES__AEntityFactoryConstructor2 | A_SERVER_TYPES__AEntityFactoryConstructor1 = []\n ) {\n if (Array.isArray(entities)) {\n entities.forEach((entity) => {\n this._entities.set(entity.entity, entity);\n });\n } else {\n Object.keys(entities).forEach((key) => {\n this._entities.set(key, entities[key]);\n });\n }\n }\n\n\n add(\n key: string,\n entity: typeof A_Entity\n ): void\n add(\n entity: typeof A_Entity\n ): void\n add(\n param1: string | typeof A_Entity,\n param2?: typeof A_Entity\n ): void {\n switch (true) {\n case typeof param1 === 'string' && !!param2:\n this._entities.set(param1, param2);\n\n break;\n\n case typeof param1 !== 'string':\n this._entities.set(param1.entity, param1);\n\n break;\n }\n }\n \n\n\n has(\n aseid: ASEID\n ): boolean\n has(\n /**\n * The name of the entity\n */\n entity: string\n ): boolean\n has(\n /**\n * The ASEID of the entity\n */\n aseid: string\n ): boolean\n has(\n param1: string | ASEID\n ): boolean {\n let name: string;\n\n switch (true) {\n case param1 instanceof ASEID:\n name = param1.entity;\n\n break;\n\n case !(param1 instanceof ASEID) && ASEID.isASEID(param1):\n name = new ASEID(param1).entity;\n\n break;\n\n default:\n name = param1;\n\n break;\n }\n\n return this._entities.has(name);\n }\n\n\n /**\n * Resolves the entity constructor by the entity name\n * \n * @param entity \n */\n resolve(\n entity: string\n ): { new(...args: any[]): A_Entity } | undefined\n resolve(\n aseid: string\n ): { new(...args: any[]): A_Entity } | undefined\n resolve(\n aseid: ASEID\n ): { new(...args: any[]): A_Entity } | undefined\n resolve(\n param1: string | ASEID\n ): { new(...args: any[]): A_Entity } | undefined {\n\n let name: string;\n\n switch (true) {\n case param1 instanceof ASEID:\n name = param1.entity;\n\n break;\n\n case typeof param1 === 'string' && ASEID.isASEID(param1):\n\n name = new ASEID(param1).entity;\n\n break;\n\n default:\n name = param1;\n\n break;\n }\n\n return this._entities.get(name);\n }\n\n\n\n resolveByName(\n name: string\n ): { new(...args: any[]): A_Entity } | undefined {\n return this._entities.get(name);\n }\n\n}","import {\n A_Context, A_Entity,\n ASEID,\n} from \"@adaas/a-concept\";\nimport {\n A_SERVER_TYPES__A_EntityListConstructor,\n A_SERVER_TYPES__A_EntityListPagination,\n A_SERVER_TYPES__A_EntityListSerialized\n} from \"./A_EntityList.entity.types\";\n\n\n\n/**\n * A-EntityList\n * \n * Entity that represents a list of entities with pagination of particular type\n */\nexport class A_EntityList<\n EntityType extends A_Entity = A_Entity,\n> extends A_Entity<\n A_SERVER_TYPES__A_EntityListConstructor,\n A_SERVER_TYPES__A_EntityListSerialized\n> {\n\n static get scope(): string {\n return 'a-server';\n }\n\n protected _entityConstructor!: new (...args: ConstructorParameters<typeof A_Entity>) => EntityType;\n protected _items: Array<EntityType> = [];\n protected _pagination: A_SERVER_TYPES__A_EntityListPagination = {\n total: 0,\n page: 1,\n pageSize: 10\n };\n\n\n /**\n * Returns the entity constructor used for the list\n */\n get entityConstructor(): new (...args: ConstructorParameters<typeof A_Entity>) => EntityType {\n return this._entityConstructor;\n }\n\n /**\n * Returns the list of items contained in the entity list\n */\n get items(): Array<EntityType> {\n return this._items;\n }\n\n /**\n * Returns pagination information about the entity list\n */\n get pagination(): A_SERVER_TYPES__A_EntityListPagination {\n return this._pagination;\n }\n\n\n\n\n /**\n * Creates a new instance of A_EntityList\n * \n * @param newEntity \n */\n fromNew(newEntity: A_SERVER_TYPES__A_EntityListConstructor): void {\n this.aseid = new ASEID({\n concept: A_Context.root.name,\n scope: 'default',\n entity: 'a-list' + (newEntity.name ? `.${newEntity.name}` : ''),\n id: (new Date()).getTime().toString(),\n });\n\n this._entityConstructor = newEntity.constructor as new (...args: any[]) => EntityType;\n }\n\n\n\n /**\n * Allows to convert Repository Response data to EntityList instance\n * \n * [!] This method does not load the data from the repository, it only converts the data to the EntityList instance\n * \n * @param items \n * @param pagination \n */\n fromList(\n items: Array<EntityType> | Array<ReturnType<EntityType['toJSON']>>,\n pagination?: A_SERVER_TYPES__A_EntityListPagination\n ) {\n this._items = items.map(item => {\n if (item instanceof A_Entity) {\n return item as EntityType;\n } else {\n const entity = new this._entityConstructor(item);\n return entity;\n }\n });\n\n if (pagination) {\n this._pagination = {\n total: pagination.total,\n page: pagination.page,\n pageSize: pagination.pageSize\n }\n }\n }\n\n\n\n /**\n * Serializes the EntityList to a JSON object\n * \n * @returns \n */\n toJSON(): A_SERVER_TYPES__A_EntityListSerialized<EntityType> {\n return {\n ...super.toJSON(),\n items: this._items.map(i => i.toJSON()) as ReturnType<EntityType['toJSON']>[],\n pagination: this._pagination\n }\n }\n}\n","import { A_Component, A_TYPES__ComponentMeta } from \"@adaas/a-concept\";\nimport { A_Route } from \"@adaas/a-server/entities/A-Route/A-Route.entity\";\n\n\nexport enum A_SERVER_TYPES__RouterMethod {\n POST = 'POST',\n GET = 'GET',\n PUT = 'PUT',\n DELETE = 'DELETE',\n PATCH = 'PATCH',\n DEFAULT = 'DEFAULT'\n}\n\n\nexport type A_TYPES__ARouterComponentMeta = {\n [A_SERVER_TYPES__ARouterComponentMetaKey.ROUTES]: Map<string, A_TYPES__ARouterDefineRoute>\n} & A_TYPES__ComponentMeta\n\n\nexport type A_TYPES__ARouterDefineRoute = {\n component: A_Component,\n handler: string,\n route: A_Route\n}\n\n\nexport enum A_SERVER_TYPES__ARouterComponentMetaKey {\n ROUTES = 'ROUTES'\n\n}\n\n\n\nexport type A_SERVER_TYPES__ARouterRouteConfig = {\n path: string | RegExp;\n version: string;\n prefix: string;\n} ","import {\n A_Component,\n A_Concept,\n A_Context,\n A_Feature,\n A_Feature_Define,\n A_Feature_Extend,\n A_IdentityHelper,\n A_Inject,\n A_Meta,\n A_Scope,\n A_TypeGuards\n} from \"@adaas/a-concept\";\nimport { A_Service } from \"@adaas/a-server/containers/A-Service/A-Service.container\";\nimport { A_SERVER_TYPES__ServerFeature } from \"@adaas/a-server/containers/A-Service/A-Service.container.types\";\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\nimport {\n A_SERVER_TYPES__ARouterComponentMetaKey,\n A_SERVER_TYPES__ARouterRouteConfig,\n A_SERVER_TYPES__RouterMethod,\n A_TYPES__ARouterComponentMeta,\n A_TYPES__ARouterDefineRoute\n} from \"./A-Router.component.types\";\nimport { A_Route } from \"@adaas/a-server/entities/A-Route/A-Route.entity\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_ServerLogger } from \"../A-ServerLogger/A_ServerLogger.component\";\nimport { A_TYPES__Required } from \"@adaas/a-concept/dist/src/types/A_Common.types\";\nimport { A_Config, A_Logger } from \"@adaas/a-utils\";\n\n\n\nexport class A_Router extends A_Component {\n\n // =======================================================\n // ================ Method Definition=====================\n // =======================================================\n\n /**\n * Allows to define a custom route for POST requests\n * \n * @param path \n * @returns \n */\n static Post(path: string | A_Route | RegExp | A_TYPES__Required<Partial<A_SERVER_TYPES__ARouterRouteConfig>, ['path']>) {\n\n\n return this.defineRoute({\n method: A_SERVER_TYPES__RouterMethod.POST,\n path: typeof path === 'object' && 'path' in path ? path.path : path,\n version: typeof path === 'object' && 'version' in path && path.version ? path.version : 'v1',\n prefix: typeof path === 'object' && 'prefix' in path && path.prefix ? path.prefix : 'api',\n });\n }\n\n /**\n * Allows to define a custom route for GET requests\n * \n * @param path \n * @returns \n */\n static Get(path: string | A_Route | RegExp | A_TYPES__Required<Partial<A_SERVER_TYPES__ARouterRouteConfig>, ['path']>) {\n return this.defineRoute({\n method: A_SERVER_TYPES__RouterMethod.GET,\n path: typeof path === 'object' && 'path' in path ? path.path : path,\n version: typeof path === 'object' && 'version' in path && path.version ? path.version : 'v1',\n prefix: typeof path === 'object' && 'prefix' in path && path.prefix ? path.prefix : 'api',\n });\n }\n\n /**\n * Allows to define a custom route for PUT requests\n * \n * @param path \n * @returns \n */\n static Put(path: string | A_Route | RegExp | A_TYPES__Required<Partial<A_SERVER_TYPES__ARouterRouteConfig>, ['path']>) {\n return this.defineRoute({\n method: A_SERVER_TYPES__RouterMethod.PUT,\n path: typeof path === 'object' && 'path' in path ? path.path : path,\n version: typeof path === 'object' && 'version' in path && path.version ? path.version : 'v1',\n prefix: typeof path === 'object' && 'prefix' in path && path.prefix ? path.prefix : 'api',\n });\n }\n\n /**\n * Allows to define a custom route for DELETE requests\n * \n * @param path \n * @returns \n */\n static Delete(path: string | A_Route | RegExp | A_TYPES__Required<Partial<A_SERVER_TYPES__ARouterRouteConfig>, ['path']>) {\n return this.defineRoute({\n method: A_SERVER_TYPES__RouterMethod.DELETE,\n path: typeof path === 'object' && 'path' in path ? path.path : path,\n version: typeof path === 'object' && 'version' in path && path.version ? path.version : 'v1',\n prefix: typeof path === 'object' && 'prefix' in path && path.prefix ? path.prefix : 'api',\n });\n }\n\n /**\n * Allows to define a custom route for PATCH requests\n * \n * @param path \n * @returns \n */\n static Patch(path: string | A_Route | RegExp | A_TYPES__Required<Partial<A_SERVER_TYPES__ARouterRouteConfig>, ['path']>) {\n return this.defineRoute({\n method: A_SERVER_TYPES__RouterMethod.PATCH,\n path: typeof path === 'object' && 'path' in path ? path.path : path,\n version: typeof path === 'object' && 'version' in path && path.version ? path.version : 'v1',\n prefix: typeof path === 'object' && 'prefix' in path && path.prefix ? path.prefix : 'api',\n });\n }\n\n /**\n * Allows to define a custom route for DEFAULT requests\n * \n * @param path \n * @returns \n */\n static Default(path: string | A_Route | RegExp | A_TYPES__Required<Partial<A_SERVER_TYPES__ARouterRouteConfig>, ['path']>) {\n return this.defineRoute({\n method: A_SERVER_TYPES__RouterMethod.DEFAULT,\n path: typeof path === 'object' && 'path' in path ? path.path : path,\n version: typeof path === 'object' && 'version' in path && path.version ? path.version : 'v1',\n prefix: typeof path === 'object' && 'prefix' in path && path.prefix ? path.prefix : 'api',\n });\n }\n\n\n static routes: Array<A_Route> = [];\n\n /**\n * Private method to have the same signature for all route methods\n * \n * @param method \n * @param path \n * @returns \n */\n private static defineRoute(\n config: A_SERVER_TYPES__ARouterRouteConfig & { method: A_SERVER_TYPES__RouterMethod }\n ) {\n const route = typeof config.path === 'string' || config.path instanceof RegExp\n ? new A_Route(\n `/${config.prefix}/${config.version}${config.path instanceof RegExp ? config.path.source : config.path.startsWith('/') ? config.path : `/${config.path}`}`,\n config.method)\n : config.path;\n\n this.routes.push(route);\n\n return function decorator(\n target: A_Component,\n propertyKey: string,\n descriptor: PropertyDescriptor\n ) {\n\n const meta: A_Meta<A_TYPES__ARouterComponentMeta> = A_Context.meta<A_TYPES__ARouterComponentMeta>(target as any);\n\n const routes = meta.get(A_SERVER_TYPES__ARouterComponentMetaKey.ROUTES) || new Map<string, A_TYPES__ARouterDefineRoute>();\n\n const searchKey = route.toAFeatureExtension(['A_Router', 'A_Service']);\n\n routes.set(searchKey.source, {\n component: target,\n handler: propertyKey,\n route\n });\n\n meta.set(A_SERVER_TYPES__ARouterComponentMetaKey.ROUTES, routes);\n\n A_Feature_Define({\n name: searchKey.source,\n invoke: false\n })(target, propertyKey, descriptor)\n\n return A_Feature_Extend(searchKey)(target, propertyKey, descriptor);\n }\n }\n\n\n // =====================================================\n // ================ Concept Lifecycle ========================\n // =====================================================\n\n @A_Concept.Load()\n protected async load(\n @A_Inject(A_ServerLogger) logger: A_ServerLogger\n ): Promise<void> {\n logger.routes(A_Router.routes);\n }\n\n\n\n // =======================================================\n // ================ Feature Definition=====================\n // =======================================================\n // @A_Feature.Define({\n // invoke: false\n // })\n @A_Feature.Extend({\n name: A_SERVER_TYPES__ServerFeature.onRequest,\n scope: [A_Service],\n })\n async identifyRoute(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(A_Config) config: A_Config,\n @A_Inject(A_Logger) logger: A_Logger\n ) {\n\n const route = request.route;\n\n if (config.get('A_CONCEPT_ENVIRONMENT') === 'development') {\n logger.log(`Incoming request: ${request.method} ${request.url}`);\n logger.log(`Identified route: ${route.toString()}`);\n }\n\n\n /**\n * just execute all listeners on the Route\n * url example: /api/v1/users/123\n * OR\n * url example: /api/v1/users\n * => Then The feature will be \"GET::/api/v1/users\"\n * And it will return all stages that are similar to the feature name \n */\n\n const feature = new A_Feature({\n name: route.toString(),\n component: this,\n })\n\n\n for (const stage of feature) {\n if (A_TypeGuards.isComponentConstructor(stage.definition.component)) {\n\n const meta: A_Meta<A_TYPES__ARouterComponentMeta> = A_Context.meta<A_TYPES__ARouterComponentMeta>(stage.definition.component);\n\n const routes = meta.get(A_SERVER_TYPES__ARouterComponentMetaKey.ROUTES);\n\n if (routes) {\n const currentRoute = routes.get(stage.definition.name || '');\n\n if (currentRoute) {\n request.params = {\n ...request.params,\n ...currentRoute.route.extractParams(request.url)\n };\n }\n }\n }\n\n const stageScope = new A_Scope({\n name: `a-route--${A_IdentityHelper.generateTimeId()}`,\n entities: [request],\n }, {\n parent: scope\n });\n\n\n await stage.process(stageScope);\n }\n\n\n console.log('Finished processing route for request:', request.method, request.url);\n }\n}","import { A_Component, A_Context, A_Feature, A_Inject, A_Scope, A_TYPES__Entity_Constructor, ASEID } from \"@adaas/a-concept\";\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\nimport { A_Router } from \"../A-Router/A-Router.component\";\nimport { A_EntityFactory } from \"@adaas/a-server/context/A-EntityFactory/A-EntityFactory.context\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_ServerError } from \"../A-ServerError/A-ServerError.class\";\nimport { A_Config, A_Manifest } from \"@adaas/a-utils\";\nimport { A_ListQueryFilter } from \"@adaas/a-server/context/A-ListQueryFilter/A_ListQueryFilter.context\";\nimport { A_EntityList } from \"@adaas/a-server/entities/A_EntityList/A_EntityList.entity\";\n\n\n\nexport class A_EntityController extends A_Component {\n\n // =======================================================\n // ================ Method Definition=====================\n // =======================================================\n @A_Router.Get({\n path: '/:type',\n version: 'v1',\n prefix: 'a-list'\n })\n async list(\n @A_Inject(A_Request) request: A_Request<any, any, { type: string }>,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_EntityFactory) factory: A_EntityFactory,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(A_Config) config: A_Config<['A_LIST_ITEMS_PER_PAGE', 'A_LIST_PAGE']>\n ) {\n\n const constructor = factory.resolveByName(request.params.type);\n\n if (constructor) {\n\n const entityList = new A_EntityList({\n name: request.params.type,\n scope: scope.name,\n constructor\n });\n\n scope.register(entityList);\n\n const queryFilter = new A_ListQueryFilter(request.query, {\n itemsPerPage: String(config.get('A_LIST_ITEMS_PER_PAGE') || '10'),\n page: String(config.get('A_LIST_PAGE') || '1')\n });\n\n const queryScope = new A_Scope({\n fragments: [queryFilter]\n }).inherit(scope);\n\n await entityList.load(queryScope);\n\n response.add('items', entityList.items);\n response.add('pagination', entityList.pagination);\n }\n }\n\n\n @A_Feature.Define({\n name: 'getEntity',\n invoke: false\n })\n @A_Router.Get({\n path: '/:aseid',\n version: 'v1',\n prefix: 'a-entity'\n })\n async load(\n @A_Inject(A_Request) request: A_Request<any, any, { aseid: string }>,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_Scope) scope: A_Scope\n ) {\n // Check if the scope has a manifest and if the entity is allowed to save\n // if (\n // scope.has(A_Manifest) && !scope.resolve(A_Manifest)\n // .isAllowed(entity.constructor, 'save')\n // .for(entity.constructor as A_TYPES__Entity_Constructor)\n // )\n // return;\n\n\n if (!ASEID.isASEID(request.params.aseid)) {\n response.add('A_EntityController.load', 'Invalid ASEID');\n return;\n }\n\n\n const aseid = new ASEID(request.params.aseid);\n\n const constructor = scope.resolveConstructor(aseid.entity);\n\n\n if (constructor) {\n const entity = new constructor(request.params.aseid);\n\n scope.register(entity);\n\n await entity.load();\n\n return response.status(200).json(entity.toJSON());\n }\n else\n throw new A_ServerError({\n title: 'Entity Not Found',\n description: `Entity constructor for ASEID ${request.params.aseid} not found`,\n status: 404,\n });\n }\n\n\n\n @A_Router.Post({\n path: '/',\n version: 'v1',\n prefix: 'a-entity'\n })\n async create(\n @A_Inject(A_Request) request: A_Request<any, any, { aseid: string }>,\n @A_Inject(A_EntityFactory) factory: A_EntityFactory,\n @A_Inject(A_Scope) scope: A_Scope\n ) {\n const constructor = factory.resolve(request.params.aseid);\n\n if (constructor) {\n const entity = new constructor(request.body);\n\n scope.register(entity);\n\n await entity.save();\n }\n }\n\n\n\n @A_Router.Put({\n path: '/:aseid',\n version: 'v1',\n prefix: 'a-entity'\n })\n async update(\n @A_Inject(A_Request) request: A_Request<any, any, { aseid: string }>,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_EntityFactory) factory: A_EntityFactory,\n @A_Inject(A_Scope) scope: A_Scope\n ) {\n if (!ASEID.isASEID(request.params.aseid)) {\n response.add('A_EntityController.update', 'Invalid ASEID');\n return;\n }\n\n const constructor = factory.resolve(request.params.aseid);\n\n\n if (constructor) {\n const entity = new constructor(request.body);\n\n scope.register(entity);\n\n await entity.save();\n }\n }\n\n\n @A_Router.Delete({\n path: '/:aseid',\n version: 'v1',\n prefix: 'a-entity'\n })\n async delete(\n @A_Inject(A_Request) request: A_Request<any, any, { aseid: string }>,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_EntityFactory) factory: A_EntityFactory,\n @A_Inject(A_Scope) scope: A_Scope\n ) {\n if (!ASEID.isASEID(request.params.aseid)) {\n response.add('A_EntityController.delete', 'Invalid ASEID');\n return;\n }\n\n const constructor = factory.resolve(request.params.aseid);\n\n if (constructor) {\n const entity = new constructor(request.params.aseid);\n\n scope.register(entity);\n\n await entity.destroy();\n }\n }\n\n\n\n // @A_Feature.Define({\n // name: 'callEntity',\n // invoke: false\n // })\n @A_Router.Post({\n path: '/:aseid/:action',\n version: 'v1',\n prefix: 'a-entity'\n })\n async callEntity(\n @A_Inject(A_Request) request: A_Request<any, any, { aseid: string, action: string }>,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_EntityFactory) factory: A_EntityFactory,\n @A_Inject(A_Scope) scope: A_Scope\n ) {\n if (!ASEID.isASEID(request.params.aseid)) {\n response.add('A_EntityController.callEntity', 'Invalid ASEID');\n return;\n }\n\n const constructor = factory.resolve(request.params.aseid);\n\n if (!constructor) {\n response.add('A_EntityController.callEntity', 'Entity not found');\n return;\n }\n\n const meta = A_Context.meta(constructor);\n\n const targetFeature = meta.features().find(f => f.name === `${constructor.name}.${request.params.action}`);\n\n if (!targetFeature) {\n response.add('A_EntityController.callEntity', 'Feature not found');\n return;\n }\n\n const entity = new constructor(request.params.aseid);\n\n scope.register(entity);\n\n await entity.load(scope);\n\n await entity[targetFeature.handler](scope);\n\n response.add('result', scope.toJSON());\n response.add('entity', entity);\n response.add('type', entity.aseid.entity);\n }\n}","import { A_Component, A_Inject } from \"@adaas/a-concept\";\nimport { A_Router } from \"../A-Router/A-Router.component\";\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_Config, A_Logger } from \"@adaas/a-utils\";\n\n\n\nexport class A_ServerHealthMonitor extends A_Component {\n\n\n // =======================================================\n // ================ Method Definition=====================\n // =======================================================\n\n @A_Router.Get({\n path: '/',\n prefix: 'health',\n version: 'v1',\n })\n async get(\n @A_Inject(A_Config) config: A_Config<['VERSION_PATH', 'EXPOSED_PROPERTIES']>,\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_Logger) logger: A_Logger\n ): Promise<any> {\n logger.log('Health check requested', config.get('A_CONCEPT_ROOT_FOLDER'));\n\n const packageJSON = await import(`${config.get('A_CONCEPT_ROOT_FOLDER')}/package.json`);\n const exposedProperties: Array<string> = config.get('EXPOSED_PROPERTIES')?.split(',') || [\n 'name',\n 'version',\n 'description',\n ];\n\n exposedProperties.forEach(prop => response.add(prop, packageJSON[prop]));\n\n console.log(`Health check accessed: ${request.method} ${request.url}`);\n }\n}","import { A_Component, A_Concept, A_Feature, A_Inject } from \"@adaas/a-concept\";\nimport { A_SERVER_TYPES__ServerFeature } from \"@adaas/a-server/containers/A-Service/A-Service.container.types\";\nimport { A_ProxyConfig } from \"@adaas/a-server/context/A-ProxyConfig/A_ProxyConfig.context\";\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_Route } from \"@adaas/a-server/entities/A-Route/A-Route.entity\";\nimport { A_Logger, A_Polyfill } from \"@adaas/a-utils\";\n\n\nexport class A_ServerProxy extends A_Component {\n\n\n @A_Concept.Load()\n async load(\n @A_Inject(A_Logger) logger: A_Logger,\n @A_Inject(A_ProxyConfig) config: A_ProxyConfig\n ) {\n logger.log(\n 'pink',\n `Proxy routes configured:`,\n config.configs.map(c => c.route).join('\\n')\n );\n }\n\n\n\n @A_Feature.Extend({\n name: A_SERVER_TYPES__ServerFeature.onRequest,\n })\n async onRequest(\n @A_Inject(A_Request) req: A_Request,\n @A_Inject(A_Response) res: A_Response,\n @A_Inject(A_ProxyConfig) proxyConfig: A_ProxyConfig,\n @A_Inject(A_Logger) logger: A_Logger,\n @A_Inject(A_Polyfill) polyfill: A_Polyfill\n ) {\n return new Promise<void>(async (resolve, reject) => {\n const { method, url } = req;\n\n const route = new A_Route(url, method);\n const config = proxyConfig.config(route.toString());\n\n if (!config) {\n return resolve(); // nothing to proxy\n }\n\n logger.log(\n \"yellow\",\n `Proxying request ${method} ${url} to ${config.hostname}`,\n config\n );\n\n const client = await (config.protocol === \"https:\"\n ? polyfill.https()\n : polyfill.http());\n\n const proxyReq = client.request(\n {\n method: config.route.method,\n hostname: config.hostname,\n port: config.port,\n headers: config.headers,\n path: route.path,\n },\n (proxyRes) => {\n if (!res.headersSent) {\n res.writeHead(proxyRes.statusCode || 200, proxyRes.headers);\n }\n proxyRes.on(\"end\", () => {\n\n logger.log(\"green\", `Proxy request to ${config?.hostname} completed`);\n\n resolve();\n });\n\n proxyRes.pipe(res.original);\n }\n );\n\n proxyReq.on(\"error\", (err) => reject(err));\n\n req.pipe(proxyReq);\n });\n }\n\n}","import { A_SERVER_TYPES__CorsConfig } from \"./A_ServerCORS.component.types\";\n\n\n\nexport const A_SERVER_DEFAULTS__CorsConfig: A_SERVER_TYPES__CorsConfig = {\n origin: '*', // Default to allow all origins\n methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],\n headers: ['Content-Type'],\n credentials: false,\n maxAge: 0\n};\n","import { A_Component, A_Feature, A_Inject } from '@adaas/a-concept';\nimport { A_SERVER_TYPES__CorsConfig } from './A_ServerCORS.component.types';\nimport { A_SERVER_DEFAULTS__CorsConfig } from './A_ServerCORS.component.defaults';\nimport { A_SERVER_TYPES__ServerFeature } from '@adaas/a-server/containers/A-Service/A-Service.container.types';\nimport { A_Request } from '@adaas/a-server/entities/A-Request/A-Request.entity';\nimport { A_Response } from '@adaas/a-server/entities/A-Response/A-Response.entity';\nimport { A_Config } from '@adaas/a-utils';\n\n\nexport class A_ServerCORS extends A_Component {\n\n private config!: A_SERVER_TYPES__CorsConfig;\n\n @A_Feature.Extend({\n name: A_SERVER_TYPES__ServerFeature.beforeStart\n })\n async init(\n @A_Inject(A_Config) config: A_Config<['ORIGIN', 'METHODS', 'HEADERS', 'CREDENTIALS', 'MAX_AGE']>,\n ) {\n this.config = {\n origin: config.get('ORIGIN') || A_SERVER_DEFAULTS__CorsConfig.origin,\n methods: config.get('METHODS') || A_SERVER_DEFAULTS__CorsConfig.methods,\n headers: config.get('HEADERS') || A_SERVER_DEFAULTS__CorsConfig.headers,\n credentials: config.get('CREDENTIALS') || A_SERVER_DEFAULTS__CorsConfig.credentials,\n maxAge: config.get('MAX_AGE') || A_SERVER_DEFAULTS__CorsConfig.maxAge,\n };\n }\n\n\n @A_Feature.Extend({\n name: A_SERVER_TYPES__ServerFeature.beforeRequest\n })\n public apply(\n @A_Inject(A_Request) aReq: A_Request,\n @A_Inject(A_Response) aRes: A_Response,\n ) {\n\n aRes.setHeader('Access-Control-Allow-Origin', this.config.origin);\n aRes.setHeader('Access-Control-Allow-Methods', this.config.methods.join(', '));\n aRes.setHeader('Access-Control-Allow-Headers', this.config.headers.join(', '));\n\n if (this.config.credentials) {\n aRes.setHeader('Access-Control-Allow-Credentials', 'true');\n }\n\n if (this.config.maxAge) {\n aRes.setHeader('Access-Control-Max-Age', this.config.maxAge.toString());\n }\n\n // Handle preflight OPTIONS requests\n if (aReq.req.method === 'OPTIONS') {\n aRes.status(204).send();\n }\n }\n}\n","import { A_Component, A_Concept, A_Feature, A_Inject } from \"@adaas/a-concept\"\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_SERVER_TYPES__ServerFeature } from \"@adaas/a-server/containers/A-Service/A-Service.container.types\";\nimport { A_Route } from \"@adaas/a-server/entities/A-Route/A-Route.entity\";\nimport { A_StaticConfig, A_StaticAlias } from \"@adaas/a-server/context/A-StaticConfig/A-StaticConfig.context\";\nimport { A_Logger, A_Polyfill } from \"@adaas/a-utils\";\n\nexport class A_StaticLoader extends A_Component {\n\n private _fsPolyfill: any;\n private _pathPolyfill: any;\n\n @A_Concept.Load()\n async load(\n @A_Inject(A_Logger) logger: A_Logger,\n @A_Inject(A_StaticConfig) config: A_StaticConfig,\n @A_Inject(A_Polyfill) polyfill: A_Polyfill\n ) {\n // Initialize polyfills\n this._fsPolyfill = await polyfill.fs();\n this._pathPolyfill = await polyfill.path();\n\n // Log configured aliases\n const aliases = config.getEnabledAliases();\n logger.log(\n 'pink',\n `Static aliases configured:`,\n aliases.map(alias => `${alias.alias} -> ${alias.directory}`).join('\\n')\n );\n }\n\n\n // =======================================================\n // ================ Method Definition=====================\n // =======================================================\n\n @A_Feature.Extend({\n name: A_SERVER_TYPES__ServerFeature.onRequest,\n })\n async onRequest(\n @A_Inject(A_Request) req: A_Request,\n @A_Inject(A_Response) res: A_Response,\n @A_Inject(A_Logger) logger: A_Logger,\n @A_Inject(A_StaticConfig) config: A_StaticConfig,\n @A_Inject(A_Polyfill) polyfill: A_Polyfill\n ) {\n\n if (req.method !== 'GET' && req.method !== 'HEAD') {\n return; // Only handle GET and HEAD requests\n }\n\n const { method, url } = req;\n const route = new A_Route(url, method);\n\n // Check if this request matches any of our configured aliases\n const alias = config.findMatchingAlias(route.path);\n if (!alias) {\n return; // No static config for this path\n }\n\n try {\n // Ensure polyfills are available\n const fs = this._fsPolyfill || await polyfill.fs();\n const path = this._pathPolyfill || await polyfill.path();\n\n const staticDir = path.resolve(process.cwd(), alias.directory);\n\n // Validate static directory exists\n if (!fs.existsSync(staticDir)) {\n logger.log(\"red\", `Static directory ${staticDir} does not exist.`);\n return;\n }\n\n // Get the file path relative to the alias\n const relativePath = route.path.replace(alias.path, '');\n const safePath = this.safeFilePath(staticDir, relativePath, req.headers?.host, path, fs);\n \n await this.serveFile(safePath, res, logger, fs, path);\n } catch (error: any) {\n logger.error(`Static file serving error: ${error.message}`);\n res.writeHead(404, { \"Content-Type\": \"text/plain\" });\n res.send(\"File not found\");\n }\n }\n\n /**\n * Add a custom static file alias through the config\n * @param alias - The URL path alias (e.g., '/assets')\n * @param directory - The local directory path\n * @param path - Optional custom path (defaults to alias)\n * @param config - Static config instance\n * @param logger - Logger instance for logging\n */\n public addAlias(\n alias: string, \n directory: string, \n config: A_StaticConfig, \n logger?: A_Logger, \n path?: string\n ): void {\n config.addAlias(alias, directory, path);\n \n if (logger) {\n logger.log('cyan', `Static alias added: ${alias} -> ${directory}`);\n }\n }\n\n /**\n * Remove a static file alias through the config\n * @param aliasPath - The path of the alias to remove\n * @param config - Static config instance\n * @param logger - Logger instance for logging\n */\n public removeAlias(aliasPath: string, config: A_StaticConfig, logger?: A_Logger): boolean {\n const removed = config.removeAlias(aliasPath);\n \n if (removed && logger) {\n logger.log('yellow', `Static alias removed: ${aliasPath}`);\n }\n \n return removed;\n }\n\n /**\n * Get all configured aliases from config\n * @param config - Static config instance\n */\n public getAliases(config: A_StaticConfig): A_StaticAlias[] {\n return config.getAliases();\n }\n\n /**\n * Enable or disable an alias\n * @param aliasPath - The path of the alias\n * @param enabled - Whether to enable or disable\n * @param config - Static config instance\n * @param logger - Logger instance for logging\n */\n public setAliasEnabled(\n aliasPath: string, \n enabled: boolean, \n config: A_StaticConfig, \n logger?: A_Logger\n ): boolean {\n const result = config.setAliasEnabled(aliasPath, enabled);\n \n if (result && logger) {\n logger.log('blue', `Static alias ${enabled ? 'enabled' : 'disabled'}: ${aliasPath}`);\n }\n \n return result;\n }\n\n protected getMimeType(ext: string): string {\n const mimeTypes: Record<string, string> = {\n // Text\n \".html\": \"text/html\",\n \".htm\": \"text/html\",\n \".css\": \"text/css\",\n \".txt\": \"text/plain\",\n \".md\": \"text/markdown\",\n \".xml\": \"application/xml\",\n \n // JavaScript\n \".js\": \"application/javascript\",\n \".mjs\": \"application/javascript\",\n \".jsx\": \"application/javascript\",\n \".ts\": \"application/typescript\",\n \".tsx\": \"application/typescript\",\n \n // JSON\n \".json\": \"application/json\",\n \".jsonld\": \"application/ld+json\",\n \n // Images\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".svg\": \"image/svg+xml\",\n \".ico\": \"image/x-icon\",\n \".webp\": \"image/webp\",\n \".bmp\": \"image/bmp\",\n \".tiff\": \"image/tiff\",\n \n // Fonts\n \".woff\": \"font/woff\",\n \".woff2\": \"font/woff2\",\n \".ttf\": \"font/ttf\",\n \".otf\": \"font/otf\",\n \".eot\": \"application/vnd.ms-fontobject\",\n \n // Audio/Video\n \".mp3\": \"audio/mpeg\",\n \".wav\": \"audio/wav\",\n \".mp4\": \"video/mp4\",\n \".webm\": \"video/webm\",\n \".ogg\": \"application/ogg\",\n \n // Archives\n \".zip\": \"application/zip\",\n \".tar\": \"application/x-tar\",\n \".gz\": \"application/gzip\",\n \n // Documents\n \".pdf\": \"application/pdf\",\n \".doc\": \"application/msword\",\n \".docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \".xls\": \"application/vnd.ms-excel\",\n \".xlsx\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n };\n\n return mimeTypes[ext.toLowerCase()] || \"application/octet-stream\";\n }\n\n\n protected safeFilePath(staticDir: string, reqUrl: string, host: string = 'localhost', pathPolyfill: any, fsPolyfill: any): string {\n const parsedUrl = new URL(reqUrl || \"/\", `http://${host}`);\n let pathname = decodeURIComponent(parsedUrl.pathname);\n\n // Prevent path traversal attacks\n pathname = pathname.replace(/\\.\\.[\\/\\\\]/g, \"\");\n\n let filePath = pathPolyfill.join(staticDir, pathname);\n \n if (!fsPolyfill.existsSync(filePath)) {\n throw new Error(`File not found: ${filePath}`);\n }\n\n return filePath;\n }\n\n protected serveFile(\n filePath: string, \n res: A_Response, \n logger: A_Logger, \n fsPolyfill: any, \n pathPolyfill: any\n ): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n try {\n if (fsPolyfill.existsSync(filePath)) {\n const ext = pathPolyfill.extname(filePath);\n const contentType = this.getMimeType(ext);\n\n // Set appropriate headers\n const headers: Record<string, string> = {\n \"Content-Type\": contentType,\n \"Cache-Control\": this.getCacheControl(ext),\n \"X-Content-Type-Options\": \"nosniff\"\n };\n\n res.writeHead(200, headers);\n const stream = fsPolyfill.createReadStream(filePath);\n \n if (stream && res.original) {\n stream.pipe(res.original);\n\n stream.on('end', () => {\n logger.log('green', `Successfully served: ${filePath}`);\n resolve();\n });\n\n stream.on(\"error\", (err: any) => {\n logger.error(`File stream error: ${err.message}`);\n reject(new Error(`File stream error: ${err.message}`));\n });\n } else {\n res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n res.send(\"Internal server error\");\n reject(new Error(\"Failed to create file stream\"));\n }\n } else {\n res.writeHead(404, { \"Content-Type\": \"text/plain\" });\n res.send(\"File not found\");\n reject(new Error(`File not found: ${filePath}`));\n }\n } catch (error: any) {\n logger.error(`Error serving file: ${error.message}`);\n res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n res.send(\"Internal server error\");\n reject(error);\n }\n });\n }\n\n protected getCacheControl(ext: string): string {\n // Different cache strategies for different file types\n const staticAssets = ['.css', '.js', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.ico', '.woff', '.woff2', '.ttf', '.otf'];\n const dynamicContent = ['.html', '.htm'];\n \n if (staticAssets.includes(ext.toLowerCase())) {\n return \"public, max-age=31536000\"; // 1 year for static assets\n } else if (dynamicContent.includes(ext.toLowerCase())) {\n return \"public, max-age=3600\"; // 1 hour for HTML\n } else {\n return \"public, max-age=86400\"; // 1 day for other files\n }\n }\n\n}\n\n\n","import { A_Component, A_Container, A_Context, A_Feature, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_Router } from \"../A-Router/A-Router.component\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\n\n\n\nexport class A_Controller extends A_Component {\n\n\n @A_Router.Post({\n path: '/:component/:operation',\n version: 'v1',\n prefix: 'a-component'\n })\n async callEntityMethod(\n @A_Inject(A_Request) request: A_Request<any, any, {\n component: string,\n operation: string\n }>,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_Scope) scope: A_Scope\n ) {\n\n // check step by step each parameter to ensure they are valid\n\n if (!scope.has(request.params.component))\n return\n\n if (!request.params.operation || typeof request.params.operation !== 'string')\n return;\n\n\n const possibleComponent = scope.resolve(request.params.component);\n\n if (\n !possibleComponent\n ||\n ![A_Component, A_Container]\n .some(c => possibleComponent instanceof c)\n )\n return;\n\n const component = possibleComponent as A_Component | A_Container;\n\n const meta = A_Context.meta(component);\n\n const targetFeature = meta.features().find(f => f.name === `${component.constructor.name}.${request.params.operation}`);\n\n if (!targetFeature)\n return;\n\n\n await component.call(request.params.operation, scope);\n }\n}","import { A_Component, A_Feature, A_Inject, A_Scope } from \"@adaas/a-concept\"\nimport { A_EntityFactory } from \"@adaas/a-server/context/A-EntityFactory/A-EntityFactory.context\";\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_Router } from \"../A-Router/A-Router.component\";\nimport { A_EntityList } from \"@adaas/a-server/entities/A_EntityList/A_EntityList.entity\";\nimport { A_ListQueryFilter } from \"@adaas/a-server/context/A-ListQueryFilter/A_ListQueryFilter.context\";\nimport { A_Config } from \"@adaas/a-utils\";\n\n\n\nexport class A_ListingController extends A_Component {\n\n // @A_Feature.Define({\n // name: 'listEntities',\n // invoke: false\n // })\n @A_Router.Get({\n path: '/:type',\n version: 'v1',\n prefix: 'a-list'\n })\n async list(\n @A_Inject(A_Request) request: A_Request<any, any, { type: string }>,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_EntityFactory) factory: A_EntityFactory,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(A_Config) config: A_Config<['A_LIST_ITEMS_PER_PAGE', 'A_LIST_PAGE']>\n ) {\n\n const constructor = factory.resolveByName(request.params.type);\n\n if (constructor) {\n\n const entityList = new A_EntityList({\n name: request.params.type,\n scope: scope.name,\n constructor\n });\n\n scope.register(entityList);\n\n const queryFilter = new A_ListQueryFilter(request.query, {\n itemsPerPage: String(config.get('A_LIST_ITEMS_PER_PAGE') || '10'),\n page: String(config.get('A_LIST_PAGE') || '1')\n });\n\n const queryScope = new A_Scope({\n fragments: [queryFilter]\n }).inherit(scope);\n\n await entityList.load(queryScope);\n\n response.add('items', entityList.items);\n response.add('pagination', entityList.pagination);\n }\n }\n}","import { A_Component, A_Container, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_Router } from \"../A-Router/A-Router.component\";\nimport { A_Request } from \"@adaas/a-server/entities/A-Request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/entities/A-Response/A-Response.entity\";\nimport { A_Command } from \"@adaas/a-utils\";\n\n\nexport class A_CommandController extends A_Component {\n\n @A_Router.Get({\n path: \"/:command/execute\",\n version: \"v1\",\n prefix: \"a-command\"\n })\n async handleCommand(\n @A_Inject(A_Request) req: A_Request<any, any, { command: string }>,\n @A_Inject(A_Response) res: A_Response,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(A_Container) container: A_Container,\n ): Promise<void> {\n\n const commandName = req.params.command;\n\n const CommandConstructor = scope.resolveConstructor<A_Command>(commandName);\n\n if (!CommandConstructor) {\n res.status(404);\n\n throw new Error(`Command ${commandName} not found`);\n }\n\n const command = new CommandConstructor(req.body);\n\n container.scope.register(command);\n\n await command.execute();\n\n const serialized = command.toJSON();\n\n return res.status(200).json(serialized);\n }\n\n}","import { A_Caller, A_Component, A_Entity, A_Feature, A_Inject, A_Scope, A_TYPES__Entity_Constructor } from \"@adaas/a-concept\";\nimport { A_TYPES__EntityFeatures } from \"@adaas/a-concept/dist/src/global/A-Entity/A-Entity.constants\";\nimport { A_HTTPChannel } from \"@adaas/a-server/channels/A-Http/A-Http.channel\";\nimport { A_EntityList } from \"@adaas/a-server/entities/A_EntityList/A_EntityList.entity\";\nimport { A_Manifest } from \"@adaas/a-utils\";\n\n\n\n\nexport class A_EntityRepository extends A_Component {\n\n @A_Feature.Extend({\n name: A_TYPES__EntityFeatures.LOAD,\n scope: {\n include: [A_EntityList]\n }\n })\n async list(\n @A_Inject(A_HTTPChannel) channel: A_HTTPChannel,\n @A_Inject(A_Caller) entity: A_EntityList,\n @A_Inject(A_Scope) scope: A_Scope,\n ) {\n // Check if the scope has a manifest and if the entity is allowed to load\n if (\n scope.has(A_Manifest) && !scope.resolve(A_Manifest)\n .isAllowed(entity.constructor, 'load')\n .for(entity.constructor as A_TYPES__Entity_Constructor)\n )\n return;\n\n const response = await channel.get(`/a-list/${entity.aseid.entity}`);\n\n entity.fromJSON(response.data);\n }\n\n\n @A_Feature.Extend({\n name: A_TYPES__EntityFeatures.LOAD,\n scope: {\n exclude: [A_EntityList]\n }\n })\n async load(\n @A_Inject(A_HTTPChannel) channel: A_HTTPChannel,\n @A_Inject(A_Caller) entity: A_Entity,\n @A_Inject(A_Scope) scope: A_Scope,\n ) {\n // Check if the scope has a manifest and if the entity is allowed to load\n if (\n scope.has(A_Manifest) && !scope.resolve(A_Manifest)\n .isAllowed(entity.constructor, 'load')\n .for(entity.constructor as A_TYPES__Entity_Constructor)\n )\n return;\n\n const response = await channel.get(`/a-entity/${entity.aseid.toString()}`);\n\n entity.fromJSON(response.data);\n }\n\n\n @A_Feature.Extend({\n name: A_TYPES__EntityFeatures.SAVE,\n scope: {\n exclude: [A_EntityList]\n }\n })\n async save(\n @A_Inject(A_HTTPChannel) channel: A_HTTPChannel,\n @A_Inject(A_Caller) entity: A_Entity,\n @A_Inject(A_Scope) scope: A_Scope,\n ) {\n // Check if the scope has a manifest and if the entity is allowed to save\n if (\n scope.has(A_Manifest) && !scope.resolve(A_Manifest)\n .isAllowed(entity.constructor, 'save')\n .for(entity.constructor as A_TYPES__Entity_Constructor)\n )\n return;\n\n const response = await channel.post(`/a-entity/${entity.aseid.toString()}`, entity.toJSON());\n\n entity.fromJSON(response.data);\n }\n\n\n @A_Feature.Extend({\n name: A_TYPES__EntityFeatures.DESTROY,\n scope: {\n exclude: [A_EntityList]\n }\n })\n async destroy(\n @A_Inject(A_HTTPChannel) channel: A_HTTPChannel,\n @A_Inject(A_Caller) entity: A_Entity,\n @A_Inject(A_Scope) scope: A_Scope,\n ) {\n // Check if the scope has a manifest and if the entity is allowed to destroy\n if (\n scope.has(A_Manifest) && !scope.resolve(A_Manifest)\n .isAllowed(entity.constructor, 'destroy')\n .for(entity.constructor as A_TYPES__Entity_Constructor)\n )\n return;\n\n const response = await channel.delete(`/a-entity/${entity.aseid.toString()}`);\n\n entity.fromJSON(response.data);\n }\n\n\n}"]}
@@ -1,18 +0,0 @@
1
- import { A_Component, A_Feature } from "@adaas/a-concept";
2
-
3
-
4
-
5
- export class StatisticsController extends A_Component {
6
-
7
-
8
- @A_Feature.Extend(/.*/)
9
- getUsersCount() {
10
-
11
- }
12
-
13
-
14
-
15
- getOrdersCount() {
16
-
17
- }
18
- }
@@ -1,66 +0,0 @@
1
- import { A_Component, A_Entity, A_Feature, A_Inject, A_Scope, A_TYPES__EntityBaseMethod } from "@adaas/a-concept";
2
- import { A_ServerContainer } from "@adaas/a-server/containers/A-Service/A-Service.container";
3
- import { A_SERVER_TYPES__ServerFeature } from "@adaas/a-server/containers/A-Service/A-Service.container.types";
4
- import { MemoryStore } from "examples/microservices-server/context/MemoryStore.context";
5
-
6
-
7
-
8
- export class SimpleMemoryRepository extends A_Component {
9
-
10
- // --------------------------------------------------------------
11
- // -------------- Server Base Methods Extensions ----------------
12
- // --------------------------------------------------------------
13
-
14
- @A_Feature.Extend({
15
- name: A_SERVER_TYPES__ServerFeature.beforeStart,
16
- scope: [A_ServerContainer]
17
- })
18
- addStoreOnServerStartup(
19
- @A_Inject(A_Scope) scope: A_Scope,
20
- ) {
21
- scope.register(new MemoryStore());
22
- }
23
-
24
-
25
- // --------------------------------------------------------------
26
- // -------------- Entity Base Methods Extensions ----------------
27
- // --------------------------------------------------------------
28
-
29
-
30
- @A_Feature.Extend({
31
- name: A_TYPES__EntityBaseMethod.SAVE
32
- })
33
- async save(
34
- @A_Inject(MemoryStore) store: MemoryStore,
35
- @A_Inject(A_Entity) entity: A_Entity
36
- ) {
37
- await store.save(entity);
38
- }
39
-
40
-
41
- @A_Feature.Extend({
42
- name: A_TYPES__EntityBaseMethod.LOAD
43
- })
44
- async load(
45
- @A_Inject(MemoryStore) store: MemoryStore,
46
- @A_Inject(A_Entity) entity: A_Entity
47
- ) {
48
- const dbEntity = await store.get<any>(entity.aseid.toString());
49
-
50
- if (dbEntity)
51
- entity.fromJSON(dbEntity)
52
-
53
- return store.entities.get(entity.aseid.toString());
54
- }
55
-
56
-
57
- @A_Feature.Extend({
58
- name: A_TYPES__EntityBaseMethod.DESTROY
59
- })
60
- async destroy(
61
- @A_Inject(MemoryStore) store: MemoryStore,
62
- @A_Inject(A_Entity) entity: A_Entity
63
- ) {
64
- await store.destroy(entity.aseid.toString());
65
- }
66
- }
@@ -1,43 +0,0 @@
1
- import { A_ServerContainer } from "@adaas/a-server/containers/A-Service/A-Service.container"
2
- import { A_Server } from "@adaas/a-server/context/A-Server/A_Server.context"
3
- import { User } from "./entities/User.entity";
4
- import { A_EntityFactory } from "@adaas/a-server/context/A-EntityFactory/A-EntityFactory.context";
5
-
6
-
7
- (async () => {
8
-
9
- const server = new A_Server({
10
- name: 'server',
11
- version: 'v1',
12
- port: 3000
13
- })
14
-
15
-
16
- const usersService = new A_ServerContainer({
17
- components: [
18
-
19
- ],
20
- fragments: [
21
- server,
22
- new A_EntityFactory({
23
- 'users': User
24
- })
25
- ]
26
- });
27
-
28
- const ordersService = new A_ServerContainer({
29
- components: [],
30
-
31
- fragments: [
32
- server,
33
- new A_EntityFactory({
34
- 'some': User
35
- })
36
- ]
37
- });
38
-
39
-
40
-
41
- await usersService.start();
42
- await ordersService.start();
43
- })
@@ -1,31 +0,0 @@
1
- import { A_Entity, A_Fragment } from "@adaas/a-concept";
2
- import { User } from "../entities/User.entity";
3
- import { Order } from "../entities/Order.entity";
4
-
5
-
6
-
7
- export class MemoryStore extends A_Fragment {
8
-
9
- entities: Map<string, any> = new Map();
10
-
11
-
12
- async save(entity: A_Entity) {
13
- this.entities.set(entity.aseid.toString(), entity.toJSON());
14
- }
15
-
16
-
17
- async get<T extends any>(aseid: string): Promise<T | undefined> {
18
- return this.entities.get(aseid);
19
- }
20
-
21
-
22
- async getByType(name: string) {
23
- return Array.from(this.entities.values())
24
- .filter(entity => entity.aseid.entity === name);
25
- }
26
-
27
-
28
- async destroy(aseid: string) {
29
- this.entities.delete(aseid);
30
- }
31
- }
@@ -1,7 +0,0 @@
1
- import { A_Entity } from "@adaas/a-concept";
2
-
3
-
4
- export class Order extends A_Entity {
5
-
6
-
7
- }
@@ -1,8 +0,0 @@
1
- import { A_Entity } from "@adaas/a-concept";
2
-
3
-
4
-
5
- export class User extends A_Entity{
6
-
7
-
8
- }