@blac/core 2.0.15 → 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,453 +0,0 @@
1
- import {
2
- i as getClassEquality,
3
- l as BLAC_DEFAULTS,
4
- p as getBlacConfig,
5
- } from './StateContainerRegistry-BqS-wpb_.js';
6
- import { t as getRegistry } from './config-Cd7Q-B4g.js';
7
- //#region src/utils/idGenerator.ts
8
- /**
9
- * Generate simple ID with timestamp and random (no counter tracking)
10
- *
11
- * Format: `${prefix}:${timestamp}_${random}`
12
- *
13
- * @param prefix - Prefix for the ID
14
- * @returns Branded ID string
15
- *
16
- * @example
17
- * ```ts
18
- * const id = generateSimpleId('CounterBloc');
19
- * // Returns: "CounterBloc:1698765432100_a3k9d7f2q"
20
- * ```
21
- */
22
- function generateSimpleId(prefix, affix) {
23
- if (affix) return `${prefix}:${affix}`;
24
- return `${prefix}:${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
25
- }
26
- //#endregion
27
- //#region src/core/symbols.ts
28
- const EMIT = Symbol('blac.emit');
29
- /**
30
- * @internal Apply one owner's (consumer's) deps slice to an instance.
31
- * Called by framework adapters (e.g. @blac/react useBloc) — not public API.
32
- */
33
- const APPLY_DEPS = Symbol('blac.applyDeps');
34
- /**
35
- * @internal Withdraw one owner's entire deps slice (consumer unmounted).
36
- * Called by framework adapters — not public API.
37
- */
38
- const REMOVE_DEPS_OWNER = Symbol('blac.removeDepsOwner');
39
- //#endregion
40
- //#region src/core/StateContainer.ts
41
- const EMPTY_DEPS = /* @__PURE__ */ new Map();
42
- /**
43
- * Shallow per-key `Object.is` comparison of two plain records. Keys are
44
- * considered: a key present in one but not the other (regardless of value)
45
- * makes the records unequal. Used to detect real deps changes.
46
- */
47
- function shallowEqualRecord(a, b) {
48
- if (a === b) return true;
49
- const aKeys = Object.keys(a);
50
- if (aKeys.length !== Object.keys(b).length) return false;
51
- for (const key of aKeys) {
52
- if (!(key in b)) return false;
53
- if (!Object.is(a[key], b[key])) return false;
54
- }
55
- return true;
56
- }
57
- var StateContainer = class {
58
- static {
59
- this.__excludeFromDevTools = false;
60
- }
61
- /**
62
- * Injected non-serializable handles (refs, callbacks, controllers).
63
- * Read lazily — never assume a dep is present at init().
64
- */
65
- get deps() {
66
- return this._deps;
67
- }
68
- /**
69
- * @internal Apply one owner's (consumer's) deps slice. Shallow-merges the
70
- * slice, reconciles keys the owner dropped since its last apply (other
71
- * owners' keys untouched), dev-warns on cross-owner key collisions, then
72
- * recomputes the merged view and fires onDepsChanged if it changed.
73
- *
74
- * Idempotent: re-applying an identical slice for the same owner is a no-op.
75
- */
76
- [APPLY_DEPS](ownerId, slice) {
77
- if (this._disposed) return;
78
- const owners = (this._depsByOwner ??= /* @__PURE__ */ new Map());
79
- const prevSlice = owners.get(ownerId);
80
- if (prevSlice && shallowEqualRecord(prevSlice, slice)) return;
81
- if (process.env.NODE_ENV !== 'production')
82
- for (const key of Object.keys(slice))
83
- for (const [otherOwner, otherSlice] of owners) {
84
- if (otherOwner === ownerId) continue;
85
- if (key in otherSlice && otherSlice[key] !== slice[key])
86
- console.warn(
87
- `[${this.name}] multiple owners writing dep \`${String(key)}\`; last write wins`,
88
- );
89
- }
90
- owners.set(ownerId, { ...slice });
91
- this.reconcileDeps();
92
- }
93
- /**
94
- * @internal Withdraw an owner's entire deps slice (consumer unmounted).
95
- * Recomputes the merged view; keys only that owner provided go absent.
96
- */
97
- [REMOVE_DEPS_OWNER](ownerId) {
98
- if (this._disposed) return;
99
- if (!this._depsByOwner?.delete(ownerId)) return;
100
- this.reconcileDeps();
101
- }
102
- /**
103
- * Rebuild the merged `_deps` view from all owners' slices and fire
104
- * onDepsChanged(next, prev) if the merged view changed (shallow compare).
105
- * A key whose last owner was removed appears in `next` as undefined.
106
- */
107
- reconcileDeps() {
108
- const prev = this._deps;
109
- const next = {};
110
- if (this._depsByOwner)
111
- for (const slice of this._depsByOwner.values())
112
- Object.assign(next, slice);
113
- for (const key of Object.keys(prev)) if (!(key in next)) next[key] = void 0;
114
- if (shallowEqualRecord(prev, next)) return;
115
- this._deps = next;
116
- this.onDepsChanged(next, prev);
117
- }
118
- /**
119
- * Override to react when an injected handle appears, changes, or disappears
120
- * (post-merge). Receives readonly snapshots; diff `next.x !== prev.x` to run
121
- * setup/teardown (canvas init, controller bind). A disappeared handle is
122
- * present in `next` as `undefined`.
123
- */
124
- onDepsChanged(_next, _prev) {}
125
- get dependencies() {
126
- return this._dependencies ?? EMPTY_DEPS;
127
- }
128
- depend(Type, instanceKey) {
129
- if (!this._dependencies) this._dependencies = /* @__PURE__ */ new Map();
130
- this._dependencies.set(
131
- Type,
132
- instanceKey ?? BLAC_DEFAULTS.DEFAULT_INSTANCE_KEY,
133
- );
134
- return () => this._registry.ensure(Type, instanceKey);
135
- }
136
- constructor(initialState) {
137
- this._depsByOwner = null;
138
- this._deps = {};
139
- this._listeners = /* @__PURE__ */ new Set();
140
- this._disposed = false;
141
- this._hydrationStatus = 'idle';
142
- this._changedWhileHydrating = false;
143
- this._hydrationPromise = null;
144
- this._hydrationPromiseSettled = false;
145
- this._config = {};
146
- this._initCalled = false;
147
- this._emitWindowStart = 0;
148
- this._emitCount = 0;
149
- this._emitRateWarned = false;
150
- this._systemEventHandlers = /* @__PURE__ */ new Map();
151
- this._dependencies = null;
152
- this._hasStateChangeHandlers = false;
153
- this._registry = getRegistry();
154
- this._equalityFn = getBlacConfig().equality;
155
- this.name = this.constructor.name;
156
- this.debug = false;
157
- this.instanceId = generateSimpleId(this.constructor.name, 'main');
158
- this.createdAt = Date.now();
159
- this.onSystemEvent = (event, handler) => {
160
- let handlers = this._systemEventHandlers.get(event);
161
- if (!handlers) {
162
- handlers = /* @__PURE__ */ new Set();
163
- this._systemEventHandlers.set(event, handlers);
164
- }
165
- handlers.add(handler);
166
- if (event === 'stateChanged') this._hasStateChangeHandlers = true;
167
- return () => {
168
- handlers?.delete(handler);
169
- if (event === 'stateChanged' && handlers?.size === 0)
170
- this._hasStateChangeHandlers = false;
171
- };
172
- };
173
- this._state = initialState;
174
- }
175
- /**
176
- * Called once after construction with the args passed at acquire time, before the first
177
- * state snapshot is read by any consumer. Override to seed args-derived state (via
178
- * this.emit(...)) or kick off loads. Because init runs before any subscriber exists, the
179
- * emit is safe and flash-free.
180
- *
181
- * Static initial state still comes from the subclass `state` field / `super(initialState)`.
182
- * For blocs where Args = void, init(undefined) is called — the default no-op ignores it.
183
- */
184
- init(_args) {}
185
- initConfig(config) {
186
- this._config = { ...config };
187
- this.name = this._config.name || this.constructor.name;
188
- this.debug = this._config.debug ?? false;
189
- this.instanceId = generateSimpleId(
190
- this.constructor.name,
191
- this._config.instanceId,
192
- );
193
- this._equalityFn =
194
- getClassEquality(this.constructor) ?? getBlacConfig().equality;
195
- this._registry.emit('created', this);
196
- if (!this._initCalled) {
197
- this._initCalled = true;
198
- this.init(this._config.args);
199
- }
200
- }
201
- get state() {
202
- return this._state;
203
- }
204
- get isDisposed() {
205
- return this._disposed;
206
- }
207
- get hydrationStatus() {
208
- return this._hydrationStatus;
209
- }
210
- get hydrationError() {
211
- return this._hydrationError;
212
- }
213
- get isHydrated() {
214
- return this._hydrationStatus === 'hydrated';
215
- }
216
- get changedWhileHydrating() {
217
- return this._changedWhileHydrating;
218
- }
219
- subscribe(listener) {
220
- if (this._disposed)
221
- throw new Error(`Cannot subscribe to disposed container ${this.name}`);
222
- this._listeners.add(listener);
223
- return () => this._listeners.delete(listener);
224
- }
225
- dispose() {
226
- if (this._disposed) return;
227
- if (this.debug) console.log(`[${this.name}] Disposing...`);
228
- if (this._depsByOwner) {
229
- this._depsByOwner.clear();
230
- this.reconcileDeps();
231
- }
232
- this._disposed = true;
233
- if (this._hydrationStatus === 'hydrating')
234
- this.failHydration(
235
- /* @__PURE__ */ new Error(
236
- `Hydration cancelled because ${this.name} was disposed`,
237
- ),
238
- );
239
- this.emitSystemEvent('dispose', void 0);
240
- this._listeners.clear();
241
- this._systemEventHandlers.clear();
242
- this._registry.emit('disposed', this);
243
- if (this.debug) console.log(`[${this.name}] Disposed successfully`);
244
- }
245
- [EMIT](newState) {
246
- this.applyState(newState, 'default');
247
- }
248
- emit(newState) {
249
- this[EMIT](newState);
250
- }
251
- beginHydration() {
252
- if (this._disposed)
253
- throw new Error(
254
- `Cannot begin hydration for disposed container ${this.name}`,
255
- );
256
- this._changedWhileHydrating = false;
257
- this._hydrationError = void 0;
258
- this._hydrationPromise = null;
259
- this._resolveHydrationPromise = void 0;
260
- this._rejectHydrationPromise = void 0;
261
- this._hydrationPromiseSettled = false;
262
- this.ensureHydrationPromise();
263
- this.setHydrationStatus('hydrating');
264
- }
265
- applyHydratedState(newState) {
266
- if (this._disposed) return false;
267
- if (this._hydrationStatus !== 'hydrating' || this._changedWhileHydrating)
268
- return false;
269
- this.applyState(newState, 'hydration');
270
- return true;
271
- }
272
- finishHydration() {
273
- if (this._hydrationStatus !== 'hydrating') {
274
- if (this._hydrationStatus === 'hydrated') return;
275
- if (this._hydrationStatus === 'error') this.ensureHydrationPromise();
276
- }
277
- this.setHydrationStatus('hydrated');
278
- this.resolveHydration();
279
- }
280
- failHydration(error) {
281
- const err =
282
- error instanceof Error
283
- ? error
284
- : /* @__PURE__ */ new Error(`Hydration failed: ${String(error)}`);
285
- this._hydrationError = err;
286
- this.setHydrationStatus('error', err);
287
- this.rejectHydration(err);
288
- }
289
- waitForHydration() {
290
- if (
291
- this._hydrationStatus === 'idle' ||
292
- this._hydrationStatus === 'hydrated'
293
- )
294
- return Promise.resolve();
295
- if (this._hydrationStatus === 'error')
296
- return Promise.reject(
297
- this._hydrationError ??
298
- /* @__PURE__ */ new Error(
299
- `Hydration failed for container ${this.name}`,
300
- ),
301
- );
302
- return this.ensureHydrationPromise();
303
- }
304
- /**
305
- * Dev-only soft circuit breaker. Counts real state changes in a rolling 1s
306
- * window and warns once if the rate exceeds `maxEmitsPerSecond` — the
307
- * signature of a runaway loop (RAF/animation or emit-on-every-commit) pushing
308
- * high-frequency data through state, which freezes subscribers/plugins.
309
- */
310
- _checkEmitRate() {
311
- const limit = getBlacConfig().maxEmitsPerSecond;
312
- if (!(limit > 0) || !Number.isFinite(limit) || this._emitRateWarned) return;
313
- const now = Date.now();
314
- if (now - this._emitWindowStart >= 1e3) {
315
- this._emitWindowStart = now;
316
- this._emitCount = 1;
317
- return;
318
- }
319
- this._emitCount++;
320
- if (this._emitCount > limit) {
321
- this._emitRateWarned = true;
322
- console.warn(
323
- `[${this.name}] emitted more than ${limit} state changes in under a second. This is usually a runaway loop pushing high-frequency data through state (e.g. \`emit\`/\`patch\` inside a requestAnimationFrame loop, or an effect that emits on every render). It can freeze the app by saturating subscribers and plugins (logging/devtools). Keep high-frequency work imperative and emit only coarse/throttled state, or raise \`configureBlac({ maxEmitsPerSecond })\`. (This warning fires once.)`,
324
- );
325
- }
326
- }
327
- applyState(newState, source) {
328
- if (this._disposed)
329
- throw new Error(`Cannot emit state from disposed container ${this.name}`);
330
- if (this._state === newState) return;
331
- if (this._equalityFn(this._state, newState)) return;
332
- if (process.env.NODE_ENV !== 'production') this._checkEmitRate();
333
- const previousState = this._state;
334
- this._state = newState;
335
- if (
336
- this._listeners.size === 0 &&
337
- !this._hasStateChangeHandlers &&
338
- this._hydrationStatus !== 'hydrating'
339
- ) {
340
- if (this._registry.hasStateChangedListeners)
341
- this._registry.notifyStateChanged(this, previousState, newState);
342
- return;
343
- }
344
- if (this._hydrationStatus === 'hydrating' && source !== 'hydration')
345
- this._changedWhileHydrating = true;
346
- if (this._hasStateChangeHandlers) {
347
- const handlers = this._systemEventHandlers.get('stateChanged');
348
- const payload = {
349
- state: newState,
350
- previousState,
351
- };
352
- for (const handler of handlers)
353
- try {
354
- handler(payload);
355
- } catch (error) {
356
- console.error(`[${this.name}] Error in system event handler:`, error);
357
- }
358
- }
359
- if (this._listeners.size > 0) {
360
- let count = 0;
361
- const size = this._listeners.size;
362
- for (const listener of this._listeners) {
363
- if (++count > size) break;
364
- try {
365
- listener(newState);
366
- } catch (error) {
367
- console.error(`[${this.name}] Error in listener:`, error);
368
- }
369
- }
370
- }
371
- if (this._registry.hasStateChangedListeners)
372
- this._registry.notifyStateChanged(this, previousState, newState);
373
- }
374
- setHydrationStatus(status, error) {
375
- const previousStatus = this._hydrationStatus;
376
- this._hydrationStatus = status;
377
- this._hydrationError = error;
378
- this.emitSystemEvent('hydrationChanged', {
379
- status,
380
- previousStatus,
381
- error,
382
- changedWhileHydrating: this._changedWhileHydrating,
383
- });
384
- }
385
- ensureHydrationPromise() {
386
- if (!this._hydrationPromise || this._hydrationPromiseSettled) {
387
- this._hydrationPromiseSettled = false;
388
- this._hydrationPromise = new Promise((resolve, reject) => {
389
- this._resolveHydrationPromise = () => {
390
- if (this._hydrationPromiseSettled) return;
391
- this._hydrationPromiseSettled = true;
392
- resolve();
393
- };
394
- this._rejectHydrationPromise = (error) => {
395
- if (this._hydrationPromiseSettled) return;
396
- this._hydrationPromiseSettled = true;
397
- reject(error);
398
- };
399
- });
400
- this._hydrationPromise.catch(() => {});
401
- }
402
- return this._hydrationPromise;
403
- }
404
- resolveHydration() {
405
- this._resolveHydrationPromise?.();
406
- }
407
- rejectHydration(error) {
408
- this.ensureHydrationPromise();
409
- this._rejectHydrationPromise?.(error);
410
- }
411
- emitSystemEvent(event, payload) {
412
- const handlers = this._systemEventHandlers.get(event);
413
- if (!handlers) return;
414
- for (const handler of handlers)
415
- try {
416
- handler(payload);
417
- } catch (error) {
418
- console.error(`[${this.name}] Error in system event handler:`, error);
419
- }
420
- }
421
- };
422
- //#endregion
423
- //#region src/core/Cubit.ts
424
- var Cubit = class extends StateContainer {
425
- constructor(initialState) {
426
- super(initialState);
427
- this.patch = (partial) => {
428
- if (typeof this.state !== 'object' || this.state === null)
429
- throw new Error('patch() is only available for object state types');
430
- for (const key of Object.keys(partial))
431
- if (!Object.is(this.state[key], partial[key])) {
432
- this[EMIT]({
433
- ...this.state,
434
- ...partial,
435
- });
436
- return;
437
- }
438
- };
439
- }
440
- emit(newState) {
441
- this[EMIT](newState);
442
- }
443
- };
444
- //#endregion
445
- export {
446
- REMOVE_DEPS_OWNER as a,
447
- EMIT as i,
448
- StateContainer as n,
449
- APPLY_DEPS as r,
450
- Cubit as t,
451
- };
452
-
453
- //# sourceMappingURL=Cubit-BC70gaiA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cubit-BC70gaiA.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');\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 */\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 */\nexport const REMOVE_DEPS_OWNER = Symbol('blac.removeDepsOwner');\n","import { 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\nexport abstract class StateContainer<\n S extends object = any,\n Args = void,\n Deps extends object = Record<string, never>,\n> {\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-owner declared slices. ownerId -> that consumer's deps slice.\n * Lazily allocated; null until the first owner applies a slice.\n */\n private _depsByOwner: Map<string, Partial<Deps>> | null = null;\n\n /**\n * Merged view of all owners' slices, recomputed whenever a slice is\n * applied or withdrawn. Read lazily via the `deps` getter.\n */\n private _deps: Partial<Deps> = {};\n\n /**\n * Injected non-serializable handles (refs, callbacks, controllers).\n * Read lazily — never assume a dep is present at init().\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 // Idempotent re-apply (e.g. StrictMode double-invoke): nothing changed.\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 // Store a defensive copy so later external mutation of the caller's\n // object can't desync our per-owner snapshot.\n owners.set(ownerId, { ...slice });\n this.reconcileDeps();\n }\n\n /**\n * @internal Withdraw an owner's entire deps slice (consumer unmounted).\n * Recomputes the merged view; keys only that owner provided go absent.\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 /**\n * Rebuild the merged `_deps` view from all owners' slices and fire\n * onDepsChanged(next, prev) if the merged view changed (shallow compare).\n * A key whose last owner was removed appears in `next` as undefined.\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 // Surface dropped keys explicitly as undefined so the merged view (and\n // the onDepsChanged diff) reflects a handle disappearing.\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 }\n\n /**\n * Override to react when an injected handle appears, changes, or disappears\n * (post-merge). Receives readonly snapshots; diff `next.x !== prev.x` to run\n * setup/teardown (canvas init, controller bind). A disappeared handle is\n * present in `next` as `undefined`.\n */\n protected onDepsChanged(_next: Readonly<Deps>, _prev: Readonly<Deps>): void {}\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 _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 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 /**\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. Because init runs before any subscriber exists, the\n * emit is safe and flash-free.\n *\n * Static initial state still comes from the subclass `state` field / `super(initialState)`.\n * For blocs where Args = void, init(undefined) is called — the default no-op ignores it.\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 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 // Release injected handles before flipping the disposed flag: reconcile\n // to an empty merged view so a final onDepsChanged(next, prev) fires with\n // all keys absent (undefined), letting renderers release handles. The\n // APPLY_DEPS/REMOVE_DEPS_OWNER guards below then reject any post-dispose\n // emits, so this is the last onDepsChanged for the instance.\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 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 /**\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 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 if (process.env.NODE_ENV !== 'production') {\n this._checkEmitRate();\n }\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<\n S extends object = any,\n Args = void,\n Deps extends object = Record<string, never>,\n> extends StateContainer<S, Args, Deps> {\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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"}