sibujs 1.0.2 → 1.0.4

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 (443) hide show
  1. package/LICENSE +21 -21
  2. package/dist/browser.cjs +18 -0
  3. package/dist/browser.d.cts +19 -1
  4. package/dist/browser.d.ts +19 -1
  5. package/dist/browser.js +5 -1
  6. package/dist/build.cjs +37 -8
  7. package/dist/build.js +3 -3
  8. package/dist/cdn.global.js +4 -4
  9. package/dist/{chunk-24WSRM54.js → chunk-32ZISOLJ.js} +35 -7
  10. package/dist/{chunk-ONCYDOK6.js → chunk-4EI4AG32.js} +17 -1
  11. package/dist/{chunk-MJ4LVHGX.js → chunk-7V26P53V.js} +1 -1
  12. package/dist/{chunk-7TQKR4PP.js → chunk-AZ3ISID5.js} +4 -0
  13. package/dist/{chunk-3CRQALYP.js → chunk-DKOHBI74.js} +49 -2
  14. package/dist/{chunk-6JGMNCD6.js → chunk-EWFVA3TJ.js} +1 -1
  15. package/dist/{chunk-HS6OOE3Q.js → chunk-G3BOQPVO.js} +1 -1
  16. package/dist/{chunk-QVKGGB2S.js → chunk-MDVXJWFN.js} +7 -3
  17. package/dist/{chunk-DZZMIMGL.js → chunk-OF7UZIVB.js} +1 -1
  18. package/dist/{chunk-N6IZB6KJ.js → chunk-PBHF5WKN.js} +56 -7
  19. package/dist/{chunk-OHQQWZ7P.js → chunk-QBMDLBU2.js} +10 -4
  20. package/dist/{customElement-BKQfbSZQ.d.cts → customElement-yz8uyk-0.d.cts} +52 -6
  21. package/dist/{customElement-BKQfbSZQ.d.ts → customElement-yz8uyk-0.d.ts} +52 -6
  22. package/dist/data.cjs +10 -4
  23. package/dist/data.d.cts +2 -0
  24. package/dist/data.d.ts +2 -0
  25. package/dist/data.js +1 -1
  26. package/dist/ecosystem.cjs +7 -3
  27. package/dist/ecosystem.d.cts +1 -1
  28. package/dist/ecosystem.d.ts +1 -1
  29. package/dist/ecosystem.js +2 -2
  30. package/dist/extras.cjs +146 -16
  31. package/dist/extras.d.cts +5 -4
  32. package/dist/extras.d.ts +5 -4
  33. package/dist/extras.js +19 -11
  34. package/dist/index.cjs +40 -8
  35. package/dist/index.d.cts +48 -4
  36. package/dist/index.d.ts +48 -4
  37. package/dist/index.js +9 -3
  38. package/dist/patterns.d.cts +8 -2
  39. package/dist/patterns.d.ts +8 -2
  40. package/dist/plugins.cjs +149 -4
  41. package/dist/plugins.d.cts +39 -3
  42. package/dist/plugins.d.ts +39 -3
  43. package/dist/plugins.js +121 -5
  44. package/dist/{ssr-WKUPVSSK.js → ssr-6GIMY5MX.js} +5 -3
  45. package/dist/ssr-BA6sxxUd.d.cts +135 -0
  46. package/dist/ssr-BA6sxxUd.d.ts +135 -0
  47. package/dist/ssr.cjs +12 -3
  48. package/dist/ssr.d.cts +3 -113
  49. package/dist/ssr.d.ts +3 -113
  50. package/dist/ssr.js +7 -5
  51. package/dist/{tagFactory-D9e0QGIE.d.cts → tagFactory-Dl8QCLga.d.cts} +2 -2
  52. package/dist/{tagFactory-D9e0QGIE.d.ts → tagFactory-Dl8QCLga.d.ts} +2 -2
  53. package/dist/ui.cjs +50 -2
  54. package/dist/ui.d.cts +1 -1
  55. package/dist/ui.d.ts +1 -1
  56. package/dist/ui.js +3 -1
  57. package/dist/widgets.cjs +56 -7
  58. package/dist/widgets.d.cts +4 -2
  59. package/dist/widgets.d.ts +4 -2
  60. package/dist/widgets.js +1 -1
  61. package/package.json +139 -139
  62. package/dist/chunk-27QC4FPL.js +0 -67
  63. package/dist/chunk-2ABBWCGC.js +0 -65
  64. package/dist/chunk-2GLUWW3D.js +0 -567
  65. package/dist/chunk-2HYHL6VW.js +0 -269
  66. package/dist/chunk-2MUNQYZ7.js +0 -26
  67. package/dist/chunk-2PFRWZIE.js +0 -65
  68. package/dist/chunk-2PSPKNUI.js +0 -1711
  69. package/dist/chunk-2X5NDXNG.js +0 -877
  70. package/dist/chunk-34TOFKL7.js +0 -1803
  71. package/dist/chunk-353KB3DI.js +0 -271
  72. package/dist/chunk-35CDLDX5.js +0 -1758
  73. package/dist/chunk-36MU4CFV.js +0 -41
  74. package/dist/chunk-37NSPDPQ.js +0 -284
  75. package/dist/chunk-3CSF4TOG.js +0 -282
  76. package/dist/chunk-3FIQOFI6.js +0 -182
  77. package/dist/chunk-3GHNC2BN.js +0 -28
  78. package/dist/chunk-3GZTRYSY.js +0 -33
  79. package/dist/chunk-3HLWWEPU.js +0 -909
  80. package/dist/chunk-3IVI3J54.js +0 -252
  81. package/dist/chunk-3KZ72WNW.js +0 -944
  82. package/dist/chunk-4AU64SQV.js +0 -182
  83. package/dist/chunk-4MOK7HAR.js +0 -84
  84. package/dist/chunk-4QK6FBDH.js +0 -1429
  85. package/dist/chunk-526ENZ77.js +0 -58
  86. package/dist/chunk-566Z7HXB.js +0 -737
  87. package/dist/chunk-5CRBB7XP.js +0 -358
  88. package/dist/chunk-5G67D3IZ.js +0 -168
  89. package/dist/chunk-5KBEED6D.js +0 -361
  90. package/dist/chunk-5LJMSKBB.js +0 -26
  91. package/dist/chunk-5M7LJFWV.js +0 -271
  92. package/dist/chunk-5NCPAWBE.js +0 -99
  93. package/dist/chunk-5O2RKXR3.js +0 -1444
  94. package/dist/chunk-5OCBERWW.js +0 -1094
  95. package/dist/chunk-5XUAA53E.js +0 -99
  96. package/dist/chunk-5ZFVYPDG.js +0 -97
  97. package/dist/chunk-6BCDNGIH.js +0 -1839
  98. package/dist/chunk-6BDUQJ7K.js +0 -949
  99. package/dist/chunk-6BTBDO6A.js +0 -633
  100. package/dist/chunk-6DJQF4Z7.js +0 -33
  101. package/dist/chunk-6EYXAMBN.js +0 -1857
  102. package/dist/chunk-6IWEHW57.js +0 -43
  103. package/dist/chunk-6J6S4NI7.js +0 -398
  104. package/dist/chunk-6NBHAKHS.js +0 -1997
  105. package/dist/chunk-6QRLJNXR.js +0 -1425
  106. package/dist/chunk-6SNF5MZK.js +0 -282
  107. package/dist/chunk-7FYJUE77.js +0 -282
  108. package/dist/chunk-7HM5UE5T.js +0 -270
  109. package/dist/chunk-7JOLTGUH.js +0 -58
  110. package/dist/chunk-7LS3ITZB.js +0 -567
  111. package/dist/chunk-7MCWJCQK.js +0 -909
  112. package/dist/chunk-7RIIFP3E.js +0 -1758
  113. package/dist/chunk-7UASYN3G.js +0 -254
  114. package/dist/chunk-7W2WYHDI.js +0 -741
  115. package/dist/chunk-7XFBKLFB.js +0 -90
  116. package/dist/chunk-7Y35RDSJ.js +0 -872
  117. package/dist/chunk-A65GFJBL.js +0 -65
  118. package/dist/chunk-AD6ZIEDK.js +0 -67
  119. package/dist/chunk-AIPXZK5O.js +0 -295
  120. package/dist/chunk-AK5Y72F3.js +0 -1426
  121. package/dist/chunk-ANRSGGFC.js +0 -725
  122. package/dist/chunk-APOMMWH4.js +0 -282
  123. package/dist/chunk-ARZVTWIQ.js +0 -1750
  124. package/dist/chunk-AWWBM2BI.js +0 -664
  125. package/dist/chunk-AX5VEQTY.js +0 -58
  126. package/dist/chunk-AYTXVOW3.js +0 -1708
  127. package/dist/chunk-B4ASD5VC.js +0 -295
  128. package/dist/chunk-BG3HMX4C.js +0 -271
  129. package/dist/chunk-BG4A246G.js +0 -1746
  130. package/dist/chunk-BNFJJA2L.js +0 -1425
  131. package/dist/chunk-BPKPBVU5.js +0 -59
  132. package/dist/chunk-BPKPPSXC.js +0 -282
  133. package/dist/chunk-BPWKKK7F.js +0 -1711
  134. package/dist/chunk-BS5EYKCJ.js +0 -26
  135. package/dist/chunk-BS6ETCJ7.js +0 -949
  136. package/dist/chunk-BTTBAGD3.js +0 -365
  137. package/dist/chunk-BWBWJYBK.js +0 -271
  138. package/dist/chunk-CCKX6YTC.js +0 -1735
  139. package/dist/chunk-CIF5Z3MP.js +0 -58
  140. package/dist/chunk-CQNVF2FD.js +0 -282
  141. package/dist/chunk-CRTHZHU7.js +0 -26
  142. package/dist/chunk-CSXYU7IO.js +0 -457
  143. package/dist/chunk-D6JD4FDC.js +0 -26
  144. package/dist/chunk-DAUTHAYH.js +0 -20
  145. package/dist/chunk-DB243LB7.js +0 -877
  146. package/dist/chunk-DEQLPROY.js +0 -1094
  147. package/dist/chunk-DGUYCZJH.js +0 -654
  148. package/dist/chunk-DI3Z32TV.js +0 -1780
  149. package/dist/chunk-DKGHW6MX.js +0 -90
  150. package/dist/chunk-DKXVN442.js +0 -90
  151. package/dist/chunk-DLWLJZB3.js +0 -712
  152. package/dist/chunk-DNTTC4V5.js +0 -1803
  153. package/dist/chunk-DTCOOBMX.js +0 -725
  154. package/dist/chunk-DWQQ2GZK.js +0 -1787
  155. package/dist/chunk-E5SMAKQQ.js +0 -336
  156. package/dist/chunk-E6BNBVMK.js +0 -457
  157. package/dist/chunk-E7NGA7X2.js +0 -59
  158. package/dist/chunk-EEPPJKAE.js +0 -443
  159. package/dist/chunk-EGZGFIXV.js +0 -90
  160. package/dist/chunk-EJMSUPXQ.js +0 -346
  161. package/dist/chunk-EJMYGAGQ.js +0 -717
  162. package/dist/chunk-EL6Z5MDY.js +0 -55
  163. package/dist/chunk-EP7VRLEB.js +0 -41
  164. package/dist/chunk-EQACK65C.js +0 -63
  165. package/dist/chunk-ESPA7SCH.js +0 -567
  166. package/dist/chunk-ETMEC6FH.js +0 -99
  167. package/dist/chunk-EUFENPGJ.js +0 -290
  168. package/dist/chunk-EZ2WHYVL.js +0 -65
  169. package/dist/chunk-EZRVMSZK.js +0 -67
  170. package/dist/chunk-F25CZRUH.js +0 -282
  171. package/dist/chunk-F2TRGINX.js +0 -254
  172. package/dist/chunk-F4IYF3YU.js +0 -266
  173. package/dist/chunk-F5JCIH3Q.js +0 -642
  174. package/dist/chunk-FBNDOAHU.js +0 -54
  175. package/dist/chunk-FDRU7W6W.js +0 -365
  176. package/dist/chunk-FDW3E54J.js +0 -1767
  177. package/dist/chunk-FEPU4KL6.js +0 -63
  178. package/dist/chunk-FGK3JKMN.js +0 -909
  179. package/dist/chunk-FQWPKSTD.js +0 -1437
  180. package/dist/chunk-FWHVLMCI.js +0 -26
  181. package/dist/chunk-FYIGTFXO.js +0 -712
  182. package/dist/chunk-G4AX3DQ4.js +0 -54
  183. package/dist/chunk-GBEYQRO2.js +0 -303
  184. package/dist/chunk-GBLES3NK.js +0 -248
  185. package/dist/chunk-GQVGUQW6.js +0 -1436
  186. package/dist/chunk-GVDEIJ3G.js +0 -291
  187. package/dist/chunk-GXIM4TC3.js +0 -346
  188. package/dist/chunk-GY5AAP4H.js +0 -316
  189. package/dist/chunk-HCV2T76T.js +0 -457
  190. package/dist/chunk-HCWPQCZP.js +0 -279
  191. package/dist/chunk-HFHOFG6W.js +0 -282
  192. package/dist/chunk-HGKEBAW3.js +0 -63
  193. package/dist/chunk-HJNW3HLI.js +0 -255
  194. package/dist/chunk-HKUNBYN6.js +0 -949
  195. package/dist/chunk-HRIIH4JX.js +0 -712
  196. package/dist/chunk-HS7ZKVPR.js +0 -182
  197. package/dist/chunk-HXDVV7HZ.js +0 -909
  198. package/dist/chunk-HZWNWUPJ.js +0 -466
  199. package/dist/chunk-I6EZTMPB.js +0 -949
  200. package/dist/chunk-IB23VMO3.js +0 -1746
  201. package/dist/chunk-IC4K4EOD.js +0 -26
  202. package/dist/chunk-IEMZ7RTT.js +0 -99
  203. package/dist/chunk-IJU6TOZ6.js +0 -65
  204. package/dist/chunk-IK3NFZOA.js +0 -466
  205. package/dist/chunk-IPGRSN42.js +0 -1750
  206. package/dist/chunk-IVMOK2QN.js +0 -1750
  207. package/dist/chunk-J7PD6L4B.js +0 -1767
  208. package/dist/chunk-JCLGQO7T.js +0 -443
  209. package/dist/chunk-JDXL7KDB.js +0 -1436
  210. package/dist/chunk-JIIFW636.js +0 -270
  211. package/dist/chunk-JLOASJXU.js +0 -654
  212. package/dist/chunk-JRWAHOMS.js +0 -41
  213. package/dist/chunk-JWGEEH7H.js +0 -944
  214. package/dist/chunk-K2BESAG7.js +0 -1688
  215. package/dist/chunk-K2U5YGF4.js +0 -877
  216. package/dist/chunk-K45FQ4Y4.js +0 -175
  217. package/dist/chunk-K7BPE427.js +0 -1432
  218. package/dist/chunk-K7JUDY3C.js +0 -364
  219. package/dist/chunk-KALKXPC3.js +0 -297
  220. package/dist/chunk-KKUV25KB.js +0 -361
  221. package/dist/chunk-KKV3DOAW.js +0 -466
  222. package/dist/chunk-KL3266RS.js +0 -26
  223. package/dist/chunk-KNN4P7DZ.js +0 -84
  224. package/dist/chunk-KP2DZH5Q.js +0 -254
  225. package/dist/chunk-KZHAJSQR.js +0 -1636
  226. package/dist/chunk-L36YN45V.js +0 -949
  227. package/dist/chunk-L5IBT37O.js +0 -263
  228. package/dist/chunk-LAX5H35R.js +0 -90
  229. package/dist/chunk-LBKGHMQV.js +0 -1750
  230. package/dist/chunk-LBTEPL7A.js +0 -1731
  231. package/dist/chunk-LEBBPTDB.js +0 -1444
  232. package/dist/chunk-LHI25KS2.js +0 -654
  233. package/dist/chunk-LHNJSLC6.js +0 -297
  234. package/dist/chunk-LLH63WVQ.js +0 -98
  235. package/dist/chunk-LWNJN3IW.js +0 -295
  236. package/dist/chunk-LWVR2C4G.js +0 -1711
  237. package/dist/chunk-M3MDTVV2.js +0 -896
  238. package/dist/chunk-M3QSBCXC.js +0 -52
  239. package/dist/chunk-M3ZKZQNY.js +0 -282
  240. package/dist/chunk-M5GNLDEO.js +0 -303
  241. package/dist/chunk-MBINISSE.js +0 -35
  242. package/dist/chunk-MFHVGKET.js +0 -267
  243. package/dist/chunk-MGWSG3PM.js +0 -358
  244. package/dist/chunk-MGYRVG2A.js +0 -282
  245. package/dist/chunk-MJNB47HB.js +0 -19
  246. package/dist/chunk-MLN3JZ2E.js +0 -398
  247. package/dist/chunk-MM46JVR2.js +0 -359
  248. package/dist/chunk-MQWTY3JY.js +0 -944
  249. package/dist/chunk-MWE3PK5S.js +0 -551
  250. package/dist/chunk-MXR7LXGC.js +0 -1084
  251. package/dist/chunk-MZZOQHNI.js +0 -642
  252. package/dist/chunk-N6BRVUAP.js +0 -1805
  253. package/dist/chunk-N7UVR6SG.js +0 -877
  254. package/dist/chunk-NIHWGZS4.js +0 -1426
  255. package/dist/chunk-NMTRH4Q3.js +0 -97
  256. package/dist/chunk-NSVVHQK5.js +0 -41
  257. package/dist/chunk-NVI2WE7D.js +0 -443
  258. package/dist/chunk-NZNNXPEE.js +0 -56
  259. package/dist/chunk-O7QBO3PH.js +0 -58
  260. package/dist/chunk-OAUPQBO2.js +0 -270
  261. package/dist/chunk-OB2LMD7C.js +0 -297
  262. package/dist/chunk-OEGAHDEU.js +0 -1094
  263. package/dist/chunk-OHEYBWQU.js +0 -58
  264. package/dist/chunk-OI5B74HF.js +0 -26
  265. package/dist/chunk-OI6OXUHJ.js +0 -443
  266. package/dist/chunk-ONOO74UN.js +0 -361
  267. package/dist/chunk-OWLQ4HZI.js +0 -282
  268. package/dist/chunk-OX2VMRMV.js +0 -633
  269. package/dist/chunk-OXYMB6VB.js +0 -466
  270. package/dist/chunk-OZS4YOOP.js +0 -59
  271. package/dist/chunk-P4FYE5TX.js +0 -866
  272. package/dist/chunk-P5KFWM4H.js +0 -98
  273. package/dist/chunk-PLFQZ7SS.js +0 -90
  274. package/dist/chunk-PMVU6BI4.js +0 -1847
  275. package/dist/chunk-PPNH4Y6U.js +0 -282
  276. package/dist/chunk-PUMLE7RJ.js +0 -1711
  277. package/dist/chunk-Q4MFANBF.js +0 -282
  278. package/dist/chunk-Q54YZ4X3.js +0 -26
  279. package/dist/chunk-Q6XACQW3.js +0 -1847
  280. package/dist/chunk-QI6ZDDUR.js +0 -35
  281. package/dist/chunk-QJ5KLY2S.js +0 -1821
  282. package/dist/chunk-QLEKZMMU.js +0 -282
  283. package/dist/chunk-QLNWSBWK.js +0 -567
  284. package/dist/chunk-QQS7BSPA.js +0 -26
  285. package/dist/chunk-QUGIYF3F.js +0 -712
  286. package/dist/chunk-QYSW3K7A.js +0 -282
  287. package/dist/chunk-QZWTKX5K.js +0 -321
  288. package/dist/chunk-RGGNGVO3.js +0 -98
  289. package/dist/chunk-RKJDRVV6.js +0 -443
  290. package/dist/chunk-RUAJTILD.js +0 -26
  291. package/dist/chunk-S5BHU353.js +0 -43
  292. package/dist/chunk-S6YEHFC7.js +0 -654
  293. package/dist/chunk-SHQUSFH7.js +0 -1426
  294. package/dist/chunk-SMB4DBMD.js +0 -182
  295. package/dist/chunk-SNYHQP3D.js +0 -743
  296. package/dist/chunk-SR2DPCTT.js +0 -1803
  297. package/dist/chunk-SU63HSUU.js +0 -58
  298. package/dist/chunk-SXXKZJI2.js +0 -303
  299. package/dist/chunk-T24L3TBF.js +0 -1717
  300. package/dist/chunk-T2SPHHYU.js +0 -365
  301. package/dist/chunk-TAQNSOKT.js +0 -692
  302. package/dist/chunk-TBA46SVX.js +0 -1805
  303. package/dist/chunk-TCWKKKPP.js +0 -90
  304. package/dist/chunk-TDNY4SUA.js +0 -41
  305. package/dist/chunk-TK4P3V5G.js +0 -56
  306. package/dist/chunk-TNNF56IQ.js +0 -1750
  307. package/dist/chunk-TR7E6LYX.js +0 -457
  308. package/dist/chunk-TVV4JK5G.js +0 -282
  309. package/dist/chunk-UATXXETW.js +0 -278
  310. package/dist/chunk-UHFUQWST.js +0 -65
  311. package/dist/chunk-UKDBQVM3.js +0 -346
  312. package/dist/chunk-URWUFH45.js +0 -98
  313. package/dist/chunk-USPT25TC.js +0 -365
  314. package/dist/chunk-UUSIH3XH.js +0 -1429
  315. package/dist/chunk-UXDIPRCG.js +0 -26
  316. package/dist/chunk-UYFNXLKR.js +0 -1436
  317. package/dist/chunk-UZZFP2EE.js +0 -35
  318. package/dist/chunk-V4G5Y6YM.js +0 -1094
  319. package/dist/chunk-V6F7KUWD.js +0 -270
  320. package/dist/chunk-V6P4LDAV.js +0 -65
  321. package/dist/chunk-VAA4FG3Z.js +0 -365
  322. package/dist/chunk-VCZLXRMR.js +0 -254
  323. package/dist/chunk-VDHXSSBT.js +0 -1426
  324. package/dist/chunk-VI4KRBSU.js +0 -291
  325. package/dist/chunk-VM4QMKVK.js +0 -254
  326. package/dist/chunk-VUXB655T.js +0 -1999
  327. package/dist/chunk-VWGYKYL2.js +0 -737
  328. package/dist/chunk-VX2OFBJN.js +0 -1426
  329. package/dist/chunk-VXVIE6DG.js +0 -84
  330. package/dist/chunk-W3QH7BF5.js +0 -282
  331. package/dist/chunk-W4OH7HG4.js +0 -40
  332. package/dist/chunk-WBVJX4GZ.js +0 -98
  333. package/dist/chunk-WDU2ZV4I.js +0 -1426
  334. package/dist/chunk-WGCQNOEQ.js +0 -712
  335. package/dist/chunk-WZQNHS4J.js +0 -52
  336. package/dist/chunk-X6VUCICU.js +0 -457
  337. package/dist/chunk-XAY7FM7Y.js +0 -618
  338. package/dist/chunk-XFW7B23S.js +0 -282
  339. package/dist/chunk-XJ3MNGY5.js +0 -58
  340. package/dist/chunk-XJZ5Z2CM.js +0 -642
  341. package/dist/chunk-XKVFQTJJ.js +0 -254
  342. package/dist/chunk-XRLFASCY.js +0 -22
  343. package/dist/chunk-XZGY5ZJ4.js +0 -35
  344. package/dist/chunk-Y745CBVB.js +0 -944
  345. package/dist/chunk-YLBJSXYY.js +0 -944
  346. package/dist/chunk-YQJIKVPZ.js +0 -1429
  347. package/dist/chunk-YRM2VCZF.js +0 -457
  348. package/dist/chunk-YS33KBVJ.js +0 -944
  349. package/dist/chunk-Z27DZPDG.js +0 -41
  350. package/dist/chunk-Z6GZHJW5.js +0 -877
  351. package/dist/chunk-ZXQ5NAEN.js +0 -32
  352. package/dist/contracts-B552GopR.d.cts +0 -245
  353. package/dist/contracts-B552GopR.d.ts +0 -245
  354. package/dist/contracts-Bg1ECISC.d.cts +0 -245
  355. package/dist/contracts-Bg1ECISC.d.ts +0 -245
  356. package/dist/contracts-CMriKJ6P.d.cts +0 -245
  357. package/dist/contracts-CMriKJ6P.d.ts +0 -245
  358. package/dist/src/components/ErrorBoundary.d.ts +0 -15
  359. package/dist/src/components/ErrorBoundary.js +0 -119
  360. package/dist/src/core/catch.d.ts +0 -11
  361. package/dist/src/core/catch.js +0 -28
  362. package/dist/src/core/each.d.ts +0 -13
  363. package/dist/src/core/each.js +0 -68
  364. package/dist/src/core/for.d.ts +0 -12
  365. package/dist/src/core/for.js +0 -67
  366. package/dist/src/core/html.d.ts +0 -137
  367. package/dist/src/core/html.js +0 -155
  368. package/dist/src/core/htmlIf.d.ts +0 -11
  369. package/dist/src/core/htmlIf.js +0 -18
  370. package/dist/src/core/lazy.d.ts +0 -7
  371. package/dist/src/core/lazy.js +0 -16
  372. package/dist/src/core/mount.d.ts +0 -7
  373. package/dist/src/core/mount.js +0 -12
  374. package/dist/src/core/slots.d.ts +0 -3
  375. package/dist/src/core/slots.js +0 -3
  376. package/dist/src/core/suspense.d.ts +0 -10
  377. package/dist/src/core/suspense.js +0 -33
  378. package/dist/src/core/tagFactory.d.ts +0 -13
  379. package/dist/src/core/tagFactory.js +0 -86
  380. package/dist/src/core/test.d.ts +0 -11
  381. package/dist/src/core/test.js +0 -28
  382. package/dist/src/core/types.d.ts +0 -2
  383. package/dist/src/core/types.js +0 -1
  384. package/dist/src/core/useComputed.d.ts +0 -6
  385. package/dist/src/core/useComputed.js +0 -30
  386. package/dist/src/core/useEffect.d.ts +0 -6
  387. package/dist/src/core/useEffect.js +0 -23
  388. package/dist/src/core/useState.d.ts +0 -10
  389. package/dist/src/core/useState.js +0 -34
  390. package/dist/src/core/useStore.d.ts +0 -19
  391. package/dist/src/core/useStore.js +0 -53
  392. package/dist/src/core/useWatch.d.ts +0 -8
  393. package/dist/src/core/useWatch.js +0 -23
  394. package/dist/src/plugins/i18n.d.ts +0 -6
  395. package/dist/src/plugins/i18n.js +0 -16
  396. package/dist/src/plugins/router.d.ts +0 -188
  397. package/dist/src/plugins/router.js +0 -1178
  398. package/dist/src/reactivity/bindAttribute.d.ts +0 -5
  399. package/dist/src/reactivity/bindAttribute.js +0 -31
  400. package/dist/src/reactivity/bindChildNode.d.ts +0 -10
  401. package/dist/src/reactivity/bindChildNode.js +0 -46
  402. package/dist/src/reactivity/bindTextNode.d.ts +0 -10
  403. package/dist/src/reactivity/bindTextNode.js +0 -27
  404. package/dist/src/reactivity/signal.d.ts +0 -3
  405. package/dist/src/reactivity/signal.js +0 -1
  406. package/dist/src/reactivity/track.d.ts +0 -18
  407. package/dist/src/reactivity/track.js +0 -73
  408. package/dist/src/reactivity/useComputed.d.ts +0 -6
  409. package/dist/src/reactivity/useComputed.js +0 -30
  410. package/dist/src/reactivity/useEffect.d.ts +0 -6
  411. package/dist/src/reactivity/useEffect.js +0 -23
  412. package/dist/src/reactivity/useState.d.ts +0 -10
  413. package/dist/src/reactivity/useState.js +0 -34
  414. package/dist/src/reactivity/useStore.d.ts +0 -19
  415. package/dist/src/reactivity/useStore.js +0 -53
  416. package/dist/src/reactivity/useWatch.d.ts +0 -8
  417. package/dist/src/reactivity/useWatch.js +0 -23
  418. package/dist/src/utils/sanitize.d.ts +0 -1
  419. package/dist/src/utils/sanitize.js +0 -8
  420. package/dist/ssr-27FOM46T.js +0 -35
  421. package/dist/ssr-GEOEYQV7.js +0 -35
  422. package/dist/ssr-GFUTTSJD.js +0 -22
  423. package/dist/ssr-K7DCR6BZ.js +0 -35
  424. package/dist/ssr-NFAIHWJJ.js +0 -35
  425. package/dist/ssr-O6LFMRFP.js +0 -35
  426. package/dist/ssr-QZEVGMMK.js +0 -35
  427. package/dist/ssr-SGVBCAGC.js +0 -35
  428. package/dist/ssr-UB2IXCYX.js +0 -35
  429. package/dist/ssr-XBZQNV4O.js +0 -22
  430. package/dist/ssr-Y76FSXDU.js +0 -35
  431. package/dist/ssr-YQJ4AYBD.js +0 -35
  432. package/dist/tagFactory-BDN7gDEp.d.cts +0 -21
  433. package/dist/tagFactory-BDN7gDEp.d.ts +0 -21
  434. package/dist/tagFactory-CZPO4RXF.d.cts +0 -34
  435. package/dist/tagFactory-CZPO4RXF.d.ts +0 -34
  436. package/dist/tagFactory-CgImPVMY.d.cts +0 -22
  437. package/dist/tagFactory-CgImPVMY.d.ts +0 -22
  438. package/dist/tagFactory-Cw1iv5if.d.cts +0 -22
  439. package/dist/tagFactory-Cw1iv5if.d.ts +0 -22
  440. package/dist/tagFactory-DeAXq9ef.d.cts +0 -30
  441. package/dist/tagFactory-DeAXq9ef.d.ts +0 -30
  442. package/dist/tagFactory-SkY0a7L1.d.cts +0 -22
  443. package/dist/tagFactory-SkY0a7L1.d.ts +0 -22
