@blac/core 2.0.12 → 2.0.14

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 (457) hide show
  1. package/README.md +85 -3
  2. package/dist/Cubit-9jal5zdZ.cjs +1 -1
  3. package/dist/Cubit-BAUPiUF7.cjs +359 -286
  4. package/dist/Cubit-BBKF3PIg.js +287 -0
  5. package/dist/Cubit-BBKF3PIg.js.map +1 -0
  6. package/dist/Cubit-BC70gaiA.js +453 -0
  7. package/dist/Cubit-BC70gaiA.js.map +1 -0
  8. package/dist/Cubit-BOgUZva7.js +342 -266
  9. package/dist/Cubit-BOxMvpfc.js +291 -0
  10. package/dist/Cubit-BOxMvpfc.js.map +1 -0
  11. package/dist/Cubit-BTznt8zg.js +1 -1
  12. package/dist/Cubit-BogJXkLm.js +278 -0
  13. package/dist/Cubit-BogJXkLm.js.map +1 -0
  14. package/dist/Cubit-C-8R_8db.cjs +475 -0
  15. package/dist/Cubit-C-8R_8db.cjs.map +1 -0
  16. package/dist/Cubit-C3Mw3EoO.cjs +401 -0
  17. package/dist/Cubit-C3Mw3EoO.cjs.map +1 -0
  18. package/dist/Cubit-CO8Fr72L.cjs +447 -0
  19. package/dist/Cubit-CO8Fr72L.cjs.map +1 -0
  20. package/dist/Cubit-COfHT1Bm.cjs +321 -0
  21. package/dist/Cubit-COfHT1Bm.cjs.map +1 -0
  22. package/dist/Cubit-CROWjjs9.js +481 -0
  23. package/dist/Cubit-CROWjjs9.js.map +1 -0
  24. package/dist/Cubit-CWP8Ddzx.cjs +510 -0
  25. package/dist/Cubit-CWP8Ddzx.cjs.map +1 -0
  26. package/dist/Cubit-CXxh9iol.js +302 -0
  27. package/dist/Cubit-CXxh9iol.js.map +1 -0
  28. package/dist/Cubit-CYOWfzQt.cjs +317 -0
  29. package/dist/Cubit-CYOWfzQt.cjs.map +1 -0
  30. package/dist/Cubit-CZaf_fp4.cjs +1 -1
  31. package/dist/Cubit-C_dUEUdd.cjs +359 -286
  32. package/dist/Cubit-C_rxRCTN.cjs +523 -0
  33. package/dist/Cubit-C_rxRCTN.cjs.map +1 -0
  34. package/dist/Cubit-CcKgMEBO.js +299 -0
  35. package/dist/Cubit-CcKgMEBO.js.map +1 -0
  36. package/dist/Cubit-CfT6Y1jl.js +346 -0
  37. package/dist/Cubit-CfT6Y1jl.js.map +1 -0
  38. package/dist/Cubit-CynJruuO.js +369 -0
  39. package/dist/Cubit-CynJruuO.js.map +1 -0
  40. package/dist/Cubit-D2vQ6nMb.js +342 -266
  41. package/dist/Cubit-D7jOZCoZ.js +342 -266
  42. package/dist/Cubit-D9j3IGPc.cjs +523 -0
  43. package/dist/Cubit-D9j3IGPc.cjs.map +1 -0
  44. package/dist/Cubit-DKEY9WYq.cjs +296 -0
  45. package/dist/Cubit-DKEY9WYq.cjs.map +1 -0
  46. package/dist/Cubit-DMV_0TCp.js +481 -0
  47. package/dist/Cubit-DMV_0TCp.js.map +1 -0
  48. package/dist/Cubit-DP5DXPUK.js +342 -266
  49. package/dist/Cubit-DRFkzD2h.js +426 -0
  50. package/dist/Cubit-DRFkzD2h.js.map +1 -0
  51. package/dist/Cubit-DbnhTUaZ.cjs +359 -286
  52. package/dist/Cubit-DrqG3SP3.cjs +370 -0
  53. package/dist/Cubit-DrqG3SP3.cjs.map +1 -0
  54. package/dist/Cubit-DsDkCo42.cjs +313 -0
  55. package/dist/Cubit-DsDkCo42.cjs.map +1 -0
  56. package/dist/Cubit-DwRw1E9D.cjs +309 -0
  57. package/dist/Cubit-DwRw1E9D.cjs.map +1 -0
  58. package/dist/Cubit-Dw_kFBgc.js +1 -1
  59. package/dist/Cubit-KiXZCubP.cjs +1 -1
  60. package/dist/Cubit-Ksj7G4uR.js +342 -266
  61. package/dist/Cubit-MkjbpcPf.cjs +359 -286
  62. package/dist/Cubit-NRhvdDQ6.js +297 -0
  63. package/dist/Cubit-NRhvdDQ6.js.map +1 -0
  64. package/dist/Cubit-PMTXxI_u.js +1 -1
  65. package/dist/Cubit-VJuu2tt9.js +481 -0
  66. package/dist/Cubit-VJuu2tt9.js.map +1 -0
  67. package/dist/Cubit-jz922NKf.cjs +320 -0
  68. package/dist/Cubit-jz922NKf.cjs.map +1 -0
  69. package/dist/Cubit-kU5_4jgC.cjs +359 -286
  70. package/dist/StateContainerRegistry-B4yVMYbx.cjs +1057 -0
  71. package/dist/StateContainerRegistry-B4yVMYbx.cjs.map +1 -0
  72. package/dist/StateContainerRegistry-BAcxouCu.js +723 -0
  73. package/dist/StateContainerRegistry-BAcxouCu.js.map +1 -0
  74. package/dist/StateContainerRegistry-BK57H92E.js +747 -0
  75. package/dist/StateContainerRegistry-BK57H92E.js.map +1 -0
  76. package/dist/StateContainerRegistry-BRBATSrx.cjs +1030 -0
  77. package/dist/StateContainerRegistry-BRBATSrx.cjs.map +1 -0
  78. package/dist/StateContainerRegistry-BgBIKcQF.js +956 -0
  79. package/dist/StateContainerRegistry-BgBIKcQF.js.map +1 -0
  80. package/dist/StateContainerRegistry-BglEhqdA.js +709 -0
  81. package/dist/StateContainerRegistry-BglEhqdA.js.map +1 -0
  82. package/dist/StateContainerRegistry-BhcnG0DF.js +625 -562
  83. package/dist/StateContainerRegistry-BpO5t-0i.js +682 -0
  84. package/dist/StateContainerRegistry-BpO5t-0i.js.map +1 -0
  85. package/dist/StateContainerRegistry-BqS-wpb_.js +957 -0
  86. package/dist/StateContainerRegistry-BqS-wpb_.js.map +1 -0
  87. package/dist/StateContainerRegistry-BrEGYPZT.cjs +1029 -0
  88. package/dist/StateContainerRegistry-BrEGYPZT.cjs.map +1 -0
  89. package/dist/StateContainerRegistry-Bxfne4A7.cjs +908 -0
  90. package/dist/StateContainerRegistry-Bxfne4A7.cjs.map +1 -0
  91. package/dist/StateContainerRegistry-C0E7vsgy.js +758 -0
  92. package/dist/StateContainerRegistry-C0E7vsgy.js.map +1 -0
  93. package/dist/StateContainerRegistry-C0I77Ndz.cjs +920 -0
  94. package/dist/StateContainerRegistry-C0I77Ndz.cjs.map +1 -0
  95. package/dist/StateContainerRegistry-CDH9mnQS.cjs +715 -0
  96. package/dist/StateContainerRegistry-CDH9mnQS.cjs.map +1 -0
  97. package/dist/StateContainerRegistry-CTOXUf75.cjs +742 -0
  98. package/dist/StateContainerRegistry-CTOXUf75.cjs.map +1 -0
  99. package/dist/StateContainerRegistry-CX2CBOmv.cjs +795 -0
  100. package/dist/StateContainerRegistry-CX2CBOmv.cjs.map +1 -0
  101. package/dist/StateContainerRegistry-CXnnf2-l.js +867 -0
  102. package/dist/StateContainerRegistry-CXnnf2-l.js.map +1 -0
  103. package/dist/StateContainerRegistry-CehuIpK_.cjs +811 -0
  104. package/dist/StateContainerRegistry-CehuIpK_.cjs.map +1 -0
  105. package/dist/StateContainerRegistry-Ci0ajc5g.js +720 -0
  106. package/dist/StateContainerRegistry-Ci0ajc5g.js.map +1 -0
  107. package/dist/StateContainerRegistry-Ck2-XmT_.js +587 -527
  108. package/dist/StateContainerRegistry-D1lVJFGL.cjs +753 -0
  109. package/dist/StateContainerRegistry-D1lVJFGL.cjs.map +1 -0
  110. package/dist/StateContainerRegistry-DC4N73O6.js +632 -569
  111. package/dist/StateContainerRegistry-DOuGI-l5.js +645 -582
  112. package/dist/StateContainerRegistry-DT66lr3I.cjs +651 -596
  113. package/dist/StateContainerRegistry-DmmzYa7S.js +974 -0
  114. package/dist/StateContainerRegistry-DmmzYa7S.js.map +1 -0
  115. package/dist/StateContainerRegistry-Upsrlg9G.cjs +756 -0
  116. package/dist/StateContainerRegistry-Upsrlg9G.cjs.map +1 -0
  117. package/dist/StateContainerRegistry-WznfcA-Q.js +855 -0
  118. package/dist/StateContainerRegistry-WznfcA-Q.js.map +1 -0
  119. package/dist/StateContainerRegistry-Yph6UCA_.js +637 -569
  120. package/dist/StateContainerRegistry-mseeTqSA.cjs +671 -616
  121. package/dist/StateContainerRegistry-pRNxHNFD.cjs +658 -603
  122. package/dist/StateContainerRegistry-vXMWtG7J.cjs +613 -561
  123. package/dist/StateContainerRegistry-v_prqMcI.cjs +663 -603
  124. package/dist/branded-BSeA_mZO.cjs.map +1 -1
  125. package/dist/branded-DCqi3De1.cjs +11 -11
  126. package/dist/branded-DwtzSsg0.js.map +1 -1
  127. package/dist/branded-Max3xOTA.js +6 -6
  128. package/dist/config-0ZD9i3wy.js +16 -0
  129. package/dist/config-0ZD9i3wy.js.map +1 -0
  130. package/dist/config-B3NIwDQv.cjs +32 -0
  131. package/dist/config-B3NIwDQv.cjs.map +1 -0
  132. package/dist/config-BKGHop0V.js +16 -0
  133. package/dist/config-BKGHop0V.js.map +1 -0
  134. package/dist/config-BKoaAlmb.js +5 -5
  135. package/dist/config-BPj08-8h.cjs +32 -0
  136. package/dist/config-BPj08-8h.cjs.map +1 -0
  137. package/dist/config-BR0Xy-Tn.cjs +32 -0
  138. package/dist/config-BR0Xy-Tn.cjs.map +1 -0
  139. package/dist/config-B_4xXpvK.cjs +32 -0
  140. package/dist/config-B_4xXpvK.cjs.map +1 -0
  141. package/dist/config-BflrQM4_.cjs +32 -0
  142. package/dist/config-BflrQM4_.cjs.map +1 -0
  143. package/dist/config-BzObBsk2.cjs +32 -0
  144. package/dist/config-BzObBsk2.cjs.map +1 -0
  145. package/dist/config-C0yumL1H.cjs +32 -0
  146. package/dist/config-C0yumL1H.cjs.map +1 -0
  147. package/dist/config-C8xqVHTf.js +16 -0
  148. package/dist/config-C8xqVHTf.js.map +1 -0
  149. package/dist/config-CCUhIYIF.js +5 -5
  150. package/dist/config-CGo__MAt.js +16 -0
  151. package/dist/config-CGo__MAt.js.map +1 -0
  152. package/dist/config-CQH9fTY-.cjs +32 -0
  153. package/dist/config-CQH9fTY-.cjs.map +1 -0
  154. package/dist/config-CR_Bz7RD.js +5 -5
  155. package/dist/config-CTOa-yPN.cjs +20 -20
  156. package/dist/config-Cd7Q-B4g.js +16 -0
  157. package/dist/config-Cd7Q-B4g.js.map +1 -0
  158. package/dist/config-CmDEX-1o.js +16 -0
  159. package/dist/config-CmDEX-1o.js.map +1 -0
  160. package/dist/config-CoNMTnMA.cjs +32 -0
  161. package/dist/config-CoNMTnMA.cjs.map +1 -0
  162. package/dist/config-Cwj8-C1J.js +16 -0
  163. package/dist/config-Cwj8-C1J.js.map +1 -0
  164. package/dist/config-D3jisfdj.cjs +20 -20
  165. package/dist/config-D4GifZQ4.js +5 -5
  166. package/dist/config-DDrSQGpQ.cjs +20 -20
  167. package/dist/config-DEcslxan.cjs +32 -0
  168. package/dist/config-DEcslxan.cjs.map +1 -0
  169. package/dist/config-DMNZ2YLV.cjs +20 -20
  170. package/dist/config-De9oQ6Ki.js +16 -0
  171. package/dist/config-De9oQ6Ki.js.map +1 -0
  172. package/dist/config-DoHx0Xsl.js +16 -0
  173. package/dist/config-DoHx0Xsl.js.map +1 -0
  174. package/dist/config-DokTzpr8.cjs +20 -20
  175. package/dist/config-DslYBm4Z.js +5 -5
  176. package/dist/config-H6FAqbW4.cjs +32 -0
  177. package/dist/config-H6FAqbW4.cjs.map +1 -0
  178. package/dist/config-Yp645dGK.js +16 -0
  179. package/dist/config-Yp645dGK.js.map +1 -0
  180. package/dist/config-ispAzOZV.js +16 -0
  181. package/dist/config-ispAzOZV.js.map +1 -0
  182. package/dist/config.d.cts +72 -0
  183. package/dist/config.d.ts +72 -0
  184. package/dist/constants.d.cts +18 -28
  185. package/dist/constants.d.ts +18 -28
  186. package/dist/core/Cubit.d.ts +14 -5
  187. package/dist/core/StateContainer.d.ts +112 -15
  188. package/dist/core/StateContainerRegistry.d.ts +66 -7
  189. package/dist/core/symbols.d.ts +26 -1
  190. package/dist/debug.cjs +3 -3
  191. package/dist/debug.js +3 -3
  192. package/dist/decorators/blac.d.ts +17 -0
  193. package/dist/ensure-9VEq5H0L.js +3 -3
  194. package/dist/ensure-BB6xHQAF.cjs +14 -0
  195. package/dist/ensure-BB6xHQAF.cjs.map +1 -0
  196. package/dist/ensure-BNDfTzqg.cjs +8 -8
  197. package/dist/ensure-BVCnjU7r.js +343 -267
  198. package/dist/ensure-BbzGXjep.cjs +8 -8
  199. package/dist/ensure-BlIaQai6.js +9 -0
  200. package/dist/ensure-BlIaQai6.js.map +1 -0
  201. package/dist/ensure-Bm3oHxga.js +9 -0
  202. package/dist/ensure-Bm3oHxga.js.map +1 -0
  203. package/dist/ensure-C3eIRs6e.cjs +14 -0
  204. package/dist/ensure-C3eIRs6e.cjs.map +1 -0
  205. package/dist/ensure-CJZL7bcA.cjs +365 -292
  206. package/dist/ensure-CN6unBOe.cjs +14 -0
  207. package/dist/ensure-CN6unBOe.cjs.map +1 -0
  208. package/dist/ensure-CU-B1ywv.js +3 -3
  209. package/dist/ensure-CWKzeno7.js +9 -0
  210. package/dist/ensure-CWKzeno7.js.map +1 -0
  211. package/dist/ensure-CkENsuQ9.js +9 -0
  212. package/dist/ensure-CkENsuQ9.js.map +1 -0
  213. package/dist/ensure-Cm-4_LSh.cjs +14 -0
  214. package/dist/ensure-Cm-4_LSh.cjs.map +1 -0
  215. package/dist/ensure-Cqex5r1P.cjs +14 -0
  216. package/dist/ensure-Cqex5r1P.cjs.map +1 -0
  217. package/dist/ensure-Cv5AbNGZ.js +9 -0
  218. package/dist/ensure-Cv5AbNGZ.js.map +1 -0
  219. package/dist/ensure-D63lEMUK.cjs +8 -8
  220. package/dist/ensure-DGEtPU9A.cjs +14 -0
  221. package/dist/ensure-DGEtPU9A.cjs.map +1 -0
  222. package/dist/ensure-DM3qb336.cjs +14 -0
  223. package/dist/ensure-DM3qb336.cjs.map +1 -0
  224. package/dist/ensure-DME-_T0j.cjs +14 -0
  225. package/dist/ensure-DME-_T0j.cjs.map +1 -0
  226. package/dist/ensure-DWd0GCYB.js +9 -0
  227. package/dist/ensure-DWd0GCYB.js.map +1 -0
  228. package/dist/ensure-DamKOP6q.cjs +8 -8
  229. package/dist/ensure-Dcfptl-A.js +9 -0
  230. package/dist/ensure-Dcfptl-A.js.map +1 -0
  231. package/dist/ensure-Def-EBWG.js +3 -3
  232. package/dist/ensure-DnHL5QiQ.cjs +14 -0
  233. package/dist/ensure-DnHL5QiQ.cjs.map +1 -0
  234. package/dist/ensure-Dr7I78Ku.cjs +14 -0
  235. package/dist/ensure-Dr7I78Ku.cjs.map +1 -0
  236. package/dist/ensure-SLVdGd5b.js +9 -0
  237. package/dist/ensure-SLVdGd5b.js.map +1 -0
  238. package/dist/ensure-Sb92MCXu.js +3 -3
  239. package/dist/ensure-gFlvevGm.cjs +14 -0
  240. package/dist/ensure-gFlvevGm.cjs.map +1 -0
  241. package/dist/ensure-l2-H7S5W.js +9 -0
  242. package/dist/ensure-l2-H7S5W.js.map +1 -0
  243. package/dist/ensure-mkL-3qh8.js +9 -0
  244. package/dist/ensure-mkL-3qh8.js.map +1 -0
  245. package/dist/ensure-n80crSlX.js +3 -3
  246. package/dist/ensure-nCxg7MCN.js +9 -0
  247. package/dist/ensure-nCxg7MCN.js.map +1 -0
  248. package/dist/ensure-vS71MV4q.cjs +8 -8
  249. package/dist/index.cjs +40 -15
  250. package/dist/index.cjs.map +1 -1
  251. package/dist/index.d.cts +15 -4
  252. package/dist/index.d.ts +15 -4
  253. package/dist/index.js +23 -10
  254. package/dist/index.js.map +1 -1
  255. package/dist/management-6oQbmf0z.js +41 -0
  256. package/dist/management-6oQbmf0z.js.map +1 -0
  257. package/dist/management-B46QwA9Y.js +41 -0
  258. package/dist/management-B46QwA9Y.js.map +1 -0
  259. package/dist/management-B9yrRpeg.js +41 -0
  260. package/dist/management-B9yrRpeg.js.map +1 -0
  261. package/dist/management-BCKTEZ8Q.js +41 -0
  262. package/dist/management-BCKTEZ8Q.js.map +1 -0
  263. package/dist/management-BbMzdXbT.js +41 -0
  264. package/dist/management-BbMzdXbT.js.map +1 -0
  265. package/dist/management-Bg652agq.js +20 -11
  266. package/dist/management-BnedF5ZD.cjs +79 -0
  267. package/dist/management-BnedF5ZD.cjs.map +1 -0
  268. package/dist/management-BoUa99eB.cjs +79 -0
  269. package/dist/management-BoUa99eB.cjs.map +1 -0
  270. package/dist/management-C4SHcrJm.cjs +79 -0
  271. package/dist/management-C4SHcrJm.cjs.map +1 -0
  272. package/dist/management-CK-GL3wY.js +41 -0
  273. package/dist/management-CK-GL3wY.js.map +1 -0
  274. package/dist/management-CPhgY8OE.js +41 -0
  275. package/dist/management-CPhgY8OE.js.map +1 -0
  276. package/dist/management-CU_V3LIP.js +20 -11
  277. package/dist/management-CUwXDSi9.cjs +79 -0
  278. package/dist/management-CUwXDSi9.cjs.map +1 -0
  279. package/dist/management-CaqiyNzB.js +20 -11
  280. package/dist/management-Cin-JvYe.js +20 -11
  281. package/dist/management-ClaXym0F.cjs +50 -50
  282. package/dist/management-DL0Uzsoz.js +41 -0
  283. package/dist/management-DL0Uzsoz.js.map +1 -0
  284. package/dist/management-DLdAQfqk.cjs +79 -0
  285. package/dist/management-DLdAQfqk.cjs.map +1 -0
  286. package/dist/management-DMZ8qpwr.cjs +79 -0
  287. package/dist/management-DMZ8qpwr.cjs.map +1 -0
  288. package/dist/management-DTzcC6aD.cjs +79 -0
  289. package/dist/management-DTzcC6aD.cjs.map +1 -0
  290. package/dist/management-DYLNyj9p.cjs +79 -0
  291. package/dist/management-DYLNyj9p.cjs.map +1 -0
  292. package/dist/management-Dag9u4t6.cjs +50 -50
  293. package/dist/management-DbMRdDBo.cjs +50 -50
  294. package/dist/management-DfnDAKmP.js +41 -0
  295. package/dist/management-DfnDAKmP.js.map +1 -0
  296. package/dist/management-DjBU1gtb.cjs +79 -0
  297. package/dist/management-DjBU1gtb.cjs.map +1 -0
  298. package/dist/management-DwCozsY8.js +41 -0
  299. package/dist/management-DwCozsY8.js.map +1 -0
  300. package/dist/management-H4m3ciJO.js +32 -0
  301. package/dist/management-H4m3ciJO.js.map +1 -0
  302. package/dist/management-Xo3A6Za3.cjs +79 -0
  303. package/dist/management-Xo3A6Za3.cjs.map +1 -0
  304. package/dist/management-ZU2YzOkr.js +18 -10
  305. package/dist/management-baPDwA9n.cjs +50 -50
  306. package/dist/management-jQGCvZNN.cjs +44 -44
  307. package/dist/management-ry_KteFK.cjs +79 -0
  308. package/dist/management-ry_KteFK.cjs.map +1 -0
  309. package/dist/plugin/BlacPlugin.d.ts +70 -100
  310. package/dist/plugin/PluginManager.d.ts +67 -5
  311. package/dist/plugins.cjs +1 -1
  312. package/dist/plugins.d.cts +2 -2
  313. package/dist/plugins.d.ts +2 -2
  314. package/dist/plugins.js +1 -1
  315. package/dist/registry/acquire.d.ts +9 -2
  316. package/dist/registry/ensure.d.ts +2 -2
  317. package/dist/registry/index.d.ts +1 -1
  318. package/dist/resolve-dependencies-B2QggQAi.js +729 -0
  319. package/dist/resolve-dependencies-B2QggQAi.js.map +1 -0
  320. package/dist/resolve-dependencies-B6JDXvpr.js +739 -0
  321. package/dist/resolve-dependencies-B6JDXvpr.js.map +1 -0
  322. package/dist/resolve-dependencies-BAKAoD0U.js +878 -0
  323. package/dist/resolve-dependencies-BAKAoD0U.js.map +1 -0
  324. package/dist/resolve-dependencies-BFZQq60Y.cjs +724 -666
  325. package/dist/resolve-dependencies-BGafS3Ww.js +643 -561
  326. package/dist/resolve-dependencies-BHd34gS3.cjs +724 -666
  327. package/dist/resolve-dependencies-BNeayhbQ.cjs +840 -0
  328. package/dist/resolve-dependencies-BNeayhbQ.cjs.map +1 -0
  329. package/dist/resolve-dependencies-BWEMpuDy.js +729 -0
  330. package/dist/resolve-dependencies-BWEMpuDy.js.map +1 -0
  331. package/dist/resolve-dependencies-BiWkW2eS.js +643 -561
  332. package/dist/resolve-dependencies-BjxCztYD.js +739 -0
  333. package/dist/resolve-dependencies-BjxCztYD.js.map +1 -0
  334. package/dist/resolve-dependencies-BlyBV0hB.cjs +969 -0
  335. package/dist/resolve-dependencies-BlyBV0hB.cjs.map +1 -0
  336. package/dist/resolve-dependencies-By26rT_i.js +739 -0
  337. package/dist/resolve-dependencies-By26rT_i.js.map +1 -0
  338. package/dist/resolve-dependencies-C9Kf7AzY.cjs +832 -0
  339. package/dist/resolve-dependencies-C9Kf7AzY.cjs.map +1 -0
  340. package/dist/resolve-dependencies-CTzV1txG.js +643 -561
  341. package/dist/resolve-dependencies-CWjuGHiF.cjs +969 -0
  342. package/dist/resolve-dependencies-CWjuGHiF.cjs.map +1 -0
  343. package/dist/resolve-dependencies-ClSsP0DJ.cjs +830 -0
  344. package/dist/resolve-dependencies-ClSsP0DJ.cjs.map +1 -0
  345. package/dist/resolve-dependencies-D0vTzZgs.js +643 -561
  346. package/dist/resolve-dependencies-D2WnZMF-.cjs +724 -666
  347. package/dist/resolve-dependencies-DCBLTeza.cjs +969 -0
  348. package/dist/resolve-dependencies-DCBLTeza.cjs.map +1 -0
  349. package/dist/resolve-dependencies-DMlqYJR2.js +731 -0
  350. package/dist/resolve-dependencies-DMlqYJR2.js.map +1 -0
  351. package/dist/resolve-dependencies-DP6U1EYB.cjs +840 -0
  352. package/dist/resolve-dependencies-DP6U1EYB.cjs.map +1 -0
  353. package/dist/resolve-dependencies-DSQNXvnV.cjs +724 -666
  354. package/dist/resolve-dependencies-DV3HO_uH.js +878 -0
  355. package/dist/resolve-dependencies-DV3HO_uH.js.map +1 -0
  356. package/dist/resolve-dependencies-DXwMhP0Y.js +878 -0
  357. package/dist/resolve-dependencies-DXwMhP0Y.js.map +1 -0
  358. package/dist/resolve-dependencies-DbRWlt9u.js +878 -0
  359. package/dist/resolve-dependencies-DbRWlt9u.js.map +1 -0
  360. package/dist/resolve-dependencies-DcUUva2P.cjs +724 -666
  361. package/dist/resolve-dependencies-Dd8T6TLt.cjs +832 -0
  362. package/dist/resolve-dependencies-Dd8T6TLt.cjs.map +1 -0
  363. package/dist/resolve-dependencies-Dfdp_DZd.cjs +840 -0
  364. package/dist/resolve-dependencies-Dfdp_DZd.cjs.map +1 -0
  365. package/dist/resolve-dependencies-GJ8PNyNB.cjs +969 -0
  366. package/dist/resolve-dependencies-GJ8PNyNB.cjs.map +1 -0
  367. package/dist/resolve-dependencies-KSpTt4jy.cjs +830 -0
  368. package/dist/resolve-dependencies-KSpTt4jy.cjs.map +1 -0
  369. package/dist/resolve-dependencies-Nvjp4CwS.js +731 -0
  370. package/dist/resolve-dependencies-Nvjp4CwS.js.map +1 -0
  371. package/dist/resolve-dependencies-f-QUqYiL.js +643 -561
  372. package/dist/testing.cjs +27 -20
  373. package/dist/testing.cjs.map +1 -1
  374. package/dist/testing.d.cts +22 -1
  375. package/dist/testing.d.ts +22 -1
  376. package/dist/testing.js +27 -21
  377. package/dist/testing.js.map +1 -1
  378. package/dist/tracked-B77j2g9M.js +171 -151
  379. package/dist/tracked-BDVi2LKM.cjs +196 -175
  380. package/dist/tracked-BFdJCzL0.cjs +242 -0
  381. package/dist/tracked-BFdJCzL0.cjs.map +1 -0
  382. package/dist/tracked-BH-gX4T1.cjs +196 -175
  383. package/dist/tracked-BTHok3Dl.cjs +196 -175
  384. package/dist/tracked-BTbFkFeM.js +212 -0
  385. package/dist/tracked-BTbFkFeM.js.map +1 -0
  386. package/dist/tracked-BU_OBWqM.cjs +242 -0
  387. package/dist/tracked-BU_OBWqM.cjs.map +1 -0
  388. package/dist/tracked-BfctH2es.cjs +242 -0
  389. package/dist/tracked-BfctH2es.cjs.map +1 -0
  390. package/dist/tracked-BhQtzUhZ.js +212 -0
  391. package/dist/tracked-BhQtzUhZ.js.map +1 -0
  392. package/dist/tracked-BnqrYXiO.js +212 -0
  393. package/dist/tracked-BnqrYXiO.js.map +1 -0
  394. package/dist/tracked-BtgFOGup.js +212 -0
  395. package/dist/tracked-BtgFOGup.js.map +1 -0
  396. package/dist/tracked-C3nIS4J7.cjs +242 -0
  397. package/dist/tracked-C3nIS4J7.cjs.map +1 -0
  398. package/dist/tracked-C52awNV9.js +197 -0
  399. package/dist/tracked-C52awNV9.js.map +1 -0
  400. package/dist/tracked-CGzduF2m.js +212 -0
  401. package/dist/tracked-CGzduF2m.js.map +1 -0
  402. package/dist/tracked-CK_-ixtX.cjs +227 -0
  403. package/dist/tracked-CK_-ixtX.cjs.map +1 -0
  404. package/dist/tracked-CLlvURln.js +212 -0
  405. package/dist/tracked-CLlvURln.js.map +1 -0
  406. package/dist/tracked-CgHWmuGC.cjs +242 -0
  407. package/dist/tracked-CgHWmuGC.cjs.map +1 -0
  408. package/dist/tracked-CoAlC8fs.js +171 -151
  409. package/dist/tracked-D3Xjm1H1.cjs +242 -0
  410. package/dist/tracked-D3Xjm1H1.cjs.map +1 -0
  411. package/dist/tracked-DB6yMV5F.js +212 -0
  412. package/dist/tracked-DB6yMV5F.js.map +1 -0
  413. package/dist/tracked-DBn-bs_G.js +171 -151
  414. package/dist/tracked-DMBTDF0P.js +171 -151
  415. package/dist/tracked-DN3h3Rp1.js +197 -0
  416. package/dist/tracked-DN3h3Rp1.js.map +1 -0
  417. package/dist/tracked-DOGh1Q5Z.cjs +242 -0
  418. package/dist/tracked-DOGh1Q5Z.cjs.map +1 -0
  419. package/dist/tracked-DUkp4zve.cjs +227 -0
  420. package/dist/tracked-DUkp4zve.cjs.map +1 -0
  421. package/dist/tracked-D_ou7mYG.js +212 -0
  422. package/dist/tracked-D_ou7mYG.js.map +1 -0
  423. package/dist/tracked-Dcu6EATB.js +171 -151
  424. package/dist/tracked-GvAJQVAI.cjs +227 -196
  425. package/dist/tracked-O2lv-kJV.cjs +242 -0
  426. package/dist/tracked-O2lv-kJV.cjs.map +1 -0
  427. package/dist/tracked-WF6aXuAo.js +186 -162
  428. package/dist/tracked-d_sQWU3c.cjs +196 -175
  429. package/dist/tracked-n9TMK-30.cjs +196 -175
  430. package/dist/tracked-njU-_pVa.cjs +242 -0
  431. package/dist/tracked-njU-_pVa.cjs.map +1 -0
  432. package/dist/tracked-zAgmKIlC.js +212 -0
  433. package/dist/tracked-zAgmKIlC.js.map +1 -0
  434. package/dist/tracking/dependency-manager.d.ts +33 -29
  435. package/dist/tracking/index.d.ts +16 -1
  436. package/dist/tracking/iteration-perf.bench.d.ts +1 -0
  437. package/dist/tracking/path-utils.d.ts +18 -1
  438. package/dist/tracking/resolve-dependencies.d.ts +3 -1
  439. package/dist/tracking/tracked.d.ts +37 -34
  440. package/dist/tracking/tracking-proxy.d.ts +94 -47
  441. package/dist/tracking.cjs +12 -9
  442. package/dist/tracking.js +32 -2
  443. package/dist/types/utilities.d.ts +15 -3
  444. package/dist/types.cjs +1 -1
  445. package/dist/types.js +1 -1
  446. package/dist/utils/static-props.d.ts +23 -0
  447. package/dist/utils/structural-key.d.ts +14 -0
  448. package/dist/watch/watch.d.ts +1 -1
  449. package/dist/watch-BpwaUL8r.cjs +68 -0
  450. package/dist/watch-BpwaUL8r.cjs.map +1 -0
  451. package/dist/watch-DWCqXllW.js +57 -0
  452. package/dist/watch-DWCqXllW.js.map +1 -0
  453. package/dist/watch-entry.cjs +3 -6
  454. package/dist/watch-entry.d.cts +1 -3
  455. package/dist/watch-entry.d.ts +1 -3
  456. package/dist/watch-entry.js +2 -2
  457. package/package.json +4 -14
