@graphrefly/graphrefly 0.44.0 → 0.46.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.
Files changed (720) hide show
  1. package/README.md +22 -19
  2. package/dist/_internal-B23BagFd.d.cts +33 -0
  3. package/dist/_internal-B23BagFd.d.ts +33 -0
  4. package/dist/adaptive-rate-limiter-Dch_xYIi.d.cts +111 -0
  5. package/dist/adaptive-rate-limiter-Dch_xYIi.d.ts +111 -0
  6. package/dist/agents-C0Ji9ldU.d.cts +629 -0
  7. package/dist/agents-C9zexT7I.d.ts +629 -0
  8. package/dist/audit-BAXb3VOg.d.ts +246 -0
  9. package/dist/audit-C_bPfkqS.d.cts +246 -0
  10. package/dist/backoff-7KIK3WQW.js +24 -0
  11. package/dist/backoff-7KIK3WQW.js.map +1 -0
  12. package/dist/backoff-Bnb9OoPh.d.cts +6 -0
  13. package/dist/backoff-Bnb9OoPh.d.ts +6 -0
  14. package/dist/base/composition/index.cjs +811 -0
  15. package/dist/base/composition/index.cjs.map +1 -0
  16. package/dist/base/composition/index.d.cts +469 -0
  17. package/dist/base/composition/index.d.ts +469 -0
  18. package/dist/base/composition/index.js +40 -0
  19. package/dist/base/composition/index.js.map +1 -0
  20. package/dist/base/index.cjs +6336 -0
  21. package/dist/base/index.cjs.map +1 -0
  22. package/dist/base/index.d.cts +22 -0
  23. package/dist/base/index.d.ts +22 -0
  24. package/dist/base/index.js +259 -0
  25. package/dist/base/index.js.map +1 -0
  26. package/dist/base/io/index.cjs +3270 -0
  27. package/dist/base/io/index.cjs.map +1 -0
  28. package/dist/base/io/index.d.cts +2245 -0
  29. package/dist/base/io/index.d.ts +2245 -0
  30. package/dist/base/io/index.js +117 -0
  31. package/dist/base/io/index.js.map +1 -0
  32. package/dist/base/meta/index.cjs +43 -0
  33. package/dist/base/meta/index.cjs.map +1 -0
  34. package/dist/base/meta/index.d.cts +45 -0
  35. package/dist/base/meta/index.d.ts +45 -0
  36. package/dist/base/meta/index.js +13 -0
  37. package/dist/base/meta/index.js.map +1 -0
  38. package/dist/base/mutation/index.cjs +200 -0
  39. package/dist/base/mutation/index.cjs.map +1 -0
  40. package/dist/base/mutation/index.d.cts +177 -0
  41. package/dist/base/mutation/index.d.ts +177 -0
  42. package/dist/base/mutation/index.js +22 -0
  43. package/dist/base/mutation/index.js.map +1 -0
  44. package/dist/base/render/index.cjs +1120 -0
  45. package/dist/base/render/index.cjs.map +1 -0
  46. package/dist/{extra/render/index.d.ts → base/render/index.d.cts} +75 -31
  47. package/dist/{extra/render/index.d.cts → base/render/index.d.ts} +75 -31
  48. package/dist/base/render/index.js +24 -0
  49. package/dist/base/render/index.js.map +1 -0
  50. package/dist/base/sources/browser/index.cjs +172 -0
  51. package/dist/base/sources/browser/index.cjs.map +1 -0
  52. package/dist/base/sources/browser/index.d.cts +84 -0
  53. package/dist/base/sources/browser/index.d.ts +84 -0
  54. package/dist/base/sources/browser/index.js +151 -0
  55. package/dist/base/sources/browser/index.js.map +1 -0
  56. package/dist/base/sources/event/index.cjs +98 -0
  57. package/dist/base/sources/event/index.cjs.map +1 -0
  58. package/dist/base/sources/event/index.d.cts +91 -0
  59. package/dist/base/sources/event/index.d.ts +91 -0
  60. package/dist/base/sources/event/index.js +13 -0
  61. package/dist/base/sources/event/index.js.map +1 -0
  62. package/dist/base/sources/index.cjs +755 -0
  63. package/dist/base/sources/index.cjs.map +1 -0
  64. package/dist/{extra/sources.d.ts → base/sources/index.d.cts} +74 -301
  65. package/dist/{extra/sources.d.cts → base/sources/index.d.ts} +74 -301
  66. package/dist/base/sources/index.js +42 -0
  67. package/dist/base/sources/index.js.map +1 -0
  68. package/dist/base/sources/node/index.cjs +320 -0
  69. package/dist/base/sources/node/index.cjs.map +1 -0
  70. package/dist/{extra/node.d.ts → base/sources/node/index.d.cts} +35 -37
  71. package/dist/{extra/node.d.cts → base/sources/node/index.d.ts} +35 -37
  72. package/dist/base/sources/node/index.js +306 -0
  73. package/dist/base/sources/node/index.js.map +1 -0
  74. package/dist/base/utils/index.cjs +37 -0
  75. package/dist/base/utils/index.cjs.map +1 -0
  76. package/dist/base/utils/index.d.cts +37 -0
  77. package/dist/base/utils/index.d.ts +37 -0
  78. package/dist/base/utils/index.js +11 -0
  79. package/dist/base/utils/index.js.map +1 -0
  80. package/dist/base/worker/index.cjs +548 -0
  81. package/dist/base/worker/index.cjs.map +1 -0
  82. package/dist/base/worker/index.d.cts +207 -0
  83. package/dist/base/worker/index.d.ts +207 -0
  84. package/dist/base/worker/index.js +20 -0
  85. package/dist/base/worker/index.js.map +1 -0
  86. package/dist/breaker-C9skL3d8.d.ts +175 -0
  87. package/dist/breaker-ugSdq54q.d.cts +175 -0
  88. package/dist/{cascading-BglDkMdX.d.cts → cascading-CSSbKGrJ.d.ts} +3 -3
  89. package/dist/{cascading-MFgxu7Yo.d.ts → cascading-baGkiihI.d.cts} +3 -3
  90. package/dist/chunk-255UCBG4.js +58 -0
  91. package/dist/chunk-255UCBG4.js.map +1 -0
  92. package/dist/chunk-2LO3EL4W.js +1 -0
  93. package/dist/chunk-2LO3EL4W.js.map +1 -0
  94. package/dist/chunk-2OB3CEJS.js +1065 -0
  95. package/dist/chunk-2OB3CEJS.js.map +1 -0
  96. package/dist/chunk-36NMM65U.js +144 -0
  97. package/dist/chunk-36NMM65U.js.map +1 -0
  98. package/dist/chunk-3CEXCBN6.js +1 -0
  99. package/dist/chunk-3CEXCBN6.js.map +1 -0
  100. package/dist/chunk-3MUSLI6E.js +105 -0
  101. package/dist/chunk-3MUSLI6E.js.map +1 -0
  102. package/dist/chunk-3PSLNJDU.js +884 -0
  103. package/dist/chunk-3PSLNJDU.js.map +1 -0
  104. package/dist/chunk-3QZY5BI7.js +92 -0
  105. package/dist/chunk-3QZY5BI7.js.map +1 -0
  106. package/dist/chunk-42FQ27MQ.js +594 -0
  107. package/dist/chunk-42FQ27MQ.js.map +1 -0
  108. package/dist/chunk-4GYMCUDZ.js +1085 -0
  109. package/dist/chunk-4GYMCUDZ.js.map +1 -0
  110. package/dist/chunk-4S53H2KR.js +382 -0
  111. package/dist/chunk-4S53H2KR.js.map +1 -0
  112. package/dist/chunk-4XCHZRUJ.js +128 -0
  113. package/dist/chunk-4XCHZRUJ.js.map +1 -0
  114. package/dist/chunk-5THCXDWY.js +725 -0
  115. package/dist/chunk-5THCXDWY.js.map +1 -0
  116. package/dist/chunk-6XZYT4SW.js +256 -0
  117. package/dist/chunk-6XZYT4SW.js.map +1 -0
  118. package/dist/chunk-7EGRP2VX.js +76 -0
  119. package/dist/chunk-7EGRP2VX.js.map +1 -0
  120. package/dist/chunk-A7KV5UK4.js +150 -0
  121. package/dist/chunk-A7KV5UK4.js.map +1 -0
  122. package/dist/chunk-APY2SS5X.js +156 -0
  123. package/dist/chunk-APY2SS5X.js.map +1 -0
  124. package/dist/chunk-AZDQPQ3V.js +66 -0
  125. package/dist/chunk-AZDQPQ3V.js.map +1 -0
  126. package/dist/chunk-BU3SEFA5.js +90 -0
  127. package/dist/chunk-BU3SEFA5.js.map +1 -0
  128. package/dist/chunk-BXGZFGZ4.js +189 -0
  129. package/dist/chunk-BXGZFGZ4.js.map +1 -0
  130. package/dist/chunk-CGHORL6G.js +579 -0
  131. package/dist/chunk-CGHORL6G.js.map +1 -0
  132. package/dist/chunk-CXANAIZU.js +530 -0
  133. package/dist/chunk-CXANAIZU.js.map +1 -0
  134. package/dist/chunk-CZQHCKKG.js +1 -0
  135. package/dist/chunk-CZQHCKKG.js.map +1 -0
  136. package/dist/chunk-DKNHAICT.js +133 -0
  137. package/dist/chunk-DKNHAICT.js.map +1 -0
  138. package/dist/chunk-DM4OMPWK.js +584 -0
  139. package/dist/chunk-DM4OMPWK.js.map +1 -0
  140. package/dist/chunk-DMSNO6ZB.js +452 -0
  141. package/dist/chunk-DMSNO6ZB.js.map +1 -0
  142. package/dist/chunk-E5OZPDIW.js +229 -0
  143. package/dist/chunk-E5OZPDIW.js.map +1 -0
  144. package/dist/chunk-EVYY4X5A.js +509 -0
  145. package/dist/chunk-EVYY4X5A.js.map +1 -0
  146. package/dist/chunk-FDFD67UO.js +1 -0
  147. package/dist/chunk-FDFD67UO.js.map +1 -0
  148. package/dist/chunk-FMPF42Q4.js +13 -0
  149. package/dist/chunk-FMPF42Q4.js.map +1 -0
  150. package/dist/chunk-FR6RGA3B.js +1277 -0
  151. package/dist/chunk-FR6RGA3B.js.map +1 -0
  152. package/dist/chunk-FW23JYNQ.js +454 -0
  153. package/dist/chunk-FW23JYNQ.js.map +1 -0
  154. package/dist/chunk-GBCENOLN.js +1575 -0
  155. package/dist/chunk-GBCENOLN.js.map +1 -0
  156. package/dist/chunk-HL7HUJIX.js +1 -0
  157. package/dist/chunk-HL7HUJIX.js.map +1 -0
  158. package/dist/chunk-HULCUY35.js +2508 -0
  159. package/dist/chunk-HULCUY35.js.map +1 -0
  160. package/dist/chunk-IHTWQEDR.js +169 -0
  161. package/dist/chunk-IHTWQEDR.js.map +1 -0
  162. package/dist/chunk-IJRR6YAI.js +128 -0
  163. package/dist/chunk-IJRR6YAI.js.map +1 -0
  164. package/dist/chunk-JGFRAFDL.js +221 -0
  165. package/dist/chunk-JGFRAFDL.js.map +1 -0
  166. package/dist/chunk-KIIXR252.js +211 -0
  167. package/dist/chunk-KIIXR252.js.map +1 -0
  168. package/dist/chunk-KN3H5CNT.js +11 -0
  169. package/dist/chunk-KN3H5CNT.js.map +1 -0
  170. package/dist/chunk-KPG3DGLA.js +1 -0
  171. package/dist/chunk-KPG3DGLA.js.map +1 -0
  172. package/dist/chunk-KRNQ6RGQ.js +1 -0
  173. package/dist/chunk-KRNQ6RGQ.js.map +1 -0
  174. package/dist/chunk-LBAJK24K.js +1071 -0
  175. package/dist/chunk-LBAJK24K.js.map +1 -0
  176. package/dist/chunk-MLTPJMH6.js +417 -0
  177. package/dist/chunk-MLTPJMH6.js.map +1 -0
  178. package/dist/chunk-N3SZ7BMH.js +95 -0
  179. package/dist/chunk-N3SZ7BMH.js.map +1 -0
  180. package/dist/chunk-NDUD3IMO.js +540 -0
  181. package/dist/chunk-NDUD3IMO.js.map +1 -0
  182. package/dist/chunk-NY2PYHNC.js +873 -0
  183. package/dist/chunk-NY2PYHNC.js.map +1 -0
  184. package/dist/chunk-O3MT7DYI.js +225 -0
  185. package/dist/chunk-O3MT7DYI.js.map +1 -0
  186. package/dist/chunk-OCUDSN63.js +2386 -0
  187. package/dist/chunk-OCUDSN63.js.map +1 -0
  188. package/dist/chunk-OIWU3NYV.js +199 -0
  189. package/dist/chunk-OIWU3NYV.js.map +1 -0
  190. package/dist/chunk-OO5BM6CJ.js +1153 -0
  191. package/dist/chunk-OO5BM6CJ.js.map +1 -0
  192. package/dist/chunk-OQUIJT7A.js +1 -0
  193. package/dist/chunk-OQUIJT7A.js.map +1 -0
  194. package/dist/chunk-P5LBT622.js +105 -0
  195. package/dist/chunk-P5LBT622.js.map +1 -0
  196. package/dist/chunk-PKGQG5QQ.js +519 -0
  197. package/dist/chunk-PKGQG5QQ.js.map +1 -0
  198. package/dist/chunk-PKPO3JTZ.js +561 -0
  199. package/dist/chunk-PKPO3JTZ.js.map +1 -0
  200. package/dist/chunk-PL5UDIQ5.js +118 -0
  201. package/dist/chunk-PL5UDIQ5.js.map +1 -0
  202. package/dist/chunk-PZWISPIQ.js +432 -0
  203. package/dist/chunk-PZWISPIQ.js.map +1 -0
  204. package/dist/chunk-Q3EYOCZB.js +510 -0
  205. package/dist/chunk-Q3EYOCZB.js.map +1 -0
  206. package/dist/chunk-QMBYUVRL.js +15 -0
  207. package/dist/chunk-QMBYUVRL.js.map +1 -0
  208. package/dist/chunk-RAGGHLCV.js +200 -0
  209. package/dist/chunk-RAGGHLCV.js.map +1 -0
  210. package/dist/chunk-RGL53X5G.js +574 -0
  211. package/dist/chunk-RGL53X5G.js.map +1 -0
  212. package/dist/chunk-RJOG4IJU.js +1039 -0
  213. package/dist/chunk-RJOG4IJU.js.map +1 -0
  214. package/dist/chunk-SOOKUYVM.js +403 -0
  215. package/dist/chunk-SOOKUYVM.js.map +1 -0
  216. package/dist/chunk-T5BN5KG7.js +1 -0
  217. package/dist/chunk-T5BN5KG7.js.map +1 -0
  218. package/dist/chunk-TP7244Y6.js +207 -0
  219. package/dist/chunk-TP7244Y6.js.map +1 -0
  220. package/dist/chunk-TSBFTJKM.js +57 -0
  221. package/dist/chunk-TSBFTJKM.js.map +1 -0
  222. package/dist/chunk-URQ2CBBF.js +143 -0
  223. package/dist/chunk-URQ2CBBF.js.map +1 -0
  224. package/dist/chunk-W2BOPXTI.js +1 -0
  225. package/dist/chunk-W2BOPXTI.js.map +1 -0
  226. package/dist/chunk-WKSWLSCX.js +207 -0
  227. package/dist/chunk-WKSWLSCX.js.map +1 -0
  228. package/dist/chunk-Y52CS6YA.js +88 -0
  229. package/dist/chunk-Y52CS6YA.js.map +1 -0
  230. package/dist/chunk-YCBUWK77.js +92 -0
  231. package/dist/chunk-YCBUWK77.js.map +1 -0
  232. package/dist/chunk-YJ4U2D2C.js +314 -0
  233. package/dist/chunk-YJ4U2D2C.js.map +1 -0
  234. package/dist/chunk-Z4YXAUDN.js +239 -0
  235. package/dist/chunk-Z4YXAUDN.js.map +1 -0
  236. package/dist/chunk-Z6EGP5D7.js +92 -0
  237. package/dist/chunk-Z6EGP5D7.js.map +1 -0
  238. package/dist/compat/index.cjs +3100 -9
  239. package/dist/compat/index.cjs.map +1 -0
  240. package/dist/compat/index.d.cts +112 -18
  241. package/dist/compat/index.d.ts +112 -18
  242. package/dist/compat/index.js +176 -1
  243. package/dist/compat/index.js.map +1 -0
  244. package/dist/compat/jotai/index.cjs +149 -1
  245. package/dist/compat/jotai/index.cjs.map +1 -0
  246. package/dist/compat/jotai/index.d.cts +2 -2
  247. package/dist/compat/jotai/index.d.ts +2 -2
  248. package/dist/compat/jotai/index.js +8 -1
  249. package/dist/compat/jotai/index.js.map +1 -0
  250. package/dist/compat/nanostores/index.cjs +205 -1
  251. package/dist/compat/nanostores/index.cjs.map +1 -0
  252. package/dist/compat/nanostores/index.d.cts +2 -2
  253. package/dist/compat/nanostores/index.d.ts +2 -2
  254. package/dist/compat/nanostores/index.js +22 -1
  255. package/dist/compat/nanostores/index.js.map +1 -0
  256. package/dist/compat/nestjs/index.cjs +2241 -9
  257. package/dist/compat/nestjs/index.cjs.map +1 -0
  258. package/dist/compat/nestjs/index.d.cts +7 -10
  259. package/dist/compat/nestjs/index.d.ts +7 -10
  260. package/dist/compat/nestjs/index.js +78 -1
  261. package/dist/compat/nestjs/index.js.map +1 -0
  262. package/dist/compat/react/index.cjs +114 -1
  263. package/dist/compat/react/index.cjs.map +1 -0
  264. package/dist/compat/react/index.d.cts +2 -2
  265. package/dist/compat/react/index.d.ts +2 -2
  266. package/dist/compat/react/index.js +12 -1
  267. package/dist/compat/react/index.js.map +1 -0
  268. package/dist/compat/solid/index.cjs +101 -1
  269. package/dist/compat/solid/index.cjs.map +1 -0
  270. package/dist/compat/solid/index.d.cts +2 -2
  271. package/dist/compat/solid/index.d.ts +2 -2
  272. package/dist/compat/solid/index.js +12 -1
  273. package/dist/compat/solid/index.js.map +1 -0
  274. package/dist/compat/svelte/index.cjs +104 -1
  275. package/dist/compat/svelte/index.cjs.map +1 -0
  276. package/dist/compat/svelte/index.d.cts +2 -2
  277. package/dist/compat/svelte/index.d.ts +2 -2
  278. package/dist/compat/svelte/index.js +12 -1
  279. package/dist/compat/svelte/index.js.map +1 -0
  280. package/dist/compat/vue/index.cjs +119 -1
  281. package/dist/compat/vue/index.cjs.map +1 -0
  282. package/dist/compat/vue/index.d.cts +2 -2
  283. package/dist/compat/vue/index.d.ts +2 -2
  284. package/dist/compat/vue/index.js +12 -1
  285. package/dist/compat/vue/index.js.map +1 -0
  286. package/dist/compat/zustand/index.cjs +69 -3
  287. package/dist/compat/zustand/index.cjs.map +1 -0
  288. package/dist/compat/zustand/index.d.cts +2 -6
  289. package/dist/compat/zustand/index.d.ts +2 -6
  290. package/dist/compat/zustand/index.js +8 -1
  291. package/dist/compat/zustand/index.js.map +1 -0
  292. package/dist/distill-De6Rnn15.d.cts +48 -0
  293. package/dist/distill-De6Rnn15.d.ts +48 -0
  294. package/dist/external-register-CWyroXb_.d.cts +138 -0
  295. package/dist/external-register-CWyroXb_.d.ts +138 -0
  296. package/dist/{fallback-74oxi34l.d.cts → fallback-Bx46zqky.d.cts} +3 -10
  297. package/dist/{fallback-DUyyBTBK.d.ts → fallback-pIWW8A2d.d.ts} +3 -10
  298. package/dist/guarded-execution-BcdtxeBk.d.ts +207 -0
  299. package/dist/guarded-execution-C-3hnP6A.d.cts +207 -0
  300. package/dist/{index-CBGUK09R.d.ts → index-5SU_O78r.d.cts} +5 -5
  301. package/dist/{index-BmZXHqkE.d.ts → index-B6pxYJzO.d.cts} +1 -1
  302. package/dist/{index-hcDJ8PSI.d.cts → index-B6pxYJzO.d.ts} +1 -1
  303. package/dist/{index-C5stwKcw.d.cts → index-BFsng6v1.d.cts} +1 -1
  304. package/dist/{index-CdAlHFEt.d.ts → index-BFsng6v1.d.ts} +1 -1
  305. package/dist/{index-_6ODbuOu.d.cts → index-Bg-LwEt-.d.cts} +1 -1
  306. package/dist/{index-CviRnE4K.d.ts → index-Bg-LwEt-.d.ts} +1 -1
  307. package/dist/{index-CBBLl_rc.d.ts → index-Brp888t0.d.cts} +1 -1
  308. package/dist/{index-BQSKmbuG.d.cts → index-Brp888t0.d.ts} +1 -1
  309. package/dist/{index-sqkqlb1p.d.ts → index-CDfk6jHN.d.cts} +1 -1
  310. package/dist/{index-ZVQhLa2i.d.cts → index-CDfk6jHN.d.ts} +1 -1
  311. package/dist/{index-Climxqsu.d.cts → index-CEXCtYYJ.d.ts} +5 -5
  312. package/dist/index-DLAxYaN5.d.cts +169 -0
  313. package/dist/index-DLAxYaN5.d.ts +169 -0
  314. package/dist/{index-CK29LV56.d.cts → index-DeWbQzMe.d.cts} +1 -1
  315. package/dist/{index-CPQlGA29.d.ts → index-DeWbQzMe.d.ts} +1 -1
  316. package/dist/{index-BrPrLl4e.d.cts → index-dX9IzPqj.d.cts} +1 -1
  317. package/dist/{index-Dgl1HpPn.d.ts → index-dX9IzPqj.d.ts} +1 -1
  318. package/dist/index.cjs +25934 -191
  319. package/dist/index.cjs.map +1 -0
  320. package/dist/index.d.cts +58 -94
  321. package/dist/index.d.ts +58 -94
  322. package/dist/index.js +852 -1
  323. package/dist/index.js.map +1 -0
  324. package/dist/layout-types-B5aiHYgk.d.cts +72 -0
  325. package/dist/layout-types-B5aiHYgk.d.ts +72 -0
  326. package/dist/memory-composers-BryDrRBX.d.cts +529 -0
  327. package/dist/memory-composers-CVQqPYEV.d.ts +529 -0
  328. package/dist/{observable-DWjNfLvC.d.ts → observable-BXQoW1P-.d.cts} +1 -1
  329. package/dist/{observable-e3eiPPFy.d.cts → observable-BXQoW1P-.d.ts} +1 -1
  330. package/dist/{pipeline-graph-Sgj0gCwn.d.ts → pipeline-graph-Ce47CB6Y.d.cts} +13 -10
  331. package/dist/{pipeline-graph-CIKhynsF.d.cts → pipeline-graph-DXCwY9vG.d.ts} +13 -10
  332. package/dist/presets/ai/index.cjs +4377 -0
  333. package/dist/presets/ai/index.cjs.map +1 -0
  334. package/dist/presets/ai/index.d.cts +98 -0
  335. package/dist/presets/ai/index.d.ts +98 -0
  336. package/dist/presets/ai/index.js +54 -0
  337. package/dist/presets/ai/index.js.map +1 -0
  338. package/dist/presets/harness/index.cjs +5929 -0
  339. package/dist/presets/harness/index.cjs.map +1 -0
  340. package/dist/presets/harness/index.d.cts +566 -0
  341. package/dist/presets/harness/index.d.ts +566 -0
  342. package/dist/presets/harness/index.js +71 -0
  343. package/dist/presets/harness/index.js.map +1 -0
  344. package/dist/presets/index.cjs +9782 -0
  345. package/dist/presets/index.cjs.map +1 -0
  346. package/dist/presets/index.d.cts +28 -0
  347. package/dist/presets/index.d.ts +28 -0
  348. package/dist/presets/index.js +129 -0
  349. package/dist/presets/index.js.map +1 -0
  350. package/dist/presets/inspect/index.cjs +1087 -0
  351. package/dist/presets/inspect/index.cjs.map +1 -0
  352. package/dist/presets/inspect/index.d.cts +172 -0
  353. package/dist/presets/inspect/index.d.ts +172 -0
  354. package/dist/presets/inspect/index.js +21 -0
  355. package/dist/presets/inspect/index.js.map +1 -0
  356. package/dist/presets/resilience/index.cjs +1593 -0
  357. package/dist/presets/resilience/index.cjs.map +1 -0
  358. package/dist/presets/resilience/index.d.cts +205 -0
  359. package/dist/presets/resilience/index.d.ts +205 -0
  360. package/dist/presets/resilience/index.js +18 -0
  361. package/dist/presets/resilience/index.js.map +1 -0
  362. package/dist/rate-limiter-CEALq4N1.d.ts +559 -0
  363. package/dist/rate-limiter-DpVbSYdH.d.cts +559 -0
  364. package/dist/{reactive-layout-DOTs9P3X.d.ts → reactive-layout-fswlBUvX.d.cts} +19 -7
  365. package/dist/{reactive-layout-DgctbqZo.d.cts → reactive-layout-fswlBUvX.d.ts} +19 -7
  366. package/dist/retry-BDbRZ_gx.d.ts +125 -0
  367. package/dist/retry-DWuhjvsA.d.cts +125 -0
  368. package/dist/solutions/index.cjs +8200 -0
  369. package/dist/solutions/index.cjs.map +1 -0
  370. package/dist/solutions/index.d.cts +23 -0
  371. package/dist/solutions/index.d.ts +23 -0
  372. package/dist/solutions/index.js +55 -0
  373. package/dist/solutions/index.js.map +1 -0
  374. package/dist/spawnable-5mDY501F.d.cts +746 -0
  375. package/dist/spawnable-D3lR0oQu.d.ts +746 -0
  376. package/dist/status-U-rUI79b.d.cts +84 -0
  377. package/dist/status-U-rUI79b.d.ts +84 -0
  378. package/dist/timeout-U5O4ESK3.js +12 -0
  379. package/dist/timeout-U5O4ESK3.js.map +1 -0
  380. package/dist/{types-CWFysE9E.d.ts → types-BB5Lw-pB.d.cts} +3 -3
  381. package/dist/{types-C0_yquda.d.cts → types-BB5Lw-pB.d.ts} +3 -3
  382. package/dist/types-CJWIMJiZ.d.ts +548 -0
  383. package/dist/types-vCq7ShIm.d.cts +548 -0
  384. package/dist/utils/ai/browser.cjs +2169 -0
  385. package/dist/utils/ai/browser.cjs.map +1 -0
  386. package/dist/{patterns → utils}/ai/browser.d.cts +7 -5
  387. package/dist/{patterns → utils}/ai/browser.d.ts +7 -5
  388. package/dist/utils/ai/browser.js +255 -0
  389. package/dist/utils/ai/browser.js.map +1 -0
  390. package/dist/utils/ai/index.cjs +8468 -0
  391. package/dist/utils/ai/index.cjs.map +1 -0
  392. package/dist/{index-CR8QpwX8.d.ts → utils/ai/index.d.cts} +73 -976
  393. package/dist/{index-UPSiS-X7.d.cts → utils/ai/index.d.ts} +73 -976
  394. package/dist/utils/ai/index.js +173 -0
  395. package/dist/utils/ai/index.js.map +1 -0
  396. package/dist/utils/ai/node.cjs +648 -0
  397. package/dist/utils/ai/node.cjs.map +1 -0
  398. package/dist/{patterns → utils}/ai/node.d.cts +5 -7
  399. package/dist/{patterns → utils}/ai/node.d.ts +5 -7
  400. package/dist/utils/ai/node.js +84 -0
  401. package/dist/utils/ai/node.js.map +1 -0
  402. package/dist/utils/cqrs/index.cjs +1036 -0
  403. package/dist/utils/cqrs/index.cjs.map +1 -0
  404. package/dist/{index-CeFiHtAg.d.ts → utils/cqrs/index.d.cts} +7 -37
  405. package/dist/{index-B-_tFaqV.d.cts → utils/cqrs/index.d.ts} +7 -37
  406. package/dist/utils/cqrs/index.js +18 -0
  407. package/dist/utils/cqrs/index.js.map +1 -0
  408. package/dist/utils/demo-shell/index.cjs +865 -0
  409. package/dist/utils/demo-shell/index.cjs.map +1 -0
  410. package/dist/{index-B8YnZpIR.d.ts → utils/demo-shell/index.d.cts} +4 -16
  411. package/dist/{index-Cwv0KWcU.d.cts → utils/demo-shell/index.d.ts} +4 -16
  412. package/dist/utils/demo-shell/index.js +13 -0
  413. package/dist/utils/demo-shell/index.js.map +1 -0
  414. package/dist/utils/domain-templates/index.cjs +732 -0
  415. package/dist/utils/domain-templates/index.cjs.map +1 -0
  416. package/dist/{index-CzLVrjxn.d.ts → utils/domain-templates/index.d.cts} +3 -20
  417. package/dist/{index-BaQaY_IQ.d.cts → utils/domain-templates/index.d.ts} +3 -20
  418. package/dist/utils/domain-templates/index.js +17 -0
  419. package/dist/utils/domain-templates/index.js.map +1 -0
  420. package/dist/utils/graphspec/index.cjs +1174 -0
  421. package/dist/utils/graphspec/index.cjs.map +1 -0
  422. package/dist/{index-CMh5Rz1y.d.ts → utils/graphspec/index.d.cts} +106 -42
  423. package/dist/{index-CS0LTlB8.d.cts → utils/graphspec/index.d.ts} +106 -42
  424. package/dist/utils/graphspec/index.js +35 -0
  425. package/dist/utils/graphspec/index.js.map +1 -0
  426. package/dist/utils/harness/index.cjs +656 -0
  427. package/dist/utils/harness/index.cjs.map +1 -0
  428. package/dist/utils/harness/index.d.cts +542 -0
  429. package/dist/utils/harness/index.d.ts +542 -0
  430. package/dist/utils/harness/index.js +56 -0
  431. package/dist/utils/harness/index.js.map +1 -0
  432. package/dist/utils/index.cjs +17609 -0
  433. package/dist/utils/index.cjs.map +1 -0
  434. package/dist/utils/index.d.cts +96 -0
  435. package/dist/utils/index.d.ts +96 -0
  436. package/dist/utils/index.js +514 -0
  437. package/dist/utils/index.js.map +1 -0
  438. package/dist/utils/inspect/index.cjs +807 -0
  439. package/dist/utils/inspect/index.cjs.map +1 -0
  440. package/dist/utils/inspect/index.d.cts +123 -0
  441. package/dist/utils/inspect/index.d.ts +123 -0
  442. package/dist/utils/inspect/index.js +30 -0
  443. package/dist/utils/inspect/index.js.map +1 -0
  444. package/dist/utils/job-queue/index.cjs +717 -0
  445. package/dist/utils/job-queue/index.cjs.map +1 -0
  446. package/dist/{index-DisjX8a-.d.ts → utils/job-queue/index.d.cts} +5 -26
  447. package/dist/{index-DV_1YuVk.d.cts → utils/job-queue/index.d.ts} +5 -26
  448. package/dist/utils/job-queue/index.js +18 -0
  449. package/dist/utils/job-queue/index.js.map +1 -0
  450. package/dist/utils/memory/index.cjs +1451 -0
  451. package/dist/utils/memory/index.cjs.map +1 -0
  452. package/dist/{index-CZ3r5Rxp.d.ts → utils/memory/index.d.cts} +242 -34
  453. package/dist/{index-B17QddL1.d.cts → utils/memory/index.d.ts} +242 -34
  454. package/dist/utils/memory/index.js +19 -0
  455. package/dist/utils/memory/index.js.map +1 -0
  456. package/dist/utils/messaging/index.cjs +666 -0
  457. package/dist/utils/messaging/index.cjs.map +1 -0
  458. package/dist/utils/messaging/index.d.cts +562 -0
  459. package/dist/utils/messaging/index.d.ts +562 -0
  460. package/dist/utils/messaging/index.js +50 -0
  461. package/dist/utils/messaging/index.js.map +1 -0
  462. package/dist/utils/orchestration/index.cjs +876 -0
  463. package/dist/utils/orchestration/index.cjs.map +1 -0
  464. package/dist/utils/orchestration/index.d.cts +233 -0
  465. package/dist/utils/orchestration/index.d.ts +233 -0
  466. package/dist/utils/orchestration/index.js +19 -0
  467. package/dist/utils/orchestration/index.js.map +1 -0
  468. package/dist/utils/process/index.cjs +743 -0
  469. package/dist/utils/process/index.cjs.map +1 -0
  470. package/dist/{index-p09KSrTN.d.ts → utils/process/index.d.cts} +97 -44
  471. package/dist/{index-CasX6Pfq.d.cts → utils/process/index.d.ts} +97 -44
  472. package/dist/utils/process/index.js +14 -0
  473. package/dist/utils/process/index.js.map +1 -0
  474. package/dist/utils/reactive-layout/index.cjs +1607 -0
  475. package/dist/utils/reactive-layout/index.cjs.map +1 -0
  476. package/dist/{index-B5S8ULbU.d.ts → utils/reactive-layout/index.d.cts} +58 -81
  477. package/dist/{index-Dc4AYqrJ.d.cts → utils/reactive-layout/index.d.ts} +58 -81
  478. package/dist/utils/reactive-layout/index.js +52 -0
  479. package/dist/utils/reactive-layout/index.js.map +1 -0
  480. package/dist/utils/reduction/index.cjs +203 -0
  481. package/dist/utils/reduction/index.cjs.map +1 -0
  482. package/dist/{index-Byu-OpX_.d.ts → utils/reduction/index.d.cts} +6 -17
  483. package/dist/{index-tRCxuAXF.d.cts → utils/reduction/index.d.ts} +6 -17
  484. package/dist/utils/reduction/index.js +14 -0
  485. package/dist/utils/reduction/index.js.map +1 -0
  486. package/dist/utils/resilience/index.cjs +1617 -0
  487. package/dist/utils/resilience/index.cjs.map +1 -0
  488. package/dist/utils/resilience/index.d.cts +9 -0
  489. package/dist/utils/resilience/index.d.ts +9 -0
  490. package/dist/utils/resilience/index.js +44 -0
  491. package/dist/utils/resilience/index.js.map +1 -0
  492. package/dist/utils/surface/index.cjs +1070 -0
  493. package/dist/utils/surface/index.cjs.map +1 -0
  494. package/dist/{index-CYq8vAyV.d.ts → utils/surface/index.d.cts} +7 -58
  495. package/dist/{index-CSOmP7xT.d.cts → utils/surface/index.d.ts} +7 -58
  496. package/dist/utils/surface/index.js +30 -0
  497. package/dist/utils/surface/index.js.map +1 -0
  498. package/dist/utils/topology-view/index.cjs +620 -0
  499. package/dist/utils/topology-view/index.cjs.map +1 -0
  500. package/dist/utils/topology-view/index.d.cts +68 -0
  501. package/dist/utils/topology-view/index.d.ts +68 -0
  502. package/dist/utils/topology-view/index.js +11 -0
  503. package/dist/utils/topology-view/index.js.map +1 -0
  504. package/package.json +664 -584
  505. package/dist/backoff-HPZMEZNF.js +0 -1
  506. package/dist/chunk-2T7U5EU6.js +0 -1
  507. package/dist/chunk-3G5U5QNE.js +0 -5
  508. package/dist/chunk-4VVTGLXJ.js +0 -1
  509. package/dist/chunk-5M4CCMMD.js +0 -45
  510. package/dist/chunk-5QDBSZBV.js +0 -1
  511. package/dist/chunk-5XJ6B66J.js +0 -1
  512. package/dist/chunk-6QZNQS5B.js +0 -1
  513. package/dist/chunk-6X7AFUJV.js +0 -9
  514. package/dist/chunk-7K6PWTDQ.js +0 -1
  515. package/dist/chunk-7LIAPXJB.js +0 -1
  516. package/dist/chunk-7WPU3UHQ.js +0 -1
  517. package/dist/chunk-A5WCQ5NO.js +0 -1
  518. package/dist/chunk-APPIWSGD.js +0 -84
  519. package/dist/chunk-BEZWM2SY.js +0 -1
  520. package/dist/chunk-C72GO4IZ.js +0 -1
  521. package/dist/chunk-CB676TKJ.js +0 -1
  522. package/dist/chunk-CE6TI2TL.js +0 -1
  523. package/dist/chunk-CE72X3WO.js +0 -1
  524. package/dist/chunk-CK2E7BTU.js +0 -1
  525. package/dist/chunk-CLVB32RD.js +0 -1
  526. package/dist/chunk-CRVT7D2P.js +0 -1
  527. package/dist/chunk-D5RFJOZ2.js +0 -1
  528. package/dist/chunk-D7GPHKFH.js +0 -1
  529. package/dist/chunk-DHRX7JX4.js +0 -2
  530. package/dist/chunk-ESMPEKEV.js +0 -1
  531. package/dist/chunk-F672GV32.js +0 -1
  532. package/dist/chunk-FZMYDOWV.js +0 -1
  533. package/dist/chunk-GHBWHMRZ.js +0 -1
  534. package/dist/chunk-GLERH466.js +0 -1
  535. package/dist/chunk-GPW2V3RE.js +0 -1
  536. package/dist/chunk-HIDYF36O.js +0 -1
  537. package/dist/chunk-HITNVN6B.js +0 -3
  538. package/dist/chunk-HY4DJBA7.js +0 -5
  539. package/dist/chunk-KZIEYVXN.js +0 -1
  540. package/dist/chunk-L6NSJVJZ.js +0 -1
  541. package/dist/chunk-N4MQX6JU.js +0 -18
  542. package/dist/chunk-N7FHEL4D.js +0 -1
  543. package/dist/chunk-NTEURFZH.js +0 -1
  544. package/dist/chunk-OIVP6KFV.js +0 -1
  545. package/dist/chunk-OPHBU3LG.js +0 -1
  546. package/dist/chunk-OYQOZP2F.js +0 -5
  547. package/dist/chunk-PTZK576G.js +0 -1
  548. package/dist/chunk-QYADASLV.js +0 -1
  549. package/dist/chunk-ST7UXLWR.js +0 -1
  550. package/dist/chunk-SVY7VUYU.js +0 -1
  551. package/dist/chunk-TK3NWWD4.js +0 -1
  552. package/dist/chunk-TSOYJ743.js +0 -1
  553. package/dist/chunk-UNGSTR4X.js +0 -61
  554. package/dist/chunk-VIMF6LGM.js +0 -1
  555. package/dist/chunk-VJLMUKOI.js +0 -1
  556. package/dist/chunk-VN6RDSK2.js +0 -1
  557. package/dist/chunk-VV4N5P64.js +0 -1
  558. package/dist/chunk-W3I423PS.js +0 -1
  559. package/dist/chunk-WJR24TAG.js +0 -1
  560. package/dist/chunk-XTGKMHSW.js +0 -1
  561. package/dist/chunk-YBB7ZGTY.js +0 -1
  562. package/dist/chunk-Z4NPUARF.js +0 -1
  563. package/dist/chunk-ZGNQRPDT.js +0 -1
  564. package/dist/chunk-ZKPSFFKU.js +0 -1
  565. package/dist/chunk-ZLV5SQSX.js +0 -1
  566. package/dist/content-addressed-storage-4-ST1tYk.d.cts +0 -124
  567. package/dist/content-addressed-storage-DuYMjV7o.d.ts +0 -124
  568. package/dist/core/index.cjs +0 -1
  569. package/dist/core/index.d.cts +0 -3
  570. package/dist/core/index.d.ts +0 -3
  571. package/dist/core/index.js +0 -1
  572. package/dist/decay-BvOWTZ00.d.ts +0 -112
  573. package/dist/decay-CFlLvXUT.d.cts +0 -112
  574. package/dist/extra/browser.cjs +0 -1
  575. package/dist/extra/browser.d.cts +0 -4
  576. package/dist/extra/browser.d.ts +0 -4
  577. package/dist/extra/browser.js +0 -1
  578. package/dist/extra/index.cjs +0 -20
  579. package/dist/extra/index.d.cts +0 -17
  580. package/dist/extra/index.d.ts +0 -17
  581. package/dist/extra/index.js +0 -1
  582. package/dist/extra/node.cjs +0 -2
  583. package/dist/extra/node.js +0 -2
  584. package/dist/extra/operators.cjs +0 -1
  585. package/dist/extra/operators.d.cts +0 -958
  586. package/dist/extra/operators.d.ts +0 -958
  587. package/dist/extra/operators.js +0 -1
  588. package/dist/extra/reactive.cjs +0 -1
  589. package/dist/extra/reactive.d.cts +0 -353
  590. package/dist/extra/reactive.d.ts +0 -353
  591. package/dist/extra/reactive.js +0 -1
  592. package/dist/extra/render/index.cjs +0 -5
  593. package/dist/extra/render/index.js +0 -1
  594. package/dist/extra/sources.cjs +0 -3
  595. package/dist/extra/sources.js +0 -1
  596. package/dist/extra/storage-browser.cjs +0 -1
  597. package/dist/extra/storage-browser.d.cts +0 -37
  598. package/dist/extra/storage-browser.d.ts +0 -37
  599. package/dist/extra/storage-browser.js +0 -1
  600. package/dist/extra/storage-core.cjs +0 -1
  601. package/dist/extra/storage-core.d.cts +0 -28
  602. package/dist/extra/storage-core.d.ts +0 -28
  603. package/dist/extra/storage-core.js +0 -1
  604. package/dist/extra/storage-node.cjs +0 -1
  605. package/dist/extra/storage-node.d.cts +0 -2
  606. package/dist/extra/storage-node.d.ts +0 -2
  607. package/dist/extra/storage-node.js +0 -0
  608. package/dist/extra/storage-tiers-browser.cjs +0 -1
  609. package/dist/extra/storage-tiers-browser.d.cts +0 -120
  610. package/dist/extra/storage-tiers-browser.d.ts +0 -120
  611. package/dist/extra/storage-tiers-browser.js +0 -1
  612. package/dist/extra/storage-tiers-node.cjs +0 -1
  613. package/dist/extra/storage-tiers-node.d.cts +0 -210
  614. package/dist/extra/storage-tiers-node.d.ts +0 -210
  615. package/dist/extra/storage-tiers-node.js +0 -1
  616. package/dist/extra/storage-tiers.cjs +0 -1
  617. package/dist/extra/storage-tiers.d.cts +0 -412
  618. package/dist/extra/storage-tiers.d.ts +0 -412
  619. package/dist/extra/storage-tiers.js +0 -1
  620. package/dist/graph/index.cjs +0 -7
  621. package/dist/graph/index.d.cts +0 -7
  622. package/dist/graph/index.d.ts +0 -7
  623. package/dist/graph/index.js +0 -1
  624. package/dist/graph-CWvEUQAq.d.cts +0 -1861
  625. package/dist/graph-D9LFnda9.d.ts +0 -1861
  626. package/dist/index-5k1T6jl0.d.cts +0 -121
  627. package/dist/index-9770hRuQ.d.cts +0 -779
  628. package/dist/index-B1F8Enjf.d.ts +0 -704
  629. package/dist/index-BHskSB8v.d.ts +0 -3413
  630. package/dist/index-BIYAkbAi.d.cts +0 -26
  631. package/dist/index-BoJ5JHxI.d.ts +0 -557
  632. package/dist/index-BocU7pqs.d.ts +0 -779
  633. package/dist/index-BxNs2HB9.d.cts +0 -1858
  634. package/dist/index-C1T3d7V-.d.cts +0 -704
  635. package/dist/index-C5ri2Axc.d.cts +0 -301
  636. package/dist/index-C9l6OEBL.d.ts +0 -26
  637. package/dist/index-CC-AvFTy.d.cts +0 -557
  638. package/dist/index-CJF1URuX.d.ts +0 -121
  639. package/dist/index-CdTelp1M.d.ts +0 -202
  640. package/dist/index-Cj3WohTd.d.cts +0 -202
  641. package/dist/index-Co7uli2l.d.cts +0 -3413
  642. package/dist/index-D0aciIex.d.cts +0 -209
  643. package/dist/index-DHen9Klo.d.ts +0 -1858
  644. package/dist/index-Yq60JP3s.d.ts +0 -209
  645. package/dist/index-nozs3fFC.d.ts +0 -301
  646. package/dist/node-kK3CvTrR.d.cts +0 -1347
  647. package/dist/node-kK3CvTrR.d.ts +0 -1347
  648. package/dist/patterns/ai/browser.cjs +0 -8
  649. package/dist/patterns/ai/browser.js +0 -3
  650. package/dist/patterns/ai/index.cjs +0 -74
  651. package/dist/patterns/ai/index.d.cts +0 -20
  652. package/dist/patterns/ai/index.d.ts +0 -20
  653. package/dist/patterns/ai/index.js +0 -1
  654. package/dist/patterns/ai/node.cjs +0 -1
  655. package/dist/patterns/ai/node.js +0 -1
  656. package/dist/patterns/cqrs/index.cjs +0 -3
  657. package/dist/patterns/cqrs/index.d.cts +0 -8
  658. package/dist/patterns/cqrs/index.d.ts +0 -8
  659. package/dist/patterns/cqrs/index.js +0 -1
  660. package/dist/patterns/demo-shell/index.cjs +0 -5
  661. package/dist/patterns/demo-shell/index.d.cts +0 -7
  662. package/dist/patterns/demo-shell/index.d.ts +0 -7
  663. package/dist/patterns/demo-shell/index.js +0 -1
  664. package/dist/patterns/domain-templates/index.cjs +0 -3
  665. package/dist/patterns/domain-templates/index.d.cts +0 -6
  666. package/dist/patterns/domain-templates/index.d.ts +0 -6
  667. package/dist/patterns/domain-templates/index.js +0 -1
  668. package/dist/patterns/graphspec/index.cjs +0 -86
  669. package/dist/patterns/graphspec/index.d.cts +0 -8
  670. package/dist/patterns/graphspec/index.d.ts +0 -8
  671. package/dist/patterns/graphspec/index.js +0 -1
  672. package/dist/patterns/harness/index.cjs +0 -48
  673. package/dist/patterns/harness/index.d.cts +0 -13
  674. package/dist/patterns/harness/index.d.ts +0 -13
  675. package/dist/patterns/harness/index.js +0 -1
  676. package/dist/patterns/inspect/index.cjs +0 -3
  677. package/dist/patterns/inspect/index.d.cts +0 -9
  678. package/dist/patterns/inspect/index.d.ts +0 -9
  679. package/dist/patterns/inspect/index.js +0 -1
  680. package/dist/patterns/job-queue/index.cjs +0 -3
  681. package/dist/patterns/job-queue/index.d.cts +0 -9
  682. package/dist/patterns/job-queue/index.d.ts +0 -9
  683. package/dist/patterns/job-queue/index.js +0 -1
  684. package/dist/patterns/memory/index.cjs +0 -3
  685. package/dist/patterns/memory/index.d.cts +0 -8
  686. package/dist/patterns/memory/index.d.ts +0 -8
  687. package/dist/patterns/memory/index.js +0 -1
  688. package/dist/patterns/messaging/index.cjs +0 -3
  689. package/dist/patterns/messaging/index.d.cts +0 -7
  690. package/dist/patterns/messaging/index.d.ts +0 -7
  691. package/dist/patterns/messaging/index.js +0 -1
  692. package/dist/patterns/orchestration/index.cjs +0 -3
  693. package/dist/patterns/orchestration/index.d.cts +0 -8
  694. package/dist/patterns/orchestration/index.d.ts +0 -8
  695. package/dist/patterns/orchestration/index.js +0 -1
  696. package/dist/patterns/process/index.cjs +0 -3
  697. package/dist/patterns/process/index.d.cts +0 -10
  698. package/dist/patterns/process/index.d.ts +0 -10
  699. package/dist/patterns/process/index.js +0 -1
  700. package/dist/patterns/reactive-layout/index.cjs +0 -4
  701. package/dist/patterns/reactive-layout/index.d.cts +0 -7
  702. package/dist/patterns/reactive-layout/index.d.ts +0 -7
  703. package/dist/patterns/reactive-layout/index.js +0 -1
  704. package/dist/patterns/reduction/index.cjs +0 -3
  705. package/dist/patterns/reduction/index.d.cts +0 -6
  706. package/dist/patterns/reduction/index.d.ts +0 -6
  707. package/dist/patterns/reduction/index.js +0 -1
  708. package/dist/patterns/surface/index.cjs +0 -13
  709. package/dist/patterns/surface/index.d.cts +0 -9
  710. package/dist/patterns/surface/index.d.ts +0 -9
  711. package/dist/patterns/surface/index.js +0 -1
  712. package/dist/reactive-log-BKALbfal.d.ts +0 -223
  713. package/dist/reactive-log-DIGdYqQ6.d.cts +0 -223
  714. package/dist/reactive-map-CEFGp8TK.d.cts +0 -296
  715. package/dist/reactive-map-DS_SIAxv.d.ts +0 -296
  716. package/dist/resilience-6LYQJAC5.js +0 -1
  717. package/dist/sugar-DQjFmVqb.d.cts +0 -399
  718. package/dist/sugar-fhLIE7TT.d.ts +0 -399
  719. package/dist/topology-tree-Bcz27hpF.d.cts +0 -25
  720. package/dist/topology-tree-xvaD0fOX.d.ts +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/topology-view/index.ts","../../../src/base/render/_layout-sugiyama.ts","../../../src/utils/topology-view/_internal.ts"],"sourcesContent":["/**\n * `topologyView({ graph, layout? }): TopologyViewGraph` — D3 of the\n * three-layer view (`docs/optimizations.md` line \"D — Three-layer view\").\n *\n * Composes a target {@link Graph} with a pluggable layered-DAG layout into a\n * live {@link LayoutFrame} stream:\n *\n * ```text\n * target graph\n * └─ observe({ changeset: true }) → Node<GraphChange>\n * └─ filter(topology) → recompute layout\n * └─ each change → merge into a LayoutFrame\n * ```\n *\n * **Initial frame** is delivered on subscribe (push-on-subscribe per spec\n * §2.2) — the layout is seeded from `graph.describe()` at construction. A\n * consumer that wants deltas only can `pipe(skip(1))` from the output node.\n *\n * **Pluggable layout** — pass `opts.layout` to swap in `dagre`, `elk`, or\n * any layered-DAG library. The default is a minimal Sugiyama in\n * `_internal.ts` (matches the library's \"no deps, browser-safe\" ethos).\n *\n * **No timers** — animation is driven by the changeset's batch boundaries.\n * Each batch IS a frame; CSS transitions handle visual fade.\n *\n * @module\n */\n\nimport type { Node } from \"@graphrefly/pure-ts/core\";\nimport { Graph, type GraphChange, type GraphOptions } from \"@graphrefly/pure-ts/graph\";\nimport { defaultLayout } from \"./_internal.js\";\nimport type { LayoutFn, LayoutFrame } from \"./types.js\";\n\nexport type {\n\tLayoutBox,\n\tLayoutEdge,\n\tLayoutFn,\n\tLayoutFrame,\n} from \"./types.js\";\n\n/** Topology variants from {@link GraphChange} that invalidate layout. */\nconst TOPOLOGY_TYPES = new Set<GraphChange[\"type\"]>([\n\t\"node-added\",\n\t\"node-removed\",\n\t\"mount\",\n\t\"unmount\",\n]);\n\nfunction isTopologyChange(c: GraphChange): boolean {\n\treturn TOPOLOGY_TYPES.has(c.type);\n}\n\n/** Options for {@link topologyView}. */\nexport interface TopologyViewOptions {\n\t/** The target graph to observe. */\n\treadonly graph: Graph;\n\t/**\n\t * Pluggable layout function. Defaults to the bundled Sugiyama layout.\n\t * Adapt `dagre` / `elk` / etc. by wrapping their output in the\n\t * {@link LayoutFn} shape.\n\t */\n\treadonly layout?: LayoutFn;\n\t/** Optional name for the {@link TopologyViewGraph}. Defaults to `\"topology-view\"`. */\n\treadonly name?: string;\n\t/**\n\t * Forward extra options to the underlying {@link Graph} constructor\n\t * (e.g. `versioning`, `traceCapacity`).\n\t */\n\treadonly graphOptions?: GraphOptions;\n}\n\n/**\n * Live topology view — a {@link Graph} subclass that exposes a single\n * output node {@link TopologyViewGraph.frame} emitting {@link LayoutFrame}s.\n */\nexport class TopologyViewGraph extends Graph {\n\treadonly target: Graph;\n\treadonly layout: LayoutFn;\n\treadonly frame: Node<LayoutFrame>;\n\n\tconstructor(opts: TopologyViewOptions) {\n\t\tconst name = opts.name ?? \"topology-view\";\n\t\tsuper(name, opts.graphOptions);\n\t\tthis.target = opts.graph;\n\t\tthis.layout = opts.layout ?? ((spec) => defaultLayout(spec, \"LR\"));\n\n\t\t// 1. Source node — discrete GraphChange events from the target graph.\n\t\t// Every change (data + topology + batch boundaries) flows here.\n\t\tconst changeset = this.target.observe({\n\t\t\tchangeset: true,\n\t\t\tchangesetName: \"target-changeset\",\n\t\t});\n\t\tthis.add(changeset, { name: \"changeset\" });\n\n\t\t// 2. Layout — recomputes only on topology changes. Reads\n\t\t// `target.describe()` inside the fn body — this is a method call on\n\t\t// the stored Graph reference, NOT a `.cache` read of another\n\t\t// reactive node, so it does not violate spec §5.12. Initial value\n\t\t// is seeded from the construction-time describe so the first\n\t\t// push-on-subscribe delivers a valid frame before any change\n\t\t// arrives. `partial: true` opts out of the first-run gate (§2.7) —\n\t\t// the seeded `initial` is correct from construction; we don't need\n\t\t// to wait for the upstream changeset to deliver its first DATA.\n\t\tconst seedLayout = this._computeLayout();\n\t\tconst layoutNode = this.derived<Pick<LayoutFrame, \"boxes\" | \"edges\">>(\n\t\t\t\"layout\",\n\t\t\t[\"changeset\"],\n\t\t\t(data, _ctx) => {\n\t\t\t\tconst batch0 = data[0];\n\t\t\t\tif (batch0 == null || batch0.length === 0) {\n\t\t\t\t\t// No changeset DATA this wave (or this is the seed activation\n\t\t\t\t\t// before changeset has fired). Settle as RESOLVED — caller\n\t\t\t\t\t// will read `prevData[0]` if it needs the current layout.\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tlet topologyHit = false;\n\t\t\t\tfor (const c of batch0 as readonly GraphChange[]) {\n\t\t\t\t\tif (isTopologyChange(c)) {\n\t\t\t\t\t\ttopologyHit = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!topologyHit) {\n\t\t\t\t\t// Data-only wave: keep layout unchanged. The cached layout\n\t\t\t\t\t// (from `initial` or a prior emit) is still valid.\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\treturn [this._computeLayout()];\n\t\t\t},\n\t\t\t{ initial: seedLayout, partial: true },\n\t\t);\n\t\tvoid layoutNode;\n\n\t\t// 3. Frame — merges latest layout with the per-wave changes from the\n\t\t// changeset. Two deps: layout (slow-moving — re-emits only on\n\t\t// topology) and changeset (fast-moving — re-emits per change event).\n\t\t// The fn collapses each wave into one LayoutFrame.\n\t\t//\n\t\t// `partial: true` opts out of the first-run gate so that a\n\t\t// data-only wave (where the layout dep settles RESOLVED but\n\t\t// changeset emits DATA) still triggers fn — without it, frame\n\t\t// would never run for data events because layout settled RESOLVED\n\t\t// and `_depSettledAsResolved` does NOT exit the sentinel state on\n\t\t// a dep, leaving the gate closed indefinitely.\n\t\tthis.frame = this.derived<LayoutFrame>(\n\t\t\t\"frame\",\n\t\t\t[\"layout\", \"changeset\"],\n\t\t\t(data, ctx) => {\n\t\t\t\tconst layoutBatch = data[0];\n\t\t\t\tconst changesetBatch = data[1];\n\t\t\t\tconst layout =\n\t\t\t\t\tlayoutBatch != null && layoutBatch.length > 0\n\t\t\t\t\t\t? (layoutBatch.at(-1) as Pick<LayoutFrame, \"boxes\" | \"edges\">)\n\t\t\t\t\t\t: (ctx.prevData[0] as Pick<LayoutFrame, \"boxes\" | \"edges\"> | undefined);\n\t\t\t\tif (layout == null) {\n\t\t\t\t\t// No layout yet — defer (skip emit). With `initial:` on\n\t\t\t\t\t// `layout`, this should never happen on the activation\n\t\t\t\t\t// wave, but guard for the edge case.\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tconst changes: GraphChange[] = [];\n\t\t\t\tif (changesetBatch != null) {\n\t\t\t\t\tfor (const c of changesetBatch) changes.push(c as GraphChange);\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\tboxes: layout.boxes,\n\t\t\t\t\t\tedges: layout.edges,\n\t\t\t\t\t\tchanges,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t},\n\t\t\t{\n\t\t\t\tinitial: { boxes: seedLayout.boxes, edges: seedLayout.edges, changes: [] },\n\t\t\t\tpartial: true,\n\t\t\t},\n\t\t);\n\n\t\t// No external keepalive — the chain `frame → layout → changeset` is\n\t\t// activated by external subscribers on `frame`. When the last consumer\n\t\t// unsubscribes, the chain tears down and releases the target observe\n\t\t// handle. Producer-bound lifecycle, no leaks.\n\t}\n\n\tprivate _computeLayout(): Pick<LayoutFrame, \"boxes\" | \"edges\"> {\n\t\t// /qa F-5: short-circuit if the target was destroyed. `target.describe()`\n\t\t// on a destroyed graph returns empty topology silently — without this\n\t\t// guard, frame consumers would see a degraded layout (empty boxes /\n\t\t// edges) with no signal that the underlying graph is gone. The COMPLETE\n\t\t// propagation is handled by the changeset stream's teardown variant\n\t\t// flowing through `frame`.\n\t\tif (this.target.destroyed) {\n\t\t\treturn { boxes: [], edges: [] };\n\t\t}\n\t\tconst spec = this.target.describe();\n\t\treturn this.layout(spec);\n\t}\n}\n\n/**\n * Factory wrapper — `topologyView({ graph, layout? })`.\n */\nexport function topologyView(opts: TopologyViewOptions): TopologyViewGraph {\n\tconst view = new TopologyViewGraph(opts);\n\tview.tagFactory(\"topologyView\");\n\treturn view;\n}\n","/**\n * Sugiyama-style layered DAG layout on an integer grid.\n *\n * Pipeline:\n * 1. Longest-path layer assignment (sources at layer 0).\n * 2. Virtual-node splitting — every edge spanning more than one layer\n * becomes a chain of synthetic nodes on intermediate layers. Downstream\n * passes treat real and virtual nodes identically; crossing\n * minimization therefore works on wide + deep DAGs, not only\n * adjacent-layer cases.\n * 3. Crossing minimization — barycenter heuristic with alternating up /\n * down sweeps plus an adjacent-transposition polish pass.\n * 4. Coordinate assignment — greedy median-aligned packing with collision\n * resolution. Straightens vertical runs of virtual nodes so long edges\n * become straight lines where topology allows.\n * 5. Orthogonal edge routing — per-gutter x-track assignment; horizontal\n * segments sit at endpoint centerlines, vertical segments pack into the\n * gutter column range without overlap. Remaining crossings are\n * topologically unavoidable and will render as `┼` at draw time.\n *\n * Output coordinates are cell-grid integers (LR direction). TD rendering\n * swaps axes at draw time — the layout is direction-agnostic by\n * construction.\n *\n * Used only by [graph-spec-to-ascii.ts](./graph-spec-to-ascii.ts); not part of the public\n * `extra/render/index.ts` surface (underscore-prefixed).\n */\n\nexport type LayoutDirection = \"LR\" | \"TD\";\n\nexport type LayoutInput = {\n\t/** Node ids in stable iteration order. Determines initial tie-break. */\n\treadonly nodes: readonly string[];\n\t/** Edges by (from, to) path. Endpoints must be present in `nodes`. */\n\treadonly edges: ReadonlyArray<{ from: string; to: string }>;\n\t/** Label width in cells for each node (independent of direction). */\n\treadonly widthCells: (id: string) => number;\n\t/** Label height in cells for each node (independent of direction). */\n\treadonly heightCells: (id: string) => number;\n\t/**\n\t * Gap between layer \"columns\" (LR) or \"rows\" (TD), in cells.\n\t * Must allow enough room for per-gutter edge tracks.\n\t */\n\treadonly layerGap: number;\n\t/**\n\t * Gap between neighboring nodes *within* a layer, in cells.\n\t * LR: vertical gap; TD: horizontal gap.\n\t */\n\treadonly nodeGap: number;\n\t/**\n\t * Axis orientation. LR: layers = columns (x grows), order = rows (y grows).\n\t * TD: layers = rows (y grows), order = columns (x grows).\n\t */\n\treadonly direction: LayoutDirection;\n};\n\nexport type LayoutBox = {\n\treadonly id: string;\n\treadonly layer: number;\n\treadonly order: number;\n\treadonly x: number;\n\treadonly y: number;\n\treadonly w: number;\n\treadonly h: number;\n};\n\nexport type LayoutEdgePoint = { readonly x: number; readonly y: number };\n\nexport type LayoutEdge = {\n\treadonly from: string;\n\treadonly to: string;\n\t/** Polyline of waypoints (start → corners → end). Minimum 2 entries. */\n\treadonly points: readonly LayoutEdgePoint[];\n};\n\nexport type LayoutResult = {\n\treadonly boxes: readonly LayoutBox[];\n\treadonly edges: readonly LayoutEdge[];\n\treadonly width: number;\n\treadonly height: number;\n};\n\n// ---------------------------------------------------------------------------\n// Internal types — carried through the pipeline\n// ---------------------------------------------------------------------------\n\ntype Hop = {\n\tchainId: number;\n\tchainFrom: string;\n\tchainTo: string;\n\tfromId: string;\n\ttoId: string;\n\t/** 0-based hop index along the chain. */\n\thopIndex: number;\n\t/** Total hops in the chain (1 = direct, 2+ = spans virtuals). */\n\tchainLen: number;\n};\n\ntype InternalNode = {\n\tid: string;\n\tisVirtual: boolean;\n\tlayer: number;\n\torder: number;\n\tx: number;\n\ty: number;\n\tw: number;\n\th: number;\n\tin: Hop[];\n\tout: Hop[];\n};\n\ntype Layer = InternalNode[];\n\ntype PipelineState = {\n\tnodes: Map<string, InternalNode>;\n\tlayers: Layer[];\n\thops: Hop[];\n};\n\n// ---------------------------------------------------------------------------\n// Pipeline entry\n// ---------------------------------------------------------------------------\n\nexport function sugiyamaLayout(input: LayoutInput): LayoutResult {\n\tconst state = buildInitial(input);\n\tassignLayers(state);\n\tinsertVirtualNodes(state);\n\tminimizeCrossings(state);\n\tassignCoordinates(state, input);\n\tconst edges = routeEdges(state, input);\n\tconst { width, height } = boundingBox(state);\n\tconst boxes: LayoutBox[] = [];\n\tfor (const layer of state.layers) {\n\t\tfor (const n of layer) {\n\t\t\tif (n.isVirtual) continue;\n\t\t\tboxes.push({\n\t\t\t\tid: n.id,\n\t\t\t\tlayer: n.layer,\n\t\t\t\torder: n.order,\n\t\t\t\tx: n.x,\n\t\t\t\ty: n.y,\n\t\t\t\tw: n.w,\n\t\t\t\th: n.h,\n\t\t\t});\n\t\t}\n\t}\n\treturn { boxes, edges, width, height };\n}\n\n// ---------------------------------------------------------------------------\n// 1. Build internal graph\n// ---------------------------------------------------------------------------\n\nfunction buildInitial(input: LayoutInput): PipelineState {\n\tconst nodes = new Map<string, InternalNode>();\n\tfor (const id of input.nodes) {\n\t\tnodes.set(id, {\n\t\t\tid,\n\t\t\tisVirtual: false,\n\t\t\tlayer: -1,\n\t\t\torder: 0,\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tw: input.widthCells(id),\n\t\t\th: input.heightCells(id),\n\t\t\tin: [],\n\t\t\tout: [],\n\t\t});\n\t}\n\tconst hops: Hop[] = [];\n\tlet chainId = 0;\n\tfor (const e of input.edges) {\n\t\tif (e.from === e.to) continue; // drop self-loops\n\t\tconst f = nodes.get(e.from);\n\t\tconst t = nodes.get(e.to);\n\t\tif (!f || !t) continue; // drop dangling endpoints\n\t\tconst hop: Hop = {\n\t\t\tchainId: chainId++,\n\t\t\tchainFrom: e.from,\n\t\t\tchainTo: e.to,\n\t\t\tfromId: e.from,\n\t\t\ttoId: e.to,\n\t\t\thopIndex: 0,\n\t\t\tchainLen: 1,\n\t\t};\n\t\tf.out.push(hop);\n\t\tt.in.push(hop);\n\t\thops.push(hop);\n\t}\n\treturn { nodes, layers: [], hops };\n}\n\n// ---------------------------------------------------------------------------\n// 2. Longest-path layer assignment (Kahn's algorithm)\n// ---------------------------------------------------------------------------\n\nfunction assignLayers(state: PipelineState): void {\n\tconst indeg = new Map<string, number>();\n\tfor (const n of state.nodes.values()) indeg.set(n.id, n.in.length);\n\n\tconst queue: InternalNode[] = [];\n\tfor (const n of state.nodes.values()) {\n\t\tif ((indeg.get(n.id) ?? 0) === 0) {\n\t\t\tn.layer = 0;\n\t\t\tqueue.push(n);\n\t\t}\n\t}\n\n\t// Cursor-based BFS — `Array.prototype.shift` is O(n), so the naive form\n\t// is O(n²) and degrades past ~1000 nodes. Cursor keeps it linear.\n\tconst visited = new Set<string>();\n\tlet head = 0;\n\twhile (head < queue.length) {\n\t\tconst n = queue[head++]!;\n\t\tif (visited.has(n.id)) continue;\n\t\tvisited.add(n.id);\n\t\tfor (const hop of n.out) {\n\t\t\tconst t = state.nodes.get(hop.toId)!;\n\t\t\tt.layer = Math.max(t.layer, n.layer + 1);\n\t\t\tconst d = (indeg.get(t.id) ?? 0) - 1;\n\t\t\tindeg.set(t.id, d);\n\t\t\tif (d <= 0) queue.push(t);\n\t\t}\n\t}\n\t// Nodes trapped in a cycle default to layer 0. The edges that would\n\t// close the cycle are dropped in `insertVirtualNodes` (any hop whose\n\t// span is not a positive integer). GraphReFly graphs are DAGs by spec;\n\t// this path is defensive against malformed describe snapshots.\n\tfor (const n of state.nodes.values()) if (n.layer < 0) n.layer = 0;\n}\n\n// ---------------------------------------------------------------------------\n// 3. Virtual-node insertion — critical for scaling past adjacent-layer edges\n// ---------------------------------------------------------------------------\n\nfunction insertVirtualNodes(state: PipelineState): void {\n\tconst maxLayer = Math.max(0, ...Array.from(state.nodes.values(), (n) => n.layer));\n\tconst layers: Layer[] = Array.from({ length: maxLayer + 1 }, () => []);\n\tfor (const n of state.nodes.values()) layers[n.layer]!.push(n);\n\n\tconst newHops: Hop[] = [];\n\tlet virtCounter = 0;\n\tfor (const hop of state.hops) {\n\t\tconst f = state.nodes.get(hop.fromId)!;\n\t\tconst t = state.nodes.get(hop.toId)!;\n\t\tconst span = t.layer - f.layer;\n\t\tif (span <= 0) {\n\t\t\t// Same-layer or back-edge — the input violated the DAG invariant\n\t\t\t// (self-loop was already dropped in `buildInitial`; this catches\n\t\t\t// cycles whose nodes collapsed to layer 0 in `assignLayers`).\n\t\t\t// Drop from both endpoints so routing never sees the hop; same\n\t\t\t// render-best-effort policy as the self-loop / dangling-endpoint\n\t\t\t// filters in `buildInitial`.\n\t\t\tf.out = f.out.filter((h) => h !== hop);\n\t\t\tt.in = t.in.filter((h) => h !== hop);\n\t\t\tcontinue;\n\t\t}\n\t\tif (span === 1) {\n\t\t\thop.hopIndex = 0;\n\t\t\thop.chainLen = 1;\n\t\t\tnewHops.push(hop);\n\t\t\tcontinue;\n\t\t}\n\t\t// Multi-hop: f → v1 → v2 → ... → t\n\t\t// Detach the original edge from f.out / t.in; we rewrite as chain.\n\t\tf.out = f.out.filter((h) => h !== hop);\n\t\tt.in = t.in.filter((h) => h !== hop);\n\n\t\tlet prev = f;\n\t\tfor (let i = 1; i < span; i += 1) {\n\t\t\tconst vid = `__virt_${virtCounter++}__`;\n\t\t\tconst v: InternalNode = {\n\t\t\t\tid: vid,\n\t\t\t\tisVirtual: true,\n\t\t\t\tlayer: f.layer + i,\n\t\t\t\torder: 0,\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tw: 0,\n\t\t\t\th: 1,\n\t\t\t\tin: [],\n\t\t\t\tout: [],\n\t\t\t};\n\t\t\tstate.nodes.set(vid, v);\n\t\t\tlayers[v.layer]!.push(v);\n\t\t\tconst h: Hop = {\n\t\t\t\tchainId: hop.chainId,\n\t\t\t\tchainFrom: hop.chainFrom,\n\t\t\t\tchainTo: hop.chainTo,\n\t\t\t\tfromId: prev.id,\n\t\t\t\ttoId: vid,\n\t\t\t\thopIndex: i - 1,\n\t\t\t\tchainLen: span,\n\t\t\t};\n\t\t\tprev.out.push(h);\n\t\t\tv.in.push(h);\n\t\t\tnewHops.push(h);\n\t\t\tprev = v;\n\t\t}\n\t\tconst finalHop: Hop = {\n\t\t\tchainId: hop.chainId,\n\t\t\tchainFrom: hop.chainFrom,\n\t\t\tchainTo: hop.chainTo,\n\t\t\tfromId: prev.id,\n\t\t\ttoId: t.id,\n\t\t\thopIndex: span - 1,\n\t\t\tchainLen: span,\n\t\t};\n\t\tprev.out.push(finalHop);\n\t\tt.in.push(finalHop);\n\t\tnewHops.push(finalHop);\n\t}\n\n\t// Stable initial order within each layer.\n\tfor (const layer of layers) {\n\t\tfor (let i = 0; i < layer.length; i += 1) layer[i]!.order = i;\n\t}\n\tstate.layers = layers;\n\tstate.hops = newHops;\n}\n\n// ---------------------------------------------------------------------------\n// 4. Crossing minimization\n// ---------------------------------------------------------------------------\n\nfunction minimizeCrossings(state: PipelineState): void {\n\tconst SWEEPS = 4;\n\tfor (let sweep = 0; sweep < SWEEPS; sweep += 1) {\n\t\t// Down-sweep\n\t\tfor (let li = 1; li < state.layers.length; li += 1) {\n\t\t\tsortByBarycenter(state, state.layers[li]!, \"in\");\n\t\t\treindex(state.layers[li]!);\n\t\t}\n\t\t// Up-sweep\n\t\tfor (let li = state.layers.length - 2; li >= 0; li -= 1) {\n\t\t\tsortByBarycenter(state, state.layers[li]!, \"out\");\n\t\t\treindex(state.layers[li]!);\n\t\t}\n\t}\n\t// Polish — adjacent-transposition pass, bounded iterations.\n\tfor (let iter = 0; iter < 2; iter += 1) {\n\t\tlet improved = false;\n\t\tfor (let li = 1; li < state.layers.length; li += 1) {\n\t\t\tconst layer = state.layers[li]!;\n\t\t\tfor (let i = 0; i + 1 < layer.length; i += 1) {\n\t\t\t\tconst before = pairCrossings(state, layer[i]!, layer[i + 1]!, \"in\");\n\t\t\t\t[layer[i], layer[i + 1]] = [layer[i + 1]!, layer[i]!];\n\t\t\t\treindex(layer);\n\t\t\t\tconst after = pairCrossings(state, layer[i]!, layer[i + 1]!, \"in\");\n\t\t\t\tif (after < before) {\n\t\t\t\t\timproved = true;\n\t\t\t\t} else {\n\t\t\t\t\t[layer[i], layer[i + 1]] = [layer[i + 1]!, layer[i]!];\n\t\t\t\t\treindex(layer);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!improved) break;\n\t}\n}\n\nfunction sortByBarycenter(state: PipelineState, layer: Layer, direction: \"in\" | \"out\"): void {\n\tconst bary = new Map<string, number>();\n\tfor (const n of layer) {\n\t\tconst neighbors = direction === \"in\" ? n.in : n.out;\n\t\tif (neighbors.length === 0) {\n\t\t\tbary.set(n.id, n.order);\n\t\t\tcontinue;\n\t\t}\n\t\tlet sum = 0;\n\t\tlet count = 0;\n\t\tfor (const h of neighbors) {\n\t\t\tconst other = state.nodes.get(direction === \"in\" ? h.fromId : h.toId);\n\t\t\tif (!other) continue;\n\t\t\tsum += other.order;\n\t\t\tcount += 1;\n\t\t}\n\t\tbary.set(n.id, count === 0 ? n.order : sum / count);\n\t}\n\tlayer.sort((a, b) => {\n\t\tconst ba = bary.get(a.id)!;\n\t\tconst bb = bary.get(b.id)!;\n\t\tif (ba !== bb) return ba - bb;\n\t\treturn a.order - b.order;\n\t});\n}\n\nfunction reindex(layer: Layer): void {\n\tfor (let i = 0; i < layer.length; i += 1) layer[i]!.order = i;\n}\n\nfunction pairCrossings(\n\tstate: PipelineState,\n\ta: InternalNode,\n\tb: InternalNode,\n\tdirection: \"in\" | \"out\",\n): number {\n\tconst aEdges = direction === \"in\" ? a.in : a.out;\n\tconst bEdges = direction === \"in\" ? b.in : b.out;\n\tlet crossings = 0;\n\tfor (const ea of aEdges) {\n\t\tfor (const eb of bEdges) {\n\t\t\tconst oa = state.nodes.get(direction === \"in\" ? ea.fromId : ea.toId)?.order ?? 0;\n\t\t\tconst ob = state.nodes.get(direction === \"in\" ? eb.fromId : eb.toId)?.order ?? 0;\n\t\t\tif ((a.order < b.order && oa > ob) || (a.order > b.order && oa < ob)) {\n\t\t\t\tcrossings += 1;\n\t\t\t}\n\t\t}\n\t}\n\treturn crossings;\n}\n\n// ---------------------------------------------------------------------------\n// 5. Coordinate assignment (direction-aware)\n// ---------------------------------------------------------------------------\n\nfunction assignCoordinates(state: PipelineState, input: LayoutInput): void {\n\tif (input.direction === \"LR\") assignCoordinatesLR(state, input);\n\telse assignCoordinatesTD(state, input);\n}\n\nfunction assignCoordinatesLR(state: PipelineState, input: LayoutInput): void {\n\t// x: per-layer column based on cumulative max width.\n\tconst layerX: number[] = [];\n\tlet cursorX = 0;\n\tfor (let li = 0; li < state.layers.length; li += 1) {\n\t\tlayerX.push(cursorX);\n\t\tlet maxW = 0;\n\t\tfor (const n of state.layers[li]!) maxW = Math.max(maxW, n.w);\n\t\tcursorX += maxW + input.layerGap;\n\t}\n\tfor (let li = 0; li < state.layers.length; li += 1) {\n\t\tfor (const n of state.layers[li]!) n.x = layerX[li]!;\n\t}\n\t// y: greedy pack per layer.\n\tfor (const layer of state.layers) {\n\t\tlet y = 0;\n\t\tfor (const n of layer) {\n\t\t\tn.y = y;\n\t\t\ty += n.h + input.nodeGap;\n\t\t}\n\t}\n\t// Median alignment — straightens chains through virtuals.\n\trunMedianPasses(state, input, \"y\");\n}\n\nfunction assignCoordinatesTD(state: PipelineState, input: LayoutInput): void {\n\t// y: per-layer row based on cumulative max height.\n\tconst layerY: number[] = [];\n\tlet cursorY = 0;\n\tfor (let li = 0; li < state.layers.length; li += 1) {\n\t\tlayerY.push(cursorY);\n\t\tlet maxH = 0;\n\t\tfor (const n of state.layers[li]!) maxH = Math.max(maxH, n.h);\n\t\tcursorY += maxH + input.layerGap;\n\t}\n\tfor (let li = 0; li < state.layers.length; li += 1) {\n\t\tfor (const n of state.layers[li]!) n.y = layerY[li]!;\n\t}\n\t// x: greedy pack per layer.\n\tfor (const layer of state.layers) {\n\t\tlet x = 0;\n\t\tfor (const n of layer) {\n\t\t\tn.x = x;\n\t\t\tx += n.w + input.nodeGap;\n\t\t}\n\t}\n\trunMedianPasses(state, input, \"x\");\n}\n\n/**\n * Median alignment passes — pulls each node toward the median position of\n * its in-layer neighbors along the private axis (\"y\" for LR, \"x\" for TD),\n * then resolves collisions greedily while preserving layer order.\n */\nfunction runMedianPasses(state: PipelineState, input: LayoutInput, axis: \"x\" | \"y\"): void {\n\tconst sizeOf = (n: InternalNode) => (axis === \"y\" ? n.h : n.w);\n\tconst gap = input.nodeGap;\n\tfor (let pass = 0; pass < 2; pass += 1) {\n\t\tconst walk = pass === 0 ? state.layers.slice(1) : state.layers.slice(0, -1).reverse();\n\t\tfor (const layer of walk) {\n\t\t\tconst preferred = new Map<string, number>();\n\t\t\tfor (const n of layer) {\n\t\t\t\tconst neighbors = pass === 0 ? n.in : n.out;\n\t\t\t\tif (neighbors.length === 0) continue;\n\t\t\t\tconst centers: number[] = [];\n\t\t\t\tfor (const h of neighbors) {\n\t\t\t\t\tconst other = state.nodes.get(pass === 0 ? h.fromId : h.toId);\n\t\t\t\t\tif (!other) continue;\n\t\t\t\t\tconst base = axis === \"y\" ? other.y : other.x;\n\t\t\t\t\tcenters.push(base + Math.floor(sizeOf(other) / 2));\n\t\t\t\t}\n\t\t\t\tif (centers.length === 0) continue;\n\t\t\t\tcenters.sort((a, b) => a - b);\n\t\t\t\tconst mid = centers[Math.floor(centers.length / 2)]!;\n\t\t\t\tpreferred.set(n.id, mid - Math.floor(sizeOf(n) / 2));\n\t\t\t}\n\t\t\tlet floor = 0;\n\t\t\tfor (const n of layer) {\n\t\t\t\tconst p = preferred.get(n.id);\n\t\t\t\tconst current = axis === \"y\" ? n.y : n.x;\n\t\t\t\tconst target = p ?? current;\n\t\t\t\tconst clamped = Math.max(target, floor);\n\t\t\t\tif (axis === \"y\") n.y = clamped;\n\t\t\t\telse n.x = clamped;\n\t\t\t\tfloor = clamped + sizeOf(n) + gap;\n\t\t\t}\n\t\t}\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// 6. Orthogonal edge routing (direction-aware)\n//\n// For both LR and TD the algorithm is symmetric — it just operates on a\n// different pair of \"primary\" vs \"cross\" axes:\n//\n// LR: primary = x (layer axis); cross = y. Gutters are vertical strips\n// between columns; tracks within a gutter are distinct x-values.\n// TD: primary = y (layer axis); cross = x. Gutters are horizontal strips\n// between rows; tracks within a gutter are distinct y-values.\n// ---------------------------------------------------------------------------\n\nfunction routeEdges(state: PipelineState, input: LayoutInput): LayoutEdge[] {\n\t// Group hops by chainId → one LayoutEdge per user-facing edge.\n\tconst byChain = new Map<number, Hop[]>();\n\tfor (const h of state.hops) {\n\t\tconst arr = byChain.get(h.chainId);\n\t\tif (arr) arr.push(h);\n\t\telse byChain.set(h.chainId, [h]);\n\t}\n\tfor (const arr of byChain.values()) arr.sort((a, b) => a.hopIndex - b.hopIndex);\n\n\tconst isLR = input.direction === \"LR\";\n\tconst primary = (n: InternalNode): number => (isLR ? n.x : n.y);\n\tconst primarySize = (n: InternalNode): number => (isLR ? n.w : n.h);\n\tconst crossCenter = (n: InternalNode): number =>\n\t\tisLR ? n.y + Math.floor(n.h / 2) : n.x + Math.floor(n.w / 2);\n\n\t// Per-gutter cross-axis track assignment. Two passes:\n\t// 1. Assign each hop to a track INDEX using disjoint-interval packing\n\t// (an existing track may host multiple hops as long as their\n\t// cross-axis ranges don't overlap pairwise).\n\t// 2. Map each track index to a primary-axis position using the final\n\t// track count so the distribution is uniform across the gutter —\n\t// per-hop recomputation (old behavior) collapsed late tracks onto\n\t// `gEnd`, producing bundled overlaps in dense gutters.\n\tconst hopTrackCross = new Map<Hop, number>();\n\tfor (let g = 0; g + 1 < state.layers.length; g += 1) {\n\t\tconst srcLayer = state.layers[g]!;\n\t\tconst dstLayer = state.layers[g + 1]!;\n\n\t\tlet gutterStart = 0;\n\t\tfor (const n of srcLayer) gutterStart = Math.max(gutterStart, primary(n) + primarySize(n));\n\t\tlet gutterEnd = Number.POSITIVE_INFINITY;\n\t\tfor (const n of dstLayer) gutterEnd = Math.min(gutterEnd, primary(n));\n\t\tconst gEnd = Number.isFinite(gutterEnd) ? (gutterEnd as number) - 1 : gutterStart;\n\t\tconst gutterWidth = Math.max(1, gEnd - gutterStart + 1);\n\n\t\tconst gutterHops: Hop[] = [];\n\t\tfor (const n of srcLayer) for (const h of n.out) gutterHops.push(h);\n\t\tgutterHops.sort((a, b) => {\n\t\t\tconst sa = crossCenter(state.nodes.get(a.fromId)!);\n\t\t\tconst sb = crossCenter(state.nodes.get(b.fromId)!);\n\t\t\tif (sa !== sb) return sa - sb;\n\t\t\tconst da = crossCenter(state.nodes.get(a.toId)!);\n\t\t\tconst db = crossCenter(state.nodes.get(b.toId)!);\n\t\t\treturn da - db;\n\t\t});\n\n\t\t// Pass 1: assign track indexes. Each track is an ARRAY of disjoint\n\t\t// intervals — two hops share a track iff their cross-axis ranges\n\t\t// don't overlap any existing interval on that track.\n\t\tconst tracks: Array<Array<{ lo: number; hi: number }>> = [];\n\t\tconst hopToTrackIdx = new Map<Hop, number>();\n\t\tfor (const h of gutterHops) {\n\t\t\tconst sc = crossCenter(state.nodes.get(h.fromId)!);\n\t\t\tconst dc = crossCenter(state.nodes.get(h.toId)!);\n\t\t\tconst lo = Math.min(sc, dc);\n\t\t\tconst hi = Math.max(sc, dc);\n\t\t\tlet idx = -1;\n\t\t\tfor (let t = 0; t < tracks.length; t += 1) {\n\t\t\t\tconst intervals = tracks[t]!;\n\t\t\t\tlet fits = true;\n\t\t\t\tfor (const iv of intervals) {\n\t\t\t\t\tif (iv.lo <= hi && lo <= iv.hi) {\n\t\t\t\t\t\tfits = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (fits) {\n\t\t\t\t\tintervals.push({ lo, hi });\n\t\t\t\t\tidx = t;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (idx < 0) {\n\t\t\t\ttracks.push([{ lo, hi }]);\n\t\t\t\tidx = tracks.length - 1;\n\t\t\t}\n\t\t\thopToTrackIdx.set(h, idx);\n\t\t}\n\n\t\t// Pass 2: distribute track indexes uniformly across the gutter's\n\t\t// **interior** (reserve 1-cell margin from each boundary when the\n\t\t// gutter is wide enough). A track placed exactly at `gutterStart`\n\t\t// or `gEnd` collapses the final turn-segment into the adjacent\n\t\t// node's border row, producing a visually misleading arrow; the\n\t\t// margin avoids that whenever geometry allows.\n\t\tconst count = tracks.length;\n\t\tconst hasMargin = gutterWidth >= Math.max(3, count + 2);\n\t\tconst usableStart = hasMargin ? gutterStart + 1 : gutterStart;\n\t\tconst usableEnd = hasMargin ? gEnd - 1 : gEnd;\n\t\tconst usableWidth = Math.max(1, usableEnd - usableStart + 1);\n\t\tfor (const h of gutterHops) {\n\t\t\tconst idx = hopToTrackIdx.get(h)!;\n\t\t\tlet trackPrimary: number;\n\t\t\tif (count <= 1) {\n\t\t\t\ttrackPrimary = usableStart + Math.floor(usableWidth / 2);\n\t\t\t} else {\n\t\t\t\tconst step = (usableWidth - 1) / (count - 1);\n\t\t\t\ttrackPrimary = usableStart + Math.floor(idx * step);\n\t\t\t}\n\t\t\thopTrackCross.set(h, Math.max(gutterStart, Math.min(gEnd, trackPrimary)));\n\t\t}\n\t}\n\n\t// Build polylines.\n\tconst out: LayoutEdge[] = [];\n\tfor (const [, hops] of byChain) {\n\t\tconst points: LayoutEdgePoint[] = [];\n\t\tfor (let i = 0; i < hops.length; i += 1) {\n\t\t\tconst h = hops[i]!;\n\t\t\tconst src = state.nodes.get(h.fromId)!;\n\t\t\tconst dst = state.nodes.get(h.toId)!;\n\t\t\tconst track = hopTrackCross.get(h)!;\n\t\t\t// Endpoints in (primary, cross) space.\n\t\t\tconst srcPrimary = src.isVirtual ? primary(src) : primary(src) + primarySize(src);\n\t\t\tconst dstPrimary = dst.isVirtual ? primary(dst) : primary(dst) - 1;\n\t\t\tconst sc = crossCenter(src);\n\t\t\tconst dc = crossCenter(dst);\n\t\t\tif (i === 0) pushPoint(points, isLR, srcPrimary, sc);\n\t\t\tif (sc !== dc) {\n\t\t\t\tpushPoint(points, isLR, track, sc);\n\t\t\t\tpushPoint(points, isLR, track, dc);\n\t\t\t}\n\t\t\tpushPoint(points, isLR, dstPrimary, dc);\n\t\t}\n\t\tconst chain = hops[0]!;\n\t\tout.push({\n\t\t\tfrom: chain.chainFrom,\n\t\t\tto: chain.chainTo,\n\t\t\tpoints: dedupWaypoints(points),\n\t\t});\n\t}\n\treturn out;\n}\n\nfunction pushPoint(acc: LayoutEdgePoint[], isLR: boolean, primary: number, cross: number): void {\n\tacc.push(isLR ? { x: primary, y: cross } : { x: cross, y: primary });\n}\n\nfunction dedupWaypoints(points: readonly LayoutEdgePoint[]): LayoutEdgePoint[] {\n\tconst out: LayoutEdgePoint[] = [];\n\tfor (const p of points) {\n\t\tconst last = out[out.length - 1];\n\t\tif (!last || last.x !== p.x || last.y !== p.y) out.push(p);\n\t}\n\treturn out;\n}\n\n// ---------------------------------------------------------------------------\n// Bounding box\n// ---------------------------------------------------------------------------\n\nfunction boundingBox(state: PipelineState): { width: number; height: number } {\n\tlet w = 0;\n\tlet h = 0;\n\tfor (const layer of state.layers) {\n\t\tfor (const n of layer) {\n\t\t\tw = Math.max(w, n.x + n.w);\n\t\t\th = Math.max(h, n.y + n.h);\n\t\t}\n\t}\n\treturn { width: w, height: h };\n}\n","/**\n * Default layout for `topologyView` — wraps the bundled Sugiyama-style layered\n * DAG layout from `extra/render/_layout-sugiyama.ts`.\n *\n * The library ships zero deps and is browser-safe by default; the bundled\n * layout matches that ethos. Users wanting production-quality layout can swap\n * in `dagre`, `elk`, etc. by passing `opts.layout` to {@link topologyView}.\n *\n * Direction-agnostic (defaults to `\"LR\"`). Per-node label sizing is\n * conservative: 1 cell tall, label-length-derived width capped at 24 cells.\n *\n * @module\n */\n\nimport type { GraphDescribeOutput } from \"@graphrefly/pure-ts/graph\";\nimport {\n\ttype LayoutDirection,\n\ttype LayoutEdgePoint,\n\tsugiyamaLayout,\n} from \"../../base/render/_layout-sugiyama.js\";\nimport type { LayoutFn, LayoutFrame } from \"./types.js\";\n\nconst MIN_W = 3;\nconst MAX_W = 24;\nconst NODE_H = 1;\nconst LAYER_GAP = 4;\nconst NODE_GAP = 1;\n\n/**\n * Best-effort label-width estimate (cells). Caller can override by providing\n * its own {@link LayoutFn}; this default treats every visible character as\n * one cell. Local-segment is preferred over qualified path so the label\n * stays compact on cells with deep mounts.\n */\nfunction widthOf(id: string): number {\n\tconst local = id.includes(\"::\") ? (id.split(\"::\").pop() ?? id) : id;\n\treturn Math.max(MIN_W, Math.min(MAX_W, local.length + 2));\n}\n\nfunction heightOf(_id: string): number {\n\treturn NODE_H;\n}\n\n/**\n * Default layered-DAG layout for `topologyView`. Pure fn over a describe\n * snapshot; deterministic for a given input ordering.\n */\nexport function defaultLayout(\n\tspec: GraphDescribeOutput,\n\tdirection: LayoutDirection = \"LR\",\n): Pick<LayoutFrame, \"boxes\" | \"edges\"> {\n\tconst ids = Object.keys(spec.nodes).sort();\n\tconst edges = spec.edges.map((e) => ({ from: e.from, to: e.to }));\n\tif (ids.length === 0) {\n\t\treturn { boxes: [], edges: [] };\n\t}\n\tconst result = sugiyamaLayout({\n\t\tnodes: ids,\n\t\tedges,\n\t\twidthCells: widthOf,\n\t\theightCells: heightOf,\n\t\tlayerGap: LAYER_GAP,\n\t\tnodeGap: NODE_GAP,\n\t\tdirection,\n\t});\n\n\t// Map back to the public LayoutFrame shape, attaching per-node meta from\n\t// the describe snapshot for downstream renderers (kind/factory/domain).\n\tconst boxes = result.boxes.map((b) => ({\n\t\tid: b.id,\n\t\tx: b.x,\n\t\ty: b.y,\n\t\tw: b.w,\n\t\th: b.h,\n\t\tmeta: spec.nodes[b.id]?.meta,\n\t}));\n\n\t// Build a quick \"to → ordered deps\" lookup for `depIndex` attribution. The\n\t// describe snapshot's `nodes[id].deps` is the positional dep array; the\n\t// edge's depIndex is the position of `from` in `to`'s deps.\n\t//\n\t// /qa F-22: when the same upstream appears multiple times in `to.deps`\n\t// (diamond / duplicate-dep patterns), each (from, to) edge gets a distinct\n\t// depIndex via a per-`to` running cursor over occurrences in `toDeps`.\n\tconst seenPerTo = new Map<string, number>();\n\tconst edgeOut = result.edges.map((e) => {\n\t\tconst toDeps = spec.nodes[e.to]?.deps ?? [];\n\t\tconst cursorKey = `${e.to}::${e.from}`;\n\t\tconst startFrom = seenPerTo.get(cursorKey) ?? 0;\n\t\tconst depIndex = toDeps.indexOf(e.from, startFrom);\n\t\tseenPerTo.set(cursorKey, depIndex >= 0 ? depIndex + 1 : startFrom);\n\t\tconst points = e.points.map((p: LayoutEdgePoint) => [p.x, p.y] as const);\n\t\treturn {\n\t\t\tfrom: e.from,\n\t\t\tto: e.to,\n\t\t\tdepIndex: depIndex >= 0 ? depIndex : -1,\n\t\t\tpoints: points as ReadonlyArray<readonly [number, number]>,\n\t\t};\n\t});\n\n\treturn { boxes, edges: edgeOut };\n}\n\n/** Adapter — narrows `defaultLayout` to the {@link LayoutFn} signature. */\nexport const defaultLayoutFn: LayoutFn = (spec) => defaultLayout(spec, \"LR\");\n"],"mappings":"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","names":[]}
