@noy-db/hub 0.4.0-pre.0 → 0.4.0-pre.2

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 (367) hide show
  1. package/dist/aggregate/index.js +4 -4
  2. package/dist/api-UPAT2O3M.js +20 -0
  3. package/dist/as/index.js +12 -12
  4. package/dist/attestation/index.js +18 -18
  5. package/dist/{backup-YPUEKIJC.js → backup-JL2GOTYQ.js} +11 -11
  6. package/dist/blobs/index.js +27 -15
  7. package/dist/blobs/index.js.map +1 -1
  8. package/dist/broker/index.js +12 -12
  9. package/dist/by/index.js +2 -2
  10. package/dist/cargo/index.js +51 -22
  11. package/dist/{chunk-QDPZWTN2.js → chunk-25G7U6RD.js} +2 -2
  12. package/dist/{chunk-WKGF2TJR.js → chunk-25ZDB25Z.js} +2 -2
  13. package/dist/{chunk-5WZXVULX.js → chunk-2ITLQZV5.js} +2 -2
  14. package/dist/{chunk-WNGGJWF7.js → chunk-2JZ763FV.js} +2 -2
  15. package/dist/{chunk-U6JMEH2P.js → chunk-2KL6NDD4.js} +90 -3
  16. package/dist/chunk-2KL6NDD4.js.map +1 -0
  17. package/dist/{chunk-RJ6K6K5M.js → chunk-2RMDVWGB.js} +2 -2
  18. package/dist/{chunk-VAIS3SOM.js → chunk-2U7Y7BNJ.js} +2 -2
  19. package/dist/{chunk-WZSHL6DQ.js → chunk-2VUISNGP.js} +5 -5
  20. package/dist/chunk-2YELV6TV.js +1 -0
  21. package/dist/{chunk-ANATMTOA.js → chunk-3O62PVDW.js} +3 -3
  22. package/dist/{chunk-VKCADNMR.js → chunk-4JYYIFHW.js} +12 -12
  23. package/dist/{chunk-6HY2X62D.js → chunk-5BB3N4KU.js} +2 -2
  24. package/dist/{chunk-VCTXU4AT.js → chunk-5BHNQNBI.js} +1 -1
  25. package/dist/chunk-5BHNQNBI.js.map +1 -0
  26. package/dist/{chunk-6NQMXTYC.js → chunk-5OZCCLNC.js} +2 -2
  27. package/dist/{chunk-HOONYZY2.js → chunk-5P5AAXYA.js} +2 -2
  28. package/dist/{chunk-KS6SAVCZ.js → chunk-5SZ24DL5.js} +6 -6
  29. package/dist/{chunk-NCCBLYEB.js → chunk-7B4GPCX7.js} +5 -5
  30. package/dist/{chunk-SV6EAJEP.js → chunk-A64XXIIB.js} +4 -4
  31. package/dist/{chunk-WOM2HTML.js → chunk-AFBJHD55.js} +5 -5
  32. package/dist/{chunk-RFI7GGFO.js → chunk-BCOKZC4B.js} +2 -2
  33. package/dist/{chunk-XUW3PXHU.js → chunk-BVZGNMVM.js} +4 -16
  34. package/dist/{chunk-XUW3PXHU.js.map → chunk-BVZGNMVM.js.map} +1 -1
  35. package/dist/{chunk-MT62YSPZ.js → chunk-BZEPJJOK.js} +4 -4
  36. package/dist/{chunk-OCVM6KDH.js → chunk-BZK6JEX4.js} +5 -5
  37. package/dist/{chunk-H2KSZMIX.js → chunk-CCT4WZI6.js} +5 -5
  38. package/dist/{chunk-VEALDPHW.js → chunk-CGPO3ZYB.js} +2 -2
  39. package/dist/{chunk-S3BFKGET.js → chunk-DEQ2JTBR.js} +3 -3
  40. package/dist/{chunk-3ELCWU56.js → chunk-E2R5NRZD.js} +2 -2
  41. package/dist/{chunk-BOKIKJJB.js → chunk-EDC6MLXV.js} +2 -2
  42. package/dist/chunk-F4COUZLL.js +24 -0
  43. package/dist/chunk-F4COUZLL.js.map +1 -0
  44. package/dist/{chunk-JRBNCUNT.js → chunk-FLHOTGOO.js} +3 -3
  45. package/dist/{chunk-6XE5TMPR.js → chunk-GBEXTC6Z.js} +3 -3
  46. package/dist/{chunk-YZQOGE2L.js → chunk-GS3Q2KOZ.js} +2 -2
  47. package/dist/{chunk-M75ZZHSR.js → chunk-GYB2QK5H.js} +2 -2
  48. package/dist/{chunk-EO43ANYJ.js → chunk-GZ2GKOF6.js} +3 -3
  49. package/dist/{chunk-VCBHAE4R.js → chunk-H4SMS4O2.js} +2 -2
  50. package/dist/{chunk-LVGTA624.js → chunk-HGVFJL63.js} +4 -4
  51. package/dist/{chunk-554KLAAN.js → chunk-HVZT5T22.js} +5 -5
  52. package/dist/{chunk-CJ5KKU6X.js → chunk-IGAIOGCN.js} +4 -4
  53. package/dist/{chunk-W2OG6JOL.js → chunk-IGM563N5.js} +18 -1
  54. package/dist/chunk-IGM563N5.js.map +1 -0
  55. package/dist/{chunk-GWKAVKHI.js → chunk-ITI3SJRB.js} +2 -2
  56. package/dist/{chunk-CZTLE22N.js → chunk-IU22SQGU.js} +7 -7
  57. package/dist/{chunk-RTEK4C4I.js → chunk-IUIVDVXM.js} +2 -2
  58. package/dist/{chunk-Z4PD65VQ.js → chunk-IZX3WZBF.js} +4 -4
  59. package/dist/{chunk-RDXW3OBQ.js → chunk-J3VW4J4E.js} +2 -2
  60. package/dist/{chunk-IK43HLDQ.js → chunk-J6U4BOKP.js} +11 -11
  61. package/dist/{chunk-XJMBYYQK.js → chunk-JA5B3SLH.js} +2 -2
  62. package/dist/{chunk-IAO54J4R.js → chunk-JA5O7UEZ.js} +6 -6
  63. package/dist/{chunk-6HPG2YNX.js → chunk-JKWNG3TM.js} +2 -2
  64. package/dist/{chunk-WQIYTNJV.js → chunk-JLHKBAFY.js} +3 -3
  65. package/dist/{chunk-ISMV2QVG.js → chunk-KMONEHDJ.js} +2 -2
  66. package/dist/{chunk-XTHCN77N.js → chunk-KR5EGWI4.js} +7 -19
  67. package/dist/chunk-KR5EGWI4.js.map +1 -0
  68. package/dist/{chunk-JBBSYJHP.js → chunk-KVHWEPT2.js} +2 -2
  69. package/dist/{chunk-2PCAVW2I.js → chunk-L4OA7G5T.js} +2 -2
  70. package/dist/{chunk-IY23KFNZ.js → chunk-LLVW4V7R.js} +3 -3
  71. package/dist/{chunk-N6WF5PKC.js → chunk-M25ZIEB2.js} +2 -2
  72. package/dist/{chunk-FXZDAV62.js → chunk-MEKAMERX.js} +5 -7
  73. package/dist/{chunk-FXZDAV62.js.map → chunk-MEKAMERX.js.map} +1 -1
  74. package/dist/{chunk-UC2ETWF3.js → chunk-MSO2C3KG.js} +2 -2
  75. package/dist/{chunk-ONTBCHCP.js → chunk-N4FZ6ITM.js} +2 -2
  76. package/dist/{chunk-DRWBEDYO.js → chunk-NM4LVUXH.js} +2 -2
  77. package/dist/{chunk-DSBQODMZ.js → chunk-NOT7XA7Q.js} +5 -5
  78. package/dist/{chunk-RA5VTXXG.js → chunk-OGFPMCSP.js} +2 -2
  79. package/dist/{chunk-WHXXI3W5.js → chunk-OGY4ELVE.js} +3 -3
  80. package/dist/{chunk-T36RFODW.js → chunk-OOTTXUNV.js} +2 -2
  81. package/dist/{chunk-A5BDDEXK.js → chunk-OTU5ZI3U.js} +4 -4
  82. package/dist/{chunk-THVIPWRF.js → chunk-OVFCAS7U.js} +9 -9
  83. package/dist/{chunk-IFJTPAQQ.js → chunk-OWE4BNTM.js} +4 -4
  84. package/dist/{chunk-W4TCUGQR.js → chunk-PEY6ZTCF.js} +12 -8
  85. package/dist/{chunk-W4TCUGQR.js.map → chunk-PEY6ZTCF.js.map} +1 -1
  86. package/dist/{chunk-UDSR4X4L.js → chunk-PWZKD4HW.js} +74 -10
  87. package/dist/chunk-PWZKD4HW.js.map +1 -0
  88. package/dist/{chunk-HQBM64EE.js → chunk-QAFWRGVD.js} +127 -8
  89. package/dist/chunk-QAFWRGVD.js.map +1 -0
  90. package/dist/{chunk-ZXEZCY6F.js → chunk-QCUH2G77.js} +6 -6
  91. package/dist/{chunk-XDIAFPUM.js → chunk-QDNVHA2F.js} +2 -2
  92. package/dist/{chunk-FH52K7EG.js → chunk-QRHEAZ2Q.js} +2 -6
  93. package/dist/{chunk-FH52K7EG.js.map → chunk-QRHEAZ2Q.js.map} +1 -1
  94. package/dist/{chunk-A4FXFAKF.js → chunk-QXPOEAKR.js} +2 -2
  95. package/dist/{chunk-EWPOHMN2.js → chunk-RGL53NXZ.js} +3 -3
  96. package/dist/{chunk-TAGR72IR.js → chunk-RI3OKC3Y.js} +4 -4
  97. package/dist/{chunk-5PFOMHTB.js → chunk-S3OYXPSE.js} +9 -9
  98. package/dist/{chunk-JVBO4SZL.js → chunk-STR7WBOB.js} +2 -2
  99. package/dist/{chunk-DDHM2TLX.js → chunk-T7S4V52L.js} +4 -4
  100. package/dist/{chunk-WG4QBZDN.js → chunk-TYBXP6WE.js} +7 -7
  101. package/dist/{chunk-T3GY65MA.js → chunk-UEO5CHOP.js} +3 -3
  102. package/dist/{chunk-RNG4VRP4.js → chunk-V3YB7RGR.js} +3 -3
  103. package/dist/{chunk-R3BLCFD2.js → chunk-V7RGFJ3Z.js} +6 -6
  104. package/dist/{chunk-SMIRGMS7.js → chunk-VEX6G3YL.js} +2 -2
  105. package/dist/{chunk-PK6JIDQ4.js → chunk-VZELV7ZJ.js} +116 -119
  106. package/dist/chunk-VZELV7ZJ.js.map +1 -0
  107. package/dist/{chunk-GULTLPFB.js → chunk-XGVDLQJE.js} +3 -3
  108. package/dist/{chunk-JFCV5QIK.js → chunk-XULHFSHO.js} +5 -5
  109. package/dist/{chunk-S6Q37VGE.js → chunk-XW7NWO4A.js} +2 -2
  110. package/dist/{chunk-YCH5GBN6.js → chunk-Y5E6CH6S.js} +6 -6
  111. package/dist/{chunk-GDG5VVYG.js → chunk-YG2EG6CB.js} +4 -4
  112. package/dist/{chunk-UHNGNKLV.js → chunk-YGBIBOCR.js} +307 -17
  113. package/dist/chunk-YGBIBOCR.js.map +1 -0
  114. package/dist/{chunk-YTGDPCPW.js → chunk-YHPUDB7Q.js} +2 -2
  115. package/dist/{chunk-VRBTNCM4.js → chunk-ZJGZDOQO.js} +6 -6
  116. package/dist/classified/index.js +5 -5
  117. package/dist/{classified-marker-QWMASIT7.js → classified-marker-7S5IEP6Q.js} +3 -3
  118. package/dist/collection-facade-ENLTJZBT.js +44 -0
  119. package/dist/{computed-DSMPXG2Y.js → computed-WZNKRLCY.js} +3 -3
  120. package/dist/consent/index.js +9 -9
  121. package/dist/cover-B5MY43CK.js +36 -0
  122. package/dist/{dead-filter-66VGI6JV.js → dead-filter-KRRD57MR.js} +2 -2
  123. package/dist/delegation-UT76AQIG.js +25 -0
  124. package/dist/derivations/index.js +12 -12
  125. package/dist/derive-SGRCCKVP.js +21 -0
  126. package/dist/{enclave-TKPN2G2U.js → enclave-YFKA3GJT.js} +11 -9
  127. package/dist/executor-TEZYRDN3.js +9 -0
  128. package/dist/executor-UF7LTX6O.js +26 -0
  129. package/dist/executor-WQQRU6DO.js +9 -0
  130. package/dist/export-accessible-HXMKW5LJ.js +23 -0
  131. package/dist/extract-partition-QGQ2R42J.js +38 -0
  132. package/dist/{fanout-sidecar-B5LVUMQX.js → fanout-sidecar-HJV3A7PM.js} +9 -9
  133. package/dist/find-VV6PBIHK.js +11 -0
  134. package/dist/forget/index.js +9 -9
  135. package/dist/guards/index.js +3 -3
  136. package/dist/history/index.js +12 -12
  137. package/dist/i18n/index.js +14 -14
  138. package/dist/index.d.ts +1 -4
  139. package/dist/index.js +151 -168
  140. package/dist/index.js.map +1 -1
  141. package/dist/indexing/index.js +2 -2
  142. package/dist/issue-7JJ4Z7E2.js +19 -0
  143. package/dist/kernel/enclave/index.d.ts +1 -1
  144. package/dist/kernel/enclave/record-keys/envelope-body.d.ts +8 -0
  145. package/dist/kernel/errors.d.ts +19 -0
  146. package/dist/kernel/noydb.d.ts +0 -6
  147. package/dist/kernel/types.d.ts +61 -17
  148. package/dist/kernel/vault.d.ts +0 -4
  149. package/dist/{ledger-PTK7XZYT.js → ledger-SW6QQOAV.js} +11 -11
  150. package/dist/liberate-W5MDWYOV.js +24 -0
  151. package/dist/{link-set-SLJHDNRB.js → link-set-GNGGCFI4.js} +11 -11
  152. package/dist/materialized-views/index.js +19 -19
  153. package/dist/noydb-U63S3Z7F.js +70 -0
  154. package/dist/on/index.js +9 -9
  155. package/dist/overlay-views/index.js +4 -4
  156. package/dist/periods/index.js +19 -17
  157. package/dist/pod/index.js +27 -12
  158. package/dist/{policy-YDLCOX4P.js → policy-EAXSJNOT.js} +5 -5
  159. package/dist/portability/index.js +8 -8
  160. package/dist/{post-register-2YHSADFI.js → post-register-A7HCFBP5.js} +6 -6
  161. package/dist/query/index.js +6 -6
  162. package/dist/register-YBMRLZLO.js +23 -0
  163. package/dist/registry-3LXKNXWI.js +9 -0
  164. package/dist/registry-4V4YQCXJ.js +19 -0
  165. package/dist/registry-ZULMLCJK.js +18 -0
  166. package/dist/request-withdrawal-SEVUEUDG.js +31 -0
  167. package/dist/{reveal-HWO4YMTJ.js → reveal-PB3YG544.js} +6 -6
  168. package/dist/revoke-5QULL5GT.js +24 -0
  169. package/dist/satellites/index.js +1 -1
  170. package/dist/sealed-record/index.js +12 -12
  171. package/dist/{seed-3ZMF5EQA.js → seed-6GTDHL4E.js} +11 -11
  172. package/dist/session/index.js +9 -9
  173. package/dist/shadow/index.js +2 -2
  174. package/dist/share-link/index.d.ts +19 -0
  175. package/dist/share-link/index.js +201 -0
  176. package/dist/share-link/index.js.map +1 -0
  177. package/dist/share-link/share-link.d.ts +123 -0
  178. package/dist/signer-ZMH35FT4.js +25 -0
  179. package/dist/snapshots/index.js +10 -10
  180. package/dist/{stale-VZL4OGUB.js → stale-NB5BGRVU.js} +10 -10
  181. package/dist/storage-QOZKQMID.js +23 -0
  182. package/dist/{store-coordination-provider-FKX3F6TQ.js → store-coordination-provider-3AELCZ4Y.js} +3 -3
  183. package/dist/sync/index.js +10 -9
  184. package/dist/sync/index.js.map +1 -1
  185. package/dist/team/index.js +29 -28
  186. package/dist/tiers/index.js +10 -10
  187. package/dist/to/index.js +1 -1
  188. package/dist/tx/index.js +3 -3
  189. package/dist/util/index.js +1 -1
  190. package/dist/{verify-26Y5GNMK.js → verify-MXN66IIH.js} +5 -5
  191. package/dist/via/blob/active.d.ts +27 -1
  192. package/dist/via/blob/index.d.ts +4 -0
  193. package/dist/{walk-IPLXE36W.js → walk-H4YE52S2.js} +11 -11
  194. package/dist/with/index.js +11 -11
  195. package/dist/with-audit/periods/periods.d.ts +1 -16
  196. package/dist/with-audit/periods/vault-facade.d.ts +6 -0
  197. package/dist/with-audit/periods/window.d.ts +16 -0
  198. package/dist/{legacy/kernel.d.ts → with-cargo/floor.d.ts} +1 -1
  199. package/dist/with-cargo/index.d.ts +12 -1
  200. package/dist/with-party/directory/cover/index.d.ts +0 -5
  201. package/dist/with-party/directory/cover/schema.d.ts +0 -6
  202. package/dist/with-party/directory/cover/storage.d.ts +0 -8
  203. package/dist/with-party/directory/cover/types.d.ts +0 -21
  204. package/dist/with-party/team/sync-period-scope.d.ts +78 -0
  205. package/dist/with-party/team/sync.d.ts +13 -0
  206. package/dist/with-pod/bundle.d.ts +0 -2
  207. package/dist/with-pod/index.d.ts +2 -1
  208. package/dist/with-shape/blobs/blob-compaction.d.ts +43 -3
  209. package/dist/with-shape/blobs/blob-pinning.d.ts +112 -0
  210. package/dist/with-shape/blobs/blob-set.d.ts +85 -1
  211. package/dist/withdraw-accessible-HPOVNG2G.js +28 -0
  212. package/package.json +7 -7
  213. package/dist/api-3A3S4SHH.js +0 -20
  214. package/dist/bundle/index.js +0 -153
  215. package/dist/bundle/index.js.map +0 -1
  216. package/dist/chunk-CHFZDSE4.js +0 -1
  217. package/dist/chunk-HQBM64EE.js.map +0 -1
  218. package/dist/chunk-PK6JIDQ4.js.map +0 -1
  219. package/dist/chunk-TIGPQDYP.js +0 -14
  220. package/dist/chunk-TIGPQDYP.js.map +0 -1
  221. package/dist/chunk-U6JMEH2P.js.map +0 -1
  222. package/dist/chunk-UDSR4X4L.js.map +0 -1
  223. package/dist/chunk-UHNGNKLV.js.map +0 -1
  224. package/dist/chunk-VCTXU4AT.js.map +0 -1
  225. package/dist/chunk-W2OG6JOL.js.map +0 -1
  226. package/dist/chunk-XTHCN77N.js.map +0 -1
  227. package/dist/collection-facade-KMBWNCYP.js +0 -44
  228. package/dist/cover-QJRXINN5.js +0 -52
  229. package/dist/delegation-SU6CV3W7.js +0 -25
  230. package/dist/derive-6RWU4EOA.js +0 -21
  231. package/dist/executor-KGNLJD6M.js +0 -9
  232. package/dist/executor-UX4FASYZ.js +0 -26
  233. package/dist/executor-XGIS6CR7.js +0 -9
  234. package/dist/export-accessible-LKW3QV22.js +0 -23
  235. package/dist/extract-partition-UP2ARO75.js +0 -38
  236. package/dist/find-YS6XWB46.js +0 -11
  237. package/dist/issue-3ACYX7LO.js +0 -19
  238. package/dist/legacy/bundle.d.ts +0 -30
  239. package/dist/liberate-MQQXBUCY.js +0 -24
  240. package/dist/noydb-ANIW5FLE.js +0 -69
  241. package/dist/register-PAM3ASRZ.js +0 -23
  242. package/dist/registry-4S2U2TR4.js +0 -19
  243. package/dist/registry-NPOWJHC4.js +0 -9
  244. package/dist/registry-VZ3CCI2R.js +0 -18
  245. package/dist/request-withdrawal-DI3H5WUI.js +0 -31
  246. package/dist/revoke-R5CZSVUT.js +0 -24
  247. package/dist/signer-MBVHW4WE.js +0 -25
  248. package/dist/storage-3MEJUENZ.js +0 -23
  249. package/dist/withdraw-accessible-TZDATQVR.js +0 -28
  250. /package/dist/{api-3A3S4SHH.js.map → api-UPAT2O3M.js.map} +0 -0
  251. /package/dist/{backup-YPUEKIJC.js.map → backup-JL2GOTYQ.js.map} +0 -0
  252. /package/dist/{chunk-QDPZWTN2.js.map → chunk-25G7U6RD.js.map} +0 -0
  253. /package/dist/{chunk-WKGF2TJR.js.map → chunk-25ZDB25Z.js.map} +0 -0
  254. /package/dist/{chunk-5WZXVULX.js.map → chunk-2ITLQZV5.js.map} +0 -0
  255. /package/dist/{chunk-WNGGJWF7.js.map → chunk-2JZ763FV.js.map} +0 -0
  256. /package/dist/{chunk-RJ6K6K5M.js.map → chunk-2RMDVWGB.js.map} +0 -0
  257. /package/dist/{chunk-VAIS3SOM.js.map → chunk-2U7Y7BNJ.js.map} +0 -0
  258. /package/dist/{chunk-WZSHL6DQ.js.map → chunk-2VUISNGP.js.map} +0 -0
  259. /package/dist/{chunk-CHFZDSE4.js.map → chunk-2YELV6TV.js.map} +0 -0
  260. /package/dist/{chunk-ANATMTOA.js.map → chunk-3O62PVDW.js.map} +0 -0
  261. /package/dist/{chunk-VKCADNMR.js.map → chunk-4JYYIFHW.js.map} +0 -0
  262. /package/dist/{chunk-6HY2X62D.js.map → chunk-5BB3N4KU.js.map} +0 -0
  263. /package/dist/{chunk-6NQMXTYC.js.map → chunk-5OZCCLNC.js.map} +0 -0
  264. /package/dist/{chunk-HOONYZY2.js.map → chunk-5P5AAXYA.js.map} +0 -0
  265. /package/dist/{chunk-KS6SAVCZ.js.map → chunk-5SZ24DL5.js.map} +0 -0
  266. /package/dist/{chunk-NCCBLYEB.js.map → chunk-7B4GPCX7.js.map} +0 -0
  267. /package/dist/{chunk-SV6EAJEP.js.map → chunk-A64XXIIB.js.map} +0 -0
  268. /package/dist/{chunk-WOM2HTML.js.map → chunk-AFBJHD55.js.map} +0 -0
  269. /package/dist/{chunk-RFI7GGFO.js.map → chunk-BCOKZC4B.js.map} +0 -0
  270. /package/dist/{chunk-MT62YSPZ.js.map → chunk-BZEPJJOK.js.map} +0 -0
  271. /package/dist/{chunk-OCVM6KDH.js.map → chunk-BZK6JEX4.js.map} +0 -0
  272. /package/dist/{chunk-H2KSZMIX.js.map → chunk-CCT4WZI6.js.map} +0 -0
  273. /package/dist/{chunk-VEALDPHW.js.map → chunk-CGPO3ZYB.js.map} +0 -0
  274. /package/dist/{chunk-S3BFKGET.js.map → chunk-DEQ2JTBR.js.map} +0 -0
  275. /package/dist/{chunk-3ELCWU56.js.map → chunk-E2R5NRZD.js.map} +0 -0
  276. /package/dist/{chunk-BOKIKJJB.js.map → chunk-EDC6MLXV.js.map} +0 -0
  277. /package/dist/{chunk-JRBNCUNT.js.map → chunk-FLHOTGOO.js.map} +0 -0
  278. /package/dist/{chunk-6XE5TMPR.js.map → chunk-GBEXTC6Z.js.map} +0 -0
  279. /package/dist/{chunk-YZQOGE2L.js.map → chunk-GS3Q2KOZ.js.map} +0 -0
  280. /package/dist/{chunk-M75ZZHSR.js.map → chunk-GYB2QK5H.js.map} +0 -0
  281. /package/dist/{chunk-EO43ANYJ.js.map → chunk-GZ2GKOF6.js.map} +0 -0
  282. /package/dist/{chunk-VCBHAE4R.js.map → chunk-H4SMS4O2.js.map} +0 -0
  283. /package/dist/{chunk-LVGTA624.js.map → chunk-HGVFJL63.js.map} +0 -0
  284. /package/dist/{chunk-554KLAAN.js.map → chunk-HVZT5T22.js.map} +0 -0
  285. /package/dist/{chunk-CJ5KKU6X.js.map → chunk-IGAIOGCN.js.map} +0 -0
  286. /package/dist/{chunk-GWKAVKHI.js.map → chunk-ITI3SJRB.js.map} +0 -0
  287. /package/dist/{chunk-CZTLE22N.js.map → chunk-IU22SQGU.js.map} +0 -0
  288. /package/dist/{chunk-RTEK4C4I.js.map → chunk-IUIVDVXM.js.map} +0 -0
  289. /package/dist/{chunk-Z4PD65VQ.js.map → chunk-IZX3WZBF.js.map} +0 -0
  290. /package/dist/{chunk-RDXW3OBQ.js.map → chunk-J3VW4J4E.js.map} +0 -0
  291. /package/dist/{chunk-IK43HLDQ.js.map → chunk-J6U4BOKP.js.map} +0 -0
  292. /package/dist/{chunk-XJMBYYQK.js.map → chunk-JA5B3SLH.js.map} +0 -0
  293. /package/dist/{chunk-IAO54J4R.js.map → chunk-JA5O7UEZ.js.map} +0 -0
  294. /package/dist/{chunk-6HPG2YNX.js.map → chunk-JKWNG3TM.js.map} +0 -0
  295. /package/dist/{chunk-WQIYTNJV.js.map → chunk-JLHKBAFY.js.map} +0 -0
  296. /package/dist/{chunk-ISMV2QVG.js.map → chunk-KMONEHDJ.js.map} +0 -0
  297. /package/dist/{chunk-JBBSYJHP.js.map → chunk-KVHWEPT2.js.map} +0 -0
  298. /package/dist/{chunk-2PCAVW2I.js.map → chunk-L4OA7G5T.js.map} +0 -0
  299. /package/dist/{chunk-IY23KFNZ.js.map → chunk-LLVW4V7R.js.map} +0 -0
  300. /package/dist/{chunk-N6WF5PKC.js.map → chunk-M25ZIEB2.js.map} +0 -0
  301. /package/dist/{chunk-UC2ETWF3.js.map → chunk-MSO2C3KG.js.map} +0 -0
  302. /package/dist/{chunk-ONTBCHCP.js.map → chunk-N4FZ6ITM.js.map} +0 -0
  303. /package/dist/{chunk-DRWBEDYO.js.map → chunk-NM4LVUXH.js.map} +0 -0
  304. /package/dist/{chunk-DSBQODMZ.js.map → chunk-NOT7XA7Q.js.map} +0 -0
  305. /package/dist/{chunk-RA5VTXXG.js.map → chunk-OGFPMCSP.js.map} +0 -0
  306. /package/dist/{chunk-WHXXI3W5.js.map → chunk-OGY4ELVE.js.map} +0 -0
  307. /package/dist/{chunk-T36RFODW.js.map → chunk-OOTTXUNV.js.map} +0 -0
  308. /package/dist/{chunk-A5BDDEXK.js.map → chunk-OTU5ZI3U.js.map} +0 -0
  309. /package/dist/{chunk-THVIPWRF.js.map → chunk-OVFCAS7U.js.map} +0 -0
  310. /package/dist/{chunk-IFJTPAQQ.js.map → chunk-OWE4BNTM.js.map} +0 -0
  311. /package/dist/{chunk-ZXEZCY6F.js.map → chunk-QCUH2G77.js.map} +0 -0
  312. /package/dist/{chunk-XDIAFPUM.js.map → chunk-QDNVHA2F.js.map} +0 -0
  313. /package/dist/{chunk-A4FXFAKF.js.map → chunk-QXPOEAKR.js.map} +0 -0
  314. /package/dist/{chunk-EWPOHMN2.js.map → chunk-RGL53NXZ.js.map} +0 -0
  315. /package/dist/{chunk-TAGR72IR.js.map → chunk-RI3OKC3Y.js.map} +0 -0
  316. /package/dist/{chunk-5PFOMHTB.js.map → chunk-S3OYXPSE.js.map} +0 -0
  317. /package/dist/{chunk-JVBO4SZL.js.map → chunk-STR7WBOB.js.map} +0 -0
  318. /package/dist/{chunk-DDHM2TLX.js.map → chunk-T7S4V52L.js.map} +0 -0
  319. /package/dist/{chunk-WG4QBZDN.js.map → chunk-TYBXP6WE.js.map} +0 -0
  320. /package/dist/{chunk-T3GY65MA.js.map → chunk-UEO5CHOP.js.map} +0 -0
  321. /package/dist/{chunk-RNG4VRP4.js.map → chunk-V3YB7RGR.js.map} +0 -0
  322. /package/dist/{chunk-R3BLCFD2.js.map → chunk-V7RGFJ3Z.js.map} +0 -0
  323. /package/dist/{chunk-SMIRGMS7.js.map → chunk-VEX6G3YL.js.map} +0 -0
  324. /package/dist/{chunk-GULTLPFB.js.map → chunk-XGVDLQJE.js.map} +0 -0
  325. /package/dist/{chunk-JFCV5QIK.js.map → chunk-XULHFSHO.js.map} +0 -0
  326. /package/dist/{chunk-S6Q37VGE.js.map → chunk-XW7NWO4A.js.map} +0 -0
  327. /package/dist/{chunk-YCH5GBN6.js.map → chunk-Y5E6CH6S.js.map} +0 -0
  328. /package/dist/{chunk-GDG5VVYG.js.map → chunk-YG2EG6CB.js.map} +0 -0
  329. /package/dist/{chunk-YTGDPCPW.js.map → chunk-YHPUDB7Q.js.map} +0 -0
  330. /package/dist/{chunk-VRBTNCM4.js.map → chunk-ZJGZDOQO.js.map} +0 -0
  331. /package/dist/{classified-marker-QWMASIT7.js.map → classified-marker-7S5IEP6Q.js.map} +0 -0
  332. /package/dist/{collection-facade-KMBWNCYP.js.map → collection-facade-ENLTJZBT.js.map} +0 -0
  333. /package/dist/{computed-DSMPXG2Y.js.map → computed-WZNKRLCY.js.map} +0 -0
  334. /package/dist/{cover-QJRXINN5.js.map → cover-B5MY43CK.js.map} +0 -0
  335. /package/dist/{dead-filter-66VGI6JV.js.map → dead-filter-KRRD57MR.js.map} +0 -0
  336. /package/dist/{delegation-SU6CV3W7.js.map → delegation-UT76AQIG.js.map} +0 -0
  337. /package/dist/{derive-6RWU4EOA.js.map → derive-SGRCCKVP.js.map} +0 -0
  338. /package/dist/{enclave-TKPN2G2U.js.map → enclave-YFKA3GJT.js.map} +0 -0
  339. /package/dist/{executor-KGNLJD6M.js.map → executor-TEZYRDN3.js.map} +0 -0
  340. /package/dist/{executor-UX4FASYZ.js.map → executor-UF7LTX6O.js.map} +0 -0
  341. /package/dist/{executor-XGIS6CR7.js.map → executor-WQQRU6DO.js.map} +0 -0
  342. /package/dist/{export-accessible-LKW3QV22.js.map → export-accessible-HXMKW5LJ.js.map} +0 -0
  343. /package/dist/{extract-partition-UP2ARO75.js.map → extract-partition-QGQ2R42J.js.map} +0 -0
  344. /package/dist/{fanout-sidecar-B5LVUMQX.js.map → fanout-sidecar-HJV3A7PM.js.map} +0 -0
  345. /package/dist/{find-YS6XWB46.js.map → find-VV6PBIHK.js.map} +0 -0
  346. /package/dist/{issue-3ACYX7LO.js.map → issue-7JJ4Z7E2.js.map} +0 -0
  347. /package/dist/{ledger-PTK7XZYT.js.map → ledger-SW6QQOAV.js.map} +0 -0
  348. /package/dist/{liberate-MQQXBUCY.js.map → liberate-W5MDWYOV.js.map} +0 -0
  349. /package/dist/{link-set-SLJHDNRB.js.map → link-set-GNGGCFI4.js.map} +0 -0
  350. /package/dist/{noydb-ANIW5FLE.js.map → noydb-U63S3Z7F.js.map} +0 -0
  351. /package/dist/{policy-YDLCOX4P.js.map → policy-EAXSJNOT.js.map} +0 -0
  352. /package/dist/{post-register-2YHSADFI.js.map → post-register-A7HCFBP5.js.map} +0 -0
  353. /package/dist/{register-PAM3ASRZ.js.map → register-YBMRLZLO.js.map} +0 -0
  354. /package/dist/{registry-4S2U2TR4.js.map → registry-3LXKNXWI.js.map} +0 -0
  355. /package/dist/{registry-NPOWJHC4.js.map → registry-4V4YQCXJ.js.map} +0 -0
  356. /package/dist/{registry-VZ3CCI2R.js.map → registry-ZULMLCJK.js.map} +0 -0
  357. /package/dist/{request-withdrawal-DI3H5WUI.js.map → request-withdrawal-SEVUEUDG.js.map} +0 -0
  358. /package/dist/{reveal-HWO4YMTJ.js.map → reveal-PB3YG544.js.map} +0 -0
  359. /package/dist/{revoke-R5CZSVUT.js.map → revoke-5QULL5GT.js.map} +0 -0
  360. /package/dist/{seed-3ZMF5EQA.js.map → seed-6GTDHL4E.js.map} +0 -0
  361. /package/dist/{signer-MBVHW4WE.js.map → signer-ZMH35FT4.js.map} +0 -0
  362. /package/dist/{stale-VZL4OGUB.js.map → stale-NB5BGRVU.js.map} +0 -0
  363. /package/dist/{storage-3MEJUENZ.js.map → storage-QOZKQMID.js.map} +0 -0
  364. /package/dist/{store-coordination-provider-FKX3F6TQ.js.map → store-coordination-provider-3AELCZ4Y.js.map} +0 -0
  365. /package/dist/{verify-26Y5GNMK.js.map → verify-MXN66IIH.js.map} +0 -0
  366. /package/dist/{walk-IPLXE36W.js.map → walk-H4YE52S2.js.map} +0 -0
  367. /package/dist/{withdraw-accessible-TZDATQVR.js.map → withdraw-accessible-HPOVNG2G.js.map} +0 -0
