@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,746 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/ExternalStore.ts
|
|
21
|
+
var ExternalStore_exports = {};
|
|
22
|
+
__export(ExternalStore_exports, {
|
|
23
|
+
fromModule: () => fromModule,
|
|
24
|
+
fromService: () => fromService,
|
|
25
|
+
fromStream: () => fromStream,
|
|
26
|
+
fromSubscriptionRef: () => fromSubscriptionRef
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(ExternalStore_exports);
|
|
29
|
+
var import_effect = require("effect");
|
|
30
|
+
|
|
31
|
+
// src/internal/digest.ts
|
|
32
|
+
var stableStringify = (value) => {
|
|
33
|
+
if (value === null) return "null";
|
|
34
|
+
const t = typeof value;
|
|
35
|
+
if (t === "string") return JSON.stringify(value);
|
|
36
|
+
if (t === "number") return Number.isFinite(value) ? String(value) : "null";
|
|
37
|
+
if (t === "boolean") return value ? "true" : "false";
|
|
38
|
+
if (Array.isArray(value)) {
|
|
39
|
+
return `[${value.map(stableStringify).join(",")}]`;
|
|
40
|
+
}
|
|
41
|
+
if (t === "object") {
|
|
42
|
+
const record = value;
|
|
43
|
+
const keys = Object.keys(record).sort();
|
|
44
|
+
return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(record[k])}`).join(",")}}`;
|
|
45
|
+
}
|
|
46
|
+
return "null";
|
|
47
|
+
};
|
|
48
|
+
var fnv1a32 = (input) => {
|
|
49
|
+
let hash = 2166136261;
|
|
50
|
+
for (let i = 0; i < input.length; i++) {
|
|
51
|
+
hash ^= input.charCodeAt(i);
|
|
52
|
+
hash = hash * 16777619 >>> 0;
|
|
53
|
+
}
|
|
54
|
+
return hash.toString(16).padStart(8, "0");
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// src/internal/runtime/core/ReadQuery.ts
|
|
58
|
+
function isReadQuery(input) {
|
|
59
|
+
if (!input || typeof input !== "object" && typeof input !== "function") return false;
|
|
60
|
+
const maybe = input;
|
|
61
|
+
return typeof maybe.selectorId === "string" && typeof maybe.select === "function" && Array.isArray(maybe.reads);
|
|
62
|
+
}
|
|
63
|
+
var normalizeReads = (reads) => {
|
|
64
|
+
const unique = [];
|
|
65
|
+
const seen = /* @__PURE__ */ new Set();
|
|
66
|
+
for (const r of reads) {
|
|
67
|
+
const key = typeof r === "number" ? `n:${r}` : `s:${r}`;
|
|
68
|
+
if (seen.has(key)) continue;
|
|
69
|
+
seen.add(key);
|
|
70
|
+
unique.push(r);
|
|
71
|
+
}
|
|
72
|
+
return unique.slice().sort();
|
|
73
|
+
};
|
|
74
|
+
var toHash32Number = (hex) => Number.parseInt(hex, 16);
|
|
75
|
+
var makeReadsDigest = (reads) => {
|
|
76
|
+
const normalized = normalizeReads(reads);
|
|
77
|
+
return {
|
|
78
|
+
count: normalized.length,
|
|
79
|
+
hash: toHash32Number(fnv1a32(stableStringify(normalized)))
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
var computeSelectorId = (value) => `rq_${fnv1a32(stableStringify(value))}`;
|
|
83
|
+
var nextUnstableSelectorSeq = 0;
|
|
84
|
+
var unstableSelectorIdByFn = /* @__PURE__ */ new WeakMap();
|
|
85
|
+
var computeUnstableSelectorId = (selector) => {
|
|
86
|
+
const existing = unstableSelectorIdByFn.get(selector);
|
|
87
|
+
if (existing) return existing;
|
|
88
|
+
nextUnstableSelectorSeq += 1;
|
|
89
|
+
const selectorId = `rq_u${nextUnstableSelectorSeq}`;
|
|
90
|
+
unstableSelectorIdByFn.set(selector, selectorId);
|
|
91
|
+
return selectorId;
|
|
92
|
+
};
|
|
93
|
+
var unwrapParens = (input) => {
|
|
94
|
+
const trimmed = input.trim();
|
|
95
|
+
if (trimmed.startsWith("(") && trimmed.endsWith(")")) {
|
|
96
|
+
const inner = trimmed.slice(1, -1).trim();
|
|
97
|
+
if (!inner.startsWith("(") || !inner.endsWith(")")) {
|
|
98
|
+
return inner;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return trimmed;
|
|
102
|
+
};
|
|
103
|
+
var extractArrow = (source) => {
|
|
104
|
+
const idx = source.indexOf("=>");
|
|
105
|
+
if (idx < 0) return void 0;
|
|
106
|
+
const left = source.slice(0, idx).trim();
|
|
107
|
+
const right = source.slice(idx + 2).trim();
|
|
108
|
+
const paramRaw = unwrapParens(left);
|
|
109
|
+
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(paramRaw)) return void 0;
|
|
110
|
+
if (right.startsWith("{")) {
|
|
111
|
+
const m = right.match(/^\{\s*return\s+(.+?);?\s*\}\s*$/s);
|
|
112
|
+
if (!m) return void 0;
|
|
113
|
+
return { param: paramRaw, body: m[1]?.trim() ?? "" };
|
|
114
|
+
}
|
|
115
|
+
return { param: paramRaw, body: right };
|
|
116
|
+
};
|
|
117
|
+
var extractFunctionReturn = (source) => {
|
|
118
|
+
const trimmed = source.trim();
|
|
119
|
+
const m = trimmed.match(
|
|
120
|
+
/^function\s*(?:[A-Za-z_$][A-Za-z0-9_$]*\s*)?\(\s*([A-Za-z_$][A-Za-z0-9_$]*)\s*\)\s*\{\s*return\s+(.+?);?\s*\}\s*$/s
|
|
121
|
+
);
|
|
122
|
+
if (!m) return void 0;
|
|
123
|
+
const param = m[1]?.trim() ?? "";
|
|
124
|
+
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(param)) return void 0;
|
|
125
|
+
const body = m[2]?.trim() ?? "";
|
|
126
|
+
if (body.length === 0) return void 0;
|
|
127
|
+
return { param, body };
|
|
128
|
+
};
|
|
129
|
+
var tryParseSelectorSource = (source) => {
|
|
130
|
+
const arrowOrFn = extractArrow(source) ?? extractFunctionReturn(source);
|
|
131
|
+
if (!arrowOrFn) return void 0;
|
|
132
|
+
const expr = unwrapParens(arrowOrFn.body).trim().replace(/;$/, "").trim();
|
|
133
|
+
{
|
|
134
|
+
const re = new RegExp(`^${arrowOrFn.param}\\.([A-Za-z0-9_$]+(?:\\.[A-Za-z0-9_$]+)*)$`);
|
|
135
|
+
const m = expr.match(re);
|
|
136
|
+
if (m) {
|
|
137
|
+
return { kind: "path", path: m[1] };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (expr.startsWith("{") && expr.endsWith("}")) {
|
|
141
|
+
const inner = expr.slice(1, -1).trim();
|
|
142
|
+
if (inner.length === 0) return { kind: "struct", entries: [] };
|
|
143
|
+
const parts = inner.split(",").map((p) => p.trim()).filter((p) => p.length > 0);
|
|
144
|
+
const entries = [];
|
|
145
|
+
for (const part of parts) {
|
|
146
|
+
const idx = part.indexOf(":");
|
|
147
|
+
if (idx < 0) return void 0;
|
|
148
|
+
const key = part.slice(0, idx).trim();
|
|
149
|
+
const value = part.slice(idx + 1).trim();
|
|
150
|
+
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)) return void 0;
|
|
151
|
+
const re = new RegExp(`^${arrowOrFn.param}\\.([A-Za-z0-9_$]+(?:\\.[A-Za-z0-9_$]+)*)$`);
|
|
152
|
+
const m = value.match(re);
|
|
153
|
+
if (!m) return void 0;
|
|
154
|
+
entries.push([key, m[1]]);
|
|
155
|
+
}
|
|
156
|
+
entries.sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0);
|
|
157
|
+
return { kind: "struct", entries };
|
|
158
|
+
}
|
|
159
|
+
return void 0;
|
|
160
|
+
};
|
|
161
|
+
var READ_QUERY_TEMPLATE_CACHE_MAX = 2048;
|
|
162
|
+
var readQueryTemplateByFn = /* @__PURE__ */ new WeakMap();
|
|
163
|
+
var readQueryTemplateBySource = /* @__PURE__ */ new Map();
|
|
164
|
+
var lruGet = (map, key) => {
|
|
165
|
+
const value = map.get(key);
|
|
166
|
+
if (value === void 0) return void 0;
|
|
167
|
+
map.delete(key);
|
|
168
|
+
map.set(key, value);
|
|
169
|
+
return value;
|
|
170
|
+
};
|
|
171
|
+
var lruSet = (map, key, value, maxSize) => {
|
|
172
|
+
if (map.has(key)) map.delete(key);
|
|
173
|
+
map.set(key, value);
|
|
174
|
+
if (map.size <= maxSize) return;
|
|
175
|
+
const oldestKey = map.keys().next().value;
|
|
176
|
+
if (oldestKey !== void 0) {
|
|
177
|
+
map.delete(oldestKey);
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
var safeToString = (fn) => {
|
|
181
|
+
try {
|
|
182
|
+
return fn.toString();
|
|
183
|
+
} catch {
|
|
184
|
+
return "";
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
var compile = (input) => {
|
|
188
|
+
if (isReadQuery(input)) {
|
|
189
|
+
const reads = normalizeReads(input.reads);
|
|
190
|
+
const readsDigest = reads.length > 0 ? makeReadsDigest(reads) : void 0;
|
|
191
|
+
const equalsKind = input.equalsKind;
|
|
192
|
+
const staticIr2 = {
|
|
193
|
+
selectorId: input.selectorId,
|
|
194
|
+
debugKey: input.debugKey,
|
|
195
|
+
lane: "static",
|
|
196
|
+
producer: "manual",
|
|
197
|
+
reads,
|
|
198
|
+
readsDigest,
|
|
199
|
+
equalsKind
|
|
200
|
+
};
|
|
201
|
+
return {
|
|
202
|
+
...input,
|
|
203
|
+
reads,
|
|
204
|
+
lane: "static",
|
|
205
|
+
producer: "manual",
|
|
206
|
+
readsDigest,
|
|
207
|
+
staticIr: staticIr2
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
const selector = input;
|
|
211
|
+
const debugKey = (typeof selector?.debugKey === "string" && selector.debugKey.length > 0 ? selector.debugKey : void 0) ?? (typeof selector.name === "string" && selector.name.length > 0 ? selector.name : void 0);
|
|
212
|
+
const declaredReads = Array.isArray(selector?.fieldPaths) ? selector.fieldPaths.filter((x) => typeof x === "string") : void 0;
|
|
213
|
+
if (declaredReads && declaredReads.length > 0) {
|
|
214
|
+
const reads = normalizeReads(declaredReads);
|
|
215
|
+
const readsDigest = makeReadsDigest(reads);
|
|
216
|
+
const selectorId2 = computeSelectorId({ kind: "reads", reads });
|
|
217
|
+
const staticIr2 = {
|
|
218
|
+
selectorId: selectorId2,
|
|
219
|
+
debugKey,
|
|
220
|
+
lane: "static",
|
|
221
|
+
producer: "jit",
|
|
222
|
+
reads,
|
|
223
|
+
readsDigest,
|
|
224
|
+
equalsKind: "objectIs"
|
|
225
|
+
};
|
|
226
|
+
return {
|
|
227
|
+
selectorId: selectorId2,
|
|
228
|
+
debugKey,
|
|
229
|
+
reads,
|
|
230
|
+
select: selector,
|
|
231
|
+
equalsKind: "objectIs",
|
|
232
|
+
lane: "static",
|
|
233
|
+
producer: "jit",
|
|
234
|
+
readsDigest,
|
|
235
|
+
staticIr: staticIr2
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
const cachedByFn = readQueryTemplateByFn.get(selector);
|
|
239
|
+
if (cachedByFn) {
|
|
240
|
+
const staticIr2 = {
|
|
241
|
+
selectorId: cachedByFn.selectorId,
|
|
242
|
+
debugKey,
|
|
243
|
+
lane: "static",
|
|
244
|
+
producer: "jit",
|
|
245
|
+
reads: cachedByFn.reads,
|
|
246
|
+
readsDigest: cachedByFn.readsDigest,
|
|
247
|
+
equalsKind: cachedByFn.equalsKind
|
|
248
|
+
};
|
|
249
|
+
return {
|
|
250
|
+
selectorId: cachedByFn.selectorId,
|
|
251
|
+
debugKey,
|
|
252
|
+
reads: cachedByFn.reads,
|
|
253
|
+
select: selector,
|
|
254
|
+
equalsKind: cachedByFn.equalsKind,
|
|
255
|
+
lane: "static",
|
|
256
|
+
producer: "jit",
|
|
257
|
+
readsDigest: cachedByFn.readsDigest,
|
|
258
|
+
staticIr: staticIr2
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
const srcTrimmed = safeToString(selector).trim();
|
|
262
|
+
const cachedBySource = srcTrimmed.length > 0 ? lruGet(readQueryTemplateBySource, srcTrimmed) : void 0;
|
|
263
|
+
if (cachedBySource) {
|
|
264
|
+
readQueryTemplateByFn.set(selector, cachedBySource);
|
|
265
|
+
const staticIr2 = {
|
|
266
|
+
selectorId: cachedBySource.selectorId,
|
|
267
|
+
debugKey,
|
|
268
|
+
lane: "static",
|
|
269
|
+
producer: "jit",
|
|
270
|
+
reads: cachedBySource.reads,
|
|
271
|
+
readsDigest: cachedBySource.readsDigest,
|
|
272
|
+
equalsKind: cachedBySource.equalsKind
|
|
273
|
+
};
|
|
274
|
+
return {
|
|
275
|
+
selectorId: cachedBySource.selectorId,
|
|
276
|
+
debugKey,
|
|
277
|
+
reads: cachedBySource.reads,
|
|
278
|
+
select: selector,
|
|
279
|
+
equalsKind: cachedBySource.equalsKind,
|
|
280
|
+
lane: "static",
|
|
281
|
+
producer: "jit",
|
|
282
|
+
readsDigest: cachedBySource.readsDigest,
|
|
283
|
+
staticIr: staticIr2
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
const parsed = srcTrimmed.length > 0 ? tryParseSelectorSource(srcTrimmed) : void 0;
|
|
287
|
+
if (parsed?.kind === "path") {
|
|
288
|
+
const reads = [parsed.path];
|
|
289
|
+
const readsDigest = makeReadsDigest(reads);
|
|
290
|
+
const selectorId2 = computeSelectorId({ kind: "path", path: parsed.path });
|
|
291
|
+
const template = { selectorId: selectorId2, reads, readsDigest, equalsKind: "objectIs" };
|
|
292
|
+
readQueryTemplateByFn.set(selector, template);
|
|
293
|
+
lruSet(readQueryTemplateBySource, srcTrimmed, template, READ_QUERY_TEMPLATE_CACHE_MAX);
|
|
294
|
+
const staticIr2 = {
|
|
295
|
+
selectorId: selectorId2,
|
|
296
|
+
debugKey,
|
|
297
|
+
lane: "static",
|
|
298
|
+
producer: "jit",
|
|
299
|
+
reads,
|
|
300
|
+
readsDigest,
|
|
301
|
+
equalsKind: "objectIs"
|
|
302
|
+
};
|
|
303
|
+
return {
|
|
304
|
+
selectorId: selectorId2,
|
|
305
|
+
debugKey,
|
|
306
|
+
reads,
|
|
307
|
+
select: selector,
|
|
308
|
+
equalsKind: "objectIs",
|
|
309
|
+
lane: "static",
|
|
310
|
+
producer: "jit",
|
|
311
|
+
readsDigest,
|
|
312
|
+
staticIr: staticIr2
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
if (parsed?.kind === "struct") {
|
|
316
|
+
const reads = normalizeReads(parsed.entries.map(([, path]) => path));
|
|
317
|
+
const readsDigest = makeReadsDigest(reads);
|
|
318
|
+
const selectorId2 = computeSelectorId({ kind: "struct", entries: parsed.entries });
|
|
319
|
+
const template = { selectorId: selectorId2, reads, readsDigest, equalsKind: "shallowStruct" };
|
|
320
|
+
readQueryTemplateByFn.set(selector, template);
|
|
321
|
+
lruSet(readQueryTemplateBySource, srcTrimmed, template, READ_QUERY_TEMPLATE_CACHE_MAX);
|
|
322
|
+
const staticIr2 = {
|
|
323
|
+
selectorId: selectorId2,
|
|
324
|
+
debugKey,
|
|
325
|
+
lane: "static",
|
|
326
|
+
producer: "jit",
|
|
327
|
+
reads,
|
|
328
|
+
readsDigest,
|
|
329
|
+
equalsKind: "shallowStruct"
|
|
330
|
+
};
|
|
331
|
+
return {
|
|
332
|
+
selectorId: selectorId2,
|
|
333
|
+
debugKey,
|
|
334
|
+
reads,
|
|
335
|
+
select: selector,
|
|
336
|
+
equalsKind: "shallowStruct",
|
|
337
|
+
lane: "static",
|
|
338
|
+
producer: "jit",
|
|
339
|
+
readsDigest,
|
|
340
|
+
staticIr: staticIr2
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
const baseFallbackReason = srcTrimmed.includes("=>") || srcTrimmed.startsWith("function") ? "unsupportedSyntax" : "missingDeps";
|
|
344
|
+
const lowDiscriminabilitySource = srcTrimmed.length === 0 || srcTrimmed.includes("[native code]");
|
|
345
|
+
const fallbackReason = !debugKey || lowDiscriminabilitySource ? "unstableSelectorId" : baseFallbackReason;
|
|
346
|
+
const selectorId = fallbackReason === "unstableSelectorId" ? computeUnstableSelectorId(selector) : computeSelectorId({ kind: "dynamic", debugKey, src: srcTrimmed });
|
|
347
|
+
const staticIr = {
|
|
348
|
+
selectorId,
|
|
349
|
+
debugKey,
|
|
350
|
+
lane: "dynamic",
|
|
351
|
+
producer: "dynamic",
|
|
352
|
+
fallbackReason,
|
|
353
|
+
equalsKind: "objectIs"
|
|
354
|
+
};
|
|
355
|
+
return {
|
|
356
|
+
selectorId,
|
|
357
|
+
debugKey,
|
|
358
|
+
reads: [],
|
|
359
|
+
select: selector,
|
|
360
|
+
equalsKind: "objectIs",
|
|
361
|
+
lane: "dynamic",
|
|
362
|
+
producer: "dynamic",
|
|
363
|
+
fallbackReason,
|
|
364
|
+
staticIr
|
|
365
|
+
};
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
// src/ReadQuery.ts
|
|
369
|
+
var compile2 = compile;
|
|
370
|
+
|
|
371
|
+
// src/internal/external-store-descriptor.ts
|
|
372
|
+
var EXTERNAL_STORE_DESCRIPTOR = /* @__PURE__ */ Symbol.for("@logixjs/core/externalStoreDescriptor");
|
|
373
|
+
var defineHidden = (target, key, value) => {
|
|
374
|
+
Object.defineProperty(target, key, {
|
|
375
|
+
value,
|
|
376
|
+
enumerable: false,
|
|
377
|
+
configurable: true,
|
|
378
|
+
writable: false
|
|
379
|
+
});
|
|
380
|
+
};
|
|
381
|
+
var attachExternalStoreDescriptor = (store, descriptor) => {
|
|
382
|
+
defineHidden(store, EXTERNAL_STORE_DESCRIPTOR, descriptor);
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
// src/internal/runtime/core/HostScheduler.ts
|
|
386
|
+
var noopCancel = () => {
|
|
387
|
+
};
|
|
388
|
+
var safeNowMs = () => {
|
|
389
|
+
const perf = globalThis.performance;
|
|
390
|
+
if (perf && typeof perf.now === "function") {
|
|
391
|
+
try {
|
|
392
|
+
const v = perf.now();
|
|
393
|
+
if (typeof v === "number" && Number.isFinite(v)) return v;
|
|
394
|
+
} catch {
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
return Date.now();
|
|
398
|
+
};
|
|
399
|
+
var safeQueueMicrotask = (cb) => {
|
|
400
|
+
const qm = globalThis.queueMicrotask;
|
|
401
|
+
if (typeof qm === "function") {
|
|
402
|
+
try {
|
|
403
|
+
qm(cb);
|
|
404
|
+
return;
|
|
405
|
+
} catch {
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
try {
|
|
409
|
+
Promise.resolve().then(cb);
|
|
410
|
+
} catch {
|
|
411
|
+
setTimeout(cb, 0);
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
var safeSetTimeout = (ms, cb) => {
|
|
415
|
+
const id = setTimeout(cb, ms);
|
|
416
|
+
return () => {
|
|
417
|
+
try {
|
|
418
|
+
clearTimeout(id);
|
|
419
|
+
} catch {
|
|
420
|
+
}
|
|
421
|
+
};
|
|
422
|
+
};
|
|
423
|
+
var makeMessageChannelMacrotask = () => {
|
|
424
|
+
const MC = globalThis.MessageChannel;
|
|
425
|
+
if (typeof MC !== "function") return void 0;
|
|
426
|
+
let channel;
|
|
427
|
+
try {
|
|
428
|
+
channel = new MC();
|
|
429
|
+
} catch {
|
|
430
|
+
return void 0;
|
|
431
|
+
}
|
|
432
|
+
const queue = [];
|
|
433
|
+
let scheduled = false;
|
|
434
|
+
const flush = () => {
|
|
435
|
+
scheduled = false;
|
|
436
|
+
const tasks = queue.splice(0, queue.length);
|
|
437
|
+
for (const t of tasks) {
|
|
438
|
+
if (t.canceled) continue;
|
|
439
|
+
try {
|
|
440
|
+
t.cb();
|
|
441
|
+
} catch {
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
};
|
|
445
|
+
try {
|
|
446
|
+
channel.port1.onmessage = flush;
|
|
447
|
+
} catch {
|
|
448
|
+
return void 0;
|
|
449
|
+
}
|
|
450
|
+
const schedule = (cb) => {
|
|
451
|
+
const task = { canceled: false, cb };
|
|
452
|
+
queue.push(task);
|
|
453
|
+
if (!scheduled) {
|
|
454
|
+
scheduled = true;
|
|
455
|
+
try {
|
|
456
|
+
channel.port2.postMessage(void 0);
|
|
457
|
+
} catch {
|
|
458
|
+
scheduled = false;
|
|
459
|
+
return safeSetTimeout(0, cb);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return () => {
|
|
463
|
+
task.canceled = true;
|
|
464
|
+
};
|
|
465
|
+
};
|
|
466
|
+
return schedule;
|
|
467
|
+
};
|
|
468
|
+
var makeSetImmediateMacrotask = () => {
|
|
469
|
+
const si = globalThis.setImmediate;
|
|
470
|
+
const ci = globalThis.clearImmediate;
|
|
471
|
+
if (typeof si !== "function") return void 0;
|
|
472
|
+
return (cb) => {
|
|
473
|
+
let id;
|
|
474
|
+
try {
|
|
475
|
+
id = si(cb);
|
|
476
|
+
} catch {
|
|
477
|
+
return safeSetTimeout(0, cb);
|
|
478
|
+
}
|
|
479
|
+
return () => {
|
|
480
|
+
if (typeof ci !== "function") return;
|
|
481
|
+
try {
|
|
482
|
+
ci(id);
|
|
483
|
+
} catch {
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
};
|
|
487
|
+
};
|
|
488
|
+
var makeRaf = () => {
|
|
489
|
+
const raf = globalThis.requestAnimationFrame;
|
|
490
|
+
const cancel = globalThis.cancelAnimationFrame;
|
|
491
|
+
if (typeof raf !== "function") return void 0;
|
|
492
|
+
return (cb) => {
|
|
493
|
+
let id;
|
|
494
|
+
try {
|
|
495
|
+
id = raf(cb);
|
|
496
|
+
} catch {
|
|
497
|
+
return noopCancel;
|
|
498
|
+
}
|
|
499
|
+
return () => {
|
|
500
|
+
if (typeof cancel !== "function") return;
|
|
501
|
+
try {
|
|
502
|
+
cancel(id);
|
|
503
|
+
} catch {
|
|
504
|
+
}
|
|
505
|
+
};
|
|
506
|
+
};
|
|
507
|
+
};
|
|
508
|
+
var makeDefaultHostScheduler = () => {
|
|
509
|
+
const macrotask = makeSetImmediateMacrotask() ?? makeMessageChannelMacrotask() ?? ((cb) => safeSetTimeout(0, cb));
|
|
510
|
+
const raf = makeRaf();
|
|
511
|
+
return {
|
|
512
|
+
nowMs: safeNowMs,
|
|
513
|
+
scheduleMicrotask: safeQueueMicrotask,
|
|
514
|
+
scheduleMacrotask: macrotask,
|
|
515
|
+
scheduleAnimationFrame: (cb) => raf?.(cb) ?? macrotask(cb),
|
|
516
|
+
scheduleTimeout: safeSetTimeout
|
|
517
|
+
};
|
|
518
|
+
};
|
|
519
|
+
var globalHostScheduler;
|
|
520
|
+
var getGlobalHostScheduler = () => {
|
|
521
|
+
globalHostScheduler ?? (globalHostScheduler = makeDefaultHostScheduler());
|
|
522
|
+
return globalHostScheduler;
|
|
523
|
+
};
|
|
524
|
+
|
|
525
|
+
// src/ExternalStore.ts
|
|
526
|
+
var makeError = (code, message) => Object.assign(new Error(message), { _tag: "ExternalStoreRuntimeError", code });
|
|
527
|
+
var hasOwn = (value, key) => !!value && typeof value === "object" && Object.prototype.hasOwnProperty.call(value, key);
|
|
528
|
+
var makeStoreId = (payload) => `es_${fnv1a32(stableStringify(payload))}`;
|
|
529
|
+
var defineDescriptor = (store, descriptor) => {
|
|
530
|
+
attachExternalStoreDescriptor(store, descriptor);
|
|
531
|
+
return store;
|
|
532
|
+
};
|
|
533
|
+
var makeNotifyScheduler = (listeners) => {
|
|
534
|
+
let scheduled = false;
|
|
535
|
+
return () => {
|
|
536
|
+
if (scheduled) return;
|
|
537
|
+
scheduled = true;
|
|
538
|
+
getGlobalHostScheduler().scheduleMicrotask(() => {
|
|
539
|
+
scheduled = false;
|
|
540
|
+
for (const listener of listeners) {
|
|
541
|
+
listener();
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
};
|
|
545
|
+
};
|
|
546
|
+
var resolveTagId = (tag) => {
|
|
547
|
+
const id = tag.id;
|
|
548
|
+
if (typeof id === "string" && id.length > 0) return id;
|
|
549
|
+
const key = tag.key;
|
|
550
|
+
return typeof key === "string" && key.length > 0 ? key : void 0;
|
|
551
|
+
};
|
|
552
|
+
var resolveModuleIdOrThrow = (module2) => {
|
|
553
|
+
if (module2 && typeof module2 === "object") {
|
|
554
|
+
const moduleId = module2.moduleId;
|
|
555
|
+
if (typeof moduleId === "string" && moduleId.length > 0) return moduleId;
|
|
556
|
+
const id = module2.id;
|
|
557
|
+
if (typeof id === "string" && id.length > 0) return id;
|
|
558
|
+
const tag = module2.tag;
|
|
559
|
+
if (tag && (typeof tag === "object" || typeof tag === "function")) {
|
|
560
|
+
const tagId = tag.id;
|
|
561
|
+
if (typeof tagId === "string" && tagId.length > 0) return tagId;
|
|
562
|
+
}
|
|
563
|
+
const moduleTagId = module2.id;
|
|
564
|
+
if (typeof moduleTagId === "string" && moduleTagId.length > 0) return moduleTagId;
|
|
565
|
+
}
|
|
566
|
+
throw makeError(
|
|
567
|
+
"external_store::unresolvable_module_id",
|
|
568
|
+
"[ExternalStore.fromModule] Failed to resolve moduleId.\nFix: pass a ModuleTag/Module/ModuleImpl/ModuleRuntime (has .id/.tag.id/.moduleId), not a read-only ModuleHandle."
|
|
569
|
+
);
|
|
570
|
+
};
|
|
571
|
+
var fromService = (tag, map) => {
|
|
572
|
+
const tagId = resolveTagId(tag);
|
|
573
|
+
if (!tagId) {
|
|
574
|
+
throw makeError(
|
|
575
|
+
"external_store::unresolved",
|
|
576
|
+
"[ExternalStore.fromService] Tag.id is missing; cannot build a stable storeId."
|
|
577
|
+
);
|
|
578
|
+
}
|
|
579
|
+
const storeId = makeStoreId({ kind: "service", tagId });
|
|
580
|
+
const store = {
|
|
581
|
+
getSnapshot: () => {
|
|
582
|
+
throw makeError(
|
|
583
|
+
"external_store::unresolved",
|
|
584
|
+
`[ExternalStore.fromService] Store is unresolved (tagId=${tagId}). Use it via StateTrait.externalStore install/runtime.`
|
|
585
|
+
);
|
|
586
|
+
},
|
|
587
|
+
subscribe: () => {
|
|
588
|
+
throw makeError(
|
|
589
|
+
"external_store::unresolved",
|
|
590
|
+
`[ExternalStore.fromService] Store is unresolved (tagId=${tagId}). Use it via StateTrait.externalStore install/runtime.`
|
|
591
|
+
);
|
|
592
|
+
}
|
|
593
|
+
};
|
|
594
|
+
return defineDescriptor(store, { kind: "service", storeId, tagId, tag, map });
|
|
595
|
+
};
|
|
596
|
+
var nextAnonStoreSeq = 0;
|
|
597
|
+
var storeIdByRef = /* @__PURE__ */ new WeakMap();
|
|
598
|
+
var getOrAssignAnonStoreId = (key, prefix) => {
|
|
599
|
+
const existing = storeIdByRef.get(key);
|
|
600
|
+
if (existing) return existing;
|
|
601
|
+
nextAnonStoreSeq += 1;
|
|
602
|
+
const storeId = `${prefix}_u${nextAnonStoreSeq}`;
|
|
603
|
+
storeIdByRef.set(key, storeId);
|
|
604
|
+
return storeId;
|
|
605
|
+
};
|
|
606
|
+
var fromSubscriptionRef = (ref) => {
|
|
607
|
+
const storeId = getOrAssignAnonStoreId(ref, "es_ref");
|
|
608
|
+
let hasSnapshot = false;
|
|
609
|
+
let current;
|
|
610
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
611
|
+
const scheduleNotify = makeNotifyScheduler(listeners);
|
|
612
|
+
let fiber;
|
|
613
|
+
const ensureSubscription = () => {
|
|
614
|
+
if (fiber) return;
|
|
615
|
+
fiber = import_effect.Effect.runFork(
|
|
616
|
+
import_effect.Stream.runForEach(
|
|
617
|
+
ref.changes,
|
|
618
|
+
(value) => import_effect.Effect.sync(() => {
|
|
619
|
+
current = value;
|
|
620
|
+
hasSnapshot = true;
|
|
621
|
+
scheduleNotify();
|
|
622
|
+
})
|
|
623
|
+
)
|
|
624
|
+
);
|
|
625
|
+
};
|
|
626
|
+
const refreshSnapshotIfStale = () => {
|
|
627
|
+
if (!hasSnapshot) return;
|
|
628
|
+
try {
|
|
629
|
+
const latest = import_effect.Effect.runSync(import_effect.SubscriptionRef.get(ref));
|
|
630
|
+
if (!Object.is(current, latest)) {
|
|
631
|
+
current = latest;
|
|
632
|
+
scheduleNotify();
|
|
633
|
+
}
|
|
634
|
+
} catch {
|
|
635
|
+
}
|
|
636
|
+
};
|
|
637
|
+
const store = {
|
|
638
|
+
getSnapshot: () => {
|
|
639
|
+
if (hasSnapshot) return current;
|
|
640
|
+
current = import_effect.Effect.runSync(import_effect.SubscriptionRef.get(ref));
|
|
641
|
+
hasSnapshot = true;
|
|
642
|
+
return current;
|
|
643
|
+
},
|
|
644
|
+
subscribe: (listener) => {
|
|
645
|
+
listeners.add(listener);
|
|
646
|
+
ensureSubscription();
|
|
647
|
+
refreshSnapshotIfStale();
|
|
648
|
+
return () => {
|
|
649
|
+
listeners.delete(listener);
|
|
650
|
+
if (listeners.size > 0) return;
|
|
651
|
+
const running = fiber;
|
|
652
|
+
if (!running) return;
|
|
653
|
+
fiber = void 0;
|
|
654
|
+
import_effect.Effect.runFork(import_effect.Fiber.interrupt(running));
|
|
655
|
+
};
|
|
656
|
+
}
|
|
657
|
+
};
|
|
658
|
+
return defineDescriptor(store, { kind: "subscriptionRef", storeId, ref });
|
|
659
|
+
};
|
|
660
|
+
var fromStream = (stream, options) => {
|
|
661
|
+
const hasCurrent = hasOwn(options, "current");
|
|
662
|
+
const hasInitial = hasOwn(options, "initial");
|
|
663
|
+
if (!hasCurrent && !hasInitial) {
|
|
664
|
+
throw makeError(
|
|
665
|
+
"external_store::missing_initial",
|
|
666
|
+
"[ExternalStore.fromStream] Missing { initial } or { current } (Stream has no current snapshot)."
|
|
667
|
+
);
|
|
668
|
+
}
|
|
669
|
+
const initial = hasCurrent ? options.current : options.initial;
|
|
670
|
+
const initialHint = hasCurrent ? "current" : "initial";
|
|
671
|
+
const storeId = getOrAssignAnonStoreId(stream, "es_stream");
|
|
672
|
+
let current = initial;
|
|
673
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
674
|
+
const scheduleNotify = makeNotifyScheduler(listeners);
|
|
675
|
+
let fiber;
|
|
676
|
+
const ensureSubscription = () => {
|
|
677
|
+
if (fiber) return;
|
|
678
|
+
fiber = import_effect.Effect.runFork(
|
|
679
|
+
import_effect.Stream.runForEach(
|
|
680
|
+
stream,
|
|
681
|
+
(value) => import_effect.Effect.sync(() => {
|
|
682
|
+
current = value;
|
|
683
|
+
scheduleNotify();
|
|
684
|
+
})
|
|
685
|
+
)
|
|
686
|
+
);
|
|
687
|
+
};
|
|
688
|
+
const store = {
|
|
689
|
+
getSnapshot: () => current,
|
|
690
|
+
subscribe: (listener) => {
|
|
691
|
+
listeners.add(listener);
|
|
692
|
+
ensureSubscription();
|
|
693
|
+
return () => {
|
|
694
|
+
listeners.delete(listener);
|
|
695
|
+
if (listeners.size > 0) return;
|
|
696
|
+
const running = fiber;
|
|
697
|
+
if (!running) return;
|
|
698
|
+
fiber = void 0;
|
|
699
|
+
import_effect.Effect.runFork(import_effect.Fiber.interrupt(running));
|
|
700
|
+
};
|
|
701
|
+
}
|
|
702
|
+
};
|
|
703
|
+
return defineDescriptor(store, { kind: "stream", storeId, stream, initial, initialHint });
|
|
704
|
+
};
|
|
705
|
+
var fromModule = (module2, selector) => {
|
|
706
|
+
const moduleId = resolveModuleIdOrThrow(module2);
|
|
707
|
+
const instanceId = module2 && typeof module2 === "object" && typeof module2.instanceId === "string" && module2.instanceId.length > 0 ? module2.instanceId : void 0;
|
|
708
|
+
const compiled = compile2(selector);
|
|
709
|
+
if (compiled.fallbackReason === "unstableSelectorId" || compiled.staticIr.fallbackReason === "unstableSelectorId") {
|
|
710
|
+
throw makeError(
|
|
711
|
+
"external_store::unstable_selector_id",
|
|
712
|
+
`[ExternalStore.fromModule] selectorId is unstable (fallbackReason=unstableSelectorId). Fix: add a stable debugKey, or pass an explicit ReadQuery (manual/static lane).`
|
|
713
|
+
);
|
|
714
|
+
}
|
|
715
|
+
const storeId = makeStoreId({ kind: "module", moduleId, selectorId: compiled.selectorId });
|
|
716
|
+
const store = {
|
|
717
|
+
getSnapshot: () => {
|
|
718
|
+
throw makeError(
|
|
719
|
+
"external_store::unresolved",
|
|
720
|
+
`[ExternalStore.fromModule] Store is unresolved (moduleId=${moduleId}, selectorId=${compiled.selectorId}). Use it via StateTrait.externalStore + TickScheduler/RuntimeStore (Module-as-Source).`
|
|
721
|
+
);
|
|
722
|
+
},
|
|
723
|
+
subscribe: () => {
|
|
724
|
+
throw makeError(
|
|
725
|
+
"external_store::unresolved",
|
|
726
|
+
`[ExternalStore.fromModule] Store is unresolved (moduleId=${moduleId}, selectorId=${compiled.selectorId}). Use it via StateTrait.externalStore + TickScheduler/RuntimeStore (Module-as-Source).`
|
|
727
|
+
);
|
|
728
|
+
}
|
|
729
|
+
};
|
|
730
|
+
return defineDescriptor(store, {
|
|
731
|
+
kind: "module",
|
|
732
|
+
storeId,
|
|
733
|
+
module: module2,
|
|
734
|
+
moduleId,
|
|
735
|
+
...instanceId ? { instanceId } : {},
|
|
736
|
+
readQuery: compiled
|
|
737
|
+
});
|
|
738
|
+
};
|
|
739
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
740
|
+
0 && (module.exports = {
|
|
741
|
+
fromModule,
|
|
742
|
+
fromService,
|
|
743
|
+
fromStream,
|
|
744
|
+
fromSubscriptionRef
|
|
745
|
+
});
|
|
746
|
+
//# sourceMappingURL=ExternalStore.cjs.map
|