@@ -1,649 +1,731 @@
1
- import { a as BLAC_DEFAULTS, o as BLAC_ERROR_PREFIX } from "./StateContainerRegistry-BhcnG0DF.js";
2
- import { t as getRegistry } from "./config-D4GifZQ4.js";
1
+ import {
2
+ a as BLAC_DEFAULTS,
3
+ o as BLAC_ERROR_PREFIX,
4
+ } from './StateContainerRegistry-BhcnG0DF.js';
5
+ import { t as getRegistry } from './config-D4GifZQ4.js';
3
6
  //#region src/tracking/path-utils.ts
4
7
  /**
5
- * Path utilities for dependency tracking
6
- *
7
- * Provides utilities for parsing property paths and extracting values
8
- * from nested objects using path strings.
9
- *
10
- * @internal
11
- */
12
- /**
13
- * Parse a property path string into an array of segments
14
- *
15
- * @internal
16
- *
17
- * Handles both dot notation (a.b.c) and bracket notation (a[0].b)
18
- *
19
- * @example
20
- * ```ts
21
- * parsePath('user.name') // ['user', 'name']
22
- * parsePath('items[0].name') // ['items', '0', 'name']
23
- * parsePath('data.users[2].address.city') // ['data', 'users', '2', 'address', 'city']
24
- * ```
25
- */
8
+ * Path utilities for dependency tracking
9
+ *
10
+ * Provides utilities for parsing property paths and extracting values
11
+ * from nested objects using path strings.
12
+ *
13
+ * @internal
14
+ */
15
+ /**
16
+ * Parse a property path string into an array of segments
17
+ *
18
+ * @internal
19
+ *
20
+ * Handles both dot notation (a.b.c) and bracket notation (a[0].b)
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * parsePath('user.name') // ['user', 'name']
25
+ * parsePath('items[0].name') // ['items', '0', 'name']
26
+ * parsePath('data.users[2].address.city') // ['data', 'users', '2', 'address', 'city']
27
+ * ```
28
+ */
26
29
  function parsePath(path) {
27
- const segments = [];
28
- let current = "";
29
- let i = 0;
30
- while (i < path.length) {
31
- const char = path[i];
32
- if (char === ".") {
33
- if (current) segments.push(current);
34
- current = "";
35
- } else if (char === "[") {
36
- if (current) segments.push(current);
37
- current = "";
38
- i++;
39
- while (i < path.length && path[i] !== "]") current += path[i++];
40
- if (current) segments.push(current);
41
- current = "";
42
- } else current += char;
43
- i++;
44
- }
45
- if (current) segments.push(current);
46
- return segments;
47
- }
48
- /**
49
- * Get a value from an object using a path of segments
50
- *
51
- * @example
52
- * ```ts
53
- * const obj = { user: { name: 'Alice', age: 30 } }
54
- * getValueAtPath(obj, ['user', 'name']) // 'Alice'
55
- * getValueAtPath(obj, ['user', 'age']) // 30
56
- * getValueAtPath(obj, ['user', 'missing']) // undefined
57
- * ```
58
- *
59
- * @internal
60
- */
30
+ const segments = [];
31
+ let current = '';
32
+ let i = 0;
33
+ while (i < path.length) {
34
+ const char = path[i];
35
+ if (char === '.') {
36
+ if (current) segments.push(current);
37
+ current = '';
38
+ } else if (char === '[') {
39
+ if (current) segments.push(current);
40
+ current = '';
41
+ i++;
42
+ while (i < path.length && path[i] !== ']') current += path[i++];
43
+ if (current) segments.push(current);
44
+ current = '';
45
+ } else current += char;
46
+ i++;
47
+ }
48
+ if (current) segments.push(current);
49
+ return segments;
50
+ }
51
+ /**
52
+ * Get a value from an object using a path of segments
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * const obj = { user: { name: 'Alice', age: 30 } }
57
+ * getValueAtPath(obj, ['user', 'name']) // 'Alice'
58
+ * getValueAtPath(obj, ['user', 'age']) // 30
59
+ * getValueAtPath(obj, ['user', 'missing']) // undefined
60
+ * ```
61
+ *
62
+ * @internal
63
+ */
61
64
  function getValueAtPath(obj, segments) {
62
- if (obj == null) return void 0;
63
- let current = obj;
64
- for (let i = 0; i < segments.length; i++) {
65
- current = current[segments[i]];
66
- if (current == null) return void 0;
67
- }
68
- return current;
69
- }
70
- /**
71
- * Shallow equality comparison for arrays
72
- *
73
- * Compares two arrays element-by-element using Object.is
74
- *
75
- * @example
76
- * ```ts
77
- * shallowEqual([1, 2, 3], [1, 2, 3]) // true
78
- * shallowEqual([1, 2, 3], [1, 2, 4]) // false
79
- * shallowEqual([1, 2], [1, 2, 3]) // false
80
- * ```
81
- *
82
- * @internal
83
- */
65
+ if (obj == null) return void 0;
66
+ let current = obj;
67
+ for (let i = 0; i < segments.length; i++) {
68
+ current = current[segments[i]];
69
+ if (current == null) return void 0;
70
+ }
71
+ return current;
72
+ }
73
+ /**
74
+ * Shallow equality comparison for arrays
75
+ *
76
+ * Compares two arrays element-by-element using Object.is
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * shallowEqual([1, 2, 3], [1, 2, 3]) // true
81
+ * shallowEqual([1, 2, 3], [1, 2, 4]) // false
82
+ * shallowEqual([1, 2], [1, 2, 3]) // false
83
+ * ```
84
+ *
85
+ * @internal
86
+ */
84
87
  function shallowEqual(arr1, arr2) {
85
- if (arr1.length !== arr2.length) return false;
86
- for (let i = 0; i < arr1.length; i++) if (!Object.is(arr1[i], arr2[i])) return false;
87
- return true;
88
+ if (arr1.length !== arr2.length) return false;
89
+ for (let i = 0; i < arr1.length; i++)
90
+ if (!Object.is(arr1[i], arr2[i])) return false;
91
+ return true;
88
92
  }
