@noy-db/hub 0.3.0-pre.9 → 0.4.0-pre.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 (968) hide show
  1. package/dist/aggregate/index.js +5 -5
  2. package/dist/api-3A3S4SHH.js +20 -0
  3. package/dist/as/index.js +11 -11
  4. package/dist/attestation/index.js +18 -18
  5. package/dist/backup-YPUEKIJC.js +242 -0
  6. package/dist/backup-YPUEKIJC.js.map +1 -0
  7. package/dist/blobs/index.js +13 -11
  8. package/dist/blobs/index.js.map +1 -1
  9. package/dist/broker/index.js +92 -0
  10. package/dist/broker/index.js.map +1 -0
  11. package/dist/bundle/index.js +25 -22
  12. package/dist/bundle/index.js.map +1 -1
  13. package/dist/by/index.js +2 -2
  14. package/dist/cargo/index.js +31 -32
  15. package/dist/chunk-2PCAVW2I.js +50 -0
  16. package/dist/chunk-3ELCWU56.js +344 -0
  17. package/dist/chunk-3ELCWU56.js.map +1 -0
  18. package/dist/chunk-4GPE63GU.js +111 -0
  19. package/dist/chunk-4GPE63GU.js.map +1 -0
  20. package/dist/chunk-554KLAAN.js +778 -0
  21. package/dist/chunk-5PFOMHTB.js +135 -0
  22. package/dist/chunk-5WZXVULX.js +209 -0
  23. package/dist/chunk-6HPG2YNX.js +38 -0
  24. package/dist/chunk-6HY2X62D.js +69 -0
  25. package/dist/chunk-6NQMXTYC.js +123 -0
  26. package/dist/chunk-6XE5TMPR.js +367 -0
  27. package/dist/chunk-A4FXFAKF.js +45 -0
  28. package/dist/chunk-A5BDDEXK.js +1537 -0
  29. package/dist/chunk-A5BDDEXK.js.map +1 -0
  30. package/dist/chunk-ANATMTOA.js +205 -0
  31. package/dist/chunk-BOKIKJJB.js +94 -0
  32. package/dist/chunk-CJ5KKU6X.js +49 -0
  33. package/dist/chunk-CZTLE22N.js +381 -0
  34. package/dist/chunk-CZTLE22N.js.map +1 -0
  35. package/dist/chunk-DDHM2TLX.js +164 -0
  36. package/dist/chunk-DDHM2TLX.js.map +1 -0
  37. package/dist/chunk-DRWBEDYO.js +37 -0
  38. package/dist/chunk-DRWBEDYO.js.map +1 -0
  39. package/dist/chunk-DSBQODMZ.js +202 -0
  40. package/dist/chunk-EO43ANYJ.js +382 -0
  41. package/dist/chunk-EWPOHMN2.js +255 -0
  42. package/dist/chunk-FH52K7EG.js +50 -0
  43. package/dist/chunk-FH52K7EG.js.map +1 -0
  44. package/dist/chunk-FXZDAV62.js +826 -0
  45. package/dist/chunk-FXZDAV62.js.map +1 -0
  46. package/dist/chunk-GDG5VVYG.js +167 -0
  47. package/dist/chunk-GDG5VVYG.js.map +1 -0
  48. package/dist/chunk-GULTLPFB.js +621 -0
  49. package/dist/chunk-GULTLPFB.js.map +1 -0
  50. package/dist/chunk-GWKAVKHI.js +71 -0
  51. package/dist/chunk-H2KSZMIX.js +164 -0
  52. package/dist/chunk-HOONYZY2.js +404 -0
  53. package/dist/chunk-HQBM64EE.js +957 -0
  54. package/dist/chunk-HQBM64EE.js.map +1 -0
  55. package/dist/chunk-IAO54J4R.js +333 -0
  56. package/dist/chunk-IAO54J4R.js.map +1 -0
  57. package/dist/chunk-IFJTPAQQ.js +150 -0
  58. package/dist/chunk-IFJTPAQQ.js.map +1 -0
  59. package/dist/chunk-IGJCYUT5.js +99 -0
  60. package/dist/chunk-IGJCYUT5.js.map +1 -0
  61. package/dist/chunk-IK43HLDQ.js +739 -0
  62. package/dist/chunk-IK43HLDQ.js.map +1 -0
  63. package/dist/chunk-ISMV2QVG.js +54 -0
  64. package/dist/chunk-IY23KFNZ.js +95 -0
  65. package/dist/chunk-JBBSYJHP.js +129 -0
  66. package/dist/chunk-JFCV5QIK.js +117 -0
  67. package/dist/chunk-JK733I5V.js +23 -0
  68. package/dist/chunk-JK733I5V.js.map +1 -0
  69. package/dist/chunk-JRBNCUNT.js +371 -0
  70. package/dist/chunk-JRBNCUNT.js.map +1 -0
  71. package/dist/chunk-JVBO4SZL.js +29 -0
  72. package/dist/chunk-JVBO4SZL.js.map +1 -0
  73. package/dist/chunk-KPZS5QAQ.js +151 -0
  74. package/dist/chunk-KPZS5QAQ.js.map +1 -0
  75. package/dist/chunk-KS6SAVCZ.js +247 -0
  76. package/dist/chunk-KS6SAVCZ.js.map +1 -0
  77. package/dist/chunk-LVGTA624.js +480 -0
  78. package/dist/chunk-LVGTA624.js.map +1 -0
  79. package/dist/chunk-M75ZZHSR.js +30 -0
  80. package/dist/chunk-MT62YSPZ.js +392 -0
  81. package/dist/chunk-MT62YSPZ.js.map +1 -0
  82. package/dist/chunk-N6WF5PKC.js +29 -0
  83. package/dist/chunk-NCCBLYEB.js +150 -0
  84. package/dist/chunk-OCVM6KDH.js +99 -0
  85. package/dist/chunk-ONTBCHCP.js +80 -0
  86. package/dist/chunk-PK6JIDQ4.js +14425 -0
  87. package/dist/chunk-PK6JIDQ4.js.map +1 -0
  88. package/dist/chunk-QDPZWTN2.js +74 -0
  89. package/dist/chunk-QDPZWTN2.js.map +1 -0
  90. package/dist/chunk-R3BLCFD2.js +130 -0
  91. package/dist/chunk-RA5VTXXG.js +173 -0
  92. package/dist/chunk-RA5VTXXG.js.map +1 -0
  93. package/dist/chunk-RDXW3OBQ.js +21 -0
  94. package/dist/chunk-RFI7GGFO.js +230 -0
  95. package/dist/chunk-RJ6K6K5M.js +36 -0
  96. package/dist/chunk-RJ6K6K5M.js.map +1 -0
  97. package/dist/chunk-RNG4VRP4.js +75 -0
  98. package/dist/chunk-RTEK4C4I.js +41 -0
  99. package/dist/chunk-S3BFKGET.js +369 -0
  100. package/dist/chunk-S3BFKGET.js.map +1 -0
  101. package/dist/chunk-S6Q37VGE.js +30 -0
  102. package/dist/chunk-SMIRGMS7.js +30 -0
  103. package/dist/chunk-SMIRGMS7.js.map +1 -0
  104. package/dist/chunk-SV6EAJEP.js +86 -0
  105. package/dist/chunk-T36RFODW.js +180 -0
  106. package/dist/chunk-T36RFODW.js.map +1 -0
  107. package/dist/chunk-T3GY65MA.js +367 -0
  108. package/dist/chunk-TAGR72IR.js +515 -0
  109. package/dist/chunk-TAGR72IR.js.map +1 -0
  110. package/dist/chunk-THVIPWRF.js +495 -0
  111. package/dist/chunk-THVIPWRF.js.map +1 -0
  112. package/dist/chunk-TIGPQDYP.js +14 -0
  113. package/dist/chunk-U6JMEH2P.js +261 -0
  114. package/dist/chunk-UC2ETWF3.js +34 -0
  115. package/dist/chunk-UDSR4X4L.js +235 -0
  116. package/dist/chunk-UHNGNKLV.js +2782 -0
  117. package/dist/chunk-UHNGNKLV.js.map +1 -0
  118. package/dist/chunk-VAIS3SOM.js +74 -0
  119. package/dist/chunk-VCBHAE4R.js +124 -0
  120. package/dist/chunk-VCTXU4AT.js +32 -0
  121. package/dist/chunk-VCTXU4AT.js.map +1 -0
  122. package/dist/chunk-VEALDPHW.js +524 -0
  123. package/dist/chunk-VEALDPHW.js.map +1 -0
  124. package/dist/chunk-VKCADNMR.js +589 -0
  125. package/dist/chunk-VRBTNCM4.js +720 -0
  126. package/dist/chunk-VRBTNCM4.js.map +1 -0
  127. package/dist/chunk-VYYM3MEN.js +98 -0
  128. package/dist/chunk-VYYM3MEN.js.map +1 -0
  129. package/dist/chunk-W2OG6JOL.js +1554 -0
  130. package/dist/chunk-W2OG6JOL.js.map +1 -0
  131. package/dist/chunk-W4TCUGQR.js +1128 -0
  132. package/dist/chunk-W4TCUGQR.js.map +1 -0
  133. package/dist/chunk-WG4QBZDN.js +283 -0
  134. package/dist/chunk-WG4QBZDN.js.map +1 -0
  135. package/dist/chunk-WHXXI3W5.js +135 -0
  136. package/dist/chunk-WHXXI3W5.js.map +1 -0
  137. package/dist/chunk-WKGF2TJR.js +45 -0
  138. package/dist/chunk-WNGGJWF7.js +36 -0
  139. package/dist/chunk-WOM2HTML.js +59 -0
  140. package/dist/chunk-WQIYTNJV.js +70 -0
  141. package/dist/chunk-WZSHL6DQ.js +59 -0
  142. package/dist/chunk-XDIAFPUM.js +42 -0
  143. package/dist/chunk-XJMBYYQK.js +40 -0
  144. package/dist/chunk-XTHCN77N.js +91 -0
  145. package/dist/chunk-XUW3PXHU.js +248 -0
  146. package/dist/chunk-XUW3PXHU.js.map +1 -0
  147. package/dist/chunk-YCH5GBN6.js +99 -0
  148. package/dist/chunk-YTGDPCPW.js +155 -0
  149. package/dist/chunk-YZQOGE2L.js +23 -0
  150. package/dist/chunk-Z4PD65VQ.js +265 -0
  151. package/dist/chunk-Z4PD65VQ.js.map +1 -0
  152. package/dist/chunk-ZXEZCY6F.js +85 -0
  153. package/dist/classified/index.js +5 -5
  154. package/dist/classified-marker-QWMASIT7.js +28 -0
  155. package/dist/classified-marker-QWMASIT7.js.map +1 -0
  156. package/dist/collection-facade-KMBWNCYP.js +44 -0
  157. package/dist/computed-DSMPXG2Y.js +11 -0
  158. package/dist/consent/index.js +9 -9
  159. package/dist/cover-QJRXINN5.js +52 -0
  160. package/dist/crdt/index.js +1 -1
  161. package/dist/dead-filter-66VGI6JV.js +28 -0
  162. package/dist/delegation-SU6CV3W7.js +25 -0
  163. package/dist/derivations/index.js +12 -12
  164. package/dist/derive-6RWU4EOA.js +21 -0
  165. package/dist/enclave-TKPN2G2U.js +141 -0
  166. package/dist/executor-KGNLJD6M.js +9 -0
  167. package/dist/executor-UX4FASYZ.js +26 -0
  168. package/dist/executor-XGIS6CR7.js +9 -0
  169. package/dist/export-accessible-LKW3QV22.js +23 -0
  170. package/dist/extract-partition-UP2ARO75.js +38 -0
  171. package/dist/fanout-sidecar-B5LVUMQX.js +74 -0
  172. package/dist/find-YS6XWB46.js +11 -0
  173. package/dist/forget/index.js +10 -10
  174. package/dist/forget/index.js.map +1 -1
  175. package/dist/guards/index.js +6 -6
  176. package/dist/history/index.js +14 -11
  177. package/dist/history/index.js.map +1 -1
  178. package/dist/i18n/index.js +21 -19
  179. package/dist/i18n/index.js.map +1 -1
  180. package/dist/index.d.ts +310 -1493
  181. package/dist/index.js +331 -191
  182. package/dist/index.js.map +1 -1
  183. package/dist/indexing/index.js +7 -7
  184. package/dist/indexing/index.js.map +1 -1
  185. package/dist/issue-3ACYX7LO.js +19 -0
  186. package/dist/kernel/best-effort-revert.d.ts +52 -0
  187. package/dist/kernel/cache/index.d.ts +10 -0
  188. package/dist/kernel/cache/lru.d.ts +97 -0
  189. package/dist/kernel/cache/policy.d.ts +32 -0
  190. package/dist/kernel/collection-config.d.ts +809 -0
  191. package/dist/kernel/collection.d.ts +1522 -0
  192. package/dist/kernel/constants.d.ts +18 -0
  193. package/dist/kernel/debug.d.ts +25 -0
  194. package/dist/kernel/enclave/broker/proof.d.ts +154 -0
  195. package/dist/kernel/enclave/classify/bidx.d.ts +77 -0
  196. package/dist/kernel/enclave/classify/compare.d.ts +10 -0
  197. package/dist/kernel/enclave/classify/digest.d.ts +8 -0
  198. package/dist/kernel/enclave/classify/find.d.ts +36 -0
  199. package/dist/kernel/enclave/classify/kofn.d.ts +7 -0
  200. package/dist/kernel/enclave/classify/normalize.d.ts +7 -0
  201. package/dist/kernel/enclave/classify/reveal.d.ts +10 -0
  202. package/dist/kernel/enclave/classify/vdig.d.ts +39 -0
  203. package/dist/kernel/enclave/classify/verify.d.ts +36 -0
  204. package/dist/kernel/enclave/classify/write.d.ts +8 -0
  205. package/dist/kernel/enclave/crypto.d.ts +263 -0
  206. package/dist/kernel/enclave/index.d.ts +79 -0
  207. package/dist/kernel/enclave/record-keys/deterministic.d.ts +55 -0
  208. package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
  209. package/dist/kernel/enclave/record-keys/lifecycle.d.ts +107 -0
  210. package/dist/kernel/enclave/record-keys/record-codec.d.ts +328 -0
  211. package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +14 -0
  212. package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +123 -0
  213. package/dist/kernel/enclave/record-keys/sealing.d.ts +70 -0
  214. package/dist/kernel/enclave/record-keys/tombstone.d.ts +57 -0
  215. package/dist/kernel/env-check.d.ts +1 -0
  216. package/dist/kernel/errors.d.ts +1927 -0
  217. package/dist/kernel/events.d.ts +11 -0
  218. package/dist/kernel/lazy-count.d.ts +13 -0
  219. package/dist/kernel/memory-store.d.ts +17 -0
  220. package/dist/kernel/mutation.d.ts +14 -0
  221. package/dist/kernel/noydb.d.ts +836 -0
  222. package/dist/kernel/paths.d.ts +25 -0
  223. package/dist/kernel/query/builder.d.ts +520 -0
  224. package/dist/kernel/query/index.d.ts +31 -0
  225. package/dist/kernel/query/join.d.ts +205 -0
  226. package/dist/kernel/query/live.d.ts +111 -0
  227. package/dist/kernel/query/predicate.d.ts +139 -0
  228. package/dist/kernel/query/scan-builder.d.ts +334 -0
  229. package/dist/kernel/refs.d.ts +205 -0
  230. package/dist/kernel/schema.d.ts +134 -0
  231. package/dist/kernel/sync-policy.d.ts +188 -0
  232. package/dist/kernel/tier-visibility.d.ts +54 -0
  233. package/dist/kernel/types.d.ts +3245 -0
  234. package/dist/kernel/util/discriminant.d.ts +58 -0
  235. package/dist/kernel/util/index.d.ts +14 -0
  236. package/dist/kernel/util/sanitize-filename.d.ts +75 -0
  237. package/dist/kernel/validation.d.ts +130 -0
  238. package/dist/kernel/vault.d.ts +1744 -0
  239. package/dist/kernel/via/compose.d.ts +144 -0
  240. package/dist/kernel/via/dispatch.d.ts +195 -0
  241. package/dist/kernel/via/graph-wiring.d.ts +145 -0
  242. package/dist/kernel/via/graph.d.ts +166 -0
  243. package/dist/kernel/via/index.d.ts +200 -0
  244. package/dist/kernel/via/pipeline.d.ts +266 -0
  245. package/dist/kernel/via/reconcile.d.ts +153 -0
  246. package/dist/kernel/via/taint-binding.d.ts +66 -0
  247. package/dist/kernel/write-queue.d.ts +46 -0
  248. package/dist/ledger-PTK7XZYT.js +42 -0
  249. package/dist/legacy/bundle.d.ts +30 -0
  250. package/dist/legacy/kernel.d.ts +33 -0
  251. package/dist/liberate-MQQXBUCY.js +24 -0
  252. package/dist/link-set-SLJHDNRB.js +31 -0
  253. package/dist/materialized-views/index.js +20 -17
  254. package/dist/noydb-ANIW5FLE.js +69 -0
  255. package/dist/on/index.js +9 -9
  256. package/dist/overlay-views/index.js +4 -4
  257. package/dist/periods/index.js +12 -12
  258. package/dist/pod/index.js +13 -11
  259. package/dist/policy-YDLCOX4P.js +41 -0
  260. package/dist/port/as/index.d.ts +26 -0
  261. package/dist/port/at/index.d.ts +18 -0
  262. package/dist/port/by/default-provider.d.ts +9 -0
  263. package/dist/port/by/index.d.ts +17 -0
  264. package/dist/port/by/types.d.ts +86 -0
  265. package/dist/port/in/index.d.ts +21 -0
  266. package/dist/port/on/index.d.ts +27 -0
  267. package/dist/port/to/index.d.ts +19 -0
  268. package/dist/port/ui/index.d.ts +21 -0
  269. package/dist/port/with/blob-strategy.d.ts +98 -0
  270. package/dist/port/with/broker-strategy.d.ts +84 -0
  271. package/dist/port/with/capabilities.d.ts +31 -0
  272. package/dist/port/with/classified-marker.d.ts +9 -0
  273. package/dist/port/with/classified-strategy.d.ts +62 -0
  274. package/dist/port/with/computed-strategy.d.ts +19 -0
  275. package/dist/port/with/i18n-strategy.d.ts +175 -0
  276. package/dist/port/with/index.d.ts +18 -0
  277. package/dist/port/with/lazy-strategy.d.ts +48 -0
  278. package/dist/port/with/lookup-strategy.d.ts +129 -0
  279. package/dist/port/with/service-bus.d.ts +156 -0
  280. package/dist/port/with/team-strategy.d.ts +36 -0
  281. package/dist/port/with/write-hooks.d.ts +34 -0
  282. package/dist/portability/index.js +8 -8
  283. package/dist/post-register-2YHSADFI.js +60 -0
  284. package/dist/post-register-2YHSADFI.js.map +1 -0
  285. package/dist/purge-scope-FGNNLWHD.js +24 -0
  286. package/dist/purge-scope-FGNNLWHD.js.map +1 -0
  287. package/dist/query/index.js +12 -10
  288. package/dist/read-only-facade-CHCKSEPD.js +8 -0
  289. package/dist/register-PAM3ASRZ.js +23 -0
  290. package/dist/registry-4S2U2TR4.js +19 -0
  291. package/dist/registry-NPOWJHC4.js +9 -0
  292. package/dist/registry-VZ3CCI2R.js +18 -0
  293. package/dist/request-withdrawal-DI3H5WUI.js +31 -0
  294. package/dist/reveal-HWO4YMTJ.js +38 -0
  295. package/dist/reveal-HWO4YMTJ.js.map +1 -0
  296. package/dist/revoke-R5CZSVUT.js +24 -0
  297. package/dist/satellites/index.js +1 -1
  298. package/dist/sealed-record/index.js +12 -12
  299. package/dist/seed-3ZMF5EQA.js +231 -0
  300. package/dist/seed-3ZMF5EQA.js.map +1 -0
  301. package/dist/session/index.js +9 -9
  302. package/dist/shadow/index.js +2 -2
  303. package/dist/signer-MBVHW4WE.js +25 -0
  304. package/dist/snapshots/index.js +10 -10
  305. package/dist/stale-VZL4OGUB.js +29 -0
  306. package/dist/storage-3MEJUENZ.js +23 -0
  307. package/dist/store-coordination-provider-FKX3F6TQ.js +142 -0
  308. package/dist/sync/index.js +9 -9
  309. package/dist/team/index.js +15 -15
  310. package/dist/tiers/index.js +14 -10
  311. package/dist/to/index.js +1 -2
  312. package/dist/tx/index.js +3 -3
  313. package/dist/util/index.js +1 -1
  314. package/dist/verify-26Y5GNMK.js +140 -0
  315. package/dist/verify-26Y5GNMK.js.map +1 -0
  316. package/dist/via/blob/active.d.ts +34 -0
  317. package/dist/via/blob/binding.d.ts +86 -0
  318. package/dist/via/blob/index.d.ts +34 -0
  319. package/dist/via/classified/active.d.ts +3 -0
  320. package/dist/via/classified/binding.d.ts +83 -0
  321. package/dist/via/classified/config-drift.d.ts +34 -0
  322. package/dist/via/classified/descriptor.d.ts +66 -0
  323. package/dist/via/classified/errors.d.ts +19 -0
  324. package/dist/via/classified/guards.d.ts +23 -0
  325. package/dist/via/classified/index.d.ts +11 -0
  326. package/dist/via/classified/presets.d.ts +65 -0
  327. package/dist/via/classified/resolve.d.ts +9 -0
  328. package/dist/via/classified/strategy.d.ts +11 -0
  329. package/dist/via/classified/validators.d.ts +3 -0
  330. package/dist/via/classified/write.d.ts +4 -0
  331. package/dist/via/computed/binding.d.ts +34 -0
  332. package/dist/via/computed/descriptor.d.ts +35 -0
  333. package/dist/via/i18n/active.d.ts +28 -0
  334. package/dist/via/i18n/binding.d.ts +36 -0
  335. package/dist/via/i18n/core.d.ts +267 -0
  336. package/dist/via/i18n/densify.d.ts +24 -0
  337. package/dist/via/i18n/dictionary.d.ts +200 -0
  338. package/dist/via/i18n/index.d.ts +21 -0
  339. package/dist/via/i18n/policy.d.ts +44 -0
  340. package/dist/via/i18n/script.d.ts +26 -0
  341. package/dist/via/i18n/strategy.d.ts +13 -0
  342. package/dist/via/lookup/active.d.ts +19 -0
  343. package/dist/via/lookup/binding.d.ts +99 -0
  344. package/dist/via/lookup/descriptor.d.ts +123 -0
  345. package/dist/via/lookup/handle.d.ts +220 -0
  346. package/dist/via/lookup/index.d.ts +17 -0
  347. package/dist/via/lookup/registry.d.ts +228 -0
  348. package/dist/via/lookup/snapshot.d.ts +67 -0
  349. package/dist/via/money/arith.d.ts +68 -0
  350. package/dist/via/money/binding.d.ts +21 -0
  351. package/dist/via/money/branded.d.ts +61 -0
  352. package/dist/via/money/descriptor.d.ts +73 -0
  353. package/dist/via/money/fixed-point.d.ts +51 -0
  354. package/dist/via/money/index.d.ts +15 -0
  355. package/dist/via/money/iso4217.d.ts +6 -0
  356. package/dist/via/money/money-reducer.d.ts +33 -0
  357. package/dist/via/money/normalize.d.ts +105 -0
  358. package/dist/via/money/paths.d.ts +61 -0
  359. package/dist/via/money/where.d.ts +127 -0
  360. package/dist/walk-IPLXE36W.js +241 -0
  361. package/dist/with/index.js +11 -11
  362. package/dist/with-audit/attestation/active.d.ts +10 -0
  363. package/dist/with-audit/attestation/index.d.ts +16 -0
  364. package/dist/with-audit/attestation/issue.d.ts +29 -0
  365. package/dist/with-audit/attestation/revoke.d.ts +15 -0
  366. package/dist/with-audit/attestation/signer.d.ts +33 -0
  367. package/dist/with-audit/attestation/strategy.d.ts +44 -0
  368. package/dist/with-audit/attestation/vault-facade.d.ts +62 -0
  369. package/dist/with-audit/consent/active.d.ts +14 -0
  370. package/dist/with-audit/consent/consent.d.ts +114 -0
  371. package/dist/with-audit/consent/index.d.ts +14 -0
  372. package/dist/with-audit/consent/strategy.d.ts +36 -0
  373. package/dist/with-audit/forget/active.d.ts +31 -0
  374. package/dist/with-audit/forget/index.d.ts +28 -0
  375. package/dist/with-audit/forget/purge-scope.d.ts +54 -0
  376. package/dist/with-audit/forget/strategy.d.ts +199 -0
  377. package/dist/with-audit/forget/subject-index.d.ts +83 -0
  378. package/dist/with-audit/guards/executor.d.ts +26 -0
  379. package/dist/with-audit/guards/immutable-guard.d.ts +63 -0
  380. package/dist/with-audit/guards/index.d.ts +10 -0
  381. package/dist/with-audit/guards/read-only-facade.d.ts +31 -0
  382. package/dist/with-audit/guards/registry.d.ts +83 -0
  383. package/dist/with-audit/guards/transition-guard.d.ts +82 -0
  384. package/dist/with-audit/guards/types.d.ts +134 -0
  385. package/dist/with-audit/guards/with-guard.d.ts +15 -0
  386. package/dist/with-audit/periods/active.d.ts +11 -0
  387. package/dist/with-audit/periods/index.d.ts +18 -0
  388. package/dist/with-audit/periods/periods.d.ts +417 -0
  389. package/dist/with-audit/periods/strategy.d.ts +32 -0
  390. package/dist/with-audit/periods/vault-facade.d.ts +95 -0
  391. package/dist/with-audit/portability/active.d.ts +11 -0
  392. package/dist/with-audit/portability/export-accessible.d.ts +46 -0
  393. package/dist/with-audit/portability/index.d.ts +18 -0
  394. package/dist/with-audit/portability/request-withdrawal.d.ts +85 -0
  395. package/dist/with-audit/portability/strategy.d.ts +31 -0
  396. package/dist/with-audit/portability/withdraw-accessible.d.ts +82 -0
  397. package/dist/with-audit/sealed-record/active.d.ts +9 -0
  398. package/dist/with-audit/sealed-record/index.d.ts +55 -0
  399. package/dist/with-audit/sealed-record/strategy.d.ts +34 -0
  400. package/dist/with-audit/sealed-record/types.d.ts +27 -0
  401. package/dist/with-audit/tiers/active.d.ts +9 -0
  402. package/dist/with-audit/tiers/index.d.ts +394 -0
  403. package/dist/with-audit/tiers/strategy.d.ts +36 -0
  404. package/dist/with-cargo/active.d.ts +11 -0
  405. package/dist/with-cargo/adopt-partition.d.ts +81 -0
  406. package/dist/with-cargo/decrypt-partition.d.ts +19 -0
  407. package/dist/with-cargo/describe-extraction.d.ts +41 -0
  408. package/dist/with-cargo/extract-partition.d.ts +155 -0
  409. package/dist/with-cargo/index.d.ts +33 -0
  410. package/dist/with-cargo/strategy.d.ts +30 -0
  411. package/dist/with-cargo/vault-diff.d.ts +144 -0
  412. package/dist/with-cargo/walk-closure.d.ts +67 -0
  413. package/dist/with-commit/crdt/active.d.ts +25 -0
  414. package/dist/with-commit/crdt/crdt.d.ts +42 -0
  415. package/dist/with-commit/crdt/index.d.ts +16 -0
  416. package/dist/with-commit/crdt/strategy.d.ts +25 -0
  417. package/dist/with-commit/history/active.d.ts +40 -0
  418. package/dist/with-commit/history/diff.d.ts +23 -0
  419. package/dist/with-commit/history/history.d.ts +73 -0
  420. package/dist/with-commit/history/index.d.ts +30 -0
  421. package/dist/with-commit/history/ledger/constants.d.ts +37 -0
  422. package/dist/with-commit/history/ledger/entry.d.ts +195 -0
  423. package/dist/with-commit/history/ledger/hash.d.ts +30 -0
  424. package/dist/with-commit/history/ledger/index.d.ts +19 -0
  425. package/dist/with-commit/history/ledger/patch.d.ts +99 -0
  426. package/dist/with-commit/history/ledger/store.d.ts +356 -0
  427. package/dist/with-commit/history/strategy.d.ts +136 -0
  428. package/dist/with-commit/history/time-machine.d.ts +202 -0
  429. package/dist/with-commit/numbering/descriptor.d.ts +27 -0
  430. package/dist/with-commit/numbering/index.d.ts +69 -0
  431. package/dist/with-commit/sequence/active.d.ts +10 -0
  432. package/dist/with-commit/sequence/index.d.ts +150 -0
  433. package/dist/with-commit/sequence/strategy.d.ts +26 -0
  434. package/dist/with-commit/tx/active.d.ts +27 -0
  435. package/dist/with-commit/tx/dry-run.d.ts +29 -0
  436. package/dist/with-commit/tx/elevated-handle.d.ts +59 -0
  437. package/dist/with-commit/tx/index.d.ts +13 -0
  438. package/dist/with-commit/tx/invariants.d.ts +68 -0
  439. package/dist/with-commit/tx/strategy.d.ts +23 -0
  440. package/dist/with-commit/tx/transaction.d.ts +212 -0
  441. package/dist/with-fork/archive/engine.d.ts +71 -0
  442. package/dist/with-fork/archive/index.d.ts +23 -0
  443. package/dist/with-fork/shadow/active.d.ts +6 -0
  444. package/dist/with-fork/shadow/index.d.ts +14 -0
  445. package/dist/with-fork/shadow/strategy.d.ts +28 -0
  446. package/dist/with-fork/shadow/vault-frame.d.ts +93 -0
  447. package/dist/with-fork/snapshots/active.d.ts +20 -0
  448. package/dist/with-fork/snapshots/engine.d.ts +36 -0
  449. package/dist/with-fork/snapshots/index.d.ts +5 -0
  450. package/dist/with-fork/snapshots/noydb-facade.d.ts +64 -0
  451. package/dist/with-fork/snapshots/policy.d.ts +23 -0
  452. package/dist/with-fork/snapshots/scheduler.d.ts +34 -0
  453. package/dist/with-fork/snapshots/strategy.d.ts +48 -0
  454. package/dist/with-formula/computed/index.d.ts +48 -0
  455. package/dist/with-formula/computed/lazy.d.ts +13 -0
  456. package/dist/with-formula/derivations/executor.d.ts +61 -0
  457. package/dist/with-formula/derivations/fanout-sidecar.d.ts +75 -0
  458. package/dist/with-formula/derivations/index.d.ts +6 -0
  459. package/dist/with-formula/derivations/registry.d.ts +67 -0
  460. package/dist/with-formula/derivations/stale.d.ts +39 -0
  461. package/dist/with-formula/derivations/strategy-hash.d.ts +1 -0
  462. package/dist/with-formula/derivations/types.d.ts +248 -0
  463. package/dist/with-formula/derivations/with-derivation.d.ts +10 -0
  464. package/dist/with-formula/derivations/with-rollup.d.ts +34 -0
  465. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +73 -0
  466. package/dist/with-formula/materialized-views/executor.d.ts +80 -0
  467. package/dist/with-formula/materialized-views/index.d.ts +11 -0
  468. package/dist/with-formula/materialized-views/query-hash.d.ts +23 -0
  469. package/dist/with-formula/materialized-views/registry.d.ts +128 -0
  470. package/dist/with-formula/materialized-views/stale.d.ts +113 -0
  471. package/dist/with-formula/materialized-views/types.d.ts +399 -0
  472. package/dist/with-formula/materialized-views/with-materialized-view.d.ts +28 -0
  473. package/dist/with-formula/overlay-views/index.d.ts +5 -0
  474. package/dist/with-formula/overlay-views/registry.d.ts +42 -0
  475. package/dist/with-formula/overlay-views/types.d.ts +97 -0
  476. package/dist/with-formula/overlay-views/virtual-collection.d.ts +90 -0
  477. package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +9 -0
  478. package/dist/with-lookup/aggregate/active.d.ts +33 -0
  479. package/dist/with-lookup/aggregate/aggregation.d.ts +166 -0
  480. package/dist/with-lookup/aggregate/canonical-key.d.ts +16 -0
  481. package/dist/with-lookup/aggregate/groupby.d.ts +280 -0
  482. package/dist/with-lookup/aggregate/index.d.ts +23 -0
  483. package/dist/with-lookup/aggregate/reducers.d.ts +257 -0
  484. package/dist/with-lookup/aggregate/strategy.d.ts +59 -0
  485. package/dist/with-lookup/embeddings/cosine.d.ts +2 -0
  486. package/dist/with-lookup/embeddings/descriptor.d.ts +8 -0
  487. package/dist/with-lookup/embeddings/index.d.ts +4 -0
  488. package/dist/with-lookup/embeddings/vec-id.d.ts +47 -0
  489. package/dist/with-lookup/embeddings/vector-set.d.ts +19 -0
  490. package/dist/with-lookup/indexing/active.d.ts +30 -0
  491. package/dist/with-lookup/indexing/collection-facade.d.ts +157 -0
  492. package/dist/with-lookup/indexing/eager-indexes.d.ts +122 -0
  493. package/dist/with-lookup/indexing/index.d.ts +27 -0
  494. package/dist/with-lookup/indexing/lazy-builder.d.ts +102 -0
  495. package/dist/with-lookup/indexing/persisted-indexes.d.ts +229 -0
  496. package/dist/with-lookup/indexing/strategy.d.ts +56 -0
  497. package/dist/with-lookup/indexing/unique-constraints.d.ts +74 -0
  498. package/dist/with-lookup/search/active.d.ts +10 -0
  499. package/dist/with-lookup/search/build-docs.d.ts +15 -0
  500. package/dist/with-lookup/search/collection-facade.d.ts +163 -0
  501. package/dist/with-lookup/search/fuse.d.ts +22 -0
  502. package/dist/with-lookup/search/index-store.d.ts +19 -0
  503. package/dist/with-lookup/search/index.d.ts +19 -0
  504. package/dist/with-lookup/search/inverted-index.d.ts +47 -0
  505. package/dist/with-lookup/search/persisted-index-store.d.ts +121 -0
  506. package/dist/with-lookup/search/retrieve-types.d.ts +29 -0
  507. package/dist/with-lookup/search/scan.d.ts +28 -0
  508. package/dist/with-lookup/search/segment.d.ts +15 -0
  509. package/dist/with-lookup/search/serialize.d.ts +4 -0
  510. package/dist/with-lookup/search/snippet.d.ts +5 -0
  511. package/dist/with-lookup/search/strategy.d.ts +41 -0
  512. package/dist/with-lookup/search/tokenize.d.ts +12 -0
  513. package/dist/with-party/auth-introspection/index.d.ts +44 -0
  514. package/dist/with-party/broker/active.d.ts +23 -0
  515. package/dist/with-party/broker/index.d.ts +28 -0
  516. package/dist/with-party/broker/seed.d.ts +77 -0
  517. package/dist/with-party/custody/active.d.ts +10 -0
  518. package/dist/with-party/custody/index.d.ts +69 -0
  519. package/dist/with-party/custody/liberate.d.ts +64 -0
  520. package/dist/with-party/custody/strategy.d.ts +48 -0
  521. package/dist/with-party/directory/cover/custom.d.ts +34 -0
  522. package/dist/with-party/directory/cover/index.d.ts +19 -0
  523. package/dist/with-party/directory/cover/schema.d.ts +39 -0
  524. package/dist/with-party/directory/cover/storage.d.ts +71 -0
  525. package/dist/with-party/directory/cover/types.d.ts +149 -0
  526. package/dist/with-party/directory/index.d.ts +11 -0
  527. package/dist/with-party/directory/storage.d.ts +33 -0
  528. package/dist/with-party/directory/types.d.ts +43 -0
  529. package/dist/with-party/directory/user-envelope/api.d.ts +201 -0
  530. package/dist/with-party/directory/user-envelope/index.d.ts +12 -0
  531. package/dist/with-party/directory/user-envelope/storage.d.ts +54 -0
  532. package/dist/with-party/directory/visibility.d.ts +47 -0
  533. package/dist/with-party/policy/engine.d.ts +60 -0
  534. package/dist/with-party/policy/index.d.ts +15 -0
  535. package/dist/with-party/policy/noydb-facade.d.ts +39 -0
  536. package/dist/with-party/policy/presets.d.ts +38 -0
  537. package/dist/with-party/policy/storage.d.ts +31 -0
  538. package/dist/with-party/session/active.d.ts +34 -0
  539. package/dist/with-party/session/dev-unlock.d.ts +128 -0
  540. package/dist/with-party/session/index.d.ts +23 -0
  541. package/dist/with-party/session/session-policy.d.ts +92 -0
  542. package/dist/with-party/session/session.d.ts +131 -0
  543. package/dist/with-party/session/strategy.d.ts +42 -0
  544. package/dist/with-party/session/unlock-state.d.ts +47 -0
  545. package/dist/with-party/sync/index.d.ts +31 -0
  546. package/dist/with-party/tab-coordination.d.ts +73 -0
  547. package/dist/with-party/tab-write-relay.d.ts +39 -0
  548. package/dist/with-party/team/active.d.ts +13 -0
  549. package/dist/with-party/team/authenticators.d.ts +95 -0
  550. package/dist/with-party/team/deed.d.ts +97 -0
  551. package/dist/with-party/team/delegation.d.ts +88 -0
  552. package/dist/with-party/team/index.d.ts +38 -0
  553. package/dist/with-party/team/keyring.d.ts +318 -0
  554. package/dist/with-party/team/magic-link-grant.d.ts +152 -0
  555. package/dist/with-party/team/managed-passphrase.d.ts +280 -0
  556. package/dist/with-party/team/noydb-facade.d.ts +484 -0
  557. package/dist/with-party/team/peer-recover.d.ts +81 -0
  558. package/dist/with-party/team/presence.d.ts +81 -0
  559. package/dist/with-party/team/recovery.d.ts +191 -0
  560. package/dist/with-party/team/reserved-secret-collections.d.ts +41 -0
  561. package/dist/with-party/team/rotate-recover.d.ts +275 -0
  562. package/dist/with-party/team/shamir-recovery-provider.d.ts +15 -0
  563. package/dist/with-party/team/strategy.d.ts +9 -0
  564. package/dist/with-party/team/sync-active.d.ts +33 -0
  565. package/dist/with-party/team/sync-credentials.d.ts +113 -0
  566. package/dist/with-party/team/sync-strategy.d.ts +67 -0
  567. package/dist/with-party/team/sync-transaction.d.ts +39 -0
  568. package/dist/with-party/team/sync.d.ts +174 -0
  569. package/dist/with-party/team/tiers.d.ts +39 -0
  570. package/dist/with-party/team/wrapped-deks.d.ts +86 -0
  571. package/dist/with-pod/backup.d.ts +74 -0
  572. package/dist/with-pod/bundle.d.ts +416 -0
  573. package/dist/with-pod/format.d.ts +207 -0
  574. package/dist/with-pod/index.d.ts +21 -0
  575. package/dist/with-pod/pod-store.d.ts +54 -0
  576. package/dist/with-pod/ulid.d.ts +64 -0
  577. package/dist/with-shape/blobs/blob-compaction.d.ts +170 -0
  578. package/dist/with-shape/blobs/blob-intent.d.ts +153 -0
  579. package/dist/with-shape/blobs/blob-set.d.ts +1286 -0
  580. package/dist/with-shape/blobs/export-blobs.d.ts +110 -0
  581. package/dist/with-shape/blobs/import-external.d.ts +50 -0
  582. package/dist/with-shape/blobs/mime-magic.d.ts +48 -0
  583. package/dist/with-shape/blobs/object-projection.d.ts +70 -0
  584. package/dist/with-shape/introspection/describe.d.ts +237 -0
  585. package/dist/with-shape/introspection/field-meta.d.ts +61 -0
  586. package/dist/with-shape/introspection/fields.d.ts +14 -0
  587. package/dist/with-shape/introspection/index.d.ts +12 -0
  588. package/dist/with-shape/introspection/json-schema.d.ts +13 -0
  589. package/dist/with-shape/introspection/meta.d.ts +22 -0
  590. package/dist/with-shape/introspection/projection.d.ts +13 -0
  591. package/dist/with-shape/introspection/types.d.ts +154 -0
  592. package/dist/with-shape/introspection/walk.d.ts +50 -0
  593. package/dist/with-shape/links/lazy-handle.d.ts +36 -0
  594. package/dist/with-shape/links/link-set.d.ts +67 -0
  595. package/dist/with-shape/links/names.d.ts +65 -0
  596. package/dist/with-shape/links/vault-facade.d.ts +211 -0
  597. package/dist/with-shape/persisted-schemas/canonicalize.d.ts +11 -0
  598. package/dist/with-shape/persisted-schemas/derive.d.ts +29 -0
  599. package/dist/with-shape/persisted-schemas/index.d.ts +21 -0
  600. package/dist/with-shape/persisted-schemas/register.d.ts +66 -0
  601. package/dist/with-shape/persisted-schemas/storage.d.ts +61 -0
  602. package/dist/with-shape/persisted-schemas/types.d.ts +54 -0
  603. package/dist/with-shape/satellites/dead-filter.d.ts +21 -0
  604. package/dist/with-shape/satellites/declare.d.ts +60 -0
  605. package/dist/with-shape/satellites/existence.d.ts +5 -0
  606. package/dist/with-shape/satellites/fanout.d.ts +38 -0
  607. package/dist/with-shape/satellites/forget.d.ts +47 -0
  608. package/dist/with-shape/satellites/index.d.ts +3 -0
  609. package/dist/with-shape/satellites/joined.d.ts +19 -0
  610. package/dist/with-shape/satellites/marker.d.ts +10 -0
  611. package/dist/with-shape/satellites/migrate-cek.d.ts +26 -0
  612. package/dist/with-shape/satellites/post-register.d.ts +6 -0
  613. package/dist/with-shape/satellites/proxy.d.ts +37 -0
  614. package/dist/with-shape/satellites/raw-target.d.ts +14 -0
  615. package/dist/with-shape/satellites/registry.d.ts +19 -0
  616. package/dist/with-shape/satellites/types.d.ts +37 -0
  617. package/dist/with-shape/satellites/validate.d.ts +17 -0
  618. package/dist/with-shape/schema-update/client-registry.d.ts +35 -0
  619. package/dist/with-shape/schema-update/cutover.d.ts +5 -0
  620. package/dist/with-shape/schema-update/delta.d.ts +2 -0
  621. package/dist/with-shape/schema-update/dispatch.d.ts +3 -0
  622. package/dist/with-shape/schema-update/fence-controller.d.ts +62 -0
  623. package/dist/with-shape/schema-update/fence-watcher.d.ts +37 -0
  624. package/dist/with-shape/schema-update/fence.d.ts +15 -0
  625. package/dist/with-shape/schema-update/gate.d.ts +16 -0
  626. package/dist/with-shape/schema-update/index.d.ts +6 -0
  627. package/dist/with-shape/schema-update/store-coordination-provider.d.ts +29 -0
  628. package/dist/with-shape/schema-update/strategies.d.ts +12 -0
  629. package/dist/with-shape/schema-update/types.d.ts +53 -0
  630. package/dist/with-store/index.d.ts +15 -0
  631. package/dist/with-store/lazy/active.d.ts +12 -0
  632. package/dist/with-store/lazy/index.d.ts +14 -0
  633. package/dist/with-store/lazy/strategy.d.ts +9 -0
  634. package/dist/with-store/route-store.d.ts +259 -0
  635. package/dist/with-store/store-middleware.d.ts +189 -0
  636. package/dist/withdraw-accessible-TZDATQVR.js +28 -0
  637. package/package.json +47 -55
  638. package/dist/adapter/index.d.ts +0 -4
  639. package/dist/adapter/index.js +0 -15
  640. package/dist/aggregate/index.d.ts +0 -41
  641. package/dist/api-HV4PDUWF.js +0 -20
  642. package/dist/as/index.d.ts +0 -6
  643. package/dist/at/index.d.ts +0 -4
  644. package/dist/attestation/index.d.ts +0 -19
  645. package/dist/backup-ODXO7OGA.js +0 -225
  646. package/dist/backup-ODXO7OGA.js.map +0 -1
  647. package/dist/blobs/index.d.ts +0 -43
  648. package/dist/bundle/index.d.ts +0 -121
  649. package/dist/bundle-DlSxo31R.d.ts +0 -548
  650. package/dist/by/index.d.ts +0 -1
  651. package/dist/cargo/index.d.ts +0 -8
  652. package/dist/chunk-2644KEGW.js +0 -247
  653. package/dist/chunk-2644KEGW.js.map +0 -1
  654. package/dist/chunk-2HVUKRNE.js +0 -21
  655. package/dist/chunk-2KOSJTMU.js +0 -69
  656. package/dist/chunk-2UQ4RMHV.js +0 -167
  657. package/dist/chunk-2UQ4RMHV.js.map +0 -1
  658. package/dist/chunk-2XE6LIXT.js +0 -515
  659. package/dist/chunk-2XE6LIXT.js.map +0 -1
  660. package/dist/chunk-34RRRIC3.js +0 -71
  661. package/dist/chunk-3C5CKXFI.js +0 -621
  662. package/dist/chunk-3C5CKXFI.js.map +0 -1
  663. package/dist/chunk-3I4KYWNP.js +0 -30
  664. package/dist/chunk-42KVY3OC.js +0 -86
  665. package/dist/chunk-4C4WBS4V.js +0 -13822
  666. package/dist/chunk-4C4WBS4V.js.map +0 -1
  667. package/dist/chunk-4G3IT7J7.js +0 -280
  668. package/dist/chunk-4G3IT7J7.js.map +0 -1
  669. package/dist/chunk-4RQ62VSR.js +0 -53
  670. package/dist/chunk-4RQ62VSR.js.map +0 -1
  671. package/dist/chunk-4ZSGSRBI.js +0 -1221
  672. package/dist/chunk-4ZSGSRBI.js.map +0 -1
  673. package/dist/chunk-5GAX2QOH.js +0 -132
  674. package/dist/chunk-5GAX2QOH.js.map +0 -1
  675. package/dist/chunk-5SAZMBW7.js +0 -202
  676. package/dist/chunk-5TZZUL5X.js +0 -30
  677. package/dist/chunk-6CU3FN74.js +0 -777
  678. package/dist/chunk-6G2SCQYS.js +0 -29
  679. package/dist/chunk-6G2SCQYS.js.map +0 -1
  680. package/dist/chunk-6MWUANRF.js +0 -29
  681. package/dist/chunk-6S7T6WC4.js +0 -111
  682. package/dist/chunk-6S7T6WC4.js.map +0 -1
  683. package/dist/chunk-6ULCYCMU.js +0 -74
  684. package/dist/chunk-7HAPHVRJ.js +0 -1695
  685. package/dist/chunk-7HAPHVRJ.js.map +0 -1
  686. package/dist/chunk-7IZQTCTR.js +0 -382
  687. package/dist/chunk-7ZANJ6JZ.js +0 -265
  688. package/dist/chunk-7ZANJ6JZ.js.map +0 -1
  689. package/dist/chunk-A2APWS32.js +0 -150
  690. package/dist/chunk-A2APWS32.js.map +0 -1
  691. package/dist/chunk-A4MAD6PO.js +0 -99
  692. package/dist/chunk-ANDBBA2P.js +0 -36
  693. package/dist/chunk-ANDBBA2P.js.map +0 -1
  694. package/dist/chunk-AUR7MRHA.js +0 -404
  695. package/dist/chunk-AYGZMQP5.js +0 -75
  696. package/dist/chunk-BGIZAFY7.js +0 -1
  697. package/dist/chunk-CJEMA2Z6.js +0 -230
  698. package/dist/chunk-CTSFKDGA.js +0 -40
  699. package/dist/chunk-CU62BBRB.js +0 -1465
  700. package/dist/chunk-CU62BBRB.js.map +0 -1
  701. package/dist/chunk-CWCCYH34.js +0 -23
  702. package/dist/chunk-DEYAO3N6.js +0 -589
  703. package/dist/chunk-DFIBOSOQ.js +0 -85
  704. package/dist/chunk-E5AHO65E.js +0 -150
  705. package/dist/chunk-FC3XK5JT.js +0 -99
  706. package/dist/chunk-FGOGS7CE.js +0 -662
  707. package/dist/chunk-FGOGS7CE.js.map +0 -1
  708. package/dist/chunk-GX2BYNCT.js +0 -117
  709. package/dist/chunk-GZ2MOPVX.js +0 -291
  710. package/dist/chunk-GZ2MOPVX.js.map +0 -1
  711. package/dist/chunk-H57P2SJB.js +0 -126
  712. package/dist/chunk-H57P2SJB.js.map +0 -1
  713. package/dist/chunk-HBTT7YQX.js +0 -94
  714. package/dist/chunk-HOCEGVGQ.js +0 -36
  715. package/dist/chunk-ICV32FPK.js +0 -50
  716. package/dist/chunk-IIP5WFVT.js +0 -462
  717. package/dist/chunk-IIP5WFVT.js.map +0 -1
  718. package/dist/chunk-IUKGIB2Q.js +0 -91
  719. package/dist/chunk-IWTYFS3D.js +0 -129
  720. package/dist/chunk-JC5R7P44.js +0 -355
  721. package/dist/chunk-JC5R7P44.js.map +0 -1
  722. package/dist/chunk-K2WCO3NX.js +0 -1
  723. package/dist/chunk-KBBWY46Y.js +0 -14
  724. package/dist/chunk-KBF5GSGX.js +0 -367
  725. package/dist/chunk-KCG3BHFG.js +0 -99
  726. package/dist/chunk-KCG3BHFG.js.map +0 -1
  727. package/dist/chunk-KNXN47MO.js +0 -155
  728. package/dist/chunk-KNXN47MO.js.map +0 -1
  729. package/dist/chunk-KWLD2D75.js +0 -38
  730. package/dist/chunk-KXKLKJW4.js +0 -49
  731. package/dist/chunk-KYC4LIEU.js +0 -123
  732. package/dist/chunk-LEOXZY36.js +0 -130
  733. package/dist/chunk-M5I354EE.js +0 -235
  734. package/dist/chunk-MK2BSS44.js +0 -34
  735. package/dist/chunk-MSVY7ULZ.js +0 -70
  736. package/dist/chunk-NNWK3PSY.js +0 -135
  737. package/dist/chunk-NSZ6J5DF.js +0 -59
  738. package/dist/chunk-NUEFXLZU.js +0 -59
  739. package/dist/chunk-NYVQCZ54.js +0 -261
  740. package/dist/chunk-OQAODTYR.js +0 -45
  741. package/dist/chunk-OV4CMJGR.js +0 -164
  742. package/dist/chunk-PEDZFFKW.js +0 -41
  743. package/dist/chunk-PF3FQCCF.js +0 -164
  744. package/dist/chunk-PF3FQCCF.js.map +0 -1
  745. package/dist/chunk-Q2KVKTC2.js +0 -823
  746. package/dist/chunk-Q2KVKTC2.js.map +0 -1
  747. package/dist/chunk-QJR3W3MF.js +0 -23
  748. package/dist/chunk-QJR3W3MF.js.map +0 -1
  749. package/dist/chunk-QTXQ6RNZ.js +0 -255
  750. package/dist/chunk-RJ5522XX.js +0 -453
  751. package/dist/chunk-RJ5522XX.js.map +0 -1
  752. package/dist/chunk-RMUXPHIH.js +0 -930
  753. package/dist/chunk-RMUXPHIH.js.map +0 -1
  754. package/dist/chunk-S6AQXDN4.js +0 -155
  755. package/dist/chunk-SSFC3IYA.js +0 -275
  756. package/dist/chunk-SSFC3IYA.js.map +0 -1
  757. package/dist/chunk-SZCHEDML.js +0 -209
  758. package/dist/chunk-TDPEJINP.js +0 -188
  759. package/dist/chunk-TDPEJINP.js.map +0 -1
  760. package/dist/chunk-TQ3REHVF.js +0 -95
  761. package/dist/chunk-TQ3REHVF.js.map +0 -1
  762. package/dist/chunk-UNJU345Q.js +0 -32
  763. package/dist/chunk-UNJU345Q.js.map +0 -1
  764. package/dist/chunk-V7RNIND6.js +0 -265
  765. package/dist/chunk-V7RNIND6.js.map +0 -1
  766. package/dist/chunk-VJ3NQK4K.js +0 -205
  767. package/dist/chunk-WNA6T3MA.js +0 -686
  768. package/dist/chunk-WNA6T3MA.js.map +0 -1
  769. package/dist/chunk-WVCQ75OK.js +0 -124
  770. package/dist/chunk-WXSYDNBT.js +0 -39
  771. package/dist/chunk-WXSYDNBT.js.map +0 -1
  772. package/dist/chunk-X66MXMR5.js +0 -42
  773. package/dist/chunk-XHD3L3JO.js +0 -930
  774. package/dist/chunk-XHD3L3JO.js.map +0 -1
  775. package/dist/chunk-XJK2WIYN.js +0 -430
  776. package/dist/chunk-XJK2WIYN.js.map +0 -1
  777. package/dist/chunk-XQ7UYPVN.js +0 -95
  778. package/dist/chunk-Y2OCKFZ3.js +0 -80
  779. package/dist/chunk-YBFOBRTO.js +0 -367
  780. package/dist/chunk-YLN33ADH.js +0 -97
  781. package/dist/chunk-YLN33ADH.js.map +0 -1
  782. package/dist/chunk-Z5YFRMG5.js +0 -45
  783. package/dist/chunk-ZWQFOXBR.js +0 -54
  784. package/dist/classified/index.d.ts +0 -16
  785. package/dist/classified-marker-IO5EBW7Q.js +0 -24
  786. package/dist/classified-marker-IO5EBW7Q.js.map +0 -1
  787. package/dist/collection-facade-3RAXG2OU.js +0 -38
  788. package/dist/computed-R62HGCO4.js +0 -11
  789. package/dist/consent/index.d.ts +0 -22
  790. package/dist/crdt/index.d.ts +0 -33
  791. package/dist/dead-filter-VNA4M3GP.js +0 -28
  792. package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
  793. package/dist/delegation-ZKII5UBI.js +0 -25
  794. package/dist/derivations/index.d.ts +0 -69
  795. package/dist/derive-5D2C3WG4.js +0 -21
  796. package/dist/describe/index.d.ts +0 -4
  797. package/dist/describe/index.js +0 -1
  798. package/dist/dev-unlock-DDTafVO6.d.ts +0 -263
  799. package/dist/discriminant-BN9REW3o.d.ts +0 -60
  800. package/dist/enclave-EUBEJGPG.js +0 -125
  801. package/dist/executor-IL7SRNUZ.js +0 -23
  802. package/dist/executor-OUA2Y6YC.js +0 -9
  803. package/dist/executor-WAEI6PDV.js +0 -9
  804. package/dist/export-accessible-O55RKAGC.js +0 -23
  805. package/dist/extract-partition-VBGCBA6Q.js +0 -36
  806. package/dist/fanout-sidecar-CI5BCMQM.js +0 -74
  807. package/dist/find-FISGUWSK.js +0 -11
  808. package/dist/forget/index.d.ts +0 -36
  809. package/dist/guards/index.d.ts +0 -34
  810. package/dist/hash-DBkZfIBW.d.ts +0 -72
  811. package/dist/history/index.d.ts +0 -60
  812. package/dist/i18n/index.d.ts +0 -56
  813. package/dist/in/index.d.ts +0 -4
  814. package/dist/index-B9QdHytu.d.ts +0 -123
  815. package/dist/index-CyclmyDr.d.ts +0 -122
  816. package/dist/index-DzhNI2vE.d.ts +0 -23260
  817. package/dist/indexing/index.d.ts +0 -38
  818. package/dist/issue-EQAWIYFQ.js +0 -19
  819. package/dist/kernel/index.d.ts +0 -31
  820. package/dist/kernel/index.js +0 -60
  821. package/dist/lazy/index.d.ts +0 -20
  822. package/dist/ledger-AJA2SR3C.js +0 -42
  823. package/dist/liberate-SEGR4JLY.js +0 -24
  824. package/dist/link-set-YBAC2DQT.js +0 -31
  825. package/dist/materialized-views/index.d.ts +0 -182
  826. package/dist/mime-magic-CbV1quyp.d.ts +0 -103
  827. package/dist/noydb-AMEOU456.js +0 -65
  828. package/dist/on/index.d.ts +0 -4
  829. package/dist/overlay-views/index.d.ts +0 -97
  830. package/dist/periods/index.d.ts +0 -19
  831. package/dist/pod/index.d.ts +0 -62
  832. package/dist/policy-SDGRWVIL.js +0 -41
  833. package/dist/portability/index.d.ts +0 -19
  834. package/dist/post-register-MROIUA5O.js +0 -55
  835. package/dist/post-register-MROIUA5O.js.map +0 -1
  836. package/dist/public-envelope-J5PLQOW2.js +0 -32
  837. package/dist/query/index.d.ts +0 -4
  838. package/dist/read-only-facade-UCYNRE56.js +0 -8
  839. package/dist/register-OVJKW7BS.js +0 -23
  840. package/dist/registry-5RJSK5AJ.js +0 -9
  841. package/dist/registry-DQRNTWRL.js +0 -18
  842. package/dist/registry-LTGLERS7.js +0 -19
  843. package/dist/request-withdrawal-27O77D2V.js +0 -31
  844. package/dist/reveal-LT3I2K4P.js +0 -38
  845. package/dist/reveal-LT3I2K4P.js.map +0 -1
  846. package/dist/revoke-4N45G7D2.js +0 -24
  847. package/dist/revoke-4N45G7D2.js.map +0 -1
  848. package/dist/satellites/index.d.ts +0 -4
  849. package/dist/sealed-record/index.d.ts +0 -68
  850. package/dist/session/index.d.ts +0 -43
  851. package/dist/shadow/index.d.ts +0 -14
  852. package/dist/signer-XJCOV7JD.js +0 -25
  853. package/dist/signer-XJCOV7JD.js.map +0 -1
  854. package/dist/snapshots/index.d.ts +0 -25
  855. package/dist/stale-IYYXEH3U.js +0 -14
  856. package/dist/stale-IYYXEH3U.js.map +0 -1
  857. package/dist/storage-Y44CAPE6.js +0 -23
  858. package/dist/storage-Y44CAPE6.js.map +0 -1
  859. package/dist/store-coordination-provider-WKGAE2WI.js +0 -142
  860. package/dist/subject-index-CyOgGMJL.d.ts +0 -380
  861. package/dist/sync/index.d.ts +0 -40
  862. package/dist/team/index.d.ts +0 -154
  863. package/dist/tiers/index.d.ts +0 -4
  864. package/dist/to/index.d.ts +0 -4
  865. package/dist/transition-guard-BOUkzQU4.d.ts +0 -165
  866. package/dist/tx/index.d.ts +0 -34
  867. package/dist/ui/index.d.ts +0 -4
  868. package/dist/ulid-DRH25k3y.d.ts +0 -66
  869. package/dist/util/index.d.ts +0 -79
  870. package/dist/validators-B3SalxlJ.d.ts +0 -101
  871. package/dist/vault-diff-Dt9NkLzw.d.ts +0 -147
  872. package/dist/verify-GH6CWVSW.js +0 -139
  873. package/dist/verify-GH6CWVSW.js.map +0 -1
  874. package/dist/walk-76UCFXYV.js +0 -241
  875. package/dist/with/index.d.ts +0 -37
  876. package/dist/with-materialized-view-BP33v1Z6.d.ts +0 -27
  877. package/dist/with-overlayed-view-DntFpOKN.d.ts +0 -12
  878. package/dist/with-rollup-ClCHO6-4.d.ts +0 -47
  879. package/dist/withdraw-accessible-6J2UH3IN.js +0 -28
  880. package/dist/withdraw-accessible-6J2UH3IN.js.map +0 -1
  881. /package/dist/{adapter/index.js.map → api-3A3S4SHH.js.map} +0 -0
  882. /package/dist/{chunk-ICV32FPK.js.map → chunk-2PCAVW2I.js.map} +0 -0
  883. /package/dist/{chunk-6CU3FN74.js.map → chunk-554KLAAN.js.map} +0 -0
  884. /package/dist/{chunk-NNWK3PSY.js.map → chunk-5PFOMHTB.js.map} +0 -0
  885. /package/dist/{chunk-SZCHEDML.js.map → chunk-5WZXVULX.js.map} +0 -0
  886. /package/dist/{chunk-KWLD2D75.js.map → chunk-6HPG2YNX.js.map} +0 -0
  887. /package/dist/{chunk-2KOSJTMU.js.map → chunk-6HY2X62D.js.map} +0 -0
  888. /package/dist/{chunk-KYC4LIEU.js.map → chunk-6NQMXTYC.js.map} +0 -0
  889. /package/dist/{chunk-KBF5GSGX.js.map → chunk-6XE5TMPR.js.map} +0 -0
  890. /package/dist/{chunk-Z5YFRMG5.js.map → chunk-A4FXFAKF.js.map} +0 -0
  891. /package/dist/{chunk-VJ3NQK4K.js.map → chunk-ANATMTOA.js.map} +0 -0
  892. /package/dist/{chunk-HBTT7YQX.js.map → chunk-BOKIKJJB.js.map} +0 -0
  893. /package/dist/{chunk-KXKLKJW4.js.map → chunk-CJ5KKU6X.js.map} +0 -0
  894. /package/dist/{chunk-5SAZMBW7.js.map → chunk-DSBQODMZ.js.map} +0 -0
  895. /package/dist/{chunk-7IZQTCTR.js.map → chunk-EO43ANYJ.js.map} +0 -0
  896. /package/dist/{chunk-QTXQ6RNZ.js.map → chunk-EWPOHMN2.js.map} +0 -0
  897. /package/dist/{chunk-34RRRIC3.js.map → chunk-GWKAVKHI.js.map} +0 -0
  898. /package/dist/{chunk-OV4CMJGR.js.map → chunk-H2KSZMIX.js.map} +0 -0
  899. /package/dist/{chunk-AUR7MRHA.js.map → chunk-HOONYZY2.js.map} +0 -0
  900. /package/dist/{chunk-ZWQFOXBR.js.map → chunk-ISMV2QVG.js.map} +0 -0
  901. /package/dist/{chunk-XQ7UYPVN.js.map → chunk-IY23KFNZ.js.map} +0 -0
  902. /package/dist/{chunk-IWTYFS3D.js.map → chunk-JBBSYJHP.js.map} +0 -0
  903. /package/dist/{chunk-GX2BYNCT.js.map → chunk-JFCV5QIK.js.map} +0 -0
  904. /package/dist/{chunk-5TZZUL5X.js.map → chunk-M75ZZHSR.js.map} +0 -0
  905. /package/dist/{chunk-6MWUANRF.js.map → chunk-N6WF5PKC.js.map} +0 -0
  906. /package/dist/{chunk-E5AHO65E.js.map → chunk-NCCBLYEB.js.map} +0 -0
  907. /package/dist/{chunk-A4MAD6PO.js.map → chunk-OCVM6KDH.js.map} +0 -0
  908. /package/dist/{chunk-Y2OCKFZ3.js.map → chunk-ONTBCHCP.js.map} +0 -0
  909. /package/dist/{chunk-LEOXZY36.js.map → chunk-R3BLCFD2.js.map} +0 -0
  910. /package/dist/{chunk-2HVUKRNE.js.map → chunk-RDXW3OBQ.js.map} +0 -0
  911. /package/dist/{chunk-CJEMA2Z6.js.map → chunk-RFI7GGFO.js.map} +0 -0
  912. /package/dist/{chunk-AYGZMQP5.js.map → chunk-RNG4VRP4.js.map} +0 -0
  913. /package/dist/{chunk-PEDZFFKW.js.map → chunk-RTEK4C4I.js.map} +0 -0
  914. /package/dist/{chunk-3I4KYWNP.js.map → chunk-S6Q37VGE.js.map} +0 -0
  915. /package/dist/{chunk-42KVY3OC.js.map → chunk-SV6EAJEP.js.map} +0 -0
  916. /package/dist/{chunk-YBFOBRTO.js.map → chunk-T3GY65MA.js.map} +0 -0
  917. /package/dist/{chunk-KBBWY46Y.js.map → chunk-TIGPQDYP.js.map} +0 -0
  918. /package/dist/{chunk-NYVQCZ54.js.map → chunk-U6JMEH2P.js.map} +0 -0
  919. /package/dist/{chunk-MK2BSS44.js.map → chunk-UC2ETWF3.js.map} +0 -0
  920. /package/dist/{chunk-M5I354EE.js.map → chunk-UDSR4X4L.js.map} +0 -0
  921. /package/dist/{chunk-6ULCYCMU.js.map → chunk-VAIS3SOM.js.map} +0 -0
  922. /package/dist/{chunk-WVCQ75OK.js.map → chunk-VCBHAE4R.js.map} +0 -0
  923. /package/dist/{chunk-DEYAO3N6.js.map → chunk-VKCADNMR.js.map} +0 -0
  924. /package/dist/{chunk-OQAODTYR.js.map → chunk-WKGF2TJR.js.map} +0 -0
  925. /package/dist/{chunk-HOCEGVGQ.js.map → chunk-WNGGJWF7.js.map} +0 -0
  926. /package/dist/{chunk-NSZ6J5DF.js.map → chunk-WOM2HTML.js.map} +0 -0
  927. /package/dist/{chunk-MSVY7ULZ.js.map → chunk-WQIYTNJV.js.map} +0 -0
  928. /package/dist/{chunk-NUEFXLZU.js.map → chunk-WZSHL6DQ.js.map} +0 -0
  929. /package/dist/{chunk-X66MXMR5.js.map → chunk-XDIAFPUM.js.map} +0 -0
  930. /package/dist/{chunk-CTSFKDGA.js.map → chunk-XJMBYYQK.js.map} +0 -0
  931. /package/dist/{chunk-IUKGIB2Q.js.map → chunk-XTHCN77N.js.map} +0 -0
  932. /package/dist/{chunk-FC3XK5JT.js.map → chunk-YCH5GBN6.js.map} +0 -0
  933. /package/dist/{chunk-S6AQXDN4.js.map → chunk-YTGDPCPW.js.map} +0 -0
  934. /package/dist/{chunk-CWCCYH34.js.map → chunk-YZQOGE2L.js.map} +0 -0
  935. /package/dist/{chunk-DFIBOSOQ.js.map → chunk-ZXEZCY6F.js.map} +0 -0
  936. /package/dist/{api-HV4PDUWF.js.map → collection-facade-KMBWNCYP.js.map} +0 -0
  937. /package/dist/{chunk-BGIZAFY7.js.map → computed-DSMPXG2Y.js.map} +0 -0
  938. /package/dist/{chunk-K2WCO3NX.js.map → cover-QJRXINN5.js.map} +0 -0
  939. /package/dist/{dead-filter-VNA4M3GP.js.map → dead-filter-66VGI6JV.js.map} +0 -0
  940. /package/dist/{collection-facade-3RAXG2OU.js.map → delegation-SU6CV3W7.js.map} +0 -0
  941. /package/dist/{computed-R62HGCO4.js.map → derive-6RWU4EOA.js.map} +0 -0
  942. /package/dist/{delegation-ZKII5UBI.js.map → enclave-TKPN2G2U.js.map} +0 -0
  943. /package/dist/{derive-5D2C3WG4.js.map → executor-KGNLJD6M.js.map} +0 -0
  944. /package/dist/{describe/index.js.map → executor-UX4FASYZ.js.map} +0 -0
  945. /package/dist/{enclave-EUBEJGPG.js.map → executor-XGIS6CR7.js.map} +0 -0
  946. /package/dist/{executor-IL7SRNUZ.js.map → export-accessible-LKW3QV22.js.map} +0 -0
  947. /package/dist/{executor-OUA2Y6YC.js.map → extract-partition-UP2ARO75.js.map} +0 -0
  948. /package/dist/{fanout-sidecar-CI5BCMQM.js.map → fanout-sidecar-B5LVUMQX.js.map} +0 -0
  949. /package/dist/{executor-WAEI6PDV.js.map → find-YS6XWB46.js.map} +0 -0
  950. /package/dist/{export-accessible-O55RKAGC.js.map → issue-3ACYX7LO.js.map} +0 -0
  951. /package/dist/{extract-partition-VBGCBA6Q.js.map → ledger-PTK7XZYT.js.map} +0 -0
  952. /package/dist/{find-FISGUWSK.js.map → liberate-MQQXBUCY.js.map} +0 -0
  953. /package/dist/{issue-EQAWIYFQ.js.map → link-set-SLJHDNRB.js.map} +0 -0
  954. /package/dist/{kernel/index.js.map → noydb-ANIW5FLE.js.map} +0 -0
  955. /package/dist/{ledger-AJA2SR3C.js.map → policy-YDLCOX4P.js.map} +0 -0
  956. /package/dist/{liberate-SEGR4JLY.js.map → read-only-facade-CHCKSEPD.js.map} +0 -0
  957. /package/dist/{link-set-YBAC2DQT.js.map → register-PAM3ASRZ.js.map} +0 -0
  958. /package/dist/{noydb-AMEOU456.js.map → registry-4S2U2TR4.js.map} +0 -0
  959. /package/dist/{policy-SDGRWVIL.js.map → registry-NPOWJHC4.js.map} +0 -0
  960. /package/dist/{public-envelope-J5PLQOW2.js.map → registry-VZ3CCI2R.js.map} +0 -0
  961. /package/dist/{read-only-facade-UCYNRE56.js.map → request-withdrawal-DI3H5WUI.js.map} +0 -0
  962. /package/dist/{register-OVJKW7BS.js.map → revoke-R5CZSVUT.js.map} +0 -0
  963. /package/dist/{registry-5RJSK5AJ.js.map → signer-MBVHW4WE.js.map} +0 -0
  964. /package/dist/{registry-DQRNTWRL.js.map → stale-VZL4OGUB.js.map} +0 -0
  965. /package/dist/{registry-LTGLERS7.js.map → storage-3MEJUENZ.js.map} +0 -0
  966. /package/dist/{store-coordination-provider-WKGAE2WI.js.map → store-coordination-provider-FKX3F6TQ.js.map} +0 -0
  967. /package/dist/{walk-76UCFXYV.js.map → walk-IPLXE36W.js.map} +0 -0
  968. /package/dist/{request-withdrawal-27O77D2V.js.map → withdraw-accessible-TZDATQVR.js.map} +0 -0
