@saolabs/client 1.0.0 → 1.1.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 +52 -195
  2. package/dist/index.d.ts +20 -5
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +14 -3
  5. package/dist/index.js.map +1 -1
  6. package/dist/plugins.d.ts +2 -2
  7. package/dist/plugins.js +2 -2
  8. package/dist/src/core/app/Application.d.ts +25 -15
  9. package/dist/src/core/app/Application.d.ts.map +1 -1
  10. package/dist/src/core/app/Application.js +55 -18
  11. package/dist/src/core/app/Application.js.map +1 -1
  12. package/dist/src/core/bootstrap/app.d.ts +1 -1
  13. package/dist/src/core/bootstrap/app.d.ts.map +1 -1
  14. package/dist/src/core/bootstrap/app.js +77 -4
  15. package/dist/src/core/bootstrap/app.js.map +1 -1
  16. package/dist/src/core/bootstrap/bundle.d.ts +41 -0
  17. package/dist/src/core/bootstrap/bundle.d.ts.map +1 -0
  18. package/dist/src/core/bootstrap/bundle.js +98 -0
  19. package/dist/src/core/bootstrap/bundle.js.map +1 -0
  20. package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts +1 -1
  21. package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts.map +1 -1
  22. package/dist/src/core/bootstrap/providers/ApiServiceProvider.js +3 -3
  23. package/dist/src/core/bootstrap/providers/ApiServiceProvider.js.map +1 -1
  24. package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts +1 -1
  25. package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts.map +1 -1
  26. package/dist/src/core/bootstrap/providers/CoreServiceProvider.js +11 -8
  27. package/dist/src/core/bootstrap/providers/CoreServiceProvider.js.map +1 -1
  28. package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts +3 -1
  29. package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts.map +1 -1
  30. package/dist/src/core/bootstrap/providers/HelperServiceProvider.js +8 -3
  31. package/dist/src/core/bootstrap/providers/HelperServiceProvider.js.map +1 -1
  32. package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts +2 -1
  33. package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts.map +1 -1
  34. package/dist/src/core/bootstrap/providers/RouteServiceProvider.js +14 -4
  35. package/dist/src/core/bootstrap/providers/RouteServiceProvider.js.map +1 -1
  36. package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts +4 -4
  37. package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts.map +1 -1
  38. package/dist/src/core/bootstrap/providers/ServiceProvider.js +5 -5
  39. package/dist/src/core/bootstrap/providers/ServiceProvider.js.map +1 -1
  40. package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts +1 -1
  41. package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts.map +1 -1
  42. package/dist/src/core/bootstrap/providers/ViewServiceProvider.js +3 -3
  43. package/dist/src/core/bootstrap/providers/ViewServiceProvider.js.map +1 -1
  44. package/dist/src/core/bootstrap/providers/default-providers.d.ts +1 -1
  45. package/dist/src/core/bootstrap/providers/default-providers.d.ts.map +1 -1
  46. package/dist/src/core/bootstrap/providers/default-providers.js +44 -11
  47. package/dist/src/core/bootstrap/providers/default-providers.js.map +1 -1
  48. package/dist/src/core/bootstrap/providers/index.d.ts +9 -9
  49. package/dist/src/core/bootstrap/providers/index.d.ts.map +1 -1
  50. package/dist/src/core/bootstrap/providers/index.js +8 -8
  51. package/dist/src/core/bootstrap/providers/index.js.map +1 -1
  52. package/dist/src/core/bootstrap/providers/provider-order.d.ts +1 -1
  53. package/dist/src/core/bootstrap/providers/provider-order.d.ts.map +1 -1
  54. package/dist/src/core/bootstrap/ssr.d.ts +47 -0
  55. package/dist/src/core/bootstrap/ssr.d.ts.map +1 -0
  56. package/dist/src/core/bootstrap/ssr.js +129 -0
  57. package/dist/src/core/bootstrap/ssr.js.map +1 -0
  58. package/dist/src/core/cache/ViewCache.d.ts +1 -1
  59. package/dist/src/core/cache/ViewCache.d.ts.map +1 -1
  60. package/dist/src/core/cache/index.d.ts +1 -1
  61. package/dist/src/core/cache/index.d.ts.map +1 -1
  62. package/dist/src/core/cache/index.js +1 -1
  63. package/dist/src/core/cache/index.js.map +1 -1
  64. package/dist/src/core/contracts/ApplicationInterface.d.ts +15 -11
  65. package/dist/src/core/contracts/ApplicationInterface.d.ts.map +1 -1
  66. package/dist/src/core/contracts/BlockInterface.d.ts +10 -10
  67. package/dist/src/core/contracts/BlockInterface.d.ts.map +1 -1
  68. package/dist/src/core/contracts/BundleInterface.d.ts +38 -0
  69. package/dist/src/core/contracts/BundleInterface.d.ts.map +1 -0
  70. package/dist/src/core/contracts/BundleInterface.js +2 -0
  71. package/dist/src/core/contracts/BundleInterface.js.map +1 -0
  72. package/dist/src/core/contracts/ComponentInterface.d.ts +7 -6
  73. package/dist/src/core/contracts/ComponentInterface.d.ts.map +1 -1
  74. package/dist/src/core/contracts/ElementInterface.d.ts +91 -27
  75. package/dist/src/core/contracts/ElementInterface.d.ts.map +1 -1
  76. package/dist/src/core/contracts/HeadServiceInterface.d.ts +37 -0
  77. package/dist/src/core/contracts/HeadServiceInterface.d.ts.map +1 -0
  78. package/dist/src/core/contracts/HeadServiceInterface.js +3 -0
  79. package/dist/src/core/contracts/HeadServiceInterface.js.map +1 -0
  80. package/dist/src/core/contracts/HelperInterface.d.ts +9 -1
  81. package/dist/src/core/contracts/HelperInterface.d.ts.map +1 -1
  82. package/dist/src/core/contracts/HttpServiceInterface.d.ts +3 -0
  83. package/dist/src/core/contracts/HttpServiceInterface.d.ts.map +1 -1
  84. package/dist/src/core/contracts/MarkerInterface.d.ts +29 -44
  85. package/dist/src/core/contracts/MarkerInterface.d.ts.map +1 -1
  86. package/dist/src/core/contracts/ReactiveInterface.d.ts +9 -9
  87. package/dist/src/core/contracts/ReactiveInterface.d.ts.map +1 -1
  88. package/dist/src/core/contracts/RouterInterface.d.ts +5 -2
  89. package/dist/src/core/contracts/RouterInterface.d.ts.map +1 -1
  90. package/dist/src/core/contracts/SectionInterface.d.ts +48 -0
  91. package/dist/src/core/contracts/SectionInterface.d.ts.map +1 -0
  92. package/dist/src/core/contracts/SectionInterface.js +2 -0
  93. package/dist/src/core/contracts/SectionInterface.js.map +1 -0
  94. package/dist/src/core/contracts/ServiceProviderInterface.d.ts +3 -3
  95. package/dist/src/core/contracts/ServiceProviderInterface.d.ts.map +1 -1
  96. package/dist/src/core/contracts/ViewControllerInterface.d.ts +116 -15
  97. package/dist/src/core/contracts/ViewControllerInterface.d.ts.map +1 -1
  98. package/dist/src/core/contracts/ViewInterface.d.ts +31 -5
  99. package/dist/src/core/contracts/ViewInterface.d.ts.map +1 -1
  100. package/dist/src/core/contracts/ViewManagerInterface.d.ts +47 -5
  101. package/dist/src/core/contracts/ViewManagerInterface.d.ts.map +1 -1
  102. package/dist/src/core/contracts/ViewStateInterface.d.ts +39 -2
  103. package/dist/src/core/contracts/ViewStateInterface.d.ts.map +1 -1
  104. package/dist/src/core/contracts/common.d.ts +3 -3
  105. package/dist/src/core/contracts/common.js +3 -3
  106. package/dist/src/core/contracts/utils.d.ts +19 -19
  107. package/dist/src/core/contracts/utils.d.ts.map +1 -1
  108. package/dist/src/core/contracts/views.d.ts +1 -22
  109. package/dist/src/core/contracts/views.d.ts.map +1 -1
  110. package/dist/src/core/devtools/hook.d.ts +66 -0
  111. package/dist/src/core/devtools/hook.d.ts.map +1 -0
  112. package/dist/src/core/devtools/hook.js +114 -0
  113. package/dist/src/core/devtools/hook.js.map +1 -0
  114. package/dist/src/core/devtools/index.d.ts +34 -0
  115. package/dist/src/core/devtools/index.d.ts.map +1 -0
  116. package/dist/src/core/devtools/index.js +33 -0
  117. package/dist/src/core/devtools/index.js.map +1 -0
  118. package/dist/src/core/devtools/inspector.d.ts +31 -0
  119. package/dist/src/core/devtools/inspector.d.ts.map +1 -0
  120. package/dist/src/core/devtools/inspector.js +249 -0
  121. package/dist/src/core/devtools/inspector.js.map +1 -0
  122. package/dist/src/core/elements/Block.d.ts +9 -7
  123. package/dist/src/core/elements/Block.d.ts.map +1 -1
  124. package/dist/src/core/elements/Block.js +33 -9
  125. package/dist/src/core/elements/Block.js.map +1 -1
  126. package/dist/src/core/elements/BlockOutlet.d.ts +19 -8
  127. package/dist/src/core/elements/BlockOutlet.d.ts.map +1 -1
  128. package/dist/src/core/elements/BlockOutlet.js +57 -13
  129. package/dist/src/core/elements/BlockOutlet.js.map +1 -1
  130. package/dist/src/core/elements/Component.d.ts +83 -11
  131. package/dist/src/core/elements/Component.d.ts.map +1 -1
  132. package/dist/src/core/elements/Component.js +334 -13
  133. package/dist/src/core/elements/Component.js.map +1 -1
  134. package/dist/src/core/elements/ForeachSlotCache.d.ts +95 -0
  135. package/dist/src/core/elements/ForeachSlotCache.d.ts.map +1 -0
  136. package/dist/src/core/elements/ForeachSlotCache.js +149 -0
  137. package/dist/src/core/elements/ForeachSlotCache.js.map +1 -0
  138. package/dist/src/core/elements/Fragment.d.ts +19 -13
  139. package/dist/src/core/elements/Fragment.d.ts.map +1 -1
  140. package/dist/src/core/elements/Fragment.js +43 -20
  141. package/dist/src/core/elements/Fragment.js.map +1 -1
  142. package/dist/src/core/elements/Html.d.ts +89 -12
  143. package/dist/src/core/elements/Html.d.ts.map +1 -1
  144. package/dist/src/core/elements/Html.js +707 -106
  145. package/dist/src/core/elements/Html.js.map +1 -1
  146. package/dist/src/core/elements/Output.d.ts +34 -10
  147. package/dist/src/core/elements/Output.d.ts.map +1 -1
  148. package/dist/src/core/elements/Output.js +141 -26
  149. package/dist/src/core/elements/Output.js.map +1 -1
  150. package/dist/src/core/elements/Reactive.d.ts +85 -14
  151. package/dist/src/core/elements/Reactive.d.ts.map +1 -1
  152. package/dist/src/core/elements/Reactive.js +315 -41
  153. package/dist/src/core/elements/Reactive.js.map +1 -1
  154. package/dist/src/core/elements/TextElement.d.ts +11 -7
  155. package/dist/src/core/elements/TextElement.d.ts.map +1 -1
  156. package/dist/src/core/elements/TextElement.js +18 -11
  157. package/dist/src/core/elements/TextElement.js.map +1 -1
  158. package/dist/src/core/elements/Wrapper.d.ts +24 -13
  159. package/dist/src/core/elements/Wrapper.d.ts.map +1 -1
  160. package/dist/src/core/elements/Wrapper.js +65 -8
  161. package/dist/src/core/elements/Wrapper.js.map +1 -1
  162. package/dist/src/core/elements/Yield.d.ts +10 -9
  163. package/dist/src/core/elements/Yield.d.ts.map +1 -1
  164. package/dist/src/core/elements/Yield.js +31 -19
  165. package/dist/src/core/elements/Yield.js.map +1 -1
  166. package/dist/src/core/elements/helpers.d.ts +7 -7
  167. package/dist/src/core/elements/helpers.d.ts.map +1 -1
  168. package/dist/src/core/elements/helpers.js +4 -4
  169. package/dist/src/core/elements/index.d.ts +12 -11
  170. package/dist/src/core/elements/index.d.ts.map +1 -1
  171. package/dist/src/core/elements/index.js +12 -11
  172. package/dist/src/core/elements/index.js.map +1 -1
  173. package/dist/src/core/elements/reconcileChildren.d.ts +7 -0
  174. package/dist/src/core/elements/reconcileChildren.d.ts.map +1 -0
  175. package/dist/src/core/elements/reconcileChildren.js +74 -0
  176. package/dist/src/core/elements/reconcileChildren.js.map +1 -0
  177. package/dist/src/core/helpers/ApiClient.d.ts.map +1 -0
  178. package/dist/src/core/{hellpers → helpers}/ApiClient.js +10 -1
  179. package/dist/src/core/helpers/ApiClient.js.map +1 -0
  180. package/dist/src/core/helpers/app.d.ts +3 -0
  181. package/dist/src/core/helpers/app.d.ts.map +1 -0
  182. package/dist/src/core/{hellpers → helpers}/app.js +11 -1
  183. package/dist/src/core/helpers/app.js.map +1 -0
  184. package/dist/src/core/helpers/transition.d.ts +34 -0
  185. package/dist/src/core/helpers/transition.d.ts.map +1 -0
  186. package/dist/src/core/helpers/transition.js +118 -0
  187. package/dist/src/core/helpers/transition.js.map +1 -0
  188. package/dist/src/core/{hellpers → helpers}/utils.d.ts +2 -2
  189. package/dist/src/core/helpers/utils.d.ts.map +1 -0
  190. package/dist/src/core/{hellpers → helpers}/utils.js +4 -4
  191. package/dist/src/core/helpers/utils.js.map +1 -0
  192. package/dist/src/core/helpers/view.d.ts +39 -0
  193. package/dist/src/core/helpers/view.d.ts.map +1 -0
  194. package/dist/src/core/helpers/view.js +286 -0
  195. package/dist/src/core/helpers/view.js.map +1 -0
  196. package/dist/src/core/routers/Router.d.ts +108 -7
  197. package/dist/src/core/routers/Router.d.ts.map +1 -1
  198. package/dist/src/core/routers/Router.js +444 -68
  199. package/dist/src/core/routers/Router.js.map +1 -1
  200. package/dist/src/core/routers/index.d.ts +2 -2
  201. package/dist/src/core/routers/index.d.ts.map +1 -1
  202. package/dist/src/core/routers/index.js +1 -1
  203. package/dist/src/core/routers/index.js.map +1 -1
  204. package/dist/src/core/services/AssetManager.d.ts +112 -0
  205. package/dist/src/core/services/AssetManager.d.ts.map +1 -0
  206. package/dist/src/core/services/AssetManager.js +361 -0
  207. package/dist/src/core/services/AssetManager.js.map +1 -0
  208. package/dist/src/core/services/BlockManager.d.ts +73 -2
  209. package/dist/src/core/services/BlockManager.d.ts.map +1 -1
  210. package/dist/src/core/services/BlockManager.js +270 -48
  211. package/dist/src/core/services/BlockManager.js.map +1 -1
  212. package/dist/src/core/services/DomService.js +3 -3
  213. package/dist/src/core/services/DomService.js.map +1 -1
  214. package/dist/src/core/services/HeadService.d.ts +24 -0
  215. package/dist/src/core/services/HeadService.d.ts.map +1 -0
  216. package/dist/src/core/services/HeadService.js +120 -0
  217. package/dist/src/core/services/HeadService.js.map +1 -0
  218. package/dist/src/core/services/HelperService.d.ts +14 -3
  219. package/dist/src/core/services/HelperService.d.ts.map +1 -1
  220. package/dist/src/core/services/HelperService.js +32 -2
  221. package/dist/src/core/services/HelperService.js.map +1 -1
  222. package/dist/src/core/services/HttpService.d.ts +8 -0
  223. package/dist/src/core/services/HttpService.d.ts.map +1 -1
  224. package/dist/src/core/services/HttpService.js +121 -47
  225. package/dist/src/core/services/HttpService.js.map +1 -1
  226. package/dist/src/core/services/MarkerRegistry.d.ts +51 -8
  227. package/dist/src/core/services/MarkerRegistry.d.ts.map +1 -1
  228. package/dist/src/core/services/MarkerRegistry.js +135 -14
  229. package/dist/src/core/services/MarkerRegistry.js.map +1 -1
  230. package/dist/src/core/services/PageCache.d.ts +101 -0
  231. package/dist/src/core/services/PageCache.d.ts.map +1 -0
  232. package/dist/src/core/services/PageCache.js +184 -0
  233. package/dist/src/core/services/PageCache.js.map +1 -0
  234. package/dist/src/core/services/SectionManager.d.ts +100 -0
  235. package/dist/src/core/services/SectionManager.d.ts.map +1 -0
  236. package/dist/src/core/services/SectionManager.js +408 -0
  237. package/dist/src/core/services/SectionManager.js.map +1 -0
  238. package/dist/src/core/services/StorageService.js +1 -1
  239. package/dist/src/core/services/TranslationService.d.ts +21 -0
  240. package/dist/src/core/services/TranslationService.d.ts.map +1 -0
  241. package/dist/src/core/services/TranslationService.js +95 -0
  242. package/dist/src/core/services/TranslationService.js.map +1 -0
  243. package/dist/src/core/services/index.d.ts +11 -8
  244. package/dist/src/core/services/index.d.ts.map +1 -1
  245. package/dist/src/core/services/index.js +11 -8
  246. package/dist/src/core/services/index.js.map +1 -1
  247. package/dist/src/core/types/utils.d.ts +8 -8
  248. package/dist/src/core/types/utils.d.ts.map +1 -1
  249. package/dist/src/core/view/LoopContext.d.ts +21 -1
  250. package/dist/src/core/view/LoopContext.d.ts.map +1 -1
  251. package/dist/src/core/view/LoopContext.js +36 -0
  252. package/dist/src/core/view/LoopContext.js.map +1 -1
  253. package/dist/src/core/view/ResourceScope.d.ts +38 -0
  254. package/dist/src/core/view/ResourceScope.d.ts.map +1 -0
  255. package/dist/src/core/view/ResourceScope.js +167 -0
  256. package/dist/src/core/view/ResourceScope.js.map +1 -0
  257. package/dist/src/core/view/Section.d.ts +17 -32
  258. package/dist/src/core/view/Section.d.ts.map +1 -1
  259. package/dist/src/core/view/Section.js +14 -55
  260. package/dist/src/core/view/Section.js.map +1 -1
  261. package/dist/src/core/view/View.d.ts +43 -7
  262. package/dist/src/core/view/View.d.ts.map +1 -1
  263. package/dist/src/core/view/View.js +22 -4
  264. package/dist/src/core/view/View.js.map +1 -1
  265. package/dist/src/core/view/ViewController.d.ts +313 -40
  266. package/dist/src/core/view/ViewController.d.ts.map +1 -1
  267. package/dist/src/core/view/ViewController.js +1002 -147
  268. package/dist/src/core/view/ViewController.js.map +1 -1
  269. package/dist/src/core/view/ViewManager.d.ts +318 -27
  270. package/dist/src/core/view/ViewManager.d.ts.map +1 -1
  271. package/dist/src/core/view/ViewManager.js +1199 -258
  272. package/dist/src/core/view/ViewManager.js.map +1 -1
  273. package/dist/src/core/view/ViewState.d.ts +185 -6
  274. package/dist/src/core/view/ViewState.d.ts.map +1 -1
  275. package/dist/src/core/view/ViewState.js +851 -123
  276. package/dist/src/core/view/ViewState.js.map +1 -1
  277. package/dist/src/core/view/index.d.ts +5 -5
  278. package/dist/src/core/view/index.d.ts.map +1 -1
  279. package/dist/src/core/view/index.js +5 -5
  280. package/dist/src/core/view/index.js.map +1 -1
  281. package/dist/src/testing/index.d.ts +69 -0
  282. package/dist/src/testing/index.d.ts.map +1 -0
  283. package/dist/src/testing/index.js +140 -0
  284. package/dist/src/testing/index.js.map +1 -0
  285. package/index.ts +29 -5
  286. package/package.json +30 -21
  287. package/plugins.ts +2 -2
  288. package/src/core/app/Application.ts +72 -31
  289. package/src/core/bootstrap/app.ts +84 -6
  290. package/src/core/bootstrap/bundle.ts +101 -0
  291. package/src/core/bootstrap/providers/ApiServiceProvider.ts +4 -4
  292. package/src/core/bootstrap/providers/CoreServiceProvider.ts +14 -8
  293. package/src/core/bootstrap/providers/HelperServiceProvider.ts +8 -3
  294. package/src/core/bootstrap/providers/RouteServiceProvider.ts +15 -4
  295. package/src/core/bootstrap/providers/ServiceProvider.ts +8 -8
  296. package/src/core/bootstrap/providers/ViewServiceProvider.ts +3 -3
  297. package/src/core/bootstrap/providers/default-providers.ts +51 -16
  298. package/src/core/bootstrap/providers/index.ts +9 -9
  299. package/src/core/bootstrap/providers/provider-order.test.ts +16 -27
  300. package/src/core/bootstrap/providers/provider-order.ts +1 -1
  301. package/src/core/bootstrap/ssr.ts +141 -0
  302. package/src/core/cache/ViewCache.ts +1 -1
  303. package/src/core/cache/index.ts +1 -1
  304. package/src/core/contracts/ApplicationInterface.ts +15 -11
  305. package/src/core/contracts/BlockInterface.ts +18 -18
  306. package/src/core/contracts/BundleInterface.ts +40 -0
  307. package/src/core/contracts/ComponentInterface.ts +7 -6
  308. package/src/core/contracts/ElementInterface.ts +95 -27
  309. package/src/core/contracts/HeadServiceInterface.ts +41 -0
  310. package/src/core/contracts/HelperInterface.ts +9 -1
  311. package/src/core/contracts/HttpServiceInterface.ts +3 -0
  312. package/src/core/contracts/MarkerInterface.ts +22 -49
  313. package/src/core/contracts/ReactiveInterface.ts +9 -9
  314. package/src/core/contracts/RouterInterface.ts +5 -2
  315. package/src/core/contracts/SectionInterface.ts +49 -0
  316. package/src/core/contracts/ServiceProviderInterface.ts +3 -3
  317. package/src/core/contracts/ViewControllerInterface.ts +124 -16
  318. package/src/core/contracts/ViewInterface.ts +34 -5
  319. package/src/core/contracts/ViewManagerInterface.ts +40 -5
  320. package/src/core/contracts/ViewStateInterface.ts +39 -2
  321. package/src/core/contracts/common.ts +3 -3
  322. package/src/core/contracts/utils.ts +19 -19
  323. package/src/core/contracts/views.ts +2 -22
  324. package/src/core/devtools/hook.ts +142 -0
  325. package/src/core/devtools/index.ts +38 -0
  326. package/src/core/devtools/inspector.ts +270 -0
  327. package/src/core/elements/Block.ts +43 -21
  328. package/src/core/elements/BlockOutlet.ts +61 -21
  329. package/src/core/elements/Component.ts +352 -18
  330. package/src/core/elements/ElementManager.ts +9 -9
  331. package/src/core/elements/ForeachSlotCache.ts +170 -0
  332. package/src/core/elements/Fragment.ts +50 -32
  333. package/src/core/elements/Html.ts +696 -117
  334. package/src/core/elements/Output.ts +147 -30
  335. package/src/core/elements/Reactive.ts +329 -52
  336. package/src/core/elements/TextElement.ts +25 -16
  337. package/src/core/elements/Wrapper.ts +84 -18
  338. package/src/core/elements/Yield.ts +35 -24
  339. package/src/core/elements/helpers.ts +12 -12
  340. package/src/core/elements/index.ts +25 -24
  341. package/src/core/elements/reconcileChildren.ts +70 -0
  342. package/src/core/{hellpers → helpers}/ApiClient.ts +8 -1
  343. package/src/core/{hellpers → helpers}/app.ts +13 -2
  344. package/src/core/helpers/transition.ts +127 -0
  345. package/src/core/{hellpers → helpers}/utils.ts +4 -4
  346. package/src/core/helpers/view.ts +283 -0
  347. package/src/core/routers/Router.ts +458 -64
  348. package/src/core/routers/index.ts +2 -2
  349. package/src/core/services/AssetManager.ts +387 -0
  350. package/src/core/services/BlockManager.ts +272 -50
  351. package/src/core/services/DomService.ts +3 -3
  352. package/src/core/services/HeadService.ts +124 -0
  353. package/src/core/services/HelperService.ts +34 -4
  354. package/src/core/services/HttpService.ts +116 -55
  355. package/src/core/services/MarkerRegistry.ts +142 -16
  356. package/src/core/services/PageCache.ts +239 -0
  357. package/src/core/services/SectionManager.ts +387 -0
  358. package/src/core/services/StorageService.ts +1 -1
  359. package/src/core/services/TranslationService.ts +91 -0
  360. package/src/core/services/index.ts +11 -8
  361. package/src/core/types/utils.ts +8 -8
  362. package/src/core/view/LoopContext.ts +38 -1
  363. package/src/core/view/ResourceScope.ts +174 -0
  364. package/src/core/view/Section.ts +21 -68
  365. package/src/core/view/View.ts +57 -8
  366. package/src/core/view/ViewController.ts +1070 -186
  367. package/src/core/view/ViewManager.ts +1346 -272
  368. package/src/core/view/ViewState.ts +834 -116
  369. package/src/core/view/index.ts +5 -5
  370. package/src/testing/index.ts +184 -0
  371. package/dist/src/core/hellpers/ApiClient.d.ts.map +0 -1
  372. package/dist/src/core/hellpers/ApiClient.js.map +0 -1
  373. package/dist/src/core/hellpers/app.d.ts +0 -3
  374. package/dist/src/core/hellpers/app.d.ts.map +0 -1
  375. package/dist/src/core/hellpers/app.js.map +0 -1
  376. package/dist/src/core/hellpers/utils.d.ts.map +0 -1
  377. package/dist/src/core/hellpers/utils.js.map +0 -1
  378. package/dist/src/core/services/MarkerService.d.ts +0 -299
  379. package/dist/src/core/services/MarkerService.d.ts.map +0 -1
  380. package/dist/src/core/services/MarkerService.js +0 -723
  381. package/dist/src/core/services/MarkerService.js.map +0 -1
  382. package/src/core/services/MarkerService.ts +0 -923
  383. /package/dist/src/core/{hellpers → helpers}/ApiClient.d.ts +0 -0
