@blac/core 2.0.14 → 2.0.16

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 (570) hide show
  1. package/dist/{StateContainerRegistry-DmmzYa7S.js → StateContainerRegistry-B_ViBLvJ.js} +78 -77
  2. package/dist/StateContainerRegistry-B_ViBLvJ.js.map +1 -0
  3. package/dist/{StateContainerRegistry-B4yVMYbx.cjs → StateContainerRegistry-FWKzPfS-.cjs} +77 -88
  4. package/dist/StateContainerRegistry-FWKzPfS-.cjs.map +1 -0
  5. package/dist/acquire-DHEOEVcj.cjs +46 -0
  6. package/dist/acquire-DHEOEVcj.cjs.map +1 -0
  7. package/dist/acquire-Don7499S.js +35 -0
  8. package/dist/acquire-Don7499S.js.map +1 -0
  9. package/dist/{branded-BSeA_mZO.cjs → branded-BybA0_xw.cjs} +1 -1
  10. package/dist/{branded-BSeA_mZO.cjs.map → branded-BybA0_xw.cjs.map} +1 -1
  11. package/dist/{branded-DwtzSsg0.js → branded-DkbUzncc.js} +1 -1
  12. package/dist/{branded-DwtzSsg0.js.map → branded-DkbUzncc.js.map} +1 -1
  13. package/dist/{config-DoHx0Xsl.js → config-8pyOC5gv.js} +2 -2
  14. package/dist/{config-0ZD9i3wy.js.map → config-8pyOC5gv.js.map} +1 -1
  15. package/dist/{config-B_4xXpvK.cjs → config-DVMnlHLv.cjs} +2 -2
  16. package/dist/{config-B3NIwDQv.cjs.map → config-DVMnlHLv.cjs.map} +1 -1
  17. package/dist/constants.d.cts +0 -5
  18. package/dist/constants.d.ts +0 -5
  19. package/dist/core/StateContainer.d.ts +2 -2
  20. package/dist/core/StateContainerRegistry.d.ts +25 -8
  21. package/dist/debug.cjs +3 -3
  22. package/dist/debug.js +3 -3
  23. package/dist/{Cubit-CWP8Ddzx.cjs → ensure-CLQEx0Nn.cjs} +24 -6
  24. package/dist/ensure-CLQEx0Nn.cjs.map +1 -0
  25. package/dist/{Cubit-VJuu2tt9.js → ensure-CPMiGvov.js} +19 -7
  26. package/dist/ensure-CPMiGvov.js.map +1 -0
  27. package/dist/index.cjs +33 -40
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +2 -1
  30. package/dist/index.d.ts +2 -1
  31. package/dist/index.js +27 -33
  32. package/dist/index.js.map +1 -1
  33. package/dist/management-7jLjVHJd.js +38 -0
  34. package/dist/management-7jLjVHJd.js.map +1 -0
  35. package/dist/{management-DTzcC6aD.cjs → management-GcnNJjnm.cjs} +14 -8
  36. package/dist/management-GcnNJjnm.cjs.map +1 -0
  37. package/dist/plugins.cjs +1 -1
  38. package/dist/plugins.js +1 -1
  39. package/dist/registry/acquire.d.ts +19 -6
  40. package/dist/registry/borrow.d.ts +14 -3
  41. package/dist/registry/ensure.d.ts +7 -1
  42. package/dist/registry/index.d.ts +1 -0
  43. package/dist/registry/queries.d.ts +10 -4
  44. package/dist/registry/release.d.ts +14 -2
  45. package/dist/testing.cjs +17 -17
  46. package/dist/testing.cjs.map +1 -1
  47. package/dist/testing.d.cts +4 -4
  48. package/dist/testing.d.ts +4 -4
  49. package/dist/testing.js +14 -14
  50. package/dist/testing.js.map +1 -1
  51. package/dist/types/utilities.d.ts +1 -12
  52. package/dist/types.cjs +1 -1
  53. package/dist/types.js +1 -1
  54. package/dist/utils/static-props.d.ts +0 -9
  55. package/dist/watch/watch.d.ts +8 -5
  56. package/dist/{watch-DWCqXllW.js → watch-BmC-Tyqg.js} +11 -9
  57. package/dist/watch-BmC-Tyqg.js.map +1 -0
  58. package/dist/{watch-BpwaUL8r.cjs → watch-CKWt788i.cjs} +11 -9
  59. package/dist/watch-CKWt788i.cjs.map +1 -0
  60. package/dist/watch-entry.cjs +1 -1
  61. package/dist/watch-entry.js +1 -1
  62. package/package.json +22 -11
  63. package/dist/Cubit-9jal5zdZ.cjs +0 -390
  64. package/dist/Cubit-9jal5zdZ.cjs.map +0 -1
  65. package/dist/Cubit-BAUPiUF7.cjs +0 -380
  66. package/dist/Cubit-BAUPiUF7.cjs.map +0 -1
  67. package/dist/Cubit-BBKF3PIg.js +0 -287
  68. package/dist/Cubit-BBKF3PIg.js.map +0 -1
  69. package/dist/Cubit-BC70gaiA.js +0 -453
  70. package/dist/Cubit-BC70gaiA.js.map +0 -1
  71. package/dist/Cubit-BOgUZva7.js +0 -360
  72. package/dist/Cubit-BOgUZva7.js.map +0 -1
  73. package/dist/Cubit-BOxMvpfc.js +0 -291
  74. package/dist/Cubit-BOxMvpfc.js.map +0 -1
  75. package/dist/Cubit-BTznt8zg.js +0 -370
  76. package/dist/Cubit-BTznt8zg.js.map +0 -1
  77. package/dist/Cubit-BogJXkLm.js +0 -278
  78. package/dist/Cubit-BogJXkLm.js.map +0 -1
  79. package/dist/Cubit-C-8R_8db.cjs +0 -475
  80. package/dist/Cubit-C-8R_8db.cjs.map +0 -1
  81. package/dist/Cubit-C3Mw3EoO.cjs +0 -401
  82. package/dist/Cubit-C3Mw3EoO.cjs.map +0 -1
  83. package/dist/Cubit-CO8Fr72L.cjs +0 -447
  84. package/dist/Cubit-CO8Fr72L.cjs.map +0 -1
  85. package/dist/Cubit-COfHT1Bm.cjs +0 -321
  86. package/dist/Cubit-COfHT1Bm.cjs.map +0 -1
  87. package/dist/Cubit-CROWjjs9.js +0 -481
  88. package/dist/Cubit-CROWjjs9.js.map +0 -1
  89. package/dist/Cubit-CWP8Ddzx.cjs.map +0 -1
  90. package/dist/Cubit-CXxh9iol.js +0 -302
  91. package/dist/Cubit-CXxh9iol.js.map +0 -1
  92. package/dist/Cubit-CYOWfzQt.cjs +0 -317
  93. package/dist/Cubit-CYOWfzQt.cjs.map +0 -1
  94. package/dist/Cubit-CZaf_fp4.cjs +0 -388
  95. package/dist/Cubit-CZaf_fp4.cjs.map +0 -1
  96. package/dist/Cubit-C_dUEUdd.cjs +0 -380
  97. package/dist/Cubit-C_dUEUdd.cjs.map +0 -1
  98. package/dist/Cubit-C_rxRCTN.cjs +0 -523
  99. package/dist/Cubit-C_rxRCTN.cjs.map +0 -1
  100. package/dist/Cubit-CcKgMEBO.js +0 -299
  101. package/dist/Cubit-CcKgMEBO.js.map +0 -1
  102. package/dist/Cubit-CfT6Y1jl.js +0 -346
  103. package/dist/Cubit-CfT6Y1jl.js.map +0 -1
  104. package/dist/Cubit-CynJruuO.js +0 -369
  105. package/dist/Cubit-CynJruuO.js.map +0 -1
  106. package/dist/Cubit-D2vQ6nMb.js +0 -360
  107. package/dist/Cubit-D2vQ6nMb.js.map +0 -1
  108. package/dist/Cubit-D7jOZCoZ.js +0 -360
  109. package/dist/Cubit-D7jOZCoZ.js.map +0 -1
  110. package/dist/Cubit-D9j3IGPc.cjs +0 -523
  111. package/dist/Cubit-D9j3IGPc.cjs.map +0 -1
  112. package/dist/Cubit-DKEY9WYq.cjs +0 -296
  113. package/dist/Cubit-DKEY9WYq.cjs.map +0 -1
  114. package/dist/Cubit-DMV_0TCp.js +0 -481
  115. package/dist/Cubit-DMV_0TCp.js.map +0 -1
  116. package/dist/Cubit-DP5DXPUK.js +0 -360
  117. package/dist/Cubit-DP5DXPUK.js.map +0 -1
  118. package/dist/Cubit-DRFkzD2h.js +0 -426
  119. package/dist/Cubit-DRFkzD2h.js.map +0 -1
  120. package/dist/Cubit-DbnhTUaZ.cjs +0 -380
  121. package/dist/Cubit-DbnhTUaZ.cjs.map +0 -1
  122. package/dist/Cubit-DrqG3SP3.cjs +0 -370
  123. package/dist/Cubit-DrqG3SP3.cjs.map +0 -1
  124. package/dist/Cubit-DsDkCo42.cjs +0 -313
  125. package/dist/Cubit-DsDkCo42.cjs.map +0 -1
  126. package/dist/Cubit-DwRw1E9D.cjs +0 -309
  127. package/dist/Cubit-DwRw1E9D.cjs.map +0 -1
  128. package/dist/Cubit-Dw_kFBgc.js +0 -372
  129. package/dist/Cubit-Dw_kFBgc.js.map +0 -1
  130. package/dist/Cubit-KiXZCubP.cjs +0 -392
  131. package/dist/Cubit-KiXZCubP.cjs.map +0 -1
  132. package/dist/Cubit-Ksj7G4uR.js +0 -360
  133. package/dist/Cubit-Ksj7G4uR.js.map +0 -1
  134. package/dist/Cubit-MkjbpcPf.cjs +0 -380
  135. package/dist/Cubit-MkjbpcPf.cjs.map +0 -1
  136. package/dist/Cubit-NRhvdDQ6.js +0 -297
  137. package/dist/Cubit-NRhvdDQ6.js.map +0 -1
  138. package/dist/Cubit-PMTXxI_u.js +0 -368
  139. package/dist/Cubit-PMTXxI_u.js.map +0 -1
  140. package/dist/Cubit-VJuu2tt9.js.map +0 -1
  141. package/dist/Cubit-jz922NKf.cjs +0 -320
  142. package/dist/Cubit-jz922NKf.cjs.map +0 -1
  143. package/dist/Cubit-kU5_4jgC.cjs +0 -380
  144. package/dist/Cubit-kU5_4jgC.cjs.map +0 -1
  145. package/dist/StateContainerRegistry-B4yVMYbx.cjs.map +0 -1
  146. package/dist/StateContainerRegistry-BAcxouCu.js +0 -723
  147. package/dist/StateContainerRegistry-BAcxouCu.js.map +0 -1
  148. package/dist/StateContainerRegistry-BK57H92E.js +0 -747
  149. package/dist/StateContainerRegistry-BK57H92E.js.map +0 -1
  150. package/dist/StateContainerRegistry-BRBATSrx.cjs +0 -1030
  151. package/dist/StateContainerRegistry-BRBATSrx.cjs.map +0 -1
  152. package/dist/StateContainerRegistry-BgBIKcQF.js +0 -956
  153. package/dist/StateContainerRegistry-BgBIKcQF.js.map +0 -1
  154. package/dist/StateContainerRegistry-BglEhqdA.js +0 -709
  155. package/dist/StateContainerRegistry-BglEhqdA.js.map +0 -1
  156. package/dist/StateContainerRegistry-BhcnG0DF.js +0 -665
  157. package/dist/StateContainerRegistry-BhcnG0DF.js.map +0 -1
  158. package/dist/StateContainerRegistry-BpO5t-0i.js +0 -682
  159. package/dist/StateContainerRegistry-BpO5t-0i.js.map +0 -1
  160. package/dist/StateContainerRegistry-BqS-wpb_.js +0 -957
  161. package/dist/StateContainerRegistry-BqS-wpb_.js.map +0 -1
  162. package/dist/StateContainerRegistry-BrEGYPZT.cjs +0 -1029
  163. package/dist/StateContainerRegistry-BrEGYPZT.cjs.map +0 -1
  164. package/dist/StateContainerRegistry-BsMIpllP.cjs +0 -659
  165. package/dist/StateContainerRegistry-BsMIpllP.cjs.map +0 -1
  166. package/dist/StateContainerRegistry-Bxfne4A7.cjs +0 -908
  167. package/dist/StateContainerRegistry-Bxfne4A7.cjs.map +0 -1
  168. package/dist/StateContainerRegistry-C0E7vsgy.js +0 -758
  169. package/dist/StateContainerRegistry-C0E7vsgy.js.map +0 -1
  170. package/dist/StateContainerRegistry-C0I77Ndz.cjs +0 -920
  171. package/dist/StateContainerRegistry-C0I77Ndz.cjs.map +0 -1
  172. package/dist/StateContainerRegistry-CDH9mnQS.cjs +0 -715
  173. package/dist/StateContainerRegistry-CDH9mnQS.cjs.map +0 -1
  174. package/dist/StateContainerRegistry-CTOXUf75.cjs +0 -742
  175. package/dist/StateContainerRegistry-CTOXUf75.cjs.map +0 -1
  176. package/dist/StateContainerRegistry-CX2CBOmv.cjs +0 -795
  177. package/dist/StateContainerRegistry-CX2CBOmv.cjs.map +0 -1
  178. package/dist/StateContainerRegistry-CXnnf2-l.js +0 -867
  179. package/dist/StateContainerRegistry-CXnnf2-l.js.map +0 -1
  180. package/dist/StateContainerRegistry-CehuIpK_.cjs +0 -811
  181. package/dist/StateContainerRegistry-CehuIpK_.cjs.map +0 -1
  182. package/dist/StateContainerRegistry-Ci0ajc5g.js +0 -720
  183. package/dist/StateContainerRegistry-Ci0ajc5g.js.map +0 -1
  184. package/dist/StateContainerRegistry-Ck2-XmT_.js +0 -627
  185. package/dist/StateContainerRegistry-Ck2-XmT_.js.map +0 -1
  186. package/dist/StateContainerRegistry-D1lVJFGL.cjs +0 -753
  187. package/dist/StateContainerRegistry-D1lVJFGL.cjs.map +0 -1
  188. package/dist/StateContainerRegistry-DC4N73O6.js +0 -672
  189. package/dist/StateContainerRegistry-DC4N73O6.js.map +0 -1
  190. package/dist/StateContainerRegistry-DOkDGng-.js +0 -626
  191. package/dist/StateContainerRegistry-DOkDGng-.js.map +0 -1
  192. package/dist/StateContainerRegistry-DOuGI-l5.js +0 -685
  193. package/dist/StateContainerRegistry-DOuGI-l5.js.map +0 -1
  194. package/dist/StateContainerRegistry-DT66lr3I.cjs +0 -698
  195. package/dist/StateContainerRegistry-DT66lr3I.cjs.map +0 -1
  196. package/dist/StateContainerRegistry-DmmzYa7S.js.map +0 -1
  197. package/dist/StateContainerRegistry-Upsrlg9G.cjs +0 -756
  198. package/dist/StateContainerRegistry-Upsrlg9G.cjs.map +0 -1
  199. package/dist/StateContainerRegistry-WznfcA-Q.js +0 -855
  200. package/dist/StateContainerRegistry-WznfcA-Q.js.map +0 -1
  201. package/dist/StateContainerRegistry-Yph6UCA_.js +0 -678
  202. package/dist/StateContainerRegistry-Yph6UCA_.js.map +0 -1
  203. package/dist/StateContainerRegistry-mseeTqSA.cjs +0 -718
  204. package/dist/StateContainerRegistry-mseeTqSA.cjs.map +0 -1
  205. package/dist/StateContainerRegistry-pRNxHNFD.cjs +0 -705
  206. package/dist/StateContainerRegistry-pRNxHNFD.cjs.map +0 -1
  207. package/dist/StateContainerRegistry-vXMWtG7J.cjs +0 -660
  208. package/dist/StateContainerRegistry-vXMWtG7J.cjs.map +0 -1
  209. package/dist/StateContainerRegistry-v_prqMcI.cjs +0 -711
  210. package/dist/StateContainerRegistry-v_prqMcI.cjs.map +0 -1
  211. package/dist/branded-DCqi3De1.cjs +0 -18
  212. package/dist/branded-DCqi3De1.cjs.map +0 -1
  213. package/dist/branded-Max3xOTA.js +0 -13
  214. package/dist/branded-Max3xOTA.js.map +0 -1
  215. package/dist/config-0ZD9i3wy.js +0 -16
  216. package/dist/config-B3NIwDQv.cjs +0 -32
  217. package/dist/config-BKGHop0V.js +0 -16
  218. package/dist/config-BKGHop0V.js.map +0 -1
  219. package/dist/config-BKoaAlmb.js +0 -16
  220. package/dist/config-BKoaAlmb.js.map +0 -1
  221. package/dist/config-BPj08-8h.cjs +0 -32
  222. package/dist/config-BPj08-8h.cjs.map +0 -1
  223. package/dist/config-BR0Xy-Tn.cjs +0 -32
  224. package/dist/config-BR0Xy-Tn.cjs.map +0 -1
  225. package/dist/config-B_4xXpvK.cjs.map +0 -1
  226. package/dist/config-BflrQM4_.cjs +0 -32
  227. package/dist/config-BflrQM4_.cjs.map +0 -1
  228. package/dist/config-BzObBsk2.cjs +0 -32
  229. package/dist/config-BzObBsk2.cjs.map +0 -1
  230. package/dist/config-C0yumL1H.cjs +0 -32
  231. package/dist/config-C0yumL1H.cjs.map +0 -1
  232. package/dist/config-C8xqVHTf.js +0 -16
  233. package/dist/config-C8xqVHTf.js.map +0 -1
  234. package/dist/config-CCUhIYIF.js +0 -16
  235. package/dist/config-CCUhIYIF.js.map +0 -1
  236. package/dist/config-CGo__MAt.js +0 -16
  237. package/dist/config-CGo__MAt.js.map +0 -1
  238. package/dist/config-CQH9fTY-.cjs +0 -32
  239. package/dist/config-CQH9fTY-.cjs.map +0 -1
  240. package/dist/config-CR_Bz7RD.js +0 -16
  241. package/dist/config-CR_Bz7RD.js.map +0 -1
  242. package/dist/config-CTOa-yPN.cjs +0 -32
  243. package/dist/config-CTOa-yPN.cjs.map +0 -1
  244. package/dist/config-Cd7Q-B4g.js +0 -16
  245. package/dist/config-Cd7Q-B4g.js.map +0 -1
  246. package/dist/config-CmDEX-1o.js +0 -16
  247. package/dist/config-CmDEX-1o.js.map +0 -1
  248. package/dist/config-CoNMTnMA.cjs +0 -32
  249. package/dist/config-CoNMTnMA.cjs.map +0 -1
  250. package/dist/config-Cwj8-C1J.js +0 -16
  251. package/dist/config-Cwj8-C1J.js.map +0 -1
  252. package/dist/config-D3jisfdj.cjs +0 -32
  253. package/dist/config-D3jisfdj.cjs.map +0 -1
  254. package/dist/config-D4GifZQ4.js +0 -16
  255. package/dist/config-D4GifZQ4.js.map +0 -1
  256. package/dist/config-DDrSQGpQ.cjs +0 -32
  257. package/dist/config-DDrSQGpQ.cjs.map +0 -1
  258. package/dist/config-DEcslxan.cjs +0 -32
  259. package/dist/config-DEcslxan.cjs.map +0 -1
  260. package/dist/config-DLzmy2rZ.cjs +0 -32
  261. package/dist/config-DLzmy2rZ.cjs.map +0 -1
  262. package/dist/config-DMNZ2YLV.cjs +0 -32
  263. package/dist/config-DMNZ2YLV.cjs.map +0 -1
  264. package/dist/config-De9oQ6Ki.js +0 -16
  265. package/dist/config-De9oQ6Ki.js.map +0 -1
  266. package/dist/config-DoHx0Xsl.js.map +0 -1
  267. package/dist/config-DokTzpr8.cjs +0 -32
  268. package/dist/config-DokTzpr8.cjs.map +0 -1
  269. package/dist/config-DslYBm4Z.js +0 -16
  270. package/dist/config-DslYBm4Z.js.map +0 -1
  271. package/dist/config-H6FAqbW4.cjs +0 -32
  272. package/dist/config-H6FAqbW4.cjs.map +0 -1
  273. package/dist/config-XQua95Xz.js +0 -16
  274. package/dist/config-XQua95Xz.js.map +0 -1
  275. package/dist/config-Yp645dGK.js +0 -16
  276. package/dist/config-Yp645dGK.js.map +0 -1
  277. package/dist/config-ispAzOZV.js +0 -16
  278. package/dist/config-ispAzOZV.js.map +0 -1
  279. package/dist/ensure-9VEq5H0L.js +0 -9
  280. package/dist/ensure-9VEq5H0L.js.map +0 -1
  281. package/dist/ensure-BB6xHQAF.cjs +0 -14
  282. package/dist/ensure-BB6xHQAF.cjs.map +0 -1
  283. package/dist/ensure-BNDfTzqg.cjs +0 -14
  284. package/dist/ensure-BNDfTzqg.cjs.map +0 -1
  285. package/dist/ensure-BVCnjU7r.js +0 -365
  286. package/dist/ensure-BVCnjU7r.js.map +0 -1
  287. package/dist/ensure-BbzGXjep.cjs +0 -14
  288. package/dist/ensure-BbzGXjep.cjs.map +0 -1
  289. package/dist/ensure-BlIaQai6.js +0 -9
  290. package/dist/ensure-BlIaQai6.js.map +0 -1
  291. package/dist/ensure-Bm3oHxga.js +0 -9
  292. package/dist/ensure-Bm3oHxga.js.map +0 -1
  293. package/dist/ensure-C3eIRs6e.cjs +0 -14
  294. package/dist/ensure-C3eIRs6e.cjs.map +0 -1
  295. package/dist/ensure-C5I1xp2C.js +0 -9
  296. package/dist/ensure-C5I1xp2C.js.map +0 -1
  297. package/dist/ensure-CJZL7bcA.cjs +0 -391
  298. package/dist/ensure-CJZL7bcA.cjs.map +0 -1
  299. package/dist/ensure-CN6unBOe.cjs +0 -14
  300. package/dist/ensure-CN6unBOe.cjs.map +0 -1
  301. package/dist/ensure-CSHYjIeH.cjs +0 -14
  302. package/dist/ensure-CSHYjIeH.cjs.map +0 -1
  303. package/dist/ensure-CU-B1ywv.js +0 -9
  304. package/dist/ensure-CU-B1ywv.js.map +0 -1
  305. package/dist/ensure-CWKzeno7.js +0 -9
  306. package/dist/ensure-CWKzeno7.js.map +0 -1
  307. package/dist/ensure-CkENsuQ9.js +0 -9
  308. package/dist/ensure-CkENsuQ9.js.map +0 -1
  309. package/dist/ensure-Cm-4_LSh.cjs +0 -14
  310. package/dist/ensure-Cm-4_LSh.cjs.map +0 -1
  311. package/dist/ensure-Cqex5r1P.cjs +0 -14
  312. package/dist/ensure-Cqex5r1P.cjs.map +0 -1
  313. package/dist/ensure-Cv5AbNGZ.js +0 -9
  314. package/dist/ensure-Cv5AbNGZ.js.map +0 -1
  315. package/dist/ensure-D63lEMUK.cjs +0 -14
  316. package/dist/ensure-D63lEMUK.cjs.map +0 -1
  317. package/dist/ensure-DGEtPU9A.cjs +0 -14
  318. package/dist/ensure-DGEtPU9A.cjs.map +0 -1
  319. package/dist/ensure-DM3qb336.cjs +0 -14
  320. package/dist/ensure-DM3qb336.cjs.map +0 -1
  321. package/dist/ensure-DME-_T0j.cjs +0 -14
  322. package/dist/ensure-DME-_T0j.cjs.map +0 -1
  323. package/dist/ensure-DWd0GCYB.js +0 -9
  324. package/dist/ensure-DWd0GCYB.js.map +0 -1
  325. package/dist/ensure-DamKOP6q.cjs +0 -14
  326. package/dist/ensure-DamKOP6q.cjs.map +0 -1
  327. package/dist/ensure-Dcfptl-A.js +0 -9
  328. package/dist/ensure-Dcfptl-A.js.map +0 -1
  329. package/dist/ensure-Def-EBWG.js +0 -9
  330. package/dist/ensure-Def-EBWG.js.map +0 -1
  331. package/dist/ensure-DnHL5QiQ.cjs +0 -14
  332. package/dist/ensure-DnHL5QiQ.cjs.map +0 -1
  333. package/dist/ensure-Dr7I78Ku.cjs +0 -14
  334. package/dist/ensure-Dr7I78Ku.cjs.map +0 -1
  335. package/dist/ensure-SLVdGd5b.js +0 -9
  336. package/dist/ensure-SLVdGd5b.js.map +0 -1
  337. package/dist/ensure-Sb92MCXu.js +0 -9
  338. package/dist/ensure-Sb92MCXu.js.map +0 -1
  339. package/dist/ensure-gFlvevGm.cjs +0 -14
  340. package/dist/ensure-gFlvevGm.cjs.map +0 -1
  341. package/dist/ensure-l2-H7S5W.js +0 -9
  342. package/dist/ensure-l2-H7S5W.js.map +0 -1
  343. package/dist/ensure-mkL-3qh8.js +0 -9
  344. package/dist/ensure-mkL-3qh8.js.map +0 -1
  345. package/dist/ensure-n80crSlX.js +0 -9
  346. package/dist/ensure-n80crSlX.js.map +0 -1
  347. package/dist/ensure-nCxg7MCN.js +0 -9
  348. package/dist/ensure-nCxg7MCN.js.map +0 -1
  349. package/dist/ensure-vS71MV4q.cjs +0 -14
  350. package/dist/ensure-vS71MV4q.cjs.map +0 -1
  351. package/dist/management-6oQbmf0z.js +0 -41
  352. package/dist/management-6oQbmf0z.js.map +0 -1
  353. package/dist/management-B46QwA9Y.js +0 -41
  354. package/dist/management-B46QwA9Y.js.map +0 -1
  355. package/dist/management-B9yrRpeg.js +0 -41
  356. package/dist/management-B9yrRpeg.js.map +0 -1
  357. package/dist/management-BCKTEZ8Q.js +0 -41
  358. package/dist/management-BCKTEZ8Q.js.map +0 -1
  359. package/dist/management-BbMzdXbT.js +0 -41
  360. package/dist/management-BbMzdXbT.js.map +0 -1
  361. package/dist/management-Bg652agq.js +0 -41
  362. package/dist/management-Bg652agq.js.map +0 -1
  363. package/dist/management-BnedF5ZD.cjs +0 -79
  364. package/dist/management-BnedF5ZD.cjs.map +0 -1
  365. package/dist/management-BoUa99eB.cjs +0 -79
  366. package/dist/management-BoUa99eB.cjs.map +0 -1
  367. package/dist/management-C-wBdpho.js +0 -37
  368. package/dist/management-C-wBdpho.js.map +0 -1
  369. package/dist/management-C4SHcrJm.cjs +0 -79
  370. package/dist/management-C4SHcrJm.cjs.map +0 -1
  371. package/dist/management-CK-GL3wY.js +0 -41
  372. package/dist/management-CK-GL3wY.js.map +0 -1
  373. package/dist/management-CPhgY8OE.js +0 -41
  374. package/dist/management-CPhgY8OE.js.map +0 -1
  375. package/dist/management-CU_V3LIP.js +0 -41
  376. package/dist/management-CU_V3LIP.js.map +0 -1
  377. package/dist/management-CUwXDSi9.cjs +0 -79
  378. package/dist/management-CUwXDSi9.cjs.map +0 -1
  379. package/dist/management-CaqiyNzB.js +0 -41
  380. package/dist/management-CaqiyNzB.js.map +0 -1
  381. package/dist/management-Cin-JvYe.js +0 -41
  382. package/dist/management-Cin-JvYe.js.map +0 -1
  383. package/dist/management-ClaXym0F.cjs +0 -79
  384. package/dist/management-ClaXym0F.cjs.map +0 -1
  385. package/dist/management-DL0Uzsoz.js +0 -41
  386. package/dist/management-DL0Uzsoz.js.map +0 -1
  387. package/dist/management-DLdAQfqk.cjs +0 -79
  388. package/dist/management-DLdAQfqk.cjs.map +0 -1
  389. package/dist/management-DMZ8qpwr.cjs +0 -79
  390. package/dist/management-DMZ8qpwr.cjs.map +0 -1
  391. package/dist/management-DTzcC6aD.cjs.map +0 -1
  392. package/dist/management-DYLNyj9p.cjs +0 -79
  393. package/dist/management-DYLNyj9p.cjs.map +0 -1
  394. package/dist/management-Dag9u4t6.cjs +0 -79
  395. package/dist/management-Dag9u4t6.cjs.map +0 -1
  396. package/dist/management-DbMRdDBo.cjs +0 -79
  397. package/dist/management-DbMRdDBo.cjs.map +0 -1
  398. package/dist/management-DfnDAKmP.js +0 -41
  399. package/dist/management-DfnDAKmP.js.map +0 -1
  400. package/dist/management-DjBU1gtb.cjs +0 -79
  401. package/dist/management-DjBU1gtb.cjs.map +0 -1
  402. package/dist/management-DwCozsY8.js +0 -41
  403. package/dist/management-DwCozsY8.js.map +0 -1
  404. package/dist/management-H4m3ciJO.js +0 -32
  405. package/dist/management-H4m3ciJO.js.map +0 -1
  406. package/dist/management-Xo3A6Za3.cjs +0 -79
  407. package/dist/management-Xo3A6Za3.cjs.map +0 -1
  408. package/dist/management-ZU2YzOkr.js +0 -37
  409. package/dist/management-ZU2YzOkr.js.map +0 -1
  410. package/dist/management-baPDwA9n.cjs +0 -79
  411. package/dist/management-baPDwA9n.cjs.map +0 -1
  412. package/dist/management-jQGCvZNN.cjs +0 -70
  413. package/dist/management-jQGCvZNN.cjs.map +0 -1
  414. package/dist/management-ry_KteFK.cjs +0 -79
  415. package/dist/management-ry_KteFK.cjs.map +0 -1
  416. package/dist/management-xoZ7w3bI.cjs +0 -70
  417. package/dist/management-xoZ7w3bI.cjs.map +0 -1
  418. package/dist/resolve-dependencies-B2QggQAi.js +0 -729
  419. package/dist/resolve-dependencies-B2QggQAi.js.map +0 -1
  420. package/dist/resolve-dependencies-B6JDXvpr.js +0 -739
  421. package/dist/resolve-dependencies-B6JDXvpr.js.map +0 -1
  422. package/dist/resolve-dependencies-BA3u06uC.js +0 -731
  423. package/dist/resolve-dependencies-BA3u06uC.js.map +0 -1
  424. package/dist/resolve-dependencies-BAKAoD0U.js +0 -878
  425. package/dist/resolve-dependencies-BAKAoD0U.js.map +0 -1
  426. package/dist/resolve-dependencies-BFZQq60Y.cjs +0 -832
  427. package/dist/resolve-dependencies-BFZQq60Y.cjs.map +0 -1
  428. package/dist/resolve-dependencies-BGafS3Ww.js +0 -731
  429. package/dist/resolve-dependencies-BGafS3Ww.js.map +0 -1
  430. package/dist/resolve-dependencies-BHd34gS3.cjs +0 -832
  431. package/dist/resolve-dependencies-BHd34gS3.cjs.map +0 -1
  432. package/dist/resolve-dependencies-BNeayhbQ.cjs +0 -840
  433. package/dist/resolve-dependencies-BNeayhbQ.cjs.map +0 -1
  434. package/dist/resolve-dependencies-BT6TU2HF.cjs +0 -832
  435. package/dist/resolve-dependencies-BT6TU2HF.cjs.map +0 -1
  436. package/dist/resolve-dependencies-BWEMpuDy.js +0 -729
  437. package/dist/resolve-dependencies-BWEMpuDy.js.map +0 -1
  438. package/dist/resolve-dependencies-BiWkW2eS.js +0 -731
  439. package/dist/resolve-dependencies-BiWkW2eS.js.map +0 -1
  440. package/dist/resolve-dependencies-BjxCztYD.js +0 -739
  441. package/dist/resolve-dependencies-BjxCztYD.js.map +0 -1
  442. package/dist/resolve-dependencies-BlyBV0hB.cjs +0 -969
  443. package/dist/resolve-dependencies-BlyBV0hB.cjs.map +0 -1
  444. package/dist/resolve-dependencies-By26rT_i.js +0 -739
  445. package/dist/resolve-dependencies-By26rT_i.js.map +0 -1
  446. package/dist/resolve-dependencies-C9Kf7AzY.cjs +0 -832
  447. package/dist/resolve-dependencies-C9Kf7AzY.cjs.map +0 -1
  448. package/dist/resolve-dependencies-CTzV1txG.js +0 -731
  449. package/dist/resolve-dependencies-CTzV1txG.js.map +0 -1
  450. package/dist/resolve-dependencies-CWjuGHiF.cjs +0 -969
  451. package/dist/resolve-dependencies-CWjuGHiF.cjs.map +0 -1
  452. package/dist/resolve-dependencies-ClSsP0DJ.cjs +0 -830
  453. package/dist/resolve-dependencies-ClSsP0DJ.cjs.map +0 -1
  454. package/dist/resolve-dependencies-D0vTzZgs.js +0 -731
  455. package/dist/resolve-dependencies-D0vTzZgs.js.map +0 -1
  456. package/dist/resolve-dependencies-D2WnZMF-.cjs +0 -832
  457. package/dist/resolve-dependencies-D2WnZMF-.cjs.map +0 -1
  458. package/dist/resolve-dependencies-DCBLTeza.cjs +0 -969
  459. package/dist/resolve-dependencies-DCBLTeza.cjs.map +0 -1
  460. package/dist/resolve-dependencies-DMlqYJR2.js +0 -731
  461. package/dist/resolve-dependencies-DMlqYJR2.js.map +0 -1
  462. package/dist/resolve-dependencies-DP6U1EYB.cjs +0 -840
  463. package/dist/resolve-dependencies-DP6U1EYB.cjs.map +0 -1
  464. package/dist/resolve-dependencies-DSQNXvnV.cjs +0 -832
  465. package/dist/resolve-dependencies-DSQNXvnV.cjs.map +0 -1
  466. package/dist/resolve-dependencies-DV3HO_uH.js +0 -878
  467. package/dist/resolve-dependencies-DV3HO_uH.js.map +0 -1
  468. package/dist/resolve-dependencies-DXwMhP0Y.js +0 -878
  469. package/dist/resolve-dependencies-DXwMhP0Y.js.map +0 -1
  470. package/dist/resolve-dependencies-DbRWlt9u.js +0 -878
  471. package/dist/resolve-dependencies-DbRWlt9u.js.map +0 -1
  472. package/dist/resolve-dependencies-DcUUva2P.cjs +0 -832
  473. package/dist/resolve-dependencies-DcUUva2P.cjs.map +0 -1
  474. package/dist/resolve-dependencies-Dd8T6TLt.cjs +0 -832
  475. package/dist/resolve-dependencies-Dd8T6TLt.cjs.map +0 -1
  476. package/dist/resolve-dependencies-Dfdp_DZd.cjs +0 -840
  477. package/dist/resolve-dependencies-Dfdp_DZd.cjs.map +0 -1
  478. package/dist/resolve-dependencies-GJ8PNyNB.cjs +0 -969
  479. package/dist/resolve-dependencies-GJ8PNyNB.cjs.map +0 -1
  480. package/dist/resolve-dependencies-KSpTt4jy.cjs +0 -830
  481. package/dist/resolve-dependencies-KSpTt4jy.cjs.map +0 -1
  482. package/dist/resolve-dependencies-Nvjp4CwS.js +0 -731
  483. package/dist/resolve-dependencies-Nvjp4CwS.js.map +0 -1
  484. package/dist/resolve-dependencies-f-QUqYiL.js +0 -731
  485. package/dist/resolve-dependencies-f-QUqYiL.js.map +0 -1
  486. package/dist/tracked-B77j2g9M.js +0 -197
  487. package/dist/tracked-B77j2g9M.js.map +0 -1
  488. package/dist/tracked-BDVi2LKM.cjs +0 -227
  489. package/dist/tracked-BDVi2LKM.cjs.map +0 -1
  490. package/dist/tracked-BFdJCzL0.cjs +0 -242
  491. package/dist/tracked-BFdJCzL0.cjs.map +0 -1
  492. package/dist/tracked-BH-gX4T1.cjs +0 -227
  493. package/dist/tracked-BH-gX4T1.cjs.map +0 -1
  494. package/dist/tracked-BTHok3Dl.cjs +0 -227
  495. package/dist/tracked-BTHok3Dl.cjs.map +0 -1
  496. package/dist/tracked-BTbFkFeM.js +0 -212
  497. package/dist/tracked-BTbFkFeM.js.map +0 -1
  498. package/dist/tracked-BU_OBWqM.cjs +0 -242
  499. package/dist/tracked-BU_OBWqM.cjs.map +0 -1
  500. package/dist/tracked-BfctH2es.cjs +0 -242
  501. package/dist/tracked-BfctH2es.cjs.map +0 -1
  502. package/dist/tracked-BhQtzUhZ.js +0 -212
  503. package/dist/tracked-BhQtzUhZ.js.map +0 -1
  504. package/dist/tracked-BnqrYXiO.js +0 -212
  505. package/dist/tracked-BnqrYXiO.js.map +0 -1
  506. package/dist/tracked-BtgFOGup.js +0 -212
  507. package/dist/tracked-BtgFOGup.js.map +0 -1
  508. package/dist/tracked-C3nIS4J7.cjs +0 -242
  509. package/dist/tracked-C3nIS4J7.cjs.map +0 -1
  510. package/dist/tracked-C52awNV9.js +0 -197
  511. package/dist/tracked-C52awNV9.js.map +0 -1
  512. package/dist/tracked-CGzduF2m.js +0 -212
  513. package/dist/tracked-CGzduF2m.js.map +0 -1
  514. package/dist/tracked-CK_-ixtX.cjs +0 -227
  515. package/dist/tracked-CK_-ixtX.cjs.map +0 -1
  516. package/dist/tracked-CLlvURln.js +0 -212
  517. package/dist/tracked-CLlvURln.js.map +0 -1
  518. package/dist/tracked-CgHWmuGC.cjs +0 -242
  519. package/dist/tracked-CgHWmuGC.cjs.map +0 -1
  520. package/dist/tracked-CoAlC8fs.js +0 -197
  521. package/dist/tracked-CoAlC8fs.js.map +0 -1
  522. package/dist/tracked-D3Xjm1H1.cjs +0 -242
  523. package/dist/tracked-D3Xjm1H1.cjs.map +0 -1
  524. package/dist/tracked-DB6yMV5F.js +0 -212
  525. package/dist/tracked-DB6yMV5F.js.map +0 -1
  526. package/dist/tracked-DBn-bs_G.js +0 -197
  527. package/dist/tracked-DBn-bs_G.js.map +0 -1
  528. package/dist/tracked-DCfBaYjL.cjs +0 -227
  529. package/dist/tracked-DCfBaYjL.cjs.map +0 -1
  530. package/dist/tracked-DKduNLgI.js +0 -197
  531. package/dist/tracked-DKduNLgI.js.map +0 -1
  532. package/dist/tracked-DMBTDF0P.js +0 -197
  533. package/dist/tracked-DMBTDF0P.js.map +0 -1
  534. package/dist/tracked-DN3h3Rp1.js +0 -197
  535. package/dist/tracked-DN3h3Rp1.js.map +0 -1
  536. package/dist/tracked-DOGh1Q5Z.cjs +0 -242
  537. package/dist/tracked-DOGh1Q5Z.cjs.map +0 -1
  538. package/dist/tracked-DUkp4zve.cjs +0 -227
  539. package/dist/tracked-DUkp4zve.cjs.map +0 -1
  540. package/dist/tracked-D_ou7mYG.js +0 -212
  541. package/dist/tracked-D_ou7mYG.js.map +0 -1
  542. package/dist/tracked-Dcu6EATB.js +0 -197
  543. package/dist/tracked-Dcu6EATB.js.map +0 -1
  544. package/dist/tracked-GvAJQVAI.cjs +0 -271
  545. package/dist/tracked-GvAJQVAI.cjs.map +0 -1
  546. package/dist/tracked-O2lv-kJV.cjs +0 -242
  547. package/dist/tracked-O2lv-kJV.cjs.map +0 -1
  548. package/dist/tracked-WF6aXuAo.js +0 -223
  549. package/dist/tracked-WF6aXuAo.js.map +0 -1
  550. package/dist/tracked-d_sQWU3c.cjs +0 -227
  551. package/dist/tracked-d_sQWU3c.cjs.map +0 -1
  552. package/dist/tracked-n9TMK-30.cjs +0 -227
  553. package/dist/tracked-n9TMK-30.cjs.map +0 -1
  554. package/dist/tracked-njU-_pVa.cjs +0 -242
  555. package/dist/tracked-njU-_pVa.cjs.map +0 -1
  556. package/dist/tracked-zAgmKIlC.js +0 -212
  557. package/dist/tracked-zAgmKIlC.js.map +0 -1
  558. package/dist/tracking/dependency-manager.d.ts +0 -41
  559. package/dist/tracking/index.d.ts +0 -28
  560. package/dist/tracking/iteration-perf.bench.d.ts +0 -1
  561. package/dist/tracking/path-utils.d.ts +0 -69
  562. package/dist/tracking/resolve-dependencies.d.ts +0 -9
  563. package/dist/tracking/tracked.d.ts +0 -73
  564. package/dist/tracking/tracking-proxy.d.ts +0 -230
  565. package/dist/tracking.cjs +0 -21
  566. package/dist/tracking.d.cts +0 -9
  567. package/dist/tracking.d.ts +0 -9
  568. package/dist/tracking.js +0 -32
  569. package/dist/watch-BpwaUL8r.cjs.map +0 -1
  570. package/dist/watch-DWCqXllW.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cubit-CfT6Y1jl.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\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 _dependencies: Map<StateContainerConstructor, string> | null = null;\n private _registry = getRegistry();\n\n // Fix B: Direct fields instead of Map for system event handlers\n private _stateChangedHandlers: Set<\n SystemEventHandler<S, 'stateChanged'>\n > | null = null;\n private _disposeHandlers: Set<SystemEventHandler<S, 'dispose'>> | null =\n null;\n private _hydrationChangedHandlers: Set<\n SystemEventHandler<S, 'hydrationChanged'>\n > | null = null;\n\n // Fix D: Deferred stateChanged system event batching\n private _pendingSystemStateChanges: Array<\n SystemEventPayloads<S>['stateChanged']\n > | 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\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 () => this._registry.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 this._registry.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._stateChangedHandlers = null;\n this._disposeHandlers = null;\n this._hydrationChangedHandlers = null;\n\n this._registry.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 // Fix A: applyState is now the shared path for emit() and applyHydratedState().\n // patch() has its own inlined fast path in Cubit.ts.\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.notifyAfterStateChange(previousState, newState);\n }\n\n // Fix A: Protected fast-path for Cubit.patch() — skips disposed/identity checks\n // that patch already handles. Avoids EMIT→applyState indirection.\n protected applyStateUnchecked(newState: S): void {\n if (this._hydrationStatus === 'hydrating') {\n this._changedWhileHydrating = true;\n }\n\n const previousState = this._state;\n this._state = newState;\n this.notifyAfterStateChange(previousState, newState);\n }\n\n // Shared notification logic used by both applyState and Cubit.patch fast path\n private notifyAfterStateChange(previousState: S, newState: S): void {\n // Fix D: Defer stateChanged system event handlers to microtask\n const handlers = this._stateChangedHandlers;\n if (handlers && handlers.size > 0) {\n const payload = { state: newState, previousState };\n if (!this._pendingSystemStateChanges) {\n this._pendingSystemStateChanges = [];\n queueMicrotask(() => this.flushSystemStateChanges());\n }\n this._pendingSystemStateChanges.push(payload);\n }\n\n // Fix C: Skip listener iteration when empty (Set.size is O(1))\n if (this._listeners.size > 0) {\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\n this._registry.notifyStateChanged(this, previousState, newState);\n }\n\n private flushSystemStateChanges(): void {\n const pending = this._pendingSystemStateChanges;\n this._pendingSystemStateChanges = null;\n if (!pending) return;\n\n const handlers = this._stateChangedHandlers;\n if (!handlers || handlers.size === 0) return;\n\n for (const payload of pending) {\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 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 // Fix B: Direct field lookup instead of Map.get()\n protected onSystemEvent = <E extends SystemEvent>(\n event: E,\n handler: SystemEventHandler<S, E>,\n ): (() => void) => {\n if (event === 'stateChanged') {\n if (!this._stateChangedHandlers) {\n this._stateChangedHandlers = new Set();\n }\n this._stateChangedHandlers.add(\n handler as SystemEventHandler<S, 'stateChanged'>,\n );\n return () => {\n this._stateChangedHandlers?.delete(\n handler as SystemEventHandler<S, 'stateChanged'>,\n );\n };\n }\n\n if (event === 'dispose') {\n if (!this._disposeHandlers) {\n this._disposeHandlers = new Set();\n }\n this._disposeHandlers.add(handler as SystemEventHandler<S, 'dispose'>);\n return () => {\n this._disposeHandlers?.delete(\n handler as SystemEventHandler<S, 'dispose'>,\n );\n };\n }\n\n // hydrationChanged\n if (!this._hydrationChangedHandlers) {\n this._hydrationChangedHandlers = new Set();\n }\n this._hydrationChangedHandlers.add(\n handler as SystemEventHandler<S, 'hydrationChanged'>,\n );\n return () => {\n this._hydrationChangedHandlers?.delete(\n handler as SystemEventHandler<S, 'hydrationChanged'>,\n );\n };\n };\n\n // Synchronous emit for dispose and hydrationChanged (not stateChanged)\n private emitSystemEvent<E extends SystemEvent>(\n event: E,\n payload: SystemEventPayloads<S>[E],\n ): void {\n let handlers: Set<SystemEventHandler<S, any>> | null = null;\n if (event === 'dispose') {\n handlers = this._disposeHandlers;\n } else if (event === 'hydrationChanged') {\n handlers = this._hydrationChangedHandlers;\n }\n // stateChanged is handled via deferred path in notifyAfterStateChange\n\n if (!handlers || handlers.size === 0) 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 // Fix A: Inlined fast path — bypasses EMIT→applyState indirection.\n // Change detection + state assignment + notification in one flat call.\n public patch = ((partial: S extends object ? Partial<S> : never): void => {\n if (this.isDisposed) {\n throw new Error(\n `Cannot emit state from disposed container ${this.name}`,\n );\n }\n\n if (typeof this.state !== 'object' || this.state === null) {\n throw new Error('patch() is only available for object state types');\n }\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) return;\n\n const newState = { ...current, ...partial } as S;\n this.applyStateUnchecked(newState);\n }) as S extends object ? (partial: Partial<S>) => void : never;\n}\n"],"mappings":"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"}