@@ -0,0 +1,112 @@
1
+ /**
2
+ * #808 — device-local blob pin registry + external side-cache + KPI counters.
3
+ *
4
+ * Pinning marks a blob slot "keep this available offline" **for this device
5
+ * only**. Pin state is intentionally NEVER written to the vault's
6
+ * `NoydbStore` — the vault store is the synced/shared substrate, and each
7
+ * device pins for itself. Instead, `withBlobs()` owns one {@link BlobPinCache}
8
+ * per strategy instance and threads it into every `BlobSet` it opens; the
9
+ * registry rows live in a pluggable {@link BlobPinStore}.
10
+ *
11
+ * The default backend is in-memory ({@link memoryBlobPinStore}) — the hub has
12
+ * NO device-persistence idiom of its own (it never touches IndexedDB or any
13
+ * Node fs API; persistence backends are the `to-*` package family), so a
14
+ * durable registry is supplied by the consumer:
15
+ * `withBlobs({ pinStore: myIdbBackedStore })`. The interface is four async
16
+ * methods, deliberately trivial to implement over IndexedDB / SQLite / a file.
17
+ *
18
+ * ## What a registry row holds
19
+ *
20
+ * One row per `{vault, collection, record, slot}` ({@link blobPinKey}):
21
+ * - the pin flag + timestamps (LRU input for the cache-budget pass), and
22
+ * - for `external: true` slots, the **local encrypted copy** of the object's
23
+ * bytes ({@link BlobPinEntry.cipher}). The object-store copy of an external
24
+ * blob lives OUTSIDE the zero-knowledge envelope by design; the local copy
25
+ * does NOT — it is AES-256-GCM-encrypted under the vault's `_blob` DEK
26
+ * through the same enclave path that encrypts blob chunks
27
+ * (`encryptBytesWithAAD`, AAD-bound to the row's pin key), so a stolen
28
+ * device store leaks nothing the vault store wouldn't.
29
+ *
30
+ * Internal (chunked) blobs never store bytes here — their ciphertext already
31
+ * lives in `_blob_chunks`; the registry only carries their pin flag and
32
+ * access times.
33
+ *
34
+ * @module
35
+ */
36
+ /** One device-local registry row — see the module doc for the field posture. */
37
+ export interface BlobPinEntry {
38
+ /** Slot is pinned for offline on THIS device. */
39
+ readonly pinned: boolean;
40
+ /** ISO timestamp of the pin (absent when not pinned). */
41
+ readonly pinnedAt?: string;
42
+ /** ISO timestamp of the last local read — LRU input for the budget pass. */
43
+ readonly lastAccessAt?: string;
44
+ /** Plaintext byte length of the cached external copy (external slots only). */
45
+ readonly cachedBytes?: number;
46
+ /**
47
+ * Encrypted local copy of an external slot's bytes: base64 IV + base64
48
+ * AES-256-GCM ciphertext under the vault's `_blob` DEK, AAD-bound to the
49
+ * row's {@link blobPinKey}. On an UNENCRYPTED vault (`encrypt: false`) the
50
+ * fallback mirrors the envelope convention: `iv === ''`, `data` = base64
51
+ * plaintext.
52
+ */
53
+ readonly cipher?: {
54
+ readonly iv: string;
55
+ readonly data: string;
56
+ };
57
+ }
58
+ /**
59
+ * Pluggable device-local backend for the pin registry (#808). Implementations
60
+ * MUST be device-local (never synced) — an IndexedDB- or file-backed store is
61
+ * the expected production shape; {@link memoryBlobPinStore} is the default.
62
+ */
63
+ export interface BlobPinStore {
64
+ get(key: string): Promise<BlobPinEntry | null>;
65
+ set(key: string, entry: BlobPinEntry): Promise<void>;
66
+ delete(key: string): Promise<void>;
67
+ /** All rows whose key starts with `prefix` (`''` = every row). */
68
+ entries(prefix: string): Promise<Array<{
69
+ key: string;
70
+ entry: BlobPinEntry;
71
+ }>>;
72
+ }
73
+ /**
74
+ * In-memory {@link BlobPinStore} — the default. Pin state then lasts for the
75
+ * strategy instance's lifetime (one app session); pass a durable store to
76
+ * `withBlobs({ pinStore })` to keep pins across restarts.
77
+ */
78
+ export declare function memoryBlobPinStore(): BlobPinStore;
79
+ /**
80
+ * Device-local blob-cache KPI counters (#808) — read via
81
+ * `withBlobs().cacheStats()`. "Local" reads (internal chunks, cached external
82
+ * copies) count as hits; network fetches from the object store count as
83
+ * misses and add to `bytesDownloaded` (the 4G-budget number).
84
+ */
85
+ export interface BlobCacheStats {
86
+ readonly hits: number;
87
+ readonly misses: number;
88
+ readonly bytesDownloaded: number;
89
+ }
90
+ /**
91
+ * The per-strategy bundle `withBlobs()` threads into every `BlobSet`: the
92
+ * registry backend plus the shared mutable KPI counters.
93
+ *
94
+ * @internal
95
+ */
96
+ export interface BlobPinCache {
97
+ readonly store: BlobPinStore;
98
+ readonly stats: {
99
+ hits: number;
100
+ misses: number;
101
+ bytesDownloaded: number;
102
+ };
103
+ }
104
+ /** @internal */
105
+ export declare function createBlobPinCache(store?: BlobPinStore): BlobPinCache;
106
+ /**
107
+ * Registry key for one slot's row: `{vault}::{collection}::{record}::{slot}`
108
+ * (the blobs' established `::` separator — record ids and slot names are
109
+ * already `::`-refused at the write surface, see `assertKeyPartSafe`).
110
+ * Omitting `slotName` yields the record's row PREFIX (for per-record scans).
111
+ */
112
+ export declare function blobPinKey(vault: string, collection: string, recordId: string, slotName?: string): string;
@@ -2,6 +2,7 @@ import type { NoydbStore, BlobObject, SlotInfo, VersionRecord, BlobPutOptions, B
2
2
  import type { ObjectProjection } from './object-projection.js';
3
3
  import type { BlobFieldsConfig } from './blob-compaction.js';
4
4
  import { type EnclaveKey } from '../../kernel/enclave/index.js';
5
+ import { type BlobPinCache } from './blob-pinning.js';
5
6
  import type { UnlockedKeyring } from '../../with-party/team/keyring.js';
6
7
  /**
7
8
  * DEK slot name for vault-shared blob data. Calling `getDEK('_blob')`
@@ -69,6 +70,12 @@ export declare class BlobSet {
69
70
  private readonly objectStore;
70
71
  private readonly blobFields;
71
72
  private readonly keyring;
73
+ /**
74
+ * Device-local pin registry + external side-cache + KPI counters (#808).
75
+ * Injected by `withBlobs()` (one shared instance per strategy — per
76
+ * "device"); absent on a direct construction that never threads one.
77
+ */
78
+ private readonly pinCache;
72
79
  /**
73
80
  * Set only on the cleared clone `atTier()` returns (#749) — never by
74
81
  * `openSlot`/`Collection.blob()`. Its presence is what makes a `BlobSet`
@@ -91,6 +98,7 @@ export declare class BlobSet {
91
98
  blobFields?: BlobFieldsConfig;
92
99
  keyring?: UnlockedKeyring;
93
100
  clearedTier?: number;
101
+ pinCache?: BlobPinCache;
94
102
  });
95
103
  /**
96
104
  * #724 I1 completion: a legacy (non-`perRecordKeys`) blob has no per-blob
@@ -1136,7 +1144,11 @@ export declare class BlobSet {
1136
1144
  /**
1137
1145
  * Fetch all bytes for the named slot.
1138
1146
  * Returns `null` if the slot does not exist.
1139
- * Throws `NotFoundError` if the index entry exists but a chunk is missing.
1147
+ * Throws `BlobOfflineError` if the content is not available locally (#808):
1148
+ * an internal blob whose chunk envelopes are absent from the local store, or
1149
+ * an external slot with no local cached copy while the object store is
1150
+ * unreachable. External reads populate the device-local encrypted
1151
+ * side-cache, so a repeat read is served locally (see `pin()`).
1140
1152
  */
1141
1153
  get(slotName: string): Promise<Uint8Array | null>;
1142
1154
  /**
@@ -1182,6 +1194,12 @@ export declare class BlobSet {
1182
1194
  /**
1183
1195
  * List all slot entries for this record.
1184
1196
  * Returns metadata only — no chunk data is loaded.
1197
+ *
1198
+ * #808: when a pin registry is present (`withBlobs()`), each entry is
1199
+ * annotated with this DEVICE's view — `pinned` / `lastAccessAt` /
1200
+ * `cachedBytes` (see their `SlotInfo` doc comments). The annotations come
1201
+ * from the device-local registry, never the vault store, and are what
1202
+ * `vault.compact()`'s pin exemption + cache-budget LRU pass key off.
1185
1203
  */
1186
1204
  list(): Promise<SlotInfo[]>;
1187
1205
  /**
@@ -1189,6 +1207,72 @@ export declare class BlobSet {
1189
1207
  * Decrements refCount on the blob. Chunks are GC'd by `vault.blobGC()`.
1190
1208
  */
1191
1209
  delete(slotName: string): Promise<void>;
1210
+ /**
1211
+ * Pin the named slot for offline availability ON THIS DEVICE.
1212
+ *
1213
+ * - Downloads eagerly (call while online): an internal blob's chunks are
1214
+ * fetched once to prove they are locally readable; an `external` slot's
1215
+ * bytes are fetched from the object store and kept in the device-local
1216
+ * side-cache, **encrypted** under the vault's `_blob` DEK via the same
1217
+ * enclave path as chunk encryption (the object-store copy sits outside
1218
+ * the ZK envelope by design; the local copy does not).
1219
+ * - A pinned slot is EXEMPT from `vault.compact()` eviction — both the
1220
+ * `blobFields` policy pass and the `cacheBudget` LRU pass.
1221
+ * - Pin state is device-local (never synced): it lives in the `withBlobs()`
1222
+ * pin registry, not in the vault store. Each device pins for itself.
1223
+ *
1224
+ * Throws `NotFoundError` for a missing slot and `BlobOfflineError` when the
1225
+ * eager download cannot complete (offline).
1226
+ */
1227
+ pin(slotName: string): Promise<void>;
1228
+ /**
1229
+ * Unpin the named slot on this device — it returns to the normal lifecycle:
1230
+ * `blobFields` policy eviction applies again, and any local cached copy
1231
+ * (external slots) stays but becomes budget-managed (`cacheBudget` LRU).
1232
+ * A no-op when the slot is not pinned here.
1233
+ */
1234
+ unpin(slotName: string): Promise<void>;
1235
+ /** Whether the named slot is pinned for offline ON THIS DEVICE (#808). */
1236
+ isPinned(slotName: string): Promise<boolean>;
1237
+ /**
1238
+ * Drop this slot's device-local cached copy (the encrypted external
1239
+ * side-cache) WITHOUT touching the slot, the vault store, or the object
1240
+ * store. Returns the plaintext bytes freed (0 when nothing was cached, the
1241
+ * slot is pinned — pinned copies are exempt — or no registry is present).
1242
+ * The cache-budget pass inside `vault.compact()` is the expected caller;
1243
+ * the LRU access row itself is kept.
1244
+ */
1245
+ dropLocalCache(slotName: string): Promise<number>;
1246
+ /** This slot's registry key — see {@link blobPinKey}. */
1247
+ private pinKeyFor;
1248
+ /** AAD binding for a cached external copy: the row's own registry key. */
1249
+ private pinCopyAAD;
1250
+ private requirePinCache;
1251
+ /** KPI hit + LRU access stamp for a successful LOCAL read. No-op without a registry. */
1252
+ private recordLocalHit;
1253
+ /**
1254
+ * Read an `external` slot (#808 taxonomy): local encrypted side-cache first
1255
+ * (hit); else the object store (miss + `bytesDownloaded`), auto-caching the
1256
+ * fetched bytes so the NEXT read — and any later offline read — is local.
1257
+ * A network failure with no local copy is the typed `BlobOfflineError`;
1258
+ * a genuinely absent object (fetch succeeded, nothing there) stays `null`.
1259
+ */
1260
+ private readExternal;
1261
+ /**
1262
+ * Decrypt a cached external copy. `null` (treated as a cache miss → network
1263
+ * refresh) when the vault keys can no longer open it — e.g. the copy was
1264
+ * cached before the owning record moved tiers, so it is sealed under a DEK
1265
+ * this handle no longer resolves. Genuine non-crypto failures propagate.
1266
+ */
1267
+ private decryptCachedCopy;
1268
+ /**
1269
+ * Write an external slot's bytes into the device-local side-cache —
1270
+ * ENCRYPTED under the vault's `_blob` DEK (owner tier) via the enclave's
1271
+ * AAD-bound path, mirroring chunk encryption; base64 plaintext with
1272
+ * `iv: ''` only on an unencrypted vault (the envelope convention). A
1273
+ * pre-existing pin flag survives the rewrite.
1274
+ */
1275
+ private cacheExternalCopy;
1192
1276
  /**
1193
1277
  * Return a native `Response` whose body streams the decrypted,
1194
1278
  * decompressed blob bytes with full HTTP metadata headers.
@@ -0,0 +1,28 @@
1
+ import {
2
+ FROZEN_SNAPSHOTS_COLLECTION,
3
+ freezeAndDeleteClosure,
4
+ freezeSnapshotOnly,
5
+ randomId,
6
+ withdrawAccessibleData
7
+ } from "./chunk-XULHFSHO.js";
8
+ import "./chunk-25ZDB25Z.js";
9
+ import "./chunk-MEKAMERX.js";
10
+ import "./chunk-BVZGNMVM.js";
11
+ import "./chunk-PEY6ZTCF.js";
12
+ import "./chunk-QXPOEAKR.js";
13
+ import "./chunk-LLVW4V7R.js";
14
+ import "./chunk-M25ZIEB2.js";
15
+ import "./chunk-5BB3N4KU.js";
16
+ import "./chunk-LP7BEXCT.js";
17
+ import "./chunk-5P5AAXYA.js";
18
+ import "./chunk-5BHNQNBI.js";
19
+ import "./chunk-IGM563N5.js";
20
+ import "./chunk-PZ5AY32C.js";
21
+ export {
22
+ FROZEN_SNAPSHOTS_COLLECTION,
23
+ freezeAndDeleteClosure,
24
+ freezeSnapshotOnly,
25
+ randomId,
26
+ withdrawAccessibleData
27
+ };
28
+ //# sourceMappingURL=withdraw-accessible-HPOVNG2G.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noy-db/hub",
3
- "version": "0.4.0-pre.0",
3
+ "version": "0.4.0-pre.2",
4
4
  "description": "Zero-knowledge, offline-first, encrypted document store — core library with AES-256-GCM, PBKDF2, multi-user keyring, and sync engine",
5
5
  "license": "MIT",
6
6
  "author": "vLannaAi <vicio@lanna.ai>",
@@ -72,10 +72,6 @@
72
72
  "types": "./dist/with-commit/crdt/index.d.ts",
73
73
  "default": "./dist/crdt/index.js"
74
74
  },
75
- "./bundle": {
76
- "types": "./dist/legacy/bundle.d.ts",
77
- "default": "./dist/bundle/index.js"
78
- },
79
75
  "./consent": {
80
76
  "types": "./dist/with-audit/consent/index.d.ts",
81
77
  "default": "./dist/consent/index.js"
@@ -120,6 +116,10 @@
120
116
  "types": "./dist/kernel/util/index.d.ts",
121
117
  "default": "./dist/util/index.js"
122
118
  },
119
+ "./share-link": {
120
+ "types": "./dist/share-link/index.d.ts",
121
+ "default": "./dist/share-link/index.js"
122
+ },
123
123
  "./attestation": {
124
124
  "types": "./dist/with-audit/attestation/index.d.ts",
125
125
  "default": "./dist/attestation/index.js"
@@ -192,14 +192,14 @@
192
192
  "node": ">=22.0.0"
193
193
  },
194
194
  "dependencies": {
195
- "@noy-db/attestation": "0.4.0-pre.0"
195
+ "@noy-db/attestation": "0.4.0-pre.2"
196
196
  },
197
197
  "devDependencies": {
198
198
  "@types/node": "^22.0.0",
199
199
  "esbuild": "^0.25.0",
200
200
  "zod": "^4.0.0",
201
201
  "zod-to-json-schema": "^3.25.2",
202
- "@noy-db/on-shamir": "0.4.0-pre.0"
202
+ "@noy-db/on-shamir": "0.4.0-pre.2"
203
203
  },
204
204
  "peerDependencies": {
205
205
  "zod-to-json-schema": "^3.25.0"
@@ -1,20 +0,0 @@
1
- import {
2
- UserApi,
3
- createUserApi
4
- } from "./chunk-EO43ANYJ.js";
5
- import "./chunk-NCCBLYEB.js";
6
- import "./chunk-W4TCUGQR.js";
7
- import "./chunk-A4FXFAKF.js";
8
- import "./chunk-IY23KFNZ.js";
9
- import "./chunk-N6WF5PKC.js";
10
- import "./chunk-6HY2X62D.js";
11
- import "./chunk-LP7BEXCT.js";
12
- import "./chunk-HOONYZY2.js";
13
- import "./chunk-VCTXU4AT.js";
14
- import "./chunk-W2OG6JOL.js";
15
- import "./chunk-PZ5AY32C.js";
16
- export {
17
- UserApi,
18
- createUserApi
19
- };
20
- //# sourceMappingURL=api-3A3S4SHH.js.map
@@ -1,153 +0,0 @@
1
- import {
2
- extractPartition,
3
- walkClosure
4
- } from "../chunk-THVIPWRF.js";
5
- import "../chunk-CHFZDSE4.js";
6
- import {
7
- adoptPartition,
8
- createOwnerOnAdoptedPartition,
9
- decryptExtractedPartition,
10
- unsealDeks
11
- } from "../chunk-UDSR4X4L.js";
12
- import "../chunk-CJ5KKU6X.js";
13
- import "../chunk-RFI7GGFO.js";
14
- import "../chunk-UHNGNKLV.js";
15
- import "../chunk-YTGDPCPW.js";
16
- import {
17
- COMPRESSION_BROTLI,
18
- COMPRESSION_GZIP,
19
- COMPRESSION_NONE,
20
- FLAG_COMPRESSED,
21
- FLAG_HAS_INTEGRITY_HASH,
22
- NOYDB_BUNDLE_FORMAT_VERSION,
23
- NOYDB_BUNDLE_MAGIC,
24
- NOYDB_BUNDLE_PREFIX_BYTES,
25
- encodeBundleHeader,
26
- readNoydbBundle,
27
- readNoydbBundleHeader,
28
- readPod,
29
- readPodHeader,
30
- resetBrotliSupportCache,
31
- validateBundleHeader,
32
- writeNoydbBundle,
33
- writePod
34
- } from "../chunk-FXZDAV62.js";
35
- import "../chunk-XUW3PXHU.js";
36
- import "../chunk-554KLAAN.js";
37
- import "../chunk-NCCBLYEB.js";
38
- import "../chunk-UC2ETWF3.js";
39
- import {
40
- generateULID,
41
- isULID
42
- } from "../chunk-ZJADGNYF.js";
43
- import "../chunk-VRBTNCM4.js";
44
- import "../chunk-I7FD46FF.js";
45
- import "../chunk-DRWBEDYO.js";
46
- import "../chunk-WQIYTNJV.js";
47
- import "../chunk-W4TCUGQR.js";
48
- import "../chunk-A4FXFAKF.js";
49
- import "../chunk-IY23KFNZ.js";
50
- import "../chunk-N6WF5PKC.js";
51
- import "../chunk-6HY2X62D.js";
52
- import "../chunk-LP7BEXCT.js";
53
- import "../chunk-HOONYZY2.js";
54
- import "../chunk-VCTXU4AT.js";
55
- import {
56
- AdoptionStateError,
57
- BackupCorruptedError,
58
- BackupLedgerError,
59
- BundleIntegrityError,
60
- BundleSealMismatchError,
61
- BundleVersionConflictError,
62
- PartitionExtractionError,
63
- PodVersionConflictError,
64
- TransferSealError
65
- } from "../chunk-W2OG6JOL.js";
66
- import "../chunk-PZ5AY32C.js";
67
-
68
- // src/with-cargo/describe-extraction.ts
69
- async function describeExtraction(vault, opts) {
70
- const { closure, graph, danglingRefs } = await walkClosure(vault, opts);
71
- const { name: vaultName, adapter } = vault._introspectState();
72
- const encoder = new TextEncoder();
73
- const byCollection = [];
74
- const inaccessible = [];
75
- let totalBytes = 0;
76
- let totalRecords = 0;
77
- for (const [collectionName, ids] of closure) {
78
- let bytes = 0;
79
- let oldestTs;
80
- let newestTs;
81
- let recordCount = 0;
82
- for (const id of ids) {
83
- const env = await adapter.get(vaultName, collectionName, id);
84
- if (!env) {
85
- inaccessible.push({ collection: collectionName, id });
86
- continue;
87
- }
88
- recordCount++;
89
- bytes += encoder.encode(JSON.stringify(env)).length;
90
- const ts = env._ts;
91
- if (oldestTs === void 0 || ts < oldestTs) oldestTs = ts;
92
- if (newestTs === void 0 || ts > newestTs) newestTs = ts;
93
- }
94
- byCollection.push({
95
- name: collectionName,
96
- recordCount,
97
- bytes,
98
- // Spread conditionally — exactOptionalPropertyTypes forbids an
99
- // explicit `undefined` on an optional property.
100
- ...oldestTs !== void 0 ? { oldestTs } : {},
101
- ...newestTs !== void 0 ? { newestTs } : {}
102
- });
103
- totalBytes += bytes;
104
- totalRecords += recordCount;
105
- }
106
- byCollection.sort((a, b) => a.name.localeCompare(b.name));
107
- return Object.freeze({
108
- totalRecords,
109
- totalBytes,
110
- byCollection,
111
- graph,
112
- inaccessible,
113
- danglingRefs
114
- });
115
- }
116
- export {
117
- AdoptionStateError,
118
- BackupCorruptedError,
119
- BackupLedgerError,
120
- BundleIntegrityError,
121
- BundleSealMismatchError,
122
- BundleVersionConflictError,
123
- COMPRESSION_BROTLI,
124
- COMPRESSION_GZIP,
125
- COMPRESSION_NONE,
126
- FLAG_COMPRESSED,
127
- FLAG_HAS_INTEGRITY_HASH,
128
- NOYDB_BUNDLE_FORMAT_VERSION,
129
- NOYDB_BUNDLE_MAGIC,
130
- NOYDB_BUNDLE_PREFIX_BYTES,
131
- PartitionExtractionError,
132
- PodVersionConflictError,
133
- TransferSealError,
134
- adoptPartition,
135
- createOwnerOnAdoptedPartition,
136
- decryptExtractedPartition,
137
- describeExtraction,
138
- encodeBundleHeader,
139
- extractPartition,
140
- generateULID,
141
- isULID,
142
- readNoydbBundle,
143
- readNoydbBundleHeader,
144
- readPod,
145
- readPodHeader,
146
- resetBrotliSupportCache,
147
- unsealDeks,
148
- validateBundleHeader,
149
- walkClosure,
150
- writeNoydbBundle,
151
- writePod
152
- };
153
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/with-cargo/describe-extraction.ts"],"sourcesContent":["/**\n * Partition-extraction dry-run. Read-only preview of what an\n * `extractPartition` would move: record counts, byte totals, and the\n * timestamp span per collection — computed from raw encrypted\n * envelopes WITHOUT decrypting them. Writes nothing, mutates nothing.\n *\n * @module\n */\nimport type { Vault } from '../kernel/vault.js'\nimport { walkClosure, type WalkClosureOptions, type DanglingRefNotice } from './walk-closure.js'\n\nexport interface ExtractionPreview {\n readonly totalRecords: number\n /** Sum of serialized encrypted-envelope sizes (bytes). */\n readonly totalBytes: number\n readonly byCollection: ReadonlyArray<{\n readonly name: string\n readonly recordCount: number\n readonly bytes: number\n /** Earliest envelope `_ts` in this collection (lexicographic). */\n readonly oldestTs?: string\n readonly newestTs?: string\n }>\n readonly graph: { readonly depth: number; readonly cyclesDetected: boolean }\n /** Records the walk reached but whose envelope couldn't be read. */\n readonly inaccessible: ReadonlyArray<{ readonly collection: string; readonly id: string }>\n /**\n * #772: outbound FK edges whose referenced parent was excluded from the\n * closure (missing, or tier-elevated and therefore invisible) — mirrors\n * `ExtractPartitionResult.danglingRefs` (#759) so a preview/extract pair\n * gives the SAME signal. A parent excluded this way never appears in\n * `byCollection` at all; this is the only preview-time indicator.\n */\n readonly danglingRefs: ReadonlyArray<DanglingRefNotice>\n}\n\nexport async function describeExtraction(\n vault: Vault,\n opts: WalkClosureOptions,\n): Promise<ExtractionPreview> {\n const { closure, graph, danglingRefs } = await walkClosure(vault, opts)\n\n const { name: vaultName, adapter } = vault._introspectState()\n const encoder = new TextEncoder()\n\n const byCollection: Array<{\n name: string; recordCount: number; bytes: number; oldestTs?: string; newestTs?: string\n }> = []\n const inaccessible: Array<{ collection: string; id: string }> = []\n let totalBytes = 0\n let totalRecords = 0\n\n for (const [collectionName, ids] of closure) {\n let bytes = 0\n let oldestTs: string | undefined\n let newestTs: string | undefined\n let recordCount = 0\n\n for (const id of ids) {\n const env = await adapter.get(vaultName, collectionName, id)\n if (!env) {\n // Walk reached it (via decrypted list) but the raw store read\n // returned nothing — surface rather than miscount.\n inaccessible.push({ collection: collectionName, id })\n continue\n }\n recordCount++\n bytes += encoder.encode(JSON.stringify(env)).length\n const ts = env._ts\n if (oldestTs === undefined || ts < oldestTs) oldestTs = ts\n if (newestTs === undefined || ts > newestTs) newestTs = ts\n }\n\n byCollection.push({\n name: collectionName,\n recordCount,\n bytes,\n // Spread conditionally — exactOptionalPropertyTypes forbids an\n // explicit `undefined` on an optional property.\n ...(oldestTs !== undefined ? { oldestTs } : {}),\n ...(newestTs !== undefined ? { newestTs } : {}),\n })\n totalBytes += bytes\n totalRecords += recordCount\n }\n\n byCollection.sort((a, b) => a.name.localeCompare(b.name))\n\n return Object.freeze({\n totalRecords,\n totalBytes,\n byCollection,\n graph,\n inaccessible,\n danglingRefs,\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,eAAsB,mBACpB,OACA,MAC4B;AAC5B,QAAM,EAAE,SAAS,OAAO,aAAa,IAAI,MAAM,YAAY,OAAO,IAAI;AAEtE,QAAM,EAAE,MAAM,WAAW,QAAQ,IAAI,MAAM,iBAAiB;AAC5D,QAAM,UAAU,IAAI,YAAY;AAEhC,QAAM,eAED,CAAC;AACN,QAAM,eAA0D,CAAC;AACjE,MAAI,aAAa;AACjB,MAAI,eAAe;AAEnB,aAAW,CAAC,gBAAgB,GAAG,KAAK,SAAS;AAC3C,QAAI,QAAQ;AACZ,QAAI;AACJ,QAAI;AACJ,QAAI,cAAc;AAElB,eAAW,MAAM,KAAK;AACpB,YAAM,MAAM,MAAM,QAAQ,IAAI,WAAW,gBAAgB,EAAE;AAC3D,UAAI,CAAC,KAAK;AAGR,qBAAa,KAAK,EAAE,YAAY,gBAAgB,GAAG,CAAC;AACpD;AAAA,MACF;AACA;AACA,eAAS,QAAQ,OAAO,KAAK,UAAU,GAAG,CAAC,EAAE;AAC7C,YAAM,KAAK,IAAI;AACf,UAAI,aAAa,UAAa,KAAK,SAAU,YAAW;AACxD,UAAI,aAAa,UAAa,KAAK,SAAU,YAAW;AAAA,IAC1D;AAEA,iBAAa,KAAK;AAAA,MAChB,MAAM;AAAA,MACN;AAAA,MACA;AAAA;AAAA;AAAA,MAGA,GAAI,aAAa,SAAY,EAAE,SAAS,IAAI,CAAC;AAAA,MAC7C,GAAI,aAAa,SAAY,EAAE,SAAS,IAAI,CAAC;AAAA,IAC/C,CAAC;AACD,kBAAc;AACd,oBAAgB;AAAA,EAClB;AAEA,eAAa,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAExD,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-CHFZDSE4.js.map