@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,9 @@
1
+ import { ServiceProvider } from "./ServiceProvider";
2
+ export declare class ViewServiceProvider extends ServiceProvider {
3
+ readonly name: "view";
4
+ readonly dependsOn: "core"[];
5
+ static config: Record<string, any>;
6
+ register(): void;
7
+ boot(): void;
8
+ }
9
+ //# sourceMappingURL=ViewServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ViewServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,mBAAoB,SAAQ,eAAe;IACpD,QAAQ,CAAC,IAAI,SAAuB;IACpC,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 { ViewManager } from "../../view";
2
+ import { PROVIDER_NAMES } from "./provider-order";
3
+ import { ServiceProvider } from "./ServiceProvider";
4
+ export class ViewServiceProvider extends ServiceProvider {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.name = PROVIDER_NAMES.VIEW;
8
+ this.dependsOn = [PROVIDER_NAMES.CORE];
9
+ }
10
+ register() {
11
+ this.app.set("View", new ViewManager(this.app), true);
12
+ }
13
+ boot() {
14
+ this.app.get("View").init(ViewServiceProvider.config);
15
+ }
16
+ }
17
+ ViewServiceProvider.config = {};
18
+ //# sourceMappingURL=ViewServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ViewServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,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;QAC3B,cAAS,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAU/C,CAAC;IAPG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,IAAI;QACA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;;AARM,0BAAM,GAAwB,EAAE,AAA1B,CAA2B"}
@@ -0,0 +1,14 @@
1
+ import { NamedServiceProvider } from "./provider-order";
2
+ /**
3
+ * Tạo danh sách providers mặc định.
4
+ *
5
+ * Hỗ trợ:
6
+ * - Config cho service mặc định: `config.view`, `config.router`, `config.api`
7
+ * - Liệt kê provider class: `config.providers = [AuthServiceProvider, NotificationProvider]`
8
+ * - Liệt kê provider instance: `config.providers = [new AuthServiceProvider()]`
9
+ * - Đăng ký service đơn giản: `config.services = { Auth: AuthService, Toast: ToastService }`
10
+ *
11
+ * System providers (core, view, router, helper, api) luôn chạy trước và không thể bị ghi đè.
12
+ */
13
+ export declare function buildDefaultProviders(config?: Record<string, any>): NamedServiceProvider[];
14
+ //# sourceMappingURL=default-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-providers.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/default-providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAkB,MAAM,kBAAkB,CAAC;AA6CxE;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,oBAAoB,EAAE,CAmC9F"}
@@ -0,0 +1,79 @@
1
+ import { app } from "../../hellpers/app";
2
+ import { PROVIDER_NAMES } from "./provider-order";
3
+ import { ApiServiceProvider } from "./ApiServiceProvider";
4
+ import { CoreServiceProvider } from "./CoreServiceProvider";
5
+ import { HelperServiceProvider } from "./HelperServiceProvider";
6
+ import { RouteServiceProvider } from "./RouteServiceProvider";
7
+ import { ViewServiceProvider } from "./ViewServiceProvider";
8
+ /** Tên system providers — không cho phép override */
9
+ const SYSTEM_PROVIDER_NAMES = new Set(Object.values(PROVIDER_NAMES));
10
+ /** Tên system services — không cho phép ghi đè qua config.services */
11
+ const SYSTEM_SERVICE_KEYS = new Set(['Marker', 'Store', 'Storage', 'Event', 'Http', 'View', 'Router', 'Helper', 'API']);
12
+ /**
13
+ * Chuyển `config.services` dạng { name: Class } thành NamedServiceProvider[].
14
+ *
15
+ * @example
16
+ * services: { Auth: AuthService, Toast: ToastService }
17
+ * → 2 providers, mỗi cái dependsOn ['core'], register = app.set(name, new Class(app))
18
+ */
19
+ function servicesFromMap(map) {
20
+ const appInstance = app();
21
+ return Object.entries(map)
22
+ .filter(([name]) => {
23
+ if (SYSTEM_SERVICE_KEYS.has(name)) {
24
+ console.warn(`[Bootstrap] Cannot override system service "${name}" via config.services. Ignored.`);
25
+ return false;
26
+ }
27
+ return true;
28
+ })
29
+ .map(([name, ServiceClass]) => ({
30
+ name,
31
+ dependsOn: [PROVIDER_NAMES.CORE],
32
+ register() {
33
+ appInstance.set(name, new ServiceClass(appInstance));
34
+ }
35
+ }));
36
+ }
37
+ /**
38
+ * Tạo danh sách providers mặc định.
39
+ *
40
+ * Hỗ trợ:
41
+ * - Config cho service mặc định: `config.view`, `config.router`, `config.api`
42
+ * - Liệt kê provider class: `config.providers = [AuthServiceProvider, NotificationProvider]`
43
+ * - Liệt kê provider instance: `config.providers = [new AuthServiceProvider()]`
44
+ * - Đăng ký service đơn giản: `config.services = { Auth: AuthService, Toast: ToastService }`
45
+ *
46
+ * System providers (core, view, router, helper, api) luôn chạy trước và không thể bị ghi đè.
47
+ */
48
+ export function buildDefaultProviders(config = {}) {
49
+ // Set static config cho default providers trước khi tạo instance
50
+ ViewServiceProvider.config = config.view || {};
51
+ RouteServiceProvider.config = config.router || {};
52
+ ApiServiceProvider.config = config.api || {};
53
+ const App = app();
54
+ const defaults = [
55
+ CoreServiceProvider,
56
+ ViewServiceProvider,
57
+ RouteServiceProvider,
58
+ HelperServiceProvider,
59
+ ApiServiceProvider,
60
+ ].map(Cls => new Cls(App));
61
+ // config.services: { Name: Class } → auto-wrap providers
62
+ const serviceProviders = config.services
63
+ ? servicesFromMap(config.services)
64
+ : [];
65
+ // config.providers: (ProviderClass | NamedServiceProvider)[] → instantiate classes
66
+ const customProviders = Array.isArray(config.providers)
67
+ ? config.providers
68
+ .map((p) => typeof p === 'function' ? new p(App) : p)
69
+ .filter(p => {
70
+ if (SYSTEM_PROVIDER_NAMES.has(p.name)) {
71
+ console.warn(`[Bootstrap] Cannot override system provider "${p.name}". Ignored.`);
72
+ return false;
73
+ }
74
+ return true;
75
+ })
76
+ : [];
77
+ return [...defaults, ...serviceProviders, ...customProviders];
78
+ }
79
+ //# sourceMappingURL=default-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-providers.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/default-providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export { NamedServiceProvider, resolveProviderOrder, PROVIDER_NAMES } from './provider-order';
2
+ export type { ProviderName } from './provider-order';
3
+ export { ServiceProvider } from './ServiceProvider';
4
+ export { buildDefaultProviders } from './default-providers';
5
+ export { CoreServiceProvider } from './CoreServiceProvider';
6
+ export { ViewServiceProvider } from './ViewServiceProvider';
7
+ export { RouteServiceProvider } from './RouteServiceProvider';
8
+ export { HelperServiceProvider } from './HelperServiceProvider';
9
+ export { ApiServiceProvider } from './ApiServiceProvider';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9F,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { resolveProviderOrder, PROVIDER_NAMES } from './provider-order';
2
+ export { ServiceProvider } from './ServiceProvider';
3
+ export { buildDefaultProviders } from './default-providers';
4
+ export { CoreServiceProvider } from './CoreServiceProvider';
5
+ export { ViewServiceProvider } from './ViewServiceProvider';
6
+ export { RouteServiceProvider } from './RouteServiceProvider';
7
+ export { HelperServiceProvider } from './HelperServiceProvider';
8
+ export { ApiServiceProvider } from './ApiServiceProvider';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ServiceProviderInterface } from "../../contracts/ServiceProviderInterface";
2
+ /**
3
+ * Tên các provider mặc định — dùng constant thay vì magic string.
4
+ * Custom providers có thể dùng tên khác hoặc override tên mặc định.
5
+ */
6
+ export declare const PROVIDER_NAMES: {
7
+ readonly CORE: "core";
8
+ readonly VIEW: "view";
9
+ readonly ROUTER: "router";
10
+ readonly HELPER: "helper";
11
+ readonly API: "api";
12
+ };
13
+ export type ProviderName = typeof PROVIDER_NAMES[keyof typeof PROVIDER_NAMES];
14
+ export type NamedServiceProvider = ServiceProviderInterface & {
15
+ name: string;
16
+ dependsOn?: string[];
17
+ };
18
+ export declare function resolveProviderOrder(providers: ServiceProviderInterface[]): ServiceProviderInterface[];
19
+ //# sourceMappingURL=provider-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-order.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/provider-order.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEzF;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAE9E,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,wBAAwB,EAAE,CA4CtG"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Tên các provider mặc định — dùng constant thay vì magic string.
3
+ * Custom providers có thể dùng tên khác hoặc override tên mặc định.
4
+ */
5
+ export const PROVIDER_NAMES = {
6
+ CORE: 'core',
7
+ VIEW: 'view',
8
+ ROUTER: 'router',
9
+ HELPER: 'helper',
10
+ API: 'api',
11
+ };
12
+ export function resolveProviderOrder(providers) {
13
+ const providerMap = new Map();
14
+ for (const provider of providers) {
15
+ if (!provider.name) {
16
+ throw new Error(`[Bootstrap] Provider name is required.`);
17
+ }
18
+ if (providerMap.has(provider.name)) {
19
+ throw new Error(`[Bootstrap] Duplicate provider name detected: "${provider.name}".`);
20
+ }
21
+ providerMap.set(provider.name, provider);
22
+ }
23
+ const visited = new Set();
24
+ const inStack = new Set();
25
+ const ordered = [];
26
+ const visit = (name) => {
27
+ if (visited.has(name))
28
+ return;
29
+ if (inStack.has(name)) {
30
+ throw new Error(`[Bootstrap] Circular service provider dependency detected at "${name}".`);
31
+ }
32
+ const provider = providerMap.get(name);
33
+ if (!provider) {
34
+ throw new Error(`[Bootstrap] Missing provider dependency: "${name}".`);
35
+ }
36
+ inStack.add(name);
37
+ for (const dep of provider.dependsOn ?? []) {
38
+ visit(dep);
39
+ }
40
+ inStack.delete(name);
41
+ visited.add(name);
42
+ ordered.push(provider);
43
+ };
44
+ for (const provider of providers) {
45
+ if (provider.name) {
46
+ visit(provider.name);
47
+ }
48
+ }
49
+ return ordered;
50
+ }
51
+ //# sourceMappingURL=provider-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-order.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/provider-order.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;CACJ,CAAC;AASX,MAAM,UAAU,oBAAoB,CAAC,SAAqC;IACtE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoC,CAAC;IAChE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,kDAAkD,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;QACzF,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAA+B,EAAE,CAAC;IAE/C,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACjC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,iEAAiE,IAAI,IAAI,CAAC,CAAC;QAC/F,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,IAAI,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { ViewCacheInterface } from "../contracts/ViewCacheInterface";
2
+ /**
3
+ * ViewCache — stores rendered view DOM for instant restore on navigation.
4
+ *
5
+ * When a user navigates away from a page, the view's DOM is detached and
6
+ * stored in a DocumentFragment. When navigating back, the DOM is
7
+ * re-attached instead of re-rendered — preserving form inputs, scroll
8
+ * positions, and in-progress user work.
9
+ *
10
+ * Used by the router/BlockManager to implement "keep-alive" behavior.
11
+ *
12
+ * @example
13
+ * // Router navigates away from 'home'
14
+ * cache.store('home', homeRootElement);
15
+ *
16
+ * // Router navigates back to 'home'
17
+ * const cached = cache.retrieve('home');
18
+ * if (cached) container.appendChild(cached); // instant restore!
19
+ */
20
+ export declare class ViewCache implements ViewCacheInterface {
21
+ private cache;
22
+ /** Maximum cached views (LRU eviction when exceeded) */
23
+ private maxSize;
24
+ /** Access order tracking for LRU */
25
+ private accessOrder;
26
+ constructor(maxSize?: number);
27
+ /** Store a view's DOM state */
28
+ store(viewId: string, element: HTMLElement | DocumentFragment): void;
29
+ /** Retrieve cached DOM — returns null if not cached */
30
+ retrieve(viewId: string): HTMLElement | DocumentFragment | null;
31
+ /** Check if a view is cached */
32
+ has(viewId: string): boolean;
33
+ /** Remove a specific view from cache */
34
+ remove(viewId: string): void;
35
+ /** Clear all cached views */
36
+ clear(): void;
37
+ /** Get number of cached views */
38
+ get size(): number;
39
+ /** Get all cached view IDs */
40
+ keys(): string[];
41
+ /** Move viewId to end of access order (most recently used) */
42
+ private touchAccess;
43
+ /** Remove the least recently used cached view */
44
+ private evictOldest;
45
+ }
46
+ //# sourceMappingURL=ViewCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewCache.d.ts","sourceRoot":"","sources":["../../../../src/core/cache/ViewCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAU,YAAW,kBAAkB;IAChD,OAAO,CAAC,KAAK,CAA0D;IAEvE,wDAAwD;IACxD,OAAO,CAAC,OAAO,CAAS;IAExB,oCAAoC;IACpC,OAAO,CAAC,WAAW,CAAgB;gBAEvB,OAAO,GAAE,MAAW;IAIhC,+BAA+B;IAC/B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,gBAAgB,GAAG,IAAI;IAiBpE,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,gBAAgB,GAAG,IAAI;IAQ/D,gCAAgC;IAChC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B,wCAAwC;IACxC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,6BAA6B;IAC7B,KAAK,IAAI,IAAI;IAKb,iCAAiC;IACjC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,8BAA8B;IAC9B,IAAI,IAAI,MAAM,EAAE;IAMhB,8DAA8D;IAC9D,OAAO,CAAC,WAAW;IAKnB,iDAAiD;IACjD,OAAO,CAAC,WAAW;CAKtB"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * ViewCache — stores rendered view DOM for instant restore on navigation.
3
+ *
4
+ * When a user navigates away from a page, the view's DOM is detached and
5
+ * stored in a DocumentFragment. When navigating back, the DOM is
6
+ * re-attached instead of re-rendered — preserving form inputs, scroll
7
+ * positions, and in-progress user work.
8
+ *
9
+ * Used by the router/BlockManager to implement "keep-alive" behavior.
10
+ *
11
+ * @example
12
+ * // Router navigates away from 'home'
13
+ * cache.store('home', homeRootElement);
14
+ *
15
+ * // Router navigates back to 'home'
16
+ * const cached = cache.retrieve('home');
17
+ * if (cached) container.appendChild(cached); // instant restore!
18
+ */
19
+ export class ViewCache {
20
+ constructor(maxSize = 10) {
21
+ this.cache = new Map();
22
+ /** Access order tracking for LRU */
23
+ this.accessOrder = [];
24
+ this.maxSize = maxSize;
25
+ }
26
+ /** Store a view's DOM state */
27
+ store(viewId, element) {
28
+ // If already cached, update
29
+ if (this.cache.has(viewId)) {
30
+ this.cache.set(viewId, element);
31
+ this.touchAccess(viewId);
32
+ return;
33
+ }
34
+ // Evict oldest if at capacity
35
+ if (this.cache.size >= this.maxSize) {
36
+ this.evictOldest();
37
+ }
38
+ this.cache.set(viewId, element);
39
+ this.accessOrder.push(viewId);
40
+ }
41
+ /** Retrieve cached DOM — returns null if not cached */
42
+ retrieve(viewId) {
43
+ const cached = this.cache.get(viewId) ?? null;
44
+ if (cached) {
45
+ this.touchAccess(viewId);
46
+ }
47
+ return cached;
48
+ }
49
+ /** Check if a view is cached */
50
+ has(viewId) {
51
+ return this.cache.has(viewId);
52
+ }
53
+ /** Remove a specific view from cache */
54
+ remove(viewId) {
55
+ this.cache.delete(viewId);
56
+ this.accessOrder = this.accessOrder.filter(id => id !== viewId);
57
+ }
58
+ /** Clear all cached views */
59
+ clear() {
60
+ this.cache.clear();
61
+ this.accessOrder = [];
62
+ }
63
+ /** Get number of cached views */
64
+ get size() {
65
+ return this.cache.size;
66
+ }
67
+ /** Get all cached view IDs */
68
+ keys() {
69
+ return [...this.cache.keys()];
70
+ }
71
+ // ─── Private ────────────────────────────────────────────────
72
+ /** Move viewId to end of access order (most recently used) */
73
+ touchAccess(viewId) {
74
+ this.accessOrder = this.accessOrder.filter(id => id !== viewId);
75
+ this.accessOrder.push(viewId);
76
+ }
77
+ /** Remove the least recently used cached view */
78
+ evictOldest() {
79
+ if (this.accessOrder.length === 0)
80
+ return;
81
+ const oldest = this.accessOrder.shift();
82
+ this.cache.delete(oldest);
83
+ }
84
+ }
85
+ //# sourceMappingURL=ViewCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewCache.js","sourceRoot":"","sources":["../../../../src/core/cache/ViewCache.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,SAAS;IASlB,YAAY,UAAkB,EAAE;QARxB,UAAK,GAAgD,IAAI,GAAG,EAAE,CAAC;QAKvE,oCAAoC;QAC5B,gBAAW,GAAa,EAAE,CAAC;QAG/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,MAAc,EAAE,OAAuC;QACzD,4BAA4B;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO;QACX,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,uDAAuD;IACvD,QAAQ,CAAC,MAAc;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,gCAAgC;IAChC,GAAG,CAAC,MAAc;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,wCAAwC;IACxC,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACpE,CAAC;IAED,6BAA6B;IAC7B,KAAK;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,iCAAiC;IACjC,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,8BAA8B;IAC9B,IAAI;QACA,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,+DAA+D;IAE/D,8DAA8D;IACtD,WAAW,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,iDAAiD;IACzC,WAAW;QACf,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAG,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export { ViewCache } from './ViewCache';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { ViewCache } from './ViewCache';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { HttpService } from '../services/HttpService.js';
2
+ export interface APIClientInterface {
3
+ init(config: Record<string, any>): void;
4
+ getViewData<T = any>(uri: string): Promise<T>;
5
+ getSystemConfig<T = any>(): Promise<T>;
6
+ getSystemData<T = any>(): Promise<T>;
7
+ getURIData<T = any>(): Promise<T>;
8
+ setEndpoint(key: string, value: string): void;
9
+ getHttpService(): HttpService;
10
+ }
11
+ //# sourceMappingURL=ApiInterface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/ApiInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IAC/B,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACxC,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,eAAe,CAAC,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,aAAa,CAAC,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,UAAU,CAAC,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,cAAc,IAAI,WAAW,CAAC;CACjC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ApiInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiInterface.js","sourceRoot":"","sources":["../../../../src/core/contracts/ApiInterface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import { RouterInterface, ViewManagerInterface } from "./utils";
2
+ import type { HelperInterface } from "./HelperInterface";
3
+ import type { EventServiceInterface } from "./EventServiceInterface";
4
+ import type { HttpServiceInterface } from "./HttpServiceInterface";
5
+ import type { StoreServiceInterface } from "./StoreServiceInterface";
6
+ import type { StorageServiceInterface } from "./StorageServiceInterface";
7
+ import type { LoggerServiceInterface } from "./LoggerServiceInterface";
8
+ import { APIClientInterface } from "./ApiInterface";
9
+ import type { ServiceProviderInterface } from "./ServiceProviderInterface";
10
+ import { OneObjectType } from "../types/utils";
11
+ export interface ApplicationInterface {
12
+ [key: string]: any;
13
+ transient<T>(key: ServiceKey, value: any): this;
14
+ bind<T>(key: ServiceKey, value: any): this;
15
+ singleton<T>(key: ServiceKey, value?: any): this;
16
+ instance<T>(key: ServiceKey, value: T): this;
17
+ alias(alias: string | symbol, key: ServiceKey): this;
18
+ make<T>(key: ServiceKey, defaultValue?: T): T;
19
+ resolve<T>(key: ServiceKey, defaultValue?: T): T;
20
+ has(key: ServiceKey): boolean;
21
+ bound(key: ServiceKey): boolean;
22
+ register(provider: ServiceProviderInterface): this;
23
+ boot(): void;
24
+ flush(): void;
25
+ destroy(): void;
26
+ set<T = any>(name: string, method: T, isOne?: boolean): void;
27
+ setMethod(name: string, method: Function, isOne?: boolean): void;
28
+ get<T = any>(name: string): T;
29
+ oneType?: OneObjectType;
30
+ isInitialized: boolean;
31
+ isStarted: boolean;
32
+ View: ViewManagerInterface;
33
+ Router: RouterInterface;
34
+ Helper: HelperInterface;
35
+ Events: EventServiceInterface;
36
+ Http: HttpServiceInterface;
37
+ API: APIClientInterface;
38
+ Store: StoreServiceInterface;
39
+ Storage: StorageServiceInterface;
40
+ Logger: LoggerServiceInterface;
41
+ }
42
+ /** Type cho helper function app() — callable + có methods */
43
+ export interface AppFactory {
44
+ <T>(): T;
45
+ (): ApplicationInterface;
46
+ <T>(key: ServiceKey): T;
47
+ (key: ServiceKey, value: any): ApplicationInterface;
48
+ make<T>(name: ServiceKey): T;
49
+ make<T>(name: ServiceKey, defaultValue: T): T;
50
+ instance<T>(name: ServiceKey, value: T): ApplicationInterface;
51
+ resolve<T>(name: ServiceKey): T;
52
+ resolve<T>(name: ServiceKey, defaultValue: T): T;
53
+ register<T>(name: ServiceKey, factory: () => T): ApplicationInterface;
54
+ bind<T>(name: ServiceKey, factory: () => T): ApplicationInterface;
55
+ singleton<T>(name: ServiceKey, factory: () => T): ApplicationInterface;
56
+ has(name: ServiceKey): boolean;
57
+ flush(): void;
58
+ destroy(): void;
59
+ }
60
+ /** Định danh duy nhất cho service: string, symbol, hoặc class constructor */
61
+ export type ServiceKey<T = any> = string | symbol | (new (...args: any[]) => T);
62
+ /** Factory function nhận app (container) để resolve dependencies */
63
+ export type ServiceFactory<T> = (app: ApplicationInterface) => T;
64
+ /** Giá trị có thể bind: factory function hoặc class constructor */
65
+ export type ServiceBinding<T = any> = ServiceFactory<T> | (new (...args: any[]) => T);
66
+ //# sourceMappingURL=ApplicationInterface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/ApplicationInterface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // ─── Application Interface ───────────────────────────────────────
2
+ export {};
3
+ //# sourceMappingURL=ApplicationInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationInterface.js","sourceRoot":"","sources":["../../../../src/core/contracts/ApplicationInterface.ts"],"names":[],"mappings":"AAAA,oEAAoE"}
@@ -0,0 +1,67 @@
1
+ import type { OneObjectType } from "../types/utils";
2
+ import type { ViewControllerInterface } from "./ViewControllerInterface";
3
+ import type { HtmlInterface, FragmentInterface, OneChildrenFactoryOutput, OneNodeInterface } from "./ElementInterface";
4
+ import { InitMode } from "./common";
5
+ export type BlockConstructorParams = {
6
+ ctx: ViewControllerInterface;
7
+ name: string;
8
+ viewId?: string | null;
9
+ contentRenderFactory?: BlockRenderFactory;
10
+ id?: string | null;
11
+ initMode?: InitMode;
12
+ };
13
+ export interface BlockInterface {
14
+ oneType: OneObjectType;
15
+ /** Unique block slot name (e.g. 'content', 'sidebar') */
16
+ name: string;
17
+ id: string;
18
+ ctx: ViewControllerInterface;
19
+ viewId: string | null;
20
+ openTag: Comment;
21
+ closeTag: Comment;
22
+ fragment: FragmentInterface | null;
23
+ parentElement: HtmlInterface | null;
24
+ domChildren: Node[];
25
+ isOneElement: boolean;
26
+ isOneBlock: boolean;
27
+ initMode?: InitMode;
28
+ /** Initialize the block (e.g. during hydration) */
29
+ init(): void;
30
+ /** Render the block's content into the parent element */
31
+ render(): void;
32
+ /** Mount the block's content into the DOM, finding matching outlets */
33
+ mount(mountCtx: ViewControllerInterface, parentElement: HtmlInterface): any;
34
+ /** Unmount the block's content from the DOM */
35
+ unmount(): void;
36
+ /** Destroy the block and clean up resources */
37
+ destroy(): void;
38
+ /** Update the block's content (e.g. on state change) */
39
+ update(): void;
40
+ /** Set the block's parent element (used for mounting) */
41
+ setParentElement(parentElement: HtmlInterface | null): void;
42
+ contentRenderFactory: BlockRenderFactory | null;
43
+ }
44
+ export interface BlockOutletInterface extends OneNodeInterface {
45
+ oneType: OneObjectType;
46
+ id: string;
47
+ name: string;
48
+ parent: HtmlInterface | null;
49
+ openTag: Comment;
50
+ closeTag: Comment;
51
+ parentElement: HtmlInterface | null;
52
+ ctx: ViewControllerInterface;
53
+ initMode: InitMode;
54
+ isOneElement: boolean;
55
+ isOneBlockOutlet: boolean;
56
+ /** Render the outlet's markers into the parent element */
57
+ render(): any;
58
+ hydrate(): any;
59
+ destroy(): any;
60
+ start(): any;
61
+ stop(): any;
62
+ setParentElement(parentElement: HtmlInterface | null): any;
63
+ }
64
+ export interface BlockManagerInterface {
65
+ }
66
+ export type BlockRenderFactory = (parentElement: HtmlInterface) => OneChildrenFactoryOutput;
67
+ //# sourceMappingURL=BlockInterface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/BlockInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,MAAM,MAAM,sBAAsB,GAAG;IACjC,GAAG,EAAE,uBAAuB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;IAC1C,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB,CAAC;AACF,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,uBAAuB,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACnB,mDAAmD;IACpD,IAAI,IAAI,IAAI,CAAC;IACZ,yDAAyD;IAC1D,MAAM,IAAI,IAAI,CAAC;IACd,uEAAuE;IACxE,KAAK,CAAC,QAAQ,EAAE,uBAAuB,EAAE,aAAa,EAAE,aAAa,GAAG,GAAG,CAAC;IAC3E,+CAA+C;IAChD,OAAO,IAAI,IAAI,CAAC;IACf,+CAA+C;IAChD,OAAO,IAAI,IAAI,CAAC;IACf,wDAAwD;IACzD,MAAM,IAAI,IAAI,CAAC;IACd,yDAAyD;IAC1D,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;IAE5D,oBAAoB,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAEnD;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC1D,OAAO,EAAE,aAAa,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,GAAG,EAAE,uBAAuB,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC3D,MAAM,IAAI,GAAG,CAAC;IACd,OAAO,IAAI,GAAG,CAAC;IACf,OAAO,IAAI,GAAG,CAAC;IACf,KAAK,IAAI,GAAG,CAAC;IACb,IAAI,IAAI,GAAG,CAAC;IACZ,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,GAAG,GAAG,CAAC;CAC9D;AAED,MAAM,WAAW,qBAAqB;CAErC;AAID,MAAM,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,aAAa,KAAK,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BlockInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockInterface.js","sourceRoot":"","sources":["../../../../src/core/contracts/BlockInterface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import type { OneObjectType } from "../types/utils";
2
+ import type { ViewControllerInterface } from "./ViewControllerInterface";
3
+ import type { ViewInterface } from "./ViewInterface";
4
+ import type { HtmlInterface } from "./ElementInterface";
5
+ export interface ComponentInterface {
6
+ oneType: OneObjectType;
7
+ id: string;
8
+ ctx: ViewControllerInterface;
9
+ viewRef: ViewInterface | null;
10
+ parent: HtmlInterface | null;
11
+ data: Record<string, any>;
12
+ openTag: Comment;
13
+ closeTag: Comment;
14
+ stateKeys: string[];
15
+ subscribeFn: () => void;
16
+ unsubscribeFn: () => void;
17
+ render(): void;
18
+ destroy(): void;
19
+ setParent(parent: HtmlInterface | null): void;
20
+ isOneElement: boolean;
21
+ isOneComponent: boolean;
22
+ [key: string]: any;
23
+ }
24
+ //# sourceMappingURL=ComponentInterface.d.ts.map