@blac/core 2.1.0 → 2.1.1
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/README.md +19 -29
- package/dist/StateContainer-BUyuxKb3.cjs +667 -0
- package/dist/StateContainer-BUyuxKb3.cjs.map +1 -0
- package/dist/StateContainer-B_7UHc3I.js +632 -0
- package/dist/StateContainer-B_7UHc3I.js.map +1 -0
- package/dist/StateContainer-Bh2ipNYj.js +632 -0
- package/dist/StateContainer-Bh2ipNYj.js.map +1 -0
- package/dist/StateContainer-ClzwKnQZ.cjs +667 -0
- package/dist/StateContainer-ClzwKnQZ.cjs.map +1 -0
- package/dist/StateContainer-DiQATvZh.js +632 -0
- package/dist/StateContainer-DiQATvZh.js.map +1 -0
- package/dist/StateContainer-j16zciex.cjs +667 -0
- package/dist/StateContainer-j16zciex.cjs.map +1 -0
- package/dist/{StateContainerRegistry-CSNm2Ws5.cjs → StateContainerRegistry-141uHhtF.cjs} +300 -397
- package/dist/StateContainerRegistry-141uHhtF.cjs.map +1 -0
- package/dist/{StateContainerRegistry-DVIBTxGZ.js → StateContainerRegistry-BH7aOMWV.js} +299 -406
- package/dist/StateContainerRegistry-BH7aOMWV.js.map +1 -0
- package/dist/StateContainerRegistry-BX-DlHXO.js +747 -0
- package/dist/StateContainerRegistry-BX-DlHXO.js.map +1 -0
- package/dist/StateContainerRegistry-Bf5VuVjm.js +747 -0
- package/dist/StateContainerRegistry-Bf5VuVjm.js.map +1 -0
- package/dist/{StateContainerRegistry-Dj77cok9.js → StateContainerRegistry-BsH_s0pJ.js} +303 -413
- package/dist/StateContainerRegistry-BsH_s0pJ.js.map +1 -0
- package/dist/StateContainerRegistry-BvSRfhKv.cjs +866 -0
- package/dist/StateContainerRegistry-BvSRfhKv.cjs.map +1 -0
- package/dist/StateContainerRegistry-C8jxrcqk.cjs +866 -0
- package/dist/StateContainerRegistry-C8jxrcqk.cjs.map +1 -0
- package/dist/{StateContainerRegistry-lIwo-0m3.cjs → StateContainerRegistry-CBLeHObO.cjs} +326 -418
- package/dist/StateContainerRegistry-CBLeHObO.cjs.map +1 -0
- package/dist/StateContainerRegistry-DjQQtlCW.cjs +870 -0
- package/dist/StateContainerRegistry-DjQQtlCW.cjs.map +1 -0
- package/dist/{StateContainerRegistry-D9BIRjwv.cjs → StateContainerRegistry-MkT0W4C2.cjs} +322 -411
- package/dist/StateContainerRegistry-MkT0W4C2.cjs.map +1 -0
- package/dist/StateContainerRegistry-gQbEutkN.js +751 -0
- package/dist/StateContainerRegistry-gQbEutkN.js.map +1 -0
- package/dist/{StateContainerRegistry-CvBOhAT2.js → StateContainerRegistry-vWgsD-RP.js} +277 -392
- package/dist/StateContainerRegistry-vWgsD-RP.js.map +1 -0
- package/dist/config.d.cts +8 -8
- package/dist/config.d.ts +8 -8
- package/dist/constants.d.cts +18 -28
- package/dist/constants.d.ts +18 -28
- package/dist/core/Cubit.d.ts +14 -10
- package/dist/core/StateContainer.d.ts +83 -62
- package/dist/core/StateContainerRegistry.d.ts +87 -166
- package/dist/core/meta.d.ts +34 -47
- package/dist/core/symbols.d.ts +21 -1
- package/dist/decorators/blac.d.ts +31 -28
- package/dist/{acquire-B1LYXSGj.js → ensure-Bi_yXk6f.js} +16 -5
- package/dist/ensure-Bi_yXk6f.js.map +1 -0
- package/dist/{ensure-r1C_7K6_.cjs → ensure-BjhbDW8Z.cjs} +203 -160
- package/dist/ensure-BjhbDW8Z.cjs.map +1 -0
- package/dist/{ensure-BSJHkUNX.js → ensure-BnVyd6s4.js} +297 -122
- package/dist/ensure-BnVyd6s4.js.map +1 -0
- package/dist/{acquire-BZIs6tpN.cjs → ensure-Bx41d-il.cjs} +23 -6
- package/dist/ensure-Bx41d-il.cjs.map +1 -0
- package/dist/{acquire-BRIJVJaA.js → ensure-C7UQ_mKM.js} +16 -5
- package/dist/ensure-C7UQ_mKM.js.map +1 -0
- package/dist/{ensure-B59ri8oo.js → ensure-CneMkpbI.js} +298 -122
- package/dist/ensure-CneMkpbI.js.map +1 -0
- package/dist/{ensure-B2DYCbbI.cjs → ensure-D15vGnk5.cjs} +328 -123
- package/dist/ensure-D15vGnk5.cjs.map +1 -0
- package/dist/{acquire-B1Wuqla6.cjs → ensure-D1D4WjYf.cjs} +23 -6
- package/dist/ensure-D1D4WjYf.cjs.map +1 -0
- package/dist/{ensure-BKdq5xsY.cjs → ensure-D3w6YGp9.cjs} +329 -123
- package/dist/ensure-D3w6YGp9.cjs.map +1 -0
- package/dist/{acquire-BJ3xUEmh.cjs → ensure-DBnuRJ0R.cjs} +23 -6
- package/dist/ensure-DBnuRJ0R.cjs.map +1 -0
- package/dist/{acquire-BdsVZBSe.js → ensure-NTB9nnnj.js} +16 -5
- package/dist/ensure-NTB9nnnj.js.map +1 -0
- package/dist/{ensure-D3WWWwMo.cjs → ensure-ORVw-WRE.cjs} +194 -155
- package/dist/ensure-ORVw-WRE.cjs.map +1 -0
- package/dist/{ensure-BEeY5Ab7.js → ensure-dsqWhIuO.js} +182 -147
- package/dist/ensure-dsqWhIuO.js.map +1 -0
- package/dist/{ensure-11-asM1e.js → ensure-k-6q7O25.js} +173 -150
- package/dist/ensure-k-6q7O25.js.map +1 -0
- package/dist/index.cjs +234 -87
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -13
- package/dist/index.d.ts +5 -13
- package/dist/index.js +211 -52
- package/dist/index.js.map +1 -1
- package/dist/internal.cjs +10 -0
- package/dist/internal.d.cts +8 -0
- package/dist/internal.d.ts +8 -0
- package/dist/internal.js +3 -0
- package/dist/plugin/BlacPlugin.d.ts +22 -24
- package/dist/plugin/PluginManager.d.ts +47 -60
- package/dist/plugins.cjs +383 -3
- package/dist/plugins.cjs.map +1 -0
- package/dist/plugins.d.cts +10 -5
- package/dist/plugins.d.ts +10 -5
- package/dist/plugins.js +381 -1
- package/dist/plugins.js.map +1 -0
- package/dist/registry/acquire.d.ts +2 -2
- package/dist/registry/config.d.ts +12 -0
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/management.d.ts +3 -0
- package/dist/registry/queries.d.ts +15 -0
- package/dist/registry/release.d.ts +4 -20
- package/dist/testing.cjs +38 -38
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +5 -11
- package/dist/testing.d.ts +5 -11
- package/dist/testing.js +28 -28
- package/dist/testing.js.map +1 -1
- package/dist/types/branded.d.ts +6 -13
- package/dist/types/utilities.d.ts +40 -31
- package/dist/utils/idGenerator.d.ts +6 -13
- package/dist/utils/static-props.d.ts +22 -29
- package/dist/utils/structural-key.d.ts +0 -22
- package/dist/watch/index.d.ts +1 -2
- package/dist/watch/watch.d.ts +17 -3
- package/package.json +28 -54
- package/dist/StateContainerRegistry-4Ljd9EJx.js +0 -1018
- package/dist/StateContainerRegistry-4Ljd9EJx.js.map +0 -1
- package/dist/StateContainerRegistry-8zNFMAf7.js +0 -1067
- package/dist/StateContainerRegistry-8zNFMAf7.js.map +0 -1
- package/dist/StateContainerRegistry-B1GYx9Xo.js +0 -975
- package/dist/StateContainerRegistry-B1GYx9Xo.js.map +0 -1
- package/dist/StateContainerRegistry-B_ViBLvJ.js +0 -975
- package/dist/StateContainerRegistry-B_ViBLvJ.js.map +0 -1
- package/dist/StateContainerRegistry-Bx2ly-ba.cjs +0 -1162
- package/dist/StateContainerRegistry-Bx2ly-ba.cjs.map +0 -1
- package/dist/StateContainerRegistry-C0dCNlTF.js +0 -1005
- package/dist/StateContainerRegistry-C0dCNlTF.js.map +0 -1
- package/dist/StateContainerRegistry-C75QpeaO.cjs +0 -1260
- package/dist/StateContainerRegistry-C75QpeaO.cjs.map +0 -1
- package/dist/StateContainerRegistry-CEWpc1bj.cjs +0 -1113
- package/dist/StateContainerRegistry-CEWpc1bj.cjs.map +0 -1
- package/dist/StateContainerRegistry-CS18y4au.cjs +0 -1163
- package/dist/StateContainerRegistry-CS18y4au.cjs.map +0 -1
- package/dist/StateContainerRegistry-CSNm2Ws5.cjs.map +0 -1
- package/dist/StateContainerRegistry-CchRjnjX.cjs +0 -1094
- package/dist/StateContainerRegistry-CchRjnjX.cjs.map +0 -1
- package/dist/StateContainerRegistry-CvBOhAT2.js.map +0 -1
- package/dist/StateContainerRegistry-D8nu7Z0T.js +0 -1068
- package/dist/StateContainerRegistry-D8nu7Z0T.js.map +0 -1
- package/dist/StateContainerRegistry-D9BIRjwv.cjs.map +0 -1
- package/dist/StateContainerRegistry-DJQqLrli.cjs +0 -1046
- package/dist/StateContainerRegistry-DJQqLrli.cjs.map +0 -1
- package/dist/StateContainerRegistry-DL5Ai7wh.js +0 -1153
- package/dist/StateContainerRegistry-DL5Ai7wh.js.map +0 -1
- package/dist/StateContainerRegistry-DVIBTxGZ.js.map +0 -1
- package/dist/StateContainerRegistry-DWOzx7Gd.js +0 -1154
- package/dist/StateContainerRegistry-DWOzx7Gd.js.map +0 -1
- package/dist/StateContainerRegistry-Dj77cok9.js.map +0 -1
- package/dist/StateContainerRegistry-FWKzPfS-.cjs +0 -1046
- package/dist/StateContainerRegistry-FWKzPfS-.cjs.map +0 -1
- package/dist/StateContainerRegistry-G81GcCRm.cjs +0 -1261
- package/dist/StateContainerRegistry-G81GcCRm.cjs.map +0 -1
- package/dist/StateContainerRegistry-lIwo-0m3.cjs.map +0 -1
- package/dist/acquire-B1LYXSGj.js.map +0 -1
- package/dist/acquire-B1Wuqla6.cjs.map +0 -1
- package/dist/acquire-BJ3xUEmh.cjs.map +0 -1
- package/dist/acquire-BP-ZfUH2.js +0 -35
- package/dist/acquire-BP-ZfUH2.js.map +0 -1
- package/dist/acquire-BRIJVJaA.js.map +0 -1
- package/dist/acquire-BZIs6tpN.cjs.map +0 -1
- package/dist/acquire-B_p1fNEh.cjs +0 -46
- package/dist/acquire-B_p1fNEh.cjs.map +0 -1
- package/dist/acquire-BdsVZBSe.js.map +0 -1
- package/dist/acquire-C3nOb3XR.cjs +0 -46
- package/dist/acquire-C3nOb3XR.cjs.map +0 -1
- package/dist/acquire-C4WAS13G.cjs +0 -46
- package/dist/acquire-C4WAS13G.cjs.map +0 -1
- package/dist/acquire-C7beGI55.cjs +0 -46
- package/dist/acquire-C7beGI55.cjs.map +0 -1
- package/dist/acquire-CE0uq0Dx.cjs +0 -46
- package/dist/acquire-CE0uq0Dx.cjs.map +0 -1
- package/dist/acquire-CU0u8BMn.js +0 -35
- package/dist/acquire-CU0u8BMn.js.map +0 -1
- package/dist/acquire-CbMz7gWs.cjs +0 -46
- package/dist/acquire-CbMz7gWs.cjs.map +0 -1
- package/dist/acquire-CkgLJ8WL.cjs +0 -46
- package/dist/acquire-CkgLJ8WL.cjs.map +0 -1
- package/dist/acquire-CwB083au.js +0 -35
- package/dist/acquire-CwB083au.js.map +0 -1
- package/dist/acquire-DHEOEVcj.cjs +0 -46
- package/dist/acquire-DHEOEVcj.cjs.map +0 -1
- package/dist/acquire-DTvfYJ0y.js +0 -35
- package/dist/acquire-DTvfYJ0y.js.map +0 -1
- package/dist/acquire-DXEQDZGr.js +0 -35
- package/dist/acquire-DXEQDZGr.js.map +0 -1
- package/dist/acquire-Dg-uXwjF.js +0 -35
- package/dist/acquire-Dg-uXwjF.js.map +0 -1
- package/dist/acquire-Don7499S.js +0 -35
- package/dist/acquire-Don7499S.js.map +0 -1
- package/dist/acquire-G8aB3GAx.js +0 -35
- package/dist/acquire-G8aB3GAx.js.map +0 -1
- package/dist/branded-BybA0_xw.cjs +0 -18
- package/dist/branded-BybA0_xw.cjs.map +0 -1
- package/dist/branded-DkbUzncc.js +0 -13
- package/dist/branded-DkbUzncc.js.map +0 -1
- package/dist/config-8pyOC5gv.js +0 -16
- package/dist/config-8pyOC5gv.js.map +0 -1
- package/dist/config-B1l8ZGlU.cjs +0 -32
- package/dist/config-B1l8ZGlU.cjs.map +0 -1
- package/dist/config-C1T6Jw7n.cjs +0 -32
- package/dist/config-C1T6Jw7n.cjs.map +0 -1
- package/dist/config-C7Ktkjh2.cjs +0 -32
- package/dist/config-C7Ktkjh2.cjs.map +0 -1
- package/dist/config-COT4Xkbc.js +0 -16
- package/dist/config-COT4Xkbc.js.map +0 -1
- package/dist/config-CzcoAvBo.js +0 -16
- package/dist/config-CzcoAvBo.js.map +0 -1
- package/dist/config-D2A8ZYRM.js +0 -16
- package/dist/config-D2A8ZYRM.js.map +0 -1
- package/dist/config-D34BkraU.cjs +0 -32
- package/dist/config-D34BkraU.cjs.map +0 -1
- package/dist/config-D6BoWWPv.js +0 -16
- package/dist/config-D6BoWWPv.js.map +0 -1
- package/dist/config-DOO82lbZ.js +0 -16
- package/dist/config-DOO82lbZ.js.map +0 -1
- package/dist/config-DVM_ESQt.js +0 -16
- package/dist/config-DVM_ESQt.js.map +0 -1
- package/dist/config-DVMnlHLv.cjs +0 -32
- package/dist/config-DVMnlHLv.cjs.map +0 -1
- package/dist/config-DWUq7zEQ.cjs +0 -32
- package/dist/config-DWUq7zEQ.cjs.map +0 -1
- package/dist/config-DXI3kzmA.js +0 -16
- package/dist/config-DXI3kzmA.js.map +0 -1
- package/dist/config-Dk1FxfXj.js +0 -16
- package/dist/config-Dk1FxfXj.js.map +0 -1
- package/dist/config-ZVy_yFZ3.js +0 -16
- package/dist/config-ZVy_yFZ3.js.map +0 -1
- package/dist/config-b2z51Y_C.cjs +0 -32
- package/dist/config-b2z51Y_C.cjs.map +0 -1
- package/dist/config-buwpT7l3.js +0 -16
- package/dist/config-buwpT7l3.js.map +0 -1
- package/dist/config-cwaTn5oy.cjs +0 -32
- package/dist/config-cwaTn5oy.cjs.map +0 -1
- package/dist/config-d9_U58ef.cjs +0 -32
- package/dist/config-d9_U58ef.cjs.map +0 -1
- package/dist/config-hWTayX76.cjs +0 -32
- package/dist/config-hWTayX76.cjs.map +0 -1
- package/dist/config-sCPKPYxZ.cjs +0 -32
- package/dist/config-sCPKPYxZ.cjs.map +0 -1
- package/dist/debug.cjs +0 -14
- package/dist/debug.d.cts +0 -34
- package/dist/debug.d.ts +0 -34
- package/dist/debug.js +0 -4
- package/dist/ensure-11-asM1e.js.map +0 -1
- package/dist/ensure-B1dEDsZV.cjs +0 -559
- package/dist/ensure-B1dEDsZV.cjs.map +0 -1
- package/dist/ensure-B2DYCbbI.cjs.map +0 -1
- package/dist/ensure-B59ri8oo.js.map +0 -1
- package/dist/ensure-B9oOqpOB.cjs +0 -558
- package/dist/ensure-B9oOqpOB.cjs.map +0 -1
- package/dist/ensure-BEeY5Ab7.js.map +0 -1
- package/dist/ensure-BKdq5xsY.cjs.map +0 -1
- package/dist/ensure-BSJHkUNX.js.map +0 -1
- package/dist/ensure-BfYnvAsI.js +0 -709
- package/dist/ensure-BfYnvAsI.js.map +0 -1
- package/dist/ensure-Bm91o37h.js +0 -536
- package/dist/ensure-Bm91o37h.js.map +0 -1
- package/dist/ensure-C1a8IFWy.js +0 -535
- package/dist/ensure-C1a8IFWy.js.map +0 -1
- package/dist/ensure-CLQEx0Nn.cjs +0 -528
- package/dist/ensure-CLQEx0Nn.cjs.map +0 -1
- package/dist/ensure-CPMiGvov.js +0 -493
- package/dist/ensure-CPMiGvov.js.map +0 -1
- package/dist/ensure-CQimeD0I.cjs +0 -559
- package/dist/ensure-CQimeD0I.cjs.map +0 -1
- package/dist/ensure-D3WWWwMo.cjs.map +0 -1
- package/dist/ensure-DEXSmA-N.js +0 -526
- package/dist/ensure-DEXSmA-N.js.map +0 -1
- package/dist/ensure-DTTTd2h8.js +0 -536
- package/dist/ensure-DTTTd2h8.js.map +0 -1
- package/dist/ensure-Dx86f80B.cjs +0 -567
- package/dist/ensure-Dx86f80B.cjs.map +0 -1
- package/dist/ensure-DzqGej43.js +0 -526
- package/dist/ensure-DzqGej43.js.map +0 -1
- package/dist/ensure-VuiNPccZ.cjs +0 -559
- package/dist/ensure-VuiNPccZ.cjs.map +0 -1
- package/dist/ensure-_Oh8XPm4.cjs +0 -732
- package/dist/ensure-_Oh8XPm4.cjs.map +0 -1
- package/dist/ensure-fsQMjaQL.cjs +0 -567
- package/dist/ensure-fsQMjaQL.cjs.map +0 -1
- package/dist/ensure-r1C_7K6_.cjs.map +0 -1
- package/dist/ensure-vxAGa2v3.js +0 -536
- package/dist/ensure-vxAGa2v3.js.map +0 -1
- package/dist/events.d.cts +0 -42
- package/dist/events.d.ts +0 -42
- package/dist/management-14vsHr4t.cjs +0 -85
- package/dist/management-14vsHr4t.cjs.map +0 -1
- package/dist/management-444tdCBG.js +0 -38
- package/dist/management-444tdCBG.js.map +0 -1
- package/dist/management-7jLjVHJd.js +0 -38
- package/dist/management-7jLjVHJd.js.map +0 -1
- package/dist/management-8x1OVMi6.js +0 -38
- package/dist/management-8x1OVMi6.js.map +0 -1
- package/dist/management-AFuqQEwz.js +0 -38
- package/dist/management-AFuqQEwz.js.map +0 -1
- package/dist/management-BZgsi29F.js +0 -38
- package/dist/management-BZgsi29F.js.map +0 -1
- package/dist/management-BodVLAfJ.cjs +0 -85
- package/dist/management-BodVLAfJ.cjs.map +0 -1
- package/dist/management-BqGBdL01.js +0 -38
- package/dist/management-BqGBdL01.js.map +0 -1
- package/dist/management-BvUAjril.js +0 -38
- package/dist/management-BvUAjril.js.map +0 -1
- package/dist/management-C-WGcwPD.js +0 -38
- package/dist/management-C-WGcwPD.js.map +0 -1
- package/dist/management-C2wv4vGS.cjs +0 -85
- package/dist/management-C2wv4vGS.cjs.map +0 -1
- package/dist/management-D2pjr38g.js +0 -38
- package/dist/management-D2pjr38g.js.map +0 -1
- package/dist/management-D5WsZoTV.js +0 -38
- package/dist/management-D5WsZoTV.js.map +0 -1
- package/dist/management-DAV9sN-k.cjs +0 -85
- package/dist/management-DAV9sN-k.cjs.map +0 -1
- package/dist/management-Df7Y2sF1.cjs +0 -85
- package/dist/management-Df7Y2sF1.cjs.map +0 -1
- package/dist/management-Dg2SxUb6.cjs +0 -85
- package/dist/management-Dg2SxUb6.cjs.map +0 -1
- package/dist/management-DwO0nBzL.cjs +0 -85
- package/dist/management-DwO0nBzL.cjs.map +0 -1
- package/dist/management-GcnNJjnm.cjs +0 -85
- package/dist/management-GcnNJjnm.cjs.map +0 -1
- package/dist/management-P_Vi_cvw.js +0 -38
- package/dist/management-P_Vi_cvw.js.map +0 -1
- package/dist/management-QWLpbXlW.cjs +0 -85
- package/dist/management-QWLpbXlW.cjs.map +0 -1
- package/dist/management-hkY13log.cjs +0 -85
- package/dist/management-hkY13log.cjs.map +0 -1
- package/dist/management-iE4x6IQY.cjs +0 -85
- package/dist/management-iE4x6IQY.cjs.map +0 -1
- package/dist/types.cjs +0 -3
- package/dist/types.d.cts +0 -8
- package/dist/types.d.ts +0 -8
- package/dist/types.js +0 -2
- package/dist/watch/observe.d.ts +0 -13
- package/dist/watch-B0pUfh-v.cjs +0 -119
- package/dist/watch-B0pUfh-v.cjs.map +0 -1
- package/dist/watch-B91opmva.cjs +0 -70
- package/dist/watch-B91opmva.cjs.map +0 -1
- package/dist/watch-BDiwCPmb.js +0 -108
- package/dist/watch-BDiwCPmb.js.map +0 -1
- package/dist/watch-BHfCtbn1.cjs +0 -119
- package/dist/watch-BHfCtbn1.cjs.map +0 -1
- package/dist/watch-BW7gYiDf.js +0 -108
- package/dist/watch-BW7gYiDf.js.map +0 -1
- package/dist/watch-BmC-Tyqg.js +0 -59
- package/dist/watch-BmC-Tyqg.js.map +0 -1
- package/dist/watch-Bx0y-Kcc.js +0 -108
- package/dist/watch-Bx0y-Kcc.js.map +0 -1
- package/dist/watch-CKWt788i.cjs +0 -70
- package/dist/watch-CKWt788i.cjs.map +0 -1
- package/dist/watch-CfrSSrRY.js +0 -59
- package/dist/watch-CfrSSrRY.js.map +0 -1
- package/dist/watch-Cnh3PtQA.cjs +0 -70
- package/dist/watch-Cnh3PtQA.cjs.map +0 -1
- package/dist/watch-D01MdwKy.js +0 -108
- package/dist/watch-D01MdwKy.js.map +0 -1
- package/dist/watch-D8hwbFU1.js +0 -59
- package/dist/watch-D8hwbFU1.js.map +0 -1
- package/dist/watch-DPVUwPUY.js +0 -59
- package/dist/watch-DPVUwPUY.js.map +0 -1
- package/dist/watch-DVmvZBMD.cjs +0 -70
- package/dist/watch-DVmvZBMD.cjs.map +0 -1
- package/dist/watch-DkDGmGAx.cjs +0 -119
- package/dist/watch-DkDGmGAx.cjs.map +0 -1
- package/dist/watch-DttHqefn.js +0 -108
- package/dist/watch-DttHqefn.js.map +0 -1
- package/dist/watch-DxdIZjpt.cjs +0 -119
- package/dist/watch-DxdIZjpt.cjs.map +0 -1
- package/dist/watch-DztcJuUy.cjs +0 -119
- package/dist/watch-DztcJuUy.cjs.map +0 -1
- package/dist/watch-IrR8G28N.js +0 -108
- package/dist/watch-IrR8G28N.js.map +0 -1
- package/dist/watch-aoNLQAXp.cjs +0 -119
- package/dist/watch-aoNLQAXp.cjs.map +0 -1
- package/dist/watch-entry.cjs +0 -4
- package/dist/watch-entry.d.cts +0 -24
- package/dist/watch-entry.d.ts +0 -24
- package/dist/watch-entry.js +0 -2
- package/dist/watch-hx0r92Zc.js +0 -108
- package/dist/watch-hx0r92Zc.js.map +0 -1
- package/dist/watch-lEco5Tbl.cjs +0 -119
- package/dist/watch-lEco5Tbl.cjs.map +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
const require_StateContainerRegistry = require("./StateContainerRegistry-
|
|
2
|
-
const require_config = require("./config-cwaTn5oy.cjs");
|
|
1
|
+
const require_StateContainerRegistry = require("./StateContainerRegistry-CBLeHObO.cjs");
|
|
3
2
|
let _dirtytalk_structural = require("@dirtytalk/structural");
|
|
4
3
|
//#region src/utils/idGenerator.ts
|
|
5
4
|
/**
|
|
@@ -27,86 +26,133 @@ function generateSimpleId(prefix, affix) {
|
|
|
27
26
|
return `${prefix}:${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
28
27
|
}
|
|
29
28
|
//#endregion
|
|
29
|
+
//#region src/registry/config.ts
|
|
30
|
+
let _registry = require_StateContainerRegistry.globalRegistry;
|
|
31
|
+
/**
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
34
|
+
function getRegistry() {
|
|
35
|
+
return _registry;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
function setRegistry(registry) {
|
|
41
|
+
_registry = registry;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
function getStats() {
|
|
47
|
+
return _registry.getStats();
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
30
50
|
//#region src/core/meta.ts
|
|
31
51
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
52
|
+
* `$blac` meta namespace for `StateContainer`.
|
|
53
|
+
*
|
|
54
|
+
* `BlacMeta` and `BlacHydration` are classes whose accessors live on the
|
|
55
|
+
* prototype and read the container through one `#private` back-reference, so
|
|
56
|
+
* a container allocates a single small object here instead of a literal with
|
|
57
|
+
* seven closures. Members are therefore not own-enumerable: `Object.keys` and
|
|
58
|
+
* `JSON.stringify` see an empty object. Read the fields by name.
|
|
59
|
+
*/
|
|
60
|
+
/**
|
|
61
|
+
* Non-enumerable brand carried on every `$blac` object. Used by the clobber
|
|
62
|
+
* guard in `StateContainer` to detect a subclass class-field shadowing the
|
|
63
|
+
* base's own `$blac` property, and by the meta tests. Intentionally NOT
|
|
64
|
+
* re-exported from the package barrel.
|
|
36
65
|
*/
|
|
37
66
|
const META_BRAND = Symbol("blac.meta");
|
|
38
67
|
const EMPTY_DEPS = /* @__PURE__ */ new Map();
|
|
39
68
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
|
|
45
|
-
|
|
69
|
+
* Hydration sub-surface of {@link BlacMeta}. Exposes the container's
|
|
70
|
+
* hydration state machine — the `begin`/`apply`/`finish`/`fail`/`wait`
|
|
71
|
+
* methods and the `status`/`error`/`isHydrated`/`changedWhileHydrating`
|
|
72
|
+
* getters — namespaced under `$blac`.
|
|
73
|
+
*/
|
|
74
|
+
var BlacHydration = class {
|
|
75
|
+
#c;
|
|
76
|
+
/** @internal */
|
|
77
|
+
constructor(container) {
|
|
78
|
+
this.#c = container;
|
|
79
|
+
Object.freeze(this);
|
|
80
|
+
}
|
|
81
|
+
get status() {
|
|
82
|
+
return this.#c._hydrationStatus;
|
|
83
|
+
}
|
|
84
|
+
get error() {
|
|
85
|
+
return this.#c._hydrationError;
|
|
86
|
+
}
|
|
87
|
+
get isHydrated() {
|
|
88
|
+
return this.#c._hydrationStatus === "hydrated";
|
|
89
|
+
}
|
|
90
|
+
get changedWhileHydrating() {
|
|
91
|
+
return this.#c._changedWhileHydrating;
|
|
92
|
+
}
|
|
93
|
+
begin() {
|
|
94
|
+
this.#c._beginHydration();
|
|
95
|
+
}
|
|
96
|
+
apply(next) {
|
|
97
|
+
return this.#c._applyHydratedState(next);
|
|
98
|
+
}
|
|
99
|
+
finish() {
|
|
100
|
+
this.#c._finishHydration();
|
|
101
|
+
}
|
|
102
|
+
fail(error) {
|
|
103
|
+
this.#c._failHydration(error);
|
|
104
|
+
}
|
|
105
|
+
wait() {
|
|
106
|
+
return this.#c._waitForHydration();
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* The reserved `$blac` instance member on every `StateContainer`. Gathers the
|
|
111
|
+
* container's identity/lifecycle/hydration surface (`name`, `id`, `debug`,
|
|
112
|
+
* `createdAt`, `disposed`, `dependencies`, and the hydration methods) under one
|
|
113
|
+
* namespace, keeping the generic names free for userland blocs.
|
|
46
114
|
*
|
|
47
|
-
*
|
|
48
|
-
* `
|
|
49
|
-
* `buildTrackedProxy`.
|
|
115
|
+
* Allocated once per container and frozen. Every accessor reads the
|
|
116
|
+
* container's current `_`-private fields live — values are never snapshotted.
|
|
50
117
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
return c._applyHydratedState(next);
|
|
90
|
-
},
|
|
91
|
-
finish() {
|
|
92
|
-
c._finishHydration();
|
|
93
|
-
},
|
|
94
|
-
fail(error) {
|
|
95
|
-
c._failHydration(error);
|
|
96
|
-
},
|
|
97
|
-
wait() {
|
|
98
|
-
return c._waitForHydration();
|
|
99
|
-
}
|
|
100
|
-
})
|
|
101
|
-
};
|
|
102
|
-
Object.defineProperty(meta, META_BRAND, {
|
|
103
|
-
value: true,
|
|
104
|
-
enumerable: false,
|
|
105
|
-
writable: false,
|
|
106
|
-
configurable: false
|
|
107
|
-
});
|
|
108
|
-
return Object.freeze(meta);
|
|
109
|
-
}
|
|
118
|
+
var BlacMeta = class {
|
|
119
|
+
#c;
|
|
120
|
+
#hydration;
|
|
121
|
+
/** @internal Called from the `StateContainer` field initializer. */
|
|
122
|
+
constructor(container) {
|
|
123
|
+
this.#c = container;
|
|
124
|
+
Object.freeze(this);
|
|
125
|
+
}
|
|
126
|
+
get name() {
|
|
127
|
+
return this.#c._name;
|
|
128
|
+
}
|
|
129
|
+
get id() {
|
|
130
|
+
const c = this.#c;
|
|
131
|
+
return c._instanceId ??= generateSimpleId(require_StateContainerRegistry.getBlacName(c.constructor), "main");
|
|
132
|
+
}
|
|
133
|
+
get debug() {
|
|
134
|
+
return this.#c._debug;
|
|
135
|
+
}
|
|
136
|
+
get createdAt() {
|
|
137
|
+
return this.#c._createdAt;
|
|
138
|
+
}
|
|
139
|
+
get disposed() {
|
|
140
|
+
return this.#c._disposed;
|
|
141
|
+
}
|
|
142
|
+
get dependencies() {
|
|
143
|
+
return this.#c._dependencies ?? EMPTY_DEPS;
|
|
144
|
+
}
|
|
145
|
+
/** Built on first access; identity-stable afterwards. */
|
|
146
|
+
get hydration() {
|
|
147
|
+
return this.#hydration ??= new BlacHydration(this.#c);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
Object.defineProperty(BlacMeta.prototype, META_BRAND, {
|
|
151
|
+
value: true,
|
|
152
|
+
enumerable: false,
|
|
153
|
+
writable: false,
|
|
154
|
+
configurable: false
|
|
155
|
+
});
|
|
110
156
|
//#endregion
|
|
111
157
|
//#region src/core/StateContainer.ts
|
|
112
158
|
/**
|
|
@@ -117,6 +163,8 @@ function createMeta(container) {
|
|
|
117
163
|
* @internal — exported for `@blac/react`; not part of the public API.
|
|
118
164
|
*/
|
|
119
165
|
const DEP_BRAND = Symbol("blac.depHandle");
|
|
166
|
+
const EMPTY_RECORD = Object.freeze({});
|
|
167
|
+
let deactivatedReason;
|
|
120
168
|
/**
|
|
121
169
|
* Shallow per-key `Object.is` comparison of two plain records. Keys are
|
|
122
170
|
* considered: a key present in one but not the other (regardless of value)
|
|
@@ -173,7 +221,7 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
173
221
|
const owners = this._depsByOwner ??= /* @__PURE__ */ new Map();
|
|
174
222
|
const prevSlice = owners.get(ownerId);
|
|
175
223
|
if (prevSlice && shallowEqualRecord(prevSlice, slice)) return;
|
|
176
|
-
if (
|
|
224
|
+
if (require_StateContainerRegistry.IS_DEV) for (const key of Object.keys(slice)) for (const [otherOwner, otherSlice] of owners) {
|
|
177
225
|
if (otherOwner === ownerId) continue;
|
|
178
226
|
if (key in otherSlice && otherSlice[key] !== slice[key]) console.warn(`[${this._name}] multiple owners writing dep \`${String(key)}\`; last write wins`);
|
|
179
227
|
}
|
|
@@ -196,6 +244,34 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
196
244
|
[require_StateContainerRegistry.ON_DISPOSE](handler) {
|
|
197
245
|
return this.onSystemEvent("dispose", handler);
|
|
198
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* @internal Drive the 0↔1 ownership transition. Idempotent: repeated calls
|
|
249
|
+
* with the same value are no-ops, so the registry can call it from every
|
|
250
|
+
* acquire/release without tracking edges itself.
|
|
251
|
+
*
|
|
252
|
+
* Returns which real transition (if any) just happened, so the registry can
|
|
253
|
+
* emit the matching `activated`/`deactivated` plugin event without exposing
|
|
254
|
+
* `_activation` itself — `'none'` for an idempotent no-op call.
|
|
255
|
+
*/
|
|
256
|
+
[require_StateContainerRegistry.SET_ACTIVE](active) {
|
|
257
|
+
if (this._disposed) return "none";
|
|
258
|
+
if (active === (this._activation !== null)) return "none";
|
|
259
|
+
if (active) {
|
|
260
|
+
this._activation = new AbortController();
|
|
261
|
+
this.onActivate(this._activation.signal);
|
|
262
|
+
return {
|
|
263
|
+
kind: "activated",
|
|
264
|
+
signal: this._activation.signal
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
this._abortActivation();
|
|
268
|
+
this.onDeactivate();
|
|
269
|
+
return "deactivated";
|
|
270
|
+
}
|
|
271
|
+
_abortActivation() {
|
|
272
|
+
this._activation?.abort(deactivatedReason ??= new DOMException("The bloc was deactivated", "AbortError"));
|
|
273
|
+
this._activation = null;
|
|
274
|
+
}
|
|
199
275
|
reconcileDeps() {
|
|
200
276
|
const prev = this._deps;
|
|
201
277
|
const next = {};
|
|
@@ -207,6 +283,31 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
207
283
|
this._registry.emit("depsChanged", this, prev, next);
|
|
208
284
|
}
|
|
209
285
|
onDepsChanged(_next, _prev) {}
|
|
286
|
+
get state() {
|
|
287
|
+
return this._stateOverride ?? super.state;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* @internal Run `fn` (with `this` = this instance, so a prototype getter can
|
|
291
|
+
* be passed directly) while `state` reports `tracked` and dep handles read
|
|
292
|
+
* off `this` route through `onDepHandle`. Restored in `finally`, and
|
|
293
|
+
* nestable — getters reading other getters stay in tracked context.
|
|
294
|
+
*
|
|
295
|
+
* The dep hook lives here rather than in the adapter's proxy because getters
|
|
296
|
+
* now run with `this` = the real instance (so ES `#private` works), which
|
|
297
|
+
* means a `this.someDep` read never passes through the proxy's trap.
|
|
298
|
+
*/
|
|
299
|
+
[require_StateContainerRegistry.WITH_TRACKED_STATE](tracked, fn, onDepHandle) {
|
|
300
|
+
const prevState = this._stateOverride;
|
|
301
|
+
const prevHook = this._depHandleHook;
|
|
302
|
+
this._stateOverride = tracked;
|
|
303
|
+
this._depHandleHook = onDepHandle;
|
|
304
|
+
try {
|
|
305
|
+
return fn.call(this);
|
|
306
|
+
} finally {
|
|
307
|
+
this._stateOverride = prevState;
|
|
308
|
+
this._depHandleHook = prevHook;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
210
311
|
get args() {
|
|
211
312
|
return this._config.args;
|
|
212
313
|
}
|
|
@@ -241,6 +342,8 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
241
342
|
};
|
|
242
343
|
const handle = {
|
|
243
344
|
track: (options) => {
|
|
345
|
+
const wrapped = this._depHandleHook?.(handle);
|
|
346
|
+
if (wrapped !== void 0 && wrapped !== handle) return wrapped.track(options);
|
|
244
347
|
const instance = resolve(options?.args);
|
|
245
348
|
return [instance.state, instance];
|
|
246
349
|
},
|
|
@@ -260,40 +363,46 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
260
363
|
constructor(initialState, options) {
|
|
261
364
|
super(initialState, options);
|
|
262
365
|
this._depsByOwner = null;
|
|
263
|
-
this._deps =
|
|
366
|
+
this._deps = EMPTY_RECORD;
|
|
264
367
|
this._disposed = false;
|
|
265
368
|
this._hydrationStatus = "idle";
|
|
266
369
|
this._changedWhileHydrating = false;
|
|
267
370
|
this._hydrationPromise = null;
|
|
268
371
|
this._hydrationPromiseSettled = false;
|
|
269
|
-
this._config =
|
|
372
|
+
this._config = EMPTY_RECORD;
|
|
270
373
|
this._initCalled = false;
|
|
374
|
+
this._activation = null;
|
|
271
375
|
this._emitWindowStart = 0;
|
|
272
376
|
this._emitCount = 0;
|
|
273
377
|
this._emitRateWarned = false;
|
|
274
|
-
this._systemEventHandlers =
|
|
378
|
+
this._systemEventHandlers = null;
|
|
275
379
|
this._dependencies = null;
|
|
276
380
|
this._pendingChange = null;
|
|
277
381
|
this._bridgeUnsub = null;
|
|
278
|
-
this._registry =
|
|
382
|
+
this._registry = getRegistry();
|
|
279
383
|
this._equalityFn = require_StateContainerRegistry.getBlacConfig().equality;
|
|
280
|
-
this._name = this.constructor
|
|
384
|
+
this._name = require_StateContainerRegistry.getBlacName(this.constructor);
|
|
281
385
|
this._debug = false;
|
|
282
|
-
this._instanceId = generateSimpleId(this.constructor.name, "main");
|
|
283
386
|
this._createdAt = Date.now();
|
|
284
|
-
this.$blac =
|
|
387
|
+
this.$blac = new BlacMeta(this);
|
|
285
388
|
this.onSystemEvent = (event, handler) => {
|
|
286
|
-
|
|
389
|
+
const all = this._systemEventHandlers ??= /* @__PURE__ */ new Map();
|
|
390
|
+
let handlers = all.get(event);
|
|
287
391
|
if (!handlers) {
|
|
288
392
|
handlers = /* @__PURE__ */ new Set();
|
|
289
|
-
|
|
393
|
+
all.set(event, handlers);
|
|
290
394
|
}
|
|
291
395
|
handlers.add(handler);
|
|
396
|
+
if (event === "stateChanged" && this._bridgeUnsub === null) this._bridgeUnsub = this.channel.subscribe(() => _dirtytalk_structural.ALL_PATHS, () => this._drainPending());
|
|
292
397
|
return () => {
|
|
293
398
|
handlers?.delete(handler);
|
|
399
|
+
if (event === "stateChanged" && handlers?.size === 0) {
|
|
400
|
+
this._bridgeUnsub?.();
|
|
401
|
+
this._bridgeUnsub = null;
|
|
402
|
+
this._pendingChange = null;
|
|
403
|
+
}
|
|
294
404
|
};
|
|
295
405
|
};
|
|
296
|
-
this._bridgeUnsub = this.channel.subscribe(() => _dirtytalk_structural.ALL_PATHS, () => this._drainPending());
|
|
297
406
|
}
|
|
298
407
|
/**
|
|
299
408
|
* Called once after construction with the args passed at acquire time, before the first
|
|
@@ -302,6 +411,24 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
302
411
|
*/
|
|
303
412
|
init(_args) {}
|
|
304
413
|
/**
|
|
414
|
+
* Called when this instance goes from unowned to owned (first ref or first
|
|
415
|
+
* `depend()` dependent). Override to start work that should only run while
|
|
416
|
+
* something is actually using the instance — fetches, timers, listeners.
|
|
417
|
+
*
|
|
418
|
+
* `signal` aborts on the matching {@link onDeactivate} and on dispose, so
|
|
419
|
+
* async work started here can be cancelled without extra bookkeeping.
|
|
420
|
+
*
|
|
421
|
+
* Runs before the first `useBlocDeps` slice is applied, so `this.deps` is
|
|
422
|
+
* empty on first activation — use `onDepsChanged` for deps-driven work.
|
|
423
|
+
*/
|
|
424
|
+
onActivate(_signal) {}
|
|
425
|
+
/**
|
|
426
|
+
* Called when this instance goes from owned back to unowned while surviving
|
|
427
|
+
* in the registry (i.e. `keepAlive`). A disposed instance does NOT get this
|
|
428
|
+
* callback — `dispose()` is the teardown path for that case.
|
|
429
|
+
*/
|
|
430
|
+
onDeactivate() {}
|
|
431
|
+
/**
|
|
305
432
|
* @internal Framework-only configuration entry point (registry + testing
|
|
306
433
|
* helpers). Writes the `_`-private identity fields directly, resolves
|
|
307
434
|
* per-class equality, emits the registry `created` event, and runs `init()`
|
|
@@ -309,17 +436,19 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
309
436
|
*/
|
|
310
437
|
[require_StateContainerRegistry.INIT_CONFIG](config) {
|
|
311
438
|
this._config = { ...config };
|
|
312
|
-
|
|
439
|
+
const className = require_StateContainerRegistry.getBlacName(this.constructor);
|
|
440
|
+
this._name = this._config.name || className;
|
|
313
441
|
this._debug = this._config.debug ?? false;
|
|
314
|
-
this._instanceId = generateSimpleId(
|
|
442
|
+
this._instanceId = generateSimpleId(className, this._config.instanceId);
|
|
443
|
+
this._registry = this._config.registry ?? this._registry;
|
|
315
444
|
const perClass = require_StateContainerRegistry.getClassEquality(this.constructor);
|
|
316
445
|
this._equalityFn = perClass ?? require_StateContainerRegistry.getBlacConfig().equality;
|
|
317
|
-
this._registry.emit("created", this);
|
|
318
446
|
if (!this._initCalled) {
|
|
319
447
|
this._initCalled = true;
|
|
320
448
|
this.init(this._config.args);
|
|
321
449
|
}
|
|
322
|
-
|
|
450
|
+
this._registry.emit("created", this);
|
|
451
|
+
if (require_StateContainerRegistry.IS_DEV) {
|
|
323
452
|
if (!this.$blac?.[META_BRAND]) console.warn(`[blac] ${this.constructor.name} appears to declare its own \`$blac\` member, which shadows the reserved meta namespace. \`$blac\` is reserved by StateContainer — remove the subclass field.`);
|
|
324
453
|
}
|
|
325
454
|
}
|
|
@@ -335,9 +464,11 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
335
464
|
this.emitSystemEvent("dispose", void 0);
|
|
336
465
|
this._bridgeUnsub?.();
|
|
337
466
|
this._bridgeUnsub = null;
|
|
338
|
-
this.
|
|
467
|
+
this._abortActivation();
|
|
468
|
+
this._systemEventHandlers = null;
|
|
339
469
|
this._pendingChange = null;
|
|
340
470
|
this._registry.emit("disposed", this);
|
|
471
|
+
super.dispose();
|
|
341
472
|
if (this._debug) console.log(`[${this._name}] Disposed successfully`);
|
|
342
473
|
}
|
|
343
474
|
emit(next) {
|
|
@@ -353,22 +484,17 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
353
484
|
* preserved.
|
|
354
485
|
*/
|
|
355
486
|
patch(partial) {
|
|
356
|
-
if (this._disposed)
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
const prev = this.state;
|
|
360
|
-
let allEqual = true;
|
|
361
|
-
for (const key of partialKeys) if (!Object.is(prev[key], partial[key])) {
|
|
362
|
-
allEqual = false;
|
|
363
|
-
break;
|
|
487
|
+
if (this._disposed) {
|
|
488
|
+
this._warnDisposedMutation("patch");
|
|
489
|
+
return;
|
|
364
490
|
}
|
|
365
|
-
|
|
366
|
-
if (process.env.NODE_ENV !== "production") this._checkEmitRate();
|
|
491
|
+
const prev = super.state;
|
|
367
492
|
super.patch(partial);
|
|
368
|
-
const next =
|
|
493
|
+
const next = super.state;
|
|
369
494
|
if (Object.is(prev, next)) return;
|
|
495
|
+
if (require_StateContainerRegistry.IS_DEV && !this._emitRateWarned) this._checkEmitRate();
|
|
370
496
|
if (this._hydrationStatus === "hydrating") this._changedWhileHydrating = true;
|
|
371
|
-
if (this._pendingChange) this._pendingChange.next = next;
|
|
497
|
+
if (this._bridgeUnsub !== null) if (this._pendingChange) this._pendingChange.next = next;
|
|
372
498
|
else this._pendingChange = {
|
|
373
499
|
prev,
|
|
374
500
|
next
|
|
@@ -376,13 +502,16 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
376
502
|
if (this._registry.hasStateChangedListeners) this._registry.notifyStateChanged(this, prev, next);
|
|
377
503
|
}
|
|
378
504
|
applyState(next, source) {
|
|
379
|
-
if (this._disposed)
|
|
380
|
-
|
|
505
|
+
if (this._disposed) {
|
|
506
|
+
this._warnDisposedMutation("emit");
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
const prev = super.state;
|
|
381
510
|
if (prev === next) return;
|
|
382
511
|
if (this._equalityFn(prev, next)) return;
|
|
383
|
-
if (
|
|
512
|
+
if (require_StateContainerRegistry.IS_DEV && !this._emitRateWarned) this._checkEmitRate();
|
|
384
513
|
if (this._hydrationStatus === "hydrating" && source !== "hydration") this._changedWhileHydrating = true;
|
|
385
|
-
if (this._pendingChange) this._pendingChange.next = next;
|
|
514
|
+
if (this._bridgeUnsub !== null) if (this._pendingChange) this._pendingChange.next = next;
|
|
386
515
|
else this._pendingChange = {
|
|
387
516
|
prev,
|
|
388
517
|
next
|
|
@@ -399,7 +528,7 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
399
528
|
const pending = this._pendingChange;
|
|
400
529
|
if (!pending) return;
|
|
401
530
|
this._pendingChange = null;
|
|
402
|
-
const handlers = this._systemEventHandlers
|
|
531
|
+
const handlers = this._systemEventHandlers?.get("stateChanged");
|
|
403
532
|
if (handlers && handlers.size > 0) {
|
|
404
533
|
const payload = {
|
|
405
534
|
state: pending.next,
|
|
@@ -428,9 +557,15 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
428
557
|
this.ensureHydrationPromise();
|
|
429
558
|
this.setHydrationStatus("hydrating");
|
|
430
559
|
}
|
|
560
|
+
_warnDisposedMutation(op) {
|
|
561
|
+
if (require_StateContainerRegistry.IS_DEV) console.warn(`[blac] ${this._name}: ${op}() after dispose ignored. This usually means an async method resolved after the last consumer unmounted. Guard with \`if (this.$blac.disposed) return\` after each \`await\`, or abort the work from \`onSystemEvent('dispose', ...)\`.`);
|
|
562
|
+
}
|
|
431
563
|
_applyHydratedState(next) {
|
|
432
564
|
if (this._disposed) return false;
|
|
433
|
-
if (this._hydrationStatus !== "hydrating" || this._changedWhileHydrating)
|
|
565
|
+
if (this._hydrationStatus !== "hydrating" || this._changedWhileHydrating) {
|
|
566
|
+
if (require_StateContainerRegistry.IS_DEV && this._changedWhileHydrating) console.warn(`[blac] ${this._name}: persisted state discarded because the container emitted while hydrating.`);
|
|
567
|
+
return false;
|
|
568
|
+
}
|
|
434
569
|
this.applyState(next, "hydration");
|
|
435
570
|
return true;
|
|
436
571
|
}
|
|
@@ -492,7 +627,7 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
492
627
|
this._rejectHydrationPromise?.(error);
|
|
493
628
|
}
|
|
494
629
|
emitSystemEvent(event, payload) {
|
|
495
|
-
const handlers = this._systemEventHandlers
|
|
630
|
+
const handlers = this._systemEventHandlers?.get(event);
|
|
496
631
|
if (!handlers) return;
|
|
497
632
|
for (const handler of handlers) try {
|
|
498
633
|
handler(payload);
|
|
@@ -508,7 +643,7 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
508
643
|
*/
|
|
509
644
|
_checkEmitRate() {
|
|
510
645
|
const limit = require_StateContainerRegistry.getBlacConfig().maxEmitsPerSecond;
|
|
511
|
-
if (!(limit > 0) || !Number.isFinite(limit)
|
|
646
|
+
if (!(limit > 0) || !Number.isFinite(limit)) return;
|
|
512
647
|
const now = Date.now();
|
|
513
648
|
if (now - this._emitWindowStart >= 1e3) {
|
|
514
649
|
this._emitWindowStart = now;
|
|
@@ -525,19 +660,60 @@ var StateContainer = class extends _dirtytalk_structural.StructuralContainer {
|
|
|
525
660
|
//#endregion
|
|
526
661
|
//#region src/core/Cubit.ts
|
|
527
662
|
/**
|
|
528
|
-
* `Cubit<S>` is a `StateContainer<S>`
|
|
529
|
-
*
|
|
530
|
-
*
|
|
531
|
-
* `
|
|
532
|
-
*
|
|
663
|
+
* `Cubit<S>` is a `StateContainer<S>` that exposes mutation publicly.
|
|
664
|
+
*
|
|
665
|
+
* That is the whole difference, and it is a real one: on `StateContainer`
|
|
666
|
+
* `emit` / `patch` / `update` are `protected`, so a container mutates itself
|
|
667
|
+
* from its own methods and callers go through the API it chooses to publish.
|
|
668
|
+
* `Cubit` re-declares the three as `public` for the cases where a caller
|
|
669
|
+
* legitimately drives state from outside — test helpers, devtools
|
|
670
|
+
* time-travel, benchmarks.
|
|
533
671
|
*
|
|
534
|
-
*
|
|
535
|
-
*
|
|
536
|
-
* `StructuralContainer` (path-diffed, microtask-flushed). A caller that
|
|
537
|
-
* wants "skip if no real change" patch semantics can wrap `patch`
|
|
538
|
-
* themselves or call `emit` after a manual equality check.
|
|
672
|
+
* Reach for `StateContainer` when business logic should live in the class,
|
|
673
|
+
* and `Cubit` when the caller owns the transitions.
|
|
539
674
|
*/
|
|
540
|
-
var Cubit = class extends StateContainer {
|
|
675
|
+
var Cubit = class extends StateContainer {
|
|
676
|
+
emit(next) {
|
|
677
|
+
super.emit(next);
|
|
678
|
+
}
|
|
679
|
+
patch(partial) {
|
|
680
|
+
super.patch(partial);
|
|
681
|
+
}
|
|
682
|
+
update(fn) {
|
|
683
|
+
super.update(fn);
|
|
684
|
+
}
|
|
685
|
+
};
|
|
686
|
+
//#endregion
|
|
687
|
+
//#region src/registry/acquire.ts
|
|
688
|
+
/**
|
|
689
|
+
* Acquire an instance with ref tracking (ownership semantics). Instance
|
|
690
|
+
* identity is derived purely from `args` (via the class's `static key(args)`,
|
|
691
|
+
* a structural hash of `args`, or the default sentinel when there are none).
|
|
692
|
+
*
|
|
693
|
+
* @param BlocClass - The StateContainer class constructor
|
|
694
|
+
* @param opts - `args` derives the instance key; `refId` names the reference
|
|
695
|
+
* for debugging and is auto-generated when omitted.
|
|
696
|
+
*/
|
|
697
|
+
function acquire(BlocClass, opts) {
|
|
698
|
+
const registry = getRegistry();
|
|
699
|
+
const key = registry.resolveKey(BlocClass, void 0, opts?.args);
|
|
700
|
+
return registry.acquire(BlocClass, key, {
|
|
701
|
+
canCreate: true,
|
|
702
|
+
countRef: true,
|
|
703
|
+
refId: opts?.refId,
|
|
704
|
+
args: opts?.args
|
|
705
|
+
});
|
|
706
|
+
}
|
|
707
|
+
/**
|
|
708
|
+
* Resolve the storage key an instance would be acquired under, given its
|
|
709
|
+
* construction `args`. This is the canonical key-computation path. Callers that
|
|
710
|
+
* both acquire and release against the `@internal` registry tier (e.g.
|
|
711
|
+
* `@blac/react` `useBloc`) must use this once and pass the same resolved key to
|
|
712
|
+
* both, so the ref is dropped under the key it was taken.
|
|
713
|
+
*/
|
|
714
|
+
function resolveInstanceKey(BlocClass, args) {
|
|
715
|
+
return getRegistry().resolveKey(BlocClass, void 0, args);
|
|
716
|
+
}
|
|
541
717
|
//#endregion
|
|
542
718
|
//#region src/registry/ensure.ts
|
|
543
719
|
/**
|
|
@@ -545,7 +721,7 @@ var Cubit = class extends StateContainer {};
|
|
|
545
721
|
* identity is derived purely from `args`, matching `acquire`.
|
|
546
722
|
*/
|
|
547
723
|
function ensure(BlocClass, opts) {
|
|
548
|
-
const registry =
|
|
724
|
+
const registry = getRegistry();
|
|
549
725
|
const key = registry.resolveKey(BlocClass, void 0, opts?.args);
|
|
550
726
|
return registry.ensure(BlocClass, key, opts?.args);
|
|
551
727
|
}
|
|
@@ -568,11 +744,41 @@ Object.defineProperty(exports, "StateContainer", {
|
|
|
568
744
|
return StateContainer;
|
|
569
745
|
}
|
|
570
746
|
});
|
|
747
|
+
Object.defineProperty(exports, "acquire", {
|
|
748
|
+
enumerable: true,
|
|
749
|
+
get: function() {
|
|
750
|
+
return acquire;
|
|
751
|
+
}
|
|
752
|
+
});
|
|
571
753
|
Object.defineProperty(exports, "ensure", {
|
|
572
754
|
enumerable: true,
|
|
573
755
|
get: function() {
|
|
574
756
|
return ensure;
|
|
575
757
|
}
|
|
576
758
|
});
|
|
759
|
+
Object.defineProperty(exports, "getRegistry", {
|
|
760
|
+
enumerable: true,
|
|
761
|
+
get: function() {
|
|
762
|
+
return getRegistry;
|
|
763
|
+
}
|
|
764
|
+
});
|
|
765
|
+
Object.defineProperty(exports, "getStats", {
|
|
766
|
+
enumerable: true,
|
|
767
|
+
get: function() {
|
|
768
|
+
return getStats;
|
|
769
|
+
}
|
|
770
|
+
});
|
|
771
|
+
Object.defineProperty(exports, "resolveInstanceKey", {
|
|
772
|
+
enumerable: true,
|
|
773
|
+
get: function() {
|
|
774
|
+
return resolveInstanceKey;
|
|
775
|
+
}
|
|
776
|
+
});
|
|
777
|
+
Object.defineProperty(exports, "setRegistry", {
|
|
778
|
+
enumerable: true,
|
|
779
|
+
get: function() {
|
|
780
|
+
return setRegistry;
|
|
781
|
+
}
|
|
782
|
+
});
|
|
577
783
|
|
|
578
|
-
//# sourceMappingURL=ensure-
|
|
784
|
+
//# sourceMappingURL=ensure-D3w6YGp9.cjs.map
|