@blac/core 2.0.15 → 2.0.17

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 (595) hide show
  1. package/dist/StateContainerRegistry-B1GYx9Xo.js +975 -0
  2. package/dist/StateContainerRegistry-B1GYx9Xo.js.map +1 -0
  3. package/dist/{StateContainerRegistry-DmmzYa7S.js → StateContainerRegistry-B_ViBLvJ.js} +78 -77
  4. package/dist/StateContainerRegistry-B_ViBLvJ.js.map +1 -0
  5. package/dist/StateContainerRegistry-DJQqLrli.cjs +1046 -0
  6. package/dist/StateContainerRegistry-DJQqLrli.cjs.map +1 -0
  7. package/dist/{StateContainerRegistry-B4yVMYbx.cjs → StateContainerRegistry-FWKzPfS-.cjs} +77 -88
  8. package/dist/StateContainerRegistry-FWKzPfS-.cjs.map +1 -0
  9. package/dist/acquire-CbMz7gWs.cjs +46 -0
  10. package/dist/acquire-CbMz7gWs.cjs.map +1 -0
  11. package/dist/acquire-DHEOEVcj.cjs +46 -0
  12. package/dist/acquire-DHEOEVcj.cjs.map +1 -0
  13. package/dist/acquire-Don7499S.js +35 -0
  14. package/dist/acquire-Don7499S.js.map +1 -0
  15. package/dist/acquire-G8aB3GAx.js +35 -0
  16. package/dist/acquire-G8aB3GAx.js.map +1 -0
  17. package/dist/{branded-BSeA_mZO.cjs → branded-BybA0_xw.cjs} +1 -1
  18. package/dist/{branded-BSeA_mZO.cjs.map → branded-BybA0_xw.cjs.map} +1 -1
  19. package/dist/{branded-DwtzSsg0.js → branded-DkbUzncc.js} +1 -1
  20. package/dist/{branded-DwtzSsg0.js.map → branded-DkbUzncc.js.map} +1 -1
  21. package/dist/{config-DoHx0Xsl.js → config-8pyOC5gv.js} +2 -2
  22. package/dist/{config-0ZD9i3wy.js.map → config-8pyOC5gv.js.map} +1 -1
  23. package/dist/{config-B_4xXpvK.cjs → config-DVMnlHLv.cjs} +2 -2
  24. package/dist/{config-B3NIwDQv.cjs.map → config-DVMnlHLv.cjs.map} +1 -1
  25. package/dist/{config-C8xqVHTf.js → config-Dk1FxfXj.js} +5 -5
  26. package/dist/{config-BKGHop0V.js.map → config-Dk1FxfXj.js.map} +1 -1
  27. package/dist/config-sCPKPYxZ.cjs +32 -0
  28. package/dist/{config-BPj08-8h.cjs.map → config-sCPKPYxZ.cjs.map} +1 -1
  29. package/dist/constants.d.cts +0 -5
  30. package/dist/constants.d.ts +0 -5
  31. package/dist/core/StateContainer.d.ts +51 -10
  32. package/dist/core/StateContainerRegistry.d.ts +27 -10
  33. package/dist/debug.cjs +3 -3
  34. package/dist/debug.js +3 -3
  35. package/dist/{Cubit-CWP8Ddzx.cjs → ensure-CLQEx0Nn.cjs} +24 -6
  36. package/dist/ensure-CLQEx0Nn.cjs.map +1 -0
  37. package/dist/{Cubit-VJuu2tt9.js → ensure-CPMiGvov.js} +19 -7
  38. package/dist/ensure-CPMiGvov.js.map +1 -0
  39. package/dist/ensure-DEXSmA-N.js +526 -0
  40. package/dist/ensure-DEXSmA-N.js.map +1 -0
  41. package/dist/ensure-Dx86f80B.cjs +567 -0
  42. package/dist/ensure-Dx86f80B.cjs.map +1 -0
  43. package/dist/ensure-DzqGej43.js +526 -0
  44. package/dist/ensure-DzqGej43.js.map +1 -0
  45. package/dist/ensure-fsQMjaQL.cjs +567 -0
  46. package/dist/ensure-fsQMjaQL.cjs.map +1 -0
  47. package/dist/index.cjs +34 -40
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/index.d.cts +4 -3
  50. package/dist/index.d.ts +4 -3
  51. package/dist/index.js +27 -33
  52. package/dist/index.js.map +1 -1
  53. package/dist/management-444tdCBG.js +38 -0
  54. package/dist/management-444tdCBG.js.map +1 -0
  55. package/dist/management-7jLjVHJd.js +38 -0
  56. package/dist/management-7jLjVHJd.js.map +1 -0
  57. package/dist/{management-DTzcC6aD.cjs → management-DAV9sN-k.cjs} +14 -8
  58. package/dist/management-DAV9sN-k.cjs.map +1 -0
  59. package/dist/management-GcnNJjnm.cjs +85 -0
  60. package/dist/management-GcnNJjnm.cjs.map +1 -0
  61. package/dist/plugins.cjs +1 -1
  62. package/dist/plugins.js +1 -1
  63. package/dist/registry/acquire.d.ts +19 -6
  64. package/dist/registry/borrow.d.ts +14 -3
  65. package/dist/registry/ensure.d.ts +7 -1
  66. package/dist/registry/index.d.ts +1 -0
  67. package/dist/registry/queries.d.ts +10 -4
  68. package/dist/registry/release.d.ts +14 -2
  69. package/dist/testing.cjs +17 -17
  70. package/dist/testing.cjs.map +1 -1
  71. package/dist/testing.d.cts +4 -4
  72. package/dist/testing.d.ts +4 -4
  73. package/dist/testing.js +14 -14
  74. package/dist/testing.js.map +1 -1
  75. package/dist/types/utilities.d.ts +1 -12
  76. package/dist/types.cjs +1 -1
  77. package/dist/types.js +1 -1
  78. package/dist/utils/static-props.d.ts +0 -9
  79. package/dist/watch/watch.d.ts +8 -5
  80. package/dist/{watch-BpwaUL8r.cjs → watch-B91opmva.cjs} +11 -9
  81. package/dist/watch-B91opmva.cjs.map +1 -0
  82. package/dist/{watch-DWCqXllW.js → watch-BmC-Tyqg.js} +11 -9
  83. package/dist/watch-BmC-Tyqg.js.map +1 -0
  84. package/dist/watch-CKWt788i.cjs +70 -0
  85. package/dist/watch-CKWt788i.cjs.map +1 -0
  86. package/dist/watch-DPVUwPUY.js +59 -0
  87. package/dist/watch-DPVUwPUY.js.map +1 -0
  88. package/dist/watch-entry.cjs +1 -1
  89. package/dist/watch-entry.js +1 -1
  90. package/package.json +22 -11
  91. package/dist/Cubit-9jal5zdZ.cjs +0 -390
  92. package/dist/Cubit-9jal5zdZ.cjs.map +0 -1
  93. package/dist/Cubit-BAUPiUF7.cjs +0 -380
  94. package/dist/Cubit-BAUPiUF7.cjs.map +0 -1
  95. package/dist/Cubit-BBKF3PIg.js +0 -287
  96. package/dist/Cubit-BBKF3PIg.js.map +0 -1
  97. package/dist/Cubit-BC70gaiA.js +0 -453
  98. package/dist/Cubit-BC70gaiA.js.map +0 -1
  99. package/dist/Cubit-BOgUZva7.js +0 -360
  100. package/dist/Cubit-BOgUZva7.js.map +0 -1
  101. package/dist/Cubit-BOxMvpfc.js +0 -291
  102. package/dist/Cubit-BOxMvpfc.js.map +0 -1
  103. package/dist/Cubit-BTznt8zg.js +0 -370
  104. package/dist/Cubit-BTznt8zg.js.map +0 -1
  105. package/dist/Cubit-BogJXkLm.js +0 -278
  106. package/dist/Cubit-BogJXkLm.js.map +0 -1
  107. package/dist/Cubit-C-8R_8db.cjs +0 -475
  108. package/dist/Cubit-C-8R_8db.cjs.map +0 -1
  109. package/dist/Cubit-C3Mw3EoO.cjs +0 -401
  110. package/dist/Cubit-C3Mw3EoO.cjs.map +0 -1
  111. package/dist/Cubit-CO8Fr72L.cjs +0 -447
  112. package/dist/Cubit-CO8Fr72L.cjs.map +0 -1
  113. package/dist/Cubit-COfHT1Bm.cjs +0 -321
  114. package/dist/Cubit-COfHT1Bm.cjs.map +0 -1
  115. package/dist/Cubit-CROWjjs9.js +0 -481
  116. package/dist/Cubit-CROWjjs9.js.map +0 -1
  117. package/dist/Cubit-CWP8Ddzx.cjs.map +0 -1
  118. package/dist/Cubit-CXxh9iol.js +0 -302
  119. package/dist/Cubit-CXxh9iol.js.map +0 -1
  120. package/dist/Cubit-CYOWfzQt.cjs +0 -317
  121. package/dist/Cubit-CYOWfzQt.cjs.map +0 -1
  122. package/dist/Cubit-CZaf_fp4.cjs +0 -388
  123. package/dist/Cubit-CZaf_fp4.cjs.map +0 -1
  124. package/dist/Cubit-C_dUEUdd.cjs +0 -380
  125. package/dist/Cubit-C_dUEUdd.cjs.map +0 -1
  126. package/dist/Cubit-C_rxRCTN.cjs +0 -523
  127. package/dist/Cubit-C_rxRCTN.cjs.map +0 -1
  128. package/dist/Cubit-CcKgMEBO.js +0 -299
  129. package/dist/Cubit-CcKgMEBO.js.map +0 -1
  130. package/dist/Cubit-CfT6Y1jl.js +0 -346
  131. package/dist/Cubit-CfT6Y1jl.js.map +0 -1
  132. package/dist/Cubit-CynJruuO.js +0 -369
  133. package/dist/Cubit-CynJruuO.js.map +0 -1
  134. package/dist/Cubit-D2vQ6nMb.js +0 -360
  135. package/dist/Cubit-D2vQ6nMb.js.map +0 -1
  136. package/dist/Cubit-D7jOZCoZ.js +0 -360
  137. package/dist/Cubit-D7jOZCoZ.js.map +0 -1
  138. package/dist/Cubit-D9j3IGPc.cjs +0 -523
  139. package/dist/Cubit-D9j3IGPc.cjs.map +0 -1
  140. package/dist/Cubit-DKEY9WYq.cjs +0 -296
  141. package/dist/Cubit-DKEY9WYq.cjs.map +0 -1
  142. package/dist/Cubit-DMV_0TCp.js +0 -481
  143. package/dist/Cubit-DMV_0TCp.js.map +0 -1
  144. package/dist/Cubit-DP5DXPUK.js +0 -360
  145. package/dist/Cubit-DP5DXPUK.js.map +0 -1
  146. package/dist/Cubit-DRFkzD2h.js +0 -426
  147. package/dist/Cubit-DRFkzD2h.js.map +0 -1
  148. package/dist/Cubit-DbnhTUaZ.cjs +0 -380
  149. package/dist/Cubit-DbnhTUaZ.cjs.map +0 -1
  150. package/dist/Cubit-DrqG3SP3.cjs +0 -370
  151. package/dist/Cubit-DrqG3SP3.cjs.map +0 -1
  152. package/dist/Cubit-DsDkCo42.cjs +0 -313
  153. package/dist/Cubit-DsDkCo42.cjs.map +0 -1
  154. package/dist/Cubit-DwRw1E9D.cjs +0 -309
  155. package/dist/Cubit-DwRw1E9D.cjs.map +0 -1
  156. package/dist/Cubit-Dw_kFBgc.js +0 -372
  157. package/dist/Cubit-Dw_kFBgc.js.map +0 -1
  158. package/dist/Cubit-KiXZCubP.cjs +0 -392
  159. package/dist/Cubit-KiXZCubP.cjs.map +0 -1
  160. package/dist/Cubit-Ksj7G4uR.js +0 -360
  161. package/dist/Cubit-Ksj7G4uR.js.map +0 -1
  162. package/dist/Cubit-MkjbpcPf.cjs +0 -380
  163. package/dist/Cubit-MkjbpcPf.cjs.map +0 -1
  164. package/dist/Cubit-NRhvdDQ6.js +0 -297
  165. package/dist/Cubit-NRhvdDQ6.js.map +0 -1
  166. package/dist/Cubit-PMTXxI_u.js +0 -368
  167. package/dist/Cubit-PMTXxI_u.js.map +0 -1
  168. package/dist/Cubit-VJuu2tt9.js.map +0 -1
  169. package/dist/Cubit-jz922NKf.cjs +0 -320
  170. package/dist/Cubit-jz922NKf.cjs.map +0 -1
  171. package/dist/Cubit-kU5_4jgC.cjs +0 -380
  172. package/dist/Cubit-kU5_4jgC.cjs.map +0 -1
  173. package/dist/StateContainerRegistry-B4yVMYbx.cjs.map +0 -1
  174. package/dist/StateContainerRegistry-BAcxouCu.js +0 -723
  175. package/dist/StateContainerRegistry-BAcxouCu.js.map +0 -1
  176. package/dist/StateContainerRegistry-BK57H92E.js +0 -747
  177. package/dist/StateContainerRegistry-BK57H92E.js.map +0 -1
  178. package/dist/StateContainerRegistry-BRBATSrx.cjs +0 -1030
  179. package/dist/StateContainerRegistry-BRBATSrx.cjs.map +0 -1
  180. package/dist/StateContainerRegistry-BgBIKcQF.js +0 -956
  181. package/dist/StateContainerRegistry-BgBIKcQF.js.map +0 -1
  182. package/dist/StateContainerRegistry-BglEhqdA.js +0 -709
  183. package/dist/StateContainerRegistry-BglEhqdA.js.map +0 -1
  184. package/dist/StateContainerRegistry-BhcnG0DF.js +0 -665
  185. package/dist/StateContainerRegistry-BhcnG0DF.js.map +0 -1
  186. package/dist/StateContainerRegistry-BpO5t-0i.js +0 -682
  187. package/dist/StateContainerRegistry-BpO5t-0i.js.map +0 -1
  188. package/dist/StateContainerRegistry-BqS-wpb_.js +0 -957
  189. package/dist/StateContainerRegistry-BqS-wpb_.js.map +0 -1
  190. package/dist/StateContainerRegistry-BrEGYPZT.cjs +0 -1029
  191. package/dist/StateContainerRegistry-BrEGYPZT.cjs.map +0 -1
  192. package/dist/StateContainerRegistry-BsMIpllP.cjs +0 -659
  193. package/dist/StateContainerRegistry-BsMIpllP.cjs.map +0 -1
  194. package/dist/StateContainerRegistry-Bxfne4A7.cjs +0 -908
  195. package/dist/StateContainerRegistry-Bxfne4A7.cjs.map +0 -1
  196. package/dist/StateContainerRegistry-C0E7vsgy.js +0 -758
  197. package/dist/StateContainerRegistry-C0E7vsgy.js.map +0 -1
  198. package/dist/StateContainerRegistry-C0I77Ndz.cjs +0 -920
  199. package/dist/StateContainerRegistry-C0I77Ndz.cjs.map +0 -1
  200. package/dist/StateContainerRegistry-CDH9mnQS.cjs +0 -715
  201. package/dist/StateContainerRegistry-CDH9mnQS.cjs.map +0 -1
  202. package/dist/StateContainerRegistry-CTOXUf75.cjs +0 -742
  203. package/dist/StateContainerRegistry-CTOXUf75.cjs.map +0 -1
  204. package/dist/StateContainerRegistry-CX2CBOmv.cjs +0 -795
  205. package/dist/StateContainerRegistry-CX2CBOmv.cjs.map +0 -1
  206. package/dist/StateContainerRegistry-CXnnf2-l.js +0 -867
  207. package/dist/StateContainerRegistry-CXnnf2-l.js.map +0 -1
  208. package/dist/StateContainerRegistry-CehuIpK_.cjs +0 -811
  209. package/dist/StateContainerRegistry-CehuIpK_.cjs.map +0 -1
  210. package/dist/StateContainerRegistry-Ci0ajc5g.js +0 -720
  211. package/dist/StateContainerRegistry-Ci0ajc5g.js.map +0 -1
  212. package/dist/StateContainerRegistry-Ck2-XmT_.js +0 -627
  213. package/dist/StateContainerRegistry-Ck2-XmT_.js.map +0 -1
  214. package/dist/StateContainerRegistry-D1lVJFGL.cjs +0 -753
  215. package/dist/StateContainerRegistry-D1lVJFGL.cjs.map +0 -1
  216. package/dist/StateContainerRegistry-DC4N73O6.js +0 -672
  217. package/dist/StateContainerRegistry-DC4N73O6.js.map +0 -1
  218. package/dist/StateContainerRegistry-DOkDGng-.js +0 -626
  219. package/dist/StateContainerRegistry-DOkDGng-.js.map +0 -1
  220. package/dist/StateContainerRegistry-DOuGI-l5.js +0 -685
  221. package/dist/StateContainerRegistry-DOuGI-l5.js.map +0 -1
  222. package/dist/StateContainerRegistry-DT66lr3I.cjs +0 -698
  223. package/dist/StateContainerRegistry-DT66lr3I.cjs.map +0 -1
  224. package/dist/StateContainerRegistry-DmmzYa7S.js.map +0 -1
  225. package/dist/StateContainerRegistry-Upsrlg9G.cjs +0 -756
  226. package/dist/StateContainerRegistry-Upsrlg9G.cjs.map +0 -1
  227. package/dist/StateContainerRegistry-WznfcA-Q.js +0 -855
  228. package/dist/StateContainerRegistry-WznfcA-Q.js.map +0 -1
  229. package/dist/StateContainerRegistry-Yph6UCA_.js +0 -678
  230. package/dist/StateContainerRegistry-Yph6UCA_.js.map +0 -1
  231. package/dist/StateContainerRegistry-mseeTqSA.cjs +0 -718
  232. package/dist/StateContainerRegistry-mseeTqSA.cjs.map +0 -1
  233. package/dist/StateContainerRegistry-pRNxHNFD.cjs +0 -705
  234. package/dist/StateContainerRegistry-pRNxHNFD.cjs.map +0 -1
  235. package/dist/StateContainerRegistry-vXMWtG7J.cjs +0 -660
  236. package/dist/StateContainerRegistry-vXMWtG7J.cjs.map +0 -1
  237. package/dist/StateContainerRegistry-v_prqMcI.cjs +0 -711
  238. package/dist/StateContainerRegistry-v_prqMcI.cjs.map +0 -1
  239. package/dist/branded-DCqi3De1.cjs +0 -18
  240. package/dist/branded-DCqi3De1.cjs.map +0 -1
  241. package/dist/branded-Max3xOTA.js +0 -13
  242. package/dist/branded-Max3xOTA.js.map +0 -1
  243. package/dist/config-0ZD9i3wy.js +0 -16
  244. package/dist/config-B3NIwDQv.cjs +0 -32
  245. package/dist/config-BKGHop0V.js +0 -16
  246. package/dist/config-BKoaAlmb.js +0 -16
  247. package/dist/config-BKoaAlmb.js.map +0 -1
  248. package/dist/config-BPj08-8h.cjs +0 -32
  249. package/dist/config-BR0Xy-Tn.cjs +0 -32
  250. package/dist/config-BR0Xy-Tn.cjs.map +0 -1
  251. package/dist/config-B_4xXpvK.cjs.map +0 -1
  252. package/dist/config-BflrQM4_.cjs +0 -32
  253. package/dist/config-BflrQM4_.cjs.map +0 -1
  254. package/dist/config-BzObBsk2.cjs +0 -32
  255. package/dist/config-BzObBsk2.cjs.map +0 -1
  256. package/dist/config-C0yumL1H.cjs +0 -32
  257. package/dist/config-C0yumL1H.cjs.map +0 -1
  258. package/dist/config-C8xqVHTf.js.map +0 -1
  259. package/dist/config-CCUhIYIF.js +0 -16
  260. package/dist/config-CCUhIYIF.js.map +0 -1
  261. package/dist/config-CGo__MAt.js +0 -16
  262. package/dist/config-CGo__MAt.js.map +0 -1
  263. package/dist/config-CQH9fTY-.cjs +0 -32
  264. package/dist/config-CQH9fTY-.cjs.map +0 -1
  265. package/dist/config-CR_Bz7RD.js +0 -16
  266. package/dist/config-CR_Bz7RD.js.map +0 -1
  267. package/dist/config-CTOa-yPN.cjs +0 -32
  268. package/dist/config-CTOa-yPN.cjs.map +0 -1
  269. package/dist/config-Cd7Q-B4g.js +0 -16
  270. package/dist/config-Cd7Q-B4g.js.map +0 -1
  271. package/dist/config-CmDEX-1o.js +0 -16
  272. package/dist/config-CmDEX-1o.js.map +0 -1
  273. package/dist/config-CoNMTnMA.cjs +0 -32
  274. package/dist/config-CoNMTnMA.cjs.map +0 -1
  275. package/dist/config-Cwj8-C1J.js +0 -16
  276. package/dist/config-Cwj8-C1J.js.map +0 -1
  277. package/dist/config-D3jisfdj.cjs +0 -32
  278. package/dist/config-D3jisfdj.cjs.map +0 -1
  279. package/dist/config-D4GifZQ4.js +0 -16
  280. package/dist/config-D4GifZQ4.js.map +0 -1
  281. package/dist/config-DDrSQGpQ.cjs +0 -32
  282. package/dist/config-DDrSQGpQ.cjs.map +0 -1
  283. package/dist/config-DEcslxan.cjs +0 -32
  284. package/dist/config-DEcslxan.cjs.map +0 -1
  285. package/dist/config-DLzmy2rZ.cjs +0 -32
  286. package/dist/config-DLzmy2rZ.cjs.map +0 -1
  287. package/dist/config-DMNZ2YLV.cjs +0 -32
  288. package/dist/config-DMNZ2YLV.cjs.map +0 -1
  289. package/dist/config-De9oQ6Ki.js +0 -16
  290. package/dist/config-De9oQ6Ki.js.map +0 -1
  291. package/dist/config-DoHx0Xsl.js.map +0 -1
  292. package/dist/config-DokTzpr8.cjs +0 -32
  293. package/dist/config-DokTzpr8.cjs.map +0 -1
  294. package/dist/config-DslYBm4Z.js +0 -16
  295. package/dist/config-DslYBm4Z.js.map +0 -1
  296. package/dist/config-H6FAqbW4.cjs +0 -32
  297. package/dist/config-H6FAqbW4.cjs.map +0 -1
  298. package/dist/config-XQua95Xz.js +0 -16
  299. package/dist/config-XQua95Xz.js.map +0 -1
  300. package/dist/config-Yp645dGK.js +0 -16
  301. package/dist/config-Yp645dGK.js.map +0 -1
  302. package/dist/config-ispAzOZV.js +0 -16
  303. package/dist/config-ispAzOZV.js.map +0 -1
  304. package/dist/ensure-9VEq5H0L.js +0 -9
  305. package/dist/ensure-9VEq5H0L.js.map +0 -1
  306. package/dist/ensure-BB6xHQAF.cjs +0 -14
  307. package/dist/ensure-BB6xHQAF.cjs.map +0 -1
  308. package/dist/ensure-BNDfTzqg.cjs +0 -14
  309. package/dist/ensure-BNDfTzqg.cjs.map +0 -1
  310. package/dist/ensure-BVCnjU7r.js +0 -365
  311. package/dist/ensure-BVCnjU7r.js.map +0 -1
  312. package/dist/ensure-BbzGXjep.cjs +0 -14
  313. package/dist/ensure-BbzGXjep.cjs.map +0 -1
  314. package/dist/ensure-BlIaQai6.js +0 -9
  315. package/dist/ensure-BlIaQai6.js.map +0 -1
  316. package/dist/ensure-Bm3oHxga.js +0 -9
  317. package/dist/ensure-Bm3oHxga.js.map +0 -1
  318. package/dist/ensure-C3eIRs6e.cjs +0 -14
  319. package/dist/ensure-C3eIRs6e.cjs.map +0 -1
  320. package/dist/ensure-C5I1xp2C.js +0 -9
  321. package/dist/ensure-C5I1xp2C.js.map +0 -1
  322. package/dist/ensure-CJZL7bcA.cjs +0 -391
  323. package/dist/ensure-CJZL7bcA.cjs.map +0 -1
  324. package/dist/ensure-CN6unBOe.cjs +0 -14
  325. package/dist/ensure-CN6unBOe.cjs.map +0 -1
  326. package/dist/ensure-CSHYjIeH.cjs +0 -14
  327. package/dist/ensure-CSHYjIeH.cjs.map +0 -1
  328. package/dist/ensure-CU-B1ywv.js +0 -9
  329. package/dist/ensure-CU-B1ywv.js.map +0 -1
  330. package/dist/ensure-CWKzeno7.js +0 -9
  331. package/dist/ensure-CWKzeno7.js.map +0 -1
  332. package/dist/ensure-CkENsuQ9.js +0 -9
  333. package/dist/ensure-CkENsuQ9.js.map +0 -1
  334. package/dist/ensure-Cm-4_LSh.cjs +0 -14
  335. package/dist/ensure-Cm-4_LSh.cjs.map +0 -1
  336. package/dist/ensure-Cqex5r1P.cjs +0 -14
  337. package/dist/ensure-Cqex5r1P.cjs.map +0 -1
  338. package/dist/ensure-Cv5AbNGZ.js +0 -9
  339. package/dist/ensure-Cv5AbNGZ.js.map +0 -1
  340. package/dist/ensure-D63lEMUK.cjs +0 -14
  341. package/dist/ensure-D63lEMUK.cjs.map +0 -1
  342. package/dist/ensure-DGEtPU9A.cjs +0 -14
  343. package/dist/ensure-DGEtPU9A.cjs.map +0 -1
  344. package/dist/ensure-DM3qb336.cjs +0 -14
  345. package/dist/ensure-DM3qb336.cjs.map +0 -1
  346. package/dist/ensure-DME-_T0j.cjs +0 -14
  347. package/dist/ensure-DME-_T0j.cjs.map +0 -1
  348. package/dist/ensure-DWd0GCYB.js +0 -9
  349. package/dist/ensure-DWd0GCYB.js.map +0 -1
  350. package/dist/ensure-DamKOP6q.cjs +0 -14
  351. package/dist/ensure-DamKOP6q.cjs.map +0 -1
  352. package/dist/ensure-Dcfptl-A.js +0 -9
  353. package/dist/ensure-Dcfptl-A.js.map +0 -1
  354. package/dist/ensure-Def-EBWG.js +0 -9
  355. package/dist/ensure-Def-EBWG.js.map +0 -1
  356. package/dist/ensure-DnHL5QiQ.cjs +0 -14
  357. package/dist/ensure-DnHL5QiQ.cjs.map +0 -1
  358. package/dist/ensure-Dr7I78Ku.cjs +0 -14
  359. package/dist/ensure-Dr7I78Ku.cjs.map +0 -1
  360. package/dist/ensure-SLVdGd5b.js +0 -9
  361. package/dist/ensure-SLVdGd5b.js.map +0 -1
  362. package/dist/ensure-Sb92MCXu.js +0 -9
  363. package/dist/ensure-Sb92MCXu.js.map +0 -1
  364. package/dist/ensure-gFlvevGm.cjs +0 -14
  365. package/dist/ensure-gFlvevGm.cjs.map +0 -1
  366. package/dist/ensure-l2-H7S5W.js +0 -9
  367. package/dist/ensure-l2-H7S5W.js.map +0 -1
  368. package/dist/ensure-mkL-3qh8.js +0 -9
  369. package/dist/ensure-mkL-3qh8.js.map +0 -1
  370. package/dist/ensure-n80crSlX.js +0 -9
  371. package/dist/ensure-n80crSlX.js.map +0 -1
  372. package/dist/ensure-nCxg7MCN.js +0 -9
  373. package/dist/ensure-nCxg7MCN.js.map +0 -1
  374. package/dist/ensure-vS71MV4q.cjs +0 -14
  375. package/dist/ensure-vS71MV4q.cjs.map +0 -1
  376. package/dist/management-6oQbmf0z.js +0 -41
  377. package/dist/management-6oQbmf0z.js.map +0 -1
  378. package/dist/management-B46QwA9Y.js +0 -41
  379. package/dist/management-B46QwA9Y.js.map +0 -1
  380. package/dist/management-B9yrRpeg.js +0 -41
  381. package/dist/management-B9yrRpeg.js.map +0 -1
  382. package/dist/management-BCKTEZ8Q.js +0 -41
  383. package/dist/management-BCKTEZ8Q.js.map +0 -1
  384. package/dist/management-BbMzdXbT.js +0 -41
  385. package/dist/management-BbMzdXbT.js.map +0 -1
  386. package/dist/management-Bg652agq.js +0 -41
  387. package/dist/management-Bg652agq.js.map +0 -1
  388. package/dist/management-BnedF5ZD.cjs +0 -79
  389. package/dist/management-BnedF5ZD.cjs.map +0 -1
  390. package/dist/management-BoUa99eB.cjs +0 -79
  391. package/dist/management-BoUa99eB.cjs.map +0 -1
  392. package/dist/management-C-wBdpho.js +0 -37
  393. package/dist/management-C-wBdpho.js.map +0 -1
  394. package/dist/management-C4SHcrJm.cjs +0 -79
  395. package/dist/management-C4SHcrJm.cjs.map +0 -1
  396. package/dist/management-CK-GL3wY.js +0 -41
  397. package/dist/management-CK-GL3wY.js.map +0 -1
  398. package/dist/management-CPhgY8OE.js +0 -41
  399. package/dist/management-CPhgY8OE.js.map +0 -1
  400. package/dist/management-CU_V3LIP.js +0 -41
  401. package/dist/management-CU_V3LIP.js.map +0 -1
  402. package/dist/management-CUwXDSi9.cjs +0 -79
  403. package/dist/management-CUwXDSi9.cjs.map +0 -1
  404. package/dist/management-CaqiyNzB.js +0 -41
  405. package/dist/management-CaqiyNzB.js.map +0 -1
  406. package/dist/management-Cin-JvYe.js +0 -41
  407. package/dist/management-Cin-JvYe.js.map +0 -1
  408. package/dist/management-ClaXym0F.cjs +0 -79
  409. package/dist/management-ClaXym0F.cjs.map +0 -1
  410. package/dist/management-DL0Uzsoz.js +0 -41
  411. package/dist/management-DL0Uzsoz.js.map +0 -1
  412. package/dist/management-DLdAQfqk.cjs +0 -79
  413. package/dist/management-DLdAQfqk.cjs.map +0 -1
  414. package/dist/management-DMZ8qpwr.cjs +0 -79
  415. package/dist/management-DMZ8qpwr.cjs.map +0 -1
  416. package/dist/management-DTzcC6aD.cjs.map +0 -1
  417. package/dist/management-DYLNyj9p.cjs +0 -79
  418. package/dist/management-DYLNyj9p.cjs.map +0 -1
  419. package/dist/management-Dag9u4t6.cjs +0 -79
  420. package/dist/management-Dag9u4t6.cjs.map +0 -1
  421. package/dist/management-DbMRdDBo.cjs +0 -79
  422. package/dist/management-DbMRdDBo.cjs.map +0 -1
  423. package/dist/management-DfnDAKmP.js +0 -41
  424. package/dist/management-DfnDAKmP.js.map +0 -1
  425. package/dist/management-DjBU1gtb.cjs +0 -79
  426. package/dist/management-DjBU1gtb.cjs.map +0 -1
  427. package/dist/management-DwCozsY8.js +0 -41
  428. package/dist/management-DwCozsY8.js.map +0 -1
  429. package/dist/management-H4m3ciJO.js +0 -32
  430. package/dist/management-H4m3ciJO.js.map +0 -1
  431. package/dist/management-Xo3A6Za3.cjs +0 -79
  432. package/dist/management-Xo3A6Za3.cjs.map +0 -1
  433. package/dist/management-ZU2YzOkr.js +0 -37
  434. package/dist/management-ZU2YzOkr.js.map +0 -1
  435. package/dist/management-baPDwA9n.cjs +0 -79
  436. package/dist/management-baPDwA9n.cjs.map +0 -1
  437. package/dist/management-jQGCvZNN.cjs +0 -70
  438. package/dist/management-jQGCvZNN.cjs.map +0 -1
  439. package/dist/management-ry_KteFK.cjs +0 -79
  440. package/dist/management-ry_KteFK.cjs.map +0 -1
  441. package/dist/management-xoZ7w3bI.cjs +0 -70
  442. package/dist/management-xoZ7w3bI.cjs.map +0 -1
  443. package/dist/resolve-dependencies-B2QggQAi.js +0 -729
  444. package/dist/resolve-dependencies-B2QggQAi.js.map +0 -1
  445. package/dist/resolve-dependencies-B6JDXvpr.js +0 -739
  446. package/dist/resolve-dependencies-B6JDXvpr.js.map +0 -1
  447. package/dist/resolve-dependencies-BA3u06uC.js +0 -731
  448. package/dist/resolve-dependencies-BA3u06uC.js.map +0 -1
  449. package/dist/resolve-dependencies-BAKAoD0U.js +0 -878
  450. package/dist/resolve-dependencies-BAKAoD0U.js.map +0 -1
  451. package/dist/resolve-dependencies-BFZQq60Y.cjs +0 -832
  452. package/dist/resolve-dependencies-BFZQq60Y.cjs.map +0 -1
  453. package/dist/resolve-dependencies-BGafS3Ww.js +0 -731
  454. package/dist/resolve-dependencies-BGafS3Ww.js.map +0 -1
  455. package/dist/resolve-dependencies-BHd34gS3.cjs +0 -832
  456. package/dist/resolve-dependencies-BHd34gS3.cjs.map +0 -1
  457. package/dist/resolve-dependencies-BNeayhbQ.cjs +0 -840
  458. package/dist/resolve-dependencies-BNeayhbQ.cjs.map +0 -1
  459. package/dist/resolve-dependencies-BT6TU2HF.cjs +0 -832
  460. package/dist/resolve-dependencies-BT6TU2HF.cjs.map +0 -1
  461. package/dist/resolve-dependencies-BWEMpuDy.js +0 -729
  462. package/dist/resolve-dependencies-BWEMpuDy.js.map +0 -1
  463. package/dist/resolve-dependencies-BiWkW2eS.js +0 -731
  464. package/dist/resolve-dependencies-BiWkW2eS.js.map +0 -1
  465. package/dist/resolve-dependencies-BjxCztYD.js +0 -739
  466. package/dist/resolve-dependencies-BjxCztYD.js.map +0 -1
  467. package/dist/resolve-dependencies-BlyBV0hB.cjs +0 -969
  468. package/dist/resolve-dependencies-BlyBV0hB.cjs.map +0 -1
  469. package/dist/resolve-dependencies-By26rT_i.js +0 -739
  470. package/dist/resolve-dependencies-By26rT_i.js.map +0 -1
  471. package/dist/resolve-dependencies-C9Kf7AzY.cjs +0 -832
  472. package/dist/resolve-dependencies-C9Kf7AzY.cjs.map +0 -1
  473. package/dist/resolve-dependencies-CTzV1txG.js +0 -731
  474. package/dist/resolve-dependencies-CTzV1txG.js.map +0 -1
  475. package/dist/resolve-dependencies-CWjuGHiF.cjs +0 -969
  476. package/dist/resolve-dependencies-CWjuGHiF.cjs.map +0 -1
  477. package/dist/resolve-dependencies-ClSsP0DJ.cjs +0 -830
  478. package/dist/resolve-dependencies-ClSsP0DJ.cjs.map +0 -1
  479. package/dist/resolve-dependencies-D0vTzZgs.js +0 -731
  480. package/dist/resolve-dependencies-D0vTzZgs.js.map +0 -1
  481. package/dist/resolve-dependencies-D2WnZMF-.cjs +0 -832
  482. package/dist/resolve-dependencies-D2WnZMF-.cjs.map +0 -1
  483. package/dist/resolve-dependencies-DCBLTeza.cjs +0 -969
  484. package/dist/resolve-dependencies-DCBLTeza.cjs.map +0 -1
  485. package/dist/resolve-dependencies-DMlqYJR2.js +0 -731
  486. package/dist/resolve-dependencies-DMlqYJR2.js.map +0 -1
  487. package/dist/resolve-dependencies-DP6U1EYB.cjs +0 -840
  488. package/dist/resolve-dependencies-DP6U1EYB.cjs.map +0 -1
  489. package/dist/resolve-dependencies-DSQNXvnV.cjs +0 -832
  490. package/dist/resolve-dependencies-DSQNXvnV.cjs.map +0 -1
  491. package/dist/resolve-dependencies-DV3HO_uH.js +0 -878
  492. package/dist/resolve-dependencies-DV3HO_uH.js.map +0 -1
  493. package/dist/resolve-dependencies-DXwMhP0Y.js +0 -878
  494. package/dist/resolve-dependencies-DXwMhP0Y.js.map +0 -1
  495. package/dist/resolve-dependencies-DbRWlt9u.js +0 -878
  496. package/dist/resolve-dependencies-DbRWlt9u.js.map +0 -1
  497. package/dist/resolve-dependencies-DcUUva2P.cjs +0 -832
  498. package/dist/resolve-dependencies-DcUUva2P.cjs.map +0 -1
  499. package/dist/resolve-dependencies-Dd8T6TLt.cjs +0 -832
  500. package/dist/resolve-dependencies-Dd8T6TLt.cjs.map +0 -1
  501. package/dist/resolve-dependencies-Dfdp_DZd.cjs +0 -840
  502. package/dist/resolve-dependencies-Dfdp_DZd.cjs.map +0 -1
  503. package/dist/resolve-dependencies-GJ8PNyNB.cjs +0 -969
  504. package/dist/resolve-dependencies-GJ8PNyNB.cjs.map +0 -1
  505. package/dist/resolve-dependencies-KSpTt4jy.cjs +0 -830
  506. package/dist/resolve-dependencies-KSpTt4jy.cjs.map +0 -1
  507. package/dist/resolve-dependencies-Nvjp4CwS.js +0 -731
  508. package/dist/resolve-dependencies-Nvjp4CwS.js.map +0 -1
  509. package/dist/resolve-dependencies-f-QUqYiL.js +0 -731
  510. package/dist/resolve-dependencies-f-QUqYiL.js.map +0 -1
  511. package/dist/tracked-B77j2g9M.js +0 -197
  512. package/dist/tracked-B77j2g9M.js.map +0 -1
  513. package/dist/tracked-BDVi2LKM.cjs +0 -227
  514. package/dist/tracked-BDVi2LKM.cjs.map +0 -1
  515. package/dist/tracked-BFdJCzL0.cjs +0 -242
  516. package/dist/tracked-BFdJCzL0.cjs.map +0 -1
  517. package/dist/tracked-BH-gX4T1.cjs +0 -227
  518. package/dist/tracked-BH-gX4T1.cjs.map +0 -1
  519. package/dist/tracked-BTHok3Dl.cjs +0 -227
  520. package/dist/tracked-BTHok3Dl.cjs.map +0 -1
  521. package/dist/tracked-BTbFkFeM.js +0 -212
  522. package/dist/tracked-BTbFkFeM.js.map +0 -1
  523. package/dist/tracked-BU_OBWqM.cjs +0 -242
  524. package/dist/tracked-BU_OBWqM.cjs.map +0 -1
  525. package/dist/tracked-BfctH2es.cjs +0 -242
  526. package/dist/tracked-BfctH2es.cjs.map +0 -1
  527. package/dist/tracked-BhQtzUhZ.js +0 -212
  528. package/dist/tracked-BhQtzUhZ.js.map +0 -1
  529. package/dist/tracked-BnqrYXiO.js +0 -212
  530. package/dist/tracked-BnqrYXiO.js.map +0 -1
  531. package/dist/tracked-BtgFOGup.js +0 -212
  532. package/dist/tracked-BtgFOGup.js.map +0 -1
  533. package/dist/tracked-C3nIS4J7.cjs +0 -242
  534. package/dist/tracked-C3nIS4J7.cjs.map +0 -1
  535. package/dist/tracked-C52awNV9.js +0 -197
  536. package/dist/tracked-C52awNV9.js.map +0 -1
  537. package/dist/tracked-CGzduF2m.js +0 -212
  538. package/dist/tracked-CGzduF2m.js.map +0 -1
  539. package/dist/tracked-CK_-ixtX.cjs +0 -227
  540. package/dist/tracked-CK_-ixtX.cjs.map +0 -1
  541. package/dist/tracked-CLlvURln.js +0 -212
  542. package/dist/tracked-CLlvURln.js.map +0 -1
  543. package/dist/tracked-CgHWmuGC.cjs +0 -242
  544. package/dist/tracked-CgHWmuGC.cjs.map +0 -1
  545. package/dist/tracked-CoAlC8fs.js +0 -197
  546. package/dist/tracked-CoAlC8fs.js.map +0 -1
  547. package/dist/tracked-D3Xjm1H1.cjs +0 -242
  548. package/dist/tracked-D3Xjm1H1.cjs.map +0 -1
  549. package/dist/tracked-DB6yMV5F.js +0 -212
  550. package/dist/tracked-DB6yMV5F.js.map +0 -1
  551. package/dist/tracked-DBn-bs_G.js +0 -197
  552. package/dist/tracked-DBn-bs_G.js.map +0 -1
  553. package/dist/tracked-DCfBaYjL.cjs +0 -227
  554. package/dist/tracked-DCfBaYjL.cjs.map +0 -1
  555. package/dist/tracked-DKduNLgI.js +0 -197
  556. package/dist/tracked-DKduNLgI.js.map +0 -1
  557. package/dist/tracked-DMBTDF0P.js +0 -197
  558. package/dist/tracked-DMBTDF0P.js.map +0 -1
  559. package/dist/tracked-DN3h3Rp1.js +0 -197
  560. package/dist/tracked-DN3h3Rp1.js.map +0 -1
  561. package/dist/tracked-DOGh1Q5Z.cjs +0 -242
  562. package/dist/tracked-DOGh1Q5Z.cjs.map +0 -1
  563. package/dist/tracked-DUkp4zve.cjs +0 -227
  564. package/dist/tracked-DUkp4zve.cjs.map +0 -1
  565. package/dist/tracked-D_ou7mYG.js +0 -212
  566. package/dist/tracked-D_ou7mYG.js.map +0 -1
  567. package/dist/tracked-Dcu6EATB.js +0 -197
  568. package/dist/tracked-Dcu6EATB.js.map +0 -1
  569. package/dist/tracked-GvAJQVAI.cjs +0 -271
  570. package/dist/tracked-GvAJQVAI.cjs.map +0 -1
  571. package/dist/tracked-O2lv-kJV.cjs +0 -242
  572. package/dist/tracked-O2lv-kJV.cjs.map +0 -1
  573. package/dist/tracked-WF6aXuAo.js +0 -223
  574. package/dist/tracked-WF6aXuAo.js.map +0 -1
  575. package/dist/tracked-d_sQWU3c.cjs +0 -227
  576. package/dist/tracked-d_sQWU3c.cjs.map +0 -1
  577. package/dist/tracked-n9TMK-30.cjs +0 -227
  578. package/dist/tracked-n9TMK-30.cjs.map +0 -1
  579. package/dist/tracked-njU-_pVa.cjs +0 -242
  580. package/dist/tracked-njU-_pVa.cjs.map +0 -1
  581. package/dist/tracked-zAgmKIlC.js +0 -212
  582. package/dist/tracked-zAgmKIlC.js.map +0 -1
  583. package/dist/tracking/dependency-manager.d.ts +0 -41
  584. package/dist/tracking/index.d.ts +0 -28
  585. package/dist/tracking/iteration-perf.bench.d.ts +0 -1
  586. package/dist/tracking/path-utils.d.ts +0 -69
  587. package/dist/tracking/resolve-dependencies.d.ts +0 -9
  588. package/dist/tracking/tracked.d.ts +0 -73
  589. package/dist/tracking/tracking-proxy.d.ts +0 -230
  590. package/dist/tracking.cjs +0 -21
  591. package/dist/tracking.d.cts +0 -9
  592. package/dist/tracking.d.ts +0 -9
  593. package/dist/tracking.js +0 -32
  594. package/dist/watch-BpwaUL8r.cjs.map +0 -1
  595. package/dist/watch-DWCqXllW.js.map +0 -1
