@logixjs/core 0.0.1 → 0.0.2
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/LICENSE +201 -0
- package/dist/{Bound-BN1DQ_lM.d.ts → Bound-CEa1ihvH.d.ts} +2 -2
- package/dist/{Bound-BPIfH9SS.d.cts → Bound-CNLNkC7c.d.cts} +2 -2
- package/dist/Bound.cjs +620 -163
- package/dist/Bound.cjs.map +1 -1
- package/dist/Bound.d.cts +3 -3
- package/dist/Bound.d.ts +3 -3
- package/dist/Bound.js +14 -14
- package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-BhMYr-1i.d.cts} +3 -3
- package/dist/{Debug-B5q5Bkzx.d.ts → Debug-ByM7m4Ft.d.ts} +3 -3
- package/dist/Debug.cjs +553 -32
- package/dist/Debug.cjs.map +1 -1
- package/dist/Debug.d.cts +10 -8
- package/dist/Debug.d.ts +10 -8
- package/dist/Debug.js +12 -10
- package/dist/EffectOp.cjs.map +1 -1
- package/dist/EffectOp.js +2 -3
- package/dist/EffectOp.js.map +1 -1
- package/dist/Env.cjs +664 -6
- package/dist/Env.cjs.map +1 -1
- package/dist/Env.js +5 -2
- package/dist/ExternalStore-BAz83PVq.d.cts +60 -0
- package/dist/ExternalStore-BYWPbYs8.d.ts +60 -0
- package/dist/ExternalStore.cjs +746 -0
- package/dist/ExternalStore.cjs.map +1 -0
- package/dist/ExternalStore.d.cts +4 -0
- package/dist/ExternalStore.d.ts +4 -0
- package/dist/ExternalStore.js +19 -0
- package/dist/ExternalStore.js.map +1 -0
- package/dist/{Flow-1fZT8MpX.d.cts → Flow-BlSoMmhV.d.cts} +2 -2
- package/dist/{Flow-BhpjE22E.d.ts → Flow-CQSGve5c.d.ts} +2 -2
- package/dist/Flow.cjs +2 -2
- package/dist/Flow.cjs.map +1 -1
- package/dist/Flow.d.cts +4 -4
- package/dist/Flow.d.ts +4 -4
- package/dist/Flow.js +7 -8
- package/dist/{Handle-D_cLW1Z3.d.ts → Handle-B7PSmsrY.d.ts} +1 -1
- package/dist/{Handle-D8D1zPb_.d.cts → Handle-ByovhL-c.d.cts} +1 -1
- package/dist/Handle.d.cts +3 -3
- package/dist/Handle.d.ts +3 -3
- package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-DGSpS4GM.d.ts} +2 -2
- package/dist/{Kernel-8kC-jOda.d.cts → Kernel-DZAk-Mrn.d.cts} +2 -2
- package/dist/Kernel.cjs +680 -22
- package/dist/Kernel.cjs.map +1 -1
- package/dist/Kernel.d.cts +10 -8
- package/dist/Kernel.d.ts +10 -8
- package/dist/Kernel.js +7 -4
- package/dist/{Link-Db7975nU.d.ts → Link-Cm4eR9n0.d.ts} +10 -3
- package/dist/{Link-fX8x1eCK.d.cts → Link-DF8i8iWR.d.cts} +10 -3
- package/dist/Link.cjs +1128 -86
- package/dist/Link.cjs.map +1 -1
- package/dist/Link.d.cts +3 -3
- package/dist/Link.d.ts +3 -3
- package/dist/Link.js +30 -25
- package/dist/{Logic-DRh4sDZj.d.cts → Logic-BcQA0AvE.d.cts} +1 -1
- package/dist/{Logic-BRjEMr-W.d.ts → Logic-OotSE1xw.d.ts} +1 -1
- package/dist/Logic.d.cts +3 -3
- package/dist/Logic.d.ts +3 -3
- package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-BNDJ8waF.d.ts} +1 -1
- package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-CvZ5WY1B.d.cts} +1 -1
- package/dist/MatchBuilder.d.cts +4 -4
- package/dist/MatchBuilder.d.ts +4 -4
- package/dist/Middleware-D8tUDLv_.d.cts +100 -0
- package/dist/Middleware-DS7CbTTN.d.ts +100 -0
- package/dist/Middleware.cjs +461 -13
- package/dist/Middleware.cjs.map +1 -1
- package/dist/Middleware.d.cts +2 -86
- package/dist/Middleware.d.ts +2 -86
- package/dist/Middleware.js +13 -11
- package/dist/{Module-DnzluX2J.d.ts → Module-CFj0I2yE.d.ts} +45 -18
- package/dist/{Module-B_0xRDMR.d.cts → Module-DpXPW9EQ.d.cts} +45 -18
- package/dist/Module.cjs +8583 -5741
- package/dist/Module.cjs.map +1 -1
- package/dist/Module.d.cts +5 -4
- package/dist/Module.d.ts +5 -4
- package/dist/Module.js +32 -27
- package/dist/ModuleTag-BcVF6z7B.d.ts +113 -0
- package/dist/ModuleTag-DuZXo_NS.d.cts +113 -0
- package/dist/ModuleTag.cjs +2609 -1232
- package/dist/ModuleTag.cjs.map +1 -1
- package/dist/ModuleTag.d.cts +4 -4
- package/dist/ModuleTag.d.ts +4 -4
- package/dist/ModuleTag.js +28 -25
- package/dist/{Observability-cY4kLn0S.d.ts → Observability-D-ZWeEVb.d.ts} +22 -15
- package/dist/{Observability-COqEvp2C.d.cts → Observability-V7sRMYTh.d.cts} +22 -15
- package/dist/Observability.cjs +1938 -640
- package/dist/Observability.cjs.map +1 -1
- package/dist/Observability.d.cts +4 -4
- package/dist/Observability.d.ts +4 -4
- package/dist/Observability.js +21 -19
- package/dist/{Process-mL8fHDSB.d.cts → Process-B55aJMFk.d.cts} +29 -4
- package/dist/{Process-CM9xbMdP.d.ts → Process-DvhFEwUS.d.ts} +29 -4
- package/dist/Process.cjs +1122 -85
- package/dist/Process.cjs.map +1 -1
- package/dist/Process.d.cts +4 -3
- package/dist/Process.d.ts +4 -3
- package/dist/Process.js +27 -22
- package/dist/{ReadQuery-BlMwhe-F.d.ts → ReadQuery-C4vZ8Prc.d.ts} +2 -2
- package/dist/{ReadQuery-SinbStGF.d.ts → ReadQuery-CafjlJQo.d.cts} +1 -1
- package/dist/{ReadQuery-SinbStGF.d.cts → ReadQuery-CafjlJQo.d.ts} +1 -1
- package/dist/{ReadQuery-CL5XlXts.d.cts → ReadQuery-mc0NgrFV.d.cts} +2 -2
- package/dist/ReadQuery.cjs +3 -3
- package/dist/ReadQuery.cjs.map +1 -1
- package/dist/ReadQuery.d.cts +2 -2
- package/dist/ReadQuery.d.ts +2 -2
- package/dist/ReadQuery.js +3 -3
- package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-C8xZ267q.d.ts} +88 -7
- package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DP7Vsv3f.d.cts} +88 -7
- package/dist/Reflection.cjs +2934 -1553
- package/dist/Reflection.cjs.map +1 -1
- package/dist/Reflection.d.cts +14 -11
- package/dist/Reflection.d.ts +14 -11
- package/dist/Reflection.js +26 -21
- package/dist/Resource.cjs +670 -12
- package/dist/Resource.cjs.map +1 -1
- package/dist/Resource.js +6 -3
- package/dist/Root.cjs +675 -17
- package/dist/Root.cjs.map +1 -1
- package/dist/Root.js +7 -3
- package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-BWc9YfUB.d.ts} +37 -7
- package/dist/{Runtime-B-aL-f29.d.cts → Runtime-PShIC4DW.d.cts} +37 -7
- package/dist/Runtime.cjs +1899 -809
- package/dist/Runtime.cjs.map +1 -1
- package/dist/Runtime.d.cts +14 -11
- package/dist/Runtime.d.ts +14 -11
- package/dist/Runtime.js +33 -28
- package/dist/ScopeRegistry.cjs +668 -10
- package/dist/ScopeRegistry.cjs.map +1 -1
- package/dist/ScopeRegistry.js +6 -3
- package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-CQsDlXJm.d.cts} +23 -6
- package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-YvJzVDKl.d.ts} +23 -6
- package/dist/StateTrait.cjs +1475 -370
- package/dist/StateTrait.cjs.map +1 -1
- package/dist/StateTrait.d.cts +7 -5
- package/dist/StateTrait.d.ts +7 -5
- package/dist/StateTrait.js +17 -14
- package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-CjIBICAA.d.ts} +2 -2
- package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-NmqGiXPC.d.cts} +2 -2
- package/dist/TraitLifecycle.cjs +489 -32
- package/dist/TraitLifecycle.cjs.map +1 -1
- package/dist/TraitLifecycle.d.cts +4 -4
- package/dist/TraitLifecycle.d.ts +4 -4
- package/dist/TraitLifecycle.js +7 -7
- package/dist/Workflow-BlFG_20_.d.cts +414 -0
- package/dist/Workflow-CW9S_aAP.d.ts +414 -0
- package/dist/Workflow.cjs +2977 -0
- package/dist/Workflow.cjs.map +1 -0
- package/dist/Workflow.d.cts +7 -0
- package/dist/Workflow.d.ts +7 -0
- package/dist/Workflow.js +55 -0
- package/dist/Workflow.js.map +1 -0
- package/dist/{chunk-G5ZBFPNU.js → chunk-2A4UKO2D.js} +2 -2
- package/dist/chunk-2DE6D42I.js +248 -0
- package/dist/chunk-2DE6D42I.js.map +1 -0
- package/dist/{chunk-ANLBCBDC.js → chunk-2DVLMSOE.js} +6 -6
- package/dist/{chunk-BE3HW4FY.js → chunk-34CF6OGE.js} +14 -16
- package/dist/chunk-34CF6OGE.js.map +1 -0
- package/dist/{chunk-ZFY7U2FR.js → chunk-3LPIXG56.js} +43 -3
- package/dist/chunk-3LPIXG56.js.map +1 -0
- package/dist/chunk-3VZYDNXZ.js +10 -0
- package/dist/chunk-3VZYDNXZ.js.map +1 -0
- package/dist/{chunk-3TMODYZV.js → chunk-3XO4HR6V.js} +2 -2
- package/dist/chunk-46FGVWRF.js +817 -0
- package/dist/chunk-46FGVWRF.js.map +1 -0
- package/dist/chunk-4LODUXFI.js +288 -0
- package/dist/chunk-4LODUXFI.js.map +1 -0
- package/dist/{chunk-GMPEOUP2.js → chunk-4MZ7BT3R.js} +2 -2
- package/dist/chunk-4MZ7BT3R.js.map +1 -0
- package/dist/{chunk-TKZ7MEIA.js → chunk-53GVPGSM.js} +2 -2
- package/dist/{chunk-KP7MUZNX.js → chunk-5W2V2NVJ.js} +2 -2
- package/dist/chunk-5W2V2NVJ.js.map +1 -0
- package/dist/chunk-6DACKW3D.js +613 -0
- package/dist/chunk-6DACKW3D.js.map +1 -0
- package/dist/chunk-AQ7L2QZ5.js +1395 -0
- package/dist/chunk-AQ7L2QZ5.js.map +1 -0
- package/dist/{chunk-NZJKFF45.js → chunk-C2UZZQ76.js} +2 -2
- package/dist/chunk-CCKP5Z6F.js +701 -0
- package/dist/chunk-CCKP5Z6F.js.map +1 -0
- package/dist/chunk-CUKM2XUW.js +27 -0
- package/dist/{chunk-QCHIQWAJ.js.map → chunk-CUKM2XUW.js.map} +1 -1
- package/dist/{chunk-M2RGJPXX.js → chunk-DBD6Q6JH.js} +3 -3
- package/dist/{chunk-ZGDVUPTM.js → chunk-EB4RGQO3.js} +2 -2
- package/dist/{chunk-PAYXCY6A.js → chunk-G7ESIQTI.js} +12 -14
- package/dist/chunk-G7ESIQTI.js.map +1 -0
- package/dist/chunk-GPBAZQ23.js +348 -0
- package/dist/chunk-GPBAZQ23.js.map +1 -0
- package/dist/{chunk-OFADUJWJ.js → chunk-I4LCE5OY.js} +3 -5
- package/dist/{chunk-OFADUJWJ.js.map → chunk-I4LCE5OY.js.map} +1 -1
- package/dist/{chunk-DFNM3WX2.js → chunk-IMCC6TBN.js} +158 -39
- package/dist/chunk-IMCC6TBN.js.map +1 -0
- package/dist/{chunk-76WT3HOR.js → chunk-IROZNQAF.js} +22 -21
- package/dist/chunk-IROZNQAF.js.map +1 -0
- package/dist/{chunk-TAAPQVZN.js → chunk-ISKNULNH.js} +2 -2
- package/dist/chunk-J3CWXIPV.js +242 -0
- package/dist/chunk-J3CWXIPV.js.map +1 -0
- package/dist/{chunk-PYOE4VSI.js → chunk-JBKYRTCS.js} +224 -161
- package/dist/chunk-JBKYRTCS.js.map +1 -0
- package/dist/{chunk-66ALHVEX.js → chunk-KKIAYH4X.js} +3 -3
- package/dist/{chunk-3RMKLXHX.js → chunk-KLDVG3SY.js} +2 -2
- package/dist/{chunk-BABLDP24.js → chunk-KSZQYSEH.js} +3 -3
- package/dist/chunk-KSZQYSEH.js.map +1 -0
- package/dist/{chunk-CW6T36TN.js → chunk-M3M7JFAH.js} +4 -4
- package/dist/chunk-M3M7JFAH.js.map +1 -0
- package/dist/{chunk-THATMZXD.js → chunk-MLB253V2.js} +2 -2
- package/dist/{chunk-THATMZXD.js.map → chunk-MLB253V2.js.map} +1 -1
- package/dist/{chunk-JGIWG6SR.js → chunk-MS77U77X.js} +664 -550
- package/dist/chunk-MS77U77X.js.map +1 -0
- package/dist/chunk-MW4FA3MW.js +23 -0
- package/dist/chunk-MW4FA3MW.js.map +1 -0
- package/dist/chunk-MYKNINNN.js +228 -0
- package/dist/chunk-MYKNINNN.js.map +1 -0
- package/dist/{chunk-4CQAV7YB.js → chunk-O6TTQXTY.js} +2 -2
- package/dist/{chunk-NBD3KUOZ.js → chunk-OJDJ4VDQ.js} +35 -24
- package/dist/chunk-OJDJ4VDQ.js.map +1 -0
- package/dist/{chunk-NQZ2OSGR.js → chunk-PVZEMNJY.js} +9 -9
- package/dist/chunk-PVZEMNJY.js.map +1 -0
- package/dist/chunk-RN26DV2M.js +271 -0
- package/dist/chunk-RN26DV2M.js.map +1 -0
- package/dist/{chunk-JCXGZRMU.js → chunk-RQQW3IQC.js} +3 -3
- package/dist/chunk-RQQW3IQC.js.map +1 -0
- package/dist/{chunk-24VULZ7A.js → chunk-TKOGZDD6.js} +3 -3
- package/dist/{chunk-EGK3KN7B.js → chunk-TQYLVXGY.js} +70 -39
- package/dist/chunk-TQYLVXGY.js.map +1 -0
- package/dist/{chunk-QMM6O4CD.js → chunk-UACD2CL2.js} +15 -3
- package/dist/{chunk-QMM6O4CD.js.map → chunk-UACD2CL2.js.map} +1 -1
- package/dist/{chunk-M3WTHJHJ.js → chunk-VH575UTV.js} +30 -34
- package/dist/chunk-VH575UTV.js.map +1 -0
- package/dist/{chunk-AUIR5O6W.js → chunk-WWBMC24F.js} +9 -15
- package/dist/chunk-WWBMC24F.js.map +1 -0
- package/dist/{chunk-JWOYLO27.js → chunk-WYJUJV4L.js} +80 -7
- package/dist/chunk-WYJUJV4L.js.map +1 -0
- package/dist/{chunk-EY4NZKDR.js → chunk-XFMMPYNU.js} +2 -2
- package/dist/chunk-Y4VRBIS6.js +35 -0
- package/dist/chunk-Y4VRBIS6.js.map +1 -0
- package/dist/{chunk-DMBALCE2.js → chunk-ZC7MSQ5U.js} +77 -4
- package/dist/chunk-ZC7MSQ5U.js.map +1 -0
- package/dist/{chunk-OGWBVHB3.js → chunk-ZCK6SCOE.js} +67 -8
- package/dist/chunk-ZCK6SCOE.js.map +1 -0
- package/dist/{chunk-IHVBV5C2.js → chunk-ZTFTABXV.js} +2 -1
- package/dist/chunk-ZTFTABXV.js.map +1 -0
- package/dist/index.cjs +9532 -5017
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +163 -27
- package/dist/index.d.ts +163 -27
- package/dist/index.js +119 -56
- package/dist/index.js.map +1 -1
- package/dist/{ir-BMP7yxJJ.d.cts → ir-C-Zm_GlZ.d.cts} +1 -1
- package/dist/{ir-DUOz6H-5.d.ts → ir-DGyGiwVe.d.ts} +1 -1
- package/dist/{module-k7m3txak.d.ts → module-DqQ1U-Me.d.ts} +129 -100
- package/dist/{module-B8CBqIZ_.d.cts → module-doenaCsZ.d.cts} +129 -100
- package/package.json +12 -1
- package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
- package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
- package/dist/chunk-3QMIVH35.js +0 -43
- package/dist/chunk-3QMIVH35.js.map +0 -1
- package/dist/chunk-76WT3HOR.js.map +0 -1
- package/dist/chunk-AUIR5O6W.js.map +0 -1
- package/dist/chunk-BABLDP24.js.map +0 -1
- package/dist/chunk-BE3HW4FY.js.map +0 -1
- package/dist/chunk-CW6T36TN.js.map +0 -1
- package/dist/chunk-DFNM3WX2.js.map +0 -1
- package/dist/chunk-DMBALCE2.js.map +0 -1
- package/dist/chunk-EGK3KN7B.js.map +0 -1
- package/dist/chunk-GMPEOUP2.js.map +0 -1
- package/dist/chunk-IHVBV5C2.js.map +0 -1
- package/dist/chunk-JCXGZRMU.js.map +0 -1
- package/dist/chunk-JGIWG6SR.js.map +0 -1
- package/dist/chunk-JWOYLO27.js.map +0 -1
- package/dist/chunk-KIXAU3GM.js +0 -137
- package/dist/chunk-KIXAU3GM.js.map +0 -1
- package/dist/chunk-KP7MUZNX.js.map +0 -1
- package/dist/chunk-M3WTHJHJ.js.map +0 -1
- package/dist/chunk-M7IYCTJV.js +0 -79
- package/dist/chunk-M7IYCTJV.js.map +0 -1
- package/dist/chunk-NBD3KUOZ.js.map +0 -1
- package/dist/chunk-NQZ2OSGR.js.map +0 -1
- package/dist/chunk-OGWBVHB3.js.map +0 -1
- package/dist/chunk-PAYXCY6A.js.map +0 -1
- package/dist/chunk-PYOE4VSI.js.map +0 -1
- package/dist/chunk-QCHIQWAJ.js +0 -21
- package/dist/chunk-VZB726PE.js +0 -93
- package/dist/chunk-VZB726PE.js.map +0 -1
- package/dist/chunk-W3TEWHLO.js +0 -568
- package/dist/chunk-W3TEWHLO.js.map +0 -1
- package/dist/chunk-ZFLHVFUC.js +0 -192
- package/dist/chunk-ZFLHVFUC.js.map +0 -1
- package/dist/chunk-ZFY7U2FR.js.map +0 -1
- /package/dist/{chunk-G5ZBFPNU.js.map → chunk-2A4UKO2D.js.map} +0 -0
- /package/dist/{chunk-ANLBCBDC.js.map → chunk-2DVLMSOE.js.map} +0 -0
- /package/dist/{chunk-3TMODYZV.js.map → chunk-3XO4HR6V.js.map} +0 -0
- /package/dist/{chunk-TKZ7MEIA.js.map → chunk-53GVPGSM.js.map} +0 -0
- /package/dist/{chunk-NZJKFF45.js.map → chunk-C2UZZQ76.js.map} +0 -0
- /package/dist/{chunk-M2RGJPXX.js.map → chunk-DBD6Q6JH.js.map} +0 -0
- /package/dist/{chunk-ZGDVUPTM.js.map → chunk-EB4RGQO3.js.map} +0 -0
- /package/dist/{chunk-TAAPQVZN.js.map → chunk-ISKNULNH.js.map} +0 -0
- /package/dist/{chunk-66ALHVEX.js.map → chunk-KKIAYH4X.js.map} +0 -0
- /package/dist/{chunk-3RMKLXHX.js.map → chunk-KLDVG3SY.js.map} +0 -0
- /package/dist/{chunk-4CQAV7YB.js.map → chunk-O6TTQXTY.js.map} +0 -0
- /package/dist/{chunk-24VULZ7A.js.map → chunk-TKOGZDD6.js.map} +0 -0
- /package/dist/{chunk-EY4NZKDR.js.map → chunk-XFMMPYNU.js.map} +0 -0
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
installOne,
|
|
3
|
+
mountAll
|
|
4
|
+
} from "./chunk-46FGVWRF.js";
|
|
1
5
|
import {
|
|
2
6
|
Reducer,
|
|
3
7
|
make
|
|
4
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-IROZNQAF.js";
|
|
5
9
|
import {
|
|
6
10
|
attachLogicUnitMeta,
|
|
7
11
|
getLogicUnitMeta,
|
|
8
12
|
updateLogicUnitMeta
|
|
9
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-Y4VRBIS6.js";
|
|
10
14
|
import {
|
|
11
15
|
isActionToken,
|
|
12
16
|
normalizeActions
|
|
@@ -14,10 +18,10 @@ import {
|
|
|
14
18
|
import {
|
|
15
19
|
internal,
|
|
16
20
|
record
|
|
17
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-4LODUXFI.js";
|
|
18
22
|
import {
|
|
19
23
|
isDevEnv
|
|
20
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-AQ7L2QZ5.js";
|
|
21
25
|
import {
|
|
22
26
|
__export
|
|
23
27
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -365,6 +369,7 @@ function make2(id, def, extend) {
|
|
|
365
369
|
const imports = config.imports;
|
|
366
370
|
const processes = config.processes;
|
|
367
371
|
const stateTransaction = config.stateTransaction;
|
|
372
|
+
const workflowDefs = Array.isArray(config.__logix_workflowDefs) ? config.__logix_workflowDefs : [];
|
|
368
373
|
const mountedResult = (config.logics ?? []).reduce(
|
|
369
374
|
(acc, logic) => mountLogicUnit(acc.mounted, acc.overrides, { logic }),
|
|
370
375
|
{ mounted: [], overrides: [] }
|
|
@@ -394,6 +399,7 @@ function make2(id, def, extend) {
|
|
|
394
399
|
mounted: state.mounted,
|
|
395
400
|
overrides: state.overrides,
|
|
396
401
|
layers: state.layers,
|
|
402
|
+
workflowDefs: state.workflowDefs,
|
|
397
403
|
rebuild: () => buildImpl(state)
|
|
398
404
|
};
|
|
399
405
|
const mod = {
|
|
@@ -418,7 +424,8 @@ function make2(id, def, extend) {
|
|
|
418
424
|
return createModule({
|
|
419
425
|
mounted: next.mounted,
|
|
420
426
|
overrides: next.overrides,
|
|
421
|
-
layers: current.layers
|
|
427
|
+
layers: current.layers,
|
|
428
|
+
workflowDefs: current.workflowDefs
|
|
422
429
|
});
|
|
423
430
|
};
|
|
424
431
|
mod.withLayer = (layer) => {
|
|
@@ -426,18 +433,70 @@ function make2(id, def, extend) {
|
|
|
426
433
|
return createModule({
|
|
427
434
|
mounted: current.mounted,
|
|
428
435
|
overrides: current.overrides,
|
|
429
|
-
layers: [...current.layers, layer]
|
|
436
|
+
layers: [...current.layers, layer],
|
|
437
|
+
workflowDefs: current.workflowDefs
|
|
430
438
|
});
|
|
431
439
|
};
|
|
432
440
|
mod.withLayers = (...layers) => layers.reduce((acc, layer) => acc.withLayer(layer), mod);
|
|
441
|
+
mod.withWorkflow = (workflow) => {
|
|
442
|
+
const install = workflow?.install;
|
|
443
|
+
const logic = typeof install === "function" ? install(mod.tag) : installOne({ moduleTag: mod.tag, program: workflow });
|
|
444
|
+
const current = mod[MODULE_INTERNAL];
|
|
445
|
+
const next = mountLogicUnit(current.mounted, current.overrides, { logic });
|
|
446
|
+
const nextWorkflowDefs = [...current.workflowDefs, workflow.def];
|
|
447
|
+
return createModule({
|
|
448
|
+
mounted: next.mounted,
|
|
449
|
+
overrides: next.overrides,
|
|
450
|
+
layers: current.layers,
|
|
451
|
+
workflowDefs: nextWorkflowDefs
|
|
452
|
+
});
|
|
453
|
+
};
|
|
454
|
+
mod.withWorkflows = (workflows) => {
|
|
455
|
+
if (!Array.isArray(workflows) || workflows.length === 0) return mod;
|
|
456
|
+
const logic = mountAll({ moduleTag: mod.tag, programs: workflows });
|
|
457
|
+
const current = mod[MODULE_INTERNAL];
|
|
458
|
+
const next = mountLogicUnit(current.mounted, current.overrides, { logic });
|
|
459
|
+
const nextWorkflowDefs = [...current.workflowDefs, ...workflows.map((w) => w.def)];
|
|
460
|
+
return createModule({
|
|
461
|
+
mounted: next.mounted,
|
|
462
|
+
overrides: next.overrides,
|
|
463
|
+
layers: current.layers,
|
|
464
|
+
workflowDefs: nextWorkflowDefs
|
|
465
|
+
});
|
|
466
|
+
};
|
|
433
467
|
return mod;
|
|
434
468
|
};
|
|
435
469
|
return createModule({
|
|
436
470
|
mounted: mountedResult.mounted,
|
|
437
471
|
overrides: mountedResult.overrides,
|
|
438
|
-
layers: []
|
|
472
|
+
layers: [],
|
|
473
|
+
workflowDefs
|
|
439
474
|
});
|
|
440
475
|
};
|
|
476
|
+
const baseImplement = base.implement;
|
|
477
|
+
const withExtraLogics = (extraLogics, extraWorkflowDefs) => {
|
|
478
|
+
const next = { ...base };
|
|
479
|
+
next.withWorkflow = (workflow) => {
|
|
480
|
+
const install = workflow?.install;
|
|
481
|
+
const logic = typeof install === "function" ? install(next.tag) : installOne({ moduleTag: next.tag, program: workflow });
|
|
482
|
+
return withExtraLogics([...extraLogics, logic], [...extraWorkflowDefs, workflow.def]);
|
|
483
|
+
};
|
|
484
|
+
next.withWorkflows = (workflows) => {
|
|
485
|
+
if (!Array.isArray(workflows) || workflows.length === 0) return next;
|
|
486
|
+
const logic = mountAll({ moduleTag: next.tag, programs: workflows });
|
|
487
|
+
return withExtraLogics(
|
|
488
|
+
[...extraLogics, logic],
|
|
489
|
+
[...extraWorkflowDefs, ...workflows.map((w) => w.def)]
|
|
490
|
+
);
|
|
491
|
+
};
|
|
492
|
+
next.implement = (config) => {
|
|
493
|
+
const mergedLogics = [...config.logics ?? [], ...extraLogics];
|
|
494
|
+
return baseImplement({ ...config, logics: mergedLogics, __logix_workflowDefs: extraWorkflowDefs });
|
|
495
|
+
};
|
|
496
|
+
return next;
|
|
497
|
+
};
|
|
498
|
+
base.withWorkflow = (workflow) => withExtraLogics([], []).withWorkflow(workflow);
|
|
499
|
+
base.withWorkflows = (workflows) => withExtraLogics([], []).withWorkflows(workflows);
|
|
441
500
|
return base;
|
|
442
501
|
}
|
|
443
502
|
var Manage = {
|
|
@@ -458,4 +517,4 @@ export {
|
|
|
458
517
|
Manage,
|
|
459
518
|
Module_exports
|
|
460
519
|
};
|
|
461
|
-
//# sourceMappingURL=chunk-
|
|
520
|
+
//# sourceMappingURL=chunk-ZCK6SCOE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Module.ts"],"sourcesContent":["import { Context, Effect, FiberRef, Layer, Schema } from 'effect'\nimport * as Debug from './Debug.js'\nimport * as Logic from './Logic.js'\nimport * as ModuleTagNS from './ModuleTag.js'\nimport type { Workflow } from './Workflow.js'\nimport * as Action from './internal/action.js'\nimport type { JsonValue } from './internal/observability/jsonValue.js'\nimport * as WorkflowRuntime from './internal/runtime/core/WorkflowRuntime.js'\nimport { isDevEnv } from './internal/runtime/core/env.js'\nimport * as LogicUnitMetaInternal from './internal/runtime/core/LogicUnitMeta.js'\nimport type {\n ActionsFromMap,\n ActionOf,\n AnyModuleShape,\n AnySchema,\n BoundApi,\n LogicEffect,\n ModuleLike,\n ModuleHandle,\n ModuleImpl,\n ModuleImplementStateTransactionOptions,\n ModuleLogic,\n ModuleRuntime,\n ModuleRuntimeOfShape,\n ModuleTag,\n ModuleShape,\n MutatorsFromMap,\n ReducersFromMap,\n StateChangeWithMeta,\n StateCommitMeta,\n StateCommitMode,\n StateCommitPriority,\n StateOf,\n} from './internal/module.js'\n\n/**\n * Module (definition object) public API.\n *\n * - Domain factories (Form / CRUD / ...) should return this object.\n * - `.tag` is the identity anchor (ModuleTag/Context.Tag), used by `$.use(...)` and Env injection.\n * - `.impl` is the assembly blueprint (ModuleImpl), consumed by React/Runtime entry points.\n * - `.logic()` only produces the logic value; `.withLogic/withLayer(s)` changes the runnable shape (immutable: returns a new object).\n */\n\nexport type {\n AnySchema,\n AnyModuleShape,\n ModuleShape,\n ModuleLogic,\n ModuleImpl,\n ModuleRuntime,\n ModuleRuntimeOfShape,\n ModuleHandle,\n ModuleTag,\n StateOf,\n ActionOf,\n ActionsFromMap,\n MutatorsFromMap,\n ReducersFromMap,\n BoundApi,\n LogicEffect,\n DispatchEffect,\n ActionForTag,\n BoundApiRootApi,\n BoundApiStateApi,\n BoundApiDispatchersApi,\n BoundApiDispatchApi,\n BoundApiLifecycleApi,\n BoundApiUseApi,\n BoundApiTraitsApi,\n BoundApiReducerApi,\n StateCommitMode,\n StateCommitPriority,\n StateCommitMeta,\n StateChangeWithMeta,\n} from './internal/module.js'\n\nexport interface DevSource {\n readonly file: string\n readonly line: number\n readonly column: number\n}\n\nexport interface ModuleDev {\n readonly source?: DevSource\n}\n\nexport interface LogicUnitOptions {\n readonly id?: string\n readonly kind?: string\n readonly name?: string\n readonly source?: DevSource\n}\n\nexport interface MountedLogicUnitSummary {\n readonly kind: string\n readonly id: string\n readonly derived?: boolean\n readonly name?: string\n}\n\nexport interface ModuleDescriptor {\n readonly id: string\n readonly moduleId: string\n readonly instanceId: string\n readonly actionKeys: ReadonlyArray<string>\n readonly logicUnits: ReadonlyArray<MountedLogicUnitSummary>\n readonly schemaKeys?: ReadonlyArray<string>\n readonly meta?: Record<string, JsonValue>\n readonly source?: DevSource\n}\n\nexport type HandleExtendFn<Sh extends AnyModuleShape, Ext extends object> = (\n runtime: ModuleRuntimeOfShape<Sh>,\n base: ModuleHandle<Sh>,\n) => Ext | (ModuleHandle<Sh> & Ext) | null | undefined\n\nexport type ModuleSelfHandleEffect<Sh extends AnyModuleShape, R = never, Ext extends object = {}> = LogicEffect<\n Sh,\n R,\n ModuleHandle<Sh> & Ext,\n never\n>\n\nexport type ModuleLogicApi<Sh extends AnyModuleShape, R = never, Ext extends object = {}> = BoundApi<Sh, R> & {\n readonly self: ModuleSelfHandleEffect<Sh, R, Ext>\n}\n\ntype LogicUnitMeta = LogicUnitMetaInternal.LogicUnitMeta\nconst attachLogicUnitMeta = <L extends object>(logic: L, meta: LogicUnitMeta): L =>\n LogicUnitMetaInternal.attachLogicUnitMeta(logic, meta as any) as any\n\ntype NoInfer_<T> = [T][T extends any ? 0 : never]\n\ntype MountedLogicUnit<Sh extends AnyModuleShape> = {\n readonly id: string\n readonly derived: boolean\n readonly kind: string\n readonly name?: string\n readonly source?: DevSource\n readonly logic: ModuleLogic<Sh, any, any>\n readonly origin?: {\n readonly explicitId?: string\n readonly defaultId?: string\n readonly derivedBase?: string\n }\n}\n\ntype LogicOverrideWarning = {\n readonly id: string\n readonly from: Pick<MountedLogicUnit<any>, 'kind' | 'name' | 'source'> & {\n readonly order: number\n }\n readonly to: Pick<MountedLogicUnit<any>, 'kind' | 'name' | 'source'> & {\n readonly order: number\n }\n}\n\ntype WorkflowDef = Workflow['def']\n\ntype ModuleInternal<Id extends string, Sh extends AnyModuleShape> = {\n readonly initial: StateOf<Sh>\n readonly imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n readonly processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n readonly stateTransaction?: ModuleImplementStateTransactionOptions\n readonly mounted: ReadonlyArray<MountedLogicUnit<Sh>>\n readonly overrides: ReadonlyArray<LogicOverrideWarning>\n readonly layers: ReadonlyArray<Layer.Layer<any, never, any>>\n readonly workflowDefs: ReadonlyArray<WorkflowDef>\n readonly rebuild: () => ModuleImpl<Id, Sh, any>\n}\n\nconst MODULE_INTERNAL = Symbol.for('logix.module.internal')\nconst MODULE_DECLARED_EFFECTS = Symbol.for('logix.module.effects.declared')\n\ntype ModuleDefBase<\n Id extends string = string,\n Sh extends AnyModuleShape = AnyModuleShape,\n Ext extends object = {},\n> = ModuleLike<Id, Sh, Ext> & {\n readonly shape: Sh\n readonly stateSchema: Sh['stateSchema']\n readonly actionSchema: Sh['actionSchema']\n /**\n * Raw ActionMap (tag -> payload schema).\n * - Mainly for DX/reflection; runtime contract is still based on tag.shape/actionSchema.\n */\n readonly actions: Sh['actionMap']\n /**\n * Raw reducers (if provided by the definition).\n * - Mainly for DX/reflection; runtime normalizes them into primary reducers inside ModuleTag/ModuleFactory.\n */\n readonly reducers?: ReducersFromMap<Sh['stateSchema'], Sh['actionMap']>\n readonly live: <R = never, E = never>(\n initial: StateOf<Sh>,\n ...logics: Array<ModuleLogic<Sh, R, E>>\n ) => Layer.Layer<ModuleRuntimeOfShape<Sh>, E, R>\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, JsonValue>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n readonly logic: <R = never, E = unknown>(\n build: (\n api: ModuleLogicApi<Sh, R, Ext>,\n ) => ModuleLogic<Sh, R, E>,\n options?: LogicUnitOptions,\n ) => ModuleLogic<Sh, R, E>\n}\n\nexport type AnyModule = {\n readonly _kind: 'Module'\n readonly id: string\n readonly tag: ModuleTag<string, AnyModuleShape>\n readonly impl: ModuleImpl<any, AnyModuleShape, any>\n readonly actions: Record<string, AnySchema>\n readonly reducers?: Record<string, unknown>\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, JsonValue>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n}\n\nexport type Module<Id extends string, Sh extends AnyModuleShape, Ext extends object = {}, R = never> = ModuleDefBase<\n Id,\n Sh,\n Ext\n> & {\n readonly _kind: 'Module'\n readonly impl: ModuleImpl<Id, Sh, R>\n readonly withLogic: (logic: ModuleLogic<Sh, any, any>, options?: LogicUnitOptions) => Module<Id, Sh, Ext, R>\n readonly withLogics: (...inputs: ReadonlyArray<MountInput<Sh>>) => Module<Id, Sh, Ext, R>\n readonly withWorkflow: (workflow: Workflow) => Module<Id, Sh, Ext, R>\n readonly withWorkflows: (workflows: ReadonlyArray<Workflow>) => Module<Id, Sh, Ext, R>\n readonly withLayer: (layer: Layer.Layer<any, never, any>) => Module<Id, Sh, Ext, R>\n readonly withLayers: (...layers: ReadonlyArray<Layer.Layer<any, never, any>>) => Module<Id, Sh, Ext, R>\n}\n\nexport type ModuleDef<Id extends string, Sh extends AnyModuleShape, Ext extends object = {}> = ModuleDefBase<\n Id,\n Sh,\n Ext\n> & {\n readonly _kind: 'ModuleDef'\n readonly withWorkflow: (workflow: Workflow) => ModuleDef<Id, Sh, Ext>\n readonly withWorkflows: (workflows: ReadonlyArray<Workflow>) => ModuleDef<Id, Sh, Ext>\n readonly implement: <R = never>(config: {\n readonly initial: StateOf<Sh>\n readonly logics?: Array<ModuleLogic<Sh, R, any>>\n readonly imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n readonly processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n readonly stateTransaction?: ModuleImplementStateTransactionOptions\n }) => Module<Id, Sh, Ext, R>\n}\n\nexport const is = (value: unknown): value is ModuleDefBase => {\n if (!value || typeof value !== 'object') return false\n const kind = (value as any)._kind\n if (kind !== 'ModuleDef' && kind !== 'Module') return false\n return Context.isTag((value as any).tag)\n}\n\nexport const hasImpl = (value: unknown): value is AnyModule => {\n if (!is(value)) return false\n return (\n typeof (value as any).impl === 'object' && (value as any).impl !== null && (value as any).impl._tag === 'ModuleImpl'\n )\n}\n\nexport const unwrapTag = <Id extends string, Sh extends AnyModuleShape>(\n module: ModuleLike<Id, Sh, any>,\n): ModuleTag<Id, Sh> => module.tag\n\nexport const unwrapImpl = <Id extends string, Sh extends AnyModuleShape>(\n module: AnyModule & { readonly id: Id; readonly tag: ModuleTag<Id, Sh> },\n): ModuleImpl<Id, Sh, any> => (module as any).impl as ModuleImpl<Id, Sh, any>\n\nexport const descriptor = (\n module: ModuleDefBase<string, AnyModuleShape, any>,\n runtime: ModuleRuntime<any, any>,\n): ModuleDescriptor => {\n const actionKeys = Object.keys((module.tag as any).shape?.actionMap ?? {})\n\n const internal = (module as any)[MODULE_INTERNAL] as ModuleInternal<string, AnyModuleShape> | undefined\n\n const logicUnits: ReadonlyArray<MountedLogicUnitSummary> = internal\n ? internal.mounted.map((u) => ({\n kind: u.kind,\n id: u.id,\n derived: u.derived ? true : undefined,\n name: u.name,\n }))\n : []\n\n const schemaKeys = module.schemas && typeof module.schemas === 'object' ? Object.keys(module.schemas) : undefined\n\n const meta = module.meta && typeof module.meta === 'object' ? module.meta : undefined\n\n const source = module.dev?.source\n\n return {\n id: module.id,\n moduleId: String(runtime.moduleId),\n instanceId: String(runtime.instanceId),\n actionKeys,\n logicUnits,\n schemaKeys,\n meta,\n source,\n }\n}\n\ntype MountInput<Sh extends AnyModuleShape> =\n | ModuleLogic<Sh, any, any>\n | readonly [ModuleLogic<Sh, any, any>, LogicUnitOptions]\n\nconst normalizeMountInput = <Sh extends AnyModuleShape>(\n input: MountInput<Sh>,\n): { readonly logic: ModuleLogic<Sh, any, any>; readonly options?: LogicUnitOptions } => {\n if (Array.isArray(input)) {\n return { logic: input[0], options: input[1] }\n }\n return { logic: input as ModuleLogic<Sh, any, any> }\n}\n\nconst resolveLogicUnit = <Sh extends AnyModuleShape>(\n existing: ReadonlyArray<MountedLogicUnit<Sh>>,\n logic: ModuleLogic<Sh, any, any>,\n options?: LogicUnitOptions,\n): MountedLogicUnit<Sh> => {\n const meta = LogicUnitMetaInternal.getLogicUnitMeta(logic)\n const explicitId = options?.id\n const defaultId = meta?.id\n\n const kind = (options?.kind ?? meta?.kind ?? 'user').trim() || 'user'\n const name =\n options?.name ?? meta?.name ?? (typeof defaultId === 'string' && defaultId.length > 0 ? defaultId : undefined)\n\n const source = options?.source ?? meta?.source\n\n if (typeof explicitId === 'string' && explicitId.trim().length > 0) {\n return {\n id: explicitId.trim(),\n derived: false,\n kind,\n name,\n source,\n logic,\n origin: { explicitId: explicitId.trim(), defaultId },\n }\n }\n\n if (typeof defaultId === 'string' && defaultId.trim().length > 0) {\n return {\n id: defaultId.trim(),\n derived: false,\n kind,\n name,\n source,\n logic,\n origin: { defaultId: defaultId.trim() },\n }\n }\n\n // Derived id: reproducible within the same composition order.\n const used = new Set(existing.map((u) => u.id))\n const baseRaw = (name ?? kind ?? 'logic').trim() || 'logic'\n const base = baseRaw.replace(/\\s+/g, '_')\n\n let n = 1\n while (used.has(`${base}#${n}`)) n += 1\n const derivedId = `${base}#${n}`\n\n return {\n id: derivedId,\n derived: true,\n kind,\n name: name ?? baseRaw,\n source,\n logic,\n origin: { derivedBase: baseRaw },\n }\n}\n\nconst mountLogicUnit = <Sh extends AnyModuleShape>(\n current: ReadonlyArray<MountedLogicUnit<Sh>>,\n overrides: ReadonlyArray<LogicOverrideWarning>,\n input: { readonly logic: ModuleLogic<Sh, any, any>; readonly options?: LogicUnitOptions },\n): {\n readonly mounted: ReadonlyArray<MountedLogicUnit<Sh>>\n readonly overrides: ReadonlyArray<LogicOverrideWarning>\n} => {\n const nextUnit = resolveLogicUnit(current, input.logic, input.options)\n // Write the resolved verdict back to logic meta for provenance/diagnostics (aligned with 022-module).\n LogicUnitMetaInternal.updateLogicUnitMeta(nextUnit.logic as any, {\n resolvedId: nextUnit.id,\n resolvedIdKind: nextUnit.derived ? 'derived' : 'explicit',\n resolvedKind: nextUnit.kind,\n resolvedName: nextUnit.name,\n resolvedSource: nextUnit.source as any,\n })\n\n const prevIndex = current.findIndex((u) => u.id === nextUnit.id)\n if (prevIndex < 0) {\n return { mounted: [...current, nextUnit], overrides }\n }\n\n const prev = current[prevIndex]\n const nextMounted = [...current.slice(0, prevIndex), ...current.slice(prevIndex + 1), nextUnit]\n\n const nextOverrides: ReadonlyArray<LogicOverrideWarning> = [\n ...overrides,\n {\n id: nextUnit.id,\n from: {\n kind: prev.kind,\n name: prev.name,\n source: prev.source,\n order: prevIndex,\n },\n to: {\n kind: nextUnit.kind,\n name: nextUnit.name,\n source: nextUnit.source,\n order: nextMounted.length - 1,\n },\n },\n ]\n\n return { mounted: nextMounted, overrides: nextOverrides }\n}\n\nconst formatSource = (source?: DevSource): string => {\n if (!source) return 'unknown'\n return `${source.file}:${source.line}:${source.column}`\n}\n\nconst makeOverrideDiagnosticsLogic = (\n tag: ModuleTag<any, AnyModuleShape>,\n overrides: ReadonlyArray<LogicOverrideWarning>,\n): ModuleLogic<any, any, never> => {\n if (overrides.length === 0) {\n return Effect.void as any\n }\n\n return tag.logic(() =>\n Effect.gen(function* () {\n if (!isDevEnv()) return\n\n const diagnosticsLevel = yield* FiberRef.get(Debug.internal.currentDiagnosticsLevel as any)\n if (diagnosticsLevel === 'off') return\n\n const runtime = (yield* tag) as ModuleRuntime<any, any>\n\n yield* Effect.forEach(\n overrides,\n (o) =>\n Debug.record({\n type: 'diagnostic',\n moduleId: runtime.moduleId,\n instanceId: runtime.instanceId,\n code: 'module_logic::override',\n severity: 'warning',\n message: `logicUnitId \"${o.id}\" overridden (last-write-wins).`,\n hint:\n `from(#${o.from.order}) kind=${o.from.kind} name=${o.from.name ?? 'unknown'} source=${formatSource(o.from.source)}\\n` +\n `to(#${o.to.order}) kind=${o.to.kind} name=${o.to.name ?? 'unknown'} source=${formatSource(o.to.source)}`,\n kind: 'logic_unit_override',\n }),\n { discard: true },\n )\n }),\n )\n}\n\nconst makeDeclaredEffectsLogic = (\n tag: ModuleTag<any, AnyModuleShape>,\n effects: Record<string, ReadonlyArray<unknown> | undefined> | undefined,\n moduleId: string,\n): ModuleLogic<any, any, never> => {\n if (!effects || typeof effects !== 'object' || Object.keys(effects).length === 0) {\n return Effect.void as any\n }\n\n const logic = tag.logic(($) => ({\n setup: Effect.gen(function* () {\n const actions = ($ as any).actions as Record<string, Action.AnyActionToken>\n const effectApi = ($ as any).effect as\n | ((token: unknown, handler: (payload: unknown) => Effect.Effect<void, any, any>) => Effect.Effect<void, never, any>)\n | undefined\n if (typeof effectApi !== 'function') return\n\n const wrappedHandlers = new WeakMap<(...args: any[]) => any, (payload: unknown) => Effect.Effect<void, any, any>>()\n\n for (const actionTag of Object.keys(effects).sort()) {\n const token = actions[actionTag]\n if (!Action.isActionToken(token)) continue\n\n const handlers = effects[actionTag]\n if (!Array.isArray(handlers)) continue\n\n for (const handler of handlers) {\n if (typeof handler !== 'function') continue\n let wrapped = wrappedHandlers.get(handler)\n if (!wrapped) {\n wrapped = (payload: unknown) => (handler as any)($, payload)\n wrappedHandlers.set(handler, wrapped)\n }\n yield* effectApi(token, wrapped)\n }\n }\n }),\n run: Effect.void,\n })) as ModuleLogic<any, any, never>\n\n LogicUnitMetaInternal.attachLogicUnitMeta(logic as any, {\n id: '__logix_internal:effects:declared',\n kind: 'internal',\n name: 'effects:declared',\n moduleId,\n })\n\n return logic\n}\n\nconst makeLogicFactory = <Id extends string, Sh extends AnyModuleShape, Ext extends object>(\n selfModule: ModuleDefBase<Id, Sh, Ext>,\n): ModuleDefBase<Id, Sh, Ext>['logic'] => {\n const tag = selfModule.tag\n return (build, options) => {\n const eff = tag.logic((api) => {\n const withSelf = Object.create(api) as ModuleLogicApi<Sh, any, Ext>\n ;(withSelf as any).self = Effect.suspend(() => (api as any).use(selfModule as any))\n return build(withSelf as any)\n }) as ModuleLogic<Sh, any, any>\n\n const meta: LogicUnitMeta = {\n id: options?.id,\n kind: options?.kind,\n name: options?.name,\n source: options?.source,\n moduleId: selfModule.id,\n }\n\n return attachLogicUnitMeta(eff as any, meta) as any\n }\n}\n\ntype MakeDef<Id extends string, SSchema extends AnySchema, AMap extends Action.ActionDefs> = {\n readonly state: SSchema\n readonly actions: AMap\n readonly reducers?: ReducersFromMap<SSchema, NoInfer_<AMap>>\n readonly immerReducers?: MutatorsFromMap<SSchema, NoInfer_<AMap>>\n readonly effects?: EffectsFromMap<NoInfer_<AMap>>\n readonly traits?: unknown\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, JsonValue>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n}\n\ntype AnyActionMap = Action.ActionDefs\ntype EmptyActionMap = Record<never, never>\n\ntype PayloadOfActionDef<V> = V extends Schema.Schema<any, any, any>\n ? Schema.Schema.Type<V>\n : V extends Action.ActionToken<any, infer P, any>\n ? P\n : never\n\ntype DeclaredEffectHandler<Payload> = ($: unknown, payload: Payload) => Effect.Effect<void, any, any>\n\ntype EffectsFromMap<M extends AnyActionMap> = {\n readonly [K in keyof M]?: ReadonlyArray<DeclaredEffectHandler<PayloadOfActionDef<M[K]>>>\n}\n\ntype MergeActionMap<Base extends AnyActionMap, Ext extends AnyActionMap> = {\n readonly [K in keyof Base | keyof Ext]: K extends keyof Ext ? Ext[K] : K extends keyof Base ? Base[K] : never\n}\n\n/**\n * Module.make \"app-side extension/override\" parameters (a two-stage responsibility split: domain library author → app developer).\n *\n * - `actions`: add-only (cannot override existing action schema); used to extend actionMap.\n * - `reducers`: add and override; used to override domain reducers or provide reducers for new actions.\n * - Other reflective fields (schemas/meta/services/dev) are shallow-merged (last-write-wins).\n */\nexport type MakeExtendDef<\n SSchema extends AnySchema,\n BaseActions extends AnyActionMap,\n ExtActions extends AnyActionMap = EmptyActionMap,\n> = {\n readonly actions?: ExtActions\n readonly reducers?: ReducersFromMap<SSchema, MergeActionMap<BaseActions, ExtActions>>\n readonly immerReducers?: MutatorsFromMap<SSchema, MergeActionMap<BaseActions, ExtActions>>\n readonly effects?: EffectsFromMap<MergeActionMap<BaseActions, ExtActions>>\n readonly schemas?: Record<string, unknown>\n readonly meta?: Record<string, JsonValue>\n readonly services?: Record<string, Context.Tag<any, any>>\n readonly dev?: ModuleDev\n}\n\nconst mergeMakeDef = <\n Id extends string,\n SSchema extends AnySchema,\n BaseActions extends AnyActionMap,\n ExtActions extends AnyActionMap,\n>(\n base: MakeDef<Id, SSchema, BaseActions>,\n extend?: MakeExtendDef<SSchema, BaseActions, ExtActions>,\n): MakeDef<Id, SSchema, MergeActionMap<BaseActions, ExtActions>> => {\n const baseActions = base.actions as Record<string, AnySchema>\n const extActions = (extend?.actions ?? {}) as Record<string, AnySchema>\n\n for (const key of Object.keys(extActions)) {\n if (key in baseActions && baseActions[key] !== extActions[key]) {\n throw new Error(\n `[Logix.Module.make] action key \"${key}\" already exists; overriding action schemas is not supported (define a new action tag instead).`,\n )\n }\n }\n\n const mergedActionDefs = { ...(base.actions as any), ...(extend?.actions as any) } as MergeActionMap<\n BaseActions,\n ExtActions\n >\n const actions = Action.normalizeActions(mergedActionDefs)\n\n const mergeEffects = (): Record<string, ReadonlyArray<unknown>> | undefined => {\n const baseEffects = (base.effects ?? {}) as Record<string, unknown>\n const extEffects = (extend?.effects ?? {}) as Record<string, unknown>\n\n const keys = Array.from(new Set([...Object.keys(baseEffects), ...Object.keys(extEffects)])).sort()\n if (keys.length === 0) return undefined\n\n const out: Record<string, ReadonlyArray<unknown>> = {}\n for (const key of keys) {\n if (!(key in actions)) {\n throw new Error(`[Logix.Module.make] effect key \"${key}\" does not exist in actionMap.`)\n }\n\n const baseValue = baseEffects[key]\n const extValue = extEffects[key]\n const baseArr = Array.isArray(baseValue) ? baseValue : baseValue === undefined ? [] : null\n const extArr = Array.isArray(extValue) ? extValue : extValue === undefined ? [] : null\n\n if (baseArr === null) {\n throw new Error(`[Logix.Module.make] effects[\"${key}\"] must be an array of handlers.`)\n }\n if (extArr === null) {\n throw new Error(`[Logix.Module.make] effects[\"${key}\"] must be an array of handlers.`)\n }\n\n const merged = [...baseArr, ...extArr].filter((h) => h !== undefined)\n for (const h of merged) {\n if (typeof h !== 'function') {\n throw new Error(`[Logix.Module.make] effects[\"${key}\"] handlers must be functions.`)\n }\n }\n\n if (merged.length > 0) {\n out[key] = merged as ReadonlyArray<unknown>\n }\n }\n\n return Object.keys(out).length > 0 ? out : undefined\n }\n\n const effects = mergeEffects()\n\n const wrapImmerReducers = (mutators?: Record<string, ((draft: unknown, payload: unknown) => void) | undefined>) => {\n if (!mutators) return {}\n const out: Record<string, unknown> = {}\n for (const key of Object.keys(mutators)) {\n const mutator = mutators[key]\n if (typeof mutator !== 'function') continue\n out[key] = ModuleTagNS.Reducer.mutate(mutator as any)\n }\n return out\n }\n\n const reducers = {\n ...wrapImmerReducers(base.immerReducers as any),\n ...(base.reducers ?? {}),\n ...wrapImmerReducers(extend?.immerReducers as any),\n ...(extend?.reducers ?? {}),\n } as Record<string, unknown>\n\n for (const key of Object.keys(reducers)) {\n if (!(key in actions)) {\n throw new Error(`[Logix.Module.make] reducer key \"${key}\" does not exist in actionMap.`)\n }\n }\n\n const schemas =\n base.schemas || extend?.schemas ? { ...(base.schemas ?? {}), ...(extend?.schemas ?? {}) } : undefined\n\n const meta = base.meta || extend?.meta ? { ...(base.meta ?? {}), ...(extend?.meta ?? {}) } : undefined\n\n const services =\n base.services || extend?.services ? { ...(base.services ?? {}), ...(extend?.services ?? {}) } : undefined\n\n const dev = base.dev || extend?.dev ? { ...(base.dev ?? {}), ...(extend?.dev ?? {}) } : undefined\n\n return {\n ...base,\n actions: actions as any,\n reducers: Object.keys(reducers).length > 0 ? (reducers as any) : undefined,\n effects: effects as any,\n schemas,\n meta,\n services,\n dev,\n } as any\n}\n\nexport const Reducer = ModuleTagNS.Reducer\n\nexport type ActionTokenMap<ADefs extends Action.ActionDefs> = Action.NormalizedActionTokens<ADefs>\n\nexport type ActionUnionOf<ADefs extends Action.ActionDefs> = ActionsFromMap<ActionTokenMap<ADefs>>\n\nexport type ActionSchemaOf<ADefs extends Action.ActionDefs> = Schema.Schema<ActionUnionOf<ADefs>>\n\nexport type Shape<SSchema extends AnySchema, ADefs extends Action.ActionDefs> = ModuleShape<\n SSchema,\n ActionSchemaOf<ADefs>,\n ActionTokenMap<ADefs>\n>\n\nexport function make<\n Id extends string,\n SSchema extends AnySchema,\n AMap extends Action.ActionDefs,\n Ext extends object = {},\n>(\n id: Id,\n def: MakeDef<Id, SSchema, AMap>,\n): ModuleDef<Id, Shape<SSchema, AMap>, Ext>\n\nexport function make<\n Id extends string,\n SSchema extends AnySchema,\n AMap extends Action.ActionDefs,\n Ext extends object = {},\n ExtActions extends Action.ActionDefs = EmptyActionMap,\n>(\n id: Id,\n def: MakeDef<Id, SSchema, AMap>,\n extend: MakeExtendDef<SSchema, NoInfer_<AMap>, ExtActions>,\n): ModuleDef<Id, Shape<SSchema, MergeActionMap<AMap, ExtActions>>, Ext>\n\nexport function make(id: any, def: any, extend?: any): any {\n const merged = mergeMakeDef(def as any, extend as any)\n\n const tag = ModuleTagNS.make(id, {\n state: merged.state,\n actions: merged.actions,\n reducers: merged.reducers,\n traits: merged.traits,\n }) as unknown as ModuleTag<any, AnyModuleShape>\n\n if (merged.effects && typeof merged.effects === 'object' && Object.keys(merged.effects).length > 0) {\n Object.defineProperty(tag as any, MODULE_DECLARED_EFFECTS, {\n value: merged.effects,\n enumerable: false,\n configurable: true,\n writable: false,\n })\n }\n\n const base: any = {\n _kind: 'ModuleDef' as const,\n id,\n tag,\n shape: tag.shape,\n stateSchema: tag.stateSchema,\n actionSchema: tag.actionSchema,\n actions: merged.actions,\n reducers: merged.reducers,\n effects: merged.effects,\n live: tag.live,\n schemas: merged.schemas,\n meta: merged.meta,\n services: merged.services,\n dev: merged.dev,\n }\n\n base.logic = makeLogicFactory(base as any)\n\n base.implement = (config: any) => {\n type Sh = AnyModuleShape\n\n const initial = config.initial as any\n const imports = config.imports as any\n const processes = config.processes as any\n const stateTransaction = config.stateTransaction as any\n const workflowDefs: ReadonlyArray<WorkflowDef> = Array.isArray(config.__logix_workflowDefs)\n ? (config.__logix_workflowDefs as ReadonlyArray<WorkflowDef>)\n : []\n\n const mountedResult = (config.logics ?? []).reduce(\n (\n acc: {\n mounted: ReadonlyArray<MountedLogicUnit<any>>\n overrides: ReadonlyArray<LogicOverrideWarning>\n },\n logic: any,\n ) => mountLogicUnit(acc.mounted, acc.overrides, { logic }),\n { mounted: [] as const, overrides: [] as const },\n )\n\n type State = {\n readonly mounted: ReadonlyArray<MountedLogicUnit<any>>\n readonly overrides: ReadonlyArray<LogicOverrideWarning>\n readonly layers: ReadonlyArray<Layer.Layer<any, never, any>>\n readonly workflowDefs: ReadonlyArray<WorkflowDef>\n }\n\n const buildImpl = (state: State): ModuleImpl<any, AnyModuleShape, any> => {\n const diagnosticsLogic = makeOverrideDiagnosticsLogic(tag as any, state.overrides)\n const declaredEffectsLogic = makeDeclaredEffectsLogic(tag as any, merged.effects, id)\n const allLogics = [...state.mounted.map((u) => u.logic), declaredEffectsLogic, diagnosticsLogic]\n\n let impl = (tag as any).implement({\n initial,\n logics: allLogics,\n imports,\n processes,\n stateTransaction,\n }) as ModuleImpl<any, AnyModuleShape, any>\n\n for (const layer of state.layers) {\n impl = impl.withLayer(layer)\n }\n\n return impl\n }\n\n const createModule = (state: State): any => {\n const internal: ModuleInternal<any, AnyModuleShape> = {\n initial,\n imports,\n processes,\n stateTransaction,\n mounted: state.mounted,\n overrides: state.overrides,\n layers: state.layers,\n workflowDefs: state.workflowDefs,\n rebuild: () => buildImpl(state),\n }\n\n const mod: any = {\n ...base,\n _kind: 'Module' as const,\n impl: buildImpl(state),\n }\n\n Object.defineProperty(mod, MODULE_INTERNAL, {\n value: internal,\n enumerable: false,\n configurable: true,\n })\n\n mod.logic = makeLogicFactory(mod)\n\n mod.withLogic = (logic: any, options?: LogicUnitOptions) => mod.withLogics([logic, options] as any)\n\n mod.withLogics = (...inputs: ReadonlyArray<MountInput<any>>) => {\n const current = (mod as any)[MODULE_INTERNAL] as ModuleInternal<any, AnyModuleShape>\n const normalized = inputs.map(normalizeMountInput)\n const next = normalized.reduce((acc, item) => mountLogicUnit(acc.mounted, acc.overrides, item as any), {\n mounted: current.mounted,\n overrides: current.overrides,\n })\n\n return createModule({\n mounted: next.mounted,\n overrides: next.overrides,\n layers: current.layers,\n workflowDefs: current.workflowDefs,\n })\n }\n\n mod.withLayer = (layer: Layer.Layer<any, never, any>) => {\n const current = (mod as any)[MODULE_INTERNAL] as ModuleInternal<any, AnyModuleShape>\n return createModule({\n mounted: current.mounted,\n overrides: current.overrides,\n layers: [...current.layers, layer],\n workflowDefs: current.workflowDefs,\n })\n }\n\n mod.withLayers = (...layers: ReadonlyArray<Layer.Layer<any, never, any>>) =>\n layers.reduce((acc, layer) => acc.withLayer(layer), mod as any)\n\n mod.withWorkflow = (workflow: Workflow) => {\n const install = (workflow as any)?.install\n const logic =\n typeof install === 'function'\n ? install(mod.tag)\n : WorkflowRuntime.installOne({ moduleTag: mod.tag as any, program: workflow as any })\n\n const current = (mod as any)[MODULE_INTERNAL] as ModuleInternal<any, AnyModuleShape>\n const next = mountLogicUnit(current.mounted, current.overrides, { logic } as any)\n const nextWorkflowDefs = [...current.workflowDefs, (workflow as any).def as WorkflowDef]\n return createModule({\n mounted: next.mounted,\n overrides: next.overrides,\n layers: current.layers,\n workflowDefs: nextWorkflowDefs,\n })\n }\n\n mod.withWorkflows = (workflows: ReadonlyArray<Workflow>) => {\n if (!Array.isArray(workflows) || workflows.length === 0) return mod as any\n const logic = WorkflowRuntime.mountAll({ moduleTag: mod.tag as any, programs: workflows as any })\n const current = (mod as any)[MODULE_INTERNAL] as ModuleInternal<any, AnyModuleShape>\n const next = mountLogicUnit(current.mounted, current.overrides, { logic } as any)\n const nextWorkflowDefs = [...current.workflowDefs, ...workflows.map((w) => (w as any).def as WorkflowDef)]\n\n return createModule({\n mounted: next.mounted,\n overrides: next.overrides,\n layers: current.layers,\n workflowDefs: nextWorkflowDefs,\n })\n }\n\n return mod as any\n }\n\n return createModule({\n mounted: mountedResult.mounted,\n overrides: mountedResult.overrides,\n layers: [],\n workflowDefs,\n })\n }\n\n const baseImplement = base.implement\n\n const withExtraLogics = (\n extraLogics: ReadonlyArray<ModuleLogic<any, any, any>>,\n extraWorkflowDefs: ReadonlyArray<WorkflowDef>,\n ): any => {\n const next: any = { ...base }\n\n next.withWorkflow = (workflow: Workflow) => {\n const install = (workflow as any)?.install\n const logic =\n typeof install === 'function'\n ? install(next.tag)\n : WorkflowRuntime.installOne({ moduleTag: next.tag as any, program: workflow as any })\n return withExtraLogics([...extraLogics, logic as any], [...extraWorkflowDefs, (workflow as any).def as WorkflowDef])\n }\n\n next.withWorkflows = (workflows: ReadonlyArray<Workflow>) => {\n if (!Array.isArray(workflows) || workflows.length === 0) return next as any\n const logic = WorkflowRuntime.mountAll({ moduleTag: next.tag as any, programs: workflows as any })\n return withExtraLogics(\n [...extraLogics, logic as any],\n [...extraWorkflowDefs, ...workflows.map((w) => (w as any).def as WorkflowDef)],\n )\n }\n\n next.implement = (config: any) => {\n const mergedLogics = [...(config.logics ?? []), ...extraLogics]\n return baseImplement({ ...config, logics: mergedLogics, __logix_workflowDefs: extraWorkflowDefs })\n }\n\n return next as any\n }\n\n base.withWorkflow = (workflow: Workflow) => withExtraLogics([], []).withWorkflow(workflow)\n\n base.withWorkflows = (workflows: ReadonlyArray<Workflow>) => withExtraLogics([], []).withWorkflows(workflows)\n\n return base\n}\n\nexport const Manage = {\n make: <D extends (...args: any[]) => AnyModule>(config: {\n readonly kind?: string\n readonly define: D\n }): { readonly kind?: string; readonly make: D } => ({\n kind: config.kind,\n make: config.define,\n }),\n} as const\n"],"mappings":"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","names":["Reducer","make","attachLogicUnitMeta","internal","Reducer","make"]}
|
|
@@ -4,6 +4,7 @@ var normalizePatchReason = (reason) => {
|
|
|
4
4
|
case "reducer":
|
|
5
5
|
case "trait-computed":
|
|
6
6
|
case "trait-link":
|
|
7
|
+
case "trait-external-store":
|
|
7
8
|
case "source-refresh":
|
|
8
9
|
case "devtools":
|
|
9
10
|
case "perf":
|
|
@@ -276,4 +277,4 @@ export {
|
|
|
276
277
|
getFieldPathId,
|
|
277
278
|
dirtyPathsToRootIds
|
|
278
279
|
};
|
|
279
|
-
//# sourceMappingURL=chunk-
|
|
280
|
+
//# sourceMappingURL=chunk-ZTFTABXV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/field-path.ts"],"sourcesContent":["export type FieldPath = ReadonlyArray<string>\nexport type FieldPathId = number\n\nexport type DirtyAllReason = 'unknownWrite' | 'customMutation' | 'nonTrackablePatch' | 'fallbackPolicy'\n\nexport type PatchReason =\n | 'reducer'\n | 'trait-computed'\n | 'trait-link'\n | 'trait-external-store'\n | 'source-refresh'\n | 'devtools'\n | 'perf'\n | 'unknown'\n\nexport const normalizePatchReason = (reason: unknown): PatchReason => {\n switch (reason) {\n case 'reducer':\n case 'trait-computed':\n case 'trait-link':\n case 'trait-external-store':\n case 'source-refresh':\n case 'devtools':\n case 'perf':\n case 'unknown':\n return reason\n default:\n return typeof reason === 'string' && reason.startsWith('source:') ? 'source-refresh' : 'unknown'\n }\n}\n\nexport interface DirtySet {\n readonly dirtyAll: boolean\n /**\n * When dirtyAll=true, a stable reason code must be provided; when dirtyAll=false, it should be omitted.\n */\n readonly reason?: DirtyAllReason\n /**\n * FieldPathId (Static IR table index).\n * - When dirtyAll=true, must be an empty array;\n * - When dirtyAll=false, roots are deduped / prefix-free / stably sorted.\n */\n readonly rootIds: ReadonlyArray<FieldPathId>\n readonly rootCount: number\n readonly keySize: number\n readonly keyHash: number\n /**\n * Optional: mark when the output is TopK-truncated (light/full).\n * Note: truncation does not affect the definition of keyHash/keySize/rootCount (they still refer to full roots).\n */\n readonly rootIdsTruncated?: boolean\n}\n\ninterface FieldPathTrieNode {\n id?: FieldPathId\n children: Map<string, FieldPathTrieNode>\n}\n\nexport interface FieldPathIdRegistry {\n readonly fieldPaths: ReadonlyArray<FieldPath>\n readonly root: FieldPathTrieNode\n /**\n * Fast path: direct lookup for common string inputs (e.g. 'a.b').\n *\n * Note: This map is only safe for \"dot-separated\" paths. If a schema key itself contains '.',\n * it is ambiguous with nested paths and should not rely on string-path APIs.\n */\n readonly pathStringToId?: ReadonlyMap<string, FieldPathId>\n}\n\nexport const isFieldPathSegment = (seg: string): boolean => {\n if (!seg) return false\n if (seg === '*') return false\n if (/^\\d+$/.test(seg)) return false\n if (seg.includes('[') || seg.includes(']')) return false\n return true\n}\n\nexport const normalizeFieldPath = (input: string | FieldPath): FieldPath | undefined => {\n if (typeof input === 'string') {\n const segs = splitSegments(input)\n if (!segs || segs.length === 0) return undefined\n const normalized = segs.filter(isFieldPathSegment)\n return normalized.length > 0 ? normalized : undefined\n }\n\n if (input.length === 0) return undefined\n\n let needsFilter = false\n for (const seg of input) {\n if (!isFieldPathSegment(seg)) {\n needsFilter = true\n break\n }\n }\n\n if (!needsFilter) return input\n\n const normalized = input.filter(isFieldPathSegment)\n return normalized.length > 0 ? normalized : undefined\n}\n\nexport const compareFieldPath = (a: FieldPath, b: FieldPath): number => {\n const len = Math.min(a.length, b.length)\n for (let i = 0; i < len; i++) {\n const as = a[i]!\n const bs = b[i]!\n if (as === bs) continue\n return as < bs ? -1 : 1\n }\n return a.length - b.length\n}\n\nexport const isPrefixOf = (prefix: FieldPath, full: FieldPath): boolean => {\n if (prefix.length > full.length) return false\n for (let i = 0; i < prefix.length; i++) {\n if (prefix[i] !== full[i]) return false\n }\n return true\n}\n\nexport const toKey = (path: FieldPath): string => JSON.stringify(path)\n\nexport const toPathString = (path: FieldPath): string => path.join('.')\n\nexport const canonicalizeRoots = (roots: Iterable<FieldPath>): ReadonlyArray<FieldPath> => {\n const byKey = new Map<string, FieldPath>()\n for (const root of roots) {\n const key = toKey(root)\n if (!byKey.has(key)) byKey.set(key, root)\n }\n\n const sorted = Array.from(byKey.values()).sort(compareFieldPath)\n const out: Array<FieldPath> = []\n for (const next of sorted) {\n const prev = out[out.length - 1]\n if (prev && isPrefixOf(prev, next)) {\n continue\n }\n out.push(next)\n }\n return out\n}\n\nexport const canonicalizeRootsFast = (roots: Iterable<FieldPath>): ReadonlyArray<FieldPath> => {\n const sorted = Array.from(roots).sort(compareFieldPath)\n const out: Array<FieldPath> = []\n for (const next of sorted) {\n const prev = out[out.length - 1]\n if (prev && isPrefixOf(prev, next)) continue\n out.push(next)\n }\n return out\n}\n\nexport const makeFieldPathIdRegistry = (fieldPaths: ReadonlyArray<FieldPath>): FieldPathIdRegistry => {\n const root: FieldPathTrieNode = { children: new Map() }\n const pathStringToId = new Map<string, FieldPathId>()\n const ambiguousPathStrings = new Set<string>()\n\n for (let id = 0; id < fieldPaths.length; id++) {\n const path = fieldPaths[id]!\n let node = root\n for (const seg of path) {\n const children = node.children\n let next = children.get(seg)\n if (!next) {\n next = { children: new Map() }\n children.set(seg, next)\n }\n node = next\n }\n node.id = id\n\n if (path.length > 0 && path.some((seg) => seg.includes('.'))) {\n const key = path.join('.')\n ambiguousPathStrings.add(key)\n pathStringToId.delete(key)\n }\n\n if (path.length > 0 && path.every((seg) => !seg.includes('.') && !seg.includes('[') && !seg.includes(']'))) {\n const key = path.join('.')\n if (ambiguousPathStrings.has(key)) continue\n if (pathStringToId.has(key)) {\n ambiguousPathStrings.add(key)\n pathStringToId.delete(key)\n continue\n }\n pathStringToId.set(key, id)\n }\n }\n\n return { fieldPaths, root, pathStringToId }\n}\n\nexport const getFieldPathId = (registry: FieldPathIdRegistry, path: FieldPath): FieldPathId | undefined => {\n let node = registry.root\n for (const seg of path) {\n const next = node.children.get(seg)\n if (!next) return undefined\n node = next\n }\n return node.id\n}\n\nexport const getFieldPathIdFromString = (registry: FieldPathIdRegistry, path: string): FieldPathId | undefined => {\n if (!path || path === '*') return undefined\n const normalized = normalizeFieldPath(path)\n if (!normalized) return undefined\n return getFieldPathId(registry, normalized)\n}\n\nexport const hashFieldPathIds = (ids: ReadonlyArray<number>): number => {\n // FNV-1a (32-bit)\n let hash = 2166136261 >>> 0\n for (const id of ids) {\n hash ^= id >>> 0\n hash = Math.imul(hash, 16777619)\n }\n return hash >>> 0\n}\n\nexport const dirtyPathsToRootIds = (options: {\n readonly dirtyPaths?: Iterable<string | FieldPath | FieldPathId>\n readonly registry: FieldPathIdRegistry\n readonly dirtyAllReason?: DirtyAllReason\n}): DirtySet => {\n if (options.dirtyAllReason) {\n return {\n dirtyAll: true,\n reason: options.dirtyAllReason,\n rootIds: [],\n rootCount: 0,\n keySize: 0,\n keyHash: 0,\n }\n }\n\n let sawStar = false\n let hasInvalid = false\n let missing = false\n\n const ids: Array<number> = []\n for (const raw of options.dirtyPaths ?? []) {\n if (raw === '*') {\n sawStar = true\n continue\n }\n\n if (typeof raw === 'number') {\n if (!Number.isFinite(raw)) {\n hasInvalid = true\n continue\n }\n const id = Math.floor(raw)\n if (id < 0) {\n hasInvalid = true\n continue\n }\n if (!options.registry.fieldPaths[id]) {\n missing = true\n continue\n }\n ids.push(id)\n continue\n }\n\n if (typeof raw === 'string') {\n const direct = options.registry.pathStringToId?.get(raw)\n if (direct != null) {\n ids.push(direct)\n continue\n }\n\n // String path is treated as dot-separated boundary input only.\n // If it cannot be mapped directly, it is considered ambiguous/unmappable.\n missing = true\n continue\n }\n\n const normalized = normalizeFieldPath(raw)\n if (!normalized) {\n hasInvalid = true\n continue\n }\n\n const id = getFieldPathId(options.registry, normalized)\n if (id == null) {\n missing = true\n continue\n }\n ids.push(id)\n }\n\n if (hasInvalid) {\n return {\n dirtyAll: true,\n reason: 'nonTrackablePatch',\n rootIds: [],\n rootCount: 0,\n keySize: 0,\n keyHash: 0,\n }\n }\n\n if (missing) {\n return {\n dirtyAll: true,\n reason: 'fallbackPolicy',\n rootIds: [],\n rootCount: 0,\n keySize: 0,\n keyHash: 0,\n }\n }\n\n // Any non-trackable write must explicitly degrade (do not \"ignore *\" when roots exist).\n if (sawStar) {\n return {\n dirtyAll: true,\n reason: 'unknownWrite',\n rootIds: [],\n rootCount: 0,\n keySize: 0,\n keyHash: 0,\n }\n }\n\n const fieldPathsById = options.registry.fieldPaths\n ids.sort((a, b) => {\n const ap = fieldPathsById[a]\n const bp = fieldPathsById[b]\n if (!ap || !bp) return a - b\n const cmp = compareFieldPath(ap, bp)\n return cmp !== 0 ? cmp : a - b\n })\n\n const rootIds: Array<number> = []\n let prev: FieldPath | undefined\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i]!\n const path = fieldPathsById[id]\n if (!path) continue\n if (prev && isPrefixOf(prev, path)) continue\n rootIds.push(id)\n prev = path\n }\n\n const hasSpecific = rootIds.length > 0\n\n if (!hasSpecific) {\n return {\n dirtyAll: true,\n reason: 'unknownWrite',\n rootIds: [],\n rootCount: 0,\n keySize: 0,\n keyHash: 0,\n }\n }\n\n rootIds.sort((a, b) => a - b)\n\n const keyHash = hashFieldPathIds(rootIds)\n return {\n dirtyAll: false,\n rootIds,\n rootCount: rootIds.length,\n keySize: rootIds.length,\n keyHash,\n }\n}\n\nconst splitSegments = (path: string): Array<string> | undefined => {\n if (!path) return undefined\n if (path === '*') return undefined\n\n const parts = path.split('.').filter((p) => p.length > 0)\n const segs: Array<string> = []\n\n for (const part of parts) {\n if (!part) continue\n if (part === '*') {\n return undefined\n }\n if (part.endsWith('[]')) {\n const base = part.slice(0, -2)\n if (base) segs.push(base)\n continue\n }\n const bracket = /^(.+)\\[(\\d+)\\]$/.exec(part)\n if (bracket) {\n segs.push(bracket[1]!)\n continue\n }\n if (/^\\d+$/.test(part)) {\n continue\n }\n if (part.includes('[') || part.includes(']')) {\n return undefined\n }\n segs.push(part)\n }\n\n return segs\n}\n"],"mappings":"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","names":["normalized","id"]}
|