89
93
  //#endregion
90
94
  //#region src/tracking/tracking-proxy.ts
91
95
  /**
92
- * Consolidated Tracking System
93
- *
94
- * This module provides all dependency and getter tracking functionality:
95
- * - Proxy creation for automatic property access tracking
96
- * - Dependency path tracking and change detection
97
- * - Getter execution tracking for computed properties
98
- * - Combined tracking proxy for watch/waitUntil use cases
99
- */
100
- /**
101
- * Check if a value can be proxied
102
- * Returns true for plain objects and arrays only.
103
- * @internal
104
- */
96
+ * Consolidated Tracking System
97
+ *
98
+ * This module provides all dependency and getter tracking functionality:
99
+ * - Proxy creation for automatic property access tracking
100
+ * - Dependency path tracking and change detection
101
+ * - Getter execution tracking for computed properties
102
+ * - Combined tracking proxy for watch/waitUntil use cases
103
+ */
104
+ /**
105
+ * Check if a value can be proxied
106
+ * Returns true for plain objects and arrays only.
107
+ * @internal
108
+ */
105
109
  function isProxyable(value) {
106
- if (typeof value !== "object" || value === null) return false;
107
- const proto = Object.getPrototypeOf(value);
108
- return proto === Object.prototype || proto === Array.prototype;
110
+ if (typeof value !== 'object' || value === null) return false;
111
+ const proto = Object.getPrototypeOf(value);
112
+ return proto === Object.prototype || proto === Array.prototype;
109
113
  }
