@saolabs/client 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/README.md +221 -0
  2. package/dist/index.d.ts +46 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +38 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/plugins.d.ts +38 -0
  7. package/dist/plugins.d.ts.map +1 -0
  8. package/dist/plugins.js +61 -0
  9. package/dist/plugins.js.map +1 -0
  10. package/dist/src/core/app/Application.d.ts +159 -0
  11. package/dist/src/core/app/Application.d.ts.map +1 -0
  12. package/dist/src/core/app/Application.js +338 -0
  13. package/dist/src/core/app/Application.js.map +1 -0
  14. package/dist/src/core/bootstrap/app.d.ts +4 -0
  15. package/dist/src/core/bootstrap/app.d.ts.map +1 -0
  16. package/dist/src/core/bootstrap/app.js +49 -0
  17. package/dist/src/core/bootstrap/app.js.map +1 -0
  18. package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts +9 -0
  19. package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts.map +1 -0
  20. package/dist/src/core/bootstrap/providers/ApiServiceProvider.js +18 -0
  21. package/dist/src/core/bootstrap/providers/ApiServiceProvider.js.map +1 -0
  22. package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts +6 -0
  23. package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts.map +1 -0
  24. package/dist/src/core/bootstrap/providers/CoreServiceProvider.js +21 -0
  25. package/dist/src/core/bootstrap/providers/CoreServiceProvider.js.map +1 -0
  26. package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts +7 -0
  27. package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts.map +1 -0
  28. package/dist/src/core/bootstrap/providers/HelperServiceProvider.js +14 -0
  29. package/dist/src/core/bootstrap/providers/HelperServiceProvider.js.map +1 -0
  30. package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts +9 -0
  31. package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts.map +1 -0
  32. package/dist/src/core/bootstrap/providers/RouteServiceProvider.js +18 -0
  33. package/dist/src/core/bootstrap/providers/RouteServiceProvider.js.map +1 -0
  34. package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts +38 -0
  35. package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts.map +1 -0
  36. package/dist/src/core/bootstrap/providers/ServiceProvider.js +41 -0
  37. package/dist/src/core/bootstrap/providers/ServiceProvider.js.map +1 -0
  38. package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts +9 -0
  39. package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts.map +1 -0
  40. package/dist/src/core/bootstrap/providers/ViewServiceProvider.js +18 -0
  41. package/dist/src/core/bootstrap/providers/ViewServiceProvider.js.map +1 -0
  42. package/dist/src/core/bootstrap/providers/default-providers.d.ts +14 -0
  43. package/dist/src/core/bootstrap/providers/default-providers.d.ts.map +1 -0
  44. package/dist/src/core/bootstrap/providers/default-providers.js +79 -0
  45. package/dist/src/core/bootstrap/providers/default-providers.js.map +1 -0
  46. package/dist/src/core/bootstrap/providers/index.d.ts +10 -0
  47. package/dist/src/core/bootstrap/providers/index.d.ts.map +1 -0
  48. package/dist/src/core/bootstrap/providers/index.js +9 -0
  49. package/dist/src/core/bootstrap/providers/index.js.map +1 -0
  50. package/dist/src/core/bootstrap/providers/provider-order.d.ts +19 -0
  51. package/dist/src/core/bootstrap/providers/provider-order.d.ts.map +1 -0
  52. package/dist/src/core/bootstrap/providers/provider-order.js +51 -0
  53. package/dist/src/core/bootstrap/providers/provider-order.js.map +1 -0
  54. package/dist/src/core/cache/ViewCache.d.ts +46 -0
  55. package/dist/src/core/cache/ViewCache.d.ts.map +1 -0
  56. package/dist/src/core/cache/ViewCache.js +85 -0
  57. package/dist/src/core/cache/ViewCache.js.map +1 -0
  58. package/dist/src/core/cache/index.d.ts +2 -0
  59. package/dist/src/core/cache/index.d.ts.map +1 -0
  60. package/dist/src/core/cache/index.js +2 -0
  61. package/dist/src/core/cache/index.js.map +1 -0
  62. package/dist/src/core/contracts/ApiInterface.d.ts +11 -0
  63. package/dist/src/core/contracts/ApiInterface.d.ts.map +1 -0
  64. package/dist/src/core/contracts/ApiInterface.js +2 -0
  65. package/dist/src/core/contracts/ApiInterface.js.map +1 -0
  66. package/dist/src/core/contracts/ApplicationInterface.d.ts +66 -0
  67. package/dist/src/core/contracts/ApplicationInterface.d.ts.map +1 -0
  68. package/dist/src/core/contracts/ApplicationInterface.js +3 -0
  69. package/dist/src/core/contracts/ApplicationInterface.js.map +1 -0
  70. package/dist/src/core/contracts/BlockInterface.d.ts +67 -0
  71. package/dist/src/core/contracts/BlockInterface.d.ts.map +1 -0
  72. package/dist/src/core/contracts/BlockInterface.js +2 -0
  73. package/dist/src/core/contracts/BlockInterface.js.map +1 -0
  74. package/dist/src/core/contracts/ComponentInterface.d.ts +24 -0
  75. package/dist/src/core/contracts/ComponentInterface.d.ts.map +1 -0
  76. package/dist/src/core/contracts/ComponentInterface.js +2 -0
  77. package/dist/src/core/contracts/ComponentInterface.js.map +1 -0
  78. package/dist/src/core/contracts/ElementInterface.d.ts +117 -0
  79. package/dist/src/core/contracts/ElementInterface.d.ts.map +1 -0
  80. package/dist/src/core/contracts/ElementInterface.js +2 -0
  81. package/dist/src/core/contracts/ElementInterface.js.map +1 -0
  82. package/dist/src/core/contracts/EventServiceInterface.d.ts +37 -0
  83. package/dist/src/core/contracts/EventServiceInterface.d.ts.map +1 -0
  84. package/dist/src/core/contracts/EventServiceInterface.js +3 -0
  85. package/dist/src/core/contracts/EventServiceInterface.js.map +1 -0
  86. package/dist/src/core/contracts/HelperInterface.d.ts +231 -0
  87. package/dist/src/core/contracts/HelperInterface.d.ts.map +1 -0
  88. package/dist/src/core/contracts/HelperInterface.js +3 -0
  89. package/dist/src/core/contracts/HelperInterface.js.map +1 -0
  90. package/dist/src/core/contracts/HttpServiceInterface.d.ts +38 -0
  91. package/dist/src/core/contracts/HttpServiceInterface.d.ts.map +1 -0
  92. package/dist/src/core/contracts/HttpServiceInterface.js +3 -0
  93. package/dist/src/core/contracts/HttpServiceInterface.js.map +1 -0
  94. package/dist/src/core/contracts/LoggerServiceInterface.d.ts +37 -0
  95. package/dist/src/core/contracts/LoggerServiceInterface.d.ts.map +1 -0
  96. package/dist/src/core/contracts/LoggerServiceInterface.js +3 -0
  97. package/dist/src/core/contracts/LoggerServiceInterface.js.map +1 -0
  98. package/dist/src/core/contracts/LoopContextInterface.d.ts +14 -0
  99. package/dist/src/core/contracts/LoopContextInterface.d.ts.map +1 -0
  100. package/dist/src/core/contracts/LoopContextInterface.js +3 -0
  101. package/dist/src/core/contracts/LoopContextInterface.js.map +1 -0
  102. package/dist/src/core/contracts/MarkerInterface.d.ts +55 -0
  103. package/dist/src/core/contracts/MarkerInterface.d.ts.map +1 -0
  104. package/dist/src/core/contracts/MarkerInterface.js +2 -0
  105. package/dist/src/core/contracts/MarkerInterface.js.map +1 -0
  106. package/dist/src/core/contracts/ReactiveInterface.d.ts +38 -0
  107. package/dist/src/core/contracts/ReactiveInterface.d.ts.map +1 -0
  108. package/dist/src/core/contracts/ReactiveInterface.js +2 -0
  109. package/dist/src/core/contracts/ReactiveInterface.js.map +1 -0
  110. package/dist/src/core/contracts/RouterInterface.d.ts +58 -0
  111. package/dist/src/core/contracts/RouterInterface.d.ts.map +1 -0
  112. package/dist/src/core/contracts/RouterInterface.js +2 -0
  113. package/dist/src/core/contracts/RouterInterface.js.map +1 -0
  114. package/dist/src/core/contracts/ServiceProviderInterface.d.ts +12 -0
  115. package/dist/src/core/contracts/ServiceProviderInterface.d.ts.map +1 -0
  116. package/dist/src/core/contracts/ServiceProviderInterface.js +2 -0
  117. package/dist/src/core/contracts/ServiceProviderInterface.js.map +1 -0
  118. package/dist/src/core/contracts/StorageServiceInterface.d.ts +43 -0
  119. package/dist/src/core/contracts/StorageServiceInterface.d.ts.map +1 -0
  120. package/dist/src/core/contracts/StorageServiceInterface.js +3 -0
  121. package/dist/src/core/contracts/StorageServiceInterface.js.map +1 -0
  122. package/dist/src/core/contracts/StoreServiceInterface.d.ts +45 -0
  123. package/dist/src/core/contracts/StoreServiceInterface.d.ts.map +1 -0
  124. package/dist/src/core/contracts/StoreServiceInterface.js +3 -0
  125. package/dist/src/core/contracts/StoreServiceInterface.js.map +1 -0
  126. package/dist/src/core/contracts/ViewCacheInterface.d.ts +13 -0
  127. package/dist/src/core/contracts/ViewCacheInterface.d.ts.map +1 -0
  128. package/dist/src/core/contracts/ViewCacheInterface.js +3 -0
  129. package/dist/src/core/contracts/ViewCacheInterface.js.map +1 -0
  130. package/dist/src/core/contracts/ViewControllerInterface.d.ts +115 -0
  131. package/dist/src/core/contracts/ViewControllerInterface.d.ts.map +1 -0
  132. package/dist/src/core/contracts/ViewControllerInterface.js +2 -0
  133. package/dist/src/core/contracts/ViewControllerInterface.js.map +1 -0
  134. package/dist/src/core/contracts/ViewInterface.d.ts +24 -0
  135. package/dist/src/core/contracts/ViewInterface.d.ts.map +1 -0
  136. package/dist/src/core/contracts/ViewInterface.js +2 -0
  137. package/dist/src/core/contracts/ViewInterface.js.map +1 -0
  138. package/dist/src/core/contracts/ViewManagerInterface.d.ts +44 -0
  139. package/dist/src/core/contracts/ViewManagerInterface.d.ts.map +1 -0
  140. package/dist/src/core/contracts/ViewManagerInterface.js +2 -0
  141. package/dist/src/core/contracts/ViewManagerInterface.js.map +1 -0
  142. package/dist/src/core/contracts/ViewStateInterface.d.ts +40 -0
  143. package/dist/src/core/contracts/ViewStateInterface.d.ts.map +1 -0
  144. package/dist/src/core/contracts/ViewStateInterface.js +3 -0
  145. package/dist/src/core/contracts/ViewStateInterface.js.map +1 -0
  146. package/dist/src/core/contracts/common.d.ts +28 -0
  147. package/dist/src/core/contracts/common.d.ts.map +1 -0
  148. package/dist/src/core/contracts/common.js +29 -0
  149. package/dist/src/core/contracts/common.js.map +1 -0
  150. package/dist/src/core/contracts/utils.d.ts +20 -0
  151. package/dist/src/core/contracts/utils.d.ts.map +1 -0
  152. package/dist/src/core/contracts/utils.js +4 -0
  153. package/dist/src/core/contracts/utils.js.map +1 -0
  154. package/dist/src/core/contracts/views.d.ts +23 -0
  155. package/dist/src/core/contracts/views.d.ts.map +1 -0
  156. package/dist/src/core/contracts/views.js +2 -0
  157. package/dist/src/core/contracts/views.js.map +1 -0
  158. package/dist/src/core/elements/Block.d.ts +58 -0
  159. package/dist/src/core/elements/Block.d.ts.map +1 -0
  160. package/dist/src/core/elements/Block.js +77 -0
  161. package/dist/src/core/elements/Block.js.map +1 -0
  162. package/dist/src/core/elements/BlockOutlet.d.ts +34 -0
  163. package/dist/src/core/elements/BlockOutlet.d.ts.map +1 -0
  164. package/dist/src/core/elements/BlockOutlet.js +59 -0
  165. package/dist/src/core/elements/BlockOutlet.js.map +1 -0
  166. package/dist/src/core/elements/Component.d.ts +62 -0
  167. package/dist/src/core/elements/Component.d.ts.map +1 -0
  168. package/dist/src/core/elements/Component.js +72 -0
  169. package/dist/src/core/elements/Component.js.map +1 -0
  170. package/dist/src/core/elements/ElementManager.d.ts +23 -0
  171. package/dist/src/core/elements/ElementManager.d.ts.map +1 -0
  172. package/dist/src/core/elements/ElementManager.js +33 -0
  173. package/dist/src/core/elements/ElementManager.js.map +1 -0
  174. package/dist/src/core/elements/Fragment.d.ts +51 -0
  175. package/dist/src/core/elements/Fragment.d.ts.map +1 -0
  176. package/dist/src/core/elements/Fragment.js +133 -0
  177. package/dist/src/core/elements/Fragment.js.map +1 -0
  178. package/dist/src/core/elements/Html.d.ts +52 -0
  179. package/dist/src/core/elements/Html.d.ts.map +1 -0
  180. package/dist/src/core/elements/Html.js +299 -0
  181. package/dist/src/core/elements/Html.js.map +1 -0
  182. package/dist/src/core/elements/Output.d.ts +69 -0
  183. package/dist/src/core/elements/Output.d.ts.map +1 -0
  184. package/dist/src/core/elements/Output.js +121 -0
  185. package/dist/src/core/elements/Output.js.map +1 -0
  186. package/dist/src/core/elements/Reactive.d.ts +77 -0
  187. package/dist/src/core/elements/Reactive.d.ts.map +1 -0
  188. package/dist/src/core/elements/Reactive.js +199 -0
  189. package/dist/src/core/elements/Reactive.js.map +1 -0
  190. package/dist/src/core/elements/TextElement.d.ts +46 -0
  191. package/dist/src/core/elements/TextElement.d.ts.map +1 -0
  192. package/dist/src/core/elements/TextElement.js +94 -0
  193. package/dist/src/core/elements/TextElement.js.map +1 -0
  194. package/dist/src/core/elements/Wrapper.d.ts +50 -0
  195. package/dist/src/core/elements/Wrapper.d.ts.map +1 -0
  196. package/dist/src/core/elements/Wrapper.js +96 -0
  197. package/dist/src/core/elements/Wrapper.js.map +1 -0
  198. package/dist/src/core/elements/Yield.d.ts +34 -0
  199. package/dist/src/core/elements/Yield.d.ts.map +1 -0
  200. package/dist/src/core/elements/Yield.js +56 -0
  201. package/dist/src/core/elements/Yield.js.map +1 -0
  202. package/dist/src/core/elements/helpers.d.ts +8 -0
  203. package/dist/src/core/elements/helpers.d.ts.map +1 -0
  204. package/dist/src/core/elements/helpers.js +40 -0
  205. package/dist/src/core/elements/helpers.js.map +1 -0
  206. package/dist/src/core/elements/index.d.ts +12 -0
  207. package/dist/src/core/elements/index.d.ts.map +1 -0
  208. package/dist/src/core/elements/index.js +12 -0
  209. package/dist/src/core/elements/index.js.map +1 -0
  210. package/dist/src/core/hellpers/ApiClient.d.ts +58 -0
  211. package/dist/src/core/hellpers/ApiClient.d.ts.map +1 -0
  212. package/dist/src/core/hellpers/ApiClient.js +122 -0
  213. package/dist/src/core/hellpers/ApiClient.js.map +1 -0
  214. package/dist/src/core/hellpers/app.d.ts +3 -0
  215. package/dist/src/core/hellpers/app.d.ts.map +1 -0
  216. package/dist/src/core/hellpers/app.js +53 -0
  217. package/dist/src/core/hellpers/app.js.map +1 -0
  218. package/dist/src/core/hellpers/utils.d.ts +26 -0
  219. package/dist/src/core/hellpers/utils.d.ts.map +1 -0
  220. package/dist/src/core/hellpers/utils.js +96 -0
  221. package/dist/src/core/hellpers/utils.js.map +1 -0
  222. package/dist/src/core/routers/Router.d.ts +212 -0
  223. package/dist/src/core/routers/Router.d.ts.map +1 -0
  224. package/dist/src/core/routers/Router.js +623 -0
  225. package/dist/src/core/routers/Router.js.map +1 -0
  226. package/dist/src/core/routers/index.d.ts +3 -0
  227. package/dist/src/core/routers/index.d.ts.map +1 -0
  228. package/dist/src/core/routers/index.js +2 -0
  229. package/dist/src/core/routers/index.js.map +1 -0
  230. package/dist/src/core/services/BlockManager.d.ts +63 -0
  231. package/dist/src/core/services/BlockManager.d.ts.map +1 -0
  232. package/dist/src/core/services/BlockManager.js +191 -0
  233. package/dist/src/core/services/BlockManager.js.map +1 -0
  234. package/dist/src/core/services/DomService.d.ts +9 -0
  235. package/dist/src/core/services/DomService.d.ts.map +1 -0
  236. package/dist/src/core/services/DomService.js +18 -0
  237. package/dist/src/core/services/DomService.js.map +1 -0
  238. package/dist/src/core/services/EventService.d.ts +58 -0
  239. package/dist/src/core/services/EventService.d.ts.map +1 -0
  240. package/dist/src/core/services/EventService.js +212 -0
  241. package/dist/src/core/services/EventService.js.map +1 -0
  242. package/dist/src/core/services/HelperService.d.ts +443 -0
  243. package/dist/src/core/services/HelperService.d.ts.map +1 -0
  244. package/dist/src/core/services/HelperService.js +1650 -0
  245. package/dist/src/core/services/HelperService.js.map +1 -0
  246. package/dist/src/core/services/HttpService.d.ts +63 -0
  247. package/dist/src/core/services/HttpService.d.ts.map +1 -0
  248. package/dist/src/core/services/HttpService.js +182 -0
  249. package/dist/src/core/services/HttpService.js.map +1 -0
  250. package/dist/src/core/services/LoggerService.d.ts +56 -0
  251. package/dist/src/core/services/LoggerService.d.ts.map +1 -0
  252. package/dist/src/core/services/LoggerService.js +94 -0
  253. package/dist/src/core/services/LoggerService.js.map +1 -0
  254. package/dist/src/core/services/MarkerRegistry.d.ts +94 -0
  255. package/dist/src/core/services/MarkerRegistry.d.ts.map +1 -0
  256. package/dist/src/core/services/MarkerRegistry.js +199 -0
  257. package/dist/src/core/services/MarkerRegistry.js.map +1 -0
  258. package/dist/src/core/services/MarkerService.d.ts +299 -0
  259. package/dist/src/core/services/MarkerService.d.ts.map +1 -0
  260. package/dist/src/core/services/MarkerService.js +723 -0
  261. package/dist/src/core/services/MarkerService.js.map +1 -0
  262. package/dist/src/core/services/StorageService.d.ts +69 -0
  263. package/dist/src/core/services/StorageService.d.ts.map +1 -0
  264. package/dist/src/core/services/StorageService.js +243 -0
  265. package/dist/src/core/services/StorageService.js.map +1 -0
  266. package/dist/src/core/services/StoreService.d.ts +80 -0
  267. package/dist/src/core/services/StoreService.d.ts.map +1 -0
  268. package/dist/src/core/services/StoreService.js +301 -0
  269. package/dist/src/core/services/StoreService.js.map +1 -0
  270. package/dist/src/core/services/index.d.ts +9 -0
  271. package/dist/src/core/services/index.d.ts.map +1 -0
  272. package/dist/src/core/services/index.js +9 -0
  273. package/dist/src/core/services/index.js.map +1 -0
  274. package/dist/src/core/types/utils.d.ts +29 -0
  275. package/dist/src/core/types/utils.d.ts.map +1 -0
  276. package/dist/src/core/types/utils.js +22 -0
  277. package/dist/src/core/types/utils.js.map +1 -0
  278. package/dist/src/core/view/LoopContext.d.ts +38 -0
  279. package/dist/src/core/view/LoopContext.d.ts.map +1 -0
  280. package/dist/src/core/view/LoopContext.js +100 -0
  281. package/dist/src/core/view/LoopContext.js.map +1 -0
  282. package/dist/src/core/view/Section.d.ts +41 -0
  283. package/dist/src/core/view/Section.d.ts.map +1 -0
  284. package/dist/src/core/view/Section.js +67 -0
  285. package/dist/src/core/view/Section.js.map +1 -0
  286. package/dist/src/core/view/View.d.ts +63 -0
  287. package/dist/src/core/view/View.d.ts.map +1 -0
  288. package/dist/src/core/view/View.js +85 -0
  289. package/dist/src/core/view/View.js.map +1 -0
  290. package/dist/src/core/view/ViewController.d.ts +277 -0
  291. package/dist/src/core/view/ViewController.d.ts.map +1 -0
  292. package/dist/src/core/view/ViewController.js +862 -0
  293. package/dist/src/core/view/ViewController.js.map +1 -0
  294. package/dist/src/core/view/ViewManager.d.ts +141 -0
  295. package/dist/src/core/view/ViewManager.d.ts.map +1 -0
  296. package/dist/src/core/view/ViewManager.js +565 -0
  297. package/dist/src/core/view/ViewManager.js.map +1 -0
  298. package/dist/src/core/view/ViewState.d.ts +117 -0
  299. package/dist/src/core/view/ViewState.d.ts.map +1 -0
  300. package/dist/src/core/view/ViewState.js +410 -0
  301. package/dist/src/core/view/ViewState.js.map +1 -0
  302. package/dist/src/core/view/index.d.ts +6 -0
  303. package/dist/src/core/view/index.d.ts.map +1 -0
  304. package/dist/src/core/view/index.js +6 -0
  305. package/dist/src/core/view/index.js.map +1 -0
  306. package/index.ts +62 -0
  307. package/package.json +70 -0
  308. package/plugins.ts +77 -0
  309. package/src/core/app/Application.ts +410 -0
  310. package/src/core/bootstrap/app.ts +58 -0
  311. package/src/core/bootstrap/providers/ApiServiceProvider.ts +18 -0
  312. package/src/core/bootstrap/providers/CoreServiceProvider.ts +19 -0
  313. package/src/core/bootstrap/providers/HelperServiceProvider.ts +12 -0
  314. package/src/core/bootstrap/providers/RouteServiceProvider.ts +17 -0
  315. package/src/core/bootstrap/providers/ServiceProvider.ts +51 -0
  316. package/src/core/bootstrap/providers/ViewServiceProvider.ts +17 -0
  317. package/src/core/bootstrap/providers/default-providers.ts +94 -0
  318. package/src/core/bootstrap/providers/index.ts +9 -0
  319. package/src/core/bootstrap/providers/provider-order.test.ts +67 -0
  320. package/src/core/bootstrap/providers/provider-order.ts +66 -0
  321. package/src/core/cache/ViewCache.ts +102 -0
  322. package/src/core/cache/index.ts +1 -0
  323. package/src/core/contracts/ApiInterface.ts +11 -0
  324. package/src/core/contracts/ApplicationInterface.ts +79 -0
  325. package/src/core/contracts/BlockInterface.ts +76 -0
  326. package/src/core/contracts/ComponentInterface.ts +26 -0
  327. package/src/core/contracts/ElementInterface.ts +140 -0
  328. package/src/core/contracts/EventServiceInterface.ts +47 -0
  329. package/src/core/contracts/HelperInterface.ts +256 -0
  330. package/src/core/contracts/HttpServiceInterface.ts +51 -0
  331. package/src/core/contracts/LoggerServiceInterface.ts +48 -0
  332. package/src/core/contracts/LoopContextInterface.ts +15 -0
  333. package/src/core/contracts/MarkerInterface.ts +77 -0
  334. package/src/core/contracts/ReactiveInterface.ts +45 -0
  335. package/src/core/contracts/RouterInterface.ts +65 -0
  336. package/src/core/contracts/ServiceProviderInterface.ts +12 -0
  337. package/src/core/contracts/StorageServiceInterface.ts +48 -0
  338. package/src/core/contracts/StoreServiceInterface.ts +50 -0
  339. package/src/core/contracts/ViewCacheInterface.ts +14 -0
  340. package/src/core/contracts/ViewControllerInterface.ts +135 -0
  341. package/src/core/contracts/ViewInterface.ts +31 -0
  342. package/src/core/contracts/ViewManagerInterface.ts +45 -0
  343. package/src/core/contracts/ViewStateInterface.ts +47 -0
  344. package/src/core/contracts/common.ts +27 -0
  345. package/src/core/contracts/utils.ts +23 -0
  346. package/src/core/contracts/views.ts +23 -0
  347. package/src/core/elements/Block.ts +113 -0
  348. package/src/core/elements/BlockOutlet.ts +83 -0
  349. package/src/core/elements/Component.ts +114 -0
  350. package/src/core/elements/ElementManager.ts +48 -0
  351. package/src/core/elements/Fragment.ts +168 -0
  352. package/src/core/elements/Html.ts +364 -0
  353. package/src/core/elements/Output.ts +167 -0
  354. package/src/core/elements/Reactive.ts +253 -0
  355. package/src/core/elements/TextElement.ts +110 -0
  356. package/src/core/elements/Wrapper.ts +131 -0
  357. package/src/core/elements/Yield.ts +70 -0
  358. package/src/core/elements/helpers.ts +56 -0
  359. package/src/core/elements/index.ts +26 -0
  360. package/src/core/hellpers/ApiClient.ts +145 -0
  361. package/src/core/hellpers/app.ts +57 -0
  362. package/src/core/hellpers/utils.ts +109 -0
  363. package/src/core/routers/Router.ts +765 -0
  364. package/src/core/routers/index.ts +2 -0
  365. package/src/core/services/BlockManager.ts +210 -0
  366. package/src/core/services/DomService.ts +26 -0
  367. package/src/core/services/EventService.ts +266 -0
  368. package/src/core/services/HelperService.ts +1653 -0
  369. package/src/core/services/HttpService.ts +235 -0
  370. package/src/core/services/LoggerService.ts +139 -0
  371. package/src/core/services/MarkerRegistry.ts +239 -0
  372. package/src/core/services/MarkerService.ts +923 -0
  373. package/src/core/services/StorageService.ts +268 -0
  374. package/src/core/services/StoreService.ts +338 -0
  375. package/src/core/services/index.ts +8 -0
  376. package/src/core/types/utils.ts +30 -0
  377. package/src/core/view/LoopContext.ts +109 -0
  378. package/src/core/view/Section.ts +86 -0
  379. package/src/core/view/View.ts +109 -0
  380. package/src/core/view/ViewController.ts +1002 -0
  381. package/src/core/view/ViewManager.ts +700 -0
  382. package/src/core/view/ViewState.ts +453 -0
  383. package/src/core/view/index.ts +5 -0