@@ -0,0 +1,68 @@
1
+ import { Node } from '@graphrefly/pure-ts/core';
2
+ import { Graph, GraphOptions } from '@graphrefly/pure-ts/graph';
3
+ import { b as LayoutFn, c as LayoutFrame } from '../../layout-types-B5aiHYgk.cjs';
4
+ export { L as LayoutBox, a as LayoutEdge } from '../../layout-types-B5aiHYgk.cjs';
5
+
6
+ /**
7
+ * `topologyView({ graph, layout? }): TopologyViewGraph` — D3 of the
8
+ * three-layer view (`docs/optimizations.md` line "D — Three-layer view").
9
+ *
10
+ * Composes a target {@link Graph} with a pluggable layered-DAG layout into a
11
+ * live {@link LayoutFrame} stream:
12
+ *
13
+ * ```text
14
+ * target graph
15
+ * └─ observe({ changeset: true }) → Node<GraphChange>
16
+ * └─ filter(topology) → recompute layout
17
+ * └─ each change → merge into a LayoutFrame
18
+ * ```
19
+ *
20
+ * **Initial frame** is delivered on subscribe (push-on-subscribe per spec
21
+ * §2.2) — the layout is seeded from `graph.describe()` at construction. A
22
+ * consumer that wants deltas only can `pipe(skip(1))` from the output node.
23
+ *
24
+ * **Pluggable layout** — pass `opts.layout` to swap in `dagre`, `elk`, or
25
+ * any layered-DAG library. The default is a minimal Sugiyama in
26
+ * `_internal.ts` (matches the library's "no deps, browser-safe" ethos).
27
+ *
28
+ * **No timers** — animation is driven by the changeset's batch boundaries.
29
+ * Each batch IS a frame; CSS transitions handle visual fade.
30
+ *
31
+ * @module
32
+ */
33
+
34
+ /** Options for {@link topologyView}. */
35
+ interface TopologyViewOptions {
36
+ /** The target graph to observe. */
37
+ readonly graph: Graph;
38
+ /**
39
+ * Pluggable layout function. Defaults to the bundled Sugiyama layout.
40
+ * Adapt `dagre` / `elk` / etc. by wrapping their output in the
41
+ * {@link LayoutFn} shape.
42
+ */
43
+ readonly layout?: LayoutFn;
44
+ /** Optional name for the {@link TopologyViewGraph}. Defaults to `"topology-view"`. */
45
+ readonly name?: string;
46
+ /**
47
+ * Forward extra options to the underlying {@link Graph} constructor
48
+ * (e.g. `versioning`, `traceCapacity`).
49
+ */
50
+ readonly graphOptions?: GraphOptions;
51
+ }
52
+ /**
53
+ * Live topology view — a {@link Graph} subclass that exposes a single
54
+ * output node {@link TopologyViewGraph.frame} emitting {@link LayoutFrame}s.
55
+ */
56
+ declare class TopologyViewGraph extends Graph {
57
+ readonly target: Graph;
58
+ readonly layout: LayoutFn;
59
+ readonly frame: Node<LayoutFrame>;
60
+ constructor(opts: TopologyViewOptions);
61
+ private _computeLayout;
62
+ }
63
+ /**
64
+ * Factory wrapper — `topologyView({ graph, layout? })`.
65
+ */
66
+ declare function topologyView(opts: TopologyViewOptions): TopologyViewGraph;
67
+
68
+ export { LayoutFn, LayoutFrame, TopologyViewGraph, type TopologyViewOptions, topologyView };
@@ -0,0 +1,68 @@
1
+ import { Node } from '@graphrefly/pure-ts/core';
2
+ import { Graph, GraphOptions } from '@graphrefly/pure-ts/graph';
3
+ import { b as LayoutFn, c as LayoutFrame } from '../../layout-types-B5aiHYgk.js';
4
+ export { L as LayoutBox, a as LayoutEdge } from '../../layout-types-B5aiHYgk.js';
5
+
6
+ /**
7
+ * `topologyView({ graph, layout? }): TopologyViewGraph` — D3 of the
8
+ * three-layer view (`docs/optimizations.md` line "D — Three-layer view").
9
+ *
10
+ * Composes a target {@link Graph} with a pluggable layered-DAG layout into a
11
+ * live {@link LayoutFrame} stream:
12
+ *
13
+ * ```text
14
+ * target graph
15
+ * └─ observe({ changeset: true }) → Node<GraphChange>
16
+ * └─ filter(topology) → recompute layout
17
+ * └─ each change → merge into a LayoutFrame
18
+ * ```
19
+ *
20
+ * **Initial frame** is delivered on subscribe (push-on-subscribe per spec
21
+ * §2.2) — the layout is seeded from `graph.describe()` at construction. A
22
+ * consumer that wants deltas only can `pipe(skip(1))` from the output node.
23
+ *
24
+ * **Pluggable layout** — pass `opts.layout` to swap in `dagre`, `elk`, or
25
+ * any layered-DAG library. The default is a minimal Sugiyama in
26
+ * `_internal.ts` (matches the library's "no deps, browser-safe" ethos).
27
+ *
28
+ * **No timers** — animation is driven by the changeset's batch boundaries.
29
+ * Each batch IS a frame; CSS transitions handle visual fade.
30
+ *
31
+ * @module
32
+ */
33
+
34
+ /** Options for {@link topologyView}. */
35
+ interface TopologyViewOptions {
36
+ /** The target graph to observe. */
37
+ readonly graph: Graph;
38
+ /**
39
+ * Pluggable layout function. Defaults to the bundled Sugiyama layout.
40
+ * Adapt `dagre` / `elk` / etc. by wrapping their output in the
41
+ * {@link LayoutFn} shape.
42
+ */
43
+ readonly layout?: LayoutFn;
44
+ /** Optional name for the {@link TopologyViewGraph}. Defaults to `"topology-view"`. */
45
+ readonly name?: string;
46
+ /**
47
+ * Forward extra options to the underlying {@link Graph} constructor
48
+ * (e.g. `versioning`, `traceCapacity`).
49
+ */
50
+ readonly graphOptions?: GraphOptions;
51
+ }
52
+ /**
53
+ * Live topology view — a {@link Graph} subclass that exposes a single
54
+ * output node {@link TopologyViewGraph.frame} emitting {@link LayoutFrame}s.
55
+ */
56
+ declare class TopologyViewGraph extends Graph {
57
+ readonly target: Graph;
58
+ readonly layout: LayoutFn;
59
+ readonly frame: Node<LayoutFrame>;
60
+ constructor(opts: TopologyViewOptions);
61
+ private _computeLayout;
62
+ }
63
+ /**
64
+ * Factory wrapper — `topologyView({ graph, layout? })`.
65
+ */
66
+ declare function topologyView(opts: TopologyViewOptions): TopologyViewGraph;
67
+
68
+ export { LayoutFn, LayoutFrame, TopologyViewGraph, type TopologyViewOptions, topologyView };
@@ -0,0 +1,11 @@
1
+ import {
2
+ TopologyViewGraph,
3
+ topologyView
4
+ } from "../../chunk-APY2SS5X.js";
5
+ import "../../chunk-DMSNO6ZB.js";
6
+ import "../../chunk-AZDQPQ3V.js";
7
+ export {
8
+ TopologyViewGraph,
9
+ topologyView
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}