@graphrefly/graphrefly 0.27.0 → 0.29.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 (428) hide show
  1. package/dist/backoff-HPZMEZNF.js +1 -0
  2. package/dist/cascading-Bp99ckMJ.d.ts +180 -0
  3. package/dist/cascading-CcAgRacD.d.cts +180 -0
  4. package/dist/chunk-22F4K3G7.js +1 -0
  5. package/dist/chunk-22SVXUPB.js +64 -0
  6. package/dist/chunk-2GQREQ6C.js +1 -0
  7. package/dist/chunk-3JXNEPCD.js +2 -0
  8. package/dist/chunk-4JJCCD5S.js +2 -0
  9. package/dist/chunk-4OFIQ66T.js +1 -0
  10. package/dist/chunk-4V4C7K56.js +1 -0
  11. package/dist/chunk-4VVTGLXJ.js +1 -0
  12. package/dist/chunk-567NWZ3T.js +1 -0
  13. package/dist/chunk-5JDE5JHE.js +1 -0
  14. package/dist/chunk-5QDBSZBV.js +1 -0
  15. package/dist/chunk-5Z4HDCO6.js +1 -0
  16. package/dist/chunk-63FFOHLA.js +1 -0
  17. package/dist/chunk-6QZNQS5B.js +1 -0
  18. package/dist/chunk-7JDLFI6N.js +1 -0
  19. package/dist/chunk-7TDOES3L.js +1 -0
  20. package/dist/chunk-A7IAQQ63.js +1 -0
  21. package/dist/chunk-AMG5VBHW.js +1 -0
  22. package/dist/chunk-AUY2YKCO.js +1 -0
  23. package/dist/chunk-AV3PIDFQ.js +1 -0
  24. package/dist/chunk-BA5URFYW.js +1 -0
  25. package/dist/chunk-BKPLTBL5.js +1 -0
  26. package/dist/chunk-BZP5T4X6.js +1 -0
  27. package/dist/chunk-CK2E7BTU.js +1 -0
  28. package/dist/chunk-CSJE2EKV.js +1 -0
  29. package/dist/chunk-E3AXATVZ.js +9 -0
  30. package/dist/chunk-ESMPEKEV.js +1 -0
  31. package/dist/chunk-GJR3P6JG.js +1 -0
  32. package/dist/chunk-GNCBXARM.js +1 -0
  33. package/dist/chunk-GPW2V3RE.js +1 -0
  34. package/dist/chunk-HSIEYSDY.js +1 -0
  35. package/dist/chunk-I6VIH3VA.js +1 -0
  36. package/dist/chunk-ISCENNXS.js +1 -0
  37. package/dist/chunk-JYOUF6UQ.js +1 -0
  38. package/dist/chunk-KASHOCF5.js +1 -0
  39. package/dist/chunk-LGSNR4LU.js +5 -0
  40. package/dist/chunk-LVGBLZM2.js +1 -0
  41. package/dist/chunk-MGKAO4EK.js +7 -0
  42. package/dist/chunk-NSG4C6BF.js +23 -0
  43. package/dist/chunk-OL33ZI6R.js +1 -0
  44. package/dist/chunk-PCZ35NXD.js +78 -0
  45. package/dist/chunk-PGMUCUHG.js +43 -0
  46. package/dist/chunk-QYADASLV.js +1 -0
  47. package/dist/chunk-RD52SNH2.js +1 -0
  48. package/dist/chunk-SLMYTGTU.js +1 -0
  49. package/dist/chunk-TWMEGG45.js +1 -0
  50. package/dist/chunk-UVJQ35G2.js +1 -0
  51. package/dist/chunk-VGTCGNRX.js +18 -0
  52. package/dist/chunk-VIMF6LGM.js +1 -0
  53. package/dist/chunk-VJLMUKOI.js +1 -0
  54. package/dist/chunk-VWPRPPKR.js +1 -0
  55. package/dist/chunk-W4TSQ6RJ.js +1 -0
  56. package/dist/chunk-WM7H7WTY.js +3 -0
  57. package/dist/chunk-Y32RJO24.js +1 -0
  58. package/dist/chunk-Y53B6NS4.js +1 -0
  59. package/dist/compat/index.cjs +15 -7656
  60. package/dist/compat/index.d.cts +15 -14
  61. package/dist/compat/index.d.ts +15 -14
  62. package/dist/compat/index.js +1 -50
  63. package/dist/compat/jotai/index.cjs +1 -2048
  64. package/dist/compat/jotai/index.d.cts +2 -2
  65. package/dist/compat/jotai/index.d.ts +2 -2
  66. package/dist/compat/jotai/index.js +1 -9
  67. package/dist/compat/nanostores/index.cjs +1 -2175
  68. package/dist/compat/nanostores/index.d.cts +2 -2
  69. package/dist/compat/nanostores/index.d.ts +2 -2
  70. package/dist/compat/nanostores/index.js +1 -23
  71. package/dist/compat/nestjs/index.cjs +15 -6782
  72. package/dist/compat/nestjs/index.d.cts +7 -6
  73. package/dist/compat/nestjs/index.d.ts +7 -6
  74. package/dist/compat/nestjs/index.js +1 -83
  75. package/dist/compat/react/index.cjs +1 -141
  76. package/dist/compat/react/index.d.cts +2 -2
  77. package/dist/compat/react/index.d.ts +2 -2
  78. package/dist/compat/react/index.js +1 -12
  79. package/dist/compat/solid/index.cjs +1 -128
  80. package/dist/compat/solid/index.d.cts +2 -2
  81. package/dist/compat/solid/index.d.ts +2 -2
  82. package/dist/compat/solid/index.js +1 -12
  83. package/dist/compat/svelte/index.cjs +1 -131
  84. package/dist/compat/svelte/index.d.cts +2 -2
  85. package/dist/compat/svelte/index.d.ts +2 -2
  86. package/dist/compat/svelte/index.js +1 -12
  87. package/dist/compat/vue/index.cjs +1 -146
  88. package/dist/compat/vue/index.d.cts +2 -2
  89. package/dist/compat/vue/index.d.ts +2 -2
  90. package/dist/compat/vue/index.js +1 -12
  91. package/dist/compat/zustand/index.cjs +7 -4931
  92. package/dist/compat/zustand/index.d.cts +5 -5
  93. package/dist/compat/zustand/index.d.ts +5 -5
  94. package/dist/compat/zustand/index.js +1 -12
  95. package/dist/composite-BL-llbnE.d.ts +69 -0
  96. package/dist/composite-Dze--DaA.d.cts +69 -0
  97. package/dist/core/index.cjs +1 -2271
  98. package/dist/core/index.d.cts +4 -4
  99. package/dist/core/index.d.ts +4 -4
  100. package/dist/core/index.js +1 -110
  101. package/dist/extra/browser.cjs +1 -0
  102. package/dist/extra/browser.d.cts +3 -0
  103. package/dist/extra/browser.d.ts +3 -0
  104. package/dist/extra/browser.js +1 -0
  105. package/dist/extra/index.cjs +24 -9971
  106. package/dist/extra/index.d.cts +13 -6
  107. package/dist/extra/index.d.ts +13 -6
  108. package/dist/extra/index.js +1 -381
  109. package/dist/extra/node.cjs +3 -0
  110. package/dist/extra/node.d.cts +81 -0
  111. package/dist/extra/node.d.ts +81 -0
  112. package/dist/extra/node.js +2 -0
  113. package/dist/extra/operators.cjs +1 -0
  114. package/dist/extra/operators.d.cts +910 -0
  115. package/dist/extra/operators.d.ts +910 -0
  116. package/dist/extra/operators.js +1 -0
  117. package/dist/extra/reactive.cjs +1 -0
  118. package/dist/extra/reactive.d.cts +352 -0
  119. package/dist/extra/reactive.d.ts +352 -0
  120. package/dist/extra/reactive.js +1 -0
  121. package/dist/extra/sources.cjs +1 -2486
  122. package/dist/extra/sources.d.cts +6 -2
  123. package/dist/extra/sources.d.ts +6 -2
  124. package/dist/extra/sources.js +1 -57
  125. package/dist/extra/storage-browser.cjs +1 -0
  126. package/dist/extra/storage-browser.d.cts +71 -0
  127. package/dist/extra/storage-browser.d.ts +71 -0
  128. package/dist/extra/storage-browser.js +1 -0
  129. package/dist/extra/storage-core.cjs +1 -0
  130. package/dist/extra/storage-core.d.cts +98 -0
  131. package/dist/extra/storage-core.d.ts +98 -0
  132. package/dist/extra/storage-core.js +1 -0
  133. package/dist/extra/storage-node.cjs +2 -0
  134. package/dist/extra/storage-node.d.cts +60 -0
  135. package/dist/extra/storage-node.d.ts +60 -0
  136. package/dist/extra/storage-node.js +1 -0
  137. package/dist/fallback-BaTS7vVY.d.cts +258 -0
  138. package/dist/fallback-eOm3LNxP.d.ts +258 -0
  139. package/dist/graph/index.cjs +7 -5030
  140. package/dist/graph/index.d.cts +6 -5
  141. package/dist/graph/index.d.ts +6 -5
  142. package/dist/graph/index.js +1 -50
  143. package/dist/{graph-DNCrvZSn.d.cts → graph-DgohqXK-.d.cts} +151 -32
  144. package/dist/{graph-CCwGKLCm.d.ts → graph-Qjg9gWHI.d.ts} +151 -32
  145. package/dist/{index-BwfLUNw4.d.ts → index-2BVuRCI4.d.ts} +173 -2040
  146. package/dist/{index-BPVt8kqc.d.ts → index-2NvguqQA.d.ts} +10 -195
  147. package/dist/index-A65LZhoM.d.ts +186 -0
  148. package/dist/{index-DlLp-2Xn.d.cts → index-B-8FCEua.d.cts} +10 -195
  149. package/dist/index-B-gqvYel.d.ts +135 -0
  150. package/dist/index-B2PRuolf.d.cts +86 -0
  151. package/dist/index-BJqt9EwW.d.ts +231 -0
  152. package/dist/{index-BHlKbUwO.d.cts → index-BKjT5DiZ.d.cts} +173 -2040
  153. package/dist/{index-C0svESO4.d.ts → index-BM8BU4q6.d.ts} +1 -1
  154. package/dist/{index-VdHQMPy1.d.ts → index-BQaEnxBf.d.ts} +1 -1
  155. package/dist/index-BSfwiy5B.d.ts +192 -0
  156. package/dist/index-BTSkeCZs.d.cts +291 -0
  157. package/dist/index-BUVtw1Ay.d.cts +186 -0
  158. package/dist/index-BUi57v_p.d.ts +163 -0
  159. package/dist/{messaging-Gt4LPbyA.d.cts → index-BanNUILp.d.cts} +31 -93
  160. package/dist/{audit-DRlSzBu9.d.ts → index-BayHDRx6.d.cts} +27 -21
  161. package/dist/{index-B6D3QNSA.d.ts → index-BiyjsZ0m.d.ts} +148 -20
  162. package/dist/index-BqZ6vB2A.d.ts +2057 -0
  163. package/dist/{memory-li6FL5RM.d.ts → index-BuVidq3D.d.cts} +26 -26
  164. package/dist/index-Byh-xTyp.d.ts +105 -0
  165. package/dist/index-C08QPDcV.d.cts +321 -0
  166. package/dist/{demo-shell-BDkOptd6.d.ts → index-C66RJiX8.d.ts} +14 -14
  167. package/dist/index-C8RfjffH.d.ts +291 -0
  168. package/dist/index-CA1Cu7Ud.d.ts +873 -0
  169. package/dist/{index-ByQxazQJ.d.cts → index-CABbltIu.d.cts} +1 -1
  170. package/dist/{index-VHqptjhu.d.cts → index-CHEBsnYv.d.cts} +1 -1
  171. package/dist/{index-BuEoe-Qu.d.ts → index-CI0yDnLp.d.ts} +9 -9
  172. package/dist/{index-B9B7_HEY.d.ts → index-CJ45TW-h.d.ts} +1 -1
  173. package/dist/{index-CO8uBlUh.d.cts → index-CJZKZoo4.d.cts} +148 -20
  174. package/dist/{index-wEn0eFe8.d.ts → index-CX2tFJL1.d.ts} +1 -1
  175. package/dist/{index-BaSM3aYt.d.ts → index-CcWOJ6F0.d.ts} +3 -3
  176. package/dist/{audit-ClmqGOCx.d.cts → index-CiaVoZGo.d.ts} +27 -21
  177. package/dist/{index-Dzk2hrlR.d.ts → index-Ct5CWc4E.d.ts} +1 -1
  178. package/dist/index-D38duMCv.d.cts +357 -0
  179. package/dist/{index-C8oil6M6.d.ts → index-D5XJ2tSx.d.ts} +30 -6
  180. package/dist/{index-DO_6JN9Z.d.cts → index-D80do5jX.d.cts} +1 -1
  181. package/dist/index-D9HKAH_-.d.cts +231 -0
  182. package/dist/index-DBe_8XW5.d.cts +143 -0
  183. package/dist/{memory-C6Z2tGpC.d.cts → index-DCeTyFlB.d.ts} +26 -26
  184. package/dist/index-DDy8eeXS.d.ts +321 -0
  185. package/dist/index-DJ5oNBc8.d.ts +143 -0
  186. package/dist/{index-CI3DprxP.d.cts → index-DP0_O3ls.d.cts} +30 -6
  187. package/dist/{demo-shell-Crid1WdR.d.cts → index-DX8xS-yB.d.cts} +14 -14
  188. package/dist/index-DiZejfCI.d.cts +2057 -0
  189. package/dist/index-DknyJ2Fu.d.cts +163 -0
  190. package/dist/index-DoWMs-Kk.d.cts +135 -0
  191. package/dist/{messaging-XDoYablx.d.ts → index-DuB5aO4-.d.ts} +31 -93
  192. package/dist/index-DwjJGKxV.d.ts +357 -0
  193. package/dist/{index-B6EhDnjH.d.cts → index-H_oxVec5.d.cts} +1 -1
  194. package/dist/{index-3lsddbbS.d.ts → index-IMAHq-ia.d.ts} +1 -1
  195. package/dist/{index-B1tloyhO.d.cts → index-U1nir7MX.d.cts} +1 -1
  196. package/dist/index-Vg7tORgk.d.ts +86 -0
  197. package/dist/index-dig-r2tQ.d.cts +873 -0
  198. package/dist/{index-CxFrXH4m.d.ts → index-gsT79Xu9.d.ts} +1 -1
  199. package/dist/{index-D8wS_PeY.d.cts → index-i99Ka8s7.d.cts} +9 -9
  200. package/dist/index-iKkyJosF.d.cts +105 -0
  201. package/dist/{index-Xi3u0HCQ.d.cts → index-jleeotBT.d.cts} +1 -1
  202. package/dist/{index-DVGiGFGT.d.cts → index-kykKWwV-.d.cts} +3 -3
  203. package/dist/index-vgcLF5TH.d.cts +192 -0
  204. package/dist/{index-DYme44FM.d.cts → index-y1RllPn4.d.cts} +1 -1
  205. package/dist/index.cjs +151 -24142
  206. package/dist/index.d.cts +69 -2099
  207. package/dist/index.d.ts +69 -2099
  208. package/dist/index.js +1 -3868
  209. package/dist/{meta-CbznRPYJ.d.ts → meta-CX7YsOzp.d.cts} +5 -5
  210. package/dist/{meta-BxCA7rcr.d.cts → meta-CckhhFRd.d.ts} +5 -5
  211. package/dist/{node-BmerH3kS.d.cts → node-Dd6wHSib.d.cts} +71 -11
  212. package/dist/{node-BmerH3kS.d.ts → node-Dd6wHSib.d.ts} +71 -11
  213. package/dist/{observable-BgGUwcqp.d.ts → observable-BZJgo616.d.ts} +1 -1
  214. package/dist/{observable-DJt_AxzQ.d.cts → observable-kwzpLvbi.d.cts} +1 -1
  215. package/dist/patterns/ai/browser.cjs +25 -0
  216. package/dist/patterns/ai/browser.d.cts +127 -0
  217. package/dist/patterns/ai/browser.d.ts +127 -0
  218. package/dist/patterns/ai/browser.js +3 -0
  219. package/dist/patterns/ai/index.cjs +92 -0
  220. package/dist/patterns/ai/index.d.cts +17 -0
  221. package/dist/patterns/ai/index.d.ts +17 -0
  222. package/dist/patterns/ai/index.js +1 -0
  223. package/dist/patterns/ai/node.cjs +2 -0
  224. package/dist/patterns/ai/node.d.cts +58 -0
  225. package/dist/patterns/ai/node.d.ts +58 -0
  226. package/dist/patterns/ai/node.js +1 -0
  227. package/dist/patterns/audit/index.cjs +7 -0
  228. package/dist/patterns/audit/index.d.cts +6 -0
  229. package/dist/patterns/audit/index.d.ts +6 -0
  230. package/dist/patterns/audit/index.js +1 -0
  231. package/dist/patterns/cqrs/index.cjs +7 -0
  232. package/dist/patterns/cqrs/index.d.cts +5 -0
  233. package/dist/patterns/cqrs/index.d.ts +5 -0
  234. package/dist/patterns/cqrs/index.js +1 -0
  235. package/dist/patterns/demo-shell/index.cjs +8 -0
  236. package/dist/patterns/demo-shell/index.d.cts +6 -0
  237. package/dist/patterns/demo-shell/index.d.ts +6 -0
  238. package/dist/patterns/demo-shell/index.js +1 -0
  239. package/dist/patterns/domain-templates/index.cjs +7 -0
  240. package/dist/patterns/domain-templates/index.d.cts +5 -0
  241. package/dist/patterns/domain-templates/index.d.ts +5 -0
  242. package/dist/patterns/domain-templates/index.js +1 -0
  243. package/dist/patterns/graphspec/index.cjs +84 -0
  244. package/dist/patterns/graphspec/index.d.cts +7 -0
  245. package/dist/patterns/graphspec/index.d.ts +7 -0
  246. package/dist/patterns/graphspec/index.js +1 -0
  247. package/dist/patterns/guarded-execution/index.cjs +7 -0
  248. package/dist/patterns/guarded-execution/index.d.cts +7 -0
  249. package/dist/patterns/guarded-execution/index.d.ts +7 -0
  250. package/dist/patterns/guarded-execution/index.js +1 -0
  251. package/dist/patterns/harness/index.cjs +49 -0
  252. package/dist/patterns/harness/index.d.cts +11 -0
  253. package/dist/patterns/harness/index.d.ts +11 -0
  254. package/dist/patterns/harness/index.js +1 -0
  255. package/dist/patterns/job-queue/index.cjs +7 -0
  256. package/dist/patterns/job-queue/index.d.cts +5 -0
  257. package/dist/patterns/job-queue/index.d.ts +5 -0
  258. package/dist/patterns/job-queue/index.js +1 -0
  259. package/dist/patterns/lens/index.cjs +7 -0
  260. package/dist/patterns/lens/index.d.cts +7 -0
  261. package/dist/patterns/lens/index.d.ts +7 -0
  262. package/dist/patterns/lens/index.js +1 -0
  263. package/dist/patterns/memory/index.cjs +7 -0
  264. package/dist/patterns/memory/index.d.cts +5 -0
  265. package/dist/patterns/memory/index.d.ts +5 -0
  266. package/dist/patterns/memory/index.js +1 -0
  267. package/dist/patterns/messaging/index.cjs +7 -0
  268. package/dist/patterns/messaging/index.d.cts +5 -0
  269. package/dist/patterns/messaging/index.d.ts +5 -0
  270. package/dist/patterns/messaging/index.js +1 -0
  271. package/dist/patterns/orchestration/index.cjs +7 -0
  272. package/dist/patterns/orchestration/index.d.cts +6 -0
  273. package/dist/patterns/orchestration/index.d.ts +6 -0
  274. package/dist/patterns/orchestration/index.js +1 -0
  275. package/dist/patterns/reactive-layout/index.cjs +8 -6444
  276. package/dist/patterns/reactive-layout/index.d.cts +6 -6
  277. package/dist/patterns/reactive-layout/index.d.ts +6 -6
  278. package/dist/patterns/reactive-layout/index.js +1 -56
  279. package/dist/patterns/reduction/index.cjs +7 -0
  280. package/dist/patterns/reduction/index.d.cts +5 -0
  281. package/dist/patterns/reduction/index.d.ts +5 -0
  282. package/dist/patterns/reduction/index.js +1 -0
  283. package/dist/patterns/refine-loop/index.cjs +9 -0
  284. package/dist/patterns/refine-loop/index.d.cts +7 -0
  285. package/dist/patterns/refine-loop/index.d.ts +7 -0
  286. package/dist/patterns/refine-loop/index.js +1 -0
  287. package/dist/patterns/resilient-pipeline/index.cjs +1 -0
  288. package/dist/patterns/resilient-pipeline/index.d.cts +7 -0
  289. package/dist/patterns/resilient-pipeline/index.d.ts +7 -0
  290. package/dist/patterns/resilient-pipeline/index.js +1 -0
  291. package/dist/patterns/surface/index.cjs +15 -0
  292. package/dist/patterns/surface/index.d.cts +8 -0
  293. package/dist/patterns/surface/index.d.ts +8 -0
  294. package/dist/patterns/surface/index.js +1 -0
  295. package/dist/{reactive-layout-u5Ulnqag.d.ts → reactive-layout-BkBwVvwm.d.ts} +2 -2
  296. package/dist/{reactive-layout-MQP--J3F.d.cts → reactive-layout-PiFwVaWS.d.cts} +2 -2
  297. package/dist/reactive-log-1QTyx10a.d.ts +190 -0
  298. package/dist/reactive-log-BiVoSxke.d.cts +190 -0
  299. package/dist/{composite-aUCvjZVR.d.ts → reactive-map-CwO_COHy.d.cts} +2 -67
  300. package/dist/{composite-C7PcQvcs.d.cts → reactive-map-FeuTVAJb.d.ts} +2 -67
  301. package/dist/resilience-CBfYJW5C.d.ts +493 -0
  302. package/dist/resilience-XRUF267O.js +1 -0
  303. package/dist/resilience-uBz4yvYB.d.cts +493 -0
  304. package/dist/{sugar-CCOxXK1e.d.ts → sugar-CY-MCfZ9.d.ts} +17 -15
  305. package/dist/{sugar-D02n5JjF.d.cts → sugar-DHttV0LX.d.cts} +17 -15
  306. package/dist/topology-tree-CVjt2gp7.d.cts +25 -0
  307. package/dist/topology-tree-one6oSKY.d.ts +25 -0
  308. package/dist/types-O3GzJY2U.d.cts +401 -0
  309. package/dist/types-u64Ose53.d.ts +401 -0
  310. package/package.json +252 -22
  311. package/dist/ai-CaR_912Q.d.cts +0 -1033
  312. package/dist/ai-WlRltJV7.d.ts +0 -1033
  313. package/dist/chunk-3ZWCKRHX.js +0 -117
  314. package/dist/chunk-3ZWCKRHX.js.map +0 -1
  315. package/dist/chunk-7TAQJHQV.js +0 -103
  316. package/dist/chunk-7TAQJHQV.js.map +0 -1
  317. package/dist/chunk-APFNLIRG.js +0 -62
  318. package/dist/chunk-APFNLIRG.js.map +0 -1
  319. package/dist/chunk-AT5LKYNL.js +0 -395
  320. package/dist/chunk-AT5LKYNL.js.map +0 -1
  321. package/dist/chunk-BQ6RQQFF.js +0 -5087
  322. package/dist/chunk-BQ6RQQFF.js.map +0 -1
  323. package/dist/chunk-BVZYTZ5H.js +0 -599
  324. package/dist/chunk-BVZYTZ5H.js.map +0 -1
  325. package/dist/chunk-DST5DKZS.js +0 -1371
  326. package/dist/chunk-DST5DKZS.js.map +0 -1
  327. package/dist/chunk-GTE6PWRZ.js +0 -866
  328. package/dist/chunk-GTE6PWRZ.js.map +0 -1
  329. package/dist/chunk-HXZEYDUR.js +0 -94
  330. package/dist/chunk-HXZEYDUR.js.map +0 -1
  331. package/dist/chunk-J22W6HV3.js +0 -107
  332. package/dist/chunk-J22W6HV3.js.map +0 -1
  333. package/dist/chunk-J2VBW3DZ.js +0 -302
  334. package/dist/chunk-J2VBW3DZ.js.map +0 -1
  335. package/dist/chunk-JSCT3CR4.js +0 -38
  336. package/dist/chunk-JSCT3CR4.js.map +0 -1
  337. package/dist/chunk-JWBCY4NC.js +0 -330
  338. package/dist/chunk-JWBCY4NC.js.map +0 -1
  339. package/dist/chunk-K2AUJHVP.js +0 -2251
  340. package/dist/chunk-K2AUJHVP.js.map +0 -1
  341. package/dist/chunk-MJ2NKQQL.js +0 -119
  342. package/dist/chunk-MJ2NKQQL.js.map +0 -1
  343. package/dist/chunk-N6UR7YVY.js +0 -198
  344. package/dist/chunk-N6UR7YVY.js.map +0 -1
  345. package/dist/chunk-NC6S43JJ.js +0 -456
  346. package/dist/chunk-NC6S43JJ.js.map +0 -1
  347. package/dist/chunk-OFVJBJXR.js +0 -98
  348. package/dist/chunk-OFVJBJXR.js.map +0 -1
  349. package/dist/chunk-OHISZPOJ.js +0 -97
  350. package/dist/chunk-OHISZPOJ.js.map +0 -1
  351. package/dist/chunk-OU5CQKNW.js +0 -102
  352. package/dist/chunk-OU5CQKNW.js.map +0 -1
  353. package/dist/chunk-PF7GRZMW.js +0 -2712
  354. package/dist/chunk-PF7GRZMW.js.map +0 -1
  355. package/dist/chunk-PHOUUNK7.js +0 -2291
  356. package/dist/chunk-PHOUUNK7.js.map +0 -1
  357. package/dist/chunk-RNHBMHKA.js +0 -1665
  358. package/dist/chunk-RNHBMHKA.js.map +0 -1
  359. package/dist/chunk-SX52TAR4.js +0 -110
  360. package/dist/chunk-SX52TAR4.js.map +0 -1
  361. package/dist/chunk-VYPWMZ6H.js +0 -98
  362. package/dist/chunk-VYPWMZ6H.js.map +0 -1
  363. package/dist/chunk-WBZOVTYK.js +0 -171
  364. package/dist/chunk-WBZOVTYK.js.map +0 -1
  365. package/dist/chunk-WKNUIZOY.js +0 -354
  366. package/dist/chunk-WKNUIZOY.js.map +0 -1
  367. package/dist/chunk-X3VMZYBT.js +0 -713
  368. package/dist/chunk-X3VMZYBT.js.map +0 -1
  369. package/dist/chunk-X5R3GL6H.js +0 -525
  370. package/dist/chunk-X5R3GL6H.js.map +0 -1
  371. package/dist/chunk-XGPU467M.js +0 -136
  372. package/dist/chunk-XGPU467M.js.map +0 -1
  373. package/dist/compat/index.cjs.map +0 -1
  374. package/dist/compat/index.js.map +0 -1
  375. package/dist/compat/jotai/index.cjs.map +0 -1
  376. package/dist/compat/jotai/index.js.map +0 -1
  377. package/dist/compat/nanostores/index.cjs.map +0 -1
  378. package/dist/compat/nanostores/index.js.map +0 -1
  379. package/dist/compat/nestjs/index.cjs.map +0 -1
  380. package/dist/compat/nestjs/index.js.map +0 -1
  381. package/dist/compat/react/index.cjs.map +0 -1
  382. package/dist/compat/react/index.js.map +0 -1
  383. package/dist/compat/solid/index.cjs.map +0 -1
  384. package/dist/compat/solid/index.js.map +0 -1
  385. package/dist/compat/svelte/index.cjs.map +0 -1
  386. package/dist/compat/svelte/index.js.map +0 -1
  387. package/dist/compat/vue/index.cjs.map +0 -1
  388. package/dist/compat/vue/index.js.map +0 -1
  389. package/dist/compat/zustand/index.cjs.map +0 -1
  390. package/dist/compat/zustand/index.js.map +0 -1
  391. package/dist/core/index.cjs.map +0 -1
  392. package/dist/core/index.js.map +0 -1
  393. package/dist/extra/index.cjs.map +0 -1
  394. package/dist/extra/index.js.map +0 -1
  395. package/dist/extra/sources.cjs.map +0 -1
  396. package/dist/extra/sources.js.map +0 -1
  397. package/dist/graph/index.cjs.map +0 -1
  398. package/dist/graph/index.js.map +0 -1
  399. package/dist/index.cjs.map +0 -1
  400. package/dist/index.js.map +0 -1
  401. package/dist/patterns/ai.cjs +0 -7930
  402. package/dist/patterns/ai.cjs.map +0 -1
  403. package/dist/patterns/ai.d.cts +0 -10
  404. package/dist/patterns/ai.d.ts +0 -10
  405. package/dist/patterns/ai.js +0 -71
  406. package/dist/patterns/ai.js.map +0 -1
  407. package/dist/patterns/audit.cjs +0 -5805
  408. package/dist/patterns/audit.cjs.map +0 -1
  409. package/dist/patterns/audit.d.cts +0 -6
  410. package/dist/patterns/audit.d.ts +0 -6
  411. package/dist/patterns/audit.js +0 -29
  412. package/dist/patterns/audit.js.map +0 -1
  413. package/dist/patterns/demo-shell.cjs +0 -5604
  414. package/dist/patterns/demo-shell.cjs.map +0 -1
  415. package/dist/patterns/demo-shell.d.cts +0 -6
  416. package/dist/patterns/demo-shell.d.ts +0 -6
  417. package/dist/patterns/demo-shell.js +0 -15
  418. package/dist/patterns/demo-shell.js.map +0 -1
  419. package/dist/patterns/memory.cjs +0 -5283
  420. package/dist/patterns/memory.cjs.map +0 -1
  421. package/dist/patterns/memory.d.cts +0 -5
  422. package/dist/patterns/memory.d.ts +0 -5
  423. package/dist/patterns/memory.js +0 -20
  424. package/dist/patterns/memory.js.map +0 -1
  425. package/dist/patterns/reactive-layout/index.cjs.map +0 -1
  426. package/dist/patterns/reactive-layout/index.js.map +0 -1
  427. package/dist/storage-CMjUUuxn.d.ts +0 -190
  428. package/dist/storage-DdWlZo6U.d.cts +0 -190