110
114
  /**
111
- * Create a new proxy tracker state
112
- * @internal
113
- */
115
+ * Create a new proxy tracker state
116
+ * @internal
117
+ */
114
118
  function createProxyState() {
115
- return {
116
- trackedPaths: /* @__PURE__ */ new Set(),
117
- isTracking: false,
118
- proxyCache: /* @__PURE__ */ new WeakMap(),
119
- boundFunctionsCache: null,
120
- lastProxiedState: null,
121
- lastProxy: null,
122
- maxDepth: 10
123
- };
124
- }
125
- /**
126
- * Start tracking property accesses
127
- * @internal
128
- */
119
+ return {
120
+ trackedPaths: /* @__PURE__ */ new Set(),
121
+ isTracking: false,
122
+ proxyCache: /* @__PURE__ */ new WeakMap(),
123
+ boundFunctionsCache: null,
124
+ lastProxiedState: null,
125
+ lastProxy: null,
126
+ maxDepth: 10,
127
+ };
128
+ }
129
+ /**
130
+ * Start tracking property accesses
131
+ * @internal
132
+ */
129
133
  function startProxy(state) {
130
- state.isTracking = true;
131
- state.trackedPaths.clear();
134
+ state.isTracking = true;
135
+ state.trackedPaths.clear();
132
136
  }
133
137
  /**
134
- * Stop tracking and return the tracked paths
135
- * @internal
136
- */
138
+ * Stop tracking and return the tracked paths
139
+ * @internal
140
+ */
137
141
  function stopProxy(state) {
138
- state.isTracking = false;
139
- return new Set(state.trackedPaths);
142
+ state.isTracking = false;
143
+ return new Set(state.trackedPaths);
140
144
  }
