@graphrefly/graphrefly 0.38.0 → 0.40.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/dist/budget-gate-CmmVtasH.d.ts +115 -0
- package/dist/budget-gate-DiP_nK0n.d.cts +115 -0
- package/dist/{cascading-BsJ4GbnS.d.ts → cascading-BNfxffgc.d.ts} +2 -2
- package/dist/{cascading-B25wxpRa.d.cts → cascading-Cxs1eztH.d.cts} +2 -2
- package/dist/chunk-2BX4NB34.js +3 -0
- package/dist/{chunk-6VFC334U.js → chunk-2DMKW2AD.js} +1 -1
- package/dist/{chunk-4BDQXBXE.js → chunk-2QXRYP7Q.js} +1 -1
- package/dist/chunk-32N3JALT.js +1 -0
- package/dist/chunk-35JTVPOX.js +1 -0
- package/dist/chunk-3G5U5QNE.js +5 -0
- package/dist/{chunk-PHXZRR6C.js → chunk-4I45FVQS.js} +1 -1
- package/dist/{chunk-B5S7KTGP.js → chunk-6I726LZU.js} +1 -1
- package/dist/{chunk-NV63VQHI.js → chunk-6VWBPSSY.js} +1 -1
- package/dist/chunk-6XVD5TZV.js +1 -0
- package/dist/chunk-756D5TFD.js +1 -0
- package/dist/{chunk-DSOVKKTI.js → chunk-7Q4ZD3YW.js} +1 -1
- package/dist/{chunk-TMVY7OWG.js → chunk-B7LCDQEV.js} +1 -1
- package/dist/chunk-C72GO4IZ.js +1 -0
- package/dist/{chunk-RZ5HKPGI.js → chunk-CKFQS2CJ.js} +1 -1
- package/dist/chunk-D27JNOLZ.js +1 -0
- package/dist/chunk-ECQRP2UT.js +1 -0
- package/dist/{chunk-6773HURD.js → chunk-FHRBBHJN.js} +1 -1
- package/dist/{chunk-UVLZX2OU.js → chunk-I2DEVPMU.js} +1 -1
- package/dist/chunk-INQFTVZA.js +61 -0
- package/dist/{chunk-6KZZ6XQE.js → chunk-J63M5U46.js} +1 -1
- package/dist/{chunk-POCWFIJ7.js → chunk-JKBOIJ22.js} +1 -1
- package/dist/chunk-K2Z7UENB.js +1 -0
- package/dist/chunk-L6NSJVJZ.js +1 -0
- package/dist/{chunk-K5C67OGE.js → chunk-LCGAVGGV.js} +2 -2
- package/dist/chunk-LYM4PBMV.js +1 -0
- package/dist/{chunk-O2BLVQU4.js → chunk-MNZIKXK4.js} +1 -1
- package/dist/chunk-N43XM7BM.js +1 -0
- package/dist/{chunk-FWGIZP3W.js → chunk-OSZ22J7O.js} +1 -1
- package/dist/{chunk-FAYEMS5M.js → chunk-PPUYQ66A.js} +1 -1
- package/dist/{chunk-SP5O2MIX.js → chunk-QSK3RRII.js} +1 -1
- package/dist/chunk-RZJDIV2G.js +1 -0
- package/dist/chunk-SSCGRYJ2.js +1 -0
- package/dist/chunk-SVFKHUCW.js +1 -0
- package/dist/chunk-TSOYJ743.js +1 -0
- package/dist/{chunk-O245YLM5.js → chunk-UWA6D7UF.js} +1 -1
- package/dist/chunk-VMF23LGB.js +1 -0
- package/dist/chunk-WL6LFPJB.js +1 -0
- package/dist/chunk-WUT362QV.js +1 -0
- package/dist/chunk-XJLYLLIJ.js +1 -0
- package/dist/{chunk-IBGE62GZ.js → chunk-XW4YDF6G.js} +1 -1
- package/dist/chunk-YKD7WUYJ.js +43 -0
- package/dist/{chunk-7KZZLWZ6.js → chunk-YXDRGKXP.js} +1 -1
- package/dist/chunk-Z4F3DOWS.js +84 -0
- package/dist/compat/index.cjs +9 -13
- package/dist/compat/index.d.cts +16 -16
- package/dist/compat/index.d.ts +16 -16
- package/dist/compat/index.js +1 -1
- package/dist/compat/jotai/index.d.cts +2 -2
- package/dist/compat/jotai/index.d.ts +2 -2
- package/dist/compat/nanostores/index.d.cts +2 -2
- package/dist/compat/nanostores/index.d.ts +2 -2
- package/dist/compat/nestjs/index.cjs +7 -11
- package/dist/compat/nestjs/index.d.cts +8 -8
- package/dist/compat/nestjs/index.d.ts +8 -8
- package/dist/compat/nestjs/index.js +1 -1
- package/dist/compat/react/index.d.cts +2 -2
- package/dist/compat/react/index.d.ts +2 -2
- package/dist/compat/solid/index.d.cts +2 -2
- package/dist/compat/solid/index.d.ts +2 -2
- package/dist/compat/svelte/index.d.cts +2 -2
- package/dist/compat/svelte/index.d.ts +2 -2
- package/dist/compat/vue/index.d.cts +2 -2
- package/dist/compat/vue/index.d.ts +2 -2
- package/dist/compat/zustand/index.cjs +3 -7
- package/dist/compat/zustand/index.d.cts +4 -4
- package/dist/compat/zustand/index.d.ts +4 -4
- package/dist/compat/zustand/index.js +1 -1
- package/dist/core/index.cjs +1 -1
- package/dist/core/index.d.cts +4 -4
- package/dist/core/index.d.ts +4 -4
- package/dist/core/index.js +1 -1
- package/dist/{composite-DTOlDuch.d.ts → decay-BnrlbxSv.d.ts} +39 -3
- package/dist/{composite-CgG0MqHm.d.cts → decay-C25AyNAj.d.cts} +39 -3
- package/dist/extra/browser.d.cts +1 -1
- package/dist/extra/browser.d.ts +1 -1
- package/dist/extra/index.cjs +16 -20
- package/dist/extra/index.d.cts +11 -9
- package/dist/extra/index.d.ts +11 -9
- package/dist/extra/index.js +1 -1
- package/dist/extra/node.cjs +2 -2
- package/dist/extra/node.d.cts +1 -1
- package/dist/extra/node.d.ts +1 -1
- package/dist/extra/node.js +1 -1
- package/dist/extra/operators.cjs +1 -1
- package/dist/extra/operators.d.cts +1 -1
- package/dist/extra/operators.d.ts +1 -1
- package/dist/extra/operators.js +1 -1
- package/dist/extra/reactive.cjs +1 -1
- package/dist/extra/reactive.d.cts +3 -3
- package/dist/extra/reactive.d.ts +3 -3
- package/dist/extra/reactive.js +1 -1
- package/dist/extra/render/index.cjs +5 -0
- package/dist/extra/render/index.d.cts +183 -0
- package/dist/extra/render/index.d.ts +183 -0
- package/dist/extra/render/index.js +1 -0
- package/dist/extra/sources.cjs +1 -1
- package/dist/extra/sources.d.cts +1 -1
- package/dist/extra/sources.d.ts +1 -1
- package/dist/extra/sources.js +1 -1
- package/dist/extra/storage-browser.d.cts +1 -1
- package/dist/extra/storage-browser.d.ts +1 -1
- package/dist/{fallback-axI2cXwt.d.cts → fallback-8JYU8tlT.d.cts} +1 -1
- package/dist/{fallback-DuEXfA4F.d.ts → fallback-CMZl39L5.d.ts} +1 -1
- package/dist/graph/index.cjs +7 -7
- package/dist/graph/index.d.cts +5 -5
- package/dist/graph/index.d.ts +5 -5
- package/dist/graph/index.js +1 -1
- package/dist/{graph-BjW1taJl.d.ts → graph-BkIkog4h.d.ts} +76 -100
- package/dist/{graph-CHsVwf9S.d.cts → graph-E6likq7w.d.cts} +76 -100
- package/dist/{index-CIcu6fIR.d.ts → index-2n8Eai6M.d.ts} +1 -1
- package/dist/{index-BwOsJfLJ.d.ts → index-3k4Gg6-n.d.ts} +3 -3
- package/dist/{index-BUFCHvOR.d.ts → index-40ZT4MHj.d.ts} +3 -3
- package/dist/index-8s-Qm-gz.d.ts +218 -0
- package/dist/index-A3U3CSve.d.cts +113 -0
- package/dist/{index-CDvC1m5p.d.ts → index-B2RUoIUz.d.ts} +1 -1
- package/dist/{index-Byp771zP.d.ts → index-B6iTqKtJ.d.ts} +2 -2
- package/dist/{index-D-B7U42V.d.cts → index-B72TQQHd.d.cts} +2 -2
- package/dist/{resilience-Bys63Cpd.d.ts → index-BAQrjuZF.d.ts} +202 -26
- package/dist/{index-BiomL7AW.d.ts → index-BJSZxSFX.d.ts} +1 -1
- package/dist/index-BQ1fR4li.d.ts +210 -0
- package/dist/{index-D7-RSD93.d.cts → index-BTHOTC0Q.d.cts} +4 -4
- package/dist/{index-CEVzBWeB.d.ts → index-BaA-xpSw.d.ts} +26 -19
- package/dist/{index-CAV-3RpJ.d.cts → index-Bd91Nmf4.d.cts} +4 -4
- package/dist/{index-BI1wMfyc.d.ts → index-BgjS2b8N.d.ts} +3 -3
- package/dist/{index-Bpr0Pwgl.d.cts → index-BiHUBEKq.d.cts} +3 -3
- package/dist/{index-UsU9ptzs.d.cts → index-BilOa6AE.d.cts} +55 -9
- package/dist/{index-DJVQ-t07.d.ts → index-BmSQLAZo.d.cts} +41 -48
- package/dist/{index-DTDVDzhA.d.ts → index-C-dkXOpB.d.cts} +56 -54
- package/dist/{index-B-ORMr3k.d.ts → index-C5cQ7Gfx.d.ts} +4 -4
- package/dist/{index-ML6vHKXK.d.ts → index-C6ZUaos7.d.ts} +1 -1
- package/dist/{index-Vz7KPfgz.d.ts → index-CAP3UGsq.d.ts} +1 -1
- package/dist/{index-BFaALJxR.d.ts → index-CD2dBMet.d.ts} +10 -8
- package/dist/index-CGhMJNHb.d.cts +128 -0
- package/dist/{index-B3D_z0Z6.d.cts → index-CL7oilfm.d.cts} +1 -1
- package/dist/{index-Bn0uZEL4.d.ts → index-CQtWm7jS.d.ts} +9 -9
- package/dist/{index-CM-i58FY.d.cts → index-CRm0YIzC.d.cts} +9 -9
- package/dist/index-CUIkE1l9.d.cts +230 -0
- package/dist/{index-CijfwEWx.d.ts → index-Cczxgd2D.d.ts} +2 -2
- package/dist/{index-CAbHN_rP.d.cts → index-CgnCFhr2.d.cts} +1 -1
- package/dist/{index-B2IUcH13.d.cts → index-Ck35nA-T.d.ts} +41 -48
- package/dist/{index-BpMZzX9P.d.cts → index-Cnr1WrlX.d.cts} +3 -3
- package/dist/{index-JYtN9uqM.d.ts → index-CoM4rzyB.d.ts} +1 -1
- package/dist/{index-Ckil6miL.d.cts → index-CtFNGe-m.d.cts} +2 -2
- package/dist/{index-BjWZARLy.d.ts → index-Ctb7_2sG.d.ts} +1 -1
- package/dist/index-CuPUehFa.d.cts +218 -0
- package/dist/index-D1Gc7wV5.d.ts +230 -0
- package/dist/{index-DqICM_I7.d.ts → index-D1IEZUsj.d.ts} +67 -9
- package/dist/{index-BFuVcqL8.d.cts → index-D3ayz3hy.d.cts} +1 -1
- package/dist/{index-CQsqqEVz.d.cts → index-D4uimgee.d.cts} +1 -1
- package/dist/{resilience-BWP2c7Af.d.cts → index-DGTo1yka.d.cts} +202 -26
- package/dist/{index-BmWuVdER.d.ts → index-DH4fm2Ck.d.ts} +2 -2
- package/dist/{index-BkQqf1EF.d.cts → index-DJ_MPOJ5.d.cts} +67 -9
- package/dist/{index-9xhIaM-w.d.cts → index-DOBLxOti.d.cts} +1 -1
- package/dist/{index-BqcgiSQg.d.cts → index-DQQCOIt8.d.cts} +10 -8
- package/dist/{index-DJNAWzcH.d.cts → index-DVAlsmEU.d.cts} +26 -19
- package/dist/index-DVDapw2k.d.cts +210 -0
- package/dist/{index-D_QQ_dTD.d.cts → index-DYTBbF8T.d.cts} +1 -1
- package/dist/{index-BgzPO43H.d.cts → index-DgJc8Zgc.d.cts} +6 -6
- package/dist/{index-Czk3r0yA.d.cts → index-DhLyOHYZ.d.ts} +56 -54
- package/dist/{index-CrlHFsiT.d.ts → index-DhnsQfa3.d.ts} +100 -118
- package/dist/{index-Bub6x_D4.d.cts → index-DktLSZOc.d.cts} +37 -90
- package/dist/{index-BaSy4L6w.d.cts → index-DpiGqtrs.d.cts} +100 -118
- package/dist/{index-D-HZ7sP4.d.ts → index-I1cCY3ZI.d.ts} +6 -6
- package/dist/{index-D9vBTuzo.d.ts → index-IUCY0OFN.d.ts} +4 -4
- package/dist/{index-DeSsvHDD.d.cts → index-MxYuWOrf.d.cts} +3 -3
- package/dist/index-N2MAxt7_.d.ts +128 -0
- package/dist/{index-CpZKtdMw.d.cts → index-PgwvGWa1.d.cts} +1 -1
- package/dist/{index-AUqWe_fX.d.ts → index-WSlcjhQF.d.ts} +55 -9
- package/dist/{index-Di7OdwlO.d.ts → index-bXXLSvor.d.ts} +37 -90
- package/dist/index-da2V5vPy.d.ts +113 -0
- package/dist/{index-DY2f2b9z.d.ts → index-eaQuGJnv.d.ts} +3 -3
- package/dist/{index-BsgxnHN8.d.cts → index-t6L2qpHh.d.cts} +3 -3
- package/dist/{index-C-3UXnHT.d.cts → index-tV3AA9hI.d.cts} +2 -2
- package/dist/{index-8OxXae3g.d.ts → index-yLt-aPMp.d.ts} +1 -1
- package/dist/{index-CqSJ25A9.d.cts → index-z8WFPVI8.d.cts} +1 -1
- package/dist/index.cjs +63 -59
- package/dist/index.d.cts +48 -47
- package/dist/index.d.ts +48 -47
- package/dist/index.js +1 -1
- package/dist/{meta-DreaEM_a.d.cts → meta-Ct9nqQS5.d.cts} +11 -7
- package/dist/{meta-BYqlATmg.d.ts → meta-D8OyedKp.d.ts} +11 -7
- package/dist/{node-fSc-hCv8.d.cts → node-BYInONRr.d.cts} +3 -3
- package/dist/{node-fSc-hCv8.d.ts → node-BYInONRr.d.ts} +3 -3
- package/dist/{observable-Cqty11jG.d.cts → observable-DMIlYJV1.d.cts} +1 -1
- package/dist/{observable-EAV_rNfM.d.ts → observable-DO8DDEzv.d.ts} +1 -1
- package/dist/patterns/ai/browser.cjs +5 -5
- package/dist/patterns/ai/browser.d.cts +4 -4
- package/dist/patterns/ai/browser.d.ts +4 -4
- package/dist/patterns/ai/browser.js +1 -1
- package/dist/patterns/ai/index.cjs +16 -20
- package/dist/patterns/ai/index.d.cts +17 -17
- package/dist/patterns/ai/index.d.ts +17 -17
- package/dist/patterns/ai/index.js +1 -1
- package/dist/patterns/ai/node.cjs +1 -1
- package/dist/patterns/ai/node.d.cts +4 -4
- package/dist/patterns/ai/node.d.ts +4 -4
- package/dist/patterns/ai/node.js +1 -1
- package/dist/patterns/audit/index.cjs +3 -7
- package/dist/patterns/audit/index.d.cts +6 -6
- package/dist/patterns/audit/index.d.ts +6 -6
- package/dist/patterns/audit/index.js +1 -1
- package/dist/patterns/cqrs/index.cjs +3 -7
- package/dist/patterns/cqrs/index.d.cts +6 -6
- package/dist/patterns/cqrs/index.d.ts +6 -6
- package/dist/patterns/cqrs/index.js +1 -1
- package/dist/patterns/demo-shell/index.cjs +5 -8
- package/dist/patterns/demo-shell/index.d.cts +5 -5
- package/dist/patterns/demo-shell/index.d.ts +5 -5
- package/dist/patterns/demo-shell/index.js +1 -1
- package/dist/patterns/domain-templates/index.cjs +3 -7
- package/dist/patterns/domain-templates/index.d.cts +4 -4
- package/dist/patterns/domain-templates/index.d.ts +4 -4
- package/dist/patterns/domain-templates/index.js +1 -1
- package/dist/patterns/graphspec/index.cjs +37 -37
- package/dist/patterns/graphspec/index.d.cts +5 -5
- package/dist/patterns/graphspec/index.d.ts +5 -5
- package/dist/patterns/graphspec/index.js +1 -1
- package/dist/patterns/guarded-execution/index.cjs +3 -7
- package/dist/patterns/guarded-execution/index.d.cts +7 -7
- package/dist/patterns/guarded-execution/index.d.ts +7 -7
- package/dist/patterns/guarded-execution/index.js +1 -1
- package/dist/patterns/harness/index.cjs +8 -12
- package/dist/patterns/harness/index.d.cts +12 -12
- package/dist/patterns/harness/index.d.ts +12 -12
- package/dist/patterns/harness/index.js +1 -1
- package/dist/patterns/job-queue/index.cjs +3 -7
- package/dist/patterns/job-queue/index.d.cts +6 -6
- package/dist/patterns/job-queue/index.d.ts +6 -6
- package/dist/patterns/job-queue/index.js +1 -1
- package/dist/patterns/lens/index.cjs +3 -7
- package/dist/patterns/lens/index.d.cts +5 -6
- package/dist/patterns/lens/index.d.ts +5 -6
- package/dist/patterns/lens/index.js +1 -1
- package/dist/patterns/memory/index.cjs +3 -7
- package/dist/patterns/memory/index.d.cts +6 -6
- package/dist/patterns/memory/index.d.ts +6 -6
- package/dist/patterns/memory/index.js +1 -1
- package/dist/patterns/messaging/index.cjs +3 -7
- package/dist/patterns/messaging/index.d.cts +5 -5
- package/dist/patterns/messaging/index.d.ts +5 -5
- package/dist/patterns/messaging/index.js +1 -1
- package/dist/patterns/orchestration/index.cjs +3 -7
- package/dist/patterns/orchestration/index.d.cts +8 -8
- package/dist/patterns/orchestration/index.d.ts +8 -8
- package/dist/patterns/orchestration/index.js +1 -1
- package/dist/patterns/process/index.cjs +1 -1
- package/dist/patterns/process/index.d.cts +7 -7
- package/dist/patterns/process/index.d.ts +7 -7
- package/dist/patterns/process/index.js +1 -1
- package/dist/patterns/reactive-layout/index.cjs +4 -8
- package/dist/patterns/reactive-layout/index.d.cts +5 -5
- package/dist/patterns/reactive-layout/index.d.ts +5 -5
- package/dist/patterns/reactive-layout/index.js +1 -1
- package/dist/patterns/reduction/index.cjs +3 -7
- package/dist/patterns/reduction/index.d.cts +4 -4
- package/dist/patterns/reduction/index.d.ts +4 -4
- package/dist/patterns/reduction/index.js +1 -1
- package/dist/patterns/refine-loop/index.cjs +5 -9
- package/dist/patterns/refine-loop/index.d.cts +6 -6
- package/dist/patterns/refine-loop/index.d.ts +6 -6
- package/dist/patterns/refine-loop/index.js +1 -1
- package/dist/patterns/resilient-pipeline/index.cjs +3 -1
- package/dist/patterns/resilient-pipeline/index.d.cts +6 -6
- package/dist/patterns/resilient-pipeline/index.d.ts +6 -6
- package/dist/patterns/resilient-pipeline/index.js +1 -1
- package/dist/patterns/surface/index.cjs +12 -16
- package/dist/patterns/surface/index.d.cts +6 -6
- package/dist/patterns/surface/index.d.ts +6 -6
- package/dist/patterns/surface/index.js +1 -1
- package/dist/{pipeline-graph-9JBbmRxA.d.ts → pipeline-graph-CB4La-UW.d.ts} +34 -17
- package/dist/{pipeline-graph-DuHpXSOn.d.cts → pipeline-graph-MWrQZXCq.d.cts} +34 -17
- package/dist/{reactive-layout-BMLDB4Vd.d.cts → reactive-layout-BtZfUKuL.d.cts} +2 -2
- package/dist/{reactive-layout-D-tRiNhg.d.ts → reactive-layout-KJj4E2dT.d.ts} +2 -2
- package/dist/{reactive-log-BgWSA1fg.d.ts → reactive-log-BlAsPLl2.d.ts} +2 -2
- package/dist/{reactive-log-C3IMAGpT.d.cts → reactive-log-_zeEnB9H.d.cts} +2 -2
- package/dist/{reactive-map-DmgeADH8.d.cts → reactive-map-6P_k3AQM.d.cts} +2 -2
- package/dist/{reactive-map-CHyeCf4D.d.ts → reactive-map-CjXByDV-.d.ts} +2 -2
- package/dist/resilience-S33JV6XC.js +1 -0
- package/dist/{sugar-D13E2M_z.d.ts → sugar-BhfjgetH.d.ts} +1 -1
- package/dist/{sugar-DgaGJcI6.d.cts → sugar-DzePN5-g.d.cts} +1 -1
- package/dist/{topology-tree-jrZue3ao.d.cts → topology-tree-3LBKFsUo.d.cts} +1 -1
- package/dist/{topology-tree-D47-nI6Z.d.ts → topology-tree-mF7Emqzm.d.ts} +1 -1
- package/dist/{types-BMSGPlpO.d.cts → types-1Dhoi7HM.d.cts} +1 -1
- package/dist/{types-CidcBDuk.d.ts → types-39jk0kaV.d.ts} +1 -1
- package/package.json +11 -1
- package/dist/chunk-2YFDSYEF.js +0 -1
- package/dist/chunk-5BGFS2XH.js +0 -1
- package/dist/chunk-CMTN3KPT.js +0 -80
- package/dist/chunk-DQJLC6YY.js +0 -1
- package/dist/chunk-G7JN6LCB.js +0 -1
- package/dist/chunk-KJEAIIIY.js +0 -43
- package/dist/chunk-LV3ACS5J.js +0 -1
- package/dist/chunk-NBGPXQSP.js +0 -1
- package/dist/chunk-NN3QPJ6U.js +0 -1
- package/dist/chunk-NSAZ6PR6.js +0 -1
- package/dist/chunk-O32GJOUJ.js +0 -1
- package/dist/chunk-QEVSIVSF.js +0 -1
- package/dist/chunk-QMC2PLNM.js +0 -7
- package/dist/chunk-QOJFR6GS.js +0 -1
- package/dist/chunk-SFK7MN7S.js +0 -1
- package/dist/chunk-TB7JKSVS.js +0 -61
- package/dist/chunk-UAXFKMAG.js +0 -1
- package/dist/chunk-XIMFHEKV.js +0 -1
- package/dist/chunk-XLMYQB6F.js +0 -1
- package/dist/chunk-XLYF4LBH.js +0 -1
- package/dist/imperative-audit-ahAE65a9.d.cts +0 -28
- package/dist/imperative-audit-ahAE65a9.d.ts +0 -28
- package/dist/index-5dNRlW7J.d.ts +0 -135
- package/dist/index-BWUMIt7J.d.cts +0 -135
- package/dist/index-BhzwpIJc.d.cts +0 -105
- package/dist/index-BsZk9T8y.d.ts +0 -105
- package/dist/index-C56XZiDe.d.cts +0 -163
- package/dist/index-CpdnP-0y.d.cts +0 -186
- package/dist/index-DKrIuF-r.d.ts +0 -163
- package/dist/index-DOU1Ee_k.d.ts +0 -186
- package/dist/resilience-LGBK236C.js +0 -1
package/dist/chunk-XLMYQB6F.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as F,c as G}from"./chunk-O32GJOUJ.js";import{k as _}from"./chunk-QMC2PLNM.js";import{t as B}from"./chunk-6773HURD.js";import{b as $}from"./chunk-TZQPPQEQ.js";import{C as N}from"./chunk-RZ5HKPGI.js";import{D as x,E as I,G as S,H as M,m as A}from"./chunk-LYCLF26R.js";import{b as k,c as v,d as y,f as T,g as O,i as E,j as w}from"./chunk-CK2E7BTU.js";import{b as K}from"./chunk-QYADASLV.js";var U={};K(U,{budgetGate:()=>C,effectivenessTracker:()=>L,feedback:()=>V,funnel:()=>P,scorer:()=>z});function R(u,t){return G("reduction",u,t)}function P(u,t,i,b){if(t.length===0)throw new RangeError("funnel requires at least one source");if(i.length===0)throw new RangeError("funnel requires at least one stage");let d=new _(u,b),s=t.length===1?t[0]:B(...t);d.add(s,{name:"merged"});let e="merged";for(let f=0;f<i.length;f++){let o=i[f],c=new _(o.name);o.build(c);try{c.resolve("input")}catch{throw new Error(`funnel stage "${o.name}" must define an "input" node`)}try{c.resolve("output")}catch{throw new Error(`funnel stage "${o.name}" must define an "output" node`)}d.mount(o.name,c);let l=d.resolve(e),m=`${o.name}::input`,g=d.resolve(m),a=`__bridge_${e}\u2192${o.name}_input`,p=M([l],([r])=>{g.emit(r)},{name:a});d.add(p,{name:a}),d.addDisposer(N(p)),e=`${o.name}::output`}return d}function V(u,t,i,b){let d=b?.maxIterations??10,s=`__feedback_${t}`,e=I(0,{meta:R("feedback_counter",{maxIterations:d,feedbackFrom:t,feedbackTo:i})});u.add(e,{name:s});let f=u.resolve(t),o=u.resolve(i),c=`__feedback_effect_${t}`,l=x([],(m,g)=>{let a=f.subscribe(p=>{for(let r of p){let n=r[0];if(n===k){let h=r[1];if(h==null)return;A(()=>{F(e,d)&&o.emit(h)})}else if(n===E||n===w){let h=n===w&&r.length>1?[w,r[1]]:[n];e.down([h])}}});return()=>a()},{name:c,describeKind:"effect",meta:{...R("feedback_effect",{feedbackFrom:t,feedbackTo:i}),_internal:!0}});return u.add(l,{name:c}),u.addDisposer(N(l)),u}function C(u,t,i){if(t.length===0)throw new RangeError("budgetGate requires at least one constraint");let b=t.map(a=>a.node),d=[u,...b],s=[],e=!1,f=!1,o=Symbol("budget-gate"),c=new Array(t.length);function l(){return t.every((a,p)=>a.check(c[p]))}function m(a){for(;s.length>0&&l();){let p=s[0];s=s.slice(1),a.emit(p)}s.length===0&&f&&(f=!1,a.down([[y]]))}return x([],(a,p)=>{for(let n=0;n<t.length;n++)c[n]=t[n].node.cache;let r=[];for(let n=0;n<d.length;n++){let h=d[n];r.push(h.subscribe(q=>{for(let D of q)g(D,n,p)}))}return()=>{for(let n of r)n()}},{...i,describeKind:"derived",meta:R("budget_gate",i?.meta)});function g(a,p,r){let n=a[0];if(p===0){if(n===k)return l()&&s.length===0?r.emit(a[1]):(s.push(a[1]),e||(e=!0,r.up([[T,o]]))),!0;if(n===v)return r.down([[v]]),!0;if(n===y)return s.length===0?r.down([[y]]):f=!0,!0;if(n===E||n===w){for(let h of s)r.emit(h);return s=[],f=!1,e&&(e=!1,r.up([[O,o]])),r.down([a]),!0}return!1}return n===k&&(c[p-1]=a[1]),n===k||n===y?(l()&&s.length>0?(m(r),s.length===0&&e&&(e=!1,r.up([[O,o]]))):!l()&&!e&&s.length>0&&(e=!0,r.up([[T,o]])),!0):n===v?!0:n===w?(r.down([a]),!0):n===E}}function z(u,t,i){if(u.length===0)throw new RangeError("scorer requires at least one source");if(u.length!==t.length)throw new RangeError("scorer requires the same number of sources and weights");let b=[...u,...t],d=u.length,s=i?.scoreFns;return S(b,e=>{let f=e.slice(0,d),o=e.slice(d),c=[],l=0;for(let m=0;m<d;m++){let g=f[m]??0,a=o[m]??0,r=(s?.[m]?s[m](g):g)*a;c.push(r),l+=r}return{value:f,score:l,breakdown:c}},{...i?{equals:i.equals,resubscribable:i.resubscribable,resetOnTeardown:i.resetOnTeardown}:{},describeKind:"derived",meta:R("scorer",i?.meta)})}function L(u){let t=$({name:u?.name??"effectiveness-entries"}),i=S([t.entries],([e])=>new Map(e),{name:`${u?.name??"effectiveness"}-snapshot`,equals:(e,f)=>{let o=e,c=f;if(o.size!==c.size)return!1;for(let[l,m]of o){let g=c.get(l);if(!g||m.attempts!==g.attempts||m.successes!==g.successes)return!1}return!0}});function b(e,f){let o=t.get(e),c=(o?.attempts??0)+1,l=(o?.successes??0)+(f?1:0);t.set(e,{key:e,attempts:c,successes:l,successRate:l/c})}function d(e){return t.get(e)}let s=N(i);return{node:i,record:b,lookup:d,dispose:()=>s()}}export{P as a,V as b,C as c,z as d,L as e,U as f};
|
package/dist/chunk-XLYF4LBH.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as $}from"./chunk-6KZZ6XQE.js";import{c as O}from"./chunk-O32GJOUJ.js";import{a as C}from"./chunk-NSAZ6PR6.js";import{k as A}from"./chunk-QMC2PLNM.js";import{b as x}from"./chunk-7KZZLWZ6.js";import{C as R}from"./chunk-RZ5HKPGI.js";import{C as T,E as N,G as E,o as b,p as w,u as P,w as S}from"./chunk-LYCLF26R.js";import{b as v}from"./chunk-CK2E7BTU.js";import{b as M}from"./chunk-QYADASLV.js";var J={};M(J,{AuditTrailGraph:()=>k,PolicyEnforcerGraph:()=>G,auditTrail:()=>z,complianceSnapshot:()=>F,policyEnforcer:()=>K,reactiveExplainPath:()=>q});function V(i,t){return O("audit",i,t)}var L=new Set(["data","error","complete","teardown"]),k=class extends A{entries;count;_log;_target;constructor(t,n){super(n.name??`${t.name}_audit`,n.graph),this._target=t,this._log=x([],{name:"entries",...n.maxSize!=null?{maxSize:n.maxSize}:{}}),this.entries=this._log.entries,this.add(this.entries,{name:"entries"}),this.count=E([this.entries],([c])=>c.length,{name:"count",describeKind:"derived",meta:V("count")}),this.add(this.count,{name:"count"}),this.addDisposer(R(this.count));let o=n.includeTypes!=null?new Set(n.includeTypes):L,u=n.filter,a=0,h=t.observe({timeline:!0,structured:!0}),m=h.onEvent(c=>{if(c.type==="derived")return;let e=c.type;if(!o.has(e))return;let d=c.path??"",r={seq:a++,timestamp_ns:c.timestamp_ns??b(),wall_clock_ns:w(),path:d,type:e},f=(d?D(t,d):void 0)?.lastMutation;f!=null&&(r.actor=f.actor),e==="data"&&(r.value=c.data),e==="error"&&(r.error=c.data);let l=d?U(t,d):void 0;l!=null&&(r.annotation=l),!(u!=null&&!u(r))&&this._log.append(r)});this.addDisposer(()=>{m(),h.dispose()}),this.addDisposer(()=>this._log.disposeAllViews())}all(){return this.entries.cache??[]}byNode(t){return this.all().filter(n=>n.path===t)}byActor(t){return this.all().filter(n=>n.actor?.id===t)}byActorType(t){return this.all().filter(n=>n.actor?.type===t)}byTimeRange(t,n){return this.all().filter(o=>!(o.timestamp_ns<t||n!=null&&o.timestamp_ns>=n))}get target(){return this._target}};function z(i,t={}){return new k(i,t)}var G=class extends A{policies;violations;violationCount;_target;_mode;_currentGuard;constructor(t,n,o){super(o.name??`${t.name}_policy`,o.graph),this._target=t,this._mode=o.mode??"audit";let u=I(n)?n:N(n,{name:"policies"});this.policies=u,this.add(this.policies,{name:"policies"}),this.violations=new $("violations",{retainedLimit:o.violationsLimit??1e3}),this.mount("violations",this.violations),this.violationCount=E([this.violations.events],([e])=>e.length,{name:"violationCount",describeKind:"derived",meta:V("policy_violation_count")}),this.add(this.violationCount,{name:"violationCount"}),this.addDisposer(R(this.violationCount));let h=u.cache??[];this._currentGuard=P(h);let m=u.subscribe(e=>{for(let d of e)d[0]===v&&(h=d[1]??[],this._currentGuard=P(h))});this.addDisposer(m);let c=o.paths!=null?[...o.paths]:j(t);if(this._mode==="enforce"){let e=new Map,d=r=>{if(e.has(r))return;let s=D(t,r);if(!(s instanceof T))return;let f=(l,p)=>{let y=this._currentGuard(l,p);return y||this._publishViolation(l,p,r,"blocked"),y};e.set(r,s._pushGuard(f))};for(let r of c)d(r);if(o.paths==null){let r=C(t,(s,f,l)=>{if(s.kind==="added")if(s.nodeKind==="node")d(`${l}${s.name}`);else{let p=f._mounts.get(s.name);if(!(p instanceof A))return;let y=`${l}${s.name}::`,_=j(p);for(let g of _)d(g===""?`${l}${s.name}`:`${y}${g}`)}else if(s.kind==="removed")if(s.nodeKind==="node"){let p=`${l}${s.name}`,y=e.get(p);y!=null&&(y(),e.delete(p))}else{let p=`${l}${s.name}`,y=`${p}::`;for(let[_,g]of e)(_===p||_.startsWith(y))&&(g(),e.delete(_))}});this.addDisposer(r)}else{let r=t.topology.subscribe(s=>{for(let f of s){if(f[0]!==v)continue;let l=f[1];if(l.kind!=="removed"||l.nodeKind!=="node")continue;let p=e.get(l.name);p!=null&&(p(),e.delete(l.name))}});this.addDisposer(r)}this.addDisposer(()=>{for(let r of e.values())r();e.clear()})}else{let e=t.observe({timeline:!0,structured:!0}),d=e.onEvent(r=>{if(r.type!=="data"&&r.type!=="error")return;let s=r.path??"";if(!s||o.paths!=null&&!o.paths.includes(s))return;let f=r.actor??D(t,s)?.lastMutation?.actor;if(f==null)return;let l="write";this._currentGuard(f,l)||this._publishViolation(f,l,s,"observed")});this.addDisposer(()=>{d(),e.dispose()})}}_publishViolation(t,n,o,u){this.violations.publish({timestamp_ns:b(),wall_clock_ns:w(),path:o,actor:t,action:n,mode:this._mode,result:u})}all(){return this.violations.retained()}get mode(){return this._mode}get target(){return this._target}};function K(i,t,n={}){return new G(i,t,n)}function q(i,t,n,o){return i.explain(t,n,{reactive:!0,...o})}function F(i,t={}){let n={format_version:1,timestamp_ns:b(),wall_clock_ns:w(),graph:i.snapshot()};if(t.actor!=null&&(n.actor=t.actor),t.audit!=null){let u=[...t.audit.all()];n.audit={count:u.length,entries:u}}if(t.policies!=null){let u=t.policies.policies.cache??[];n.policies={mode:t.policies.mode,rules:u,violations:[...t.policies.all()]}}let o=B(n);return{...n,fingerprint:o}}function I(i){return typeof i=="object"&&i!==null&&"subscribe"in i}function D(i,t){try{return i.node(t)}catch{return}}function U(i,t){try{return i.annotation(t)}catch{return}}function j(i){let t=i.describe({detail:"minimal"});return Object.keys(t.nodes)}function B(i){return S(JSON.stringify(H(i)))}function H(i){let t=new Set,n=o=>{if(o===void 0)return{__undefined:!0};if(o===null)return null;let u=typeof o;if(u==="bigint")return{__bigint:o.toString()};if(u!=="object")return o;let a=o;if(t.has(a))return{__circular:!0};t.add(a);try{if(Array.isArray(a))return a.map(n);if(a instanceof Date)return{__date:a.toISOString()};if(a instanceof RegExp)return{__regexp:{source:a.source,flags:a.flags}};if(a instanceof Map)return{__map:[...a.entries()].map(([c,e])=>[n(c),n(e)])};if(a instanceof Set)return{__set:[...a].map(n)};if(ArrayBuffer.isView(a)){let m=a,c=new Array(m.length);for(let e=0;e<m.length;e++)c[e]=m[e]??0;return{__typed_array:{ctor:a.constructor.name,data:c}}}let h={};for(let m of Object.keys(a).sort())h[m]=n(a[m]);return h}finally{t.delete(a)}};return n(i)}export{k as a,z as b,G as c,K as d,q as e,F as f,J as g};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Imperative-controller-with-audit helper layer (Audit 2 — locked 2026-04-24).
|
|
3
|
-
*
|
|
4
|
-
* Five Phase-4 primitives share the same shape: imperative mutation methods +
|
|
5
|
-
* closure state + reactive audit log + freeze-at-entry + rollback-on-throw.
|
|
6
|
-
* This module factors out the common machinery so each primitive becomes
|
|
7
|
-
* declarative wiring over typed audit records:
|
|
8
|
-
* - `gate`, `pipeline.gate` (Wave A.2 Unit 8)
|
|
9
|
-
* - `JobQueueGraph` (Wave B.3 Unit 15)
|
|
10
|
-
* - `CqrsGraph.dispatch` (Wave C.2 Unit 20)
|
|
11
|
-
* - `CqrsGraph.saga` (Wave C.3 Unit 22)
|
|
12
|
-
* - `processManager` (Wave 7) [out of scope this commit]
|
|
13
|
-
*
|
|
14
|
-
* @internal — exposed for primitive impls only; not re-exported through any
|
|
15
|
-
* patterns/<x>/index.ts barrel.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/** Shared base shape for every audit record. Per-primitive types extend this. */
|
|
19
|
-
interface BaseAuditRecord {
|
|
20
|
-
readonly t_ns: number;
|
|
21
|
-
readonly seq?: number;
|
|
22
|
-
readonly handlerVersion?: {
|
|
23
|
-
id: string;
|
|
24
|
-
version: string | number;
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export type { BaseAuditRecord as B };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Imperative-controller-with-audit helper layer (Audit 2 — locked 2026-04-24).
|
|
3
|
-
*
|
|
4
|
-
* Five Phase-4 primitives share the same shape: imperative mutation methods +
|
|
5
|
-
* closure state + reactive audit log + freeze-at-entry + rollback-on-throw.
|
|
6
|
-
* This module factors out the common machinery so each primitive becomes
|
|
7
|
-
* declarative wiring over typed audit records:
|
|
8
|
-
* - `gate`, `pipeline.gate` (Wave A.2 Unit 8)
|
|
9
|
-
* - `JobQueueGraph` (Wave B.3 Unit 15)
|
|
10
|
-
* - `CqrsGraph.dispatch` (Wave C.2 Unit 20)
|
|
11
|
-
* - `CqrsGraph.saga` (Wave C.3 Unit 22)
|
|
12
|
-
* - `processManager` (Wave 7) [out of scope this commit]
|
|
13
|
-
*
|
|
14
|
-
* @internal — exposed for primitive impls only; not re-exported through any
|
|
15
|
-
* patterns/<x>/index.ts barrel.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/** Shared base shape for every audit record. Per-primitive types extend this. */
|
|
19
|
-
interface BaseAuditRecord {
|
|
20
|
-
readonly t_ns: number;
|
|
21
|
-
readonly seq?: number;
|
|
22
|
-
readonly handlerVersion?: {
|
|
23
|
-
id: string;
|
|
24
|
-
version: string | number;
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export type { BaseAuditRecord as B };
|
package/dist/index-5dNRlW7J.d.ts
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { P as PolicyRuleData, a as Node, A as Actor } from './node-fSc-hCv8.js';
|
|
2
|
-
import { G as Graph, a as GraphOptions, c as GraphDescribeOptions, d as GraphDescribeOutput, D as DescribeFilter } from './graph-BjW1taJl.js';
|
|
3
|
-
import { P as PolicyEnforcerGraph, a as PolicyViolation } from './index-DJVQ-t07.js';
|
|
4
|
-
import { T as TopicGraph } from './index-BUFCHvOR.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Composable safety layer (roadmap §9.0b).
|
|
8
|
-
*
|
|
9
|
-
* {@link guardedExecution} wraps any {@link Graph} with:
|
|
10
|
-
*
|
|
11
|
-
* - {@link policyEnforcer} — reactive ABAC, policies stored as a `Node` so
|
|
12
|
-
* LLMs / humans can update them at runtime. Now with full transitive
|
|
13
|
-
* dynamic coverage via `watchTopologyTree`.
|
|
14
|
-
* - Scoped {@link GuardedExecutionGraph.scopedDescribe} — delegates to
|
|
15
|
-
* `target.describe({actor})` so callers see only what the actor is
|
|
16
|
-
* allowed to see.
|
|
17
|
-
* - The enforcer's `violations` topic is republished as `violations` on
|
|
18
|
-
* the wrapper, composable with {@link graphLens}.`health` alerts.
|
|
19
|
-
*
|
|
20
|
-
* V1 scope: policies + actor + scoped describe. Budget-as-option is NOT
|
|
21
|
-
* in V1 — it requires a cost-tracking design that hasn't landed yet.
|
|
22
|
-
* Callers who need a budget limit today append a budget-aware
|
|
23
|
-
* {@link PolicyRuleData} to the policies list (check current cost and
|
|
24
|
-
* `deny` when exhausted).
|
|
25
|
-
*
|
|
26
|
-
* @module
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
/** Options for {@link guardedExecution}. */
|
|
30
|
-
interface GuardedExecutionOptions {
|
|
31
|
-
/**
|
|
32
|
-
* Policies enforced against every guarded write. Static list or a live
|
|
33
|
-
* `Node<readonly PolicyRuleData[]>` (LLM-updatable).
|
|
34
|
-
*
|
|
35
|
-
* **Deny-by-default gotcha:** the underlying `policyFromRules()` denies any
|
|
36
|
-
* action that matches no rule. An empty policies list in `mode: "enforce"`
|
|
37
|
-
* therefore blocks EVERY write AND every `observe` through the stacked
|
|
38
|
-
* guard — including `scopedDescribe()`. If you want a permissive base, add
|
|
39
|
-
* at least `{ effect: "allow", action: "*" }` and layer deny rules on top.
|
|
40
|
-
* In `mode: "audit"` no guards are stacked, so empty policies are safe.
|
|
41
|
-
*/
|
|
42
|
-
policies: readonly PolicyRuleData[] | Node<readonly PolicyRuleData[]>;
|
|
43
|
-
/**
|
|
44
|
-
* Actor whose perspective drives {@link GuardedExecutionGraph.scopedDescribe}
|
|
45
|
-
* and {@link GuardedExecutionGraph.describe} — when omitted, callers must
|
|
46
|
-
* pass `{actor}` explicitly or they get the target's raw describe.
|
|
47
|
-
*/
|
|
48
|
-
actor?: Actor;
|
|
49
|
-
/**
|
|
50
|
-
* `"enforce"` (default) — push guards onto target nodes so disallowed
|
|
51
|
-
* writes throw {@link GuardDenied}.
|
|
52
|
-
* `"audit"` — record would-be denials to the `violations` topic without
|
|
53
|
-
* blocking writes.
|
|
54
|
-
*/
|
|
55
|
-
mode?: "audit" | "enforce";
|
|
56
|
-
/** Ring-buffer cap for the `violations` topic. Default 1000 (inherited from policyEnforcer). */
|
|
57
|
-
violationsLimit?: number;
|
|
58
|
-
/** Wrapper graph name. Default `${target.name}_guarded`. */
|
|
59
|
-
name?: string;
|
|
60
|
-
/** Wrapper graph options. */
|
|
61
|
-
graph?: GraphOptions;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Wrapper over a target {@link Graph} providing reactive ABAC + scoped
|
|
65
|
-
* describe. Mounts a {@link PolicyEnforcerGraph} under `enforcer`.
|
|
66
|
-
*
|
|
67
|
-
* @category patterns
|
|
68
|
-
*/
|
|
69
|
-
declare class GuardedExecutionGraph extends Graph {
|
|
70
|
-
readonly enforcer: PolicyEnforcerGraph;
|
|
71
|
-
readonly violations: TopicGraph<PolicyViolation>;
|
|
72
|
-
private readonly _target;
|
|
73
|
-
private readonly _defaultActor;
|
|
74
|
-
constructor(target: Graph, opts: GuardedExecutionOptions);
|
|
75
|
-
/**
|
|
76
|
-
* Describe the **target** graph scoped to the configured actor. Returns
|
|
77
|
-
* only nodes the actor is permitted to see (via the target's node guards
|
|
78
|
-
* filtering `describe()` via `actor`).
|
|
79
|
-
*
|
|
80
|
-
* Pass `{actor}` in opts to override the configured actor for this call.
|
|
81
|
-
* Pass any standard {@link GraphDescribeOptions} fields (`detail`,
|
|
82
|
-
* `fields`, `filter`) — they apply to the target's describe.
|
|
83
|
-
*
|
|
84
|
-
* **Mode interaction:**
|
|
85
|
-
* - In `mode: "enforce"` (default), the enforcer stacks a policy-derived
|
|
86
|
-
* guard on every target node. `scopedDescribe({actor})` then filters by
|
|
87
|
-
* the AND of per-node guards AND the stacked policy guard.
|
|
88
|
-
* - In `mode: "audit"`, NO guards are stacked — `scopedDescribe` filters
|
|
89
|
-
* purely by the target's pre-existing per-node guards. If a target has
|
|
90
|
-
* no node-level guards, the policy rules you pass have no effect on
|
|
91
|
-
* visibility (they only populate the `violations` topic on writes).
|
|
92
|
-
*/
|
|
93
|
-
scopedDescribe(opts?: Omit<GraphDescribeOptions, "actor"> & {
|
|
94
|
-
actor?: Actor;
|
|
95
|
-
}): GraphDescribeOutput;
|
|
96
|
-
/** The wrapped graph (escape hatch for tooling). */
|
|
97
|
-
get target(): Graph;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Wrap a {@link Graph} with {@link policyEnforcer} plus a scoped describe
|
|
101
|
-
* lens. Returns a {@link GuardedExecutionGraph} that can be mounted, diffed,
|
|
102
|
-
* or composed with {@link graphLens}.
|
|
103
|
-
*
|
|
104
|
-
* @param target - The graph to guard.
|
|
105
|
-
* @param opts - See {@link GuardedExecutionOptions}.
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* ```ts
|
|
109
|
-
* const guarded = guardedExecution(app, {
|
|
110
|
-
* actor: { type: "human", id: "alice" },
|
|
111
|
-
* policies: [
|
|
112
|
-
* { effect: "allow", action: "read", actorType: "human" },
|
|
113
|
-
* { effect: "deny", action: "write", pathPattern: "system::*" },
|
|
114
|
-
* ],
|
|
115
|
-
* mode: "enforce",
|
|
116
|
-
* });
|
|
117
|
-
*
|
|
118
|
-
* const view = guarded.scopedDescribe({ detail: "standard" });
|
|
119
|
-
* guarded.violations.events.subscribe(msgs => console.log("violations:", msgs));
|
|
120
|
-
* ```
|
|
121
|
-
*
|
|
122
|
-
* @category patterns
|
|
123
|
-
*/
|
|
124
|
-
declare function guardedExecution(target: Graph, opts: GuardedExecutionOptions): GuardedExecutionGraph;
|
|
125
|
-
|
|
126
|
-
declare const index_DescribeFilter: typeof DescribeFilter;
|
|
127
|
-
type index_GuardedExecutionGraph = GuardedExecutionGraph;
|
|
128
|
-
declare const index_GuardedExecutionGraph: typeof GuardedExecutionGraph;
|
|
129
|
-
type index_GuardedExecutionOptions = GuardedExecutionOptions;
|
|
130
|
-
declare const index_guardedExecution: typeof guardedExecution;
|
|
131
|
-
declare namespace index {
|
|
132
|
-
export { index_DescribeFilter as DescribeFilter, index_GuardedExecutionGraph as GuardedExecutionGraph, type index_GuardedExecutionOptions as GuardedExecutionOptions, index_guardedExecution as guardedExecution };
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export { GuardedExecutionGraph as G, type GuardedExecutionOptions as a, guardedExecution as g, index as i };
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { P as PolicyRuleData, a as Node, A as Actor } from './node-fSc-hCv8.cjs';
|
|
2
|
-
import { G as Graph, a as GraphOptions, c as GraphDescribeOptions, d as GraphDescribeOutput, D as DescribeFilter } from './graph-CHsVwf9S.cjs';
|
|
3
|
-
import { P as PolicyEnforcerGraph, a as PolicyViolation } from './index-B2IUcH13.cjs';
|
|
4
|
-
import { T as TopicGraph } from './index-BpMZzX9P.cjs';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Composable safety layer (roadmap §9.0b).
|
|
8
|
-
*
|
|
9
|
-
* {@link guardedExecution} wraps any {@link Graph} with:
|
|
10
|
-
*
|
|
11
|
-
* - {@link policyEnforcer} — reactive ABAC, policies stored as a `Node` so
|
|
12
|
-
* LLMs / humans can update them at runtime. Now with full transitive
|
|
13
|
-
* dynamic coverage via `watchTopologyTree`.
|
|
14
|
-
* - Scoped {@link GuardedExecutionGraph.scopedDescribe} — delegates to
|
|
15
|
-
* `target.describe({actor})` so callers see only what the actor is
|
|
16
|
-
* allowed to see.
|
|
17
|
-
* - The enforcer's `violations` topic is republished as `violations` on
|
|
18
|
-
* the wrapper, composable with {@link graphLens}.`health` alerts.
|
|
19
|
-
*
|
|
20
|
-
* V1 scope: policies + actor + scoped describe. Budget-as-option is NOT
|
|
21
|
-
* in V1 — it requires a cost-tracking design that hasn't landed yet.
|
|
22
|
-
* Callers who need a budget limit today append a budget-aware
|
|
23
|
-
* {@link PolicyRuleData} to the policies list (check current cost and
|
|
24
|
-
* `deny` when exhausted).
|
|
25
|
-
*
|
|
26
|
-
* @module
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
/** Options for {@link guardedExecution}. */
|
|
30
|
-
interface GuardedExecutionOptions {
|
|
31
|
-
/**
|
|
32
|
-
* Policies enforced against every guarded write. Static list or a live
|
|
33
|
-
* `Node<readonly PolicyRuleData[]>` (LLM-updatable).
|
|
34
|
-
*
|
|
35
|
-
* **Deny-by-default gotcha:** the underlying `policyFromRules()` denies any
|
|
36
|
-
* action that matches no rule. An empty policies list in `mode: "enforce"`
|
|
37
|
-
* therefore blocks EVERY write AND every `observe` through the stacked
|
|
38
|
-
* guard — including `scopedDescribe()`. If you want a permissive base, add
|
|
39
|
-
* at least `{ effect: "allow", action: "*" }` and layer deny rules on top.
|
|
40
|
-
* In `mode: "audit"` no guards are stacked, so empty policies are safe.
|
|
41
|
-
*/
|
|
42
|
-
policies: readonly PolicyRuleData[] | Node<readonly PolicyRuleData[]>;
|
|
43
|
-
/**
|
|
44
|
-
* Actor whose perspective drives {@link GuardedExecutionGraph.scopedDescribe}
|
|
45
|
-
* and {@link GuardedExecutionGraph.describe} — when omitted, callers must
|
|
46
|
-
* pass `{actor}` explicitly or they get the target's raw describe.
|
|
47
|
-
*/
|
|
48
|
-
actor?: Actor;
|
|
49
|
-
/**
|
|
50
|
-
* `"enforce"` (default) — push guards onto target nodes so disallowed
|
|
51
|
-
* writes throw {@link GuardDenied}.
|
|
52
|
-
* `"audit"` — record would-be denials to the `violations` topic without
|
|
53
|
-
* blocking writes.
|
|
54
|
-
*/
|
|
55
|
-
mode?: "audit" | "enforce";
|
|
56
|
-
/** Ring-buffer cap for the `violations` topic. Default 1000 (inherited from policyEnforcer). */
|
|
57
|
-
violationsLimit?: number;
|
|
58
|
-
/** Wrapper graph name. Default `${target.name}_guarded`. */
|
|
59
|
-
name?: string;
|
|
60
|
-
/** Wrapper graph options. */
|
|
61
|
-
graph?: GraphOptions;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Wrapper over a target {@link Graph} providing reactive ABAC + scoped
|
|
65
|
-
* describe. Mounts a {@link PolicyEnforcerGraph} under `enforcer`.
|
|
66
|
-
*
|
|
67
|
-
* @category patterns
|
|
68
|
-
*/
|
|
69
|
-
declare class GuardedExecutionGraph extends Graph {
|
|
70
|
-
readonly enforcer: PolicyEnforcerGraph;
|
|
71
|
-
readonly violations: TopicGraph<PolicyViolation>;
|
|
72
|
-
private readonly _target;
|
|
73
|
-
private readonly _defaultActor;
|
|
74
|
-
constructor(target: Graph, opts: GuardedExecutionOptions);
|
|
75
|
-
/**
|
|
76
|
-
* Describe the **target** graph scoped to the configured actor. Returns
|
|
77
|
-
* only nodes the actor is permitted to see (via the target's node guards
|
|
78
|
-
* filtering `describe()` via `actor`).
|
|
79
|
-
*
|
|
80
|
-
* Pass `{actor}` in opts to override the configured actor for this call.
|
|
81
|
-
* Pass any standard {@link GraphDescribeOptions} fields (`detail`,
|
|
82
|
-
* `fields`, `filter`) — they apply to the target's describe.
|
|
83
|
-
*
|
|
84
|
-
* **Mode interaction:**
|
|
85
|
-
* - In `mode: "enforce"` (default), the enforcer stacks a policy-derived
|
|
86
|
-
* guard on every target node. `scopedDescribe({actor})` then filters by
|
|
87
|
-
* the AND of per-node guards AND the stacked policy guard.
|
|
88
|
-
* - In `mode: "audit"`, NO guards are stacked — `scopedDescribe` filters
|
|
89
|
-
* purely by the target's pre-existing per-node guards. If a target has
|
|
90
|
-
* no node-level guards, the policy rules you pass have no effect on
|
|
91
|
-
* visibility (they only populate the `violations` topic on writes).
|
|
92
|
-
*/
|
|
93
|
-
scopedDescribe(opts?: Omit<GraphDescribeOptions, "actor"> & {
|
|
94
|
-
actor?: Actor;
|
|
95
|
-
}): GraphDescribeOutput;
|
|
96
|
-
/** The wrapped graph (escape hatch for tooling). */
|
|
97
|
-
get target(): Graph;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Wrap a {@link Graph} with {@link policyEnforcer} plus a scoped describe
|
|
101
|
-
* lens. Returns a {@link GuardedExecutionGraph} that can be mounted, diffed,
|
|
102
|
-
* or composed with {@link graphLens}.
|
|
103
|
-
*
|
|
104
|
-
* @param target - The graph to guard.
|
|
105
|
-
* @param opts - See {@link GuardedExecutionOptions}.
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* ```ts
|
|
109
|
-
* const guarded = guardedExecution(app, {
|
|
110
|
-
* actor: { type: "human", id: "alice" },
|
|
111
|
-
* policies: [
|
|
112
|
-
* { effect: "allow", action: "read", actorType: "human" },
|
|
113
|
-
* { effect: "deny", action: "write", pathPattern: "system::*" },
|
|
114
|
-
* ],
|
|
115
|
-
* mode: "enforce",
|
|
116
|
-
* });
|
|
117
|
-
*
|
|
118
|
-
* const view = guarded.scopedDescribe({ detail: "standard" });
|
|
119
|
-
* guarded.violations.events.subscribe(msgs => console.log("violations:", msgs));
|
|
120
|
-
* ```
|
|
121
|
-
*
|
|
122
|
-
* @category patterns
|
|
123
|
-
*/
|
|
124
|
-
declare function guardedExecution(target: Graph, opts: GuardedExecutionOptions): GuardedExecutionGraph;
|
|
125
|
-
|
|
126
|
-
declare const index_DescribeFilter: typeof DescribeFilter;
|
|
127
|
-
type index_GuardedExecutionGraph = GuardedExecutionGraph;
|
|
128
|
-
declare const index_GuardedExecutionGraph: typeof GuardedExecutionGraph;
|
|
129
|
-
type index_GuardedExecutionOptions = GuardedExecutionOptions;
|
|
130
|
-
declare const index_guardedExecution: typeof guardedExecution;
|
|
131
|
-
declare namespace index {
|
|
132
|
-
export { index_DescribeFilter as DescribeFilter, index_GuardedExecutionGraph as GuardedExecutionGraph, type index_GuardedExecutionOptions as GuardedExecutionOptions, index_guardedExecution as guardedExecution };
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export { GuardedExecutionGraph as G, type GuardedExecutionOptions as a, guardedExecution as g, index as i };
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { a as Node } from './node-fSc-hCv8.cjs';
|
|
2
|
-
import { S as StatusValue, C as CircuitState, R as RateLimiterOptions, a as CircuitBreakerOptions, b as RetryOptions, F as FallbackInput, N as NS_PER_MS, c as NS_PER_SEC } from './resilience-BWP2c7Af.cjs';
|
|
3
|
-
import { B as BudgetConstraint } from './index-CpdnP-0y.cjs';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Resilience composition with correct nesting order (roadmap §9.0b).
|
|
7
|
-
*
|
|
8
|
-
* {@link resilientPipeline} composes the resilience primitives from
|
|
9
|
-
* `extra/resilience.ts` in the order discovered during the §9.1 eval runs:
|
|
10
|
-
*
|
|
11
|
-
* ```text
|
|
12
|
-
* rateLimit → budget → breaker → timeout → retry → fallback → status
|
|
13
|
-
* ```
|
|
14
|
-
*
|
|
15
|
-
* Note on retry/timeout ordering: `timeout` is applied BEFORE `retry` so each
|
|
16
|
-
* retry attempt resubscribes to a fresh deadline (per-attempt semantics). If
|
|
17
|
-
* `timeout` wrapped `retry`, a single deadline would apply to the entire
|
|
18
|
-
* retry chain — not what callers expect.
|
|
19
|
-
*
|
|
20
|
-
* Every step is optional — omit the option and that layer is skipped. The
|
|
21
|
-
* returned bundle exposes the final `Node<T>` plus the status/error/breaker
|
|
22
|
-
* companions so callers can wire them into dashboards, alerts, or
|
|
23
|
-
* {@link graphLens}.
|
|
24
|
-
*
|
|
25
|
-
* Subsumes the pre-1.0 `resilientFetch` template — that template becomes a
|
|
26
|
-
* preconfigured instance of this factory for the HTTP fetch case.
|
|
27
|
-
*
|
|
28
|
-
* @module
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
/** Options for {@link resilientPipeline}. Every field is optional — omit to skip that layer. */
|
|
32
|
-
interface ResilientPipelineOptions<T> {
|
|
33
|
-
/** Admission control — at most `maxEvents` DATA per `windowNs`. See {@link rateLimiter}. */
|
|
34
|
-
rateLimit?: RateLimiterOptions;
|
|
35
|
-
/** Cost/constraint gate. See {@link budgetGate}. */
|
|
36
|
-
budget?: ReadonlyArray<BudgetConstraint>;
|
|
37
|
-
/** Circuit breaker — fail-fast when the downstream resource is unhealthy. See {@link circuitBreaker}. */
|
|
38
|
-
breaker?: CircuitBreakerOptions;
|
|
39
|
-
/**
|
|
40
|
-
* Behavior when the breaker is open:
|
|
41
|
-
* - `"skip"` — emit RESOLVED (default, lets downstream drop the beat)
|
|
42
|
-
* - `"error"` — emit a `CircuitOpenError` so `retry`/`fallback` can react
|
|
43
|
-
*
|
|
44
|
-
* Only used when `breaker` is provided.
|
|
45
|
-
*/
|
|
46
|
-
breakerOnOpen?: "skip" | "error";
|
|
47
|
-
/** Retry policy on terminal ERROR. See {@link retry}. */
|
|
48
|
-
retry?: RetryOptions;
|
|
49
|
-
/**
|
|
50
|
-
* Per-attempt deadline in milliseconds. Converted to ns internally. Omit to skip the timeout wrap.
|
|
51
|
-
*
|
|
52
|
-
* Specified in ms (not ns) because callers consistently think in millisecond deadlines;
|
|
53
|
-
* retry/breaker/ratelimit options take ns to match their primitives exactly.
|
|
54
|
-
*/
|
|
55
|
-
timeoutMs?: number;
|
|
56
|
-
/** Final fallback value emitted on terminal ERROR after retry exhausts. See {@link fallback}. */
|
|
57
|
-
fallback?: FallbackInput<T>;
|
|
58
|
-
/** Initial status reported by the status node. Default `"pending"`. */
|
|
59
|
-
initialStatus?: StatusValue;
|
|
60
|
-
}
|
|
61
|
-
/** Output bundle of {@link resilientPipeline}. */
|
|
62
|
-
interface ResilientPipelineBundle<T> {
|
|
63
|
-
/** The final resilient node. Subscribe to this for DATA emissions. */
|
|
64
|
-
node: Node<T>;
|
|
65
|
-
/** Live status: `"pending" | "active" | "completed" | "errored"`. */
|
|
66
|
-
status: Node<StatusValue>;
|
|
67
|
-
/** Last error payload, or `null` when not errored. */
|
|
68
|
-
error: Node<unknown | null>;
|
|
69
|
-
/** Breaker state when `opts.breaker` was provided; `undefined` otherwise. */
|
|
70
|
-
breakerState: Node<CircuitState> | undefined;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Compose a resilient pipeline around `source` in the canonical nesting
|
|
74
|
-
* order — `rateLimit → budget → breaker → timeout → retry → fallback → status`.
|
|
75
|
-
* Omit any option to skip that layer.
|
|
76
|
-
*
|
|
77
|
-
* @param source - Upstream node to wrap.
|
|
78
|
-
* @param opts - See {@link ResilientPipelineOptions}. All fields optional.
|
|
79
|
-
*
|
|
80
|
-
* @example
|
|
81
|
-
* ```ts
|
|
82
|
-
* const safeFetch = resilientPipeline(fetchNode, {
|
|
83
|
-
* rateLimit: { maxEvents: 10, windowNs: NS_PER_SEC },
|
|
84
|
-
* breaker: { failureThreshold: 5 },
|
|
85
|
-
* retry: { count: 3, backoff: "exponential" },
|
|
86
|
-
* timeoutMs: 10_000,
|
|
87
|
-
* fallback: null,
|
|
88
|
-
* });
|
|
89
|
-
* safeFetch.status.subscribe(msgs => console.log(msgs));
|
|
90
|
-
* ```
|
|
91
|
-
*
|
|
92
|
-
* @category patterns
|
|
93
|
-
*/
|
|
94
|
-
declare function resilientPipeline<T>(source: Node<T>, opts?: ResilientPipelineOptions<T>): ResilientPipelineBundle<T>;
|
|
95
|
-
|
|
96
|
-
declare const index_NS_PER_MS: typeof NS_PER_MS;
|
|
97
|
-
declare const index_NS_PER_SEC: typeof NS_PER_SEC;
|
|
98
|
-
type index_ResilientPipelineBundle<T> = ResilientPipelineBundle<T>;
|
|
99
|
-
type index_ResilientPipelineOptions<T> = ResilientPipelineOptions<T>;
|
|
100
|
-
declare const index_resilientPipeline: typeof resilientPipeline;
|
|
101
|
-
declare namespace index {
|
|
102
|
-
export { index_NS_PER_MS as NS_PER_MS, index_NS_PER_SEC as NS_PER_SEC, type index_ResilientPipelineBundle as ResilientPipelineBundle, type index_ResilientPipelineOptions as ResilientPipelineOptions, index_resilientPipeline as resilientPipeline };
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export { type ResilientPipelineBundle as R, type ResilientPipelineOptions as a, index as i, resilientPipeline as r };
|
package/dist/index-BsZk9T8y.d.ts
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { a as Node } from './node-fSc-hCv8.js';
|
|
2
|
-
import { S as StatusValue, C as CircuitState, R as RateLimiterOptions, a as CircuitBreakerOptions, b as RetryOptions, F as FallbackInput, N as NS_PER_MS, c as NS_PER_SEC } from './resilience-Bys63Cpd.js';
|
|
3
|
-
import { B as BudgetConstraint } from './index-DOU1Ee_k.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Resilience composition with correct nesting order (roadmap §9.0b).
|
|
7
|
-
*
|
|
8
|
-
* {@link resilientPipeline} composes the resilience primitives from
|
|
9
|
-
* `extra/resilience.ts` in the order discovered during the §9.1 eval runs:
|
|
10
|
-
*
|
|
11
|
-
* ```text
|
|
12
|
-
* rateLimit → budget → breaker → timeout → retry → fallback → status
|
|
13
|
-
* ```
|
|
14
|
-
*
|
|
15
|
-
* Note on retry/timeout ordering: `timeout` is applied BEFORE `retry` so each
|
|
16
|
-
* retry attempt resubscribes to a fresh deadline (per-attempt semantics). If
|
|
17
|
-
* `timeout` wrapped `retry`, a single deadline would apply to the entire
|
|
18
|
-
* retry chain — not what callers expect.
|
|
19
|
-
*
|
|
20
|
-
* Every step is optional — omit the option and that layer is skipped. The
|
|
21
|
-
* returned bundle exposes the final `Node<T>` plus the status/error/breaker
|
|
22
|
-
* companions so callers can wire them into dashboards, alerts, or
|
|
23
|
-
* {@link graphLens}.
|
|
24
|
-
*
|
|
25
|
-
* Subsumes the pre-1.0 `resilientFetch` template — that template becomes a
|
|
26
|
-
* preconfigured instance of this factory for the HTTP fetch case.
|
|
27
|
-
*
|
|
28
|
-
* @module
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
/** Options for {@link resilientPipeline}. Every field is optional — omit to skip that layer. */
|
|
32
|
-
interface ResilientPipelineOptions<T> {
|
|
33
|
-
/** Admission control — at most `maxEvents` DATA per `windowNs`. See {@link rateLimiter}. */
|
|
34
|
-
rateLimit?: RateLimiterOptions;
|
|
35
|
-
/** Cost/constraint gate. See {@link budgetGate}. */
|
|
36
|
-
budget?: ReadonlyArray<BudgetConstraint>;
|
|
37
|
-
/** Circuit breaker — fail-fast when the downstream resource is unhealthy. See {@link circuitBreaker}. */
|
|
38
|
-
breaker?: CircuitBreakerOptions;
|
|
39
|
-
/**
|
|
40
|
-
* Behavior when the breaker is open:
|
|
41
|
-
* - `"skip"` — emit RESOLVED (default, lets downstream drop the beat)
|
|
42
|
-
* - `"error"` — emit a `CircuitOpenError` so `retry`/`fallback` can react
|
|
43
|
-
*
|
|
44
|
-
* Only used when `breaker` is provided.
|
|
45
|
-
*/
|
|
46
|
-
breakerOnOpen?: "skip" | "error";
|
|
47
|
-
/** Retry policy on terminal ERROR. See {@link retry}. */
|
|
48
|
-
retry?: RetryOptions;
|
|
49
|
-
/**
|
|
50
|
-
* Per-attempt deadline in milliseconds. Converted to ns internally. Omit to skip the timeout wrap.
|
|
51
|
-
*
|
|
52
|
-
* Specified in ms (not ns) because callers consistently think in millisecond deadlines;
|
|
53
|
-
* retry/breaker/ratelimit options take ns to match their primitives exactly.
|
|
54
|
-
*/
|
|
55
|
-
timeoutMs?: number;
|
|
56
|
-
/** Final fallback value emitted on terminal ERROR after retry exhausts. See {@link fallback}. */
|
|
57
|
-
fallback?: FallbackInput<T>;
|
|
58
|
-
/** Initial status reported by the status node. Default `"pending"`. */
|
|
59
|
-
initialStatus?: StatusValue;
|
|
60
|
-
}
|
|
61
|
-
/** Output bundle of {@link resilientPipeline}. */
|
|
62
|
-
interface ResilientPipelineBundle<T> {
|
|
63
|
-
/** The final resilient node. Subscribe to this for DATA emissions. */
|
|
64
|
-
node: Node<T>;
|
|
65
|
-
/** Live status: `"pending" | "active" | "completed" | "errored"`. */
|
|
66
|
-
status: Node<StatusValue>;
|
|
67
|
-
/** Last error payload, or `null` when not errored. */
|
|
68
|
-
error: Node<unknown | null>;
|
|
69
|
-
/** Breaker state when `opts.breaker` was provided; `undefined` otherwise. */
|
|
70
|
-
breakerState: Node<CircuitState> | undefined;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Compose a resilient pipeline around `source` in the canonical nesting
|
|
74
|
-
* order — `rateLimit → budget → breaker → timeout → retry → fallback → status`.
|
|
75
|
-
* Omit any option to skip that layer.
|
|
76
|
-
*
|
|
77
|
-
* @param source - Upstream node to wrap.
|
|
78
|
-
* @param opts - See {@link ResilientPipelineOptions}. All fields optional.
|
|
79
|
-
*
|
|
80
|
-
* @example
|
|
81
|
-
* ```ts
|
|
82
|
-
* const safeFetch = resilientPipeline(fetchNode, {
|
|
83
|
-
* rateLimit: { maxEvents: 10, windowNs: NS_PER_SEC },
|
|
84
|
-
* breaker: { failureThreshold: 5 },
|
|
85
|
-
* retry: { count: 3, backoff: "exponential" },
|
|
86
|
-
* timeoutMs: 10_000,
|
|
87
|
-
* fallback: null,
|
|
88
|
-
* });
|
|
89
|
-
* safeFetch.status.subscribe(msgs => console.log(msgs));
|
|
90
|
-
* ```
|
|
91
|
-
*
|
|
92
|
-
* @category patterns
|
|
93
|
-
*/
|
|
94
|
-
declare function resilientPipeline<T>(source: Node<T>, opts?: ResilientPipelineOptions<T>): ResilientPipelineBundle<T>;
|
|
95
|
-
|
|
96
|
-
declare const index_NS_PER_MS: typeof NS_PER_MS;
|
|
97
|
-
declare const index_NS_PER_SEC: typeof NS_PER_SEC;
|
|
98
|
-
type index_ResilientPipelineBundle<T> = ResilientPipelineBundle<T>;
|
|
99
|
-
type index_ResilientPipelineOptions<T> = ResilientPipelineOptions<T>;
|
|
100
|
-
declare const index_resilientPipeline: typeof resilientPipeline;
|
|
101
|
-
declare namespace index {
|
|
102
|
-
export { index_NS_PER_MS as NS_PER_MS, index_NS_PER_SEC as NS_PER_SEC, type index_ResilientPipelineBundle as ResilientPipelineBundle, type index_ResilientPipelineOptions as ResilientPipelineOptions, index_resilientPipeline as resilientPipeline };
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export { type ResilientPipelineBundle as R, type ResilientPipelineOptions as a, index as i, resilientPipeline as r };
|