@blac/core 2.0.15 → 2.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/StateContainerRegistry-B1GYx9Xo.js +975 -0
- package/dist/StateContainerRegistry-B1GYx9Xo.js.map +1 -0
- package/dist/{StateContainerRegistry-DmmzYa7S.js → StateContainerRegistry-B_ViBLvJ.js} +78 -77
- package/dist/StateContainerRegistry-B_ViBLvJ.js.map +1 -0
- package/dist/StateContainerRegistry-DJQqLrli.cjs +1046 -0
- package/dist/StateContainerRegistry-DJQqLrli.cjs.map +1 -0
- package/dist/{StateContainerRegistry-B4yVMYbx.cjs → StateContainerRegistry-FWKzPfS-.cjs} +77 -88
- package/dist/StateContainerRegistry-FWKzPfS-.cjs.map +1 -0
- package/dist/acquire-CbMz7gWs.cjs +46 -0
- package/dist/acquire-CbMz7gWs.cjs.map +1 -0
- package/dist/acquire-DHEOEVcj.cjs +46 -0
- package/dist/acquire-DHEOEVcj.cjs.map +1 -0
- package/dist/acquire-Don7499S.js +35 -0
- package/dist/acquire-Don7499S.js.map +1 -0
- package/dist/acquire-G8aB3GAx.js +35 -0
- package/dist/acquire-G8aB3GAx.js.map +1 -0
- package/dist/{branded-BSeA_mZO.cjs → branded-BybA0_xw.cjs} +1 -1
- package/dist/{branded-BSeA_mZO.cjs.map → branded-BybA0_xw.cjs.map} +1 -1
- package/dist/{branded-DwtzSsg0.js → branded-DkbUzncc.js} +1 -1
- package/dist/{branded-DwtzSsg0.js.map → branded-DkbUzncc.js.map} +1 -1
- package/dist/{config-DoHx0Xsl.js → config-8pyOC5gv.js} +2 -2
- package/dist/{config-0ZD9i3wy.js.map → config-8pyOC5gv.js.map} +1 -1
- package/dist/{config-B_4xXpvK.cjs → config-DVMnlHLv.cjs} +2 -2
- package/dist/{config-B3NIwDQv.cjs.map → config-DVMnlHLv.cjs.map} +1 -1
- package/dist/{config-C8xqVHTf.js → config-Dk1FxfXj.js} +5 -5
- package/dist/{config-BKGHop0V.js.map → config-Dk1FxfXj.js.map} +1 -1
- package/dist/config-sCPKPYxZ.cjs +32 -0
- package/dist/{config-BPj08-8h.cjs.map → config-sCPKPYxZ.cjs.map} +1 -1
- package/dist/constants.d.cts +0 -5
- package/dist/constants.d.ts +0 -5
- package/dist/core/StateContainer.d.ts +51 -10
- package/dist/core/StateContainerRegistry.d.ts +27 -10
- package/dist/debug.cjs +3 -3
- package/dist/debug.js +3 -3
- package/dist/{Cubit-CWP8Ddzx.cjs → ensure-CLQEx0Nn.cjs} +24 -6
- package/dist/ensure-CLQEx0Nn.cjs.map +1 -0
- package/dist/{Cubit-VJuu2tt9.js → ensure-CPMiGvov.js} +19 -7
- package/dist/ensure-CPMiGvov.js.map +1 -0
- package/dist/ensure-DEXSmA-N.js +526 -0
- package/dist/ensure-DEXSmA-N.js.map +1 -0
- package/dist/ensure-Dx86f80B.cjs +567 -0
- package/dist/ensure-Dx86f80B.cjs.map +1 -0
- package/dist/ensure-DzqGej43.js +526 -0
- package/dist/ensure-DzqGej43.js.map +1 -0
- package/dist/ensure-fsQMjaQL.cjs +567 -0
- package/dist/ensure-fsQMjaQL.cjs.map +1 -0
- package/dist/index.cjs +34 -40
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +27 -33
- package/dist/index.js.map +1 -1
- package/dist/management-444tdCBG.js +38 -0
- package/dist/management-444tdCBG.js.map +1 -0
- package/dist/management-7jLjVHJd.js +38 -0
- package/dist/management-7jLjVHJd.js.map +1 -0
- package/dist/{management-DTzcC6aD.cjs → management-DAV9sN-k.cjs} +14 -8
- package/dist/management-DAV9sN-k.cjs.map +1 -0
- package/dist/management-GcnNJjnm.cjs +85 -0
- package/dist/management-GcnNJjnm.cjs.map +1 -0
- package/dist/plugins.cjs +1 -1
- package/dist/plugins.js +1 -1
- package/dist/registry/acquire.d.ts +19 -6
- package/dist/registry/borrow.d.ts +14 -3
- package/dist/registry/ensure.d.ts +7 -1
- package/dist/registry/index.d.ts +1 -0
- package/dist/registry/queries.d.ts +10 -4
- package/dist/registry/release.d.ts +14 -2
- package/dist/testing.cjs +17 -17
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +4 -4
- package/dist/testing.d.ts +4 -4
- package/dist/testing.js +14 -14
- package/dist/testing.js.map +1 -1
- package/dist/types/utilities.d.ts +1 -12
- package/dist/types.cjs +1 -1
- package/dist/types.js +1 -1
- package/dist/utils/static-props.d.ts +0 -9
- package/dist/watch/watch.d.ts +8 -5
- package/dist/{watch-BpwaUL8r.cjs → watch-B91opmva.cjs} +11 -9
- package/dist/watch-B91opmva.cjs.map +1 -0
- package/dist/{watch-DWCqXllW.js → watch-BmC-Tyqg.js} +11 -9
- package/dist/watch-BmC-Tyqg.js.map +1 -0
- package/dist/watch-CKWt788i.cjs +70 -0
- package/dist/watch-CKWt788i.cjs.map +1 -0
- package/dist/watch-DPVUwPUY.js +59 -0
- package/dist/watch-DPVUwPUY.js.map +1 -0
- package/dist/watch-entry.cjs +1 -1
- package/dist/watch-entry.js +1 -1
- package/package.json +22 -11
- package/dist/Cubit-9jal5zdZ.cjs +0 -390
- package/dist/Cubit-9jal5zdZ.cjs.map +0 -1
- package/dist/Cubit-BAUPiUF7.cjs +0 -380
- package/dist/Cubit-BAUPiUF7.cjs.map +0 -1
- package/dist/Cubit-BBKF3PIg.js +0 -287
- package/dist/Cubit-BBKF3PIg.js.map +0 -1
- package/dist/Cubit-BC70gaiA.js +0 -453
- package/dist/Cubit-BC70gaiA.js.map +0 -1
- package/dist/Cubit-BOgUZva7.js +0 -360
- package/dist/Cubit-BOgUZva7.js.map +0 -1
- package/dist/Cubit-BOxMvpfc.js +0 -291
- package/dist/Cubit-BOxMvpfc.js.map +0 -1
- package/dist/Cubit-BTznt8zg.js +0 -370
- package/dist/Cubit-BTznt8zg.js.map +0 -1
- package/dist/Cubit-BogJXkLm.js +0 -278
- package/dist/Cubit-BogJXkLm.js.map +0 -1
- package/dist/Cubit-C-8R_8db.cjs +0 -475
- package/dist/Cubit-C-8R_8db.cjs.map +0 -1
- package/dist/Cubit-C3Mw3EoO.cjs +0 -401
- package/dist/Cubit-C3Mw3EoO.cjs.map +0 -1
- package/dist/Cubit-CO8Fr72L.cjs +0 -447
- package/dist/Cubit-CO8Fr72L.cjs.map +0 -1
- package/dist/Cubit-COfHT1Bm.cjs +0 -321
- package/dist/Cubit-COfHT1Bm.cjs.map +0 -1
- package/dist/Cubit-CROWjjs9.js +0 -481
- package/dist/Cubit-CROWjjs9.js.map +0 -1
- package/dist/Cubit-CWP8Ddzx.cjs.map +0 -1
- package/dist/Cubit-CXxh9iol.js +0 -302
- package/dist/Cubit-CXxh9iol.js.map +0 -1
- package/dist/Cubit-CYOWfzQt.cjs +0 -317
- package/dist/Cubit-CYOWfzQt.cjs.map +0 -1
- package/dist/Cubit-CZaf_fp4.cjs +0 -388
- package/dist/Cubit-CZaf_fp4.cjs.map +0 -1
- package/dist/Cubit-C_dUEUdd.cjs +0 -380
- package/dist/Cubit-C_dUEUdd.cjs.map +0 -1
- package/dist/Cubit-C_rxRCTN.cjs +0 -523
- package/dist/Cubit-C_rxRCTN.cjs.map +0 -1
- package/dist/Cubit-CcKgMEBO.js +0 -299
- package/dist/Cubit-CcKgMEBO.js.map +0 -1
- package/dist/Cubit-CfT6Y1jl.js +0 -346
- package/dist/Cubit-CfT6Y1jl.js.map +0 -1
- package/dist/Cubit-CynJruuO.js +0 -369
- package/dist/Cubit-CynJruuO.js.map +0 -1
- package/dist/Cubit-D2vQ6nMb.js +0 -360
- package/dist/Cubit-D2vQ6nMb.js.map +0 -1
- package/dist/Cubit-D7jOZCoZ.js +0 -360
- package/dist/Cubit-D7jOZCoZ.js.map +0 -1
- package/dist/Cubit-D9j3IGPc.cjs +0 -523
- package/dist/Cubit-D9j3IGPc.cjs.map +0 -1
- package/dist/Cubit-DKEY9WYq.cjs +0 -296
- package/dist/Cubit-DKEY9WYq.cjs.map +0 -1
- package/dist/Cubit-DMV_0TCp.js +0 -481
- package/dist/Cubit-DMV_0TCp.js.map +0 -1
- package/dist/Cubit-DP5DXPUK.js +0 -360
- package/dist/Cubit-DP5DXPUK.js.map +0 -1
- package/dist/Cubit-DRFkzD2h.js +0 -426
- package/dist/Cubit-DRFkzD2h.js.map +0 -1
- package/dist/Cubit-DbnhTUaZ.cjs +0 -380
- package/dist/Cubit-DbnhTUaZ.cjs.map +0 -1
- package/dist/Cubit-DrqG3SP3.cjs +0 -370
- package/dist/Cubit-DrqG3SP3.cjs.map +0 -1
- package/dist/Cubit-DsDkCo42.cjs +0 -313
- package/dist/Cubit-DsDkCo42.cjs.map +0 -1
- package/dist/Cubit-DwRw1E9D.cjs +0 -309
- package/dist/Cubit-DwRw1E9D.cjs.map +0 -1
- package/dist/Cubit-Dw_kFBgc.js +0 -372
- package/dist/Cubit-Dw_kFBgc.js.map +0 -1
- package/dist/Cubit-KiXZCubP.cjs +0 -392
- package/dist/Cubit-KiXZCubP.cjs.map +0 -1
- package/dist/Cubit-Ksj7G4uR.js +0 -360
- package/dist/Cubit-Ksj7G4uR.js.map +0 -1
- package/dist/Cubit-MkjbpcPf.cjs +0 -380
- package/dist/Cubit-MkjbpcPf.cjs.map +0 -1
- package/dist/Cubit-NRhvdDQ6.js +0 -297
- package/dist/Cubit-NRhvdDQ6.js.map +0 -1
- package/dist/Cubit-PMTXxI_u.js +0 -368
- package/dist/Cubit-PMTXxI_u.js.map +0 -1
- package/dist/Cubit-VJuu2tt9.js.map +0 -1
- package/dist/Cubit-jz922NKf.cjs +0 -320
- package/dist/Cubit-jz922NKf.cjs.map +0 -1
- package/dist/Cubit-kU5_4jgC.cjs +0 -380
- package/dist/Cubit-kU5_4jgC.cjs.map +0 -1
- package/dist/StateContainerRegistry-B4yVMYbx.cjs.map +0 -1
- package/dist/StateContainerRegistry-BAcxouCu.js +0 -723
- package/dist/StateContainerRegistry-BAcxouCu.js.map +0 -1
- package/dist/StateContainerRegistry-BK57H92E.js +0 -747
- package/dist/StateContainerRegistry-BK57H92E.js.map +0 -1
- package/dist/StateContainerRegistry-BRBATSrx.cjs +0 -1030
- package/dist/StateContainerRegistry-BRBATSrx.cjs.map +0 -1
- package/dist/StateContainerRegistry-BgBIKcQF.js +0 -956
- package/dist/StateContainerRegistry-BgBIKcQF.js.map +0 -1
- package/dist/StateContainerRegistry-BglEhqdA.js +0 -709
- package/dist/StateContainerRegistry-BglEhqdA.js.map +0 -1
- package/dist/StateContainerRegistry-BhcnG0DF.js +0 -665
- package/dist/StateContainerRegistry-BhcnG0DF.js.map +0 -1
- package/dist/StateContainerRegistry-BpO5t-0i.js +0 -682
- package/dist/StateContainerRegistry-BpO5t-0i.js.map +0 -1
- package/dist/StateContainerRegistry-BqS-wpb_.js +0 -957
- package/dist/StateContainerRegistry-BqS-wpb_.js.map +0 -1
- package/dist/StateContainerRegistry-BrEGYPZT.cjs +0 -1029
- package/dist/StateContainerRegistry-BrEGYPZT.cjs.map +0 -1
- package/dist/StateContainerRegistry-BsMIpllP.cjs +0 -659
- package/dist/StateContainerRegistry-BsMIpllP.cjs.map +0 -1
- package/dist/StateContainerRegistry-Bxfne4A7.cjs +0 -908
- package/dist/StateContainerRegistry-Bxfne4A7.cjs.map +0 -1
- package/dist/StateContainerRegistry-C0E7vsgy.js +0 -758
- package/dist/StateContainerRegistry-C0E7vsgy.js.map +0 -1
- package/dist/StateContainerRegistry-C0I77Ndz.cjs +0 -920
- package/dist/StateContainerRegistry-C0I77Ndz.cjs.map +0 -1
- package/dist/StateContainerRegistry-CDH9mnQS.cjs +0 -715
- package/dist/StateContainerRegistry-CDH9mnQS.cjs.map +0 -1
- package/dist/StateContainerRegistry-CTOXUf75.cjs +0 -742
- package/dist/StateContainerRegistry-CTOXUf75.cjs.map +0 -1
- package/dist/StateContainerRegistry-CX2CBOmv.cjs +0 -795
- package/dist/StateContainerRegistry-CX2CBOmv.cjs.map +0 -1
- package/dist/StateContainerRegistry-CXnnf2-l.js +0 -867
- package/dist/StateContainerRegistry-CXnnf2-l.js.map +0 -1
- package/dist/StateContainerRegistry-CehuIpK_.cjs +0 -811
- package/dist/StateContainerRegistry-CehuIpK_.cjs.map +0 -1
- package/dist/StateContainerRegistry-Ci0ajc5g.js +0 -720
- package/dist/StateContainerRegistry-Ci0ajc5g.js.map +0 -1
- package/dist/StateContainerRegistry-Ck2-XmT_.js +0 -627
- package/dist/StateContainerRegistry-Ck2-XmT_.js.map +0 -1
- package/dist/StateContainerRegistry-D1lVJFGL.cjs +0 -753
- package/dist/StateContainerRegistry-D1lVJFGL.cjs.map +0 -1
- package/dist/StateContainerRegistry-DC4N73O6.js +0 -672
- package/dist/StateContainerRegistry-DC4N73O6.js.map +0 -1
- package/dist/StateContainerRegistry-DOkDGng-.js +0 -626
- package/dist/StateContainerRegistry-DOkDGng-.js.map +0 -1
- package/dist/StateContainerRegistry-DOuGI-l5.js +0 -685
- package/dist/StateContainerRegistry-DOuGI-l5.js.map +0 -1
- package/dist/StateContainerRegistry-DT66lr3I.cjs +0 -698
- package/dist/StateContainerRegistry-DT66lr3I.cjs.map +0 -1
- package/dist/StateContainerRegistry-DmmzYa7S.js.map +0 -1
- package/dist/StateContainerRegistry-Upsrlg9G.cjs +0 -756
- package/dist/StateContainerRegistry-Upsrlg9G.cjs.map +0 -1
- package/dist/StateContainerRegistry-WznfcA-Q.js +0 -855
- package/dist/StateContainerRegistry-WznfcA-Q.js.map +0 -1
- package/dist/StateContainerRegistry-Yph6UCA_.js +0 -678
- package/dist/StateContainerRegistry-Yph6UCA_.js.map +0 -1
- package/dist/StateContainerRegistry-mseeTqSA.cjs +0 -718
- package/dist/StateContainerRegistry-mseeTqSA.cjs.map +0 -1
- package/dist/StateContainerRegistry-pRNxHNFD.cjs +0 -705
- package/dist/StateContainerRegistry-pRNxHNFD.cjs.map +0 -1
- package/dist/StateContainerRegistry-vXMWtG7J.cjs +0 -660
- package/dist/StateContainerRegistry-vXMWtG7J.cjs.map +0 -1
- package/dist/StateContainerRegistry-v_prqMcI.cjs +0 -711
- package/dist/StateContainerRegistry-v_prqMcI.cjs.map +0 -1
- package/dist/branded-DCqi3De1.cjs +0 -18
- package/dist/branded-DCqi3De1.cjs.map +0 -1
- package/dist/branded-Max3xOTA.js +0 -13
- package/dist/branded-Max3xOTA.js.map +0 -1
- package/dist/config-0ZD9i3wy.js +0 -16
- package/dist/config-B3NIwDQv.cjs +0 -32
- package/dist/config-BKGHop0V.js +0 -16
- package/dist/config-BKoaAlmb.js +0 -16
- package/dist/config-BKoaAlmb.js.map +0 -1
- package/dist/config-BPj08-8h.cjs +0 -32
- package/dist/config-BR0Xy-Tn.cjs +0 -32
- package/dist/config-BR0Xy-Tn.cjs.map +0 -1
- package/dist/config-B_4xXpvK.cjs.map +0 -1
- package/dist/config-BflrQM4_.cjs +0 -32
- package/dist/config-BflrQM4_.cjs.map +0 -1
- package/dist/config-BzObBsk2.cjs +0 -32
- package/dist/config-BzObBsk2.cjs.map +0 -1
- package/dist/config-C0yumL1H.cjs +0 -32
- package/dist/config-C0yumL1H.cjs.map +0 -1
- package/dist/config-C8xqVHTf.js.map +0 -1
- package/dist/config-CCUhIYIF.js +0 -16
- package/dist/config-CCUhIYIF.js.map +0 -1
- package/dist/config-CGo__MAt.js +0 -16
- package/dist/config-CGo__MAt.js.map +0 -1
- package/dist/config-CQH9fTY-.cjs +0 -32
- package/dist/config-CQH9fTY-.cjs.map +0 -1
- package/dist/config-CR_Bz7RD.js +0 -16
- package/dist/config-CR_Bz7RD.js.map +0 -1
- package/dist/config-CTOa-yPN.cjs +0 -32
- package/dist/config-CTOa-yPN.cjs.map +0 -1
- package/dist/config-Cd7Q-B4g.js +0 -16
- package/dist/config-Cd7Q-B4g.js.map +0 -1
- package/dist/config-CmDEX-1o.js +0 -16
- package/dist/config-CmDEX-1o.js.map +0 -1
- package/dist/config-CoNMTnMA.cjs +0 -32
- package/dist/config-CoNMTnMA.cjs.map +0 -1
- package/dist/config-Cwj8-C1J.js +0 -16
- package/dist/config-Cwj8-C1J.js.map +0 -1
- package/dist/config-D3jisfdj.cjs +0 -32
- package/dist/config-D3jisfdj.cjs.map +0 -1
- package/dist/config-D4GifZQ4.js +0 -16
- package/dist/config-D4GifZQ4.js.map +0 -1
- package/dist/config-DDrSQGpQ.cjs +0 -32
- package/dist/config-DDrSQGpQ.cjs.map +0 -1
- package/dist/config-DEcslxan.cjs +0 -32
- package/dist/config-DEcslxan.cjs.map +0 -1
- package/dist/config-DLzmy2rZ.cjs +0 -32
- package/dist/config-DLzmy2rZ.cjs.map +0 -1
- package/dist/config-DMNZ2YLV.cjs +0 -32
- package/dist/config-DMNZ2YLV.cjs.map +0 -1
- package/dist/config-De9oQ6Ki.js +0 -16
- package/dist/config-De9oQ6Ki.js.map +0 -1
- package/dist/config-DoHx0Xsl.js.map +0 -1
- package/dist/config-DokTzpr8.cjs +0 -32
- package/dist/config-DokTzpr8.cjs.map +0 -1
- package/dist/config-DslYBm4Z.js +0 -16
- package/dist/config-DslYBm4Z.js.map +0 -1
- package/dist/config-H6FAqbW4.cjs +0 -32
- package/dist/config-H6FAqbW4.cjs.map +0 -1
- package/dist/config-XQua95Xz.js +0 -16
- package/dist/config-XQua95Xz.js.map +0 -1
- package/dist/config-Yp645dGK.js +0 -16
- package/dist/config-Yp645dGK.js.map +0 -1
- package/dist/config-ispAzOZV.js +0 -16
- package/dist/config-ispAzOZV.js.map +0 -1
- package/dist/ensure-9VEq5H0L.js +0 -9
- package/dist/ensure-9VEq5H0L.js.map +0 -1
- package/dist/ensure-BB6xHQAF.cjs +0 -14
- package/dist/ensure-BB6xHQAF.cjs.map +0 -1
- package/dist/ensure-BNDfTzqg.cjs +0 -14
- package/dist/ensure-BNDfTzqg.cjs.map +0 -1
- package/dist/ensure-BVCnjU7r.js +0 -365
- package/dist/ensure-BVCnjU7r.js.map +0 -1
- package/dist/ensure-BbzGXjep.cjs +0 -14
- package/dist/ensure-BbzGXjep.cjs.map +0 -1
- package/dist/ensure-BlIaQai6.js +0 -9
- package/dist/ensure-BlIaQai6.js.map +0 -1
- package/dist/ensure-Bm3oHxga.js +0 -9
- package/dist/ensure-Bm3oHxga.js.map +0 -1
- package/dist/ensure-C3eIRs6e.cjs +0 -14
- package/dist/ensure-C3eIRs6e.cjs.map +0 -1
- package/dist/ensure-C5I1xp2C.js +0 -9
- package/dist/ensure-C5I1xp2C.js.map +0 -1
- package/dist/ensure-CJZL7bcA.cjs +0 -391
- package/dist/ensure-CJZL7bcA.cjs.map +0 -1
- package/dist/ensure-CN6unBOe.cjs +0 -14
- package/dist/ensure-CN6unBOe.cjs.map +0 -1
- package/dist/ensure-CSHYjIeH.cjs +0 -14
- package/dist/ensure-CSHYjIeH.cjs.map +0 -1
- package/dist/ensure-CU-B1ywv.js +0 -9
- package/dist/ensure-CU-B1ywv.js.map +0 -1
- package/dist/ensure-CWKzeno7.js +0 -9
- package/dist/ensure-CWKzeno7.js.map +0 -1
- package/dist/ensure-CkENsuQ9.js +0 -9
- package/dist/ensure-CkENsuQ9.js.map +0 -1
- package/dist/ensure-Cm-4_LSh.cjs +0 -14
- package/dist/ensure-Cm-4_LSh.cjs.map +0 -1
- package/dist/ensure-Cqex5r1P.cjs +0 -14
- package/dist/ensure-Cqex5r1P.cjs.map +0 -1
- package/dist/ensure-Cv5AbNGZ.js +0 -9
- package/dist/ensure-Cv5AbNGZ.js.map +0 -1
- package/dist/ensure-D63lEMUK.cjs +0 -14
- package/dist/ensure-D63lEMUK.cjs.map +0 -1
- package/dist/ensure-DGEtPU9A.cjs +0 -14
- package/dist/ensure-DGEtPU9A.cjs.map +0 -1
- package/dist/ensure-DM3qb336.cjs +0 -14
- package/dist/ensure-DM3qb336.cjs.map +0 -1
- package/dist/ensure-DME-_T0j.cjs +0 -14
- package/dist/ensure-DME-_T0j.cjs.map +0 -1
- package/dist/ensure-DWd0GCYB.js +0 -9
- package/dist/ensure-DWd0GCYB.js.map +0 -1
- package/dist/ensure-DamKOP6q.cjs +0 -14
- package/dist/ensure-DamKOP6q.cjs.map +0 -1
- package/dist/ensure-Dcfptl-A.js +0 -9
- package/dist/ensure-Dcfptl-A.js.map +0 -1
- package/dist/ensure-Def-EBWG.js +0 -9
- package/dist/ensure-Def-EBWG.js.map +0 -1
- package/dist/ensure-DnHL5QiQ.cjs +0 -14
- package/dist/ensure-DnHL5QiQ.cjs.map +0 -1
- package/dist/ensure-Dr7I78Ku.cjs +0 -14
- package/dist/ensure-Dr7I78Ku.cjs.map +0 -1
- package/dist/ensure-SLVdGd5b.js +0 -9
- package/dist/ensure-SLVdGd5b.js.map +0 -1
- package/dist/ensure-Sb92MCXu.js +0 -9
- package/dist/ensure-Sb92MCXu.js.map +0 -1
- package/dist/ensure-gFlvevGm.cjs +0 -14
- package/dist/ensure-gFlvevGm.cjs.map +0 -1
- package/dist/ensure-l2-H7S5W.js +0 -9
- package/dist/ensure-l2-H7S5W.js.map +0 -1
- package/dist/ensure-mkL-3qh8.js +0 -9
- package/dist/ensure-mkL-3qh8.js.map +0 -1
- package/dist/ensure-n80crSlX.js +0 -9
- package/dist/ensure-n80crSlX.js.map +0 -1
- package/dist/ensure-nCxg7MCN.js +0 -9
- package/dist/ensure-nCxg7MCN.js.map +0 -1
- package/dist/ensure-vS71MV4q.cjs +0 -14
- package/dist/ensure-vS71MV4q.cjs.map +0 -1
- package/dist/management-6oQbmf0z.js +0 -41
- package/dist/management-6oQbmf0z.js.map +0 -1
- package/dist/management-B46QwA9Y.js +0 -41
- package/dist/management-B46QwA9Y.js.map +0 -1
- package/dist/management-B9yrRpeg.js +0 -41
- package/dist/management-B9yrRpeg.js.map +0 -1
- package/dist/management-BCKTEZ8Q.js +0 -41
- package/dist/management-BCKTEZ8Q.js.map +0 -1
- package/dist/management-BbMzdXbT.js +0 -41
- package/dist/management-BbMzdXbT.js.map +0 -1
- package/dist/management-Bg652agq.js +0 -41
- package/dist/management-Bg652agq.js.map +0 -1
- package/dist/management-BnedF5ZD.cjs +0 -79
- package/dist/management-BnedF5ZD.cjs.map +0 -1
- package/dist/management-BoUa99eB.cjs +0 -79
- package/dist/management-BoUa99eB.cjs.map +0 -1
- package/dist/management-C-wBdpho.js +0 -37
- package/dist/management-C-wBdpho.js.map +0 -1
- package/dist/management-C4SHcrJm.cjs +0 -79
- package/dist/management-C4SHcrJm.cjs.map +0 -1
- package/dist/management-CK-GL3wY.js +0 -41
- package/dist/management-CK-GL3wY.js.map +0 -1
- package/dist/management-CPhgY8OE.js +0 -41
- package/dist/management-CPhgY8OE.js.map +0 -1
- package/dist/management-CU_V3LIP.js +0 -41
- package/dist/management-CU_V3LIP.js.map +0 -1
- package/dist/management-CUwXDSi9.cjs +0 -79
- package/dist/management-CUwXDSi9.cjs.map +0 -1
- package/dist/management-CaqiyNzB.js +0 -41
- package/dist/management-CaqiyNzB.js.map +0 -1
- package/dist/management-Cin-JvYe.js +0 -41
- package/dist/management-Cin-JvYe.js.map +0 -1
- package/dist/management-ClaXym0F.cjs +0 -79
- package/dist/management-ClaXym0F.cjs.map +0 -1
- package/dist/management-DL0Uzsoz.js +0 -41
- package/dist/management-DL0Uzsoz.js.map +0 -1
- package/dist/management-DLdAQfqk.cjs +0 -79
- package/dist/management-DLdAQfqk.cjs.map +0 -1
- package/dist/management-DMZ8qpwr.cjs +0 -79
- package/dist/management-DMZ8qpwr.cjs.map +0 -1
- package/dist/management-DTzcC6aD.cjs.map +0 -1
- package/dist/management-DYLNyj9p.cjs +0 -79
- package/dist/management-DYLNyj9p.cjs.map +0 -1
- package/dist/management-Dag9u4t6.cjs +0 -79
- package/dist/management-Dag9u4t6.cjs.map +0 -1
- package/dist/management-DbMRdDBo.cjs +0 -79
- package/dist/management-DbMRdDBo.cjs.map +0 -1
- package/dist/management-DfnDAKmP.js +0 -41
- package/dist/management-DfnDAKmP.js.map +0 -1
- package/dist/management-DjBU1gtb.cjs +0 -79
- package/dist/management-DjBU1gtb.cjs.map +0 -1
- package/dist/management-DwCozsY8.js +0 -41
- package/dist/management-DwCozsY8.js.map +0 -1
- package/dist/management-H4m3ciJO.js +0 -32
- package/dist/management-H4m3ciJO.js.map +0 -1
- package/dist/management-Xo3A6Za3.cjs +0 -79
- package/dist/management-Xo3A6Za3.cjs.map +0 -1
- package/dist/management-ZU2YzOkr.js +0 -37
- package/dist/management-ZU2YzOkr.js.map +0 -1
- package/dist/management-baPDwA9n.cjs +0 -79
- package/dist/management-baPDwA9n.cjs.map +0 -1
- package/dist/management-jQGCvZNN.cjs +0 -70
- package/dist/management-jQGCvZNN.cjs.map +0 -1
- package/dist/management-ry_KteFK.cjs +0 -79
- package/dist/management-ry_KteFK.cjs.map +0 -1
- package/dist/management-xoZ7w3bI.cjs +0 -70
- package/dist/management-xoZ7w3bI.cjs.map +0 -1
- package/dist/resolve-dependencies-B2QggQAi.js +0 -729
- package/dist/resolve-dependencies-B2QggQAi.js.map +0 -1
- package/dist/resolve-dependencies-B6JDXvpr.js +0 -739
- package/dist/resolve-dependencies-B6JDXvpr.js.map +0 -1
- package/dist/resolve-dependencies-BA3u06uC.js +0 -731
- package/dist/resolve-dependencies-BA3u06uC.js.map +0 -1
- package/dist/resolve-dependencies-BAKAoD0U.js +0 -878
- package/dist/resolve-dependencies-BAKAoD0U.js.map +0 -1
- package/dist/resolve-dependencies-BFZQq60Y.cjs +0 -832
- package/dist/resolve-dependencies-BFZQq60Y.cjs.map +0 -1
- package/dist/resolve-dependencies-BGafS3Ww.js +0 -731
- package/dist/resolve-dependencies-BGafS3Ww.js.map +0 -1
- package/dist/resolve-dependencies-BHd34gS3.cjs +0 -832
- package/dist/resolve-dependencies-BHd34gS3.cjs.map +0 -1
- package/dist/resolve-dependencies-BNeayhbQ.cjs +0 -840
- package/dist/resolve-dependencies-BNeayhbQ.cjs.map +0 -1
- package/dist/resolve-dependencies-BT6TU2HF.cjs +0 -832
- package/dist/resolve-dependencies-BT6TU2HF.cjs.map +0 -1
- package/dist/resolve-dependencies-BWEMpuDy.js +0 -729
- package/dist/resolve-dependencies-BWEMpuDy.js.map +0 -1
- package/dist/resolve-dependencies-BiWkW2eS.js +0 -731
- package/dist/resolve-dependencies-BiWkW2eS.js.map +0 -1
- package/dist/resolve-dependencies-BjxCztYD.js +0 -739
- package/dist/resolve-dependencies-BjxCztYD.js.map +0 -1
- package/dist/resolve-dependencies-BlyBV0hB.cjs +0 -969
- package/dist/resolve-dependencies-BlyBV0hB.cjs.map +0 -1
- package/dist/resolve-dependencies-By26rT_i.js +0 -739
- package/dist/resolve-dependencies-By26rT_i.js.map +0 -1
- package/dist/resolve-dependencies-C9Kf7AzY.cjs +0 -832
- package/dist/resolve-dependencies-C9Kf7AzY.cjs.map +0 -1
- package/dist/resolve-dependencies-CTzV1txG.js +0 -731
- package/dist/resolve-dependencies-CTzV1txG.js.map +0 -1
- package/dist/resolve-dependencies-CWjuGHiF.cjs +0 -969
- package/dist/resolve-dependencies-CWjuGHiF.cjs.map +0 -1
- package/dist/resolve-dependencies-ClSsP0DJ.cjs +0 -830
- package/dist/resolve-dependencies-ClSsP0DJ.cjs.map +0 -1
- package/dist/resolve-dependencies-D0vTzZgs.js +0 -731
- package/dist/resolve-dependencies-D0vTzZgs.js.map +0 -1
- package/dist/resolve-dependencies-D2WnZMF-.cjs +0 -832
- package/dist/resolve-dependencies-D2WnZMF-.cjs.map +0 -1
- package/dist/resolve-dependencies-DCBLTeza.cjs +0 -969
- package/dist/resolve-dependencies-DCBLTeza.cjs.map +0 -1
- package/dist/resolve-dependencies-DMlqYJR2.js +0 -731
- package/dist/resolve-dependencies-DMlqYJR2.js.map +0 -1
- package/dist/resolve-dependencies-DP6U1EYB.cjs +0 -840
- package/dist/resolve-dependencies-DP6U1EYB.cjs.map +0 -1
- package/dist/resolve-dependencies-DSQNXvnV.cjs +0 -832
- package/dist/resolve-dependencies-DSQNXvnV.cjs.map +0 -1
- package/dist/resolve-dependencies-DV3HO_uH.js +0 -878
- package/dist/resolve-dependencies-DV3HO_uH.js.map +0 -1
- package/dist/resolve-dependencies-DXwMhP0Y.js +0 -878
- package/dist/resolve-dependencies-DXwMhP0Y.js.map +0 -1
- package/dist/resolve-dependencies-DbRWlt9u.js +0 -878
- package/dist/resolve-dependencies-DbRWlt9u.js.map +0 -1
- package/dist/resolve-dependencies-DcUUva2P.cjs +0 -832
- package/dist/resolve-dependencies-DcUUva2P.cjs.map +0 -1
- package/dist/resolve-dependencies-Dd8T6TLt.cjs +0 -832
- package/dist/resolve-dependencies-Dd8T6TLt.cjs.map +0 -1
- package/dist/resolve-dependencies-Dfdp_DZd.cjs +0 -840
- package/dist/resolve-dependencies-Dfdp_DZd.cjs.map +0 -1
- package/dist/resolve-dependencies-GJ8PNyNB.cjs +0 -969
- package/dist/resolve-dependencies-GJ8PNyNB.cjs.map +0 -1
- package/dist/resolve-dependencies-KSpTt4jy.cjs +0 -830
- package/dist/resolve-dependencies-KSpTt4jy.cjs.map +0 -1
- package/dist/resolve-dependencies-Nvjp4CwS.js +0 -731
- package/dist/resolve-dependencies-Nvjp4CwS.js.map +0 -1
- package/dist/resolve-dependencies-f-QUqYiL.js +0 -731
- package/dist/resolve-dependencies-f-QUqYiL.js.map +0 -1
- package/dist/tracked-B77j2g9M.js +0 -197
- package/dist/tracked-B77j2g9M.js.map +0 -1
- package/dist/tracked-BDVi2LKM.cjs +0 -227
- package/dist/tracked-BDVi2LKM.cjs.map +0 -1
- package/dist/tracked-BFdJCzL0.cjs +0 -242
- package/dist/tracked-BFdJCzL0.cjs.map +0 -1
- package/dist/tracked-BH-gX4T1.cjs +0 -227
- package/dist/tracked-BH-gX4T1.cjs.map +0 -1
- package/dist/tracked-BTHok3Dl.cjs +0 -227
- package/dist/tracked-BTHok3Dl.cjs.map +0 -1
- package/dist/tracked-BTbFkFeM.js +0 -212
- package/dist/tracked-BTbFkFeM.js.map +0 -1
- package/dist/tracked-BU_OBWqM.cjs +0 -242
- package/dist/tracked-BU_OBWqM.cjs.map +0 -1
- package/dist/tracked-BfctH2es.cjs +0 -242
- package/dist/tracked-BfctH2es.cjs.map +0 -1
- package/dist/tracked-BhQtzUhZ.js +0 -212
- package/dist/tracked-BhQtzUhZ.js.map +0 -1
- package/dist/tracked-BnqrYXiO.js +0 -212
- package/dist/tracked-BnqrYXiO.js.map +0 -1
- package/dist/tracked-BtgFOGup.js +0 -212
- package/dist/tracked-BtgFOGup.js.map +0 -1
- package/dist/tracked-C3nIS4J7.cjs +0 -242
- package/dist/tracked-C3nIS4J7.cjs.map +0 -1
- package/dist/tracked-C52awNV9.js +0 -197
- package/dist/tracked-C52awNV9.js.map +0 -1
- package/dist/tracked-CGzduF2m.js +0 -212
- package/dist/tracked-CGzduF2m.js.map +0 -1
- package/dist/tracked-CK_-ixtX.cjs +0 -227
- package/dist/tracked-CK_-ixtX.cjs.map +0 -1
- package/dist/tracked-CLlvURln.js +0 -212
- package/dist/tracked-CLlvURln.js.map +0 -1
- package/dist/tracked-CgHWmuGC.cjs +0 -242
- package/dist/tracked-CgHWmuGC.cjs.map +0 -1
- package/dist/tracked-CoAlC8fs.js +0 -197
- package/dist/tracked-CoAlC8fs.js.map +0 -1
- package/dist/tracked-D3Xjm1H1.cjs +0 -242
- package/dist/tracked-D3Xjm1H1.cjs.map +0 -1
- package/dist/tracked-DB6yMV5F.js +0 -212
- package/dist/tracked-DB6yMV5F.js.map +0 -1
- package/dist/tracked-DBn-bs_G.js +0 -197
- package/dist/tracked-DBn-bs_G.js.map +0 -1
- package/dist/tracked-DCfBaYjL.cjs +0 -227
- package/dist/tracked-DCfBaYjL.cjs.map +0 -1
- package/dist/tracked-DKduNLgI.js +0 -197
- package/dist/tracked-DKduNLgI.js.map +0 -1
- package/dist/tracked-DMBTDF0P.js +0 -197
- package/dist/tracked-DMBTDF0P.js.map +0 -1
- package/dist/tracked-DN3h3Rp1.js +0 -197
- package/dist/tracked-DN3h3Rp1.js.map +0 -1
- package/dist/tracked-DOGh1Q5Z.cjs +0 -242
- package/dist/tracked-DOGh1Q5Z.cjs.map +0 -1
- package/dist/tracked-DUkp4zve.cjs +0 -227
- package/dist/tracked-DUkp4zve.cjs.map +0 -1
- package/dist/tracked-D_ou7mYG.js +0 -212
- package/dist/tracked-D_ou7mYG.js.map +0 -1
- package/dist/tracked-Dcu6EATB.js +0 -197
- package/dist/tracked-Dcu6EATB.js.map +0 -1
- package/dist/tracked-GvAJQVAI.cjs +0 -271
- package/dist/tracked-GvAJQVAI.cjs.map +0 -1
- package/dist/tracked-O2lv-kJV.cjs +0 -242
- package/dist/tracked-O2lv-kJV.cjs.map +0 -1
- package/dist/tracked-WF6aXuAo.js +0 -223
- package/dist/tracked-WF6aXuAo.js.map +0 -1
- package/dist/tracked-d_sQWU3c.cjs +0 -227
- package/dist/tracked-d_sQWU3c.cjs.map +0 -1
- package/dist/tracked-n9TMK-30.cjs +0 -227
- package/dist/tracked-n9TMK-30.cjs.map +0 -1
- package/dist/tracked-njU-_pVa.cjs +0 -242
- package/dist/tracked-njU-_pVa.cjs.map +0 -1
- package/dist/tracked-zAgmKIlC.js +0 -212
- package/dist/tracked-zAgmKIlC.js.map +0 -1
- package/dist/tracking/dependency-manager.d.ts +0 -41
- package/dist/tracking/index.d.ts +0 -28
- package/dist/tracking/iteration-perf.bench.d.ts +0 -1
- package/dist/tracking/path-utils.d.ts +0 -69
- package/dist/tracking/resolve-dependencies.d.ts +0 -9
- package/dist/tracking/tracked.d.ts +0 -73
- package/dist/tracking/tracking-proxy.d.ts +0 -230
- package/dist/tracking.cjs +0 -21
- package/dist/tracking.d.cts +0 -9
- package/dist/tracking.d.ts +0 -9
- package/dist/tracking.js +0 -32
- package/dist/watch-BpwaUL8r.cjs.map +0 -1
- package/dist/watch-DWCqXllW.js.map +0 -1
package/dist/Cubit-DMV_0TCp.js
DELETED
|
@@ -1,481 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
i as getClassEquality,
|
|
3
|
-
l as BLAC_DEFAULTS,
|
|
4
|
-
} from './StateContainerRegistry-CXnnf2-l.js';
|
|
5
|
-
import { t as getRegistry } from './config-CGo__MAt.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
|
-
/**
|
|
81
|
-
* @internal Apply one owner's (consumer's) deps slice to an instance.
|
|
82
|
-
* Called by framework adapters (e.g. @blac/react useBloc) — not public API.
|
|
83
|
-
*/
|
|
84
|
-
const APPLY_DEPS = Symbol('blac.applyDeps');
|
|
85
|
-
/**
|
|
86
|
-
* @internal Withdraw one owner's entire deps slice (consumer unmounted).
|
|
87
|
-
* Called by framework adapters — not public API.
|
|
88
|
-
*/
|
|
89
|
-
const REMOVE_DEPS_OWNER = Symbol('blac.removeDepsOwner');
|
|
90
|
-
//#endregion
|
|
91
|
-
//#region src/core/StateContainer.ts
|
|
92
|
-
const EMPTY_DEPS = /* @__PURE__ */ new Map();
|
|
93
|
-
/**
|
|
94
|
-
* Shallow per-key `Object.is` comparison of two plain records. Keys are
|
|
95
|
-
* considered: a key present in one but not the other (regardless of value)
|
|
96
|
-
* makes the records unequal. Used to detect real deps changes.
|
|
97
|
-
*/
|
|
98
|
-
function shallowEqualRecord(a, b) {
|
|
99
|
-
if (a === b) return true;
|
|
100
|
-
const aKeys = Object.keys(a);
|
|
101
|
-
if (aKeys.length !== Object.keys(b).length) return false;
|
|
102
|
-
for (const key of aKeys) {
|
|
103
|
-
if (!(key in b)) return false;
|
|
104
|
-
if (!Object.is(a[key], b[key])) return false;
|
|
105
|
-
}
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
var StateContainer = class {
|
|
109
|
-
static {
|
|
110
|
-
this.__excludeFromDevTools = false;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Injected non-serializable handles (refs, callbacks, controllers).
|
|
114
|
-
* Read lazily — never assume a dep is present at init().
|
|
115
|
-
*/
|
|
116
|
-
get deps() {
|
|
117
|
-
return this._deps;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* @internal Apply one owner's (consumer's) deps slice. Shallow-merges the
|
|
121
|
-
* slice, reconciles keys the owner dropped since its last apply (other
|
|
122
|
-
* owners' keys untouched), dev-warns on cross-owner key collisions, then
|
|
123
|
-
* recomputes the merged view and fires onDepsChanged if it changed.
|
|
124
|
-
*
|
|
125
|
-
* Idempotent: re-applying an identical slice for the same owner is a no-op.
|
|
126
|
-
*/
|
|
127
|
-
[APPLY_DEPS](ownerId, slice) {
|
|
128
|
-
if (this._disposed) return;
|
|
129
|
-
const owners = (this._depsByOwner ??= /* @__PURE__ */ new Map());
|
|
130
|
-
const prevSlice = owners.get(ownerId);
|
|
131
|
-
if (prevSlice && shallowEqualRecord(prevSlice, slice)) return;
|
|
132
|
-
if (process.env.NODE_ENV !== 'production')
|
|
133
|
-
for (const key of Object.keys(slice))
|
|
134
|
-
for (const [otherOwner, otherSlice] of owners) {
|
|
135
|
-
if (otherOwner === ownerId) continue;
|
|
136
|
-
if (key in otherSlice && otherSlice[key] !== slice[key])
|
|
137
|
-
console.warn(
|
|
138
|
-
`[${this.name}] multiple owners writing dep \`${String(key)}\`; last write wins`,
|
|
139
|
-
);
|
|
140
|
-
}
|
|
141
|
-
owners.set(ownerId, { ...slice });
|
|
142
|
-
this.reconcileDeps();
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* @internal Withdraw an owner's entire deps slice (consumer unmounted).
|
|
146
|
-
* Recomputes the merged view; keys only that owner provided go absent.
|
|
147
|
-
*/
|
|
148
|
-
[REMOVE_DEPS_OWNER](ownerId) {
|
|
149
|
-
if (this._disposed) return;
|
|
150
|
-
if (!this._depsByOwner?.delete(ownerId)) return;
|
|
151
|
-
this.reconcileDeps();
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Rebuild the merged `_deps` view from all owners' slices and fire
|
|
155
|
-
* onDepsChanged(next, prev) if the merged view changed (shallow compare).
|
|
156
|
-
* A key whose last owner was removed appears in `next` as undefined.
|
|
157
|
-
*/
|
|
158
|
-
reconcileDeps() {
|
|
159
|
-
const prev = this._deps;
|
|
160
|
-
const next = {};
|
|
161
|
-
if (this._depsByOwner)
|
|
162
|
-
for (const slice of this._depsByOwner.values())
|
|
163
|
-
Object.assign(next, slice);
|
|
164
|
-
for (const key of Object.keys(prev)) if (!(key in next)) next[key] = void 0;
|
|
165
|
-
if (shallowEqualRecord(prev, next)) return;
|
|
166
|
-
this._deps = next;
|
|
167
|
-
this.onDepsChanged(next, prev);
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Override to react when an injected handle appears, changes, or disappears
|
|
171
|
-
* (post-merge). Receives readonly snapshots; diff `next.x !== prev.x` to run
|
|
172
|
-
* setup/teardown (canvas init, controller bind). A disappeared handle is
|
|
173
|
-
* present in `next` as `undefined`.
|
|
174
|
-
*/
|
|
175
|
-
onDepsChanged(_next, _prev) {}
|
|
176
|
-
get dependencies() {
|
|
177
|
-
return this._dependencies ?? EMPTY_DEPS;
|
|
178
|
-
}
|
|
179
|
-
depend(Type, instanceKey) {
|
|
180
|
-
if (!this._dependencies) this._dependencies = /* @__PURE__ */ new Map();
|
|
181
|
-
this._dependencies.set(
|
|
182
|
-
Type,
|
|
183
|
-
instanceKey ?? BLAC_DEFAULTS.DEFAULT_INSTANCE_KEY,
|
|
184
|
-
);
|
|
185
|
-
return () => this._registry.ensure(Type, instanceKey);
|
|
186
|
-
}
|
|
187
|
-
constructor(initialState) {
|
|
188
|
-
this._depsByOwner = null;
|
|
189
|
-
this._deps = {};
|
|
190
|
-
this._listeners = /* @__PURE__ */ new Set();
|
|
191
|
-
this._disposed = false;
|
|
192
|
-
this._hydrationStatus = 'idle';
|
|
193
|
-
this._changedWhileHydrating = false;
|
|
194
|
-
this._hydrationPromise = null;
|
|
195
|
-
this._hydrationPromiseSettled = false;
|
|
196
|
-
this._config = {};
|
|
197
|
-
this._initCalled = false;
|
|
198
|
-
this._systemEventHandlers = /* @__PURE__ */ new Map();
|
|
199
|
-
this._dependencies = null;
|
|
200
|
-
this._hasStateChangeHandlers = false;
|
|
201
|
-
this._registry = getRegistry();
|
|
202
|
-
this._equalityFn = getBlacConfig().equality;
|
|
203
|
-
this.name = this.constructor.name;
|
|
204
|
-
this.debug = false;
|
|
205
|
-
this.instanceId = generateSimpleId(this.constructor.name, 'main');
|
|
206
|
-
this.createdAt = Date.now();
|
|
207
|
-
this.onSystemEvent = (event, handler) => {
|
|
208
|
-
let handlers = this._systemEventHandlers.get(event);
|
|
209
|
-
if (!handlers) {
|
|
210
|
-
handlers = /* @__PURE__ */ new Set();
|
|
211
|
-
this._systemEventHandlers.set(event, handlers);
|
|
212
|
-
}
|
|
213
|
-
handlers.add(handler);
|
|
214
|
-
if (event === 'stateChanged') this._hasStateChangeHandlers = true;
|
|
215
|
-
return () => {
|
|
216
|
-
handlers?.delete(handler);
|
|
217
|
-
if (event === 'stateChanged' && handlers?.size === 0)
|
|
218
|
-
this._hasStateChangeHandlers = false;
|
|
219
|
-
};
|
|
220
|
-
};
|
|
221
|
-
this._state = initialState;
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Called once after construction with the args passed at acquire time, before the first
|
|
225
|
-
* state snapshot is read by any consumer. Override to seed args-derived state (via
|
|
226
|
-
* this.emit(...)) or kick off loads. Because init runs before any subscriber exists, the
|
|
227
|
-
* emit is safe and flash-free.
|
|
228
|
-
*
|
|
229
|
-
* Static initial state still comes from the subclass `state` field / `super(initialState)`.
|
|
230
|
-
* For blocs where Args = void, init(undefined) is called — the default no-op ignores it.
|
|
231
|
-
*/
|
|
232
|
-
init(_args) {}
|
|
233
|
-
initConfig(config) {
|
|
234
|
-
this._config = { ...config };
|
|
235
|
-
this.name = this._config.name || this.constructor.name;
|
|
236
|
-
this.debug = this._config.debug ?? false;
|
|
237
|
-
this.instanceId = generateSimpleId(
|
|
238
|
-
this.constructor.name,
|
|
239
|
-
this._config.instanceId,
|
|
240
|
-
);
|
|
241
|
-
this._equalityFn =
|
|
242
|
-
getClassEquality(this.constructor) ?? getBlacConfig().equality;
|
|
243
|
-
this._registry.emit('created', this);
|
|
244
|
-
if (!this._initCalled) {
|
|
245
|
-
this._initCalled = true;
|
|
246
|
-
this.init(this._config.args);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
get state() {
|
|
250
|
-
return this._state;
|
|
251
|
-
}
|
|
252
|
-
get isDisposed() {
|
|
253
|
-
return this._disposed;
|
|
254
|
-
}
|
|
255
|
-
get hydrationStatus() {
|
|
256
|
-
return this._hydrationStatus;
|
|
257
|
-
}
|
|
258
|
-
get hydrationError() {
|
|
259
|
-
return this._hydrationError;
|
|
260
|
-
}
|
|
261
|
-
get isHydrated() {
|
|
262
|
-
return this._hydrationStatus === 'hydrated';
|
|
263
|
-
}
|
|
264
|
-
get changedWhileHydrating() {
|
|
265
|
-
return this._changedWhileHydrating;
|
|
266
|
-
}
|
|
267
|
-
subscribe(listener) {
|
|
268
|
-
if (this._disposed)
|
|
269
|
-
throw new Error(`Cannot subscribe to disposed container ${this.name}`);
|
|
270
|
-
this._listeners.add(listener);
|
|
271
|
-
return () => this._listeners.delete(listener);
|
|
272
|
-
}
|
|
273
|
-
dispose() {
|
|
274
|
-
if (this._disposed) return;
|
|
275
|
-
if (this.debug) console.log(`[${this.name}] Disposing...`);
|
|
276
|
-
if (this._depsByOwner) {
|
|
277
|
-
this._depsByOwner.clear();
|
|
278
|
-
this.reconcileDeps();
|
|
279
|
-
}
|
|
280
|
-
this._disposed = true;
|
|
281
|
-
if (this._hydrationStatus === 'hydrating')
|
|
282
|
-
this.failHydration(
|
|
283
|
-
/* @__PURE__ */ new Error(
|
|
284
|
-
`Hydration cancelled because ${this.name} was disposed`,
|
|
285
|
-
),
|
|
286
|
-
);
|
|
287
|
-
this.emitSystemEvent('dispose', void 0);
|
|
288
|
-
this._listeners.clear();
|
|
289
|
-
this._systemEventHandlers.clear();
|
|
290
|
-
this._registry.emit('disposed', this);
|
|
291
|
-
if (this.debug) console.log(`[${this.name}] Disposed successfully`);
|
|
292
|
-
}
|
|
293
|
-
[EMIT](newState) {
|
|
294
|
-
this.applyState(newState, 'default');
|
|
295
|
-
}
|
|
296
|
-
emit(newState) {
|
|
297
|
-
this[EMIT](newState);
|
|
298
|
-
}
|
|
299
|
-
beginHydration() {
|
|
300
|
-
if (this._disposed)
|
|
301
|
-
throw new Error(
|
|
302
|
-
`Cannot begin hydration for disposed container ${this.name}`,
|
|
303
|
-
);
|
|
304
|
-
this._changedWhileHydrating = false;
|
|
305
|
-
this._hydrationError = void 0;
|
|
306
|
-
this._hydrationPromise = null;
|
|
307
|
-
this._resolveHydrationPromise = void 0;
|
|
308
|
-
this._rejectHydrationPromise = void 0;
|
|
309
|
-
this._hydrationPromiseSettled = false;
|
|
310
|
-
this.ensureHydrationPromise();
|
|
311
|
-
this.setHydrationStatus('hydrating');
|
|
312
|
-
}
|
|
313
|
-
applyHydratedState(newState) {
|
|
314
|
-
if (this._disposed) return false;
|
|
315
|
-
if (this._hydrationStatus !== 'hydrating' || this._changedWhileHydrating)
|
|
316
|
-
return false;
|
|
317
|
-
this.applyState(newState, 'hydration');
|
|
318
|
-
return true;
|
|
319
|
-
}
|
|
320
|
-
finishHydration() {
|
|
321
|
-
if (this._hydrationStatus !== 'hydrating') {
|
|
322
|
-
if (this._hydrationStatus === 'hydrated') return;
|
|
323
|
-
if (this._hydrationStatus === 'error') this.ensureHydrationPromise();
|
|
324
|
-
}
|
|
325
|
-
this.setHydrationStatus('hydrated');
|
|
326
|
-
this.resolveHydration();
|
|
327
|
-
}
|
|
328
|
-
failHydration(error) {
|
|
329
|
-
const err =
|
|
330
|
-
error instanceof Error
|
|
331
|
-
? error
|
|
332
|
-
: /* @__PURE__ */ new Error(`Hydration failed: ${String(error)}`);
|
|
333
|
-
this._hydrationError = err;
|
|
334
|
-
this.setHydrationStatus('error', err);
|
|
335
|
-
this.rejectHydration(err);
|
|
336
|
-
}
|
|
337
|
-
waitForHydration() {
|
|
338
|
-
if (
|
|
339
|
-
this._hydrationStatus === 'idle' ||
|
|
340
|
-
this._hydrationStatus === 'hydrated'
|
|
341
|
-
)
|
|
342
|
-
return Promise.resolve();
|
|
343
|
-
if (this._hydrationStatus === 'error')
|
|
344
|
-
return Promise.reject(
|
|
345
|
-
this._hydrationError ??
|
|
346
|
-
/* @__PURE__ */ new Error(
|
|
347
|
-
`Hydration failed for container ${this.name}`,
|
|
348
|
-
),
|
|
349
|
-
);
|
|
350
|
-
return this.ensureHydrationPromise();
|
|
351
|
-
}
|
|
352
|
-
applyState(newState, source) {
|
|
353
|
-
if (this._disposed)
|
|
354
|
-
throw new Error(`Cannot emit state from disposed container ${this.name}`);
|
|
355
|
-
if (this._state === newState) return;
|
|
356
|
-
if (this._equalityFn(this._state, newState)) return;
|
|
357
|
-
const previousState = this._state;
|
|
358
|
-
this._state = newState;
|
|
359
|
-
if (
|
|
360
|
-
this._listeners.size === 0 &&
|
|
361
|
-
!this._hasStateChangeHandlers &&
|
|
362
|
-
this._hydrationStatus !== 'hydrating'
|
|
363
|
-
) {
|
|
364
|
-
if (this._registry.hasStateChangedListeners)
|
|
365
|
-
this._registry.notifyStateChanged(this, previousState, newState);
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
if (this._hydrationStatus === 'hydrating' && source !== 'hydration')
|
|
369
|
-
this._changedWhileHydrating = true;
|
|
370
|
-
if (this._hasStateChangeHandlers) {
|
|
371
|
-
const handlers = this._systemEventHandlers.get('stateChanged');
|
|
372
|
-
const payload = {
|
|
373
|
-
state: newState,
|
|
374
|
-
previousState,
|
|
375
|
-
};
|
|
376
|
-
for (const handler of handlers)
|
|
377
|
-
try {
|
|
378
|
-
handler(payload);
|
|
379
|
-
} catch (error) {
|
|
380
|
-
console.error(`[${this.name}] Error in system event handler:`, error);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
if (this._listeners.size > 0) {
|
|
384
|
-
let count = 0;
|
|
385
|
-
const size = this._listeners.size;
|
|
386
|
-
for (const listener of this._listeners) {
|
|
387
|
-
if (++count > size) break;
|
|
388
|
-
try {
|
|
389
|
-
listener(newState);
|
|
390
|
-
} catch (error) {
|
|
391
|
-
console.error(`[${this.name}] Error in listener:`, error);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
if (this._registry.hasStateChangedListeners)
|
|
396
|
-
this._registry.notifyStateChanged(this, previousState, newState);
|
|
397
|
-
}
|
|
398
|
-
setHydrationStatus(status, error) {
|
|
399
|
-
const previousStatus = this._hydrationStatus;
|
|
400
|
-
this._hydrationStatus = status;
|
|
401
|
-
this._hydrationError = error;
|
|
402
|
-
this.emitSystemEvent('hydrationChanged', {
|
|
403
|
-
status,
|
|
404
|
-
previousStatus,
|
|
405
|
-
error,
|
|
406
|
-
changedWhileHydrating: this._changedWhileHydrating,
|
|
407
|
-
});
|
|
408
|
-
}
|
|
409
|
-
ensureHydrationPromise() {
|
|
410
|
-
if (!this._hydrationPromise || this._hydrationPromiseSettled) {
|
|
411
|
-
this._hydrationPromiseSettled = false;
|
|
412
|
-
this._hydrationPromise = new Promise((resolve, reject) => {
|
|
413
|
-
this._resolveHydrationPromise = () => {
|
|
414
|
-
if (this._hydrationPromiseSettled) return;
|
|
415
|
-
this._hydrationPromiseSettled = true;
|
|
416
|
-
resolve();
|
|
417
|
-
};
|
|
418
|
-
this._rejectHydrationPromise = (error) => {
|
|
419
|
-
if (this._hydrationPromiseSettled) return;
|
|
420
|
-
this._hydrationPromiseSettled = true;
|
|
421
|
-
reject(error);
|
|
422
|
-
};
|
|
423
|
-
});
|
|
424
|
-
this._hydrationPromise.catch(() => {});
|
|
425
|
-
}
|
|
426
|
-
return this._hydrationPromise;
|
|
427
|
-
}
|
|
428
|
-
resolveHydration() {
|
|
429
|
-
this._resolveHydrationPromise?.();
|
|
430
|
-
}
|
|
431
|
-
rejectHydration(error) {
|
|
432
|
-
this.ensureHydrationPromise();
|
|
433
|
-
this._rejectHydrationPromise?.(error);
|
|
434
|
-
}
|
|
435
|
-
emitSystemEvent(event, payload) {
|
|
436
|
-
const handlers = this._systemEventHandlers.get(event);
|
|
437
|
-
if (!handlers) return;
|
|
438
|
-
for (const handler of handlers)
|
|
439
|
-
try {
|
|
440
|
-
handler(payload);
|
|
441
|
-
} catch (error) {
|
|
442
|
-
console.error(`[${this.name}] Error in system event handler:`, error);
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
};
|
|
446
|
-
//#endregion
|
|
447
|
-
//#region src/core/Cubit.ts
|
|
448
|
-
var Cubit = class extends StateContainer {
|
|
449
|
-
constructor(initialState) {
|
|
450
|
-
super(initialState);
|
|
451
|
-
this.patch = (partial) => {
|
|
452
|
-
if (typeof this.state !== 'object' || this.state === null)
|
|
453
|
-
throw new Error('patch() is only available for object state types');
|
|
454
|
-
for (const key of Object.keys(partial))
|
|
455
|
-
if (!Object.is(this.state[key], partial[key])) {
|
|
456
|
-
this[EMIT]({
|
|
457
|
-
...this.state,
|
|
458
|
-
...partial,
|
|
459
|
-
});
|
|
460
|
-
return;
|
|
461
|
-
}
|
|
462
|
-
};
|
|
463
|
-
}
|
|
464
|
-
emit(newState) {
|
|
465
|
-
this[EMIT](newState);
|
|
466
|
-
}
|
|
467
|
-
};
|
|
468
|
-
//#endregion
|
|
469
|
-
export {
|
|
470
|
-
REMOVE_DEPS_OWNER as a,
|
|
471
|
-
resetBlacConfig as c,
|
|
472
|
-
EMIT as i,
|
|
473
|
-
shallowEqualState as l,
|
|
474
|
-
StateContainer as n,
|
|
475
|
-
configureBlac as o,
|
|
476
|
-
APPLY_DEPS as r,
|
|
477
|
-
getBlacConfig as s,
|
|
478
|
-
Cubit as t,
|
|
479
|
-
};
|
|
480
|
-
|
|
481
|
-
//# sourceMappingURL=Cubit-DMV_0TCp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Cubit-DMV_0TCp.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\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 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 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<\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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"}
|