@noy-db/hub 0.3.0-pre.8 → 0.3.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 (955) hide show
  1. package/dist/aggregate/index.js +9 -8
  2. package/dist/aggregate/index.js.map +1 -1
  3. package/dist/api-ZGS6LCOF.js +20 -0
  4. package/dist/as/index.js +11 -11
  5. package/dist/attestation/index.js +18 -18
  6. package/dist/backup-BJ57IKAO.js +242 -0
  7. package/dist/backup-BJ57IKAO.js.map +1 -0
  8. package/dist/blobs/index.js +13 -11
  9. package/dist/blobs/index.js.map +1 -1
  10. package/dist/broker/index.js +92 -0
  11. package/dist/broker/index.js.map +1 -0
  12. package/dist/bundle/index.js +25 -22
  13. package/dist/bundle/index.js.map +1 -1
  14. package/dist/by/index.js +2 -2
  15. package/dist/cargo/index.js +31 -31
  16. package/dist/chunk-2NVOWNI3.js +167 -0
  17. package/dist/chunk-2NVOWNI3.js.map +1 -0
  18. package/dist/chunk-3B5VVCNY.js +71 -0
  19. package/dist/chunk-3LQ2YKO4.js +230 -0
  20. package/dist/chunk-3QCRBHCY.js +54 -0
  21. package/dist/chunk-454JXE57.js +1697 -0
  22. package/dist/chunk-454JXE57.js.map +1 -0
  23. package/dist/chunk-4CTHCN4J.js +480 -0
  24. package/dist/chunk-4CTHCN4J.js.map +1 -0
  25. package/dist/chunk-4GPE63GU.js +111 -0
  26. package/dist/chunk-4GPE63GU.js.map +1 -0
  27. package/dist/chunk-4JBYV75E.js +150 -0
  28. package/dist/chunk-4NXKCLLQ.js +97 -0
  29. package/dist/chunk-4VNQOLML.js +29 -0
  30. package/dist/chunk-4VNQOLML.js.map +1 -0
  31. package/dist/chunk-5M5DVGV7.js +69 -0
  32. package/dist/chunk-5O3XF4DV.js +150 -0
  33. package/dist/chunk-5O3XF4DV.js.map +1 -0
  34. package/dist/chunk-5YOLBEQ6.js +30 -0
  35. package/dist/chunk-6CRIV7DE.js +129 -0
  36. package/dist/chunk-6JTIAGHD.js +621 -0
  37. package/dist/chunk-6JTIAGHD.js.map +1 -0
  38. package/dist/chunk-6QTNZJBS.js +255 -0
  39. package/dist/chunk-6T2SCQRU.js +86 -0
  40. package/dist/chunk-7DSTRQIJ.js +45 -0
  41. package/dist/chunk-AUSTCW2X.js +589 -0
  42. package/dist/chunk-B3HJYUOF.js +209 -0
  43. package/dist/chunk-BDVFPG6Y.js +164 -0
  44. package/dist/chunk-BIOUI4HL.js +1554 -0
  45. package/dist/chunk-BIOUI4HL.js.map +1 -0
  46. package/dist/chunk-CAF6WOK7.js +36 -0
  47. package/dist/chunk-CDUQTA3Z.js +381 -0
  48. package/dist/chunk-CDUQTA3Z.js.map +1 -0
  49. package/dist/chunk-CIE2BASH.js +404 -0
  50. package/dist/chunk-CRI4OUV4.js +42 -0
  51. package/dist/chunk-DLG74CNB.js +91 -0
  52. package/dist/chunk-E5ZQT5KX.js +30 -0
  53. package/dist/chunk-E5ZQT5KX.js.map +1 -0
  54. package/dist/chunk-EQO2UVP4.js +247 -0
  55. package/dist/chunk-EQO2UVP4.js.map +1 -0
  56. package/dist/chunk-ERJ7FU55.js +367 -0
  57. package/dist/chunk-EVVGJDRQ.js +205 -0
  58. package/dist/chunk-EVX47VBM.js +74 -0
  59. package/dist/chunk-EVX47VBM.js.map +1 -0
  60. package/dist/chunk-EXK7QRWF.js +59 -0
  61. package/dist/chunk-EYZ6IQ6X.js +202 -0
  62. package/dist/chunk-F64IRYG3.js +45 -0
  63. package/dist/chunk-FHS2HQSH.js +823 -0
  64. package/dist/chunk-FM3G3NOY.js +206 -0
  65. package/dist/chunk-FM3G3NOY.js.map +1 -0
  66. package/dist/chunk-FUG4SFN3.js +36 -0
  67. package/dist/chunk-FUG4SFN3.js.map +1 -0
  68. package/dist/chunk-GKEWXIV5.js +80 -0
  69. package/dist/chunk-GTGPO5KW.js +59 -0
  70. package/dist/chunk-HB3RFQSC.js +95 -0
  71. package/dist/chunk-HDMEGAQE.js +957 -0
  72. package/dist/chunk-HDMEGAQE.js.map +1 -0
  73. package/dist/chunk-HDQIIUPH.js +135 -0
  74. package/dist/chunk-HDQIIUPH.js.map +1 -0
  75. package/dist/chunk-HTJQYHZP.js +344 -0
  76. package/dist/chunk-HTJQYHZP.js.map +1 -0
  77. package/dist/chunk-I6GALP6E.js +99 -0
  78. package/dist/chunk-IGJCYUT5.js +99 -0
  79. package/dist/chunk-IGJCYUT5.js.map +1 -0
  80. package/dist/chunk-IL6POWCW.js +130 -0
  81. package/dist/chunk-IU6SNYX6.js +117 -0
  82. package/dist/chunk-J2ZX2XUV.js +778 -0
  83. package/dist/chunk-JIF24JPM.js +495 -0
  84. package/dist/chunk-JIF24JPM.js.map +1 -0
  85. package/dist/chunk-JK733I5V.js +23 -0
  86. package/dist/chunk-JK733I5V.js.map +1 -0
  87. package/dist/chunk-JKJOGPZN.js +29 -0
  88. package/dist/chunk-JNAI2HN2.js +32 -0
  89. package/dist/chunk-JNAI2HN2.js.map +1 -0
  90. package/dist/chunk-JZUV47FZ.js +41 -0
  91. package/dist/chunk-K5IMOGHB.js +30 -0
  92. package/dist/chunk-KPZS5QAQ.js +151 -0
  93. package/dist/chunk-KPZS5QAQ.js.map +1 -0
  94. package/dist/chunk-KSKBRKGJ.js +291 -0
  95. package/dist/chunk-KSKBRKGJ.js.map +1 -0
  96. package/dist/chunk-LASZKVMO.js +382 -0
  97. package/dist/chunk-LXEXBTKL.js +515 -0
  98. package/dist/chunk-LXEXBTKL.js.map +1 -0
  99. package/dist/chunk-M4CV6BRT.js +524 -0
  100. package/dist/chunk-M4CV6BRT.js.map +1 -0
  101. package/dist/chunk-MEFJPTZ4.js +371 -0
  102. package/dist/chunk-MEFJPTZ4.js.map +1 -0
  103. package/dist/chunk-MV43JSJF.js +265 -0
  104. package/dist/chunk-MV43JSJF.js.map +1 -0
  105. package/dist/chunk-NJ4EOKMB.js +392 -0
  106. package/dist/chunk-NJ4EOKMB.js.map +1 -0
  107. package/dist/chunk-NR5LT5RY.js +135 -0
  108. package/dist/chunk-NWSGI5C7.js +261 -0
  109. package/dist/chunk-NWSGI5C7.js.map +1 -0
  110. package/dist/chunk-OSDB5WW3.js +739 -0
  111. package/dist/chunk-OSDB5WW3.js.map +1 -0
  112. package/dist/chunk-PN2XMATY.js +37 -0
  113. package/dist/chunk-PN2XMATY.js.map +1 -0
  114. package/dist/chunk-Q5VNKNE5.js +70 -0
  115. package/dist/chunk-QLWMEXCT.js +21 -0
  116. package/dist/chunk-QRB7NAOJ.js +123 -0
  117. package/dist/chunk-R4ROFEYC.js +74 -0
  118. package/dist/chunk-RCVJZMFE.js +164 -0
  119. package/dist/chunk-RCVJZMFE.js.map +1 -0
  120. package/dist/chunk-RIX4V2TB.js +367 -0
  121. package/dist/chunk-RYCTDFUX.js +40 -0
  122. package/dist/chunk-RZ5SVOYR.js +155 -0
  123. package/dist/chunk-SLFHQTTW.js +99 -0
  124. package/dist/chunk-SNZ6URZZ.js +2782 -0
  125. package/dist/chunk-SNZ6URZZ.js.map +1 -0
  126. package/dist/chunk-T2FFWNPK.js +75 -0
  127. package/dist/chunk-T2FFWNPK.js.map +1 -0
  128. package/dist/chunk-UNFPPVNI.js +23 -0
  129. package/dist/chunk-VFUPHI2Z.js +333 -0
  130. package/dist/chunk-VFUPHI2Z.js.map +1 -0
  131. package/dist/chunk-VLFCJYTL.js +235 -0
  132. package/dist/chunk-VN3DBQAU.js +124 -0
  133. package/dist/chunk-VYYM3MEN.js +98 -0
  134. package/dist/chunk-VYYM3MEN.js.map +1 -0
  135. package/dist/chunk-VZRODIM3.js +49 -0
  136. package/dist/chunk-W22IKJE2.js +94 -0
  137. package/dist/chunk-X3YYQWOQ.js +155 -0
  138. package/dist/chunk-X7QBD67R.js +14405 -0
  139. package/dist/chunk-X7QBD67R.js.map +1 -0
  140. package/dist/chunk-XDYREZWE.js +1128 -0
  141. package/dist/chunk-XDYREZWE.js.map +1 -0
  142. package/dist/chunk-XWZVFISC.js +720 -0
  143. package/dist/chunk-XWZVFISC.js.map +1 -0
  144. package/dist/chunk-YFXZEAYK.js +85 -0
  145. package/dist/chunk-ZAJAVEXY.js +50 -0
  146. package/dist/chunk-ZICD77GM.js +34 -0
  147. package/dist/chunk-ZJ2AK4V7.js +38 -0
  148. package/dist/chunk-ZJ2AK4V7.js.map +1 -0
  149. package/dist/chunk-ZUODRVHY.js +14 -0
  150. package/dist/classified/index.js +5 -3
  151. package/dist/classified-marker-CZKA6ITE.js +28 -0
  152. package/dist/classified-marker-CZKA6ITE.js.map +1 -0
  153. package/dist/collection-facade-TLWIPI76.js +44 -0
  154. package/dist/computed-ZIQTYTDI.js +11 -0
  155. package/dist/consent/index.js +9 -9
  156. package/dist/crdt/index.js +1 -1
  157. package/dist/dead-filter-ESOBZZP5.js +28 -0
  158. package/dist/delegation-W7ZV2322.js +25 -0
  159. package/dist/derivations/index.js +12 -11
  160. package/dist/derive-H2BJTLUI.js +21 -0
  161. package/dist/enclave-AP3I5W7O.js +141 -0
  162. package/dist/executor-KGWTNEQD.js +9 -0
  163. package/dist/executor-OVEXR6RT.js +9 -0
  164. package/dist/executor-UNEH5ZYH.js +25 -0
  165. package/dist/export-accessible-PCMXSUZS.js +23 -0
  166. package/dist/extract-partition-SWHFSYJO.js +38 -0
  167. package/dist/fanout-sidecar-A765THMX.js +74 -0
  168. package/dist/find-N6345CNT.js +11 -0
  169. package/dist/forget/index.js +10 -10
  170. package/dist/forget/index.js.map +1 -1
  171. package/dist/guards/index.js +6 -6
  172. package/dist/history/index.js +14 -11
  173. package/dist/history/index.js.map +1 -1
  174. package/dist/i18n/index.js +50 -37
  175. package/dist/i18n/index.js.map +1 -1
  176. package/dist/index.d.ts +307 -1459
  177. package/dist/index.js +595 -198
  178. package/dist/index.js.map +1 -1
  179. package/dist/indexing/index.js +7 -7
  180. package/dist/indexing/index.js.map +1 -1
  181. package/dist/issue-5OKB6I2R.js +19 -0
  182. package/dist/kernel/best-effort-revert.d.ts +52 -0
  183. package/dist/kernel/cache/index.d.ts +10 -0
  184. package/dist/kernel/cache/lru.d.ts +97 -0
  185. package/dist/kernel/cache/policy.d.ts +32 -0
  186. package/dist/kernel/collection-config.d.ts +809 -0
  187. package/dist/kernel/collection.d.ts +1522 -0
  188. package/dist/kernel/constants.d.ts +18 -0
  189. package/dist/kernel/debug.d.ts +25 -0
  190. package/dist/kernel/enclave/broker/proof.d.ts +154 -0
  191. package/dist/kernel/enclave/classify/bidx.d.ts +77 -0
  192. package/dist/kernel/enclave/classify/compare.d.ts +10 -0
  193. package/dist/kernel/enclave/classify/digest.d.ts +8 -0
  194. package/dist/kernel/enclave/classify/find.d.ts +36 -0
  195. package/dist/kernel/enclave/classify/kofn.d.ts +7 -0
  196. package/dist/kernel/enclave/classify/normalize.d.ts +7 -0
  197. package/dist/kernel/enclave/classify/reveal.d.ts +10 -0
  198. package/dist/kernel/enclave/classify/vdig.d.ts +39 -0
  199. package/dist/kernel/enclave/classify/verify.d.ts +36 -0
  200. package/dist/kernel/enclave/classify/write.d.ts +8 -0
  201. package/dist/kernel/enclave/crypto.d.ts +263 -0
  202. package/dist/kernel/enclave/index.d.ts +79 -0
  203. package/dist/kernel/enclave/record-keys/deterministic.d.ts +55 -0
  204. package/dist/kernel/enclave/record-keys/envelope-body.d.ts +79 -0
  205. package/dist/kernel/enclave/record-keys/lifecycle.d.ts +107 -0
  206. package/dist/kernel/enclave/record-keys/record-codec.d.ts +328 -0
  207. package/dist/kernel/enclave/record-keys/sealed-slot.d.ts +14 -0
  208. package/dist/kernel/enclave/record-keys/sealed-slots.d.ts +123 -0
  209. package/dist/kernel/enclave/record-keys/sealing.d.ts +70 -0
  210. package/dist/kernel/enclave/record-keys/tombstone.d.ts +57 -0
  211. package/dist/kernel/env-check.d.ts +1 -0
  212. package/dist/kernel/errors.d.ts +1922 -0
  213. package/dist/kernel/events.d.ts +11 -0
  214. package/dist/kernel/lazy-count.d.ts +13 -0
  215. package/dist/kernel/memory-store.d.ts +17 -0
  216. package/dist/kernel/mutation.d.ts +14 -0
  217. package/dist/kernel/noydb.d.ts +826 -0
  218. package/dist/kernel/paths.d.ts +25 -0
  219. package/dist/kernel/query/builder.d.ts +520 -0
  220. package/dist/kernel/query/index.d.ts +31 -0
  221. package/dist/kernel/query/join.d.ts +205 -0
  222. package/dist/kernel/query/live.d.ts +111 -0
  223. package/dist/kernel/query/predicate.d.ts +139 -0
  224. package/dist/kernel/query/scan-builder.d.ts +334 -0
  225. package/dist/kernel/refs.d.ts +205 -0
  226. package/dist/kernel/schema.d.ts +134 -0
  227. package/dist/kernel/sync-policy.d.ts +188 -0
  228. package/dist/kernel/tier-visibility.d.ts +54 -0
  229. package/dist/kernel/types.d.ts +3239 -0
  230. package/dist/kernel/util/discriminant.d.ts +58 -0
  231. package/dist/kernel/util/index.d.ts +14 -0
  232. package/dist/kernel/util/sanitize-filename.d.ts +75 -0
  233. package/dist/kernel/validation.d.ts +130 -0
  234. package/dist/kernel/vault.d.ts +1740 -0
  235. package/dist/kernel/via/compose.d.ts +144 -0
  236. package/dist/kernel/via/dispatch.d.ts +195 -0
  237. package/dist/kernel/via/graph-wiring.d.ts +145 -0
  238. package/dist/kernel/via/graph.d.ts +166 -0
  239. package/dist/kernel/via/index.d.ts +200 -0
  240. package/dist/kernel/via/pipeline.d.ts +266 -0
  241. package/dist/kernel/via/reconcile.d.ts +153 -0
  242. package/dist/kernel/via/taint-binding.d.ts +66 -0
  243. package/dist/kernel/write-queue.d.ts +46 -0
  244. package/dist/ledger-GFBKVPV4.js +42 -0
  245. package/dist/legacy/bundle.d.ts +30 -0
  246. package/dist/legacy/kernel.d.ts +33 -0
  247. package/dist/liberate-3VDOT4KO.js +24 -0
  248. package/dist/link-set-Z7Q2ASFX.js +31 -0
  249. package/dist/materialized-views/index.js +19 -15
  250. package/dist/noydb-ZCJOYBDI.js +68 -0
  251. package/dist/on/index.js +9 -9
  252. package/dist/overlay-views/index.js +4 -4
  253. package/dist/periods/index.js +12 -12
  254. package/dist/pod/index.js +11 -11
  255. package/dist/policy-Z3RUAIY2.js +41 -0
  256. package/dist/port/as/index.d.ts +26 -0
  257. package/dist/port/at/index.d.ts +18 -0
  258. package/dist/port/by/default-provider.d.ts +9 -0
  259. package/dist/port/by/index.d.ts +17 -0
  260. package/dist/port/by/types.d.ts +86 -0
  261. package/dist/port/in/index.d.ts +21 -0
  262. package/dist/port/on/index.d.ts +27 -0
  263. package/dist/port/to/index.d.ts +19 -0
  264. package/dist/port/ui/index.d.ts +21 -0
  265. package/dist/port/with/blob-strategy.d.ts +98 -0
  266. package/dist/port/with/broker-strategy.d.ts +84 -0
  267. package/dist/port/with/capabilities.d.ts +31 -0
  268. package/dist/port/with/classified-marker.d.ts +9 -0
  269. package/dist/port/with/classified-strategy.d.ts +62 -0
  270. package/dist/port/with/computed-strategy.d.ts +19 -0
  271. package/dist/port/with/i18n-strategy.d.ts +175 -0
  272. package/dist/port/with/index.d.ts +18 -0
  273. package/dist/port/with/lazy-strategy.d.ts +48 -0
  274. package/dist/port/with/lookup-strategy.d.ts +129 -0
  275. package/dist/port/with/service-bus.d.ts +156 -0
  276. package/dist/port/with/team-strategy.d.ts +36 -0
  277. package/dist/port/with/write-hooks.d.ts +34 -0
  278. package/dist/portability/index.js +8 -8
  279. package/dist/post-register-JTH76BLY.js +60 -0
  280. package/dist/post-register-JTH76BLY.js.map +1 -0
  281. package/dist/public-envelope-B4KNWVUA.js +32 -0
  282. package/dist/purge-scope-FGNNLWHD.js +24 -0
  283. package/dist/purge-scope-FGNNLWHD.js.map +1 -0
  284. package/dist/query/index.js +9 -6
  285. package/dist/read-only-facade-CHCKSEPD.js +8 -0
  286. package/dist/register-VAHONCID.js +23 -0
  287. package/dist/registry-7MLVD3VO.js +19 -0
  288. package/dist/registry-EPKPD5SM.js +18 -0
  289. package/dist/registry-P5T7PS2U.js +9 -0
  290. package/dist/request-withdrawal-TI3A5WPS.js +31 -0
  291. package/dist/reveal-DIBHLUZX.js +38 -0
  292. package/dist/reveal-DIBHLUZX.js.map +1 -0
  293. package/dist/revoke-FDRD6GRW.js +24 -0
  294. package/dist/satellites/index.js +1 -1
  295. package/dist/sealed-record/index.js +12 -12
  296. package/dist/seed-Q6M2IZFL.js +231 -0
  297. package/dist/seed-Q6M2IZFL.js.map +1 -0
  298. package/dist/session/index.js +9 -9
  299. package/dist/shadow/index.js +2 -2
  300. package/dist/signer-MUWEIUI6.js +25 -0
  301. package/dist/snapshots/index.js +10 -10
  302. package/dist/stale-OSQ7J3AA.js +29 -0
  303. package/dist/storage-MVFCGEQE.js +23 -0
  304. package/dist/store-coordination-provider-64OEZFGS.js +142 -0
  305. package/dist/sync/index.js +9 -9
  306. package/dist/team/index.js +15 -15
  307. package/dist/tiers/index.js +14 -10
  308. package/dist/to/index.js +1 -2
  309. package/dist/tx/index.js +3 -3
  310. package/dist/util/index.js +1 -1
  311. package/dist/verify-ZASTRNPR.js +140 -0
  312. package/dist/verify-ZASTRNPR.js.map +1 -0
  313. package/dist/via/blob/active.d.ts +34 -0
  314. package/dist/via/blob/binding.d.ts +86 -0
  315. package/dist/via/blob/index.d.ts +34 -0
  316. package/dist/via/classified/active.d.ts +3 -0
  317. package/dist/via/classified/binding.d.ts +83 -0
  318. package/dist/via/classified/config-drift.d.ts +34 -0
  319. package/dist/via/classified/descriptor.d.ts +66 -0
  320. package/dist/via/classified/errors.d.ts +19 -0
  321. package/dist/via/classified/guards.d.ts +23 -0
  322. package/dist/via/classified/index.d.ts +11 -0
  323. package/dist/via/classified/presets.d.ts +65 -0
  324. package/dist/via/classified/resolve.d.ts +9 -0
  325. package/dist/via/classified/strategy.d.ts +11 -0
  326. package/dist/via/classified/validators.d.ts +3 -0
  327. package/dist/via/classified/write.d.ts +4 -0
  328. package/dist/via/computed/binding.d.ts +34 -0
  329. package/dist/via/computed/descriptor.d.ts +35 -0
  330. package/dist/via/i18n/active.d.ts +28 -0
  331. package/dist/via/i18n/binding.d.ts +36 -0
  332. package/dist/via/i18n/core.d.ts +267 -0
  333. package/dist/via/i18n/densify.d.ts +24 -0
  334. package/dist/via/i18n/dictionary.d.ts +200 -0
  335. package/dist/via/i18n/index.d.ts +21 -0
  336. package/dist/via/i18n/policy.d.ts +44 -0
  337. package/dist/via/i18n/script.d.ts +26 -0
  338. package/dist/via/i18n/strategy.d.ts +13 -0
  339. package/dist/via/lookup/active.d.ts +19 -0
  340. package/dist/via/lookup/binding.d.ts +99 -0
  341. package/dist/via/lookup/descriptor.d.ts +123 -0
  342. package/dist/via/lookup/handle.d.ts +220 -0
  343. package/dist/via/lookup/index.d.ts +17 -0
  344. package/dist/via/lookup/registry.d.ts +228 -0
  345. package/dist/via/lookup/snapshot.d.ts +67 -0
  346. package/dist/via/money/arith.d.ts +68 -0
  347. package/dist/via/money/binding.d.ts +21 -0
  348. package/dist/via/money/branded.d.ts +61 -0
  349. package/dist/via/money/descriptor.d.ts +73 -0
  350. package/dist/via/money/fixed-point.d.ts +51 -0
  351. package/dist/via/money/index.d.ts +15 -0
  352. package/dist/via/money/iso4217.d.ts +6 -0
  353. package/dist/via/money/money-reducer.d.ts +33 -0
  354. package/dist/via/money/normalize.d.ts +105 -0
  355. package/dist/via/money/paths.d.ts +61 -0
  356. package/dist/via/money/where.d.ts +127 -0
  357. package/dist/walk-SVNDIZ62.js +241 -0
  358. package/dist/with/index.js +11 -11
  359. package/dist/with-audit/attestation/active.d.ts +10 -0
  360. package/dist/with-audit/attestation/index.d.ts +16 -0
  361. package/dist/with-audit/attestation/issue.d.ts +29 -0
  362. package/dist/with-audit/attestation/revoke.d.ts +15 -0
  363. package/dist/with-audit/attestation/signer.d.ts +33 -0
  364. package/dist/with-audit/attestation/strategy.d.ts +44 -0
  365. package/dist/with-audit/attestation/vault-facade.d.ts +62 -0
  366. package/dist/with-audit/consent/active.d.ts +14 -0
  367. package/dist/with-audit/consent/consent.d.ts +114 -0
  368. package/dist/with-audit/consent/index.d.ts +14 -0
  369. package/dist/with-audit/consent/strategy.d.ts +36 -0
  370. package/dist/with-audit/forget/active.d.ts +31 -0
  371. package/dist/with-audit/forget/index.d.ts +28 -0
  372. package/dist/with-audit/forget/purge-scope.d.ts +54 -0
  373. package/dist/with-audit/forget/strategy.d.ts +199 -0
  374. package/dist/with-audit/forget/subject-index.d.ts +83 -0
  375. package/dist/with-audit/guards/executor.d.ts +26 -0
  376. package/dist/with-audit/guards/immutable-guard.d.ts +63 -0
  377. package/dist/with-audit/guards/index.d.ts +10 -0
  378. package/dist/with-audit/guards/read-only-facade.d.ts +31 -0
  379. package/dist/with-audit/guards/registry.d.ts +83 -0
  380. package/dist/with-audit/guards/transition-guard.d.ts +82 -0
  381. package/dist/with-audit/guards/types.d.ts +134 -0
  382. package/dist/with-audit/guards/with-guard.d.ts +15 -0
  383. package/dist/with-audit/periods/active.d.ts +11 -0
  384. package/dist/with-audit/periods/index.d.ts +18 -0
  385. package/dist/with-audit/periods/periods.d.ts +417 -0
  386. package/dist/with-audit/periods/strategy.d.ts +32 -0
  387. package/dist/with-audit/periods/vault-facade.d.ts +95 -0
  388. package/dist/with-audit/portability/active.d.ts +11 -0
  389. package/dist/with-audit/portability/export-accessible.d.ts +46 -0
  390. package/dist/with-audit/portability/index.d.ts +18 -0
  391. package/dist/with-audit/portability/request-withdrawal.d.ts +85 -0
  392. package/dist/with-audit/portability/strategy.d.ts +31 -0
  393. package/dist/with-audit/portability/withdraw-accessible.d.ts +82 -0
  394. package/dist/with-audit/sealed-record/active.d.ts +9 -0
  395. package/dist/with-audit/sealed-record/index.d.ts +55 -0
  396. package/dist/with-audit/sealed-record/strategy.d.ts +34 -0
  397. package/dist/with-audit/sealed-record/types.d.ts +27 -0
  398. package/dist/with-audit/tiers/active.d.ts +9 -0
  399. package/dist/with-audit/tiers/index.d.ts +394 -0
  400. package/dist/with-audit/tiers/strategy.d.ts +36 -0
  401. package/dist/with-cargo/active.d.ts +11 -0
  402. package/dist/with-cargo/adopt-partition.d.ts +81 -0
  403. package/dist/with-cargo/decrypt-partition.d.ts +19 -0
  404. package/dist/with-cargo/describe-extraction.d.ts +41 -0
  405. package/dist/with-cargo/extract-partition.d.ts +155 -0
  406. package/dist/with-cargo/index.d.ts +33 -0
  407. package/dist/with-cargo/strategy.d.ts +30 -0
  408. package/dist/with-cargo/vault-diff.d.ts +144 -0
  409. package/dist/with-cargo/walk-closure.d.ts +67 -0
  410. package/dist/with-commit/crdt/active.d.ts +25 -0
  411. package/dist/with-commit/crdt/crdt.d.ts +42 -0
  412. package/dist/with-commit/crdt/index.d.ts +16 -0
  413. package/dist/with-commit/crdt/strategy.d.ts +25 -0
  414. package/dist/with-commit/history/active.d.ts +40 -0
  415. package/dist/with-commit/history/diff.d.ts +23 -0
  416. package/dist/with-commit/history/history.d.ts +73 -0
  417. package/dist/with-commit/history/index.d.ts +30 -0
  418. package/dist/with-commit/history/ledger/constants.d.ts +37 -0
  419. package/dist/with-commit/history/ledger/entry.d.ts +195 -0
  420. package/dist/with-commit/history/ledger/hash.d.ts +30 -0
  421. package/dist/with-commit/history/ledger/index.d.ts +19 -0
  422. package/dist/with-commit/history/ledger/patch.d.ts +99 -0
  423. package/dist/with-commit/history/ledger/store.d.ts +356 -0
  424. package/dist/with-commit/history/strategy.d.ts +136 -0
  425. package/dist/with-commit/history/time-machine.d.ts +202 -0
  426. package/dist/with-commit/numbering/descriptor.d.ts +27 -0
  427. package/dist/with-commit/numbering/index.d.ts +69 -0
  428. package/dist/with-commit/sequence/active.d.ts +10 -0
  429. package/dist/with-commit/sequence/index.d.ts +150 -0
  430. package/dist/with-commit/sequence/strategy.d.ts +26 -0
  431. package/dist/with-commit/tx/active.d.ts +27 -0
  432. package/dist/with-commit/tx/dry-run.d.ts +29 -0
  433. package/dist/with-commit/tx/elevated-handle.d.ts +59 -0
  434. package/dist/with-commit/tx/index.d.ts +13 -0
  435. package/dist/with-commit/tx/invariants.d.ts +68 -0
  436. package/dist/with-commit/tx/strategy.d.ts +23 -0
  437. package/dist/with-commit/tx/transaction.d.ts +212 -0
  438. package/dist/with-fork/archive/engine.d.ts +71 -0
  439. package/dist/with-fork/archive/index.d.ts +23 -0
  440. package/dist/with-fork/shadow/active.d.ts +6 -0
  441. package/dist/with-fork/shadow/index.d.ts +14 -0
  442. package/dist/with-fork/shadow/strategy.d.ts +28 -0
  443. package/dist/with-fork/shadow/vault-frame.d.ts +93 -0
  444. package/dist/with-fork/snapshots/active.d.ts +20 -0
  445. package/dist/with-fork/snapshots/engine.d.ts +36 -0
  446. package/dist/with-fork/snapshots/index.d.ts +5 -0
  447. package/dist/with-fork/snapshots/noydb-facade.d.ts +64 -0
  448. package/dist/with-fork/snapshots/policy.d.ts +23 -0
  449. package/dist/with-fork/snapshots/scheduler.d.ts +34 -0
  450. package/dist/with-fork/snapshots/strategy.d.ts +48 -0
  451. package/dist/with-formula/computed/index.d.ts +48 -0
  452. package/dist/with-formula/computed/lazy.d.ts +13 -0
  453. package/dist/with-formula/derivations/executor.d.ts +61 -0
  454. package/dist/with-formula/derivations/fanout-sidecar.d.ts +75 -0
  455. package/dist/with-formula/derivations/index.d.ts +6 -0
  456. package/dist/with-formula/derivations/registry.d.ts +67 -0
  457. package/dist/with-formula/derivations/stale.d.ts +39 -0
  458. package/dist/with-formula/derivations/strategy-hash.d.ts +1 -0
  459. package/dist/with-formula/derivations/types.d.ts +248 -0
  460. package/dist/with-formula/derivations/with-derivation.d.ts +10 -0
  461. package/dist/with-formula/derivations/with-rollup.d.ts +34 -0
  462. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +58 -0
  463. package/dist/with-formula/materialized-views/executor.d.ts +80 -0
  464. package/dist/with-formula/materialized-views/index.d.ts +11 -0
  465. package/dist/with-formula/materialized-views/query-hash.d.ts +23 -0
  466. package/dist/with-formula/materialized-views/registry.d.ts +99 -0
  467. package/dist/with-formula/materialized-views/stale.d.ts +113 -0
  468. package/dist/with-formula/materialized-views/types.d.ts +318 -0
  469. package/dist/with-formula/materialized-views/with-materialized-view.d.ts +24 -0
  470. package/dist/with-formula/overlay-views/index.d.ts +5 -0
  471. package/dist/with-formula/overlay-views/registry.d.ts +42 -0
  472. package/dist/with-formula/overlay-views/types.d.ts +97 -0
  473. package/dist/with-formula/overlay-views/virtual-collection.d.ts +90 -0
  474. package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +9 -0
  475. package/dist/with-lookup/aggregate/active.d.ts +33 -0
  476. package/dist/with-lookup/aggregate/aggregation.d.ts +166 -0
  477. package/dist/with-lookup/aggregate/canonical-key.d.ts +16 -0
  478. package/dist/with-lookup/aggregate/groupby.d.ts +280 -0
  479. package/dist/with-lookup/aggregate/index.d.ts +23 -0
  480. package/dist/with-lookup/aggregate/reducers.d.ts +257 -0
  481. package/dist/with-lookup/aggregate/strategy.d.ts +59 -0
  482. package/dist/with-lookup/embeddings/cosine.d.ts +2 -0
  483. package/dist/with-lookup/embeddings/descriptor.d.ts +8 -0
  484. package/dist/with-lookup/embeddings/index.d.ts +4 -0
  485. package/dist/with-lookup/embeddings/vec-id.d.ts +47 -0
  486. package/dist/with-lookup/embeddings/vector-set.d.ts +19 -0
  487. package/dist/with-lookup/indexing/active.d.ts +30 -0
  488. package/dist/with-lookup/indexing/collection-facade.d.ts +157 -0
  489. package/dist/with-lookup/indexing/eager-indexes.d.ts +122 -0
  490. package/dist/with-lookup/indexing/index.d.ts +27 -0
  491. package/dist/with-lookup/indexing/lazy-builder.d.ts +102 -0
  492. package/dist/with-lookup/indexing/persisted-indexes.d.ts +229 -0
  493. package/dist/with-lookup/indexing/strategy.d.ts +56 -0
  494. package/dist/with-lookup/indexing/unique-constraints.d.ts +74 -0
  495. package/dist/with-lookup/search/active.d.ts +10 -0
  496. package/dist/with-lookup/search/build-docs.d.ts +15 -0
  497. package/dist/with-lookup/search/collection-facade.d.ts +163 -0
  498. package/dist/with-lookup/search/fuse.d.ts +22 -0
  499. package/dist/with-lookup/search/index-store.d.ts +19 -0
  500. package/dist/with-lookup/search/index.d.ts +19 -0
  501. package/dist/with-lookup/search/inverted-index.d.ts +47 -0
  502. package/dist/with-lookup/search/persisted-index-store.d.ts +121 -0
  503. package/dist/with-lookup/search/retrieve-types.d.ts +29 -0
  504. package/dist/with-lookup/search/scan.d.ts +28 -0
  505. package/dist/with-lookup/search/segment.d.ts +15 -0
  506. package/dist/with-lookup/search/serialize.d.ts +4 -0
  507. package/dist/with-lookup/search/snippet.d.ts +5 -0
  508. package/dist/with-lookup/search/strategy.d.ts +41 -0
  509. package/dist/with-lookup/search/tokenize.d.ts +12 -0
  510. package/dist/with-party/auth-introspection/index.d.ts +44 -0
  511. package/dist/with-party/broker/active.d.ts +23 -0
  512. package/dist/with-party/broker/index.d.ts +28 -0
  513. package/dist/with-party/broker/seed.d.ts +77 -0
  514. package/dist/with-party/custody/active.d.ts +10 -0
  515. package/dist/with-party/custody/index.d.ts +69 -0
  516. package/dist/with-party/custody/liberate.d.ts +64 -0
  517. package/dist/with-party/custody/strategy.d.ts +48 -0
  518. package/dist/with-party/directory/index.d.ts +11 -0
  519. package/dist/with-party/directory/public-envelope/index.d.ts +12 -0
  520. package/dist/with-party/directory/public-envelope/schema.d.ts +24 -0
  521. package/dist/with-party/directory/public-envelope/storage.d.ts +59 -0
  522. package/dist/with-party/directory/public-envelope/types.d.ts +80 -0
  523. package/dist/with-party/directory/storage.d.ts +33 -0
  524. package/dist/with-party/directory/types.d.ts +43 -0
  525. package/dist/with-party/directory/user-envelope/api.d.ts +201 -0
  526. package/dist/with-party/directory/user-envelope/index.d.ts +12 -0
  527. package/dist/with-party/directory/user-envelope/storage.d.ts +54 -0
  528. package/dist/with-party/directory/visibility.d.ts +47 -0
  529. package/dist/with-party/policy/engine.d.ts +60 -0
  530. package/dist/with-party/policy/index.d.ts +15 -0
  531. package/dist/with-party/policy/noydb-facade.d.ts +39 -0
  532. package/dist/with-party/policy/presets.d.ts +38 -0
  533. package/dist/with-party/policy/storage.d.ts +31 -0
  534. package/dist/with-party/session/active.d.ts +34 -0
  535. package/dist/with-party/session/dev-unlock.d.ts +128 -0
  536. package/dist/with-party/session/index.d.ts +23 -0
  537. package/dist/with-party/session/session-policy.d.ts +92 -0
  538. package/dist/with-party/session/session.d.ts +131 -0
  539. package/dist/with-party/session/strategy.d.ts +42 -0
  540. package/dist/with-party/session/unlock-state.d.ts +47 -0
  541. package/dist/with-party/sync/index.d.ts +31 -0
  542. package/dist/with-party/tab-coordination.d.ts +73 -0
  543. package/dist/with-party/tab-write-relay.d.ts +39 -0
  544. package/dist/with-party/team/active.d.ts +13 -0
  545. package/dist/with-party/team/authenticators.d.ts +95 -0
  546. package/dist/with-party/team/deed.d.ts +97 -0
  547. package/dist/with-party/team/delegation.d.ts +88 -0
  548. package/dist/with-party/team/index.d.ts +38 -0
  549. package/dist/with-party/team/keyring.d.ts +318 -0
  550. package/dist/with-party/team/magic-link-grant.d.ts +152 -0
  551. package/dist/with-party/team/managed-passphrase.d.ts +280 -0
  552. package/dist/with-party/team/noydb-facade.d.ts +484 -0
  553. package/dist/with-party/team/peer-recover.d.ts +81 -0
  554. package/dist/with-party/team/presence.d.ts +81 -0
  555. package/dist/with-party/team/recovery.d.ts +191 -0
  556. package/dist/with-party/team/reserved-secret-collections.d.ts +41 -0
  557. package/dist/with-party/team/rotate-recover.d.ts +275 -0
  558. package/dist/with-party/team/shamir-recovery-provider.d.ts +15 -0
  559. package/dist/with-party/team/strategy.d.ts +9 -0
  560. package/dist/with-party/team/sync-active.d.ts +33 -0
  561. package/dist/with-party/team/sync-credentials.d.ts +113 -0
  562. package/dist/with-party/team/sync-strategy.d.ts +67 -0
  563. package/dist/with-party/team/sync-transaction.d.ts +39 -0
  564. package/dist/with-party/team/sync.d.ts +174 -0
  565. package/dist/with-party/team/tiers.d.ts +39 -0
  566. package/dist/with-party/team/wrapped-deks.d.ts +86 -0
  567. package/dist/with-pod/backup.d.ts +74 -0
  568. package/dist/with-pod/bundle.d.ts +414 -0
  569. package/dist/with-pod/format.d.ts +203 -0
  570. package/dist/with-pod/index.d.ts +20 -0
  571. package/dist/with-pod/pod-store.d.ts +54 -0
  572. package/dist/with-pod/ulid.d.ts +64 -0
  573. package/dist/with-shape/blobs/blob-compaction.d.ts +170 -0
  574. package/dist/with-shape/blobs/blob-intent.d.ts +153 -0
  575. package/dist/with-shape/blobs/blob-set.d.ts +1286 -0
  576. package/dist/with-shape/blobs/export-blobs.d.ts +110 -0
  577. package/dist/with-shape/blobs/import-external.d.ts +50 -0
  578. package/dist/with-shape/blobs/mime-magic.d.ts +48 -0
  579. package/dist/with-shape/blobs/object-projection.d.ts +70 -0
  580. package/dist/with-shape/introspection/describe.d.ts +237 -0
  581. package/dist/with-shape/introspection/field-meta.d.ts +61 -0
  582. package/dist/with-shape/introspection/fields.d.ts +14 -0
  583. package/dist/with-shape/introspection/index.d.ts +12 -0
  584. package/dist/with-shape/introspection/json-schema.d.ts +13 -0
  585. package/dist/with-shape/introspection/meta.d.ts +22 -0
  586. package/dist/with-shape/introspection/projection.d.ts +13 -0
  587. package/dist/with-shape/introspection/types.d.ts +154 -0
  588. package/dist/with-shape/introspection/walk.d.ts +50 -0
  589. package/dist/with-shape/links/lazy-handle.d.ts +36 -0
  590. package/dist/with-shape/links/link-set.d.ts +67 -0
  591. package/dist/with-shape/links/names.d.ts +65 -0
  592. package/dist/with-shape/links/vault-facade.d.ts +211 -0
  593. package/dist/with-shape/persisted-schemas/canonicalize.d.ts +11 -0
  594. package/dist/with-shape/persisted-schemas/derive.d.ts +29 -0
  595. package/dist/with-shape/persisted-schemas/index.d.ts +21 -0
  596. package/dist/with-shape/persisted-schemas/register.d.ts +66 -0
  597. package/dist/with-shape/persisted-schemas/storage.d.ts +61 -0
  598. package/dist/with-shape/persisted-schemas/types.d.ts +54 -0
  599. package/dist/with-shape/satellites/dead-filter.d.ts +21 -0
  600. package/dist/with-shape/satellites/declare.d.ts +60 -0
  601. package/dist/with-shape/satellites/existence.d.ts +5 -0
  602. package/dist/with-shape/satellites/fanout.d.ts +38 -0
  603. package/dist/with-shape/satellites/forget.d.ts +47 -0
  604. package/dist/with-shape/satellites/index.d.ts +3 -0
  605. package/dist/with-shape/satellites/joined.d.ts +19 -0
  606. package/dist/with-shape/satellites/marker.d.ts +10 -0
  607. package/dist/with-shape/satellites/migrate-cek.d.ts +26 -0
  608. package/dist/with-shape/satellites/post-register.d.ts +6 -0
  609. package/dist/with-shape/satellites/proxy.d.ts +37 -0
  610. package/dist/with-shape/satellites/raw-target.d.ts +14 -0
  611. package/dist/with-shape/satellites/registry.d.ts +19 -0
  612. package/dist/with-shape/satellites/types.d.ts +37 -0
  613. package/dist/with-shape/satellites/validate.d.ts +17 -0
  614. package/dist/with-shape/schema-update/client-registry.d.ts +35 -0
  615. package/dist/with-shape/schema-update/cutover.d.ts +5 -0
  616. package/dist/with-shape/schema-update/delta.d.ts +2 -0
  617. package/dist/with-shape/schema-update/dispatch.d.ts +3 -0
  618. package/dist/with-shape/schema-update/fence-controller.d.ts +62 -0
  619. package/dist/with-shape/schema-update/fence-watcher.d.ts +37 -0
  620. package/dist/with-shape/schema-update/fence.d.ts +15 -0
  621. package/dist/with-shape/schema-update/gate.d.ts +16 -0
  622. package/dist/with-shape/schema-update/index.d.ts +6 -0
  623. package/dist/with-shape/schema-update/store-coordination-provider.d.ts +29 -0
  624. package/dist/with-shape/schema-update/strategies.d.ts +12 -0
  625. package/dist/with-shape/schema-update/types.d.ts +53 -0
  626. package/dist/with-store/index.d.ts +15 -0
  627. package/dist/with-store/lazy/active.d.ts +12 -0
  628. package/dist/with-store/lazy/index.d.ts +14 -0
  629. package/dist/with-store/lazy/strategy.d.ts +9 -0
  630. package/dist/with-store/route-store.d.ts +259 -0
  631. package/dist/with-store/store-middleware.d.ts +189 -0
  632. package/dist/withdraw-accessible-WZIEVWSR.js +28 -0
  633. package/package.json +47 -55
  634. package/dist/adapter/index.d.ts +0 -5
  635. package/dist/adapter/index.js +0 -15
  636. package/dist/aggregate/index.d.ts +0 -42
  637. package/dist/api-JDWL67WL.js +0 -20
  638. package/dist/as/index.d.ts +0 -7
  639. package/dist/at/index.d.ts +0 -5
  640. package/dist/attestation/index.d.ts +0 -20
  641. package/dist/backup-WRGNTGJF.js +0 -225
  642. package/dist/backup-WRGNTGJF.js.map +0 -1
  643. package/dist/blobs/index.d.ts +0 -44
  644. package/dist/bundle/index.d.ts +0 -122
  645. package/dist/bundle-DzWtVw7w.d.ts +0 -548
  646. package/dist/by/index.d.ts +0 -1
  647. package/dist/cargo/index.d.ts +0 -9
  648. package/dist/chunk-25G7PUTA.js +0 -235
  649. package/dist/chunk-26FSVNBL.js +0 -34
  650. package/dist/chunk-2PJB6H3H.js +0 -167
  651. package/dist/chunk-2PJB6H3H.js.map +0 -1
  652. package/dist/chunk-37JZR7CY.js +0 -91
  653. package/dist/chunk-3KBK5LU4.js +0 -117
  654. package/dist/chunk-3YKBGS3I.js +0 -686
  655. package/dist/chunk-3YKBGS3I.js.map +0 -1
  656. package/dist/chunk-44DV37ZV.js +0 -75
  657. package/dist/chunk-44DV37ZV.js.map +0 -1
  658. package/dist/chunk-47C4CI7R.js +0 -108
  659. package/dist/chunk-47C4CI7R.js.map +0 -1
  660. package/dist/chunk-4VDFUBTS.js +0 -275
  661. package/dist/chunk-4VDFUBTS.js.map +0 -1
  662. package/dist/chunk-55LSDABW.js +0 -94
  663. package/dist/chunk-56JB2BGI.js +0 -13003
  664. package/dist/chunk-56JB2BGI.js.map +0 -1
  665. package/dist/chunk-5GQE5IDB.js +0 -513
  666. package/dist/chunk-5GQE5IDB.js.map +0 -1
  667. package/dist/chunk-5HRJQSKN.js +0 -202
  668. package/dist/chunk-5HZULLHE.js +0 -404
  669. package/dist/chunk-5JQMX2EH.js +0 -50
  670. package/dist/chunk-5UOPIPZC.js +0 -95
  671. package/dist/chunk-5YBUFCFF.js +0 -135
  672. package/dist/chunk-62APEMF3.js +0 -280
  673. package/dist/chunk-62APEMF3.js.map +0 -1
  674. package/dist/chunk-6P5AJ2ZS.js +0 -120
  675. package/dist/chunk-6P5AJ2ZS.js.map +0 -1
  676. package/dist/chunk-6PALJTC2.js +0 -430
  677. package/dist/chunk-6PALJTC2.js.map +0 -1
  678. package/dist/chunk-6S7T6WC4.js +0 -111
  679. package/dist/chunk-6S7T6WC4.js.map +0 -1
  680. package/dist/chunk-6Z435B6N.js +0 -1656
  681. package/dist/chunk-6Z435B6N.js.map +0 -1
  682. package/dist/chunk-723XB5NX.js +0 -86
  683. package/dist/chunk-7CZ6YXMO.js +0 -124
  684. package/dist/chunk-7KTL4RHZ.js +0 -120
  685. package/dist/chunk-7KTL4RHZ.js.map +0 -1
  686. package/dist/chunk-7TAV3BFQ.js +0 -766
  687. package/dist/chunk-7TAV3BFQ.js.map +0 -1
  688. package/dist/chunk-BASCPHNM.js +0 -380
  689. package/dist/chunk-BASCPHNM.js.map +0 -1
  690. package/dist/chunk-BGIZAFY7.js +0 -1
  691. package/dist/chunk-BJ2XF2RC.js +0 -823
  692. package/dist/chunk-BM6E4MUT.js +0 -881
  693. package/dist/chunk-BM6E4MUT.js.map +0 -1
  694. package/dist/chunk-BTFTHF6Q.js +0 -42
  695. package/dist/chunk-C4NOLA5X.js +0 -132
  696. package/dist/chunk-C4NOLA5X.js.map +0 -1
  697. package/dist/chunk-CHK5VVMI.js +0 -155
  698. package/dist/chunk-DCVVCJVB.js +0 -45
  699. package/dist/chunk-EU7HDMT3.js +0 -54
  700. package/dist/chunk-F3EKFGUS.js +0 -99
  701. package/dist/chunk-FCOZ7DEC.js +0 -355
  702. package/dist/chunk-FCOZ7DEC.js.map +0 -1
  703. package/dist/chunk-FWART3VA.js +0 -205
  704. package/dist/chunk-FZK3JJJK.js +0 -150
  705. package/dist/chunk-GDOOG5YQ.js +0 -382
  706. package/dist/chunk-GLVXQU3E.js +0 -155
  707. package/dist/chunk-HU55NPHZ.js +0 -80
  708. package/dist/chunk-I6JJ6VJS.js +0 -97
  709. package/dist/chunk-I6URUNTD.js +0 -59
  710. package/dist/chunk-IARAK3PK.js +0 -14
  711. package/dist/chunk-II6DLDZM.js +0 -30
  712. package/dist/chunk-J5YUA6JB.js +0 -23
  713. package/dist/chunk-J7OH6R4K.js +0 -49
  714. package/dist/chunk-K2WCO3NX.js +0 -1
  715. package/dist/chunk-L6Q5NA22.js +0 -40
  716. package/dist/chunk-LFGJG4XZ.js +0 -30
  717. package/dist/chunk-M3OYTM5Z.js +0 -85
  718. package/dist/chunk-MOQ5M46U.js +0 -209
  719. package/dist/chunk-NTPWQH4S.js +0 -589
  720. package/dist/chunk-OJ64XMPJ.js +0 -1434
  721. package/dist/chunk-OJ64XMPJ.js.map +0 -1
  722. package/dist/chunk-OWGAXPRE.js +0 -129
  723. package/dist/chunk-P2PEPSPK.js +0 -230
  724. package/dist/chunk-P6TZ3IVN.js +0 -453
  725. package/dist/chunk-P6TZ3IVN.js.map +0 -1
  726. package/dist/chunk-PAJCRV7O.js +0 -123
  727. package/dist/chunk-PMMV5SQC.js +0 -416
  728. package/dist/chunk-PMMV5SQC.js.map +0 -1
  729. package/dist/chunk-PPPZIBKY.js +0 -261
  730. package/dist/chunk-PPPZIBKY.js.map +0 -1
  731. package/dist/chunk-PVC2FBCQ.js +0 -45
  732. package/dist/chunk-PYIUDUGS.js +0 -36
  733. package/dist/chunk-QABECTNN.js +0 -255
  734. package/dist/chunk-QYMMMKOO.js +0 -164
  735. package/dist/chunk-R4IVPJHN.js +0 -130
  736. package/dist/chunk-REWTMYSF.js +0 -32
  737. package/dist/chunk-REWTMYSF.js.map +0 -1
  738. package/dist/chunk-RNYDHIQL.js +0 -367
  739. package/dist/chunk-RUIMKQTA.js +0 -23
  740. package/dist/chunk-RUIMKQTA.js.map +0 -1
  741. package/dist/chunk-TCGVRKOS.js +0 -367
  742. package/dist/chunk-TIAYXOEI.js +0 -99
  743. package/dist/chunk-TQ3REHVF.js +0 -95
  744. package/dist/chunk-TQ3REHVF.js.map +0 -1
  745. package/dist/chunk-TUL5YQWF.js +0 -777
  746. package/dist/chunk-U7LV2DUN.js +0 -74
  747. package/dist/chunk-UB3XHGFG.js +0 -181
  748. package/dist/chunk-UB3XHGFG.js.map +0 -1
  749. package/dist/chunk-UMH35AQV.js +0 -70
  750. package/dist/chunk-UWZ7O4NR.js +0 -29
  751. package/dist/chunk-V76PHWLE.js +0 -41
  752. package/dist/chunk-VFQOE76I.js +0 -69
  753. package/dist/chunk-VIWOGJ2O.js +0 -71
  754. package/dist/chunk-VK6OC22R.js +0 -37
  755. package/dist/chunk-VK6OC22R.js.map +0 -1
  756. package/dist/chunk-VVLOWY74.js +0 -150
  757. package/dist/chunk-VVLOWY74.js.map +0 -1
  758. package/dist/chunk-W3JABOVB.js +0 -53
  759. package/dist/chunk-W3JABOVB.js.map +0 -1
  760. package/dist/chunk-WPNP3NF5.js +0 -1221
  761. package/dist/chunk-WPNP3NF5.js.map +0 -1
  762. package/dist/chunk-X5QZAJDB.js +0 -59
  763. package/dist/chunk-X6VNIRHS.js +0 -239
  764. package/dist/chunk-X6VNIRHS.js.map +0 -1
  765. package/dist/chunk-XBPUVQDO.js +0 -664
  766. package/dist/chunk-XBPUVQDO.js.map +0 -1
  767. package/dist/chunk-XW5LZYV4.js +0 -21
  768. package/dist/chunk-YTCCC6NG.js +0 -320
  769. package/dist/chunk-YTCCC6NG.js.map +0 -1
  770. package/dist/classified/index.d.ts +0 -17
  771. package/dist/collection-facade-EJVIN2BY.js +0 -39
  772. package/dist/computed-6FOFXQPE.js +0 -11
  773. package/dist/config-drift-RFEVGBKR.js +0 -24
  774. package/dist/config-drift-RFEVGBKR.js.map +0 -1
  775. package/dist/consent/index.d.ts +0 -23
  776. package/dist/crdt/index.d.ts +0 -34
  777. package/dist/dead-filter-RHMNYOXP.js +0 -28
  778. package/dist/decrypt-partition-IHtxEnTi.d.ts +0 -21
  779. package/dist/delegation-IHXOASHV.js +0 -25
  780. package/dist/derivations/index.d.ts +0 -70
  781. package/dist/derive-CD3ZVIXK.js +0 -21
  782. package/dist/describe/index.d.ts +0 -1
  783. package/dist/describe/index.js +0 -1
  784. package/dist/describe-C6iHNlqJ.d.ts +0 -162
  785. package/dist/dev-unlock-wgQ7Ci5I.d.ts +0 -263
  786. package/dist/discriminant-BN9REW3o.d.ts +0 -60
  787. package/dist/enclave-KGEUW2GL.js +0 -123
  788. package/dist/executor-EUPYHCLU.js +0 -9
  789. package/dist/executor-KZ4B3PRT.js +0 -9
  790. package/dist/executor-MHUM2VZK.js +0 -21
  791. package/dist/export-accessible-Z3NSZZHN.js +0 -23
  792. package/dist/extract-partition-VSKT35JG.js +0 -36
  793. package/dist/fanout-sidecar-NBDKKCHT.js +0 -74
  794. package/dist/find-OH4BEULF.js +0 -11
  795. package/dist/forget/index.d.ts +0 -36
  796. package/dist/guards/index.d.ts +0 -35
  797. package/dist/hash-CwHnoKyW.d.ts +0 -72
  798. package/dist/history/index.d.ts +0 -61
  799. package/dist/i18n/index.d.ts +0 -37
  800. package/dist/in/index.d.ts +0 -5
  801. package/dist/index-B9QdHytu.d.ts +0 -123
  802. package/dist/index-CTvUp94-.d.ts +0 -123
  803. package/dist/index-Dn5GzPg_.d.ts +0 -22138
  804. package/dist/indexing/index.d.ts +0 -39
  805. package/dist/issue-AEOL6RXA.js +0 -19
  806. package/dist/kernel/index.d.ts +0 -32
  807. package/dist/kernel/index.js +0 -59
  808. package/dist/lazy/index.d.ts +0 -21
  809. package/dist/ledger-3LR3YO2W.js +0 -42
  810. package/dist/liberate-XSEPRWEA.js +0 -24
  811. package/dist/link-set-NSUIX6BR.js +0 -31
  812. package/dist/materialized-views/index.d.ts +0 -173
  813. package/dist/mime-magic-CYbFNQ4h.d.ts +0 -103
  814. package/dist/noydb-POVTIVQ6.js +0 -62
  815. package/dist/on/index.d.ts +0 -5
  816. package/dist/overlay-views/index.d.ts +0 -98
  817. package/dist/periods/index.d.ts +0 -20
  818. package/dist/pod/index.d.ts +0 -63
  819. package/dist/policy-Y7HL2KGA.js +0 -41
  820. package/dist/portability/index.d.ts +0 -20
  821. package/dist/post-register-KOFRTCDD.js +0 -55
  822. package/dist/post-register-KOFRTCDD.js.map +0 -1
  823. package/dist/public-envelope-NC7SPNMV.js +0 -32
  824. package/dist/query/index.d.ts +0 -5
  825. package/dist/read-only-facade-5ADRJVTM.js +0 -8
  826. package/dist/register-3D6R2MKN.js +0 -23
  827. package/dist/registry-AI4E46PD.js +0 -19
  828. package/dist/registry-HSNQ4NBP.js +0 -9
  829. package/dist/registry-WIX6QCV5.js +0 -17
  830. package/dist/request-withdrawal-GU4XS2R5.js +0 -31
  831. package/dist/reveal-5Y777N5Q.js +0 -38
  832. package/dist/reveal-5Y777N5Q.js.map +0 -1
  833. package/dist/revoke-ZFETCLYV.js +0 -24
  834. package/dist/revoke-ZFETCLYV.js.map +0 -1
  835. package/dist/satellites/index.d.ts +0 -5
  836. package/dist/sealed-record/index.d.ts +0 -69
  837. package/dist/session/index.d.ts +0 -44
  838. package/dist/shadow/index.d.ts +0 -15
  839. package/dist/signer-GAIMQQ2J.js +0 -25
  840. package/dist/signer-GAIMQQ2J.js.map +0 -1
  841. package/dist/snapshots/index.d.ts +0 -26
  842. package/dist/stale-77LP2EEF.js +0 -14
  843. package/dist/stale-77LP2EEF.js.map +0 -1
  844. package/dist/storage-KEXIXLGM.js +0 -23
  845. package/dist/storage-KEXIXLGM.js.map +0 -1
  846. package/dist/store-coordination-provider-NJDDZ264.js +0 -142
  847. package/dist/subject-index-O75wKshW.d.ts +0 -362
  848. package/dist/sync/index.d.ts +0 -41
  849. package/dist/team/index.d.ts +0 -155
  850. package/dist/tiers/index.d.ts +0 -5
  851. package/dist/to/index.d.ts +0 -5
  852. package/dist/transition-guard-D5RLJv8S.d.ts +0 -165
  853. package/dist/tx/index.d.ts +0 -35
  854. package/dist/ui/index.d.ts +0 -1
  855. package/dist/ulid-DRH25k3y.d.ts +0 -66
  856. package/dist/util/index.d.ts +0 -79
  857. package/dist/validators-C3lrVF-c.d.ts +0 -101
  858. package/dist/vault-diff-_LSIcOMv.d.ts +0 -147
  859. package/dist/verify-CAYGXYNO.js +0 -139
  860. package/dist/verify-CAYGXYNO.js.map +0 -1
  861. package/dist/walk-SMAE4IEI.js +0 -241
  862. package/dist/with/index.d.ts +0 -38
  863. package/dist/with-materialized-view-Xv1-9Bh0.d.ts +0 -27
  864. package/dist/with-overlayed-view-CuWhq_-C.d.ts +0 -12
  865. package/dist/with-rollup-K_iwal4b.d.ts +0 -47
  866. package/dist/withdraw-accessible-Q7BULAN5.js +0 -28
  867. package/dist/withdraw-accessible-Q7BULAN5.js.map +0 -1
  868. /package/dist/{adapter/index.js.map → api-ZGS6LCOF.js.map} +0 -0
  869. /package/dist/{chunk-VIWOGJ2O.js.map → chunk-3B5VVCNY.js.map} +0 -0
  870. /package/dist/{chunk-P2PEPSPK.js.map → chunk-3LQ2YKO4.js.map} +0 -0
  871. /package/dist/{chunk-EU7HDMT3.js.map → chunk-3QCRBHCY.js.map} +0 -0
  872. /package/dist/{chunk-FZK3JJJK.js.map → chunk-4JBYV75E.js.map} +0 -0
  873. /package/dist/{chunk-I6JJ6VJS.js.map → chunk-4NXKCLLQ.js.map} +0 -0
  874. /package/dist/{chunk-VFQOE76I.js.map → chunk-5M5DVGV7.js.map} +0 -0
  875. /package/dist/{chunk-LFGJG4XZ.js.map → chunk-5YOLBEQ6.js.map} +0 -0
  876. /package/dist/{chunk-OWGAXPRE.js.map → chunk-6CRIV7DE.js.map} +0 -0
  877. /package/dist/{chunk-QABECTNN.js.map → chunk-6QTNZJBS.js.map} +0 -0
  878. /package/dist/{chunk-723XB5NX.js.map → chunk-6T2SCQRU.js.map} +0 -0
  879. /package/dist/{chunk-PVC2FBCQ.js.map → chunk-7DSTRQIJ.js.map} +0 -0
  880. /package/dist/{chunk-NTPWQH4S.js.map → chunk-AUSTCW2X.js.map} +0 -0
  881. /package/dist/{chunk-MOQ5M46U.js.map → chunk-B3HJYUOF.js.map} +0 -0
  882. /package/dist/{chunk-QYMMMKOO.js.map → chunk-BDVFPG6Y.js.map} +0 -0
  883. /package/dist/{chunk-PYIUDUGS.js.map → chunk-CAF6WOK7.js.map} +0 -0
  884. /package/dist/{chunk-5HZULLHE.js.map → chunk-CIE2BASH.js.map} +0 -0
  885. /package/dist/{chunk-BTFTHF6Q.js.map → chunk-CRI4OUV4.js.map} +0 -0
  886. /package/dist/{chunk-37JZR7CY.js.map → chunk-DLG74CNB.js.map} +0 -0
  887. /package/dist/{chunk-TCGVRKOS.js.map → chunk-ERJ7FU55.js.map} +0 -0
  888. /package/dist/{chunk-FWART3VA.js.map → chunk-EVVGJDRQ.js.map} +0 -0
  889. /package/dist/{chunk-X5QZAJDB.js.map → chunk-EXK7QRWF.js.map} +0 -0
  890. /package/dist/{chunk-5HRJQSKN.js.map → chunk-EYZ6IQ6X.js.map} +0 -0
  891. /package/dist/{chunk-DCVVCJVB.js.map → chunk-F64IRYG3.js.map} +0 -0
  892. /package/dist/{chunk-BJ2XF2RC.js.map → chunk-FHS2HQSH.js.map} +0 -0
  893. /package/dist/{chunk-HU55NPHZ.js.map → chunk-GKEWXIV5.js.map} +0 -0
  894. /package/dist/{chunk-I6URUNTD.js.map → chunk-GTGPO5KW.js.map} +0 -0
  895. /package/dist/{chunk-5UOPIPZC.js.map → chunk-HB3RFQSC.js.map} +0 -0
  896. /package/dist/{chunk-F3EKFGUS.js.map → chunk-I6GALP6E.js.map} +0 -0
  897. /package/dist/{chunk-R4IVPJHN.js.map → chunk-IL6POWCW.js.map} +0 -0
  898. /package/dist/{chunk-3KBK5LU4.js.map → chunk-IU6SNYX6.js.map} +0 -0
  899. /package/dist/{chunk-TUL5YQWF.js.map → chunk-J2ZX2XUV.js.map} +0 -0
  900. /package/dist/{chunk-UWZ7O4NR.js.map → chunk-JKJOGPZN.js.map} +0 -0
  901. /package/dist/{chunk-V76PHWLE.js.map → chunk-JZUV47FZ.js.map} +0 -0
  902. /package/dist/{chunk-II6DLDZM.js.map → chunk-K5IMOGHB.js.map} +0 -0
  903. /package/dist/{chunk-GDOOG5YQ.js.map → chunk-LASZKVMO.js.map} +0 -0
  904. /package/dist/{chunk-5YBUFCFF.js.map → chunk-NR5LT5RY.js.map} +0 -0
  905. /package/dist/{chunk-UMH35AQV.js.map → chunk-Q5VNKNE5.js.map} +0 -0
  906. /package/dist/{chunk-XW5LZYV4.js.map → chunk-QLWMEXCT.js.map} +0 -0
  907. /package/dist/{chunk-PAJCRV7O.js.map → chunk-QRB7NAOJ.js.map} +0 -0
  908. /package/dist/{chunk-U7LV2DUN.js.map → chunk-R4ROFEYC.js.map} +0 -0
  909. /package/dist/{chunk-RNYDHIQL.js.map → chunk-RIX4V2TB.js.map} +0 -0
  910. /package/dist/{chunk-L6Q5NA22.js.map → chunk-RYCTDFUX.js.map} +0 -0
  911. /package/dist/{chunk-CHK5VVMI.js.map → chunk-RZ5SVOYR.js.map} +0 -0
  912. /package/dist/{chunk-TIAYXOEI.js.map → chunk-SLFHQTTW.js.map} +0 -0
  913. /package/dist/{chunk-J5YUA6JB.js.map → chunk-UNFPPVNI.js.map} +0 -0
  914. /package/dist/{chunk-25G7PUTA.js.map → chunk-VLFCJYTL.js.map} +0 -0
  915. /package/dist/{chunk-7CZ6YXMO.js.map → chunk-VN3DBQAU.js.map} +0 -0
  916. /package/dist/{chunk-J7OH6R4K.js.map → chunk-VZRODIM3.js.map} +0 -0
  917. /package/dist/{chunk-55LSDABW.js.map → chunk-W22IKJE2.js.map} +0 -0
  918. /package/dist/{chunk-GLVXQU3E.js.map → chunk-X3YYQWOQ.js.map} +0 -0
  919. /package/dist/{chunk-M3OYTM5Z.js.map → chunk-YFXZEAYK.js.map} +0 -0
  920. /package/dist/{chunk-5JQMX2EH.js.map → chunk-ZAJAVEXY.js.map} +0 -0
  921. /package/dist/{chunk-26FSVNBL.js.map → chunk-ZICD77GM.js.map} +0 -0
  922. /package/dist/{chunk-IARAK3PK.js.map → chunk-ZUODRVHY.js.map} +0 -0
  923. /package/dist/{api-JDWL67WL.js.map → collection-facade-TLWIPI76.js.map} +0 -0
  924. /package/dist/{chunk-BGIZAFY7.js.map → computed-ZIQTYTDI.js.map} +0 -0
  925. /package/dist/{dead-filter-RHMNYOXP.js.map → dead-filter-ESOBZZP5.js.map} +0 -0
  926. /package/dist/{chunk-K2WCO3NX.js.map → delegation-W7ZV2322.js.map} +0 -0
  927. /package/dist/{collection-facade-EJVIN2BY.js.map → derive-H2BJTLUI.js.map} +0 -0
  928. /package/dist/{computed-6FOFXQPE.js.map → enclave-AP3I5W7O.js.map} +0 -0
  929. /package/dist/{delegation-IHXOASHV.js.map → executor-KGWTNEQD.js.map} +0 -0
  930. /package/dist/{derive-CD3ZVIXK.js.map → executor-OVEXR6RT.js.map} +0 -0
  931. /package/dist/{describe/index.js.map → executor-UNEH5ZYH.js.map} +0 -0
  932. /package/dist/{enclave-KGEUW2GL.js.map → export-accessible-PCMXSUZS.js.map} +0 -0
  933. /package/dist/{executor-EUPYHCLU.js.map → extract-partition-SWHFSYJO.js.map} +0 -0
  934. /package/dist/{fanout-sidecar-NBDKKCHT.js.map → fanout-sidecar-A765THMX.js.map} +0 -0
  935. /package/dist/{executor-KZ4B3PRT.js.map → find-N6345CNT.js.map} +0 -0
  936. /package/dist/{executor-MHUM2VZK.js.map → issue-5OKB6I2R.js.map} +0 -0
  937. /package/dist/{export-accessible-Z3NSZZHN.js.map → ledger-GFBKVPV4.js.map} +0 -0
  938. /package/dist/{extract-partition-VSKT35JG.js.map → liberate-3VDOT4KO.js.map} +0 -0
  939. /package/dist/{find-OH4BEULF.js.map → link-set-Z7Q2ASFX.js.map} +0 -0
  940. /package/dist/{issue-AEOL6RXA.js.map → noydb-ZCJOYBDI.js.map} +0 -0
  941. /package/dist/{kernel/index.js.map → policy-Z3RUAIY2.js.map} +0 -0
  942. /package/dist/{ledger-3LR3YO2W.js.map → public-envelope-B4KNWVUA.js.map} +0 -0
  943. /package/dist/{liberate-XSEPRWEA.js.map → read-only-facade-CHCKSEPD.js.map} +0 -0
  944. /package/dist/{link-set-NSUIX6BR.js.map → register-VAHONCID.js.map} +0 -0
  945. /package/dist/{noydb-POVTIVQ6.js.map → registry-7MLVD3VO.js.map} +0 -0
  946. /package/dist/{policy-Y7HL2KGA.js.map → registry-EPKPD5SM.js.map} +0 -0
  947. /package/dist/{public-envelope-NC7SPNMV.js.map → registry-P5T7PS2U.js.map} +0 -0
  948. /package/dist/{read-only-facade-5ADRJVTM.js.map → request-withdrawal-TI3A5WPS.js.map} +0 -0
  949. /package/dist/{register-3D6R2MKN.js.map → revoke-FDRD6GRW.js.map} +0 -0
  950. /package/dist/{registry-AI4E46PD.js.map → signer-MUWEIUI6.js.map} +0 -0
  951. /package/dist/{registry-HSNQ4NBP.js.map → stale-OSQ7J3AA.js.map} +0 -0
  952. /package/dist/{registry-WIX6QCV5.js.map → storage-MVFCGEQE.js.map} +0 -0
  953. /package/dist/{store-coordination-provider-NJDDZ264.js.map → store-coordination-provider-64OEZFGS.js.map} +0 -0
  954. /package/dist/{walk-SMAE4IEI.js.map → walk-SVNDIZ62.js.map} +0 -0
  955. /package/dist/{request-withdrawal-GU4XS2R5.js.map → withdraw-accessible-WZIEVWSR.js.map} +0 -0
