@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
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Link
|
|
3
|
+
} from "./chunk-RQQW3IQC.js";
|
|
4
|
+
import {
|
|
5
|
+
attachMeta,
|
|
6
|
+
getDefinition,
|
|
7
|
+
getMeta
|
|
8
|
+
} from "./chunk-G7ESIQTI.js";
|
|
9
|
+
import {
|
|
10
|
+
currentConvergeStaticIrCollectors
|
|
11
|
+
} from "./chunk-M3BFQ7HK.js";
|
|
12
|
+
import {
|
|
13
|
+
DeclarativeLinkRuntimeTag
|
|
14
|
+
} from "./chunk-AQ7L2QZ5.js";
|
|
15
|
+
import {
|
|
16
|
+
compile
|
|
17
|
+
} from "./chunk-53GVPGSM.js";
|
|
18
|
+
import {
|
|
19
|
+
currentDiagnosticsLevel,
|
|
20
|
+
record
|
|
21
|
+
} from "./chunk-ZC7MSQ5U.js";
|
|
22
|
+
import {
|
|
23
|
+
fnv1a32,
|
|
24
|
+
stableStringify
|
|
25
|
+
} from "./chunk-4MZ7BT3R.js";
|
|
26
|
+
import {
|
|
27
|
+
__export
|
|
28
|
+
} from "./chunk-PZ5AY32C.js";
|
|
29
|
+
|
|
30
|
+
// src/Process.ts
|
|
31
|
+
var Process_exports = {};
|
|
32
|
+
__export(Process_exports, {
|
|
33
|
+
attachMeta: () => attachMeta2,
|
|
34
|
+
getDefinition: () => getDefinition2,
|
|
35
|
+
getMeta: () => getMeta2,
|
|
36
|
+
link: () => link,
|
|
37
|
+
linkDeclarative: () => linkDeclarative,
|
|
38
|
+
make: () => make
|
|
39
|
+
});
|
|
40
|
+
import { Effect, FiberRef } from "effect";
|
|
41
|
+
|
|
42
|
+
// src/internal/runtime/core/DeclarativeLinkIR.ts
|
|
43
|
+
var getDeclarativeLinkIrDigest = (ir) => `dlink_ir_v1:${fnv1a32(stableStringify(ir))}`;
|
|
44
|
+
var exportDeclarativeLinkIr = (args) => ({
|
|
45
|
+
staticIrDigest: getDeclarativeLinkIrDigest(args.ir),
|
|
46
|
+
moduleId: `link:${args.linkId}`,
|
|
47
|
+
instanceId: "runtime",
|
|
48
|
+
kind: "declarativeLinkIr",
|
|
49
|
+
ir: args.ir
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// src/Process.ts
|
|
53
|
+
var DEFAULT_TRIGGERS = [{ kind: "platformEvent", platformEvent: "runtime:boot" }];
|
|
54
|
+
var normalizeDefinition = (input) => {
|
|
55
|
+
const base = typeof input === "string" ? { processId: input } : input;
|
|
56
|
+
const processId = base.processId;
|
|
57
|
+
if (typeof processId !== "string" || processId.length === 0) {
|
|
58
|
+
throw new Error("[Process.make] processId must be a non-empty string");
|
|
59
|
+
}
|
|
60
|
+
const triggers = Array.isArray(base.triggers) && base.triggers.length > 0 ? base.triggers : DEFAULT_TRIGGERS;
|
|
61
|
+
const concurrency = base.concurrency ?? { mode: "latest" };
|
|
62
|
+
const errorPolicy = base.errorPolicy ?? { mode: "failStop" };
|
|
63
|
+
const diagnosticsLevel = base.diagnosticsLevel ?? "off";
|
|
64
|
+
return {
|
|
65
|
+
processId,
|
|
66
|
+
name: base.name,
|
|
67
|
+
description: base.description,
|
|
68
|
+
requires: base.requires,
|
|
69
|
+
triggers,
|
|
70
|
+
concurrency,
|
|
71
|
+
errorPolicy,
|
|
72
|
+
diagnosticsLevel
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
var make = (definition, effect) => attachMeta(effect, {
|
|
76
|
+
definition: normalizeDefinition(definition),
|
|
77
|
+
kind: "process"
|
|
78
|
+
});
|
|
79
|
+
var getDefinition2 = (effect) => getDefinition(effect);
|
|
80
|
+
var getMeta2 = (effect) => getMeta(effect);
|
|
81
|
+
var attachMeta2 = (effect, meta) => attachMeta(effect, meta);
|
|
82
|
+
var isModuleLike = (value) => Boolean(value) && typeof value === "object" && (value._kind === "ModuleDef" || value._kind === "Module") && "tag" in value;
|
|
83
|
+
var unwrapModuleTag = (module) => {
|
|
84
|
+
if (isModuleLike(module)) {
|
|
85
|
+
return module.tag;
|
|
86
|
+
}
|
|
87
|
+
return module;
|
|
88
|
+
};
|
|
89
|
+
function link(config, logic) {
|
|
90
|
+
const linkId = config.id ?? [...config.modules].map((m) => m.id).sort().join("~");
|
|
91
|
+
const modulesRecord = /* @__PURE__ */ Object.create(null);
|
|
92
|
+
const requires = /* @__PURE__ */ new Set();
|
|
93
|
+
for (const module of config.modules) {
|
|
94
|
+
const tag = unwrapModuleTag(module);
|
|
95
|
+
requires.add(String(tag.id));
|
|
96
|
+
modulesRecord[tag.id] = tag;
|
|
97
|
+
}
|
|
98
|
+
const effect = Link(
|
|
99
|
+
modulesRecord,
|
|
100
|
+
logic
|
|
101
|
+
);
|
|
102
|
+
const wrapped = Effect.gen(function* () {
|
|
103
|
+
const level = yield* FiberRef.get(currentDiagnosticsLevel);
|
|
104
|
+
if (level !== "off") {
|
|
105
|
+
yield* record({
|
|
106
|
+
type: "diagnostic",
|
|
107
|
+
moduleId: `link:${linkId}`,
|
|
108
|
+
code: "process_link::blackbox_best_effort",
|
|
109
|
+
severity: "info",
|
|
110
|
+
message: "[Process.link] Blackbox link is best-effort and is NOT stabilized within the same tick. Strong consistency applies only to declarative IR.",
|
|
111
|
+
hint: "If you need same-tick strong consistency, migrate to Process.linkDeclarative(...) (073).",
|
|
112
|
+
kind: "blackbox_link_boundary"
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return yield* effect;
|
|
116
|
+
});
|
|
117
|
+
const definition = {
|
|
118
|
+
processId: linkId,
|
|
119
|
+
requires: Array.from(requires),
|
|
120
|
+
triggers: [...DEFAULT_TRIGGERS, { kind: "platformEvent", platformEvent: `link:${linkId}` }],
|
|
121
|
+
concurrency: { mode: "latest" },
|
|
122
|
+
errorPolicy: { mode: "failStop" },
|
|
123
|
+
diagnosticsLevel: "off"
|
|
124
|
+
};
|
|
125
|
+
return attachMeta(wrapped, {
|
|
126
|
+
definition,
|
|
127
|
+
kind: "link"
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function linkDeclarative(config, build) {
|
|
131
|
+
const linkId = config.id ?? [...config.modules].map((m) => m.id).sort().join("~");
|
|
132
|
+
const modulesRecord = /* @__PURE__ */ Object.create(null);
|
|
133
|
+
const requires = /* @__PURE__ */ new Set();
|
|
134
|
+
for (const module of config.modules) {
|
|
135
|
+
const tag = unwrapModuleTag(module);
|
|
136
|
+
requires.add(String(tag.id));
|
|
137
|
+
modulesRecord[tag.id] = tag;
|
|
138
|
+
}
|
|
139
|
+
const handles = /* @__PURE__ */ Object.create(null);
|
|
140
|
+
for (const id of Object.keys(modulesRecord)) {
|
|
141
|
+
const tag = modulesRecord[id];
|
|
142
|
+
handles[id] = {
|
|
143
|
+
read: (selector) => {
|
|
144
|
+
const compiled = compile(selector);
|
|
145
|
+
const staticIr = compiled.staticIr;
|
|
146
|
+
const ok = staticIr.lane === "static" && staticIr.readsDigest != null && staticIr.fallbackReason == null;
|
|
147
|
+
if (!ok) {
|
|
148
|
+
throw new Error(
|
|
149
|
+
`[Process.linkDeclarative] ReadQuery must be static with readsDigest (moduleId=${id}, selectorId=${staticIr.selectorId}, lane=${staticIr.lane}, fallbackReason=${staticIr.fallbackReason}). Fix: use ReadQuery.make(...) or annotate selector.fieldPaths.`
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
return { _tag: "readNode", moduleId: id, tag, readQuery: compiled };
|
|
153
|
+
},
|
|
154
|
+
dispatch: (actionTag) => {
|
|
155
|
+
if (typeof actionTag !== "string" || actionTag.length === 0) {
|
|
156
|
+
throw new Error("[Process.linkDeclarative] actionTag must be a non-empty string");
|
|
157
|
+
}
|
|
158
|
+
return { _tag: "dispatchNode", moduleId: id, tag, actionTag };
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const edges = build(handles);
|
|
163
|
+
if (!Array.isArray(edges)) {
|
|
164
|
+
throw new Error("[Process.linkDeclarative] build(...) must return an array of edges");
|
|
165
|
+
}
|
|
166
|
+
const normalized = edges.filter((e) => Boolean(e && e.from && e.to)).map((e) => {
|
|
167
|
+
if (e.from._tag !== "readNode" || e.to._tag !== "dispatchNode") {
|
|
168
|
+
throw new Error("[Process.linkDeclarative] Invalid edge spec returned from build(...)");
|
|
169
|
+
}
|
|
170
|
+
return e;
|
|
171
|
+
}).slice().sort((a, b) => {
|
|
172
|
+
const ak = `${a.from.moduleId}:${a.from.readQuery.staticIr.selectorId}->${a.to.moduleId}:${a.to.actionTag}`;
|
|
173
|
+
const bk = `${b.from.moduleId}:${b.from.readQuery.staticIr.selectorId}->${b.to.moduleId}:${b.to.actionTag}`;
|
|
174
|
+
return ak < bk ? -1 : ak > bk ? 1 : 0;
|
|
175
|
+
});
|
|
176
|
+
const program = Effect.gen(function* () {
|
|
177
|
+
const runtime = yield* DeclarativeLinkRuntimeTag;
|
|
178
|
+
const collectors = yield* FiberRef.get(currentConvergeStaticIrCollectors);
|
|
179
|
+
const runtimeByTag = /* @__PURE__ */ new Map();
|
|
180
|
+
const resolveRuntime = (tag) => Effect.suspend(() => {
|
|
181
|
+
const cached = runtimeByTag.get(tag);
|
|
182
|
+
if (cached) return Effect.succeed(cached);
|
|
183
|
+
return tag.pipe(
|
|
184
|
+
Effect.tap(
|
|
185
|
+
(rt) => Effect.sync(() => {
|
|
186
|
+
runtimeByTag.set(tag, rt);
|
|
187
|
+
})
|
|
188
|
+
)
|
|
189
|
+
);
|
|
190
|
+
});
|
|
191
|
+
const nodes = [];
|
|
192
|
+
const irEdges = [];
|
|
193
|
+
const readNodes = [];
|
|
194
|
+
const dispatchNodes = [];
|
|
195
|
+
for (let i = 0; i < normalized.length; i += 1) {
|
|
196
|
+
const edge = normalized[i];
|
|
197
|
+
const fromRuntime = yield* resolveRuntime(edge.from.tag);
|
|
198
|
+
const toRuntime = yield* resolveRuntime(edge.to.tag);
|
|
199
|
+
const fromKey = `${fromRuntime.moduleId}::${fromRuntime.instanceId}`;
|
|
200
|
+
const readNodeId = `r${i}`;
|
|
201
|
+
const dispatchNodeId = `d${i}`;
|
|
202
|
+
nodes.push({
|
|
203
|
+
id: readNodeId,
|
|
204
|
+
kind: "readQuery",
|
|
205
|
+
moduleId: fromRuntime.moduleId,
|
|
206
|
+
instanceKey: fromRuntime.instanceId,
|
|
207
|
+
readQuery: edge.from.readQuery.staticIr
|
|
208
|
+
});
|
|
209
|
+
nodes.push({
|
|
210
|
+
id: dispatchNodeId,
|
|
211
|
+
kind: "dispatch",
|
|
212
|
+
moduleId: toRuntime.moduleId,
|
|
213
|
+
instanceKey: toRuntime.instanceId,
|
|
214
|
+
actionTag: edge.to.actionTag
|
|
215
|
+
});
|
|
216
|
+
irEdges.push({ from: readNodeId, to: dispatchNodeId });
|
|
217
|
+
readNodes.push({ nodeId: readNodeId, moduleInstanceKey: fromKey, readQuery: edge.from.readQuery });
|
|
218
|
+
dispatchNodes.push({
|
|
219
|
+
nodeId: dispatchNodeId,
|
|
220
|
+
dispatch: (payload) => toRuntime.dispatch({ _tag: edge.to.actionTag, payload }).pipe(Effect.asVoid)
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
const ir = {
|
|
224
|
+
version: 1,
|
|
225
|
+
nodes,
|
|
226
|
+
edges: irEdges
|
|
227
|
+
};
|
|
228
|
+
const registration = {
|
|
229
|
+
linkId,
|
|
230
|
+
ir,
|
|
231
|
+
readNodes,
|
|
232
|
+
dispatchNodes
|
|
233
|
+
};
|
|
234
|
+
const unregister = runtime.registerDeclarativeLink(registration);
|
|
235
|
+
if (collectors.length > 0) {
|
|
236
|
+
const exported = exportDeclarativeLinkIr({ linkId, ir });
|
|
237
|
+
for (const collector of collectors) {
|
|
238
|
+
collector.register(exported);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
yield* Effect.addFinalizer(
|
|
242
|
+
() => Effect.sync(() => {
|
|
243
|
+
unregister();
|
|
244
|
+
})
|
|
245
|
+
);
|
|
246
|
+
yield* Effect.never;
|
|
247
|
+
});
|
|
248
|
+
const definition = {
|
|
249
|
+
processId: `dlink:${linkId}`,
|
|
250
|
+
requires: Array.from(requires),
|
|
251
|
+
triggers: DEFAULT_TRIGGERS,
|
|
252
|
+
concurrency: { mode: "latest" },
|
|
253
|
+
errorPolicy: { mode: "failStop" },
|
|
254
|
+
diagnosticsLevel: "off"
|
|
255
|
+
};
|
|
256
|
+
return attachMeta(program, {
|
|
257
|
+
definition,
|
|
258
|
+
kind: "declarativeLink"
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export {
|
|
263
|
+
make,
|
|
264
|
+
getDefinition2 as getDefinition,
|
|
265
|
+
getMeta2 as getMeta,
|
|
266
|
+
attachMeta2 as attachMeta,
|
|
267
|
+
link,
|
|
268
|
+
linkDeclarative,
|
|
269
|
+
Process_exports
|
|
270
|
+
};
|
|
271
|
+
//# sourceMappingURL=chunk-RN26DV2M.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Process.ts","../src/internal/runtime/core/DeclarativeLinkIR.ts"],"sourcesContent":["import { Effect, FiberRef } from 'effect'\nimport * as ModuleFactory from './internal/runtime/ModuleFactory.js'\nimport * as Debug from './internal/runtime/core/DebugSink.js'\nimport { currentConvergeStaticIrCollectors } from './internal/runtime/core/ConvergeStaticIrCollector.js'\nimport { exportDeclarativeLinkIr, type DeclarativeLinkIR } from './internal/runtime/core/DeclarativeLinkIR.js'\nimport { DeclarativeLinkRuntimeTag } from './internal/runtime/core/env.js'\nimport type * as Protocol from './internal/runtime/core/process/protocol.js'\nimport * as Meta from './internal/runtime/core/process/meta.js'\nimport type { AnyModuleShape, ModuleHandle, ModuleLike, ModuleTag } from './internal/module.js'\nimport * as ReadQuery from './ReadQuery.js'\n\nexport type DiagnosticsLevel = Protocol.DiagnosticsLevel\nexport type ProcessScope = Protocol.ProcessScope\nexport type ProcessIdentity = Protocol.ProcessIdentity\nexport type ProcessInstanceIdentity = Protocol.ProcessInstanceIdentity\nexport type ProcessTriggerSpec = Protocol.ProcessTriggerSpec\nexport type ProcessTrigger = Protocol.ProcessTrigger\nexport type ProcessConcurrencyPolicy = Protocol.ProcessConcurrencyPolicy\nexport type ProcessErrorPolicy = Protocol.ProcessErrorPolicy\nexport type ProcessDefinition = Protocol.ProcessDefinition\nexport type ProcessInstallation = Protocol.ProcessInstallation\nexport type SerializableErrorSummary = Protocol.SerializableErrorSummary\nexport type ProcessInstanceStatus = Protocol.ProcessInstanceStatus\nexport type ProcessEvent = Protocol.ProcessEvent\nexport type ProcessControlRequest = Protocol.ProcessControlRequest\nexport type ProcessPlatformEvent = Protocol.ProcessPlatformEvent\n\nexport type ProcessEffect<E = never, R = never> = Meta.ProcessEffect<E, R>\n\nexport type ProcessMakeDefinition =\n | string\n | {\n readonly processId: string\n readonly name?: string\n readonly description?: string\n readonly requires?: ReadonlyArray<string>\n readonly triggers?: ReadonlyArray<ProcessTriggerSpec>\n readonly concurrency?: ProcessConcurrencyPolicy\n readonly errorPolicy?: ProcessErrorPolicy\n readonly diagnosticsLevel?: DiagnosticsLevel\n }\n\nconst DEFAULT_TRIGGERS: ReadonlyArray<ProcessTriggerSpec> = [{ kind: 'platformEvent', platformEvent: 'runtime:boot' }]\n\nconst normalizeDefinition = (input: ProcessMakeDefinition): ProcessDefinition => {\n const base = typeof input === 'string' ? ({ processId: input } satisfies { readonly processId: string }) : input\n\n const processId = base.processId\n if (typeof processId !== 'string' || processId.length === 0) {\n throw new Error('[Process.make] processId must be a non-empty string')\n }\n\n const triggers = Array.isArray(base.triggers) && base.triggers.length > 0 ? base.triggers : DEFAULT_TRIGGERS\n\n const concurrency = base.concurrency ?? ({ mode: 'latest' } satisfies ProcessConcurrencyPolicy)\n const errorPolicy = base.errorPolicy ?? ({ mode: 'failStop' } satisfies ProcessErrorPolicy)\n const diagnosticsLevel = base.diagnosticsLevel ?? 'off'\n\n return {\n processId,\n name: base.name,\n description: base.description,\n requires: base.requires,\n triggers,\n concurrency,\n errorPolicy,\n diagnosticsLevel,\n }\n}\n\nexport const make = <E, R>(definition: ProcessMakeDefinition, effect: Effect.Effect<void, E, R>): ProcessEffect<E, R> =>\n Meta.attachMeta(effect, {\n definition: normalizeDefinition(definition),\n kind: 'process',\n })\n\nexport const getDefinition = (effect: Effect.Effect<void, any, any>): ProcessDefinition | undefined =>\n Meta.getDefinition(effect)\n\nexport const getMeta = (effect: Effect.Effect<void, any, any>): Meta.ProcessMeta | undefined => Meta.getMeta(effect)\n\nexport const attachMeta = <E, R>(effect: Effect.Effect<void, E, R>, meta: Meta.ProcessMeta): ProcessEffect<E, R> =>\n Meta.attachMeta(effect, meta)\n\ntype LinkModuleToken<Id extends string, Sh extends AnyModuleShape> = ModuleTag<Id, Sh> | ModuleLike<Id, Sh, object>\n\ntype LinkModuleIdOf<M> = M extends { readonly id: infer Id } ? Id : never\ntype LinkModuleShapeOf<M> =\n M extends ModuleLike<string, infer Sh, object> ? Sh : M extends ModuleTag<string, infer Sh> ? Sh : never\ntype LinkModuleTagOf<M> =\n M extends ModuleLike<string, infer Sh, object>\n ? ModuleTag<string, Sh>\n : M extends ModuleTag<string, AnyModuleShape>\n ? M\n : never\n\nconst isModuleLike = (value: unknown): value is ModuleLike<string, AnyModuleShape, object> =>\n Boolean(value) &&\n typeof value === 'object' &&\n ((value as { readonly _kind?: unknown })._kind === 'ModuleDef' ||\n (value as { readonly _kind?: unknown })._kind === 'Module') &&\n 'tag' in (value as object)\n\nconst unwrapModuleTag = <Id extends string, Sh extends AnyModuleShape>(\n module: LinkModuleToken<Id, Sh>,\n): ModuleTag<Id, Sh> => {\n if (isModuleLike(module)) {\n return module.tag\n }\n return module as ModuleTag<Id, Sh>\n}\n\nexport interface LinkConfig<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> {\n readonly id?: string\n readonly modules: Ms\n}\n\nexport type LinkHandles<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: ModuleHandle<LinkModuleShapeOf<M>>\n}\n\ntype ModulesRecord<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: LinkModuleTagOf<M>\n}\n\nexport function link<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[], E = never, R = never>(\n config: LinkConfig<Ms>,\n logic: ($: LinkHandles<Ms>) => Effect.Effect<void, E, R>,\n): ProcessEffect<E, R> {\n const linkId =\n config.id ??\n [...config.modules]\n .map((m) => m.id)\n .sort()\n .join('~')\n\n const modulesRecord = Object.create(null) as ModulesRecord<Ms>\n const requires = new Set<string>()\n\n for (const module of config.modules) {\n const tag = unwrapModuleTag(module)\n requires.add(String(tag.id))\n ;(modulesRecord as Record<string, ModuleTag<string, AnyModuleShape>>)[tag.id] = tag as unknown as ModuleTag<\n string,\n AnyModuleShape\n >\n }\n\n const effect = ModuleFactory.Link(\n modulesRecord as unknown as Record<string, ModuleTag<string, AnyModuleShape>>,\n logic as unknown as ($: Record<string, ModuleHandle<AnyModuleShape>>) => Effect.Effect<void, E, R>,\n )\n\n const wrapped = Effect.gen(function* () {\n const level = yield* FiberRef.get(Debug.currentDiagnosticsLevel)\n if (level !== 'off') {\n yield* Debug.record({\n type: 'diagnostic',\n moduleId: `link:${linkId}`,\n code: 'process_link::blackbox_best_effort',\n severity: 'info',\n message:\n '[Process.link] Blackbox link is best-effort and is NOT stabilized within the same tick. Strong consistency applies only to declarative IR.',\n hint: 'If you need same-tick strong consistency, migrate to Process.linkDeclarative(...) (073).',\n kind: 'blackbox_link_boundary',\n })\n }\n return yield* effect\n }) as unknown as Effect.Effect<void, E, R>\n\n const definition: ProcessDefinition = {\n processId: linkId,\n requires: Array.from(requires),\n triggers: [...DEFAULT_TRIGGERS, { kind: 'platformEvent', platformEvent: `link:${linkId}` }],\n concurrency: { mode: 'latest' },\n errorPolicy: { mode: 'failStop' },\n diagnosticsLevel: 'off',\n }\n\n return Meta.attachMeta(wrapped, {\n definition,\n kind: 'link',\n }) as ProcessEffect<E, R>\n}\n\ntype DeclarativeReadNode = {\n readonly _tag: 'readNode'\n readonly moduleId: string\n readonly tag: ModuleTag<string, AnyModuleShape>\n readonly readQuery: ReadQuery.ReadQueryCompiled<any, any>\n}\n\ntype DeclarativeDispatchNode = {\n readonly _tag: 'dispatchNode'\n readonly moduleId: string\n readonly tag: ModuleTag<string, AnyModuleShape>\n readonly actionTag: string\n}\n\ntype DeclarativeLinkEdgeSpec = {\n readonly from: DeclarativeReadNode\n readonly to: DeclarativeDispatchNode\n}\n\ntype DeclarativeLinkHandles<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: {\n readonly read: <S, V>(selector: ReadQuery.ReadQueryInput<S, V>) => DeclarativeReadNode\n readonly dispatch: (actionTag: string) => DeclarativeDispatchNode\n }\n}\n\nexport function linkDeclarative<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]>(\n config: LinkConfig<Ms>,\n build: ($: DeclarativeLinkHandles<Ms>) => ReadonlyArray<DeclarativeLinkEdgeSpec>,\n): ProcessEffect<never, never> {\n const linkId =\n config.id ??\n [...config.modules]\n .map((m) => m.id)\n .sort()\n .join('~')\n\n const modulesRecord = Object.create(null) as ModulesRecord<Ms>\n const requires = new Set<string>()\n\n for (const module of config.modules) {\n const tag = unwrapModuleTag(module)\n requires.add(String(tag.id))\n ;(modulesRecord as Record<string, ModuleTag<string, AnyModuleShape>>)[tag.id] = tag as unknown as ModuleTag<\n string,\n AnyModuleShape\n >\n }\n\n const handles = Object.create(null) as DeclarativeLinkHandles<Ms>\n for (const id of Object.keys(modulesRecord) as Array<keyof ModulesRecord<Ms> & string>) {\n const tag = (modulesRecord as any)[id] as ModuleTag<string, AnyModuleShape>\n ;(handles as any)[id] = {\n read: (selector: ReadQuery.ReadQueryInput<any, any>) => {\n const compiled = ReadQuery.compile(selector)\n const staticIr = compiled.staticIr\n const ok = staticIr.lane === 'static' && staticIr.readsDigest != null && staticIr.fallbackReason == null\n if (!ok) {\n throw new Error(\n `[Process.linkDeclarative] ReadQuery must be static with readsDigest (moduleId=${id}, selectorId=${staticIr.selectorId}, lane=${staticIr.lane}, fallbackReason=${staticIr.fallbackReason}). ` +\n 'Fix: use ReadQuery.make(...) or annotate selector.fieldPaths.',\n )\n }\n return { _tag: 'readNode', moduleId: id, tag, readQuery: compiled } as DeclarativeReadNode\n },\n dispatch: (actionTag: string) => {\n if (typeof actionTag !== 'string' || actionTag.length === 0) {\n throw new Error('[Process.linkDeclarative] actionTag must be a non-empty string')\n }\n return { _tag: 'dispatchNode', moduleId: id, tag, actionTag } as DeclarativeDispatchNode\n },\n }\n }\n\n const edges = build(handles)\n if (!Array.isArray(edges)) {\n throw new Error('[Process.linkDeclarative] build(...) must return an array of edges')\n }\n\n const normalized = edges\n .filter((e): e is DeclarativeLinkEdgeSpec => Boolean(e && e.from && e.to))\n .map((e) => {\n if (e.from._tag !== 'readNode' || e.to._tag !== 'dispatchNode') {\n throw new Error('[Process.linkDeclarative] Invalid edge spec returned from build(...)')\n }\n return e\n })\n .slice()\n .sort((a, b) => {\n const ak = `${a.from.moduleId}:${a.from.readQuery.staticIr.selectorId}->${a.to.moduleId}:${a.to.actionTag}`\n const bk = `${b.from.moduleId}:${b.from.readQuery.staticIr.selectorId}->${b.to.moduleId}:${b.to.actionTag}`\n return ak < bk ? -1 : ak > bk ? 1 : 0\n })\n\n const program: Effect.Effect<void, never, any> = Effect.gen(function* () {\n const runtime = yield* DeclarativeLinkRuntimeTag\n const collectors = yield* FiberRef.get(currentConvergeStaticIrCollectors)\n\n const runtimeByTag = new Map<ModuleTag<string, AnyModuleShape>, any>()\n const resolveRuntime = (tag: ModuleTag<string, AnyModuleShape>): Effect.Effect<any> =>\n Effect.suspend(() => {\n const cached = runtimeByTag.get(tag)\n if (cached) return Effect.succeed(cached)\n return (tag as any).pipe(\n Effect.tap((rt: any) =>\n Effect.sync(() => {\n runtimeByTag.set(tag, rt)\n }),\n ),\n )\n })\n\n const nodes: Array<any> = []\n const irEdges: Array<any> = []\n const readNodes: Array<any> = []\n const dispatchNodes: Array<any> = []\n\n for (let i = 0; i < normalized.length; i += 1) {\n const edge = normalized[i]\n const fromRuntime = yield* resolveRuntime(edge.from.tag)\n const toRuntime = yield* resolveRuntime(edge.to.tag)\n\n const fromKey = `${fromRuntime.moduleId}::${fromRuntime.instanceId}`\n const readNodeId = `r${i}`\n const dispatchNodeId = `d${i}`\n\n nodes.push({\n id: readNodeId,\n kind: 'readQuery',\n moduleId: fromRuntime.moduleId,\n instanceKey: fromRuntime.instanceId,\n readQuery: edge.from.readQuery.staticIr,\n })\n nodes.push({\n id: dispatchNodeId,\n kind: 'dispatch',\n moduleId: toRuntime.moduleId,\n instanceKey: toRuntime.instanceId,\n actionTag: edge.to.actionTag,\n })\n\n irEdges.push({ from: readNodeId, to: dispatchNodeId })\n\n readNodes.push({ nodeId: readNodeId, moduleInstanceKey: fromKey, readQuery: edge.from.readQuery })\n dispatchNodes.push({\n nodeId: dispatchNodeId,\n dispatch: (payload: unknown) =>\n (toRuntime.dispatch({ _tag: edge.to.actionTag, payload } as any) as any).pipe(Effect.asVoid),\n })\n }\n\n const ir: DeclarativeLinkIR = {\n version: 1,\n nodes,\n edges: irEdges,\n }\n\n const registration = {\n linkId,\n ir,\n readNodes,\n dispatchNodes,\n } as const\n\n const unregister = runtime.registerDeclarativeLink(registration as any)\n\n if (collectors.length > 0) {\n const exported = exportDeclarativeLinkIr({ linkId, ir })\n for (const collector of collectors) {\n collector.register(exported as any)\n }\n }\n\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n unregister()\n }),\n )\n\n yield* Effect.never\n })\n\n const definition: ProcessDefinition = {\n processId: `dlink:${linkId}`,\n requires: Array.from(requires),\n triggers: DEFAULT_TRIGGERS,\n concurrency: { mode: 'latest' },\n errorPolicy: { mode: 'failStop' },\n diagnosticsLevel: 'off',\n }\n\n return Meta.attachMeta(program, {\n definition,\n kind: 'declarativeLink',\n }) as ProcessEffect<never, never>\n}\n","import { fnv1a32, stableStringify } from '../../digest.js'\nimport type { ReadQueryStaticIr } from './ReadQuery.js'\n\nexport type DeclarativeLinkNodeId = string\n\nexport type DeclarativeLinkNode =\n | {\n readonly id: DeclarativeLinkNodeId\n readonly kind: 'readQuery'\n readonly moduleId: string\n readonly instanceKey?: string\n /** MUST reuse `ReadQueryStaticIr` (no parallel selector-like IR). */\n readonly readQuery: ReadQueryStaticIr\n }\n | {\n readonly id: DeclarativeLinkNodeId\n readonly kind: 'dispatch'\n readonly moduleId: string\n readonly instanceKey?: string\n readonly actionTag: string\n }\n\nexport type DeclarativeLinkEdge = {\n readonly from: DeclarativeLinkNodeId\n readonly to: DeclarativeLinkNodeId\n}\n\n/**\n * DeclarativeLinkIR (v1):\n * - JSON serializable, IR-recognizable cross-module dependency graph.\n * - Read side: static ReadQuery only (must include readsDigest, no fallbackReason).\n * - Write side: dispatch only (no direct state writes).\n */\nexport interface DeclarativeLinkIR {\n readonly version: 1\n readonly nodes: ReadonlyArray<DeclarativeLinkNode>\n readonly edges: ReadonlyArray<DeclarativeLinkEdge>\n}\n\nexport const getDeclarativeLinkIrDigest = (ir: DeclarativeLinkIR): string =>\n `dlink_ir_v1:${fnv1a32(stableStringify(ir))}`\n\n/**\n * Export envelope compatible with the ConvergeStaticIrCollector bus:\n * - EvidenceCollector indexes by `staticIrDigest`.\n */\nexport interface DeclarativeLinkIrExport {\n readonly staticIrDigest: string\n readonly moduleId: string\n readonly instanceId: string\n readonly kind: 'declarativeLinkIr'\n readonly ir: DeclarativeLinkIR\n}\n\nexport const exportDeclarativeLinkIr = (args: { readonly linkId: string; readonly ir: DeclarativeLinkIR }): DeclarativeLinkIrExport => ({\n staticIrDigest: getDeclarativeLinkIrDigest(args.ir),\n moduleId: `link:${args.linkId}`,\n instanceId: 'runtime',\n kind: 'declarativeLinkIr',\n ir: args.ir,\n})\n\n"],"mappings":"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","names":["attachMeta","getDefinition","getMeta","getDefinition","getMeta","attachMeta"]}
|
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
isLogicPlanEffect,
|
|
3
3
|
make as make2,
|
|
4
4
|
markAsLogicPlanEffect
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MS77U77X.js";
|
|
6
6
|
import {
|
|
7
7
|
LogicPhaseServiceTag,
|
|
8
8
|
LogicUnitServiceTag,
|
|
9
9
|
make
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-34CF6OGE.js";
|
|
11
11
|
|
|
12
12
|
// src/internal/runtime/ModuleFactory.ts
|
|
13
13
|
import { Context, Effect, Layer, Option, Schema } from "effect";
|
|
@@ -201,4 +201,4 @@ export {
|
|
|
201
201
|
Link,
|
|
202
202
|
Module
|
|
203
203
|
};
|
|
204
|
-
//# sourceMappingURL=chunk-
|
|
204
|
+
//# sourceMappingURL=chunk-RQQW3IQC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/runtime/ModuleFactory.ts"],"sourcesContent":["import { Context, Effect, Layer, Option, Schema } from 'effect'\nimport * as ModuleRuntimeImpl from './ModuleRuntime.js'\nimport * as BoundApiRuntime from './BoundApiRuntime.js'\nimport * as LogicDiagnostics from './core/LogicDiagnostics.js'\nimport * as LogicPlanMarker from './core/LogicPlanMarker.js'\nimport type * as Action from '../action.js'\nimport type { FieldPath } from '../field-path.js'\nimport type {\n AnyModuleShape,\n AnySchema,\n ActionsFromMap,\n ModuleTag as LogixModuleTag,\n ModuleShape,\n ReducersFromMap,\n StateOf,\n ActionOf,\n ModuleHandle,\n ModuleLogic,\n ModuleImpl,\n ModuleImplementStateTransactionOptions,\n} from './core/module.js'\n\n/**\n * v3: Link (formerly Orchestrator)\n * A glue layer for cross-module collaboration.\n *\n * - Does not own its own State.\n * - Can access multiple Modules' readonly handles.\n * - Can define Logic only; cannot define State/Action.\n */\nexport function Link<Modules extends Record<string, LogixModuleTag<any, AnyModuleShape>>, E = never, R = never>(\n modules: Modules,\n logic: ($: { [K in keyof Modules]: ModuleHandle<Modules[K]['shape']> }) => Effect.Effect<void, E, R>,\n): Effect.Effect<void, E, R> {\n return Effect.gen(function* () {\n const handles: Record<string, ModuleHandle<AnyModuleShape>> = {}\n\n for (const [key, module] of Object.entries(modules)) {\n const runtime = yield* module\n\n handles[key] = {\n read: (selector: any) => Effect.map(runtime.getState, selector),\n changes: runtime.changes,\n dispatch: runtime.dispatch,\n actions$: runtime.actions$,\n actions: new Proxy(\n {},\n {\n get: (_target, prop) => (payload: any) => runtime.dispatch({ _tag: prop as string, payload }),\n },\n ),\n }\n }\n\n return yield* logic(\n handles as {\n [K in keyof Modules]: ModuleHandle<Modules[K]['shape']>\n },\n )\n })\n}\n\n/**\n * Module factory implementation: construct a ModuleTag from an id and Schema definitions.\n */\nexport function Module<Id extends string, SSchema extends AnySchema, AMap extends Record<string, Action.AnyActionToken>>(\n id: Id,\n def: {\n readonly state: SSchema\n readonly actions: AMap\n readonly reducers?: ReducersFromMap<SSchema, AMap>\n },\n): LogixModuleTag<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>> {\n const shape: ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap> = {\n stateSchema: def.state as any,\n actionSchema: Schema.Union(\n ...Object.entries(def.actions).map(([tag, token]) => {\n const payload = (token as Action.AnyActionToken).schema as AnySchema\n return Schema.Struct(\n payload === Schema.Void\n ? {\n _tag: Schema.Literal(tag),\n payload: Schema.optional(payload),\n }\n : {\n _tag: Schema.Literal(tag),\n payload,\n },\n )\n }),\n ) as unknown as Schema.Schema<ActionsFromMap<AMap>>,\n actionMap: def.actions as any,\n }\n\n type ShapeState = StateOf<typeof shape>\n type ShapeAction = ActionOf<typeof shape>\n\n // Normalize tag-keyed reducers into `_tag -> (state, action, sink?) => state` for the runtime.\n const reducers =\n def.reducers &&\n (Object.fromEntries(\n Object.entries(def.reducers).map(([tag, reducer]) => [\n tag,\n (state: ShapeState, action: ShapeAction, sink?: (path: string | FieldPath) => void) =>\n // Relies on the runtime `_tag` convention: only actions matching the current tag are routed to this reducer.\n (reducer as any)(\n state,\n action as {\n readonly _tag: string\n readonly payload: unknown\n },\n sink,\n ) as ShapeState,\n ]),\n ) as Record<\n string,\n (state: ShapeState, action: ShapeAction, sink?: (path: string | FieldPath) => void) => ShapeState\n >)\n\n class ModuleTag extends Context.Tag(`@logixjs/Module/${id}`)<\n ModuleTag,\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>\n >() {}\n\n const tag = ModuleTag\n\n const moduleTag = Object.assign(tag, {\n _kind: 'ModuleTag' as const,\n id,\n shape,\n stateSchema: shape.stateSchema,\n actionSchema: shape.actionSchema,\n actions: shape.actionMap,\n reducers: def.reducers,\n /**\n * Build a Logic program for the current Module:\n * - Read its ModuleRuntime from Context at runtime.\n * - Build a BoundApi from the runtime.\n * - Pass the BoundApi to the caller to build business logic.\n */\n logic: <R = unknown, E = never>(\n build: (api: import('./core/module.js').BoundApi<typeof shape, R>) => ModuleLogic<typeof shape, R, E>,\n ): ModuleLogic<typeof shape, R, E> => {\n const logicEffect = Effect.gen(function* () {\n const runtime = yield* tag\n const logicUnit = yield* Effect.serviceOption(LogicDiagnostics.LogicUnitServiceTag).pipe(\n Effect.map(Option.getOrUndefined),\n )\n const phaseService = yield* Effect.serviceOption(LogicDiagnostics.LogicPhaseServiceTag).pipe(\n Effect.map(Option.getOrUndefined),\n )\n const api = BoundApiRuntime.make<typeof shape, R>(shape, runtime, {\n getPhase: () => phaseService?.current ?? 'run',\n phaseService,\n moduleId: id,\n logicUnit,\n })\n\n let built: unknown\n try {\n built = build(api)\n } catch (err) {\n // Convert synchronously thrown LogicPhaseError into Effect.fail so runSync won't treat it as an \"async pending fiber\".\n if ((err as any)?._tag === 'LogicPhaseError') {\n return yield* Effect.fail(err as any)\n }\n throw err\n }\n\n if (LogicPlanMarker.isLogicPlanEffect(built)) {\n return yield* built as Effect.Effect<any, any, any>\n }\n\n const isLogicPlan = (value: unknown): value is import('./core/module.js').LogicPlan<typeof shape, R, E> =>\n Boolean(value && typeof value === 'object' && 'setup' in (value as any) && 'run' in (value as any))\n\n const plan = isLogicPlan(built)\n ? built\n : ({\n setup: Effect.void,\n run: built as Effect.Effect<any, any, any>,\n } satisfies import('./core/module.js').LogicPlan<typeof shape, R, E>)\n\n return plan\n })\n\n LogicPlanMarker.markAsLogicPlanEffect(logicEffect)\n return logicEffect\n },\n\n /**\n * live: given an initial state and a set of logics, construct a scoped ModuleRuntime Layer.\n *\n * Env conventions:\n * - R represents extra environment required by the logics (services / platform, etc.).\n * - ModuleRuntime itself only depends on Scope.Scope and is managed by Layer.scoped.\n */\n live: <R = never, E = never>(\n initial: StateOf<typeof shape>,\n ...logics: Array<ModuleLogic<typeof shape, R, E>>\n ): Layer.Layer<import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>, E, R> =>\n Layer.scoped(\n tag,\n ModuleRuntimeImpl.make<StateOf<typeof shape>, ActionOf<typeof shape>, R>(initial, {\n tag,\n logics: logics as ReadonlyArray<Effect.Effect<any, any, any>>,\n moduleId: id,\n reducers,\n }),\n ) as unknown as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n E,\n R\n >,\n\n /**\n * implement: build a ModuleImpl blueprint from Module definition + initial state + a set of logics.\n *\n * - R represents the Env required by the logics.\n * - The returned ModuleImpl.layer carries R as its input environment.\n * - withLayer/withLayers can progressively narrow R to a more concrete Env (even never).\n */\n implement: <R = never>(config: {\n initial: StateOf<typeof shape>\n logics?: Array<ModuleLogic<typeof shape, R, never>>\n imports?: ReadonlyArray<Layer.Layer<any, any, any> | ModuleImpl<any, AnyModuleShape, any>>\n /**\n * processes: a set of long-lived flows bound to this Module implementation (including Link).\n *\n * - These Effects will be forked by the runtime container (e.g. Runtime.make).\n * - Types use relaxed E/R to enable composing cross-module orchestration logic.\n * - Business code typically builds these flows via Link.make.\n */\n processes?: ReadonlyArray<Effect.Effect<void, any, any>>\n /**\n * stateTransaction: module-level StateTransaction config.\n *\n * - If instrumentation is not provided, fall back to Runtime-level config (if any) or NODE_ENV defaults.\n * - If instrumentation is provided, it takes precedence over Runtime-level config and defaults.\n */\n stateTransaction?: ModuleImplementStateTransactionOptions\n }): ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, R> => {\n const importedModules = (config.imports ?? []).flatMap((item) => {\n if ((item as ModuleImpl<any, AnyModuleShape, any>)._tag === 'ModuleImpl') {\n return [\n (item as ModuleImpl<any, AnyModuleShape, any>).module as unknown as Context.Tag<\n any,\n import('./core/module.js').ModuleRuntime<any, any>\n >,\n ]\n }\n return []\n })\n\n const baseLayer = Layer.scoped(\n tag,\n ModuleRuntimeImpl.make<StateOf<typeof shape>, ActionOf<typeof shape>, R>(config.initial, {\n tag,\n logics: (config.logics || []) as ReadonlyArray<Effect.Effect<any, any, any>>,\n processes: (config.processes || []) as ReadonlyArray<Effect.Effect<void, any, any>>,\n moduleId: id,\n imports: importedModules,\n reducers,\n stateTransaction: config.stateTransaction,\n }),\n ) as unknown as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >\n\n const processes = config.processes ?? []\n\n const makeImplWithLayer = (\n layer: Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >,\n ): ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any> => ({\n _tag: 'ModuleImpl',\n module: moduleTag as unknown as LogixModuleTag<\n Id,\n ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>\n >,\n layer,\n processes,\n stateTransaction: config.stateTransaction,\n withLayer: (\n extra: Layer.Layer<any, never, any>,\n ): ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any> => {\n const provided = (\n layer as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >\n ).pipe(Layer.provide(extra as Layer.Layer<any, never, any>))\n\n const merged = Layer.mergeAll(provided, extra as Layer.Layer<any, never, any>) as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >\n\n return makeImplWithLayer(merged)\n },\n withLayers: (\n ...extras: ReadonlyArray<Layer.Layer<any, never, any>>\n ): ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any> =>\n extras.reduce<ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any>>(\n (implAcc, extra) => implAcc.withLayer(extra),\n makeImplWithLayer(\n layer as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >,\n ),\n ),\n })\n\n // Start from baseLayer and layer-in imports (Layer or other ModuleImpl.layer) sequentially.\n const initialImpl = makeImplWithLayer(\n baseLayer as Layer.Layer<\n import('./core/module.js').ModuleRuntime<StateOf<typeof shape>, ActionOf<typeof shape>>,\n never,\n any\n >,\n )\n\n const imports = config.imports ?? []\n\n const finalImpl = imports.reduce<\n ModuleImpl<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>, any>\n >((implAcc, item) => {\n const layer =\n (item as ModuleImpl<any, AnyModuleShape, any>)._tag === 'ModuleImpl'\n ? (item as ModuleImpl<any, AnyModuleShape, any>).layer\n : (item as Layer.Layer<any, any, any>)\n\n return implAcc.withLayer(layer as Layer.Layer<any, never, any>)\n }, initialImpl)\n\n return finalImpl\n },\n })\n\n return moduleTag as LogixModuleTag<Id, ModuleShape<SSchema, Schema.Schema<ActionsFromMap<AMap>>, AMap>>\n}\n"],"mappings":"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","names":["tag","make"]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
CutoverCoverageMatrix,
|
|
3
3
|
RuntimeServiceBuiltinsTag,
|
|
4
4
|
evaluateFullCutoverGate
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-5W2V2NVJ.js";
|
|
6
6
|
import {
|
|
7
7
|
FullCutoverGateModeTag,
|
|
8
8
|
KernelImplementationRefTag,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
getKernelImplementationRef,
|
|
13
13
|
getRuntimeServicesEvidence,
|
|
14
14
|
isKernelImplementationRef
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-EB4RGQO3.js";
|
|
16
16
|
import {
|
|
17
17
|
__export
|
|
18
18
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -73,4 +73,4 @@ export {
|
|
|
73
73
|
isKernelFullyActivated,
|
|
74
74
|
Kernel_exports
|
|
75
75
|
};
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
76
|
+
//# sourceMappingURL=chunk-TKOGZDD6.js.map
|
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ProcessRuntimeTag,
|
|
3
3
|
layer
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-G7ESIQTI.js";
|
|
5
5
|
import {
|
|
6
6
|
make
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-34CF6OGE.js";
|
|
8
8
|
import {
|
|
9
9
|
RootContextTag
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-3VZYDNXZ.js";
|
|
11
11
|
import {
|
|
12
12
|
ConcurrencyPolicyTag,
|
|
13
|
+
HostSchedulerTag,
|
|
13
14
|
ReadQueryStrictGateConfigTag,
|
|
14
|
-
StateTransactionConfigTag
|
|
15
|
-
|
|
15
|
+
StateTransactionConfigTag,
|
|
16
|
+
declarativeLinkRuntimeLayer,
|
|
17
|
+
hostSchedulerLayer,
|
|
18
|
+
runtimeStoreLayer,
|
|
19
|
+
tickSchedulerLayer
|
|
20
|
+
} from "./chunk-AQ7L2QZ5.js";
|
|
21
|
+
import {
|
|
22
|
+
getGlobalHostScheduler
|
|
23
|
+
} from "./chunk-MYKNINNN.js";
|
|
16
24
|
|
|
17
25
|
// src/internal/runtime/core/runner/ProgramRunner.errors.ts
|
|
18
26
|
var summarizeCause = (cause) => {
|
|
@@ -217,8 +225,17 @@ Ensure all modules in the application Runtime have unique IDs.`
|
|
|
217
225
|
const readQueryStrictGateLayer = config.readQueryStrictGate ? Layer.succeed(ReadQueryStrictGateConfigTag, config.readQueryStrictGate) : Layer.empty;
|
|
218
226
|
const appModuleIds = config.modules.map((entry) => String(entry.module.id));
|
|
219
227
|
const appId = appModuleIds.length === 1 ? appModuleIds[0] : appModuleIds.slice().sort().join("~");
|
|
228
|
+
const pinnedHostSchedulerLayer = config.hostScheduler !== void 0 ? Layer.succeed(HostSchedulerTag, config.hostScheduler) : void 0;
|
|
229
|
+
const tickServicesLayer = Layer.provideMerge(pinnedHostSchedulerLayer ?? hostSchedulerLayer)(
|
|
230
|
+
Layer.provideMerge(runtimeStoreLayer)(Layer.provideMerge(declarativeLinkRuntimeLayer)(tickSchedulerLayer()))
|
|
231
|
+
);
|
|
232
|
+
const appLayer = config.layer.pipe(Layer.provide(tickServicesLayer));
|
|
220
233
|
const baseLayer = Layer.mergeAll(
|
|
221
|
-
|
|
234
|
+
tickServicesLayer,
|
|
235
|
+
appLayer,
|
|
236
|
+
// If a HostScheduler override is requested, pin it as the final HostSchedulerTag value to avoid accidental divergence.
|
|
237
|
+
// (Build-time capture is handled above by injecting it into tickServicesLayer.)
|
|
238
|
+
pinnedHostSchedulerLayer ?? Layer.empty,
|
|
222
239
|
stateTxnLayer,
|
|
223
240
|
concurrencyPolicyLayer,
|
|
224
241
|
readQueryStrictGateLayer,
|
|
@@ -231,42 +248,51 @@ Ensure all modules in the application Runtime have unique IDs.`
|
|
|
231
248
|
})
|
|
232
249
|
)
|
|
233
250
|
);
|
|
234
|
-
const moduleLayers = config.modules.map(
|
|
235
|
-
(entry) => (
|
|
236
|
-
// Ensure each module layer can see the app Env (baseLayer) to avoid missing root env during initialization.
|
|
237
|
-
Layer.provide(entry.layer, baseLayer)
|
|
238
|
-
)
|
|
239
|
-
);
|
|
240
|
-
const envLayer = moduleLayers.length > 0 ? Layer.mergeAll(baseLayer, ...moduleLayers) : baseLayer;
|
|
241
251
|
const finalLayer = Layer.unwrapScoped(
|
|
242
252
|
Effect.gen(function* () {
|
|
243
253
|
const scope = yield* Effect.scope;
|
|
244
|
-
const [patch, env] = yield* Effect.diffFiberRefs(
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
254
|
+
const [patch, env] = yield* Effect.diffFiberRefs(
|
|
255
|
+
Effect.gen(function* () {
|
|
256
|
+
const baseEnv = yield* Layer.buildWithScope(baseLayer, scope);
|
|
257
|
+
const moduleEnv = config.modules.length > 0 ? yield* Effect.provide(
|
|
258
|
+
Layer.buildWithScope(
|
|
259
|
+
config.modules.length === 1 ? config.modules[0].layer : config.modules.slice(1).reduce((acc, entry) => Layer.merge(acc, entry.layer), config.modules[0].layer),
|
|
260
|
+
scope
|
|
261
|
+
),
|
|
262
|
+
baseEnv
|
|
263
|
+
) : void 0;
|
|
264
|
+
const mergedEnv = moduleEnv ? Context.merge(baseEnv, moduleEnv) : baseEnv;
|
|
265
|
+
const rootContext = Context.get(mergedEnv, RootContextTag);
|
|
266
|
+
rootContext.context = mergedEnv;
|
|
267
|
+
yield* Deferred.succeed(rootContext.ready, mergedEnv);
|
|
268
|
+
const processRuntime = Context.get(
|
|
269
|
+
mergedEnv,
|
|
270
|
+
ProcessRuntimeTag
|
|
271
|
+
);
|
|
272
|
+
yield* Effect.forEach(
|
|
273
|
+
config.processes,
|
|
274
|
+
(process) => Effect.gen(function* () {
|
|
275
|
+
const installation = yield* Effect.provide(
|
|
276
|
+
processRuntime.install(process, {
|
|
277
|
+
scope: { type: "app", appId },
|
|
278
|
+
enabled: true,
|
|
279
|
+
installedAt: "appRuntime"
|
|
280
|
+
}),
|
|
281
|
+
mergedEnv
|
|
282
|
+
);
|
|
283
|
+
if (installation === void 0) {
|
|
284
|
+
yield* Effect.forkScoped(
|
|
285
|
+
Effect.provide(
|
|
286
|
+
config.onError ? Effect.catchAllCause(process, config.onError) : process,
|
|
287
|
+
mergedEnv
|
|
288
|
+
)
|
|
289
|
+
);
|
|
290
|
+
}
|
|
260
291
|
}),
|
|
261
|
-
|
|
292
|
+
{ discard: true }
|
|
262
293
|
);
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
Effect.provide(config.onError ? Effect.catchAllCause(process, config.onError) : process, env)
|
|
266
|
-
);
|
|
267
|
-
}
|
|
268
|
-
}),
|
|
269
|
-
{ discard: true }
|
|
294
|
+
return mergedEnv;
|
|
295
|
+
})
|
|
270
296
|
);
|
|
271
297
|
const fiberRefsLayer = Layer.scopedDiscard(Effect.patchFiberRefs(patch));
|
|
272
298
|
return Layer.mergeAll(Layer.succeedContext(env), fiberRefsLayer);
|
|
@@ -289,6 +315,11 @@ import { Cause, Effect as Effect2, Exit, Fiber, Option, Scope } from "effect";
|
|
|
289
315
|
var closeProgramScope = (params) => {
|
|
290
316
|
return Effect2.gen(function* () {
|
|
291
317
|
const start = Date.now();
|
|
318
|
+
const hostSchedulerOpt = yield* Effect2.serviceOption(HostSchedulerTag);
|
|
319
|
+
const hostScheduler = Option.isSome(hostSchedulerOpt) ? hostSchedulerOpt.value : getGlobalHostScheduler();
|
|
320
|
+
const yieldMicrotask = Effect2.async((resume) => {
|
|
321
|
+
hostScheduler.scheduleMicrotask(() => resume(Effect2.void));
|
|
322
|
+
});
|
|
292
323
|
const fiber = yield* Effect2.forkDaemon(Scope.close(params.scope, Exit.void));
|
|
293
324
|
while (true) {
|
|
294
325
|
const exitOpt = yield* Fiber.poll(fiber);
|
|
@@ -311,7 +342,7 @@ var closeProgramScope = (params) => {
|
|
|
311
342
|
yield* Fiber.interruptFork(fiber);
|
|
312
343
|
return yield* Effect2.die(error);
|
|
313
344
|
}
|
|
314
|
-
yield*
|
|
345
|
+
yield* yieldMicrotask;
|
|
315
346
|
}
|
|
316
347
|
});
|
|
317
348
|
};
|
|
@@ -403,4 +434,4 @@ export {
|
|
|
403
434
|
makeApp,
|
|
404
435
|
provide
|
|
405
436
|
};
|
|
406
|
-
//# sourceMappingURL=chunk-
|
|
437
|
+
//# sourceMappingURL=chunk-TQYLVXGY.js.map
|