@@ -1,369 +0,0 @@
1
- import {
2
- i as getClassEquality,
3
- l as BLAC_DEFAULTS,
4
- } from './StateContainerRegistry-C0E7vsgy.js';
5
- import { t as getRegistry } from './config-CmDEX-1o.js';
6
- //#region src/config.ts
7
- /**
8
- * Default equality: shallow per-key `Object.is` comparison.
9
- * Falls through to `false` for primitives/null so reference-only state still
10
- * behaves correctly.
11
- */
12
- const shallowEqualState = (prev, next) => {
13
- if (Object.is(prev, next)) return true;
14
- if (typeof prev !== 'object' || prev === null) return false;
15
- if (typeof next !== 'object' || next === null) return false;
16
- const prevKeys = Object.keys(prev);
17
- if (prevKeys.length !== Object.keys(next).length) return false;
18
- for (let i = 0; i < prevKeys.length; i++) {
19
- const key = prevKeys[i];
20
- if (!Object.is(prev[key], next[key])) return false;
21
- }
22
- return true;
23
- };
24
- const defaultConfig = { equality: shallowEqualState };
25
- let globalConfig = { ...defaultConfig };
26
- /**
27
- * Configure global defaults for @blac/core.
28
- *
29
- * @example
30
- * ```ts
31
- * import { configureBlac, shallowEqualState } from '@blac/core';
32
- *
33
- * // Swap in a deep-equality check for all blocs
34
- * configureBlac({ equality: myDeepEqual });
35
- * ```
36
- */
37
- function configureBlac(config) {
38
- globalConfig = {
39
- ...globalConfig,
40
- ...config,
41
- };
42
- }
43
- /**
44
- * Get the current global configuration.
45
- * @internal
46
- */
47
- function getBlacConfig() {
48
- return globalConfig;
49
- }
50
- /**
51
- * Reset configuration to defaults (useful for testing).
52
- * @internal
53
- */
54
- function resetBlacConfig() {
55
- globalConfig = { ...defaultConfig };
56
- }
57
- //#endregion
58
- //#region src/utils/idGenerator.ts
59
- /**
60
- * Generate simple ID with timestamp and random (no counter tracking)
61
- *
62
- * Format: `${prefix}:${timestamp}_${random}`
63
- *
64
- * @param prefix - Prefix for the ID
65
- * @returns Branded ID string
66
- *
67
- * @example
68
- * ```ts
69
- * const id = generateSimpleId('CounterBloc');
70
- * // Returns: "CounterBloc:1698765432100_a3k9d7f2q"
71
- * ```
72
- */
73
- function generateSimpleId(prefix, affix) {
74
- if (affix) return `${prefix}:${affix}`;
75
- return `${prefix}:${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
76
- }
77
- //#endregion
78
- //#region src/core/symbols.ts
79
- const EMIT = Symbol('blac.emit');
80
- //#endregion
81
- //#region src/core/StateContainer.ts
82
- const EMPTY_DEPS = /* @__PURE__ */ new Map();
83
- var StateContainer = class {
84
- static {
85
- this.__excludeFromDevTools = false;
86
- }
87
- get dependencies() {
88
- return this._dependencies ?? EMPTY_DEPS;
89
- }
90
- depend(Type, instanceKey) {
91
- if (!this._dependencies) this._dependencies = /* @__PURE__ */ new Map();
92
- this._dependencies.set(
93
- Type,
94
- instanceKey ?? BLAC_DEFAULTS.DEFAULT_INSTANCE_KEY,
95
- );
96
- return () => this._registry.ensure(Type, instanceKey);
97
- }
98
- constructor(initialState) {
99
- this._listeners = /* @__PURE__ */ new Set();
100
- this._disposed = false;
101
- this._hydrationStatus = 'idle';
102
- this._changedWhileHydrating = false;
103
- this._hydrationPromise = null;
104
- this._hydrationPromiseSettled = false;
105
- this._config = {};
106
- this._systemEventHandlers = /* @__PURE__ */ new Map();
107
- this._dependencies = null;
108
- this._hasStateChangeHandlers = false;
109
- this._registry = getRegistry();
110
- this._equalityFn = getBlacConfig().equality;
111
- this.name = this.constructor.name;
112
- this.debug = false;
113
- this.instanceId = generateSimpleId(this.constructor.name, 'main');
114
- this.createdAt = Date.now();
115
- this.onSystemEvent = (event, handler) => {
116
- let handlers = this._systemEventHandlers.get(event);
117
- if (!handlers) {
118
- handlers = /* @__PURE__ */ new Set();
119
- this._systemEventHandlers.set(event, handlers);
120
- }
121
- handlers.add(handler);
122
- if (event === 'stateChanged') this._hasStateChangeHandlers = true;
123
- return () => {
124
- handlers?.delete(handler);
125
- if (event === 'stateChanged' && handlers?.size === 0)
126
- this._hasStateChangeHandlers = false;
127
- };
128
- };
129
- this._state = initialState;
130
- }
131
- initConfig(config) {
132
- this._config = { ...config };
133
- this.name = this._config.name || this.constructor.name;
134
- this.debug = this._config.debug ?? false;
135
- this.instanceId = generateSimpleId(
136
- this.constructor.name,
137
- this._config.instanceId,
138
- );
139
- this._equalityFn =
140
- getClassEquality(this.constructor) ?? getBlacConfig().equality;
141
- this._registry.emit('created', this);
142
- }
143
- get state() {
144
- return this._state;
145
- }
146
- get isDisposed() {
147
- return this._disposed;
148
- }
149
- get hydrationStatus() {
150
- return this._hydrationStatus;
151
- }
152
- get hydrationError() {
153
- return this._hydrationError;
154
- }
155
- get isHydrated() {
156
- return this._hydrationStatus === 'hydrated';
157
- }
158
- get changedWhileHydrating() {
159
- return this._changedWhileHydrating;
160
- }
161
- subscribe(listener) {
162
- if (this._disposed)
163
- throw new Error(`Cannot subscribe to disposed container ${this.name}`);
164
- this._listeners.add(listener);
165
- return () => this._listeners.delete(listener);
166
- }
167
- dispose() {
168
- if (this._disposed) return;
169
- if (this.debug) console.log(`[${this.name}] Disposing...`);
170
- this._disposed = true;
171
- if (this._hydrationStatus === 'hydrating')
172
- this.failHydration(
173
- /* @__PURE__ */ new Error(
174
- `Hydration cancelled because ${this.name} was disposed`,
175
- ),
176
- );
177
- this.emitSystemEvent('dispose', void 0);
178
- this._listeners.clear();
179
- this._systemEventHandlers.clear();
180
- this._registry.emit('disposed', this);
181
- if (this.debug) console.log(`[${this.name}] Disposed successfully`);
182
- }
183
- [EMIT](newState) {
184
- this.applyState(newState, 'default');
185
- }
186
- emit(newState) {
187
- this[EMIT](newState);
188
- }
189
- beginHydration() {
190
- if (this._disposed)
191
- throw new Error(
192
- `Cannot begin hydration for disposed container ${this.name}`,
193
- );
194
- this._changedWhileHydrating = false;
195
- this._hydrationError = void 0;
196
- this._hydrationPromise = null;
197
- this._resolveHydrationPromise = void 0;
198
- this._rejectHydrationPromise = void 0;
199
- this._hydrationPromiseSettled = false;
200
- this.ensureHydrationPromise();
201
- this.setHydrationStatus('hydrating');
202
- }
203
- applyHydratedState(newState) {
204
- if (this._disposed) return false;
205
- if (this._hydrationStatus !== 'hydrating' || this._changedWhileHydrating)
206
- return false;
207
- this.applyState(newState, 'hydration');
208
- return true;
209
- }
210
- finishHydration() {
211
- if (this._hydrationStatus !== 'hydrating') {
212
- if (this._hydrationStatus === 'hydrated') return;
213
- if (this._hydrationStatus === 'error') this.ensureHydrationPromise();
214
- }
215
- this.setHydrationStatus('hydrated');
216
- this.resolveHydration();
217
- }
218
- failHydration(error) {
219
- const err =
220
- error instanceof Error
221
- ? error
222
- : /* @__PURE__ */ new Error(`Hydration failed: ${String(error)}`);
223
- this._hydrationError = err;
224
- this.setHydrationStatus('error', err);
225
- this.rejectHydration(err);
226
- }
227
- waitForHydration() {
228
- if (
229
- this._hydrationStatus === 'idle' ||
230
- this._hydrationStatus === 'hydrated'
231
- )
232
- return Promise.resolve();
233
- if (this._hydrationStatus === 'error')
234
- return Promise.reject(
235
- this._hydrationError ??
236
- /* @__PURE__ */ new Error(
237
- `Hydration failed for container ${this.name}`,
238
- ),
239
- );
240
- return this.ensureHydrationPromise();
241
- }
242
- applyState(newState, source) {
243
- if (this._disposed)
244
- throw new Error(`Cannot emit state from disposed container ${this.name}`);
245
- if (this._state === newState) return;
246
- if (this._equalityFn(this._state, newState)) return;
247
- const previousState = this._state;
248
- this._state = newState;
249
- if (
250
- this._listeners.size === 0 &&
251
- !this._hasStateChangeHandlers &&
252
- this._hydrationStatus !== 'hydrating'
253
- ) {
254
- if (this._registry.hasStateChangedListeners)
255
- this._registry.notifyStateChanged(this, previousState, newState);
256
- return;
257
- }
258
- if (this._hydrationStatus === 'hydrating' && source !== 'hydration')
259
- this._changedWhileHydrating = true;
260
- if (this._hasStateChangeHandlers) {
261
- const handlers = this._systemEventHandlers.get('stateChanged');
262
- const payload = {
263
- state: newState,
264
- previousState,
265
- };
266
- for (const handler of handlers)
267
- try {
268
- handler(payload);
269
- } catch (error) {
270
- console.error(`[${this.name}] Error in system event handler:`, error);
271
- }
272
- }
273
- if (this._listeners.size > 0) {
274
- let count = 0;
275
- const size = this._listeners.size;
276
- for (const listener of this._listeners) {
277
- if (++count > size) break;
278
- try {
279
- listener(newState);
280
- } catch (error) {
281
- console.error(`[${this.name}] Error in listener:`, error);
282
- }
283
- }
284
- }
285
- if (this._registry.hasStateChangedListeners)
286
- this._registry.notifyStateChanged(this, previousState, newState);
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
- for (const key of Object.keys(partial))
345
- if (!Object.is(this.state[key], partial[key])) {
346
- this[EMIT]({
347
- ...this.state,
348
- ...partial,
349
- });
350
- return;
351
- }
352
- };
353
- }
354
- emit(newState) {
355
- this[EMIT](newState);
356
- }
357
- };
358
- //#endregion
359
- export {
360
- getBlacConfig as a,
361
- configureBlac as i,
362
- StateContainer as n,
363
- resetBlacConfig as o,
364
- EMIT as r,
365
- shallowEqualState as s,
366
- Cubit as t,
367
- };
368
-
369
- //# sourceMappingURL=Cubit-CynJruuO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cubit-CynJruuO.js","names":[],"sources":["../src/config.ts","../src/utils/idGenerator.ts","../src/core/symbols.ts","../src/core/StateContainer.ts","../src/core/Cubit.ts"],"sourcesContent":["/**\n * Global configuration for @blac/core\n */\n\nexport type EqualityFn = <S>(prev: S, next: S) => boolean;\n\nexport interface BlacConfig {\n /**\n * Equality check used by `StateContainer.applyState` to skip emits when\n * `prev` and `next` are structurally equal. Default: `shallowEqualState`.\n *\n * Return `true` to skip the emit (states considered equal).\n */\n equality: EqualityFn;\n}\n\n/**\n * Default equality: shallow per-key `Object.is` comparison.\n * Falls through to `false` for primitives/null so reference-only state still\n * behaves correctly.\n */\nexport const shallowEqualState: EqualityFn = (prev, next) => {\n if (Object.is(prev, next)) return true;\n if (typeof prev !== 'object' || prev === null) return false;\n if (typeof next !== 'object' || next === null) return false;\n\n const prevKeys = Object.keys(prev as object);\n if (prevKeys.length !== Object.keys(next as object).length) return false;\n\n for (let i = 0; i < prevKeys.length; i++) {\n const key = prevKeys[i];\n if (\n !Object.is(\n (prev as Record<string, unknown>)[key],\n (next as Record<string, unknown>)[key],\n )\n ) {\n return false;\n }\n }\n return true;\n};\n\nconst defaultConfig: BlacConfig = {\n equality: shallowEqualState,\n};\n\nlet globalConfig: BlacConfig = { ...defaultConfig };\n\n/**\n * Configure global defaults for @blac/core.\n *\n * @example\n * ```ts\n * import { configureBlac, shallowEqualState } from '@blac/core';\n *\n * // Swap in a deep-equality check for all blocs\n * configureBlac({ equality: myDeepEqual });\n * ```\n */\nexport function configureBlac(config: Partial<BlacConfig>): void {\n globalConfig = { ...globalConfig, ...config };\n}\n\n/**\n * Get the current global configuration.\n * @internal\n */\nexport function getBlacConfig(): BlacConfig {\n return globalConfig;\n}\n\n/**\n * Reset configuration to defaults (useful for testing).\n * @internal\n */\nexport function resetBlacConfig(): void {\n globalConfig = { ...defaultConfig };\n}\n","/**\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');\n","import { generateSimpleId } from '../utils/idGenerator';\nimport { BLAC_DEFAULTS } from '../constants';\nimport { getRegistry } from '../registry/config';\nimport type { StateContainerConstructor } from '../types/utilities';\nimport { EMIT } 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}\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\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 private _hasStateChangeHandlers = false;\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 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) {\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 const perClass = getClassEquality(\n this.constructor as StateContainerConstructor,\n );\n this._equalityFn = perClass ?? getBlacConfig().equality;\n this._registry.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 this._registry.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 emit(newState: S): void {\n this[EMIT](newState);\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 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 if (this._equalityFn(this._state, newState)) return;\n\n const previousState = this._state;\n this._state = newState;\n\n if (\n this._listeners.size === 0 &&\n !this._hasStateChangeHandlers &&\n this._hydrationStatus !== 'hydrating'\n ) {\n if (this._registry.hasStateChangedListeners) {\n this._registry.notifyStateChanged(this, previousState, newState);\n }\n return;\n }\n\n if (this._hydrationStatus === 'hydrating' && source !== 'hydration') {\n this._changedWhileHydrating = true;\n }\n\n if (this._hasStateChangeHandlers) {\n const handlers = this._systemEventHandlers.get('stateChanged')!;\n const payload = { state: newState, previousState };\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 if (this._listeners.size > 0) {\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(newState);\n } catch (error) {\n console.error(`[${this.name}] Error in listener:`, error);\n }\n }\n }\n\n if (this._registry.hasStateChangedListeners) {\n this._registry.notifyStateChanged(this, previousState, newState);\n }\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 if (event === 'stateChanged') {\n this._hasStateChangeHandlers = true;\n }\n\n return () => {\n handlers?.delete(handler as SystemEventHandler<S, any>);\n if (event === 'stateChanged' && handlers?.size === 0) {\n this._hasStateChangeHandlers = false;\n }\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 } 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 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 for (const key of Object.keys(partial as object)) {\n if (!Object.is((this.state as any)[key], (partial as any)[key])) {\n this[EMIT]({ ...this.state, ...partial } as S);\n return;\n }\n }\n }) as S extends object ? (partial: Partial<S>) => void : never;\n}\n"],"mappings":"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"}