141
145
  /**
142
- * Create a proxy for an array with property access tracking
143
- * @internal
144
- */
146
+ * Create a proxy for an array with property access tracking
147
+ * @internal
148
+ */
145
149
  function createArrayProxy(state, target, path, depth = 0) {
146
- const proxy = new Proxy(target, { get: (arr, prop) => {
147
- if (typeof prop === "symbol") return Reflect.get(arr, prop);
148
- const value = Reflect.get(arr, prop);
149
- if (typeof value === "function") {
150
- if (!state.boundFunctionsCache) state.boundFunctionsCache = /* @__PURE__ */ new WeakMap();
151
- const cached = state.boundFunctionsCache.get(value);
152
- if (cached) return cached;
153
- const bound = value.bind(arr);
154
- state.boundFunctionsCache.set(value, bound);
155
- return bound;
156
- }
157
- if (prop === "length") {
158
- if (state.isTracking) {
159
- const fullPath = path ? `${path}.length` : "length";
160
- state.trackedPaths.add(fullPath);
161
- }
162
- return value;
163
- }
164
- let fullPath;
165
- if (typeof prop === "string") {
166
- const index = Number(prop);
167
- if (!isNaN(index) && index >= 0) fullPath = path ? `${path}[${index}]` : `[${index}]`;
168
- else fullPath = path ? `${path}.${prop}` : prop;
169
- } else return value;
170
- if (isProxyable(value)) return createInternal(state, value, fullPath, depth + 1);
171
- if (state.isTracking) state.trackedPaths.add(fullPath);
172
- return value;
173
- } });
174
- state.proxyCache.set(target, proxy);
175
- return proxy;
176
- }
177
- /**
178
- * Create a proxy for an object with property access tracking
179
- * @internal
180
- */
181
- function createInternal(state, target, path = "", depth = 0) {
182
- if (!state.isTracking || !isProxyable(target)) return target;
183
- if (depth >= state.maxDepth) {
184
- console.warn(`${BLAC_ERROR_PREFIX} Proxy depth limit (${state.maxDepth}) reached at path "${path}". Deeper property accesses won't be tracked for re-renders.`);
185
- return target;
186
- }
187
- if (state.proxyCache.has(target)) return state.proxyCache.get(target);
188
- if (Array.isArray(target)) return createArrayProxy(state, target, path, depth);
189
- const proxy = new Proxy(target, {
190
- get: (obj, prop) => {
191
- if (typeof prop === "symbol") return Reflect.get(obj, prop);
192
- const value = Reflect.get(obj, prop);
193
- if (typeof value === "function") {
194
- if (!state.boundFunctionsCache) state.boundFunctionsCache = /* @__PURE__ */ new WeakMap();
195
- const cached = state.boundFunctionsCache.get(value);
196
- if (cached) return cached;
197
- const bound = value.bind(obj);
198
- state.boundFunctionsCache.set(value, bound);
199
- return bound;
200
- }
201
- const fullPath = path ? `${path}.${String(prop)}` : String(prop);
202
- if (typeof prop === "string" && state.isTracking) {
203
- if (!prop.startsWith("_") && !prop.startsWith("$$")) state.trackedPaths.add(fullPath);
204
- }
205
- if (isProxyable(value)) return createInternal(state, value, fullPath, depth + 1);
206
- return value;
207
- },
208
- has: (obj, prop) => {
209
- if (typeof prop === "string" && state.isTracking) {
210
- const fullPath = path ? `${path}.${prop}` : prop;
211
- state.trackedPaths.add(fullPath);
212
- }
213
- return Reflect.has(obj, prop);
214
- },
215
- ownKeys: (obj) => {
216
- if (state.isTracking && path) state.trackedPaths.add(path);
217
- return Reflect.ownKeys(obj);
218
- }
219
- });
220
- state.proxyCache.set(target, proxy);
221
- return proxy;
222
- }
223
- /**
224
- * Create a proxy for a target with caching
225
- * @internal
226
- */
150
+ const proxy = new Proxy(target, {
151
+ get: (arr, prop) => {
152
+ if (typeof prop === 'symbol') return Reflect.get(arr, prop);
153
+ const value = Reflect.get(arr, prop);
154
+ if (typeof value === 'function') {
155
+ if (!state.boundFunctionsCache)
156
+ state.boundFunctionsCache = /* @__PURE__ */ new WeakMap();
157
+ const cached = state.boundFunctionsCache.get(value);
158
+ if (cached) return cached;
159
+ const bound = value.bind(arr);
160
+ state.boundFunctionsCache.set(value, bound);
161
+ return bound;
162
+ }
163
+ if (prop === 'length') {
164
+ if (state.isTracking) {
165
+ const fullPath = path ? `${path}.length` : 'length';
166
+ state.trackedPaths.add(fullPath);
167
+ }
168
+ return value;
169
+ }
170
+ let fullPath;
171
+ if (typeof prop === 'string') {
172
+ const index = Number(prop);
173
+ if (!isNaN(index) && index >= 0)
174
+ fullPath = path ? `${path}[${index}]` : `[${index}]`;
175
+ else fullPath = path ? `${path}.${prop}` : prop;
176
+ } else return value;
177
+ if (isProxyable(value))
178
+ return createInternal(state, value, fullPath, depth + 1);
179
+ if (state.isTracking) state.trackedPaths.add(fullPath);
180
+ return value;
181
+ },
182
+ });
183
+ state.proxyCache.set(target, proxy);
184
+ return proxy;
185
+ }
186
+ /**
187
+ * Create a proxy for an object with property access tracking
188
+ * @internal
189
+ */
190
+ function createInternal(state, target, path = '', depth = 0) {
191
+ if (!state.isTracking || !isProxyable(target)) return target;
192
+ if (depth >= state.maxDepth) {
193
+ console.warn(
194
+ `${BLAC_ERROR_PREFIX} Proxy depth limit (${state.maxDepth}) reached at path "${path}". Deeper property accesses won't be tracked for re-renders.`,
195
+ );
196
+ return target;
197
+ }
198
+ if (state.proxyCache.has(target)) return state.proxyCache.get(target);
199
+ if (Array.isArray(target))
200
+ return createArrayProxy(state, target, path, depth);
201
+ const proxy = new Proxy(target, {
202
+ get: (obj, prop) => {
203
+ if (typeof prop === 'symbol') return Reflect.get(obj, prop);
204
+ const value = Reflect.get(obj, prop);
205
+ if (typeof value === 'function') {
206
+ if (!state.boundFunctionsCache)
207
+ state.boundFunctionsCache = /* @__PURE__ */ new WeakMap();
208
+ const cached = state.boundFunctionsCache.get(value);
209
+ if (cached) return cached;
210
+ const bound = value.bind(obj);
211
+ state.boundFunctionsCache.set(value, bound);
212
+ return bound;
213
+ }
214
+ const fullPath = path ? `${path}.${String(prop)}` : String(prop);
215
+ if (typeof prop === 'string' && state.isTracking) {
216
+ if (!prop.startsWith('_') && !prop.startsWith('$$'))
217
+ state.trackedPaths.add(fullPath);
218
+ }
219
+ if (isProxyable(value))
220
+ return createInternal(state, value, fullPath, depth + 1);
221
+ return value;
222
+ },
223
+ has: (obj, prop) => {
224
+ if (typeof prop === 'string' && state.isTracking) {
225
+ const fullPath = path ? `${path}.${prop}` : prop;
226
+ state.trackedPaths.add(fullPath);
227
+ }
228
+ return Reflect.has(obj, prop);
229
+ },
230
+ ownKeys: (obj) => {
231
+ if (state.isTracking && path) state.trackedPaths.add(path);
232
+ return Reflect.ownKeys(obj);
233
+ },
234
+ });
235
+ state.proxyCache.set(target, proxy);
236
+ return proxy;
237
+ }
238
+ /**
239
+ * Create a proxy for a target with caching
240
+ * @internal
241
+ */
227
242
  function createForTarget(state, target) {
228
- if (state.lastProxiedState === target && state.lastProxy) return state.lastProxy;
229
- state.proxyCache = /* @__PURE__ */ new WeakMap();
230
- state.boundFunctionsCache = null;
231
- const proxy = createInternal(state, target, "", 0);
232
- state.lastProxiedState = target;
233
- state.lastProxy = proxy;
234
- return proxy;
243
+ if (state.lastProxiedState === target && state.lastProxy)
244
+ return state.lastProxy;
245
+ state.proxyCache = /* @__PURE__ */ new WeakMap();
246
+ state.boundFunctionsCache = null;
247
+ const proxy = createInternal(state, target, '', 0);
248
+ state.lastProxiedState = target;
249
+ state.lastProxy = proxy;
250
+ return proxy;
235
251
  }
236
252
  function isChildPath(child, parent) {
237
- if (child === parent) return false;
238
- return child.startsWith(parent + ".") || child.startsWith(parent + "[");
253
+ if (child === parent) return false;
254
+ return child.startsWith(parent + '.') || child.startsWith(parent + '[');
239
255
  }
240
256
  function getArrayParentPath(path) {
241
- if (path.endsWith(".length")) return path.slice(0, -7);
242
- const arrayIndexMatch = path.match(/^(.+?)\[\d+\]/);
243
- if (arrayIndexMatch) return arrayIndexMatch[1];
244
- return null;
257
+ if (path.endsWith('.length')) return path.slice(0, -7);
258
+ const arrayIndexMatch = path.match(/^(.+?)\[\d+\]/);
259
+ if (arrayIndexMatch) return arrayIndexMatch[1];
260
+ return null;
245
261
  }
246
262
  /**
247
- * @internal
248
- */
263
+ * @internal
264
+ */
249
265
  function optimizeTrackedPaths(paths) {
250
- if (paths.size === 0) return /* @__PURE__ */ new Set();
251
- if (paths.size === 1) return new Set(paths);
252
- const sortedPaths = Array.from(paths).sort((a, b) => b.length - a.length);
253
- const optimized = /* @__PURE__ */ new Set();
254
- for (const path of sortedPaths) {
255
- let hasMoreSpecificChild = false;
256
- for (const optimizedPath of optimized) if (isChildPath(optimizedPath, path)) {
257
- hasMoreSpecificChild = true;
258
- break;
259
- }
260
- if (!hasMoreSpecificChild) optimized.add(path);
261
- }
262
- const arrayParents = /* @__PURE__ */ new Set();
263
- for (const path of optimized) {
264
- const arrayParent = getArrayParentPath(path);
265
- if (arrayParent) arrayParents.add(arrayParent);
266
- }
267
- for (const arrayParent of arrayParents) optimized.add(arrayParent);
268
- return optimized;
269
- }
270
- /**
271
- * @internal
272
- */
266
+ if (paths.size === 0) return /* @__PURE__ */ new Set();
267
+ if (paths.size === 1) return new Set(paths);
268
+ const sortedPaths = Array.from(paths).sort((a, b) => b.length - a.length);
269
+ const optimized = /* @__PURE__ */ new Set();
270
+ for (const path of sortedPaths) {
271
+ let hasMoreSpecificChild = false;
272
+ for (const optimizedPath of optimized)
273
+ if (isChildPath(optimizedPath, path)) {
274
+ hasMoreSpecificChild = true;
275
+ break;
276
+ }
277
+ if (!hasMoreSpecificChild) optimized.add(path);
278
+ }
279
+ const arrayParents = /* @__PURE__ */ new Set();
280
+ for (const path of optimized) {
281
+ const arrayParent = getArrayParentPath(path);
282
+ if (arrayParent) arrayParents.add(arrayParent);
283
+ }
284
+ for (const arrayParent of arrayParents) optimized.add(arrayParent);
285
+ return optimized;
286
+ }
287
+ /**
288
+ * @internal
289
+ */
273
290
  function createDependencyState() {
274
- return {
275
- proxyState: createProxyState(),
276
- previousRenderPaths: /* @__PURE__ */ new Set(),
277
- currentRenderPaths: /* @__PURE__ */ new Set(),
278
- pathCache: /* @__PURE__ */ new Map(),
279
- lastCheckedState: null,
280
- lastCheckedValues: /* @__PURE__ */ new Map()
281
- };
282
- }
283
- /**
284
- * @internal
285
- */
291
+ return {
292
+ proxyState: createProxyState(),
293
+ previousRenderPaths: /* @__PURE__ */ new Set(),
294
+ currentRenderPaths: /* @__PURE__ */ new Set(),
295
+ pathCache: /* @__PURE__ */ new Map(),
296
+ lastCheckedState: null,
297
+ lastCheckedValues: /* @__PURE__ */ new Map(),
298
+ };
299
+ }
300
+ /**
301
+ * @internal
302
+ */
286
303
  function startDependency(tracker) {
287
- startProxy(tracker.proxyState);
304
+ startProxy(tracker.proxyState);
288
305
  }