@@ -0,0 +1,957 @@
1
+ import {
2
+ SyncScheduler
3
+ } from "./chunk-VQNJ7UZL.js";
4
+ import {
5
+ isDeleteMarker,
6
+ isTombstoneShape
7
+ } from "./chunk-A4FXFAKF.js";
8
+ import {
9
+ bufferToBase64,
10
+ decrypt,
11
+ derivePresenceKey,
12
+ encrypt,
13
+ generateIV
14
+ } from "./chunk-HOONYZY2.js";
15
+ import {
16
+ NOYDB_SYNC_VERSION
17
+ } from "./chunk-VCTXU4AT.js";
18
+ import {
19
+ ConflictError
20
+ } from "./chunk-W2OG6JOL.js";
21
+
22
+ // src/with-party/team/presence.ts
23
+ var PresenceHandle = class {
24
+ adapter;
25
+ syncAdapter;
26
+ vault;
27
+ collectionName;
28
+ userId;
29
+ encrypted;
30
+ getDEK;
31
+ staleMs;
32
+ pollIntervalMs;
33
+ channel;
34
+ storageCollection;
35
+ presenceKey = null;
36
+ subscribers = [];
37
+ unsubscribePubSub = null;
38
+ pollTimer = null;
39
+ stopped = false;
40
+ constructor(opts) {
41
+ this.adapter = opts.adapter;
42
+ this.syncAdapter = opts.syncAdapter;
43
+ this.vault = opts.vault;
44
+ this.collectionName = opts.collectionName;
45
+ this.userId = opts.userId;
46
+ this.encrypted = opts.encrypted;
47
+ this.getDEK = opts.getDEK;
48
+ this.staleMs = opts.staleMs ?? 3e4;
49
+ this.pollIntervalMs = opts.pollIntervalMs ?? 5e3;
50
+ this.channel = `${opts.vault}:${opts.collectionName}:presence`;
51
+ this.storageCollection = `_presence_${opts.collectionName}`;
52
+ }
53
+ /**
54
+ * Announce yourself (or update your cursor/status).
55
+ * Encrypts `payload` with the presence key and publishes it.
56
+ */
57
+ async update(payload) {
58
+ if (this.stopped) return;
59
+ const key = await this.getPresenceKey();
60
+ const now = (/* @__PURE__ */ new Date()).toISOString();
61
+ const plaintext = JSON.stringify({ userId: this.userId, lastSeen: now, payload });
62
+ let encryptedPayload;
63
+ if (this.encrypted && key) {
64
+ const iv = generateIV();
65
+ const ivB64 = bufferToBase64(iv);
66
+ const { data } = await encrypt(plaintext, key);
67
+ encryptedPayload = JSON.stringify({ iv: ivB64, data });
68
+ } else {
69
+ encryptedPayload = plaintext;
70
+ }
71
+ const pubAdapter = this.getPubSubAdapter();
72
+ if (pubAdapter?.presencePublish) {
73
+ await pubAdapter.presencePublish(this.channel, encryptedPayload);
74
+ }
75
+ await this.writeStorageRecord(payload, now);
76
+ }
77
+ /**
78
+ * Subscribe to presence updates. The callback receives a filtered, decrypted
79
+ * list of all currently-active peers (excluding yourself, excluding stale).
80
+ *
81
+ * Returns an unsubscribe function. Also call `stop()` to release all resources.
82
+ */
83
+ subscribe(cb) {
84
+ if (this.stopped) return () => {
85
+ };
86
+ this.subscribers.push(cb);
87
+ if (this.subscribers.length === 1) {
88
+ this.startListening();
89
+ }
90
+ return () => {
91
+ this.subscribers = this.subscribers.filter((s) => s !== cb);
92
+ if (this.subscribers.length === 0) this.stopListening();
93
+ };
94
+ }
95
+ /** Stop all listening and clear resources. */
96
+ stop() {
97
+ this.stopped = true;
98
+ this.stopListening();
99
+ this.subscribers = [];
100
+ }
101
+ // ─── Private ────────────────────────────────────────────────────────
102
+ async getPresenceKey() {
103
+ if (!this.encrypted) return null;
104
+ if (!this.presenceKey) {
105
+ try {
106
+ const dek = await this.getDEK(this.collectionName);
107
+ this.presenceKey = await derivePresenceKey(dek, this.collectionName);
108
+ } catch {
109
+ }
110
+ }
111
+ return this.presenceKey;
112
+ }
113
+ getPubSubAdapter() {
114
+ if (this.syncAdapter?.presencePublish) return this.syncAdapter;
115
+ if (this.adapter.presencePublish) return this.adapter;
116
+ return void 0;
117
+ }
118
+ startListening() {
119
+ const pubAdapter = this.getPubSubAdapter();
120
+ if (pubAdapter?.presenceSubscribe) {
121
+ this.unsubscribePubSub = pubAdapter.presenceSubscribe(
122
+ this.channel,
123
+ (encryptedPayload) => {
124
+ void this.handlePubSubMessage(encryptedPayload);
125
+ }
126
+ );
127
+ } else {
128
+ this.pollTimer = setInterval(
129
+ () => {
130
+ void this.pollStoragePresence();
131
+ },
132
+ this.pollIntervalMs
133
+ );
134
+ void this.pollStoragePresence();
135
+ }
136
+ }
137
+ stopListening() {
138
+ if (this.unsubscribePubSub) {
139
+ this.unsubscribePubSub();
140
+ this.unsubscribePubSub = null;
141
+ }
142
+ if (this.pollTimer) {
143
+ clearInterval(this.pollTimer);
144
+ this.pollTimer = null;
145
+ }
146
+ }
147
+ async handlePubSubMessage(encryptedPayload) {
148
+ try {
149
+ const peer = await this.decryptPresencePayload(encryptedPayload);
150
+ if (!peer || peer.userId === this.userId) return;
151
+ const cutoff = new Date(Date.now() - this.staleMs).toISOString();
152
+ if (peer.lastSeen < cutoff) return;
153
+ await this.pollStoragePresence();
154
+ } catch {
155
+ }
156
+ }
157
+ async decryptPresencePayload(encryptedPayload) {
158
+ const key = await this.getPresenceKey();
159
+ if (!this.encrypted || !key) {
160
+ return JSON.parse(encryptedPayload);
161
+ }
162
+ const { iv: ivB64, data } = JSON.parse(encryptedPayload);
163
+ const plaintext = await decrypt(ivB64, data, key);
164
+ return JSON.parse(plaintext);
165
+ }
166
+ async writeStorageRecord(payload, now) {
167
+ const key = await this.getPresenceKey();
168
+ const plaintext = JSON.stringify(payload);
169
+ let iv = "";
170
+ let data;
171
+ if (this.encrypted && key) {
172
+ const ivBytes = generateIV();
173
+ iv = bufferToBase64(ivBytes);
174
+ const result = await encrypt(plaintext, key);
175
+ data = result.data;
176
+ } else {
177
+ data = plaintext;
178
+ }
179
+ const record = { userId: this.userId, lastSeen: now, iv, data };
180
+ const json = JSON.stringify(record);
181
+ const storeAdapter = this.syncAdapter ?? this.adapter;
182
+ const envelope = {
183
+ _noydb: 1,
184
+ _v: 1,
185
+ _ts: now,
186
+ _iv: "",
187
+ _data: json
188
+ };
189
+ try {
190
+ await storeAdapter.put(
191
+ this.vault,
192
+ this.storageCollection,
193
+ this.userId,
194
+ envelope
195
+ );
196
+ } catch {
197
+ }
198
+ }
199
+ async pollStoragePresence() {
200
+ if (this.stopped || this.subscribers.length === 0) return;
201
+ try {
202
+ const storeAdapter = this.syncAdapter ?? this.adapter;
203
+ const ids = await storeAdapter.list(this.vault, this.storageCollection);
204
+ const cutoff = new Date(Date.now() - this.staleMs).toISOString();
205
+ const peers = [];
206
+ for (const id of ids) {
207
+ if (id === this.userId) continue;
208
+ const envelope = await storeAdapter.get(this.vault, this.storageCollection, id);
209
+ if (!envelope) continue;
210
+ const record = JSON.parse(envelope._data);
211
+ if (record.lastSeen < cutoff) continue;
212
+ let peerPayload;
213
+ if (this.encrypted && this.presenceKey && record.iv) {
214
+ const plaintext = await decrypt(record.iv, record.data, this.presenceKey);
215
+ peerPayload = JSON.parse(plaintext);
216
+ } else {
217
+ peerPayload = JSON.parse(record.data);
218
+ }
219
+ peers.push({ userId: record.userId, payload: peerPayload, lastSeen: record.lastSeen });
220
+ }
221
+ for (const cb of this.subscribers) {
222
+ cb(peers);
223
+ }
224
+ } catch {
225
+ }
226
+ }
227
+ };
228
+
229
+ // src/with-party/team/sync.ts
230
+ var SyncEngine = class {
231
+ local;
232
+ remote;
233
+ strategy;
234
+ emitter;
235
+ vault;
236
+ role;
237
+ label;
238
+ dirty = [];
239
+ lastPush = null;
240
+ lastPull = null;
241
+ loaded = false;
242
+ autoSyncInterval = null;
243
+ isOnline = true;
244
+ /** Sync scheduler. Manages push/pull timing. */
245
+ scheduler;
246
+ /** Per-collection conflict resolvers registered by Collection instances. */
247
+ conflictResolvers = /* @__PURE__ */ new Map();
248
+ /**
249
+ * Expands a collection-name filter to include its satellite pair partner(s)
250
+ * (spec #591 convergence rule 5b) — wired from vault satellite declaration
251
+ * via `setPairExpander`. `undefined` when no satellite has ever been
252
+ * declared for this vault: identity behavior, zero change for non-satellite
253
+ * users.
254
+ */
255
+ pairExpander;
256
+ /** #598: refreshes Collection in-memory views after a sync-applied local write. Wired by the
257
+ * vault at open. `action` (#640): `'delete'` for a pulled tombstone/delete-marker, `'put'`
258
+ * otherwise — classified at `applyRemote`, the one choke point that holds the envelope. */
259
+ cacheInvalidator;
260
+ /** Wire the Collection-cache invalidation hook (#598). Same injection pattern as `setPairExpander`. */
261
+ setCacheInvalidator(fn) {
262
+ this.cacheInvalidator = fn;
263
+ }
264
+ /** #638 Task 4: opens/flushes the vault's graph-dispatch touch batch around a whole `pull()`/
265
+ * `push()` call, so N `applyRemote`d records feeding the same derivation/rollup/MV target
266
+ * recompute once. Wired by the vault at open, mirroring `cacheInvalidator`. */
267
+ graphBatchController;
268
+ /** Wire the graph-dispatch batch controller (#638 Task 4). Same injection pattern as `setCacheInvalidator`. */
269
+ setGraphBatchController(controller) {
270
+ this.graphBatchController = controller;
271
+ }
272
+ /** #650 Task 4 (#647): declared reserved-lookup collections `pull()` enumerates explicitly (the
273
+ * store's `list()` does not skip `_`-prefixed names, unlike `loadAll()`). Wired by the vault at
274
+ * open, same injection pattern as `setCacheInvalidator`/`setGraphBatchController`. */
275
+ reservedLookup;
276
+ /** Wire the reserved-lookup source (#650 Task 4). */
277
+ setReservedLookupSource(source) {
278
+ this.reservedLookup = source;
279
+ }
280
+ /** #653: expands a (pair-expanded) collection-name filter to include the reserved `_dict_*`
281
+ * collections those names depend on via their lookup fields — mirrors `pairExpander` so a
282
+ * partial `push`/`pull({collections:[...]})` never drops the dictionary a named collection's
283
+ * labels/membership rely on. Wired unconditionally from the vault's `dictKeyFieldRegistry` via
284
+ * `setReservedDictExpander` (returns `[]` when the vault has no dict-backed collections); only
285
+ * `undefined` on a standalone engine that was never vault-attached. */
286
+ reservedDictExpander;
287
+ /** Wire the reserved-dict expansion function (#653). Same injection pattern as `setPairExpander`. */
288
+ setReservedDictExpander(expander) {
289
+ this.reservedDictExpander = expander;
290
+ }
291
+ constructor(opts) {
292
+ this.local = opts.local;
293
+ this.remote = opts.remote;
294
+ this.vault = opts.vault;
295
+ this.strategy = opts.strategy;
296
+ this.emitter = opts.emitter;
297
+ this.role = opts.role ?? "sync-peer";
298
+ this.label = opts.label;
299
+ const policy = opts.syncPolicy;
300
+ if (policy && policy.push.mode !== "manual") {
301
+ this.scheduler = new SyncScheduler(policy, {
302
+ push: () => this.push().then(() => {
303
+ }),
304
+ pull: () => this.pull().then(() => {
305
+ }),
306
+ getDirtyCount: () => this.dirty.length
307
+ });
308
+ } else {
309
+ this.scheduler = null;
310
+ }
311
+ }
312
+ /** Start the sync scheduler. Called after vault is fully opened. */
313
+ startScheduler() {
314
+ this.scheduler?.start();
315
+ }
316
+ /** Stop the sync scheduler. Called on close. */
317
+ stopScheduler() {
318
+ this.scheduler?.stop();
319
+ }
320
+ /**
321
+ * Register a per-collection conflict resolver.
322
+ * Called by Collection when `conflictPolicy` is set.
323
+ *
324
+ * Pair-coupled (#591 rule 5b): registering for one satellite-pair member
325
+ * registers the same resolver for both — the pair converges under one
326
+ * resolution policy. Expands with whatever the pair-expander knows *at this
327
+ * call*; resolvers registered before their pair existed are covered by
328
+ * `remirrorPairResolvers` at pair-registration time.
329
+ */
330
+ registerConflictResolver(collection, resolver) {
331
+ for (const n of this.pairExpander?.([collection]) ?? [collection]) this.conflictResolvers.set(n, resolver);
332
+ }
333
+ /**
334
+ * Wire a satellite pair-expansion function (vault registration, #591 Task 11).
335
+ * The closure re-reads the live `SatelliteRegistry` on every call, so pairs
336
+ * declared after this is set are still picked up by `push`/`pull` filters.
337
+ */
338
+ setPairExpander(expander) {
339
+ this.pairExpander = expander;
340
+ }
341
+ /**
342
+ * Retroactively mirror per-collection conflict resolvers across a newly
343
+ * registered satellite pair (#591 rule 5b) — covers the NORMAL declaration
344
+ * order, where the base's `conflictPolicy` resolver was registered before
345
+ * the satellite was declared (so the call-time expansion in
346
+ * `registerConflictResolver` saw no pair yet). Tie-break: when BOTH members
347
+ * already carry (different) resolvers, the FIRST name in `names` wins —
348
+ * callers pass `[base, satellite]`, so the base's resolver is canonical.
349
+ * Idempotent; a later explicit registration on either member still
350
+ * overwrites both (last-wins, via the call-time expansion above).
351
+ */
352
+ remirrorPairResolvers(names) {
353
+ const canonical = names.map((n) => this.conflictResolvers.get(n)).find((r) => r !== void 0);
354
+ if (!canonical) return;
355
+ for (const n of names) this.conflictResolvers.set(n, canonical);
356
+ }
357
+ /** Record a local change for later push. */
358
+ async trackChange(collection, id, action, version) {
359
+ await this.ensureLoaded();
360
+ const idx = this.dirty.findIndex((d) => d.collection === collection && d.id === id);
361
+ const entry = {
362
+ vault: this.vault,
363
+ collection,
364
+ id,
365
+ action,
366
+ version,
367
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
368
+ };
369
+ if (idx >= 0) {
370
+ this.dirty[idx] = entry;
371
+ } else {
372
+ this.dirty.push(entry);
373
+ }
374
+ await this.persistMeta();
375
+ this.scheduler?.notifyChange();
376
+ }
377
+ /** Remove a dirty entry (satellite fan-out revert cleanup — spec #591). */
378
+ async removeDirty(collection, id) {
379
+ const before = this.dirty.length;
380
+ this.dirty = this.dirty.filter((d) => !(d.collection === collection && d.id === id));
381
+ if (this.dirty.length !== before) await this.persistMeta();
382
+ }
383
+ /** Push dirty records to remote adapter. Accepts optional `PushOptions` for partial sync. */
384
+ async push(options) {
385
+ await this.ensureLoaded();
386
+ this.graphBatchController?.begin();
387
+ let pushed = 0;
388
+ const conflicts = [];
389
+ const erasures = [];
390
+ const errors = [];
391
+ const completed = [];
392
+ const expanded = options?.collections ? this.pairExpander?.(options.collections) ?? options.collections : null;
393
+ const filter = expanded ? /* @__PURE__ */ new Set([...expanded, ...this.reservedDictExpander?.(expanded) ?? []]) : null;
394
+ for (let i = 0; i < this.dirty.length; i++) {
395
+ const entry = this.dirty[i];
396
+ if (filter && !filter.has(entry.collection)) {
397
+ continue;
398
+ }
399
+ try {
400
+ if (entry.action === "delete") {
401
+ await this.remote.delete(this.vault, entry.collection, entry.id);
402
+ completed.push(i);
403
+ pushed++;
404
+ } else {
405
+ const envelope = await this.local.get(this.vault, entry.collection, entry.id);
406
+ if (!envelope) {
407
+ completed.push(i);
408
+ continue;
409
+ }
410
+ if (isTombstoneShape(envelope)) {
411
+ await this.remote.put(this.vault, entry.collection, entry.id, envelope);
412
+ completed.push(i);
413
+ pushed++;
414
+ continue;
415
+ }
416
+ try {
417
+ await this.remote.put(
418
+ this.vault,
419
+ entry.collection,
420
+ entry.id,
421
+ envelope,
422
+ entry.version - 1
423
+ );
424
+ completed.push(i);
425
+ pushed++;
426
+ } catch (err) {
427
+ if (err instanceof ConflictError) {
428
+ const remoteEnvelope = await this.remote.get(this.vault, entry.collection, entry.id);
429
+ if (remoteEnvelope) {
430
+ if (isTombstoneShape(remoteEnvelope)) {
431
+ await this.applyRemote(entry.collection, entry.id, remoteEnvelope);
432
+ erasures.push(this.reportErasure(entry.collection, entry.id, remoteEnvelope, envelope, "push"));
433
+ completed.push(i);
434
+ } else if (remoteEnvelope._v === envelope._v && isDeleteMarker(remoteEnvelope) !== isDeleteMarker(envelope) && !this.conflictResolvers.get(entry.collection)) {
435
+ if (isDeleteMarker(remoteEnvelope)) {
436
+ await this.applyRemote(entry.collection, entry.id, remoteEnvelope);
437
+ completed.push(i);
438
+ } else {
439
+ await this.remote.put(this.vault, entry.collection, entry.id, envelope);
440
+ completed.push(i);
441
+ pushed++;
442
+ }
443
+ } else {
444
+ const { handled, conflict } = await this.handleConflict(
445
+ entry.collection,
446
+ entry.id,
447
+ envelope,
448
+ remoteEnvelope,
449
+ "push"
450
+ );
451
+ conflicts.push(conflict);
452
+ if (handled === "local") {
453
+ await this.remote.put(this.vault, entry.collection, entry.id, conflict.local);
454
+ completed.push(i);
455
+ pushed++;
456
+ } else if (handled === "remote") {
457
+ await this.applyRemote(entry.collection, entry.id, conflict.remote);
458
+ completed.push(i);
459
+ } else if (handled === "merged" && conflict.local !== envelope) {
460
+ const merged = conflict.local;
461
+ await this.remote.put(this.vault, entry.collection, entry.id, merged);
462
+ await this.applyRemote(entry.collection, entry.id, merged);
463
+ completed.push(i);
464
+ pushed++;
465
+ }
466
+ }
467
+ }
468
+ } else {
469
+ throw err;
470
+ }
471
+ }
472
+ }
473
+ } catch (err) {
474
+ errors.push(err instanceof Error ? err : new Error(String(err)));
475
+ }
476
+ }
477
+ for (const i of completed.sort((a, b) => b - a)) {
478
+ this.dirty.splice(i, 1);
479
+ }
480
+ this.lastPush = (/* @__PURE__ */ new Date()).toISOString();
481
+ try {
482
+ await this.persistMeta();
483
+ } finally {
484
+ await this.graphBatchController?.flush();
485
+ }
486
+ const result = { pushed, conflicts, errors, erasures };
487
+ this.emitter.emit("sync:push", result);
488
+ return result;
489
+ }
490
+ /** Pull remote records to local adapter. Accepts optional `PullOptions` for partial sync. */
491
+ async pull(options) {
492
+ await this.ensureLoaded();
493
+ this.graphBatchController?.begin();
494
+ let pulled = 0;
495
+ const conflicts = [];
496
+ const erasures = [];
497
+ const errors = [];
498
+ const expanded = options?.collections ? this.pairExpander?.(options.collections) ?? options.collections : null;
499
+ const filter = expanded ? /* @__PURE__ */ new Set([...expanded, ...this.reservedDictExpander?.(expanded) ?? []]) : null;
500
+ try {
501
+ const remoteSnapshot = await this.remote.loadAll(this.vault);
502
+ for (const [collName, records] of Object.entries(remoteSnapshot)) {
503
+ if (filter && !filter.has(collName)) {
504
+ continue;
505
+ }
506
+ for (const [id, remoteEnvelope] of Object.entries(records)) {
507
+ if (options?.modifiedSince && remoteEnvelope._ts <= options.modifiedSince && !isTombstoneShape(remoteEnvelope) && !isDeleteMarker(remoteEnvelope)) {
508
+ continue;
509
+ }
510
+ try {
511
+ const localEnvelope = await this.local.get(this.vault, collName, id);
512
+ const remoteIsTombstone = isTombstoneShape(remoteEnvelope);
513
+ if (!localEnvelope) {
514
+ await this.applyRemote(collName, id, remoteEnvelope);
515
+ pulled++;
516
+ } else if (isTombstoneShape(localEnvelope)) {
517
+ if (remoteIsTombstone) {
518
+ if (remoteEnvelope._v > localEnvelope._v) await this.applyRemote(collName, id, remoteEnvelope);
519
+ } else {
520
+ erasures.push(await this.reassertTombstone(collName, id, localEnvelope, remoteEnvelope));
521
+ }
522
+ } else if (remoteIsTombstone) {
523
+ const wasDirty = this.dirty.some((d) => d.collection === collName && d.id === id);
524
+ await this.applyRemote(collName, id, remoteEnvelope);
525
+ this.dirty = this.dirty.filter((d) => !(d.collection === collName && d.id === id));
526
+ pulled++;
527
+ if (wasDirty) erasures.push(this.reportErasure(collName, id, remoteEnvelope, localEnvelope, "pull"));
528
+ } else if (remoteEnvelope._v === localEnvelope._v && isDeleteMarker(remoteEnvelope) !== isDeleteMarker(localEnvelope)) {
529
+ const resolver = this.conflictResolvers.get(collName);
530
+ if (resolver) {
531
+ const winner = await resolver(id, localEnvelope, remoteEnvelope);
532
+ if (winner !== localEnvelope && winner !== null) {
533
+ if (winner !== remoteEnvelope) {
534
+ await this.remote.put(this.vault, collName, id, winner);
535
+ }
536
+ await this.applyRemote(collName, id, winner);
537
+ this.dirty = this.dirty.filter((d) => !(d.collection === collName && d.id === id));
538
+ pulled++;
539
+ }
540
+ } else if (isDeleteMarker(remoteEnvelope)) {
541
+ await this.applyRemote(collName, id, remoteEnvelope);
542
+ this.dirty = this.dirty.filter((d) => !(d.collection === collName && d.id === id));
543
+ pulled++;
544
+ }
545
+ } else if (remoteEnvelope._v > localEnvelope._v) {
546
+ const isDirty = this.dirty.some((d) => d.collection === collName && d.id === id);
547
+ if (isDirty) {
548
+ const { handled, conflict } = await this.handleConflict(
549
+ collName,
550
+ id,
551
+ localEnvelope,
552
+ remoteEnvelope,
553
+ "pull"
554
+ );
555
+ conflicts.push(conflict);
556
+ if (handled === "remote") {
557
+ await this.applyRemote(collName, id, conflict.remote);
558
+ this.dirty = this.dirty.filter((d) => !(d.collection === collName && d.id === id));
559
+ pulled++;
560
+ } else if (handled === "merged" && conflict.local !== localEnvelope) {
561
+ const merged = conflict.local;
562
+ await this.applyRemote(collName, id, merged);
563
+ this.dirty = this.dirty.filter((d) => !(d.collection === collName && d.id === id));
564
+ pulled++;
565
+ }
566
+ } else {
567
+ await this.applyRemote(collName, id, remoteEnvelope);
568
+ pulled++;
569
+ }
570
+ }
571
+ } catch (err) {
572
+ errors.push(err instanceof Error ? err : new Error(String(err)));
573
+ }
574
+ }
575
+ }
576
+ for (const collName of this.reservedLookup?.collections() ?? []) {
577
+ if (filter && !filter.has(collName)) continue;
578
+ for (const id of await this.remote.list(this.vault, collName)) {
579
+ try {
580
+ const remoteEnvelope = await this.remote.get(this.vault, collName, id);
581
+ if (!remoteEnvelope) continue;
582
+ if (options?.modifiedSince && remoteEnvelope._ts <= options.modifiedSince && !isDeleteMarker(remoteEnvelope)) {
583
+ continue;
584
+ }
585
+ const localEnvelope = await this.local.get(this.vault, collName, id);
586
+ if (!localEnvelope) {
587
+ await this.applyRemote(collName, id, remoteEnvelope);
588
+ pulled++;
589
+ } else if (remoteEnvelope._v === localEnvelope._v && isDeleteMarker(remoteEnvelope) !== isDeleteMarker(localEnvelope)) {
590
+ if (isDeleteMarker(remoteEnvelope)) {
591
+ await this.applyRemote(collName, id, remoteEnvelope);
592
+ this.dirty = this.dirty.filter((d) => !(d.collection === collName && d.id === id));
593
+ pulled++;
594
+ }
595
+ } else if (remoteEnvelope._v > localEnvelope._v) {
596
+ await this.applyRemote(collName, id, remoteEnvelope);
597
+ this.dirty = this.dirty.filter((d) => !(d.collection === collName && d.id === id));
598
+ pulled++;
599
+ }
600
+ } catch (err) {
601
+ errors.push(err instanceof Error ? err : new Error(String(err)));
602
+ }
603
+ }
604
+ }
605
+ } catch (err) {
606
+ errors.push(err instanceof Error ? err : new Error(String(err)));
607
+ }
608
+ this.lastPull = (/* @__PURE__ */ new Date()).toISOString();
609
+ try {
610
+ await this.persistMeta();
611
+ } finally {
612
+ await this.graphBatchController?.flush();
613
+ }
614
+ const result = { pulled, conflicts, errors, erasures };
615
+ this.emitter.emit("sync:pull", result);
616
+ return result;
617
+ }
618
+ /** Bidirectional sync: pull then push. */
619
+ async sync(options) {
620
+ const pullResult = await this.pull(options?.pull);
621
+ const pushResult = await this.push(options?.push);
622
+ return { pull: pullResult, push: pushResult };
623
+ }
624
+ /**
625
+ * Push a specific subset of dirty entries (for sync transactions, ).
626
+ * Entries are matched by collection+id from the dirty log; matched entries
627
+ * are removed from the dirty log on success.
628
+ */
629
+ async pushFiltered(predicate) {
630
+ await this.ensureLoaded();
631
+ let pushed = 0;
632
+ const conflicts = [];
633
+ const erasures = [];
634
+ const errors = [];
635
+ const completed = [];
636
+ for (let i = 0; i < this.dirty.length; i++) {
637
+ const entry = this.dirty[i];
638
+ if (!predicate(entry)) continue;
639
+ try {
640
+ if (entry.action === "delete") {
641
+ await this.remote.delete(this.vault, entry.collection, entry.id);
642
+ completed.push(i);
643
+ pushed++;
644
+ } else {
645
+ const envelope = await this.local.get(this.vault, entry.collection, entry.id);
646
+ if (!envelope) {
647
+ completed.push(i);
648
+ continue;
649
+ }
650
+ if (isTombstoneShape(envelope)) {
651
+ await this.remote.put(this.vault, entry.collection, entry.id, envelope);
652
+ completed.push(i);
653
+ pushed++;
654
+ continue;
655
+ }
656
+ try {
657
+ await this.remote.put(
658
+ this.vault,
659
+ entry.collection,
660
+ entry.id,
661
+ envelope,
662
+ entry.version - 1
663
+ );
664
+ completed.push(i);
665
+ pushed++;
666
+ } catch (err) {
667
+ if (err instanceof ConflictError) {
668
+ const remoteEnvelope = await this.remote.get(this.vault, entry.collection, entry.id);
669
+ if (remoteEnvelope) {
670
+ if (isTombstoneShape(remoteEnvelope)) {
671
+ await this.applyRemote(entry.collection, entry.id, remoteEnvelope);
672
+ erasures.push(this.reportErasure(entry.collection, entry.id, remoteEnvelope, envelope, "push"));
673
+ completed.push(i);
674
+ } else if (remoteEnvelope._v === envelope._v && isDeleteMarker(remoteEnvelope) !== isDeleteMarker(envelope) && !this.conflictResolvers.get(entry.collection)) {
675
+ if (isDeleteMarker(remoteEnvelope)) {
676
+ await this.applyRemote(entry.collection, entry.id, remoteEnvelope);
677
+ completed.push(i);
678
+ } else {
679
+ await this.remote.put(this.vault, entry.collection, entry.id, envelope);
680
+ completed.push(i);
681
+ pushed++;
682
+ }
683
+ } else {
684
+ const { handled, conflict } = await this.handleConflict(
685
+ entry.collection,
686
+ entry.id,
687
+ envelope,
688
+ remoteEnvelope,
689
+ "push"
690
+ );
691
+ conflicts.push(conflict);
692
+ if (handled === "local") {
693
+ await this.remote.put(this.vault, entry.collection, entry.id, conflict.local);
694
+ completed.push(i);
695
+ pushed++;
696
+ } else if (handled === "remote") {
697
+ await this.applyRemote(entry.collection, entry.id, conflict.remote);
698
+ completed.push(i);
699
+ } else if (handled === "merged" && conflict.local !== envelope) {
700
+ const merged = conflict.local;
701
+ await this.remote.put(this.vault, entry.collection, entry.id, merged);
702
+ await this.applyRemote(entry.collection, entry.id, merged);
703
+ completed.push(i);
704
+ pushed++;
705
+ }
706
+ }
707
+ }
708
+ } else {
709
+ throw err;
710
+ }
711
+ }
712
+ }
713
+ } catch (err) {
714
+ errors.push(err instanceof Error ? err : new Error(String(err)));
715
+ }
716
+ }
717
+ for (const i of completed.sort((a, b) => b - a)) {
718
+ this.dirty.splice(i, 1);
719
+ }
720
+ this.lastPush = (/* @__PURE__ */ new Date()).toISOString();
721
+ await this.persistMeta();
722
+ const result = { pushed, conflicts, errors, erasures };
723
+ this.emitter.emit("sync:push", result);
724
+ return result;
725
+ }
726
+ /** Get current sync status. */
727
+ status() {
728
+ return {
729
+ dirty: this.dirty.length,
730
+ lastPush: this.lastPush,
731
+ lastPull: this.lastPull,
732
+ online: this.isOnline
733
+ };
734
+ }
735
+ // ─── Auto-Sync ───────────────────────────────────────────────────
736
+ /** Start auto-sync: listen for online/offline events, optional periodic sync. */
737
+ startAutoSync(intervalMs) {
738
+ if (typeof globalThis.addEventListener === "function") {
739
+ globalThis.addEventListener("online", this.handleOnline);
740
+ globalThis.addEventListener("offline", this.handleOffline);
741
+ }
742
+ if (intervalMs && intervalMs > 0) {
743
+ this.autoSyncInterval = setInterval(() => {
744
+ if (this.isOnline) {
745
+ void this.sync();
746
+ }
747
+ }, intervalMs);
748
+ }
749
+ }
750
+ /** Stop auto-sync and scheduler. */
751
+ stopAutoSync() {
752
+ this.stopScheduler();
753
+ if (typeof globalThis.removeEventListener === "function") {
754
+ globalThis.removeEventListener("online", this.handleOnline);
755
+ globalThis.removeEventListener("offline", this.handleOffline);
756
+ }
757
+ if (this.autoSyncInterval) {
758
+ clearInterval(this.autoSyncInterval);
759
+ this.autoSyncInterval = null;
760
+ }
761
+ }
762
+ handleOnline = () => {
763
+ this.isOnline = true;
764
+ this.emitter.emit("sync:online", void 0);
765
+ void this.sync();
766
+ };
767
+ handleOffline = () => {
768
+ this.isOnline = false;
769
+ this.emitter.emit("sync:offline", void 0);
770
+ };
771
+ /** Apply an envelope to the local store and refresh in-memory views (#598). `action` (#640):
772
+ * classified HERE — the one choke point that still holds the envelope — so the
773
+ * cacheInvalidator seam (and, downstream, the dispatch wave) can tell a pulled delete from an
774
+ * ordinary put. `isTombstoneShape` covers a forgotten-elsewhere record arriving as a shred;
775
+ * `isDeleteMarker` covers an ordinary (#589) delete — both route to the SAME 'delete' action
776
+ * (sync delete ≠ forget: freshness only, no shred/residue channel on the receiving side). */
777
+ async applyRemote(collection, id, envelope) {
778
+ await this.local.put(this.vault, collection, id, envelope);
779
+ const action = isTombstoneShape(envelope) || isDeleteMarker(envelope) ? "delete" : "put";
780
+ await this.cacheInvalidator?.(collection, id, action);
781
+ }
782
+ /** Record + emit a tombstone enforcement (#590). */
783
+ reportErasure(collection, id, tombstone, suppressed, direction) {
784
+ const enforcement = { vault: this.vault, collection, id, tombstone, suppressed, direction };
785
+ this.emitter.emit("sync:erasure", enforcement);
786
+ return enforcement;
787
+ }
788
+ /**
789
+ * Re-assert a local tombstone over a live remote envelope (#590): the shred
790
+ * wins in both directions, regardless of `_v`. Bumps the tombstone to the
791
+ * suppressed envelope's `_v` when higher so per-key version counters stay
792
+ * monotonic on every store; `_by` (the shredding actor) is preserved.
793
+ */
794
+ async reassertTombstone(collection, id, tombstone, suppressedRemote) {
795
+ let winner = tombstone;
796
+ if (suppressedRemote._v > tombstone._v) {
797
+ winner = { ...tombstone, _v: suppressedRemote._v, _ts: (/* @__PURE__ */ new Date()).toISOString() };
798
+ await this.applyRemote(collection, id, winner);
799
+ }
800
+ await this.remote.put(this.vault, collection, id, winner);
801
+ this.dirty = this.dirty.filter((d) => !(d.collection === collection && d.id === id));
802
+ return this.reportErasure(collection, id, winner, suppressedRemote, "pull");
803
+ }
804
+ /**
805
+ * Resolve a conflict, checking per-collection resolvers first,
806
+ * then falling back to the db-level `ConflictStrategy`.
807
+ *
808
+ * Returns the resolved `Conflict` object (possibly with `resolve` set for
809
+ * manual mode) and a `handled` discriminant:
810
+ * - `'local'` — keep the local envelope; push it to remote.
811
+ * - `'remote'` — keep the remote envelope; update local.
812
+ * - `'merged'` — a custom merge fn produced a new envelope stored as `conflict.local`.
813
+ * - `'deferred'` — manual mode, resolve was not called synchronously.
814
+ */
815
+ async handleConflict(collection, id, local, remote, _phase) {
816
+ const resolver = this.conflictResolvers.get(collection);
817
+ if (resolver) {
818
+ const winner = await resolver(id, local, remote);
819
+ const base = {
820
+ vault: this.vault,
821
+ collection,
822
+ id,
823
+ local,
824
+ remote,
825
+ localVersion: local._v,
826
+ remoteVersion: remote._v
827
+ };
828
+ if (winner === null) return { handled: "deferred", conflict: base };
829
+ if (winner === local) return { handled: "local", conflict: base };
830
+ if (winner === remote) return { handled: "remote", conflict: base };
831
+ return {
832
+ handled: "merged",
833
+ conflict: { ...base, local: winner, localVersion: winner._v }
834
+ };
835
+ }
836
+ const baseConflict = {
837
+ vault: this.vault,
838
+ collection,
839
+ id,
840
+ local,
841
+ remote,
842
+ localVersion: local._v,
843
+ remoteVersion: remote._v
844
+ };
845
+ this.emitter.emit("sync:conflict", baseConflict);
846
+ const side = this.legacyResolve(baseConflict);
847
+ return { handled: side, conflict: baseConflict };
848
+ }
849
+ /** DB-level ConflictStrategy resolution (legacy, kept for backward compat). */
850
+ legacyResolve(conflict) {
851
+ if (typeof this.strategy === "function") {
852
+ return this.strategy(conflict);
853
+ }
854
+ switch (this.strategy) {
855
+ case "local-wins":
856
+ return "local";
857
+ case "remote-wins":
858
+ return "remote";
859
+ case "version":
860
+ default:
861
+ return conflict.localVersion >= conflict.remoteVersion ? "local" : "remote";
862
+ }
863
+ }
864
+ // ─── Persistence ─────────────────────────────────────────────────
865
+ async ensureLoaded() {
866
+ if (this.loaded) return;
867
+ const envelope = await this.local.get(this.vault, "_sync", "meta");
868
+ if (envelope) {
869
+ const meta = JSON.parse(envelope._data);
870
+ this.dirty = [...meta.dirty];
871
+ this.lastPush = meta.last_push;
872
+ this.lastPull = meta.last_pull;
873
+ }
874
+ this.loaded = true;
875
+ }
876
+ async persistMeta() {
877
+ const meta = {
878
+ _noydb_sync: NOYDB_SYNC_VERSION,
879
+ last_push: this.lastPush,
880
+ last_pull: this.lastPull,
881
+ dirty: this.dirty
882
+ };
883
+ const envelope = {
884
+ _noydb: 1,
885
+ _v: 1,
886
+ _ts: (/* @__PURE__ */ new Date()).toISOString(),
887
+ _iv: "",
888
+ _data: JSON.stringify(meta)
889
+ };
890
+ await this.local.put(this.vault, "_sync", "meta", envelope);
891
+ }
892
+ };
893
+
894
+ // src/with-party/team/sync-transaction.ts
895
+ var SyncTransaction = class {
896
+ comp;
897
+ engine;
898
+ ops = [];
899
+ /** @internal — constructed by `Noydb.transaction()` */
900
+ constructor(comp, engine) {
901
+ this.comp = comp;
902
+ this.engine = engine;
903
+ }
904
+ /** Stage a record write. Does not write to any adapter until `commit()`. */
905
+ put(collection, id, record) {
906
+ this.ops.push({ type: "put", collection, id, record });
907
+ return this;
908
+ }
909
+ /** Stage a record delete. Does not write to any adapter until `commit()`. */
910
+ delete(collection, id) {
911
+ this.ops.push({ type: "delete", collection, id });
912
+ return this;
913
+ }
914
+ /**
915
+ * Commit the transaction.
916
+ *
917
+ * Phase 1 — writes all staged operations to the local adapter via the
918
+ * collection layer (encryption + dirty-log tracking).
919
+ *
920
+ * Phase 2 — pushes only the records that were written in this
921
+ * transaction to the remote adapter. Existing dirty entries from
922
+ * outside this transaction are not affected.
923
+ *
924
+ * If any record conflicts during the push, `status` is `'conflict'`
925
+ * and `conflicts` lists the affected records. No automatic rollback is
926
+ * performed.
927
+ */
928
+ async commit() {
929
+ for (const op of this.ops) {
930
+ if (op.type === "put") {
931
+ await this.comp.collection(op.collection).put(op.id, op.record);
932
+ } else {
933
+ await this.comp.collection(op.collection).delete(op.id);
934
+ }
935
+ }
936
+ const opSet = /* @__PURE__ */ new Set();
937
+ for (const op of this.ops) {
938
+ opSet.add(`${op.collection}::${op.id}`);
939
+ }
940
+ const pushResult = await this.engine.pushFiltered(
941
+ (entry) => opSet.has(`${entry.collection}::${entry.id}`)
942
+ );
943
+ return {
944
+ status: pushResult.conflicts.length > 0 ? "conflict" : "committed",
945
+ pushed: pushResult.pushed,
946
+ conflicts: pushResult.conflicts,
947
+ ...pushResult.erasures?.length ? { erasures: pushResult.erasures } : {}
948
+ };
949
+ }
950
+ };
951
+
952
+ export {
953
+ PresenceHandle,
954
+ SyncEngine,
955
+ SyncTransaction
956
+ };
957
+ //# sourceMappingURL=chunk-HQBM64EE.js.map