@@ -0,0 +1 @@
1
+ import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"../chunk-5JDE5JHE.js";import"../chunk-4VVTGLXJ.js";import"../chunk-KASHOCF5.js";import"../chunk-W4TSQ6RJ.js";import"../chunk-CK2E7BTU.js";import"../chunk-QYADASLV.js";export{E as audit,G as buffer,H as bufferCount,J as bufferTime,U as catchError,p as combine,R as combineLatest,t as concat,x as concatMap,B as debounce,S as debounceTime,A as delay,n as distinctUntilChanged,l as elementAt,w as exhaustMap,b as filter,k as find,i as first,z as flatMap,M as interval,j as last,a as map,r as merge,y as mergeMap,o as pairwise,O as pausable,u as race,d as reduce,N as repeat,P as rescue,D as sample,c as scan,f as skip,v as switchMap,e as take,h as takeUntil,g as takeWhile,m as tap,C as throttle,T as throttleTime,F as timeout,Q as valve,L as window,I as windowCount,K as windowTime,q as withLatestFrom,s as zip};
@@ -0,0 +1 @@
1
+ "use strict";var le=Object.defineProperty;var He=Object.getOwnPropertyDescriptor;var Pe=Object.getOwnPropertyNames;var Be=Object.prototype.hasOwnProperty;var Ue=(r,e)=>{for(var n in e)le(r,n,{get:e[n],enumerable:!0})},We=(r,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Pe(e))!Be.call(r,s)&&s!==n&&le(r,s,{get:()=>e[s],enumerable:!(t=He(e,s))||t.enumerable});return r};var $e=r=>We(le({},"__esModule",{value:!0}),r);var hn={};Ue(hn,{NativeIndexBackend:()=>re,NativeListBackend:()=>se,NativeLogBackend:()=>ie,NativeMapBackend:()=>oe,reactiveIndex:()=>dn,reactiveList:()=>un,reactiveLog:()=>cn,reactiveMap:()=>fn});module.exports=$e(hn);var K=0,B=!1,S=[],V=[],F=[],U=[];function xe(){return K>0||B}function Te(){return K>0}function Me(r){K>0?U.push(r):r()}function N(r){K+=1;let e=!1;try{r()}catch(n){throw e=!0,n}finally{if(K-=1,K===0)if(e){if(!B){let n=U.splice(0);for(let t of n)try{t()}catch{}S.length=0,V.length=0,F.length=0}}else je()}}function je(){let r=!B;r&&(B=!0);let e=[],n=0;try{for(;S.length>0||V.length>0||F.length>0||r&&U.length>0;){if(r&&U.length>0){let i=U.splice(0);for(let o of i)try{o()}catch(a){e.push(a)}continue}if(n+=1,n>1e3)throw S.length=0,V.length=0,F.length=0,new Error("batch drain exceeded 1000 iterations \u2014 likely a reactive cycle");let s=(S.length>0?S:V.length>0?V:F).splice(0);for(let i of s)try{i()}catch(o){e.push(o)}}}finally{r&&(B=!1)}if(e.length===1)throw e[0];if(e.length>1)throw new AggregateError(e,"batch drain: multiple callbacks threw")}function Z(r,e,n){if(e.length===0)return;if(e.length===1){let d=n(e[0][0]);if(d<3||!xe()){r(e);return}(d>=5?F:d===4?V:S).push(()=>r(e));return}let t=e.length,s=t,i=t,o=t,a=0;for(;a<t&&n(e[a][0])<3;)a++;for(s=a;a<t&&n(e[a][0])===3;)a++;for(i=a;a<t&&n(e[a][0])===4;)a++;o=a;let u=xe();if(s>0){let d=e.slice(0,s);r(d)}if(i>s){let d=e.slice(s,i);u?S.push(()=>r(d)):r(d)}if(o>i){let d=e.slice(i,o);u?V.push(()=>r(d)):r(d)}if(t>o){let d=e.slice(o,t);u?F.push(()=>r(d)):r(d)}}var W=Symbol.for("graphrefly/START"),y=Symbol.for("graphrefly/DATA"),w=Symbol.for("graphrefly/DIRTY"),O=Symbol.for("graphrefly/RESOLVED"),I=Symbol.for("graphrefly/INVALIDATE"),D=Symbol.for("graphrefly/PAUSE"),$=Symbol.for("graphrefly/RESUME"),A=Symbol.for("graphrefly/TEARDOWN"),C=Symbol.for("graphrefly/COMPLETE"),x=Symbol.for("graphrefly/ERROR"),z=Object.freeze([w]),ce=Object.freeze([O]),qe=Object.freeze([I]),fe=Object.freeze([W]),Ye=Object.freeze([C]),Je=Object.freeze([A]),he=Object.freeze([z]),ke=Object.freeze([ce]),Ne=Object.freeze([qe]),Ae=Object.freeze([Ye]),pe=Object.freeze([Je]);var Xe={name:"json",version:1,contentType:"application/json",encode(r){let e=JSON.stringify(r);return new TextEncoder().encode(e)},decode(r,e){let n=new TextDecoder().decode(r);return JSON.parse(n)}};function Ee(r){r.registerCodec(Xe)}var Ze={type:"system",id:""};function Q(r){if(r==null)return Ze;let{type:e,id:n,...t}=r;return{type:e??"system",id:n??"",...t}}function j(){return Math.trunc(performance.now()*1e6)}function Re(){return Date.now()*1e6}var ee=class{_messageTypes=new Map;_codecs=new Map;_onMessage;_onSubscribe;_defaultVersioning;_defaultHashFn;_inspectorEnabled=!(typeof process<"u"&&process.env?.NODE_ENV==="production");_globalInspector;_frozen=!1;tierOf;constructor(e){this._onMessage=e.onMessage,this._onSubscribe=e.onSubscribe,this._defaultVersioning=e.defaultVersioning,this._defaultHashFn=e.defaultHashFn,this.tierOf=n=>{let t=this._messageTypes.get(n);return t!=null?t.tier:1}}get onMessage(){return this._frozen=!0,this._onMessage}get onSubscribe(){return this._frozen=!0,this._onSubscribe}set onMessage(e){this._assertUnfrozen(),this._onMessage=e}set onSubscribe(e){this._assertUnfrozen(),this._onSubscribe=e}get defaultVersioning(){return this._defaultVersioning}set defaultVersioning(e){this._assertUnfrozen(),this._defaultVersioning=e}get defaultHashFn(){return this._defaultHashFn}set defaultHashFn(e){this._assertUnfrozen(),this._defaultHashFn=e}get inspectorEnabled(){return this._inspectorEnabled}set inspectorEnabled(e){this._inspectorEnabled=e}get globalInspector(){return this._globalInspector}set globalInspector(e){this._globalInspector=e}registerMessageType(e,n){return this._assertUnfrozen(),this._messageTypes.set(e,{tier:n.tier,wireCrossing:n.wireCrossing??n.tier>=3,metaPassthrough:n.metaPassthrough??!0}),this}messageTier(e){let n=this._messageTypes.get(e);return n!=null?n.tier:1}isWireCrossing(e){let n=this._messageTypes.get(e);return n!=null?n.wireCrossing:!0}isLocalOnly(e){return!this.isWireCrossing(e)}isMetaPassthrough(e){let n=this._messageTypes.get(e);return n!=null?n.metaPassthrough:!0}isKnownMessageType(e){return this._messageTypes.has(e)}registerCodec(e){return this._assertUnfrozen(),this._codecs.set(e.name,e),this}lookupCodec(e){return this._codecs.get(e)}_isFrozen(){return this._frozen}_assertUnfrozen(){if(this._frozen)throw new Error("GraphReFlyConfig is frozen: a node has already captured this config. Register custom types and set hooks before creating any node.")}};function Se(r){r.registerMessageType(W,{tier:0,wireCrossing:!1}),r.registerMessageType(w,{tier:1,wireCrossing:!1}),r.registerMessageType(I,{tier:1,wireCrossing:!1,metaPassthrough:!1}),r.registerMessageType(D,{tier:2,wireCrossing:!1}),r.registerMessageType($,{tier:2,wireCrossing:!1}),r.registerMessageType(y,{tier:3,wireCrossing:!0}),r.registerMessageType(O,{tier:3,wireCrossing:!0}),r.registerMessageType(C,{tier:4,wireCrossing:!0,metaPassthrough:!1}),r.registerMessageType(x,{tier:4,wireCrossing:!0,metaPassthrough:!1}),r.registerMessageType(A,{tier:5,wireCrossing:!0,metaPassthrough:!1})}var L=class extends Error{actor;action;nodeName;constructor(e,n){super(n??`GuardDenied: action "${String(e.action)}" denied for actor type "${String(e.actor.type)}"`),this.name="GuardDenied",this.actor=e.actor,this.action=e.action,this.nodeName=e.nodeName}get node(){return this.nodeName}};function _e(r){if(r===void 0)return null;if(typeof r=="number"){if(!Number.isFinite(r))throw new TypeError(`Cannot hash non-finite number: ${r}`);if(Number.isInteger(r)&&!Number.isSafeInteger(r))throw new TypeError(`Cannot hash integer outside safe range (|n| > 2^53-1): ${r}. Cross-language cid parity is not guaranteed for unsafe integers.`);return r}if(typeof r=="string"||typeof r=="boolean"||r===null)return r;if(Array.isArray(r))return r.map(_e);if(typeof r=="object"&&r!==null){let e={};for(let n of Object.keys(r).sort())e[n]=_e(r[n]);return e}return null}var Qe=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),en=new TextEncoder;function nn(r){let e=en.encode(r),n=e.length,t=n*8,s=n+9+63&-64,i=new Uint8Array(s);i.set(e),i[n]=128;let o=new DataView(i.buffer);o.setUint32(s-4,t>>>0,!1),o.setUint32(s-8,Math.floor(t/4294967296)>>>0,!1);let a=1779033703,u=3144134277,d=1013904242,c=2773480762,_=1359893119,g=2600822924,h=528734635,l=1541459225,f=new Uint32Array(64),p=(T,m)=>T>>>m|T<<32-m;for(let T=0;T<s;T+=64){for(let v=0;v<16;v++)f[v]=o.getUint32(T+v*4,!1);for(let v=16;v<64;v++){let H=f[v-15],P=f[v-2],X=p(H,7)^p(H,18)^H>>>3,ue=p(P,17)^p(P,19)^P>>>10;f[v]=f[v-16]+X+f[v-7]+ue>>>0}let m=a,R=u,M=d,ae=c,k=_,Y=g,J=h,de=l;for(let v=0;v<64;v++){let H=p(k,6)^p(k,11)^p(k,25),P=k&Y^~k&J,X=de+H+P+Qe[v]+f[v]>>>0,ue=p(m,2)^p(m,13)^p(m,22),Le=m&R^m&M^R&M,Ge=ue+Le>>>0;de=J,J=Y,Y=k,k=ae+X>>>0,ae=M,M=R,R=m,m=X+Ge>>>0}a=a+m>>>0,u=u+R>>>0,d=d+M>>>0,c=c+ae>>>0,_=_+k>>>0,g=g+Y>>>0,h=h+J>>>0,l=l+de>>>0}let b=T=>T.toString(16).padStart(8,"0");return b(a)+b(u)+b(d)+b(c)+b(_)+b(g)+b(h)+b(l)}function ge(r){let e=_e(r??null),n=JSON.stringify(e);return nn(n).slice(0,16)}function tn(){let r=globalThis.crypto;if(r?.randomUUID)return r.randomUUID();let e=()=>Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0"),n=e()+e()+e()+e();return`${n.slice(0,8)}-${n.slice(8,12)}-4${n.slice(13,16)}-${(parseInt(n.slice(16,17),16)&3|8).toString(16)}${n.slice(17,20)}-${n.slice(20,32)}`}function ye(r,e,n){let t=n?.id??tn();if(r===0)return{id:t,version:0};let i=(n?.hash??ge)(e);return{id:t,version:0,cid:i,prev:null}}function Ve(r,e,n){r.version+=1,"cid"in r&&(r.prev=r.cid,r.cid=n(e))}var Oe=()=>{},Ie=100;function De(r){return{node:r,unsub:null,prevData:void 0,dirty:!1,involvedThisWave:!1,dataBatch:[],terminal:void 0}}function be(r){r.prevData=void 0,r.dirty=!1,r.involvedThisWave=!1,r.dataBatch.length=0,r.terminal=void 0}function ne(r){return r.length===0?r:typeof r[0]=="symbol"?[r]:r}var rn=(r,e,n,t)=>{n.direction==="down-in"&&r._onDepMessage(n.depIndex,e)},sn=(r,e,n,t)=>{let s=r;if(s._status==="completed"||s._status==="errored")return;let i=s._cached,o=i===void 0?[fe]:[fe,[y,i]];s._status==="dirty"&&o.push(z),Z(e,o,s._config.tierOf)},ve=new ee({onMessage:rn,onSubscribe:sn});Se(ve);Ee(ve);var te=class r{_optsName;_describeKind;meta;_hasMeta;_config;_deps;_sinks=null;_sinkCount=0;_cached;_status;_cleanup;_store={};_waveHasNewData=!1;_hasNewTerminal=!1;_hasCalledFnOnce=!1;_paused=!1;_pendingWave=!1;_isExecutingFn=!1;_pendingRerun=!1;_rerunDepth=0;_dirtyDepCount=0;_batchPendingMessages=null;_pauseLocks=null;_pauseBuffer=null;_fn;_equals;_resubscribable;_resetOnTeardown;_autoComplete;_autoError;_pausable;_partial;_guard;_extraGuards;_hashFn;_versioning;_versioningLevel;_lastMutation;_inspectorHooks;_actions;constructor(e,n,t){this._config=t.config??ve,this._config.onMessage,this._optsName=t.name,this._describeKind=t.describeKind,this._equals=t.equals??Object.is,this._resubscribable=t.resubscribable??!1,this._resetOnTeardown=t.resetOnTeardown??!1,this._autoComplete=t.completeWhenDepsComplete??!0,this._autoError=t.errorWhenDepsError??!0,this._pausable=t.pausable??!0,this._guard=t.guard,this._fn=n,this._partial=t.partial??!1,this._cached=t.initial!==void 0?t.initial:void 0,this._status=e.length===0&&n==null&&this._cached!==void 0?"settled":"sentinel",this._hashFn=t.versioningHash??this._config.defaultHashFn??ge;let s=t.versioning??this._config.defaultVersioning;this._versioningLevel=s,this._versioning=s!=null?ye(s,this._cached===void 0?void 0:this._cached,{id:t.versioningId,hash:this._hashFn}):void 0,this._deps=e.map(De);let i={};for(let[a,u]of Object.entries(t.meta??{})){let d={initial:u,name:`${t.name??"node"}:meta:${a}`,describeKind:"state",config:this._config};t.guard!=null&&(d.guard=t.guard),i[a]=new r([],void 0,d)}Object.freeze(i),this.meta=i,this._hasMeta=Object.keys(i).length>0;let o=this;this._actions={emit(a){o._emit([[y,a]])},down(a){o._emit(ne(a))},up(a){o._emitUp(ne(a))}},this.down=this.down.bind(this),this.up=this.up.bind(this)}get _isTerminal(){return this._status==="completed"||this._status==="errored"}get name(){return this._optsName}get status(){return this._status}get cache(){return this._cached===void 0?void 0:this._cached}get lastMutation(){return this._lastMutation}get v(){return this._versioning}hasGuard(){return this._guard!=null}_applyVersioning(e,n){if(this._isExecutingFn)throw new Error(`Node "${this.name}": _applyVersioning cannot run mid-fn \u2014 call it outside of \`_execFn\` (typically at graph setup time before the first subscribe).`);let t=this._versioningLevel;if(t!=null&&e<=t)return;let s=n?.hash??this._hashFn;s!==this._hashFn&&(this._hashFn=s);let i=this._cached===void 0?void 0:this._cached,o=this._versioning,a=o?.id??n?.id,u=o?.version??0,d=ye(e,i,{id:a,hash:s});d.version=u,this._versioning=d,this._versioningLevel=e}_setInspectorHook(e){return e==null?()=>{}:(this._inspectorHooks==null&&(this._inspectorHooks=new Set),this._inspectorHooks.add(e),()=>{this._inspectorHooks?.delete(e),this._inspectorHooks?.size===0&&(this._inspectorHooks=void 0)})}_pushGuard(e){return this._extraGuards==null&&(this._extraGuards=new Set),this._extraGuards.add(e),()=>{this._extraGuards?.delete(e),this._extraGuards?.size===0&&(this._extraGuards=void 0)}}allowsObserve(e){if(this._guard==null&&this._extraGuards==null)return!0;let n=Q(e);if(this._guard!=null&&!this._guard(n,"observe"))return!1;if(this._extraGuards!=null){for(let t of this._extraGuards)if(!t(n,"observe"))return!1}return!0}_checkGuard(e){if(e?.internal)return;let n=this._guard!=null||this._extraGuards!=null,t=e?.actor!=null;if(!n&&!t)return;let s=Q(e?.actor),i=e?.delivery==="signal"?"signal":"write";if(this._guard!=null&&!this._guard(s,i))throw new L({actor:s,action:i,nodeName:this.name});if(this._extraGuards!=null){for(let o of this._extraGuards)if(!o(s,i))throw new L({actor:s,action:i,nodeName:this.name})}this._lastMutation={actor:s,timestamp_ns:Re()}}down(e,n){let t=ne(e);t.length!==0&&(this._checkGuard(n),this._emit(t))}emit(e,n){this._checkGuard(n),this._emit([[y,e]])}up(e,n){if(this._deps.length===0)return;let t=ne(e);if(t.length===0)return;this._checkGuard(n);let s=n??{internal:!0};this._validateUpTiers(t);for(let i of this._deps)i.node.up?.(t,s)}_emitUp(e){if(this._deps.length!==0&&e.length!==0){this._validateUpTiers(e);for(let n of this._deps)n.node.up?.(e,{internal:!0})}}_validateUpTiers(e){let n=this._config.tierOf;for(let t of e){let s=n(t[0]);if(s===3||s===4)throw new Error(`Node "${this.name}": tier-${s} messages cannot flow up \u2014 DATA/RESOLVED/COMPLETE/ERROR are downstream-only. Use \`down(...)\` for value delivery; \`up(...)\` is for control signals (DIRTY, INVALIDATE, PAUSE, RESUME, TEARDOWN).`)}}subscribe(e,n){if(n!=null&&this._guard!=null){let u=Q(n);if(!this._guard(u,"observe"))throw new L({actor:u,action:"observe",nodeName:this.name})}let s=this._isTerminal&&this._resubscribable;if(s){this._cached=void 0,this._status="sentinel",this._store={},this._hasCalledFnOnce=!1,this._waveHasNewData=!1,this._hasNewTerminal=!1,this._paused=!1,this._pendingWave=!1,this._pendingRerun=!1,this._isExecutingFn=!1,this._rerunDepth=0,this._dirtyDepCount=0,this._pauseLocks=null,this._pauseBuffer=null;for(let u of this._deps)be(u);if(this._partial===!1){for(let u of this._deps)if(u.prevData!==void 0||u.dataBatch.length!==0||u.terminal!==void 0||u.dirty)throw new Error(`resubscribable-reset invariant: DepRecord not fully reset for node ${this._optsName??"(anonymous)"}`)}}this._sinkCount+=1;let i;try{i=this._config.onSubscribe(this,e,{sinkCount:this._sinkCount,afterTerminalReset:s},this._actions)}catch(u){throw this._sinkCount-=1,u}this._sinks==null?this._sinks=e:typeof this._sinks=="function"?this._sinks=new Set([this._sinks,e]):this._sinks.add(e);let o=this._isTerminal;if(this._sinkCount===1&&!o)try{this._activate()}catch(u){if(this._sinkCount-=1,this._removeSink(e),this._sinkCount===0&&(this._status="sentinel"),typeof i=="function")try{i()}catch{}throw u}this._status==="sentinel"&&this._cached===void 0&&(this._status="pending");let a=!1;return()=>{a||(a=!0,this._sinkCount-=1,this._removeSink(e),typeof i=="function"&&i(),this._sinks==null&&this._deactivate())}}_removeSink(e){if(this._sinks===e)this._sinks=null;else if(this._sinks!=null&&typeof this._sinks!="function")if(this._sinks.delete(e),this._sinks.size===1){let[n]=this._sinks;this._sinks=n}else this._sinks.size===0&&(this._sinks=null)}_activate(){if(this._deps.length===0){this._fn&&this._execFn();return}this._dirtyDepCount=0;let e=this._deps.length,n=0;try{for(let t=0;t<e;t++){let s=t,i=this._deps[t];i.unsub=Oe,i.unsub=i.node.subscribe(o=>{if(i.unsub===null)return;let a=this._config.tierOf,u=!1;for(let d of o)a(d[0])>=3&&(u=!0),this._config.onMessage(this,d,{direction:"down-in",depIndex:s},this._actions);u&&this._maybeRunFnOnSettlement()}),n++}}catch(t){this._deps[n].unsub=null;for(let s=0;s<n;s++){let i=this._deps[s];if(i.unsub!=null){let o=i.unsub;i.unsub=null;try{o()}catch{}be(i)}}throw this._dirtyDepCount=0,t}}_addDep(e){for(let s=0;s<this._deps.length;s++)if(this._deps[s].node===e)return s;let n=this._deps.length,t=De(e);if(this._deps.push(t),this._sinks==null)return n;t.dirty=!0,this._dirtyDepCount++,this._status!=="dirty"&&this._emit(he),t.unsub=Oe;try{t.unsub=e.subscribe(s=>{if(t.unsub===null)return;let i=this._config.tierOf,o=!1;for(let a of s)i(a[0])>=3&&(o=!0),this._config.onMessage(this,a,{direction:"down-in",depIndex:n},this._actions);o&&this._maybeRunFnOnSettlement()})}catch(s){throw t.unsub=null,this._deps.pop(),this._dirtyDepCount--,s}return n}_deactivate(e=!1){let n=this._cleanup;if(this._cleanup=void 0,typeof n=="function")try{n()}catch(t){this._emit([[x,this._wrapFnError("cleanup threw",t)]])}else if(n!=null&&typeof n=="object"){let t=n.deactivate;if(typeof t=="function")try{t()}catch(s){this._emit([[x,this._wrapFnError("cleanup.deactivate threw",s)]])}}for(let t of this._deps){if(t.unsub!=null){let s=t.unsub;t.unsub=null;try{s()}catch{}}be(t)}this._waveHasNewData=!1,this._hasNewTerminal=!1,this._hasCalledFnOnce=!1,this._paused=!1,this._pendingWave=!1,this._pendingRerun=!1,this._rerunDepth=0,this._store={},this._dirtyDepCount=0,this._pauseLocks=null,this._pauseBuffer=null,this._fn!=null&&(this._cached=void 0),e||(this._fn!=null||this._deps.length>0)&&(!this._isTerminal||this._resubscribable)&&(this._status="sentinel")}_onDepMessage(e,n){let t=this._deps[e],s=n[0];if(this._inspectorHooks!=null){let i={kind:"dep_message",depIndex:e,message:n};for(let o of this._inspectorHooks)o(i)}if(s!==W){if(s===w){this._depDirtied(t);return}if(s===I){this._depInvalidated(t),this._emit(Ne);return}if(s===D||s===$){this._emit([n]);return}if(s===A){this._emit(pe);return}if(s===y)this._depSettledAsData(t,n[1]);else if(s===O)this._depSettledAsResolved(t);else if(s===C)this._depSettledAsTerminal(t,!0);else if(s===x)this._depSettledAsTerminal(t,n[1]);else{this._emit([n]);return}if(!this._fn){(s===y||s===O)&&this._emit([n]),(s===C||s===x)&&this._maybeAutoTerminalAfterWave();return}}}_depDirtied(e){e.dirty||(e.dirty=!0,e.involvedThisWave=!0,this._dirtyDepCount++,this._status!=="dirty"&&this._emit(he))}_depSettledAsData(e,n){e.dirty&&(e.dirty=!1,this._dirtyDepCount--),e.involvedThisWave=!0,e.dataBatch.push(n),this._waveHasNewData=!0}_depSettledAsResolved(e){e.dirty&&(e.dirty=!1,this._dirtyDepCount--)}_depSettledAsTerminal(e,n){e.dirty&&(e.dirty=!1,this._dirtyDepCount--),e.terminal=n,e.involvedThisWave=!0,this._hasNewTerminal=!0}_depInvalidated(e){e.prevData=void 0,e.terminal=void 0,e.dataBatch.length=0,e.dirty?e.involvedThisWave=!1:(e.dirty=!0,e.involvedThisWave=!0,this._dirtyDepCount++)}_maybeRunFnOnSettlement(){if(!(this._isTerminal&&!this._resubscribable)&&!(this._dirtyDepCount>0)){if(!this._partial&&!this._hasCalledFnOnce)for(let e=0;e<this._deps.length;e++){let n=this._deps[e];if(n.dataBatch.length===0&&n.prevData===void 0&&n.terminal===void 0){this._maybeAutoTerminalAfterWave();return}}if(this._paused){this._pendingWave=!0;return}if(!this._waveHasNewData&&!this._hasNewTerminal&&this._hasCalledFnOnce){this._clearWaveFlags(),this._emit(ke),this._maybeAutoTerminalAfterWave();return}this._fn&&this._execFn(),this._maybeAutoTerminalAfterWave()}}_maybeAutoTerminalAfterWave(){if(this._deps.length===0||this._isTerminal)return;let e=this._deps.find(n=>n.terminal!==void 0&&n.terminal!==!0);if(e!=null){this._autoError&&this._emit([[x,e.terminal]]);return}this._autoComplete&&this._deps.every(n=>n.terminal!==void 0)&&this._emit(Ae)}_execFn(){if(!this._fn||this._isTerminal&&!this._resubscribable)return;if(this._isExecutingFn){this._pendingRerun=!0;return}let e=this._cleanup;if(typeof e=="function"){this._cleanup=void 0;try{e()}catch(o){this._emit([[x,this._wrapFnError("cleanup threw",o)]]);return}}else if(e!=null&&typeof e=="object"){let o=e.beforeRun;if(typeof o=="function"){e.beforeRun=void 0;try{o()}catch(a){this._emit([[x,this._wrapFnError("cleanup.beforeRun threw",a)]]);return}}}let n=this._deps.map(o=>o.involvedThisWave?o.dataBatch.length>0?[...o.dataBatch]:[]:void 0),t=this._deps.map(o=>o.prevData);for(let o=0;o<this._deps.length;o++){let a=n[o];a!=null&&a.length>0&&(this._deps[o].prevData=a[a.length-1])}let s=this._deps.map(o=>o.terminal),i={prevData:t,terminalDeps:s,store:this._store};if(this._hasCalledFnOnce=!0,this._clearWaveFlags(),this._inspectorHooks!=null){let o={kind:"run",batchData:n,prevData:t};for(let a of this._inspectorHooks)a(o)}this._isExecutingFn=!0;try{let o=this._fn(n,this._actions,i);if(typeof o=="function")this._cleanup=o;else if(o!=null&&typeof o=="object"){let a=o;(typeof a.beforeRun=="function"||typeof a.deactivate=="function"||typeof a.invalidate=="function")&&(this._cleanup=o)}}catch(o){this._emit([[x,this._wrapFnError("fn threw",o)]])}finally{this._isExecutingFn=!1,this._pendingRerun?(this._pendingRerun=!1,this._rerunDepth+=1,this._rerunDepth>Ie?(this._rerunDepth=0,this._emit([[x,new Error(`Node "${this.name}": _pendingRerun depth exceeded ${Ie} \u2014 likely a reactive cycle`)]])):this._maybeRunFnOnSettlement()):this._rerunDepth=0,this._clearWaveFlags()}}_clearWaveFlags(){this._waveHasNewData=!1,this._hasNewTerminal=!1;for(let e of this._deps)e.involvedThisWave=!1,e.dataBatch.length=0}_wrapFnError(e,n){let t=n instanceof Error?n.message:String(n);return new Error(`Node "${this.name}": ${e}: ${t}`,{cause:n})}_frameBatch(e){let n=this._config.tierOf;if(e.length===1)return n(e[0][0])===3&&this._status!=="dirty"?[z,e[0]]:e;let t=!0,s=!1,i=!1,o=-1;for(let u of e){let d=n(u[0]);d<o&&(t=!1),d===3&&(s=!0),u[0]===w&&(i=!0),o=d}let a=e;if(!t){let u=e.map((d,c)=>({m:d,i:c,tier:n(d[0])}));u.sort((d,c)=>d.tier-c.tier||d.i-c.i),a=u.map(d=>d.m)}if(s&&!i&&this._status!=="dirty"){let u=0;for(;u<a.length&&n(a[u][0])===0;)u++;return u===0?[z,...a]:[...a.slice(0,u),z,...a.slice(u)]}return a}_emit(e){if(e.length===0)return;for(let a=0;a<e.length;a++){let u=e[a];if(u[0]===x&&u[1]===void 0)throw new TypeError('[ERROR, payload] requires a non-undefined payload (spec \xA71.2). Pass an Error object or domain tag instead \u2014 e.g. node.down([[ERROR, new Error("reason")]])')}let n=e;if(this._isTerminal&&!this._resubscribable){let a=e.filter(u=>u[0]===A||u[0]===I);if(a.length===0)return;n=a}n=this._frameBatch(n);let s=null;for(let a=0;a<n.length;a++){let u=n[a],d=u[0];if(d!==D&&d!==$){s?.push(u);continue}if(u.length<2)throw new Error(`Node "${this.name}": [[${d===D?"PAUSE":"RESUME"}]] must carry a lockId payload \u2014 bare PAUSE/RESUME is a protocol violation (C0 rule). Use \`[[PAUSE, lockId]]\` / \`[[RESUME, lockId]]\`.`);let c=!0;if(this._pausable!==!1){let _=u[1];if(d===D)this._pauseLocks==null&&(this._pauseLocks=new Set),this._pauseLocks.add(_),this._paused=!0,this._pausable==="resumeAll"&&this._pauseBuffer==null&&(this._pauseBuffer=[]);else if(this._pauseLocks==null||!this._pauseLocks.has(_))c=!1;else if(this._pauseLocks.delete(_),this._pauseLocks.size===0){if(this._paused=!1,this._pauseBuffer!=null&&this._pauseBuffer.length>0){let g=this._pauseBuffer;this._pauseBuffer=[],this._emit(g)}this._pendingWave&&(this._pendingWave=!1,this._maybeRunFnOnSettlement())}}c?s?.push(u):s==null&&(s=n.slice(0,a))}if(s!=null){if(s.length===0)return;n=s}if(this._hasMeta&&n.some(a=>a[0]===A))for(let a of Object.keys(this.meta))try{this.meta[a]._emit(pe)}catch{}let{finalMessages:i,equalsError:o}=this._updateState(n);if(i.length>0&&this._config.inspectorEnabled){let a=this._config.globalInspector;if(a!=null)try{a({kind:"emit",node:this,messages:i})}catch{}}if(i.length>0)if(this._paused&&this._pausable==="resumeAll"&&this._pauseBuffer!=null){let a=this._config.tierOf,u=[];for(let d of i)a(d[0])===3?this._pauseBuffer.push(d):u.push(d);u.length>0&&this._dispatchOrAccumulate(u)}else this._dispatchOrAccumulate(i);o!=null&&this._emit([[x,o]])}_updateState(e){let n=this._config.tierOf,t,s,i=-1,o=0;for(let c of e)n(c[0])===3&&o++;let a=o<=1,u=-1;if(this._versioning!=null&&o>1){for(let c=e.length-1;c>=0;c--)if(e[c][0]===y){u=c;break}}for(let c=0;c<e.length;c++){let _=e[c],g=_[0];if(g===y){if(_.length>=2){let h=!1;if(a&&this._cached!==void 0)try{h=this._equals(this._cached,_[1])}catch(l){s=this._wrapFnError("equals threw",l),i=c;break}if(h){t==null&&(t=e.slice(0,c)),t.push(ce),this._status="resolved";continue}this._cached=_[1],this._versioning!=null&&(u<0||c===u)&&Ve(this._versioning,_[1],this._hashFn)}this._status="settled",t?.push(_)}else if(t?.push(_),g===w)this._status="dirty";else if(g===O)this._status="resolved";else if(g===C)this._status="completed";else if(g===x)this._status="errored";else if(g===I){this._cached=void 0,this._status="dirty";let h=this._cleanup;if(typeof h=="function"){this._cleanup=void 0;try{h()}catch{}}else if(h!=null&&typeof h=="object"){let l=h.invalidate;if(typeof l=="function")try{l()}catch{}}}else g===A&&(this._resetOnTeardown&&(this._cached=void 0),this._deactivate(!0),this._status="sentinel")}let d=i>=0?t??e.slice(0,i):t??e;return s!=null?{finalMessages:d,equalsError:s}:{finalMessages:d}}_deliverToSinks=e=>{if(this._sinks==null)return;if(typeof this._sinks=="function"){this._sinks(e);return}let n=[...this._sinks];for(let t of n)t(e)};_dispatchOrAccumulate(e){if(Te()){this._batchPendingMessages===null&&(this._batchPendingMessages=[],Me(()=>this._flushBatchPending()));for(let n of e)this._batchPendingMessages.push(n);return}Z(this._deliverToSinks,e,this._config.tierOf)}_flushBatchPending(){let e=this._batchPendingMessages;if(e===null||(this._batchPendingMessages=null,e.length===0))return;let n=this._frameBatch(e);Z(this._deliverToSinks,n,this._config.tierOf)}},Ce=r=>Array.isArray(r),me=r=>typeof r=="object"&&r!=null&&!Array.isArray(r);function we(r,e,n){let t=Ce(r)?r:[],s=typeof r=="function"?r:typeof e=="function"?e:void 0,i={};return Ce(r)?i=(me(e)?e:n)??{}:me(r)?i=r:i=(me(e)?e:n)??{},new te(t,s,i)}function E(r,e){return we([],{...e,initial:r})}function q(r,e,n){return we(r,(s,i,o)=>{let a=s.map((u,d)=>u!=null&&u.length>0?u.at(-1):o.prevData[d]);i.emit(e(a,o))},{describeKind:"derived",...n})}function Ke(r,e){if(r===e)return 0;let n=typeof r;if(n===typeof e&&(n==="number"||n==="string"||n==="boolean"||n==="bigint")){let s=r,i=e;return s<i?-1:s>i?1:0}return String(r).localeCompare(String(e))}function on(r,e){let n=Ke(r[0],e[0]);return n!==0?n:Ke(r[1],e[1])}function Fe(r){return[r.secondary,r.primary]}function G(r,e){let n=Fe(e),t=0,s=r.length;for(;t<s;){let i=t+s>>1;on(n,Fe(r[i]))>0?t=i+1:s=i}return t}var re=class{_version=0;_buf=[];_byPrimary=new Map;get version(){return this._version}get size(){return this._buf.length}has(e){return this._byPrimary.has(e)}get(e){return this._byPrimary.get(e)?.value}upsert(e,n,t,s){let i=this._byPrimary.get(e),o={primary:e,secondary:n,value:t};if(i!==void 0&&s?.equals?.(i,o))return!1;if(i!==void 0){let u=G(this._buf,i);this._buf.splice(u,1)}let a=G(this._buf,o);return this._buf.splice(a,0,o),this._byPrimary.set(e,o),this._version+=1,i===void 0}upsertMany(e,n){let t=0;try{for(let s of e){let i=this._byPrimary.get(s.primary),o={primary:s.primary,secondary:s.secondary,value:s.value};if(i!==void 0&&n?.equals?.(i,o))continue;if(i!==void 0){let u=G(this._buf,i);this._buf.splice(u,1)}let a=G(this._buf,o);this._buf.splice(a,0,o),this._byPrimary.set(s.primary,o),t+=1}}finally{t>0&&(this._version+=1)}return t}delete(e){let n=this._byPrimary.get(e);if(n===void 0)return!1;let t=G(this._buf,n);return this._buf.splice(t,1),this._byPrimary.delete(e),this._version+=1,!0}deleteMany(e){let n=0;try{for(let t of e){let s=this._byPrimary.get(t);if(s===void 0)continue;let i=G(this._buf,s);this._buf.splice(i,1),this._byPrimary.delete(t),n+=1}}finally{n>0&&(this._version+=1)}return n}clear(){let e=this._buf.length;return e===0?0:(this._buf.length=0,this._byPrimary.clear(),this._version+=1,e)}toArray(){return[...this._buf]}toPrimaryMap(){let e=new Map;for(let n of this._buf)e.set(n.primary,n.value);return e}};function an(r){return r.subscribe(()=>{})}function dn(r={}){let{name:e,versioning:n,equals:t,backend:s}=r,i=s??new re;function o(h){return h?.equals!==void 0||t===void 0?h:{...h,equals:t}}let a=E([],{name:e,describeKind:"state",equals:(h,l)=>h===l,...n!=null?{versioning:n}:{}}),u=q([a],([h])=>{let l=h,f=new Map;for(let p of l)f.set(p.primary,p.value);return f},{initial:i.toPrimaryMap(),describeKind:"derived"}),d=an(u),c=!1;function _(){let h=i.toArray();N(()=>{a.down([[w]]),a.down([[y,h]])})}function g(h){let l=i.version;try{return h()}finally{i.version!==l&&_()}}return{ordered:a,byPrimary:u,has(h){return i.has(h)},get(h){return i.get(h)},get size(){return i.size},upsert(h,l,f,p){return g(()=>i.upsert(h,l,f,o(p)))},upsertMany(h,l){let f=[...h];f.length!==0&&g(()=>i.upsertMany(f,o(l)))},delete(h){g(()=>i.delete(h))},deleteMany(h){let l=[...h];l.length!==0&&g(()=>i.deleteMany(l))},clear(){g(()=>i.clear())},dispose(){c||(c=!0,d())}}}var se=class{_version=0;_buf;constructor(e){this._buf=e?[...e]:[]}get version(){return this._version}get size(){return this._buf.length}at(e){if(!Number.isInteger(e))return;let n=e>=0?e:this._buf.length+e;if(!(n<0||n>=this._buf.length))return this._buf[n]}append(e){this._buf.push(e),this._version+=1}appendMany(e){if(e.length===0)return;let n=this._buf.length;this._buf.length=n+e.length;for(let t=0;t<e.length;t++)this._buf[n+t]=e[t];this._version+=1}insert(e,n){if(!Number.isInteger(e)||e<0||e>this._buf.length)throw new RangeError(`insert: index ${e} out of range [0, ${this._buf.length}]`);this._buf.splice(e,0,n),this._version+=1}insertMany(e,n){if(!Number.isInteger(e)||e<0||e>this._buf.length)throw new RangeError(`insertMany: index ${e} out of range [0, ${this._buf.length}]`);n.length!==0&&(this._buf.splice(e,0,...n),this._version+=1)}pop(e){if(this._buf.length===0)throw new RangeError("pop from empty list");if(!Number.isInteger(e))throw new RangeError(`pop: index ${e} must be an integer`);let n=e>=0?e:this._buf.length+e;if(n<0||n>=this._buf.length)throw new RangeError(`pop: index ${e} out of range`);let[t]=this._buf.splice(n,1);return this._version+=1,t}clear(){let e=this._buf.length;return e===0?0:(this._buf.length=0,this._version+=1,e)}toArray(){return[...this._buf]}};function un(r,e={}){let{name:n,versioning:t,backend:s}=e,i=s??new se(r),o=E(i.toArray(),{name:n,describeKind:"state",equals:(d,c)=>d===c,...t!=null?{versioning:t}:{}});function a(){let d=i.toArray();N(()=>{o.down([[w]]),o.down([[y,d]])})}function u(d){let c=i.version;try{return d()}finally{i.version!==c&&a()}}return{items:o,get size(){return i.size},at(d){return i.at(d)},append(d){u(()=>i.append(d))},appendMany(d){u(()=>i.appendMany(d))},insert(d,c){u(()=>i.insert(d,c))},insertMany(d,c){u(()=>i.insertMany(d,c))},pop(d=-1){return u(()=>i.pop(d))},clear(){u(()=>i.clear())},dispose(){}}}var ie=class{_version=0;_maxSize;_buf;_head=0;_size=0;constructor(e,n){if(n!==void 0&&n<1)throw new RangeError("maxSize must be >= 1");if(this._maxSize=n,n!==void 0){if(this._buf=new Array(n),e&&e.length>0){let t=Math.min(e.length,n),s=e.length-t;for(let i=0;i<t;i++)this._buf[i]=e[s+i];this._size=t}}else this._buf=e?[...e]:[],this._size=this._buf.length}get version(){return this._version}get size(){return this._size}at(e){if(!Number.isInteger(e))return;let n=e>=0?e:this._size+e;if(!(n<0||n>=this._size))return this._maxSize!==void 0?this._buf[(this._head+n)%this._maxSize]:this._buf[n]}append(e){this._rawAppend(e),this._version+=1}appendMany(e){if(e.length===0)return;let n=this._maxSize!==void 0&&e.length>this._maxSize?e.length-this._maxSize:0;for(let t=n;t<e.length;t++)this._rawAppend(e[t]);this._version+=1}clear(){if(this._size===0)return 0;let e=this._size;if(this._maxSize===void 0)this._buf.length=0;else for(let n=0;n<e;n++)this._buf[(this._head+n)%this._maxSize]=void 0;return this._head=0,this._size=0,this._version+=1,e}trimHead(e){if(!Number.isInteger(e)||e<0)throw new RangeError(`trimHead: n must be a non-negative integer (got ${e})`);if(e===0||this._size===0)return 0;let n=Math.min(e,this._size);if(this._maxSize===void 0)this._buf.splice(0,n);else{for(let t=0;t<n;t++)this._buf[(this._head+t)%this._maxSize]=void 0;this._head=(this._head+n)%this._maxSize}return this._size-=n,this._version+=1,n}slice(e,n){if(!Number.isInteger(e)||e<0)throw new RangeError(`slice: start must be a non-negative integer (got ${e})`);if(n!==void 0&&(!Number.isInteger(n)||n<0))throw new RangeError(`slice: stop must be a non-negative integer or undefined (got ${n})`);let t=n===void 0?this._size:Math.min(Math.max(n,0),this._size),s=Math.min(e,this._size);if(s>=t)return[];let i=t-s;if(this._maxSize===void 0)return this._buf.slice(s,t);let o=new Array(i);for(let a=0;a<i;a++)o[a]=this._buf[(this._head+s+a)%this._maxSize];return o}tail(e){if(!Number.isInteger(e)||e<0)throw new RangeError(`tail: n must be a non-negative integer (got ${e})`);if(e===0||this._size===0)return[];let n=Math.min(e,this._size);return this.slice(this._size-n,this._size)}toArray(){if(this._maxSize===void 0)return[...this._buf];let e=new Array(this._size);for(let n=0;n<this._size;n++)e[n]=this._buf[(this._head+n)%this._maxSize];return e}_rawAppend(e){if(this._maxSize===void 0){this._buf.push(e),this._size=this._buf.length;return}this._size<this._maxSize?(this._buf[(this._head+this._size)%this._maxSize]=e,this._size+=1):(this._buf[this._head]=e,this._head=(this._head+1)%this._maxSize)}};function ze(r){return r.subscribe(()=>{})}var ln=64;function cn(r,e={}){let{name:n,maxSize:t,versioning:s,backend:i}=e,o=i??new ie(r,t),a=E(o.toArray(),{name:n,describeKind:"state",equals:(l,f)=>l===f,...s!=null?{versioning:s}:{}});function u(){let l=o.toArray();N(()=>{a.down([[w]]),a.down([[y,l]])})}let d=new Map,c=new Map;function _(l,f){return`${l}:${f===void 0?"END":f}`}function g(l){if(l.size<ln)return;let f=l.keys().next();if(f.done)return;let p=l.get(f.value);p!==void 0&&p.dispose(),l.delete(f.value)}function h(l){let f=o.version;try{return l()}finally{o.version!==f&&u()}}return{entries:a,get size(){return o.size},at(l){return o.at(l)},append(l){h(()=>o.append(l))},appendMany(l){l.length!==0&&h(()=>o.appendMany(l))},clear(){h(()=>o.clear())},trimHead(l){h(()=>o.trimHead(l))},tail(l){if(!Number.isInteger(l)||l<0)throw new RangeError(`tail: n must be a non-negative integer (got ${l})`);let f=d.get(l);if(f!==void 0)return d.delete(l),d.set(l,f),f.node;g(d);let p=q([a],([T])=>{let m=T;return l===0||m.length===0?[]:m.slice(Math.max(0,m.length-l))},{initial:o.tail(l),describeKind:"derived"}),b=ze(p);return d.set(l,{node:p,dispose:b}),p},slice(l,f){if(!Number.isInteger(l)||l<0)throw new RangeError(`slice: start must be a non-negative integer (got ${l})`);if(f!==void 0&&(!Number.isInteger(f)||f<0))throw new RangeError(`slice: stop must be a non-negative integer or undefined (got ${f})`);let p=_(l,f),b=c.get(p);if(b!==void 0)return c.delete(p),c.set(p,b),b.node;g(c);let T=q([a],([R])=>{let M=R;return f===void 0?M.slice(l):M.slice(l,f)},{initial:o.slice(l,f),describeKind:"derived"}),m=ze(T);return c.set(p,{node:T,dispose:m}),T},disposeTail(l){let f=d.get(l);return f===void 0?!1:(f.dispose(),d.delete(l),!0)},disposeSlice(l,f){let p=_(l,f),b=c.get(p);return b===void 0?!1:(b.dispose(),c.delete(p),!0)},disposeAllViews(){for(let l of d.values())l.dispose();d.clear();for(let l of c.values())l.dispose();c.clear()},dispose(){for(let l of d.values())l.dispose();d.clear();for(let l of c.values())l.dispose();c.clear()}}}var oe=class{_version=0;_store=new Map;_maxSize;_defaultTtl;constructor(e={}){let{maxSize:n,defaultTtl:t}=e;if(n!==void 0&&n<1)throw new RangeError("maxSize must be >= 1");if(t!==void 0&&t<=0)throw new RangeError("defaultTtl must be positive");this._maxSize=n,this._defaultTtl=t}get version(){return this._version}get size(){return this._store.size}has(e){let n=this._store.get(e);return n===void 0?!1:this._isExpired(n)?(this._store.delete(e),this._version+=1,!1):(this._touchLru(e,n),!0)}get(e){let n=this._store.get(e);if(n!==void 0){if(this._isExpired(n)){this._store.delete(e),this._version+=1;return}return this._touchLru(e,n),n.value}}set(e,n,t){let s=this._resolveExpiresAt(t);this._store.has(e)&&this._store.delete(e),this._store.set(e,{value:n,expiresAt:s}),this._evictLruWhileOver(),this._version+=1}setMany(e,n){let t=this._resolveExpiresAt(n),s=0;try{for(let[i,o]of e)this._store.has(i)&&this._store.delete(i),this._store.set(i,{value:o,expiresAt:t}),s+=1}finally{s>0&&(this._evictLruWhileOver(),this._version+=1)}}delete(e){let n=this._store.delete(e);return n&&(this._version+=1),n}deleteMany(e){let n=0;try{for(let t of e)this._store.delete(t)&&(n+=1)}finally{n>0&&(this._version+=1)}return n}clear(){let e=this._store.size;return e===0?0:(this._store.clear(),this._version+=1,e)}pruneExpired(){let e=j(),n=0;for(let[t,s]of this._store)this._isExpired(s,e)&&(this._store.delete(t),n+=1);return n>0&&(this._version+=1),n}toMap(){let e=j(),n=new Map;for(let[t,s]of this._store)this._isExpired(s,e)||n.set(t,s.value);return n}_resolveExpiresAt(e){let n=e??this._defaultTtl;if(n!==void 0){if(!Number.isFinite(n)||n<=0)throw new RangeError(`MapBackend: ttl must be a positive finite number (got ${n})`);return j()+n*1e9}}_isExpired(e,n){return e.expiresAt===void 0?!1:(n??j())>=e.expiresAt}_touchLru(e,n){this._store.delete(e),this._store.set(e,n)}_evictLruWhileOver(){if(this._maxSize!==void 0)for(;this._store.size>this._maxSize;){let e=this._store.keys().next().value;if(e===void 0)break;this._store.delete(e)}}};function fn(r={}){let{name:e,maxSize:n,defaultTtl:t,versioning:s,backend:i}=r,o=i??new oe({maxSize:n,defaultTtl:t}),a=E(o.toMap(),{name:e,describeKind:"state",equals:(c,_)=>c===_,...s!=null?{versioning:s}:{}});function u(){let c=o.toMap();N(()=>{a.down([[w]]),a.down([[y,c]])})}function d(c){let _=o.version;try{return c()}finally{o.version!==_&&u()}}return{entries:a,has(c){return d(()=>o.has(c))},get(c){return d(()=>o.get(c))},set(c,_,g){d(()=>o.set(c,_,g?.ttl))},setMany(c,_){d(()=>o.setMany(c,_?.ttl))},delete(c){d(()=>o.delete(c))},deleteMany(c){d(()=>o.deleteMany(c))},clear(){d(()=>o.clear())},pruneExpired(){d(()=>o.pruneExpired())},get size(){return o.size},dispose(){}}}0&&(module.exports={NativeIndexBackend,NativeListBackend,NativeLogBackend,NativeMapBackend,reactiveIndex,reactiveList,reactiveLog,reactiveMap});
@@ -0,0 +1,352 @@
1
+ import { a as Node, V as VersioningLevel } from '../node-Dd6wHSib.cjs';
2
+ export { L as LogBackend, N as NativeLogBackend, R as ReactiveLogBundle, a as ReactiveLogOptions, r as reactiveLog } from '../reactive-log-BiVoSxke.cjs';
3
+ export { M as MapBackend, N as NativeMapBackend, b as NativeMapBackendOptions, R as ReactiveMapBundle, a as ReactiveMapOptions, r as reactiveMap } from '../reactive-map-CwO_COHy.cjs';
4
+
5
+ type IndexRow<K, V = unknown> = {
6
+ readonly primary: K;
7
+ readonly secondary: unknown;
8
+ readonly value: V;
9
+ };
10
+ type ReactiveIndexOptions<K, V = unknown> = {
11
+ /** Optional registry name for `describe()` / debugging. */
12
+ name?: string;
13
+ /**
14
+ * Storage backend. Defaults to `NativeIndexBackend` (flat array + parallel `Map<K,IndexRow>`).
15
+ * Users can plug in persistent / B-tree backends via the {@link IndexBackend} interface.
16
+ */
17
+ backend?: IndexBackend<K, V>;
18
+ /**
19
+ * Optional versioning level for the underlying `ordered` state node. Set at
20
+ * construction time; cannot be changed later. Pass `0` for V0 identity +
21
+ * monotonic version counter, or `1` for V1 + content-addressed cid.
22
+ * (The `byPrimary` derived node inherits through the dep graph.)
23
+ */
24
+ versioning?: VersioningLevel;
25
+ /**
26
+ * Default row-equality used to short-circuit idempotent upserts. When
27
+ * provided, every `upsert` / `upsertMany` that finds an existing primary
28
+ * compares the stored and candidate rows via `equals(existing, next)` —
29
+ * on `true` the call is a no-op (no version bump, no emission). Per-call
30
+ * `UpsertOptions.equals` overrides this default. Analogous to
31
+ * `NodeOptions.equals` on the core `node()` primitive.
32
+ */
33
+ equals?: (existing: IndexRow<K, V>, next: IndexRow<K, V>) => boolean;
34
+ };
35
+ type ReactiveIndexBundle<K, V = unknown> = {
36
+ /** Rows sorted by `(secondary, primary)`. */
37
+ readonly ordered: Node<readonly IndexRow<K, V>[]>;
38
+ /** Map from primary key to stored value. */
39
+ readonly byPrimary: Node<ReadonlyMap<K, V>>;
40
+ /** O(1) primary-key existence check. */
41
+ has: (primary: K) => boolean;
42
+ /** O(1) value lookup by primary key. */
43
+ get: (primary: K) => V | undefined;
44
+ /** Number of rows currently in the index (O(1)). */
45
+ readonly size: number;
46
+ /**
47
+ * Upserts a row. When `opts.equals(existing, next)` returns `true` for an
48
+ * existing primary key, the upsert is a no-op (no version bump, no emission).
49
+ * Useful for idempotent writes.
50
+ *
51
+ * @returns `true` if a new row was inserted (primary key was absent),
52
+ * `false` if the primary key was already present (updated in place OR
53
+ * skipped idempotently via `opts.equals`). D5(a).
54
+ */
55
+ upsert: (primary: K, secondary: unknown, value: V, opts?: UpsertOptions<K, V>) => boolean;
56
+ /**
57
+ * Bulk upsert — emits one snapshot for the whole batch. `opts.equals` applied
58
+ * per-row. No-op if empty or all rows skipped.
59
+ *
60
+ * **Iterable consumption:** Consumes `rows` once (single-pass).
61
+ */
62
+ upsertMany: (rows: Iterable<{
63
+ primary: K;
64
+ secondary: unknown;
65
+ value: V;
66
+ }>, opts?: UpsertOptions<K, V>) => void;
67
+ delete: (primary: K) => void;
68
+ /**
69
+ * Bulk delete — emits one snapshot for the whole batch. No-op if nothing was removed.
70
+ *
71
+ * **Iterable consumption:** Consumes `primaries` once (single-pass).
72
+ */
73
+ deleteMany: (primaries: Iterable<K>) => void;
74
+ clear: () => void;
75
+ /**
76
+ * Releases internal keepalive subscriptions (on `byPrimary`) so the bundle
77
+ * can be GC'd. Safe to call more than once (subsequent calls are no-ops).
78
+ * Subsequent mutations after `dispose()` still execute on the backend but
79
+ * `byPrimary` may stop updating if no external subscriber is attached.
80
+ * D6(a).
81
+ */
82
+ dispose: () => void;
83
+ };
84
+ /**
85
+ * Storage contract for {@link reactiveIndex}. Implementations own the mutable state and
86
+ * expose a monotonic `version` counter that increments on every structural change.
87
+ *
88
+ * The reactive layer reads `version` to decide when to emit; it does not inspect
89
+ * internal representation. Users can plug in B-tree / skip-list / persistent backends
90
+ * without touching the reactive emission logic.
91
+ *
92
+ * @remarks Post-1.0 op-log changesets will extend this interface with a
93
+ * `changesSince(version: number): Iterable<Change>` method. Current consumers
94
+ * should treat all methods here as stable.
95
+ *
96
+ * @category extra
97
+ */
98
+ /**
99
+ * Optional per-call options for {@link IndexBackend.upsert} and bulk upsert.
100
+ *
101
+ * @category extra
102
+ */
103
+ type UpsertOptions<K, V> = {
104
+ /**
105
+ * Skip the upsert if an existing row is considered equal to the proposed row.
106
+ * Default: no skip — every upsert advances `version`. Provide for idempotent
107
+ * keys (e.g., `(a, b) => a.secondary === b.secondary && a.value === b.value`).
108
+ */
109
+ equals?: (existing: IndexRow<K, V>, next: IndexRow<K, V>) => boolean;
110
+ };
111
+ interface IndexBackend<K, V = unknown> {
112
+ /** Monotonic mutation counter; increments on every upsert/delete/clear that changes state. */
113
+ readonly version: number;
114
+ /** Number of rows currently stored. */
115
+ readonly size: number;
116
+ /** O(1) primary-key existence check. */
117
+ has(primary: K): boolean;
118
+ /** Value lookup by primary key. */
119
+ get(primary: K): V | undefined;
120
+ /**
121
+ * Insert or replace a row. Returns `true` if a row was inserted (primary
122
+ * didn't exist), `false` otherwise (updated OR skipped via `opts.equals`).
123
+ *
124
+ * **Atomicity contract:** Either fully succeeds or throws before any state
125
+ * change; `version` advances only on state change.
126
+ */
127
+ upsert(primary: K, secondary: unknown, value: V, opts?: UpsertOptions<K, V>): boolean;
128
+ /**
129
+ * Atomic bulk upsert. Returns the number of rows that caused a state change
130
+ * (inserts + non-skipped updates). Advances `version` at most once.
131
+ * No-op if iterable is empty or all rows skipped by `opts.equals`.
132
+ *
133
+ * **Consumes `rows` once** — pass an array for multi-shot consumers.
134
+ */
135
+ upsertMany(rows: Iterable<{
136
+ primary: K;
137
+ secondary: unknown;
138
+ value: V;
139
+ }>, opts?: UpsertOptions<K, V>): number;
140
+ /** Remove a row by primary key. Returns `true` if the row existed. Advances `version` only if true. */
141
+ delete(primary: K): boolean;
142
+ /**
143
+ * Atomic bulk delete. Returns count removed. Advances `version` at most once.
144
+ * No-op if no keys were present. Consumes `primaries` once.
145
+ */
146
+ deleteMany(primaries: Iterable<K>): number;
147
+ /** Remove all rows. Returns the number removed. Advances `version` only if non-zero. */
148
+ clear(): number;
149
+ /** Rows in sorted `(secondary, primary)` order — fresh snapshot suitable for emission. */
150
+ toArray(): readonly IndexRow<K, V>[];
151
+ /** Primary-key → value map — fresh snapshot. */
152
+ toPrimaryMap(): ReadonlyMap<K, V>;
153
+ }
154
+ /**
155
+ * Default flat-array backend. Maintains `buf: IndexRow[]` sorted by `(secondary, primary)`
156
+ * and a parallel `Map<K, IndexRow>` for O(1) primary-key lookup.
157
+ *
158
+ * **Complexity:**
159
+ * - `has`, `get`: O(1)
160
+ * - `upsert`: up to 2× O(log n) bisect (locate old + locate new) + up to 2× O(n) splice (remove-old + insert-new) = O(n)
161
+ * - `upsertMany(k rows)`: O(k log n) bisect + O(k·n) splice worst case; single version bump
162
+ * - `delete`: O(log n) bisect + O(n) splice = O(n)
163
+ * - `deleteMany(k keys)`: O(k log n) + O(k·n) splice worst case; single version bump
164
+ * - `clear`: O(1)
165
+ * - `toArray`, `toPrimaryMap`: O(n)
166
+ *
167
+ * @category extra
168
+ */
169
+ declare class NativeIndexBackend<K, V = unknown> implements IndexBackend<K, V> {
170
+ private _version;
171
+ private readonly _buf;
172
+ private readonly _byPrimary;
173
+ get version(): number;
174
+ get size(): number;
175
+ has(primary: K): boolean;
176
+ get(primary: K): V | undefined;
177
+ upsert(primary: K, secondary: unknown, value: V, opts?: UpsertOptions<K, V>): boolean;
178
+ upsertMany(rows: Iterable<{
179
+ primary: K;
180
+ secondary: unknown;
181
+ value: V;
182
+ }>, opts?: UpsertOptions<K, V>): number;
183
+ delete(primary: K): boolean;
184
+ deleteMany(primaries: Iterable<K>): number;
185
+ clear(): number;
186
+ toArray(): readonly IndexRow<K, V>[];
187
+ toPrimaryMap(): ReadonlyMap<K, V>;
188
+ }
189
+ /**
190
+ * Creates a reactive index: unique primary key per row, rows sorted by `(secondary, primary)` for ordered scans.
191
+ *
192
+ * @param options - Optional `name` for `describe()` / debugging, and optional `backend` (see {@link IndexBackend}).
193
+ * @returns Bundle with `ordered` (sorted rows), `byPrimary` (map), O(1) `has` / `get` / `size`,
194
+ * imperative `upsert` / `upsertMany` / `delete` / `deleteMany` / `clear`.
195
+ *
196
+ * @remarks
197
+ * **Ordering:** `secondary` and `primary` are compared via a small total order: same primitive `typeof` uses
198
+ * numeric/string/boolean/bigint comparison; mixed or object keys fall back to `String(a).localeCompare(String(b))`
199
+ * (not identical to Python's rich comparison for exotic types).
200
+ *
201
+ * **Backend:** The default {@link NativeIndexBackend} offers O(1) primary-key lookups and O(n) upserts.
202
+ * For scale beyond a few thousand rows, supply a user-pluggable persistent/B-tree backend via the
203
+ * `backend` option — reactive emission semantics are unchanged.
204
+ *
205
+ * @example
206
+ * ```ts
207
+ * import { reactiveIndex } from "@graphrefly/graphrefly-ts";
208
+ *
209
+ * const idx = reactiveIndex<string, string>();
210
+ * idx.upsert("id1", 10, "row-a");
211
+ * idx.upsert("id2", 5, "row-b");
212
+ * ```
213
+ *
214
+ * @category extra
215
+ */
216
+ declare function reactiveIndex<K, V = unknown>(options?: ReactiveIndexOptions<K, V>): ReactiveIndexBundle<K, V>;
217
+
218
+ type ReactiveListOptions<T> = {
219
+ name?: string;
220
+ /**
221
+ * Storage backend. Defaults to `NativeListBackend` (flat mutable array).
222
+ * Users can plug in persistent / RRB-tree backends via the {@link ListBackend} interface.
223
+ */
224
+ backend?: ListBackend<T>;
225
+ /**
226
+ * Optional versioning level for the underlying `items` state node. Set at
227
+ * construction time; cannot be changed later. Pass `0` for V0 identity +
228
+ * monotonic version counter, or `1` for V1 + content-addressed cid.
229
+ */
230
+ versioning?: VersioningLevel;
231
+ };
232
+ type ReactiveListBundle<T> = {
233
+ /** Emits `readonly T[]` on each structural change (two-phase). */
234
+ readonly items: Node<readonly T[]>;
235
+ /** Current entry count (O(1)). */
236
+ readonly size: number;
237
+ /** Positional access (O(1)); supports negative indices (Python-style). Returns `undefined` on out-of-range. */
238
+ at: (index: number) => T | undefined;
239
+ append: (value: T) => void;
240
+ /** Push all values, emit one snapshot. No-op if `values` is empty. */
241
+ appendMany: (values: readonly T[]) => void;
242
+ /** Insert a value at `index`. Throws `RangeError` on out-of-range. */
243
+ insert: (index: number, value: T) => void;
244
+ /** Insert all values at `index` as one bulk op; emits one snapshot. No-op if `values` is empty. */
245
+ insertMany: (index: number, values: readonly T[]) => void;
246
+ /** Remove and return the value at `index` (default: last). Negative indices Python-style. Throws on empty / out-of-range. */
247
+ pop: (index?: number) => T;
248
+ clear: () => void;
249
+ /**
250
+ * Releases any internal keepalive subscriptions so the bundle can be
251
+ * GC'd. `reactiveList` currently holds none (no internal derived nodes),
252
+ * so `dispose()` is a no-op today — exposed for API parity with
253
+ * `reactiveIndex.dispose` / `reactiveMap.dispose` / `reactiveLog.dispose`.
254
+ * Idempotent. D6(a).
255
+ */
256
+ dispose: () => void;
257
+ };
258
+ /**
259
+ * Storage contract for {@link reactiveList}. Implementations own the mutable state
260
+ * and expose a monotonic `version` counter that increments on every structural change.
261
+ *
262
+ * The reactive layer reads `version` before and after each backend call; when it
263
+ * advances, a snapshot is emitted.
264
+ *
265
+ * @remarks Post-1.0 op-log changesets will extend this interface with a
266
+ * `changesSince(version: number): Iterable<Change>` method. Current consumers
267
+ * should treat all methods here as stable.
268
+ *
269
+ * @category extra
270
+ */
271
+ interface ListBackend<T> {
272
+ /** Monotonic mutation counter; increments on every structural change. */
273
+ readonly version: number;
274
+ /** Number of items currently stored. */
275
+ readonly size: number;
276
+ /** Positional access; `undefined` on out-of-range. */
277
+ at(index: number): T | undefined;
278
+ /** Append a single value. Advances `version`. */
279
+ append(value: T): void;
280
+ /** Append a batch. Advances `version` once. No-op if empty. */
281
+ appendMany(values: readonly T[]): void;
282
+ /** Insert at index; throws `RangeError` on out-of-range `0 <= index <= size`. Advances `version`. */
283
+ insert(index: number, value: T): void;
284
+ /** Bulk insert at index; throws on out-of-range. Advances `version` once. No-op if `values` empty. */
285
+ insertMany(index: number, values: readonly T[]): void;
286
+ /** Remove and return value at index; throws on empty / out-of-range. Advances `version`. */
287
+ pop(index: number): T;
288
+ /** Clear all entries. Returns count removed. Advances `version` only if non-zero. */
289
+ clear(): number;
290
+ /** Full snapshot as a fresh array. */
291
+ toArray(): readonly T[];
292
+ }
293
+ /**
294
+ * Default mutable-array backend.
295
+ *
296
+ * **Complexity:**
297
+ * - `at`, `size`: O(1)
298
+ * - `append`: O(1) amortized
299
+ * - `appendMany(values)`, `insertMany(index, values)`: O(n + k) where k = values.length
300
+ * - `insert`, `pop` (middle): O(n) due to splice
301
+ * - `pop` (last): O(1)
302
+ * - `clear`: O(1)
303
+ * - `toArray`: O(n)
304
+ *
305
+ * @category extra
306
+ */
307
+ declare class NativeListBackend<T> implements ListBackend<T> {
308
+ private _version;
309
+ private readonly _buf;
310
+ constructor(initial?: readonly T[]);
311
+ get version(): number;
312
+ get size(): number;
313
+ at(index: number): T | undefined;
314
+ append(value: T): void;
315
+ appendMany(values: readonly T[]): void;
316
+ insert(index: number, value: T): void;
317
+ insertMany(index: number, values: readonly T[]): void;
318
+ pop(index: number): T;
319
+ clear(): number;
320
+ toArray(): readonly T[];
321
+ }
322
+ /**
323
+ * Creates a reactive list with immutable array snapshots.
324
+ *
325
+ * @param initial - Optional initial items (copied).
326
+ * @param options - Optional `name` for `describe()` / debugging, or pluggable `backend`.
327
+ * @returns Bundle with `items` (state node), `size` / `at`, `append` / `appendMany` / `insert` /
328
+ * `insertMany` / `pop` / `clear`.
329
+ *
330
+ * @remarks
331
+ * **No `maxSize`:** insert/pop-anywhere semantics make eviction-under-cap ambiguous.
332
+ * For bounded append-heavy workloads use `reactiveLog` (head-trim is well-defined for
333
+ * append-only).
334
+ *
335
+ * **Backend:** Default {@link NativeListBackend}. For persistent / RRB-tree semantics
336
+ * supply a custom {@link ListBackend}. If you provide a `backend`, `initial` is ignored
337
+ * — seed the backend directly.
338
+ *
339
+ * @example
340
+ * ```ts
341
+ * import { reactiveList } from "@graphrefly/graphrefly-ts";
342
+ *
343
+ * const list = reactiveList<string>(["a"], { name: "queue" });
344
+ * list.append("b");
345
+ * list.insertMany(1, ["x", "y"]);
346
+ * ```
347
+ *
348
+ * @category extra
349
+ */
350
+ declare function reactiveList<T>(initial?: readonly T[], options?: ReactiveListOptions<T>): ReactiveListBundle<T>;
351
+
352
+ export { type IndexBackend, type IndexRow, type ListBackend, NativeIndexBackend, NativeListBackend, type ReactiveIndexBundle, type ReactiveIndexOptions, type ReactiveListBundle, type ReactiveListOptions, type UpsertOptions, reactiveIndex, reactiveList };