@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
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import type { StateContainerConstructor, InstanceReadonlyState } from '../types/utilities';
|
|
2
|
-
export declare function hasInstance<T extends StateContainerConstructor>(BlocClass: T,
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { ExtractArgs, StateContainerConstructor, InstanceReadonlyState } from '../types/utilities';
|
|
2
|
+
export declare function hasInstance<T extends StateContainerConstructor>(BlocClass: T, opts?: {
|
|
3
|
+
args?: ExtractArgs<T>;
|
|
4
|
+
}): boolean;
|
|
5
|
+
export declare function getRefCount<T extends StateContainerConstructor>(BlocClass: T, opts?: {
|
|
6
|
+
args?: ExtractArgs<T>;
|
|
7
|
+
}): number;
|
|
8
|
+
export declare function getRefIds<T extends StateContainerConstructor>(BlocClass: T, opts?: {
|
|
9
|
+
args?: ExtractArgs<T>;
|
|
10
|
+
}): string[];
|
|
5
11
|
export declare function getAll<T extends StateContainerConstructor>(BlocClass: T): InstanceReadonlyState<T>[];
|
|
6
12
|
export declare function forEach<T extends StateContainerConstructor>(BlocClass: T, callback: (instance: InstanceReadonlyState<T>) => void): void;
|
|
@@ -1,2 +1,14 @@
|
|
|
1
|
-
import type { StateContainerConstructor } from '../types/utilities';
|
|
2
|
-
|
|
1
|
+
import type { ExtractArgs, StateContainerConstructor } from '../types/utilities';
|
|
2
|
+
/**
|
|
3
|
+
* Release a reference to an instance. Instance identity is derived purely from
|
|
4
|
+
* `args` (must match the `args` it was acquired with).
|
|
5
|
+
*
|
|
6
|
+
* @param opts.args - Construction/identity args; derives the instance key
|
|
7
|
+
* @param opts.refId - The specific ref to drop; drops one arbitrary ref if omitted
|
|
8
|
+
* @param opts.forceDispose - Force immediate disposal regardless of refs
|
|
9
|
+
*/
|
|
10
|
+
export declare function release<T extends StateContainerConstructor>(BlocClass: T, opts?: {
|
|
11
|
+
args?: ExtractArgs<T>;
|
|
12
|
+
refId?: string;
|
|
13
|
+
forceDispose?: boolean;
|
|
14
|
+
}): void;
|
package/dist/testing.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_StateContainerRegistry = require("./StateContainerRegistry-
|
|
3
|
-
const
|
|
4
|
-
const require_config = require("./config-
|
|
5
|
-
const
|
|
2
|
+
const require_StateContainerRegistry = require("./StateContainerRegistry-DJQqLrli.cjs");
|
|
3
|
+
const require_ensure = require("./ensure-Dx86f80B.cjs");
|
|
4
|
+
const require_config = require("./config-sCPKPYxZ.cjs");
|
|
5
|
+
const require_acquire = require("./acquire-CbMz7gWs.cjs");
|
|
6
6
|
//#region src/testing.ts
|
|
7
7
|
/** Synthetic owner id used by test helpers for pre-wired deps. */
|
|
8
8
|
const TESTING_DEPS_OWNER = "testing-deps";
|
|
@@ -39,14 +39,14 @@ function blacTestSetup() {
|
|
|
39
39
|
require_config.setRegistry(savedRegistry);
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const key =
|
|
45
|
-
|
|
42
|
+
function registerOverride(BlocClass, instance, args) {
|
|
43
|
+
const registry = require_config.getRegistry();
|
|
44
|
+
const key = require_acquire.resolveInstanceKey(BlocClass, args);
|
|
45
|
+
registry.insertInstance(BlocClass, key, instance, new Map([["testing-override", 1]]));
|
|
46
46
|
}
|
|
47
|
-
function overrideEnsure(BlocClass, instance, fn,
|
|
47
|
+
function overrideEnsure(BlocClass, instance, fn, args) {
|
|
48
48
|
return withTestRegistry(() => {
|
|
49
|
-
registerOverride(BlocClass, instance,
|
|
49
|
+
registerOverride(BlocClass, instance, args);
|
|
50
50
|
return fn();
|
|
51
51
|
});
|
|
52
52
|
}
|
|
@@ -54,7 +54,7 @@ function createCubitStub(BlocClass, options) {
|
|
|
54
54
|
const instance = new BlocClass();
|
|
55
55
|
if (options?.args != null) instance.initConfig({ args: options.args });
|
|
56
56
|
if (options?.state != null) {
|
|
57
|
-
if (instance instanceof
|
|
57
|
+
if (instance instanceof require_ensure.Cubit) {
|
|
58
58
|
const currentState = instance.state;
|
|
59
59
|
if (typeof currentState === "object" && currentState !== null && typeof options.state === "object" && options.state !== null) instance.patch(options.state);
|
|
60
60
|
else instance.emit(options.state);
|
|
@@ -63,20 +63,20 @@ function createCubitStub(BlocClass, options) {
|
|
|
63
63
|
if (options?.methods) {
|
|
64
64
|
for (const [key, impl] of Object.entries(options.methods)) if (typeof impl === "function") instance[key] = impl;
|
|
65
65
|
}
|
|
66
|
-
if (options?.deps != null) instance[
|
|
66
|
+
if (options?.deps != null) instance[require_ensure.APPLY_DEPS](TESTING_DEPS_OWNER, options.deps);
|
|
67
67
|
return instance;
|
|
68
68
|
}
|
|
69
|
-
function withBlocState(BlocClass, state,
|
|
70
|
-
const instance = require_ensure.ensure(BlocClass,
|
|
71
|
-
if (instance instanceof
|
|
69
|
+
function withBlocState(BlocClass, state, args) {
|
|
70
|
+
const instance = require_ensure.ensure(BlocClass, { args });
|
|
71
|
+
if (instance instanceof require_ensure.Cubit) {
|
|
72
72
|
const currentState = instance.state;
|
|
73
73
|
if (typeof currentState === "object" && currentState !== null && typeof state === "object" && state !== null) instance.patch(state);
|
|
74
74
|
else instance.emit(state);
|
|
75
75
|
}
|
|
76
76
|
return instance;
|
|
77
77
|
}
|
|
78
|
-
function withBlocMethod(BlocClass, methodName, impl,
|
|
79
|
-
const instance = require_ensure.ensure(BlocClass,
|
|
78
|
+
function withBlocMethod(BlocClass, methodName, impl, args) {
|
|
79
|
+
const instance = require_ensure.ensure(BlocClass, { args });
|
|
80
80
|
instance[methodName] = impl;
|
|
81
81
|
return instance;
|
|
82
82
|
}
|
package/dist/testing.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.cjs","names":["StateContainerRegistry","getRegistry","Cubit","APPLY_DEPS","ensure"],"sources":["../src/testing.ts"],"sourcesContent":["import { Cubit } from './core/Cubit';\nimport { StateContainerRegistry } from './core/StateContainerRegistry';\nimport { APPLY_DEPS } from './core/symbols';\nimport { ensure, getRegistry, setRegistry } from './registry';\nimport type {\n ExtractArgs,\n ExtractDeps,\n ExtractState,\n StateContainerConstructor,\n} from './types/utilities';\n\n/** Synthetic owner id used by test helpers for pre-wired deps. */\nconst TESTING_DEPS_OWNER = 'testing-deps';\n\ndeclare const beforeEach: (fn: () => void) => void;\ndeclare const afterEach: (fn: () => void) => void;\n\n// --- createTestRegistry + withTestRegistry ---\n\nexport function createTestRegistry(): StateContainerRegistry {\n return new StateContainerRegistry();\n}\n\nexport function withTestRegistry<T>(\n fn: (registry: StateContainerRegistry) => T,\n): T {\n const previous = getRegistry();\n const testRegistry = createTestRegistry();\n setRegistry(testRegistry);\n try {\n const result = fn(testRegistry);\n if (result instanceof Promise) {\n return result.then(\n (value) => {\n setRegistry(previous);\n return value;\n },\n (error) => {\n setRegistry(previous);\n throw error;\n },\n ) as T;\n }\n setRegistry(previous);\n return result;\n } catch (error) {\n setRegistry(previous);\n throw error;\n }\n}\n\n// --- blacTestSetup ---\n\nexport function blacTestSetup(): void {\n let savedRegistry: StateContainerRegistry;\n beforeEach(() => {\n savedRegistry = getRegistry();\n setRegistry(new StateContainerRegistry());\n });\n afterEach(() => {\n setRegistry(savedRegistry);\n });\n}\n\n// --- registerOverride + overrideEnsure ---\n\
|
|
1
|
+
{"version":3,"file":"testing.cjs","names":["StateContainerRegistry","getRegistry","resolveInstanceKey","Cubit","APPLY_DEPS","ensure"],"sources":["../src/testing.ts"],"sourcesContent":["import { Cubit } from './core/Cubit';\nimport { StateContainerRegistry } from './core/StateContainerRegistry';\nimport { APPLY_DEPS } from './core/symbols';\nimport { ensure, getRegistry, setRegistry } from './registry';\nimport { resolveInstanceKey } from './registry/acquire';\nimport type {\n ExtractArgs,\n ExtractDeps,\n ExtractState,\n StateContainerConstructor,\n} from './types/utilities';\n\n/** Synthetic owner id used by test helpers for pre-wired deps. */\nconst TESTING_DEPS_OWNER = 'testing-deps';\n\ndeclare const beforeEach: (fn: () => void) => void;\ndeclare const afterEach: (fn: () => void) => void;\n\n// --- createTestRegistry + withTestRegistry ---\n\nexport function createTestRegistry(): StateContainerRegistry {\n return new StateContainerRegistry();\n}\n\nexport function withTestRegistry<T>(\n fn: (registry: StateContainerRegistry) => T,\n): T {\n const previous = getRegistry();\n const testRegistry = createTestRegistry();\n setRegistry(testRegistry);\n try {\n const result = fn(testRegistry);\n if (result instanceof Promise) {\n return result.then(\n (value) => {\n setRegistry(previous);\n return value;\n },\n (error) => {\n setRegistry(previous);\n throw error;\n },\n ) as T;\n }\n setRegistry(previous);\n return result;\n } catch (error) {\n setRegistry(previous);\n throw error;\n }\n}\n\n// --- blacTestSetup ---\n\nexport function blacTestSetup(): void {\n let savedRegistry: StateContainerRegistry;\n beforeEach(() => {\n savedRegistry = getRegistry();\n setRegistry(new StateContainerRegistry());\n });\n afterEach(() => {\n setRegistry(savedRegistry);\n });\n}\n\n// --- registerOverride + overrideEnsure ---\n\nexport function registerOverride<T extends StateContainerConstructor>(\n BlocClass: T,\n instance: InstanceType<T>,\n args?: ExtractArgs<T>,\n): void {\n const registry = getRegistry();\n const key = resolveInstanceKey(BlocClass, args);\n registry.insertInstance(\n BlocClass,\n key,\n instance,\n new Map([['testing-override', 1]]),\n );\n}\n\nexport function overrideEnsure<T extends StateContainerConstructor, R>(\n BlocClass: T,\n instance: InstanceType<T>,\n fn: () => R,\n args?: ExtractArgs<T>,\n): R {\n return withTestRegistry(() => {\n registerOverride(BlocClass, instance, args);\n return fn();\n });\n}\n\n// --- createCubitStub ---\n\ntype MethodKeys<T> = {\n [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;\n}[keyof T];\n\nexport interface CubitStubOptions<T extends StateContainerConstructor> {\n state?: ExtractState<T> extends Record<string, any>\n ? Partial<ExtractState<T>>\n : ExtractState<T>;\n methods?: Partial<\n Record<MethodKeys<InstanceType<T>>, (...args: any[]) => any>\n >;\n /**\n * Args to pass to init(). If the bloc's Args type is not void, supplying\n * args here causes initConfig({ args }) to be called so init() runs.\n */\n args?: ExtractArgs<T> extends void ? never : ExtractArgs<T>;\n /**\n * Deps slice to pre-wire via the core [APPLY_DEPS] path (synthetic owner\n * \"testing-deps\"), so onDepsChanged fires during tests.\n */\n deps?: Partial<ExtractDeps<T>>;\n}\n\nexport function createCubitStub<T extends StateContainerConstructor>(\n BlocClass: T,\n options?: CubitStubOptions<T>,\n): InstanceType<T> {\n const instance = new BlocClass() as InstanceType<T>;\n\n // Run init() if args are supplied — goes through the same initConfig path\n // that the registry uses, so lifecycle hooks fire correctly.\n if (options?.args != null) {\n instance.initConfig({ args: options.args });\n }\n\n if (options?.state != null) {\n if (instance instanceof Cubit) {\n const currentState = instance.state;\n if (\n typeof currentState === 'object' &&\n currentState !== null &&\n typeof options.state === 'object' &&\n options.state !== null\n ) {\n instance.patch(options.state as any);\n } else {\n instance.emit(options.state as any);\n }\n }\n }\n if (options?.methods) {\n for (const [key, impl] of Object.entries(options.methods)) {\n if (typeof impl === 'function') {\n (instance as any)[key] = impl;\n }\n }\n }\n\n // Pre-wire deps via the core merge path so onDepsChanged fires in tests.\n if (options?.deps != null) {\n (instance as any)[APPLY_DEPS](TESTING_DEPS_OWNER, options.deps);\n }\n\n return instance;\n}\n\n// --- withBlocState ---\n\nexport function withBlocState<T extends StateContainerConstructor>(\n BlocClass: T,\n state: ExtractState<T> extends Record<string, any>\n ? Partial<ExtractState<T>>\n : ExtractState<T>,\n args?: ExtractArgs<T>,\n): InstanceType<T> {\n const instance = ensure(BlocClass, { args });\n if (instance instanceof Cubit) {\n const currentState = instance.state;\n if (\n typeof currentState === 'object' &&\n currentState !== null &&\n typeof state === 'object' &&\n state !== null\n ) {\n instance.patch(state as any);\n } else {\n instance.emit(state as any);\n }\n }\n return instance;\n}\n\n// --- withBlocMethod ---\n\nexport function withBlocMethod<T extends StateContainerConstructor>(\n BlocClass: T,\n methodName: keyof InstanceType<T>,\n impl: (...args: any[]) => any,\n args?: ExtractArgs<T>,\n): InstanceType<T> {\n const instance = ensure(BlocClass, { args });\n (instance as any)[methodName] = impl;\n return instance;\n}\n\n// --- flushBlocUpdates ---\n\n/**\n * Drain pending microtasks so any channel-flushed effects (subscribe()\n * listeners, `onSystemEvent('stateChanged')` handlers, plugin hooks) run\n * before the next assertion.\n *\n * The default `MicrotaskScheduler` coalesces emits within a tick; tests\n * that emit and then assert on listener side-effects need `await flush()`\n * (or its alias `flushBlocUpdates()`) between the two.\n */\nexport async function flush(): Promise<void> {\n // queueMicrotask wins the race against the channel's own queued flush —\n // we resolve after the channel has drained its current pending flush.\n await Promise.resolve();\n await Promise.resolve();\n}\n\n/** @deprecated Alias for `flush()`. */\nexport async function flushBlocUpdates(): Promise<void> {\n await flush();\n}\n"],"mappings":";;;;;;;AAaA,MAAM,qBAAqB;AAO3B,SAAgB,qBAA6C;CAC3D,OAAO,IAAIA,+BAAAA,uBAAuB;AACpC;AAEA,SAAgB,iBACd,IACG;CACH,MAAM,WAAWC,eAAAA,YAAY;CAC7B,MAAM,eAAe,mBAAmB;CACxC,eAAA,YAAY,YAAY;CACxB,IAAI;EACF,MAAM,SAAS,GAAG,YAAY;EAC9B,IAAI,kBAAkB,SACpB,OAAO,OAAO,MACX,UAAU;GACT,eAAA,YAAY,QAAQ;GACpB,OAAO;EACT,IACC,UAAU;GACT,eAAA,YAAY,QAAQ;GACpB,MAAM;EACR,CACF;EAEF,eAAA,YAAY,QAAQ;EACpB,OAAO;CACT,SAAS,OAAO;EACd,eAAA,YAAY,QAAQ;EACpB,MAAM;CACR;AACF;AAIA,SAAgB,gBAAsB;CACpC,IAAI;CACJ,iBAAiB;EACf,gBAAgBA,eAAAA,YAAY;EAC5B,eAAA,YAAY,IAAID,+BAAAA,uBAAuB,CAAC;CAC1C,CAAC;CACD,gBAAgB;EACd,eAAA,YAAY,aAAa;CAC3B,CAAC;AACH;AAIA,SAAgB,iBACd,WACA,UACA,MACM;CACN,MAAM,WAAWC,eAAAA,YAAY;CAC7B,MAAM,MAAMC,gBAAAA,mBAAmB,WAAW,IAAI;CAC9C,SAAS,eACP,WACA,KACA,UACA,IAAI,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CACnC;AACF;AAEA,SAAgB,eACd,WACA,UACA,IACA,MACG;CACH,OAAO,uBAAuB;EAC5B,iBAAiB,WAAW,UAAU,IAAI;EAC1C,OAAO,GAAG;CACZ,CAAC;AACH;AA2BA,SAAgB,gBACd,WACA,SACiB;CACjB,MAAM,WAAW,IAAI,UAAU;CAI/B,IAAI,SAAS,QAAQ,MACnB,SAAS,WAAW,EAAE,MAAM,QAAQ,KAAK,CAAC;CAG5C,IAAI,SAAS,SAAS;MAChB,oBAAoBC,eAAAA,OAAO;GAC7B,MAAM,eAAe,SAAS;GAC9B,IACE,OAAO,iBAAiB,YACxB,iBAAiB,QACjB,OAAO,QAAQ,UAAU,YACzB,QAAQ,UAAU,MAElB,SAAS,MAAM,QAAQ,KAAY;QAEnC,SAAS,KAAK,QAAQ,KAAY;EAEtC;;CAEF,IAAI,SAAS;OACN,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,QAAQ,OAAO,GACtD,IAAI,OAAO,SAAS,YAClB,SAAkB,OAAO;CAAA;CAM/B,IAAI,SAAS,QAAQ,MACnB,SAAkBC,eAAAA,YAAY,oBAAoB,QAAQ,IAAI;CAGhE,OAAO;AACT;AAIA,SAAgB,cACd,WACA,OAGA,MACiB;CACjB,MAAM,WAAWC,eAAAA,OAAO,WAAW,EAAE,KAAK,CAAC;CAC3C,IAAI,oBAAoBF,eAAAA,OAAO;EAC7B,MAAM,eAAe,SAAS;EAC9B,IACE,OAAO,iBAAiB,YACxB,iBAAiB,QACjB,OAAO,UAAU,YACjB,UAAU,MAEV,SAAS,MAAM,KAAY;OAE3B,SAAS,KAAK,KAAY;CAE9B;CACA,OAAO;AACT;AAIA,SAAgB,eACd,WACA,YACA,MACA,MACiB;CACjB,MAAM,WAAWE,eAAAA,OAAO,WAAW,EAAE,KAAK,CAAC;CAC3C,SAAkB,cAAc;CAChC,OAAO;AACT;;;;;;;;;;AAaA,eAAsB,QAAuB;CAG3C,MAAM,QAAQ,QAAQ;CACtB,MAAM,QAAQ,QAAQ;AACxB;;AAGA,eAAsB,mBAAkC;CACtD,MAAM,MAAM;AACd"}
|
package/dist/testing.d.cts
CHANGED
|
@@ -3,8 +3,8 @@ import type { ExtractArgs, ExtractDeps, ExtractState, StateContainerConstructor
|
|
|
3
3
|
export declare function createTestRegistry(): StateContainerRegistry;
|
|
4
4
|
export declare function withTestRegistry<T>(fn: (registry: StateContainerRegistry) => T): T;
|
|
5
5
|
export declare function blacTestSetup(): void;
|
|
6
|
-
export declare function registerOverride<T extends StateContainerConstructor>(BlocClass: T, instance: InstanceType<T>,
|
|
7
|
-
export declare function overrideEnsure<T extends StateContainerConstructor, R>(BlocClass: T, instance: InstanceType<T>, fn: () => R,
|
|
6
|
+
export declare function registerOverride<T extends StateContainerConstructor>(BlocClass: T, instance: InstanceType<T>, args?: ExtractArgs<T>): void;
|
|
7
|
+
export declare function overrideEnsure<T extends StateContainerConstructor, R>(BlocClass: T, instance: InstanceType<T>, fn: () => R, args?: ExtractArgs<T>): R;
|
|
8
8
|
type MethodKeys<T> = {
|
|
9
9
|
[K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
|
|
10
10
|
}[keyof T];
|
|
@@ -23,8 +23,8 @@ export interface CubitStubOptions<T extends StateContainerConstructor> {
|
|
|
23
23
|
deps?: Partial<ExtractDeps<T>>;
|
|
24
24
|
}
|
|
25
25
|
export declare function createCubitStub<T extends StateContainerConstructor>(BlocClass: T, options?: CubitStubOptions<T>): InstanceType<T>;
|
|
26
|
-
export declare function withBlocState<T extends StateContainerConstructor>(BlocClass: T, state: ExtractState<T> extends Record<string, any> ? Partial<ExtractState<T>> : ExtractState<T>,
|
|
27
|
-
export declare function withBlocMethod<T extends StateContainerConstructor>(BlocClass: T, methodName: keyof InstanceType<T>, impl: (...args: any[]) => any,
|
|
26
|
+
export declare function withBlocState<T extends StateContainerConstructor>(BlocClass: T, state: ExtractState<T> extends Record<string, any> ? Partial<ExtractState<T>> : ExtractState<T>, args?: ExtractArgs<T>): InstanceType<T>;
|
|
27
|
+
export declare function withBlocMethod<T extends StateContainerConstructor>(BlocClass: T, methodName: keyof InstanceType<T>, impl: (...args: any[]) => any, args?: ExtractArgs<T>): InstanceType<T>;
|
|
28
28
|
/**
|
|
29
29
|
* Drain pending microtasks so any channel-flushed effects (subscribe()
|
|
30
30
|
* listeners, `onSystemEvent('stateChanged')` handlers, plugin hooks) run
|
package/dist/testing.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import type { ExtractArgs, ExtractDeps, ExtractState, StateContainerConstructor
|
|
|
3
3
|
export declare function createTestRegistry(): StateContainerRegistry;
|
|
4
4
|
export declare function withTestRegistry<T>(fn: (registry: StateContainerRegistry) => T): T;
|
|
5
5
|
export declare function blacTestSetup(): void;
|
|
6
|
-
export declare function registerOverride<T extends StateContainerConstructor>(BlocClass: T, instance: InstanceType<T>,
|
|
7
|
-
export declare function overrideEnsure<T extends StateContainerConstructor, R>(BlocClass: T, instance: InstanceType<T>, fn: () => R,
|
|
6
|
+
export declare function registerOverride<T extends StateContainerConstructor>(BlocClass: T, instance: InstanceType<T>, args?: ExtractArgs<T>): void;
|
|
7
|
+
export declare function overrideEnsure<T extends StateContainerConstructor, R>(BlocClass: T, instance: InstanceType<T>, fn: () => R, args?: ExtractArgs<T>): R;
|
|
8
8
|
type MethodKeys<T> = {
|
|
9
9
|
[K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
|
|
10
10
|
}[keyof T];
|
|
@@ -23,8 +23,8 @@ export interface CubitStubOptions<T extends StateContainerConstructor> {
|
|
|
23
23
|
deps?: Partial<ExtractDeps<T>>;
|
|
24
24
|
}
|
|
25
25
|
export declare function createCubitStub<T extends StateContainerConstructor>(BlocClass: T, options?: CubitStubOptions<T>): InstanceType<T>;
|
|
26
|
-
export declare function withBlocState<T extends StateContainerConstructor>(BlocClass: T, state: ExtractState<T> extends Record<string, any> ? Partial<ExtractState<T>> : ExtractState<T>,
|
|
27
|
-
export declare function withBlocMethod<T extends StateContainerConstructor>(BlocClass: T, methodName: keyof InstanceType<T>, impl: (...args: any[]) => any,
|
|
26
|
+
export declare function withBlocState<T extends StateContainerConstructor>(BlocClass: T, state: ExtractState<T> extends Record<string, any> ? Partial<ExtractState<T>> : ExtractState<T>, args?: ExtractArgs<T>): InstanceType<T>;
|
|
27
|
+
export declare function withBlocMethod<T extends StateContainerConstructor>(BlocClass: T, methodName: keyof InstanceType<T>, impl: (...args: any[]) => any, args?: ExtractArgs<T>): InstanceType<T>;
|
|
28
28
|
/**
|
|
29
29
|
* Drain pending microtasks so any channel-flushed effects (subscribe()
|
|
30
30
|
* listeners, `onSystemEvent('stateChanged')` handlers, plugin hooks) run
|
package/dist/testing.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as StateContainerRegistry } from "./StateContainerRegistry-
|
|
2
|
-
import {
|
|
3
|
-
import { r as setRegistry, t as getRegistry } from "./config-
|
|
4
|
-
import {
|
|
1
|
+
import { t as StateContainerRegistry } from "./StateContainerRegistry-B1GYx9Xo.js";
|
|
2
|
+
import { a as APPLY_DEPS, n as Cubit, t as ensure } from "./ensure-DzqGej43.js";
|
|
3
|
+
import { r as setRegistry, t as getRegistry } from "./config-Dk1FxfXj.js";
|
|
4
|
+
import { n as resolveInstanceKey } from "./acquire-G8aB3GAx.js";
|
|
5
5
|
//#region src/testing.ts
|
|
6
6
|
/** Synthetic owner id used by test helpers for pre-wired deps. */
|
|
7
7
|
const TESTING_DEPS_OWNER = "testing-deps";
|
|
@@ -38,14 +38,14 @@ function blacTestSetup() {
|
|
|
38
38
|
setRegistry(savedRegistry);
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const key =
|
|
44
|
-
|
|
41
|
+
function registerOverride(BlocClass, instance, args) {
|
|
42
|
+
const registry = getRegistry();
|
|
43
|
+
const key = resolveInstanceKey(BlocClass, args);
|
|
44
|
+
registry.insertInstance(BlocClass, key, instance, new Map([["testing-override", 1]]));
|
|
45
45
|
}
|
|
46
|
-
function overrideEnsure(BlocClass, instance, fn,
|
|
46
|
+
function overrideEnsure(BlocClass, instance, fn, args) {
|
|
47
47
|
return withTestRegistry(() => {
|
|
48
|
-
registerOverride(BlocClass, instance,
|
|
48
|
+
registerOverride(BlocClass, instance, args);
|
|
49
49
|
return fn();
|
|
50
50
|
});
|
|
51
51
|
}
|
|
@@ -65,8 +65,8 @@ function createCubitStub(BlocClass, options) {
|
|
|
65
65
|
if (options?.deps != null) instance[APPLY_DEPS](TESTING_DEPS_OWNER, options.deps);
|
|
66
66
|
return instance;
|
|
67
67
|
}
|
|
68
|
-
function withBlocState(BlocClass, state,
|
|
69
|
-
const instance = ensure(BlocClass,
|
|
68
|
+
function withBlocState(BlocClass, state, args) {
|
|
69
|
+
const instance = ensure(BlocClass, { args });
|
|
70
70
|
if (instance instanceof Cubit) {
|
|
71
71
|
const currentState = instance.state;
|
|
72
72
|
if (typeof currentState === "object" && currentState !== null && typeof state === "object" && state !== null) instance.patch(state);
|
|
@@ -74,8 +74,8 @@ function withBlocState(BlocClass, state, instanceKey) {
|
|
|
74
74
|
}
|
|
75
75
|
return instance;
|
|
76
76
|
}
|
|
77
|
-
function withBlocMethod(BlocClass, methodName, impl,
|
|
78
|
-
const instance = ensure(BlocClass,
|
|
77
|
+
function withBlocMethod(BlocClass, methodName, impl, args) {
|
|
78
|
+
const instance = ensure(BlocClass, { args });
|
|
79
79
|
instance[methodName] = impl;
|
|
80
80
|
return instance;
|
|
81
81
|
}
|
package/dist/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","names":[],"sources":["../src/testing.ts"],"sourcesContent":["import { Cubit } from './core/Cubit';\nimport { StateContainerRegistry } from './core/StateContainerRegistry';\nimport { APPLY_DEPS } from './core/symbols';\nimport { ensure, getRegistry, setRegistry } from './registry';\nimport type {\n ExtractArgs,\n ExtractDeps,\n ExtractState,\n StateContainerConstructor,\n} from './types/utilities';\n\n/** Synthetic owner id used by test helpers for pre-wired deps. */\nconst TESTING_DEPS_OWNER = 'testing-deps';\n\ndeclare const beforeEach: (fn: () => void) => void;\ndeclare const afterEach: (fn: () => void) => void;\n\n// --- createTestRegistry + withTestRegistry ---\n\nexport function createTestRegistry(): StateContainerRegistry {\n return new StateContainerRegistry();\n}\n\nexport function withTestRegistry<T>(\n fn: (registry: StateContainerRegistry) => T,\n): T {\n const previous = getRegistry();\n const testRegistry = createTestRegistry();\n setRegistry(testRegistry);\n try {\n const result = fn(testRegistry);\n if (result instanceof Promise) {\n return result.then(\n (value) => {\n setRegistry(previous);\n return value;\n },\n (error) => {\n setRegistry(previous);\n throw error;\n },\n ) as T;\n }\n setRegistry(previous);\n return result;\n } catch (error) {\n setRegistry(previous);\n throw error;\n }\n}\n\n// --- blacTestSetup ---\n\nexport function blacTestSetup(): void {\n let savedRegistry: StateContainerRegistry;\n beforeEach(() => {\n savedRegistry = getRegistry();\n setRegistry(new StateContainerRegistry());\n });\n afterEach(() => {\n setRegistry(savedRegistry);\n });\n}\n\n// --- registerOverride + overrideEnsure ---\n\
|
|
1
|
+
{"version":3,"file":"testing.js","names":[],"sources":["../src/testing.ts"],"sourcesContent":["import { Cubit } from './core/Cubit';\nimport { StateContainerRegistry } from './core/StateContainerRegistry';\nimport { APPLY_DEPS } from './core/symbols';\nimport { ensure, getRegistry, setRegistry } from './registry';\nimport { resolveInstanceKey } from './registry/acquire';\nimport type {\n ExtractArgs,\n ExtractDeps,\n ExtractState,\n StateContainerConstructor,\n} from './types/utilities';\n\n/** Synthetic owner id used by test helpers for pre-wired deps. */\nconst TESTING_DEPS_OWNER = 'testing-deps';\n\ndeclare const beforeEach: (fn: () => void) => void;\ndeclare const afterEach: (fn: () => void) => void;\n\n// --- createTestRegistry + withTestRegistry ---\n\nexport function createTestRegistry(): StateContainerRegistry {\n return new StateContainerRegistry();\n}\n\nexport function withTestRegistry<T>(\n fn: (registry: StateContainerRegistry) => T,\n): T {\n const previous = getRegistry();\n const testRegistry = createTestRegistry();\n setRegistry(testRegistry);\n try {\n const result = fn(testRegistry);\n if (result instanceof Promise) {\n return result.then(\n (value) => {\n setRegistry(previous);\n return value;\n },\n (error) => {\n setRegistry(previous);\n throw error;\n },\n ) as T;\n }\n setRegistry(previous);\n return result;\n } catch (error) {\n setRegistry(previous);\n throw error;\n }\n}\n\n// --- blacTestSetup ---\n\nexport function blacTestSetup(): void {\n let savedRegistry: StateContainerRegistry;\n beforeEach(() => {\n savedRegistry = getRegistry();\n setRegistry(new StateContainerRegistry());\n });\n afterEach(() => {\n setRegistry(savedRegistry);\n });\n}\n\n// --- registerOverride + overrideEnsure ---\n\nexport function registerOverride<T extends StateContainerConstructor>(\n BlocClass: T,\n instance: InstanceType<T>,\n args?: ExtractArgs<T>,\n): void {\n const registry = getRegistry();\n const key = resolveInstanceKey(BlocClass, args);\n registry.insertInstance(\n BlocClass,\n key,\n instance,\n new Map([['testing-override', 1]]),\n );\n}\n\nexport function overrideEnsure<T extends StateContainerConstructor, R>(\n BlocClass: T,\n instance: InstanceType<T>,\n fn: () => R,\n args?: ExtractArgs<T>,\n): R {\n return withTestRegistry(() => {\n registerOverride(BlocClass, instance, args);\n return fn();\n });\n}\n\n// --- createCubitStub ---\n\ntype MethodKeys<T> = {\n [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;\n}[keyof T];\n\nexport interface CubitStubOptions<T extends StateContainerConstructor> {\n state?: ExtractState<T> extends Record<string, any>\n ? Partial<ExtractState<T>>\n : ExtractState<T>;\n methods?: Partial<\n Record<MethodKeys<InstanceType<T>>, (...args: any[]) => any>\n >;\n /**\n * Args to pass to init(). If the bloc's Args type is not void, supplying\n * args here causes initConfig({ args }) to be called so init() runs.\n */\n args?: ExtractArgs<T> extends void ? never : ExtractArgs<T>;\n /**\n * Deps slice to pre-wire via the core [APPLY_DEPS] path (synthetic owner\n * \"testing-deps\"), so onDepsChanged fires during tests.\n */\n deps?: Partial<ExtractDeps<T>>;\n}\n\nexport function createCubitStub<T extends StateContainerConstructor>(\n BlocClass: T,\n options?: CubitStubOptions<T>,\n): InstanceType<T> {\n const instance = new BlocClass() as InstanceType<T>;\n\n // Run init() if args are supplied — goes through the same initConfig path\n // that the registry uses, so lifecycle hooks fire correctly.\n if (options?.args != null) {\n instance.initConfig({ args: options.args });\n }\n\n if (options?.state != null) {\n if (instance instanceof Cubit) {\n const currentState = instance.state;\n if (\n typeof currentState === 'object' &&\n currentState !== null &&\n typeof options.state === 'object' &&\n options.state !== null\n ) {\n instance.patch(options.state as any);\n } else {\n instance.emit(options.state as any);\n }\n }\n }\n if (options?.methods) {\n for (const [key, impl] of Object.entries(options.methods)) {\n if (typeof impl === 'function') {\n (instance as any)[key] = impl;\n }\n }\n }\n\n // Pre-wire deps via the core merge path so onDepsChanged fires in tests.\n if (options?.deps != null) {\n (instance as any)[APPLY_DEPS](TESTING_DEPS_OWNER, options.deps);\n }\n\n return instance;\n}\n\n// --- withBlocState ---\n\nexport function withBlocState<T extends StateContainerConstructor>(\n BlocClass: T,\n state: ExtractState<T> extends Record<string, any>\n ? Partial<ExtractState<T>>\n : ExtractState<T>,\n args?: ExtractArgs<T>,\n): InstanceType<T> {\n const instance = ensure(BlocClass, { args });\n if (instance instanceof Cubit) {\n const currentState = instance.state;\n if (\n typeof currentState === 'object' &&\n currentState !== null &&\n typeof state === 'object' &&\n state !== null\n ) {\n instance.patch(state as any);\n } else {\n instance.emit(state as any);\n }\n }\n return instance;\n}\n\n// --- withBlocMethod ---\n\nexport function withBlocMethod<T extends StateContainerConstructor>(\n BlocClass: T,\n methodName: keyof InstanceType<T>,\n impl: (...args: any[]) => any,\n args?: ExtractArgs<T>,\n): InstanceType<T> {\n const instance = ensure(BlocClass, { args });\n (instance as any)[methodName] = impl;\n return instance;\n}\n\n// --- flushBlocUpdates ---\n\n/**\n * Drain pending microtasks so any channel-flushed effects (subscribe()\n * listeners, `onSystemEvent('stateChanged')` handlers, plugin hooks) run\n * before the next assertion.\n *\n * The default `MicrotaskScheduler` coalesces emits within a tick; tests\n * that emit and then assert on listener side-effects need `await flush()`\n * (or its alias `flushBlocUpdates()`) between the two.\n */\nexport async function flush(): Promise<void> {\n // queueMicrotask wins the race against the channel's own queued flush —\n // we resolve after the channel has drained its current pending flush.\n await Promise.resolve();\n await Promise.resolve();\n}\n\n/** @deprecated Alias for `flush()`. */\nexport async function flushBlocUpdates(): Promise<void> {\n await flush();\n}\n"],"mappings":";;;;;;AAaA,MAAM,qBAAqB;AAO3B,SAAgB,qBAA6C;CAC3D,OAAO,IAAI,uBAAuB;AACpC;AAEA,SAAgB,iBACd,IACG;CACH,MAAM,WAAW,YAAY;CAC7B,MAAM,eAAe,mBAAmB;CACxC,YAAY,YAAY;CACxB,IAAI;EACF,MAAM,SAAS,GAAG,YAAY;EAC9B,IAAI,kBAAkB,SACpB,OAAO,OAAO,MACX,UAAU;GACT,YAAY,QAAQ;GACpB,OAAO;EACT,IACC,UAAU;GACT,YAAY,QAAQ;GACpB,MAAM;EACR,CACF;EAEF,YAAY,QAAQ;EACpB,OAAO;CACT,SAAS,OAAO;EACd,YAAY,QAAQ;EACpB,MAAM;CACR;AACF;AAIA,SAAgB,gBAAsB;CACpC,IAAI;CACJ,iBAAiB;EACf,gBAAgB,YAAY;EAC5B,YAAY,IAAI,uBAAuB,CAAC;CAC1C,CAAC;CACD,gBAAgB;EACd,YAAY,aAAa;CAC3B,CAAC;AACH;AAIA,SAAgB,iBACd,WACA,UACA,MACM;CACN,MAAM,WAAW,YAAY;CAC7B,MAAM,MAAM,mBAAmB,WAAW,IAAI;CAC9C,SAAS,eACP,WACA,KACA,UACA,IAAI,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CACnC;AACF;AAEA,SAAgB,eACd,WACA,UACA,IACA,MACG;CACH,OAAO,uBAAuB;EAC5B,iBAAiB,WAAW,UAAU,IAAI;EAC1C,OAAO,GAAG;CACZ,CAAC;AACH;AA2BA,SAAgB,gBACd,WACA,SACiB;CACjB,MAAM,WAAW,IAAI,UAAU;CAI/B,IAAI,SAAS,QAAQ,MACnB,SAAS,WAAW,EAAE,MAAM,QAAQ,KAAK,CAAC;CAG5C,IAAI,SAAS,SAAS;MAChB,oBAAoB,OAAO;GAC7B,MAAM,eAAe,SAAS;GAC9B,IACE,OAAO,iBAAiB,YACxB,iBAAiB,QACjB,OAAO,QAAQ,UAAU,YACzB,QAAQ,UAAU,MAElB,SAAS,MAAM,QAAQ,KAAY;QAEnC,SAAS,KAAK,QAAQ,KAAY;EAEtC;;CAEF,IAAI,SAAS;OACN,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,QAAQ,OAAO,GACtD,IAAI,OAAO,SAAS,YAClB,SAAkB,OAAO;CAAA;CAM/B,IAAI,SAAS,QAAQ,MACnB,SAAkB,YAAY,oBAAoB,QAAQ,IAAI;CAGhE,OAAO;AACT;AAIA,SAAgB,cACd,WACA,OAGA,MACiB;CACjB,MAAM,WAAW,OAAO,WAAW,EAAE,KAAK,CAAC;CAC3C,IAAI,oBAAoB,OAAO;EAC7B,MAAM,eAAe,SAAS;EAC9B,IACE,OAAO,iBAAiB,YACxB,iBAAiB,QACjB,OAAO,UAAU,YACjB,UAAU,MAEV,SAAS,MAAM,KAAY;OAE3B,SAAS,KAAK,KAAY;CAE9B;CACA,OAAO;AACT;AAIA,SAAgB,eACd,WACA,YACA,MACA,MACiB;CACjB,MAAM,WAAW,OAAO,WAAW,EAAE,KAAK,CAAC;CAC3C,SAAkB,cAAc;CAChC,OAAO;AACT;;;;;;;;;;AAaA,eAAsB,QAAuB;CAG3C,MAAM,QAAQ,QAAQ;CACtB,MAAM,QAAQ,QAAQ;AACxB;;AAGA,eAAsB,mBAAkC;CACtD,MAAM,MAAM;AACd"}
|
|
@@ -42,21 +42,10 @@ export type ExtractConstructorArgs<T> = T extends new (...args: infer P) => any
|
|
|
42
42
|
*/
|
|
43
43
|
export type BlocInstanceType<T extends abstract new (...args: any) => any> = T extends abstract new (...args: any) => infer R ? R : any;
|
|
44
44
|
/**
|
|
45
|
-
* Constructor type for StateContainer classes
|
|
45
|
+
* Constructor type for StateContainer classes.
|
|
46
46
|
* Used for type-safe hook parameters.
|
|
47
47
|
* @template TBloc - The StateContainer instance type
|
|
48
48
|
*/
|
|
49
49
|
export type BlocConstructor<S extends object = any, T extends new (...args: any[]) => StateContainer<S, any, any> = new (...args: any[]) => StateContainer<S, any, any>> = (new (...args: any[]) => InstanceType<T>) & {
|
|
50
|
-
acquire(instanceKey?: string, ...args: any[]): InstanceType<T>;
|
|
51
|
-
borrow(instanceKey?: string, ...args: any[]): InstanceType<T> | null;
|
|
52
|
-
borrowSafe(instanceKey?: string, ...args: any[]): {
|
|
53
|
-
error: Error;
|
|
54
|
-
instance: null;
|
|
55
|
-
} | {
|
|
56
|
-
error: null;
|
|
57
|
-
instance: InstanceType<T>;
|
|
58
|
-
};
|
|
59
|
-
ensure(instanceKey?: string): InstanceType<T>;
|
|
60
|
-
release(instanceKey?: string): void;
|
|
61
50
|
keepAlive?: boolean;
|
|
62
51
|
};
|
package/dist/types.cjs
CHANGED
package/dist/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as instanceId } from "./branded-
|
|
1
|
+
import { t as instanceId } from "./branded-DkbUzncc.js";
|
|
2
2
|
export { instanceId };
|
|
@@ -27,15 +27,6 @@ export declare function isKeepAliveClass<T extends StateContainerConstructor>(Ty
|
|
|
27
27
|
* @returns true if the class has `static __excludeFromDevTools = true`
|
|
28
28
|
*/
|
|
29
29
|
export declare function isExcludedFromDevTools<T extends StateContainerConstructor>(Type: T): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Check if a class is marked as isolated.
|
|
32
|
-
* Isolated classes get a fresh, per-mount instance from `useBloc`
|
|
33
|
-
* (auto-keyed via React's `useId()`), instead of sharing the default
|
|
34
|
-
* instance with sibling call sites.
|
|
35
|
-
* @param Type - The class constructor to check
|
|
36
|
-
* @returns true if the class has `static isolated = true`
|
|
37
|
-
*/
|
|
38
|
-
export declare function isIsolatedClass<T extends StateContainerConstructor>(Type: T): boolean;
|
|
39
30
|
/**
|
|
40
31
|
* Get the per-class equality function set via `@blac({ equality })`, if any.
|
|
41
32
|
* @param Type - The class constructor to check
|
package/dist/watch/watch.d.ts
CHANGED
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
import type { StateContainerConstructor } from '../types/utilities';
|
|
1
|
+
import type { ExtractArgs, StateContainerConstructor } from '../types/utilities';
|
|
2
2
|
declare const STOP: unique symbol;
|
|
3
3
|
type StopSymbol = typeof STOP;
|
|
4
4
|
declare const BLOC_REF_MARKER: unique symbol;
|
|
5
5
|
/**
|
|
6
|
-
* Reference to a specific bloc instance by class
|
|
6
|
+
* Reference to a specific bloc instance, identified by class + the resolved
|
|
7
|
+
* key derived from its `args`.
|
|
7
8
|
*/
|
|
8
9
|
export interface BlocRef<T extends StateContainerConstructor> {
|
|
9
10
|
[BLOC_REF_MARKER]: true;
|
|
10
11
|
blocClass: T;
|
|
12
|
+
/** @internal The resolved instance key (derived from `args`). */
|
|
11
13
|
instanceId: string;
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
|
-
* Create a reference to a specific bloc instance
|
|
16
|
+
* Create a reference to a specific bloc instance, identified by its `args`.
|
|
17
|
+
* The key is derived the same way `useBloc`/`acquire` derive it.
|
|
15
18
|
*
|
|
16
19
|
* @example
|
|
17
20
|
* ```ts
|
|
18
|
-
* watch(instance(UserBloc, 'user-123'), (userBloc) => {
|
|
21
|
+
* watch(instance(UserBloc, { userId: 'user-123' }), (userBloc) => {
|
|
19
22
|
* console.log(userBloc.state.name);
|
|
20
23
|
* });
|
|
21
24
|
* ```
|
|
22
25
|
*/
|
|
23
|
-
export declare function instance<T extends StateContainerConstructor>(BlocClass: T,
|
|
26
|
+
export declare function instance<T extends StateContainerConstructor>(BlocClass: T, args?: ExtractArgs<T>): BlocRef<T>;
|
|
24
27
|
type BlocInput = StateContainerConstructor | BlocRef<StateContainerConstructor>;
|
|
25
28
|
type ExtractInstance<T> = T extends BlocRef<infer C> ? InstanceType<C> : T extends StateContainerConstructor ? InstanceType<T> : never;
|
|
26
29
|
type ExtractInstances<T extends readonly BlocInput[]> = {
|
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
1
|
+
const require_config = require("./config-sCPKPYxZ.cjs");
|
|
2
|
+
const require_acquire = require("./acquire-CbMz7gWs.cjs");
|
|
3
3
|
let _dirtytalk_structural = require("@dirtytalk/structural");
|
|
4
4
|
//#region src/watch/watch.ts
|
|
5
5
|
const STOP = Symbol("watch.STOP");
|
|
6
6
|
const BLOC_REF_MARKER = Symbol("BlocRef");
|
|
7
7
|
/**
|
|
8
|
-
* Create a reference to a specific bloc instance
|
|
8
|
+
* Create a reference to a specific bloc instance, identified by its `args`.
|
|
9
|
+
* The key is derived the same way `useBloc`/`acquire` derive it.
|
|
9
10
|
*
|
|
10
11
|
* @example
|
|
11
12
|
* ```ts
|
|
12
|
-
* watch(instance(UserBloc, 'user-123'), (userBloc) => {
|
|
13
|
+
* watch(instance(UserBloc, { userId: 'user-123' }), (userBloc) => {
|
|
13
14
|
* console.log(userBloc.state.name);
|
|
14
15
|
* });
|
|
15
16
|
* ```
|
|
16
17
|
*/
|
|
17
|
-
function instance(BlocClass,
|
|
18
|
+
function instance(BlocClass, args) {
|
|
18
19
|
return {
|
|
19
20
|
[BLOC_REF_MARKER]: true,
|
|
20
21
|
blocClass: BlocClass,
|
|
21
|
-
instanceId
|
|
22
|
+
instanceId: require_acquire.resolveInstanceKey(BlocClass, args)
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
function isBlocRef(input) {
|
|
25
26
|
return typeof input === "object" && input !== null && BLOC_REF_MARKER in input;
|
|
26
27
|
}
|
|
27
28
|
function resolveBloc(input) {
|
|
28
|
-
|
|
29
|
-
return
|
|
29
|
+
const registry = require_config.getRegistry();
|
|
30
|
+
if (isBlocRef(input)) return registry.ensure(input.blocClass, input.instanceId);
|
|
31
|
+
return registry.ensure(input, registry.resolveKey(input, void 0, void 0));
|
|
30
32
|
}
|
|
31
33
|
function isArray(input) {
|
|
32
34
|
return Array.isArray(input);
|
|
@@ -65,4 +67,4 @@ Object.defineProperty(exports, "watch", {
|
|
|
65
67
|
}
|
|
66
68
|
});
|
|
67
69
|
|
|
68
|
-
//# sourceMappingURL=watch-
|
|
70
|
+
//# sourceMappingURL=watch-B91opmva.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-B91opmva.cjs","names":["resolveInstanceKey","getRegistry","ALL_PATHS"],"sources":["../src/watch/watch.ts"],"sourcesContent":["import { ALL_PATHS } from '@dirtytalk/structural';\nimport { getRegistry } from '../registry';\nimport { resolveInstanceKey } from '../registry/acquire';\nimport type {\n ExtractArgs,\n StateContainerConstructor,\n StateContainerInstance,\n} from '../types/utilities';\n\nconst STOP: unique symbol = Symbol('watch.STOP');\ntype StopSymbol = typeof STOP;\n\nconst BLOC_REF_MARKER = Symbol('BlocRef');\n\n/**\n * Reference to a specific bloc instance, identified by class + the resolved\n * key derived from its `args`.\n */\nexport interface BlocRef<T extends StateContainerConstructor> {\n [BLOC_REF_MARKER]: true;\n blocClass: T;\n /** @internal The resolved instance key (derived from `args`). */\n instanceId: string;\n}\n\n/**\n * Create a reference to a specific bloc instance, identified by its `args`.\n * The key is derived the same way `useBloc`/`acquire` derive it.\n *\n * @example\n * ```ts\n * watch(instance(UserBloc, { userId: 'user-123' }), (userBloc) => {\n * console.log(userBloc.state.name);\n * });\n * ```\n */\nexport function instance<T extends StateContainerConstructor>(\n BlocClass: T,\n args?: ExtractArgs<T>,\n): BlocRef<T> {\n return {\n [BLOC_REF_MARKER]: true,\n blocClass: BlocClass,\n instanceId: resolveInstanceKey(BlocClass, args),\n };\n}\n\nfunction isBlocRef(\n input: unknown,\n): input is BlocRef<StateContainerConstructor> {\n return (\n typeof input === 'object' && input !== null && BLOC_REF_MARKER in input\n );\n}\n\ntype BlocInput = StateContainerConstructor | BlocRef<StateContainerConstructor>;\n\ntype ExtractInstance<T> =\n T extends BlocRef<infer C>\n ? InstanceType<C>\n : T extends StateContainerConstructor\n ? InstanceType<T>\n : never;\n\ntype ExtractInstances<T extends readonly BlocInput[]> = {\n [K in keyof T]: ExtractInstance<T[K]>;\n};\n\n/**\n * Watch function signature for single bloc.\n */\nexport interface WatchSingleFn {\n <T extends StateContainerConstructor>(\n bloc: T | BlocRef<T>,\n callback: (bloc: InstanceType<T>) => void | StopSymbol,\n ): () => void;\n\n STOP: StopSymbol;\n}\n\n/**\n * Watch function signature for multiple blocs.\n */\nexport interface WatchMultipleFn {\n <T extends readonly BlocInput[]>(\n blocs: T,\n callback: (blocs: ExtractInstances<T>) => void | StopSymbol,\n ): () => void;\n\n STOP: StopSymbol;\n}\n\n/**\n * Combined watch function type.\n */\nexport interface WatchFn extends WatchSingleFn {\n <T extends readonly BlocInput[]>(\n blocs: T,\n callback: (blocs: ExtractInstances<T>) => void | StopSymbol,\n ): () => void;\n}\n\nfunction resolveBloc(input: BlocInput): StateContainerInstance {\n const registry = getRegistry();\n if (isBlocRef(input)) {\n return registry.ensure(input.blocClass, input.instanceId);\n }\n return registry.ensure(\n input,\n registry.resolveKey(input, undefined, undefined),\n );\n}\n\nfunction isArray(input: unknown): input is readonly BlocInput[] {\n return Array.isArray(input);\n}\n\n/**\n * Watch one or more blocs for state changes.\n *\n * Thin wrapper around `container.channel.subscribe(ALL_PATHS, ...)`. The\n * callback fires once immediately, then on every state change of any of the\n * passed blocs. Returning `watch.STOP` from the callback tears down all\n * subscriptions.\n *\n * Note: subscriptions are microtask-deferred (per the DirtyChannel default\n * scheduler), so callbacks land asynchronously after `emit()`.\n *\n * @example Single bloc\n * ```ts\n * const unwatch = watch(UserBloc, (userBloc) => {\n * console.log(userBloc.state.name);\n * });\n * ```\n *\n * @example Multiple blocs\n * ```ts\n * const unwatch = watch(\n * [UserBloc, SettingsBloc] as const,\n * ([userBloc, settingsBloc]) => {\n * console.log(userBloc.state.name, settingsBloc.state.theme);\n * }\n * );\n * ```\n *\n * @example With specific instance\n * ```ts\n * const unwatch = watch(\n * instance(UserBloc, { userId: 'user-123' }),\n * (userBloc) => {\n * console.log(userBloc.state.name);\n * }\n * );\n * ```\n *\n * @example Stop watching from callback\n * ```ts\n * const unwatch = watch(UserBloc, (userBloc) => {\n * if (userBloc.state.done) {\n * return watch.STOP;\n * }\n * });\n * ```\n */\nfunction watchImpl<T extends StateContainerConstructor>(\n bloc: T | BlocRef<T>,\n callback: (bloc: InstanceType<T>) => void | StopSymbol,\n): () => void;\n\nfunction watchImpl<T extends readonly BlocInput[]>(\n blocs: T,\n callback: (blocs: ExtractInstances<T>) => void | StopSymbol,\n): () => void;\n\nfunction watchImpl(\n blocsOrBloc: BlocInput | readonly BlocInput[],\n callback: (blocsOrBloc: any) => void | StopSymbol,\n): () => void {\n const isSingle = !isArray(blocsOrBloc);\n const inputs = isSingle ? [blocsOrBloc] : blocsOrBloc;\n\n const instances = inputs.map(resolveBloc);\n\n let disposed = false;\n const subscriptions: (() => void)[] = [];\n\n const cleanup = () => {\n if (disposed) return;\n disposed = true;\n for (const unsub of subscriptions) unsub();\n subscriptions.length = 0;\n };\n\n const runCallback = () => {\n if (disposed) return;\n const arg = isSingle ? instances[0] : instances;\n const result = callback(arg);\n if (result === STOP) cleanup();\n };\n\n for (const inst of instances) {\n subscriptions.push(inst.channel.subscribe(() => ALL_PATHS, runCallback));\n }\n\n // Fire once immediately so the consumer sees the current state.\n runCallback();\n\n return cleanup;\n}\n\nexport const watch: WatchFn = Object.assign(watchImpl, { STOP }) as WatchFn;\n"],"mappings":";;;;AASA,MAAM,OAAsB,OAAO,YAAY;AAG/C,MAAM,kBAAkB,OAAO,SAAS;;;;;;;;;;;;AAwBxC,SAAgB,SACd,WACA,MACY;CACZ,OAAO;GACJ,kBAAkB;EACnB,WAAW;EACX,YAAYA,gBAAAA,mBAAmB,WAAW,IAAI;CAChD;AACF;AAEA,SAAS,UACP,OAC6C;CAC7C,OACE,OAAO,UAAU,YAAY,UAAU,QAAQ,mBAAmB;AAEtE;AAiDA,SAAS,YAAY,OAA0C;CAC7D,MAAM,WAAWC,eAAAA,YAAY;CAC7B,IAAI,UAAU,KAAK,GACjB,OAAO,SAAS,OAAO,MAAM,WAAW,MAAM,UAAU;CAE1D,OAAO,SAAS,OACd,OACA,SAAS,WAAW,OAAO,KAAA,GAAW,KAAA,CAAS,CACjD;AACF;AAEA,SAAS,QAAQ,OAA+C;CAC9D,OAAO,MAAM,QAAQ,KAAK;AAC5B;AA2DA,SAAS,UACP,aACA,UACY;CACZ,MAAM,WAAW,CAAC,QAAQ,WAAW;CAGrC,MAAM,aAFS,WAAW,CAAC,WAAW,IAAI,aAEjB,IAAI,WAAW;CAExC,IAAI,WAAW;CACf,MAAM,gBAAgC,CAAC;CAEvC,MAAM,gBAAgB;EACpB,IAAI,UAAU;EACd,WAAW;EACX,KAAK,MAAM,SAAS,eAAe,MAAM;EACzC,cAAc,SAAS;CACzB;CAEA,MAAM,oBAAoB;EACxB,IAAI,UAAU;EAGd,IADe,SADH,WAAW,UAAU,KAAK,SAE7B,MAAM,MAAM,QAAQ;CAC/B;CAEA,KAAK,MAAM,QAAQ,WACjB,cAAc,KAAK,KAAK,QAAQ,gBAAgBC,sBAAAA,WAAW,WAAW,CAAC;CAIzE,YAAY;CAEZ,OAAO;AACT;AAEA,MAAa,QAAiB,OAAO,OAAO,WAAW,EAAE,KAAK,CAAC"}
|
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { t as getRegistry } from "./config-8pyOC5gv.js";
|
|
2
|
+
import { n as resolveInstanceKey } from "./acquire-Don7499S.js";
|
|
3
3
|
import { ALL_PATHS } from "@dirtytalk/structural";
|
|
4
4
|
//#region src/watch/watch.ts
|
|
5
5
|
const STOP = Symbol("watch.STOP");
|
|
6
6
|
const BLOC_REF_MARKER = Symbol("BlocRef");
|
|
7
7
|
/**
|
|
8
|
-
* Create a reference to a specific bloc instance
|
|
8
|
+
* Create a reference to a specific bloc instance, identified by its `args`.
|
|
9
|
+
* The key is derived the same way `useBloc`/`acquire` derive it.
|
|
9
10
|
*
|
|
10
11
|
* @example
|
|
11
12
|
* ```ts
|
|
12
|
-
* watch(instance(UserBloc, 'user-123'), (userBloc) => {
|
|
13
|
+
* watch(instance(UserBloc, { userId: 'user-123' }), (userBloc) => {
|
|
13
14
|
* console.log(userBloc.state.name);
|
|
14
15
|
* });
|
|
15
16
|
* ```
|
|
16
17
|
*/
|
|
17
|
-
function instance(BlocClass,
|
|
18
|
+
function instance(BlocClass, args) {
|
|
18
19
|
return {
|
|
19
20
|
[BLOC_REF_MARKER]: true,
|
|
20
21
|
blocClass: BlocClass,
|
|
21
|
-
instanceId
|
|
22
|
+
instanceId: resolveInstanceKey(BlocClass, args)
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
function isBlocRef(input) {
|
|
25
26
|
return typeof input === "object" && input !== null && BLOC_REF_MARKER in input;
|
|
26
27
|
}
|
|
27
28
|
function resolveBloc(input) {
|
|
28
|
-
|
|
29
|
-
return ensure(input,
|
|
29
|
+
const registry = getRegistry();
|
|
30
|
+
if (isBlocRef(input)) return registry.ensure(input.blocClass, input.instanceId);
|
|
31
|
+
return registry.ensure(input, registry.resolveKey(input, void 0, void 0));
|
|
30
32
|
}
|
|
31
33
|
function isArray(input) {
|
|
32
34
|
return Array.isArray(input);
|
|
@@ -54,4 +56,4 @@ const watch = Object.assign(watchImpl, { STOP });
|
|
|
54
56
|
//#endregion
|
|
55
57
|
export { watch as n, instance as t };
|
|
56
58
|
|
|
57
|
-
//# sourceMappingURL=watch-
|
|
59
|
+
//# sourceMappingURL=watch-BmC-Tyqg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-BmC-Tyqg.js","names":[],"sources":["../src/watch/watch.ts"],"sourcesContent":["import { ALL_PATHS } from '@dirtytalk/structural';\nimport { getRegistry } from '../registry';\nimport { resolveInstanceKey } from '../registry/acquire';\nimport type {\n ExtractArgs,\n StateContainerConstructor,\n StateContainerInstance,\n} from '../types/utilities';\n\nconst STOP: unique symbol = Symbol('watch.STOP');\ntype StopSymbol = typeof STOP;\n\nconst BLOC_REF_MARKER = Symbol('BlocRef');\n\n/**\n * Reference to a specific bloc instance, identified by class + the resolved\n * key derived from its `args`.\n */\nexport interface BlocRef<T extends StateContainerConstructor> {\n [BLOC_REF_MARKER]: true;\n blocClass: T;\n /** @internal The resolved instance key (derived from `args`). */\n instanceId: string;\n}\n\n/**\n * Create a reference to a specific bloc instance, identified by its `args`.\n * The key is derived the same way `useBloc`/`acquire` derive it.\n *\n * @example\n * ```ts\n * watch(instance(UserBloc, { userId: 'user-123' }), (userBloc) => {\n * console.log(userBloc.state.name);\n * });\n * ```\n */\nexport function instance<T extends StateContainerConstructor>(\n BlocClass: T,\n args?: ExtractArgs<T>,\n): BlocRef<T> {\n return {\n [BLOC_REF_MARKER]: true,\n blocClass: BlocClass,\n instanceId: resolveInstanceKey(BlocClass, args),\n };\n}\n\nfunction isBlocRef(\n input: unknown,\n): input is BlocRef<StateContainerConstructor> {\n return (\n typeof input === 'object' && input !== null && BLOC_REF_MARKER in input\n );\n}\n\ntype BlocInput = StateContainerConstructor | BlocRef<StateContainerConstructor>;\n\ntype ExtractInstance<T> =\n T extends BlocRef<infer C>\n ? InstanceType<C>\n : T extends StateContainerConstructor\n ? InstanceType<T>\n : never;\n\ntype ExtractInstances<T extends readonly BlocInput[]> = {\n [K in keyof T]: ExtractInstance<T[K]>;\n};\n\n/**\n * Watch function signature for single bloc.\n */\nexport interface WatchSingleFn {\n <T extends StateContainerConstructor>(\n bloc: T | BlocRef<T>,\n callback: (bloc: InstanceType<T>) => void | StopSymbol,\n ): () => void;\n\n STOP: StopSymbol;\n}\n\n/**\n * Watch function signature for multiple blocs.\n */\nexport interface WatchMultipleFn {\n <T extends readonly BlocInput[]>(\n blocs: T,\n callback: (blocs: ExtractInstances<T>) => void | StopSymbol,\n ): () => void;\n\n STOP: StopSymbol;\n}\n\n/**\n * Combined watch function type.\n */\nexport interface WatchFn extends WatchSingleFn {\n <T extends readonly BlocInput[]>(\n blocs: T,\n callback: (blocs: ExtractInstances<T>) => void | StopSymbol,\n ): () => void;\n}\n\nfunction resolveBloc(input: BlocInput): StateContainerInstance {\n const registry = getRegistry();\n if (isBlocRef(input)) {\n return registry.ensure(input.blocClass, input.instanceId);\n }\n return registry.ensure(\n input,\n registry.resolveKey(input, undefined, undefined),\n );\n}\n\nfunction isArray(input: unknown): input is readonly BlocInput[] {\n return Array.isArray(input);\n}\n\n/**\n * Watch one or more blocs for state changes.\n *\n * Thin wrapper around `container.channel.subscribe(ALL_PATHS, ...)`. The\n * callback fires once immediately, then on every state change of any of the\n * passed blocs. Returning `watch.STOP` from the callback tears down all\n * subscriptions.\n *\n * Note: subscriptions are microtask-deferred (per the DirtyChannel default\n * scheduler), so callbacks land asynchronously after `emit()`.\n *\n * @example Single bloc\n * ```ts\n * const unwatch = watch(UserBloc, (userBloc) => {\n * console.log(userBloc.state.name);\n * });\n * ```\n *\n * @example Multiple blocs\n * ```ts\n * const unwatch = watch(\n * [UserBloc, SettingsBloc] as const,\n * ([userBloc, settingsBloc]) => {\n * console.log(userBloc.state.name, settingsBloc.state.theme);\n * }\n * );\n * ```\n *\n * @example With specific instance\n * ```ts\n * const unwatch = watch(\n * instance(UserBloc, { userId: 'user-123' }),\n * (userBloc) => {\n * console.log(userBloc.state.name);\n * }\n * );\n * ```\n *\n * @example Stop watching from callback\n * ```ts\n * const unwatch = watch(UserBloc, (userBloc) => {\n * if (userBloc.state.done) {\n * return watch.STOP;\n * }\n * });\n * ```\n */\nfunction watchImpl<T extends StateContainerConstructor>(\n bloc: T | BlocRef<T>,\n callback: (bloc: InstanceType<T>) => void | StopSymbol,\n): () => void;\n\nfunction watchImpl<T extends readonly BlocInput[]>(\n blocs: T,\n callback: (blocs: ExtractInstances<T>) => void | StopSymbol,\n): () => void;\n\nfunction watchImpl(\n blocsOrBloc: BlocInput | readonly BlocInput[],\n callback: (blocsOrBloc: any) => void | StopSymbol,\n): () => void {\n const isSingle = !isArray(blocsOrBloc);\n const inputs = isSingle ? [blocsOrBloc] : blocsOrBloc;\n\n const instances = inputs.map(resolveBloc);\n\n let disposed = false;\n const subscriptions: (() => void)[] = [];\n\n const cleanup = () => {\n if (disposed) return;\n disposed = true;\n for (const unsub of subscriptions) unsub();\n subscriptions.length = 0;\n };\n\n const runCallback = () => {\n if (disposed) return;\n const arg = isSingle ? instances[0] : instances;\n const result = callback(arg);\n if (result === STOP) cleanup();\n };\n\n for (const inst of instances) {\n subscriptions.push(inst.channel.subscribe(() => ALL_PATHS, runCallback));\n }\n\n // Fire once immediately so the consumer sees the current state.\n runCallback();\n\n return cleanup;\n}\n\nexport const watch: WatchFn = Object.assign(watchImpl, { STOP }) as WatchFn;\n"],"mappings":";;;;AASA,MAAM,OAAsB,OAAO,YAAY;AAG/C,MAAM,kBAAkB,OAAO,SAAS;;;;;;;;;;;;AAwBxC,SAAgB,SACd,WACA,MACY;CACZ,OAAO;GACJ,kBAAkB;EACnB,WAAW;EACX,YAAY,mBAAmB,WAAW,IAAI;CAChD;AACF;AAEA,SAAS,UACP,OAC6C;CAC7C,OACE,OAAO,UAAU,YAAY,UAAU,QAAQ,mBAAmB;AAEtE;AAiDA,SAAS,YAAY,OAA0C;CAC7D,MAAM,WAAW,YAAY;CAC7B,IAAI,UAAU,KAAK,GACjB,OAAO,SAAS,OAAO,MAAM,WAAW,MAAM,UAAU;CAE1D,OAAO,SAAS,OACd,OACA,SAAS,WAAW,OAAO,KAAA,GAAW,KAAA,CAAS,CACjD;AACF;AAEA,SAAS,QAAQ,OAA+C;CAC9D,OAAO,MAAM,QAAQ,KAAK;AAC5B;AA2DA,SAAS,UACP,aACA,UACY;CACZ,MAAM,WAAW,CAAC,QAAQ,WAAW;CAGrC,MAAM,aAFS,WAAW,CAAC,WAAW,IAAI,aAEjB,IAAI,WAAW;CAExC,IAAI,WAAW;CACf,MAAM,gBAAgC,CAAC;CAEvC,MAAM,gBAAgB;EACpB,IAAI,UAAU;EACd,WAAW;EACX,KAAK,MAAM,SAAS,eAAe,MAAM;EACzC,cAAc,SAAS;CACzB;CAEA,MAAM,oBAAoB;EACxB,IAAI,UAAU;EAGd,IADe,SADH,WAAW,UAAU,KAAK,SAE7B,MAAM,MAAM,QAAQ;CAC/B;CAEA,KAAK,MAAM,QAAQ,WACjB,cAAc,KAAK,KAAK,QAAQ,gBAAgB,WAAW,WAAW,CAAC;CAIzE,YAAY;CAEZ,OAAO;AACT;AAEA,MAAa,QAAiB,OAAO,OAAO,WAAW,EAAE,KAAK,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
const require_config = require("./config-DVMnlHLv.cjs");
|
|
2
|
+
const require_acquire = require("./acquire-DHEOEVcj.cjs");
|
|
3
|
+
let _dirtytalk_structural = require("@dirtytalk/structural");
|
|
4
|
+
//#region src/watch/watch.ts
|
|
5
|
+
const STOP = Symbol("watch.STOP");
|
|
6
|
+
const BLOC_REF_MARKER = Symbol("BlocRef");
|
|
7
|
+
/**
|
|
8
|
+
* Create a reference to a specific bloc instance, identified by its `args`.
|
|
9
|
+
* The key is derived the same way `useBloc`/`acquire` derive it.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* watch(instance(UserBloc, { userId: 'user-123' }), (userBloc) => {
|
|
14
|
+
* console.log(userBloc.state.name);
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function instance(BlocClass, args) {
|
|
19
|
+
return {
|
|
20
|
+
[BLOC_REF_MARKER]: true,
|
|
21
|
+
blocClass: BlocClass,
|
|
22
|
+
instanceId: require_acquire.resolveInstanceKey(BlocClass, args)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function isBlocRef(input) {
|
|
26
|
+
return typeof input === "object" && input !== null && BLOC_REF_MARKER in input;
|
|
27
|
+
}
|
|
28
|
+
function resolveBloc(input) {
|
|
29
|
+
const registry = require_config.getRegistry();
|
|
30
|
+
if (isBlocRef(input)) return registry.ensure(input.blocClass, input.instanceId);
|
|
31
|
+
return registry.ensure(input, registry.resolveKey(input, void 0, void 0));
|
|
32
|
+
}
|
|
33
|
+
function isArray(input) {
|
|
34
|
+
return Array.isArray(input);
|
|
35
|
+
}
|
|
36
|
+
function watchImpl(blocsOrBloc, callback) {
|
|
37
|
+
const isSingle = !isArray(blocsOrBloc);
|
|
38
|
+
const instances = (isSingle ? [blocsOrBloc] : blocsOrBloc).map(resolveBloc);
|
|
39
|
+
let disposed = false;
|
|
40
|
+
const subscriptions = [];
|
|
41
|
+
const cleanup = () => {
|
|
42
|
+
if (disposed) return;
|
|
43
|
+
disposed = true;
|
|
44
|
+
for (const unsub of subscriptions) unsub();
|
|
45
|
+
subscriptions.length = 0;
|
|
46
|
+
};
|
|
47
|
+
const runCallback = () => {
|
|
48
|
+
if (disposed) return;
|
|
49
|
+
if (callback(isSingle ? instances[0] : instances) === STOP) cleanup();
|
|
50
|
+
};
|
|
51
|
+
for (const inst of instances) subscriptions.push(inst.channel.subscribe(() => _dirtytalk_structural.ALL_PATHS, runCallback));
|
|
52
|
+
runCallback();
|
|
53
|
+
return cleanup;
|
|
54
|
+
}
|
|
55
|
+
const watch = Object.assign(watchImpl, { STOP });
|
|
56
|
+
//#endregion
|
|
57
|
+
Object.defineProperty(exports, "instance", {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
get: function() {
|
|
60
|
+
return instance;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
Object.defineProperty(exports, "watch", {
|
|
64
|
+
enumerable: true,
|
|
65
|
+
get: function() {
|
|
66
|
+
return watch;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=watch-CKWt788i.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-CKWt788i.cjs","names":["resolveInstanceKey","getRegistry","ALL_PATHS"],"sources":["../src/watch/watch.ts"],"sourcesContent":["import { ALL_PATHS } from '@dirtytalk/structural';\nimport { getRegistry } from '../registry';\nimport { resolveInstanceKey } from '../registry/acquire';\nimport type {\n ExtractArgs,\n StateContainerConstructor,\n StateContainerInstance,\n} from '../types/utilities';\n\nconst STOP: unique symbol = Symbol('watch.STOP');\ntype StopSymbol = typeof STOP;\n\nconst BLOC_REF_MARKER = Symbol('BlocRef');\n\n/**\n * Reference to a specific bloc instance, identified by class + the resolved\n * key derived from its `args`.\n */\nexport interface BlocRef<T extends StateContainerConstructor> {\n [BLOC_REF_MARKER]: true;\n blocClass: T;\n /** @internal The resolved instance key (derived from `args`). */\n instanceId: string;\n}\n\n/**\n * Create a reference to a specific bloc instance, identified by its `args`.\n * The key is derived the same way `useBloc`/`acquire` derive it.\n *\n * @example\n * ```ts\n * watch(instance(UserBloc, { userId: 'user-123' }), (userBloc) => {\n * console.log(userBloc.state.name);\n * });\n * ```\n */\nexport function instance<T extends StateContainerConstructor>(\n BlocClass: T,\n args?: ExtractArgs<T>,\n): BlocRef<T> {\n return {\n [BLOC_REF_MARKER]: true,\n blocClass: BlocClass,\n instanceId: resolveInstanceKey(BlocClass, args),\n };\n}\n\nfunction isBlocRef(\n input: unknown,\n): input is BlocRef<StateContainerConstructor> {\n return (\n typeof input === 'object' && input !== null && BLOC_REF_MARKER in input\n );\n}\n\ntype BlocInput = StateContainerConstructor | BlocRef<StateContainerConstructor>;\n\ntype ExtractInstance<T> =\n T extends BlocRef<infer C>\n ? InstanceType<C>\n : T extends StateContainerConstructor\n ? InstanceType<T>\n : never;\n\ntype ExtractInstances<T extends readonly BlocInput[]> = {\n [K in keyof T]: ExtractInstance<T[K]>;\n};\n\n/**\n * Watch function signature for single bloc.\n */\nexport interface WatchSingleFn {\n <T extends StateContainerConstructor>(\n bloc: T | BlocRef<T>,\n callback: (bloc: InstanceType<T>) => void | StopSymbol,\n ): () => void;\n\n STOP: StopSymbol;\n}\n\n/**\n * Watch function signature for multiple blocs.\n */\nexport interface WatchMultipleFn {\n <T extends readonly BlocInput[]>(\n blocs: T,\n callback: (blocs: ExtractInstances<T>) => void | StopSymbol,\n ): () => void;\n\n STOP: StopSymbol;\n}\n\n/**\n * Combined watch function type.\n */\nexport interface WatchFn extends WatchSingleFn {\n <T extends readonly BlocInput[]>(\n blocs: T,\n callback: (blocs: ExtractInstances<T>) => void | StopSymbol,\n ): () => void;\n}\n\nfunction resolveBloc(input: BlocInput): StateContainerInstance {\n const registry = getRegistry();\n if (isBlocRef(input)) {\n return registry.ensure(input.blocClass, input.instanceId);\n }\n return registry.ensure(\n input,\n registry.resolveKey(input, undefined, undefined),\n );\n}\n\nfunction isArray(input: unknown): input is readonly BlocInput[] {\n return Array.isArray(input);\n}\n\n/**\n * Watch one or more blocs for state changes.\n *\n * Thin wrapper around `container.channel.subscribe(ALL_PATHS, ...)`. The\n * callback fires once immediately, then on every state change of any of the\n * passed blocs. Returning `watch.STOP` from the callback tears down all\n * subscriptions.\n *\n * Note: subscriptions are microtask-deferred (per the DirtyChannel default\n * scheduler), so callbacks land asynchronously after `emit()`.\n *\n * @example Single bloc\n * ```ts\n * const unwatch = watch(UserBloc, (userBloc) => {\n * console.log(userBloc.state.name);\n * });\n * ```\n *\n * @example Multiple blocs\n * ```ts\n * const unwatch = watch(\n * [UserBloc, SettingsBloc] as const,\n * ([userBloc, settingsBloc]) => {\n * console.log(userBloc.state.name, settingsBloc.state.theme);\n * }\n * );\n * ```\n *\n * @example With specific instance\n * ```ts\n * const unwatch = watch(\n * instance(UserBloc, { userId: 'user-123' }),\n * (userBloc) => {\n * console.log(userBloc.state.name);\n * }\n * );\n * ```\n *\n * @example Stop watching from callback\n * ```ts\n * const unwatch = watch(UserBloc, (userBloc) => {\n * if (userBloc.state.done) {\n * return watch.STOP;\n * }\n * });\n * ```\n */\nfunction watchImpl<T extends StateContainerConstructor>(\n bloc: T | BlocRef<T>,\n callback: (bloc: InstanceType<T>) => void | StopSymbol,\n): () => void;\n\nfunction watchImpl<T extends readonly BlocInput[]>(\n blocs: T,\n callback: (blocs: ExtractInstances<T>) => void | StopSymbol,\n): () => void;\n\nfunction watchImpl(\n blocsOrBloc: BlocInput | readonly BlocInput[],\n callback: (blocsOrBloc: any) => void | StopSymbol,\n): () => void {\n const isSingle = !isArray(blocsOrBloc);\n const inputs = isSingle ? [blocsOrBloc] : blocsOrBloc;\n\n const instances = inputs.map(resolveBloc);\n\n let disposed = false;\n const subscriptions: (() => void)[] = [];\n\n const cleanup = () => {\n if (disposed) return;\n disposed = true;\n for (const unsub of subscriptions) unsub();\n subscriptions.length = 0;\n };\n\n const runCallback = () => {\n if (disposed) return;\n const arg = isSingle ? instances[0] : instances;\n const result = callback(arg);\n if (result === STOP) cleanup();\n };\n\n for (const inst of instances) {\n subscriptions.push(inst.channel.subscribe(() => ALL_PATHS, runCallback));\n }\n\n // Fire once immediately so the consumer sees the current state.\n runCallback();\n\n return cleanup;\n}\n\nexport const watch: WatchFn = Object.assign(watchImpl, { STOP }) as WatchFn;\n"],"mappings":";;;;AASA,MAAM,OAAsB,OAAO,YAAY;AAG/C,MAAM,kBAAkB,OAAO,SAAS;;;;;;;;;;;;AAwBxC,SAAgB,SACd,WACA,MACY;CACZ,OAAO;GACJ,kBAAkB;EACnB,WAAW;EACX,YAAYA,gBAAAA,mBAAmB,WAAW,IAAI;CAChD;AACF;AAEA,SAAS,UACP,OAC6C;CAC7C,OACE,OAAO,UAAU,YAAY,UAAU,QAAQ,mBAAmB;AAEtE;AAiDA,SAAS,YAAY,OAA0C;CAC7D,MAAM,WAAWC,eAAAA,YAAY;CAC7B,IAAI,UAAU,KAAK,GACjB,OAAO,SAAS,OAAO,MAAM,WAAW,MAAM,UAAU;CAE1D,OAAO,SAAS,OACd,OACA,SAAS,WAAW,OAAO,KAAA,GAAW,KAAA,CAAS,CACjD;AACF;AAEA,SAAS,QAAQ,OAA+C;CAC9D,OAAO,MAAM,QAAQ,KAAK;AAC5B;AA2DA,SAAS,UACP,aACA,UACY;CACZ,MAAM,WAAW,CAAC,QAAQ,WAAW;CAGrC,MAAM,aAFS,WAAW,CAAC,WAAW,IAAI,aAEjB,IAAI,WAAW;CAExC,IAAI,WAAW;CACf,MAAM,gBAAgC,CAAC;CAEvC,MAAM,gBAAgB;EACpB,IAAI,UAAU;EACd,WAAW;EACX,KAAK,MAAM,SAAS,eAAe,MAAM;EACzC,cAAc,SAAS;CACzB;CAEA,MAAM,oBAAoB;EACxB,IAAI,UAAU;EAGd,IADe,SADH,WAAW,UAAU,KAAK,SAE7B,MAAM,MAAM,QAAQ;CAC/B;CAEA,KAAK,MAAM,QAAQ,WACjB,cAAc,KAAK,KAAK,QAAQ,gBAAgBC,sBAAAA,WAAW,WAAW,CAAC;CAIzE,YAAY;CAEZ,OAAO;AACT;AAEA,MAAa,QAAiB,OAAO,OAAO,WAAW,EAAE,KAAK,CAAC"}
|