@saolabs/client 1.0.0 → 1.0.2

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 (378) 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 +17 -15
  9. package/dist/src/core/app/Application.d.ts.map +1 -1
  10. package/dist/src/core/app/Application.js +41 -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 +74 -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 +125 -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 +13 -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/hellpers/utils.d.ts +2 -2
  178. package/dist/src/core/hellpers/utils.js +4 -4
  179. package/dist/src/core/helpers/ApiClient.d.ts +58 -0
  180. package/dist/src/core/helpers/ApiClient.d.ts.map +1 -0
  181. package/dist/src/core/helpers/ApiClient.js +131 -0
  182. package/dist/src/core/helpers/ApiClient.js.map +1 -0
  183. package/dist/src/core/helpers/app.d.ts +3 -0
  184. package/dist/src/core/helpers/app.d.ts.map +1 -0
  185. package/dist/src/core/helpers/app.js +63 -0
  186. package/dist/src/core/helpers/app.js.map +1 -0
  187. package/dist/src/core/helpers/transition.d.ts +34 -0
  188. package/dist/src/core/helpers/transition.d.ts.map +1 -0
  189. package/dist/src/core/helpers/transition.js +118 -0
  190. package/dist/src/core/helpers/transition.js.map +1 -0
  191. package/dist/src/core/helpers/utils.d.ts +26 -0
  192. package/dist/src/core/helpers/utils.d.ts.map +1 -0
  193. package/dist/src/core/helpers/utils.js +96 -0
  194. package/dist/src/core/helpers/utils.js.map +1 -0
  195. package/dist/src/core/helpers/view.d.ts +39 -0
  196. package/dist/src/core/helpers/view.d.ts.map +1 -0
  197. package/dist/src/core/helpers/view.js +286 -0
  198. package/dist/src/core/helpers/view.js.map +1 -0
  199. package/dist/src/core/routers/Router.d.ts +108 -7
  200. package/dist/src/core/routers/Router.d.ts.map +1 -1
  201. package/dist/src/core/routers/Router.js +444 -68
  202. package/dist/src/core/routers/Router.js.map +1 -1
  203. package/dist/src/core/routers/index.d.ts +2 -2
  204. package/dist/src/core/routers/index.d.ts.map +1 -1
  205. package/dist/src/core/routers/index.js +1 -1
  206. package/dist/src/core/routers/index.js.map +1 -1
  207. package/dist/src/core/services/AssetManager.d.ts +112 -0
  208. package/dist/src/core/services/AssetManager.d.ts.map +1 -0
  209. package/dist/src/core/services/AssetManager.js +361 -0
  210. package/dist/src/core/services/AssetManager.js.map +1 -0
  211. package/dist/src/core/services/BlockManager.d.ts +73 -2
  212. package/dist/src/core/services/BlockManager.d.ts.map +1 -1
  213. package/dist/src/core/services/BlockManager.js +270 -48
  214. package/dist/src/core/services/BlockManager.js.map +1 -1
  215. package/dist/src/core/services/DomService.js +3 -3
  216. package/dist/src/core/services/DomService.js.map +1 -1
  217. package/dist/src/core/services/HeadService.d.ts +24 -0
  218. package/dist/src/core/services/HeadService.d.ts.map +1 -0
  219. package/dist/src/core/services/HeadService.js +120 -0
  220. package/dist/src/core/services/HeadService.js.map +1 -0
  221. package/dist/src/core/services/HelperService.d.ts +14 -3
  222. package/dist/src/core/services/HelperService.d.ts.map +1 -1
  223. package/dist/src/core/services/HelperService.js +32 -2
  224. package/dist/src/core/services/HelperService.js.map +1 -1
  225. package/dist/src/core/services/HttpService.d.ts +8 -0
  226. package/dist/src/core/services/HttpService.d.ts.map +1 -1
  227. package/dist/src/core/services/HttpService.js +121 -47
  228. package/dist/src/core/services/HttpService.js.map +1 -1
  229. package/dist/src/core/services/MarkerRegistry.d.ts +51 -8
  230. package/dist/src/core/services/MarkerRegistry.d.ts.map +1 -1
  231. package/dist/src/core/services/MarkerRegistry.js +135 -14
  232. package/dist/src/core/services/MarkerRegistry.js.map +1 -1
  233. package/dist/src/core/services/PageCache.d.ts +101 -0
  234. package/dist/src/core/services/PageCache.d.ts.map +1 -0
  235. package/dist/src/core/services/PageCache.js +184 -0
  236. package/dist/src/core/services/PageCache.js.map +1 -0
  237. package/dist/src/core/services/SectionManager.d.ts +100 -0
  238. package/dist/src/core/services/SectionManager.d.ts.map +1 -0
  239. package/dist/src/core/services/SectionManager.js +408 -0
  240. package/dist/src/core/services/SectionManager.js.map +1 -0
  241. package/dist/src/core/services/StorageService.js +1 -1
  242. package/dist/src/core/services/TranslationService.d.ts +21 -0
  243. package/dist/src/core/services/TranslationService.d.ts.map +1 -0
  244. package/dist/src/core/services/TranslationService.js +95 -0
  245. package/dist/src/core/services/TranslationService.js.map +1 -0
  246. package/dist/src/core/services/index.d.ts +11 -8
  247. package/dist/src/core/services/index.d.ts.map +1 -1
  248. package/dist/src/core/services/index.js +11 -8
  249. package/dist/src/core/services/index.js.map +1 -1
  250. package/dist/src/core/types/utils.d.ts +8 -8
  251. package/dist/src/core/types/utils.d.ts.map +1 -1
  252. package/dist/src/core/view/LoopContext.d.ts +21 -1
  253. package/dist/src/core/view/LoopContext.d.ts.map +1 -1
  254. package/dist/src/core/view/LoopContext.js +36 -0
  255. package/dist/src/core/view/LoopContext.js.map +1 -1
  256. package/dist/src/core/view/ResourceScope.d.ts +38 -0
  257. package/dist/src/core/view/ResourceScope.d.ts.map +1 -0
  258. package/dist/src/core/view/ResourceScope.js +167 -0
  259. package/dist/src/core/view/ResourceScope.js.map +1 -0
  260. package/dist/src/core/view/Section.d.ts +17 -32
  261. package/dist/src/core/view/Section.d.ts.map +1 -1
  262. package/dist/src/core/view/Section.js +14 -55
  263. package/dist/src/core/view/Section.js.map +1 -1
  264. package/dist/src/core/view/View.d.ts +43 -7
  265. package/dist/src/core/view/View.d.ts.map +1 -1
  266. package/dist/src/core/view/View.js +22 -4
  267. package/dist/src/core/view/View.js.map +1 -1
  268. package/dist/src/core/view/ViewController.d.ts +313 -40
  269. package/dist/src/core/view/ViewController.d.ts.map +1 -1
  270. package/dist/src/core/view/ViewController.js +1002 -147
  271. package/dist/src/core/view/ViewController.js.map +1 -1
  272. package/dist/src/core/view/ViewManager.d.ts +318 -27
  273. package/dist/src/core/view/ViewManager.d.ts.map +1 -1
  274. package/dist/src/core/view/ViewManager.js +1199 -258
  275. package/dist/src/core/view/ViewManager.js.map +1 -1
  276. package/dist/src/core/view/ViewState.d.ts +185 -6
  277. package/dist/src/core/view/ViewState.d.ts.map +1 -1
  278. package/dist/src/core/view/ViewState.js +851 -123
  279. package/dist/src/core/view/ViewState.js.map +1 -1
  280. package/dist/src/core/view/index.d.ts +5 -5
  281. package/dist/src/core/view/index.d.ts.map +1 -1
  282. package/dist/src/core/view/index.js +5 -5
  283. package/dist/src/core/view/index.js.map +1 -1
  284. package/dist/src/testing/index.d.ts +69 -0
  285. package/dist/src/testing/index.d.ts.map +1 -0
  286. package/dist/src/testing/index.js +140 -0
  287. package/dist/src/testing/index.js.map +1 -0
  288. package/index.ts +29 -5
  289. package/package.json +30 -21
  290. package/plugins.ts +2 -2
  291. package/src/core/app/Application.ts +58 -31
  292. package/src/core/bootstrap/app.ts +80 -6
  293. package/src/core/bootstrap/bundle.ts +101 -0
  294. package/src/core/bootstrap/providers/ApiServiceProvider.ts +4 -4
  295. package/src/core/bootstrap/providers/CoreServiceProvider.ts +14 -8
  296. package/src/core/bootstrap/providers/HelperServiceProvider.ts +8 -3
  297. package/src/core/bootstrap/providers/RouteServiceProvider.ts +15 -4
  298. package/src/core/bootstrap/providers/ServiceProvider.ts +8 -8
  299. package/src/core/bootstrap/providers/ViewServiceProvider.ts +3 -3
  300. package/src/core/bootstrap/providers/default-providers.ts +51 -16
  301. package/src/core/bootstrap/providers/index.ts +9 -9
  302. package/src/core/bootstrap/providers/provider-order.test.ts +16 -27
  303. package/src/core/bootstrap/providers/provider-order.ts +1 -1
  304. package/src/core/bootstrap/ssr.ts +136 -0
  305. package/src/core/cache/ViewCache.ts +1 -1
  306. package/src/core/cache/index.ts +1 -1
  307. package/src/core/contracts/ApplicationInterface.ts +13 -11
  308. package/src/core/contracts/BlockInterface.ts +18 -18
  309. package/src/core/contracts/BundleInterface.ts +40 -0
  310. package/src/core/contracts/ComponentInterface.ts +7 -6
  311. package/src/core/contracts/ElementInterface.ts +95 -27
  312. package/src/core/contracts/HeadServiceInterface.ts +41 -0
  313. package/src/core/contracts/HelperInterface.ts +9 -1
  314. package/src/core/contracts/HttpServiceInterface.ts +3 -0
  315. package/src/core/contracts/MarkerInterface.ts +22 -49
  316. package/src/core/contracts/ReactiveInterface.ts +9 -9
  317. package/src/core/contracts/RouterInterface.ts +5 -2
  318. package/src/core/contracts/SectionInterface.ts +49 -0
  319. package/src/core/contracts/ServiceProviderInterface.ts +3 -3
  320. package/src/core/contracts/ViewControllerInterface.ts +124 -16
  321. package/src/core/contracts/ViewInterface.ts +34 -5
  322. package/src/core/contracts/ViewManagerInterface.ts +40 -5
  323. package/src/core/contracts/ViewStateInterface.ts +39 -2
  324. package/src/core/contracts/common.ts +3 -3
  325. package/src/core/contracts/utils.ts +19 -19
  326. package/src/core/contracts/views.ts +2 -22
  327. package/src/core/devtools/hook.ts +142 -0
  328. package/src/core/devtools/index.ts +38 -0
  329. package/src/core/devtools/inspector.ts +270 -0
  330. package/src/core/elements/Block.ts +43 -21
  331. package/src/core/elements/BlockOutlet.ts +61 -21
  332. package/src/core/elements/Component.ts +352 -18
  333. package/src/core/elements/ElementManager.ts +9 -9
  334. package/src/core/elements/ForeachSlotCache.ts +170 -0
  335. package/src/core/elements/Fragment.ts +50 -32
  336. package/src/core/elements/Html.ts +696 -117
  337. package/src/core/elements/Output.ts +147 -30
  338. package/src/core/elements/Reactive.ts +329 -52
  339. package/src/core/elements/TextElement.ts +25 -16
  340. package/src/core/elements/Wrapper.ts +84 -18
  341. package/src/core/elements/Yield.ts +35 -24
  342. package/src/core/elements/helpers.ts +12 -12
  343. package/src/core/elements/index.ts +25 -24
  344. package/src/core/elements/reconcileChildren.ts +70 -0
  345. package/src/core/{hellpers → helpers}/ApiClient.ts +8 -1
  346. package/src/core/{hellpers → helpers}/app.ts +13 -2
  347. package/src/core/helpers/transition.ts +127 -0
  348. package/src/core/{hellpers → helpers}/utils.ts +4 -4
  349. package/src/core/helpers/view.ts +283 -0
  350. package/src/core/routers/Router.ts +458 -64
  351. package/src/core/routers/index.ts +2 -2
  352. package/src/core/services/AssetManager.ts +387 -0
  353. package/src/core/services/BlockManager.ts +272 -50
  354. package/src/core/services/DomService.ts +3 -3
  355. package/src/core/services/HeadService.ts +124 -0
  356. package/src/core/services/HelperService.ts +34 -4
  357. package/src/core/services/HttpService.ts +116 -55
  358. package/src/core/services/MarkerRegistry.ts +142 -16
  359. package/src/core/services/PageCache.ts +239 -0
  360. package/src/core/services/SectionManager.ts +387 -0
  361. package/src/core/services/StorageService.ts +1 -1
  362. package/src/core/services/TranslationService.ts +91 -0
  363. package/src/core/services/index.ts +11 -8
  364. package/src/core/types/utils.ts +8 -8
  365. package/src/core/view/LoopContext.ts +38 -1
  366. package/src/core/view/ResourceScope.ts +174 -0
  367. package/src/core/view/Section.ts +21 -68
  368. package/src/core/view/View.ts +57 -8
  369. package/src/core/view/ViewController.ts +1070 -186
  370. package/src/core/view/ViewManager.ts +1346 -272
  371. package/src/core/view/ViewState.ts +834 -116
  372. package/src/core/view/index.ts +5 -5
  373. package/src/testing/index.ts +184 -0
  374. package/dist/src/core/services/MarkerService.d.ts +0 -299
  375. package/dist/src/core/services/MarkerService.d.ts.map +0 -1
  376. package/dist/src/core/services/MarkerService.js +0 -723
  377. package/dist/src/core/services/MarkerService.js.map +0 -1
  378. package/src/core/services/MarkerService.ts +0 -923