@@ -1 +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"}
1
+ {"version":3,"file":"ViewServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ViewServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,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"}
@@ -1,4 +1,4 @@
1
- import { NamedServiceProvider } from "./provider-order";
1
+ import { NamedServiceProvider } from "./provider-order.js";
2
2
  /**
3
3
  * Tạo danh sách providers mặc định.
4
4
  *
@@ -1 +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"}
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,qBAAqB,CAAC;AA0E3E;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,oBAAoB,EAAE,CAyC9F"}
@@ -1,14 +1,14 @@
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";
1
+ import { app } from "../../helpers/app.js";
2
+ import { PROVIDER_NAMES } from "./provider-order.js";
3
+ import { ApiServiceProvider } from "./ApiServiceProvider.js";
4
+ import { CoreServiceProvider } from "./CoreServiceProvider.js";
5
+ import { HelperServiceProvider } from "./HelperServiceProvider.js";
6
+ import { RouteServiceProvider } from "./RouteServiceProvider.js";
7
+ import { ViewServiceProvider } from "./ViewServiceProvider.js";
8
8
  /** Tên system providers — không cho phép override */
9
9
  const SYSTEM_PROVIDER_NAMES = new Set(Object.values(PROVIDER_NAMES));
10
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']);
11
+ const SYSTEM_SERVICE_KEYS = new Set(['Store', 'Storage', 'Event', 'Http', 'View', 'Router', 'Helper', 'API']);
12
12
  /**
13
13
  * Chuyển `config.services` dạng { name: Class } thành NamedServiceProvider[].
14
14
  *
@@ -26,14 +26,42 @@ function servicesFromMap(map) {
26
26
  }
27
27
  return true;
28
28
  })
29
- .map(([name, ServiceClass]) => ({
29
+ .map(([name, value]) => ({
30
30
  name,
31
31
  dependsOn: [PROVIDER_NAMES.CORE],
32
32
  register() {
33
- appInstance.set(name, new ServiceClass(appInstance));
33
+ // Bundle nạp rời (theme) hay gửi INSTANCE hoặc object thuần chứ
34
+ // không phải class — `new` vô điều kiện sẽ ném "is not a
35
+ // constructor". Chỉ dựng khi thật sự là class.
36
+ const isClass = typeof value === 'function' && value.prototype;
37
+ appInstance.set(name, isClass ? new value(appInstance) : value);
34
38
  }
35
39
  }));
36
40
  }
41
+ /**
42
+ * `config.helpers` = { tên: fn } → MỘT provider gộp, phụ thuộc `helper`.
43
+ *
44
+ * Không gán tay sau `init()`: `App.Helper` chỉ tồn tại sau khi
45
+ * HelperServiceProvider register, nên phải để resolveProviderOrder xếp chỗ.
46
+ * Gán tay thì provider nào đọc helper trong boot() của mình sẽ nhận undefined.
47
+ */
48
+ function helpersFromMap(map) {
49
+ const appInstance = app();
50
+ if (!map || Object.keys(map).length === 0)
51
+ return [];
52
+ return [{
53
+ name: 'bundle.helpers',
54
+ dependsOn: [PROVIDER_NAMES.HELPER],
55
+ register() {
56
+ const helper = appInstance.get('Helper');
57
+ if (!helper) {
58
+ console.warn('[Bootstrap] Helper chưa sẵn sàng, bỏ qua config.helpers.');
59
+ return;
60
+ }
61
+ Object.assign(helper, map);
62
+ }
63
+ }];
64
+ }
37
65
  /**
38
66
  * Tạo danh sách providers mặc định.
39
67
  *
@@ -49,6 +77,7 @@ export function buildDefaultProviders(config = {}) {
49
77
  // Set static config cho default providers trước khi tạo instance
50
78
  ViewServiceProvider.config = config.view || {};
51
79
  RouteServiceProvider.config = config.router || {};
80
+ HelperServiceProvider.config = { i18n: config.i18n };
52
81
  ApiServiceProvider.config = config.api || {};
53
82
  const App = app();
54
83
  const defaults = [
@@ -62,6 +91,10 @@ export function buildDefaultProviders(config = {}) {
62
91
  const serviceProviders = config.services
63
92
  ? servicesFromMap(config.services)
64
93
  : [];
94
+ // config.helpers: { tên: fn } → một provider phụ thuộc `helper`
95
+ const helperProviders = config.helpers
96
+ ? helpersFromMap(config.helpers)
97
+ : [];
65
98
  // config.providers: (ProviderClass | NamedServiceProvider)[] → instantiate classes
66
99
  const customProviders = Array.isArray(config.providers)
67
100
  ? config.providers
@@ -74,6 +107,6 @@ export function buildDefaultProviders(config = {}) {
74
107
  return true;
75
108
  })
76
109
  : [];
77
- return [...defaults, ...serviceProviders, ...customProviders];
110
+ return [...defaults, ...serviceProviders, ...helperProviders, ...customProviders];
78
111
  }
79
112
  //# sourceMappingURL=default-providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-providers.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/default-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default-providers.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/default-providers.ts"],"names":[],"mappings":"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"}
@@ -1,10 +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';
1
+ export { NamedServiceProvider, resolveProviderOrder, PROVIDER_NAMES } from './provider-order.js';
2
+ export type { ProviderName } from './provider-order.js';
3
+ export { ServiceProvider } from './ServiceProvider.js';
4
+ export { buildDefaultProviders } from './default-providers.js';
5
+ export { CoreServiceProvider } from './CoreServiceProvider.js';
6
+ export { ViewServiceProvider } from './ViewServiceProvider.js';
7
+ export { RouteServiceProvider } from './RouteServiceProvider.js';
8
+ export { HelperServiceProvider } from './HelperServiceProvider.js';
9
+ export { ApiServiceProvider } from './ApiServiceProvider.js';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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,qBAAqB,CAAC;AACjG,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,9 +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';
1
+ export { resolveProviderOrder, PROVIDER_NAMES } from './provider-order.js';
2
+ export { ServiceProvider } from './ServiceProvider.js';
3
+ export { buildDefaultProviders } from './default-providers.js';
4
+ export { CoreServiceProvider } from './CoreServiceProvider.js';
5
+ export { ViewServiceProvider } from './ViewServiceProvider.js';
6
+ export { RouteServiceProvider } from './RouteServiceProvider.js';
7
+ export { HelperServiceProvider } from './HelperServiceProvider.js';
8
+ export { ApiServiceProvider } from './ApiServiceProvider.js';
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ServiceProviderInterface } from "../../contracts/ServiceProviderInterface";
1
+ import type { ServiceProviderInterface } from "../../contracts/ServiceProviderInterface.js";
2
2
  /**
3
3
  * Tên các provider mặc định — dùng constant thay vì magic string.
4
4
  * Custom providers có thể dùng tên khác hoặc override tên mặc định.
@@ -1 +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"}
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,6CAA6C,CAAC;AAE5F;;;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,47 @@
1
+ /**
2
+ * SSR boot detection — đọc thông tin server nhúng để hydrate route đầu tiên.
3
+ * Tham chiếu: RUNTIME_CONTRACT.md §6 (Hydration boot).
4
+ */
5
+ /** Thông tin boot server nhúng cho trang server-rendered. */
6
+ export interface SSRBootInfo {
7
+ /** Registry path của page entry (vd 'web.modules.home'). */
8
+ view: string;
9
+ /** viewId server đã dùng prefix markers/classes của page. */
10
+ viewId: string;
11
+ /** CSS selector container chứa SSR HTML (mặc định '#app-root'). */
12
+ container?: string;
13
+ }
14
+ /**
15
+ * Đọc SSR boot info từ DOM:
16
+ *
17
+ * <script type="application/json" data-ref="saola-ssr">
18
+ * { "container": "#app-root", "view": "web.modules.home", "viewId": "v_abc" }
19
+ * </script>
20
+ *
21
+ * viewId của layout chain được đọc từ APP_CONFIGS.view.ssrData khi server có
22
+ * cung cấp; DOM marker chỉ là fallback tương thích cho output cũ.
23
+ * Trả null nếu không phải trang server-rendered → CSR boot bình thường.
24
+ */
25
+ export declare function readSSRBoot(): SSRBootInfo | null;
26
+ /**
27
+ * Đọc boot config server nhúng qua `window.APP_CONFIGS` (contract server hiện tại)
28
+ * và map về shape config của client (`{ view, router, api }`).
29
+ *
30
+ * Server (`_system/page/end.blade.php`) đã emit:
31
+ * window.APP_CONFIGS = {
32
+ * container: '#app-root',
33
+ * router: { mode, base, allRoutes: [{name,path,params,component}], ... },
34
+ * ...
35
+ * }
36
+ * `allRoutes` đã đúng shape `Router.addRoutes` cần ({path, component}).
37
+ *
38
+ * Trả null nếu không có APP_CONFIGS (→ app tự truyền config cho App.start).
39
+ */
40
+ export declare function readBootConfig(): Record<string, any> | null;
41
+ /**
42
+ * Merge nông 2 tầng config boot (base) với config app truyền (override).
43
+ * Per top-level key (view/router/api): nếu cả hai là object thì merge nông,
44
+ * ngược lại override thắng. Dùng để config app truyền có ưu tiên hơn boot.
45
+ */
46
+ export declare function mergeBootConfig(base: Record<string, any>, override: Record<string, any>): Record<string, any>;
47
+ //# sourceMappingURL=ssr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../../../../src/core/bootstrap/ssr.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IACxB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,IAAI,WAAW,GAAG,IAAI,CAiBhD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CA0D3D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAarB"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * SSR boot detection — đọc thông tin server nhúng để hydrate route đầu tiên.
3
+ * Tham chiếu: RUNTIME_CONTRACT.md §6 (Hydration boot).
4
+ */
5
+ /**
6
+ * Đọc SSR boot info từ DOM:
7
+ *
8
+ * <script type="application/json" data-ref="saola-ssr">
9
+ * { "container": "#app-root", "view": "web.modules.home", "viewId": "v_abc" }
10
+ * </script>
11
+ *
12
+ * viewId của layout chain được đọc từ APP_CONFIGS.view.ssrData khi server có
13
+ * cung cấp; DOM marker chỉ là fallback tương thích cho output cũ.
14
+ * Trả null nếu không phải trang server-rendered → CSR boot bình thường.
15
+ */
16
+ export function readSSRBoot() {
17
+ if (typeof document === 'undefined')
18
+ return null;
19
+ const el = document.querySelector('script[type="application/json"][data-ref="saola-ssr"]');
20
+ if (!el || !el.textContent)
21
+ return null;
22
+ try {
23
+ const info = JSON.parse(el.textContent);
24
+ if (info && typeof info.view === 'string' && typeof info.viewId === 'string') {
25
+ return {
26
+ view: info.view,
27
+ viewId: info.viewId,
28
+ container: typeof info.container === 'string' ? info.container : undefined,
29
+ };
30
+ }
31
+ }
32
+ catch (e) {
33
+ console.warn('[Bootstrap] SSR boot JSON không hợp lệ:', e);
34
+ }
35
+ return null;
36
+ }
37
+ /**
38
+ * Đọc boot config server nhúng qua `window.APP_CONFIGS` (contract server hiện tại)
39
+ * và map về shape config của client (`{ view, router, api }`).
40
+ *
41
+ * Server (`_system/page/end.blade.php`) đã emit:
42
+ * window.APP_CONFIGS = {
43
+ * container: '#app-root',
44
+ * router: { mode, base, allRoutes: [{name,path,params,component}], ... },
45
+ * ...
46
+ * }
47
+ * `allRoutes` đã đúng shape `Router.addRoutes` cần ({path, component}).
48
+ *
49
+ * Trả null nếu không có APP_CONFIGS (→ app tự truyền config cho App.start).
50
+ */
51
+ export function readBootConfig() {
52
+ if (typeof window === 'undefined')
53
+ return null;
54
+ const cfg = window.APP_CONFIGS;
55
+ if (!cfg || typeof cfg !== 'object')
56
+ return null;
57
+ const out = {};
58
+ if (cfg.i18n && typeof cfg.i18n === "object")
59
+ out.i18n = cfg.i18n;
60
+ // view.systemData (server: __layout__/__base__/__page__/...) PHẢI tới được
61
+ // ViewManager: compiled factory destructure `__layout__` từ systemData để
62
+ // resolve superView (`${__layout__+"base"}`). Thiếu → 'undefinedbase' →
63
+ // "View not found in registry" + page render() trả rỗng.
64
+ const view = {};
65
+ if (typeof cfg.container === 'string') {
66
+ view.container = cfg.container;
67
+ }
68
+ if (typeof cfg.view?.dataEndpoint === 'string')
69
+ view.dataEndpoint = cfg.view.dataEndpoint;
70
+ if (cfg.view?.fetchOptions && typeof cfg.view.fetchOptions === 'object')
71
+ view.fetchOptions = cfg.view.fetchOptions;
72
+ if (cfg.api && typeof cfg.api === 'object')
73
+ out.api = cfg.api;
74
+ if (cfg.view?.systemData && typeof cfg.view.systemData === 'object') {
75
+ view.systemData = cfg.view.systemData;
76
+ }
77
+ if (typeof cfg.view?.revision === 'string') {
78
+ view.revision = cfg.view.revision;
79
+ }
80
+ if (typeof cfg.view?.contextViews === 'string') {
81
+ view.contextViews = cfg.view.contextViews;
82
+ }
83
+ if (cfg.view?.ssrData && typeof cfg.view.ssrData === 'object') {
84
+ view.ssrData = cfg.view.ssrData;
85
+ }
86
+ if (Object.keys(view).length > 0) {
87
+ out.view = view;
88
+ }
89
+ // Danh sách bundle nạp rời (theme…) — server là chỗ DUY NHẤT biết theme nào
90
+ // đang bật, nên client không đoán đường dẫn. Xem EXTENSION_ARCHITECTURE §8.
91
+ // Dữ liệu package chia sẻ cho client (Saola::share phía PHP), đọc qua App.shared().
92
+ if (cfg.shared && typeof cfg.shared === 'object' && !Array.isArray(cfg.shared)) {
93
+ out.shared = cfg.shared;
94
+ }
95
+ if (Array.isArray(cfg.bundles)) {
96
+ out.bundles = cfg.bundles.filter((u) => typeof u === 'string' && u !== '');
97
+ }
98
+ const routes = cfg.router?.allRoutes ?? cfg.router?.routes;
99
+ if (Array.isArray(routes)) {
100
+ out.router = {
101
+ mode: cfg.router?.mode ?? 'history',
102
+ base: cfg.router?.base,
103
+ defaultRoute: cfg.router?.defaultRoute,
104
+ routes,
105
+ };
106
+ }
107
+ return Object.keys(out).length > 0 ? out : null;
108
+ }
109
+ /**
110
+ * Merge nông 2 tầng config boot (base) với config app truyền (override).
111
+ * Per top-level key (view/router/api): nếu cả hai là object thì merge nông,
112
+ * ngược lại override thắng. Dùng để config app truyền có ưu tiên hơn boot.
113
+ */
114
+ export function mergeBootConfig(base, override) {
115
+ const out = { ...base };
116
+ for (const key of Object.keys(override)) {
117
+ const b = out[key];
118
+ const o = override[key];
119
+ if (b && o && typeof b === 'object' && typeof o === 'object'
120
+ && !Array.isArray(b) && !Array.isArray(o)) {
121
+ out[key] = { ...b, ...o };
122
+ }
123
+ else {
124
+ out[key] = o;
125
+ }
126
+ }
127
+ return out;
128
+ }
129
+ //# sourceMappingURL=ssr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.js","sourceRoot":"","sources":["../../../../src/core/bootstrap/ssr.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ViewCacheInterface } from "../contracts/ViewCacheInterface";
1
+ import type { ViewCacheInterface } from "../contracts/ViewCacheInterface.js";
2
2
  /**
3
3
  * ViewCache — stores rendered view DOM for instant restore on navigation.
4
4
  *
@@ -1 +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"}
1
+ {"version":3,"file":"ViewCache.d.ts","sourceRoot":"","sources":["../../../../src/core/cache/ViewCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E;;;;;;;;;;;;;;;;;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"}
@@ -1,2 +1,2 @@
1
- export { ViewCache } from './ViewCache';
1
+ export { ViewCache } from './ViewCache.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,2 +1,2 @@
1
- export { ViewCache } from './ViewCache';
1
+ export { ViewCache } from './ViewCache.js';
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,13 +1,14 @@
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";
1
+ import { RouterInterface, ViewManagerInterface } from "./utils.js";
2
+ import type { HelperInterface } from "./HelperInterface.js";
3
+ import type { EventServiceInterface } from "./EventServiceInterface.js";
4
+ import type { HttpServiceInterface } from "./HttpServiceInterface.js";
5
+ import type { StoreServiceInterface } from "./StoreServiceInterface.js";
6
+ import type { StorageServiceInterface } from "./StorageServiceInterface.js";
7
+ import type { LoggerServiceInterface } from "./LoggerServiceInterface.js";
8
+ import type { HeadServiceInterface } from "./HeadServiceInterface.js";
9
+ import { APIClientInterface } from "./ApiInterface.js";
10
+ import type { ServiceProviderInterface } from "./ServiceProviderInterface.js";
11
+ import { SaoObjectType } from "../types/utils.js";
11
12
  export interface ApplicationInterface {
12
13
  [key: string]: any;
13
14
  transient<T>(key: ServiceKey, value: any): this;
@@ -26,7 +27,9 @@ export interface ApplicationInterface {
26
27
  set<T = any>(name: string, method: T, isOne?: boolean): void;
27
28
  setMethod(name: string, method: Function, isOne?: boolean): void;
28
29
  get<T = any>(name: string): T;
29
- oneType?: OneObjectType;
30
+ /** Dữ liệu package PHP chia sẻ (`APP_CONFIGS.shared`); không có khoá thì trả `fallback`. */
31
+ shared<T = any>(key?: string, fallback?: T): T;
32
+ saoType?: SaoObjectType;
30
33
  isInitialized: boolean;
