@blac/core 2.0.13 → 2.0.14
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 +85 -3
- package/dist/Cubit-9jal5zdZ.cjs +1 -1
- package/dist/Cubit-BAUPiUF7.cjs +359 -286
- package/dist/Cubit-BBKF3PIg.js +269 -230
- package/dist/Cubit-BC70gaiA.js +453 -0
- package/dist/Cubit-BC70gaiA.js.map +1 -0
- package/dist/Cubit-BOgUZva7.js +342 -266
- package/dist/Cubit-BOxMvpfc.js +273 -232
- package/dist/Cubit-BTznt8zg.js +1 -1
- package/dist/Cubit-BogJXkLm.js +260 -225
- package/dist/Cubit-C-8R_8db.cjs +475 -0
- package/dist/Cubit-C-8R_8db.cjs.map +1 -0
- package/dist/Cubit-C3Mw3EoO.cjs +401 -0
- package/dist/Cubit-C3Mw3EoO.cjs.map +1 -0
- package/dist/Cubit-CO8Fr72L.cjs +447 -0
- package/dist/Cubit-CO8Fr72L.cjs.map +1 -0
- package/dist/Cubit-COfHT1Bm.cjs +300 -259
- package/dist/Cubit-CROWjjs9.js +481 -0
- package/dist/Cubit-CROWjjs9.js.map +1 -0
- package/dist/Cubit-CWP8Ddzx.cjs +510 -0
- package/dist/Cubit-CWP8Ddzx.cjs.map +1 -0
- package/dist/Cubit-CXxh9iol.js +284 -242
- package/dist/Cubit-CYOWfzQt.cjs +297 -254
- package/dist/Cubit-CZaf_fp4.cjs +1 -1
- package/dist/Cubit-C_dUEUdd.cjs +359 -286
- package/dist/Cubit-C_rxRCTN.cjs +523 -0
- package/dist/Cubit-C_rxRCTN.cjs.map +1 -0
- package/dist/Cubit-CcKgMEBO.js +281 -239
- package/dist/Cubit-CfT6Y1jl.js +328 -280
- package/dist/Cubit-CynJruuO.js +369 -0
- package/dist/Cubit-CynJruuO.js.map +1 -0
- package/dist/Cubit-D2vQ6nMb.js +342 -266
- package/dist/Cubit-D7jOZCoZ.js +342 -266
- package/dist/Cubit-D9j3IGPc.cjs +523 -0
- package/dist/Cubit-D9j3IGPc.cjs.map +1 -0
- package/dist/Cubit-DKEY9WYq.cjs +276 -240
- package/dist/Cubit-DMV_0TCp.js +481 -0
- package/dist/Cubit-DMV_0TCp.js.map +1 -0
- package/dist/Cubit-DP5DXPUK.js +342 -266
- package/dist/Cubit-DRFkzD2h.js +426 -0
- package/dist/Cubit-DRFkzD2h.js.map +1 -0
- package/dist/Cubit-DbnhTUaZ.cjs +359 -286
- package/dist/Cubit-DrqG3SP3.cjs +349 -300
- package/dist/Cubit-DsDkCo42.cjs +292 -250
- package/dist/Cubit-DwRw1E9D.cjs +289 -247
- package/dist/Cubit-Dw_kFBgc.js +1 -1
- package/dist/Cubit-KiXZCubP.cjs +1 -1
- package/dist/Cubit-Ksj7G4uR.js +342 -266
- package/dist/Cubit-MkjbpcPf.cjs +359 -286
- package/dist/Cubit-NRhvdDQ6.js +279 -239
- package/dist/Cubit-PMTXxI_u.js +1 -1
- package/dist/Cubit-VJuu2tt9.js +481 -0
- package/dist/Cubit-VJuu2tt9.js.map +1 -0
- package/dist/Cubit-jz922NKf.cjs +300 -257
- package/dist/Cubit-kU5_4jgC.cjs +359 -286
- package/dist/StateContainerRegistry-B4yVMYbx.cjs +1057 -0
- package/dist/StateContainerRegistry-B4yVMYbx.cjs.map +1 -0
- package/dist/StateContainerRegistry-BAcxouCu.js +683 -615
- package/dist/StateContainerRegistry-BK57H92E.js +701 -630
- package/dist/StateContainerRegistry-BRBATSrx.cjs +1030 -0
- package/dist/StateContainerRegistry-BRBATSrx.cjs.map +1 -0
- package/dist/StateContainerRegistry-BgBIKcQF.js +956 -0
- package/dist/StateContainerRegistry-BgBIKcQF.js.map +1 -0
- package/dist/StateContainerRegistry-BglEhqdA.js +669 -606
- package/dist/StateContainerRegistry-BhcnG0DF.js +625 -562
- package/dist/StateContainerRegistry-BpO5t-0i.js +642 -580
- package/dist/StateContainerRegistry-BqS-wpb_.js +957 -0
- package/dist/StateContainerRegistry-BqS-wpb_.js.map +1 -0
- package/dist/StateContainerRegistry-BrEGYPZT.cjs +1029 -0
- package/dist/StateContainerRegistry-BrEGYPZT.cjs.map +1 -0
- package/dist/StateContainerRegistry-Bxfne4A7.cjs +908 -0
- package/dist/StateContainerRegistry-Bxfne4A7.cjs.map +1 -0
- package/dist/StateContainerRegistry-C0E7vsgy.js +758 -0
- package/dist/StateContainerRegistry-C0E7vsgy.js.map +1 -0
- package/dist/StateContainerRegistry-C0I77Ndz.cjs +920 -0
- package/dist/StateContainerRegistry-C0I77Ndz.cjs.map +1 -0
- package/dist/StateContainerRegistry-CDH9mnQS.cjs +668 -614
- package/dist/StateContainerRegistry-CTOXUf75.cjs +695 -640
- package/dist/StateContainerRegistry-CX2CBOmv.cjs +739 -679
- package/dist/StateContainerRegistry-CXnnf2-l.js +867 -0
- package/dist/StateContainerRegistry-CXnnf2-l.js.map +1 -0
- package/dist/StateContainerRegistry-CehuIpK_.cjs +811 -0
- package/dist/StateContainerRegistry-CehuIpK_.cjs.map +1 -0
- package/dist/StateContainerRegistry-Ci0ajc5g.js +680 -612
- package/dist/StateContainerRegistry-Ck2-XmT_.js +587 -527
- package/dist/StateContainerRegistry-D1lVJFGL.cjs +706 -646
- package/dist/StateContainerRegistry-DC4N73O6.js +632 -569
- package/dist/StateContainerRegistry-DOuGI-l5.js +645 -582
- package/dist/StateContainerRegistry-DT66lr3I.cjs +651 -596
- package/dist/StateContainerRegistry-DmmzYa7S.js +974 -0
- package/dist/StateContainerRegistry-DmmzYa7S.js.map +1 -0
- package/dist/StateContainerRegistry-Upsrlg9G.cjs +709 -649
- package/dist/StateContainerRegistry-WznfcA-Q.js +855 -0
- package/dist/StateContainerRegistry-WznfcA-Q.js.map +1 -0
- package/dist/StateContainerRegistry-Yph6UCA_.js +637 -569
- package/dist/StateContainerRegistry-mseeTqSA.cjs +671 -616
- package/dist/StateContainerRegistry-pRNxHNFD.cjs +658 -603
- package/dist/StateContainerRegistry-vXMWtG7J.cjs +613 -561
- package/dist/StateContainerRegistry-v_prqMcI.cjs +663 -603
- package/dist/branded-BSeA_mZO.cjs.map +1 -1
- package/dist/branded-DCqi3De1.cjs +11 -11
- package/dist/branded-DwtzSsg0.js.map +1 -1
- package/dist/branded-Max3xOTA.js +6 -6
- package/dist/config-0ZD9i3wy.js +16 -0
- package/dist/config-0ZD9i3wy.js.map +1 -0
- package/dist/config-B3NIwDQv.cjs +20 -20
- package/dist/config-BKGHop0V.js +5 -5
- package/dist/config-BKoaAlmb.js +5 -5
- package/dist/config-BPj08-8h.cjs +32 -0
- package/dist/config-BPj08-8h.cjs.map +1 -0
- package/dist/config-BR0Xy-Tn.cjs +20 -20
- package/dist/config-B_4xXpvK.cjs +32 -0
- package/dist/config-B_4xXpvK.cjs.map +1 -0
- package/dist/config-BflrQM4_.cjs +32 -0
- package/dist/config-BflrQM4_.cjs.map +1 -0
- package/dist/config-BzObBsk2.cjs +32 -0
- package/dist/config-BzObBsk2.cjs.map +1 -0
- package/dist/config-C0yumL1H.cjs +32 -0
- package/dist/config-C0yumL1H.cjs.map +1 -0
- package/dist/config-C8xqVHTf.js +16 -0
- package/dist/config-C8xqVHTf.js.map +1 -0
- package/dist/config-CCUhIYIF.js +5 -5
- package/dist/config-CGo__MAt.js +16 -0
- package/dist/config-CGo__MAt.js.map +1 -0
- package/dist/config-CQH9fTY-.cjs +20 -20
- package/dist/config-CR_Bz7RD.js +5 -5
- package/dist/config-CTOa-yPN.cjs +20 -20
- package/dist/config-Cd7Q-B4g.js +16 -0
- package/dist/config-Cd7Q-B4g.js.map +1 -0
- package/dist/config-CmDEX-1o.js +16 -0
- package/dist/config-CmDEX-1o.js.map +1 -0
- package/dist/config-CoNMTnMA.cjs +32 -0
- package/dist/config-CoNMTnMA.cjs.map +1 -0
- package/dist/config-Cwj8-C1J.js +5 -5
- package/dist/config-D3jisfdj.cjs +20 -20
- package/dist/config-D4GifZQ4.js +5 -5
- package/dist/config-DDrSQGpQ.cjs +20 -20
- package/dist/config-DEcslxan.cjs +20 -20
- package/dist/config-DMNZ2YLV.cjs +20 -20
- package/dist/config-De9oQ6Ki.js +5 -5
- package/dist/config-DoHx0Xsl.js +16 -0
- package/dist/config-DoHx0Xsl.js.map +1 -0
- package/dist/config-DokTzpr8.cjs +20 -20
- package/dist/config-DslYBm4Z.js +5 -5
- package/dist/config-H6FAqbW4.cjs +20 -20
- package/dist/config-Yp645dGK.js +5 -5
- package/dist/config-ispAzOZV.js +5 -5
- package/dist/config.d.cts +72 -0
- package/dist/config.d.ts +72 -0
- package/dist/constants.d.cts +13 -0
- package/dist/constants.d.ts +13 -0
- package/dist/core/Cubit.d.ts +14 -4
- package/dist/core/StateContainer.d.ts +111 -11
- package/dist/core/StateContainerRegistry.d.ts +55 -11
- package/dist/core/symbols.d.ts +26 -0
- package/dist/debug.cjs +3 -3
- package/dist/debug.js +3 -3
- package/dist/decorators/blac.d.ts +17 -0
- package/dist/ensure-9VEq5H0L.js +3 -3
- package/dist/ensure-BB6xHQAF.cjs +14 -0
- package/dist/ensure-BB6xHQAF.cjs.map +1 -0
- package/dist/ensure-BNDfTzqg.cjs +8 -8
- package/dist/ensure-BVCnjU7r.js +343 -267
- package/dist/ensure-BbzGXjep.cjs +8 -8
- package/dist/ensure-BlIaQai6.js +9 -0
- package/dist/ensure-BlIaQai6.js.map +1 -0
- package/dist/ensure-Bm3oHxga.js +9 -0
- package/dist/ensure-Bm3oHxga.js.map +1 -0
- package/dist/ensure-C3eIRs6e.cjs +8 -8
- package/dist/ensure-CJZL7bcA.cjs +365 -292
- package/dist/ensure-CN6unBOe.cjs +8 -8
- package/dist/ensure-CU-B1ywv.js +3 -3
- package/dist/ensure-CWKzeno7.js +3 -3
- package/dist/ensure-CkENsuQ9.js +9 -0
- package/dist/ensure-CkENsuQ9.js.map +1 -0
- package/dist/ensure-Cm-4_LSh.cjs +14 -0
- package/dist/ensure-Cm-4_LSh.cjs.map +1 -0
- package/dist/ensure-Cqex5r1P.cjs +14 -0
- package/dist/ensure-Cqex5r1P.cjs.map +1 -0
- package/dist/ensure-Cv5AbNGZ.js +9 -0
- package/dist/ensure-Cv5AbNGZ.js.map +1 -0
- package/dist/ensure-D63lEMUK.cjs +8 -8
- package/dist/ensure-DGEtPU9A.cjs +8 -8
- package/dist/ensure-DM3qb336.cjs +14 -0
- package/dist/ensure-DM3qb336.cjs.map +1 -0
- package/dist/ensure-DME-_T0j.cjs +8 -8
- package/dist/ensure-DWd0GCYB.js +3 -3
- package/dist/ensure-DamKOP6q.cjs +8 -8
- package/dist/ensure-Dcfptl-A.js +9 -0
- package/dist/ensure-Dcfptl-A.js.map +1 -0
- package/dist/ensure-Def-EBWG.js +3 -3
- package/dist/ensure-DnHL5QiQ.cjs +14 -0
- package/dist/ensure-DnHL5QiQ.cjs.map +1 -0
- package/dist/ensure-Dr7I78Ku.cjs +8 -8
- package/dist/ensure-SLVdGd5b.js +3 -3
- package/dist/ensure-Sb92MCXu.js +3 -3
- package/dist/ensure-gFlvevGm.cjs +14 -0
- package/dist/ensure-gFlvevGm.cjs.map +1 -0
- package/dist/ensure-l2-H7S5W.js +3 -3
- package/dist/ensure-mkL-3qh8.js +9 -0
- package/dist/ensure-mkL-3qh8.js.map +1 -0
- package/dist/ensure-n80crSlX.js +3 -3
- package/dist/ensure-nCxg7MCN.js +3 -3
- package/dist/ensure-vS71MV4q.cjs +8 -8
- package/dist/index.cjs +37 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -4
- package/dist/index.d.ts +14 -4
- package/dist/index.js +23 -10
- package/dist/index.js.map +1 -1
- package/dist/management-6oQbmf0z.js +41 -0
- package/dist/management-6oQbmf0z.js.map +1 -0
- package/dist/management-B46QwA9Y.js +20 -11
- package/dist/management-B9yrRpeg.js +41 -0
- package/dist/management-B9yrRpeg.js.map +1 -0
- package/dist/management-BCKTEZ8Q.js +20 -11
- package/dist/management-BbMzdXbT.js +41 -0
- package/dist/management-BbMzdXbT.js.map +1 -0
- package/dist/management-Bg652agq.js +20 -11
- package/dist/management-BnedF5ZD.cjs +50 -50
- package/dist/management-BoUa99eB.cjs +79 -0
- package/dist/management-BoUa99eB.cjs.map +1 -0
- package/dist/management-C4SHcrJm.cjs +79 -0
- package/dist/management-C4SHcrJm.cjs.map +1 -0
- package/dist/management-CK-GL3wY.js +20 -11
- package/dist/management-CPhgY8OE.js +41 -0
- package/dist/management-CPhgY8OE.js.map +1 -0
- package/dist/management-CU_V3LIP.js +20 -11
- package/dist/management-CUwXDSi9.cjs +79 -0
- package/dist/management-CUwXDSi9.cjs.map +1 -0
- package/dist/management-CaqiyNzB.js +20 -11
- package/dist/management-Cin-JvYe.js +20 -11
- package/dist/management-ClaXym0F.cjs +50 -50
- package/dist/management-DL0Uzsoz.js +20 -11
- package/dist/management-DLdAQfqk.cjs +79 -0
- package/dist/management-DLdAQfqk.cjs.map +1 -0
- package/dist/management-DMZ8qpwr.cjs +50 -50
- package/dist/management-DTzcC6aD.cjs +79 -0
- package/dist/management-DTzcC6aD.cjs.map +1 -0
- package/dist/management-DYLNyj9p.cjs +50 -50
- package/dist/management-Dag9u4t6.cjs +50 -50
- package/dist/management-DbMRdDBo.cjs +50 -50
- package/dist/management-DfnDAKmP.js +41 -0
- package/dist/management-DfnDAKmP.js.map +1 -0
- package/dist/management-DjBU1gtb.cjs +50 -50
- package/dist/management-DwCozsY8.js +20 -11
- package/dist/management-H4m3ciJO.js +32 -0
- package/dist/management-H4m3ciJO.js.map +1 -0
- package/dist/management-Xo3A6Za3.cjs +79 -0
- package/dist/management-Xo3A6Za3.cjs.map +1 -0
- package/dist/management-ZU2YzOkr.js +18 -10
- package/dist/management-baPDwA9n.cjs +50 -50
- package/dist/management-jQGCvZNN.cjs +44 -44
- package/dist/management-ry_KteFK.cjs +50 -50
- package/dist/plugin/BlacPlugin.d.ts +89 -15
- package/dist/plugin/PluginManager.d.ts +65 -5
- package/dist/plugins.cjs +1 -1
- package/dist/plugins.d.cts +2 -2
- package/dist/plugins.d.ts +2 -2
- package/dist/plugins.js +1 -1
- package/dist/registry/acquire.d.ts +9 -2
- package/dist/registry/ensure.d.ts +2 -2
- package/dist/registry/index.d.ts +1 -1
- package/dist/resolve-dependencies-B2QggQAi.js +641 -558
- package/dist/resolve-dependencies-B6JDXvpr.js +651 -566
- package/dist/resolve-dependencies-BAKAoD0U.js +878 -0
- package/dist/resolve-dependencies-BAKAoD0U.js.map +1 -0
- package/dist/resolve-dependencies-BFZQq60Y.cjs +724 -666
- package/dist/resolve-dependencies-BGafS3Ww.js +643 -561
- package/dist/resolve-dependencies-BHd34gS3.cjs +724 -666
- package/dist/resolve-dependencies-BNeayhbQ.cjs +732 -671
- package/dist/resolve-dependencies-BWEMpuDy.js +641 -558
- package/dist/resolve-dependencies-BiWkW2eS.js +643 -561
- package/dist/resolve-dependencies-BjxCztYD.js +739 -0
- package/dist/resolve-dependencies-BjxCztYD.js.map +1 -0
- package/dist/resolve-dependencies-BlyBV0hB.cjs +969 -0
- package/dist/resolve-dependencies-BlyBV0hB.cjs.map +1 -0
- package/dist/resolve-dependencies-By26rT_i.js +651 -566
- package/dist/resolve-dependencies-C9Kf7AzY.cjs +724 -666
- package/dist/resolve-dependencies-CTzV1txG.js +643 -561
- package/dist/resolve-dependencies-CWjuGHiF.cjs +969 -0
- package/dist/resolve-dependencies-CWjuGHiF.cjs.map +1 -0
- package/dist/resolve-dependencies-ClSsP0DJ.cjs +722 -663
- package/dist/resolve-dependencies-D0vTzZgs.js +643 -561
- package/dist/resolve-dependencies-D2WnZMF-.cjs +724 -666
- package/dist/resolve-dependencies-DCBLTeza.cjs +969 -0
- package/dist/resolve-dependencies-DCBLTeza.cjs.map +1 -0
- package/dist/resolve-dependencies-DMlqYJR2.js +643 -561
- package/dist/resolve-dependencies-DP6U1EYB.cjs +840 -0
- package/dist/resolve-dependencies-DP6U1EYB.cjs.map +1 -0
- package/dist/resolve-dependencies-DSQNXvnV.cjs +724 -666
- package/dist/resolve-dependencies-DV3HO_uH.js +878 -0
- package/dist/resolve-dependencies-DV3HO_uH.js.map +1 -0
- package/dist/resolve-dependencies-DXwMhP0Y.js +878 -0
- package/dist/resolve-dependencies-DXwMhP0Y.js.map +1 -0
- package/dist/resolve-dependencies-DbRWlt9u.js +878 -0
- package/dist/resolve-dependencies-DbRWlt9u.js.map +1 -0
- package/dist/resolve-dependencies-DcUUva2P.cjs +724 -666
- package/dist/resolve-dependencies-Dd8T6TLt.cjs +724 -666
- package/dist/resolve-dependencies-Dfdp_DZd.cjs +732 -671
- package/dist/resolve-dependencies-GJ8PNyNB.cjs +969 -0
- package/dist/resolve-dependencies-GJ8PNyNB.cjs.map +1 -0
- package/dist/resolve-dependencies-KSpTt4jy.cjs +722 -663
- package/dist/resolve-dependencies-Nvjp4CwS.js +643 -561
- package/dist/resolve-dependencies-f-QUqYiL.js +643 -561
- package/dist/testing.cjs +27 -20
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +22 -1
- package/dist/testing.d.ts +22 -1
- package/dist/testing.js +27 -21
- package/dist/testing.js.map +1 -1
- package/dist/tracked-B77j2g9M.js +171 -151
- package/dist/tracked-BDVi2LKM.cjs +196 -175
- package/dist/tracked-BFdJCzL0.cjs +242 -0
- package/dist/tracked-BFdJCzL0.cjs.map +1 -0
- package/dist/tracked-BH-gX4T1.cjs +196 -175
- package/dist/tracked-BTHok3Dl.cjs +196 -175
- package/dist/tracked-BTbFkFeM.js +186 -166
- package/dist/tracked-BU_OBWqM.cjs +242 -0
- package/dist/tracked-BU_OBWqM.cjs.map +1 -0
- package/dist/tracked-BfctH2es.cjs +242 -0
- package/dist/tracked-BfctH2es.cjs.map +1 -0
- package/dist/tracked-BhQtzUhZ.js +186 -166
- package/dist/tracked-BnqrYXiO.js +212 -0
- package/dist/tracked-BnqrYXiO.js.map +1 -0
- package/dist/tracked-BtgFOGup.js +212 -0
- package/dist/tracked-BtgFOGup.js.map +1 -0
- package/dist/tracked-C3nIS4J7.cjs +242 -0
- package/dist/tracked-C3nIS4J7.cjs.map +1 -0
- package/dist/tracked-C52awNV9.js +171 -151
- package/dist/tracked-CGzduF2m.js +186 -166
- package/dist/tracked-CK_-ixtX.cjs +196 -175
- package/dist/tracked-CLlvURln.js +186 -166
- package/dist/tracked-CgHWmuGC.cjs +211 -190
- package/dist/tracked-CoAlC8fs.js +171 -151
- package/dist/tracked-D3Xjm1H1.cjs +211 -190
- package/dist/tracked-DB6yMV5F.js +212 -0
- package/dist/tracked-DB6yMV5F.js.map +1 -0
- package/dist/tracked-DBn-bs_G.js +171 -151
- package/dist/tracked-DMBTDF0P.js +171 -151
- package/dist/tracked-DN3h3Rp1.js +171 -151
- package/dist/tracked-DOGh1Q5Z.cjs +242 -0
- package/dist/tracked-DOGh1Q5Z.cjs.map +1 -0
- package/dist/tracked-DUkp4zve.cjs +196 -175
- package/dist/tracked-D_ou7mYG.js +212 -0
- package/dist/tracked-D_ou7mYG.js.map +1 -0
- package/dist/tracked-Dcu6EATB.js +171 -151
- package/dist/tracked-GvAJQVAI.cjs +227 -196
- package/dist/tracked-O2lv-kJV.cjs +211 -190
- package/dist/tracked-WF6aXuAo.js +186 -162
- package/dist/tracked-d_sQWU3c.cjs +196 -175
- package/dist/tracked-n9TMK-30.cjs +196 -175
- package/dist/tracked-njU-_pVa.cjs +211 -190
- package/dist/tracked-zAgmKIlC.js +212 -0
- package/dist/tracked-zAgmKIlC.js.map +1 -0
- package/dist/tracking/dependency-manager.d.ts +33 -29
- package/dist/tracking/index.d.ts +16 -1
- package/dist/tracking/iteration-perf.bench.d.ts +1 -0
- package/dist/tracking/path-utils.d.ts +18 -1
- package/dist/tracking/resolve-dependencies.d.ts +3 -1
- package/dist/tracking/tracked.d.ts +37 -34
- package/dist/tracking/tracking-proxy.d.ts +94 -47
- package/dist/tracking.cjs +12 -9
- package/dist/tracking.js +32 -2
- package/dist/types/utilities.d.ts +15 -3
- package/dist/types.cjs +1 -1
- package/dist/types.js +1 -1
- package/dist/utils/static-props.d.ts +14 -0
- package/dist/utils/structural-key.d.ts +14 -0
- package/dist/watch/watch.d.ts +1 -1
- package/dist/watch-BpwaUL8r.cjs +68 -0
- package/dist/watch-BpwaUL8r.cjs.map +1 -0
- package/dist/watch-DWCqXllW.js +57 -0
- package/dist/watch-DWCqXllW.js.map +1 -0
- package/dist/watch-entry.cjs +3 -6
- package/dist/watch-entry.d.cts +1 -3
- package/dist/watch-entry.d.ts +1 -3
- package/dist/watch-entry.js +2 -2
- package/package.json +4 -14
|
@@ -1,779 +1,840 @@
|
|
|
1
|
-
const require_StateContainerRegistry = require(
|
|
2
|
-
const require_config = require(
|
|
1
|
+
const require_StateContainerRegistry = require('./StateContainerRegistry-Upsrlg9G.cjs');
|
|
2
|
+
const require_config = require('./config-BR0Xy-Tn.cjs');
|
|
3
3
|
//#region src/tracking/path-utils.ts
|
|
4
4
|
/**
|
|
5
|
-
* Path utilities for dependency tracking
|
|
6
|
-
*
|
|
7
|
-
* Provides utilities for parsing property paths and extracting values
|
|
8
|
-
* from nested objects using path strings.
|
|
9
|
-
*
|
|
10
|
-
* @internal
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Parse a property path string into an array of segments
|
|
14
|
-
*
|
|
15
|
-
* @internal
|
|
16
|
-
*
|
|
17
|
-
* Handles both dot notation (a.b.c) and bracket notation (a[0].b)
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```ts
|
|
21
|
-
* parsePath('user.name') // ['user', 'name']
|
|
22
|
-
* parsePath('items[0].name') // ['items', '0', 'name']
|
|
23
|
-
* parsePath('data.users[2].address.city') // ['data', 'users', '2', 'address', 'city']
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
5
|
+
* Path utilities for dependency tracking
|
|
6
|
+
*
|
|
7
|
+
* Provides utilities for parsing property paths and extracting values
|
|
8
|
+
* from nested objects using path strings.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Parse a property path string into an array of segments
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*
|
|
17
|
+
* Handles both dot notation (a.b.c) and bracket notation (a[0].b)
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* parsePath('user.name') // ['user', 'name']
|
|
22
|
+
* parsePath('items[0].name') // ['items', '0', 'name']
|
|
23
|
+
* parsePath('data.users[2].address.city') // ['data', 'users', '2', 'address', 'city']
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
26
|
function parsePath(path) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Get a value from an object using a path of segments
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* ```ts
|
|
53
|
-
* const obj = { user: { name: 'Alice', age: 30 } }
|
|
54
|
-
* getValueAtPath(obj, ['user', 'name']) // 'Alice'
|
|
55
|
-
* getValueAtPath(obj, ['user', 'age']) // 30
|
|
56
|
-
* getValueAtPath(obj, ['user', 'missing']) // undefined
|
|
57
|
-
* ```
|
|
58
|
-
*
|
|
59
|
-
* @internal
|
|
60
|
-
*/
|
|
27
|
+
const segments = [];
|
|
28
|
+
let current = '';
|
|
29
|
+
let i = 0;
|
|
30
|
+
while (i < path.length) {
|
|
31
|
+
const char = path[i];
|
|
32
|
+
if (char === '.') {
|
|
33
|
+
if (current) segments.push(current);
|
|
34
|
+
current = '';
|
|
35
|
+
} else if (char === '[') {
|
|
36
|
+
if (current) segments.push(current);
|
|
37
|
+
current = '';
|
|
38
|
+
i++;
|
|
39
|
+
while (i < path.length && path[i] !== ']') current += path[i++];
|
|
40
|
+
if (current) segments.push(current);
|
|
41
|
+
current = '';
|
|
42
|
+
} else current += char;
|
|
43
|
+
i++;
|
|
44
|
+
}
|
|
45
|
+
if (current) segments.push(current);
|
|
46
|
+
return segments;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get a value from an object using a path of segments
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* const obj = { user: { name: 'Alice', age: 30 } }
|
|
54
|
+
* getValueAtPath(obj, ['user', 'name']) // 'Alice'
|
|
55
|
+
* getValueAtPath(obj, ['user', 'age']) // 30
|
|
56
|
+
* getValueAtPath(obj, ['user', 'missing']) // undefined
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
61
|
function getValueAtPath(obj, segments) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Shallow equality comparison for arrays
|
|
72
|
-
*
|
|
73
|
-
* Compares two arrays element-by-element using Object.is
|
|
74
|
-
*
|
|
75
|
-
* @example
|
|
76
|
-
* ```ts
|
|
77
|
-
* shallowEqual([1, 2, 3], [1, 2, 3]) // true
|
|
78
|
-
* shallowEqual([1, 2, 3], [1, 2, 4]) // false
|
|
79
|
-
* shallowEqual([1, 2], [1, 2, 3]) // false
|
|
80
|
-
* ```
|
|
81
|
-
*
|
|
82
|
-
* @internal
|
|
83
|
-
*/
|
|
62
|
+
if (obj == null) return void 0;
|
|
63
|
+
let current = obj;
|
|
64
|
+
for (let i = 0; i < segments.length; i++) {
|
|
65
|
+
current = current[segments[i]];
|
|
66
|
+
if (current == null) return void 0;
|
|
67
|
+
}
|
|
68
|
+
return current;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Shallow equality comparison for arrays
|
|
72
|
+
*
|
|
73
|
+
* Compares two arrays element-by-element using Object.is
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* shallowEqual([1, 2, 3], [1, 2, 3]) // true
|
|
78
|
+
* shallowEqual([1, 2, 3], [1, 2, 4]) // false
|
|
79
|
+
* shallowEqual([1, 2], [1, 2, 3]) // false
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
84
|
function shallowEqual(arr1, arr2) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
if (arr1.length !== arr2.length) return false;
|
|
86
|
+
for (let i = 0; i < arr1.length; i++)
|
|
87
|
+
if (!Object.is(arr1[i], arr2[i])) return false;
|
|
88
|
+
return true;
|
|
88
89
|
}
|
|
89
90
|
//#endregion
|
|
90
91
|
//#region src/tracking/tracking-proxy.ts
|
|
91
92
|
/**
|
|
92
|
-
* Consolidated Tracking System
|
|
93
|
-
*
|
|
94
|
-
* This module provides all dependency and getter tracking functionality:
|
|
95
|
-
* - Proxy creation for automatic property access tracking
|
|
96
|
-
* - Dependency path tracking and change detection
|
|
97
|
-
* - Getter execution tracking for computed properties
|
|
98
|
-
* - Combined tracking proxy for watch/waitUntil use cases
|
|
99
|
-
*/
|
|
100
|
-
/**
|
|
101
|
-
* Check if a value can be proxied
|
|
102
|
-
* Returns true for plain objects and arrays only.
|
|
103
|
-
* @internal
|
|
104
|
-
*/
|
|
93
|
+
* Consolidated Tracking System
|
|
94
|
+
*
|
|
95
|
+
* This module provides all dependency and getter tracking functionality:
|
|
96
|
+
* - Proxy creation for automatic property access tracking
|
|
97
|
+
* - Dependency path tracking and change detection
|
|
98
|
+
* - Getter execution tracking for computed properties
|
|
99
|
+
* - Combined tracking proxy for watch/waitUntil use cases
|
|
100
|
+
*/
|
|
101
|
+
/**
|
|
102
|
+
* Check if a value can be proxied
|
|
103
|
+
* Returns true for plain objects and arrays only.
|
|
104
|
+
* @internal
|
|
105
|
+
*/
|
|
105
106
|
function isProxyable(value) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
if (typeof value !== 'object' || value === null) return false;
|
|
108
|
+
const proto = Object.getPrototypeOf(value);
|
|
109
|
+
return proto === Object.prototype || proto === Array.prototype;
|
|
109
110
|
}
|
|
110
111
|
/**
|
|
111
|
-
* Create a new proxy tracker state
|
|
112
|
-
* @internal
|
|
113
|
-
*/
|
|
112
|
+
* Create a new proxy tracker state
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
114
115
|
function createProxyState() {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Start tracking property accesses
|
|
127
|
-
* @internal
|
|
128
|
-
*/
|
|
116
|
+
return {
|
|
117
|
+
trackedPaths: /* @__PURE__ */ new Set(),
|
|
118
|
+
isTracking: false,
|
|
119
|
+
proxyCache: /* @__PURE__ */ new WeakMap(),
|
|
120
|
+
boundFunctionsCache: null,
|
|
121
|
+
lastProxiedState: null,
|
|
122
|
+
lastProxy: null,
|
|
123
|
+
maxDepth: 10,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Start tracking property accesses
|
|
128
|
+
* @internal
|
|
129
|
+
*/
|
|
129
130
|
function startProxy(state) {
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
state.isTracking = true;
|
|
132
|
+
state.trackedPaths.clear();
|
|
132
133
|
}
|
|
133
134
|
/**
|
|
134
|
-
* Stop tracking and return the tracked paths
|
|
135
|
-
* @internal
|
|
136
|
-
*/
|
|
135
|
+
* Stop tracking and return the tracked paths
|
|
136
|
+
* @internal
|
|
137
|
+
*/
|
|
137
138
|
function stopProxy(state) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
state.isTracking = false;
|
|
140
|
+
const paths = state.trackedPaths;
|
|
141
|
+
state.trackedPaths = /* @__PURE__ */ new Set();
|
|
142
|
+
return paths;
|
|
142
143
|
}
|
|
143
144
|
/**
|
|
144
|
-
* Create a proxy for an array with property access tracking
|
|
145
|
-
* @internal
|
|
146
|
-
*/
|
|
145
|
+
* Create a proxy for an array with property access tracking
|
|
146
|
+
* @internal
|
|
147
|
+
*/
|
|
147
148
|
function createArrayProxy(state, target, path, depth = 0) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
149
|
+
const proxy = new Proxy(target, {
|
|
150
|
+
get: (arr, prop) => {
|
|
151
|
+
if (typeof prop === 'symbol') return Reflect.get(arr, prop);
|
|
152
|
+
const value = Reflect.get(arr, prop);
|
|
153
|
+
if (typeof value === 'function') {
|
|
154
|
+
if (!state.boundFunctionsCache)
|
|
155
|
+
state.boundFunctionsCache = /* @__PURE__ */ new WeakMap();
|
|
156
|
+
const cached = state.boundFunctionsCache.get(value);
|
|
157
|
+
if (cached) return cached;
|
|
158
|
+
const bound = value.bind(arr);
|
|
159
|
+
state.boundFunctionsCache.set(value, bound);
|
|
160
|
+
return bound;
|
|
161
|
+
}
|
|
162
|
+
if (prop === 'length') {
|
|
163
|
+
if (state.isTracking) {
|
|
164
|
+
const fullPath = path ? `${path}.length` : 'length';
|
|
165
|
+
state.trackedPaths.add(fullPath);
|
|
166
|
+
}
|
|
167
|
+
return value;
|
|
168
|
+
}
|
|
169
|
+
let fullPath;
|
|
170
|
+
if (typeof prop === 'string') {
|
|
171
|
+
const index = Number(prop);
|
|
172
|
+
if (!isNaN(index) && index >= 0)
|
|
173
|
+
fullPath = path ? `${path}[${index}]` : `[${index}]`;
|
|
174
|
+
else fullPath = path ? `${path}.${prop}` : prop;
|
|
175
|
+
} else return value;
|
|
176
|
+
if (isProxyable(value))
|
|
177
|
+
return createInternal(state, value, fullPath, depth + 1);
|
|
178
|
+
if (state.isTracking) state.trackedPaths.add(fullPath);
|
|
179
|
+
return value;
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
state.proxyCache.set(target, proxy);
|
|
183
|
+
return proxy;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Create a proxy for an object with property access tracking
|
|
187
|
+
* @internal
|
|
188
|
+
*/
|
|
189
|
+
function createInternal(state, target, path = '', depth = 0) {
|
|
190
|
+
if (!state.isTracking || !isProxyable(target)) return target;
|
|
191
|
+
if (depth >= state.maxDepth) {
|
|
192
|
+
console.warn(
|
|
193
|
+
`${require_StateContainerRegistry.BLAC_ERROR_PREFIX} Proxy depth limit (${state.maxDepth}) reached at path "${path}". Deeper property accesses won't be tracked for re-renders.`,
|
|
194
|
+
);
|
|
195
|
+
return target;
|
|
196
|
+
}
|
|
197
|
+
if (state.proxyCache.has(target)) return state.proxyCache.get(target);
|
|
198
|
+
if (Array.isArray(target))
|
|
199
|
+
return createArrayProxy(state, target, path, depth);
|
|
200
|
+
const proxy = new Proxy(target, {
|
|
201
|
+
get: (obj, prop) => {
|
|
202
|
+
if (typeof prop === 'symbol') return Reflect.get(obj, prop);
|
|
203
|
+
const value = Reflect.get(obj, prop);
|
|
204
|
+
if (typeof value === 'function') {
|
|
205
|
+
if (!state.boundFunctionsCache)
|
|
206
|
+
state.boundFunctionsCache = /* @__PURE__ */ new WeakMap();
|
|
207
|
+
const cached = state.boundFunctionsCache.get(value);
|
|
208
|
+
if (cached) return cached;
|
|
209
|
+
const bound = value.bind(obj);
|
|
210
|
+
state.boundFunctionsCache.set(value, bound);
|
|
211
|
+
return bound;
|
|
212
|
+
}
|
|
213
|
+
const fullPath = path ? `${path}.${String(prop)}` : String(prop);
|
|
214
|
+
if (typeof prop === 'string' && state.isTracking) {
|
|
215
|
+
if (!prop.startsWith('_') && !prop.startsWith('$$'))
|
|
216
|
+
state.trackedPaths.add(fullPath);
|
|
217
|
+
}
|
|
218
|
+
if (isProxyable(value))
|
|
219
|
+
return createInternal(state, value, fullPath, depth + 1);
|
|
220
|
+
return value;
|
|
221
|
+
},
|
|
222
|
+
has: (obj, prop) => {
|
|
223
|
+
if (typeof prop === 'string' && state.isTracking) {
|
|
224
|
+
const fullPath = path ? `${path}.${prop}` : prop;
|
|
225
|
+
state.trackedPaths.add(fullPath);
|
|
226
|
+
}
|
|
227
|
+
return Reflect.has(obj, prop);
|
|
228
|
+
},
|
|
229
|
+
ownKeys: (obj) => {
|
|
230
|
+
if (state.isTracking && path) state.trackedPaths.add(path);
|
|
231
|
+
return Reflect.ownKeys(obj);
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
state.proxyCache.set(target, proxy);
|
|
235
|
+
return proxy;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Create a proxy for a target with caching
|
|
239
|
+
* @internal
|
|
240
|
+
*/
|
|
229
241
|
function createForTarget(state, target) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
242
|
+
if (state.lastProxiedState === target && state.lastProxy)
|
|
243
|
+
return state.lastProxy;
|
|
244
|
+
if (state.lastProxiedState !== null)
|
|
245
|
+
state.proxyCache.delete(state.lastProxiedState);
|
|
246
|
+
state.boundFunctionsCache = null;
|
|
247
|
+
const proxy = createInternal(state, target, '', 0);
|
|
248
|
+
state.lastProxiedState = target;
|
|
249
|
+
state.lastProxy = proxy;
|
|
250
|
+
return proxy;
|
|
237
251
|
}
|
|
238
252
|
function isChildPath(child, parent) {
|
|
239
|
-
|
|
240
|
-
|
|
253
|
+
if (child === parent) return false;
|
|
254
|
+
return child.startsWith(parent + '.') || child.startsWith(parent + '[');
|
|
241
255
|
}
|
|
242
256
|
function getArrayParentPath(path) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
257
|
+
if (path.endsWith('.length')) return path.slice(0, -7);
|
|
258
|
+
const arrayIndexMatch = path.match(/^(.+?)\[\d+\]/);
|
|
259
|
+
if (arrayIndexMatch) return arrayIndexMatch[1];
|
|
260
|
+
return null;
|
|
247
261
|
}
|
|
248
262
|
/**
|
|
249
|
-
* @internal
|
|
250
|
-
*/
|
|
263
|
+
* @internal
|
|
264
|
+
*/
|
|
251
265
|
function optimizeTrackedPaths(paths) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
266
|
+
if (paths.size <= 1) return paths;
|
|
267
|
+
let allFlat = true;
|
|
268
|
+
for (const path of paths)
|
|
269
|
+
if (path.charCodeAt(path.length - 1) === 93 || path.includes('.')) {
|
|
270
|
+
allFlat = false;
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
if (allFlat) return paths;
|
|
274
|
+
const sortedPaths = Array.from(paths).sort((a, b) =>
|
|
275
|
+
a > b ? -1 : a < b ? 1 : 0,
|
|
276
|
+
);
|
|
277
|
+
const optimized = /* @__PURE__ */ new Set();
|
|
278
|
+
let lastKept;
|
|
279
|
+
for (const path of sortedPaths) {
|
|
280
|
+
if (lastKept !== void 0 && isChildPath(lastKept, path)) continue;
|
|
281
|
+
optimized.add(path);
|
|
282
|
+
lastKept = path;
|
|
283
|
+
}
|
|
284
|
+
const arrayParents = /* @__PURE__ */ new Set();
|
|
285
|
+
for (const path of optimized) {
|
|
286
|
+
const arrayParent = getArrayParentPath(path);
|
|
287
|
+
if (arrayParent) arrayParents.add(arrayParent);
|
|
288
|
+
}
|
|
289
|
+
for (const arrayParent of arrayParents) optimized.add(arrayParent);
|
|
290
|
+
return optimized;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* @internal
|
|
294
|
+
*/
|
|
278
295
|
function createDependencyState() {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* @internal
|
|
290
|
-
*/
|
|
296
|
+
return {
|
|
297
|
+
proxyState: createProxyState(),
|
|
298
|
+
previousRenderPaths: /* @__PURE__ */ new Set(),
|
|
299
|
+
currentRenderPaths: /* @__PURE__ */ new Set(),
|
|
300
|
+
pathCache: /* @__PURE__ */ new Map(),
|
|
301
|
+
lastCheckedState: null,
|
|
302
|
+
lastCheckedValues: /* @__PURE__ */ new Map(),
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* @internal
|
|
307
|
+
*/
|
|
291
308
|
function startDependency(tracker) {
|
|
292
|
-
|
|
309
|
+
startProxy(tracker.proxyState);
|
|
293
310
|
}
|
|
294
311
|
/**
|
|
295
|
-
* @internal
|
|
296
|
-
*/
|
|
312
|
+
* @internal
|
|
313
|
+
*/
|
|
297
314
|
function createDependencyProxy(tracker, state) {
|
|
298
|
-
|
|
315
|
+
return createForTarget(tracker.proxyState, state);
|
|
299
316
|
}
|
|
300
317
|
/**
|
|
301
|
-
* @internal
|
|
302
|
-
*/
|
|
318
|
+
* @internal
|
|
319
|
+
*/
|
|
303
320
|
function capturePaths(tracker, state) {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
321
|
+
tracker.previousRenderPaths = tracker.currentRenderPaths;
|
|
322
|
+
tracker.currentRenderPaths = optimizeTrackedPaths(
|
|
323
|
+
stopProxy(tracker.proxyState),
|
|
324
|
+
);
|
|
325
|
+
if (
|
|
326
|
+
tracker.previousRenderPaths.size === 0 &&
|
|
327
|
+
tracker.currentRenderPaths.size === 0
|
|
328
|
+
)
|
|
329
|
+
return;
|
|
330
|
+
const trackedPathsUnion = new Set(tracker.previousRenderPaths);
|
|
331
|
+
for (const path of tracker.currentRenderPaths) trackedPathsUnion.add(path);
|
|
332
|
+
const canReuseCache = tracker.lastCheckedState === state;
|
|
333
|
+
for (const path of trackedPathsUnion)
|
|
334
|
+
if (!tracker.pathCache.has(path)) {
|
|
335
|
+
const segments = parsePath(path);
|
|
336
|
+
const value =
|
|
337
|
+
canReuseCache && tracker.lastCheckedValues.has(path)
|
|
338
|
+
? tracker.lastCheckedValues.get(path)
|
|
339
|
+
: getValueAtPath(state, segments);
|
|
340
|
+
tracker.pathCache.set(path, {
|
|
341
|
+
segments,
|
|
342
|
+
value,
|
|
343
|
+
});
|
|
344
|
+
} else {
|
|
345
|
+
const info = tracker.pathCache.get(path);
|
|
346
|
+
if (!info) continue;
|
|
347
|
+
info.value =
|
|
348
|
+
canReuseCache && tracker.lastCheckedValues.has(path)
|
|
349
|
+
? tracker.lastCheckedValues.get(path)
|
|
350
|
+
: getValueAtPath(state, info.segments);
|
|
351
|
+
}
|
|
352
|
+
tracker.lastCheckedValues.clear();
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* @internal
|
|
356
|
+
*/
|
|
327
357
|
function hasDependencyChanges(tracker, state) {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
}
|
|
341
|
-
/**
|
|
342
|
-
* @internal
|
|
343
|
-
*/
|
|
358
|
+
if (tracker.pathCache.size === 0) return true;
|
|
359
|
+
tracker.lastCheckedValues.clear();
|
|
360
|
+
for (const [path, info] of tracker.pathCache.entries()) {
|
|
361
|
+
const currentValue = getValueAtPath(state, info.segments);
|
|
362
|
+
tracker.lastCheckedValues.set(path, currentValue);
|
|
363
|
+
if (!Object.is(currentValue, info.value)) {
|
|
364
|
+
tracker.lastCheckedState = state;
|
|
365
|
+
return true;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
tracker.lastCheckedState = state;
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* @internal
|
|
373
|
+
*/
|
|
344
374
|
function hasTrackedData(tracker) {
|
|
345
|
-
|
|
375
|
+
return (
|
|
376
|
+
tracker.proxyState.trackedPaths.size > 0 ||
|
|
377
|
+
tracker.pathCache.size > 0 ||
|
|
378
|
+
tracker.previousRenderPaths.size > 0
|
|
379
|
+
);
|
|
346
380
|
}
|
|
347
381
|
const descriptorCache = /* @__PURE__ */ new WeakMap();
|
|
348
382
|
const blocProxyCache = /* @__PURE__ */ new WeakMap();
|
|
349
383
|
const activeTrackerMap = /* @__PURE__ */ new WeakMap();
|
|
350
|
-
const MAX_GETTER_DEPTH =
|
|
384
|
+
const MAX_GETTER_DEPTH =
|
|
385
|
+
require_StateContainerRegistry.BLAC_DEFAULTS.MAX_GETTER_DEPTH;
|
|
351
386
|
/**
|
|
352
|
-
* @internal
|
|
353
|
-
*/
|
|
387
|
+
* @internal
|
|
388
|
+
*/
|
|
354
389
|
function getDescriptor(obj, prop) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* @internal
|
|
374
|
-
*/
|
|
390
|
+
const constructor = obj.constructor;
|
|
391
|
+
let constructorCache = descriptorCache.get(constructor);
|
|
392
|
+
if (constructorCache?.has(prop)) return constructorCache.get(prop);
|
|
393
|
+
let current = obj;
|
|
394
|
+
let descriptor;
|
|
395
|
+
while (current && current !== Object.prototype) {
|
|
396
|
+
descriptor = Object.getOwnPropertyDescriptor(current, prop);
|
|
397
|
+
if (descriptor) break;
|
|
398
|
+
current = Object.getPrototypeOf(current);
|
|
399
|
+
}
|
|
400
|
+
if (!constructorCache) {
|
|
401
|
+
constructorCache = /* @__PURE__ */ new Map();
|
|
402
|
+
descriptorCache.set(constructor, constructorCache);
|
|
403
|
+
}
|
|
404
|
+
constructorCache.set(prop, descriptor);
|
|
405
|
+
return descriptor;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* @internal
|
|
409
|
+
*/
|
|
375
410
|
function isGetter(obj, prop) {
|
|
376
|
-
|
|
411
|
+
return getDescriptor(obj, prop)?.get !== void 0;
|
|
377
412
|
}
|
|
378
413
|
/**
|
|
379
|
-
* @internal
|
|
380
|
-
*/
|
|
414
|
+
* @internal
|
|
415
|
+
*/
|
|
381
416
|
function createGetterState() {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* @internal
|
|
395
|
-
*/
|
|
417
|
+
return {
|
|
418
|
+
trackedValues: /* @__PURE__ */ new Map(),
|
|
419
|
+
currentlyAccessing: /* @__PURE__ */ new Set(),
|
|
420
|
+
trackedGetters: /* @__PURE__ */ new Set(),
|
|
421
|
+
isTracking: false,
|
|
422
|
+
renderCache: /* @__PURE__ */ new Map(),
|
|
423
|
+
cacheValid: false,
|
|
424
|
+
depth: 0,
|
|
425
|
+
visitedBlocs: /* @__PURE__ */ new Set(),
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* @internal
|
|
430
|
+
*/
|
|
396
431
|
function setActiveTracker(bloc, tracker) {
|
|
397
|
-
|
|
432
|
+
activeTrackerMap.set(bloc, tracker);
|
|
398
433
|
}
|
|
399
434
|
/**
|
|
400
|
-
* @internal
|
|
401
|
-
*/
|
|
435
|
+
* @internal
|
|
436
|
+
*/
|
|
402
437
|
function clearActiveTracker(bloc) {
|
|
403
|
-
|
|
438
|
+
activeTrackerMap.delete(bloc);
|
|
404
439
|
}
|
|
405
440
|
/**
|
|
406
|
-
* @internal
|
|
407
|
-
*/
|
|
441
|
+
* @internal
|
|
442
|
+
*/
|
|
408
443
|
function commitTrackedGetters(tracker) {
|
|
409
|
-
|
|
410
|
-
|
|
444
|
+
if (tracker.currentlyAccessing.size > 0)
|
|
445
|
+
tracker.trackedGetters = new Set(tracker.currentlyAccessing);
|
|
446
|
+
tracker.currentlyAccessing.clear();
|
|
411
447
|
}
|
|
412
448
|
/**
|
|
413
|
-
* Execute a tracked getter with depth/circular dependency checks and context management.
|
|
414
|
-
* @internal
|
|
415
|
-
*/
|
|
449
|
+
* Execute a tracked getter with depth/circular dependency checks and context management.
|
|
450
|
+
* @internal
|
|
451
|
+
*/
|
|
416
452
|
function executeTrackedGetter(target, prop, tracker) {
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
453
|
+
tracker.currentlyAccessing.add(prop);
|
|
454
|
+
if (tracker.cacheValid && tracker.renderCache.has(prop)) {
|
|
455
|
+
const cachedValue = tracker.renderCache.get(prop);
|
|
456
|
+
tracker.trackedValues.set(prop, cachedValue);
|
|
457
|
+
return cachedValue;
|
|
458
|
+
}
|
|
459
|
+
if (tracker.depth >= MAX_GETTER_DEPTH)
|
|
460
|
+
throw new Error(
|
|
461
|
+
`${require_StateContainerRegistry.BLAC_ERROR_PREFIX} Maximum getter depth (${MAX_GETTER_DEPTH}) exceeded. Possible circular dependency in getter "${String(prop)}" on ${target.constructor.name}.`,
|
|
462
|
+
);
|
|
463
|
+
if (tracker.visitedBlocs.has(target))
|
|
464
|
+
throw new Error(
|
|
465
|
+
`${require_StateContainerRegistry.BLAC_ERROR_PREFIX} Circular dependency detected: getter "${String(prop)}" on ${target.constructor.name}.`,
|
|
466
|
+
);
|
|
467
|
+
const prevDepth = tracker.depth;
|
|
468
|
+
const prevVisited = new Set(tracker.visitedBlocs);
|
|
469
|
+
tracker.depth++;
|
|
470
|
+
tracker.visitedBlocs.add(target);
|
|
471
|
+
try {
|
|
472
|
+
const descriptor = getDescriptor(target, prop);
|
|
473
|
+
if (!descriptor?.get) return target[prop];
|
|
474
|
+
const value = descriptor.get.call(target);
|
|
475
|
+
tracker.trackedValues.set(prop, value);
|
|
476
|
+
return value;
|
|
477
|
+
} catch (error) {
|
|
478
|
+
tracker.currentlyAccessing.delete(prop);
|
|
479
|
+
throw error;
|
|
480
|
+
} finally {
|
|
481
|
+
tracker.depth = prevDepth;
|
|
482
|
+
tracker.visitedBlocs = prevVisited;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* @internal
|
|
487
|
+
*/
|
|
446
488
|
function createBlocProxy(bloc) {
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
489
|
+
const cached = blocProxyCache.get(bloc);
|
|
490
|
+
if (cached) return cached;
|
|
491
|
+
const proxy = new Proxy(bloc, {
|
|
492
|
+
get(target, prop, receiver) {
|
|
493
|
+
const tracker = activeTrackerMap.get(target);
|
|
494
|
+
if (tracker?.isTracking && isGetter(target, prop))
|
|
495
|
+
return executeTrackedGetter(target, prop, tracker);
|
|
496
|
+
return Reflect.get(target, prop, receiver);
|
|
497
|
+
},
|
|
498
|
+
});
|
|
499
|
+
blocProxyCache.set(bloc, proxy);
|
|
500
|
+
return proxy;
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* @internal
|
|
504
|
+
*/
|
|
460
505
|
function hasGetterChanges(bloc, tracker) {
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
506
|
+
if (!tracker || tracker.trackedGetters.size === 0) return false;
|
|
507
|
+
tracker.renderCache.clear();
|
|
508
|
+
let hasAnyChange = false;
|
|
509
|
+
for (const prop of tracker.trackedGetters)
|
|
510
|
+
try {
|
|
511
|
+
const descriptor = getDescriptor(bloc, prop);
|
|
512
|
+
if (!descriptor?.get) continue;
|
|
513
|
+
const newValue = descriptor.get.call(bloc);
|
|
514
|
+
const oldValue = tracker.trackedValues.get(prop);
|
|
515
|
+
tracker.renderCache.set(prop, newValue);
|
|
516
|
+
tracker.trackedValues.set(prop, newValue);
|
|
517
|
+
if (!Object.is(newValue, oldValue)) hasAnyChange = true;
|
|
518
|
+
} catch (error) {
|
|
519
|
+
console.warn(
|
|
520
|
+
`${require_StateContainerRegistry.BLAC_ERROR_PREFIX} Getter "${String(prop)}" threw error during change detection. Stopping tracking for this getter.`,
|
|
521
|
+
error,
|
|
522
|
+
);
|
|
523
|
+
tracker.trackedGetters.delete(prop);
|
|
524
|
+
tracker.trackedValues.delete(prop);
|
|
525
|
+
tracker.cacheValid = false;
|
|
526
|
+
return true;
|
|
527
|
+
}
|
|
528
|
+
tracker.cacheValid = true;
|
|
529
|
+
return hasAnyChange;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* @internal
|
|
533
|
+
*/
|
|
485
534
|
function invalidateRenderCache(tracker) {
|
|
486
|
-
|
|
535
|
+
tracker.cacheValid = false;
|
|
487
536
|
}
|
|
488
537
|
/**
|
|
489
|
-
* Create a new tracking proxy state.
|
|
490
|
-
*/
|
|
538
|
+
* Create a new tracking proxy state.
|
|
539
|
+
*/
|
|
491
540
|
function createState() {
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
541
|
+
return {
|
|
542
|
+
dependencyState: createDependencyState(),
|
|
543
|
+
getterState: createGetterState(),
|
|
544
|
+
dependencies: /* @__PURE__ */ new Set(),
|
|
545
|
+
isTracking: false,
|
|
546
|
+
};
|
|
498
547
|
}
|
|
499
548
|
/**
|
|
500
|
-
* Start tracking on a tracking proxy.
|
|
501
|
-
*/
|
|
549
|
+
* Start tracking on a tracking proxy.
|
|
550
|
+
*/
|
|
502
551
|
function startTracking(tracker) {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
552
|
+
tracker.isTracking = true;
|
|
553
|
+
tracker.dependencies.clear();
|
|
554
|
+
tracker.getterState.isTracking = true;
|
|
555
|
+
startDependency(tracker.dependencyState);
|
|
507
556
|
}
|
|
508
557
|
/**
|
|
509
|
-
* Stop tracking and collect all dependencies.
|
|
510
|
-
*/
|
|
558
|
+
* Stop tracking and collect all dependencies.
|
|
559
|
+
*/
|
|
511
560
|
function stopTracking(tracker, bloc) {
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
561
|
+
tracker.isTracking = false;
|
|
562
|
+
tracker.getterState.isTracking = false;
|
|
563
|
+
capturePaths(tracker.dependencyState, bloc.state);
|
|
564
|
+
commitTrackedGetters(tracker.getterState);
|
|
565
|
+
return new Set(tracker.dependencies);
|
|
517
566
|
}
|
|
518
567
|
/**
|
|
519
|
-
* Check if tracked state or getters have changed.
|
|
520
|
-
*/
|
|
568
|
+
* Check if tracked state or getters have changed.
|
|
569
|
+
*/
|
|
521
570
|
function hasChanges(tracker, bloc) {
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
571
|
+
invalidateRenderCache(tracker.getterState);
|
|
572
|
+
const stateChanged = hasDependencyChanges(
|
|
573
|
+
tracker.dependencyState,
|
|
574
|
+
bloc.state,
|
|
575
|
+
);
|
|
576
|
+
const getterChanged = hasGetterChanges(bloc, tracker.getterState);
|
|
577
|
+
return stateChanged || getterChanged;
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* Create a tracking proxy for a bloc instance.
|
|
581
|
+
* Tracks both state property access and getter access.
|
|
582
|
+
*/
|
|
531
583
|
function createTrackingProxy(bloc, tracker) {
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
584
|
+
tracker.dependencies.add(bloc);
|
|
585
|
+
const stateProxyCache = /* @__PURE__ */ new WeakMap();
|
|
586
|
+
return new Proxy(bloc, {
|
|
587
|
+
get(target, prop, receiver) {
|
|
588
|
+
if (prop === 'state') {
|
|
589
|
+
if (!tracker.isTracking) return target.state;
|
|
590
|
+
const rawState = target.state;
|
|
591
|
+
if (rawState === null || typeof rawState !== 'object') return rawState;
|
|
592
|
+
if (stateProxyCache.has(rawState)) return stateProxyCache.get(rawState);
|
|
593
|
+
const stateProxy = createDependencyProxy(
|
|
594
|
+
tracker.dependencyState,
|
|
595
|
+
rawState,
|
|
596
|
+
);
|
|
597
|
+
stateProxyCache.set(rawState, stateProxy);
|
|
598
|
+
return stateProxy;
|
|
599
|
+
}
|
|
600
|
+
if (typeof prop === 'symbol') return Reflect.get(target, prop, receiver);
|
|
601
|
+
const value = Reflect.get(target, prop, receiver);
|
|
602
|
+
if (typeof value === 'function') return value.bind(target);
|
|
603
|
+
if (tracker.isTracking && isGetter(target, prop))
|
|
604
|
+
return executeTrackedGetter(target, prop, tracker.getterState);
|
|
605
|
+
return value;
|
|
606
|
+
},
|
|
607
|
+
});
|
|
550
608
|
}
|
|
551
609
|
//#endregion
|
|
552
610
|
//#region src/tracking/dependency-manager.ts
|
|
553
611
|
/**
|
|
554
|
-
* Manages subscriptions to state container dependencies.
|
|
555
|
-
* Provides efficient sync mechanism to add/remove subscriptions
|
|
556
|
-
* as dependencies change between callback invocations.
|
|
557
|
-
*/
|
|
612
|
+
* Manages subscriptions to state container dependencies.
|
|
613
|
+
* Provides efficient sync mechanism to add/remove subscriptions
|
|
614
|
+
* as dependencies change between callback invocations.
|
|
615
|
+
*/
|
|
558
616
|
var DependencyManager = class {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
617
|
+
constructor() {
|
|
618
|
+
this.subscriptions = /* @__PURE__ */ new Map();
|
|
619
|
+
this.currentDeps = /* @__PURE__ */ new Set();
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* Sync subscriptions with a new set of dependencies.
|
|
623
|
+
* Adds subscriptions for new deps, removes subscriptions for stale deps.
|
|
624
|
+
*
|
|
625
|
+
* @param newDeps - The new set of dependencies to subscribe to
|
|
626
|
+
* @param onChange - Callback to invoke when any dependency changes
|
|
627
|
+
* @param exclude - Optional instance to exclude from subscriptions (e.g., primary bloc)
|
|
628
|
+
* @returns true if the dependency set changed, false if unchanged
|
|
629
|
+
*/
|
|
630
|
+
sync(newDeps, onChange, exclude) {
|
|
631
|
+
const filteredNewDeps = /* @__PURE__ */ new Set();
|
|
632
|
+
for (const dep of newDeps)
|
|
633
|
+
if (dep !== exclude && !dep.isDisposed) filteredNewDeps.add(dep);
|
|
634
|
+
if (this.areSetsEqual(this.currentDeps, filteredNewDeps)) return false;
|
|
635
|
+
for (const dep of this.currentDeps)
|
|
636
|
+
if (!filteredNewDeps.has(dep)) {
|
|
637
|
+
const unsub = this.subscriptions.get(dep);
|
|
638
|
+
if (unsub) {
|
|
639
|
+
unsub();
|
|
640
|
+
this.subscriptions.delete(dep);
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
for (const dep of filteredNewDeps)
|
|
644
|
+
if (!this.currentDeps.has(dep) && !this.subscriptions.has(dep)) {
|
|
645
|
+
const unsub = dep.subscribe(onChange);
|
|
646
|
+
this.subscriptions.set(dep, unsub);
|
|
647
|
+
}
|
|
648
|
+
this.currentDeps = filteredNewDeps;
|
|
649
|
+
return true;
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* Add a single dependency subscription.
|
|
653
|
+
*/
|
|
654
|
+
add(dep, onChange) {
|
|
655
|
+
if (this.subscriptions.has(dep) || dep.isDisposed) return;
|
|
656
|
+
const unsub = dep.subscribe(onChange);
|
|
657
|
+
this.subscriptions.set(dep, unsub);
|
|
658
|
+
this.currentDeps.add(dep);
|
|
659
|
+
}
|
|
660
|
+
/**
|
|
661
|
+
* Check if a dependency is currently subscribed.
|
|
662
|
+
*/
|
|
663
|
+
has(dep) {
|
|
664
|
+
return this.currentDeps.has(dep);
|
|
665
|
+
}
|
|
666
|
+
/**
|
|
667
|
+
* Get the current set of dependencies.
|
|
668
|
+
*/
|
|
669
|
+
getDependencies() {
|
|
670
|
+
return new Set(this.currentDeps);
|
|
671
|
+
}
|
|
672
|
+
/**
|
|
673
|
+
* Clean up all active subscriptions.
|
|
674
|
+
*/
|
|
675
|
+
cleanup() {
|
|
676
|
+
for (const unsub of this.subscriptions.values()) unsub();
|
|
677
|
+
this.subscriptions.clear();
|
|
678
|
+
this.currentDeps.clear();
|
|
679
|
+
}
|
|
680
|
+
areSetsEqual(a, b) {
|
|
681
|
+
if (a.size !== b.size) return false;
|
|
682
|
+
for (const item of a) if (!b.has(item)) return false;
|
|
683
|
+
return true;
|
|
684
|
+
}
|
|
624
685
|
};
|
|
625
686
|
//#endregion
|
|
626
687
|
//#region src/tracking/resolve-dependencies.ts
|
|
627
688
|
/**
|
|
628
|
-
* Resolve all transitive dependencies of a bloc via BFS over `dependencies` maps.
|
|
629
|
-
* Uses cycle detection to avoid infinite loops.
|
|
630
|
-
* @internal
|
|
631
|
-
*/
|
|
689
|
+
* Resolve all transitive dependencies of a bloc via BFS over `dependencies` maps.
|
|
690
|
+
* Uses cycle detection to avoid infinite loops.
|
|
691
|
+
* @internal
|
|
692
|
+
*/
|
|
632
693
|
function resolveDependencies(bloc) {
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
694
|
+
const result = /* @__PURE__ */ new Set();
|
|
695
|
+
const visited = /* @__PURE__ */ new Set();
|
|
696
|
+
const queue = [bloc];
|
|
697
|
+
let head = 0;
|
|
698
|
+
while (head < queue.length) {
|
|
699
|
+
const current = queue[head++];
|
|
700
|
+
for (const [Type, key] of current.dependencies) {
|
|
701
|
+
const visitKey = `${Type.name}::${key}`;
|
|
702
|
+
if (visited.has(visitKey)) continue;
|
|
703
|
+
visited.add(visitKey);
|
|
704
|
+
const dep = require_config.getRegistry().ensure(Type, key);
|
|
705
|
+
result.add(dep);
|
|
706
|
+
if (dep.dependencies.size > 0) queue.push(dep);
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
result.delete(bloc);
|
|
710
|
+
return result;
|
|
650
711
|
}
|
|
651
712
|
//#endregion
|
|
652
|
-
Object.defineProperty(exports,
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
713
|
+
Object.defineProperty(exports, 'DependencyManager', {
|
|
714
|
+
enumerable: true,
|
|
715
|
+
get: function () {
|
|
716
|
+
return DependencyManager;
|
|
717
|
+
},
|
|
657
718
|
});
|
|
658
|
-
Object.defineProperty(exports,
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
719
|
+
Object.defineProperty(exports, 'capturePaths', {
|
|
720
|
+
enumerable: true,
|
|
721
|
+
get: function () {
|
|
722
|
+
return capturePaths;
|
|
723
|
+
},
|
|
663
724
|
});
|
|
664
|
-
Object.defineProperty(exports,
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
725
|
+
Object.defineProperty(exports, 'clearActiveTracker', {
|
|
726
|
+
enumerable: true,
|
|
727
|
+
get: function () {
|
|
728
|
+
return clearActiveTracker;
|
|
729
|
+
},
|
|
669
730
|
});
|
|
670
|
-
Object.defineProperty(exports,
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
731
|
+
Object.defineProperty(exports, 'commitTrackedGetters', {
|
|
732
|
+
enumerable: true,
|
|
733
|
+
get: function () {
|
|
734
|
+
return commitTrackedGetters;
|
|
735
|
+
},
|
|
675
736
|
});
|
|
676
|
-
Object.defineProperty(exports,
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
737
|
+
Object.defineProperty(exports, 'createBlocProxy', {
|
|
738
|
+
enumerable: true,
|
|
739
|
+
get: function () {
|
|
740
|
+
return createBlocProxy;
|
|
741
|
+
},
|
|
681
742
|
});
|
|
682
|
-
Object.defineProperty(exports,
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
743
|
+
Object.defineProperty(exports, 'createDependencyProxy', {
|
|
744
|
+
enumerable: true,
|
|
745
|
+
get: function () {
|
|
746
|
+
return createDependencyProxy;
|
|
747
|
+
},
|
|
687
748
|
});
|
|
688
|
-
Object.defineProperty(exports,
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
749
|
+
Object.defineProperty(exports, 'createDependencyState', {
|
|
750
|
+
enumerable: true,
|
|
751
|
+
get: function () {
|
|
752
|
+
return createDependencyState;
|
|
753
|
+
},
|
|
693
754
|
});
|
|
694
|
-
Object.defineProperty(exports,
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
755
|
+
Object.defineProperty(exports, 'createGetterState', {
|
|
756
|
+
enumerable: true,
|
|
757
|
+
get: function () {
|
|
758
|
+
return createGetterState;
|
|
759
|
+
},
|
|
699
760
|
});
|
|
700
|
-
Object.defineProperty(exports,
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
761
|
+
Object.defineProperty(exports, 'createState', {
|
|
762
|
+
enumerable: true,
|
|
763
|
+
get: function () {
|
|
764
|
+
return createState;
|
|
765
|
+
},
|
|
705
766
|
});
|
|
706
|
-
Object.defineProperty(exports,
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
767
|
+
Object.defineProperty(exports, 'createTrackingProxy', {
|
|
768
|
+
enumerable: true,
|
|
769
|
+
get: function () {
|
|
770
|
+
return createTrackingProxy;
|
|
771
|
+
},
|
|
711
772
|
});
|
|
712
|
-
Object.defineProperty(exports,
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
773
|
+
Object.defineProperty(exports, 'hasChanges', {
|
|
774
|
+
enumerable: true,
|
|
775
|
+
get: function () {
|
|
776
|
+
return hasChanges;
|
|
777
|
+
},
|
|
717
778
|
});
|
|
718
|
-
Object.defineProperty(exports,
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
779
|
+
Object.defineProperty(exports, 'hasDependencyChanges', {
|
|
780
|
+
enumerable: true,
|
|
781
|
+
get: function () {
|
|
782
|
+
return hasDependencyChanges;
|
|
783
|
+
},
|
|
723
784
|
});
|
|
724
|
-
Object.defineProperty(exports,
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
785
|
+
Object.defineProperty(exports, 'hasGetterChanges', {
|
|
786
|
+
enumerable: true,
|
|
787
|
+
get: function () {
|
|
788
|
+
return hasGetterChanges;
|
|
789
|
+
},
|
|
729
790
|
});
|
|
730
|
-
Object.defineProperty(exports,
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
791
|
+
Object.defineProperty(exports, 'hasTrackedData', {
|
|
792
|
+
enumerable: true,
|
|
793
|
+
get: function () {
|
|
794
|
+
return hasTrackedData;
|
|
795
|
+
},
|
|
735
796
|
});
|
|
736
|
-
Object.defineProperty(exports,
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
797
|
+
Object.defineProperty(exports, 'invalidateRenderCache', {
|
|
798
|
+
enumerable: true,
|
|
799
|
+
get: function () {
|
|
800
|
+
return invalidateRenderCache;
|
|
801
|
+
},
|
|
741
802
|
});
|
|
742
|
-
Object.defineProperty(exports,
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
803
|
+
Object.defineProperty(exports, 'resolveDependencies', {
|
|
804
|
+
enumerable: true,
|
|
805
|
+
get: function () {
|
|
806
|
+
return resolveDependencies;
|
|
807
|
+
},
|
|
747
808
|
});
|
|
748
|
-
Object.defineProperty(exports,
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
809
|
+
Object.defineProperty(exports, 'setActiveTracker', {
|
|
810
|
+
enumerable: true,
|
|
811
|
+
get: function () {
|
|
812
|
+
return setActiveTracker;
|
|
813
|
+
},
|
|
753
814
|
});
|
|
754
|
-
Object.defineProperty(exports,
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
815
|
+
Object.defineProperty(exports, 'shallowEqual', {
|
|
816
|
+
enumerable: true,
|
|
817
|
+
get: function () {
|
|
818
|
+
return shallowEqual;
|
|
819
|
+
},
|
|
759
820
|
});
|
|
760
|
-
Object.defineProperty(exports,
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
821
|
+
Object.defineProperty(exports, 'startDependency', {
|
|
822
|
+
enumerable: true,
|
|
823
|
+
get: function () {
|
|
824
|
+
return startDependency;
|
|
825
|
+
},
|
|
765
826
|
});
|
|
766
|
-
Object.defineProperty(exports,
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
827
|
+
Object.defineProperty(exports, 'startTracking', {
|
|
828
|
+
enumerable: true,
|
|
829
|
+
get: function () {
|
|
830
|
+
return startTracking;
|
|
831
|
+
},
|
|
771
832
|
});
|
|
772
|
-
Object.defineProperty(exports,
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
833
|
+
Object.defineProperty(exports, 'stopTracking', {
|
|
834
|
+
enumerable: true,
|
|
835
|
+
get: function () {
|
|
836
|
+
return stopTracking;
|
|
837
|
+
},
|
|
777
838
|
});
|
|
778
839
|
|
|
779
|
-
//# sourceMappingURL=resolve-dependencies-BNeayhbQ.cjs.map
|
|
840
|
+
//# sourceMappingURL=resolve-dependencies-BNeayhbQ.cjs.map
|