289
306
  /**
290
- * @internal
291
- */
307
+ * @internal
308
+ */
292
309
  function createDependencyProxy(tracker, state) {
293
- return createForTarget(tracker.proxyState, state);
310
+ return createForTarget(tracker.proxyState, state);
294
311
  }
295
312
  /**
296
- * @internal
297
- */
313
+ * @internal
314
+ */
298
315
  function capturePaths(tracker, state) {
299
- tracker.previousRenderPaths = tracker.currentRenderPaths;
300
- tracker.currentRenderPaths = optimizeTrackedPaths(stopProxy(tracker.proxyState));
301
- if (tracker.previousRenderPaths.size === 0 && tracker.currentRenderPaths.size === 0) return;
302
- const trackedPathsUnion = new Set(tracker.previousRenderPaths);
303
- for (const path of tracker.currentRenderPaths) trackedPathsUnion.add(path);
304
- const canReuseCache = tracker.lastCheckedState === state;
305
- for (const path of trackedPathsUnion) if (!tracker.pathCache.has(path)) {
306
- const segments = parsePath(path);
307
- const value = canReuseCache && tracker.lastCheckedValues.has(path) ? tracker.lastCheckedValues.get(path) : getValueAtPath(state, segments);
308
- tracker.pathCache.set(path, {
309
- segments,
310
- value
311
- });
312
- } else {
313
- const info = tracker.pathCache.get(path);
314
- if (!info) continue;
315
- info.value = canReuseCache && tracker.lastCheckedValues.has(path) ? tracker.lastCheckedValues.get(path) : getValueAtPath(state, info.segments);
316
- }
317
- tracker.lastCheckedValues.clear();
318
- }
319
- /**
320
- * @internal
321
- */
316
+ tracker.previousRenderPaths = tracker.currentRenderPaths;
317
+ tracker.currentRenderPaths = optimizeTrackedPaths(
318
+ stopProxy(tracker.proxyState),
319
+ );
320
+ if (
321
+ tracker.previousRenderPaths.size === 0 &&
322
+ tracker.currentRenderPaths.size === 0
323
+ )
324
+ return;
325
+ const trackedPathsUnion = new Set(tracker.previousRenderPaths);
326
+ for (const path of tracker.currentRenderPaths) trackedPathsUnion.add(path);
327
+ const canReuseCache = tracker.lastCheckedState === state;
328
+ for (const path of trackedPathsUnion)
329
+ if (!tracker.pathCache.has(path)) {
330
+ const segments = parsePath(path);
331
+ const value =
332
+ canReuseCache && tracker.lastCheckedValues.has(path)
333
+ ? tracker.lastCheckedValues.get(path)
334
+ : getValueAtPath(state, segments);
335
+ tracker.pathCache.set(path, {
336
+ segments,
337
+ value,
338
+ });
339
+ } else {
340
+ const info = tracker.pathCache.get(path);
341
+ if (!info) continue;
342
+ info.value =
343
+ canReuseCache && tracker.lastCheckedValues.has(path)
344
+ ? tracker.lastCheckedValues.get(path)
345
+ : getValueAtPath(state, info.segments);
346
+ }
347
+ tracker.lastCheckedValues.clear();
348
+ }
349
+ /**
350
+ * @internal
351
+ */
322
352
  function hasDependencyChanges(tracker, state) {
323
- if (tracker.pathCache.size === 0) return true;
324
- tracker.lastCheckedValues.clear();
325
- for (const [path, info] of tracker.pathCache.entries()) {
326
- const currentValue = getValueAtPath(state, info.segments);
327
- tracker.lastCheckedValues.set(path, currentValue);
328
- if (!Object.is(currentValue, info.value)) {
329
- tracker.lastCheckedState = state;
330
- return true;
331
- }
332
- }
333
- tracker.lastCheckedState = state;
334
- return false;
335
- }
336
- /**
337
- * @internal
338
- */
353
+ if (tracker.pathCache.size === 0) return true;
354
+ tracker.lastCheckedValues.clear();
355
+ for (const [path, info] of tracker.pathCache.entries()) {
356
+ const currentValue = getValueAtPath(state, info.segments);
357
+ tracker.lastCheckedValues.set(path, currentValue);
358
+ if (!Object.is(currentValue, info.value)) {
359
+ tracker.lastCheckedState = state;
360
+ return true;
361
+ }
362
+ }
363
+ tracker.lastCheckedState = state;
364
+ return false;
365
+ }
366
+ /**
367
+ * @internal
368
+ */
339
369
  function hasTrackedData(tracker) {
340
- return tracker.proxyState.trackedPaths.size > 0 || tracker.pathCache.size > 0 || tracker.previousRenderPaths.size > 0;
370
+ return (
371
+ tracker.proxyState.trackedPaths.size > 0 ||
372
+ tracker.pathCache.size > 0 ||
373
+ tracker.previousRenderPaths.size > 0
374
+ );
341
375
  }
342
376
  const descriptorCache = /* @__PURE__ */ new WeakMap();
343
377
  const blocProxyCache = /* @__PURE__ */ new WeakMap();
344
378
  const activeTrackerMap = /* @__PURE__ */ new WeakMap();
345
379
  const MAX_GETTER_DEPTH = BLAC_DEFAULTS.MAX_GETTER_DEPTH;
346
380
  /**
347
- * @internal
348
- */
381
+ * @internal
382
+ */
349
383
  function getDescriptor(obj, prop) {
350
- const constructor = obj.constructor;
351
- let constructorCache = descriptorCache.get(constructor);
352
- if (constructorCache?.has(prop)) return constructorCache.get(prop);
353
- let current = obj;
354
- let descriptor;
355
- while (current && current !== Object.prototype) {
356
- descriptor = Object.getOwnPropertyDescriptor(current, prop);
357
- if (descriptor) break;
358
- current = Object.getPrototypeOf(current);
359
- }
360
- if (!constructorCache) {
361
- constructorCache = /* @__PURE__ */ new Map();
362
- descriptorCache.set(constructor, constructorCache);
363
- }
364
- constructorCache.set(prop, descriptor);
365
- return descriptor;
366
- }
367
- /**
368
- * @internal
369
- */
384
+ const constructor = obj.constructor;
385
+ let constructorCache = descriptorCache.get(constructor);
386
+ if (constructorCache?.has(prop)) return constructorCache.get(prop);
387
+ let current = obj;
388
+ let descriptor;
389
+ while (current && current !== Object.prototype) {
390
+ descriptor = Object.getOwnPropertyDescriptor(current, prop);
391
+ if (descriptor) break;
392
+ current = Object.getPrototypeOf(current);
393
+ }
394
+ if (!constructorCache) {
395
+ constructorCache = /* @__PURE__ */ new Map();
396
+ descriptorCache.set(constructor, constructorCache);
397
+ }
398
+ constructorCache.set(prop, descriptor);
399
+ return descriptor;
400
+ }
401
+ /**
402
+ * @internal
403
+ */
370
404
  function isGetter(obj, prop) {
371
- return getDescriptor(obj, prop)?.get !== void 0;
405
+ return getDescriptor(obj, prop)?.get !== void 0;
372
406
  }
373
407
  /**
374
- * @internal
375
- */
408
+ * @internal
409
+ */
376
410
  function createGetterState() {
377
- return {
378
- trackedValues: /* @__PURE__ */ new Map(),
379
- currentlyAccessing: /* @__PURE__ */ new Set(),
380
- trackedGetters: /* @__PURE__ */ new Set(),
381
- isTracking: false,
382
- renderCache: /* @__PURE__ */ new Map(),
383
- cacheValid: false,
384
- depth: 0,
385
- visitedBlocs: /* @__PURE__ */ new Set()
386
- };
387
- }
388
- /**
389
- * @internal
390
- */
411
+ return {
412
+ trackedValues: /* @__PURE__ */ new Map(),
413
+ currentlyAccessing: /* @__PURE__ */ new Set(),
414
+ trackedGetters: /* @__PURE__ */ new Set(),
415
+ isTracking: false,
416
+ renderCache: /* @__PURE__ */ new Map(),
417
+ cacheValid: false,
418
+ depth: 0,
419
+ visitedBlocs: /* @__PURE__ */ new Set(),
420
+ };
421
+ }
422
+ /**
423
+ * @internal
424
+ */
391
425
  function setActiveTracker(bloc, tracker) {
392
- activeTrackerMap.set(bloc, tracker);
426
+ activeTrackerMap.set(bloc, tracker);
393
427
  }
394
428
  /**
395
- * @internal
396
- */
429
+ * @internal
430
+ */
397
431
  function clearActiveTracker(bloc) {
398
- activeTrackerMap.delete(bloc);
432
+ activeTrackerMap.delete(bloc);
399
433
  }
400
434
  /**
401
- * @internal
402
- */
435
+ * @internal
436
+ */
403
437
  function commitTrackedGetters(tracker) {
404
- if (tracker.currentlyAccessing.size > 0) tracker.trackedGetters = new Set(tracker.currentlyAccessing);
405
- tracker.currentlyAccessing.clear();
438
+ if (tracker.currentlyAccessing.size > 0)
439
+ tracker.trackedGetters = new Set(tracker.currentlyAccessing);
440
+ tracker.currentlyAccessing.clear();
406
441
  }
