@logixjs/core 0.0.1 → 1.0.0
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/{Action-mqVvtEHt.d.ts → Action-DYl88bwj.d.ts} +1 -1
- package/dist/{Action-BkRHy2vg.d.cts → Action-DkxsI_DK.d.cts} +1 -1
- package/dist/Action.cjs.map +1 -1
- package/dist/Action.d.cts +1 -1
- package/dist/Action.d.ts +1 -1
- package/dist/Action.js +2 -2
- package/dist/{Actions-AsQ07yTP.d.cts → Actions-Dicm7jdc.d.cts} +2 -2
- package/dist/{Actions-AsQ07yTP.d.ts → Actions-Dicm7jdc.d.ts} +2 -2
- package/dist/Actions.cjs.map +1 -1
- package/dist/Actions.d.cts +1 -1
- package/dist/Actions.d.ts +1 -1
- package/dist/Actions.js +1 -1
- package/dist/{Bound-BN1DQ_lM.d.ts → Bound-1OJLzVIS.d.ts} +2 -2
- package/dist/{Bound-BPIfH9SS.d.cts → Bound-BMLrtQ1V.d.cts} +2 -2
- package/dist/Bound.cjs +1737 -399
- package/dist/Bound.cjs.map +1 -1
- package/dist/Bound.d.cts +5 -5
- package/dist/Bound.d.ts +5 -5
- package/dist/Bound.js +19 -17
- package/dist/{Debug-B5q5Bkzx.d.ts → Debug-DKrWP5H1.d.ts} +40 -22
- package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-hIT44XsY.d.cts} +40 -22
- package/dist/Debug.cjs +1348 -318
- package/dist/Debug.cjs.map +1 -1
- package/dist/Debug.d.cts +12 -11
- package/dist/Debug.d.ts +12 -11
- package/dist/Debug.js +20 -11
- package/dist/EffectOp.cjs +15 -6
- package/dist/EffectOp.cjs.map +1 -1
- package/dist/EffectOp.js +3 -3
- package/dist/Env.cjs +772 -6
- package/dist/Env.cjs.map +1 -1
- package/dist/Env.js +5 -2
- package/dist/ExternalStore-DqJKKRJ4.d.ts +61 -0
- package/dist/ExternalStore-JC-gAgEI.d.cts +61 -0
- package/dist/ExternalStore.cjs +774 -0
- package/dist/ExternalStore.cjs.map +1 -0
- package/dist/ExternalStore.d.cts +8 -0
- package/dist/ExternalStore.d.ts +8 -0
- package/dist/ExternalStore.js +19 -0
- package/dist/ExternalStore.js.map +1 -0
- package/dist/{Flow-BhpjE22E.d.ts → Flow-CZmXRDqp.d.cts} +13 -4
- package/dist/{Flow-1fZT8MpX.d.cts → Flow-DIVDxz7R.d.ts} +13 -4
- package/dist/Flow.cjs +765 -148
- package/dist/Flow.cjs.map +1 -1
- package/dist/Flow.d.cts +6 -6
- package/dist/Flow.d.ts +6 -6
- package/dist/Flow.js +9 -8
- package/dist/{Handle-D_cLW1Z3.d.ts → Handle-Bo6cAFut.d.ts} +1 -1
- package/dist/{Handle-D8D1zPb_.d.cts → Handle-CfDvSqN7.d.cts} +1 -1
- package/dist/Handle.d.cts +5 -5
- package/dist/Handle.d.ts +5 -5
- package/dist/{Kernel-8kC-jOda.d.cts → Kernel-CuXBF9S_.d.cts} +16 -7
- package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-D9guNwRL.d.ts} +16 -7
- package/dist/Kernel.cjs +814 -26
- package/dist/Kernel.cjs.map +1 -1
- package/dist/Kernel.d.cts +13 -12
- package/dist/Kernel.d.ts +13 -12
- package/dist/Kernel.js +7 -4
- package/dist/{Link-Db7975nU.d.ts → Link-CUM0yUCH.d.ts} +10 -3
- package/dist/{Link-fX8x1eCK.d.cts → Link-NAfR6uGD.d.cts} +10 -3
- package/dist/Link.cjs +1294 -121
- package/dist/Link.cjs.map +1 -1
- package/dist/Link.d.cts +5 -5
- package/dist/Link.d.ts +5 -5
- package/dist/Link.js +37 -29
- package/dist/{Logic-DRh4sDZj.d.cts → Logic-09VQpIj3.d.cts} +7 -4
- package/dist/{Logic-BRjEMr-W.d.ts → Logic-DKg7ghGy.d.ts} +7 -4
- package/dist/Logic.cjs +2 -1
- package/dist/Logic.cjs.map +1 -1
- package/dist/Logic.d.cts +5 -5
- package/dist/Logic.d.ts +5 -5
- package/dist/Logic.js +1 -1
- package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-CsW5jgrL.d.ts} +1 -1
- package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-Dksk07F4.d.cts} +1 -1
- package/dist/MatchBuilder.cjs +2 -2
- package/dist/MatchBuilder.cjs.map +1 -1
- package/dist/MatchBuilder.d.cts +6 -6
- package/dist/MatchBuilder.d.ts +6 -6
- package/dist/MatchBuilder.js +2 -2
- package/dist/Middleware-D8tUDLv_.d.cts +100 -0
- package/dist/Middleware-DS7CbTTN.d.ts +100 -0
- package/dist/Middleware.cjs +678 -58
- 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 +15 -12
- package/dist/{Module-DnzluX2J.d.ts → Module-B_Cntyms.d.ts} +54 -25
- package/dist/{Module-B_0xRDMR.d.cts → Module-CmNOVXzf.d.cts} +54 -25
- package/dist/Module.cjs +9331 -3317
- package/dist/Module.cjs.map +1 -1
- package/dist/Module.d.cts +7 -6
- package/dist/Module.d.ts +7 -6
- package/dist/Module.js +39 -31
- package/dist/ModuleTag-CGho_InD.d.ts +113 -0
- package/dist/ModuleTag-CITb8L_G.d.cts +113 -0
- package/dist/ModuleTag.cjs +7248 -2847
- package/dist/ModuleTag.cjs.map +1 -1
- package/dist/ModuleTag.d.cts +6 -6
- package/dist/ModuleTag.d.ts +6 -6
- package/dist/ModuleTag.js +35 -29
- package/dist/Observability-Bdhnx2Dv.d.ts +385 -0
- package/dist/Observability-DXGAFBIT.d.cts +385 -0
- package/dist/Observability.cjs +5093 -1556
- package/dist/Observability.cjs.map +1 -1
- package/dist/Observability.d.cts +6 -7
- package/dist/Observability.d.ts +6 -7
- package/dist/Observability.js +28 -23
- package/dist/{Platform-CHX8o-U4.d.ts → Platform-B4s8tg6C.d.cts} +4 -5
- package/dist/{Platform-C49Pv956.d.cts → Platform-BV_0MW7g.d.cts} +5 -2
- package/dist/{Platform-C49Pv956.d.ts → Platform-BV_0MW7g.d.ts} +5 -2
- package/dist/{Platform-CVlv0xLQ.d.cts → Platform-W0Mefy_e.d.ts} +4 -5
- package/dist/Platform.cjs +2 -1
- package/dist/Platform.cjs.map +1 -1
- package/dist/Platform.d.cts +2 -3
- package/dist/Platform.d.ts +2 -3
- package/dist/Platform.js +2 -2
- package/dist/{Process-CM9xbMdP.d.ts → Process-CO8G7HO9.d.cts} +30 -5
- package/dist/{Process-mL8fHDSB.d.cts → Process-Cyf6VNDR.d.ts} +30 -5
- package/dist/Process.cjs +1288 -120
- package/dist/Process.cjs.map +1 -1
- package/dist/Process.d.cts +6 -6
- package/dist/Process.d.ts +6 -6
- package/dist/Process.js +34 -26
- package/dist/ReadQuery-C_or5nLC.d.ts +128 -0
- package/dist/ReadQuery-DXLzCE0E.d.cts +614 -0
- package/dist/ReadQuery-DXLzCE0E.d.ts +614 -0
- package/dist/ReadQuery-Yve1lmUo.d.cts +128 -0
- package/dist/ReadQuery.cjs +290 -5
- package/dist/ReadQuery.cjs.map +1 -1
- package/dist/ReadQuery.d.cts +3 -2
- package/dist/ReadQuery.d.ts +3 -2
- package/dist/ReadQuery.js +23 -5
- package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-B2Xi1e4Q.d.ts} +89 -7
- package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DNB4V4_e.d.cts} +89 -7
- package/dist/Reflection.cjs +3227 -1617
- package/dist/Reflection.cjs.map +1 -1
- package/dist/Reflection.d.cts +17 -15
- package/dist/Reflection.d.ts +17 -15
- package/dist/Reflection.js +33 -25
- package/dist/{Resource-Dy1xD_DG.d.cts → Resource-pKvQQ4x5.d.cts} +3 -3
- package/dist/{Resource-Dy1xD_DG.d.ts → Resource-pKvQQ4x5.d.ts} +3 -3
- package/dist/Resource.cjs +781 -15
- package/dist/Resource.cjs.map +1 -1
- package/dist/Resource.d.cts +1 -1
- package/dist/Resource.d.ts +1 -1
- package/dist/Resource.js +6 -3
- package/dist/{Root-7ADUMk4t.d.cts → Root-CCVuFHB6.d.cts} +3 -3
- package/dist/{Root-7ADUMk4t.d.ts → Root-CCVuFHB6.d.ts} +3 -3
- package/dist/Root.cjs +786 -20
- package/dist/Root.cjs.map +1 -1
- package/dist/Root.d.cts +2 -2
- package/dist/Root.d.ts +2 -2
- package/dist/Root.js +7 -3
- package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-CRmvwK4I.d.ts} +70 -14
- package/dist/{Runtime-B-aL-f29.d.cts → Runtime-C_wJM9mN.d.cts} +70 -14
- package/dist/Runtime.cjs +4942 -1601
- package/dist/Runtime.cjs.map +1 -1
- package/dist/Runtime.d.cts +17 -15
- package/dist/Runtime.d.ts +17 -15
- package/dist/Runtime.js +44 -32
- package/dist/{ScopeRegistry-D1owDNSm.d.cts → ScopeRegistry-BhYzqWri.d.cts} +6 -6
- package/dist/{ScopeRegistry-D1owDNSm.d.ts → ScopeRegistry-BhYzqWri.d.ts} +6 -6
- package/dist/ScopeRegistry.cjs +776 -10
- package/dist/ScopeRegistry.cjs.map +1 -1
- package/dist/ScopeRegistry.d.cts +1 -1
- package/dist/ScopeRegistry.d.ts +1 -1
- package/dist/ScopeRegistry.js +6 -3
- package/dist/{State-CU50R26M.d.cts → State-rNFsFPTl.d.cts} +2 -2
- package/dist/{State-CU50R26M.d.ts → State-rNFsFPTl.d.ts} +2 -2
- package/dist/State.cjs.map +1 -1
- package/dist/State.d.cts +1 -1
- package/dist/State.d.ts +1 -1
- package/dist/State.js +1 -1
- package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-CijdwNb6.d.ts} +25 -8
- package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-Dltto6PU.d.cts} +25 -8
- package/dist/StateTrait.cjs +1890 -528
- package/dist/StateTrait.cjs.map +1 -1
- package/dist/StateTrait.d.cts +9 -7
- package/dist/StateTrait.d.ts +9 -7
- package/dist/StateTrait.js +18 -14
- package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-BKzDqzLu.d.cts} +2 -2
- package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-Cvo94uDB.d.ts} +2 -2
- package/dist/TraitLifecycle.cjs +630 -67
- package/dist/TraitLifecycle.cjs.map +1 -1
- package/dist/TraitLifecycle.d.cts +6 -6
- package/dist/TraitLifecycle.d.ts +6 -6
- package/dist/TraitLifecycle.js +8 -7
- package/dist/Workflow-C_OWr4dV.d.ts +415 -0
- package/dist/Workflow-DmydkHO8.d.cts +415 -0
- package/dist/Workflow.cjs +3150 -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 +58 -0
- package/dist/Workflow.js.map +1 -0
- package/dist/{action-DiMDD_0v.d.cts → action-BQxjPFEw.d.cts} +5 -5
- package/dist/{action-DiMDD_0v.d.ts → action-BQxjPFEw.d.ts} +5 -5
- package/dist/chunk-2XRLXDWR.js +276 -0
- package/dist/chunk-2XRLXDWR.js.map +1 -0
- package/dist/chunk-3L6QGFMM.js +701 -0
- package/dist/chunk-3L6QGFMM.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-3IYZ5IGG.js → chunk-5WKUGEBY.js} +2 -2
- package/dist/{chunk-3RMKLXHX.js → chunk-63ZQ5RIN.js} +2 -2
- package/dist/{chunk-M3WTHJHJ.js → chunk-67DIEA53.js} +385 -148
- package/dist/chunk-67DIEA53.js.map +1 -0
- package/dist/{chunk-YS3AZQ2G.js → chunk-6HFAW2MH.js} +1 -1
- package/dist/chunk-6HFAW2MH.js.map +1 -0
- package/dist/{chunk-EY4NZKDR.js → chunk-6Y2TKCNY.js} +2 -2
- package/dist/{chunk-76WT3HOR.js → chunk-6YZOXFPQ.js} +25 -24
- package/dist/chunk-6YZOXFPQ.js.map +1 -0
- package/dist/{chunk-G5ZBFPNU.js → chunk-A2RQOJC7.js} +2 -2
- package/dist/{chunk-AUIR5O6W.js → chunk-AFSB6NKM.js} +13 -19
- package/dist/chunk-AFSB6NKM.js.map +1 -0
- package/dist/{chunk-JCXGZRMU.js → chunk-AO4JEOKD.js} +22 -23
- package/dist/chunk-AO4JEOKD.js.map +1 -0
- package/dist/{chunk-TAAPQVZN.js → chunk-AYELIQXR.js} +2 -2
- package/dist/{chunk-QMM6O4CD.js → chunk-BLHZW7DG.js} +15 -3
- package/dist/{chunk-QMM6O4CD.js.map → chunk-BLHZW7DG.js.map} +1 -1
- package/dist/{chunk-TQOBJYDP.js → chunk-CD4N74YC.js} +1 -1
- package/dist/chunk-CD4N74YC.js.map +1 -0
- package/dist/{chunk-ANLBCBDC.js → chunk-CGE2HBTH.js} +11 -11
- package/dist/chunk-CGE2HBTH.js.map +1 -0
- package/dist/{chunk-OFADUJWJ.js → chunk-CYYSQMLO.js} +5 -5
- package/dist/chunk-CYYSQMLO.js.map +1 -0
- package/dist/{chunk-66ALHVEX.js → chunk-EB46EYI7.js} +3 -3
- package/dist/{chunk-NZJKFF45.js → chunk-EKCDHWRK.js} +4 -4
- package/dist/chunk-EKCDHWRK.js.map +1 -0
- package/dist/{chunk-BABLDP24.js → chunk-EPQFNJU3.js} +152 -7
- package/dist/chunk-EPQFNJU3.js.map +1 -0
- package/dist/{chunk-OGWBVHB3.js → chunk-ESR6HGOY.js} +73 -14
- package/dist/chunk-ESR6HGOY.js.map +1 -0
- package/dist/{chunk-NBD3KUOZ.js → chunk-F6RP62H3.js} +150 -98
- package/dist/chunk-F6RP62H3.js.map +1 -0
- package/dist/chunk-FBYW3QDI.js +252 -0
- package/dist/chunk-FBYW3QDI.js.map +1 -0
- package/dist/{chunk-IPF7E66P.js → chunk-FYAODKVP.js} +2 -2
- package/dist/chunk-GNEN7NKO.js +908 -0
- package/dist/chunk-GNEN7NKO.js.map +1 -0
- package/dist/chunk-GWSM4KLB.js +763 -0
- package/dist/chunk-GWSM4KLB.js.map +1 -0
- package/dist/{chunk-4SO6JMZL.js → chunk-HDMXCUZL.js} +1 -1
- package/dist/chunk-HDMXCUZL.js.map +1 -0
- package/dist/{chunk-ZFY7U2FR.js → chunk-HJM5Y5NU.js} +43 -3
- package/dist/chunk-HJM5Y5NU.js.map +1 -0
- package/dist/{chunk-ZGDVUPTM.js → chunk-IOZ3VKPK.js} +129 -68
- package/dist/chunk-IOZ3VKPK.js.map +1 -0
- package/dist/{chunk-PYOE4VSI.js → chunk-IVXSVHO4.js} +303 -247
- package/dist/chunk-IVXSVHO4.js.map +1 -0
- package/dist/chunk-J3CWXIPV.js +242 -0
- package/dist/chunk-J3CWXIPV.js.map +1 -0
- package/dist/chunk-K6JQW266.js +42 -0
- package/dist/chunk-K6JQW266.js.map +1 -0
- package/dist/chunk-KMZYQF6Q.js +202 -0
- package/dist/chunk-KMZYQF6Q.js.map +1 -0
- package/dist/{chunk-JWOYLO27.js → chunk-LPPZDFTD.js} +22 -12
- package/dist/chunk-LPPZDFTD.js.map +1 -0
- package/dist/{chunk-PAYXCY6A.js → chunk-MYB2B5WX.js} +997 -576
- package/dist/chunk-MYB2B5WX.js.map +1 -0
- package/dist/chunk-MYKNINNN.js +228 -0
- package/dist/chunk-MYKNINNN.js.map +1 -0
- package/dist/chunk-NSQIRMVF.js +27 -0
- package/dist/{chunk-QCHIQWAJ.js.map → chunk-NSQIRMVF.js.map} +1 -1
- package/dist/chunk-NUDBM4MM.js +30 -0
- package/dist/chunk-NUDBM4MM.js.map +1 -0
- package/dist/chunk-NZMWWDAY.js +23 -0
- package/dist/chunk-NZMWWDAY.js.map +1 -0
- package/dist/{chunk-RNFE3ML2.js → chunk-OCUV2Y25.js} +4 -3
- package/dist/chunk-OCUV2Y25.js.map +1 -0
- package/dist/chunk-P4ZJOQA7.js +271 -0
- package/dist/chunk-P4ZJOQA7.js.map +1 -0
- package/dist/chunk-P6C5EZ3D.js +342 -0
- package/dist/chunk-P6C5EZ3D.js.map +1 -0
- package/dist/{chunk-CW6T36TN.js → chunk-PBD7BJUN.js} +62 -4
- package/dist/chunk-PBD7BJUN.js.map +1 -0
- package/dist/chunk-PBIUCQY3.js +696 -0
- package/dist/chunk-PBIUCQY3.js.map +1 -0
- package/dist/chunk-PD6YECQH.js +845 -0
- package/dist/chunk-PD6YECQH.js.map +1 -0
- package/dist/{chunk-M7IYCTJV.js → chunk-R4LFQGP3.js} +2 -2
- package/dist/chunk-RHJIGDUE.js +21 -0
- package/dist/chunk-RHJIGDUE.js.map +1 -0
- package/dist/{chunk-KP7MUZNX.js → chunk-RLXO27MW.js} +30 -8
- package/dist/chunk-RLXO27MW.js.map +1 -0
- package/dist/{chunk-DFNM3WX2.js → chunk-S44BEV4B.js} +168 -45
- package/dist/chunk-S44BEV4B.js.map +1 -0
- package/dist/chunk-S4S5N4BJ.js +1461 -0
- package/dist/chunk-S4S5N4BJ.js.map +1 -0
- package/dist/{chunk-BZ2SHDN2.js → chunk-SGTRAXXX.js} +3 -3
- package/dist/chunk-SGTRAXXX.js.map +1 -0
- package/dist/{chunk-M2RGJPXX.js → chunk-SJAE5PB5.js} +3 -3
- package/dist/{chunk-JGIWG6SR.js → chunk-SNPNHU3H.js} +3937 -1776
- package/dist/chunk-SNPNHU3H.js.map +1 -0
- package/dist/{chunk-IHVBV5C2.js → chunk-SOOBFXRR.js} +94 -71
- package/dist/chunk-SOOBFXRR.js.map +1 -0
- package/dist/{chunk-ZDTRWK5F.js → chunk-TAHFWKS6.js} +2 -2
- package/dist/chunk-UEFFTVPY.js +9 -0
- package/dist/chunk-UEFFTVPY.js.map +1 -0
- package/dist/{chunk-24VULZ7A.js → chunk-UR5BXLBP.js} +3 -3
- package/dist/chunk-UR5BXLBP.js.map +1 -0
- package/dist/{chunk-DMBALCE2.js → chunk-V2SBGVDO.js} +471 -186
- package/dist/chunk-V2SBGVDO.js.map +1 -0
- package/dist/chunk-VJLWD47W.js +23 -0
- package/dist/chunk-VJLWD47W.js.map +1 -0
- package/dist/{chunk-4CQAV7YB.js → chunk-W647DX5Z.js} +2 -2
- package/dist/{chunk-THATMZXD.js → chunk-WFIIU3YZ.js} +2 -2
- package/dist/{chunk-THATMZXD.js.map → chunk-WFIIU3YZ.js.map} +1 -1
- package/dist/chunk-YZDJMAKL.js +82 -0
- package/dist/chunk-YZDJMAKL.js.map +1 -0
- package/dist/{chunk-3TMODYZV.js → chunk-Z5XH6VHY.js} +5 -5
- package/dist/chunk-Z5XH6VHY.js.map +1 -0
- package/dist/{chunk-BE3HW4FY.js → chunk-ZBBMZMA6.js} +377 -170
- package/dist/chunk-ZBBMZMA6.js.map +1 -0
- package/dist/index.cjs +21224 -11714
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +195 -49
- package/dist/index.d.ts +195 -49
- package/dist/index.js +150 -74
- package/dist/index.js.map +1 -1
- package/dist/{ir-BMP7yxJJ.d.cts → ir-BSosEwc8.d.cts} +1 -1
- package/dist/{ir-DUOz6H-5.d.ts → ir-D-uqwL_4.d.ts} +1 -1
- package/dist/{module-B8CBqIZ_.d.cts → module-Ds4tarcI.d.cts} +230 -140
- package/dist/{module-k7m3txak.d.ts → module-Zd1Gn-Nj.d.ts} +230 -140
- package/package.json +20 -4
- package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
- package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
- package/dist/Observability-COqEvp2C.d.cts +0 -713
- package/dist/Observability-cY4kLn0S.d.ts +0 -713
- package/dist/ReadQuery-BlMwhe-F.d.ts +0 -30
- package/dist/ReadQuery-CL5XlXts.d.cts +0 -30
- package/dist/ReadQuery-SinbStGF.d.cts +0 -38
- package/dist/ReadQuery-SinbStGF.d.ts +0 -38
- package/dist/chunk-24VULZ7A.js.map +0 -1
- package/dist/chunk-3QMIVH35.js +0 -43
- package/dist/chunk-3QMIVH35.js.map +0 -1
- package/dist/chunk-3TMODYZV.js.map +0 -1
- package/dist/chunk-4SO6JMZL.js.map +0 -1
- package/dist/chunk-76WT3HOR.js.map +0 -1
- package/dist/chunk-ANLBCBDC.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-BZ2SHDN2.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 +0 -406
- 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-KL5ACTCT.js +0 -8
- package/dist/chunk-KL5ACTCT.js.map +0 -1
- package/dist/chunk-KP7MUZNX.js.map +0 -1
- package/dist/chunk-M3BFQ7HK.js +0 -13
- package/dist/chunk-M3BFQ7HK.js.map +0 -1
- package/dist/chunk-M3WTHJHJ.js.map +0 -1
- package/dist/chunk-NBD3KUOZ.js.map +0 -1
- package/dist/chunk-NQZ2OSGR.js +0 -151
- package/dist/chunk-NQZ2OSGR.js.map +0 -1
- package/dist/chunk-NZJKFF45.js.map +0 -1
- package/dist/chunk-OFADUJWJ.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-RNFE3ML2.js.map +0 -1
- package/dist/chunk-TKZ7MEIA.js +0 -27
- package/dist/chunk-TKZ7MEIA.js.map +0 -1
- package/dist/chunk-TQOBJYDP.js.map +0 -1
- 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-YS3AZQ2G.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-ZGDVUPTM.js.map +0 -1
- package/dist/protocol-g_1897M2.d.cts +0 -127
- package/dist/protocol-g_1897M2.d.ts +0 -127
- /package/dist/{chunk-3IYZ5IGG.js.map → chunk-5WKUGEBY.js.map} +0 -0
- /package/dist/{chunk-3RMKLXHX.js.map → chunk-63ZQ5RIN.js.map} +0 -0
- /package/dist/{chunk-EY4NZKDR.js.map → chunk-6Y2TKCNY.js.map} +0 -0
- /package/dist/{chunk-G5ZBFPNU.js.map → chunk-A2RQOJC7.js.map} +0 -0
- /package/dist/{chunk-TAAPQVZN.js.map → chunk-AYELIQXR.js.map} +0 -0
- /package/dist/{chunk-66ALHVEX.js.map → chunk-EB46EYI7.js.map} +0 -0
- /package/dist/{chunk-IPF7E66P.js.map → chunk-FYAODKVP.js.map} +0 -0
- /package/dist/{chunk-M7IYCTJV.js.map → chunk-R4LFQGP3.js.map} +0 -0
- /package/dist/{chunk-M2RGJPXX.js.map → chunk-SJAE5PB5.js.map} +0 -0
- /package/dist/{chunk-ZDTRWK5F.js.map → chunk-TAHFWKS6.js.map} +0 -0
- /package/dist/{chunk-4CQAV7YB.js.map → chunk-W647DX5Z.js.map} +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
link,
|
|
3
|
+
linkDeclarative
|
|
4
|
+
} from "./chunk-P4ZJOQA7.js";
|
|
5
|
+
import {
|
|
6
|
+
__export
|
|
7
|
+
} from "./chunk-PZ5AY32C.js";
|
|
8
|
+
|
|
9
|
+
// src/Link.ts
|
|
10
|
+
var Link_exports = {};
|
|
11
|
+
__export(Link_exports, {
|
|
12
|
+
make: () => make,
|
|
13
|
+
makeDeclarative: () => makeDeclarative
|
|
14
|
+
});
|
|
15
|
+
function make(config, logic) {
|
|
16
|
+
return link(config, logic);
|
|
17
|
+
}
|
|
18
|
+
function makeDeclarative(config, build) {
|
|
19
|
+
return linkDeclarative(config, build);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
make,
|
|
24
|
+
makeDeclarative,
|
|
25
|
+
Link_exports
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=chunk-NSQIRMVF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Link.ts"],"sourcesContent":["import type { Effect } from 'effect'\nimport * as Process from './Process.js'\nimport type { AnyModuleShape, ModuleLike, ModuleHandle, ModuleTag } from './internal/module.js'\n\ntype LinkModuleToken<Id extends string, Sh extends AnyModuleShape> = ModuleTag<Id, Sh> | ModuleLike<Id, Sh, object>\n\ntype LinkModuleIdOf<M> = M extends { readonly id: infer Id } ? Id : never\ntype LinkModuleShapeOf<M> =\n M extends ModuleLike<string, infer Sh, object> ? Sh : M extends ModuleTag<string, infer Sh> ? Sh : never\n\n/**\n * Link.make config:\n * - modules: modules participating in this Link.\n * - Keys come from module ids (e.g. the `\"User\"` in `Logix.Module.make(\"User\", ...)`).\n */\nexport interface LinkConfig<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> {\n /**\n * Link identifier.\n * - Optional; defaults to a stable string derived from participating `modules.id`.\n * - Intended for Universe / DevTools display and navigation.\n */\n readonly id?: string\n readonly modules: Ms\n}\n\n/**\n * Handle view exposed to Link logic, derived from the module list:\n * - key: module id.\n * - value: read-only handle of that module.\n */\nexport type LinkHandles<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: ModuleHandle<LinkModuleShapeOf<M>>\n}\n\n/**\n * Link.make:\n * - Creates a Link (cross-module glue logic) from a module list and a logic program.\n * - Returns a \"cold\" Effect, typically attached via `ModuleImpl.implement({ processes/links })` and forked by the runtime.\n */\nexport function make<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[], E = never, R = never>(\n config: LinkConfig<Ms>,\n logic: ($: LinkHandles<Ms>) => Effect.Effect<void, E, R>,\n): Effect.Effect<void, E, R> {\n // Link.make is an alias; it delegates to Process.link (unifying the static surface and runtime recognition).\n return Process.link(config as any, logic as any) as Effect.Effect<void, E, R>\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/Link.ts"],"sourcesContent":["import type { Effect } from 'effect'\nimport * as Process from './Process.js'\nimport type { AnyModuleShape, ModuleLike, ModuleHandle, ModuleTag } from './internal/module.js'\n\ntype LinkModuleToken<Id extends string, Sh extends AnyModuleShape> = ModuleTag<Id, Sh> | ModuleLike<Id, Sh, object>\n\ntype LinkModuleIdOf<M> = M extends { readonly id: infer Id } ? Id : never\ntype LinkModuleShapeOf<M> =\n M extends ModuleLike<string, infer Sh, object> ? Sh : M extends ModuleTag<string, infer Sh> ? Sh : never\n\n/**\n * Link.make config:\n * - modules: modules participating in this Link.\n * - Keys come from module ids (e.g. the `\"User\"` in `Logix.Module.make(\"User\", ...)`).\n */\nexport interface LinkConfig<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> {\n /**\n * Link identifier.\n * - Optional; defaults to a stable string derived from participating `modules.id`.\n * - Intended for Universe / DevTools display and navigation.\n */\n readonly id?: string\n readonly modules: Ms\n}\n\n/**\n * Handle view exposed to Link logic, derived from the module list:\n * - key: module id.\n * - value: read-only handle of that module.\n */\nexport type LinkHandles<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: ModuleHandle<LinkModuleShapeOf<M>>\n}\n\n/**\n * Link.make:\n * - Creates a Link (cross-module glue logic) from a module list and a logic program.\n * - Returns a \"cold\" Effect, typically attached via `ModuleImpl.implement({ processes/links })` and forked by the runtime.\n */\nexport function make<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[], E = never, R = never>(\n config: LinkConfig<Ms>,\n logic: ($: LinkHandles<Ms>) => Effect.Effect<void, E, R>,\n): Effect.Effect<void, E, R> {\n // Link.make is an alias; it delegates to Process.link (unifying the static surface and runtime recognition).\n return Process.link(config as any, logic as any) as Effect.Effect<void, E, R>\n}\n\n/**\n * Link.makeDeclarative:\n * - A controlled builder that generates DeclarativeLinkIR (ReadQuery/static deps -> dispatch only).\n * - Strong consistency applies to this IR; prefer it when you need same-tick cross-module convergence.\n */\nexport function makeDeclarative<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]>(\n config: LinkConfig<Ms>,\n build: (args: any) => ReadonlyArray<any>,\n): Effect.Effect<void, never, never> {\n return Process.linkDeclarative(config as any, build as any) as Effect.Effect<void, never, never>\n}\n"],"mappings":";;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAuCO,SAAS,KACd,QACA,OAC2B;AAE3B,SAAe,KAAK,QAAe,KAAY;AACjD;AAOO,SAAS,gBACd,QACA,OACmC;AACnC,SAAe,gBAAgB,QAAe,KAAY;AAC5D;","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// src/internal/runtime/core/LogicUnitMeta.ts
|
|
2
|
+
var LOGIC_UNIT_META = /* @__PURE__ */ Symbol.for("logix.module.logic.meta");
|
|
3
|
+
var getLogicUnitMeta = (logic) => {
|
|
4
|
+
if (!logic || typeof logic !== "object" && typeof logic !== "function") {
|
|
5
|
+
return void 0;
|
|
6
|
+
}
|
|
7
|
+
return logic[LOGIC_UNIT_META];
|
|
8
|
+
};
|
|
9
|
+
var attachLogicUnitMeta = (logic, meta) => {
|
|
10
|
+
try {
|
|
11
|
+
Object.defineProperty(logic, LOGIC_UNIT_META, {
|
|
12
|
+
value: meta,
|
|
13
|
+
enumerable: false,
|
|
14
|
+
configurable: true
|
|
15
|
+
});
|
|
16
|
+
} catch {
|
|
17
|
+
}
|
|
18
|
+
return logic;
|
|
19
|
+
};
|
|
20
|
+
var updateLogicUnitMeta = (logic, patch) => {
|
|
21
|
+
const prev = getLogicUnitMeta(logic);
|
|
22
|
+
return attachLogicUnitMeta(logic, { ...prev ?? {}, ...patch });
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
getLogicUnitMeta,
|
|
27
|
+
attachLogicUnitMeta,
|
|
28
|
+
updateLogicUnitMeta
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=chunk-NUDBM4MM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/runtime/core/LogicUnitMeta.ts"],"sourcesContent":["export type LogicUnitIdKind = 'explicit' | 'derived'\n\nexport type LogicUnitSource = {\n readonly file: string\n readonly line: number\n readonly column: number\n}\n\nexport type LogicUnitMeta = {\n /**\n * Default id (from module.logic(build, { id })):\n * - Used for id resolution during the mount phase (priority: mount explicit > default id > derived id).\n */\n readonly id?: string\n readonly kind?: string\n readonly name?: string\n readonly source?: LogicUnitSource\n readonly moduleId?: string\n\n /**\n * Resolved id (the final logicUnitId after mounting):\n * - Computed during the mount phase by Module.withLogic/withLogics.\n * - Serves as a stable provenance anchor (aligned with specs/022-module).\n */\n readonly resolvedId?: string\n readonly resolvedIdKind?: LogicUnitIdKind\n readonly resolvedKind?: string\n readonly resolvedName?: string\n readonly resolvedSource?: LogicUnitSource\n}\n\nexport const LOGIC_UNIT_META = Symbol.for('logix.module.logic.meta')\n\nexport const getLogicUnitMeta = (logic: unknown): LogicUnitMeta | undefined => {\n if (!logic || (typeof logic !== 'object' && typeof logic !== 'function')) {\n return undefined\n }\n return (logic as any)[LOGIC_UNIT_META] as LogicUnitMeta | undefined\n}\n\nexport const attachLogicUnitMeta = <L extends object>(logic: L, meta: LogicUnitMeta): L => {\n try {\n Object.defineProperty(logic, LOGIC_UNIT_META, {\n value: meta,\n enumerable: false,\n configurable: true,\n })\n } catch {\n // best-effort: if the underlying object is non-extensible, we still return it.\n }\n return logic\n}\n\nexport const updateLogicUnitMeta = <L extends object>(logic: L, patch: Partial<LogicUnitMeta>): L => {\n const prev = getLogicUnitMeta(logic)\n return attachLogicUnitMeta(logic, { ...(prev ?? {}), ...patch })\n}\n"],"mappings":";AA+BO,IAAM,kBAAkB,uBAAO,IAAI,yBAAyB;AAE5D,IAAM,mBAAmB,CAAC,UAA8C;AAC7E,MAAI,CAAC,SAAU,OAAO,UAAU,YAAY,OAAO,UAAU,YAAa;AACxE,WAAO;AAAA,EACT;AACA,SAAQ,MAAc,eAAe;AACvC;AAEO,IAAM,sBAAsB,CAAmB,OAAU,SAA2B;AACzF,MAAI;AACF,WAAO,eAAe,OAAO,iBAAiB;AAAA,MAC5C,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AAAA,EACH,QAAQ;AAAA,EAER;AACA,SAAO;AACT;AAEO,IAAM,sBAAsB,CAAmB,OAAU,UAAqC;AACnG,QAAM,OAAO,iBAAiB,KAAK;AACnC,SAAO,oBAAoB,OAAO,EAAE,GAAI,QAAQ,CAAC,GAAI,GAAG,MAAM,CAAC;AACjE;","names":[]}
|
|
@@ -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-NZMWWDAY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/external-store-descriptor.ts"],"sourcesContent":["import type { ServiceMap, Stream } from 'effect'\nimport type * as LogixModule from './module.js'\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: ServiceMap.Key<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: LogixModule.ReadonlySubscriptionRef<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":";AAiDO,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":[]}
|
|
@@ -8,8 +8,9 @@ __export(Logic_exports, {
|
|
|
8
8
|
RuntimeTag: () => RuntimeTag,
|
|
9
9
|
of: () => of
|
|
10
10
|
});
|
|
11
|
-
import {
|
|
12
|
-
var RuntimeTag =
|
|
11
|
+
import { ServiceMap } from "effect";
|
|
12
|
+
var RuntimeTag = class extends ServiceMap.Service()("@logixjs/Runtime") {
|
|
13
|
+
};
|
|
13
14
|
function of(eff) {
|
|
14
15
|
return eff;
|
|
15
16
|
}
|
|
@@ -19,4 +20,4 @@ export {
|
|
|
19
20
|
of,
|
|
20
21
|
Logic_exports
|
|
21
22
|
};
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
23
|
+
//# sourceMappingURL=chunk-OCUV2Y25.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Logic.ts"],"sourcesContent":["import { Effect, ServiceMap } from 'effect'\nimport type * as Logix from './internal/module.js'\nimport * as Internal from './internal/LogicMiddleware.js'\nimport * as PlatformInternal from './internal/platform/Platform.js'\n\nexport * from './internal/LogicMiddleware.js'\n\n// Logic: a long-running Effect program scoped to a module shape.\n\n/**\n * Core Tag for retrieving the current ModuleRuntime within a Logic scope.\n */\nexport class RuntimeTag extends ServiceMap.Service<RuntimeTag, Logix.ModuleRuntime<any, any>>()('@logixjs/Runtime') {}\n\n// Public Platform alias (equivalent to internal/platform/Platform.Service).\nexport type Platform = PlatformInternal.Service\n\n// Logic Env / Of aliases: point to internal versions to avoid multiple definitions.\nexport type Env<Sh extends Logix.AnyModuleShape, R> = Internal.Env<Sh, R>\n\nexport type Of<Sh extends Logix.AnyModuleShape, R = never, A = void, E = never> = Internal.Of<Sh, R, A, E>\n\nexport function of<Sh extends Logix.AnyModuleShape, R = never, A = void, E = never>(\n eff: Effect.Effect<A, E, Env<Sh, R>>,\n): Of<Sh, R, A, E> {\n return eff as Of<Sh, R, A, E>\n}\n\n// DSL type aliases: reuse internal definitions directly.\nexport type Draft<T> = Internal.Draft<T>\nexport type IntentBuilder<Payload, Sh extends Logix.AnyModuleShape, R = never> = Internal.IntentBuilder<Payload, Sh, R>\nexport type FluentMatch<V> = Internal.FluentMatch<V>\nexport type FluentMatchTag<V extends { _tag: string }> = Internal.FluentMatchTag<V>\n\n// Remaining implementation details (IntentBuilder factories, etc.) are composed in internal/runtime.\n// Application code should use this module via Module.logic and Bound API, without depending on internal construction.\n"],"mappings":";;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAiB,kBAAkB;AAY5B,IAAM,aAAN,cAAyB,WAAW,QAAmD,EAAE,kBAAkB,EAAE;AAAC;AAU9G,SAAS,GACd,KACiB;AACjB,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Link
|
|
3
|
+
} from "./chunk-AO4JEOKD.js";
|
|
4
|
+
import {
|
|
5
|
+
attachMeta,
|
|
6
|
+
getDefinition,
|
|
7
|
+
getMeta
|
|
8
|
+
} from "./chunk-MYB2B5WX.js";
|
|
9
|
+
import {
|
|
10
|
+
currentConvergeStaticIrCollectors
|
|
11
|
+
} from "./chunk-RHJIGDUE.js";
|
|
12
|
+
import {
|
|
13
|
+
DeclarativeLinkRuntimeTag
|
|
14
|
+
} from "./chunk-S4S5N4BJ.js";
|
|
15
|
+
import {
|
|
16
|
+
compile
|
|
17
|
+
} from "./chunk-KMZYQF6Q.js";
|
|
18
|
+
import {
|
|
19
|
+
currentDiagnosticsLevel,
|
|
20
|
+
record
|
|
21
|
+
} from "./chunk-V2SBGVDO.js";
|
|
22
|
+
import {
|
|
23
|
+
fnv1a32,
|
|
24
|
+
stableStringify
|
|
25
|
+
} from "./chunk-4MZ7BT3R.js";
|
|
26
|
+
import {
|
|
27
|
+
__export
|
|
28
|
+
} from "./chunk-PZ5AY32C.js";
|
|
29
|
+
|
|
30
|
+
// src/Process.ts
|
|
31
|
+
var Process_exports = {};
|
|
32
|
+
__export(Process_exports, {
|
|
33
|
+
attachMeta: () => attachMeta2,
|
|
34
|
+
getDefinition: () => getDefinition2,
|
|
35
|
+
getMeta: () => getMeta2,
|
|
36
|
+
link: () => link,
|
|
37
|
+
linkDeclarative: () => linkDeclarative,
|
|
38
|
+
make: () => make
|
|
39
|
+
});
|
|
40
|
+
import { Effect } from "effect";
|
|
41
|
+
|
|
42
|
+
// src/internal/runtime/core/DeclarativeLinkIR.ts
|
|
43
|
+
var getDeclarativeLinkIrDigest = (ir) => `dlink_ir_v1:${fnv1a32(stableStringify(ir))}`;
|
|
44
|
+
var exportDeclarativeLinkIr = (args) => ({
|
|
45
|
+
staticIrDigest: getDeclarativeLinkIrDigest(args.ir),
|
|
46
|
+
moduleId: `link:${args.linkId}`,
|
|
47
|
+
instanceId: "runtime",
|
|
48
|
+
kind: "declarativeLinkIr",
|
|
49
|
+
ir: args.ir
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// src/Process.ts
|
|
53
|
+
var DEFAULT_TRIGGERS = [{ kind: "platformEvent", platformEvent: "runtime:boot" }];
|
|
54
|
+
var normalizeDefinition = (input) => {
|
|
55
|
+
const base = typeof input === "string" ? { processId: input } : input;
|
|
56
|
+
const processId = base.processId;
|
|
57
|
+
if (typeof processId !== "string" || processId.length === 0) {
|
|
58
|
+
throw new Error("[Process.make] processId must be a non-empty string");
|
|
59
|
+
}
|
|
60
|
+
const triggers = Array.isArray(base.triggers) && base.triggers.length > 0 ? base.triggers : DEFAULT_TRIGGERS;
|
|
61
|
+
const concurrency = base.concurrency ?? { mode: "latest" };
|
|
62
|
+
const errorPolicy = base.errorPolicy ?? { mode: "failStop" };
|
|
63
|
+
const diagnosticsLevel = base.diagnosticsLevel ?? "off";
|
|
64
|
+
return {
|
|
65
|
+
processId,
|
|
66
|
+
name: base.name,
|
|
67
|
+
description: base.description,
|
|
68
|
+
requires: base.requires,
|
|
69
|
+
triggers,
|
|
70
|
+
concurrency,
|
|
71
|
+
errorPolicy,
|
|
72
|
+
diagnosticsLevel
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
var make = (definition, effect) => attachMeta(effect, {
|
|
76
|
+
definition: normalizeDefinition(definition),
|
|
77
|
+
kind: "process"
|
|
78
|
+
});
|
|
79
|
+
var getDefinition2 = (effect) => getDefinition(effect);
|
|
80
|
+
var getMeta2 = (effect) => getMeta(effect);
|
|
81
|
+
var attachMeta2 = (effect, meta) => attachMeta(effect, meta);
|
|
82
|
+
var isModuleLike = (value) => Boolean(value) && typeof value === "object" && (value._kind === "ModuleDef" || value._kind === "Module") && "tag" in value;
|
|
83
|
+
var unwrapModuleTag = (module) => {
|
|
84
|
+
if (isModuleLike(module)) {
|
|
85
|
+
return module.tag;
|
|
86
|
+
}
|
|
87
|
+
return module;
|
|
88
|
+
};
|
|
89
|
+
function link(config, logic) {
|
|
90
|
+
const linkId = config.id ?? [...config.modules].map((m) => m.id).sort().join("~");
|
|
91
|
+
const modulesRecord = /* @__PURE__ */ Object.create(null);
|
|
92
|
+
const requires = /* @__PURE__ */ new Set();
|
|
93
|
+
for (const module of config.modules) {
|
|
94
|
+
const tag = unwrapModuleTag(module);
|
|
95
|
+
requires.add(String(tag.id));
|
|
96
|
+
modulesRecord[tag.id] = tag;
|
|
97
|
+
}
|
|
98
|
+
const effect = Link(
|
|
99
|
+
modulesRecord,
|
|
100
|
+
logic
|
|
101
|
+
);
|
|
102
|
+
const wrapped = Effect.gen(function* () {
|
|
103
|
+
const level = yield* Effect.service(currentDiagnosticsLevel).pipe(Effect.orDie);
|
|
104
|
+
if (level !== "off") {
|
|
105
|
+
yield* record({
|
|
106
|
+
type: "diagnostic",
|
|
107
|
+
moduleId: `link:${linkId}`,
|
|
108
|
+
code: "process_link::blackbox_best_effort",
|
|
109
|
+
severity: "info",
|
|
110
|
+
message: "[Process.link] Blackbox link is best-effort and is NOT stabilized within the same tick. Strong consistency applies only to declarative IR.",
|
|
111
|
+
hint: "If you need same-tick strong consistency, migrate to Process.linkDeclarative(...) (073).",
|
|
112
|
+
kind: "blackbox_link_boundary"
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return yield* effect;
|
|
116
|
+
});
|
|
117
|
+
const definition = {
|
|
118
|
+
processId: linkId,
|
|
119
|
+
requires: Array.from(requires),
|
|
120
|
+
triggers: [...DEFAULT_TRIGGERS, { kind: "platformEvent", platformEvent: `link:${linkId}` }],
|
|
121
|
+
concurrency: { mode: "latest" },
|
|
122
|
+
errorPolicy: { mode: "failStop" },
|
|
123
|
+
diagnosticsLevel: "off"
|
|
124
|
+
};
|
|
125
|
+
return attachMeta(wrapped, {
|
|
126
|
+
definition,
|
|
127
|
+
kind: "link"
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function linkDeclarative(config, build) {
|
|
131
|
+
const linkId = config.id ?? [...config.modules].map((m) => m.id).sort().join("~");
|
|
132
|
+
const modulesRecord = /* @__PURE__ */ Object.create(null);
|
|
133
|
+
const requires = /* @__PURE__ */ new Set();
|
|
134
|
+
for (const module of config.modules) {
|
|
135
|
+
const tag = unwrapModuleTag(module);
|
|
136
|
+
requires.add(String(tag.id));
|
|
137
|
+
modulesRecord[tag.id] = tag;
|
|
138
|
+
}
|
|
139
|
+
const handles = /* @__PURE__ */ Object.create(null);
|
|
140
|
+
for (const id of Object.keys(modulesRecord)) {
|
|
141
|
+
const tag = modulesRecord[id];
|
|
142
|
+
handles[id] = {
|
|
143
|
+
read: (selector) => {
|
|
144
|
+
const compiled = compile(selector);
|
|
145
|
+
const staticIr = compiled.staticIr;
|
|
146
|
+
const ok = staticIr.lane === "static" && staticIr.readsDigest != null && staticIr.fallbackReason == null;
|
|
147
|
+
if (!ok) {
|
|
148
|
+
throw new Error(
|
|
149
|
+
`[Process.linkDeclarative] ReadQuery must be static with readsDigest (moduleId=${id}, selectorId=${staticIr.selectorId}, lane=${staticIr.lane}, fallbackReason=${staticIr.fallbackReason}). Fix: use ReadQuery.make(...) or annotate selector.fieldPaths.`
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
return { _tag: "readNode", moduleId: id, tag, readQuery: compiled };
|
|
153
|
+
},
|
|
154
|
+
dispatch: (actionTag) => {
|
|
155
|
+
if (typeof actionTag !== "string" || actionTag.length === 0) {
|
|
156
|
+
throw new Error("[Process.linkDeclarative] actionTag must be a non-empty string");
|
|
157
|
+
}
|
|
158
|
+
return { _tag: "dispatchNode", moduleId: id, tag, actionTag };
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const edges = build(handles);
|
|
163
|
+
if (!Array.isArray(edges)) {
|
|
164
|
+
throw new Error("[Process.linkDeclarative] build(...) must return an array of edges");
|
|
165
|
+
}
|
|
166
|
+
const normalized = edges.filter((e) => Boolean(e && e.from && e.to)).map((e) => {
|
|
167
|
+
if (e.from._tag !== "readNode" || e.to._tag !== "dispatchNode") {
|
|
168
|
+
throw new Error("[Process.linkDeclarative] Invalid edge spec returned from build(...)");
|
|
169
|
+
}
|
|
170
|
+
return e;
|
|
171
|
+
}).slice().sort((a, b) => {
|
|
172
|
+
const ak = `${a.from.moduleId}:${a.from.readQuery.staticIr.selectorId}->${a.to.moduleId}:${a.to.actionTag}`;
|
|
173
|
+
const bk = `${b.from.moduleId}:${b.from.readQuery.staticIr.selectorId}->${b.to.moduleId}:${b.to.actionTag}`;
|
|
174
|
+
return ak < bk ? -1 : ak > bk ? 1 : 0;
|
|
175
|
+
});
|
|
176
|
+
const program = Effect.gen(function* () {
|
|
177
|
+
const runtime = yield* Effect.service(DeclarativeLinkRuntimeTag).pipe(Effect.orDie);
|
|
178
|
+
const collectors = yield* Effect.service(currentConvergeStaticIrCollectors).pipe(Effect.orDie);
|
|
179
|
+
const runtimeByTag = /* @__PURE__ */ new Map();
|
|
180
|
+
const resolveRuntime = (tag) => Effect.suspend(() => {
|
|
181
|
+
const cached = runtimeByTag.get(tag);
|
|
182
|
+
if (cached) return Effect.succeed(cached);
|
|
183
|
+
return Effect.service(tag).pipe(
|
|
184
|
+
Effect.tap(
|
|
185
|
+
(rt) => Effect.sync(() => {
|
|
186
|
+
runtimeByTag.set(tag, rt);
|
|
187
|
+
})
|
|
188
|
+
)
|
|
189
|
+
);
|
|
190
|
+
});
|
|
191
|
+
const nodes = [];
|
|
192
|
+
const irEdges = [];
|
|
193
|
+
const readNodes = [];
|
|
194
|
+
const dispatchNodes = [];
|
|
195
|
+
for (let i = 0; i < normalized.length; i += 1) {
|
|
196
|
+
const edge = normalized[i];
|
|
197
|
+
const fromRuntime = yield* resolveRuntime(edge.from.tag);
|
|
198
|
+
const toRuntime = yield* resolveRuntime(edge.to.tag);
|
|
199
|
+
const fromKey = `${fromRuntime.moduleId}::${fromRuntime.instanceId}`;
|
|
200
|
+
const readNodeId = `r${i}`;
|
|
201
|
+
const dispatchNodeId = `d${i}`;
|
|
202
|
+
nodes.push({
|
|
203
|
+
id: readNodeId,
|
|
204
|
+
kind: "readQuery",
|
|
205
|
+
moduleId: fromRuntime.moduleId,
|
|
206
|
+
instanceKey: fromRuntime.instanceId,
|
|
207
|
+
readQuery: edge.from.readQuery.staticIr
|
|
208
|
+
});
|
|
209
|
+
nodes.push({
|
|
210
|
+
id: dispatchNodeId,
|
|
211
|
+
kind: "dispatch",
|
|
212
|
+
moduleId: toRuntime.moduleId,
|
|
213
|
+
instanceKey: toRuntime.instanceId,
|
|
214
|
+
actionTag: edge.to.actionTag
|
|
215
|
+
});
|
|
216
|
+
irEdges.push({ from: readNodeId, to: dispatchNodeId });
|
|
217
|
+
readNodes.push({ nodeId: readNodeId, moduleInstanceKey: fromKey, readQuery: edge.from.readQuery });
|
|
218
|
+
dispatchNodes.push({
|
|
219
|
+
nodeId: dispatchNodeId,
|
|
220
|
+
dispatch: (payload) => toRuntime.dispatch({ _tag: edge.to.actionTag, payload }).pipe(Effect.asVoid)
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
const ir = {
|
|
224
|
+
version: 1,
|
|
225
|
+
nodes,
|
|
226
|
+
edges: irEdges
|
|
227
|
+
};
|
|
228
|
+
const registration = {
|
|
229
|
+
linkId,
|
|
230
|
+
ir,
|
|
231
|
+
readNodes,
|
|
232
|
+
dispatchNodes
|
|
233
|
+
};
|
|
234
|
+
const unregister = runtime.registerDeclarativeLink(registration);
|
|
235
|
+
if (collectors.length > 0) {
|
|
236
|
+
const exported = exportDeclarativeLinkIr({ linkId, ir });
|
|
237
|
+
for (const collector of collectors) {
|
|
238
|
+
collector.register(exported);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
yield* Effect.addFinalizer(
|
|
242
|
+
() => Effect.sync(() => {
|
|
243
|
+
unregister();
|
|
244
|
+
})
|
|
245
|
+
);
|
|
246
|
+
yield* Effect.never;
|
|
247
|
+
});
|
|
248
|
+
const definition = {
|
|
249
|
+
processId: `dlink:${linkId}`,
|
|
250
|
+
requires: Array.from(requires),
|
|
251
|
+
triggers: DEFAULT_TRIGGERS,
|
|
252
|
+
concurrency: { mode: "latest" },
|
|
253
|
+
errorPolicy: { mode: "failStop" },
|
|
254
|
+
diagnosticsLevel: "off"
|
|
255
|
+
};
|
|
256
|
+
return attachMeta(program, {
|
|
257
|
+
definition,
|
|
258
|
+
kind: "declarativeLink"
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export {
|
|
263
|
+
make,
|
|
264
|
+
getDefinition2 as getDefinition,
|
|
265
|
+
getMeta2 as getMeta,
|
|
266
|
+
attachMeta2 as attachMeta,
|
|
267
|
+
link,
|
|
268
|
+
linkDeclarative,
|
|
269
|
+
Process_exports
|
|
270
|
+
};
|
|
271
|
+
//# sourceMappingURL=chunk-P4ZJOQA7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Process.ts","../src/internal/runtime/core/DeclarativeLinkIR.ts"],"sourcesContent":["import { Effect } from 'effect'\nimport * as ModuleFactory from './internal/runtime/ModuleFactory.js'\nimport * as Debug from './internal/runtime/core/DebugSink.js'\nimport { currentConvergeStaticIrCollectors } from './internal/runtime/core/ConvergeStaticIrCollector.js'\nimport { exportDeclarativeLinkIr, type DeclarativeLinkIR } from './internal/runtime/core/DeclarativeLinkIR.js'\nimport { DeclarativeLinkRuntimeTag } from './internal/runtime/core/env.js'\nimport type * as Protocol from './internal/runtime/core/process/protocol.js'\nimport * as Meta from './internal/runtime/core/process/meta.js'\nimport type { AnyModuleShape, ModuleHandle, ModuleLike, ModuleTag } from './internal/module.js'\nimport * as ReadQuery from './ReadQuery.js'\n\nexport type DiagnosticsLevel = Protocol.DiagnosticsLevel\nexport type ProcessScope = Protocol.ProcessScope\nexport type ProcessIdentity = Protocol.ProcessIdentity\nexport type ProcessInstanceIdentity = Protocol.ProcessInstanceIdentity\nexport type ProcessTriggerSpec = Protocol.ProcessTriggerSpec\nexport type ProcessTrigger = Protocol.ProcessTrigger\nexport type ProcessConcurrencyPolicy = Protocol.ProcessConcurrencyPolicy\nexport type ProcessErrorPolicy = Protocol.ProcessErrorPolicy\nexport type ProcessDefinition = Protocol.ProcessDefinition\nexport type ProcessInstallation = Protocol.ProcessInstallation\nexport type SerializableErrorSummary = Protocol.SerializableErrorSummary\nexport type ProcessInstanceStatus = Protocol.ProcessInstanceStatus\nexport type ProcessEvent = Protocol.ProcessEvent\nexport type ProcessControlRequest = Protocol.ProcessControlRequest\nexport type ProcessPlatformEvent = Protocol.ProcessPlatformEvent\n\nexport type ProcessEffect<E = never, R = never> = Meta.ProcessEffect<E, R>\n\nexport type ProcessMakeDefinition =\n | string\n | {\n readonly processId: string\n readonly name?: string\n readonly description?: string\n readonly requires?: ReadonlyArray<string>\n readonly triggers?: ReadonlyArray<ProcessTriggerSpec>\n readonly concurrency?: ProcessConcurrencyPolicy\n readonly errorPolicy?: ProcessErrorPolicy\n readonly diagnosticsLevel?: DiagnosticsLevel\n }\n\nconst DEFAULT_TRIGGERS: ReadonlyArray<ProcessTriggerSpec> = [{ kind: 'platformEvent', platformEvent: 'runtime:boot' }]\n\nconst normalizeDefinition = (input: ProcessMakeDefinition): ProcessDefinition => {\n const base = typeof input === 'string' ? ({ processId: input } satisfies { readonly processId: string }) : input\n\n const processId = base.processId\n if (typeof processId !== 'string' || processId.length === 0) {\n throw new Error('[Process.make] processId must be a non-empty string')\n }\n\n const triggers = Array.isArray(base.triggers) && base.triggers.length > 0 ? base.triggers : DEFAULT_TRIGGERS\n\n const concurrency = base.concurrency ?? ({ mode: 'latest' } satisfies ProcessConcurrencyPolicy)\n const errorPolicy = base.errorPolicy ?? ({ mode: 'failStop' } satisfies ProcessErrorPolicy)\n const diagnosticsLevel = base.diagnosticsLevel ?? 'off'\n\n return {\n processId,\n name: base.name,\n description: base.description,\n requires: base.requires,\n triggers,\n concurrency,\n errorPolicy,\n diagnosticsLevel,\n }\n}\n\nexport const make = <E, R>(definition: ProcessMakeDefinition, effect: Effect.Effect<void, E, R>): ProcessEffect<E, R> =>\n Meta.attachMeta(effect, {\n definition: normalizeDefinition(definition),\n kind: 'process',\n })\n\nexport const getDefinition = (effect: Effect.Effect<void, any, any>): ProcessDefinition | undefined =>\n Meta.getDefinition(effect)\n\nexport const getMeta = (effect: Effect.Effect<void, any, any>): Meta.ProcessMeta | undefined => Meta.getMeta(effect)\n\nexport const attachMeta = <E, R>(effect: Effect.Effect<void, E, R>, meta: Meta.ProcessMeta): ProcessEffect<E, R> =>\n Meta.attachMeta(effect, meta)\n\ntype LinkModuleToken<Id extends string, Sh extends AnyModuleShape> = ModuleTag<Id, Sh> | ModuleLike<Id, Sh, object>\n\ntype LinkModuleIdOf<M> = M extends { readonly id: infer Id } ? Id : never\ntype LinkModuleShapeOf<M> =\n M extends ModuleLike<string, infer Sh, object> ? Sh : M extends ModuleTag<string, infer Sh> ? Sh : never\ntype LinkModuleTagOf<M> =\n M extends ModuleLike<string, infer Sh, object>\n ? ModuleTag<string, Sh>\n : M extends ModuleTag<string, AnyModuleShape>\n ? M\n : never\n\nconst isModuleLike = (value: unknown): value is ModuleLike<string, AnyModuleShape, object> =>\n Boolean(value) &&\n typeof value === 'object' &&\n ((value as { readonly _kind?: unknown })._kind === 'ModuleDef' ||\n (value as { readonly _kind?: unknown })._kind === 'Module') &&\n 'tag' in (value as object)\n\nconst unwrapModuleTag = <Id extends string, Sh extends AnyModuleShape>(\n module: LinkModuleToken<Id, Sh>,\n): ModuleTag<Id, Sh> => {\n if (isModuleLike(module)) {\n return module.tag\n }\n return module as ModuleTag<Id, Sh>\n}\n\nexport interface LinkConfig<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> {\n readonly id?: string\n readonly modules: Ms\n}\n\nexport type LinkHandles<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: ModuleHandle<LinkModuleShapeOf<M>>\n}\n\ntype ModulesRecord<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: LinkModuleTagOf<M>\n}\n\nexport function link<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[], E = never, R = never>(\n config: LinkConfig<Ms>,\n logic: ($: LinkHandles<Ms>) => Effect.Effect<void, E, R>,\n): ProcessEffect<E, R> {\n const linkId =\n config.id ??\n [...config.modules]\n .map((m) => m.id)\n .sort()\n .join('~')\n\n const modulesRecord = Object.create(null) as ModulesRecord<Ms>\n const requires = new Set<string>()\n\n for (const module of config.modules) {\n const tag = unwrapModuleTag(module)\n requires.add(String(tag.id))\n ;(modulesRecord as Record<string, ModuleTag<string, AnyModuleShape>>)[tag.id] = tag as unknown as ModuleTag<\n string,\n AnyModuleShape\n >\n }\n\n const effect = ModuleFactory.Link(\n modulesRecord as unknown as Record<string, ModuleTag<string, AnyModuleShape>>,\n logic as unknown as ($: Record<string, ModuleHandle<AnyModuleShape>>) => Effect.Effect<void, E, R>,\n )\n\n const wrapped = Effect.gen(function* () {\n const level = yield* Effect.service(Debug.currentDiagnosticsLevel).pipe(Effect.orDie)\n if (level !== 'off') {\n yield* Debug.record({\n type: 'diagnostic',\n moduleId: `link:${linkId}`,\n code: 'process_link::blackbox_best_effort',\n severity: 'info',\n message:\n '[Process.link] Blackbox link is best-effort and is NOT stabilized within the same tick. Strong consistency applies only to declarative IR.',\n hint: 'If you need same-tick strong consistency, migrate to Process.linkDeclarative(...) (073).',\n kind: 'blackbox_link_boundary',\n })\n }\n return yield* effect\n }) as unknown as Effect.Effect<void, E, R>\n\n const definition: ProcessDefinition = {\n processId: linkId,\n requires: Array.from(requires),\n triggers: [...DEFAULT_TRIGGERS, { kind: 'platformEvent', platformEvent: `link:${linkId}` }],\n concurrency: { mode: 'latest' },\n errorPolicy: { mode: 'failStop' },\n diagnosticsLevel: 'off',\n }\n\n return Meta.attachMeta(wrapped, {\n definition,\n kind: 'link',\n }) as ProcessEffect<E, R>\n}\n\ntype DeclarativeReadNode = {\n readonly _tag: 'readNode'\n readonly moduleId: string\n readonly tag: ModuleTag<string, AnyModuleShape>\n readonly readQuery: ReadQuery.ReadQueryCompiled<any, any>\n}\n\ntype DeclarativeDispatchNode = {\n readonly _tag: 'dispatchNode'\n readonly moduleId: string\n readonly tag: ModuleTag<string, AnyModuleShape>\n readonly actionTag: string\n}\n\ntype DeclarativeLinkEdgeSpec = {\n readonly from: DeclarativeReadNode\n readonly to: DeclarativeDispatchNode\n}\n\ntype DeclarativeLinkHandles<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]> = {\n [M in Ms[number] as LinkModuleIdOf<M>]: {\n readonly read: <S, V>(selector: ReadQuery.ReadQueryInput<S, V>) => DeclarativeReadNode\n readonly dispatch: (actionTag: string) => DeclarativeDispatchNode\n }\n}\n\nexport function linkDeclarative<Ms extends readonly LinkModuleToken<string, AnyModuleShape>[]>(\n config: LinkConfig<Ms>,\n build: ($: DeclarativeLinkHandles<Ms>) => ReadonlyArray<DeclarativeLinkEdgeSpec>,\n): ProcessEffect<never, never> {\n const linkId =\n config.id ??\n [...config.modules]\n .map((m) => m.id)\n .sort()\n .join('~')\n\n const modulesRecord = Object.create(null) as ModulesRecord<Ms>\n const requires = new Set<string>()\n\n for (const module of config.modules) {\n const tag = unwrapModuleTag(module)\n requires.add(String(tag.id))\n ;(modulesRecord as Record<string, ModuleTag<string, AnyModuleShape>>)[tag.id] = tag as unknown as ModuleTag<\n string,\n AnyModuleShape\n >\n }\n\n const handles = Object.create(null) as DeclarativeLinkHandles<Ms>\n for (const id of Object.keys(modulesRecord) as Array<keyof ModulesRecord<Ms> & string>) {\n const tag = (modulesRecord as any)[id] as ModuleTag<string, AnyModuleShape>\n ;(handles as any)[id] = {\n read: (selector: ReadQuery.ReadQueryInput<any, any>) => {\n const compiled = ReadQuery.compile(selector)\n const staticIr = compiled.staticIr\n const ok = staticIr.lane === 'static' && staticIr.readsDigest != null && staticIr.fallbackReason == null\n if (!ok) {\n throw new Error(\n `[Process.linkDeclarative] ReadQuery must be static with readsDigest (moduleId=${id}, selectorId=${staticIr.selectorId}, lane=${staticIr.lane}, fallbackReason=${staticIr.fallbackReason}). ` +\n 'Fix: use ReadQuery.make(...) or annotate selector.fieldPaths.',\n )\n }\n return { _tag: 'readNode', moduleId: id, tag, readQuery: compiled } as DeclarativeReadNode\n },\n dispatch: (actionTag: string) => {\n if (typeof actionTag !== 'string' || actionTag.length === 0) {\n throw new Error('[Process.linkDeclarative] actionTag must be a non-empty string')\n }\n return { _tag: 'dispatchNode', moduleId: id, tag, actionTag } as DeclarativeDispatchNode\n },\n }\n }\n\n const edges = build(handles)\n if (!Array.isArray(edges)) {\n throw new Error('[Process.linkDeclarative] build(...) must return an array of edges')\n }\n\n const normalized = edges\n .filter((e): e is DeclarativeLinkEdgeSpec => Boolean(e && e.from && e.to))\n .map((e) => {\n if (e.from._tag !== 'readNode' || e.to._tag !== 'dispatchNode') {\n throw new Error('[Process.linkDeclarative] Invalid edge spec returned from build(...)')\n }\n return e\n })\n .slice()\n .sort((a, b) => {\n const ak = `${a.from.moduleId}:${a.from.readQuery.staticIr.selectorId}->${a.to.moduleId}:${a.to.actionTag}`\n const bk = `${b.from.moduleId}:${b.from.readQuery.staticIr.selectorId}->${b.to.moduleId}:${b.to.actionTag}`\n return ak < bk ? -1 : ak > bk ? 1 : 0\n })\n\n const program: Effect.Effect<void, never, any> = Effect.gen(function* () {\n const runtime = yield* Effect.service(DeclarativeLinkRuntimeTag).pipe(Effect.orDie)\n const collectors = yield* Effect.service(currentConvergeStaticIrCollectors).pipe(Effect.orDie)\n\n const runtimeByTag = new Map<ModuleTag<string, AnyModuleShape>, any>()\n const resolveRuntime = (tag: ModuleTag<string, AnyModuleShape>): Effect.Effect<any, never, any> =>\n Effect.suspend(() => {\n const cached = runtimeByTag.get(tag)\n if (cached) return Effect.succeed(cached)\n return Effect.service(tag as any).pipe(\n Effect.tap((rt: any) =>\n Effect.sync(() => {\n runtimeByTag.set(tag, rt)\n }),\n ),\n )\n })\n\n const nodes: Array<any> = []\n const irEdges: Array<any> = []\n const readNodes: Array<any> = []\n const dispatchNodes: Array<any> = []\n\n for (let i = 0; i < normalized.length; i += 1) {\n const edge = normalized[i]\n const fromRuntime = yield* resolveRuntime(edge.from.tag)\n const toRuntime = yield* resolveRuntime(edge.to.tag)\n\n const fromKey = `${fromRuntime.moduleId}::${fromRuntime.instanceId}`\n const readNodeId = `r${i}`\n const dispatchNodeId = `d${i}`\n\n nodes.push({\n id: readNodeId,\n kind: 'readQuery',\n moduleId: fromRuntime.moduleId,\n instanceKey: fromRuntime.instanceId,\n readQuery: edge.from.readQuery.staticIr,\n })\n nodes.push({\n id: dispatchNodeId,\n kind: 'dispatch',\n moduleId: toRuntime.moduleId,\n instanceKey: toRuntime.instanceId,\n actionTag: edge.to.actionTag,\n })\n\n irEdges.push({ from: readNodeId, to: dispatchNodeId })\n\n readNodes.push({ nodeId: readNodeId, moduleInstanceKey: fromKey, readQuery: edge.from.readQuery })\n dispatchNodes.push({\n nodeId: dispatchNodeId,\n dispatch: (payload: unknown) =>\n (toRuntime.dispatch({ _tag: edge.to.actionTag, payload } as any) as any).pipe(Effect.asVoid),\n })\n }\n\n const ir: DeclarativeLinkIR = {\n version: 1,\n nodes,\n edges: irEdges,\n }\n\n const registration = {\n linkId,\n ir,\n readNodes,\n dispatchNodes,\n } as const\n\n const unregister = runtime.registerDeclarativeLink(registration as any)\n\n if (collectors.length > 0) {\n const exported = exportDeclarativeLinkIr({ linkId, ir })\n for (const collector of collectors) {\n collector.register(exported as any)\n }\n }\n\n yield* Effect.addFinalizer(() =>\n Effect.sync(() => {\n unregister()\n }),\n )\n\n yield* Effect.never\n })\n\n const definition: ProcessDefinition = {\n processId: `dlink:${linkId}`,\n requires: Array.from(requires),\n triggers: DEFAULT_TRIGGERS,\n concurrency: { mode: 'latest' },\n errorPolicy: { mode: 'failStop' },\n diagnosticsLevel: 'off',\n }\n\n return Meta.attachMeta(program, {\n definition,\n kind: 'declarativeLink',\n }) as ProcessEffect<never, never>\n}\n","import { fnv1a32, stableStringify } from '../../digest.js'\nimport type { ReadQueryStaticIr } from './ReadQuery.js'\n\nexport type DeclarativeLinkNodeId = string\n\nexport type DeclarativeLinkNode =\n | {\n readonly id: DeclarativeLinkNodeId\n readonly kind: 'readQuery'\n readonly moduleId: string\n readonly instanceKey?: string\n /** MUST reuse `ReadQueryStaticIr` (no parallel selector-like IR). */\n readonly readQuery: ReadQueryStaticIr\n }\n | {\n readonly id: DeclarativeLinkNodeId\n readonly kind: 'dispatch'\n readonly moduleId: string\n readonly instanceKey?: string\n readonly actionTag: string\n }\n\nexport type DeclarativeLinkEdge = {\n readonly from: DeclarativeLinkNodeId\n readonly to: DeclarativeLinkNodeId\n}\n\n/**\n * DeclarativeLinkIR (v1):\n * - JSON serializable, IR-recognizable cross-module dependency graph.\n * - Read side: static ReadQuery only (must include readsDigest, no fallbackReason).\n * - Write side: dispatch only (no direct state writes).\n */\nexport interface DeclarativeLinkIR {\n readonly version: 1\n readonly nodes: ReadonlyArray<DeclarativeLinkNode>\n readonly edges: ReadonlyArray<DeclarativeLinkEdge>\n}\n\nexport const getDeclarativeLinkIrDigest = (ir: DeclarativeLinkIR): string =>\n `dlink_ir_v1:${fnv1a32(stableStringify(ir))}`\n\n/**\n * Export envelope compatible with the ConvergeStaticIrCollector bus:\n * - EvidenceCollector indexes by `staticIrDigest`.\n */\nexport interface DeclarativeLinkIrExport {\n readonly staticIrDigest: string\n readonly moduleId: string\n readonly instanceId: string\n readonly kind: 'declarativeLinkIr'\n readonly ir: DeclarativeLinkIR\n}\n\nexport const exportDeclarativeLinkIr = (args: { readonly linkId: string; readonly ir: DeclarativeLinkIR }): DeclarativeLinkIrExport => ({\n staticIrDigest: getDeclarativeLinkIrDigest(args.ir),\n moduleId: `link:${args.linkId}`,\n instanceId: 'runtime',\n kind: 'declarativeLinkIr',\n ir: args.ir,\n})\n\n"],"mappings":"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","names":["attachMeta","getDefinition","getMeta","getDefinition","getMeta","attachMeta"]}
|