@@ -1,5 +1,5 @@
1
- export { View } from './View';
2
- export { ViewController } from './ViewController';
3
- export { ViewState, StateManager } from './ViewState';
4
- export { LoopContext } from './LoopContext';
5
- export { ViewManager } from './ViewManager';
1
+ export { View } from './View.js';
2
+ export { ViewController } from './ViewController.js';
3
+ export { ViewState, StateManager } from './ViewState.js';
4
+ export { LoopContext } from './LoopContext.js';
5
+ export { ViewManager } from './ViewManager.js';
@@ -0,0 +1,184 @@
1
+ /**
2
+ * `@saolabs/client/testing` — tiện ích test view trong jsdom/happy-dom.
3
+ *
4
+ * Hai mức dùng:
5
+ * - `mount(factory, data)` — mount một view ĐÃ COMPILE (factory compiler sinh).
6
+ * Đây là API dành cho người dùng framework test component `.sao` của mình.
7
+ * - `mountView(renderFn, options)` — mount từ một render function viết tay,
8
+ * không cần compile. Dùng để test riêng lẻ element/lifecycle.
9
+ *
10
+ * Không phụ thuộc test runner nào (không import vitest/jest) — chạy được với
11
+ * bất kỳ runner nào miễn là môi trường có DOM.
12
+ */
13
+ import { View } from '../core/view/View.js';
14
+ import { ViewController } from '../core/view/ViewController.js';
15
+ import { ViewManager } from '../core/view/ViewManager.js';
16
+ import { Html } from '../core/elements/Html.js';
17
+ import { app } from '../core/helpers/app.js';
18
+ import MarkerRegistry from '../core/services/MarkerRegistry.js';
19
+ import { HelperService } from '../core/services/HelperService.js';
20
+
21
+ // ── RAF polyfill (một số môi trường DOM giả lập không có) ─────
22
+ if (typeof globalThis.requestAnimationFrame !== 'function') {
23
+ (globalThis as any).requestAnimationFrame = (cb: FrameRequestCallback) =>
24
+ setTimeout(() => cb(Date.now()), 0) as unknown as number;
25
+ (globalThis as any).cancelAnimationFrame = (id: number) => clearTimeout(id);
26
+ }
27
+
28
+ /**
29
+ * Chờ qua batch RAF flush (state → DOM).
30
+ * State update được gom theo requestAnimationFrame nên sau khi set state phải
31
+ * `await nextFrame()` rồi mới assert DOM.
32
+ */
33
+ export function nextFrame(): Promise<void> {
34
+ return new Promise((resolve) => {
35
+ requestAnimationFrame(() => {
36
+ requestAnimationFrame(() => resolve());
37
+ });
38
+ });
39
+ }
40
+
41
+ export interface Harness {
42
+ view: View;
43
+ ctrl: ViewController;
44
+ /** Container thật trong document.body */
45
+ container: HTMLElement;
46
+ /** Html wrapper của container (rootElement) */
47
+ rootHtml: Html;
48
+ wrapper: any;
49
+ /** Đặt state qua StateManager (như user thao tác) */
50
+ setState: (key: string, value: any) => void;
51
+ getState: (key: string) => any;
52
+ /** textContent của container, đã trim (bỏ qua comment marker) */
53
+ text: () => string;
54
+ destroy: () => void;
55
+ }
56
+
57
+ export interface MountOptions {
58
+ /** states khởi tạo: { count: 0 } → useState(0, 'count') */
59
+ states?: Record<string, any>;
60
+ /** methods gắn lên view (như `<script setup>`) */
61
+ methods?: Record<string, (...args: any[]) => any>;
62
+ /** path của view — dùng cho AssetManager ref-count */
63
+ path?: string;
64
+ /** styles/scripts của component — cho AssetManager */
65
+ styles?: any[];
66
+ scripts?: any[];
67
+ }
68
+
69
+ /**
70
+ * Bootstrap các service bắt buộc để mount một view ĐÃ COMPILE:
71
+ * - Registry: MarkerRegistry (hydration/foreach id bookkeeping)
72
+ * - Helper: App.Helper.xxx() — compiler prefix mọi PHP-helper call vào đây
73
+ * - View: App.View.generateViewId() — compiled constructor luôn gọi hàm này
74
+ * dù không navigate qua Router; thiếu nó `mount()` ném ngay ở dòng đầu view.
75
+ */
76
+ function ensureRegistry(): void {
77
+ if (!app.has('Registry')) app.instance('Registry', MarkerRegistry);
78
+ if (!app.has('Helper')) app.instance('Helper', new HelperService(app() as any));
79
+ if (!app.has('View')) app.instance('View', new ViewManager(app() as any));
80
+ }
81
+
82
+ function createContainer(): HTMLElement {
83
+ const container = document.createElement('div');
84
+ container.setAttribute('data-test-root', '');
85
+ document.body.appendChild(container);
86
+ return container;
87
+ }
88
+
89
+ function buildHarness(view: View, container: HTMLElement): Harness {
90
+ const ctrl = view.__ctrl__ as ViewController;
91
+ const manager: any = ctrl.states.__;
92
+
93
+ const rootHtml = new Html({
94
+ ctx: ctrl,
95
+ tagName: 'div',
96
+ element: container,
97
+ initMode: 'hydrate',
98
+ childrenFactory: () => [],
99
+ });
100
+
101
+ // Luồng chuẩn như ViewManager case standalone: render → mount → commitData → start
102
+ const wrapper = ctrl.render();
103
+ if (wrapper && typeof (wrapper as any).mountTo === 'function') {
104
+ ctrl.mount(rootHtml);
105
+ ctrl.commitData();
106
+ ctrl.start();
107
+ }
108
+
109
+ return {
110
+ view,
111
+ ctrl,
112
+ container,
113
+ rootHtml,
114
+ wrapper,
115
+ setState: (key, value) => manager.updateStateByKey(key, value),
116
+ getState: (key) => manager.getState?.(key) ?? manager.states?.[key]?.value,
117
+ text: () => (container.textContent ?? '').trim(),
118
+ destroy: () => {
119
+ try { ctrl.destroy(); } catch { /* view có thể đã destroy */ }
120
+ container.remove();
121
+ },
122
+ };
123
+ }
124
+
125
+ /**
126
+ * Mount một view ĐÃ COMPILE.
127
+ *
128
+ * @example
129
+ * import { mount, nextFrame } from '@saolabs/client/testing';
130
+ * import Counter from './views/counter.js';
131
+ *
132
+ * const c = mount(Counter, { start: 5 });
133
+ * c.container.querySelector('button')!.click();
134
+ * await nextFrame();
135
+ * expect(c.text()).toContain('6');
136
+ * c.destroy();
137
+ */
138
+ export function mount(
139
+ factory: (data?: any, systemData?: any) => View,
140
+ data: Record<string, any> = {},
141
+ ): Harness {
142
+ ensureRegistry();
143
+ const container = createContainer();
144
+ const view = factory(data, { App: app(), View: (app() as any).View });
145
+ return buildHarness(view, container);
146
+ }
147
+
148
+ /**
149
+ * Mount từ render function viết tay — không cần compile.
150
+ * `renderFn` chạy với `this` = ViewController, giống `config.render` compiler sinh.
151
+ */
152
+ export function mountView(
153
+ renderFn: (this: ViewController) => any,
154
+ options: MountOptions = {},
155
+ ): Harness {
156
+ ensureRegistry();
157
+
158
+ const view = new View(options.path ?? 'test.view', 'view');
159
+ const ctrl = view.__ctrl__ as ViewController;
160
+
161
+ // Khai báo states trước (compiled output làm trong constructor)
162
+ const manager: any = ctrl.states.__;
163
+ for (const [key, value] of Object.entries(options.states ?? {})) {
164
+ manager.useState(value, key);
165
+ }
166
+
167
+ if (options.methods) ctrl.setUserDefinedConfig(options.methods);
168
+
169
+ ctrl.setup({
170
+ superView: null,
171
+ data: {},
172
+ path: options.path,
173
+ styles: options.styles,
174
+ scripts: options.scripts,
175
+ render: renderFn,
176
+ } as any);
177
+
178
+ return buildHarness(view, createContainer());
179
+ }
180
+
181
+ /** textContent của element, đã trim. */
182
+ export function visibleText(el: HTMLElement): string {
183
+ return (el.textContent ?? '').trim();
184
+ }
@@ -1,299 +0,0 @@
1
- import { MarkerFilter, MarkerRecord, RegistryIDOrAttributes } from "../contracts/MarkerInterface";
2
- /**
3
- * OneMarker Model - Represents a custom marker element
4
- * Supports both:
5
- * - Generic markup: <tag>...</tag> or <!--tag-->...<!--/tag-->
6
- * - Registry tags: <!--o:r:id-->...<!--/o:r:id-->
7
- */
8
- export declare class MarkerModel {
9
- private __openTag;
10
- private __closeTag;
11
- private __attributes;
12
- private __nodes;
13
- private __definedAttributes;
14
- private __tagName;
15
- private __fullName;
16
- private __registryID?;
17
- private __systemPrefix?;
18
- private __tag?;
19
- private __id?;
20
- private __key?;
21
- constructor(data: MarkerRecord);
22
- /**
23
- * Update model data
24
- */
25
- __update(data: Record<string, any>): this;
26
- /**
27
- * Define dynamic property accessors for attributes
28
- * @private
29
- */
30
- private __defineAttributes;
31
- /**
32
- * Define single attribute accessor
33
- * @private
34
- */
35
- private __defineAttribute;
36
- /**
37
- * Get tag name (without namespace)
38
- */
39
- get tagName(): string;
40
- /**
41
- * Get full name (with namespace)
42
- */
43
- get fullName(): string;
44
- get registryID(): string | undefined | null;
45
- /**
46
- * Get open tag node
47
- */
48
- get openTag(): Comment;
49
- /**
50
- * Get close tag node
51
- */
52
- get closeTag(): Comment;
53
- /**
54
- * Get all attributes
55
- */
56
- get attributes(): Record<string, any>;
57
- /**
58
- * Get nodes between open and close tags
59
- */
60
- get nodes(): Array<Node>;
61
- /**
62
- * Get system prefix (registry tags only)
63
- */
64
- get systemPrefix(): string | undefined;
65
- /**
66
- * Get tag (registry tags only)
67
- */
68
- get tag(): string | undefined;
69
- /**
70
- * Get ID (registry tags only)
71
- */
72
- get id(): string | undefined;
73
- /**
74
- * Get full key (registry tags only)
75
- */
76
- get key(): string | undefined;
77
- /**
78
- * Get full data (registry tags only)
79
- */
80
- get data(): Record<string, any> | undefined;
81
- /**
82
- * Get outer HTML including open/close tags and content
83
- */
84
- get outerHTML(): string;
85
- /**
86
- * Get inner HTML (content only, without open/close tags)
87
- */
88
- get innerHTML(): string;
89
- /**
90
- * Get HTML representation of a node
91
- * @private
92
- */
93
- private __getNodeHTML;
94
- /**
95
- * Get attribute value
96
- */
97
- getAttribute(name: string): string | undefined;
98
- /**
99
- * Set attribute value
100
- */
101
- setAttribute(name: string, value: string): this;
102
- /**
103
- * Check if model matches query attributes
104
- * @private
105
- */
106
- __match(attributes: Record<string, any>): boolean;
107
- /**
108
- * Check if model matches given attributes (for registry tag filtering)
109
- */
110
- matchesAttributes(attributes: Record<string, any>): boolean;
111
- /**
112
- * Set attributes from registry
113
- */
114
- setAttributes(attributes: Record<string, any>): this;
115
- /**
116
- * Scan and update nodes between open/close tags
117
- */
118
- __scan(): Array<Node>;
119
- /**
120
- * Sync with DOM (re-query and update)
121
- */
122
- __sync(): boolean;
123
- /**
124
- * Update nodes array
125
- */
126
- updateNodes(nodes: Array<Node>): this;
127
- /**
128
- * Replace content between open and close tags
129
- */
130
- replaceContent(content: string | Node | Array<Node>): this;
131
- /**
132
- * Remove element and its content from DOM
133
- */
134
- remove(): void;
135
- }
136
- /**
137
- * OneMarkerCollection - Collection of OneMarkerModel instances
138
- * Provides array-like operations with type safety
139
- */
140
- export declare class MarkerCollection {
141
- private __models;
142
- constructor(elements?: Array<MarkerModel | MarkerRecord>);
143
- get models(): MarkerModel[];
144
- get length(): number;
145
- /**
146
- * Get the first model in the collection
147
- */
148
- get first(): MarkerModel | undefined;
149
- /**
150
- * Get the last model in the collection
151
- */
152
- get last(): MarkerModel | undefined;
153
- /**
154
- * Get the model at the given index
155
- */
156
- get(index: number): MarkerModel | undefined;
157
- /**
158
- * Set the model at the given index
159
- */
160
- set(index: number, model: MarkerModel): this;
161
- push(model: MarkerModel | MarkerRecord): this;
162
- pop(): MarkerModel | undefined;
163
- shift(): MarkerModel | undefined;
164
- unshift(model: MarkerModel | MarkerRecord): this;
165
- splice(start: number, deleteCount: number, ...items: MarkerModel[]): MarkerModel[];
166
- slice(start?: number, end?: number): MarkerModel[];
167
- concat(models: MarkerCollection | MarkerModel[]): MarkerCollection;
168
- reverse(): MarkerCollection;
169
- map<T>(callback: (model: MarkerModel, index: number, array: MarkerModel[]) => T): T[];
170
- filter(callback: (model: MarkerModel, index: number, array: MarkerModel[]) => boolean): MarkerModel[];
171
- reduce<T>(callback: (accumulator: T, model: MarkerModel, index: number, array: MarkerModel[]) => T, initialValue: T): T;
172
- forEach(callback: (model: MarkerModel, index: number, array: MarkerModel[]) => void): void;
173
- some(callback: (model: MarkerModel, index: number, array: MarkerModel[]) => boolean): boolean;
174
- every(callback: (model: MarkerModel, index: number, array: MarkerModel[]) => boolean): boolean;
175
- /**
176
- * Query the collection by attributes
177
- */
178
- query(attributes?: Record<string, any>): MarkerModel[];
179
- /**
180
- * Find first model matching attributes
181
- */
182
- find(attributes?: Record<string, any>): MarkerModel | null;
183
- }
184
- /**
185
- * Marker Service - Manages custom markup elements
186
- * Supports both HydrationMarker (comments)
187
- */
188
- export declare class MarkerService {
189
- static class: string;
190
- private prefix;
191
- private delimiter;
192
- private closeTagSuffix;
193
- private rootElement;
194
- private markerRegistry;
195
- private walker;
196
- constructor(rootElement?: Element);
197
- refreshWalker(): this;
198
- addRegistry(tag: string, id?: string, attributes?: Record<string, any>): string;
199
- resolveTagName(tagShortcut: string): string;
200
- getShortcut(tagName: string): string;
201
- /**
202
- * Check if registryIDOrAttributes is a registryID (string) or attributes (object)
203
- */
204
- private parseRegistryIDOrAttributes;
205
- /**
206
- * Get attributes from MarkerRegistry if registryID provided
207
- */
208
- private getAttributesFromRegistry;
209
- /**
210
- * Check if attributes match filter
211
- */
212
- private attributesMatch;
213
- createMarker(tag: string, id?: string, attributes?: Record<string, any>): MarkerModel;
214
- createOpenMarker(tag: string, id?: string): Comment;
215
- createCloseMarker(tag: string, id?: string): Comment;
216
- /**
217
- * Query hydration markers in HTML comments
218
- * Works with format: <!--prefix:shortcutTag:registryID-->
219
- *
220
- * @param tagOrShortcut - Tag name or shortcut (r, v, c, etc.)
221
- * @param where - Registry ID (string) or attributes filter (object)
222
- * @returns Array of matched markers
223
- *
224
- * @example
225
- * query("r", "1234") // Find o:r:1234
226
- * query("reactive", "1234") // Find o:r:1234 (resolved from shortcut)
227
- * query("r", { userId: "123" }) // Find o:r:* with userId="123"
228
- */
229
- query(tagOrShortcut: string, where?: MarkerFilter, useCache?: boolean): MarkerRecord[];
230
- /**
231
- * Find multiple hydration markers by tag and optional ID/attributes
232
- * Flexible API supporting multiple query styles
233
- *
234
- * @param tagOrShortcut - Tag name or shortcut (r, v, c, etc.)
235
- * @param registryIDOrAttributes - Optional registry ID (string) or attributes filter (object)
236
- * @returns Array of all matched markers
237
- *
238
- * @example
239
- * find("r") // All o:r:*
240
- * find("reactive") // All o:r:* (resolved from shortcut)
241
- * find("r", "1234") // All o:r:1234 (usually one)
242
- * find("r", { userId: "123" }) // All o:r:* with userId="123"
243
- */
244
- find(tagOrShortcut: string, where?: RegistryIDOrAttributes, useCache?: boolean): MarkerCollection;
245
- getResults(tagOrShortcut: string, where?: RegistryIDOrAttributes, index?: number, length?: number, useCache?: boolean): MarkerRecord[];
246
- /**
247
- * Get hydration markers with index and length support
248
- *
249
- * @param tagOrShortcut - Tag name or shortcut
250
- * @param where - Registry ID or attributes filter
251
- * @param index - Start position (default 0): >= 0 positive, < 0 negative from end
252
- * @param length - Number to return (default 0 = all): > 0 returns exactly that many
253
- * @returns Array of matched markers
254
- *
255
- * @example
256
- * get("r", "1234") // All o:r:1234
257
- * get("r", "1234", 1) // From index 1
258
- * get("r", "1234", 0, 2) // First 2 items
259
- * get("r", {}, -1) // Last item
260
- */
261
- get(tagOrShortcut: string, where?: RegistryIDOrAttributes, index?: number, length?: number, useCache?: boolean): MarkerCollection;
262
- /**
263
- * Get first matching hydration marker
264
- *
265
- * @param tagOrShortcut - Tag name or shortcut
266
- * @param where - Registry ID or attributes filter
267
- * @returns First matched marker or null
268
- */
269
- first(tagOrShortcut: string, where?: RegistryIDOrAttributes, useCache?: boolean): MarkerModel | null;
270
- /**
271
- * Get last matching hydration marker
272
- *
273
- * @param tagOrShortcut - Tag name or shortcut
274
- * @param where - Registry ID or attributes filter
275
- * @returns Last matched marker or null
276
- */
277
- last(tagOrShortcut: string, where?: RegistryIDOrAttributes, useCache?: boolean): MarkerModel | null;
278
- /**
279
- * Get exactly one matching hydration marker
280
- * Throws error if not found or multiple matches found
281
- *
282
- * @param tagOrShortcut - Tag name or shortcut
283
- * @param where - Registry ID or attributes filter
284
- * @param index - Start position (default 0)
285
- * @returns Exactly one matched marker
286
- * @throws Error if no match or multiple matches
287
- */
288
- once(tagOrShortcut: string, where?: RegistryIDOrAttributes, index?: number, useCache?: boolean): MarkerModel | null;
289
- /**
290
- * Create MarkerCollection from query results
291
- */
292
- collect(models: MarkerRecord[]): MarkerCollection;
293
- /**
294
- * Convert raw tag to MarkerModel
295
- */
296
- toModel(tag: MarkerRecord): MarkerModel;
297
- }
298
- export declare const OneMarker: MarkerService;
299
- //# sourceMappingURL=MarkerService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarkerService.d.ts","sourceRoot":"","sources":["../../../../src/core/services/MarkerService.ts"],"names":[],"mappings":"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"}