407
442
  /**
408
- * Execute a tracked getter with depth/circular dependency checks and context management.
409
- * @internal
410
- */
443
+ * Execute a tracked getter with depth/circular dependency checks and context management.
444
+ * @internal
445
+ */
411
446
  function executeTrackedGetter(target, prop, tracker) {
412
- tracker.currentlyAccessing.add(prop);
413
- if (tracker.cacheValid && tracker.renderCache.has(prop)) {
414
- const cachedValue = tracker.renderCache.get(prop);
415
- tracker.trackedValues.set(prop, cachedValue);
416
- return cachedValue;
417
- }
418
- if (tracker.depth >= MAX_GETTER_DEPTH) throw new Error(`${BLAC_ERROR_PREFIX} Maximum getter depth (${MAX_GETTER_DEPTH}) exceeded. Possible circular dependency in getter "${String(prop)}" on ${target.constructor.name}.`);
419
- if (tracker.visitedBlocs.has(target)) throw new Error(`${BLAC_ERROR_PREFIX} Circular dependency detected: getter "${String(prop)}" on ${target.constructor.name}.`);
420
- const prevDepth = tracker.depth;
421
- const prevVisited = new Set(tracker.visitedBlocs);
422
- tracker.depth++;
423
- tracker.visitedBlocs.add(target);
424
- try {
425
- const descriptor = getDescriptor(target, prop);
426
- if (!descriptor?.get) return target[prop];
427
- const value = descriptor.get.call(target);
428
- tracker.trackedValues.set(prop, value);
429
- return value;
430
- } catch (error) {
431
- tracker.currentlyAccessing.delete(prop);
432
- throw error;
433
- } finally {
434
- tracker.depth = prevDepth;
435
- tracker.visitedBlocs = prevVisited;
436
- }
437
- }
438
- /**
439
- * @internal
440
- */
447
+ tracker.currentlyAccessing.add(prop);
448
+ if (tracker.cacheValid && tracker.renderCache.has(prop)) {
449
+ const cachedValue = tracker.renderCache.get(prop);
450
+ tracker.trackedValues.set(prop, cachedValue);
451
+ return cachedValue;
452
+ }
453
+ if (tracker.depth >= MAX_GETTER_DEPTH)
454
+ throw new Error(
455
+ `${BLAC_ERROR_PREFIX} Maximum getter depth (${MAX_GETTER_DEPTH}) exceeded. Possible circular dependency in getter "${String(prop)}" on ${target.constructor.name}.`,
456
+ );
457
+ if (tracker.visitedBlocs.has(target))
458
+ throw new Error(
459
+ `${BLAC_ERROR_PREFIX} Circular dependency detected: getter "${String(prop)}" on ${target.constructor.name}.`,
460
+ );
461
+ const prevDepth = tracker.depth;
462
+ const prevVisited = new Set(tracker.visitedBlocs);
463
+ tracker.depth++;
464
+ tracker.visitedBlocs.add(target);
465
+ try {
466
+ const descriptor = getDescriptor(target, prop);
467
+ if (!descriptor?.get) return target[prop];
468
+ const value = descriptor.get.call(target);
469
+ tracker.trackedValues.set(prop, value);
470
+ return value;
471
+ } catch (error) {
472
+ tracker.currentlyAccessing.delete(prop);
473
+ throw error;
474
+ } finally {
475
+ tracker.depth = prevDepth;
476
+ tracker.visitedBlocs = prevVisited;
477
+ }
478
+ }
479
+ /**
480
+ * @internal
481
+ */
441
482
  function createBlocProxy(bloc) {
442
- const cached = blocProxyCache.get(bloc);
443
- if (cached) return cached;
444
- const proxy = new Proxy(bloc, { get(target, prop, receiver) {
445
- const tracker = activeTrackerMap.get(target);
446
- if (tracker?.isTracking && isGetter(target, prop)) return executeTrackedGetter(target, prop, tracker);
447
- return Reflect.get(target, prop, receiver);
448
- } });
449
- blocProxyCache.set(bloc, proxy);
450
- return proxy;
451
- }
452
- /**
453
- * @internal
454
- */
483
+ const cached = blocProxyCache.get(bloc);
484
+ if (cached) return cached;
485
+ const proxy = new Proxy(bloc, {
486
+ get(target, prop, receiver) {
487
+ const tracker = activeTrackerMap.get(target);
488
+ if (tracker?.isTracking && isGetter(target, prop))
489
+ return executeTrackedGetter(target, prop, tracker);
490
+ return Reflect.get(target, prop, receiver);
491
+ },
492
+ });
493
+ blocProxyCache.set(bloc, proxy);
494
+ return proxy;
495
+ }
496
+ /**
497
+ * @internal
498
+ */
455
499
  function hasGetterChanges(bloc, tracker) {
456
- if (!tracker || tracker.trackedGetters.size === 0) return false;
457
- tracker.renderCache.clear();
458
- let hasAnyChange = false;
459
- for (const prop of tracker.trackedGetters) try {
460
- const descriptor = getDescriptor(bloc, prop);
461
- if (!descriptor?.get) continue;
462
- const newValue = descriptor.get.call(bloc);
463
- const oldValue = tracker.trackedValues.get(prop);
464
- tracker.renderCache.set(prop, newValue);
465
- tracker.trackedValues.set(prop, newValue);
466
- if (!Object.is(newValue, oldValue)) hasAnyChange = true;
467
- } catch (error) {
468
- console.warn(`${BLAC_ERROR_PREFIX} Getter "${String(prop)}" threw error during change detection. Stopping tracking for this getter.`, error);
469
- tracker.trackedGetters.delete(prop);
470
- tracker.trackedValues.delete(prop);
471
- tracker.cacheValid = false;
472
- return true;
473
- }
474
- tracker.cacheValid = true;
475
- return hasAnyChange;
476
- }
477
- /**
478
- * @internal
479
- */
500
+ if (!tracker || tracker.trackedGetters.size === 0) return false;
501
+ tracker.renderCache.clear();
502
+ let hasAnyChange = false;
503
+ for (const prop of tracker.trackedGetters)
504
+ try {
505
+ const descriptor = getDescriptor(bloc, prop);
506
+ if (!descriptor?.get) continue;
507
+ const newValue = descriptor.get.call(bloc);
508
+ const oldValue = tracker.trackedValues.get(prop);
509
+ tracker.renderCache.set(prop, newValue);
510
+ tracker.trackedValues.set(prop, newValue);
511
+ if (!Object.is(newValue, oldValue)) hasAnyChange = true;
512
+ } catch (error) {
513
+ console.warn(
514
+ `${BLAC_ERROR_PREFIX} Getter "${String(prop)}" threw error during change detection. Stopping tracking for this getter.`,
515
+ error,
516
+ );
517
+ tracker.trackedGetters.delete(prop);
518
+ tracker.trackedValues.delete(prop);
519
+ tracker.cacheValid = false;
520
+ return true;
521
+ }
522
+ tracker.cacheValid = true;
523
+ return hasAnyChange;
524
+ }
525
+ /**
526
+ * @internal
527
+ */
480
528
  function invalidateRenderCache(tracker) {
481
- tracker.cacheValid = false;
529
+ tracker.cacheValid = false;
482
530
  }
483
531
  /**
484
- * Create a new tracking proxy state.
485
- */
532
+ * Create a new tracking proxy state.
533
+ */
486
534
  function createState() {
487
- return {
488
- dependencyState: createDependencyState(),
489
- getterState: createGetterState(),
490
- dependencies: /* @__PURE__ */ new Set(),
491
- isTracking: false
492
- };
535
+ return {
536
+ dependencyState: createDependencyState(),
537
+ getterState: createGetterState(),
538
+ dependencies: /* @__PURE__ */ new Set(),
539
+ isTracking: false,
540
+ };
493
541
  }
494
542
  /**
495
- * Start tracking on a tracking proxy.
496
- */
543
+ * Start tracking on a tracking proxy.
544
+ */
497
545
  function startTracking(tracker) {
498
- tracker.isTracking = true;
499
- tracker.dependencies.clear();
500
- tracker.getterState.isTracking = true;
501
- startDependency(tracker.dependencyState);
546
+ tracker.isTracking = true;
547
+ tracker.dependencies.clear();
548
+ tracker.getterState.isTracking = true;
549
+ startDependency(tracker.dependencyState);
502
550
  }
503
551
  /**
504
- * Stop tracking and collect all dependencies.
505
- */
552
+ * Stop tracking and collect all dependencies.
553
+ */
506
554
  function stopTracking(tracker, bloc) {
507
- tracker.isTracking = false;
508
- tracker.getterState.isTracking = false;
509
- capturePaths(tracker.dependencyState, bloc.state);
510
- commitTrackedGetters(tracker.getterState);
511
- return new Set(tracker.dependencies);
555
+ tracker.isTracking = false;
556
+ tracker.getterState.isTracking = false;
557
+ capturePaths(tracker.dependencyState, bloc.state);
558
+ commitTrackedGetters(tracker.getterState);
559
+ return new Set(tracker.dependencies);
512
560
  }
513
561
  /**
514
- * Check if tracked state or getters have changed.
515
- */
562
+ * Check if tracked state or getters have changed.
563
+ */
516
564
  function hasChanges(tracker, bloc) {
517
- invalidateRenderCache(tracker.getterState);
518
- const stateChanged = hasDependencyChanges(tracker.dependencyState, bloc.state);
519
- const getterChanged = hasGetterChanges(bloc, tracker.getterState);
520
- return stateChanged || getterChanged;
521
- }
522
- /**
523
- * Create a tracking proxy for a bloc instance.
524
- * Tracks both state property access and getter access.
525
- */
565
+ invalidateRenderCache(tracker.getterState);
566
+ const stateChanged = hasDependencyChanges(
567
+ tracker.dependencyState,
568
+ bloc.state,
569
+ );
570
+ const getterChanged = hasGetterChanges(bloc, tracker.getterState);
571
+ return stateChanged || getterChanged;
572
+ }
573
+ /**
574
+ * Create a tracking proxy for a bloc instance.
575
+ * Tracks both state property access and getter access.
576
+ */
526
577
  function createTrackingProxy(bloc, tracker) {
527
- tracker.dependencies.add(bloc);
528
- const stateProxyCache = /* @__PURE__ */ new WeakMap();
529
- return new Proxy(bloc, { get(target, prop, receiver) {
530
- if (prop === "state") {
531
- if (!tracker.isTracking) return target.state;
532
- const rawState = target.state;
533
- if (rawState === null || typeof rawState !== "object") return rawState;
534
- if (stateProxyCache.has(rawState)) return stateProxyCache.get(rawState);
535
- const stateProxy = createDependencyProxy(tracker.dependencyState, rawState);
536
- stateProxyCache.set(rawState, stateProxy);
537
- return stateProxy;
538
- }
539
- if (typeof prop === "symbol") return Reflect.get(target, prop, receiver);
540
- const value = Reflect.get(target, prop, receiver);
541
- if (typeof value === "function") return value.bind(target);
542
- if (tracker.isTracking && isGetter(target, prop)) return executeTrackedGetter(target, prop, tracker.getterState);
543
- return value;
544
- } });
578
+ tracker.dependencies.add(bloc);
579
+ const stateProxyCache = /* @__PURE__ */ new WeakMap();
580
+ return new Proxy(bloc, {
581
+ get(target, prop, receiver) {
582
+ if (prop === 'state') {
583
+ if (!tracker.isTracking) return target.state;
584
+ const rawState = target.state;
585
+ if (rawState === null || typeof rawState !== 'object') return rawState;
586
+ if (stateProxyCache.has(rawState)) return stateProxyCache.get(rawState);
587
+ const stateProxy = createDependencyProxy(
588
+ tracker.dependencyState,
589
+ rawState,
590
+ );
591
+ stateProxyCache.set(rawState, stateProxy);
592
+ return stateProxy;
593
+ }
594
+ if (typeof prop === 'symbol') return Reflect.get(target, prop, receiver);
595
+ const value = Reflect.get(target, prop, receiver);
596
+ if (typeof value === 'function') return value.bind(target);
597
+ if (tracker.isTracking && isGetter(target, prop))
598
+ return executeTrackedGetter(target, prop, tracker.getterState);
599
+ return value;
600
+ },
601
+ });
545
602
  }