@@ -1,3 +1,4 @@
1
+ import { T as TrustedHTML } from './ssr-BA6sxxUd.cjs';
1
2
  export { P as PluginContext, S as SibuPlugin, c as createPlugin, i as inject, p as plugin, r as resetPlugins, t as triggerPluginError, a as triggerPluginMount, b as triggerPluginUnmount } from './plugin-Bek4RhJY.cjs';
2
3
  export { M as Migration, S as SemVer, V as VERSION, b as bundlerMetadata, c as checkCompatibility, a as compareSemVer, d as createBootSequence, e as createBundle, f as createMigrationRunner, g as createModuleRegistry, h as createSSRCache, i as createTestHarness, j as deferNonCritical, k as env, l as healthCheck, m as lazyModule, p as packageInfo, n as parseSemVer, o as preloadCritical, q as prerenderRoutes, s as satisfies } from './startup-0Qv6aosO.cjs';
3
4
 
@@ -85,6 +86,13 @@ interface RouterOptions {
85
86
  readonly cacheSize?: number;
86
87
  readonly errorRetryDelay?: number;
87
88
  readonly preloadStrategy?: "none" | "hover" | "visible";
89
+ /**
90
+ * Enable KeepAlive caching for route components.
91
+ * - `true` — cache all routes
92
+ * - string[] — cache only named routes matching these names
93
+ * - number — cache all routes with this max cache size
94
+ */
95
+ readonly keepAlive?: boolean | string[] | number;
88
96
  }
