@graphrefly/graphrefly 0.42.0 → 0.44.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/{cascading-CH-_VwG9.d.cts → cascading-BglDkMdX.d.cts} +2 -2
- package/dist/{cascading-OgKQZjsa.d.ts → cascading-MFgxu7Yo.d.ts} +2 -2
- package/dist/chunk-2T7U5EU6.js +1 -0
- package/dist/chunk-5M4CCMMD.js +45 -0
- package/dist/{chunk-YGL7FPVQ.js → chunk-5XJ6B66J.js} +1 -1
- package/dist/{chunk-NWXQIOIB.js → chunk-6X7AFUJV.js} +1 -1
- package/dist/chunk-7K6PWTDQ.js +1 -0
- package/dist/{chunk-D27JNOLZ.js → chunk-7LIAPXJB.js} +1 -1
- package/dist/{chunk-CLD3F4R5.js → chunk-7WPU3UHQ.js} +1 -1
- package/dist/{chunk-NNKJUORL.js → chunk-A5WCQ5NO.js} +1 -1
- package/dist/chunk-APPIWSGD.js +84 -0
- package/dist/{chunk-TZQPPQEQ.js → chunk-BEZWM2SY.js} +1 -1
- package/dist/{chunk-5QRRKBUT.js → chunk-CB676TKJ.js} +1 -1
- package/dist/{chunk-KT5DTRBP.js → chunk-CE6TI2TL.js} +1 -1
- package/dist/{chunk-6YFZMUMR.js → chunk-CLVB32RD.js} +1 -1
- package/dist/{chunk-2K5RXLAH.js → chunk-CRVT7D2P.js} +1 -1
- package/dist/chunk-D7GPHKFH.js +1 -0
- package/dist/{chunk-FUZ6S2DY.js → chunk-DHRX7JX4.js} +1 -1
- package/dist/chunk-FZMYDOWV.js +1 -0
- package/dist/{chunk-35JTVPOX.js → chunk-GHBWHMRZ.js} +1 -1
- package/dist/{chunk-KGKJCHEK.js → chunk-GLERH466.js} +1 -1
- package/dist/{chunk-CISGGAIF.js → chunk-HIDYF36O.js} +1 -1
- package/dist/chunk-HITNVN6B.js +3 -0
- package/dist/{chunk-7ARY3Y3T.js → chunk-HY4DJBA7.js} +1 -1
- package/dist/chunk-KZIEYVXN.js +1 -0
- package/dist/{chunk-IZM3UEH3.js → chunk-N4MQX6JU.js} +1 -1
- package/dist/{chunk-FDZAZNRO.js → chunk-N7FHEL4D.js} +1 -1
- package/dist/chunk-NTEURFZH.js +1 -0
- package/dist/{chunk-4QH6VJF4.js → chunk-OIVP6KFV.js} +1 -1
- package/dist/{chunk-KCACBSJH.js → chunk-OPHBU3LG.js} +1 -1
- package/dist/{chunk-Q7QQQA3I.js → chunk-OYQOZP2F.js} +1 -1
- package/dist/{chunk-7B7ELAT2.js → chunk-PTZK576G.js} +1 -1
- package/dist/{chunk-DEJTNNQC.js → chunk-ST7UXLWR.js} +1 -1
- package/dist/chunk-SVY7VUYU.js +1 -0
- package/dist/{chunk-WHMUB5QB.js → chunk-TK3NWWD4.js} +1 -1
- package/dist/chunk-UNGSTR4X.js +61 -0
- package/dist/{chunk-VRALOYRD.js → chunk-VV4N5P64.js} +1 -1
- package/dist/chunk-W3I423PS.js +1 -0
- package/dist/{chunk-HZKW2AAB.js → chunk-WJR24TAG.js} +1 -1
- package/dist/{chunk-F3IGTWCQ.js → chunk-XTGKMHSW.js} +1 -1
- package/dist/{chunk-LDQ3IUIP.js → chunk-YBB7ZGTY.js} +1 -1
- package/dist/{chunk-G5VBJ5K6.js → chunk-Z4NPUARF.js} +1 -1
- package/dist/{chunk-KRH66M4O.js → chunk-ZGNQRPDT.js} +1 -1
- package/dist/{chunk-AGNM6RS6.js → chunk-ZKPSFFKU.js} +1 -1
- package/dist/{chunk-KY2LMAXU.js → chunk-ZLV5SQSX.js} +1 -1
- package/dist/compat/index.cjs +5 -5
- 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.cjs +1 -1
- package/dist/compat/jotai/index.d.cts +2 -2
- package/dist/compat/jotai/index.d.ts +2 -2
- package/dist/compat/jotai/index.js +1 -1
- package/dist/compat/nanostores/index.cjs +1 -1
- package/dist/compat/nanostores/index.d.cts +2 -2
- package/dist/compat/nanostores/index.d.ts +2 -2
- package/dist/compat/nanostores/index.js +1 -1
- package/dist/compat/nestjs/index.cjs +5 -5
- 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 -3
- 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 +3 -4
- package/dist/core/index.d.ts +3 -4
- package/dist/core/index.js +1 -1
- package/dist/{decay-CdEBmDIs.d.ts → decay-BvOWTZ00.d.ts} +2 -2
- package/dist/{decay-2ZukgQ4o.d.cts → decay-CFlLvXUT.d.cts} +2 -2
- package/dist/extra/browser.cjs +1 -1
- package/dist/extra/browser.d.cts +1 -1
- package/dist/extra/browser.d.ts +1 -1
- package/dist/extra/browser.js +1 -1
- package/dist/extra/index.cjs +15 -15
- package/dist/extra/index.d.cts +10 -10
- package/dist/extra/index.d.ts +10 -10
- 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 +9 -1
- package/dist/extra/operators.d.ts +9 -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.d.cts +3 -3
- package/dist/extra/render/index.d.ts +3 -3
- package/dist/extra/sources.cjs +3 -3
- 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.cjs +1 -1
- package/dist/extra/storage-browser.d.cts +1 -1
- package/dist/extra/storage-browser.d.ts +1 -1
- package/dist/extra/storage-browser.js +1 -1
- package/dist/{fallback-Ctlj2tMY.d.cts → fallback-74oxi34l.d.cts} +1 -1
- package/dist/{fallback-CqYVLL6X.d.ts → fallback-DUyyBTBK.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-C4SHb3Ly.d.cts → graph-CWvEUQAq.d.cts} +196 -3
- package/dist/{graph-7VguS7a4.d.ts → graph-D9LFnda9.d.ts} +196 -3
- package/dist/{index-LIpQQE9f.d.cts → index-5k1T6jl0.d.cts} +9 -9
- package/dist/{index-CPNSy-U0.d.cts → index-9770hRuQ.d.cts} +23 -4
- package/dist/{index-CEMx8n40.d.cts → index-B-_tFaqV.d.cts} +4 -4
- package/dist/{index-2B7u2pVn.d.cts → index-B17QddL1.d.cts} +4 -4
- package/dist/{index-B-i4_g3k.d.ts → index-B1F8Enjf.d.ts} +61 -8
- package/dist/{index-DBevwHj_.d.ts → index-B5S8ULbU.d.ts} +3 -3
- package/dist/{index-Dgs8zcj7.d.ts → index-B8YnZpIR.d.ts} +2 -2
- package/dist/{index-B3OTH1dV.d.ts → index-BHskSB8v.d.ts} +28 -17
- package/dist/{index-sl4NyzQx.d.cts → index-BIYAkbAi.d.cts} +1 -1
- package/dist/{index-C9kSENB4.d.cts → index-BQSKmbuG.d.cts} +1 -1
- package/dist/{index-tJoTcnHh.d.cts → index-BaQaY_IQ.d.cts} +2 -2
- package/dist/{index-CJK1JkYy.d.ts → index-BmZXHqkE.d.ts} +1 -1
- package/dist/{index-pT8sCpOJ.d.ts → index-BoJ5JHxI.d.ts} +12 -3
- package/dist/{index-BeT2r7sk.d.ts → index-BocU7pqs.d.ts} +23 -4
- package/dist/{index-ChOyVLKm.d.cts → index-BrPrLl4e.d.cts} +1 -1
- package/dist/{index-D-Xs74HZ.d.cts → index-BxNs2HB9.d.cts} +33 -9
- package/dist/{index-Bf7eqeSF.d.ts → index-Byu-OpX_.d.ts} +2 -2
- package/dist/{index-BoLv_OfD.d.cts → index-C1T3d7V-.d.cts} +61 -8
- package/dist/{index-BTQtTb_H.d.cts → index-C5ri2Axc.d.cts} +3 -3
- package/dist/{index-z96luz5O.d.cts → index-C5stwKcw.d.cts} +1 -1
- package/dist/{index-CZmcDtFn.d.ts → index-C9l6OEBL.d.ts} +1 -1
- package/dist/{index-CCq87F7t.d.ts → index-CBBLl_rc.d.ts} +1 -1
- package/dist/{index-D6egPFAL.d.ts → index-CBGUK09R.d.ts} +4 -4
- package/dist/{index-C0-Jv1kP.d.cts → index-CC-AvFTy.d.cts} +12 -3
- package/dist/{index-DQo8xBgd.d.ts → index-CJF1URuX.d.ts} +9 -9
- package/dist/{index-BJX94aud.d.cts → index-CK29LV56.d.cts} +1 -1
- package/dist/{index-BP8a88zx.d.ts → index-CMh5Rz1y.d.ts} +4 -4
- package/dist/{index-CvrqGfNS.d.ts → index-CPQlGA29.d.ts} +1 -1
- package/dist/{index-Bbkgpt5t.d.ts → index-CR8QpwX8.d.ts} +49 -24
- package/dist/{index-Du7u1lSf.d.cts → index-CS0LTlB8.d.cts} +4 -4
- package/dist/{index-Bc41FuHp.d.cts → index-CSOmP7xT.d.cts} +2 -2
- package/dist/{index-BsT7F2et.d.ts → index-CYq8vAyV.d.ts} +2 -2
- package/dist/{index-Bn4zHYLj.d.ts → index-CZ3r5Rxp.d.ts} +4 -4
- package/dist/{index-HoU88d5U.d.cts → index-CasX6Pfq.d.cts} +68 -9
- package/dist/{index-BG0BN3PB.d.ts → index-CdAlHFEt.d.ts} +1 -1
- package/dist/{index-CpyNFqkB.d.ts → index-CdTelp1M.d.ts} +8 -4
- package/dist/{index-D8l8hNXn.d.ts → index-CeFiHtAg.d.ts} +4 -4
- package/dist/{index-DmAgG5CI.d.cts → index-Cj3WohTd.d.cts} +8 -4
- package/dist/{index-BtAsBp8K.d.cts → index-Climxqsu.d.cts} +4 -4
- package/dist/{index-CJIuLu2f.d.cts → index-Co7uli2l.d.cts} +28 -17
- package/dist/{index-DIOoAZUX.d.ts → index-CviRnE4K.d.ts} +1 -1
- package/dist/{index-Dhc7a7Xo.d.cts → index-Cwv0KWcU.d.cts} +2 -2
- package/dist/{index-Dn-wI9g4.d.ts → index-CzLVrjxn.d.ts} +2 -2
- package/dist/{index-DO9XxMzS.d.ts → index-D0aciIex.d.cts} +3 -18
- package/dist/{index-4Uz-e_fL.d.ts → index-DHen9Klo.d.ts} +33 -9
- package/dist/{index-3NmAfcH0.d.cts → index-DV_1YuVk.d.cts} +40 -8
- package/dist/{index-BdGtBX-X.d.cts → index-Dc4AYqrJ.d.cts} +3 -3
- package/dist/{index-Dmqp7KjD.d.ts → index-Dgl1HpPn.d.ts} +1 -1
- package/dist/{index-CJQm0g38.d.ts → index-DisjX8a-.d.ts} +40 -8
- package/dist/{index-B11anra4.d.cts → index-UPSiS-X7.d.cts} +49 -24
- package/dist/{index-DBIqYS43.d.cts → index-Yq60JP3s.d.ts} +3 -18
- package/dist/{index-f5IivDUX.d.cts → index-ZVQhLa2i.d.cts} +1 -1
- package/dist/{index-hHcaFlJX.d.cts → index-_6ODbuOu.d.cts} +1 -1
- package/dist/{index-BVpm6noz.d.cts → index-hcDJ8PSI.d.cts} +1 -1
- package/dist/{index-DBHK8O6H.d.ts → index-nozs3fFC.d.ts} +3 -3
- package/dist/{index-BUYXac2c.d.ts → index-p09KSrTN.d.ts} +68 -9
- package/dist/{index-C7O6r5fV.d.ts → index-sqkqlb1p.d.ts} +1 -1
- package/dist/{index-CZjOhcBy.d.cts → index-tRCxuAXF.d.cts} +2 -2
- package/dist/index.cjs +48 -48
- package/dist/index.d.cts +42 -43
- package/dist/index.d.ts +42 -43
- package/dist/index.js +1 -1
- package/dist/{node-ClS5yC-B.d.cts → node-kK3CvTrR.d.cts} +1 -1
- package/dist/{node-ClS5yC-B.d.ts → node-kK3CvTrR.d.ts} +1 -1
- package/dist/{observable-BsBzUrcI.d.ts → observable-DWjNfLvC.d.ts} +1 -1
- package/dist/{observable-DLGPPtb8.d.cts → observable-e3eiPPFy.d.cts} +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 -16
- package/dist/patterns/ai/index.d.cts +16 -17
- package/dist/patterns/ai/index.d.ts +16 -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/cqrs/index.cjs +3 -3
- 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 -5
- 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 -3
- 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 +16 -16
- 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/harness/index.cjs +9 -9
- package/dist/patterns/harness/index.d.cts +10 -11
- package/dist/patterns/harness/index.d.ts +10 -11
- package/dist/patterns/harness/index.js +1 -1
- package/dist/patterns/inspect/index.cjs +3 -3
- package/dist/patterns/inspect/index.d.cts +7 -7
- package/dist/patterns/inspect/index.d.ts +7 -7
- package/dist/patterns/inspect/index.js +1 -1
- package/dist/patterns/job-queue/index.cjs +3 -3
- 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/memory/index.cjs +3 -3
- 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 -3
- 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 -3
- package/dist/patterns/orchestration/index.d.cts +6 -7
- package/dist/patterns/orchestration/index.d.ts +6 -7
- package/dist/patterns/orchestration/index.js +1 -1
- package/dist/patterns/process/index.cjs +3 -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 -4
- 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 -3
- 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/surface/index.cjs +10 -10
- 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-WBlobVhU.d.cts → pipeline-graph-CIKhynsF.d.cts} +11 -6
- package/dist/{pipeline-graph-v8fMvqNk.d.ts → pipeline-graph-Sgj0gCwn.d.ts} +11 -6
- package/dist/{reactive-layout-v7KPvxoc.d.ts → reactive-layout-DOTs9P3X.d.ts} +2 -2
- package/dist/{reactive-layout-Dsvob4zD.d.cts → reactive-layout-DgctbqZo.d.cts} +2 -2
- package/dist/{reactive-log-BezYsbA_.d.ts → reactive-log-BKALbfal.d.ts} +1 -1
- package/dist/{reactive-log-B00laMSQ.d.cts → reactive-log-DIGdYqQ6.d.cts} +1 -1
- package/dist/{reactive-map-48mnZ-nu.d.cts → reactive-map-CEFGp8TK.d.cts} +1 -1
- package/dist/{reactive-map-BVVPdvmi.d.ts → reactive-map-DS_SIAxv.d.ts} +1 -1
- package/dist/resilience-6LYQJAC5.js +1 -0
- package/dist/sugar-DQjFmVqb.d.cts +399 -0
- package/dist/sugar-fhLIE7TT.d.ts +399 -0
- package/dist/{topology-tree-BSdfSwMi.d.cts → topology-tree-Bcz27hpF.d.cts} +1 -1
- package/dist/{topology-tree-BNGvuG82.d.ts → topology-tree-xvaD0fOX.d.ts} +1 -1
- package/dist/{types-B1jDWVsM.d.cts → types-C0_yquda.d.cts} +1 -1
- package/dist/{types-DkzUUs0H.d.ts → types-CWFysE9E.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-3ERTUW2J.js +0 -45
- package/dist/chunk-3K7HA4Y6.js +0 -1
- package/dist/chunk-3ZZX7M25.js +0 -1
- package/dist/chunk-4I45FVQS.js +0 -1
- package/dist/chunk-5ST42ESJ.js +0 -1
- package/dist/chunk-7VKFXLZQ.js +0 -84
- package/dist/chunk-ACMJ2ZPS.js +0 -3
- package/dist/chunk-AS3TV2TV.js +0 -1
- package/dist/chunk-LPRWATHB.js +0 -61
- package/dist/chunk-LYCLF26R.js +0 -1
- package/dist/chunk-VE5SIZEM.js +0 -1
- package/dist/chunk-XLQPNNIC.js +0 -1
- package/dist/meta-BgVAsg9j.d.ts +0 -102
- package/dist/meta-vE8bxW1E.d.cts +0 -102
- package/dist/resilience-445VFFXQ.js +0 -1
- package/dist/sugar-CH-2ZY90.d.ts +0 -203
- package/dist/sugar-DStZfUEK.d.cts +0 -203
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as Actor,
|
|
2
|
-
import { D as DescribeNodeOutput, a as DescribeDetail,
|
|
1
|
+
import { A as Actor, l as GraphReFlyConfig, V as VersioningLevel, N as Node, M as Messages, K as NodeSink } from './node-kK3CvTrR.cjs';
|
|
2
|
+
import { D as DescribeNodeOutput, a as DerivedFn, E as EffectFn, c as DescribeDetail, d as DescribeField } from './sugar-DQjFmVqb.cjs';
|
|
3
3
|
import { StorageHandle } from './extra/storage-core.cjs';
|
|
4
4
|
import { SnapshotStorageTier } from './extra/storage-tiers.cjs';
|
|
5
5
|
|
|
@@ -334,6 +334,73 @@ interface GraphOptions {
|
|
|
334
334
|
factoryArgs?: unknown;
|
|
335
335
|
[key: string]: unknown;
|
|
336
336
|
}
|
|
337
|
+
/**
|
|
338
|
+
* Options for {@link Graph.derived}. Forwarded to the underlying
|
|
339
|
+
* {@link derived} primitive plus graph-level extras.
|
|
340
|
+
*
|
|
341
|
+
* - `keepAlive: true` — installs an internal subscription so the node
|
|
342
|
+
* stays activated and `.cache` stays current for **external consumers**
|
|
343
|
+
* (UI render, debug snapshot, audit log) with no real subscriber. The
|
|
344
|
+
* subscription self-prunes on the node's terminal (`COMPLETE` / `ERROR`
|
|
345
|
+
* / `TEARDOWN`) and is also drained by {@link Graph.destroy}, so
|
|
346
|
+
* repeated `graph.remove(name)` cycles do not accumulate stale
|
|
347
|
+
* disposers.
|
|
348
|
+
*
|
|
349
|
+
* **Do not read `node.cache` from inside another reactive fn** (spec
|
|
350
|
+
* §5.12) — declare the node as a real dep instead. `keepAlive` is a
|
|
351
|
+
* convenience for *external* read patterns, not a shortcut around the
|
|
352
|
+
* message protocol.
|
|
353
|
+
* - `signal` — when aborted, removes this node from the graph via
|
|
354
|
+
* {@link Graph.remove}, which sends `[[TEARDOWN]]` and drains cleanup
|
|
355
|
+
* hooks. Already-aborted signals trigger removal synchronously.
|
|
356
|
+
* - `equals`, `initial`, `meta` — pass-through to {@link NodeOptions}.
|
|
357
|
+
* - `annotation` — forwarded to {@link Graph.add} (see `graph.trace`).
|
|
358
|
+
*/
|
|
359
|
+
interface GraphDerivedOptions<T> {
|
|
360
|
+
equals?: (a: T, b: T) => boolean;
|
|
361
|
+
initial?: T | null;
|
|
362
|
+
keepAlive?: boolean;
|
|
363
|
+
signal?: AbortSignal;
|
|
364
|
+
meta?: Record<string, unknown>;
|
|
365
|
+
annotation?: string;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Options for {@link Graph.effect}.
|
|
369
|
+
*
|
|
370
|
+
* - `signal` — when aborted, removes this node from the graph via
|
|
371
|
+
* {@link Graph.remove} (fires the effect's `deactivate` cleanup).
|
|
372
|
+
* - `meta` / `annotation` — same forwarding shape as
|
|
373
|
+
* {@link GraphDerivedOptions}.
|
|
374
|
+
*/
|
|
375
|
+
interface GraphEffectOptions {
|
|
376
|
+
signal?: AbortSignal;
|
|
377
|
+
meta?: Record<string, unknown>;
|
|
378
|
+
annotation?: string;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Options for {@link Graph.produce}.
|
|
382
|
+
*
|
|
383
|
+
* - `signal` — forwarded to the underlying {@link fromAny} for in-flight
|
|
384
|
+
* cancellation of `Promise` / `AsyncIterable` sources, AND triggers
|
|
385
|
+
* {@link Graph.remove} when aborted so the graph topology reflects the
|
|
386
|
+
* cancellation.
|
|
387
|
+
* - `equals` / `meta` / `annotation` — same forwarding shape as
|
|
388
|
+
* {@link GraphDerivedOptions}.
|
|
389
|
+
*/
|
|
390
|
+
interface GraphProduceOptions<T> {
|
|
391
|
+
equals?: (a: T, b: T) => boolean;
|
|
392
|
+
signal?: AbortSignal;
|
|
393
|
+
meta?: Record<string, unknown>;
|
|
394
|
+
annotation?: string;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Source shapes accepted by {@link Graph.produce}. Excludes `Node<T>` —
|
|
398
|
+
* Node→Node passthrough is rejected at the boundary because `fromAny`
|
|
399
|
+
* passes Nodes through verbatim, which would silently drop `meta`/`equals`
|
|
400
|
+
* options and bypass the `add()` registration's name semantics. For
|
|
401
|
+
* Node→Node, use {@link Graph.derived} with `keepAlive: true` instead.
|
|
402
|
+
*/
|
|
403
|
+
type GraphProduceInput<T> = PromiseLike<T> | AsyncIterable<T> | Iterable<T> | T;
|
|
337
404
|
/** Filter for {@link Graph.describe} — object-style partial match or predicate. */
|
|
338
405
|
type DescribeFilter = Partial<Pick<DescribeNodeOutput, "type" | "status">> | {
|
|
339
406
|
type?: DescribeNodeOutput["type"];
|
|
@@ -1035,6 +1102,115 @@ declare class Graph {
|
|
|
1035
1102
|
* TEARDOWN and unregisters the node).
|
|
1036
1103
|
*/
|
|
1037
1104
|
complete(name: string, options?: GraphActorOptions): void;
|
|
1105
|
+
/**
|
|
1106
|
+
* Internal: register a self-pruning keepalive subscription. The sink
|
|
1107
|
+
* watches for terminal messages (`COMPLETE`/`ERROR`/`TEARDOWN`) on `n`
|
|
1108
|
+
* and removes the disposer from `_disposers` when one arrives, so
|
|
1109
|
+
* repeated `graph.remove(name)` cycles do not accumulate stale
|
|
1110
|
+
* disposers (qa B3).
|
|
1111
|
+
*/
|
|
1112
|
+
private _registerSelfPruningKeepalive;
|
|
1113
|
+
/**
|
|
1114
|
+
* Internal: wire an `AbortSignal` so its abort triggers
|
|
1115
|
+
* `graph.remove(name)`. Already-aborted signals trigger removal
|
|
1116
|
+
* synchronously. The abort listener is itself registered as a graph
|
|
1117
|
+
* disposer so it gets cleaned up if `destroy()` runs first (qa B4).
|
|
1118
|
+
*/
|
|
1119
|
+
private _wireSignalToRemove;
|
|
1120
|
+
/**
|
|
1121
|
+
* Path-based reactive derivation. Resolves each entry in `depPaths` via
|
|
1122
|
+
* {@link Graph.resolve}, builds a {@link derived} node, registers it via
|
|
1123
|
+
* {@link Graph.add}, and returns the registered Node.
|
|
1124
|
+
*
|
|
1125
|
+
* **First-run gate inherited.** fn does not fire until every dep has
|
|
1126
|
+
* delivered at least one real DATA — same gate as `derived()` (spec §2.7,
|
|
1127
|
+
* `partial: false`). A SENTINEL dep holds activation; `null` is a real
|
|
1128
|
+
* DATA value and releases the gate. **Empty `depPaths` is a vacuous
|
|
1129
|
+
* gate** — fn fires once synchronously on first activation. Use this
|
|
1130
|
+
* for one-shot constants only; for async sources prefer
|
|
1131
|
+
* {@link Graph.produce}.
|
|
1132
|
+
*
|
|
1133
|
+
* **`keepAlive: true`** — installs an internal subscription so the node
|
|
1134
|
+
* stays activated and `.cache` stays current for **external consumers**
|
|
1135
|
+
* (UI render, debug snapshot, audit log). The subscription self-prunes
|
|
1136
|
+
* on the node's terminal and is also drained by {@link Graph.destroy}.
|
|
1137
|
+
*
|
|
1138
|
+
* **Do not read `node.cache` from inside another reactive fn** — that
|
|
1139
|
+
* is a §5.12 boundary violation regardless of `keepAlive`. Declare the
|
|
1140
|
+
* node as a real dep instead so the edge appears in `describe()` and
|
|
1141
|
+
* the message protocol carries the value.
|
|
1142
|
+
*
|
|
1143
|
+
* **`signal`** — when aborted, removes this node from the graph.
|
|
1144
|
+
*
|
|
1145
|
+
* @param name - Local registration name (must be unique on this graph).
|
|
1146
|
+
* @param depPaths - `::`-qualified paths resolved at construction time.
|
|
1147
|
+
* @param fn - Pure compute receiving sugar-unwrapped scalar dep values.
|
|
1148
|
+
* @param opts - {@link GraphDerivedOptions}.
|
|
1149
|
+
* @returns The registered `Node<T>`.
|
|
1150
|
+
*/
|
|
1151
|
+
derived<T>(name: string, depPaths: readonly string[], fn: DerivedFn<T>, opts?: GraphDerivedOptions<T>): Node<T>;
|
|
1152
|
+
/**
|
|
1153
|
+
* Path-based managed side effect. Resolves each entry in `depPaths`,
|
|
1154
|
+
* builds an {@link effect} node, registers it, and returns the
|
|
1155
|
+
* registered Node. fn does not auto-emit — call `actions.emit(v)` /
|
|
1156
|
+
* `actions.down(msgs)` explicitly to produce downstream messages.
|
|
1157
|
+
*
|
|
1158
|
+
* **Cleanup.** Return a cleanup function (`() => void`) or granular
|
|
1159
|
+
* hooks (`{ beforeRun?, deactivate?, invalidate? }`) — fired on the
|
|
1160
|
+
* matching transition by the underlying primitive (see
|
|
1161
|
+
* {@link NodeFnCleanup}). Graph teardown propagates `[[TEARDOWN]]`
|
|
1162
|
+
* which triggers `deactivate`.
|
|
1163
|
+
*
|
|
1164
|
+
* **`signal`** — when aborted, removes this node from the graph (fires
|
|
1165
|
+
* the effect's `deactivate` cleanup).
|
|
1166
|
+
*
|
|
1167
|
+
* @param name - Local registration name (must be unique on this graph).
|
|
1168
|
+
* @param depPaths - `::`-qualified paths resolved at construction time.
|
|
1169
|
+
* @param fn - Side-effect receiving sugar-unwrapped scalar dep values.
|
|
1170
|
+
* @param opts - {@link GraphEffectOptions}.
|
|
1171
|
+
* @returns The registered `Node<unknown>`.
|
|
1172
|
+
*/
|
|
1173
|
+
effect(name: string, depPaths: readonly string[], fn: EffectFn, opts?: GraphEffectOptions): Node<unknown>;
|
|
1174
|
+
/**
|
|
1175
|
+
* Wraps an external/async source as a named graph node via
|
|
1176
|
+
* {@link fromAny}. Accepts {@link GraphProduceInput} shapes:
|
|
1177
|
+
* `Promise`, `AsyncIterable`, `Iterable`, or scalar.
|
|
1178
|
+
*
|
|
1179
|
+
* **Node sources are rejected.** For `Node → Node`, use
|
|
1180
|
+
* {@link Graph.derived} with `keepAlive: true` — `fromAny` would
|
|
1181
|
+
* passthrough a Node verbatim and silently drop `meta`/`equals`
|
|
1182
|
+
* options. The type signature excludes `Node<T>`; a runtime guard
|
|
1183
|
+
* catches casts.
|
|
1184
|
+
*
|
|
1185
|
+
* **`undefined` is rejected.** `undefined` is the global SENTINEL;
|
|
1186
|
+
* emitting it as DATA would corrupt downstream first-run gates.
|
|
1187
|
+
* `null` (a valid DATA value) is accepted.
|
|
1188
|
+
*
|
|
1189
|
+
* **`signal`** — forwarded to {@link fromAny} for in-flight cancel of
|
|
1190
|
+
* Promise/AsyncIterable sources, AND triggers {@link Graph.remove}
|
|
1191
|
+
* when aborted so the topology reflects the cancellation.
|
|
1192
|
+
*
|
|
1193
|
+
* @param name - Local registration name (must be unique on this graph).
|
|
1194
|
+
* @param source - Any {@link GraphProduceInput} shape.
|
|
1195
|
+
* @param opts - {@link GraphProduceOptions}.
|
|
1196
|
+
* @returns The registered `Node<T>`.
|
|
1197
|
+
*/
|
|
1198
|
+
produce<T>(name: string, source: GraphProduceInput<T>, opts?: GraphProduceOptions<T>): Node<T>;
|
|
1199
|
+
/**
|
|
1200
|
+
* Atomic multi-mutation. Same semantics as core {@link batch}: DATA and
|
|
1201
|
+
* RESOLVED emissions inside `fn` defer, DIRTY propagates immediately, and
|
|
1202
|
+
* downstream consumers see one coalesced wave (spec §1.3 invariant 7).
|
|
1203
|
+
* Exposed on `Graph` for discoverability and import hygiene — pattern
|
|
1204
|
+
* authors can reach for `graph.batch(...)` without importing `batch` from
|
|
1205
|
+
* the core entry. Shares one global frame with the core import; nesting
|
|
1206
|
+
* either way is supported.
|
|
1207
|
+
*
|
|
1208
|
+
* **Caveat:** if `fn` throws, deferred DATA is discarded but DIRTY
|
|
1209
|
+
* messages already propagated synchronously, leaving downstream nodes
|
|
1210
|
+
* in `dirty` status with stale `.cache`. Catch and emit compensating
|
|
1211
|
+
* INVALIDATE/RESET if you need to recover.
|
|
1212
|
+
*/
|
|
1213
|
+
batch(fn: () => void): void;
|
|
1038
1214
|
/**
|
|
1039
1215
|
* Returns the full edge list for this graph tree, derived on demand from
|
|
1040
1216
|
* each registered node's `_deps` (no stored registry). Local-only
|
|
@@ -1221,6 +1397,13 @@ declare class Graph {
|
|
|
1221
1397
|
* When `reactive: true`, also accepts `name?`.
|
|
1222
1398
|
*/
|
|
1223
1399
|
explain(from: string | Node<string>, to: string | Node<string>, opts?: {
|
|
1400
|
+
/**
|
|
1401
|
+
* DF13 (2026-04-29) — narrow the static overload to forbid
|
|
1402
|
+
* `reactive: true`. A caller passing `{ reactive: true, ... }`
|
|
1403
|
+
* is steered into the reactive overload instead of falling
|
|
1404
|
+
* through to the implementation signature's union return.
|
|
1405
|
+
*/
|
|
1406
|
+
reactive?: false;
|
|
1224
1407
|
maxDepth?: number | Node<number>;
|
|
1225
1408
|
findCycle?: boolean | Node<boolean>;
|
|
1226
1409
|
}): CausalChain;
|
|
@@ -1333,7 +1516,17 @@ declare class Graph {
|
|
|
1333
1516
|
* stays `true` even if the instance is later reused via {@link add}.
|
|
1334
1517
|
*/
|
|
1335
1518
|
get destroyed(): boolean;
|
|
1336
|
-
/**
|
|
1519
|
+
/**
|
|
1520
|
+
* Clear structure after parent already signaled TEARDOWN through this subtree.
|
|
1521
|
+
*
|
|
1522
|
+
* Drains both `_disposers` and `_storageDisposers` to mirror the full
|
|
1523
|
+
* {@link destroy} path — child mounts that registered disposers via
|
|
1524
|
+
* {@link addDisposer} (audit trails, log dispose hooks, off-event
|
|
1525
|
+
* callbacks, attached storage) would otherwise leak when destruction
|
|
1526
|
+
* reaches the subtree via the parent's TEARDOWN cascade rather than a
|
|
1527
|
+
* direct `destroy()` call (EH-2). Disposers run BEFORE structure clear
|
|
1528
|
+
* so cleanups can still resolve node paths if needed.
|
|
1529
|
+
*/
|
|
1337
1530
|
private _destroyClearOnly;
|
|
1338
1531
|
/**
|
|
1339
1532
|
* Serializes structure and current values to JSON-shaped data (§3.8). Same
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as Actor,
|
|
2
|
-
import { D as DescribeNodeOutput, a as DescribeDetail,
|
|
1
|
+
import { A as Actor, l as GraphReFlyConfig, V as VersioningLevel, N as Node, M as Messages, K as NodeSink } from './node-kK3CvTrR.js';
|
|
2
|
+
import { D as DescribeNodeOutput, a as DerivedFn, E as EffectFn, c as DescribeDetail, d as DescribeField } from './sugar-fhLIE7TT.js';
|
|
3
3
|
import { StorageHandle } from './extra/storage-core.js';
|
|
4
4
|
import { SnapshotStorageTier } from './extra/storage-tiers.js';
|
|
5
5
|
|
|
@@ -334,6 +334,73 @@ interface GraphOptions {
|
|
|
334
334
|
factoryArgs?: unknown;
|
|
335
335
|
[key: string]: unknown;
|
|
336
336
|
}
|
|
337
|
+
/**
|
|
338
|
+
* Options for {@link Graph.derived}. Forwarded to the underlying
|
|
339
|
+
* {@link derived} primitive plus graph-level extras.
|
|
340
|
+
*
|
|
341
|
+
* - `keepAlive: true` — installs an internal subscription so the node
|
|
342
|
+
* stays activated and `.cache` stays current for **external consumers**
|
|
343
|
+
* (UI render, debug snapshot, audit log) with no real subscriber. The
|
|
344
|
+
* subscription self-prunes on the node's terminal (`COMPLETE` / `ERROR`
|
|
345
|
+
* / `TEARDOWN`) and is also drained by {@link Graph.destroy}, so
|
|
346
|
+
* repeated `graph.remove(name)` cycles do not accumulate stale
|
|
347
|
+
* disposers.
|
|
348
|
+
*
|
|
349
|
+
* **Do not read `node.cache` from inside another reactive fn** (spec
|
|
350
|
+
* §5.12) — declare the node as a real dep instead. `keepAlive` is a
|
|
351
|
+
* convenience for *external* read patterns, not a shortcut around the
|
|
352
|
+
* message protocol.
|
|
353
|
+
* - `signal` — when aborted, removes this node from the graph via
|
|
354
|
+
* {@link Graph.remove}, which sends `[[TEARDOWN]]` and drains cleanup
|
|
355
|
+
* hooks. Already-aborted signals trigger removal synchronously.
|
|
356
|
+
* - `equals`, `initial`, `meta` — pass-through to {@link NodeOptions}.
|
|
357
|
+
* - `annotation` — forwarded to {@link Graph.add} (see `graph.trace`).
|
|
358
|
+
*/
|
|
359
|
+
interface GraphDerivedOptions<T> {
|
|
360
|
+
equals?: (a: T, b: T) => boolean;
|
|
361
|
+
initial?: T | null;
|
|
362
|
+
keepAlive?: boolean;
|
|
363
|
+
signal?: AbortSignal;
|
|
364
|
+
meta?: Record<string, unknown>;
|
|
365
|
+
annotation?: string;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Options for {@link Graph.effect}.
|
|
369
|
+
*
|
|
370
|
+
* - `signal` — when aborted, removes this node from the graph via
|
|
371
|
+
* {@link Graph.remove} (fires the effect's `deactivate` cleanup).
|
|
372
|
+
* - `meta` / `annotation` — same forwarding shape as
|
|
373
|
+
* {@link GraphDerivedOptions}.
|
|
374
|
+
*/
|
|
375
|
+
interface GraphEffectOptions {
|
|
376
|
+
signal?: AbortSignal;
|
|
377
|
+
meta?: Record<string, unknown>;
|
|
378
|
+
annotation?: string;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Options for {@link Graph.produce}.
|
|
382
|
+
*
|
|
383
|
+
* - `signal` — forwarded to the underlying {@link fromAny} for in-flight
|
|
384
|
+
* cancellation of `Promise` / `AsyncIterable` sources, AND triggers
|
|
385
|
+
* {@link Graph.remove} when aborted so the graph topology reflects the
|
|
386
|
+
* cancellation.
|
|
387
|
+
* - `equals` / `meta` / `annotation` — same forwarding shape as
|
|
388
|
+
* {@link GraphDerivedOptions}.
|
|
389
|
+
*/
|
|
390
|
+
interface GraphProduceOptions<T> {
|
|
391
|
+
equals?: (a: T, b: T) => boolean;
|
|
392
|
+
signal?: AbortSignal;
|
|
393
|
+
meta?: Record<string, unknown>;
|
|
394
|
+
annotation?: string;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Source shapes accepted by {@link Graph.produce}. Excludes `Node<T>` —
|
|
398
|
+
* Node→Node passthrough is rejected at the boundary because `fromAny`
|
|
399
|
+
* passes Nodes through verbatim, which would silently drop `meta`/`equals`
|
|
400
|
+
* options and bypass the `add()` registration's name semantics. For
|
|
401
|
+
* Node→Node, use {@link Graph.derived} with `keepAlive: true` instead.
|
|
402
|
+
*/
|
|
403
|
+
type GraphProduceInput<T> = PromiseLike<T> | AsyncIterable<T> | Iterable<T> | T;
|
|
337
404
|
/** Filter for {@link Graph.describe} — object-style partial match or predicate. */
|
|
338
405
|
type DescribeFilter = Partial<Pick<DescribeNodeOutput, "type" | "status">> | {
|
|
339
406
|
type?: DescribeNodeOutput["type"];
|
|
@@ -1035,6 +1102,115 @@ declare class Graph {
|
|
|
1035
1102
|
* TEARDOWN and unregisters the node).
|
|
1036
1103
|
*/
|
|
1037
1104
|
complete(name: string, options?: GraphActorOptions): void;
|
|
1105
|
+
/**
|
|
1106
|
+
* Internal: register a self-pruning keepalive subscription. The sink
|
|
1107
|
+
* watches for terminal messages (`COMPLETE`/`ERROR`/`TEARDOWN`) on `n`
|
|
1108
|
+
* and removes the disposer from `_disposers` when one arrives, so
|
|
1109
|
+
* repeated `graph.remove(name)` cycles do not accumulate stale
|
|
1110
|
+
* disposers (qa B3).
|
|
1111
|
+
*/
|
|
1112
|
+
private _registerSelfPruningKeepalive;
|
|
1113
|
+
/**
|
|
1114
|
+
* Internal: wire an `AbortSignal` so its abort triggers
|
|
1115
|
+
* `graph.remove(name)`. Already-aborted signals trigger removal
|
|
1116
|
+
* synchronously. The abort listener is itself registered as a graph
|
|
1117
|
+
* disposer so it gets cleaned up if `destroy()` runs first (qa B4).
|
|
1118
|
+
*/
|
|
1119
|
+
private _wireSignalToRemove;
|
|
1120
|
+
/**
|
|
1121
|
+
* Path-based reactive derivation. Resolves each entry in `depPaths` via
|
|
1122
|
+
* {@link Graph.resolve}, builds a {@link derived} node, registers it via
|
|
1123
|
+
* {@link Graph.add}, and returns the registered Node.
|
|
1124
|
+
*
|
|
1125
|
+
* **First-run gate inherited.** fn does not fire until every dep has
|
|
1126
|
+
* delivered at least one real DATA — same gate as `derived()` (spec §2.7,
|
|
1127
|
+
* `partial: false`). A SENTINEL dep holds activation; `null` is a real
|
|
1128
|
+
* DATA value and releases the gate. **Empty `depPaths` is a vacuous
|
|
1129
|
+
* gate** — fn fires once synchronously on first activation. Use this
|
|
1130
|
+
* for one-shot constants only; for async sources prefer
|
|
1131
|
+
* {@link Graph.produce}.
|
|
1132
|
+
*
|
|
1133
|
+
* **`keepAlive: true`** — installs an internal subscription so the node
|
|
1134
|
+
* stays activated and `.cache` stays current for **external consumers**
|
|
1135
|
+
* (UI render, debug snapshot, audit log). The subscription self-prunes
|
|
1136
|
+
* on the node's terminal and is also drained by {@link Graph.destroy}.
|
|
1137
|
+
*
|
|
1138
|
+
* **Do not read `node.cache` from inside another reactive fn** — that
|
|
1139
|
+
* is a §5.12 boundary violation regardless of `keepAlive`. Declare the
|
|
1140
|
+
* node as a real dep instead so the edge appears in `describe()` and
|
|
1141
|
+
* the message protocol carries the value.
|
|
1142
|
+
*
|
|
1143
|
+
* **`signal`** — when aborted, removes this node from the graph.
|
|
1144
|
+
*
|
|
1145
|
+
* @param name - Local registration name (must be unique on this graph).
|
|
1146
|
+
* @param depPaths - `::`-qualified paths resolved at construction time.
|
|
1147
|
+
* @param fn - Pure compute receiving sugar-unwrapped scalar dep values.
|
|
1148
|
+
* @param opts - {@link GraphDerivedOptions}.
|
|
1149
|
+
* @returns The registered `Node<T>`.
|
|
1150
|
+
*/
|
|
1151
|
+
derived<T>(name: string, depPaths: readonly string[], fn: DerivedFn<T>, opts?: GraphDerivedOptions<T>): Node<T>;
|
|
1152
|
+
/**
|
|
1153
|
+
* Path-based managed side effect. Resolves each entry in `depPaths`,
|
|
1154
|
+
* builds an {@link effect} node, registers it, and returns the
|
|
1155
|
+
* registered Node. fn does not auto-emit — call `actions.emit(v)` /
|
|
1156
|
+
* `actions.down(msgs)` explicitly to produce downstream messages.
|
|
1157
|
+
*
|
|
1158
|
+
* **Cleanup.** Return a cleanup function (`() => void`) or granular
|
|
1159
|
+
* hooks (`{ beforeRun?, deactivate?, invalidate? }`) — fired on the
|
|
1160
|
+
* matching transition by the underlying primitive (see
|
|
1161
|
+
* {@link NodeFnCleanup}). Graph teardown propagates `[[TEARDOWN]]`
|
|
1162
|
+
* which triggers `deactivate`.
|
|
1163
|
+
*
|
|
1164
|
+
* **`signal`** — when aborted, removes this node from the graph (fires
|
|
1165
|
+
* the effect's `deactivate` cleanup).
|
|
1166
|
+
*
|
|
1167
|
+
* @param name - Local registration name (must be unique on this graph).
|
|
1168
|
+
* @param depPaths - `::`-qualified paths resolved at construction time.
|
|
1169
|
+
* @param fn - Side-effect receiving sugar-unwrapped scalar dep values.
|
|
1170
|
+
* @param opts - {@link GraphEffectOptions}.
|
|
1171
|
+
* @returns The registered `Node<unknown>`.
|
|
1172
|
+
*/
|
|
1173
|
+
effect(name: string, depPaths: readonly string[], fn: EffectFn, opts?: GraphEffectOptions): Node<unknown>;
|
|
1174
|
+
/**
|
|
1175
|
+
* Wraps an external/async source as a named graph node via
|
|
1176
|
+
* {@link fromAny}. Accepts {@link GraphProduceInput} shapes:
|
|
1177
|
+
* `Promise`, `AsyncIterable`, `Iterable`, or scalar.
|
|
1178
|
+
*
|
|
1179
|
+
* **Node sources are rejected.** For `Node → Node`, use
|
|
1180
|
+
* {@link Graph.derived} with `keepAlive: true` — `fromAny` would
|
|
1181
|
+
* passthrough a Node verbatim and silently drop `meta`/`equals`
|
|
1182
|
+
* options. The type signature excludes `Node<T>`; a runtime guard
|
|
1183
|
+
* catches casts.
|
|
1184
|
+
*
|
|
1185
|
+
* **`undefined` is rejected.** `undefined` is the global SENTINEL;
|
|
1186
|
+
* emitting it as DATA would corrupt downstream first-run gates.
|
|
1187
|
+
* `null` (a valid DATA value) is accepted.
|
|
1188
|
+
*
|
|
1189
|
+
* **`signal`** — forwarded to {@link fromAny} for in-flight cancel of
|
|
1190
|
+
* Promise/AsyncIterable sources, AND triggers {@link Graph.remove}
|
|
1191
|
+
* when aborted so the topology reflects the cancellation.
|
|
1192
|
+
*
|
|
1193
|
+
* @param name - Local registration name (must be unique on this graph).
|
|
1194
|
+
* @param source - Any {@link GraphProduceInput} shape.
|
|
1195
|
+
* @param opts - {@link GraphProduceOptions}.
|
|
1196
|
+
* @returns The registered `Node<T>`.
|
|
1197
|
+
*/
|
|
1198
|
+
produce<T>(name: string, source: GraphProduceInput<T>, opts?: GraphProduceOptions<T>): Node<T>;
|
|
1199
|
+
/**
|
|
1200
|
+
* Atomic multi-mutation. Same semantics as core {@link batch}: DATA and
|
|
1201
|
+
* RESOLVED emissions inside `fn` defer, DIRTY propagates immediately, and
|
|
1202
|
+
* downstream consumers see one coalesced wave (spec §1.3 invariant 7).
|
|
1203
|
+
* Exposed on `Graph` for discoverability and import hygiene — pattern
|
|
1204
|
+
* authors can reach for `graph.batch(...)` without importing `batch` from
|
|
1205
|
+
* the core entry. Shares one global frame with the core import; nesting
|
|
1206
|
+
* either way is supported.
|
|
1207
|
+
*
|
|
1208
|
+
* **Caveat:** if `fn` throws, deferred DATA is discarded but DIRTY
|
|
1209
|
+
* messages already propagated synchronously, leaving downstream nodes
|
|
1210
|
+
* in `dirty` status with stale `.cache`. Catch and emit compensating
|
|
1211
|
+
* INVALIDATE/RESET if you need to recover.
|
|
1212
|
+
*/
|
|
1213
|
+
batch(fn: () => void): void;
|
|
1038
1214
|
/**
|
|
1039
1215
|
* Returns the full edge list for this graph tree, derived on demand from
|
|
1040
1216
|
* each registered node's `_deps` (no stored registry). Local-only
|
|
@@ -1221,6 +1397,13 @@ declare class Graph {
|
|
|
1221
1397
|
* When `reactive: true`, also accepts `name?`.
|
|
1222
1398
|
*/
|
|
1223
1399
|
explain(from: string | Node<string>, to: string | Node<string>, opts?: {
|
|
1400
|
+
/**
|
|
1401
|
+
* DF13 (2026-04-29) — narrow the static overload to forbid
|
|
1402
|
+
* `reactive: true`. A caller passing `{ reactive: true, ... }`
|
|
1403
|
+
* is steered into the reactive overload instead of falling
|
|
1404
|
+
* through to the implementation signature's union return.
|
|
1405
|
+
*/
|
|
1406
|
+
reactive?: false;
|
|
1224
1407
|
maxDepth?: number | Node<number>;
|
|
1225
1408
|
findCycle?: boolean | Node<boolean>;
|
|
1226
1409
|
}): CausalChain;
|
|
@@ -1333,7 +1516,17 @@ declare class Graph {
|
|
|
1333
1516
|
* stays `true` even if the instance is later reused via {@link add}.
|
|
1334
1517
|
*/
|
|
1335
1518
|
get destroyed(): boolean;
|
|
1336
|
-
/**
|
|
1519
|
+
/**
|
|
1520
|
+
* Clear structure after parent already signaled TEARDOWN through this subtree.
|
|
1521
|
+
*
|
|
1522
|
+
* Drains both `_disposers` and `_storageDisposers` to mirror the full
|
|
1523
|
+
* {@link destroy} path — child mounts that registered disposers via
|
|
1524
|
+
* {@link addDisposer} (audit trails, log dispose hooks, off-event
|
|
1525
|
+
* callbacks, attached storage) would otherwise leak when destruction
|
|
1526
|
+
* reaches the subtree via the parent's TEARDOWN cascade rather than a
|
|
1527
|
+
* direct `destroy()` call (EH-2). Disposers run BEFORE structure clear
|
|
1528
|
+
* so cleanups can still resolve node paths if needed.
|
|
1529
|
+
*/
|
|
1337
1530
|
private _destroyClearOnly;
|
|
1338
1531
|
/**
|
|
1339
1532
|
* Serializes structure and current values to JSON-shaped data (§3.8). Same
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { i as index$2 } from './index-
|
|
2
|
-
import { i as index$3 } from './index-
|
|
3
|
-
import { i as index$4 } from './index-
|
|
4
|
-
import { i as index$5 } from './index-
|
|
5
|
-
import { N as Node } from './node-
|
|
6
|
-
import { i as index$6 } from './index-
|
|
7
|
-
import { i as index$7 } from './index-
|
|
8
|
-
import { i as index$8 } from './index-
|
|
9
|
-
import { i as index$9 } from './index-
|
|
1
|
+
import { i as index$2 } from './index-BrPrLl4e.cjs';
|
|
2
|
+
import { i as index$3 } from './index-BQSKmbuG.cjs';
|
|
3
|
+
import { i as index$4 } from './index-Climxqsu.cjs';
|
|
4
|
+
import { i as index$5 } from './index-C5stwKcw.cjs';
|
|
5
|
+
import { N as Node } from './node-kK3CvTrR.cjs';
|
|
6
|
+
import { i as index$6 } from './index-hcDJ8PSI.cjs';
|
|
7
|
+
import { i as index$7 } from './index-_6ODbuOu.cjs';
|
|
8
|
+
import { i as index$8 } from './index-CK29LV56.cjs';
|
|
9
|
+
import { i as index$9 } from './index-ZVQhLa2i.cjs';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Options for creating signals.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { A as Actor, N as Node, W as PolicyRuleData,
|
|
2
|
-
import { G as Graph, a as GraphOptions, r as GraphPersistSnapshot, b as GraphDescribeOutput, j as GraphDescribeOptions, C as CausalChain, e as DescribeFilter } from './graph-
|
|
3
|
-
import { T as TopicGraph } from './index-
|
|
4
|
-
import { w as watchTopologyTree } from './topology-tree-
|
|
1
|
+
import { A as Actor, N as Node, W as PolicyRuleData, m as GuardAction } from './node-kK3CvTrR.cjs';
|
|
2
|
+
import { G as Graph, a as GraphOptions, r as GraphPersistSnapshot, b as GraphDescribeOutput, j as GraphDescribeOptions, C as CausalChain, e as DescribeFilter } from './graph-CWvEUQAq.cjs';
|
|
3
|
+
import { T as TopicGraph } from './index-C5ri2Axc.cjs';
|
|
4
|
+
import { w as watchTopologyTree } from './topology-tree-Bcz27hpF.cjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Audit, policy enforcement, and compliance export (roadmap §9.2).
|
|
@@ -58,6 +58,25 @@ interface AuditTrailOptions {
|
|
|
58
58
|
declare class AuditTrailGraph extends Graph {
|
|
59
59
|
readonly entries: Node<readonly AuditEntry[]>;
|
|
60
60
|
readonly count: Node<number>;
|
|
61
|
+
/**
|
|
62
|
+
* Effective set of event types this trail records (EH-18). Reflects
|
|
63
|
+
* either the caller-supplied `opts.includeTypes` or the default set
|
|
64
|
+
* (`["data", "error", "complete", "teardown"]`). Captured at construction
|
|
65
|
+
* — each instance owns its own clone, so a default-using trail can never
|
|
66
|
+
* leak mutations into the module-level default set.
|
|
67
|
+
*
|
|
68
|
+
* **Mutation contract.** Type-system read-only via `ReadonlySet`. Runtime
|
|
69
|
+
* mutation through an unsafe cast (`(audit.includeTypes as Set<...>)
|
|
70
|
+
* .add(...)`) is unsupported — it would desync the field from the
|
|
71
|
+
* recording closure, which captured the original `Set` reference at
|
|
72
|
+
* construction. The runtime does NOT enforce immutability beyond the
|
|
73
|
+
* type contract; consumers must respect it.
|
|
74
|
+
*
|
|
75
|
+
* Use this to validate that a `complianceSnapshot.fingerprint` was
|
|
76
|
+
* computed against the same recording surface — fingerprints are stable
|
|
77
|
+
* only when the recording set is identical across snapshots.
|
|
78
|
+
*/
|
|
79
|
+
readonly includeTypes: ReadonlySet<AuditEntry["type"]>;
|
|
61
80
|
private readonly _log;
|
|
62
81
|
private readonly _target;
|
|
63
82
|
constructor(target: Graph, opts: AuditTrailOptions);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { N as Node } from './node-
|
|
2
|
-
import { B as BaseAuditRecord } from './index-
|
|
3
|
-
import { a as ReactiveLogBundle } from './reactive-log-
|
|
1
|
+
import { N as Node } from './node-kK3CvTrR.cjs';
|
|
2
|
+
import { B as BaseAuditRecord } from './index-D0aciIex.cjs';
|
|
3
|
+
import { a as ReactiveLogBundle } from './reactive-log-DIGdYqQ6.cjs';
|
|
4
4
|
import { AppendLogStorageTier } from './extra/storage-tiers.cjs';
|
|
5
|
-
import { a as GraphOptions, G as Graph } from './graph-
|
|
5
|
+
import { a as GraphOptions, G as Graph } from './graph-CWvEUQAq.cjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* CQRS patterns (roadmap §4.5).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { N as Node } from './node-
|
|
2
|
-
import { B as BaseAuditRecord } from './index-
|
|
3
|
-
import { a as ReactiveLogBundle } from './reactive-log-
|
|
4
|
-
import { G as Graph } from './graph-
|
|
1
|
+
import { N as Node } from './node-kK3CvTrR.cjs';
|
|
2
|
+
import { B as BaseAuditRecord } from './index-D0aciIex.cjs';
|
|
3
|
+
import { a as ReactiveLogBundle } from './reactive-log-DIGdYqQ6.cjs';
|
|
4
|
+
import { G as Graph } from './graph-CWvEUQAq.cjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Memory patterns (roadmap §4.3) — public-face Phase-4 primitives audited under
|