@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,23 @@
|
|
|
1
|
+
// src/internal/external-store-descriptor.ts
|
|
2
|
+
var EXTERNAL_STORE_DESCRIPTOR = /* @__PURE__ */ Symbol.for("@logixjs/core/externalStoreDescriptor");
|
|
3
|
+
var defineHidden = (target, key, value) => {
|
|
4
|
+
Object.defineProperty(target, key, {
|
|
5
|
+
value,
|
|
6
|
+
enumerable: false,
|
|
7
|
+
configurable: true,
|
|
8
|
+
writable: false
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var attachExternalStoreDescriptor = (store, descriptor) => {
|
|
12
|
+
defineHidden(store, EXTERNAL_STORE_DESCRIPTOR, descriptor);
|
|
13
|
+
};
|
|
14
|
+
var getExternalStoreDescriptor = (store) => {
|
|
15
|
+
if (!store || typeof store !== "object" && typeof store !== "function") return void 0;
|
|
16
|
+
return store[EXTERNAL_STORE_DESCRIPTOR];
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
attachExternalStoreDescriptor,
|
|
21
|
+
getExternalStoreDescriptor
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=chunk-MW4FA3MW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/external-store-descriptor.ts"],"sourcesContent":["import type { Context, Stream, SubscriptionRef } from 'effect'\nimport type { ReadQueryCompiled } from './runtime/core/ReadQuery.js'\n\nexport type ExternalStoreDescriptor =\n | {\n readonly kind: 'manual'\n readonly storeId: string\n }\n | {\n readonly kind: 'service'\n readonly storeId: string\n readonly tagId: string\n readonly tag: Context.Tag<any, any>\n readonly map: (service: any) => {\n readonly getSnapshot: () => any\n readonly getServerSnapshot?: () => any\n readonly subscribe: (listener: () => void) => () => void\n }\n }\n | {\n readonly kind: 'subscriptionRef'\n readonly storeId: string\n readonly ref: SubscriptionRef.SubscriptionRef<any>\n }\n | {\n readonly kind: 'stream'\n readonly storeId: string\n readonly stream: Stream.Stream<any, any, any>\n readonly initial: unknown\n readonly initialHint: 'initial' | 'current'\n }\n | {\n readonly kind: 'module'\n readonly storeId: string\n readonly module: unknown\n readonly moduleId: string\n /**\n * Optional instance anchor when the caller passes a concrete ModuleRuntime handle.\n * - When omitted, the runtime resolves it from the module tag during install.\n */\n readonly instanceId?: string\n /**\n * Full compiled ReadQuery (includes select/equals); may carry non-serializable closures.\n * Static IR export MUST use `readQuery.staticIr` (JSON-friendly) and ignore non-serializable parts.\n */\n readonly readQuery: ReadQueryCompiled<any, any>\n }\n\nexport const EXTERNAL_STORE_DESCRIPTOR = Symbol.for('@logixjs/core/externalStoreDescriptor')\n\nconst defineHidden = (target: object, key: symbol, value: unknown): void => {\n Object.defineProperty(target, key, {\n value,\n enumerable: false,\n configurable: true,\n writable: false,\n })\n}\n\nexport const attachExternalStoreDescriptor = (store: object, descriptor: ExternalStoreDescriptor): void => {\n defineHidden(store, EXTERNAL_STORE_DESCRIPTOR, descriptor)\n}\n\nexport const getExternalStoreDescriptor = (store: unknown): ExternalStoreDescriptor | undefined => {\n if (!store || (typeof store !== 'object' && typeof store !== 'function')) return undefined\n return (store as any)[EXTERNAL_STORE_DESCRIPTOR] as ExternalStoreDescriptor | undefined\n}\n"],"mappings":";AAgDO,IAAM,4BAA4B,uBAAO,IAAI,uCAAuC;AAE3F,IAAM,eAAe,CAAC,QAAgB,KAAa,UAAyB;AAC1E,SAAO,eAAe,QAAQ,KAAK;AAAA,IACjC;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,UAAU;AAAA,EACZ,CAAC;AACH;AAEO,IAAM,gCAAgC,CAAC,OAAe,eAA8C;AACzG,eAAa,OAAO,2BAA2B,UAAU;AAC3D;AAEO,IAAM,6BAA6B,CAAC,UAAwD;AACjG,MAAI,CAAC,SAAU,OAAO,UAAU,YAAY,OAAO,UAAU,WAAa,QAAO;AACjF,SAAQ,MAAc,yBAAyB;AACjD;","names":[]}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
// src/internal/runtime/core/HostScheduler.ts
|
|
2
|
+
var noopCancel = () => {
|
|
3
|
+
};
|
|
4
|
+
var safeNowMs = () => {
|
|
5
|
+
const perf = globalThis.performance;
|
|
6
|
+
if (perf && typeof perf.now === "function") {
|
|
7
|
+
try {
|
|
8
|
+
const v = perf.now();
|
|
9
|
+
if (typeof v === "number" && Number.isFinite(v)) return v;
|
|
10
|
+
} catch {
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return Date.now();
|
|
14
|
+
};
|
|
15
|
+
var safeQueueMicrotask = (cb) => {
|
|
16
|
+
const qm = globalThis.queueMicrotask;
|
|
17
|
+
if (typeof qm === "function") {
|
|
18
|
+
try {
|
|
19
|
+
qm(cb);
|
|
20
|
+
return;
|
|
21
|
+
} catch {
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
Promise.resolve().then(cb);
|
|
26
|
+
} catch {
|
|
27
|
+
setTimeout(cb, 0);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
var safeSetTimeout = (ms, cb) => {
|
|
31
|
+
const id = setTimeout(cb, ms);
|
|
32
|
+
return () => {
|
|
33
|
+
try {
|
|
34
|
+
clearTimeout(id);
|
|
35
|
+
} catch {
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
var makeMessageChannelMacrotask = () => {
|
|
40
|
+
const MC = globalThis.MessageChannel;
|
|
41
|
+
if (typeof MC !== "function") return void 0;
|
|
42
|
+
let channel;
|
|
43
|
+
try {
|
|
44
|
+
channel = new MC();
|
|
45
|
+
} catch {
|
|
46
|
+
return void 0;
|
|
47
|
+
}
|
|
48
|
+
const queue = [];
|
|
49
|
+
let scheduled = false;
|
|
50
|
+
const flush = () => {
|
|
51
|
+
scheduled = false;
|
|
52
|
+
const tasks = queue.splice(0, queue.length);
|
|
53
|
+
for (const t of tasks) {
|
|
54
|
+
if (t.canceled) continue;
|
|
55
|
+
try {
|
|
56
|
+
t.cb();
|
|
57
|
+
} catch {
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
channel.port1.onmessage = flush;
|
|
63
|
+
} catch {
|
|
64
|
+
return void 0;
|
|
65
|
+
}
|
|
66
|
+
const schedule = (cb) => {
|
|
67
|
+
const task = { canceled: false, cb };
|
|
68
|
+
queue.push(task);
|
|
69
|
+
if (!scheduled) {
|
|
70
|
+
scheduled = true;
|
|
71
|
+
try {
|
|
72
|
+
channel.port2.postMessage(void 0);
|
|
73
|
+
} catch {
|
|
74
|
+
scheduled = false;
|
|
75
|
+
return safeSetTimeout(0, cb);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return () => {
|
|
79
|
+
task.canceled = true;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
return schedule;
|
|
83
|
+
};
|
|
84
|
+
var makeSetImmediateMacrotask = () => {
|
|
85
|
+
const si = globalThis.setImmediate;
|
|
86
|
+
const ci = globalThis.clearImmediate;
|
|
87
|
+
if (typeof si !== "function") return void 0;
|
|
88
|
+
return (cb) => {
|
|
89
|
+
let id;
|
|
90
|
+
try {
|
|
91
|
+
id = si(cb);
|
|
92
|
+
} catch {
|
|
93
|
+
return safeSetTimeout(0, cb);
|
|
94
|
+
}
|
|
95
|
+
return () => {
|
|
96
|
+
if (typeof ci !== "function") return;
|
|
97
|
+
try {
|
|
98
|
+
ci(id);
|
|
99
|
+
} catch {
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
var makeRaf = () => {
|
|
105
|
+
const raf = globalThis.requestAnimationFrame;
|
|
106
|
+
const cancel = globalThis.cancelAnimationFrame;
|
|
107
|
+
if (typeof raf !== "function") return void 0;
|
|
108
|
+
return (cb) => {
|
|
109
|
+
let id;
|
|
110
|
+
try {
|
|
111
|
+
id = raf(cb);
|
|
112
|
+
} catch {
|
|
113
|
+
return noopCancel;
|
|
114
|
+
}
|
|
115
|
+
return () => {
|
|
116
|
+
if (typeof cancel !== "function") return;
|
|
117
|
+
try {
|
|
118
|
+
cancel(id);
|
|
119
|
+
} catch {
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
var makeDefaultHostScheduler = () => {
|
|
125
|
+
const macrotask = makeSetImmediateMacrotask() ?? makeMessageChannelMacrotask() ?? ((cb) => safeSetTimeout(0, cb));
|
|
126
|
+
const raf = makeRaf();
|
|
127
|
+
return {
|
|
128
|
+
nowMs: safeNowMs,
|
|
129
|
+
scheduleMicrotask: safeQueueMicrotask,
|
|
130
|
+
scheduleMacrotask: macrotask,
|
|
131
|
+
scheduleAnimationFrame: (cb) => raf?.(cb) ?? macrotask(cb),
|
|
132
|
+
scheduleTimeout: safeSetTimeout
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
var globalHostScheduler;
|
|
136
|
+
var getGlobalHostScheduler = () => {
|
|
137
|
+
globalHostScheduler ?? (globalHostScheduler = makeDefaultHostScheduler());
|
|
138
|
+
return globalHostScheduler;
|
|
139
|
+
};
|
|
140
|
+
var __unsafeSetGlobalHostSchedulerForTests = (next) => {
|
|
141
|
+
globalHostScheduler = next;
|
|
142
|
+
};
|
|
143
|
+
var makeDeterministicHostScheduler = () => {
|
|
144
|
+
const microtasks = [];
|
|
145
|
+
const macrotasks = [];
|
|
146
|
+
const flushMicrotasks = (options) => {
|
|
147
|
+
const max = options?.max ?? 1e4;
|
|
148
|
+
let ran = 0;
|
|
149
|
+
while (microtasks.length > 0 && ran < max) {
|
|
150
|
+
const cb = microtasks.shift();
|
|
151
|
+
ran += 1;
|
|
152
|
+
try {
|
|
153
|
+
cb();
|
|
154
|
+
} catch {
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return ran;
|
|
158
|
+
};
|
|
159
|
+
const flushOneMacrotask = () => {
|
|
160
|
+
const t = macrotasks.shift();
|
|
161
|
+
if (!t) return false;
|
|
162
|
+
if (t.canceled) return true;
|
|
163
|
+
try {
|
|
164
|
+
t.cb();
|
|
165
|
+
} catch {
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
};
|
|
169
|
+
const flushAll = (options) => {
|
|
170
|
+
const maxTurns = options?.maxTurns ?? 1e4;
|
|
171
|
+
let turns = 0;
|
|
172
|
+
let ran = 0;
|
|
173
|
+
while (turns < maxTurns) {
|
|
174
|
+
const before = microtasks.length + macrotasks.length;
|
|
175
|
+
ran += flushMicrotasks();
|
|
176
|
+
if (microtasks.length > 0) {
|
|
177
|
+
turns += 1;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
if (flushOneMacrotask()) {
|
|
181
|
+
turns += 1;
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
const after = microtasks.length + macrotasks.length;
|
|
185
|
+
if (after === 0 || after === before) break;
|
|
186
|
+
turns += 1;
|
|
187
|
+
}
|
|
188
|
+
return { turns, ran };
|
|
189
|
+
};
|
|
190
|
+
return {
|
|
191
|
+
nowMs: safeNowMs,
|
|
192
|
+
scheduleMicrotask: (cb) => {
|
|
193
|
+
microtasks.push(cb);
|
|
194
|
+
},
|
|
195
|
+
scheduleMacrotask: (cb) => {
|
|
196
|
+
const task = { canceled: false, cb };
|
|
197
|
+
macrotasks.push(task);
|
|
198
|
+
return () => {
|
|
199
|
+
task.canceled = true;
|
|
200
|
+
};
|
|
201
|
+
},
|
|
202
|
+
scheduleAnimationFrame: (cb) => {
|
|
203
|
+
const task = { canceled: false, cb };
|
|
204
|
+
macrotasks.push(task);
|
|
205
|
+
return () => {
|
|
206
|
+
task.canceled = true;
|
|
207
|
+
};
|
|
208
|
+
},
|
|
209
|
+
scheduleTimeout: (_ms, cb) => {
|
|
210
|
+
const task = { canceled: false, cb };
|
|
211
|
+
macrotasks.push(task);
|
|
212
|
+
return () => {
|
|
213
|
+
task.canceled = true;
|
|
214
|
+
};
|
|
215
|
+
},
|
|
216
|
+
flushMicrotasks,
|
|
217
|
+
flushOneMacrotask,
|
|
218
|
+
flushAll,
|
|
219
|
+
getQueueSize: () => ({ microtasks: microtasks.length, macrotasks: macrotasks.length })
|
|
220
|
+
};
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
export {
|
|
224
|
+
getGlobalHostScheduler,
|
|
225
|
+
__unsafeSetGlobalHostSchedulerForTests,
|
|
226
|
+
makeDeterministicHostScheduler
|
|
227
|
+
};
|
|
228
|
+
//# sourceMappingURL=chunk-MYKNINNN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/runtime/core/HostScheduler.ts"],"sourcesContent":["export type Cancel = () => void\n\nexport type HostScheduler = {\n readonly nowMs: () => number\n readonly scheduleMicrotask: (cb: () => void) => void\n readonly scheduleMacrotask: (cb: () => void) => Cancel\n readonly scheduleAnimationFrame: (cb: () => void) => Cancel\n readonly scheduleTimeout: (ms: number, cb: () => void) => Cancel\n}\n\nconst noopCancel: Cancel = () => {}\n\nconst safeNowMs = (): number => {\n const perf = (globalThis as any).performance as { now?: () => number } | undefined\n if (perf && typeof perf.now === 'function') {\n try {\n const v = perf.now()\n if (typeof v === 'number' && Number.isFinite(v)) return v\n } catch {\n // fallthrough\n }\n }\n\n return Date.now()\n}\n\nconst safeQueueMicrotask = (cb: () => void): void => {\n const qm = (globalThis as any).queueMicrotask as ((run: () => void) => void) | undefined\n if (typeof qm === 'function') {\n try {\n qm(cb)\n return\n } catch {\n // fallthrough\n }\n }\n\n // Promise job fallback (still a microtask boundary).\n try {\n Promise.resolve().then(cb)\n } catch {\n // last resort\n setTimeout(cb, 0)\n }\n}\n\nconst safeSetTimeout = (ms: number, cb: () => void): Cancel => {\n const id = setTimeout(cb, ms)\n return () => {\n try {\n clearTimeout(id)\n } catch {\n // best-effort\n }\n }\n}\n\nconst makeMessageChannelMacrotask = (): ((cb: () => void) => Cancel) | undefined => {\n const MC = (globalThis as any).MessageChannel as { new (): MessageChannel } | undefined\n if (typeof MC !== 'function') return undefined\n\n let channel: MessageChannel\n try {\n channel = new MC()\n } catch {\n return undefined\n }\n\n type Task = { canceled: boolean; cb: () => void }\n const queue: Array<Task> = []\n let scheduled = false\n\n const flush = (): void => {\n scheduled = false\n const tasks = queue.splice(0, queue.length)\n for (const t of tasks) {\n if (t.canceled) continue\n try {\n t.cb()\n } catch {\n // best-effort\n }\n }\n }\n\n try {\n channel.port1.onmessage = flush\n } catch {\n return undefined\n }\n\n const schedule = (cb: () => void): Cancel => {\n const task: Task = { canceled: false, cb }\n queue.push(task)\n if (!scheduled) {\n scheduled = true\n try {\n channel.port2.postMessage(undefined)\n } catch {\n scheduled = false\n // fallback to timeout if postMessage fails\n return safeSetTimeout(0, cb)\n }\n }\n return () => {\n task.canceled = true\n }\n }\n\n return schedule\n}\n\nconst makeSetImmediateMacrotask = (): ((cb: () => void) => Cancel) | undefined => {\n const si = (globalThis as any).setImmediate as ((run: () => void) => any) | undefined\n const ci = (globalThis as any).clearImmediate as ((id: any) => void) | undefined\n if (typeof si !== 'function') return undefined\n\n return (cb) => {\n let id: any\n try {\n id = si(cb)\n } catch {\n return safeSetTimeout(0, cb)\n }\n\n return () => {\n if (typeof ci !== 'function') return\n try {\n ci(id)\n } catch {\n // best-effort\n }\n }\n }\n}\n\nconst makeRaf = (): ((cb: () => void) => Cancel) | undefined => {\n const raf = (globalThis as any).requestAnimationFrame as ((run: () => void) => number) | undefined\n const cancel = (globalThis as any).cancelAnimationFrame as ((id: number) => void) | undefined\n if (typeof raf !== 'function') return undefined\n\n return (cb) => {\n let id: number\n try {\n id = raf(cb)\n } catch {\n return noopCancel\n }\n\n return () => {\n if (typeof cancel !== 'function') return\n try {\n cancel(id)\n } catch {\n // best-effort\n }\n }\n }\n}\n\nexport const makeDefaultHostScheduler = (): HostScheduler => {\n const macrotask =\n makeSetImmediateMacrotask() ??\n makeMessageChannelMacrotask() ??\n ((cb: () => void) => safeSetTimeout(0, cb))\n\n const raf = makeRaf()\n\n return {\n nowMs: safeNowMs,\n scheduleMicrotask: safeQueueMicrotask,\n scheduleMacrotask: macrotask,\n scheduleAnimationFrame: (cb) => raf?.(cb) ?? macrotask(cb),\n scheduleTimeout: safeSetTimeout,\n }\n}\n\nlet globalHostScheduler: HostScheduler | undefined\n\nexport const getGlobalHostScheduler = (): HostScheduler => {\n globalHostScheduler ??= makeDefaultHostScheduler()\n return globalHostScheduler\n}\n\nexport const __unsafeSetGlobalHostSchedulerForTests = (next: HostScheduler | undefined): void => {\n globalHostScheduler = next\n}\n\nexport type DeterministicHostScheduler = HostScheduler & {\n readonly flushMicrotasks: (options?: { readonly max?: number }) => number\n readonly flushOneMacrotask: () => boolean\n readonly flushAll: (options?: { readonly maxTurns?: number }) => { readonly turns: number; readonly ran: number }\n readonly getQueueSize: () => { readonly microtasks: number; readonly macrotasks: number }\n}\n\nexport const makeDeterministicHostScheduler = (): DeterministicHostScheduler => {\n const microtasks: Array<() => void> = []\n const macrotasks: Array<{ canceled: boolean; cb: () => void }> = []\n\n const flushMicrotasks = (options?: { readonly max?: number }): number => {\n const max = options?.max ?? 10_000\n let ran = 0\n while (microtasks.length > 0 && ran < max) {\n const cb = microtasks.shift()!\n ran += 1\n try {\n cb()\n } catch {\n // best-effort\n }\n }\n return ran\n }\n\n const flushOneMacrotask = (): boolean => {\n const t = macrotasks.shift()\n if (!t) return false\n if (t.canceled) return true\n try {\n t.cb()\n } catch {\n // best-effort\n }\n return true\n }\n\n const flushAll = (options?: { readonly maxTurns?: number }): { turns: number; ran: number } => {\n const maxTurns = options?.maxTurns ?? 10_000\n let turns = 0\n let ran = 0\n\n while (turns < maxTurns) {\n const before = microtasks.length + macrotasks.length\n ran += flushMicrotasks()\n if (microtasks.length > 0) {\n turns += 1\n continue\n }\n if (flushOneMacrotask()) {\n turns += 1\n continue\n }\n const after = microtasks.length + macrotasks.length\n if (after === 0 || after === before) break\n turns += 1\n }\n\n return { turns, ran }\n }\n\n return {\n nowMs: safeNowMs,\n scheduleMicrotask: (cb) => {\n microtasks.push(cb)\n },\n scheduleMacrotask: (cb) => {\n const task = { canceled: false, cb }\n macrotasks.push(task)\n return () => {\n task.canceled = true\n }\n },\n scheduleAnimationFrame: (cb) => {\n const task = { canceled: false, cb }\n macrotasks.push(task)\n return () => {\n task.canceled = true\n }\n },\n scheduleTimeout: (_ms, cb) => {\n const task = { canceled: false, cb }\n macrotasks.push(task)\n return () => {\n task.canceled = true\n }\n },\n flushMicrotasks,\n flushOneMacrotask,\n flushAll,\n getQueueSize: () => ({ microtasks: microtasks.length, macrotasks: macrotasks.length }),\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
keyHash,
|
|
6
6
|
layer,
|
|
7
7
|
make
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-C2UZZQ76.js";
|
|
9
9
|
import {
|
|
10
10
|
__export
|
|
11
11
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -34,4 +34,4 @@ export {
|
|
|
34
34
|
layer2 as layer,
|
|
35
35
|
Resource_exports
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
37
|
+
//# sourceMappingURL=chunk-O6TTQXTY.js.map
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
layer as layer2
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import {
|
|
5
|
-
withDebug
|
|
6
|
-
} from "./chunk-QMM6O4CD.js";
|
|
7
|
-
import {
|
|
8
|
-
getRuntimeByModuleAndInstance,
|
|
9
|
-
normalizeBoolean,
|
|
10
|
-
normalizeNonNegativeNumber,
|
|
11
|
-
normalizePositiveInt,
|
|
12
|
-
normalizePositiveNumber
|
|
13
|
-
} from "./chunk-JGIWG6SR.js";
|
|
3
|
+
} from "./chunk-3XO4HR6V.js";
|
|
14
4
|
import {
|
|
15
5
|
BootError,
|
|
16
6
|
DisposeError,
|
|
@@ -21,35 +11,45 @@ import {
|
|
|
21
11
|
makeApp,
|
|
22
12
|
makeProgramRunnerKernel,
|
|
23
13
|
provide
|
|
24
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-TQYLVXGY.js";
|
|
25
15
|
import {
|
|
26
|
-
|
|
27
|
-
} from "./chunk-
|
|
16
|
+
withDebug
|
|
17
|
+
} from "./chunk-UACD2CL2.js";
|
|
28
18
|
import {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
19
|
+
getRuntimeByModuleAndInstance,
|
|
20
|
+
normalizeBoolean,
|
|
21
|
+
normalizeNonNegativeNumber,
|
|
22
|
+
normalizePositiveInt,
|
|
23
|
+
normalizePositiveNumber
|
|
24
|
+
} from "./chunk-MS77U77X.js";
|
|
25
|
+
import {
|
|
26
|
+
make
|
|
27
|
+
} from "./chunk-34CF6OGE.js";
|
|
32
28
|
import {
|
|
33
29
|
devtoolsHubLayer,
|
|
34
30
|
layer,
|
|
35
31
|
runtimeLabel
|
|
36
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-4LODUXFI.js";
|
|
37
33
|
import {
|
|
38
34
|
getRuntimeInternals
|
|
39
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-KLDVG3SY.js";
|
|
40
36
|
import {
|
|
41
37
|
ConcurrencyPolicyOverridesTag,
|
|
42
38
|
ConcurrencyPolicyTag,
|
|
43
39
|
StateTransactionConfigTag,
|
|
44
40
|
StateTransactionOverridesTag,
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
enterRuntimeBatch,
|
|
42
|
+
exitRuntimeBatch,
|
|
43
|
+
inSyncTransactionFiber,
|
|
44
|
+
isDevEnv,
|
|
45
|
+
isInSyncTransaction
|
|
46
|
+
} from "./chunk-AQ7L2QZ5.js";
|
|
47
47
|
import {
|
|
48
48
|
runSessionLayer
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-I4LCE5OY.js";
|
|
50
50
|
import {
|
|
51
51
|
EffectOpMiddlewareTag
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-WYJUJV4L.js";
|
|
53
53
|
import {
|
|
54
54
|
__export
|
|
55
55
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -62,6 +62,7 @@ __export(Runtime_exports, {
|
|
|
62
62
|
DisposeTimeoutError: () => DisposeTimeoutError,
|
|
63
63
|
MainError: () => MainError,
|
|
64
64
|
applyTransactionSnapshot: () => applyTransactionSnapshot,
|
|
65
|
+
batch: () => batch,
|
|
65
66
|
concurrencyPolicyOverridesLayer: () => concurrencyPolicyOverridesLayer,
|
|
66
67
|
make: () => make2,
|
|
67
68
|
openProgram: () => openProgram2,
|
|
@@ -744,6 +745,7 @@ var make2 = (root, options) => {
|
|
|
744
745
|
modules: [provide(rootImpl.module, rootImpl.layer)],
|
|
745
746
|
processes: rootImpl.processes ?? [],
|
|
746
747
|
onError: options?.onError,
|
|
748
|
+
hostScheduler: options?.hostScheduler,
|
|
747
749
|
stateTransaction: options?.stateTransaction,
|
|
748
750
|
concurrencyPolicy: options?.concurrencyPolicy,
|
|
749
751
|
readQueryStrictGate
|
|
@@ -751,6 +753,14 @@ var make2 = (root, options) => {
|
|
|
751
753
|
const app = makeApp(appConfig);
|
|
752
754
|
return app.makeRuntime();
|
|
753
755
|
};
|
|
756
|
+
var batch = (fn) => {
|
|
757
|
+
enterRuntimeBatch();
|
|
758
|
+
try {
|
|
759
|
+
return fn();
|
|
760
|
+
} finally {
|
|
761
|
+
exitRuntimeBatch();
|
|
762
|
+
}
|
|
763
|
+
};
|
|
754
764
|
var openProgram2 = (root, options) => openProgram(
|
|
755
765
|
(rootImpl, runtimeOptions) => make2(rootImpl, runtimeOptions),
|
|
756
766
|
resolveRootImpl(root),
|
|
@@ -826,6 +836,7 @@ var applyTransactionSnapshot = (moduleId, instanceId, txnId, mode) => Effect2.ge
|
|
|
826
836
|
|
|
827
837
|
export {
|
|
828
838
|
make2 as make,
|
|
839
|
+
batch,
|
|
829
840
|
openProgram2 as openProgram,
|
|
830
841
|
runProgram2 as runProgram,
|
|
831
842
|
stateTransactionOverridesLayer,
|
|
@@ -835,4 +846,4 @@ export {
|
|
|
835
846
|
applyTransactionSnapshot,
|
|
836
847
|
Runtime_exports
|
|
837
848
|
};
|
|
838
|
-
//# sourceMappingURL=chunk-
|
|
849
|
+
//# sourceMappingURL=chunk-OJDJ4VDQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Runtime.ts","../src/internal/runtime/core/configValidation.ts","../src/internal/runtime/core/runner/ProgramRunner.ts","../src/internal/runtime/core/runner/ProgramRunner.exitCode.ts","../src/internal/runtime/core/runner/ProgramRunner.options.ts"],"sourcesContent":["import { Effect, Layer, ManagedRuntime, Option, Scope } from 'effect'\nimport type { AnyModuleShape, ModuleImpl } from './internal/module.js'\nimport type { AnyModule } from './Module.js'\nimport * as AppRuntimeImpl from './internal/runtime/AppRuntime.js'\nimport * as ModuleRuntime from './internal/runtime/ModuleRuntime.js'\nimport * as Debug from './Debug.js'\nimport type * as EffectOp from './EffectOp.js'\nimport * as EffectOpCore from './internal/runtime/core/EffectOpCore.js'\nimport * as RunSession from './internal/observability/runSession.js'\nimport type { ReadQueryFallbackReason as ReadQueryFallbackReasonCore } from './internal/runtime/core/ReadQuery.js'\nimport {\n ConcurrencyPolicyTag,\n ConcurrencyPolicyOverridesTag,\n type ReadQueryStrictGateRuntimeConfig,\n StateTransactionConfigTag,\n StateTransactionOverridesTag,\n type ConcurrencyPolicy,\n type ConcurrencyPolicyOverrides,\n type ConcurrencyPolicyPatch,\n type StateTransactionOverrides,\n type StateTransactionInstrumentation,\n type StateTransactionTraitConvergeOverrides,\n type TraitConvergeTimeSlicingPatch,\n type TxnLanesPatch,\n} from './internal/runtime/core/env.js'\nimport * as Middleware from './Middleware.js'\nimport { getRuntimeInternals } from './internal/runtime/core/runtimeInternalsAccessor.js'\nimport { enterRuntimeBatch, exitRuntimeBatch } from './internal/runtime/core/TickScheduler.js'\nimport * as ScopeRegistry from './ScopeRegistry.js'\nimport {\n warnInvalidConcurrencyPolicyDevOnly,\n warnInvalidConcurrencyPolicyPatchDevOnly,\n warnInvalidStateTransactionOverridesDevOnly,\n warnInvalidStateTransactionRuntimeConfigDevOnly,\n warnInvalidStateTransactionTraitConvergeOverridesDevOnly,\n} from './internal/runtime/core/configValidation.js'\nimport * as ProgramRunner from './internal/runtime/ProgramRunner.js'\nimport type { ProgramRunContext } from './internal/runtime/ProgramRunner.context.js'\n\nexport type { ProgramRunContext } from './internal/runtime/ProgramRunner.context.js'\nexport {\n BootError,\n DisposeError,\n DisposeTimeoutError,\n MainError,\n type ProgramIdentity,\n type ProgramRunnerErrorTag,\n} from './internal/runtime/ProgramRunner.errors.js'\n\nexport interface OpenProgramOptions extends RuntimeOptions {\n readonly closeScopeTimeout?: number\n readonly handleSignals?: boolean\n}\n\nexport interface RunProgramOptions<Args = unknown> extends OpenProgramOptions {\n readonly args?: Args\n readonly exitCode?: boolean\n readonly reportError?: boolean\n}\n\ntype HostSchedulerCancel = () => void\n\ntype HostScheduler = {\n readonly nowMs: () => number\n readonly scheduleMicrotask: (cb: () => void) => void\n readonly scheduleMacrotask: (cb: () => void) => HostSchedulerCancel\n readonly scheduleAnimationFrame: (cb: () => void) => HostSchedulerCancel\n readonly scheduleTimeout: (ms: number, cb: () => void) => HostSchedulerCancel\n}\n\nconst resolveRootImpl = <Sh extends AnyModuleShape>(\n root: ModuleImpl<any, Sh, any> | AnyModule,\n): ModuleImpl<any, Sh, any> =>\n ((root as any)?._tag === 'ModuleImpl'\n ? (root as ModuleImpl<any, Sh, any>)\n : ((root as any)?.impl as ModuleImpl<any, Sh, any>)) satisfies ModuleImpl<any, Sh, any>\n\n/**\n * Runtime-level StateTransaction defaults.\n *\n * Applied as the `runtime_default` baseline; modules and providers may override.\n */\nexport interface RuntimeStateTransactionOptions {\n readonly instrumentation?: StateTransactionInstrumentation\n readonly traitConvergeBudgetMs?: number\n readonly traitConvergeDecisionBudgetMs?: number\n readonly traitConvergeMode?: 'auto' | 'full' | 'dirty'\n readonly traitConvergeTimeSlicing?: TraitConvergeTimeSlicingPatch\n /** Txn lanes configuration at the `runtime_default` baseline (enabled by default). */\n readonly txnLanes?: TxnLanesPatch\n readonly traitConvergeOverridesByModuleId?: Readonly<Record<string, StateTransactionTraitConvergeOverrides>>\n /** Txn lanes overrides at the `runtime_module` layer. */\n readonly txnLanesOverridesByModuleId?: Readonly<Record<string, TxnLanesPatch>>\n}\n\nexport type ReadQueryFallbackReason = ReadQueryFallbackReasonCore\n\nexport interface RuntimeReadQueryStrictGateOptions {\n /**\n * Strict gate mode for ReadQuery fallbacks.\n *\n * - `off`: disabled (default).\n * - `warn`: allow but emit structured diagnostics.\n * - `error`: fail on forbidden fallbacks (CI/perf gate).\n */\n readonly mode?: 'off' | 'warn' | 'error'\n /**\n * Selectors that must stay on the static lane (keyed by selectorId).\n *\n * When undefined, the implementation decides the gate coverage (typically `all`).\n */\n readonly requireStatic?: {\n readonly selectorIds?: ReadonlyArray<string>\n readonly modules?: ReadonlyArray<string>\n }\n /**\n * Fine-grained kill switch: deny specific fallback reasons (e.g. `unstableSelectorId`).\n */\n readonly denyFallbackReasons?: ReadonlyArray<ReadQueryFallbackReason>\n}\n\nexport interface RuntimeReadQueryOptions {\n readonly strictGate?: RuntimeReadQueryStrictGateOptions\n}\n\nexport interface RuntimeOptions {\n readonly layer?: Layer.Layer<any, never, never>\n readonly onError?: (cause: import('effect').Cause.Cause<unknown>) => Effect.Effect<void>\n /**\n * Optional runtime label (e.g. `AppDemoRuntime`) for Debug / DevTools grouping.\n */\n readonly label?: string\n /**\n * Optional HostScheduler override for this Runtime.\n *\n * Use it when you need deterministic host scheduling (tests) or a custom host integration.\n *\n * NOTE:\n * - TickScheduler captures HostScheduler at Layer build-time (073); overriding HostScheduler via `options.layer`\n * is not sufficient unless the dependent layer is built under that override.\n * - This option avoids the pitfall by injecting HostScheduler into the runtime tick services build pipeline.\n */\n readonly hostScheduler?: HostScheduler\n /**\n * Optional Debug console output configuration.\n *\n * - `true`: enable `Debug.layer()` (auto mode).\n * - `Debug.DebugLayerOptions`: forwarded to `Debug.layer(options)`.\n *\n * Advanced: for full control, omit this option and provide your own Debug layers via `options.layer`.\n */\n readonly debug?: true | Debug.DebugLayerOptions\n readonly middleware?: EffectOp.MiddlewareStack\n /**\n * Enable Devtools (explicit override).\n *\n * - `true`: use default `DevtoolsRuntimeOptions`.\n * - `DevtoolsRuntimeOptions`: customize hub buffer size, DebugObserver filters, etc.\n */\n readonly devtools?: true | DevtoolsRuntimeOptions\n /**\n * Runtime-level StateTransaction defaults.\n *\n * When not provided, modules fall back to NODE_ENV-based defaults; modules may override via\n * `ModuleDef.implement({ stateTransaction })`.\n */\n readonly stateTransaction?: RuntimeStateTransactionOptions\n /**\n * Runtime-level concurrency control plane.\n *\n * Converges unbounded concurrency into bounded (default 16), with module/provider overrides.\n */\n readonly concurrencyPolicy?: ConcurrencyPolicy\n /**\n * ReadQuery governance (e.g. strict gate policies).\n */\n readonly readQuery?: RuntimeReadQueryOptions\n}\n\nexport interface DevtoolsRuntimeOptions {\n /** Hub ring buffer capacity (events). Default: 500. */\n readonly bufferSize?: number\n /**\n * Diagnostics level for exportable Devtools events.\n *\n * Forwarded to `Debug.devtoolsHubLayer({ diagnosticsLevel })`.\n * Default: `\"light\"`.\n */\n readonly diagnosticsLevel?: Debug.DiagnosticsLevel\n /**\n * Trait converge diagnostics sampling config.\n *\n * Forwarded to `Debug.devtoolsHubLayer({ traitConvergeDiagnosticsSampling })`.\n */\n readonly traitConvergeDiagnosticsSampling?: Debug.TraitConvergeDiagnosticsSamplingConfig\n /** DebugObserver config for `trace:effectop`; undefined means full observation. */\n readonly observer?: Middleware.DebugObserverConfig | false\n /** Reserved: React render sampling / throttling config (consumed by `@logixjs/react`). */\n readonly sampling?: {\n readonly reactRenderSampleRate?: number\n }\n}\n\n/**\n * Construct an application runtime from a root module.\n *\n * - Uses the root module + layer as the composition root.\n * - Forks root processes within the runtime Scope.\n * - Exposes a ManagedRuntime; the full Env is provided by `root.layer + options.layer`.\n */\nexport const make = (\n root: ModuleImpl<any, AnyModuleShape, any> | AnyModule,\n options?: RuntimeOptions,\n): ManagedRuntime.ManagedRuntime<any, never> => {\n const rootImpl = resolveRootImpl(root)\n\n warnInvalidConcurrencyPolicyDevOnly(options?.concurrencyPolicy, 'Runtime.make options.concurrencyPolicy')\n warnInvalidStateTransactionRuntimeConfigDevOnly(options?.stateTransaction, 'Runtime.make options.stateTransaction')\n\n const debugLayer =\n options?.debug === true\n ? (Debug.layer() as Layer.Layer<any, never, never>)\n : options?.debug\n ? (Debug.layer(options.debug) as Layer.Layer<any, never, never>)\n : (Layer.empty as Layer.Layer<any, never, never>)\n\n // Base Env: fully defined by caller-provided Layers (e.g. Config / platform services).\n // Debug sinks can be enabled via options.debug, or manually composed via options.layer.\n const userLayer = (options?.layer ?? Layer.empty) as Layer.Layer<any, never, never>\n const userWithDebug = options?.debug ? (Layer.mergeAll(userLayer, debugLayer) as Layer.Layer<any, never, never>) : userLayer\n\n let middlewareStack: EffectOp.MiddlewareStack = options?.middleware ?? []\n\n // When devtools is explicitly enabled:\n // 1) Append DebugObserver (`trace:effectop`).\n // 2) Mount the DevtoolsHub sink in appLayer (process-level event aggregation).\n const devtoolsOptions: DevtoolsRuntimeOptions | undefined = options?.devtools === true ? {} : options?.devtools\n\n if (options?.devtools) {\n const observerConfig = devtoolsOptions?.observer === false ? false : devtoolsOptions?.observer\n middlewareStack = Middleware.withDebug(middlewareStack, {\n logger: false,\n observer: observerConfig,\n })\n }\n\n // Optional: inject the EffectOp MiddlewareStack service for this Runtime,\n // so runtime code (e.g. StateTrait.install) can resolve the unified EffectOp bus configuration from Env.\n const effectOpLayer: Layer.Layer<any, never, never> =\n middlewareStack.length > 0\n ? (Layer.succeed(EffectOpCore.EffectOpMiddlewareTag, {\n stack: middlewareStack,\n }) as Layer.Layer<any, never, never>)\n : (Layer.empty as Layer.Layer<any, never, never>)\n\n const baseLayer =\n options?.label != null\n ? (Layer.mergeAll(Debug.runtimeLabel(options.label), userWithDebug) as Layer.Layer<any, never, never>)\n : userWithDebug\n\n const baseWithDevtools = options?.devtools\n ? (Debug.devtoolsHubLayer(baseLayer, {\n bufferSize: devtoolsOptions?.bufferSize,\n diagnosticsLevel: devtoolsOptions?.diagnosticsLevel,\n traitConvergeDiagnosticsSampling: devtoolsOptions?.traitConvergeDiagnosticsSampling,\n }) as Layer.Layer<any, never, never>)\n : baseLayer\n\n // NOTE: runSession should be overrideable by callers (e.g. CI/trial-run injecting a stable runId).\n // In Layer.mergeAll, later layers override earlier ones; keep the default layer first.\n const appLayer = Layer.mergeAll(\n RunSession.runSessionLayer(),\n ScopeRegistry.layer(),\n baseWithDevtools,\n effectOpLayer,\n ) as Layer.Layer<any, never, never>\n\n const readQueryStrictGate: ReadQueryStrictGateRuntimeConfig | undefined = (() => {\n const strictGate = options?.readQuery?.strictGate\n if (!strictGate) return undefined\n\n const mode = strictGate.mode ?? 'off'\n if (mode === 'off') return undefined\n\n return {\n mode,\n requireStatic: strictGate.requireStatic,\n denyFallbackReasons: strictGate.denyFallbackReasons,\n }\n })()\n\n const appConfig: AppRuntimeImpl.LogixAppConfig<any> = {\n layer: appLayer,\n modules: [AppRuntimeImpl.provide(rootImpl.module, rootImpl.layer as Layer.Layer<any, any, any>)],\n processes: rootImpl.processes ?? [],\n onError: options?.onError,\n hostScheduler: options?.hostScheduler,\n stateTransaction: options?.stateTransaction,\n concurrencyPolicy: options?.concurrencyPolicy,\n readQueryStrictGate,\n }\n\n const app = AppRuntimeImpl.makeApp(appConfig)\n return app.makeRuntime() as ManagedRuntime.ManagedRuntime<any, never>\n}\n\n/**\n * Runtime.batch:\n * - Provides a stronger \"tick boundary\" for RuntimeStore/TickScheduler than the default microtask boundary.\n * - Sync-only: nested batches flatten; only the outermost batch triggers the flush boundary.\n * - NOT a transaction: no rollback; errors may result in partial commits, but the flush boundary is still released in finally.\n *\n * WARNING:\n * - Do not `await` inside the batch callback expecting mid-flush; batch only establishes a synchronous boundary.\n */\nexport const batch = <A>(fn: () => A): A => {\n enterRuntimeBatch()\n try {\n return fn()\n } finally {\n exitRuntimeBatch()\n }\n}\n\n/**\n * Resourceful entry: returns a scope-bound ProgramRunContext (booted and ready).\n */\nexport const openProgram = <Sh extends AnyModuleShape>(\n root: ModuleImpl<any, Sh, any> | AnyModule,\n options?: OpenProgramOptions,\n): Effect.Effect<ProgramRunContext<Sh>, unknown, Scope.Scope> =>\n ProgramRunner.openProgram(\n (rootImpl, runtimeOptions) => make(rootImpl, runtimeOptions as RuntimeOptions),\n resolveRootImpl(root),\n options,\n )\n\n/**\n * One-shot entry: boot → main(ctx,args) → dispose.\n */\nexport const runProgram = async <Sh extends AnyModuleShape, Args, A, E, R>(\n root: ModuleImpl<any, Sh, any> | AnyModule,\n main: (ctx: ProgramRunContext<Sh>, args: Args) => Effect.Effect<A, E, R>,\n options?: RunProgramOptions<Args>,\n): Promise<A> =>\n ProgramRunner.runProgram(\n (rootImpl, runtimeOptions) => make(rootImpl, runtimeOptions as RuntimeOptions),\n resolveRootImpl(root),\n main,\n options,\n )\n\n/**\n * Provider-scoped StateTransactionOverrides layer.\n *\n * Use it to apply local overrides on top of the `runtime_default` baseline.\n */\nexport const stateTransactionOverridesLayer = (\n overrides: StateTransactionOverrides,\n): Layer.Layer<any, never, never> => {\n warnInvalidStateTransactionOverridesDevOnly(overrides, 'Runtime.stateTransactionOverridesLayer')\n return Layer.succeed(StateTransactionOverridesTag, overrides) as Layer.Layer<any, never, never>\n}\n\n/**\n * Provider-scoped ConcurrencyPolicyOverrides layer.\n *\n * Use it to apply local overrides on top of the `runtime_default` baseline.\n */\nexport const concurrencyPolicyOverridesLayer = (\n overrides: ConcurrencyPolicyOverrides,\n): Layer.Layer<any, never, never> => {\n warnInvalidConcurrencyPolicyDevOnly(overrides, 'Runtime.concurrencyPolicyOverridesLayer')\n return Layer.succeed(ConcurrencyPolicyOverridesTag, overrides) as Layer.Layer<any, never, never>\n}\n\n/**\n * Hot-switch Trait converge overrides for a moduleId.\n *\n * This mutates the `runtime_module` patch map only; provider overrides still take precedence.\n */\nexport const setTraitConvergeOverride = (\n runtime: ManagedRuntime.ManagedRuntime<any, never>,\n moduleId: string,\n overrides: StateTransactionTraitConvergeOverrides | undefined,\n): void => {\n warnInvalidStateTransactionTraitConvergeOverridesDevOnly(overrides, `Runtime.setTraitConvergeOverride(${moduleId})`)\n\n runtime.runSync(\n Effect.gen(function* () {\n const runtimeConfigOpt = yield* Effect.serviceOption(StateTransactionConfigTag)\n\n if (Option.isNone(runtimeConfigOpt)) {\n return\n }\n\n // NOTE: runtime config lives in Env as a Service; hot-switch by replacing the per-module patch map.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const runtimeConfig: any = runtimeConfigOpt.value\n const next = {\n ...(runtimeConfig.traitConvergeOverridesByModuleId ?? {}),\n }\n\n if (overrides) {\n next[moduleId] = overrides\n } else {\n delete next[moduleId]\n }\n\n runtimeConfig.traitConvergeOverridesByModuleId = next\n }),\n )\n}\n\n/**\n * Hot-switch ConcurrencyPolicy patch for a moduleId.\n *\n * This mutates the `runtime_module` patch map only; provider overrides still take precedence.\n */\nexport const setConcurrencyPolicyOverride = (\n runtime: ManagedRuntime.ManagedRuntime<any, never>,\n moduleId: string,\n patch: ConcurrencyPolicyPatch | undefined,\n): void => {\n warnInvalidConcurrencyPolicyPatchDevOnly(patch, `Runtime.setConcurrencyPolicyOverride(${moduleId})`)\n\n runtime.runSync(\n Effect.gen(function* () {\n const runtimeConfigOpt = yield* Effect.serviceOption(ConcurrencyPolicyTag)\n\n if (Option.isNone(runtimeConfigOpt)) {\n return\n }\n\n // NOTE: runtime config lives in Env as a Service; hot-switch by replacing the per-module patch map.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const runtimeConfig: any = runtimeConfigOpt.value\n const next = {\n ...(runtimeConfig.overridesByModuleId ?? {}),\n }\n\n if (patch) {\n next[moduleId] = patch\n } else {\n delete next[moduleId]\n }\n\n runtimeConfig.overridesByModuleId = next\n }),\n )\n}\n\n/**\n * Apply a transaction snapshot for time-travel replay (dev/test).\n *\n * - `moduleId` / `instanceId` match Debug events.\n * - `mode`: `before` replays pre-transaction; `after` replays post-commit.\n *\n * No-op if the runtime/instance cannot be resolved.\n */\nexport const applyTransactionSnapshot = (\n moduleId: string,\n instanceId: string,\n txnId: string,\n mode: 'before' | 'after',\n): Effect.Effect<void, never, any> =>\n Effect.gen(function* () {\n const runtime = ModuleRuntime.getRuntimeByModuleAndInstance<any, any>(moduleId, instanceId)\n\n if (!runtime) {\n return\n }\n\n try {\n yield* getRuntimeInternals(runtime as any).txn.applyTransactionSnapshot(txnId, mode)\n } catch {\n return\n }\n })\n","import { Schema } from 'effect'\nimport { isDevEnv } from './env.js'\nimport {\n normalizeBoolean,\n normalizeNonNegativeNumber,\n normalizePositiveInt,\n normalizePositiveNumber,\n} from './normalize.js'\n\nconst PositiveIntSchema = Schema.Int.pipe(Schema.positive())\nconst PositiveNumberSchema = Schema.Number.pipe(Schema.positive())\nconst ConvergeModeSchema = Schema.Union(Schema.Literal('auto'), Schema.Literal('full'), Schema.Literal('dirty'))\nconst InstrumentationSchema = Schema.Union(Schema.Literal('full'), Schema.Literal('light'))\nconst ConcurrencyLimitSchema = Schema.Union(Schema.Literal('unbounded'), PositiveIntSchema)\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst warnDevOnly = (label: string, issues: ReadonlyArray<string>): void => {\n if (!isDevEnv()) return\n if (issues.length === 0) return\n // eslint-disable-next-line no-console\n console.warn(\n ['[Logix] Invalid runtime config detected.', `context: ${label}`, 'issues:']\n .concat(issues.map((i) => `- ${i}`))\n .join('\\n'),\n )\n}\n\nconst collectUnknownKeys = (\n obj: Record<string, unknown>,\n allowed: ReadonlySet<string>,\n prefix: string,\n): ReadonlyArray<string> => {\n const issues: string[] = []\n for (const key of Object.keys(obj)) {\n if (!allowed.has(key)) {\n issues.push(`${prefix}${key}: unknown key`)\n }\n }\n return issues\n}\n\nconst validateConcurrencyPolicyPatch = (obj: Record<string, unknown>, prefix: string): ReadonlyArray<string> => {\n const issues: string[] = []\n\n if ('concurrencyLimit' in obj && obj.concurrencyLimit != null) {\n if (!Schema.is(ConcurrencyLimitSchema)(obj.concurrencyLimit)) {\n issues.push(`${prefix}concurrencyLimit: expected positive int | \"unbounded\"`)\n }\n }\n\n if ('losslessBackpressureCapacity' in obj && obj.losslessBackpressureCapacity != null) {\n if (normalizePositiveInt(obj.losslessBackpressureCapacity) == null) {\n issues.push(`${prefix}losslessBackpressureCapacity: expected positive int`)\n }\n }\n\n if ('allowUnbounded' in obj && obj.allowUnbounded != null) {\n if (normalizeBoolean(obj.allowUnbounded) == null) {\n issues.push(`${prefix}allowUnbounded: expected boolean`)\n }\n }\n\n if ('pressureWarningThreshold' in obj && obj.pressureWarningThreshold != null) {\n const threshold = obj.pressureWarningThreshold\n if (!isRecord(threshold)) {\n issues.push(`${prefix}pressureWarningThreshold: expected object`)\n } else {\n const backlogCount = threshold['backlogCount']\n if (backlogCount != null) {\n if (normalizePositiveInt(backlogCount) == null) {\n issues.push(`${prefix}pressureWarningThreshold.backlogCount: expected positive int`)\n }\n }\n const backlogDurationMs = threshold['backlogDurationMs']\n if (backlogDurationMs != null) {\n if (normalizePositiveNumber(backlogDurationMs) == null) {\n issues.push(`${prefix}pressureWarningThreshold.backlogDurationMs: expected positive number`)\n }\n }\n }\n }\n\n if ('warningCooldownMs' in obj && obj.warningCooldownMs != null) {\n if (normalizePositiveNumber(obj.warningCooldownMs) == null) {\n issues.push(`${prefix}warningCooldownMs: expected positive number`)\n }\n }\n\n return issues\n}\n\nexport const warnInvalidConcurrencyPolicyDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const policy = value\n const issues: string[] = []\n\n issues.push(\n ...collectUnknownKeys(\n policy,\n new Set([\n 'concurrencyLimit',\n 'losslessBackpressureCapacity',\n 'allowUnbounded',\n 'pressureWarningThreshold',\n 'warningCooldownMs',\n 'overridesByModuleId',\n ]),\n '',\n ),\n )\n\n issues.push(...validateConcurrencyPolicyPatch(policy, ''))\n\n const overridesByModuleId = policy.overridesByModuleId\n if (overridesByModuleId != null) {\n if (!isRecord(overridesByModuleId)) {\n issues.push(`overridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(overridesByModuleId)) {\n const prefix = `overridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set([\n 'concurrencyLimit',\n 'losslessBackpressureCapacity',\n 'allowUnbounded',\n 'pressureWarningThreshold',\n 'warningCooldownMs',\n ]),\n prefix,\n ),\n )\n issues.push(...validateConcurrencyPolicyPatch(patch, prefix))\n }\n }\n }\n\n warnDevOnly(label, issues)\n}\n\nexport const warnInvalidConcurrencyPolicyPatchDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const issues: string[] = []\n issues.push(\n ...collectUnknownKeys(\n value,\n new Set([\n 'concurrencyLimit',\n 'losslessBackpressureCapacity',\n 'allowUnbounded',\n 'pressureWarningThreshold',\n 'warningCooldownMs',\n ]),\n '',\n ),\n )\n issues.push(...validateConcurrencyPolicyPatch(value, ''))\n\n warnDevOnly(label, issues)\n}\n\nconst validateStateTransactionTraitOverrides = (\n obj: Record<string, unknown>,\n prefix: string,\n): ReadonlyArray<string> => {\n const issues: string[] = []\n\n if ('traitConvergeMode' in obj && obj.traitConvergeMode != null) {\n if (!Schema.is(ConvergeModeSchema)(obj.traitConvergeMode)) {\n issues.push(`${prefix}traitConvergeMode: expected \"auto\" | \"full\" | \"dirty\"`)\n }\n }\n if ('traitConvergeBudgetMs' in obj && obj.traitConvergeBudgetMs != null) {\n if (normalizePositiveNumber(obj.traitConvergeBudgetMs) == null) {\n issues.push(`${prefix}traitConvergeBudgetMs: expected positive number`)\n }\n }\n if ('traitConvergeDecisionBudgetMs' in obj && obj.traitConvergeDecisionBudgetMs != null) {\n if (normalizePositiveNumber(obj.traitConvergeDecisionBudgetMs) == null) {\n issues.push(`${prefix}traitConvergeDecisionBudgetMs: expected positive number`)\n }\n }\n if ('traitConvergeTimeSlicing' in obj && obj.traitConvergeTimeSlicing != null) {\n const timeSlicing = obj.traitConvergeTimeSlicing\n if (!isRecord(timeSlicing)) {\n issues.push(`${prefix}traitConvergeTimeSlicing: expected object`)\n } else {\n const tsPrefix = `${prefix}traitConvergeTimeSlicing.`\n issues.push(...collectUnknownKeys(timeSlicing, new Set(['enabled', 'debounceMs', 'maxLagMs']), tsPrefix))\n\n if ('enabled' in timeSlicing && timeSlicing.enabled != null) {\n if (typeof timeSlicing.enabled !== 'boolean') {\n issues.push(`${tsPrefix}enabled: expected boolean`)\n }\n }\n if ('debounceMs' in timeSlicing && timeSlicing.debounceMs != null) {\n if (normalizePositiveNumber(timeSlicing.debounceMs) == null) {\n issues.push(`${tsPrefix}debounceMs: expected positive number`)\n }\n }\n if ('maxLagMs' in timeSlicing && timeSlicing.maxLagMs != null) {\n if (normalizePositiveNumber(timeSlicing.maxLagMs) == null) {\n issues.push(`${tsPrefix}maxLagMs: expected positive number`)\n }\n }\n }\n }\n\n return issues\n}\n\nconst validateTxnLanesPatch = (obj: Record<string, unknown>, prefix: string): ReadonlyArray<string> => {\n const issues: string[] = []\n\n if ('enabled' in obj && obj.enabled != null) {\n if (normalizeBoolean(obj.enabled) == null) {\n issues.push(`${prefix}enabled: expected boolean`)\n }\n }\n\n if ('overrideMode' in obj && obj.overrideMode != null) {\n const raw = obj.overrideMode\n if (typeof raw !== 'string' || (raw !== 'forced_off' && raw !== 'forced_sync')) {\n issues.push(`${prefix}overrideMode: expected \"forced_off\" | \"forced_sync\"`)\n }\n }\n\n if ('budgetMs' in obj && obj.budgetMs != null) {\n if (normalizeNonNegativeNumber(obj.budgetMs) == null) {\n issues.push(`${prefix}budgetMs: expected non-negative number`)\n }\n }\n\n if ('debounceMs' in obj && obj.debounceMs != null) {\n if (normalizeNonNegativeNumber(obj.debounceMs) == null) {\n issues.push(`${prefix}debounceMs: expected non-negative number`)\n }\n }\n\n if ('maxLagMs' in obj && obj.maxLagMs != null) {\n if (normalizeNonNegativeNumber(obj.maxLagMs) == null) {\n issues.push(`${prefix}maxLagMs: expected non-negative number`)\n }\n }\n\n if ('allowCoalesce' in obj && obj.allowCoalesce != null) {\n if (normalizeBoolean(obj.allowCoalesce) == null) {\n issues.push(`${prefix}allowCoalesce: expected boolean`)\n }\n }\n\n if ('yieldStrategy' in obj && obj.yieldStrategy != null) {\n const raw = obj.yieldStrategy\n if (typeof raw !== 'string' || (raw !== 'baseline' && raw !== 'inputPending')) {\n issues.push(`${prefix}yieldStrategy: expected \"baseline\" | \"inputPending\"`)\n }\n }\n\n return issues\n}\n\nexport const warnInvalidStateTransactionTraitConvergeOverridesDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const issues: string[] = []\n issues.push(\n ...collectUnknownKeys(\n value,\n new Set([\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeMode',\n 'traitConvergeTimeSlicing',\n ]),\n '',\n ),\n )\n issues.push(...validateStateTransactionTraitOverrides(value, ''))\n\n warnDevOnly(label, issues)\n}\n\nexport const warnInvalidStateTransactionRuntimeConfigDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const issues: string[] = []\n issues.push(\n ...collectUnknownKeys(\n value,\n new Set([\n 'instrumentation',\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeMode',\n 'traitConvergeTimeSlicing',\n 'traitConvergeOverridesByModuleId',\n 'txnLanes',\n 'txnLanesOverridesByModuleId',\n ]),\n '',\n ),\n )\n\n if ('instrumentation' in value && value.instrumentation != null) {\n if (!Schema.is(InstrumentationSchema)(value.instrumentation)) {\n issues.push(`instrumentation: expected \"full\" | \"light\"`)\n }\n }\n\n issues.push(...validateStateTransactionTraitOverrides(value, ''))\n\n const txnLanes = (value as any).txnLanes\n if (txnLanes != null) {\n if (!isRecord(txnLanes)) {\n issues.push(`txnLanes: expected object`)\n } else {\n const prefix = 'txnLanes.'\n issues.push(\n ...collectUnknownKeys(\n txnLanes,\n new Set(['enabled', 'overrideMode', 'budgetMs', 'debounceMs', 'maxLagMs', 'allowCoalesce', 'yieldStrategy']),\n prefix,\n ),\n )\n issues.push(...validateTxnLanesPatch(txnLanes, prefix))\n }\n }\n\n const overridesByModuleId = value.traitConvergeOverridesByModuleId\n if (overridesByModuleId != null) {\n if (!isRecord(overridesByModuleId)) {\n issues.push(`traitConvergeOverridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(overridesByModuleId)) {\n const prefix = `traitConvergeOverridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set([\n 'traitConvergeMode',\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeTimeSlicing',\n ]),\n prefix,\n ),\n )\n issues.push(...validateStateTransactionTraitOverrides(patch, prefix))\n }\n }\n }\n\n const lanesOverridesByModuleId = (value as any).txnLanesOverridesByModuleId\n if (lanesOverridesByModuleId != null) {\n if (!isRecord(lanesOverridesByModuleId)) {\n issues.push(`txnLanesOverridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(lanesOverridesByModuleId)) {\n const prefix = `txnLanesOverridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set([\n 'enabled',\n 'overrideMode',\n 'budgetMs',\n 'debounceMs',\n 'maxLagMs',\n 'allowCoalesce',\n 'yieldStrategy',\n ]),\n prefix,\n ),\n )\n issues.push(...validateTxnLanesPatch(patch, prefix))\n }\n }\n }\n\n warnDevOnly(label, issues)\n}\n\nexport const warnInvalidStateTransactionOverridesDevOnly = (value: unknown, label: string): void => {\n if (!isDevEnv()) return\n if (value == null) return\n if (!isRecord(value)) {\n warnDevOnly(label, ['expected object'])\n return\n }\n\n const issues: string[] = []\n issues.push(\n ...collectUnknownKeys(\n value,\n new Set([\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeMode',\n 'traitConvergeTimeSlicing',\n 'traitConvergeOverridesByModuleId',\n 'txnLanes',\n 'txnLanesOverridesByModuleId',\n ]),\n '',\n ),\n )\n\n issues.push(...validateStateTransactionTraitOverrides(value, ''))\n\n const txnLanes = (value as any).txnLanes\n if (txnLanes != null) {\n if (!isRecord(txnLanes)) {\n issues.push(`txnLanes: expected object`)\n } else {\n const prefix = 'txnLanes.'\n issues.push(\n ...collectUnknownKeys(\n txnLanes,\n new Set(['enabled', 'overrideMode', 'budgetMs', 'debounceMs', 'maxLagMs', 'allowCoalesce']),\n prefix,\n ),\n )\n issues.push(...validateTxnLanesPatch(txnLanes, prefix))\n }\n }\n\n const overridesByModuleId = value.traitConvergeOverridesByModuleId\n if (overridesByModuleId != null) {\n if (!isRecord(overridesByModuleId)) {\n issues.push(`traitConvergeOverridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(overridesByModuleId)) {\n const prefix = `traitConvergeOverridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set([\n 'traitConvergeMode',\n 'traitConvergeBudgetMs',\n 'traitConvergeDecisionBudgetMs',\n 'traitConvergeTimeSlicing',\n ]),\n prefix,\n ),\n )\n issues.push(...validateStateTransactionTraitOverrides(patch, prefix))\n }\n }\n }\n\n const lanesOverridesByModuleId = (value as any).txnLanesOverridesByModuleId\n if (lanesOverridesByModuleId != null) {\n if (!isRecord(lanesOverridesByModuleId)) {\n issues.push(`txnLanesOverridesByModuleId: expected record`)\n } else {\n for (const [moduleId, patch] of Object.entries(lanesOverridesByModuleId)) {\n const prefix = `txnLanesOverridesByModuleId.${moduleId}.`\n if (patch == null) continue\n if (!isRecord(patch)) {\n issues.push(`${prefix}<value>: expected object`)\n continue\n }\n issues.push(\n ...collectUnknownKeys(\n patch,\n new Set(['enabled', 'overrideMode', 'budgetMs', 'debounceMs', 'maxLagMs', 'allowCoalesce']),\n prefix,\n ),\n )\n issues.push(...validateTxnLanesPatch(patch, prefix))\n }\n }\n }\n\n warnDevOnly(label, issues)\n}\n","import { Cause, Effect, FiberRef, Option, Scope } from 'effect'\nimport type { ManagedRuntime } from 'effect'\nimport type { AnyModuleShape, ModuleImpl } from '../module.js'\nimport { make as makeBoundApi } from '../BoundApiRuntime.js'\nimport * as TaskRunner from '../TaskRunner.js'\nimport { closeProgramScope } from './ProgramRunner.closeScope.js'\nimport { BootError, MainError, type ProgramIdentity } from './ProgramRunner.errors.js'\nimport { reportErrorIfEnabled, setExitCodeIfEnabled, setFailureExitCodeIfEnabled } from './ProgramRunner.exitCode.js'\nimport { installGracefulShutdownHandlers } from './ProgramRunner.signals.js'\nimport type { ProgramRunContext } from './ProgramRunner.context.js'\nimport { makeProgramRunnerKernel } from './ProgramRunner.kernel.js'\nimport { resolveProgramRunnerOptions } from './ProgramRunner.options.js'\n\nexport type RuntimeFactory = (\n rootImpl: ModuleImpl<any, AnyModuleShape, any>,\n options?: unknown,\n) => ManagedRuntime.ManagedRuntime<any, never>\n\nexport const openProgram = <Sh extends AnyModuleShape>(\n makeRuntime: RuntimeFactory,\n rootImpl: ModuleImpl<any, Sh, any>,\n options?: unknown,\n): Effect.Effect<ProgramRunContext<Sh>, unknown, Scope.Scope> =>\n Effect.gen(function* () {\n const inTxn = yield* FiberRef.get(TaskRunner.inSyncTransactionFiber)\n if (inTxn) {\n return yield* Effect.dieMessage(\n '[Logix] Runtime.openProgram/runProgram is not allowed inside a synchronous StateTransaction body',\n )\n }\n\n const runnerOptions = resolveProgramRunnerOptions(options)\n const kernel = yield* makeProgramRunnerKernel(makeRuntime, rootImpl, options)\n\n // Bind ctx.scope disposal to the outer scope (openProgram is scope-bound).\n yield* Effect.addFinalizer(() =>\n kernel.close({\n timeoutMs: runnerOptions.closeScopeTimeout,\n onError: (options as any)?.onError,\n }),\n )\n\n // Node-only: signals trigger graceful shutdown (closing ctx.scope).\n yield* kernel.installSignals(runnerOptions.handleSignals)\n\n // boot: touch the program module tag to ensure instantiation and logics/processes start.\n const moduleRuntime = yield* Effect.tryPromise({\n try: () => kernel.runtime.runPromise(rootImpl.module as any),\n catch: (error) => new BootError(kernel.identity, error),\n })\n\n kernel.setInstanceId((moduleRuntime as any).instanceId)\n return kernel.toContext(moduleRuntime)\n })\n\nexport const runProgram = async <Sh extends AnyModuleShape, Args, A, E, R>(\n makeRuntime: RuntimeFactory,\n rootImpl: ModuleImpl<any, Sh, any>,\n main: (ctx: ProgramRunContext<Sh>, args: Args) => Effect.Effect<A, E, R>,\n options?: unknown,\n): Promise<A> => {\n if (TaskRunner.isInSyncTransaction()) {\n throw new Error('[Logix] Runtime.openProgram/runProgram is not allowed inside a synchronous StateTransaction body')\n }\n\n const runnerOptions = resolveProgramRunnerOptions<Args>(options)\n const identity: ProgramIdentity = {\n moduleId: String(rootImpl.module.id),\n instanceId: 'unknown',\n }\n\n const scope = Effect.runSync(Scope.make())\n const runtime = makeRuntime(rootImpl as unknown as ModuleImpl<any, AnyModuleShape, any>, options)\n\n let ctx:\n | (ProgramRunContext<Sh> & {\n readonly module: { readonly instanceId: string }\n })\n | undefined\n let mainError: unknown | undefined\n let closeError: unknown | undefined\n let result:\n | { readonly _tag: 'success'; readonly value: A }\n | { readonly _tag: 'failure'; readonly error: unknown }\n | undefined\n\n try {\n // Runtime resource disposal: bind runtime.dispose to ctx.scope.\n Effect.runSync(Scope.addFinalizer(scope, Effect.promise(() => runtime.dispose()).pipe(Effect.asVoid)))\n\n // Node-only: signals trigger graceful shutdown (closing ctx.scope).\n if (runnerOptions.handleSignals) {\n Effect.runSync(\n installGracefulShutdownHandlers({\n scope,\n enabled: true,\n }),\n )\n }\n\n // boot: touch the program module tag to ensure instantiation and logics/processes start.\n let moduleRuntime: any\n try {\n moduleRuntime = await runtime.runPromise(rootImpl.module as any)\n } catch (error) {\n setFailureExitCodeIfEnabled(runnerOptions.exitCode)\n reportErrorIfEnabled(runnerOptions.exitCode && runnerOptions.reportError, error)\n result = {\n _tag: 'failure',\n error: new BootError(identity, error),\n }\n }\n\n if (result?._tag !== 'failure') {\n identity.instanceId = String(moduleRuntime.instanceId ?? 'unknown')\n\n ctx = {\n scope,\n runtime,\n module: moduleRuntime,\n $: makeBoundApi(rootImpl.module.shape as any, moduleRuntime as any) as any,\n } satisfies ProgramRunContext<Sh> as any\n }\n\n if (ctx) {\n try {\n const value = (await ctx.runtime.runPromise(main(ctx, runnerOptions.args as Args) as any)) as A\n setExitCodeIfEnabled(runnerOptions.exitCode, value)\n result = { _tag: 'success', value }\n } catch (error) {\n mainError = error\n setFailureExitCodeIfEnabled(runnerOptions.exitCode)\n reportErrorIfEnabled(runnerOptions.exitCode && runnerOptions.reportError, error)\n result = { _tag: 'failure', error: new MainError(identity, error) }\n }\n }\n } finally {\n const exit = await Effect.runPromiseExit(\n closeProgramScope({\n scope,\n timeoutMs: runnerOptions.closeScopeTimeout,\n identity,\n onError: (options as any)?.onError,\n }),\n )\n\n if (exit._tag === 'Failure') {\n const failureOpt = Cause.failureOption(exit.cause)\n if (Option.isSome(failureOpt)) {\n const error: any = failureOpt.value\n if (mainError !== undefined && error && typeof error === 'object') {\n error.mainError = mainError\n }\n closeError = error\n } else {\n const defectOpt = Cause.dieOption(exit.cause)\n if (Option.isSome(defectOpt) && defectOpt.value instanceof Error) {\n const error: any = defectOpt.value\n if (mainError !== undefined && error && typeof error === 'object') {\n error.mainError = mainError\n }\n closeError = error\n } else {\n closeError = new Error(String(exit.cause))\n }\n }\n }\n }\n\n if (closeError !== undefined) {\n setFailureExitCodeIfEnabled(runnerOptions.exitCode)\n reportErrorIfEnabled(runnerOptions.exitCode && runnerOptions.reportError, closeError)\n throw closeError\n }\n\n if (!result) {\n setFailureExitCodeIfEnabled(runnerOptions.exitCode)\n throw new Error('[Logix] ProgramRunner.runProgram: missing result')\n }\n\n if (result._tag === 'failure') {\n throw result.error\n }\n\n return result.value\n}\n","const isRecord = (value: unknown): value is Record<string, unknown> => typeof value === 'object' && value !== null\n\nconst getProcess = (): any => (globalThis as any).process\n\nexport const setExitCodeIfEnabled = (enabled: boolean, value: unknown): void => {\n if (!enabled) return\n\n const proc = getProcess()\n if (!isRecord(proc)) return\n\n const next = typeof value === 'number' && Number.isInteger(value) ? value : 0\n\n proc.exitCode = next\n}\n\nexport const setFailureExitCodeIfEnabled = (enabled: boolean): void => {\n if (!enabled) return\n\n const proc = getProcess()\n if (!isRecord(proc)) return\n\n proc.exitCode = 1\n}\n\nexport const reportErrorIfEnabled = (enabled: boolean, error: unknown): void => {\n if (!enabled) return\n\n // eslint-disable-next-line no-console\n console.error(error)\n}\n","export interface ProgramRunnerOptions<Args = unknown> {\n readonly closeScopeTimeout: number\n readonly handleSignals: boolean\n readonly args: Args | undefined\n readonly exitCode: boolean\n readonly reportError: boolean\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => typeof value === 'object' && value !== null\n\nexport const resolveProgramRunnerOptions = <Args = unknown>(options: unknown): ProgramRunnerOptions<Args> => {\n const record = isRecord(options) ? options : undefined\n\n const closeScopeTimeout = typeof record?.closeScopeTimeout === 'number' ? record.closeScopeTimeout : 1000\n\n const handleSignals = typeof record?.handleSignals === 'boolean' ? record.handleSignals : true\n\n const exitCode = typeof record?.exitCode === 'boolean' ? record.exitCode : false\n\n const reportError = typeof record?.reportError === 'boolean' ? record.reportError : true\n\n const args = (record?.args as Args | undefined) ?? undefined\n\n return {\n closeScopeTimeout,\n handleSignals,\n args,\n exitCode,\n reportError,\n }\n}\n"],"mappings":"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","names":["make","openProgram","runProgram","Effect","Option","isRecord","isRecord","make","layer","openProgram","runProgram","Effect","Option"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isReadQuery
|
|
3
|
-
} from "./chunk-CW6T36TN.js";
|
|
4
|
-
import {
|
|
5
|
-
record
|
|
6
|
-
} from "./chunk-DMBALCE2.js";
|
|
7
1
|
import {
|
|
8
2
|
RunSessionTag,
|
|
9
3
|
make,
|
|
10
4
|
run
|
|
11
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-I4LCE5OY.js";
|
|
6
|
+
import {
|
|
7
|
+
record
|
|
8
|
+
} from "./chunk-ZC7MSQ5U.js";
|
|
12
9
|
import {
|
|
13
10
|
EffectOpMiddlewareTag
|
|
14
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-WYJUJV4L.js";
|
|
12
|
+
import {
|
|
13
|
+
isReadQuery
|
|
14
|
+
} from "./chunk-M3M7JFAH.js";
|
|
15
15
|
|
|
16
16
|
// src/internal/runtime/core/FlowRuntime.ts
|
|
17
17
|
import { Effect, Stream, Ref, Option } from "effect";
|
|
@@ -148,4 +148,4 @@ var make2 = (runtime, runtimeInternals) => {
|
|
|
148
148
|
export {
|
|
149
149
|
make2 as make
|
|
150
150
|
};
|
|
151
|
-
//# sourceMappingURL=chunk-
|
|
151
|
+
//# sourceMappingURL=chunk-PVZEMNJY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/runtime/core/FlowRuntime.ts"],"sourcesContent":["import { Effect, Stream, Ref, Option } from 'effect'\nimport type { AnyModuleShape, LogicEffect, ModuleRuntime, StateOf, ActionOf, ModuleShape } from './module.js'\nimport type * as Logic from './LogicMiddleware.js'\nimport * as EffectOp from '../../effect-op.js'\nimport * as EffectOpCore from './EffectOpCore.js'\nimport { RunSessionTag } from '../../observability/runSession.js'\nimport type { RuntimeInternals } from './RuntimeInternals.js'\nimport * as Debug from './DebugSink.js'\nimport * as ReadQuery from './ReadQuery.js'\n\nconst getMiddlewareStack = (): Effect.Effect<EffectOp.MiddlewareStack, never, any> =>\n Effect.serviceOption(EffectOpCore.EffectOpMiddlewareTag).pipe(\n Effect.map((maybe) => (Option.isSome(maybe) ? maybe.value.stack : [])),\n )\n\nconst getRuntimeScope = (runtime: unknown): { readonly moduleId?: string; readonly instanceId?: string } => {\n if (!runtime) return {}\n if (typeof runtime !== 'object' && typeof runtime !== 'function') return {}\n const scope = runtime as { readonly moduleId?: unknown; readonly instanceId?: unknown }\n return {\n moduleId: typeof scope.moduleId === 'string' ? scope.moduleId : undefined,\n instanceId: typeof scope.instanceId === 'string' ? scope.instanceId : undefined,\n }\n}\n\nexport interface Api<Sh extends ModuleShape<any, any>, R = never> {\n readonly fromAction: <T extends ActionOf<Sh>>(predicate: (a: ActionOf<Sh>) => a is T) => Stream.Stream<T>\n\n readonly fromState: {\n <V>(selector: (s: StateOf<Sh>) => V): Stream.Stream<V>\n <V>(query: ReadQuery.ReadQuery<StateOf<Sh>, V>): Stream.Stream<V>\n }\n\n readonly debounce: <V>(ms: number) => (stream: Stream.Stream<V>) => Stream.Stream<V>\n\n readonly throttle: <V>(ms: number) => (stream: Stream.Stream<V>) => Stream.Stream<V>\n\n readonly filter: <V>(predicate: (value: V) => boolean) => (stream: Stream.Stream<V>) => Stream.Stream<V>\n\n readonly run: <V, A = void, E = never, R2 = unknown>(\n eff: LogicEffect<Sh, R & R2, A, E> | ((payload: V) => LogicEffect<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) => (stream: Stream.Stream<V>) => LogicEffect<Sh, R & R2, void, E>\n\n readonly runParallel: <V, A = void, E = never, R2 = unknown>(\n eff: LogicEffect<Sh, R & R2, A, E> | ((payload: V) => LogicEffect<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) => (stream: Stream.Stream<V>) => LogicEffect<Sh, R & R2, void, E>\n\n readonly runLatest: <V, A = void, E = never, R2 = unknown>(\n eff: LogicEffect<Sh, R & R2, A, E> | ((payload: V) => LogicEffect<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) => (stream: Stream.Stream<V>) => LogicEffect<Sh, R & R2, void, E>\n\n readonly runExhaust: <V, A = void, E = never, R2 = unknown>(\n eff: LogicEffect<Sh, R & R2, A, E> | ((payload: V) => LogicEffect<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) => (stream: Stream.Stream<V>) => LogicEffect<Sh, R & R2, void, E>\n}\n\nconst resolveEffect = <T, Sh extends AnyModuleShape, R, A, E>(\n eff: LogicEffect<Sh, R, A, E> | ((payload: T) => LogicEffect<Sh, R, A, E>),\n payload: T,\n): LogicEffect<Sh, R, A, E> =>\n typeof eff === 'function' ? (eff as (p: T) => LogicEffect<Sh, R, A, E>)(payload) : eff\n\nexport const make = <Sh extends AnyModuleShape, R = never>(\n runtime: ModuleRuntime<StateOf<Sh>, ActionOf<Sh>>,\n runtimeInternals?: RuntimeInternals,\n): Api<Sh, R> => {\n const scope = getRuntimeScope(runtime)\n const resolveConcurrencyLimit = (): Effect.Effect<number | 'unbounded', never, any> =>\n runtimeInternals\n ? runtimeInternals.concurrency.resolveConcurrencyPolicy().pipe(Effect.map((p) => p.concurrencyLimit))\n : Effect.succeed(16)\n\n const runAsFlowOp = <A, E, R2, V>(\n name: string,\n payload: V,\n eff: LogicEffect<Sh, R & R2, A, E>,\n options?: Logic.OperationOptions,\n ): LogicEffect<Sh, R & R2, A, E> =>\n Effect.gen(function* () {\n const stack = yield* getMiddlewareStack()\n const meta: any = {\n ...(options?.meta ?? {}),\n policy: options?.policy,\n tags: options?.tags,\n trace: options?.trace,\n moduleId: scope.moduleId,\n instanceId: scope.instanceId,\n }\n\n if (!(typeof meta.opSeq === 'number' && Number.isFinite(meta.opSeq))) {\n const sessionOpt = yield* Effect.serviceOption(RunSessionTag)\n if (Option.isSome(sessionOpt)) {\n const key = meta.instanceId ?? 'global'\n meta.opSeq = sessionOpt.value.local.nextSeq('opSeq', key)\n }\n }\n\n const op = EffectOp.make<A, E, any>({\n kind: 'flow',\n name,\n payload,\n effect: eff as any,\n meta,\n })\n return yield* EffectOp.run(op, stack)\n }) as any\n\n const runEffect =\n <T, A, E, R2>(\n eff: LogicEffect<Sh, R & R2, A, E> | ((payload: T) => LogicEffect<Sh, R & R2, A, E>),\n ) =>\n (payload: T) =>\n resolveEffect<T, Sh, R & R2, A, E>(eff, payload)\n\n const runStreamSequential =\n <T, A, E, R2>(\n eff: LogicEffect<Sh, R & R2, A, E> | ((payload: T) => LogicEffect<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) =>\n (stream: Stream.Stream<T>): LogicEffect<Sh, R & R2, void, E> =>\n Stream.runForEach(stream, (payload) =>\n runAsFlowOp<A, E, R2, T>('flow.run', payload, runEffect<T, A, E, R2>(eff)(payload), options),\n )\n\n const runStreamParallel =\n <T, A, E, R2>(\n eff: LogicEffect<Sh, R & R2, A, E> | ((payload: T) => LogicEffect<Sh, R & R2, A, E>),\n options?: Logic.OperationOptions,\n ) =>\n (stream: Stream.Stream<T>): LogicEffect<Sh, R & R2, void, E> =>\n Effect.gen(function* () {\n const concurrency = yield* resolveConcurrencyLimit()\n\n return yield* Stream.runDrain(\n stream.pipe(\n Stream.mapEffect(\n (payload) =>\n runAsFlowOp<A, E, R2, T>('flow.runParallel', payload, runEffect<T, A, E, R2>(eff)(payload), options),\n { concurrency },\n ),\n ),\n ).pipe(\n Effect.catchAllCause((cause) =>\n Debug.record({\n type: 'diagnostic',\n moduleId: scope.moduleId,\n instanceId: scope.instanceId,\n code: 'flow::unhandled_failure',\n severity: 'error',\n message: 'Flow watcher (runParallel) failed with an unhandled error.',\n hint: 'Handle errors explicitly inside the watcher (catch/catchAll) or write back via TaskRunner failure; avoid silent failures.',\n kind: 'flow_unhandled_failure',\n trigger: {\n kind: 'flow',\n name: 'runParallel',\n },\n }).pipe(Effect.zipRight(Effect.failCause(cause))),\n ),\n )\n }) as any\n\n return {\n fromAction: <T extends ActionOf<Sh>>(predicate: (a: ActionOf<Sh>) => a is T) =>\n runtime.actions$.pipe(Stream.filter(predicate)),\n\n fromState: <V>(selectorOrQuery: ((s: StateOf<Sh>) => V) | ReadQuery.ReadQuery<StateOf<Sh>, V>) =>\n runtime.changes(ReadQuery.isReadQuery(selectorOrQuery) ? selectorOrQuery.select : selectorOrQuery),\n\n debounce: (ms: number) => (stream) => Stream.debounce(stream, ms),\n\n throttle: (ms: number) => (stream) =>\n Stream.throttle(stream, {\n cost: () => 1,\n units: 1,\n duration: ms,\n strategy: 'enforce',\n }),\n\n filter: (predicate: (value: any) => boolean) => (stream) => Stream.filter(stream, predicate),\n\n run: (eff, options) => (stream) => runStreamSequential<any, any, any, any>(eff, options)(stream),\n\n runParallel: (eff, options) => (stream) => runStreamParallel<any, any, any, any>(eff, options)(stream),\n\n runLatest: (eff, options) => (stream) =>\n Stream.runDrain(\n Stream.map(stream, (payload) =>\n runAsFlowOp<any, any, any, any>(\n 'flow.runLatest',\n payload,\n runEffect<any, any, any, any>(eff)(payload),\n options,\n ),\n ).pipe(\n Stream.flatMap((effect) => Stream.fromEffect(effect), {\n switch: true,\n }),\n ),\n ),\n\n runExhaust: (eff, options) => (stream) =>\n Effect.gen(function* () {\n const concurrency = yield* resolveConcurrencyLimit()\n const busyRef = yield* Ref.make(false)\n const mapper = (payload: any) =>\n Effect.gen(function* () {\n const acquired = yield* Ref.modify(busyRef, (busy) =>\n busy ? ([false, busy] as const) : ([true, true] as const),\n )\n if (!acquired) {\n return\n }\n try {\n yield* runAsFlowOp<any, any, any, any>(\n 'flow.runExhaust',\n payload,\n runEffect<any, any, any, any>(eff)(payload),\n options,\n )\n } finally {\n yield* Ref.set(busyRef, false)\n }\n })\n\n return yield* Stream.runDrain(stream.pipe(Stream.mapEffect(mapper, { concurrency })))\n }),\n }\n}\n"],"mappings":"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","names":["make"]}
|