89
97
  type ScrollBehavior = (to: RouteContext, from: RouteContext, savedPosition: ScrollPosition | null) => ScrollPosition | null;
90
98
  interface ScrollPosition {
@@ -200,6 +208,34 @@ declare function beforeEach(guard: NavigationGuard): () => void;
200
208
  declare function beforeResolve(guard: NavigationGuard): () => void;
201
209
  declare function afterEach(hook: (to: RouteContext, from: RouteContext) => void): () => void;
202
210
  declare function Route(): Node;
211
+ /**
212
+ * A route outlet that caches rendered components using KeepAlive.
213
+ * Routes are preserved in the DOM cache so signals, form state, and scroll
214
+ * position survive navigation.
215
+ *
216
+ * Uses the `keepAlive` option from RouterOptions if set, or accepts
217
+ * explicit options.
218
+ *
219
+ * @param options Optional: override the router-level keepAlive setting
220
+ *
221
+ * @example
222
+ * ```ts
223
+ * // Cache all routes (max 10)
224
+ * createRouter(routes, { keepAlive: 10 });
225
+ * mount(() => div({ nodes: [nav, KeepAliveRoute()] }), root);
226
+ *
227
+ * // Or cache specific routes by name
228
+ * createRouter(routes, { keepAlive: ["dashboard", "settings"] });
229
+ * mount(() => div({ nodes: [nav, KeepAliveRoute()] }), root);
230
+ *
231
+ * // Or override per-outlet
232
+ * KeepAliveRoute({ max: 5, include: ["dashboard"] })
233
+ * ```
234
+ */
235
+ declare function KeepAliveRoute(options?: {
236
+ max?: number;
237
+ include?: string[];
238
+ }): Node;
203
239
  declare function RouterLink(props: {
204
240
  to: NavigationTarget;
205
241
  replace?: boolean;
@@ -350,7 +386,7 @@ declare function renderRouteToDocument(url: string, routes: SSRRouteDef[], optio
350
386
  meta?: Record<string, string>[];
351
387
  links?: Record<string, string>[];
352
388
  scripts?: string[];
353
- headExtra?: string;
389
+ headExtra?: TrustedHTML;
354
390
  }): string;
355
391
  /**
356
392
  * Serialize route state for embedding in HTML.
@@ -392,8 +428,8 @@ declare function createSSRRouter(routes: SSRRouteDef[]): {
392
428
  meta?: Record<string, string>[];
393
429
  links?: Record<string, string>[];
394
430
  scripts?: string[];
395
- headExtra?: string;
431
+ headExtra?: TrustedHTML;
396
432
  }) => string;
397
433
  };
398
434
 
399
- export { type AsyncComponent, type AsyncRoute, type Component, type ComponentRoute, type Guard, type GuardResult, type LazyComponent, type NavigationFailure, type NavigationGuard, type NavigationNext, type NavigationResult, type NavigationTarget, Outlet, type Params, type RedirectRoute, Route, type RouteBase, type RouteContext, type RouteDef, type RouteMeta, type RouteTransitionOptions, RouterLink, type RouterOptions, type RouterPlugin, type SSRRouteDef, type SSRRouteState, type ScrollBehavior, type ScrollPosition, SibuRouter, Suspense, Trans, addRoute, afterEach, back, beforeEach, beforeResolve, buildURL, createMemoryRouter, createRouter, createSSRRouter, deserializeRouteState, destroyRouter, forward, getAvailableLocales, getLocale, getRouteInfo, getRouteTransition, go, hasRoute, hasTranslation, hydrateRouter, lazy, navigate, preloadRoute, push, registerTranslations, removeRoute, renderRouteToDocument, renderRouteToString, replace, resolveServerRoute, route, router, routerPlugin, routerState, serializeRouteState, setLocale, setRouteTransition, setRoutes, t };
435
+ export { type AsyncComponent, type AsyncRoute, type Component, type ComponentRoute, type Guard, type GuardResult, KeepAliveRoute, type LazyComponent, type NavigationFailure, type NavigationGuard, type NavigationNext, type NavigationResult, type NavigationTarget, Outlet, type Params, type RedirectRoute, Route, type RouteBase, type RouteContext, type RouteDef, type RouteMeta, type RouteTransitionOptions, RouterLink, type RouterOptions, type RouterPlugin, type SSRRouteDef, type SSRRouteState, type ScrollBehavior, type ScrollPosition, SibuRouter, Suspense, Trans, addRoute, afterEach, back, beforeEach, beforeResolve, buildURL, createMemoryRouter, createRouter, createSSRRouter, deserializeRouteState, destroyRouter, forward, getAvailableLocales, getLocale, getRouteInfo, getRouteTransition, go, hasRoute, hasTranslation, hydrateRouter, lazy, navigate, preloadRoute, push, registerTranslations, removeRoute, renderRouteToDocument, renderRouteToString, replace, resolveServerRoute, route, router, routerPlugin, routerState, serializeRouteState, setLocale, setRouteTransition, setRoutes, t };
package/dist/plugins.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { T as TrustedHTML } from './ssr-BA6sxxUd.js';
1
2
  export { P as PluginContext, S as SibuPlugin, c as createPlugin, i as inject, p as plugin, r as resetPlugins, t as triggerPluginError, a as triggerPluginMount, b as triggerPluginUnmount } from './plugin-Bek4RhJY.js';
2
3
  export { M as Migration, S as SemVer, V as VERSION, b as bundlerMetadata, c as checkCompatibility, a as compareSemVer, d as createBootSequence, e as createBundle, f as createMigrationRunner, g as createModuleRegistry, h as createSSRCache, i as createTestHarness, j as deferNonCritical, k as env, l as healthCheck, m as lazyModule, p as packageInfo, n as parseSemVer, o as preloadCritical, q as prerenderRoutes, s as satisfies } from './startup-0Qv6aosO.js';
3
4
 
@@ -85,6 +86,13 @@ interface RouterOptions {
85
86
  readonly cacheSize?: number;
86
87
  readonly errorRetryDelay?: number;
87
88
  readonly preloadStrategy?: "none" | "hover" | "visible";
89
+ /**
90
+ * Enable KeepAlive caching for route components.
91
+ * - `true` — cache all routes
92
+ * - string[] — cache only named routes matching these names
93
+ * - number — cache all routes with this max cache size
94
+ */
95
+ readonly keepAlive?: boolean | string[] | number;
88
96
  }
89
97
  type ScrollBehavior = (to: RouteContext, from: RouteContext, savedPosition: ScrollPosition | null) => ScrollPosition | null;
90
98
  interface ScrollPosition {
@@ -200,6 +208,34 @@ declare function beforeEach(guard: NavigationGuard): () => void;
200
208
  declare function beforeResolve(guard: NavigationGuard): () => void;
201
209
  declare function afterEach(hook: (to: RouteContext, from: RouteContext) => void): () => void;
202
210
  declare function Route(): Node;
211
+ /**
212
+ * A route outlet that caches rendered components using KeepAlive.
213
+ * Routes are preserved in the DOM cache so signals, form state, and scroll
214
+ * position survive navigation.
215
+ *
216
+ * Uses the `keepAlive` option from RouterOptions if set, or accepts
217
+ * explicit options.
218
+ *
219
+ * @param options Optional: override the router-level keepAlive setting
220
+ *
221
+ * @example
222
+ * ```ts
223
+ * // Cache all routes (max 10)
224
+ * createRouter(routes, { keepAlive: 10 });
225
+ * mount(() => div({ nodes: [nav, KeepAliveRoute()] }), root);
226
+ *
227
+ * // Or cache specific routes by name
228
+ * createRouter(routes, { keepAlive: ["dashboard", "settings"] });
229
+ * mount(() => div({ nodes: [nav, KeepAliveRoute()] }), root);
230
+ *
231
+ * // Or override per-outlet
232
+ * KeepAliveRoute({ max: 5, include: ["dashboard"] })
233
+ * ```
234
+ */
235
+ declare function KeepAliveRoute(options?: {
236
+ max?: number;
237
+ include?: string[];
238
+ }): Node;
203
239
  declare function RouterLink(props: {
204
240
  to: NavigationTarget;
205
241
  replace?: boolean;
@@ -350,7 +386,7 @@ declare function renderRouteToDocument(url: string, routes: SSRRouteDef[], optio
350
386
  meta?: Record<string, string>[];
351
387
  links?: Record<string, string>[];
352
388
  scripts?: string[];
353
- headExtra?: string;
389
+ headExtra?: TrustedHTML;
354
390
  }): string;
355
391
  /**
356
392
  * Serialize route state for embedding in HTML.
@@ -392,8 +428,8 @@ declare function createSSRRouter(routes: SSRRouteDef[]): {
392
428
  meta?: Record<string, string>[];
393
429
  links?: Record<string, string>[];
394
430
  scripts?: string[];
395
- headExtra?: string;
431
+ headExtra?: TrustedHTML;
396
432
  }) => string;
397
433
  };
398
434
 
399
- export { type AsyncComponent, type AsyncRoute, type Component, type ComponentRoute, type Guard, type GuardResult, type LazyComponent, type NavigationFailure, type NavigationGuard, type NavigationNext, type NavigationResult, type NavigationTarget, Outlet, type Params, type RedirectRoute, Route, type RouteBase, type RouteContext, type RouteDef, type RouteMeta, type RouteTransitionOptions, RouterLink, type RouterOptions, type RouterPlugin, type SSRRouteDef, type SSRRouteState, type ScrollBehavior, type ScrollPosition, SibuRouter, Suspense, Trans, addRoute, afterEach, back, beforeEach, beforeResolve, buildURL, createMemoryRouter, createRouter, createSSRRouter, deserializeRouteState, destroyRouter, forward, getAvailableLocales, getLocale, getRouteInfo, getRouteTransition, go, hasRoute, hasTranslation, hydrateRouter, lazy, navigate, preloadRoute, push, registerTranslations, removeRoute, renderRouteToDocument, renderRouteToString, replace, resolveServerRoute, route, router, routerPlugin, routerState, serializeRouteState, setLocale, setRouteTransition, setRoutes, t };
435
+ export { type AsyncComponent, type AsyncRoute, type Component, type ComponentRoute, type Guard, type GuardResult, KeepAliveRoute, type LazyComponent, type NavigationFailure, type NavigationGuard, type NavigationNext, type NavigationResult, type NavigationTarget, Outlet, type Params, type RedirectRoute, Route, type RouteBase, type RouteContext, type RouteDef, type RouteMeta, type RouteTransitionOptions, RouterLink, type RouterOptions, type RouterPlugin, type SSRRouteDef, type SSRRouteState, type ScrollBehavior, type ScrollPosition, SibuRouter, Suspense, Trans, addRoute, afterEach, back, beforeEach, beforeResolve, buildURL, createMemoryRouter, createRouter, createSSRRouter, deserializeRouteState, destroyRouter, forward, getAvailableLocales, getLocale, getRouteInfo, getRouteTransition, go, hasRoute, hasTranslation, hydrateRouter, lazy, navigate, preloadRoute, push, registerTranslations, removeRoute, renderRouteToDocument, renderRouteToString, replace, resolveServerRoute, route, router, routerPlugin, routerState, serializeRouteState, setLocale, setRouteTransition, setRoutes, t };
package/dist/plugins.js CHANGED
@@ -18,10 +18,10 @@ import {
18
18
  preloadCritical,
19
19
  prerenderRoutes,
20
20
  satisfies
21
- } from "./chunk-DTCOOBMX.js";
21
+ } from "./chunk-OF7UZIVB.js";
22
22
  import {
23
23
  renderToString
24
- } from "./chunk-7TQKR4PP.js";
24
+ } from "./chunk-AZ3ISID5.js";
25
25
  import {
26
26
  createPlugin,
27
27
  inject,
@@ -33,10 +33,11 @@ import {
33
33
  } from "./chunk-K5ZUMYVS.js";
34
34
  import {
35
35
  span
36
- } from "./chunk-OWLQ4HZI.js";
36
+ } from "./chunk-EWFVA3TJ.js";
37
37
  import {
38
+ dispose,
38
39
  registerDisposer
39
- } from "./chunk-QVKGGB2S.js";
40
+ } from "./chunk-MDVXJWFN.js";
40
41
  import "./chunk-SDLZDHKP.js";
41
42
  import {
42
43
  effect
@@ -985,6 +986,120 @@ function Route() {
985
986
  routeCleanups.push(cleanupNodes);
986
987
  return anchor;
987
988
  }
989
+ function KeepAliveRoute(options) {
990
+ if (!globalRouter) throw new Error("Router not initialized. Call createRouter() first.");
991
+ const anchor = document.createComment("keep-alive-route");
992
+ const cache = /* @__PURE__ */ new Map();
993
+ const lruOrder = [];
994
+ const routerOpts = globalRouter["options"];
995
+ const keepAliveOpt = routerOpts.keepAlive;
996
+ const maxCache = options?.max ?? (typeof keepAliveOpt === "number" ? keepAliveOpt : 20);
997
+ const includeNames = options?.include ?? (Array.isArray(keepAliveOpt) ? keepAliveOpt : void 0);
998
+ let currentNode = null;
999
+ let currentKey = "";
1000
+ let currentCached = false;
1001
+ let isUpdating = false;
1002
+ let pendingUpdate = false;
1003
+ const update = async () => {
1004
+ if (!globalRouter) return;
1005
+ if (isUpdating) {
1006
+ pendingUpdate = true;
1007
+ return;
1008
+ }
1009
+ const route2 = globalRouter.currentRoute;
1010
+ const match = globalRouter["matcher"].match(route2.path);
1011
+ if (!match) return;
1012
+ const { route: routeDef } = match;
1013
+ if ("redirect" in routeDef) {
1014
+ const redirectPath = typeof routeDef.redirect === "function" ? routeDef.redirect(route2) : routeDef.redirect;
1015
+ queueMicrotask(() => globalRouter?.navigate(redirectPath));
1016
+ return;
1017
+ }
1018
+ if (!("component" in routeDef)) return;
1019
+ const cacheKey = route2.path;
1020
+ const shouldCache = !includeNames || routeDef.name != null && includeNames.includes(routeDef.name);
1021
+ if (cacheKey === currentKey && currentNode) return;
1022
+ isUpdating = true;
1023
+ const parent = anchor.parentNode;
1024
+ if (!parent) {
1025
+ isUpdating = false;
1026
+ return;
1027
+ }
1028
+ try {
1029
+ if (currentNode?.parentNode) {
1030
+ parent.removeChild(currentNode);
1031
+ if (!currentCached) {
1032
+ dispose(currentNode);
1033
+ }
1034
+ }
1035
+ if (shouldCache && cache.has(cacheKey)) {
1036
+ currentNode = cache.get(cacheKey);
1037
+ currentCached = true;
1038
+ const idx = lruOrder.indexOf(cacheKey);
1039
+ if (idx !== -1) {
1040
+ lruOrder.splice(idx, 1);
1041
+ }
1042
+ lruOrder.push(cacheKey);
1043
+ } else {
1044
+ const component = await globalRouter.loadComponent(routeDef, route2.path);
1045
+ const node = component();
1046
+ if (!node || route2.path !== globalRouter.currentRoute.path) {
1047
+ isUpdating = false;
1048
+ return;
1049
+ }
1050
+ currentNode = node;
1051
+ currentCached = shouldCache;
1052
+ if (shouldCache) {
1053
+ cache.set(cacheKey, node);
1054
+ lruOrder.push(cacheKey);
1055
+ while (lruOrder.length > maxCache) {
1056
+ const evictKey = lruOrder.shift();
1057
+ const evictNode = cache.get(evictKey);
1058
+ if (evictNode) {
1059
+ dispose(evictNode);
1060
+ if (evictNode.parentNode) evictNode.parentNode.removeChild(evictNode);
1061
+ cache.delete(evictKey);
1062
+ }
1063
+ }
1064
+ }
1065
+ }
1066
+ currentKey = cacheKey;
1067
+ if (currentNode) {
1068
+ parent.insertBefore(currentNode, anchor.nextSibling);
1069
+ }
1070
+ } catch (error) {
1071
+ console.error("[KeepAliveRoute] Component error:", error);
1072
+ } finally {
1073
+ isUpdating = false;
1074
+ if (pendingUpdate) {
1075
+ pendingUpdate = false;
1076
+ update();
1077
+ }
1078
+ }
1079
+ };
1080
+ let initialized = false;
1081
+ const wrappedUpdate = async () => {
1082
+ await update();
1083
+ initialized = true;
1084
+ };
1085
+ track(wrappedUpdate);
1086
+ if (!initialized) {
1087
+ queueMicrotask(() => {
1088
+ if (!initialized && anchor.parentNode) wrappedUpdate();
1089
+ });
1090
+ }
1091
+ routeCleanups.push(() => {
1092
+ for (const node of cache.values()) {
1093
+ dispose(node);
1094
+ if (node.parentNode) node.parentNode.removeChild(node);
1095
+ }
1096
+ cache.clear();
1097
+ lruOrder.length = 0;
1098
+ if (currentNode?.parentNode) currentNode.parentNode.removeChild(currentNode);
1099
+ currentNode = null;
1100
+ });
1101
+ return anchor;
1102
+ }
988
1103
  function RouterLink(props) {
989
1104
  if (!globalRouter) throw new Error("Router not initialized. Call createRouter() first.");
990
1105
  const { to, replace: replace2 = false, activeClass, exactActiveClass, nodes, target, rel, ...attrs } = props;
@@ -1474,7 +1589,7 @@ function hydrateRouter(routes, options) {
1474
1589
  if (container && serverState.path) {
1475
1590
  const resolved = resolveServerRoute(serverState.path, routes);
1476
1591
  if (resolved.component) {
1477
- import("./ssr-WKUPVSSK.js").then(({ hydrate }) => {
1592
+ import("./ssr-6GIMY5MX.js").then(({ hydrate }) => {
1478
1593
  if (resolved.component) {
1479
1594
  hydrate(resolved.component, container);
1480
1595
  }
@@ -1502,6 +1617,7 @@ function escapeAttr(str) {
1502
1617
  return str.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1503
1618
  }
1504
1619
  export {
1620
+ KeepAliveRoute,
1505
1621
  Outlet,
1506
1622
  Route,
1507
1623
  RouterLink,
@@ -13,8 +13,9 @@ import {
13
13
  resetSSRState,
14
14
  serializeState,
15
15
  ssrSuspense,
16
- suspenseSwapScript
17
- } from "./chunk-7TQKR4PP.js";
16
+ suspenseSwapScript,
17
+ trustHTML
18
+ } from "./chunk-AZ3ISID5.js";
18
19
  import "./chunk-4MYMUBRS.js";
19
20
  import "./chunk-MLKGABMK.js";
20
21
  export {
@@ -32,5 +33,6 @@ export {
32
33
  resetSSRState,
33
34
  serializeState,
34
35
  ssrSuspense,
35
- suspenseSwapScript
36
+ suspenseSwapScript,
37
+ trustHTML
36
38
  };
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Converts an HTMLElement tree to an HTML string for server-side rendering.
3
+ */
4
+ declare function renderToString(element: HTMLElement | DocumentFragment | Node): string;
5
+ /**
6
+ * Hydrates a server-rendered DOM tree by attaching event listeners
7
+ * and activating reactive bindings.
8
+ */
9
+ declare function hydrate(component: () => HTMLElement, container: HTMLElement): void;
10
+ /**
11
+ * Branded type for raw HTML that has been explicitly marked as trusted.
12
+ * Use `trustHTML()` to create a value of this type. This prevents
13
+ * accidental injection of unsanitized user input into `headExtra`.
14
+ */
15
+ type TrustedHTML = string & {
16
+ readonly __brand: "TrustedHTML";
17
+ };
18
+ /**
19
+ * Mark an HTML string as trusted for use in contexts that accept raw HTML
20
+ * (e.g. `renderToDocument({ headExtra })`). Only call this on
21
+ * developer-controlled strings — never on user input.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const extra = trustHTML('<link rel="preconnect" href="https://fonts.googleapis.com">');
26
+ * renderToDocument(App, { headExtra: extra });
27
+ * ```
28
+ */
29
+ declare function trustHTML(html: string): TrustedHTML;
30
+ /**
31
+ * Renders a component to a full HTML document string.
32
+ *
33
+ * `headExtra` requires a `TrustedHTML` value created via `trustHTML()`.
34
+ * This prevents accidental injection of unsanitized user input.
35
+ */
36
+ declare function renderToDocument(component: () => HTMLElement, options?: {
37
+ title?: string;
38
+ meta?: Record<string, string>[];
39
+ links?: Record<string, string>[];
40
+ scripts?: string[];
41
+ bodyAttrs?: Record<string, string>;
42
+ /**
43
+ * Raw HTML injected into `<head>`. Must be wrapped in `trustHTML()`
44
+ * to confirm the content is developer-controlled.
45
+ */
46
+ headExtra?: TrustedHTML;
47
+ }): string;
48
+ /**
49
+ * Renders a component tree to an async iterable of HTML chunks.
50
+ * Enables progressive server-side rendering — the consumer can write
51
+ * each chunk to a response stream as it becomes available.
52
+ */
53
+ declare function renderToStream(element: HTMLElement | DocumentFragment | Node): AsyncGenerator<string>;
54
+ /**
55
+ * Collects the full output of renderToStream into a string.
56
+ */
57
+ declare function collectStream(stream: AsyncGenerator<string> | AsyncIterable<string>): Promise<string>;
58
+ /**
59
+ * Renders a component tree to a Web ReadableStream<string>.
60
+ * Compatible with Node 18+, Deno, and edge runtimes.
61
+ * Uses pull-based backpressure — chunks are produced on demand.
62
+ */
63
+ declare function renderToReadableStream(element: HTMLElement | DocumentFragment | Node): ReadableStream<string>;
64
+ /**
65
+ * Marks an element as a hydration island. During partial hydration
66
+ * only elements marked with `data-sibu-island` will be hydrated.
67
+ */
68
+ declare function island(id: string, component: () => HTMLElement): HTMLElement;
69
+ /**
70
+ * Hydrate only elements marked as islands (`data-sibu-island`).
71
+ * Non-island content keeps its server-rendered HTML untouched.
72
+ */
73
+ declare function hydrateIslands(container: HTMLElement, islands: Record<string, () => HTMLElement>): void;
74
+ /**
75
+ * Progressively hydrate islands only when they enter the viewport.
76
+ * Uses IntersectionObserver to defer hydration of off-screen islands,
77
+ * reducing initial JavaScript execution cost.
78
+ *
79
+ * Returns a cleanup function that disconnects all observers.
80
+ */
81
+ declare function hydrateProgressively(container: HTMLElement, islands: Record<string, () => HTMLElement>, options?: IntersectionObserverInit): () => void;
82
+ /**
83
+ * Reset SSR state between requests. Call at the start of each SSR render
84
+ * to prevent ID drift in long-lived server processes.
85
+ */
86
+ declare function resetSSRState(): void;
87
+ /**
88
+ * Create a suspense boundary for SSR streaming.
89
+ * Renders fallback HTML inline and returns a promise for the resolved content.
90
+ *
91
+ * The returned element contains the fallback UI with a `data-sibu-suspense-id`
92
+ * marker. The promise resolves to `{ id, html }` once async content is ready.
93
+ */
94
+ declare function ssrSuspense(props: {
95
+ fallback: () => HTMLElement;
96
+ content: () => Promise<HTMLElement>;
97
+ }): {
98
+ element: HTMLElement;
99
+ promise: Promise<{
100
+ id: string;
101
+ html: string;
102
+ }>;
103
+ };
104
+ /**
105
+ * Generate an inline script that swaps a suspense fallback with resolved content.
106
+ * The id is escaped for both JS string and HTML attribute contexts to prevent injection.
107
+ */
108
+ declare function suspenseSwapScript(id: string, nonce?: string): string;
109
+ /**
110
+ * Renders a component tree with suspense boundaries as a stream.
111
+ * Yields the main tree HTML first (including fallback content for suspended
112
+ * boundaries), then flushes resolved content with inline swap scripts.
113
+ */
114
+ declare function renderToSuspenseStream(element: HTMLElement | DocumentFragment | Node, pendingBoundaries?: Promise<{
115
+ id: string;
116
+ html: string;
117
+ }>[]): AsyncGenerator<string>;
118
+ /**
119
+ * Serialize application state into an HTML script tag for SSR.
120
+ * The serialized data is embedded in the document and picked up
121
+ * on the client with `deserializeState()`.
122
+ */
123
+ declare function serializeState(state: Record<string, unknown>, nonce?: string): string;
124
+ /**
125
+ * Retrieve state that was embedded by `serializeState()` during SSR.
126
+ *
127
+ * When a `validate` function is provided, it acts as a type guard —
128
+ * only data that passes validation is returned. This prevents
129
+ * tampered SSR payloads from being trusted by the client.
130
+ *
131
+ * @param validate Optional type guard to verify data integrity
132
+ */
133
+ declare function deserializeState<T = Record<string, unknown>>(validate?: (data: unknown) => data is T): T | undefined;
134
+
135
+ export { type TrustedHTML as T, hydrateIslands as a, hydrateProgressively as b, collectStream as c, deserializeState as d, renderToReadableStream as e, renderToStream as f, renderToString as g, hydrate as h, island as i, renderToSuspenseStream as j, resetSSRState as k, ssrSuspense as l, suspenseSwapScript as m, renderToDocument as r, serializeState as s, trustHTML as t };
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Converts an HTMLElement tree to an HTML string for server-side rendering.
3
+ */
4
+ declare function renderToString(element: HTMLElement | DocumentFragment | Node): string;
5
+ /**
6
+ * Hydrates a server-rendered DOM tree by attaching event listeners
7
+ * and activating reactive bindings.
8
+ */
9
+ declare function hydrate(component: () => HTMLElement, container: HTMLElement): void;
10
+ /**
11
+ * Branded type for raw HTML that has been explicitly marked as trusted.
12
+ * Use `trustHTML()` to create a value of this type. This prevents
13
+ * accidental injection of unsanitized user input into `headExtra`.
14
+ */
15
+ type TrustedHTML = string & {
16
+ readonly __brand: "TrustedHTML";
17
+ };
18
+ /**
19
+ * Mark an HTML string as trusted for use in contexts that accept raw HTML
20
+ * (e.g. `renderToDocument({ headExtra })`). Only call this on
21
+ * developer-controlled strings — never on user input.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const extra = trustHTML('<link rel="preconnect" href="https://fonts.googleapis.com">');
26
+ * renderToDocument(App, { headExtra: extra });
27
+ * ```
28
+ */
29
+ declare function trustHTML(html: string): TrustedHTML;
30
+ /**
31
+ * Renders a component to a full HTML document string.
32
+ *
33
+ * `headExtra` requires a `TrustedHTML` value created via `trustHTML()`.
34
+ * This prevents accidental injection of unsanitized user input.
35
+ */
36
+ declare function renderToDocument(component: () => HTMLElement, options?: {
37
+ title?: string;
38
+ meta?: Record<string, string>[];
39
+ links?: Record<string, string>[];
40
+ scripts?: string[];
41
+ bodyAttrs?: Record<string, string>;
42
+ /**
43
+ * Raw HTML injected into `<head>`. Must be wrapped in `trustHTML()`
44
+ * to confirm the content is developer-controlled.
45
+ */
46
+ headExtra?: TrustedHTML;
47
+ }): string;
48
+ /**
49
+ * Renders a component tree to an async iterable of HTML chunks.
50
+ * Enables progressive server-side rendering — the consumer can write
51
+ * each chunk to a response stream as it becomes available.
52
+ */
53
+ declare function renderToStream(element: HTMLElement | DocumentFragment | Node): AsyncGenerator<string>;
54
+ /**
55
+ * Collects the full output of renderToStream into a string.
56
+ */
57
+ declare function collectStream(stream: AsyncGenerator<string> | AsyncIterable<string>): Promise<string>;
58
+ /**
59
+ * Renders a component tree to a Web ReadableStream<string>.
60
+ * Compatible with Node 18+, Deno, and edge runtimes.
61
+ * Uses pull-based backpressure — chunks are produced on demand.
62
+ */
63
+ declare function renderToReadableStream(element: HTMLElement | DocumentFragment | Node): ReadableStream<string>;
64
+ /**
65
+ * Marks an element as a hydration island. During partial hydration
66
+ * only elements marked with `data-sibu-island` will be hydrated.
67
+ */
68
+ declare function island(id: string, component: () => HTMLElement): HTMLElement;
69
+ /**
70
+ * Hydrate only elements marked as islands (`data-sibu-island`).
71
+ * Non-island content keeps its server-rendered HTML untouched.
72
+ */
73
+ declare function hydrateIslands(container: HTMLElement, islands: Record<string, () => HTMLElement>): void;
74
+ /**
75
+ * Progressively hydrate islands only when they enter the viewport.
76
+ * Uses IntersectionObserver to defer hydration of off-screen islands,
77
+ * reducing initial JavaScript execution cost.
78
+ *
79
+ * Returns a cleanup function that disconnects all observers.
80
+ */
81
+ declare function hydrateProgressively(container: HTMLElement, islands: Record<string, () => HTMLElement>, options?: IntersectionObserverInit): () => void;
82
+ /**
83
+ * Reset SSR state between requests. Call at the start of each SSR render
84
+ * to prevent ID drift in long-lived server processes.
85
+ */
86
+ declare function resetSSRState(): void;
87
+ /**
88
+ * Create a suspense boundary for SSR streaming.
89
+ * Renders fallback HTML inline and returns a promise for the resolved content.
90
+ *
91
+ * The returned element contains the fallback UI with a `data-sibu-suspense-id`
92
+ * marker. The promise resolves to `{ id, html }` once async content is ready.
93
+ */
94
+ declare function ssrSuspense(props: {
95
+ fallback: () => HTMLElement;
96
+ content: () => Promise<HTMLElement>;
97
+ }): {
98
+ element: HTMLElement;
99
+ promise: Promise<{
100
+ id: string;
101
+ html: string;
102
+ }>;
103
+ };
104
+ /**
105
+ * Generate an inline script that swaps a suspense fallback with resolved content.
106
+ * The id is escaped for both JS string and HTML attribute contexts to prevent injection.
107
+ */
108
+ declare function suspenseSwapScript(id: string, nonce?: string): string;
109
+ /**
110
+ * Renders a component tree with suspense boundaries as a stream.
111
+ * Yields the main tree HTML first (including fallback content for suspended
112
+ * boundaries), then flushes resolved content with inline swap scripts.
113
+ */
114
+ declare function renderToSuspenseStream(element: HTMLElement | DocumentFragment | Node, pendingBoundaries?: Promise<{
115
+ id: string;
116
+ html: string;
117
+ }>[]): AsyncGenerator<string>;
118
+ /**
119
+ * Serialize application state into an HTML script tag for SSR.
120
+ * The serialized data is embedded in the document and picked up
121
+ * on the client with `deserializeState()`.
122
+ */
123
+ declare function serializeState(state: Record<string, unknown>, nonce?: string): string;
124
+ /**
125
+ * Retrieve state that was embedded by `serializeState()` during SSR.
126
+ *
127
+ * When a `validate` function is provided, it acts as a type guard —
128
+ * only data that passes validation is returned. This prevents
129
+ * tampered SSR payloads from being trusted by the client.
130
+ *
131
+ * @param validate Optional type guard to verify data integrity
132
+ */
133
+ declare function deserializeState<T = Record<string, unknown>>(validate?: (data: unknown) => data is T): T | undefined;
134
+
135
+ export { type TrustedHTML as T, hydrateIslands as a, hydrateProgressively as b, collectStream as c, deserializeState as d, renderToReadableStream as e, renderToStream as f, renderToString as g, hydrate as h, island as i, renderToSuspenseStream as j, resetSSRState as k, ssrSuspense as l, suspenseSwapScript as m, renderToDocument as r, serializeState as s, trustHTML as t };
package/dist/ssr.cjs CHANGED
@@ -55,6 +55,7 @@ __export(ssr_exports, {
55
55
  setStructuredData: () => setStructuredData,
56
56
  ssrSuspense: () => ssrSuspense,
57
57
  suspenseSwapScript: () => suspenseSwapScript,
58
+ trustHTML: () => trustHTML,
58
59
  wasm: () => wasm,
59
60
  worker: () => worker,
60
61
  workerFn: () => workerFn
@@ -156,6 +157,9 @@ function hydrateNode(serverNode, clientNode) {
156
157
  hydrateNode(serverChildren[i2], clientChildren[i2]);
157
158
  }
158
159
  }
160
+ function trustHTML(html2) {
161
+ return html2;
162
+ }
159
163
  function renderToDocument(component, options = {}) {
160
164
  let content;
161
165
  try {
@@ -1000,7 +1004,7 @@ function bindChildNode(placeholder, getter) {
1000
1004
  const node = lastNodes[i2];
1001
1005
  if (node.parentNode) node.parentNode.removeChild(node);
1002
1006
  }
1003
- if (result == null) {
1007
+ if (result == null || typeof result === "boolean") {
1004
1008
  lastNodes.length = 0;
1005
1009
  return;
1006
1010
  }
@@ -1015,6 +1019,7 @@ function bindChildNode(placeholder, getter) {
1015
1019
  if (lastNodes.length < result.length) lastNodes = new Array(result.length);
1016
1020
  for (let i2 = 0; i2 < result.length; i2++) {
1017
1021
  const item = result[i2];
1022
+ if (item == null || typeof item === "boolean") continue;
1018
1023
  const node = item instanceof Node ? item : document.createTextNode(String(item));
1019
1024
  parent.insertBefore(node, anchor);
1020
1025
  lastNodes[count++] = node;
@@ -1129,6 +1134,9 @@ function appendChildren(el, nodes) {
1129
1134
  el.textContent = String(nodes);
1130
1135
  return;
1131
1136
  }
1137
+ if (typeof nodes === "boolean" || nodes == null) {
1138
+ return;
1139
+ }
1132
1140
  if (typeof nodes === "function") {
1133
1141
  const ph = document.createComment("");
1134
1142
  el.appendChild(ph);
@@ -1157,11 +1165,11 @@ function appendChildren(el, nodes) {
1157
1165
  registerDisposer(el, bindChildNode(ph, inner));
1158
1166
  } else if (inner instanceof Node) {
1159
1167
  el.appendChild(inner);
1160
- } else if (inner != null) {
1168
+ } else if (inner != null && typeof inner !== "boolean") {
1161
1169
  el.appendChild(document.createTextNode(String(inner)));
1162
1170
  }
1163
1171
  }
1164
- } else if (c != null) {
1172
+ } else if (c != null && typeof c !== "boolean") {
1165
1173
  el.appendChild(document.createTextNode(String(c)));
1166
1174
  }
1167
1175
  }
@@ -1832,6 +1840,7 @@ function isWasmCached(key) {
1832
1840
  setStructuredData,
1833
1841
  ssrSuspense,
1834
1842
  suspenseSwapScript,
1843
+ trustHTML,
1835
1844
  wasm,
1836
1845
  worker,
1837
1846
  workerFn