@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,342 @@
|
|
|
1
|
+
import {
|
|
2
|
+
installOne
|
|
3
|
+
} from "./chunk-PD6YECQH.js";
|
|
4
|
+
import {
|
|
5
|
+
compileWorkflowStaticIrV1,
|
|
6
|
+
makeWorkflowError,
|
|
7
|
+
normalizeWorkflowDefV1,
|
|
8
|
+
validateWorkflowDefV1
|
|
9
|
+
} from "./chunk-3L6QGFMM.js";
|
|
10
|
+
import {
|
|
11
|
+
fromTag
|
|
12
|
+
} from "./chunk-VJLWD47W.js";
|
|
13
|
+
import {
|
|
14
|
+
__export
|
|
15
|
+
} from "./chunk-PZ5AY32C.js";
|
|
16
|
+
|
|
17
|
+
// src/Workflow.ts
|
|
18
|
+
var Workflow_exports = {};
|
|
19
|
+
__export(Workflow_exports, {
|
|
20
|
+
KernelPorts: () => KernelPorts,
|
|
21
|
+
call: () => call,
|
|
22
|
+
callById: () => callById,
|
|
23
|
+
compose: () => compose,
|
|
24
|
+
constValue: () => constValue,
|
|
25
|
+
delay: () => delay,
|
|
26
|
+
dispatch: () => dispatch,
|
|
27
|
+
forModule: () => forModule,
|
|
28
|
+
fragment: () => fragment,
|
|
29
|
+
fromJSON: () => fromJSON,
|
|
30
|
+
make: () => make,
|
|
31
|
+
merge: () => merge,
|
|
32
|
+
object: () => object,
|
|
33
|
+
onAction: () => onAction,
|
|
34
|
+
onInit: () => onInit,
|
|
35
|
+
onStart: () => onStart,
|
|
36
|
+
payload: () => payload,
|
|
37
|
+
payloadPath: () => payloadPath,
|
|
38
|
+
withPolicy: () => withPolicy
|
|
39
|
+
});
|
|
40
|
+
import { ServiceMap } from "effect";
|
|
41
|
+
var KernelSourceRefreshPortTagImpl = class extends ServiceMap.Service()("logix/kernel/sourceRefresh") {
|
|
42
|
+
};
|
|
43
|
+
var KernelPorts = {
|
|
44
|
+
sourceRefresh: KernelSourceRefreshPortTagImpl
|
|
45
|
+
};
|
|
46
|
+
var forModule = (_module) => {
|
|
47
|
+
return {
|
|
48
|
+
onAction: (actionTag) => onAction(actionTag),
|
|
49
|
+
onStart,
|
|
50
|
+
onInit,
|
|
51
|
+
payload,
|
|
52
|
+
payloadPath,
|
|
53
|
+
constValue,
|
|
54
|
+
object,
|
|
55
|
+
merge,
|
|
56
|
+
dispatch: (args) => dispatch(args),
|
|
57
|
+
delay,
|
|
58
|
+
callById: (args) => callById(args),
|
|
59
|
+
call: (args) => call(args),
|
|
60
|
+
fragment: (fragmentId, steps) => fragment(fragmentId, steps),
|
|
61
|
+
withPolicy: (patch, part) => withPolicy(patch, part),
|
|
62
|
+
compose: (...parts) => compose(...parts),
|
|
63
|
+
make: (input) => make(input),
|
|
64
|
+
fromJSON: (def) => fromJSON(def)
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68
|
+
var isReadonlyArray = (value) => Array.isArray(value);
|
|
69
|
+
var asNonEmptyString = (value) => typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
|
|
70
|
+
var mergePolicy = (base, patch) => {
|
|
71
|
+
if (!base && !patch) return void 0;
|
|
72
|
+
return {
|
|
73
|
+
...base ?? {},
|
|
74
|
+
...patch ?? {}
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
var applyCallDefaults = (steps, patch) => {
|
|
78
|
+
const timeoutMsDefault = patch.timeoutMs;
|
|
79
|
+
const retryDefault = patch.retry;
|
|
80
|
+
const visit = (step) => {
|
|
81
|
+
if (step.kind !== "call") return step;
|
|
82
|
+
let changed = false;
|
|
83
|
+
const timeoutMs = step.timeoutMs ?? timeoutMsDefault;
|
|
84
|
+
if (timeoutMs !== step.timeoutMs) changed = true;
|
|
85
|
+
const retry = step.retry ?? retryDefault;
|
|
86
|
+
if (retry !== step.retry) changed = true;
|
|
87
|
+
const onSuccess = step.onSuccess.map(visit);
|
|
88
|
+
const onFailure = step.onFailure.map(visit);
|
|
89
|
+
if (onSuccess !== step.onSuccess) changed = true;
|
|
90
|
+
if (onFailure !== step.onFailure) changed = true;
|
|
91
|
+
if (!changed) return step;
|
|
92
|
+
return {
|
|
93
|
+
...step,
|
|
94
|
+
...timeoutMs !== void 0 ? { timeoutMs } : null,
|
|
95
|
+
...retry !== void 0 ? { retry } : null,
|
|
96
|
+
onSuccess,
|
|
97
|
+
onFailure
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
return steps.map(visit);
|
|
101
|
+
};
|
|
102
|
+
var resolveStepsInput = (input) => {
|
|
103
|
+
if (Array.isArray(input)) {
|
|
104
|
+
return { steps: input };
|
|
105
|
+
}
|
|
106
|
+
if (isRecord(input) && Array.isArray(input.steps)) {
|
|
107
|
+
return input;
|
|
108
|
+
}
|
|
109
|
+
throw makeWorkflowError({
|
|
110
|
+
code: "WORKFLOW_INVALID_DEF",
|
|
111
|
+
message: 'Workflow.make: "steps" must be an array or a { steps, sources?, policy? } object.',
|
|
112
|
+
detail: { steps: input }
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
var recordSourcesForFragment = (sources, fragmentId, step) => {
|
|
116
|
+
sources[step.key] = { fragmentId };
|
|
117
|
+
if (step.kind !== "call") return;
|
|
118
|
+
for (const inner of step.onSuccess) recordSourcesForFragment(sources, fragmentId, inner);
|
|
119
|
+
for (const inner of step.onFailure) recordSourcesForFragment(sources, fragmentId, inner);
|
|
120
|
+
};
|
|
121
|
+
var onAction = (actionTag) => ({
|
|
122
|
+
kind: "action",
|
|
123
|
+
actionTag
|
|
124
|
+
});
|
|
125
|
+
var onStart = () => ({
|
|
126
|
+
kind: "lifecycle",
|
|
127
|
+
phase: "onStart"
|
|
128
|
+
});
|
|
129
|
+
var onInit = () => ({
|
|
130
|
+
kind: "lifecycle",
|
|
131
|
+
phase: "onInit"
|
|
132
|
+
});
|
|
133
|
+
var payload = () => ({ kind: "payload" });
|
|
134
|
+
var payloadPath = (pointer) => ({ kind: "payload.path", pointer });
|
|
135
|
+
var constValue = (value) => ({ kind: "const", value });
|
|
136
|
+
var object = (fields) => ({ kind: "object", fields });
|
|
137
|
+
var merge = (items) => ({ kind: "merge", items });
|
|
138
|
+
var dispatch = (args) => ({
|
|
139
|
+
kind: "dispatch",
|
|
140
|
+
key: args.key,
|
|
141
|
+
actionTag: args.actionTag,
|
|
142
|
+
...args.payload ? { payload: args.payload } : null
|
|
143
|
+
});
|
|
144
|
+
var delay = (args) => ({
|
|
145
|
+
kind: "delay",
|
|
146
|
+
key: args.key,
|
|
147
|
+
ms: args.ms
|
|
148
|
+
});
|
|
149
|
+
var callById = (args) => ({
|
|
150
|
+
kind: "call",
|
|
151
|
+
key: args.key,
|
|
152
|
+
serviceId: args.serviceId,
|
|
153
|
+
...args.input ? { input: args.input } : null,
|
|
154
|
+
...args.timeoutMs !== void 0 ? { timeoutMs: args.timeoutMs } : null,
|
|
155
|
+
...args.retry ? { retry: args.retry } : null,
|
|
156
|
+
onSuccess: args.onSuccess ?? [],
|
|
157
|
+
onFailure: args.onFailure ?? []
|
|
158
|
+
});
|
|
159
|
+
var call = (args) => {
|
|
160
|
+
const serviceId = fromTag(args.service);
|
|
161
|
+
if (!serviceId) {
|
|
162
|
+
throw makeWorkflowError({
|
|
163
|
+
code: "WORKFLOW_INVALID_SERVICE_ID",
|
|
164
|
+
message: "call(service): serviceId derived from tag must be a non-empty string (see 078 ServiceId contract).",
|
|
165
|
+
detail: { tag: String(args.service) }
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
return callById({
|
|
169
|
+
...args,
|
|
170
|
+
serviceId
|
|
171
|
+
});
|
|
172
|
+
};
|
|
173
|
+
var fragment = (fragmentId, steps) => ({
|
|
174
|
+
fragmentId,
|
|
175
|
+
steps
|
|
176
|
+
});
|
|
177
|
+
var withPolicy = (patch, part) => {
|
|
178
|
+
let normalized;
|
|
179
|
+
if (isReadonlyArray(part)) {
|
|
180
|
+
normalized = { steps: part };
|
|
181
|
+
} else {
|
|
182
|
+
const partUnknown = part;
|
|
183
|
+
if (!isRecord(partUnknown) || !isReadonlyArray(partUnknown.steps)) {
|
|
184
|
+
throw makeWorkflowError({
|
|
185
|
+
code: "WORKFLOW_INVALID_DEF",
|
|
186
|
+
message: "withPolicy: invalid workflow part (expected steps[] / fragment / composeResult).",
|
|
187
|
+
detail: { part }
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
normalized = {
|
|
191
|
+
steps: part.steps,
|
|
192
|
+
...part.sources ? { sources: part.sources } : null,
|
|
193
|
+
...part.policy ? { policy: part.policy } : null
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const steps = applyCallDefaults(normalized.steps, patch);
|
|
197
|
+
const patchPolicy = (() => {
|
|
198
|
+
const concurrency = patch.concurrency;
|
|
199
|
+
const priority = patch.priority;
|
|
200
|
+
return concurrency !== void 0 || priority !== void 0 ? { concurrency, priority } : void 0;
|
|
201
|
+
})();
|
|
202
|
+
const nextPolicy = mergePolicy(patchPolicy, normalized.policy);
|
|
203
|
+
return {
|
|
204
|
+
steps,
|
|
205
|
+
...normalized.sources ? { sources: normalized.sources } : null,
|
|
206
|
+
...nextPolicy ? { policy: nextPolicy } : null
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
var compose = (...parts) => {
|
|
210
|
+
const steps = [];
|
|
211
|
+
const sources = {};
|
|
212
|
+
let policy = void 0;
|
|
213
|
+
const ownersByKey = /* @__PURE__ */ new Map();
|
|
214
|
+
const recordOwner = (stepKey, fragmentId) => {
|
|
215
|
+
const list = ownersByKey.get(stepKey) ?? [];
|
|
216
|
+
list.push({ stepKey, ...fragmentId ? { fragmentId } : null });
|
|
217
|
+
ownersByKey.set(stepKey, list);
|
|
218
|
+
};
|
|
219
|
+
const recordOwners = (step, resolveFragmentId) => {
|
|
220
|
+
recordOwner(step.key, resolveFragmentId(step.key));
|
|
221
|
+
if (step.kind !== "call") return;
|
|
222
|
+
for (const inner of step.onSuccess) recordOwners(inner, resolveFragmentId);
|
|
223
|
+
for (const inner of step.onFailure) recordOwners(inner, resolveFragmentId);
|
|
224
|
+
};
|
|
225
|
+
for (const part of parts) {
|
|
226
|
+
if (isReadonlyArray(part)) {
|
|
227
|
+
steps.push(...part);
|
|
228
|
+
for (const step of part) recordOwners(step, () => void 0);
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
const partSteps = part.steps;
|
|
232
|
+
steps.push(...partSteps);
|
|
233
|
+
const partSources = part.sources;
|
|
234
|
+
if (partSources && typeof partSources === "object") {
|
|
235
|
+
for (const k of Object.keys(partSources).sort()) {
|
|
236
|
+
sources[k] = { ...partSources[k] };
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
const fragmentId = "fragmentId" in part ? part.fragmentId : void 0;
|
|
240
|
+
if (typeof fragmentId === "string" && fragmentId.length > 0) {
|
|
241
|
+
for (const step of partSteps) {
|
|
242
|
+
recordSourcesForFragment(sources, fragmentId, step);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
const resolveFragmentIdForPart = (stepKey) => {
|
|
246
|
+
if (typeof fragmentId === "string" && fragmentId.length > 0) return fragmentId;
|
|
247
|
+
const fromSources = partSources?.[stepKey]?.fragmentId;
|
|
248
|
+
return typeof fromSources === "string" && fromSources.length > 0 ? fromSources : void 0;
|
|
249
|
+
};
|
|
250
|
+
for (const step of partSteps) recordOwners(step, resolveFragmentIdForPart);
|
|
251
|
+
policy = mergePolicy(policy, part.policy);
|
|
252
|
+
}
|
|
253
|
+
const finalSources = Object.keys(sources).length > 0 ? sources : void 0;
|
|
254
|
+
const duplicateKeys = Array.from(ownersByKey.entries()).filter(([, owners]) => owners.length > 1).map(([k]) => k).sort();
|
|
255
|
+
if (duplicateKeys.length > 0) {
|
|
256
|
+
const k = duplicateKeys[0];
|
|
257
|
+
throw makeWorkflowError({
|
|
258
|
+
code: "WORKFLOW_DUPLICATE_STEP_KEY",
|
|
259
|
+
message: `Duplicate stepKey "${k}" detected during composition.`,
|
|
260
|
+
source: { stepKey: k },
|
|
261
|
+
detail: { duplicateKey: k, owners: ownersByKey.get(k) ?? [] }
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
steps,
|
|
266
|
+
...finalSources ? { sources: finalSources } : null,
|
|
267
|
+
...policy ? { policy } : null
|
|
268
|
+
};
|
|
269
|
+
};
|
|
270
|
+
var make = (input) => {
|
|
271
|
+
const localId = asNonEmptyString(input.localId);
|
|
272
|
+
if (!localId) {
|
|
273
|
+
throw makeWorkflowError({
|
|
274
|
+
code: "WORKFLOW_INVALID_DEF",
|
|
275
|
+
message: "Workflow.make: localId must be a non-empty string.",
|
|
276
|
+
detail: { localId: input.localId }
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
const stepsInput = resolveStepsInput(input.steps);
|
|
280
|
+
const merged = mergePolicy(input.policy, stepsInput.policy);
|
|
281
|
+
const def = normalizeWorkflowDefV1({
|
|
282
|
+
astVersion: 1,
|
|
283
|
+
localId,
|
|
284
|
+
trigger: input.trigger,
|
|
285
|
+
...merged ? { policy: merged } : null,
|
|
286
|
+
steps: stepsInput.steps,
|
|
287
|
+
...stepsInput.sources ? { sources: stepsInput.sources } : null,
|
|
288
|
+
...input.meta ? { meta: input.meta } : null
|
|
289
|
+
});
|
|
290
|
+
const staticIrCache = /* @__PURE__ */ new Map();
|
|
291
|
+
return {
|
|
292
|
+
_tag: "Workflow",
|
|
293
|
+
def,
|
|
294
|
+
toJSON: () => def,
|
|
295
|
+
validate: () => validateWorkflowDefV1(def),
|
|
296
|
+
exportStaticIr: (moduleId) => {
|
|
297
|
+
const cached = staticIrCache.get(moduleId);
|
|
298
|
+
if (cached) return cached;
|
|
299
|
+
const ir = compileWorkflowStaticIrV1({ moduleId, def });
|
|
300
|
+
staticIrCache.set(moduleId, ir);
|
|
301
|
+
return ir;
|
|
302
|
+
},
|
|
303
|
+
install: (moduleTag) => installOne({
|
|
304
|
+
moduleTag,
|
|
305
|
+
program: { _tag: "Workflow", def }
|
|
306
|
+
})
|
|
307
|
+
};
|
|
308
|
+
};
|
|
309
|
+
var fromJSON = (def) => make({
|
|
310
|
+
localId: def.localId,
|
|
311
|
+
trigger: def.trigger,
|
|
312
|
+
...def.policy ? { policy: def.policy } : null,
|
|
313
|
+
steps: {
|
|
314
|
+
steps: def.steps,
|
|
315
|
+
...def.sources ? { sources: def.sources } : null
|
|
316
|
+
},
|
|
317
|
+
...def.meta ? { meta: def.meta } : null
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
export {
|
|
321
|
+
KernelPorts,
|
|
322
|
+
forModule,
|
|
323
|
+
onAction,
|
|
324
|
+
onStart,
|
|
325
|
+
onInit,
|
|
326
|
+
payload,
|
|
327
|
+
payloadPath,
|
|
328
|
+
constValue,
|
|
329
|
+
object,
|
|
330
|
+
merge,
|
|
331
|
+
dispatch,
|
|
332
|
+
delay,
|
|
333
|
+
callById,
|
|
334
|
+
call,
|
|
335
|
+
fragment,
|
|
336
|
+
withPolicy,
|
|
337
|
+
compose,
|
|
338
|
+
make,
|
|
339
|
+
fromJSON,
|
|
340
|
+
Workflow_exports
|
|
341
|
+
};
|
|
342
|
+
//# sourceMappingURL=chunk-P6C5EZ3D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Workflow.ts"],"sourcesContent":["import { ServiceMap } from 'effect'\nimport type { JsonValue } from './internal/observability/jsonValue.js'\nimport { fromTag as serviceIdFromTag } from './internal/serviceId.js'\nimport { makeWorkflowError } from './internal/workflow/errors.js'\nimport type { AnyModuleShape, ModuleLogic, ModuleTag } from './internal/module.js'\nimport type {\n InputExprV1,\n WorkflowComposeResultV1,\n WorkflowDefV1,\n WorkflowFragmentV1,\n WorkflowPartV1,\n WorkflowPolicyV1,\n WorkflowStaticIrV1,\n WorkflowStepV1,\n WorkflowTriggerV1,\n} from './internal/workflow/model.js'\nimport { compileWorkflowStaticIrV1, normalizeWorkflowDefV1, validateWorkflowDefV1 } from './internal/workflow/compiler.js'\nimport * as WorkflowRuntime from './internal/runtime/core/WorkflowRuntime.js'\n\nexport type ActionTagsOfModule<M> = M extends { readonly actions: infer A } ? Extract<keyof A, string> : string\n\nexport type WorkflowTrigger<ActionTag extends string = string> =\n | { readonly kind: 'action'; readonly actionTag: ActionTag }\n | { readonly kind: 'lifecycle'; readonly phase: 'onStart' | 'onInit' }\n\nexport type WorkflowPolicy = WorkflowPolicyV1\n\nexport type WorkflowStep<ActionTag extends string = string> =\n | { readonly kind: 'dispatch'; readonly key: string; readonly actionTag: ActionTag; readonly payload?: InputExprV1 }\n | { readonly kind: 'delay'; readonly key: string; readonly ms: number }\n | {\n readonly kind: 'call'\n readonly key: string\n readonly serviceId: string\n readonly input?: InputExprV1\n readonly timeoutMs?: number\n readonly retry?: { readonly times: number }\n readonly onSuccess: ReadonlyArray<WorkflowStep<ActionTag>>\n readonly onFailure: ReadonlyArray<WorkflowStep<ActionTag>>\n }\n\nexport type WorkflowDef<ActionTag extends string = string> = {\n readonly astVersion: 1\n readonly localId: string\n readonly trigger: WorkflowTrigger<ActionTag>\n readonly policy?: WorkflowPolicyV1\n readonly steps: ReadonlyArray<WorkflowStep<ActionTag>>\n readonly sources?: WorkflowDefV1['sources']\n readonly meta?: { readonly generator?: JsonValue }\n}\n\nexport type WorkflowStaticIr = WorkflowStaticIrV1\nexport type InputExpr = InputExprV1\n\nexport type WorkflowFragment<ActionTag extends string = string> = {\n readonly fragmentId: string\n readonly steps: ReadonlyArray<WorkflowStep<ActionTag>>\n readonly sources?: WorkflowDefV1['sources']\n readonly policy?: WorkflowPolicyV1\n}\n\nexport type WorkflowComposeResult<ActionTag extends string = string> = {\n readonly steps: ReadonlyArray<WorkflowStep<ActionTag>>\n readonly sources?: WorkflowDefV1['sources']\n readonly policy?: WorkflowPolicyV1\n}\n\nexport type WorkflowPart<ActionTag extends string = string> =\n | ReadonlyArray<WorkflowStep<ActionTag>>\n | WorkflowFragment<ActionTag>\n | WorkflowComposeResult<ActionTag>\n\nclass KernelSourceRefreshPortTagImpl extends ServiceMap.Service<\n KernelSourceRefreshPortTagImpl,\n unknown\n>()('logix/kernel/sourceRefresh') {}\n\nexport const KernelPorts = {\n sourceRefresh: KernelSourceRefreshPortTagImpl,\n} as const\n\nexport const forModule = <M extends { readonly actions: Record<string, unknown> }>(_module: M) => {\n type ActionTag = ActionTagsOfModule<M>\n\n return {\n onAction: (actionTag: ActionTag) => onAction(actionTag),\n onStart,\n onInit,\n payload,\n payloadPath,\n constValue,\n object,\n merge,\n dispatch: (args: { readonly key: string; readonly actionTag: ActionTag; readonly payload?: InputExpr }) => dispatch(args),\n delay,\n callById: (args: {\n readonly key: string\n readonly serviceId: string\n readonly input?: InputExpr\n readonly timeoutMs?: number\n readonly retry?: { readonly times: number }\n readonly onSuccess?: ReadonlyArray<WorkflowStep<ActionTag>>\n readonly onFailure?: ReadonlyArray<WorkflowStep<ActionTag>>\n }) => callById<ActionTag>(args),\n call: <Id, Svc>(args: {\n readonly key: string\n readonly service: ServiceMap.Key<Id, Svc>\n readonly input?: InputExpr\n readonly timeoutMs?: number\n readonly retry?: { readonly times: number }\n readonly onSuccess?: ReadonlyArray<WorkflowStep<ActionTag>>\n readonly onFailure?: ReadonlyArray<WorkflowStep<ActionTag>>\n }) => call(args),\n fragment: (fragmentId: string, steps: ReadonlyArray<WorkflowStep<ActionTag>>) => fragment<ActionTag>(fragmentId, steps),\n withPolicy: (patch: WithPolicyPatch, part: WorkflowPart<ActionTag>) => withPolicy<ActionTag>(patch, part),\n compose: (...parts: ReadonlyArray<WorkflowPart<ActionTag>>) => compose<ActionTag>(...parts),\n make: (input: {\n readonly astVersion?: 1\n readonly localId: string\n readonly trigger: WorkflowTrigger<ActionTag>\n readonly policy?: WorkflowPolicy\n readonly steps: WorkflowStepsInput<ActionTag>\n readonly meta?: { readonly generator?: JsonValue }\n }) => make<M>(input),\n fromJSON: (def: WorkflowDef<ActionTag>) => fromJSON<ActionTag>(def),\n } as const\n}\n\nexport type WithPolicyPatch = {\n readonly concurrency?: WorkflowPolicyV1['concurrency']\n readonly priority?: WorkflowPolicyV1['priority']\n /** Default for call.timeoutMs (only fills when step.timeoutMs is missing). */\n readonly timeoutMs?: number\n /** Default for call.retry.times (only fills when step.retry is missing). */\n readonly retry?: { readonly times: number }\n}\n\nexport type WorkflowStepsInput<ActionTag extends string = string> =\n | ReadonlyArray<WorkflowStep<ActionTag>>\n | (WorkflowComposeResult<ActionTag> & {\n readonly steps: ReadonlyArray<WorkflowStep<ActionTag>>\n })\n\nexport interface Workflow {\n readonly _tag: 'Workflow'\n readonly def: WorkflowDefV1\n readonly toJSON: () => WorkflowDefV1\n readonly validate: () => void\n readonly exportStaticIr: (moduleId: string) => WorkflowStaticIrV1\n readonly install: (moduleTag: ModuleTag<string, AnyModuleShape>) => ModuleLogic<AnyModuleShape, unknown, never>\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nconst isReadonlyArray = (value: unknown): value is ReadonlyArray<unknown> => Array.isArray(value)\n\nconst asNonEmptyString = (value: unknown): string | undefined =>\n typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined\n\nconst mergePolicy = (base: WorkflowPolicyV1 | undefined, patch: WorkflowPolicyV1 | undefined): WorkflowPolicyV1 | undefined => {\n if (!base && !patch) return undefined\n return {\n ...(base ?? {}),\n ...(patch ?? {}),\n }\n}\n\nconst applyCallDefaults = (steps: ReadonlyArray<WorkflowStepV1>, patch: WithPolicyPatch): ReadonlyArray<WorkflowStepV1> => {\n const timeoutMsDefault = patch.timeoutMs\n const retryDefault = patch.retry\n\n const visit = (step: WorkflowStepV1): WorkflowStepV1 => {\n if (step.kind !== 'call') return step\n\n let changed = false\n const timeoutMs = step.timeoutMs ?? timeoutMsDefault\n if (timeoutMs !== step.timeoutMs) changed = true\n\n const retry = step.retry ?? retryDefault\n if (retry !== step.retry) changed = true\n\n const onSuccess = step.onSuccess.map(visit)\n const onFailure = step.onFailure.map(visit)\n if (onSuccess !== step.onSuccess) changed = true\n if (onFailure !== step.onFailure) changed = true\n\n if (!changed) return step\n\n return {\n ...step,\n ...(timeoutMs !== undefined ? { timeoutMs } : null),\n ...(retry !== undefined ? { retry } : null),\n onSuccess,\n onFailure,\n }\n }\n\n return steps.map(visit)\n}\n\nconst resolveStepsInput = (input: unknown): WorkflowComposeResultV1 => {\n if (Array.isArray(input)) {\n return { steps: input as ReadonlyArray<WorkflowStepV1> }\n }\n if (isRecord(input) && Array.isArray(input.steps)) {\n return input as WorkflowComposeResultV1\n }\n throw makeWorkflowError({\n code: 'WORKFLOW_INVALID_DEF',\n message: 'Workflow.make: \"steps\" must be an array or a { steps, sources?, policy? } object.',\n detail: { steps: input },\n })\n}\n\nconst recordSourcesForFragment = (\n sources: Record<string, { readonly fragmentId?: string }>,\n fragmentId: string,\n step: WorkflowStepV1,\n): void => {\n sources[step.key] = { fragmentId }\n if (step.kind !== 'call') return\n for (const inner of step.onSuccess) recordSourcesForFragment(sources, fragmentId, inner)\n for (const inner of step.onFailure) recordSourcesForFragment(sources, fragmentId, inner)\n}\n\nexport const onAction = <ActionTag extends string>(actionTag: ActionTag): Extract<WorkflowTrigger<ActionTag>, { kind: 'action' }> => ({\n kind: 'action',\n actionTag,\n})\n\nexport const onStart = (): { readonly kind: 'lifecycle'; readonly phase: 'onStart' } => ({\n kind: 'lifecycle',\n phase: 'onStart',\n})\n\nexport const onInit = (): { readonly kind: 'lifecycle'; readonly phase: 'onInit' } => ({\n kind: 'lifecycle',\n phase: 'onInit',\n})\n\nexport const payload = (): InputExprV1 => ({ kind: 'payload' })\n\nexport const payloadPath = (pointer: string): InputExprV1 => ({ kind: 'payload.path', pointer })\n\nexport const constValue = (value: JsonValue): InputExprV1 => ({ kind: 'const', value })\n\nexport const object = (fields: Record<string, InputExprV1>): InputExprV1 => ({ kind: 'object', fields })\n\nexport const merge = (items: ReadonlyArray<InputExprV1>): InputExprV1 => ({ kind: 'merge', items })\n\nexport const dispatch = <ActionTag extends string>(args: {\n readonly key: string\n readonly actionTag: ActionTag\n readonly payload?: InputExprV1\n}): Extract<WorkflowStep<ActionTag>, { kind: 'dispatch' }> => ({\n kind: 'dispatch',\n key: args.key,\n actionTag: args.actionTag,\n ...(args.payload ? { payload: args.payload } : null),\n})\n\nexport const delay = (args: { readonly key: string; readonly ms: number }): Extract<WorkflowStep, { kind: 'delay' }> => ({\n kind: 'delay',\n key: args.key,\n ms: args.ms,\n})\n\nexport const callById = <ActionTag extends string = never>(args: {\n readonly key: string\n readonly serviceId: string\n readonly input?: InputExprV1\n readonly timeoutMs?: number\n readonly retry?: { readonly times: number }\n readonly onSuccess?: ReadonlyArray<WorkflowStep<ActionTag>>\n readonly onFailure?: ReadonlyArray<WorkflowStep<ActionTag>>\n}): Extract<WorkflowStep<ActionTag>, { kind: 'call' }> => ({\n kind: 'call',\n key: args.key,\n serviceId: args.serviceId,\n ...(args.input ? { input: args.input } : null),\n ...(args.timeoutMs !== undefined ? { timeoutMs: args.timeoutMs } : null),\n ...(args.retry ? { retry: args.retry } : null),\n onSuccess: args.onSuccess ?? [],\n onFailure: args.onFailure ?? [],\n})\n\nexport const call = <Id, Svc, ActionTag extends string = never>(args: {\n readonly key: string\n readonly service: ServiceMap.Key<Id, Svc>\n readonly input?: InputExprV1\n readonly timeoutMs?: number\n readonly retry?: { readonly times: number }\n readonly onSuccess?: ReadonlyArray<WorkflowStep<ActionTag>>\n readonly onFailure?: ReadonlyArray<WorkflowStep<ActionTag>>\n}): Extract<WorkflowStep<ActionTag>, { kind: 'call' }> => {\n const serviceId = serviceIdFromTag(args.service)\n if (!serviceId) {\n throw makeWorkflowError({\n code: 'WORKFLOW_INVALID_SERVICE_ID',\n message: 'call(service): serviceId derived from tag must be a non-empty string (see 078 ServiceId contract).',\n detail: { tag: String(args.service) },\n })\n }\n\n return callById<ActionTag>({\n ...args,\n serviceId,\n })\n}\n\nexport const fragment = <ActionTag extends string = never>(\n fragmentId: string,\n steps: ReadonlyArray<WorkflowStep<ActionTag>>,\n): WorkflowFragment<ActionTag> => ({\n fragmentId,\n steps,\n})\n\nexport const withPolicy = <ActionTag extends string = never>(\n patch: WithPolicyPatch,\n part: WorkflowPart<ActionTag>,\n): WorkflowComposeResult<ActionTag> => {\n let normalized: WorkflowComposeResult<ActionTag>\n if (isReadonlyArray(part)) {\n normalized = { steps: part }\n } else {\n const partUnknown: unknown = part\n if (!isRecord(partUnknown) || !isReadonlyArray(partUnknown.steps)) {\n throw makeWorkflowError({\n code: 'WORKFLOW_INVALID_DEF',\n message: 'withPolicy: invalid workflow part (expected steps[] / fragment / composeResult).',\n detail: { part },\n })\n }\n normalized = {\n steps: part.steps,\n ...(part.sources ? { sources: part.sources } : null),\n ...(part.policy ? { policy: part.policy } : null),\n }\n }\n\n const steps = applyCallDefaults(normalized.steps as ReadonlyArray<WorkflowStepV1>, patch) as ReadonlyArray<WorkflowStep<ActionTag>>\n const patchPolicy: WorkflowPolicyV1 | undefined = (() => {\n const concurrency = patch.concurrency\n const priority = patch.priority\n return concurrency !== undefined || priority !== undefined ? { concurrency, priority } : undefined\n })()\n\n // Outer withPolicy is weaker than inner (nested) policies: only fill missing program policy fields.\n const nextPolicy = mergePolicy(patchPolicy, normalized.policy)\n\n return {\n steps,\n ...(normalized.sources ? { sources: normalized.sources } : null),\n ...(nextPolicy ? { policy: nextPolicy } : null),\n }\n}\n\nexport const compose = <ActionTag extends string = never>(\n ...parts: ReadonlyArray<WorkflowPart<ActionTag>>\n): WorkflowComposeResult<ActionTag> => {\n const steps: Array<WorkflowStep<ActionTag>> = []\n const sources: Record<string, { readonly fragmentId?: string }> = {}\n let policy: WorkflowPolicyV1 | undefined = undefined\n\n const ownersByKey = new Map<string, Array<{ readonly stepKey: string; readonly fragmentId?: string }>>()\n\n const recordOwner = (stepKey: string, fragmentId: string | undefined) => {\n const list = ownersByKey.get(stepKey) ?? []\n list.push({ stepKey, ...(fragmentId ? { fragmentId } : null) })\n ownersByKey.set(stepKey, list)\n }\n\n const recordOwners = (\n step: WorkflowStep<ActionTag>,\n resolveFragmentId: (stepKey: string) => string | undefined,\n ): void => {\n recordOwner(step.key, resolveFragmentId(step.key))\n if (step.kind !== 'call') return\n for (const inner of step.onSuccess) recordOwners(inner, resolveFragmentId)\n for (const inner of step.onFailure) recordOwners(inner, resolveFragmentId)\n }\n\n for (const part of parts) {\n if (isReadonlyArray(part)) {\n steps.push(...part)\n for (const step of part) recordOwners(step, () => undefined)\n continue\n }\n\n // fragment / composeResult (both carry `steps`)\n const partSteps = part.steps\n steps.push(...partSteps)\n\n const partSources = part.sources\n if (partSources && typeof partSources === 'object') {\n for (const k of Object.keys(partSources).sort()) {\n sources[k] = { ...partSources[k]! }\n }\n }\n\n const fragmentId = 'fragmentId' in part ? part.fragmentId : undefined\n if (typeof fragmentId === 'string' && fragmentId.length > 0) {\n for (const step of partSteps as ReadonlyArray<WorkflowStepV1>) {\n recordSourcesForFragment(sources, fragmentId, step)\n }\n }\n\n const resolveFragmentIdForPart = (stepKey: string): string | undefined => {\n if (typeof fragmentId === 'string' && fragmentId.length > 0) return fragmentId\n const fromSources = partSources?.[stepKey]?.fragmentId\n return typeof fromSources === 'string' && fromSources.length > 0 ? fromSources : undefined\n }\n for (const step of partSteps) recordOwners(step, resolveFragmentIdForPart)\n\n policy = mergePolicy(policy, part.policy)\n }\n\n const finalSources: WorkflowDefV1['sources'] | undefined = Object.keys(sources).length > 0 ? sources : undefined\n const duplicateKeys = Array.from(ownersByKey.entries())\n .filter(([, owners]) => owners.length > 1)\n .map(([k]) => k)\n .sort()\n if (duplicateKeys.length > 0) {\n const k = duplicateKeys[0]!\n throw makeWorkflowError({\n code: 'WORKFLOW_DUPLICATE_STEP_KEY',\n message: `Duplicate stepKey \"${k}\" detected during composition.`,\n source: { stepKey: k },\n detail: { duplicateKey: k, owners: ownersByKey.get(k) ?? [] },\n })\n }\n\n return {\n steps,\n ...(finalSources ? { sources: finalSources } : null),\n ...(policy ? { policy } : null),\n }\n}\n\nexport const make = <M = unknown>(input: {\n readonly astVersion?: 1\n readonly localId: string\n readonly trigger: WorkflowTrigger<ActionTagsOfModule<M>>\n readonly policy?: WorkflowPolicyV1\n readonly steps: WorkflowStepsInput<ActionTagsOfModule<M>>\n readonly meta?: { readonly generator?: JsonValue }\n}): Workflow => {\n const localId = asNonEmptyString(input.localId)\n if (!localId) {\n throw makeWorkflowError({\n code: 'WORKFLOW_INVALID_DEF',\n message: 'Workflow.make: localId must be a non-empty string.',\n detail: { localId: input.localId },\n })\n }\n\n const stepsInput = resolveStepsInput(input.steps)\n const merged = mergePolicy(input.policy, stepsInput.policy)\n\n const def: WorkflowDefV1 = normalizeWorkflowDefV1({\n astVersion: 1,\n localId,\n trigger: input.trigger,\n ...(merged ? { policy: merged } : null),\n steps: stepsInput.steps,\n ...(stepsInput.sources ? { sources: stepsInput.sources } : null),\n ...(input.meta ? { meta: input.meta } : null),\n })\n\n const staticIrCache = new Map<string, WorkflowStaticIrV1>()\n\n return {\n _tag: 'Workflow',\n def,\n toJSON: () => def,\n validate: () => validateWorkflowDefV1(def),\n exportStaticIr: (moduleId) => {\n const cached = staticIrCache.get(moduleId)\n if (cached) return cached\n const ir = compileWorkflowStaticIrV1({ moduleId, def })\n staticIrCache.set(moduleId, ir)\n return ir\n },\n install: (moduleTag) =>\n WorkflowRuntime.installOne({\n moduleTag: moduleTag as unknown as Parameters<typeof WorkflowRuntime.installOne>[0]['moduleTag'],\n program: { _tag: 'Workflow', def },\n }),\n } satisfies Workflow\n}\n\nexport const fromJSON = <ActionTag extends string = string>(def: WorkflowDef<ActionTag>): Workflow =>\n make({\n localId: def.localId,\n trigger: def.trigger,\n ...(def.policy ? { policy: def.policy } : null),\n steps: {\n steps: def.steps,\n ...(def.sources ? { sources: def.sources } : null),\n },\n ...(def.meta ? { meta: def.meta } : null),\n })\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fnv1a32,
|
|
3
3
|
stableStringify
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4MZ7BT3R.js";
|
|
5
5
|
|
|
6
6
|
// src/internal/runtime/core/ReadQuery.ts
|
|
7
7
|
function isReadQuery(input) {
|
|
@@ -9,6 +9,30 @@ function isReadQuery(input) {
|
|
|
9
9
|
const maybe = input;
|
|
10
10
|
return typeof maybe.selectorId === "string" && typeof maybe.select === "function" && Array.isArray(maybe.reads);
|
|
11
11
|
}
|
|
12
|
+
function isReadQueryCompiled(input) {
|
|
13
|
+
if (!input || typeof input !== "object") return false;
|
|
14
|
+
const maybe = input;
|
|
15
|
+
return typeof maybe.selectorId === "string" && typeof maybe.select === "function" && Array.isArray(maybe.reads) && maybe.staticIr != null && typeof maybe.lane === "string" && typeof maybe.producer === "string";
|
|
16
|
+
}
|
|
17
|
+
var hasBuildQualityGrade = (compiled) => compiled.quality?.source === "build" && compiled.quality.strictGate?.evaluatedAt === "build";
|
|
18
|
+
var shouldEvaluateStrictGateAtRuntime = (compiled) => compiled.lane === "dynamic" && !hasBuildQualityGrade(compiled);
|
|
19
|
+
var markRuntimeMissingBuildGrade = (compiled) => {
|
|
20
|
+
if (compiled.lane !== "dynamic" || hasBuildQualityGrade(compiled)) return compiled;
|
|
21
|
+
if (compiled.quality?.missingBuildGrade === true && compiled.fallbackReason === "missingBuildGrade") return compiled;
|
|
22
|
+
return {
|
|
23
|
+
...compiled,
|
|
24
|
+
fallbackReason: "missingBuildGrade",
|
|
25
|
+
staticIr: {
|
|
26
|
+
...compiled.staticIr,
|
|
27
|
+
fallbackReason: "missingBuildGrade"
|
|
28
|
+
},
|
|
29
|
+
quality: {
|
|
30
|
+
...compiled.quality ?? {},
|
|
31
|
+
source: "runtime_dynamic_fallback",
|
|
32
|
+
missingBuildGrade: true
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
};
|
|
12
36
|
var normalizeReads = (reads) => {
|
|
13
37
|
const unique = [];
|
|
14
38
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -18,7 +42,7 @@ var normalizeReads = (reads) => {
|
|
|
18
42
|
seen.add(key);
|
|
19
43
|
unique.push(r);
|
|
20
44
|
}
|
|
21
|
-
return unique.slice().sort(
|
|
45
|
+
return unique.slice().sort();
|
|
22
46
|
};
|
|
23
47
|
var toHash32Number = (hex) => Number.parseInt(hex, 16);
|
|
24
48
|
var makeReadsDigest = (reads) => {
|
|
@@ -102,7 +126,7 @@ var tryParseSelectorSource = (source) => {
|
|
|
102
126
|
if (!m) return void 0;
|
|
103
127
|
entries.push([key, m[1]]);
|
|
104
128
|
}
|
|
105
|
-
entries.sort((a, b) => a[0]
|
|
129
|
+
entries.sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0);
|
|
106
130
|
return { kind: "struct", entries };
|
|
107
131
|
}
|
|
108
132
|
return void 0;
|
|
@@ -347,6 +371,35 @@ var makeStrictGateError = (args) => Object.assign(
|
|
|
347
371
|
details: args.details
|
|
348
372
|
}
|
|
349
373
|
);
|
|
374
|
+
var resolveBuildGradeStrictGateDecision = (args) => {
|
|
375
|
+
if (args.compiled.quality?.source !== "build") return void 0;
|
|
376
|
+
const grade = args.compiled.quality.strictGate;
|
|
377
|
+
if (!grade || grade.evaluatedAt !== "build") return void 0;
|
|
378
|
+
if (grade.verdict === "PASS") return void 0;
|
|
379
|
+
const fallbackReason = grade.fallbackReason ?? args.compiled.fallbackReason ?? "missingDeps";
|
|
380
|
+
const details = {
|
|
381
|
+
moduleId: args.moduleId,
|
|
382
|
+
instanceId: args.instanceId,
|
|
383
|
+
txnSeq: args.txnSeq,
|
|
384
|
+
selectorId: args.compiled.selectorId,
|
|
385
|
+
debugKey: args.compiled.debugKey,
|
|
386
|
+
fallbackReason,
|
|
387
|
+
rule: grade.rule ?? "requireStatic:global"
|
|
388
|
+
};
|
|
389
|
+
const config = {
|
|
390
|
+
mode: grade.verdict === "WARN" ? "warn" : "error"
|
|
391
|
+
};
|
|
392
|
+
const diagnostic = makeStrictGateDiagnostic({ config, details });
|
|
393
|
+
if (grade.verdict === "WARN") {
|
|
394
|
+
return { verdict: "WARN", diagnostic, details };
|
|
395
|
+
}
|
|
396
|
+
return {
|
|
397
|
+
verdict: "FAIL",
|
|
398
|
+
diagnostic,
|
|
399
|
+
error: makeStrictGateError({ details }),
|
|
400
|
+
details
|
|
401
|
+
};
|
|
402
|
+
};
|
|
350
403
|
var evaluateStrictGate = (args) => {
|
|
351
404
|
if (args.config.mode === "off") {
|
|
352
405
|
return { verdict: "PASS" };
|
|
@@ -386,8 +439,13 @@ var evaluateStrictGate = (args) => {
|
|
|
386
439
|
|
|
387
440
|
export {
|
|
388
441
|
isReadQuery,
|
|
442
|
+
isReadQueryCompiled,
|
|
443
|
+
hasBuildQualityGrade,
|
|
444
|
+
shouldEvaluateStrictGateAtRuntime,
|
|
445
|
+
markRuntimeMissingBuildGrade,
|
|
389
446
|
make,
|
|
390
447
|
compile,
|
|
448
|
+
resolveBuildGradeStrictGateDecision,
|
|
391
449
|
evaluateStrictGate
|
|
392
450
|
};
|
|
393
|
-
//# sourceMappingURL=chunk-
|
|
451
|
+
//# sourceMappingURL=chunk-PBD7BJUN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/runtime/core/ReadQuery.ts"],"sourcesContent":["import { fnv1a32, stableStringify } from '../../digest.js'\nimport type * as DebugSink from './DebugSink.js'\n\nexport type ReadLane = 'static' | 'dynamic'\n\nexport type ReadProducer = 'aot' | 'jit' | 'manual' | 'dynamic'\n\nexport type ReadQueryFallbackReason = 'missingDeps' | 'unsupportedSyntax' | 'unstableSelectorId' | 'missingBuildGrade'\n\nexport type EqualsKind = 'objectIs' | 'shallowStruct' | 'custom'\n\nexport type ReadQueryStrictGateRule =\n | 'denyFallbackReason'\n | 'requireStatic:global'\n | 'requireStatic:selectorId'\n | 'requireStatic:module'\n\nexport type ReadQueryQualitySource = 'build' | 'runtime_jit' | 'runtime_dynamic_fallback'\n\nexport interface ReadQueryStrictGateGrade {\n readonly evaluatedAt: 'build' | 'runtime'\n readonly verdict: 'PASS' | 'WARN' | 'FAIL'\n readonly rule?: ReadQueryStrictGateRule\n readonly fallbackReason?: ReadQueryFallbackReason\n}\n\nexport interface ReadQueryQualityMeta {\n readonly source: ReadQueryQualitySource\n readonly strictGate?: ReadQueryStrictGateGrade\n readonly reportId?: string\n readonly missingBuildGrade?: boolean\n}\n\nexport interface ReadsDigest {\n readonly count: number\n readonly hash: number\n}\n\nexport interface ReadQueryStaticIr {\n readonly selectorId: string\n readonly debugKey?: string\n readonly lane: ReadLane\n readonly producer: ReadProducer\n readonly reads?: ReadonlyArray<string | number>\n readonly readsDigest?: ReadsDigest\n readonly fallbackReason?: ReadQueryFallbackReason\n readonly equalsKind: EqualsKind\n}\n\nexport interface ReadQuery<S, V> {\n readonly selectorId: string\n readonly debugKey?: string\n readonly reads: ReadonlyArray<string | number>\n readonly select: (state: S) => V\n readonly equalsKind: EqualsKind\n readonly equals?: (previous: V, next: V) => boolean\n}\n\nexport interface ReadQueryCompiled<S, V> extends ReadQuery<S, V> {\n readonly lane: ReadLane\n readonly producer: ReadProducer\n readonly readsDigest?: ReadsDigest\n readonly fallbackReason?: ReadQueryFallbackReason\n readonly staticIr: ReadQueryStaticIr\n readonly quality?: ReadQueryQualityMeta\n}\n\nexport type ReadQueryInput<S, V> = ((state: S) => V) | ReadQuery<S, V>\n\nexport function isReadQuery<S, V>(input: ReadQueryInput<S, V>): input is ReadQuery<S, V>\nexport function isReadQuery(input: unknown): input is ReadQuery<any, any>\nexport function isReadQuery(input: unknown): input is ReadQuery<any, any> {\n if (!input || (typeof input !== 'object' && typeof input !== 'function')) return false\n const maybe = input as any\n return typeof maybe.selectorId === 'string' && typeof maybe.select === 'function' && Array.isArray(maybe.reads)\n}\n\nexport function isReadQueryCompiled<S, V>(input: ReadQueryInput<S, V> | ReadQueryCompiled<S, V>): input is ReadQueryCompiled<S, V>\nexport function isReadQueryCompiled(input: unknown): input is ReadQueryCompiled<any, any>\nexport function isReadQueryCompiled(input: unknown): input is ReadQueryCompiled<any, any> {\n if (!input || typeof input !== 'object') return false\n const maybe = input as any\n return (\n typeof maybe.selectorId === 'string' &&\n typeof maybe.select === 'function' &&\n Array.isArray(maybe.reads) &&\n maybe.staticIr != null &&\n typeof maybe.lane === 'string' &&\n typeof maybe.producer === 'string'\n )\n}\n\nexport const hasBuildQualityGrade = (compiled: ReadQueryCompiled<any, any>): boolean =>\n compiled.quality?.source === 'build' && compiled.quality.strictGate?.evaluatedAt === 'build'\n\nexport const shouldEvaluateStrictGateAtRuntime = (compiled: ReadQueryCompiled<any, any>): boolean =>\n compiled.lane === 'dynamic' && !hasBuildQualityGrade(compiled)\n\nexport const markRuntimeMissingBuildGrade = <S, V>(compiled: ReadQueryCompiled<S, V>): ReadQueryCompiled<S, V> => {\n if (compiled.lane !== 'dynamic' || hasBuildQualityGrade(compiled)) return compiled\n if (compiled.quality?.missingBuildGrade === true && compiled.fallbackReason === 'missingBuildGrade') return compiled\n return {\n ...compiled,\n fallbackReason: 'missingBuildGrade',\n staticIr: {\n ...compiled.staticIr,\n fallbackReason: 'missingBuildGrade',\n },\n quality: {\n ...(compiled.quality ?? {}),\n source: 'runtime_dynamic_fallback',\n missingBuildGrade: true,\n },\n }\n}\n\nconst normalizeReads = (reads: ReadonlyArray<string | number>): ReadonlyArray<string | number> => {\n const unique: Array<string | number> = []\n const seen = new Set<string>()\n for (const r of reads) {\n const key = typeof r === 'number' ? `n:${r}` : `s:${r}`\n if (seen.has(key)) continue\n seen.add(key)\n unique.push(r)\n }\n return unique.slice().sort()\n}\n\nconst toHash32Number = (hex: string): number => Number.parseInt(hex, 16)\n\nconst makeReadsDigest = (reads: ReadonlyArray<string | number>): ReadsDigest => {\n const normalized = normalizeReads(reads)\n return {\n count: normalized.length,\n hash: toHash32Number(fnv1a32(stableStringify(normalized))),\n }\n}\n\nconst computeSelectorId = (value: unknown): string => `rq_${fnv1a32(stableStringify(value))}`\n\nlet nextUnstableSelectorSeq = 0\nconst unstableSelectorIdByFn = new WeakMap<Function, string>()\n\nconst computeUnstableSelectorId = (selector: Function): string => {\n const existing = unstableSelectorIdByFn.get(selector)\n if (existing) return existing\n nextUnstableSelectorSeq += 1\n const selectorId = `rq_u${nextUnstableSelectorSeq}`\n unstableSelectorIdByFn.set(selector, selectorId)\n return selectorId\n}\n\nconst unwrapParens = (input: string): string => {\n const trimmed = input.trim()\n if (trimmed.startsWith('(') && trimmed.endsWith(')')) {\n const inner = trimmed.slice(1, -1).trim()\n // Only unwrap the outermost pair of parentheses to avoid accidentally breaking syntax.\n if (!inner.startsWith('(') || !inner.endsWith(')')) {\n return inner\n }\n }\n return trimmed\n}\n\nconst extractArrow = (source: string): { readonly param: string; readonly body: string } | undefined => {\n const idx = source.indexOf('=>')\n if (idx < 0) return undefined\n const left = source.slice(0, idx).trim()\n const right = source.slice(idx + 2).trim()\n\n const paramRaw = unwrapParens(left)\n if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(paramRaw)) return undefined\n\n // block body: { return expr }\n if (right.startsWith('{')) {\n const m = right.match(/^\\{\\s*return\\s+(.+?);?\\s*\\}\\s*$/s)\n if (!m) return undefined\n return { param: paramRaw, body: m[1]?.trim() ?? '' }\n }\n\n return { param: paramRaw, body: right }\n}\n\nconst extractFunctionReturn = (source: string): { readonly param: string; readonly body: string } | undefined => {\n const trimmed = source.trim()\n const m = trimmed.match(\n /^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,\n )\n if (!m) return undefined\n\n const param = m[1]?.trim() ?? ''\n if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(param)) return undefined\n\n const body = m[2]?.trim() ?? ''\n if (body.length === 0) return undefined\n\n return { param, body }\n}\n\ntype ParsedSelector =\n | { readonly kind: 'path'; readonly path: string }\n | { readonly kind: 'struct'; readonly entries: ReadonlyArray<readonly [string, string]> }\n\nconst tryParseSelectorSource = (source: string): ParsedSelector | undefined => {\n const arrowOrFn = extractArrow(source) ?? extractFunctionReturn(source)\n if (!arrowOrFn) return undefined\n\n const expr = unwrapParens(arrowOrFn.body).trim().replace(/;$/, '').trim()\n\n // path: s.a.b\n {\n const re = new RegExp(`^${arrowOrFn.param}\\\\.([A-Za-z0-9_$]+(?:\\\\.[A-Za-z0-9_$]+)*)$`)\n const m = expr.match(re)\n if (m) {\n return { kind: 'path', path: m[1] }\n }\n }\n\n // struct: ({ a: s.a, b: s.b })\n if (expr.startsWith('{') && expr.endsWith('}')) {\n const inner = expr.slice(1, -1).trim()\n if (inner.length === 0) return { kind: 'struct', entries: [] }\n\n const parts = inner\n .split(',')\n .map((p) => p.trim())\n .filter((p) => p.length > 0)\n\n const entries: Array<readonly [string, string]> = []\n\n for (const part of parts) {\n const idx = part.indexOf(':')\n if (idx < 0) return undefined\n const key = part.slice(0, idx).trim()\n const value = part.slice(idx + 1).trim()\n\n if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)) return undefined\n\n const re = new RegExp(`^${arrowOrFn.param}\\\\.([A-Za-z0-9_$]+(?:\\\\.[A-Za-z0-9_$]+)*)$`)\n const m = value.match(re)\n if (!m) return undefined\n entries.push([key, m[1]] as const)\n }\n\n // Sort entries to ensure a stable selectorId.\n entries.sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0))\n return { kind: 'struct', entries }\n }\n\n return undefined\n}\n\ntype ReadQueryStaticTemplate = {\n readonly selectorId: string\n readonly reads: ReadonlyArray<string | number>\n readonly readsDigest: ReadsDigest\n readonly equalsKind: EqualsKind\n}\n\nconst READ_QUERY_TEMPLATE_CACHE_MAX = 2048\nconst readQueryTemplateByFn = new WeakMap<Function, ReadQueryStaticTemplate>()\nconst readQueryTemplateBySource = new Map<string, ReadQueryStaticTemplate>()\n\nconst lruGet = <K, V>(map: Map<K, V>, key: K): V | undefined => {\n const value = map.get(key)\n if (value === undefined) return undefined\n map.delete(key)\n map.set(key, value)\n return value\n}\n\nconst lruSet = <K, V>(map: Map<K, V>, key: K, value: V, maxSize: number) => {\n if (map.has(key)) map.delete(key)\n map.set(key, value)\n if (map.size <= maxSize) return\n const oldestKey = map.keys().next().value as K | undefined\n if (oldestKey !== undefined) {\n map.delete(oldestKey)\n }\n}\n\nconst safeToString = (fn: Function): string => {\n try {\n return fn.toString()\n } catch {\n return ''\n }\n}\n\nexport const make = <S, V>(spec: ReadQuery<S, V>): ReadQuery<S, V> => spec\n\nexport const compile = <S, V>(input: ReadQueryInput<S, V>): ReadQueryCompiled<S, V> => {\n if (isReadQuery(input)) {\n const reads = normalizeReads(input.reads)\n const readsDigest = reads.length > 0 ? makeReadsDigest(reads) : undefined\n\n const equalsKind = input.equalsKind\n const staticIr: ReadQueryStaticIr = {\n selectorId: input.selectorId,\n debugKey: input.debugKey,\n lane: 'static',\n producer: 'manual',\n reads,\n readsDigest,\n equalsKind,\n }\n\n return {\n ...input,\n reads,\n lane: 'static',\n producer: 'manual',\n readsDigest,\n staticIr,\n }\n }\n\n const selector = input\n const debugKey =\n (typeof (selector as any)?.debugKey === 'string' && (selector as any).debugKey.length > 0\n ? (selector as any).debugKey\n : undefined) ??\n (typeof (selector as any).name === 'string' && (selector as any).name.length > 0\n ? (selector as any).name\n : undefined)\n\n const declaredReads: ReadonlyArray<string> | undefined = Array.isArray((selector as any)?.fieldPaths)\n ? ((selector as any).fieldPaths as ReadonlyArray<unknown>).filter((x): x is string => typeof x === 'string')\n : undefined\n\n if (declaredReads && declaredReads.length > 0) {\n const reads = normalizeReads(declaredReads)\n const readsDigest = makeReadsDigest(reads)\n const selectorId = computeSelectorId({ kind: 'reads', reads })\n\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads,\n readsDigest,\n equalsKind: 'objectIs',\n }\n\n return {\n selectorId,\n debugKey,\n reads,\n select: selector as any,\n equalsKind: 'objectIs',\n lane: 'static',\n producer: 'jit',\n readsDigest,\n staticIr,\n }\n }\n\n const cachedByFn = readQueryTemplateByFn.get(selector as unknown as Function)\n if (cachedByFn) {\n const staticIr: ReadQueryStaticIr = {\n selectorId: cachedByFn.selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads: cachedByFn.reads,\n readsDigest: cachedByFn.readsDigest,\n equalsKind: cachedByFn.equalsKind,\n }\n\n return {\n selectorId: cachedByFn.selectorId,\n debugKey,\n reads: cachedByFn.reads,\n select: selector as any,\n equalsKind: cachedByFn.equalsKind,\n lane: 'static',\n producer: 'jit',\n readsDigest: cachedByFn.readsDigest,\n staticIr,\n }\n }\n\n const srcTrimmed = safeToString(selector as unknown as Function).trim()\n const cachedBySource = srcTrimmed.length > 0 ? lruGet(readQueryTemplateBySource, srcTrimmed) : undefined\n if (cachedBySource) {\n readQueryTemplateByFn.set(selector as unknown as Function, cachedBySource)\n const staticIr: ReadQueryStaticIr = {\n selectorId: cachedBySource.selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads: cachedBySource.reads,\n readsDigest: cachedBySource.readsDigest,\n equalsKind: cachedBySource.equalsKind,\n }\n\n return {\n selectorId: cachedBySource.selectorId,\n debugKey,\n reads: cachedBySource.reads,\n select: selector as any,\n equalsKind: cachedBySource.equalsKind,\n lane: 'static',\n producer: 'jit',\n readsDigest: cachedBySource.readsDigest,\n staticIr,\n }\n }\n\n const parsed = srcTrimmed.length > 0 ? tryParseSelectorSource(srcTrimmed) : undefined\n\n if (parsed?.kind === 'path') {\n const reads = [parsed.path]\n const readsDigest = makeReadsDigest(reads)\n const selectorId = computeSelectorId({ kind: 'path', path: parsed.path })\n const template: ReadQueryStaticTemplate = { selectorId, reads, readsDigest, equalsKind: 'objectIs' }\n readQueryTemplateByFn.set(selector as unknown as Function, template)\n lruSet(readQueryTemplateBySource, srcTrimmed, template, READ_QUERY_TEMPLATE_CACHE_MAX)\n\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads,\n readsDigest,\n equalsKind: 'objectIs',\n }\n\n return {\n selectorId,\n debugKey,\n reads,\n select: selector as any,\n equalsKind: 'objectIs',\n lane: 'static',\n producer: 'jit',\n readsDigest,\n staticIr,\n }\n }\n\n if (parsed?.kind === 'struct') {\n const reads = normalizeReads(parsed.entries.map(([, path]) => path))\n const readsDigest = makeReadsDigest(reads)\n const selectorId = computeSelectorId({ kind: 'struct', entries: parsed.entries })\n const template: ReadQueryStaticTemplate = { selectorId, reads, readsDigest, equalsKind: 'shallowStruct' }\n readQueryTemplateByFn.set(selector as unknown as Function, template)\n lruSet(readQueryTemplateBySource, srcTrimmed, template, READ_QUERY_TEMPLATE_CACHE_MAX)\n\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads,\n readsDigest,\n equalsKind: 'shallowStruct',\n }\n\n return {\n selectorId,\n debugKey,\n reads,\n select: selector as any,\n equalsKind: 'shallowStruct',\n lane: 'static',\n producer: 'jit',\n readsDigest,\n staticIr,\n }\n }\n\n // Dynamic lane fallback (no stable reads / unsupported subset)\n const baseFallbackReason: ReadQueryFallbackReason =\n srcTrimmed.includes('=>') || srcTrimmed.startsWith('function') ? 'unsupportedSyntax' : 'missingDeps'\n\n const lowDiscriminabilitySource = srcTrimmed.length === 0 || srcTrimmed.includes('[native code]')\n const fallbackReason: ReadQueryFallbackReason =\n !debugKey || lowDiscriminabilitySource ? 'unstableSelectorId' : baseFallbackReason\n\n const selectorId =\n fallbackReason === 'unstableSelectorId'\n ? computeUnstableSelectorId(selector as unknown as Function)\n : computeSelectorId({ kind: 'dynamic', debugKey, src: srcTrimmed })\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'dynamic',\n producer: 'dynamic',\n fallbackReason,\n equalsKind: 'objectIs',\n }\n\n return {\n selectorId,\n debugKey,\n reads: [],\n select: selector as any,\n equalsKind: 'objectIs',\n lane: 'dynamic',\n producer: 'dynamic',\n fallbackReason,\n staticIr,\n }\n}\n\nexport interface ReadQueryStrictGateConfig {\n readonly mode: 'off' | 'warn' | 'error'\n readonly requireStatic?: {\n readonly selectorIds?: ReadonlyArray<string>\n readonly modules?: ReadonlyArray<string>\n }\n readonly denyFallbackReasons?: ReadonlyArray<ReadQueryFallbackReason>\n}\n\nexport interface ReadQueryStrictGateViolationDetails {\n readonly moduleId: string\n readonly instanceId: string\n readonly txnSeq: number\n readonly selectorId: string\n readonly debugKey?: string\n readonly fallbackReason: ReadQueryFallbackReason\n readonly rule: ReadQueryStrictGateRule\n}\n\nexport interface ReadQueryStrictGateError extends Error {\n readonly _tag: 'ReadQueryStrictGateError'\n readonly details: ReadQueryStrictGateViolationDetails\n}\n\nexport type ReadQueryStrictGateDiagnosticEvent = Extract<DebugSink.Event, { readonly type: 'diagnostic' }>\n\nexport type ReadQueryStrictGateDecision =\n | { readonly verdict: 'PASS' }\n | {\n readonly verdict: 'WARN'\n readonly diagnostic: ReadQueryStrictGateDiagnosticEvent\n readonly details: ReadQueryStrictGateViolationDetails\n }\n | {\n readonly verdict: 'FAIL'\n readonly diagnostic: ReadQueryStrictGateDiagnosticEvent\n readonly error: ReadQueryStrictGateError\n readonly details: ReadQueryStrictGateViolationDetails\n }\n\nconst filterNonEmpty = (values: ReadonlyArray<string> | undefined): ReadonlyArray<string> | undefined => {\n if (!values || values.length === 0) return undefined\n const next = values.map((v) => v.trim()).filter((v) => v.length > 0)\n return next.length > 0 ? next : undefined\n}\n\nconst makeStrictGateDiagnostic = (args: {\n readonly config: ReadQueryStrictGateConfig\n readonly details: ReadQueryStrictGateViolationDetails\n}): ReadQueryStrictGateDiagnosticEvent => {\n const severity = args.config.mode === 'warn' ? ('warning' as const) : ('error' as const)\n\n return {\n type: 'diagnostic',\n moduleId: args.details.moduleId,\n instanceId: args.details.instanceId,\n txnSeq: args.details.txnSeq,\n code: 'read_query::strict_gate',\n severity,\n message: `ReadQuery strict gate violated: selector entered dynamic lane (selectorId=${args.details.selectorId}, reason=${args.details.fallbackReason}).`,\n hint:\n 'Fix: make the selector statically compilable (AOT/JIT) or pass an explicit ReadQuery; ' +\n 'or disable/narrow the gate via RuntimeOptions.readQuery.strictGate.requireStatic / denyFallbackReasons.',\n kind: 'read_query:strict_gate',\n trigger: {\n kind: 'read_query',\n name: 'strict_gate',\n details: args.details,\n },\n }\n}\n\nconst makeStrictGateError = (args: {\n readonly details: ReadQueryStrictGateViolationDetails\n}): ReadQueryStrictGateError =>\n Object.assign(\n new Error(\n `[ReadQueryStrictGateError] selector entered dynamic lane (selectorId=${args.details.selectorId}, reason=${args.details.fallbackReason}).`,\n ),\n {\n _tag: 'ReadQueryStrictGateError' as const,\n details: args.details,\n },\n ) as ReadQueryStrictGateError\n\nexport const resolveBuildGradeStrictGateDecision = (args: {\n readonly moduleId: string\n readonly instanceId: string\n readonly txnSeq: number\n readonly compiled: ReadQueryCompiled<any, any>\n}): ReadQueryStrictGateDecision | undefined => {\n if (args.compiled.quality?.source !== 'build') return undefined\n const grade = args.compiled.quality.strictGate\n if (!grade || grade.evaluatedAt !== 'build') return undefined\n if (grade.verdict === 'PASS') return undefined\n\n const fallbackReason = (grade.fallbackReason ?? args.compiled.fallbackReason ?? 'missingDeps') as ReadQueryFallbackReason\n const details: ReadQueryStrictGateViolationDetails = {\n moduleId: args.moduleId,\n instanceId: args.instanceId,\n txnSeq: args.txnSeq,\n selectorId: args.compiled.selectorId,\n debugKey: args.compiled.debugKey,\n fallbackReason,\n rule: grade.rule ?? 'requireStatic:global',\n }\n\n const config: ReadQueryStrictGateConfig = {\n mode: grade.verdict === 'WARN' ? 'warn' : 'error',\n }\n const diagnostic = makeStrictGateDiagnostic({ config, details })\n\n if (grade.verdict === 'WARN') {\n return { verdict: 'WARN', diagnostic, details }\n }\n\n return {\n verdict: 'FAIL',\n diagnostic,\n error: makeStrictGateError({ details }),\n details,\n }\n}\n\nexport const evaluateStrictGate = (args: {\n readonly config: ReadQueryStrictGateConfig\n readonly moduleId: string\n readonly instanceId: string\n readonly txnSeq: number\n readonly compiled: ReadQueryCompiled<any, any>\n}): ReadQueryStrictGateDecision => {\n if (args.config.mode === 'off') {\n return { verdict: 'PASS' }\n }\n\n if (args.compiled.lane !== 'dynamic') {\n return { verdict: 'PASS' }\n }\n\n const fallbackReason = (args.compiled.fallbackReason ?? 'missingDeps') as ReadQueryFallbackReason\n\n const denyFallbackReasons = args.config.denyFallbackReasons\n const denied = !!denyFallbackReasons?.includes(fallbackReason)\n\n const selectorIds = filterNonEmpty(args.config.requireStatic?.selectorIds)\n const modules = filterNonEmpty(args.config.requireStatic?.modules)\n const hasCoverageFilter = !!selectorIds || !!modules\n\n const matchedSelectorId = !!selectorIds?.includes(args.compiled.selectorId)\n const matchedModule = !!modules?.includes(args.moduleId)\n const coveredByRequireStatic = !hasCoverageFilter || matchedSelectorId || matchedModule\n\n if (!denied && !coveredByRequireStatic) {\n return { verdict: 'PASS' }\n }\n\n const rule: ReadQueryStrictGateRule = denied\n ? 'denyFallbackReason'\n : !hasCoverageFilter\n ? 'requireStatic:global'\n : matchedSelectorId\n ? 'requireStatic:selectorId'\n : 'requireStatic:module'\n\n const details: ReadQueryStrictGateViolationDetails = {\n moduleId: args.moduleId,\n instanceId: args.instanceId,\n txnSeq: args.txnSeq,\n selectorId: args.compiled.selectorId,\n debugKey: args.compiled.debugKey,\n fallbackReason,\n rule,\n }\n\n const diagnostic = makeStrictGateDiagnostic({ config: args.config, details })\n\n if (args.config.mode === 'warn') {\n return { verdict: 'WARN', diagnostic, details }\n }\n\n const error = makeStrictGateError({ details })\n return { verdict: 'FAIL', diagnostic, error, details }\n}\n"],"mappings":"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","names":["staticIr","selectorId"]}
|