@@ -0,0 +1,31 @@
1
+ /**
2
+ * `withForgetCascade` — the active factory for GDPR right-to-erasure via
3
+ * per-record CEK crypto-shred. Mirrors the canonical
4
+ * `strategy.ts` (type + `NO_FORGET` sentinel) / `active.ts` (factory) split
5
+ * used by the other services.
6
+ *
7
+ * @module
8
+ */
9
+ import type { SubjectDeclaration, ForgetStrategy } from './strategy.js';
10
+ /**
11
+ * Declare GDPR crypto-shred for one or more collections.
12
+ *
13
+ * Each declared collection is forced to `perRecordKeys: true` (a shred can
14
+ * only guarantee erasure of a record whose body is keyed off a per-record
15
+ * CEK). On write, Noydb extracts `record[subjectField]` and maintains an
16
+ * encrypted `_subject_index` mapping `subject → [{collection, id}]`, so
17
+ * `vault.forget(subjectId)` can find every record for a subject and rewrite
18
+ * each to a tombstone (body + history permanently undecryptable) while the
19
+ * collection DEK and every other record stay intact.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * createNoydb({
24
+ * secret, user,
25
+ * forgetStrategy: withForgetCascade({ subjects: { invoices: 'buyerId' } }),
26
+ * })
27
+ * const result = await vault.forget('buyer-123')
28
+ * // → { subject, recordsShredded, historyVersionsShredded, collections, … }
29
+ * ```
30
+ */
31
+ export declare function withForgetCascade(opts: SubjectDeclaration): ForgetStrategy;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `@noy-db/hub/forget` — GDPR right-to-erasure via per-record CEK crypto-shred.
3
+ * Import `withForgetCascade` and pass it to `createNoydb`:
4
+ *
5
+ * ```ts
6
+ * import { createNoydb } from '@noy-db/hub'
7
+ * import { withForgetCascade } from '@noy-db/hub/forget'
8
+ *
9
+ * const db = createNoydb({
10
+ * secret, user,
11
+ * historyStrategy: withHistory(), // ledger for the erasure proof
12
+ * forgetStrategy: withForgetCascade({ subjects: { invoices: 'buyerId' } }),
13
+ * })
14
+ * const result = await db.vault('main').forget('buyer-123')
15
+ * ```
16
+ *
17
+ * The erasure flow (`vault.forget`), the subject-index maintenance hooks, and
18
+ * the tombstone rewrite live in core (`vault.ts` / `collection.ts`) because
19
+ * they touch the write path directly; this subpath only exposes the
20
+ * declaration factory + result types.
21
+ *
22
+ * @module
23
+ */
24
+ export { withForgetCascade } from './active.js';
25
+ export { NO_FORGET } from './strategy.js';
26
+ export type { SubjectDeclaration, ForgetStrategy, ForgetResult, ScopedPurgeResidueNotice, } from './strategy.js';
27
+ export type { SubjectRef } from './subject-index.js';
28
+ export { SUBJECT_INDEX_COLLECTION } from './subject-index.js';
@@ -0,0 +1,54 @@
1
+ /**
2
+ * #633 — scoped-purge partitioning for the opt-in `scopedPurge` forget-strategy
3
+ * knob (`strategy.ts`'s `SubjectDeclaration.scopedPurge`). Pure helpers only —
4
+ * no store I/O, no `Vault`/`Collection` imports — kept out of `kernel/vault.ts`
5
+ * (exact zero-slack `kernel-surface` ceiling) and free of any circular-import
6
+ * risk with the kernel spine.
7
+ *
8
+ * The two `forget()` purge sites (`_sealed_cek` listing, blob shred) stay
9
+ * UNCONDITIONAL by default (byte-identical to pre-#633 behavior); when
10
+ * `scopedPurge` is `true`, each site calls into this module to decide what to
11
+ * purge vs. what to leave in place + report as residue, keyed off a
12
+ * per-collection declaration signal the caller (vault.ts) resolves itself:
13
+ * - sealed-CEK arm: `coll._via?.hasAtRestHooks === true` — the classified
14
+ * via binding's at-rest hooks (the "richer" declaration; a bare
15
+ * `sensitive` collection with NO classified binder does not count — it can
16
+ * still call `sealRecordToHost()` ad hoc, which is exactly the
17
+ * under-approximation #633 calls out).
18
+ * - blob arm: `this.blobFieldsRegistry.has(ref.collection)` — a collection
19
+ * can call `.blob(id)` regardless of this declaration (same
20
+ * under-approximation), which is why the default stays unconditional.
21
+ *
22
+ * @module
23
+ */
24
+ import type { ScopedPurgeResidueReason } from './strategy.js';
25
+ /**
26
+ * Partitions an already-fetched vault-wide `_sealed_cek` key listing into
27
+ * keys to purge vs. a skipped count, for ONE ref's `<collection>/<id>/`
28
+ * prefix. No new store call — `keys` is the SAME listing the unconditional
29
+ * path already fetched. Default parity: when `scopedPurge` is false, or
30
+ * `declared` is true, every matching key is returned for purge and
31
+ * `skippedCount` is 0 — byte-identical to the unconditional behavior.
32
+ */
33
+ export declare function partitionSealedCekKeys(keys: readonly string[], prefix: string, scopedPurge: boolean, declared: boolean): {
34
+ readonly toPurge: readonly string[];
35
+ readonly skippedCount: number;
36
+ };
37
+ /**
38
+ * True when the blob arm should skip `ref.collection` entirely — no
39
+ * `.blob(id).shredAllForRecord()` call AND no `_blob_slots_<collection>`
40
+ * residue-detection `list()` call either (the perf win: scoped mode never
41
+ * pays for a per-collection scan on a collection that never declared
42
+ * `blobFields`).
43
+ */
44
+ export declare function shouldSkipBlobScan(scopedPurge: boolean, declared: boolean): boolean;
45
+ /** Adds `count` (if positive) to `collection`'s running total in `map` — the
46
+ * per-collection residue accumulator both purge sites share. */
47
+ export declare function bumpResidueCount(map: Map<string, number>, collection: string, count: number): void;
48
+ /** Flattens an accumulated per-collection count map into `ForgetResult.scopedPurgeResidue` notices
49
+ * tagged with `reason`. Empty map → empty array (the unconditional-default case). */
50
+ export declare function residueNoticesFromMap(map: ReadonlyMap<string, number>, reason: ScopedPurgeResidueReason): {
51
+ readonly reason: ScopedPurgeResidueReason;
52
+ readonly collection: string;
53
+ readonly count: number;
54
+ }[];
@@ -0,0 +1,199 @@
1
+ /**
2
+ * `withForgetCascade` — declaration surface for GDPR right-to-erasure via
3
+ * per-record CEK crypto-shred.
4
+ *
5
+ * This file holds only the *declaration* shape and the disabled sentinel.
6
+ * The actual erasure machinery lives in:
7
+ * - `subject-index.ts` — the encrypted `_subject_index` reserved collection
8
+ * - `vault.ts` `forget()` — the per-record tombstone + ledger flow
9
+ * - `collection.ts` `_writeTombstone` — the envelope rewrite
10
+ *
11
+ * A `ForgetStrategy` declares which collections carry erasable subject data
12
+ * and the (dotted-path) field on each record that names the data subject.
13
+ * Declaring a collection here ALSO forces `perRecordKeys: true` for it (a
14
+ * shred can only erase a record whose body is keyed off a per-record CEK),
15
+ * so adopters opt into the CEK foundation transitively.
16
+ *
17
+ * @module
18
+ */
19
+ import type { LedgerEntry } from '../../with-commit/history/ledger/entry.js';
20
+ /**
21
+ * User-supplied declaration passed to {@link withForgetCascade}. Maps a
22
+ * collection name to the record field (dotted path supported, e.g.
23
+ * `'billing.buyerId'`) that identifies the data subject for erasure.
24
+ *
25
+ * ```ts
26
+ * withForgetCascade({ subjects: { invoices: 'buyerId', contacts: 'id' } })
27
+ * ```
28
+ */
29
+ export interface SubjectDeclaration {
30
+ readonly subjects: Record<string, string>;
31
+ /**
32
+ * #633 — opt-in: gate the vault-level `_sealed_cek` and blob purges on
33
+ * per-collection via declarations instead of running them unconditionally
34
+ * for every forgotten ref. Default `false`/absent = today's unconditional
35
+ * behavior (byte-identical). See `purge-scope.ts` for the partition logic
36
+ * and the `scopedPurgeResidue` skip-reporting this enables.
37
+ *
38
+ * **Footgun:** a bare `sensitive: [...]` collection — no `classifiedFields`
39
+ * (no classified via binder compiled in) — counts as UNDECLARED for the
40
+ * sealed-CEK arm. Under `scopedPurge: true`, its `_sealed_cek` host-delivery
41
+ * envelopes are SKIPPED, not purged (reported via `scopedPurgeResidue`,
42
+ * reason `'skipped-undeclared-sealed-cek'`) even if that collection called
43
+ * `sealRecordToHost()` — the sealed CEK stays recoverable by that granted
44
+ * host until purged. Add a `classifiedFields` binding to close the gap, or
45
+ * leave `scopedPurge` off/false for the unconditional (always-purged) default.
46
+ * The declaration signal is session-local: a declared collection never opened
47
+ * (with its config) before `forget()` in this session counts as UNDECLARED —
48
+ * open it first, or its entries are skipped-and-reported.
49
+ */
50
+ readonly scopedPurge?: boolean;
51
+ }
52
+ /**
53
+ * Resolved forget strategy threaded through Noydb → every Vault. Carries
54
+ * the same `subjects` map the user declared. `NO_FORGET` (empty map) is the
55
+ * off-by-default sentinel; `vault.forget()` throws
56
+ * `ForgetStrategyNotConfiguredError` when the map is empty.
57
+ */
58
+ export interface ForgetStrategy {
59
+ /** Collection → subject-field (dotted path). Empty under `NO_FORGET`. */
60
+ readonly subjects: Readonly<Record<string, string>>;
61
+ /** #633 — see {@link SubjectDeclaration.scopedPurge}. */
62
+ readonly scopedPurge?: boolean;
63
+ }
64
+ /**
65
+ * Disabled sentinel — no collections declare a subject field. `vault.forget()`
66
+ * refuses with `ForgetStrategyNotConfiguredError`; no write hooks register; no
67
+ * collection is forced into `perRecordKeys`. Non-adopters pay nothing.
68
+ */
69
+ export declare const NO_FORGET: ForgetStrategy;
70
+ /**
71
+ * The outcome of a `vault.forget(subjectId)` call.
72
+ *
73
+ * `unmigratedRecords` lists `collection:id` pairs that were tombstoned but
74
+ * whose body had NOT been migrated to a per-record CEK at shred time (legacy
75
+ * body still under the shared collection DEK). Those records are tombstoned
76
+ * (live envelope + history stripped) but their pre-shred ciphertext, if it
77
+ * leaked into a backup before migration, remains decryptable under the
78
+ * collection DEK — so erasure-completeness is NOT guaranteed for them. Run
79
+ * the per-record-CEK migration pass, then re-forget, to close the gap.
80
+ *
81
+ * Blob attachments: a shredded record's **erasable** blobs (on a
82
+ * `perRecordKeys` collection) are crypto-shredded inline — `blobsShredded`
83
+ * counts those taken to refCount 0 (BlobObject deleted → chunks permanently
84
+ * undecryptable), `blobsRetainedShared` counts those still referenced by
85
+ * another record (shared content legitimately persists for its other owner).
86
+ * `blobResidueCollections` now lists only collections with blobs that could
87
+ * NOT be crypto-shredded: **legacy** blobs (no per-blob `_cek`, chunks under
88
+ * the shared `_blob` DEK — migrate them), or a session without the blob
89
+ * service loaded. An all-erasable subject yields an empty residue list.
90
+ */
91
+ export interface ForgetResult {
92
+ /** The subject id passed to `forget()`. Echoed for caller convenience. */
93
+ readonly subject: string;
94
+ /** Count of live records rewritten to a tombstone. */
95
+ readonly recordsShredded: number;
96
+ /** Count of `_history` envelopes tombstoned across all shredded records. */
97
+ readonly historyVersionsShredded: number;
98
+ /** Distinct collections that had at least one record shredded. */
99
+ readonly collections: readonly string[];
100
+ /** `collection:id` pairs shredded while still un-migrated (see type docs). */
101
+ readonly unmigratedRecords: readonly string[];
102
+ /** Count of erasable blobs crypto-shredded (refCount → 0, BlobObject deleted). */
103
+ readonly blobsShredded: number;
104
+ /** Count of erasable blobs retained because still referenced elsewhere (shared). */
105
+ readonly blobsRetainedShared: number;
106
+ /** Collections with blobs that could NOT be crypto-shredded — legacy (no `_cek`) or blobs disabled (see type docs). */
107
+ readonly blobResidueCollections: readonly string[];
108
+ /**
109
+ * Count of persisted `_idx/<field>/<recordId>` index side-cars hard-deleted
110
+ * across the shredded records. These live under the retained
111
+ * collection DEK, so crypto-shred alone would leave the indexed field VALUES
112
+ * readable — `forget()` must delete them.
113
+ */
114
+ readonly indexPostingsPurged: number;
115
+ /**
116
+ * `collection:id:field` entries whose persisted `_idx` side-car could NOT be
117
+ * deleted — index residue that still leaks the indexed value under the
118
+ * retained collection DEK. Non-empty means erasure is INCOMPLETE: retry, or
119
+ * purge the side-car out of band.
120
+ */
121
+ readonly indexResidue: readonly string[];
122
+ /**
123
+ * Count of `_sealed[field]` slots dropped from the live store across the
124
+ * shredded records. For slots written under `sensitive` +
125
+ * `perRecordKeys` (the current path), the key derives off the per-record CEK,
126
+ * so tombstoning the record — which drops `_cek` and `_sealed` — also
127
+ * crypto-shreds the value. A legacy slot (written before per-record CEKs) keys
128
+ * off the collection DEK instead, so dropping it removes it from the live store but a
129
+ * pre-forget backup remains recoverable by a DEK holder (same caveat `_data`
130
+ * carries); migrate by re-`put`ting before forgetting for full crypto-shred.
131
+ */
132
+ readonly sealedFieldsShredded: number;
133
+ /** Count of `_sealed_cek` host-delivery envelopes deleted (#H-1). A record sealed to an
134
+ * at-* host via sealRecordToHost persists its raw CEK there; forget() must destroy them. */
135
+ readonly sealedCekEnvelopesPurged: number;
136
+ /** `collection:id` whose `_sealed_cek` purge failed (residue — the host-recoverable CEK may survive). */
137
+ readonly sealedCekResidue: readonly string[];
138
+ /** `collection:id:field` sealed slots that were DEK-derived (legacy, written before per-record CEKs) and thus NOT crypto-shredded
139
+ * by dropping `_cek` — the collection DEK is retained, so synced/backup copies stay decryptable (#M-1). */
140
+ readonly sealedResidue: readonly string[];
141
+ /** Count of `_ledger_deltas` rows hard-deleted across the shredded records (#734) — the
142
+ * erasure twin of #729's elevate-side purge. Entry metadata (that the record was mutated,
143
+ * at which version/timestamp/actor) is retained; only the plaintext delta content is removed. */
144
+ readonly ledgerDeltasPurged: number;
145
+ /** `collection:id` refs whose `_ledger_deltas` purge failed — plaintext delta residue still
146
+ * readable under the retained ledger DEK. Non-empty means erasure is INCOMPLETE. */
147
+ readonly ledgerDeltaResidue: readonly string[];
148
+ /** The single `op:'forget'` ledger entry appended for this erasure. */
149
+ readonly ledgerEntry: LedgerEntry;
150
+ /** #622 — record-grain derived artifacts (MV rows, per-record derived copies) erased
151
+ * because their source subject was forgotten. Overlay outputs are intentionally out of
152
+ * scope here — an overlay is always sourced from an MV, never directly from a subject
153
+ * collection, so the personal-data-bearing MV rows it reads are already erased above. */
154
+ readonly derivedRecordsErased: number;
155
+ /** #622 — aggregate-grain targets (rollups) recomputed without the forgotten contribution. */
156
+ readonly derivedAggregatesRecomputed: number;
157
+ /** #622 — `collection:id` derived writes SKIPPED because the target period is frozen
158
+ * (recompute deferred; the aggregate retains the forgotten contribution — audited). */
159
+ readonly derivedResidueFrozen: readonly string[];
160
+ /** #650 Task 5 (#648) — referencing records tombstoned via a `'ref'` edge's `cascade` policy. */
161
+ readonly lookupReferencesCascaded: number;
162
+ /** #650 Task 5 (#648) — referencing fields cleared via a `'ref'` edge's `nullify` policy. */
163
+ readonly lookupReferencesNullified: number;
164
+ /** #650 Task 5 review (Important fix) — `'ref'` edges whose compare-key could NOT be resolved,
165
+ * even from the LIVE pre-shred backing row — cascade/nullify propagation was SKIPPED for these.
166
+ * Always empty in the ordinary case; non-empty means the skip is reported, never silent. */
167
+ readonly lookupReferencesResidue: readonly string[];
168
+ /** #633 — scoped-purge skip notices (opt-in `scopedPurge`, see {@link SubjectDeclaration}).
169
+ * Always empty under the unconditional default. Non-empty means a `_sealed_cek` entry or a
170
+ * blob scan was skipped for an undeclared collection — reported, never a silent skip. */
171
+ readonly scopedPurgeResidue: readonly ScopedPurgeResidueNotice[];
172
+ /** #776/#782/#785 — `collection:id` MV-output rows that survived erasure invalidation (eager
173
+ * tombstone leg AND lazy/manual `invalidateMVAtRest`) despite belonging to the forgotten
174
+ * subject, because the `_materializedFrom` ownership stamp could NOT be decoded (undecodable
175
+ * under the collection's default DEK — e.g. elevated above tier 0 on a tiered output
176
+ * collection; ownership unconfirmed — could be a plain user record on a same-collection
177
+ * partition MV). Never erased, but surfaced here rather than silently skipped (the #724
178
+ * posture). Non-empty means the row may still hold the forgotten/pre-elevation contribution,
179
+ * decryptable by tier-holders. */
180
+ readonly derivedResidueUndecodable: readonly string[];
181
+ /** #782/#785 — `collection:id` MV-output rows that DID decode and stamp-match via
182
+ * `_materializedFrom`, but whose erasure was declined by the #718 tier-elevation gate
183
+ * (`_internalDelete` returned false). Ownership CONFIRMED here — a real silent survival,
184
+ * not a stamp-mismatch skip — surfaced rather than dropped. Non-empty means a live,
185
+ * tier-holder-decryptable copy of the forgotten contribution was deliberately retained. */
186
+ readonly derivedResidueDeclined: readonly string[];
187
+ }
188
+ /** #633 — the two `scopedPurgeResidue` skip reasons. Single source of truth: `purge-scope.ts`
189
+ * (the port-internal partition helpers) imports this rather than redeclaring it. */
190
+ export type ScopedPurgeResidueReason = 'skipped-undeclared-sealed-cek' | 'skipped-undeclared-blob-scan';
191
+ /** #633 — one `ForgetResult.scopedPurgeResidue` entry: an undeclared collection's sealed-CEK
192
+ * entries left unpurged, or its blob scan skipped entirely, under `scopedPurge`. `count` is the
193
+ * number of `_sealed_cek` entries left in place (sealed-cek reason) or the number of refs whose
194
+ * blob scan was skipped (blob-scan reason) — aggregated per collection across the whole call. */
195
+ export interface ScopedPurgeResidueNotice {
196
+ readonly reason: ScopedPurgeResidueReason;
197
+ readonly collection: string;
198
+ readonly count: number;
199
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * The encrypted subject index.
3
+ *
4
+ * GDPR crypto-shred needs to answer "which records belong to data subject
5
+ * X?" portably (the index must travel with the vault/bundle) WITHOUT leaking
6
+ * subject-equivalence to the store. The rejected alternative — an unencrypted
7
+ * subject tag in envelope metadata — would let anyone with store access see
8
+ * which records share a subject. Instead we keep a reserved `_subject_index`
9
+ * collection, encrypted under its OWN DEK (`getDEK('_subject_index')`):
10
+ *
11
+ * - record id = `HMAC-SHA256(indexDEK, subjectId)` (M-2). A bare
12
+ * `sha256Hex(subjectId)` would be offline-computable: an attacker with
13
+ * store access and a candidate list (emails / customer ids are low-entropy)
14
+ * could dictionary the hash to confirm "subject X is present here." Keying
15
+ * the id with the vault-only index DEK removes that capability — without the
16
+ * DEK the id cannot be derived. (Legacy entries written before M-2 used the
17
+ * bare sha256 id; the read/remove paths dual-look-up both forms.)
18
+ * - record body = AES-GCM(JSON `{ r: [{ collection, id }], p }`) under the
19
+ * index DEK, where `p` pads the plaintext to a bucketed length so the
20
+ * ciphertext `_data` length does not leak the approximate record count.
21
+ * Legacy bodies were a bare `[{ collection, id }]` array; reads accept both.
22
+ *
23
+ * ## Concurrency (RISK #3 — known v1 limitation)
24
+ *
25
+ * `addSubjectRef` / `removeSubjectRef` are read-modify-write with no CAS. The
26
+ * design assumes a SINGLE WRITER (the noy-db single-process write model). Two
27
+ * concurrent writers racing on the SAME subject can lose an entry (last-write
28
+ * wins on the ref list). This is documented, not fixed in v1:
29
+ * `rebuildSubjectIndex` performs a full scan to recover a correct index from
30
+ * the canonical records, so a lost ref is recoverable. A CAS-backed index is
31
+ * deferred to a later slice.
32
+ *
33
+ * @module
34
+ */
35
+ import { type EnclaveKey } from '../../kernel/enclave/index.js';
36
+ import type { NoydbStore, EncryptedEnvelope } from '../../kernel/types.js';
37
+ /** Reserved collection holding the encrypted subject → records index. */
38
+ export declare const SUBJECT_INDEX_COLLECTION = "_subject_index";
39
+ /** A single record reference held in a subject's index entry. */
40
+ export interface SubjectRef {
41
+ readonly collection: string;
42
+ readonly id: string;
43
+ }
44
+ type GetDEK = (collectionName: string) => Promise<EnclaveKey>;
45
+ /**
46
+ * Add a `{ collection, id }` ref to a subject's index entry (idempotent —
47
+ * a duplicate ref is not appended). Read-modify-write; see the concurrency
48
+ * note in the module docstring.
49
+ */
50
+ export declare function addSubjectRef(adapter: NoydbStore, vault: string, getDEK: GetDEK, encrypted: boolean, subjectId: string, ref: SubjectRef): Promise<void>;
51
+ /**
52
+ * Remove a `{ collection, id }` ref from a subject's index entry. When the
53
+ * last ref is removed the (now empty) entry is deleted so the store holds no
54
+ * residual key for an erased subject.
55
+ */
56
+ export declare function removeSubjectRef(adapter: NoydbStore, vault: string, getDEK: GetDEK, encrypted: boolean, subjectId: string, ref: SubjectRef): Promise<void>;
57
+ /**
58
+ * Look up every record ref for a subject. Returns `[]` when none exist. Unions
59
+ * the keyed (M-2) and legacy sha256 entries (dual-lookup), deduplicated, so a
60
+ * subject indexed before M-2 is still fully found.
61
+ */
62
+ export declare function lookupSubject(adapter: NoydbStore, vault: string, getDEK: GetDEK, encrypted: boolean, subjectId: string): Promise<SubjectRef[]>;
63
+ /**
64
+ * Rebuild the entire subject index from the canonical records (the recovery
65
+ * path for the documented read-modify-write race). Scans each declared
66
+ * collection, reads `record[subjectField]` (dotted path), and rewrites the
67
+ * index from scratch. Tombstoned (already-shredded) records contribute no
68
+ * ref — their body is gone, so they cannot be re-indexed.
69
+ *
70
+ * `decodeRecord` decrypts an envelope to a plain object (or returns null for
71
+ * a tombstone / unreadable record); supplied by the caller so this module
72
+ * stays free of Collection internals.
73
+ */
74
+ export declare function rebuildSubjectIndex(adapter: NoydbStore, vault: string, getDEK: GetDEK, encrypted: boolean, subjects: Readonly<Record<string, string>>, decodeRecord: (collection: string, id: string, env: EncryptedEnvelope) => Promise<Record<string, unknown> | null>): Promise<number>;
75
+ /**
76
+ * Coerce a read subject-field value to a stable string id. Primitives use
77
+ * their natural string form; objects/arrays are JSON-stringified so structural
78
+ * subjects still get a deterministic key (avoids the `[object Object]` trap).
79
+ */
80
+ export declare function coerceSubjectId(value: unknown): string;
81
+ /** Read a (possibly dotted) field path from a plain record. */
82
+ export declare function readDottedPath(record: Record<string, unknown>, field: string): unknown;
83
+ export {};
@@ -0,0 +1,26 @@
1
+ import type { GuardStrategy, GuardContext, GuardChange } from './types.js';
2
+ /**
3
+ * Pure functions that execute the work declared by a `GuardStrategy`.
4
+ * Stateless — `GuardRegistry` decides when to call these.
5
+ *
6
+ * @internal
7
+ */
8
+ export declare const GuardExecutor: {
9
+ /**
10
+ * Compare existing vs incoming for each `frozenFields.fields` entry
11
+ * when `frozenFields.when(existing)` is true. Throws
12
+ * `FieldFrozenError` listing every changed frozen field.
13
+ *
14
+ * @param skipFields — field names that are schema-owned computed fields.
15
+ * These are excluded from the comparison because `incoming` carries the
16
+ * raw user input (computed fields not yet evaluated), so comparing
17
+ * `existing[field]` vs `incoming[field]` would always look like a
18
+ * change even when the computed result is unchanged.
19
+ */
20
+ checkFrozenFields<T extends Record<string, unknown>>(guard: GuardStrategy<T>, id: string, existing: T | null, incoming: T, skipFields?: ReadonlySet<string>): Promise<void>;
21
+ /**
22
+ * Run a single guard's invariant over its slice of the change-set.
23
+ * Any throw is converted to `InvariantError` unless it already is one.
24
+ */
25
+ runInvariant<T extends Record<string, unknown>>(guard: GuardStrategy<T>, changes: ReadonlyArray<GuardChange<T>>, ctx: GuardContext<T>): Promise<void>;
26
+ };
@@ -0,0 +1,63 @@
1
+ /**
2
+ * `immutableGuard` — declarative WORM / append-only sugar over the guard
3
+ * service.
4
+ *
5
+ * Issued fiscal documents (invoices, DDTs) must be immutable after issue.
6
+ * That is expressible today with a hand-rolled `withGuard` (block on
7
+ * `check`/`onDelete`, allow an admin `amendment`), but the boilerplate is
8
+ * repetitive and easy to get subtly wrong. `immutableGuard` generates
9
+ * exactly that guard from a declarative config, reusing the guard
10
+ * machinery wholesale — `check`/`onDelete` rejection, the ledgered
11
+ * `amendment` override, and composition with `periods`/`history`.
12
+ *
13
+ * ```ts
14
+ * createNoydb({ guardStrategies: [
15
+ * immutableGuard({
16
+ * collection: 'invoices',
17
+ * after: (r) => r.status === 'issued', // immutable once issued
18
+ * }),
19
+ * ] })
20
+ * ```
21
+ *
22
+ * A record is mutable until `after(record)` holds; from then on, updates
23
+ * and deletes throw `RecordLockedError` unless performed inside an
24
+ * `amendment` transaction by an authorized role (the override is
25
+ * ledgered by the guard amendment mechanism). `appendOnly: true` is
26
+ * shorthand for `after: () => true` — immutable from creation.
27
+ */
28
+ import type { GuardStrategyHandle, GuardContext, GuardChange } from './types.js';
29
+ export interface ImmutableGuardConfig<T extends Record<string, unknown>> {
30
+ /** The collection to make WORM. */
31
+ collection: string;
32
+ /**
33
+ * A record becomes immutable once this predicate holds. Evaluated on
34
+ * the *existing* (already-persisted) record, so the write that first
35
+ * makes it true is still allowed; subsequent writes are blocked.
36
+ * Mutually exclusive with `appendOnly`.
37
+ */
38
+ after?: (record: T) => boolean;
39
+ /** Shorthand for `after: () => true` — immutable from creation. */
40
+ appendOnly?: boolean;
41
+ /** Roles permitted to override via an amendment transaction. Default `['admin', 'owner']`. */
42
+ amendmentRoles?: ReadonlyArray<'admin' | 'owner'>;
43
+ /**
44
+ * Optional set-level invariant run over the amendment change-set after
45
+ * the writes execute. Signature matches `GuardStrategy.amendment.invariant`
46
+ * exactly: it receives every {before, after} pair touching this
47
+ * collection in the amendment plus the guard context; throwing reverts
48
+ * the whole amendment and surfaces as `InvariantError`.
49
+ *
50
+ * Use this to keep a constraint inviolable EVEN under amendment — e.g.
51
+ * forbid deleting an issued document by re-throwing on any
52
+ * `before !== null && after === null` change, or assert a cross-record
53
+ * sum is preserved. When omitted the amendment is unconditionally
54
+ * allowed (the amendment itself is the sanctioned, ledgered override) —
55
+ * this is the backward-compatible default.
56
+ */
57
+ amendmentInvariant?: (changes: ReadonlyArray<GuardChange<T>>, ctx: GuardContext<T>) => Promise<void> | void;
58
+ }
59
+ /**
60
+ * Build an immutability guard. Pass the returned handle to
61
+ * `createNoydb({ guardStrategies: [...] })`.
62
+ */
63
+ export declare function immutableGuard<T extends Record<string, unknown>>(config: ImmutableGuardConfig<T>): GuardStrategyHandle<T>;
@@ -0,0 +1,10 @@
1
+ export { withGuard } from './with-guard.js';
2
+ export { immutableGuard } from './immutable-guard.js';
3
+ export type { ImmutableGuardConfig } from './immutable-guard.js';
4
+ export { transitionGuard } from './transition-guard.js';
5
+ export type { TransitionGuardConfig } from './transition-guard.js';
6
+ export { GuardRegistry } from './registry.js';
7
+ export { GuardExecutor } from './executor.js';
8
+ export { ReadOnlyVaultFacade } from './read-only-facade.js';
9
+ export type { GuardStrategy, GuardStrategyHandle, GuardContext, GuardChange, } from './types.js';
10
+ export { RecordLockedError, FieldFrozenError, IllegalTransitionError, InvariantError, AmendmentForbiddenError, } from '../../kernel/errors.js';
@@ -0,0 +1,31 @@
1
+ import type { Vault } from '../../kernel/vault.js';
2
+ import type { Query } from '../../kernel/query/builder.js';
3
+ import type { Layer } from '../../via/i18n/policy.js';
4
+ import type { ReadOnlyVaultFacade as ReadOnlyVaultFacadeContract } from './types.js';
5
+ /**
6
+ * Minimal read-only wrapper over a `Vault`. Used as `ctx.vault` inside
7
+ * guard / derivation callbacks so they can fetch related records without
8
+ * acquiring any write capability.
9
+ *
10
+ * The `layer` tags every `get`/`list` read with the resolution layer it
11
+ * belongs to. A guard-seeded facade reads at `'guard'`, a
12
+ * derivation-seeded one at `'derivation'`, so i18nText / dictKey fields
13
+ * resolve under that layer's `onMissing` policy instead of the `'read'`
14
+ * policy — e.g. a guard read can `substitute` a missing locale (lenient
15
+ * default) while the same field `throw`s on an ordinary app read.
16
+ *
17
+ * `query()` is left untagged: the query/aggregate pipeline reads raw
18
+ * `{locale}` maps (no resolution call site), so a layer tag there would be
19
+ * inert. Routing `mv`/`join` resolution through the pipeline is tracked
20
+ * separately.
21
+ */
22
+ export declare class ReadOnlyVaultFacade implements ReadOnlyVaultFacadeContract {
23
+ private readonly _vault;
24
+ private readonly _layer;
25
+ constructor(vault: Vault, layer?: Layer);
26
+ collection<T = unknown>(name: string): {
27
+ get(id: string): Promise<T | null>;
28
+ list(): Promise<T[]>;
29
+ query(): Query<T>;
30
+ };
31
+ }
@@ -0,0 +1,83 @@
1
+ import type { GuardStrategy, GuardContext, GuardChange } from './types.js';
2
+ /**
3
+ * Per-record metadata attached to every entry in an amendment's
4
+ * change-set. Carried in a parallel map alongside `_amendmentChanges`
5
+ * so the public {@link GuardChange} shape (`{ before, after }`) stays
6
+ * clean for invariant authors — the audit ledger reads this side
7
+ * structure to produce the `{ collection, id, vBefore, vAfter }`
8
+ * tuples for the amendment entry.
9
+ *
10
+ * @internal
11
+ */
12
+ export interface AmendmentChangeMeta {
13
+ readonly id: string;
14
+ readonly vBefore: number;
15
+ readonly vAfter: number;
16
+ }
17
+ /**
18
+ * Vault-internal singleton that holds the guard graph and dispatches
19
+ * per-collection guard execution. Owned by `Vault`; not exported.
20
+ *
21
+ * @internal
22
+ */
23
+ type AnyGuard = GuardStrategy<Record<string, unknown>>;
24
+ type AnyChange = GuardChange<Record<string, unknown>>;
25
+ export declare class GuardRegistry {
26
+ private readonly _byCollection;
27
+ private _amendmentChanges;
28
+ private _amendmentMeta;
29
+ /** Register a guard. Multiple guards per collection are allowed. */
30
+ register<T extends Record<string, unknown>>(spec: GuardStrategy<T>): void;
31
+ /** All guards registered against `collection` in registration order. */
32
+ guardsFor(collection: string): ReadonlyArray<AnyGuard>;
33
+ /** Per-collection guard counts, for introspection. */
34
+ summary(): {
35
+ collection: string;
36
+ count: number;
37
+ }[];
38
+ /**
39
+ * Run every guard's `check` for this collection. First throw wins —
40
+ * remaining guards are not invoked. Guards without a `check` skip.
41
+ */
42
+ runChecks<T>(collection: string, incoming: T, ctx: GuardContext<T>): Promise<void>;
43
+ /**
44
+ * Run every guard's `onDelete` for this collection. First throw wins —
45
+ * remaining guards are not invoked. Guards without an `onDelete` skip.
46
+ * Mirrors {@link runChecks} but for the delete path.
47
+ */
48
+ runOnDelete<T>(collection: string, existing: T, ctx: GuardContext<T>): Promise<void>;
49
+ /** True if any guard for `collection` declares an `amendment` block. */
50
+ hasAmendment(collection: string): boolean;
51
+ /** Open a new amendment change-collection window. */
52
+ beginAmendment(): void;
53
+ /** True iff we're currently inside an amendment transaction. */
54
+ isAmendmentActive(): boolean;
55
+ /**
56
+ * Record a {before, after} pair for the active amendment. `vBefore`
57
+ * and `vAfter` are stored in a parallel meta structure so the public
58
+ * {@link GuardChange} shape handed to invariant callbacks stays
59
+ * `{ before, after }` only — the audit ledger reads version metadata
60
+ * via {@link consumeMeta}.
61
+ */
62
+ collectChange<T>(collection: string, id: string, before: T | null, after: T, vBefore?: number, vAfter?: number): void;
63
+ /**
64
+ * Drain the change-set and close the amendment window. The caller
65
+ * (transaction commit) feeds these to each affected guard's invariant.
66
+ */
67
+ consumeChanges(): ReadonlyMap<string, ReadonlyArray<AnyChange>>;
68
+ /**
69
+ * Drain the parallel id/version metadata captured during the
70
+ * amendment. Returned as a flat list with `collection` denormalised
71
+ * so the audit ledger can emit one `{ collection, id, vBefore,
72
+ * vAfter }` tuple per record. Must be called AFTER
73
+ * {@link consumeChanges} (or independently) — calling it closes the
74
+ * meta window in the same way.
75
+ */
76
+ consumeMeta(): ReadonlyArray<{
77
+ collection: string;
78
+ id: string;
79
+ vBefore: number;
80
+ vAfter: number;
81
+ }>;
82
+ }
83
+ export {};