546
603
  //#endregion
547
604
  //#region src/tracking/dependency-manager.ts
548
605
  /**
549
- * Manages subscriptions to state container dependencies.
550
- * Provides efficient sync mechanism to add/remove subscriptions
551
- * as dependencies change between callback invocations.
552
- */
606
+ * Manages subscriptions to state container dependencies.
607
+ * Provides efficient sync mechanism to add/remove subscriptions
608
+ * as dependencies change between callback invocations.
609
+ */
553
610
  var DependencyManager = class {
554
- constructor() {
555
- this.subscriptions = /* @__PURE__ */ new Map();
556
- this.currentDeps = /* @__PURE__ */ new Set();
557
- }
558
- /**
559
- * Sync subscriptions with a new set of dependencies.
560
- * Adds subscriptions for new deps, removes subscriptions for stale deps.
561
- *
562
- * @param newDeps - The new set of dependencies to subscribe to
563
- * @param onChange - Callback to invoke when any dependency changes
564
- * @param exclude - Optional instance to exclude from subscriptions (e.g., primary bloc)
565
- * @returns true if the dependency set changed, false if unchanged
566
- */
567
- sync(newDeps, onChange, exclude) {
568
- const filteredNewDeps = /* @__PURE__ */ new Set();
569
- for (const dep of newDeps) if (dep !== exclude && !dep.isDisposed) filteredNewDeps.add(dep);
570
- if (this.areSetsEqual(this.currentDeps, filteredNewDeps)) return false;
571
- for (const dep of this.currentDeps) if (!filteredNewDeps.has(dep)) {
572
- const unsub = this.subscriptions.get(dep);
573
- if (unsub) {
574
- unsub();
575
- this.subscriptions.delete(dep);
576
- }
577
- }
578
- for (const dep of filteredNewDeps) if (!this.currentDeps.has(dep) && !this.subscriptions.has(dep)) {
579
- const unsub = dep.subscribe(onChange);
580
- this.subscriptions.set(dep, unsub);
581
- }
582
- this.currentDeps = filteredNewDeps;
583
- return true;
584
- }
585
- /**
586
- * Add a single dependency subscription.
587
- */
588
- add(dep, onChange) {
589
- if (this.subscriptions.has(dep) || dep.isDisposed) return;
590
- const unsub = dep.subscribe(onChange);
591
- this.subscriptions.set(dep, unsub);
592
- this.currentDeps.add(dep);
593
- }
594
- /**
595
- * Check if a dependency is currently subscribed.
596
- */
597
- has(dep) {
598
- return this.currentDeps.has(dep);
599
- }
600
- /**
601
- * Get the current set of dependencies.
602
- */
603
- getDependencies() {
604
- return new Set(this.currentDeps);
605
- }
606
- /**
607
- * Clean up all active subscriptions.
608
- */
609
- cleanup() {
610
- for (const unsub of this.subscriptions.values()) unsub();
611
- this.subscriptions.clear();
612
- this.currentDeps.clear();
613
- }
614
- areSetsEqual(a, b) {
615
- if (a.size !== b.size) return false;
616
- for (const item of a) if (!b.has(item)) return false;
617
- return true;
618
- }
611
+ constructor() {
612
+ this.subscriptions = /* @__PURE__ */ new Map();
613
+ this.currentDeps = /* @__PURE__ */ new Set();
614
+ }
615
+ /**
616
+ * Sync subscriptions with a new set of dependencies.
617
+ * Adds subscriptions for new deps, removes subscriptions for stale deps.
618
+ *
619
+ * @param newDeps - The new set of dependencies to subscribe to
620
+ * @param onChange - Callback to invoke when any dependency changes
621
+ * @param exclude - Optional instance to exclude from subscriptions (e.g., primary bloc)
622
+ * @returns true if the dependency set changed, false if unchanged
623
+ */
624
+ sync(newDeps, onChange, exclude) {
625
+ const filteredNewDeps = /* @__PURE__ */ new Set();
626
+ for (const dep of newDeps)
627
+ if (dep !== exclude && !dep.isDisposed) filteredNewDeps.add(dep);
628
+ if (this.areSetsEqual(this.currentDeps, filteredNewDeps)) return false;
629
+ for (const dep of this.currentDeps)
630
+ if (!filteredNewDeps.has(dep)) {
631
+ const unsub = this.subscriptions.get(dep);
632
+ if (unsub) {
633
+ unsub();
634
+ this.subscriptions.delete(dep);
635
+ }
636
+ }
637
+ for (const dep of filteredNewDeps)
638
+ if (!this.currentDeps.has(dep) && !this.subscriptions.has(dep)) {
639
+ const unsub = dep.subscribe(onChange);
640
+ this.subscriptions.set(dep, unsub);
641
+ }
642
+ this.currentDeps = filteredNewDeps;
643
+ return true;
644
+ }
645
+ /**
646
+ * Add a single dependency subscription.
647
+ */
648
+ add(dep, onChange) {
649
+ if (this.subscriptions.has(dep) || dep.isDisposed) return;
650
+ const unsub = dep.subscribe(onChange);
651
+ this.subscriptions.set(dep, unsub);
652
+ this.currentDeps.add(dep);
653
+ }
654
+ /**
655
+ * Check if a dependency is currently subscribed.
656
+ */
657
+ has(dep) {
658
+ return this.currentDeps.has(dep);
659
+ }
660
+ /**
661
+ * Get the current set of dependencies.
662
+ */
663
+ getDependencies() {
664
+ return new Set(this.currentDeps);
665
+ }
666
+ /**
667
+ * Clean up all active subscriptions.
668
+ */
669
+ cleanup() {
670
+ for (const unsub of this.subscriptions.values()) unsub();
671
+ this.subscriptions.clear();
672
+ this.currentDeps.clear();
673
+ }
674
+ areSetsEqual(a, b) {
675
+ if (a.size !== b.size) return false;
676
+ for (const item of a) if (!b.has(item)) return false;
677
+ return true;
678
+ }
619
679
  };
620
680
  //#endregion
621
681
  //#region src/tracking/resolve-dependencies.ts
622
682
  /**
623
- * Resolve all transitive dependencies of a bloc via BFS over `dependencies` maps.
624
- * Uses cycle detection to avoid infinite loops.
625
- * @internal
626
- */
683
+ * Resolve all transitive dependencies of a bloc via BFS over `dependencies` maps.
684
+ * Uses cycle detection to avoid infinite loops.
685
+ * @internal
686
+ */
627
687
  function resolveDependencies(bloc) {
628
- const result = /* @__PURE__ */ new Set();
629
- const visited = /* @__PURE__ */ new Set();
630
- const queue = [bloc];
631
- while (queue.length > 0) {
632
- const current = queue.shift();
633
- if (!current) break;
634
- for (const [Type, key] of current.dependencies) {
635
- const visitKey = `${Type.name}::${key}`;
636
- if (visited.has(visitKey)) continue;
637
- visited.add(visitKey);
638
- const dep = getRegistry().ensure(Type, key);
639
- result.add(dep);
640
- if (dep.dependencies.size > 0) queue.push(dep);
641
- }
642
- }
643
- result.delete(bloc);
644
- return result;
688
+ const result = /* @__PURE__ */ new Set();
689
+ const visited = /* @__PURE__ */ new Set();
690
+ const queue = [bloc];
691
+ while (queue.length > 0) {
692
+ const current = queue.shift();
693
+ if (!current) break;
694
+ for (const [Type, key] of current.dependencies) {
695
+ const visitKey = `${Type.name}::${key}`;
696
+ if (visited.has(visitKey)) continue;
697
+ visited.add(visitKey);
698
+ const dep = getRegistry().ensure(Type, key);
699
+ result.add(dep);
700
+ if (dep.dependencies.size > 0) queue.push(dep);
701
+ }
702
+ }
703
+ result.delete(bloc);
704
+ return result;
645
705
  }
646
706
  //#endregion
647
- export { setActiveTracker as _, commitTrackedGetters as a, stopTracking as b, createDependencyState as c, createTrackingProxy as d, hasChanges as f, invalidateRenderCache as g, hasTrackedData as h, clearActiveTracker as i, createGetterState as l, hasGetterChanges as m, DependencyManager as n, createBlocProxy as o, hasDependencyChanges as p, capturePaths as r, createDependencyProxy as s, resolveDependencies as t, createState as u, startDependency as v, shallowEqual as x, startTracking as y };
707
+ export {
708
+ setActiveTracker as _,
709
+ commitTrackedGetters as a,
710
+ stopTracking as b,
711
+ createDependencyState as c,
712
+ createTrackingProxy as d,
713
+ hasChanges as f,
714
+ invalidateRenderCache as g,
715
+ hasTrackedData as h,
716
+ clearActiveTracker as i,
717
+ createGetterState as l,
718
+ hasGetterChanges as m,
719
+ DependencyManager as n,
720
+ createBlocProxy as o,
721
+ hasDependencyChanges as p,
722
+ capturePaths as r,
723
+ createDependencyProxy as s,
724
+ resolveDependencies as t,
725
+ createState as u,
726
+ startDependency as v,
727
+ shallowEqual as x,
728
+ startTracking as y,
729
+ };
648
730
 
649
- //# sourceMappingURL=resolve-dependencies-f-QUqYiL.js.map
731
+ //# sourceMappingURL=resolve-dependencies-f-QUqYiL.js.map