@@ -0,0 +1,338 @@
1
+ /**
2
+ * Application — DI Container + App Lifecycle.
3
+ *
4
+ * Tương tự Laravel Service Container:
5
+ * - bind / singleton / instance → đăng ký service
6
+ * - make / resolve → lấy service
7
+ * - alias → tên tắt
8
+ * - register / boot → service providers
9
+ *
10
+ * Khác với core Application (hardcode services), bản này hoàn toàn DI-driven:
11
+ * mọi service (Router, ViewManager, Store...) đều được đăng ký qua providers.
12
+ *
13
+ * @example
14
+ * const app = new Application();
15
+ *
16
+ * // Đăng ký trực tiếp
17
+ * app.singleton('markerRegistry', MarkerRegistry);
18
+ * app.instance('config', { debug: true });
19
+ *
20
+ * // Đăng ký qua provider
21
+ * app.register({
22
+ * register(app) { app.singleton('router', () => new Router(app)); },
23
+ * boot(app) { app.make('router').start(); }
24
+ * });
25
+ *
26
+ * app.boot();
27
+ * const router = app.make('router');
28
+ */
29
+ import { OOTEnum } from '../types/utils';
30
+ // ─── Application ────────────────────────────────────────────────
31
+ export class Application {
32
+ constructor() {
33
+ this.oneType = OOTEnum.APPLICATION;
34
+ /** Factory bindings — mỗi lần make() gọi factory tạo instance mới */
35
+ this.bindings = new Map();
36
+ /** Singleton instances — tạo một lần, reuse */
37
+ this.singletons = new Map();
38
+ /** Aliases — tên tắt trỏ về key gốc */
39
+ this.aliases = new Map();
40
+ /** Service providers đã đăng ký */
41
+ this.providers = [];
42
+ /** Đã boot chưa */
43
+ this.booted = false;
44
+ this.ownProperties = [
45
+ 'bindings',
46
+ 'singletons',
47
+ 'aliases',
48
+ 'providers',
49
+ 'booted',
50
+ 'ownProperties',
51
+ 'transient',
52
+ 'bind',
53
+ 'singleton',
54
+ 'instance',
55
+ 'alias',
56
+ 'make',
57
+ 'resolve',
58
+ 'has',
59
+ 'bound',
60
+ 'register',
61
+ 'boot',
62
+ 'isBooted',
63
+ 'flush',
64
+ 'destroy',
65
+ 'getBindings',
66
+ 'getSingletons',
67
+ '__store',
68
+ ]; // Để track dynamic properties nếu cần
69
+ this.__store = new Map(); // Store cho dynamic properties nếu cần
70
+ }
71
+ // ─── Transient (factory — instance mới mỗi lần) ───────────
72
+ /**
73
+ * Đăng ký transient service.
74
+ * Mỗi lần make() trả về instance mới (không cache).
75
+ *
76
+ * @example
77
+ * app.transient('request', (app) => new Request(app.make('config')));
78
+ * app.transient(Database, Database); // class shorthand
79
+ */
80
+ transient(key, value) {
81
+ this.bindings.set(key, (app) => {
82
+ if (typeof value === 'function' && value.prototype) {
83
+ return new value();
84
+ }
85
+ return value(app);
86
+ });
87
+ return this;
88
+ }
89
+ bind(key, value) {
90
+ return this.transient(key, value);
91
+ }
92
+ // ─── Singleton (instance duy nhất) ──────────────────────────
93
+ /**
94
+ * Đăng ký singleton — tạo một lần, reuse mãi mãi.
95
+ *
96
+ * @example
97
+ * app.singleton('store', StoreService); // class
98
+ * app.singleton('config', (app) => loadConfig()); // factory
99
+ * app.singleton(StoreService); // class, tự tạo
100
+ * app.singleton('store', existingInstance); // instance sẵn
101
+ */
102
+ singleton(key, value) {
103
+ // singleton(MyClass) — không có value, key là class
104
+ if (value === undefined) {
105
+ if (typeof key === 'function') {
106
+ this.singletons.set(key, new key());
107
+ return this;
108
+ }
109
+ throw new Error(`[Application] Singleton requires a value for key: ${String(key)}`);
110
+ }
111
+ // value là instance sẵn (object, không phải function)
112
+ if (value !== null && typeof value === 'object') {
113
+ this.singletons.set(key, value);
114
+ return this;
115
+ }
116
+ // value là class hoặc factory — lazy init
117
+ this.bindings.set(key, (app) => {
118
+ if (!this.singletons.has(key)) {
119
+ const isClass = typeof value === 'function' && value.prototype;
120
+ const instance = isClass
121
+ ? new value()
122
+ : value(app);
123
+ this.singletons.set(key, instance);
124
+ }
125
+ return this.singletons.get(key);
126
+ });
127
+ return this;
128
+ }
129
+ // ─── Instance (đăng ký instance sẵn) ────────────────────────
130
+ /**
131
+ * Đăng ký instance đã tạo sẵn.
132
+ * Shortcut cho singleton khi đã có instance.
133
+ *
134
+ * @example
135
+ * app.instance('config', { debug: true, api_url: '/api' });
136
+ */
137
+ instance(key, value) {
138
+ this.singletons.set(key, value);
139
+ return this;
140
+ }
141
+ // ─── Alias ──────────────────────────────────────────────────
142
+ /**
143
+ * Tạo tên tắt cho service.
144
+ *
145
+ * @example
146
+ * app.singleton('email.service', EmailService);
147
+ * app.alias('mailer', 'email.service');
148
+ * app.make('mailer') === app.make('email.service') // true
149
+ */
150
+ alias(alias, key) {
151
+ this.aliases.set(alias, key);
152
+ return this;
153
+ }
154
+ // ─── Resolve ────────────────────────────────────────────────
155
+ /**
156
+ * Lấy service instance. Shortcut cho resolve().
157
+ *
158
+ * @example
159
+ * const router = app.make<Router>('router');
160
+ */
161
+ make(key, defaultValue) {
162
+ return this.resolve(key, defaultValue);
163
+ }
164
+ /**
165
+ * Resolve service instance.
166
+ *
167
+ * Thứ tự tìm:
168
+ * 1. Alias → resolve key gốc
169
+ * 2. Singleton đã tạo → reuse
170
+ * 3. Binding (factory) → gọi factory
171
+ * 4. Key là class → auto-instantiate + cache
172
+ * 5. defaultValue → trả về
173
+ * 6. Throw error
174
+ */
175
+ resolve(key, defaultValue) {
176
+ // 1. Resolve alias
177
+ let resolved = key;
178
+ if ((typeof key === 'string' || typeof key === 'symbol') && this.aliases.has(key)) {
179
+ resolved = this.aliases.get(key);
180
+ }
181
+ // 2. Singleton đã có
182
+ if (this.singletons.has(resolved)) {
183
+ return this.singletons.get(resolved);
184
+ }
185
+ // 3. Binding factory
186
+ const factory = this.bindings.get(resolved);
187
+ if (factory) {
188
+ return factory(this);
189
+ }
190
+ // 4. Auto-instantiate class
191
+ if (typeof resolved === 'function') {
192
+ if (resolved.prototype) {
193
+ const inst = new resolved();
194
+ this.singletons.set(resolved, inst);
195
+ return inst;
196
+ }
197
+ return resolved(this);
198
+ }
199
+ // 5. Default value
200
+ if (defaultValue !== undefined) {
201
+ return defaultValue;
202
+ }
203
+ // 6. Not found
204
+ throw new Error(`[Application] Cannot resolve: ${String(key)}`);
205
+ }
206
+ // ─── Query ──────────────────────────────────────────────────
207
+ /** Kiểm tra service đã đăng ký chưa */
208
+ has(key) {
209
+ const aliased = (typeof key === 'string' || typeof key === 'symbol') && this.aliases.has(key);
210
+ return this.bindings.has(key) || this.singletons.has(key) || aliased
211
+ || (typeof key === 'string' && this.__store.has(key));
212
+ }
213
+ /** Alias cho has() */
214
+ bound(key) {
215
+ return this.has(key);
216
+ }
217
+ // ─── Service Providers ──────────────────────────────────────
218
+ /**
219
+ * Đăng ký service provider.
220
+ * register() được gọi ngay, boot() gọi khi app.boot().
221
+ *
222
+ * @example
223
+ * app.register({
224
+ * register(app) { app.singleton('db', Database); },
225
+ * boot(app) { app.make('db').connect(); }
226
+ * });
227
+ */
228
+ register(provider) {
229
+ this.providers.push(provider);
230
+ if (typeof provider.initApplication === 'function') {
231
+ provider.initApplication();
232
+ }
233
+ provider.register();
234
+ return this;
235
+ }
236
+ /**
237
+ * Boot tất cả providers.
238
+ * Gọi boot() của mỗi provider theo thứ tự đăng ký.
239
+ * Chỉ chạy một lần.
240
+ */
241
+ boot() {
242
+ if (this.booted)
243
+ return;
244
+ for (const provider of this.providers) {
245
+ if (typeof provider.boot === 'function') {
246
+ provider.boot();
247
+ }
248
+ }
249
+ this.booted = true;
250
+ }
251
+ /** Đã boot chưa */
252
+ get isBooted() {
253
+ return this.booted;
254
+ }
255
+ // ─── Cleanup ────────────────────────────────────────────────
256
+ /** Xóa toàn bộ bindings, singletons, aliases, __store. Reset container. */
257
+ flush() {
258
+ this.bindings.clear();
259
+ this.singletons.clear();
260
+ this.aliases.clear();
261
+ this.__store.clear();
262
+ this.providers = [];
263
+ this.booted = false;
264
+ }
265
+ /** Destroy app — flush + cleanup */
266
+ destroy() {
267
+ this.flush();
268
+ }
269
+ // ─── Introspection (debug) ──────────────────────────────────
270
+ getBindings() {
271
+ return this.bindings;
272
+ }
273
+ getSingletons() {
274
+ return this.singletons;
275
+ }
276
+ set(name, value, isOne = false) {
277
+ if (this.ownProperties.includes(name)) {
278
+ return; // Không cho ghi đè lên thuộc tính có sẵn
279
+ }
280
+ if (this.__store.has(name) && this.__store.get(name)?.isOverridable === false) {
281
+ return; // Không cho ghi đè lên thuộc tính không thể override
282
+ }
283
+ this.__store.set(name, { value, isOverridable: !isOne });
284
+ this.singletons.set(name, value); // Sync → DI container
285
+ Object.defineProperty(this, name, {
286
+ get: () => this.__store.get(name)?.value,
287
+ set: (newValue) => {
288
+ if (this.__store.has(name) && this.__store.get(name)?.isOverridable === false) {
289
+ return; // Không cho ghi đè nếu isOverridable là false
290
+ }
291
+ this.__store.set(name, { value: newValue, isOverridable: !isOne });
292
+ this.singletons.set(name, newValue); // Sync → DI container
293
+ },
294
+ configurable: isOne ? false : true,
295
+ enumerable: false,
296
+ });
297
+ }
298
+ get(name) {
299
+ if (this.ownProperties.includes(name)) {
300
+ return this[name]; // Trả về thuộc tính có sẵn
301
+ }
302
+ // Check __store first (registered via set())
303
+ if (this.__store.has(name)) {
304
+ return this.__store.get(name)?.value;
305
+ }
306
+ // Fall back to DI container (registered via singleton/instance/bind)
307
+ if (this.singletons.has(name) || this.bindings.has(name) || this.aliases.has(name)) {
308
+ return this.resolve(name);
309
+ }
310
+ return undefined;
311
+ }
312
+ setMethod(name, method, isOne = false) {
313
+ if (this.ownProperties.includes(name)) {
314
+ return; // Không cho ghi đè lên thuộc tính có sẵn
315
+ }
316
+ if (this.__store.has(name) && this.__store.get(name)?.isOverridable === false) {
317
+ return; // Không cho ghi đè lên thuộc tính không thể override
318
+ }
319
+ this.__store.set(name, { value: method, isOverridable: !isOne });
320
+ this[name] = (...args) => {
321
+ const fn = this.get(name);
322
+ if (typeof fn === 'function') {
323
+ if (typeof fn.bind === 'function') {
324
+ return fn.bind(this)(...args);
325
+ }
326
+ return fn.apply(this, args);
327
+ }
328
+ throw new Error(`[Application] Method ${name} is not a function`);
329
+ };
330
+ if (isOne) {
331
+ Object.defineProperty(this, name, {
332
+ configurable: false,
333
+ writable: false,
334
+ });
335
+ }
336
+ }
337
+ }
338
+ //# sourceMappingURL=Application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../../../src/core/app/Application.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ApplicationInterface } from "../contracts/ApplicationInterface";
2
+ declare const App: ApplicationInterface;
3
+ export default App;
4
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../src/core/bootstrap/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAKzE,QAAA,MAAM,GAAG,EAAE,oBAAkD,CAAC;AAoD9D,eAAe,GAAG,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { app } from "../hellpers/app";
2
+ import { buildDefaultProviders, resolveProviderOrder } from "./providers";
3
+ const App = app();
4
+ // ⚠️ Flags PHẢI dùng isOne=false để có thể cập nhật sau init/start
5
+ App.set('isInitialized', false);
6
+ App.set('isStarted', false);
7
+ /**
8
+ * Khởi tạo app — đăng ký + boot tất cả providers theo dependency order.
9
+ *
10
+ * @example
11
+ * App.init({
12
+ * view: { container: '#app', registry: {...} },
13
+ * router: { mode: 'history', routes: [...] },
14
+ * api: { endpoint: '/api' },
15
+ * providers: [{ name: 'analytics', dependsOn: ['core'], register(app) {...} }]
16
+ * });
17
+ */
18
+ App.setMethod('init', function (config = {}) {
19
+ if (App.isInitialized) {
20
+ console.warn('[Bootstrap] App already initialized.');
21
+ return;
22
+ }
23
+ const providers = resolveProviderOrder(buildDefaultProviders(config));
24
+ for (const provider of providers) {
25
+ App.register(provider);
26
+ }
27
+ App.boot();
28
+ App.isInitialized = true;
29
+ }, true);
30
+ /**
31
+ * Start app — init nếu chưa, rồi start Router.
32
+ *
33
+ * @example
34
+ * App.start(); // init với config mặc định
35
+ * App.start({ view: { container: '#app' } }); // init với config tùy chỉnh
36
+ */
37
+ App.setMethod('start', function (config) {
38
+ if (App.isStarted) {
39
+ console.warn('[Bootstrap] App already started.');
40
+ return;
41
+ }
42
+ if (!App.isInitialized) {
43
+ App.init(config || {});
44
+ }
45
+ App.get('Router').start();
46
+ App.isStarted = true;
47
+ }, true);
48
+ export default App;
49
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/core/bootstrap/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE1E,MAAM,GAAG,GAAyB,GAAG,EAAwB,CAAC;AAE9D,mEAAmE;AACnE,GAAG,CAAC,GAAG,CAAU,eAAe,EAAE,KAAK,CAAC,CAAC;AACzC,GAAG,CAAC,GAAG,CAAU,WAAW,EAAE,KAAK,CAAC,CAAC;AAErC;;;;;;;;;;GAUG;AACH,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,SAA8B,EAAE;IAC5D,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACrD,OAAO;IACX,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;AAC7B,CAAC,EAAE,IAAI,CAAC,CAAC;AAET;;;;;;GAMG;AACH,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,MAA4B;IACzD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACjD,OAAO;IACX,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IAClC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,CAAC,EAAE,IAAI,CAAC,CAAC;AAET,eAAe,GAAG,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ServiceProvider } from "./ServiceProvider";
2
+ export declare class ApiServiceProvider extends ServiceProvider {
3
+ readonly name: "api";
4
+ readonly dependsOn: "core"[];
5
+ static config: Record<string, any>;
6
+ register(): void;
7
+ boot(): void;
8
+ }
9
+ //# sourceMappingURL=ApiServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ApiServiceProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,kBAAmB,SAAQ,eAAe;IACnD,QAAQ,CAAC,IAAI,QAAsB;IACnC,QAAQ,CAAC,SAAS,WAAyB;IAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAExC,QAAQ,IAAI,IAAI;IAIhB,IAAI,IAAI,IAAI;CAGf"}
@@ -0,0 +1,18 @@
1
+ import { ApiClient } from "../../hellpers/ApiClient";
2
+ import { PROVIDER_NAMES } from "./provider-order";
3
+ import { ServiceProvider } from "./ServiceProvider";
4
+ export class ApiServiceProvider extends ServiceProvider {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.name = PROVIDER_NAMES.API;
8
+ this.dependsOn = [PROVIDER_NAMES.CORE];
9
+ }
10
+ register() {
11
+ this.app.set("API", new ApiClient(), true);
12
+ }
13
+ boot() {
14
+ this.app.get("API").init(ApiServiceProvider.config);
15
+ }
16
+ }
17
+ ApiServiceProvider.config = {};
18
+ //# sourceMappingURL=ApiServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ApiServiceProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IAAvD;;QACa,SAAI,GAAG,cAAc,CAAC,GAAG,CAAC;QAC1B,cAAS,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAU/C,CAAC;IAPG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAqB,KAAK,EAAE,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,IAAI;QACA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAqB,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;;AARM,yBAAM,GAAwB,EAAE,AAA1B,CAA2B"}
@@ -0,0 +1,6 @@
1
+ import { ServiceProvider } from "./ServiceProvider";
2
+ export declare class CoreServiceProvider extends ServiceProvider {
3
+ readonly name: "core";
4
+ register(): void;
5
+ }
6
+ //# sourceMappingURL=CoreServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/CoreServiceProvider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,mBAAoB,SAAQ,eAAe;IACpD,QAAQ,CAAC,IAAI,SAAuB;IAEpC,QAAQ,IAAI,IAAI;CAOnB"}
@@ -0,0 +1,21 @@
1
+ import { app } from "../../hellpers/app";
2
+ import { EventService } from "../../services/EventService";
3
+ import { HttpService } from "../../services/HttpService";
4
+ import { MarkerService } from "../../services/MarkerService";
5
+ import { StoreService } from "../../services/StoreService";
6
+ import { PROVIDER_NAMES } from "./provider-order";
7
+ import { ServiceProvider } from "./ServiceProvider";
8
+ export class CoreServiceProvider extends ServiceProvider {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.name = PROVIDER_NAMES.CORE;
12
+ }
13
+ register() {
14
+ this.app.set("Marker", app(MarkerService), true);
15
+ this.app.set("Store", StoreService.instance(), true);
16
+ this.app.set("Storage", StoreService.instance(), true);
17
+ this.app.set("Event", EventService.instance(), true);
18
+ this.app.set("Http", HttpService.instance(), true);
19
+ }
20
+ }
21
+ //# sourceMappingURL=CoreServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/CoreServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAAxD;;QACa,SAAI,GAAG,cAAc,CAAC,IAAI,CAAC;IASxC,CAAC;IAPG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAgB,QAAQ,EAAE,GAAG,CAAgB,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAe,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAe,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAe,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;CACJ"}
@@ -0,0 +1,7 @@
1
+ import { ServiceProvider } from "./ServiceProvider";
2
+ export declare class HelperServiceProvider extends ServiceProvider {
3
+ readonly name: "helper";
4
+ readonly dependsOn: ("view" | "core" | "router")[];
5
+ register(): void;
6
+ }
7
+ //# sourceMappingURL=HelperServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HelperServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/HelperServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,qBAAsB,SAAQ,eAAe;IACtD,QAAQ,CAAC,IAAI,WAAyB;IACtC,QAAQ,CAAC,SAAS,iCAAqE;IAEvF,QAAQ,IAAI,IAAI;CAGnB"}
@@ -0,0 +1,14 @@
1
+ import { HelperService } from "../../services/HelperService";
2
+ import { PROVIDER_NAMES } from "./provider-order";
3
+ import { ServiceProvider } from "./ServiceProvider";
4
+ export class HelperServiceProvider extends ServiceProvider {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.name = PROVIDER_NAMES.HELPER;
8
+ this.dependsOn = [PROVIDER_NAMES.CORE, PROVIDER_NAMES.ROUTER, PROVIDER_NAMES.VIEW];
9
+ }
10
+ register() {
11
+ this.app.set("Helper", new HelperService(this.app), true);
12
+ }
13
+ }
14
+ //# sourceMappingURL=HelperServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HelperServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/HelperServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAA1D;;QACa,SAAI,GAAG,cAAc,CAAC,MAAM,CAAC;QAC7B,cAAS,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAK3F,CAAC;IAHG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAgB,QAAQ,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;CACJ"}
@@ -0,0 +1,9 @@
1
+ import { ServiceProvider } from "./ServiceProvider";
2
+ export declare class RouteServiceProvider extends ServiceProvider {
3
+ readonly name: "router";
4
+ readonly dependsOn: "view"[];
5
+ static config: Record<string, any>;
6
+ register(): void;
7
+ boot(): void;
8
+ }
9
+ //# sourceMappingURL=RouteServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/RouteServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,oBAAqB,SAAQ,eAAe;IACrD,QAAQ,CAAC,IAAI,WAAyB;IACtC,QAAQ,CAAC,SAAS,WAAyB;IAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAExC,QAAQ,IAAI,IAAI;IAIhB,IAAI,IAAI,IAAI;CAGf"}
@@ -0,0 +1,18 @@
1
+ import { Router } from "../../routers";
2
+ import { PROVIDER_NAMES } from "./provider-order";
3
+ import { ServiceProvider } from "./ServiceProvider";
4
+ export class RouteServiceProvider extends ServiceProvider {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.name = PROVIDER_NAMES.ROUTER;
8
+ this.dependsOn = [PROVIDER_NAMES.VIEW];
9
+ }
10
+ register() {
11
+ this.app.set("Router", new Router(this.app), true);
12
+ }
13
+ boot() {
14
+ this.app.get("Router").init(RouteServiceProvider.config);
15
+ }
16
+ }
17
+ RouteServiceProvider.config = {};
18
+ //# sourceMappingURL=RouteServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/RouteServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAAzD;;QACa,SAAI,GAAG,cAAc,CAAC,MAAM,CAAC;QAC7B,cAAS,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAU/C,CAAC;IAPG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAS,QAAQ,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI;QACA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;;AARM,2BAAM,GAAwB,EAAE,AAA1B,CAA2B"}
@@ -0,0 +1,38 @@
1
+ import { ApplicationInterface } from "../../contracts/ApplicationInterface";
2
+ import { ServiceProviderInterface } from "../../contracts/utils";
3
+ import { OneObjectType } from "../../types/utils";
4
+ /**
5
+ * Base class cho Service Provider — API giống Laravel.
6
+ *
7
+ * Subclass chỉ cần:
8
+ * - Khai báo `name` và `dependsOn`
9
+ * - Override `register()` để bind services (dùng `this.app`)
10
+ * - Override `boot()` để init services sau khi tất cả đã register
11
+ *
12
+ * @example
13
+ * class AuthServiceProvider extends ServiceProvider {
14
+ * readonly name = 'auth';
15
+ * readonly dependsOn = ['core', 'api'];
16
+ *
17
+ * register() {
18
+ * this.app.set('Auth', new AuthService(this.app));
19
+ * }
20
+ *
21
+ * boot() {
22
+ * this.app.get('Auth').loadUser();
23
+ * }
24
+ * }
25
+ */
26
+ export declare abstract class ServiceProvider implements ServiceProviderInterface {
27
+ readonly oneType: OneObjectType;
28
+ abstract readonly name: string;
29
+ readonly dependsOn?: string[];
30
+ protected app: ApplicationInterface;
31
+ constructor(application?: ApplicationInterface);
32
+ initApplication(App?: ApplicationInterface): void;
33
+ /** Override để đăng ký services vào container */
34
+ register(): void;
35
+ /** Override để init services sau khi tất cả providers đã register */
36
+ boot(): void;
37
+ }
38
+ //# sourceMappingURL=ServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAW,MAAM,mBAAmB,CAAC;AAG3D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,8BAAsB,eAAgB,YAAW,wBAAwB;IACrE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAA4B;IAC3D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,GAAG,EAAE,oBAAoB,CAAC;gBAExB,WAAW,CAAC,EAAE,oBAAoB;IAK9C,eAAe,CAAC,GAAG,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAMjD,iDAAiD;IACjD,QAAQ,IAAI,IAAI;IAEhB,qEAAqE;IACrE,IAAI,IAAI,IAAI;CACf"}
@@ -0,0 +1,41 @@
1
+ import { app } from "../../hellpers/app";
2
+ import { OOTEnum } from "../../types/utils";
3
+ /**
4
+ * Base class cho Service Provider — API giống Laravel.
5
+ *
6
+ * Subclass chỉ cần:
7
+ * - Khai báo `name` và `dependsOn`
8
+ * - Override `register()` để bind services (dùng `this.app`)
9
+ * - Override `boot()` để init services sau khi tất cả đã register
10
+ *
11
+ * @example
12
+ * class AuthServiceProvider extends ServiceProvider {
13
+ * readonly name = 'auth';
14
+ * readonly dependsOn = ['core', 'api'];
15
+ *
16
+ * register() {
17
+ * this.app.set('Auth', new AuthService(this.app));
18
+ * }
19
+ *
20
+ * boot() {
21
+ * this.app.get('Auth').loadUser();
22
+ * }
23
+ * }
24
+ */
25
+ export class ServiceProvider {
26
+ constructor(application) {
27
+ this.oneType = OOTEnum.SERVICE_PROVIDER;
28
+ this.app = application ?? app();
29
+ this.initApplication();
30
+ }
31
+ initApplication(App) {
32
+ if (!this.app || typeof this.app !== 'object' || this.app.oneType !== OOTEnum.APPLICATION) {
33
+ this.app = (App && App.oneType === OOTEnum.APPLICATION) ? App : app();
34
+ }
35
+ }
36
+ /** Override để đăng ký services vào container */
37
+ register() { }
38
+ /** Override để init services sau khi tất cả providers đã register */
39
+ boot() { }
40
+ }
41
+ //# sourceMappingURL=ServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAiB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG3D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAgB,eAAe;IAMjC,YAAY,WAAkC;QALrC,YAAO,GAAkB,OAAO,CAAC,gBAAgB,CAAC;QAMvD,IAAI,CAAC,GAAG,GAAG,WAAW,IAAI,GAAG,EAAwB,CAAC;QACtD,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,eAAe,CAAC,GAA0B;QACtC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YACxF,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAwB,CAAC;QAChG,CAAC;IACL,CAAC;IAED,iDAAiD;IACjD,QAAQ,KAAU,CAAC;IAEnB,qEAAqE;IACrE,IAAI,KAAU,CAAC;CAClB"}