31
34
  isStarted: boolean;
32
35
  View: ViewManagerInterface;
@@ -38,6 +41,7 @@ export interface ApplicationInterface {
38
41
  Store: StoreServiceInterface;
39
42
  Storage: StorageServiceInterface;
40
43
  Logger: LoggerServiceInterface;
44
+ Head: HeadServiceInterface;
41
45
  }
42
46
  /** Type cho helper function app() — callable + có methods */
43
47
  export interface AppFactory {
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/ApplicationInterface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/ApplicationInterface.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
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";
1
+ import type { SaoObjectType } from "../types/utils.js";
2
+ import type { ViewControllerInterface } from "./ViewControllerInterface.js";
3
+ import type { HtmlInterface, FragmentInterface, SaoChildrenFactoryOutput, SaoNodeInterface } from "./ElementInterface.js";
4
+ import { InitMode } from "./common.js";
5
5
  export type BlockConstructorParams = {
6
6
  ctx: ViewControllerInterface;
7
7
  name: string;
@@ -11,7 +11,7 @@ export type BlockConstructorParams = {
11
11
  initMode?: InitMode;
12
12
  };
13
13
  export interface BlockInterface {
14
- oneType: OneObjectType;
14
+ saoType: SaoObjectType;
15
15
  /** Unique block slot name (e.g. 'content', 'sidebar') */
16
16
  name: string;
17
17
  id: string;
@@ -22,7 +22,7 @@ export interface BlockInterface {
22
22
  fragment: FragmentInterface | null;
23
23
  parentElement: HtmlInterface | null;
24
24
  domChildren: Node[];
25
- isOneElement: boolean;
25
+ isSaoElement: boolean;
26
26
  isOneBlock: boolean;
27
27
  initMode?: InitMode;
28
28
  /** Initialize the block (e.g. during hydration) */
@@ -41,8 +41,8 @@ export interface BlockInterface {
41
41
  setParentElement(parentElement: HtmlInterface | null): void;
42
42
  contentRenderFactory: BlockRenderFactory | null;
43
43
  }
44
- export interface BlockOutletInterface extends OneNodeInterface {
45
- oneType: OneObjectType;
44
+ export interface BlockOutletInterface extends SaoNodeInterface {
45
+ saoType: SaoObjectType;
46
46
  id: string;
47
47
  name: string;
48
48
  parent: HtmlInterface | null;
@@ -51,7 +51,7 @@ export interface BlockOutletInterface extends OneNodeInterface {
51
51
  parentElement: HtmlInterface | null;
52
52
  ctx: ViewControllerInterface;
53
53
  initMode: InitMode;
54
- isOneElement: boolean;
54
+ isSaoElement: boolean;
55
55
  isOneBlockOutlet: boolean;
56
56
  /** Render the outlet's markers into the parent element */
57
57
  render(): any;
@@ -63,5 +63,5 @@ export interface BlockOutletInterface extends OneNodeInterface {
63
63
  }
64
64
  export interface BlockManagerInterface {
65
65
  }
66
- export type BlockRenderFactory = (parentElement: HtmlInterface) => OneChildrenFactoryOutput;
66
+ export type BlockRenderFactory = (parentElement: HtmlInterface) => SaoChildrenFactoryOutput;
67
67
  //# sourceMappingURL=BlockInterface.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"BlockInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/BlockInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC1H,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,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;IACpB,mDAAmD;IACnD,IAAI,IAAI,IAAI,CAAC;IACb,yDAAyD;IACzD,MAAM,IAAI,IAAI,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,QAAQ,EAAE,uBAAuB,EAAE,aAAa,EAAE,aAAa,GAAG,GAAG,CAAC;IAC5E,+CAA+C;IAC/C,OAAO,IAAI,IAAI,CAAC;IAChB,+CAA+C;IAC/C,OAAO,IAAI,IAAI,CAAC;IAChB,wDAAwD;IACxD,MAAM,IAAI,IAAI,CAAC;IACf,yDAAyD;IACzD,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;IAC1B,0DAA0D;IAC1D,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,38 @@
1
+ import type { ApplicationInterface } from "./ApplicationInterface.js";
2
+ import type { ServiceProviderInterface } from "./ServiceProviderInterface.js";
3
+ /** Factory view mà registry nhận: đồng bộ, hoặc lazy trả Promise<module>. */
4
+ export type ViewFactory = ((...args: any[]) => any) | (() => Promise<any>);
5
+ /**
6
+ * Manifest của một bundle nạp rời (theme, gói mở rộng).
7
+ *
8
+ * Cùng MỘT hình dạng cho mọi loại bundle: file chỉ có view thì điền `views`,
9
+ * file chỉ có code thì điền `providers`/`services`. Hai shape khác nhau = hai
10
+ * nhánh loader = hai chỗ để lệch.
11
+ */
12
+ export interface SaolaBundle {
13
+ /** Định danh, dùng để báo lỗi và bắt trùng tên. */
14
+ name?: string;
15
+ /** Provider của bundle — class hoặc instance, đưa thẳng vào resolveProviderOrder. */
16
+ providers?: any[];
17
+ /** { Tên: Class | instance | object } → App.set(tên, …). */
18
+ services?: Record<string, any>;
19
+ /** { tên: fn } → gộp vào App.Helper. */
20
+ helpers?: Record<string, any>;
21
+ /** { 'dot.path': factory } → View.setViewRegistry(). Nạp sau ĐÈ nạp trước. */
22
+ views?: Record<string, ViewFactory>;
23
+ /** Chạy sau khi mọi bundle đã merge và App đã init. */
24
+ boot?(app: ApplicationInterface): void;
25
+ }
26
+ /** Kết quả gộp nhiều bundle, theo đúng thứ tự mảng URL. */
27
+ export interface MergedBundles {
28
+ providers: (ServiceProviderInterface | any)[];
29
+ services: Record<string, any>;
30
+ helpers: Record<string, any>;
31
+ views: Record<string, ViewFactory>;
32
+ boots: Array<(app: ApplicationInterface) => void>;
33
+ /** Tên (hoặc URL) của bundle đã nạp được. */
34
+ loaded: string[];
35
+ /** [url, thông điệp lỗi] — nạp hỏng thì bỏ qua, KHÔNG làm sập boot. */
36
+ failed: Array<[string, string]>;
37
+ }
38
+ //# sourceMappingURL=BundleInterface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BundleInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/BundleInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IACxB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAClB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,uDAAuD;IACvD,IAAI,CAAC,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC1C;AAED,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,CAAC,wBAAwB,GAAG,GAAG,CAAC,EAAE,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC,CAAC;IAClD,6CAA6C;IAC7C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uEAAuE;IACvE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BundleInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BundleInterface.js","sourceRoot":"","sources":["../../../../src/core/contracts/BundleInterface.ts"],"names":[],"mappings":""}