@@ -1,368 +0,0 @@
1
- import { a as BLAC_DEFAULTS } from './StateContainerRegistry-DOkDGng-.js';
2
- import { t as getRegistry } from './config-XQua95Xz.js';
3
- //#region src/utils/idGenerator.ts
4
- /**
5
- * Generate simple ID with timestamp and random (no counter tracking)
6
- *
7
- * Format: `${prefix}:${timestamp}_${random}`
8
- *
9
- * @param prefix - Prefix for the ID
10
- * @returns Branded ID string
11
- *
12
- * @example
13
- * ```ts
14
- * const id = generateSimpleId('CounterBloc');
15
- * // Returns: "CounterBloc:1698765432100_a3k9d7f2q"
16
- * ```
17
- */
18
- function generateSimpleId(prefix, affix) {
19
- if (affix) return `${prefix}:${affix}`;
20
- return `${prefix}:${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
21
- }
22
- //#endregion
23
- //#region src/core/symbols.ts
24
- const EMIT = Symbol('blac.emit');
25
- const UPDATE = Symbol('blac.update');
26
- //#endregion
27
- //#region src/core/StateContainer.ts
28
- const EMPTY_DEPS = /* @__PURE__ */ new Map();
29
- var StateContainer = class StateContainer {
30
- static {
31
- this.__excludeFromDevTools = false;
32
- }
33
- static {
34
- this.enableStackTrace = true;
35
- }
36
- get dependencies() {
37
- return this._dependencies ?? EMPTY_DEPS;
38
- }
39
- depend(Type, instanceKey) {
40
- if (!this._dependencies) this._dependencies = /* @__PURE__ */ new Map();
41
- this._dependencies.set(
42
- Type,
43
- instanceKey ?? BLAC_DEFAULTS.DEFAULT_INSTANCE_KEY,
44
- );
45
- return () => getRegistry().ensure(Type, instanceKey);
46
- }
47
- constructor(initialState) {
48
- this._listeners = /* @__PURE__ */ new Set();
49
- this._disposed = false;
50
- this._hydrationStatus = 'idle';
51
- this._changedWhileHydrating = false;
52
- this._hydrationPromise = null;
53
- this._hydrationPromiseSettled = false;
54
- this._config = {};
55
- this._systemEventHandlers = /* @__PURE__ */ new Map();
56
- this._dependencies = null;
57
- this.name = this.constructor.name;
58
- this.debug = false;
59
- this.instanceId = generateSimpleId(this.constructor.name, 'main');
60
- this.createdAt = Date.now();
61
- this.lastUpdateTimestamp = Date.now();
62
- this.onSystemEvent = (event, handler) => {
63
- let handlers = this._systemEventHandlers.get(event);
64
- if (!handlers) {
65
- handlers = /* @__PURE__ */ new Set();
66
- this._systemEventHandlers.set(event, handlers);
67
- }
68
- handlers.add(handler);
69
- return () => {
70
- handlers?.delete(handler);
71
- };
72
- };
73
- this._state = initialState;
74
- }
75
- initConfig(config) {
76
- this._config = { ...config };
77
- this.name = this._config.name || this.constructor.name;
78
- this.debug = this._config.debug ?? false;
79
- this.instanceId = generateSimpleId(
80
- this.constructor.name,
81
- this._config.instanceId,
82
- );
83
- getRegistry().emit('created', this);
84
- }
85
- get state() {
86
- return this._state;
87
- }
88
- get isDisposed() {
89
- return this._disposed;
90
- }
91
- get hydrationStatus() {
92
- return this._hydrationStatus;
93
- }
94
- get hydrationError() {
95
- return this._hydrationError;
96
- }
97
- get isHydrated() {
98
- return this._hydrationStatus === 'hydrated';
99
- }
100
- get changedWhileHydrating() {
101
- return this._changedWhileHydrating;
102
- }
103
- subscribe(listener) {
104
- if (this._disposed)
105
- throw new Error(`Cannot subscribe to disposed container ${this.name}`);
106
- this._listeners.add(listener);
107
- return () => this._listeners.delete(listener);
108
- }
109
- dispose() {
110
- if (this._disposed) return;
111
- if (this.debug) console.log(`[${this.name}] Disposing...`);
112
- this._disposed = true;
113
- if (this._hydrationStatus === 'hydrating')
114
- this.failHydration(
115
- /* @__PURE__ */ new Error(
116
- `Hydration cancelled because ${this.name} was disposed`,
117
- ),
118
- );
119
- this.emitSystemEvent('dispose', void 0);
120
- this._listeners.clear();
121
- this._systemEventHandlers.clear();
122
- getRegistry().emit('disposed', this);
123
- if (this.debug) console.log(`[${this.name}] Disposed successfully`);
124
- }
125
- [EMIT](newState) {
126
- this.applyState(newState, 'default');
127
- }
128
- [UPDATE](updater) {
129
- if (this._disposed)
130
- throw new Error(
131
- `Cannot update state from disposed container ${this.name}`,
132
- );
133
- this[EMIT](updater(this._state));
134
- }
135
- beginHydration() {
136
- if (this._disposed)
137
- throw new Error(
138
- `Cannot begin hydration for disposed container ${this.name}`,
139
- );
140
- this._changedWhileHydrating = false;
141
- this._hydrationError = void 0;
142
- this._hydrationPromise = null;
143
- this._resolveHydrationPromise = void 0;
144
- this._rejectHydrationPromise = void 0;
145
- this._hydrationPromiseSettled = false;
146
- this.ensureHydrationPromise();
147
- this.setHydrationStatus('hydrating');
148
- }
149
- applyHydratedState(newState) {
150
- if (this._disposed) return false;
151
- if (this._hydrationStatus !== 'hydrating' || this._changedWhileHydrating)
152
- return false;
153
- this.applyState(newState, 'hydration');
154
- return true;
155
- }
156
- finishHydration() {
157
- if (this._hydrationStatus !== 'hydrating') {
158
- if (this._hydrationStatus === 'hydrated') return;
159
- if (this._hydrationStatus === 'error') this.ensureHydrationPromise();
160
- }
161
- this.setHydrationStatus('hydrated');
162
- this.resolveHydration();
163
- }
164
- failHydration(error) {
165
- const err =
166
- error instanceof Error
167
- ? error
168
- : /* @__PURE__ */ new Error(`Hydration failed: ${String(error)}`);
169
- this._hydrationError = err;
170
- this.setHydrationStatus('error', err);
171
- this.rejectHydration(err);
172
- }
173
- waitForHydration() {
174
- if (
175
- this._hydrationStatus === 'idle' ||
176
- this._hydrationStatus === 'hydrated'
177
- )
178
- return Promise.resolve();
179
- if (this._hydrationStatus === 'error')
180
- return Promise.reject(
181
- this._hydrationError ??
182
- /* @__PURE__ */ new Error(
183
- `Hydration failed for container ${this.name}`,
184
- ),
185
- );
186
- return this.ensureHydrationPromise();
187
- }
188
- captureStackTrace() {
189
- if (
190
- !StateContainer.enableStackTrace ||
191
- (typeof process !== 'undefined' && process.env?.NODE_ENV === 'production')
192
- )
193
- return '';
194
- try {
195
- const relevantLines = /* @__PURE__ */ (new Error().stack || '')
196
- .split('\n')
197
- .slice(1);
198
- const formattedLines = [];
199
- for (const line of relevantLines) {
200
- if (!line.trim()) continue;
201
- if (
202
- line.includes('StateContainer.emit') ||
203
- line.includes('StateContainer.update') ||
204
- line.includes('StateContainer.captureStackTrace') ||
205
- line.includes('[blac.emit]') ||
206
- line.includes('[blac.update]') ||
207
- line.includes('Cubit.patch') ||
208
- line.includes('/blac-core/dist/') ||
209
- line.includes('@blac/core/')
210
- )
211
- continue;
212
- if (
213
- line.includes('node_modules') ||
214
- line.includes('react-dom') ||
215
- line.includes('react_jsx') ||
216
- line.includes('.vite/deps') ||
217
- line.includes('executeDispatch') ||
218
- line.includes('runWithFiber') ||
219
- line.includes('invokeGuarded') ||
220
- line.includes('callCallback') ||
221
- line.includes('processDispatchQueue') ||
222
- line.includes('dispatchEvent') ||
223
- line.includes('batchedUpdates')
224
- )
225
- continue;
226
- const formatted = this.formatStackLine(line);
227
- if (formatted) formattedLines.push(formatted);
228
- }
229
- return formattedLines.join('\n');
230
- } catch {
231
- return '';
232
- }
233
- }
234
- formatStackLine(line) {
235
- const match = line.match(/at\s+(.+?)\s+\((.+?):(\d+):(\d+)\)/);
236
- if (!match) {
237
- const simpleMatch = line.match(/at\s+(.+?):(\d+):(\d+)/);
238
- if (simpleMatch) {
239
- const [, url, lineNum, col] = simpleMatch;
240
- return ` at ${this.cleanFilePath(url)}:${lineNum}:${col}`;
241
- }
242
- return null;
243
- }
244
- const [, functionName, url, lineNum, col] = match;
245
- return ` at ${functionName} (${this.cleanFilePath(url)}:${lineNum}:${col})`;
246
- }
247
- cleanFilePath(url) {
248
- let path = url
249
- .replace(/http:\/\/localhost:\d+\/@fs/, '')
250
- .replace(/http:\/\/localhost:\d+\//, '')
251
- .replace(/\?t=\d+/, '')
252
- .replace(/\?v=[a-f0-9]+/, '');
253
- const projectMatch = path.match(/\/Projects\/blac\/(.+)/);
254
- if (projectMatch) path = projectMatch[1];
255
- const segments = path.split('/');
256
- if (segments.length > 3) path = segments.slice(-3).join('/');
257
- return path;
258
- }
259
- applyState(newState, source) {
260
- if (this._disposed)
261
- throw new Error(`Cannot emit state from disposed container ${this.name}`);
262
- if (this._state === newState) return;
263
- if (this._hydrationStatus === 'hydrating' && source !== 'hydration')
264
- this._changedWhileHydrating = true;
265
- const previousState = this._state;
266
- this._state = newState;
267
- this.emitSystemEvent('stateChanged', {
268
- state: newState,
269
- previousState,
270
- });
271
- const listeners = Array.from(this._listeners);
272
- for (const listener of listeners)
273
- try {
274
- listener(newState);
275
- } catch (error) {
276
- console.error(`[${this.name}] Error in listener:`, error);
277
- }
278
- const stackTrace = this.captureStackTrace();
279
- getRegistry().emit(
280
- 'stateChanged',
281
- this,
282
- previousState,
283
- newState,
284
- stackTrace,
285
- );
286
- this.lastUpdateTimestamp = Date.now();
287
- }
288
- setHydrationStatus(status, error) {
289
- const previousStatus = this._hydrationStatus;
290
- this._hydrationStatus = status;
291
- this._hydrationError = error;
292
- this.emitSystemEvent('hydrationChanged', {
293
- status,
294
- previousStatus,
295
- error,
296
- changedWhileHydrating: this._changedWhileHydrating,
297
- });
298
- }
299
- ensureHydrationPromise() {
300
- if (!this._hydrationPromise || this._hydrationPromiseSettled) {
301
- this._hydrationPromiseSettled = false;
302
- this._hydrationPromise = new Promise((resolve, reject) => {
303
- this._resolveHydrationPromise = () => {
304
- if (this._hydrationPromiseSettled) return;
305
- this._hydrationPromiseSettled = true;
306
- resolve();
307
- };
308
- this._rejectHydrationPromise = (error) => {
309
- if (this._hydrationPromiseSettled) return;
310
- this._hydrationPromiseSettled = true;
311
- reject(error);
312
- };
313
- });
314
- this._hydrationPromise.catch(() => {});
315
- }
316
- return this._hydrationPromise;
317
- }
318
- resolveHydration() {
319
- this._resolveHydrationPromise?.();
320
- }
321
- rejectHydration(error) {
322
- this.ensureHydrationPromise();
323
- this._rejectHydrationPromise?.(error);
324
- }
325
- emitSystemEvent(event, payload) {
326
- const handlers = this._systemEventHandlers.get(event);
327
- if (!handlers) return;
328
- for (const handler of handlers)
329
- try {
330
- handler(payload);
331
- } catch (error) {
332
- console.error(`[${this.name}] Error in system event handler:`, error);
333
- }
334
- }
335
- };
336
- //#endregion
337
- //#region src/core/Cubit.ts
338
- var Cubit = class extends StateContainer {
339
- constructor(initialState) {
340
- super(initialState);
341
- this.patch = (partial) => {
342
- if (typeof this.state !== 'object' || this.state === null)
343
- throw new Error('patch() is only available for object state types');
344
- const current = this.state;
345
- let hasChanges = false;
346
- for (const key in partial)
347
- if (!Object.is(current[key], partial[key])) {
348
- hasChanges = true;
349
- break;
350
- }
351
- if (hasChanges)
352
- this.update((c) => ({
353
- ...c,
354
- ...partial,
355
- }));
356
- };
357
- }
358
- emit(newState) {
359
- this[EMIT](newState);
360
- }
361
- update(updater) {
362
- this[UPDATE](updater);
363
- }
364
- };
365
- //#endregion
366
- export { UPDATE as i, StateContainer as n, EMIT as r, Cubit as t };
367
-
368
- //# sourceMappingURL=Cubit-PMTXxI_u.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cubit-PMTXxI_u.js","names":[],"sources":["../src/utils/idGenerator.ts","../src/core/symbols.ts","../src/core/StateContainer.ts","../src/core/Cubit.ts"],"sourcesContent":["/**\n * Centralized ID Generation\n *\n * Provides consistent, collision-resistant ID generation for all BlaC subsystems.\n * Uses timestamp + counter + random suffix for uniqueness.\n */\n\n// Global counter map for ID generation\nconst globalCounters = new Map<string, number>();\n\n/**\n * Creates an ID generator with isolated counter state\n *\n * @param prefix - Prefix for generated IDs\n * @returns Object with next(), nextSimple(), and reset() methods\n *\n * @example\n * ```ts\n * const generator = createIdGenerator('sub');\n * const id1 = generator.next(); // \"sub:1698765432100_1_a3k9d7f2q\"\n * const id2 = generator.next(); // \"sub:1698765432101_2_b4n8e9g3r\"\n * ```\n */\nexport function createIdGenerator(prefix: string) {\n let counter = 0;\n return {\n next: () =>\n `${prefix}:${Date.now()}_${++counter}_${Math.random().toString(36).substring(2, 11)}`,\n nextSimple: () => `${prefix}:${++counter}`,\n reset: () => {\n counter = 0;\n },\n };\n}\n\n/**\n * Generate ID with timestamp, counter, and random suffix (tree-shakeable)\n *\n * Format: `${prefix}:${timestamp}_${counter}_${random}`\n *\n * @param prefix - Prefix for the ID (e.g., 'sub', 'consumer', 'stage')\n * @returns Branded ID string\n *\n * @example\n * const id = generateId('sub');\n * // Returns: \"sub:1698765432100_1_a3k9d7f2q\"\n */\nexport function generateId(prefix: string): string {\n const counter = (globalCounters.get(prefix) ?? 0) + 1;\n globalCounters.set(prefix, counter);\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 11);\n return `${prefix}:${timestamp}_${counter}_${random}`;\n}\n\n/**\n * Generate simple ID with timestamp and random (no counter tracking)\n *\n * Format: `${prefix}:${timestamp}_${random}`\n *\n * @param prefix - Prefix for the ID\n * @returns Branded ID string\n *\n * @example\n * ```ts\n * const id = generateSimpleId('CounterBloc');\n * // Returns: \"CounterBloc:1698765432100_a3k9d7f2q\"\n * ```\n */\nexport function generateSimpleId(prefix: string, affix?: string): string {\n if (affix) {\n return `${prefix}:${affix}`;\n }\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 11);\n return `${prefix}:${timestamp}_${random}`;\n}\n\n/**\n * Reset all counters for testing purposes\n * @internal\n */\nexport function __resetIdCounters(): void {\n globalCounters.clear();\n}\n","export const EMIT = Symbol('blac.emit');\nexport const UPDATE = Symbol('blac.update');\n","import { generateSimpleId } from '../utils/idGenerator';\nimport { BLAC_DEFAULTS } from '../constants';\nimport { getRegistry } from '../registry/config';\nimport type { StateContainerConstructor } from '../types/utilities';\nimport { EMIT, UPDATE } from './symbols';\n\nexport interface StateContainerConfig {\n name?: string;\n debug?: boolean;\n instanceId?: string;\n}\n\nexport type HydrationStatus = 'idle' | 'hydrating' | 'hydrated' | 'error';\n\ntype StateListener<S> = (state: S) => void;\n\nexport type SystemEvent = 'stateChanged' | 'dispose' | 'hydrationChanged';\n\nexport interface SystemEventPayloads<S> {\n stateChanged: { state: S; previousState: S };\n dispose: void;\n hydrationChanged: {\n status: HydrationStatus;\n previousStatus: HydrationStatus;\n error?: Error;\n changedWhileHydrating: boolean;\n };\n}\n\ntype SystemEventHandler<S, E extends SystemEvent> = (\n payload: SystemEventPayloads<S>[E],\n) => void;\n\nconst EMPTY_DEPS: ReadonlyMap<any, any> = new Map();\n\nexport abstract class StateContainer<S extends object = any> {\n static __excludeFromDevTools = false;\n static enableStackTrace = true;\n\n private _state: S;\n private readonly _listeners = new Set<StateListener<S>>();\n private _disposed = false;\n private _hydrationStatus: HydrationStatus = 'idle';\n private _hydrationError?: Error;\n private _changedWhileHydrating = false;\n private _hydrationPromise: Promise<void> | null = null;\n private _resolveHydrationPromise?: () => void;\n private _rejectHydrationPromise?: (error: Error) => void;\n private _hydrationPromiseSettled = false;\n private _config: StateContainerConfig = {};\n private readonly _systemEventHandlers = new Map<\n SystemEvent,\n Set<SystemEventHandler<S, any>>\n >();\n private _dependencies: Map<StateContainerConstructor, string> | null = null;\n\n name: string = this.constructor.name;\n debug: boolean = false;\n instanceId: string = generateSimpleId(this.constructor.name, 'main');\n createdAt: number = Date.now();\n lastUpdateTimestamp: number = Date.now();\n\n get dependencies(): ReadonlyMap<StateContainerConstructor, string> {\n return this._dependencies ?? EMPTY_DEPS;\n }\n\n protected depend<T extends StateContainerConstructor>(\n Type: T,\n instanceKey?: string,\n ): () => InstanceType<T> {\n if (!this._dependencies) {\n this._dependencies = new Map();\n }\n this._dependencies.set(\n Type,\n instanceKey ?? BLAC_DEFAULTS.DEFAULT_INSTANCE_KEY,\n );\n return () => getRegistry().ensure(Type, instanceKey);\n }\n\n constructor(initialState: S) {\n this._state = initialState;\n }\n\n initConfig(config: StateContainerConfig): void {\n this._config = { ...config };\n this.name = this._config.name || this.constructor.name;\n this.debug = this._config.debug ?? false;\n this.instanceId = generateSimpleId(\n this.constructor.name,\n this._config.instanceId,\n );\n getRegistry().emit('created', this);\n }\n\n get state(): Readonly<S> {\n return this._state;\n }\n\n get isDisposed(): boolean {\n return this._disposed;\n }\n\n get hydrationStatus(): HydrationStatus {\n return this._hydrationStatus;\n }\n\n get hydrationError(): Error | undefined {\n return this._hydrationError;\n }\n\n get isHydrated(): boolean {\n return this._hydrationStatus === 'hydrated';\n }\n\n get changedWhileHydrating(): boolean {\n return this._changedWhileHydrating;\n }\n\n subscribe(listener: StateListener<S>): () => void {\n if (this._disposed) {\n throw new Error(`Cannot subscribe to disposed container ${this.name}`);\n }\n this._listeners.add(listener);\n return () => this._listeners.delete(listener);\n }\n\n dispose(): void {\n if (this._disposed) return;\n\n if (this.debug) {\n console.log(`[${this.name}] Disposing...`);\n }\n\n this._disposed = true;\n\n if (this._hydrationStatus === 'hydrating') {\n this.failHydration(\n new Error(`Hydration cancelled because ${this.name} was disposed`),\n );\n }\n\n this.emitSystemEvent('dispose', undefined as void);\n\n this._listeners.clear();\n this._systemEventHandlers.clear();\n\n getRegistry().emit('disposed', this);\n\n if (this.debug) {\n console.log(`[${this.name}] Disposed successfully`);\n }\n }\n\n protected [EMIT](newState: S): void {\n this.applyState(newState, 'default');\n }\n\n protected [UPDATE](updater: (current: S) => S): void {\n if (this._disposed) {\n throw new Error(\n `Cannot update state from disposed container ${this.name}`,\n );\n }\n this[EMIT](updater(this._state));\n }\n\n beginHydration(): void {\n if (this._disposed) {\n throw new Error(\n `Cannot begin hydration for disposed container ${this.name}`,\n );\n }\n\n this._changedWhileHydrating = false;\n this._hydrationError = undefined;\n this._hydrationPromise = null;\n this._resolveHydrationPromise = undefined;\n this._rejectHydrationPromise = undefined;\n this._hydrationPromiseSettled = false;\n void this.ensureHydrationPromise();\n this.setHydrationStatus('hydrating');\n }\n\n applyHydratedState(newState: S): boolean {\n if (this._disposed) {\n return false;\n }\n\n if (this._hydrationStatus !== 'hydrating' || this._changedWhileHydrating) {\n return false;\n }\n\n this.applyState(newState, 'hydration');\n return true;\n }\n\n finishHydration(): void {\n if (this._hydrationStatus !== 'hydrating') {\n if (this._hydrationStatus === 'hydrated') {\n return;\n }\n if (this._hydrationStatus === 'error') {\n void this.ensureHydrationPromise();\n }\n }\n\n this.setHydrationStatus('hydrated');\n this.resolveHydration();\n }\n\n failHydration(error: Error): void {\n const err =\n error instanceof Error\n ? error\n : new Error(`Hydration failed: ${String(error)}`);\n\n this._hydrationError = err;\n this.setHydrationStatus('error', err);\n this.rejectHydration(err);\n }\n\n waitForHydration(): Promise<void> {\n if (\n this._hydrationStatus === 'idle' ||\n this._hydrationStatus === 'hydrated'\n ) {\n return Promise.resolve();\n }\n\n if (this._hydrationStatus === 'error') {\n return Promise.reject(\n this._hydrationError ??\n new Error(`Hydration failed for container ${this.name}`),\n );\n }\n\n return this.ensureHydrationPromise();\n }\n\n private captureStackTrace(): string {\n if (\n !StateContainer.enableStackTrace ||\n (typeof process !== 'undefined' && process.env?.NODE_ENV === 'production')\n ) {\n return '';\n }\n\n try {\n const error = new Error();\n const stack = error.stack || '';\n const lines = stack.split('\\n');\n const relevantLines = lines.slice(1);\n const formattedLines: string[] = [];\n\n for (const line of relevantLines) {\n if (!line.trim()) continue;\n\n if (\n line.includes('StateContainer.emit') ||\n line.includes('StateContainer.update') ||\n line.includes('StateContainer.captureStackTrace') ||\n line.includes('[blac.emit]') ||\n line.includes('[blac.update]') ||\n line.includes('Cubit.patch') ||\n line.includes('/blac-core/dist/') ||\n line.includes('@blac/core/')\n ) {\n continue;\n }\n\n if (\n line.includes('node_modules') ||\n line.includes('react-dom') ||\n line.includes('react_jsx') ||\n line.includes('.vite/deps') ||\n line.includes('executeDispatch') ||\n line.includes('runWithFiber') ||\n line.includes('invokeGuarded') ||\n line.includes('callCallback') ||\n line.includes('processDispatchQueue') ||\n line.includes('dispatchEvent') ||\n line.includes('batchedUpdates')\n ) {\n continue;\n }\n\n const formatted = this.formatStackLine(line);\n if (formatted) {\n formattedLines.push(formatted);\n }\n }\n\n return formattedLines.join('\\n');\n } catch {\n return '';\n }\n }\n\n private formatStackLine(line: string): string | null {\n const match = line.match(/at\\s+(.+?)\\s+\\((.+?):(\\d+):(\\d+)\\)/);\n if (!match) {\n const simpleMatch = line.match(/at\\s+(.+?):(\\d+):(\\d+)/);\n if (simpleMatch) {\n const [, url, lineNum, col] = simpleMatch;\n const cleanPath = this.cleanFilePath(url);\n return ` at ${cleanPath}:${lineNum}:${col}`;\n }\n return null;\n }\n\n const [, functionName, url, lineNum, col] = match;\n const cleanPath = this.cleanFilePath(url);\n\n return ` at ${functionName} (${cleanPath}:${lineNum}:${col})`;\n }\n\n private cleanFilePath(url: string): string {\n let path = url\n .replace(/http:\\/\\/localhost:\\d+\\/@fs/, '')\n .replace(/http:\\/\\/localhost:\\d+\\//, '')\n .replace(/\\?t=\\d+/, '')\n .replace(/\\?v=[a-f0-9]+/, '');\n\n const projectMatch = path.match(/\\/Projects\\/blac\\/(.+)/);\n if (projectMatch) {\n path = projectMatch[1];\n }\n\n const segments = path.split('/');\n if (segments.length > 3) {\n path = segments.slice(-3).join('/');\n }\n\n return path;\n }\n\n private applyState(newState: S, source: 'default' | 'hydration'): void {\n if (this._disposed) {\n throw new Error(`Cannot emit state from disposed container ${this.name}`);\n }\n\n if (this._state === newState) return;\n\n if (this._hydrationStatus === 'hydrating' && source !== 'hydration') {\n this._changedWhileHydrating = true;\n }\n\n const previousState = this._state;\n this._state = newState;\n\n this.emitSystemEvent('stateChanged', {\n state: newState,\n previousState,\n });\n\n const listeners = Array.from(this._listeners);\n for (const listener of listeners) {\n try {\n listener(newState);\n } catch (error) {\n console.error(`[${this.name}] Error in listener:`, error);\n }\n }\n\n const stackTrace = this.captureStackTrace();\n\n getRegistry().emit(\n 'stateChanged',\n this,\n previousState,\n newState,\n stackTrace,\n );\n this.lastUpdateTimestamp = Date.now();\n }\n\n private setHydrationStatus(status: HydrationStatus, error?: Error): void {\n const previousStatus = this._hydrationStatus;\n this._hydrationStatus = status;\n this._hydrationError = error;\n\n this.emitSystemEvent('hydrationChanged', {\n status,\n previousStatus,\n error,\n changedWhileHydrating: this._changedWhileHydrating,\n });\n }\n\n private ensureHydrationPromise(): Promise<void> {\n if (!this._hydrationPromise || this._hydrationPromiseSettled) {\n this._hydrationPromiseSettled = false;\n this._hydrationPromise = new Promise<void>((resolve, reject) => {\n this._resolveHydrationPromise = () => {\n if (this._hydrationPromiseSettled) return;\n this._hydrationPromiseSettled = true;\n resolve();\n };\n this._rejectHydrationPromise = (error: Error) => {\n if (this._hydrationPromiseSettled) return;\n this._hydrationPromiseSettled = true;\n reject(error);\n };\n });\n this._hydrationPromise.catch(() => {});\n }\n\n return this._hydrationPromise;\n }\n\n private resolveHydration(): void {\n this._resolveHydrationPromise?.();\n }\n\n private rejectHydration(error: Error): void {\n void this.ensureHydrationPromise();\n this._rejectHydrationPromise?.(error);\n }\n\n protected onSystemEvent = <E extends SystemEvent>(\n event: E,\n handler: SystemEventHandler<S, E>,\n ): (() => void) => {\n let handlers = this._systemEventHandlers.get(event);\n if (!handlers) {\n handlers = new Set();\n this._systemEventHandlers.set(event, handlers);\n }\n handlers.add(handler as SystemEventHandler<S, any>);\n\n return () => {\n handlers?.delete(handler as SystemEventHandler<S, any>);\n };\n };\n\n private emitSystemEvent<E extends SystemEvent>(\n event: E,\n payload: SystemEventPayloads<S>[E],\n ): void {\n const handlers = this._systemEventHandlers.get(event);\n if (!handlers) return;\n\n for (const handler of handlers) {\n try {\n handler(payload);\n } catch (error) {\n console.error(`[${this.name}] Error in system event handler:`, error);\n }\n }\n }\n}\n","import { StateContainer } from './StateContainer';\nimport { EMIT, UPDATE } from './symbols';\n\nexport abstract class Cubit<S extends object = any> extends StateContainer<S> {\n constructor(initialState: S) {\n super(initialState);\n }\n\n public emit(newState: S): void {\n this[EMIT](newState);\n }\n\n public update(updater: (current: S) => S): void {\n this[UPDATE](updater);\n }\n\n public patch = ((partial: S extends object ? Partial<S> : never): void => {\n if (typeof this.state !== 'object' || this.state === null) {\n throw new Error('patch() is only available for object state types');\n }\n const current = this.state;\n let hasChanges = false;\n for (const key in partial) {\n if (!Object.is((current as any)[key], (partial as any)[key])) {\n hasChanges = true;\n break;\n }\n }\n if (hasChanges) {\n this.update((c) => ({ ...c, ...partial }) as S);\n }\n }) as S extends object ? (partial: Partial<S>) => void : never;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cubit-VJuu2tt9.js","names":[],"sources":["../src/utils/idGenerator.ts","../src/core/symbols.ts","../src/core/StateContainer.ts","../src/core/Cubit.ts"],"sourcesContent":["/**\n * Centralized ID Generation\n *\n * Provides consistent, collision-resistant ID generation for all BlaC subsystems.\n * Uses timestamp + counter + random suffix for uniqueness.\n */\n\n// Global counter map for ID generation\nconst globalCounters = new Map<string, number>();\n\n/**\n * Creates an ID generator with isolated counter state\n *\n * @param prefix - Prefix for generated IDs\n * @returns Object with next(), nextSimple(), and reset() methods\n *\n * @example\n * ```ts\n * const generator = createIdGenerator('sub');\n * const id1 = generator.next(); // \"sub:1698765432100_1_a3k9d7f2q\"\n * const id2 = generator.next(); // \"sub:1698765432101_2_b4n8e9g3r\"\n * ```\n */\nexport function createIdGenerator(prefix: string) {\n let counter = 0;\n return {\n next: () =>\n `${prefix}:${Date.now()}_${++counter}_${Math.random().toString(36).substring(2, 11)}`,\n nextSimple: () => `${prefix}:${++counter}`,\n reset: () => {\n counter = 0;\n },\n };\n}\n\n/**\n * Generate ID with timestamp, counter, and random suffix (tree-shakeable)\n *\n * Format: `${prefix}:${timestamp}_${counter}_${random}`\n *\n * @param prefix - Prefix for the ID (e.g., 'sub', 'consumer', 'stage')\n * @returns Branded ID string\n *\n * @example\n * const id = generateId('sub');\n * // Returns: \"sub:1698765432100_1_a3k9d7f2q\"\n */\nexport function generateId(prefix: string): string {\n const counter = (globalCounters.get(prefix) ?? 0) + 1;\n globalCounters.set(prefix, counter);\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 11);\n return `${prefix}:${timestamp}_${counter}_${random}`;\n}\n\n/**\n * Generate simple ID with timestamp and random (no counter tracking)\n *\n * Format: `${prefix}:${timestamp}_${random}`\n *\n * @param prefix - Prefix for the ID\n * @returns Branded ID string\n *\n * @example\n * ```ts\n * const id = generateSimpleId('CounterBloc');\n * // Returns: \"CounterBloc:1698765432100_a3k9d7f2q\"\n * ```\n */\nexport function generateSimpleId(prefix: string, affix?: string): string {\n if (affix) {\n return `${prefix}:${affix}`;\n }\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 11);\n return `${prefix}:${timestamp}_${random}`;\n}\n\n/**\n * Reset all counters for testing purposes\n * @internal\n */\nexport function __resetIdCounters(): void {\n globalCounters.clear();\n}\n","/**\n * @internal @deprecated Symbol-keyed mutation entry point on `StateContainer`.\n *\n * Per A2 audit (`plans/blac-core-migration/_audit.md`), this symbol has zero\n * external consumers — only in-package tests still reference it. C0 keeps it\n * as a thin alias for `emit()` so the existing test files typecheck and run\n * unchanged; C5 will port those tests to use `emit()` directly and delete\n * this symbol along with its `[EMIT]` method on `StateContainer`.\n *\n * Do not add new uses of this symbol.\n */\nexport const EMIT = Symbol('blac.emit');\n\n/**\n * @internal Apply one owner's (consumer's) deps slice to an instance.\n * Called by framework adapters (e.g. @blac/react useBloc) — not public API.\n *\n * Kept until D0 ports `useBloc` off the legacy adapter surface. See A2 audit\n * (`plans/blac-core-migration/_audit.md`) for the consumer list.\n */\nexport const APPLY_DEPS = Symbol('blac.applyDeps');\n\n/**\n * @internal Withdraw one owner's entire deps slice (consumer unmounted).\n * Called by framework adapters — not public API.\n *\n * Kept until D0 ports `useBloc`. See A2 audit for the consumer list.\n */\nexport const REMOVE_DEPS_OWNER = Symbol('blac.removeDepsOwner');\n","import {\n ALL_PATHS,\n StructuralContainer,\n type DeepPartial,\n type StructuralContainerOptions,\n} from '@dirtytalk/structural';\nimport { generateSimpleId } from '../utils/idGenerator';\nimport { BLAC_DEFAULTS } from '../constants';\nimport { getRegistry } from '../registry/config';\nimport type { StateContainerConstructor } from '../types/utilities';\nimport { APPLY_DEPS, EMIT, REMOVE_DEPS_OWNER } from './symbols';\nimport { type EqualityFn, getBlacConfig } from '../config';\nimport { getClassEquality } from '../utils/static-props';\n\nexport interface StateContainerConfig {\n name?: string;\n debug?: boolean;\n instanceId?: string;\n /** Args passed at acquire time; forwarded to init(). */\n args?: unknown;\n}\n\nexport type HydrationStatus = 'idle' | 'hydrating' | 'hydrated' | 'error';\n\ntype StateListener<S> = (state: S) => void;\n\nexport type SystemEvent = 'stateChanged' | 'dispose' | 'hydrationChanged';\n\nexport interface SystemEventPayloads<S> {\n stateChanged: { state: S; previousState: S };\n dispose: void;\n hydrationChanged: {\n status: HydrationStatus;\n previousStatus: HydrationStatus;\n error?: Error;\n changedWhileHydrating: boolean;\n };\n}\n\ntype SystemEventHandler<S, E extends SystemEvent> = (\n payload: SystemEventPayloads<S>[E],\n) => void;\n\nconst EMPTY_DEPS: ReadonlyMap<any, any> = new Map();\n\n/**\n * Shallow per-key `Object.is` comparison of two plain records. Keys are\n * considered: a key present in one but not the other (regardless of value)\n * makes the records unequal. Used to detect real deps changes.\n */\nfunction shallowEqualRecord(\n a: Record<string, unknown>,\n b: Record<string, unknown>,\n): boolean {\n if (a === b) return true;\n const aKeys = Object.keys(a);\n if (aKeys.length !== Object.keys(b).length) return false;\n for (const key of aKeys) {\n if (!(key in b)) return false;\n if (!Object.is(a[key], b[key])) return false;\n }\n return true;\n}\n\n/**\n * BlaC's lifecycle/identity/dependency layer on top of `StructuralContainer`.\n *\n * StructuralContainer provides:\n * - `state` getter\n * - `emit` / `patch` / `update` (path-tracked, microtask-flushed)\n * - `channel` (the underlying `DirtyChannel`)\n * - `registerConsumerPaths` / `unregisterConsumer` (for fine-grained consumers)\n * - per-class `PathInterner`\n *\n * StateContainer layers on:\n * - identity (`name`, `instanceId`, `createdAt`, `debug`)\n * - lifecycle (`dispose`, `isDisposed`, `onSystemEvent`)\n * - hydration (`beginHydration` / `applyHydratedState` / `finishHydration` / `failHydration` / `waitForHydration`)\n * - cross-bloc deps (`depend()`, `dependencies` getter)\n * - per-consumer deps slices (`APPLY_DEPS` / `REMOVE_DEPS_OWNER` / `onDepsChanged`)\n * - registry integration (config-driven equality, emit-rate circuit breaker)\n *\n * Subscribers can attach via:\n * - `subscribe(listener)` — legacy state listener (back-compat); fires on\n * every flush with the latest state.\n * - `onSystemEvent('stateChanged' | 'dispose' | 'hydrationChanged', cb)` —\n * coarse lifecycle events.\n * - `this.channel.subscribe(interest, cb)` — path-scoped (new code).\n */\nexport abstract class StateContainer<\n S extends object = any,\n Args = void,\n Deps extends object = Record<string, never>,\n> extends StructuralContainer<S> {\n static __excludeFromDevTools = false;\n\n /** @internal phantom — the args type this bloc is constructed with (see init()) */\n declare readonly __args: Args;\n /** @internal phantom — the injected deps type */\n declare readonly __deps: Deps;\n\n // ---------------------------------------------------------------------------\n // Per-consumer deps slices (APPLY_DEPS / REMOVE_DEPS_OWNER)\n //\n // Kept until D0 ports `useBloc` off the adapter surface. See A2 audit:\n // `@blac/react/src/useBloc.ts` calls these via the `@blac/adapter`\n // re-export. EMIT is gone; APPLY_DEPS / REMOVE_DEPS_OWNER stay.\n // ---------------------------------------------------------------------------\n\n private _depsByOwner: Map<string, Partial<Deps>> | null = null;\n private _deps: Partial<Deps> = {};\n\n get deps(): Readonly<Deps> {\n return this._deps as Readonly<Deps>;\n }\n\n /**\n * @internal Apply one owner's (consumer's) deps slice. Shallow-merges the\n * slice, reconciles keys the owner dropped since its last apply (other\n * owners' keys untouched), dev-warns on cross-owner key collisions, then\n * recomputes the merged view and fires onDepsChanged if it changed.\n *\n * Idempotent: re-applying an identical slice for the same owner is a no-op.\n */\n [APPLY_DEPS](ownerId: string, slice: Partial<Deps>): void {\n if (this._disposed) return;\n\n const owners = (this._depsByOwner ??= new Map());\n const prevSlice = owners.get(ownerId);\n\n if (prevSlice && shallowEqualRecord(prevSlice, slice)) {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n for (const key of Object.keys(slice) as (keyof Deps)[]) {\n for (const [otherOwner, otherSlice] of owners) {\n if (otherOwner === ownerId) continue;\n if (\n key in otherSlice &&\n (otherSlice as Record<keyof Deps, unknown>)[key] !==\n (slice as Record<keyof Deps, unknown>)[key]\n ) {\n console.warn(\n `[${this.name}] multiple owners writing dep \\`${String(\n key,\n )}\\`; last write wins`,\n );\n }\n }\n }\n }\n\n owners.set(ownerId, { ...slice });\n this.reconcileDeps();\n }\n\n /**\n * @internal Withdraw an owner's entire deps slice (consumer unmounted).\n */\n [REMOVE_DEPS_OWNER](ownerId: string): void {\n if (this._disposed) return;\n if (!this._depsByOwner?.delete(ownerId)) return;\n this.reconcileDeps();\n }\n\n private reconcileDeps(): void {\n const prev = this._deps;\n const next: Partial<Deps> = {};\n if (this._depsByOwner) {\n for (const slice of this._depsByOwner.values()) {\n Object.assign(next, slice);\n }\n }\n for (const key of Object.keys(prev) as (keyof Deps)[]) {\n if (!(key in next)) {\n (next as Record<keyof Deps, unknown>)[key] = undefined;\n }\n }\n\n if (shallowEqualRecord(prev, next)) return;\n\n this._deps = next;\n this.onDepsChanged(next as Readonly<Deps>, prev as Readonly<Deps>);\n this._registry.emit(\n 'depsChanged',\n this,\n prev as Readonly<Record<string, unknown>>,\n next as Readonly<Record<string, unknown>>,\n );\n }\n\n protected onDepsChanged(_next: Readonly<Deps>, _prev: Readonly<Deps>): void {}\n\n // ---------------------------------------------------------------------------\n // Identity / lifecycle\n // ---------------------------------------------------------------------------\n\n private _disposed = false;\n private _hydrationStatus: HydrationStatus = 'idle';\n private _hydrationError?: Error;\n private _changedWhileHydrating = false;\n private _hydrationPromise: Promise<void> | null = null;\n private _resolveHydrationPromise?: () => void;\n private _rejectHydrationPromise?: (error: Error) => void;\n private _hydrationPromiseSettled = false;\n private _config: StateContainerConfig = {};\n private _initCalled = false;\n\n // Dev-only emit-rate circuit breaker state (see configureBlac.maxEmitsPerSecond).\n private _emitWindowStart = 0;\n private _emitCount = 0;\n private _emitRateWarned = false;\n\n // Legacy listener-style subscribers (subscribe(listener)). Fires on every\n // channel flush with the latest state. Kept for back-compat with code that\n // hasn't migrated to `channel.subscribe(interest, cb)`.\n private readonly _listeners = new Set<StateListener<S>>();\n\n // System-event handlers (stateChanged | dispose | hydrationChanged).\n private readonly _systemEventHandlers = new Map<\n SystemEvent,\n Set<SystemEventHandler<S, any>>\n >();\n\n // Cross-bloc dependencies recorded by depend(). Map<DepCtor, instanceKey>.\n private _dependencies: Map<StateContainerConstructor, string> | null = null;\n\n // Pending state-change capture; set by emit(), drained by the channel-bridge\n // callback on flush. Coalesced: multiple emits in one tick collapse to one\n // (prev = the first prev, next = the latest next), matching Decision 7.\n private _pendingChange: { prev: S; next: S } | null = null;\n\n // Unsubscribe from the internal bridge that turns channel flushes into\n // legacy listener calls + 'stateChanged' system events.\n private _bridgeUnsub: (() => void) | null = null;\n\n private _registry = getRegistry();\n private _equalityFn: EqualityFn = getBlacConfig().equality;\n\n name: string = this.constructor.name;\n debug: boolean = false;\n instanceId: string = generateSimpleId(this.constructor.name, 'main');\n createdAt: number = Date.now();\n\n get dependencies(): ReadonlyMap<StateContainerConstructor, string> {\n return this._dependencies ?? EMPTY_DEPS;\n }\n\n get args(): Args | undefined {\n return this._config.args as Args | undefined;\n }\n\n /**\n * Declare a cross-bloc dependency. Returns a getter so callers write\n * `this.user()` lazily — the dep is resolved against the registry on each\n * call, which keeps the surface immune to dep-instance churn.\n *\n * Note: this does NOT auto-resubscribe to the dep's channel. Consumers that\n * need reactive updates from a dep should subscribe explicitly (typically\n * via the framework adapter / `useBloc`'s tracker). A naive auto-bridge\n * here would cycle on mutual deps; the channel's same-tick coalescing\n * limits the blast radius but a true mutual cycle is still a user bug.\n */\n protected depend<T extends StateContainerConstructor>(\n Type: T,\n instanceKey?: string,\n ): () => InstanceType<T> {\n if (!this._dependencies) {\n this._dependencies = new Map();\n }\n this._dependencies.set(\n Type,\n instanceKey ?? BLAC_DEFAULTS.DEFAULT_INSTANCE_KEY,\n );\n return () => this._registry.ensure(Type, instanceKey);\n }\n\n constructor(initialState: S, options?: StructuralContainerOptions) {\n super(initialState, options);\n\n // Bridge channel flushes -> legacy listeners + 'stateChanged' system event.\n // Interest is ALL_PATHS so we wake on every flush. Coalesced via\n // `_pendingChange`: if no emit happened (e.g. a no-op patch), the bridge\n // sees null and skips.\n this._bridgeUnsub = this.channel.subscribe(\n () => ALL_PATHS,\n () => this._drainPending(),\n );\n }\n\n /**\n * Called once after construction with the args passed at acquire time, before the first\n * state snapshot is read by any consumer. Override to seed args-derived state (via\n * this.emit(...)) or kick off loads.\n */\n protected init(_args: Args): void {}\n\n initConfig(config: StateContainerConfig): void {\n this._config = { ...config };\n this.name = this._config.name || this.constructor.name;\n this.debug = this._config.debug ?? false;\n this.instanceId = generateSimpleId(\n this.constructor.name,\n this._config.instanceId,\n );\n const perClass = getClassEquality(\n this.constructor as StateContainerConstructor,\n );\n this._equalityFn = perClass ?? getBlacConfig().equality;\n this._registry.emit('created', this);\n if (!this._initCalled) {\n this._initCalled = true;\n this.init(this._config.args as Args);\n }\n }\n\n get isDisposed(): boolean {\n return this._disposed;\n }\n\n get hydrationStatus(): HydrationStatus {\n return this._hydrationStatus;\n }\n\n get hydrationError(): Error | undefined {\n return this._hydrationError;\n }\n\n get isHydrated(): boolean {\n return this._hydrationStatus === 'hydrated';\n }\n\n get changedWhileHydrating(): boolean {\n return this._changedWhileHydrating;\n }\n\n // ---------------------------------------------------------------------------\n // Subscribe (legacy listener-style) — back-compat.\n //\n // Old surface: subscribe(listener: (state) => void). New code should use\n // `this.channel.subscribe(interest, cb)` directly. This override shadows\n // `StructuralContainer.subscribe`'s richer signature on purpose — only one\n // legacy consumer pattern exists (per A2 audit: tracking/, watch/, adapter).\n // ---------------------------------------------------------------------------\n\n subscribe(listener: StateListener<S>): () => void {\n if (this._disposed) {\n throw new Error(`Cannot subscribe to disposed container ${this.name}`);\n }\n this._listeners.add(listener);\n return () => {\n this._listeners.delete(listener);\n };\n }\n\n // ---------------------------------------------------------------------------\n // Lifecycle: dispose\n // ---------------------------------------------------------------------------\n\n dispose(): void {\n if (this._disposed) return;\n\n if (this.debug) {\n console.log(`[${this.name}] Disposing...`);\n }\n\n // Reconcile to an empty deps view so a final onDepsChanged(next, prev)\n // fires with all keys absent (undefined). After this, APPLY_DEPS /\n // REMOVE_DEPS_OWNER are guarded by _disposed.\n if (this._depsByOwner) {\n this._depsByOwner.clear();\n this.reconcileDeps();\n }\n\n this._disposed = true;\n\n if (this._hydrationStatus === 'hydrating') {\n this.failHydration(\n new Error(`Hydration cancelled because ${this.name} was disposed`),\n );\n }\n\n this.emitSystemEvent('dispose', undefined as void);\n\n // Tear down the channel bridge so we don't leak a subscription.\n this._bridgeUnsub?.();\n this._bridgeUnsub = null;\n\n this._listeners.clear();\n this._systemEventHandlers.clear();\n this._pendingChange = null;\n\n this._registry.emit('disposed', this);\n\n if (this.debug) {\n console.log(`[${this.name}] Disposed successfully`);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Mutation: emit / patch / update.\n //\n // We override `emit` to layer in:\n // - disposed guard\n // - equality-fn short-circuit (consults getBlacConfig().equality or the\n // per-class override via @blac decorator)\n // - emit-rate circuit breaker (dev-only)\n // - `_changedWhileHydrating` flag tracking\n // - registry-level stateChanged notification (microtask-deferred)\n // - pending-change capture so the channel-bridge callback can fire the\n // legacy listeners + 'stateChanged' system event with prev/next.\n //\n // The actual change-detection (path diff, channel mark, single-consumer\n // skip) is delegated to `super.emit`.\n // ---------------------------------------------------------------------------\n\n override emit(next: S): void {\n this.applyState(next, 'default');\n }\n\n /**\n * Override of `StructuralContainer.patch` that routes through the\n * StateContainer concerns: disposed guard, dev-only emit-rate check,\n * `_changedWhileHydrating` flag, pending-change capture (so legacy\n * listeners and `stateChanged` system events see the merged prev/next),\n * and the registry-level `stateChanged` notification. We still call\n * `super.patch` so path-marking semantics (the whole point of patch) are\n * preserved.\n */\n override patch(partial: DeepPartial<S>): void {\n if (this._disposed) {\n throw new Error(`Cannot emit state from disposed container ${this.name}`);\n }\n const partialKeys = Object.keys(partial as object);\n if (partialKeys.length === 0) return;\n\n const prev = this.state;\n\n // Pre-spread skip: if every top-level key in `partial` is already\n // `Object.is`-equal to the current state's value at that key, the\n // merge is a structural no-op — skip entirely. Matches the pre-C0\n // `Cubit.patch` semantics (per-key Object.is short-circuit). This is\n // shallow on purpose; deep no-op detection lives in `super.patch`'s\n // path-diff path which still wakes consumers if anything truly moved.\n let allEqual = true;\n for (const key of partialKeys) {\n if (\n !Object.is(\n (prev as Record<string, unknown>)[key],\n (partial as Record<string, unknown>)[key],\n )\n ) {\n allEqual = false;\n break;\n }\n }\n if (allEqual) return;\n\n if (process.env.NODE_ENV !== 'production') {\n this._checkEmitRate();\n }\n\n super.patch(partial);\n\n const next = this.state;\n if (Object.is(prev, next)) return;\n\n if (this._hydrationStatus === 'hydrating') {\n this._changedWhileHydrating = true;\n }\n\n if (this._pendingChange) {\n this._pendingChange.next = next;\n } else {\n this._pendingChange = { prev, next };\n }\n\n if (this._registry.hasStateChangedListeners) {\n this._registry.notifyStateChanged(this, prev, next);\n }\n }\n\n /**\n * @internal @deprecated Symbol-keyed alias for `emit`. Kept only so legacy\n * in-package tests that index with `[EMIT]` typecheck/run unchanged. C5\n * removes this along with the `EMIT` symbol.\n */\n protected [EMIT](next: S): void {\n this.applyState(next, 'default');\n }\n\n private applyState(next: S, source: 'default' | 'hydration'): void {\n if (this._disposed) {\n throw new Error(`Cannot emit state from disposed container ${this.name}`);\n }\n\n const prev = this.state;\n if (prev === next) return;\n if (this._equalityFn(prev, next)) return;\n\n if (process.env.NODE_ENV !== 'production') {\n this._checkEmitRate();\n }\n\n if (this._hydrationStatus === 'hydrating' && source !== 'hydration') {\n this._changedWhileHydrating = true;\n }\n\n // Coalesce: keep the first prev seen this tick, take the latest next.\n if (this._pendingChange) {\n this._pendingChange.next = next;\n } else {\n this._pendingChange = { prev, next };\n }\n\n super.emit(next);\n\n if (this._registry.hasStateChangedListeners) {\n this._registry.notifyStateChanged(this, prev, next);\n }\n }\n\n /**\n * Called by the channel-bridge subscriber on each flush. Drains the\n * pending change (if any) into legacy listeners and the 'stateChanged'\n * system event. No pending change == flush from a no-op patch == skip.\n */\n private _drainPending(): void {\n const pending = this._pendingChange;\n if (!pending) return;\n this._pendingChange = null;\n\n // Iterate against a fixed-size snapshot so a listener that subscribes a\n // new listener mid-drain does not get the late one called in this flush.\n // (Matches the pre-C0 contract; restored by counting against the size\n // captured at drain entry.) Order matches pre-C0: 'stateChanged' system\n // event fires *before* legacy subscribe() listeners.\n const handlers = this._systemEventHandlers.get('stateChanged');\n if (handlers && handlers.size > 0) {\n const payload = { state: pending.next, previousState: pending.prev };\n let count = 0;\n const size = handlers.size;\n for (const handler of handlers) {\n if (++count > size) break;\n try {\n handler(payload);\n } catch (error) {\n console.error(`[${this.name}] Error in system event handler:`, error);\n }\n }\n }\n\n if (this._listeners.size > 0) {\n const current = this.state;\n let count = 0;\n const size = this._listeners.size;\n for (const listener of this._listeners) {\n if (++count > size) break;\n try {\n listener(current);\n } catch (error) {\n console.error(`[${this.name}] Error in listener:`, error);\n }\n }\n }\n }\n\n // ---------------------------------------------------------------------------\n // Hydration\n // ---------------------------------------------------------------------------\n\n beginHydration(): void {\n if (this._disposed) {\n throw new Error(\n `Cannot begin hydration for disposed container ${this.name}`,\n );\n }\n\n this._changedWhileHydrating = false;\n this._hydrationError = undefined;\n this._hydrationPromise = null;\n this._resolveHydrationPromise = undefined;\n this._rejectHydrationPromise = undefined;\n this._hydrationPromiseSettled = false;\n void this.ensureHydrationPromise();\n this.setHydrationStatus('hydrating');\n }\n\n applyHydratedState(next: S): boolean {\n if (this._disposed) {\n return false;\n }\n\n if (this._hydrationStatus !== 'hydrating' || this._changedWhileHydrating) {\n return false;\n }\n\n this.applyState(next, 'hydration');\n return true;\n }\n\n finishHydration(): void {\n if (this._hydrationStatus !== 'hydrating') {\n if (this._hydrationStatus === 'hydrated') {\n return;\n }\n if (this._hydrationStatus === 'error') {\n void this.ensureHydrationPromise();\n }\n }\n\n this.setHydrationStatus('hydrated');\n this.resolveHydration();\n }\n\n failHydration(error: Error): void {\n const err =\n error instanceof Error\n ? error\n : new Error(`Hydration failed: ${String(error)}`);\n\n this._hydrationError = err;\n this.setHydrationStatus('error', err);\n this.rejectHydration(err);\n }\n\n waitForHydration(): Promise<void> {\n if (\n this._hydrationStatus === 'idle' ||\n this._hydrationStatus === 'hydrated'\n ) {\n return Promise.resolve();\n }\n\n if (this._hydrationStatus === 'error') {\n return Promise.reject(\n this._hydrationError ??\n new Error(`Hydration failed for container ${this.name}`),\n );\n }\n\n return this.ensureHydrationPromise();\n }\n\n private setHydrationStatus(status: HydrationStatus, error?: Error): void {\n const previousStatus = this._hydrationStatus;\n this._hydrationStatus = status;\n this._hydrationError = error;\n\n this.emitSystemEvent('hydrationChanged', {\n status,\n previousStatus,\n error,\n changedWhileHydrating: this._changedWhileHydrating,\n });\n }\n\n private ensureHydrationPromise(): Promise<void> {\n if (!this._hydrationPromise || this._hydrationPromiseSettled) {\n this._hydrationPromiseSettled = false;\n this._hydrationPromise = new Promise<void>((resolve, reject) => {\n this._resolveHydrationPromise = () => {\n if (this._hydrationPromiseSettled) return;\n this._hydrationPromiseSettled = true;\n resolve();\n };\n this._rejectHydrationPromise = (error: Error) => {\n if (this._hydrationPromiseSettled) return;\n this._hydrationPromiseSettled = true;\n reject(error);\n };\n });\n this._hydrationPromise.catch(() => {});\n }\n\n return this._hydrationPromise;\n }\n\n private resolveHydration(): void {\n this._resolveHydrationPromise?.();\n }\n\n private rejectHydration(error: Error): void {\n void this.ensureHydrationPromise();\n this._rejectHydrationPromise?.(error);\n }\n\n // ---------------------------------------------------------------------------\n // System events\n // ---------------------------------------------------------------------------\n\n protected onSystemEvent = <E extends SystemEvent>(\n event: E,\n handler: SystemEventHandler<S, E>,\n ): (() => void) => {\n let handlers = this._systemEventHandlers.get(event);\n if (!handlers) {\n handlers = new Set();\n this._systemEventHandlers.set(event, handlers);\n }\n handlers.add(handler as SystemEventHandler<S, any>);\n\n return () => {\n handlers?.delete(handler as SystemEventHandler<S, any>);\n };\n };\n\n private emitSystemEvent<E extends SystemEvent>(\n event: E,\n payload: SystemEventPayloads<S>[E],\n ): void {\n const handlers = this._systemEventHandlers.get(event);\n if (!handlers) return;\n\n for (const handler of handlers) {\n try {\n handler(payload);\n } catch (error) {\n console.error(`[${this.name}] Error in system event handler:`, error);\n }\n }\n }\n\n // ---------------------------------------------------------------------------\n // Emit-rate circuit breaker (dev-only)\n // ---------------------------------------------------------------------------\n\n /**\n * Dev-only soft circuit breaker. Counts real state changes in a rolling 1s\n * window and warns once if the rate exceeds `maxEmitsPerSecond` — the\n * signature of a runaway loop (RAF/animation or emit-on-every-commit) pushing\n * high-frequency data through state, which freezes subscribers/plugins.\n */\n private _checkEmitRate(): void {\n const limit = getBlacConfig().maxEmitsPerSecond;\n if (!(limit > 0) || !Number.isFinite(limit) || this._emitRateWarned) return;\n\n const now = Date.now();\n if (now - this._emitWindowStart >= 1000) {\n this._emitWindowStart = now;\n this._emitCount = 1;\n return;\n }\n\n this._emitCount++;\n if (this._emitCount > limit) {\n this._emitRateWarned = true;\n console.warn(\n `[${this.name}] emitted more than ${limit} state changes in under a second. ` +\n `This is usually a runaway loop pushing high-frequency data through state ` +\n `(e.g. \\`emit\\`/\\`patch\\` inside a requestAnimationFrame loop, or an effect ` +\n `that emits on every render). It can freeze the app by saturating ` +\n `subscribers and plugins (logging/devtools). Keep high-frequency work ` +\n `imperative and emit only coarse/throttled state, or raise ` +\n `\\`configureBlac({ maxEmitsPerSecond })\\`. (This warning fires once.)`,\n );\n }\n }\n}\n","import { StateContainer } from './StateContainer';\n\n/**\n * `Cubit<S>` is a `StateContainer<S>` with `emit` / `patch` exposed as\n * public mutation surface. Today it adds nothing structurally beyond\n * `StateContainer` — both are inherited from the underlying\n * `StructuralContainer<S>`. Kept as a real class (not a type alias) because\n * downstream code does `instance instanceof Cubit` checks (see A2 audit).\n *\n * The class body is intentionally empty: a no-op `emit` override would\n * still go through `applyState`, and `patch` is inherited from\n * `StructuralContainer` (path-diffed, microtask-flushed). If a caller\n * needs the old \"skip if no real change\" patch semantics, they can wrap\n * `patch` themselves or call `emit` after a manual equality check.\n */\nexport abstract class Cubit<\n S extends object = any,\n Args = void,\n Deps extends object = Record<string, never>,\n> extends StateContainer<S, Args, Deps> {}\n"],"mappings":"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"}