@noy-db/hub 0.7.0-pre.1 → 0.7.0-pre.10

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 (364) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/README.md +4 -1
  3. package/dist/api-GJQF7OAJ.js +20 -0
  4. package/dist/as/index.js +11 -11
  5. package/dist/at/index.js +9 -9
  6. package/dist/attestation/index.js +18 -18
  7. package/dist/{backup-Z7ZBTAQ6.js → backup-QZQEP5RO.js} +12 -12
  8. package/dist/blobs/index.js +13 -13
  9. package/dist/broker/index.js +12 -12
  10. package/dist/by/index.js +2 -2
  11. package/dist/cargo/index.js +33 -30
  12. package/dist/{chunk-AB5P32RE.js → chunk-2DGBRE4K.js} +2 -2
  13. package/dist/{chunk-XVU7J43V.js → chunk-2E2LT37H.js} +2 -2
  14. package/dist/{chunk-4LPF226H.js → chunk-2MQ2D5OZ.js} +5 -5
  15. package/dist/{chunk-DBNYPLWY.js → chunk-357ECVLE.js} +3 -3
  16. package/dist/{chunk-SHILAQH5.js → chunk-3GIA3HJ2.js} +2 -2
  17. package/dist/{chunk-QGJ4XIA7.js → chunk-3SWP2FYA.js} +8 -8
  18. package/dist/{chunk-N4CNVSUF.js → chunk-4RUFYGWG.js} +2 -2
  19. package/dist/{chunk-4G25SDQL.js → chunk-4U52PMEL.js} +4 -4
  20. package/dist/{chunk-H7HP56F6.js → chunk-5EC7X5QA.js} +5 -5
  21. package/dist/{chunk-WK5FSW7T.js → chunk-5NKHCJU5.js} +8 -8
  22. package/dist/{chunk-PQ6Z2TAP.js → chunk-5UKIZIO3.js} +2 -2
  23. package/dist/{chunk-QHJKK77B.js → chunk-5W5CEHLA.js} +6 -6
  24. package/dist/{chunk-YPSOHDNC.js → chunk-65ZYRK7O.js} +2 -2
  25. package/dist/{chunk-4ZPE6SKS.js → chunk-75WNTBZL.js} +3 -3
  26. package/dist/{chunk-H4M7ADXY.js → chunk-7PC3DRG7.js} +27 -17
  27. package/dist/chunk-7PC3DRG7.js.map +1 -0
  28. package/dist/{chunk-OWLVBOWO.js → chunk-7XT7KZTN.js} +10 -10
  29. package/dist/{chunk-QI5NWLVW.js → chunk-AHIIBDNH.js} +7 -7
  30. package/dist/{chunk-XSN63FUS.js → chunk-AW4KTQA4.js} +2 -2
  31. package/dist/{chunk-KDJGJR7F.js → chunk-CWFH36SI.js} +2 -2
  32. package/dist/{chunk-X67FCULK.js → chunk-DIVY2CJZ.js} +3 -3
  33. package/dist/{chunk-Z2PWOSCJ.js → chunk-DNMTN46H.js} +2 -2
  34. package/dist/{chunk-2LPVI4PX.js → chunk-DOPZWTMJ.js} +20 -8
  35. package/dist/chunk-DOPZWTMJ.js.map +1 -0
  36. package/dist/{chunk-HTGRQZFB.js → chunk-DZPMKY3J.js} +3 -3
  37. package/dist/{chunk-XJ3FEKEY.js → chunk-FKQCC4C5.js} +2 -2
  38. package/dist/{chunk-E6YA6UAP.js → chunk-FLRLZ4XZ.js} +2 -2
  39. package/dist/{chunk-ALUNQEBY.js → chunk-FN26SFGH.js} +2 -2
  40. package/dist/{chunk-TVIFAHZR.js → chunk-FPN5D4JX.js} +6 -6
  41. package/dist/{chunk-VTG7327U.js → chunk-FRIVOR5N.js} +4 -4
  42. package/dist/{chunk-3QARDAYW.js → chunk-FYT3DXPN.js} +2 -2
  43. package/dist/{chunk-YMLQBZFJ.js → chunk-FZWAGG5T.js} +6 -6
  44. package/dist/{chunk-CBRS2NEK.js → chunk-GHADG5QZ.js} +2 -2
  45. package/dist/{chunk-3L2MVE36.js → chunk-GKOJR53Y.js} +5 -5
  46. package/dist/{chunk-Y6GZ2P4M.js → chunk-GM4IM7TC.js} +2 -2
  47. package/dist/{chunk-CN6B5PEN.js → chunk-H5GVPOB4.js} +5 -5
  48. package/dist/{chunk-467SKJ65.js → chunk-HOIWW2LV.js} +4 -4
  49. package/dist/{chunk-ALB64CZM.js → chunk-HS3LEVT4.js} +7 -7
  50. package/dist/{chunk-YXA2TCTZ.js → chunk-I5LSKXT6.js} +4 -4
  51. package/dist/{chunk-S35S77YU.js → chunk-IAHDSFFA.js} +10 -10
  52. package/dist/{chunk-X62MEF2O.js → chunk-IRHIA3AL.js} +3 -3
  53. package/dist/{chunk-F23WQK3G.js → chunk-IS5LFHV2.js} +7 -7
  54. package/dist/{chunk-POS53FG6.js → chunk-IZTU6RKH.js} +2 -2
  55. package/dist/{chunk-VAG47QHV.js → chunk-J6FXVDKC.js} +2 -2
  56. package/dist/{chunk-2GXEQUEX.js → chunk-JFSUYGNE.js} +2 -2
  57. package/dist/{chunk-LR4Z47QD.js → chunk-JILOSL4O.js} +3 -3
  58. package/dist/{chunk-RC4BROYR.js → chunk-JRWLUWDM.js} +3 -3
  59. package/dist/{chunk-Z2WK53N6.js → chunk-JUBWUJY5.js} +2 -2
  60. package/dist/{chunk-JVLSU7S2.js → chunk-JY4U6CYV.js} +2 -2
  61. package/dist/{chunk-3SMSERQU.js → chunk-KKZPQLDH.js} +80 -80
  62. package/dist/{chunk-WLLUM35R.js → chunk-KQIDBIZL.js} +2 -2
  63. package/dist/{chunk-LKFKXS5K.js → chunk-KZTPL7NL.js} +2 -2
  64. package/dist/{chunk-S2VG3ABP.js → chunk-LAI7ENPW.js} +3 -3
  65. package/dist/{chunk-ZO252Q5S.js → chunk-LUVGSKXE.js} +6 -6
  66. package/dist/{chunk-PGFKIOR3.js → chunk-MENI33ZV.js} +3 -3
  67. package/dist/{chunk-MTBXJAS4.js → chunk-MOQ6OGKS.js} +4 -4
  68. package/dist/{chunk-5ACAVJUI.js → chunk-MTTPHBIE.js} +2 -2
  69. package/dist/{chunk-T3PHCEN4.js → chunk-MU74BYOD.js} +3 -3
  70. package/dist/{chunk-DFAUMLD7.js → chunk-MV2OEK3K.js} +5 -5
  71. package/dist/{chunk-RK7N4OQ5.js → chunk-N4CHCXDL.js} +3 -1
  72. package/dist/chunk-N4CHCXDL.js.map +1 -0
  73. package/dist/{chunk-LF6DMX4C.js → chunk-NMDMSHBF.js} +3 -3
  74. package/dist/{chunk-H3VG6XBC.js → chunk-NUXTUGAD.js} +15 -13
  75. package/dist/chunk-NUXTUGAD.js.map +1 -0
  76. package/dist/{chunk-225O5CXQ.js → chunk-O3SNM66K.js} +2 -2
  77. package/dist/{chunk-YCSM3GZU.js → chunk-OEJ4R52I.js} +2 -2
  78. package/dist/{chunk-IESNYJXZ.js → chunk-OKCQNMO6.js} +6 -6
  79. package/dist/{chunk-H36KSN6X.js → chunk-OLUTCM23.js} +7 -7
  80. package/dist/{chunk-RDHUZ674.js → chunk-OQDHIAR2.js} +4 -4
  81. package/dist/{chunk-KN4W2OQ4.js → chunk-OXZSMX2H.js} +10 -8
  82. package/dist/{chunk-KN4W2OQ4.js.map → chunk-OXZSMX2H.js.map} +1 -1
  83. package/dist/{chunk-DKWPJOYH.js → chunk-P22XPNFW.js} +2 -2
  84. package/dist/{chunk-GK4DRVUD.js → chunk-P2RJAVMR.js} +4 -4
  85. package/dist/{chunk-UCUALOSM.js → chunk-P7KJME6C.js} +2 -2
  86. package/dist/{chunk-HM4JSXX2.js → chunk-PCIBCL26.js} +3 -3
  87. package/dist/{chunk-4A4TYISP.js → chunk-PV7XXAXK.js} +2 -2
  88. package/dist/{chunk-5AFMP532.js → chunk-Q2OAAREU.js} +6 -6
  89. package/dist/{chunk-Z7ZXZL6Y.js → chunk-Q2ZN5DWZ.js} +2 -2
  90. package/dist/{chunk-L6GTLZRK.js → chunk-QJLOWGOU.js} +5 -5
  91. package/dist/{chunk-7LYUJNU3.js → chunk-QOHGWFAW.js} +2 -2
  92. package/dist/{chunk-6FOGTKBY.js → chunk-RCONOOVF.js} +5 -5
  93. package/dist/{chunk-VFIWDPXZ.js → chunk-RPX2H2OL.js} +3 -3
  94. package/dist/{chunk-JBIV4FLR.js → chunk-SW4TOSJL.js} +5 -1
  95. package/dist/chunk-SW4TOSJL.js.map +1 -0
  96. package/dist/{chunk-PCQDY6QN.js → chunk-SWFIXQF5.js} +6 -6
  97. package/dist/{chunk-ISSU3OH6.js → chunk-T66OY2U5.js} +7 -7
  98. package/dist/{chunk-6EW2UCVF.js → chunk-TAJZ7GXO.js} +3 -3
  99. package/dist/{chunk-57JTHWLQ.js → chunk-TQGT5BZE.js} +4 -4
  100. package/dist/{chunk-TOV6VMHF.js → chunk-U3RMWOXY.js} +3 -3
  101. package/dist/{chunk-PUJTKLPL.js → chunk-UL7TLJ54.js} +3 -3
  102. package/dist/{chunk-W5LHQXZU.js → chunk-USKHHOIV.js} +2 -2
  103. package/dist/{chunk-J4MN6XIU.js → chunk-UTFY6W6X.js} +2 -2
  104. package/dist/{chunk-P6ASQOZR.js → chunk-VT4DTCK5.js} +2 -2
  105. package/dist/{chunk-A2YW5EMU.js → chunk-X6YRP5EC.js} +5 -5
  106. package/dist/{chunk-FOG7YEJP.js → chunk-XGXVPCYW.js} +3 -3
  107. package/dist/{chunk-5263OEM3.js → chunk-XJP66QEN.js} +2 -2
  108. package/dist/{chunk-5W7YXFV5.js → chunk-XJTGBHK6.js} +67 -22
  109. package/dist/chunk-XJTGBHK6.js.map +1 -0
  110. package/dist/{chunk-OPXR4PB2.js → chunk-XKA6UH5V.js} +2 -2
  111. package/dist/{chunk-XDVVBETV.js → chunk-YHIAWECL.js} +2 -2
  112. package/dist/{chunk-J4UJ5FRV.js → chunk-Z277MC2O.js} +4 -4
  113. package/dist/{chunk-F7ZFRPGQ.js → chunk-ZB2K3FV7.js} +2 -2
  114. package/dist/{chunk-NLKLXXTO.js → chunk-ZQGRZN5L.js} +2 -2
  115. package/dist/classified/index.js +5 -5
  116. package/dist/{classified-marker-BSQHU4JT.js → classified-marker-R37XW5PC.js} +3 -3
  117. package/dist/collection-facade-OPJ3EC4L.js +45 -0
  118. package/dist/{computed-ASBNTLOK.js → computed-HW6IG5UH.js} +3 -3
  119. package/dist/consent/index.js +9 -9
  120. package/dist/cover/index.js +9 -9
  121. package/dist/custody/index.js +12 -12
  122. package/dist/{dead-filter-QKU56XTQ.js → dead-filter-GRT6RAML.js} +2 -2
  123. package/dist/debug/index.js +1 -1
  124. package/dist/{delegation-XWRPYODW.js → delegation-6QRAYSK6.js} +11 -11
  125. package/dist/derivations/index.js +12 -12
  126. package/dist/derive-AAIXSQIE.js +22 -0
  127. package/dist/directory/index.js +10 -10
  128. package/dist/{dispatch-4AP4PUZU.js → dispatch-DR3XITEC.js} +18 -18
  129. package/dist/{dispatch-VR4LRXZ7.js → dispatch-QCF7KPIP.js} +5 -5
  130. package/dist/{enclave-NYPT7WA7.js → enclave-OXZY3NOP.js} +9 -9
  131. package/dist/executor-67NA4KPO.js +29 -0
  132. package/dist/executor-7JDP7UBK.js +9 -0
  133. package/dist/executor-CRH5OB4V.js +9 -0
  134. package/dist/export-accessible-K4GJAU7U.js +23 -0
  135. package/dist/extract-partition-YJFL5OKK.js +38 -0
  136. package/dist/{fanout-sidecar-IWP3R4RC.js → fanout-sidecar-KGQCUJ7P.js} +9 -9
  137. package/dist/find-SVZHMEQI.js +11 -0
  138. package/dist/forget/index.js +9 -9
  139. package/dist/guards/index.js +4 -4
  140. package/dist/history/index.js +13 -13
  141. package/dist/i18n/index.js +14 -14
  142. package/dist/index.d.ts +13 -1
  143. package/dist/index.js +98 -92
  144. package/dist/index.js.map +1 -1
  145. package/dist/indexing/index.js +2 -2
  146. package/dist/introspection/index.js +11 -11
  147. package/dist/issue-64N6OG7U.js +19 -0
  148. package/dist/kernel/errors.d.ts +17 -0
  149. package/dist/kernel/types.d.ts +75 -0
  150. package/dist/{ledger-T5K4P2D7.js → ledger-ZAFULLAF.js} +11 -11
  151. package/dist/liberate-QAUKHU6W.js +25 -0
  152. package/dist/{link-set-76JZ6YB4.js → link-set-LQI2IJX6.js} +11 -11
  153. package/dist/{managed-secret-6YC32VXG.js → managed-secret-7OH7HKXV.js} +10 -10
  154. package/dist/materialized-views/index.js +20 -20
  155. package/dist/{migrate-cek-LBRKYUZZ.js → migrate-cek-QHZ75E6E.js} +2 -2
  156. package/dist/money/index.js +4 -4
  157. package/dist/noydb-ZUS5XAFT.js +86 -0
  158. package/dist/overlay-views/index.js +4 -4
  159. package/dist/periods/index.js +12 -12
  160. package/dist/pod/index.js +57 -57
  161. package/dist/{pod-handle-P6DPBM5U.js → pod-handle-BLOI4IFY.js} +9 -9
  162. package/dist/policy/index.js +10 -10
  163. package/dist/port/to/index.d.ts +2 -0
  164. package/dist/portability/index.js +8 -8
  165. package/dist/{post-register-53O7AJRZ.js → post-register-R33EKJQR.js} +6 -6
  166. package/dist/query/index.js +3 -3
  167. package/dist/reduce/index.js +4 -4
  168. package/dist/register-AYBQNTM3.js +32 -0
  169. package/dist/registry-CQWWOBO4.js +9 -0
  170. package/dist/registry-JCZ4BNLV.js +18 -0
  171. package/dist/registry-JFFENZ44.js +9 -0
  172. package/dist/registry-ZA4HACYR.js +19 -0
  173. package/dist/request-withdrawal-7IKUIAEB.js +31 -0
  174. package/dist/{reveal-XBIMHAXR.js → reveal-PI6ADRQU.js} +6 -6
  175. package/dist/revoke-PUJKRYJF.js +24 -0
  176. package/dist/satellites/index.js +1 -1
  177. package/dist/schema-update/index.js +2 -2
  178. package/dist/sealed-record/index.js +12 -12
  179. package/dist/search/index.js +4 -4
  180. package/dist/{seed-NSNIGYXE.js → seed-MCCGVPRI.js} +12 -12
  181. package/dist/sequence/index.js +9 -9
  182. package/dist/session/index.js +9 -9
  183. package/dist/shadow/index.js +2 -2
  184. package/dist/signer-5TA7FUC3.js +25 -0
  185. package/dist/snapshots/index.js +10 -10
  186. package/dist/{stale-MCS46TFO.js → stale-HZR7745Y.js} +10 -10
  187. package/dist/storage-J2QHNJCB.js +23 -0
  188. package/dist/{store-coordination-provider-6FM26VQM.js → store-coordination-provider-MYIHSZXT.js} +10 -10
  189. package/dist/sync/index.js +10 -10
  190. package/dist/team/index.js +15 -15
  191. package/dist/tiers/index.js +11 -11
  192. package/dist/to/index.js +8 -2
  193. package/dist/to/index.js.map +1 -1
  194. package/dist/transactions/index.js +3 -3
  195. package/dist/util/index.js +1 -1
  196. package/dist/vault-head/index.js +8 -8
  197. package/dist/{verify-WYOFLSNA.js → verify-R6CCBUA3.js} +5 -5
  198. package/dist/walk-3PA4ZOKS.js +21 -0
  199. package/dist/with-cargo/index.d.ts +1 -0
  200. package/dist/with-party/team/roster-epoch.d.ts +71 -0
  201. package/dist/with-party/team/roster-tag.d.ts +1 -1
  202. package/dist/withdraw-accessible-62VI4W7D.js +28 -0
  203. package/package.json +3 -3
  204. package/dist/api-EQYRTZO2.js +0 -20
  205. package/dist/chunk-2LPVI4PX.js.map +0 -1
  206. package/dist/chunk-5W7YXFV5.js.map +0 -1
  207. package/dist/chunk-H3VG6XBC.js.map +0 -1
  208. package/dist/chunk-H4M7ADXY.js.map +0 -1
  209. package/dist/chunk-JBIV4FLR.js.map +0 -1
  210. package/dist/chunk-RK7N4OQ5.js.map +0 -1
  211. package/dist/collection-facade-LG3NYZVB.js +0 -45
  212. package/dist/derive-CXHCY46K.js +0 -22
  213. package/dist/executor-3KFRQETS.js +0 -29
  214. package/dist/executor-AFHQYRAU.js +0 -9
  215. package/dist/executor-YYDW6XQI.js +0 -9
  216. package/dist/export-accessible-BX2ILB4C.js +0 -23
  217. package/dist/extract-partition-UPOVITFI.js +0 -38
  218. package/dist/find-SZBL2HPB.js +0 -11
  219. package/dist/issue-G53NB6EW.js +0 -19
  220. package/dist/liberate-VEOZRESE.js +0 -25
  221. package/dist/noydb-4VV2ZGLZ.js +0 -86
  222. package/dist/register-6TCBR6XD.js +0 -32
  223. package/dist/registry-DH2L4O2V.js +0 -18
  224. package/dist/registry-IWFMXCHX.js +0 -9
  225. package/dist/registry-Q3FG3OAX.js +0 -9
  226. package/dist/registry-YC3IFG3A.js +0 -19
  227. package/dist/request-withdrawal-NM5VYR6F.js +0 -31
  228. package/dist/revoke-MJNYWO72.js +0 -24
  229. package/dist/signer-6XVS2AU3.js +0 -25
  230. package/dist/storage-ZXUT476I.js +0 -23
  231. package/dist/walk-JNEOYCAU.js +0 -21
  232. package/dist/withdraw-accessible-ILTSXTIE.js +0 -28
  233. /package/dist/{api-EQYRTZO2.js.map → api-GJQF7OAJ.js.map} +0 -0
  234. /package/dist/{backup-Z7ZBTAQ6.js.map → backup-QZQEP5RO.js.map} +0 -0
  235. /package/dist/{chunk-AB5P32RE.js.map → chunk-2DGBRE4K.js.map} +0 -0
  236. /package/dist/{chunk-XVU7J43V.js.map → chunk-2E2LT37H.js.map} +0 -0
  237. /package/dist/{chunk-4LPF226H.js.map → chunk-2MQ2D5OZ.js.map} +0 -0
  238. /package/dist/{chunk-DBNYPLWY.js.map → chunk-357ECVLE.js.map} +0 -0
  239. /package/dist/{chunk-SHILAQH5.js.map → chunk-3GIA3HJ2.js.map} +0 -0
  240. /package/dist/{chunk-QGJ4XIA7.js.map → chunk-3SWP2FYA.js.map} +0 -0
  241. /package/dist/{chunk-N4CNVSUF.js.map → chunk-4RUFYGWG.js.map} +0 -0
  242. /package/dist/{chunk-4G25SDQL.js.map → chunk-4U52PMEL.js.map} +0 -0
  243. /package/dist/{chunk-H7HP56F6.js.map → chunk-5EC7X5QA.js.map} +0 -0
  244. /package/dist/{chunk-WK5FSW7T.js.map → chunk-5NKHCJU5.js.map} +0 -0
  245. /package/dist/{chunk-PQ6Z2TAP.js.map → chunk-5UKIZIO3.js.map} +0 -0
  246. /package/dist/{chunk-QHJKK77B.js.map → chunk-5W5CEHLA.js.map} +0 -0
  247. /package/dist/{chunk-YPSOHDNC.js.map → chunk-65ZYRK7O.js.map} +0 -0
  248. /package/dist/{chunk-4ZPE6SKS.js.map → chunk-75WNTBZL.js.map} +0 -0
  249. /package/dist/{chunk-OWLVBOWO.js.map → chunk-7XT7KZTN.js.map} +0 -0
  250. /package/dist/{chunk-QI5NWLVW.js.map → chunk-AHIIBDNH.js.map} +0 -0
  251. /package/dist/{chunk-XSN63FUS.js.map → chunk-AW4KTQA4.js.map} +0 -0
  252. /package/dist/{chunk-KDJGJR7F.js.map → chunk-CWFH36SI.js.map} +0 -0
  253. /package/dist/{chunk-X67FCULK.js.map → chunk-DIVY2CJZ.js.map} +0 -0
  254. /package/dist/{chunk-Z2PWOSCJ.js.map → chunk-DNMTN46H.js.map} +0 -0
  255. /package/dist/{chunk-HTGRQZFB.js.map → chunk-DZPMKY3J.js.map} +0 -0
  256. /package/dist/{chunk-XJ3FEKEY.js.map → chunk-FKQCC4C5.js.map} +0 -0
  257. /package/dist/{chunk-E6YA6UAP.js.map → chunk-FLRLZ4XZ.js.map} +0 -0
  258. /package/dist/{chunk-ALUNQEBY.js.map → chunk-FN26SFGH.js.map} +0 -0
  259. /package/dist/{chunk-TVIFAHZR.js.map → chunk-FPN5D4JX.js.map} +0 -0
  260. /package/dist/{chunk-VTG7327U.js.map → chunk-FRIVOR5N.js.map} +0 -0
  261. /package/dist/{chunk-3QARDAYW.js.map → chunk-FYT3DXPN.js.map} +0 -0
  262. /package/dist/{chunk-YMLQBZFJ.js.map → chunk-FZWAGG5T.js.map} +0 -0
  263. /package/dist/{chunk-CBRS2NEK.js.map → chunk-GHADG5QZ.js.map} +0 -0
  264. /package/dist/{chunk-3L2MVE36.js.map → chunk-GKOJR53Y.js.map} +0 -0
  265. /package/dist/{chunk-Y6GZ2P4M.js.map → chunk-GM4IM7TC.js.map} +0 -0
  266. /package/dist/{chunk-CN6B5PEN.js.map → chunk-H5GVPOB4.js.map} +0 -0
  267. /package/dist/{chunk-467SKJ65.js.map → chunk-HOIWW2LV.js.map} +0 -0
  268. /package/dist/{chunk-ALB64CZM.js.map → chunk-HS3LEVT4.js.map} +0 -0
  269. /package/dist/{chunk-YXA2TCTZ.js.map → chunk-I5LSKXT6.js.map} +0 -0
  270. /package/dist/{chunk-S35S77YU.js.map → chunk-IAHDSFFA.js.map} +0 -0
  271. /package/dist/{chunk-X62MEF2O.js.map → chunk-IRHIA3AL.js.map} +0 -0
  272. /package/dist/{chunk-F23WQK3G.js.map → chunk-IS5LFHV2.js.map} +0 -0
  273. /package/dist/{chunk-POS53FG6.js.map → chunk-IZTU6RKH.js.map} +0 -0
  274. /package/dist/{chunk-VAG47QHV.js.map → chunk-J6FXVDKC.js.map} +0 -0
  275. /package/dist/{chunk-2GXEQUEX.js.map → chunk-JFSUYGNE.js.map} +0 -0
  276. /package/dist/{chunk-LR4Z47QD.js.map → chunk-JILOSL4O.js.map} +0 -0
  277. /package/dist/{chunk-RC4BROYR.js.map → chunk-JRWLUWDM.js.map} +0 -0
  278. /package/dist/{chunk-Z2WK53N6.js.map → chunk-JUBWUJY5.js.map} +0 -0
  279. /package/dist/{chunk-JVLSU7S2.js.map → chunk-JY4U6CYV.js.map} +0 -0
  280. /package/dist/{chunk-3SMSERQU.js.map → chunk-KKZPQLDH.js.map} +0 -0
  281. /package/dist/{chunk-WLLUM35R.js.map → chunk-KQIDBIZL.js.map} +0 -0
  282. /package/dist/{chunk-LKFKXS5K.js.map → chunk-KZTPL7NL.js.map} +0 -0
  283. /package/dist/{chunk-S2VG3ABP.js.map → chunk-LAI7ENPW.js.map} +0 -0
  284. /package/dist/{chunk-ZO252Q5S.js.map → chunk-LUVGSKXE.js.map} +0 -0
  285. /package/dist/{chunk-PGFKIOR3.js.map → chunk-MENI33ZV.js.map} +0 -0
  286. /package/dist/{chunk-MTBXJAS4.js.map → chunk-MOQ6OGKS.js.map} +0 -0
  287. /package/dist/{chunk-5ACAVJUI.js.map → chunk-MTTPHBIE.js.map} +0 -0
  288. /package/dist/{chunk-T3PHCEN4.js.map → chunk-MU74BYOD.js.map} +0 -0
  289. /package/dist/{chunk-DFAUMLD7.js.map → chunk-MV2OEK3K.js.map} +0 -0
  290. /package/dist/{chunk-LF6DMX4C.js.map → chunk-NMDMSHBF.js.map} +0 -0
  291. /package/dist/{chunk-225O5CXQ.js.map → chunk-O3SNM66K.js.map} +0 -0
  292. /package/dist/{chunk-YCSM3GZU.js.map → chunk-OEJ4R52I.js.map} +0 -0
  293. /package/dist/{chunk-IESNYJXZ.js.map → chunk-OKCQNMO6.js.map} +0 -0
  294. /package/dist/{chunk-H36KSN6X.js.map → chunk-OLUTCM23.js.map} +0 -0
  295. /package/dist/{chunk-RDHUZ674.js.map → chunk-OQDHIAR2.js.map} +0 -0
  296. /package/dist/{chunk-DKWPJOYH.js.map → chunk-P22XPNFW.js.map} +0 -0
  297. /package/dist/{chunk-GK4DRVUD.js.map → chunk-P2RJAVMR.js.map} +0 -0
  298. /package/dist/{chunk-UCUALOSM.js.map → chunk-P7KJME6C.js.map} +0 -0
  299. /package/dist/{chunk-HM4JSXX2.js.map → chunk-PCIBCL26.js.map} +0 -0
  300. /package/dist/{chunk-4A4TYISP.js.map → chunk-PV7XXAXK.js.map} +0 -0
  301. /package/dist/{chunk-5AFMP532.js.map → chunk-Q2OAAREU.js.map} +0 -0
  302. /package/dist/{chunk-Z7ZXZL6Y.js.map → chunk-Q2ZN5DWZ.js.map} +0 -0
  303. /package/dist/{chunk-L6GTLZRK.js.map → chunk-QJLOWGOU.js.map} +0 -0
  304. /package/dist/{chunk-7LYUJNU3.js.map → chunk-QOHGWFAW.js.map} +0 -0
  305. /package/dist/{chunk-6FOGTKBY.js.map → chunk-RCONOOVF.js.map} +0 -0
  306. /package/dist/{chunk-VFIWDPXZ.js.map → chunk-RPX2H2OL.js.map} +0 -0
  307. /package/dist/{chunk-PCQDY6QN.js.map → chunk-SWFIXQF5.js.map} +0 -0
  308. /package/dist/{chunk-ISSU3OH6.js.map → chunk-T66OY2U5.js.map} +0 -0
  309. /package/dist/{chunk-6EW2UCVF.js.map → chunk-TAJZ7GXO.js.map} +0 -0
  310. /package/dist/{chunk-57JTHWLQ.js.map → chunk-TQGT5BZE.js.map} +0 -0
  311. /package/dist/{chunk-TOV6VMHF.js.map → chunk-U3RMWOXY.js.map} +0 -0
  312. /package/dist/{chunk-PUJTKLPL.js.map → chunk-UL7TLJ54.js.map} +0 -0
  313. /package/dist/{chunk-W5LHQXZU.js.map → chunk-USKHHOIV.js.map} +0 -0
  314. /package/dist/{chunk-J4MN6XIU.js.map → chunk-UTFY6W6X.js.map} +0 -0
  315. /package/dist/{chunk-P6ASQOZR.js.map → chunk-VT4DTCK5.js.map} +0 -0
  316. /package/dist/{chunk-A2YW5EMU.js.map → chunk-X6YRP5EC.js.map} +0 -0
  317. /package/dist/{chunk-FOG7YEJP.js.map → chunk-XGXVPCYW.js.map} +0 -0
  318. /package/dist/{chunk-5263OEM3.js.map → chunk-XJP66QEN.js.map} +0 -0
  319. /package/dist/{chunk-OPXR4PB2.js.map → chunk-XKA6UH5V.js.map} +0 -0
  320. /package/dist/{chunk-XDVVBETV.js.map → chunk-YHIAWECL.js.map} +0 -0
  321. /package/dist/{chunk-J4UJ5FRV.js.map → chunk-Z277MC2O.js.map} +0 -0
  322. /package/dist/{chunk-F7ZFRPGQ.js.map → chunk-ZB2K3FV7.js.map} +0 -0
  323. /package/dist/{chunk-NLKLXXTO.js.map → chunk-ZQGRZN5L.js.map} +0 -0
  324. /package/dist/{classified-marker-BSQHU4JT.js.map → classified-marker-R37XW5PC.js.map} +0 -0
  325. /package/dist/{collection-facade-LG3NYZVB.js.map → collection-facade-OPJ3EC4L.js.map} +0 -0
  326. /package/dist/{computed-ASBNTLOK.js.map → computed-HW6IG5UH.js.map} +0 -0
  327. /package/dist/{dead-filter-QKU56XTQ.js.map → dead-filter-GRT6RAML.js.map} +0 -0
  328. /package/dist/{delegation-XWRPYODW.js.map → delegation-6QRAYSK6.js.map} +0 -0
  329. /package/dist/{derive-CXHCY46K.js.map → derive-AAIXSQIE.js.map} +0 -0
  330. /package/dist/{dispatch-4AP4PUZU.js.map → dispatch-DR3XITEC.js.map} +0 -0
  331. /package/dist/{dispatch-VR4LRXZ7.js.map → dispatch-QCF7KPIP.js.map} +0 -0
  332. /package/dist/{enclave-NYPT7WA7.js.map → enclave-OXZY3NOP.js.map} +0 -0
  333. /package/dist/{executor-3KFRQETS.js.map → executor-67NA4KPO.js.map} +0 -0
  334. /package/dist/{executor-AFHQYRAU.js.map → executor-7JDP7UBK.js.map} +0 -0
  335. /package/dist/{executor-YYDW6XQI.js.map → executor-CRH5OB4V.js.map} +0 -0
  336. /package/dist/{export-accessible-BX2ILB4C.js.map → export-accessible-K4GJAU7U.js.map} +0 -0
  337. /package/dist/{extract-partition-UPOVITFI.js.map → extract-partition-YJFL5OKK.js.map} +0 -0
  338. /package/dist/{fanout-sidecar-IWP3R4RC.js.map → fanout-sidecar-KGQCUJ7P.js.map} +0 -0
  339. /package/dist/{find-SZBL2HPB.js.map → find-SVZHMEQI.js.map} +0 -0
  340. /package/dist/{issue-G53NB6EW.js.map → issue-64N6OG7U.js.map} +0 -0
  341. /package/dist/{ledger-T5K4P2D7.js.map → ledger-ZAFULLAF.js.map} +0 -0
  342. /package/dist/{liberate-VEOZRESE.js.map → liberate-QAUKHU6W.js.map} +0 -0
  343. /package/dist/{link-set-76JZ6YB4.js.map → link-set-LQI2IJX6.js.map} +0 -0
  344. /package/dist/{managed-secret-6YC32VXG.js.map → managed-secret-7OH7HKXV.js.map} +0 -0
  345. /package/dist/{migrate-cek-LBRKYUZZ.js.map → migrate-cek-QHZ75E6E.js.map} +0 -0
  346. /package/dist/{noydb-4VV2ZGLZ.js.map → noydb-ZUS5XAFT.js.map} +0 -0
  347. /package/dist/{pod-handle-P6DPBM5U.js.map → pod-handle-BLOI4IFY.js.map} +0 -0
  348. /package/dist/{post-register-53O7AJRZ.js.map → post-register-R33EKJQR.js.map} +0 -0
  349. /package/dist/{register-6TCBR6XD.js.map → register-AYBQNTM3.js.map} +0 -0
  350. /package/dist/{registry-DH2L4O2V.js.map → registry-CQWWOBO4.js.map} +0 -0
  351. /package/dist/{registry-IWFMXCHX.js.map → registry-JCZ4BNLV.js.map} +0 -0
  352. /package/dist/{registry-Q3FG3OAX.js.map → registry-JFFENZ44.js.map} +0 -0
  353. /package/dist/{registry-YC3IFG3A.js.map → registry-ZA4HACYR.js.map} +0 -0
  354. /package/dist/{request-withdrawal-NM5VYR6F.js.map → request-withdrawal-7IKUIAEB.js.map} +0 -0
  355. /package/dist/{reveal-XBIMHAXR.js.map → reveal-PI6ADRQU.js.map} +0 -0
  356. /package/dist/{revoke-MJNYWO72.js.map → revoke-PUJKRYJF.js.map} +0 -0
  357. /package/dist/{seed-NSNIGYXE.js.map → seed-MCCGVPRI.js.map} +0 -0
  358. /package/dist/{signer-6XVS2AU3.js.map → signer-5TA7FUC3.js.map} +0 -0
  359. /package/dist/{stale-MCS46TFO.js.map → stale-HZR7745Y.js.map} +0 -0
  360. /package/dist/{storage-ZXUT476I.js.map → storage-J2QHNJCB.js.map} +0 -0
  361. /package/dist/{store-coordination-provider-6FM26VQM.js.map → store-coordination-provider-MYIHSZXT.js.map} +0 -0
  362. /package/dist/{verify-WYOFLSNA.js.map → verify-R6CCBUA3.js.map} +0 -0
  363. /package/dist/{walk-JNEOYCAU.js.map → walk-3PA4ZOKS.js.map} +0 -0
  364. /package/dist/{withdraw-accessible-ILTSXTIE.js.map → withdraw-accessible-62VI4W7D.js.map} +0 -0
@@ -2,7 +2,7 @@ import {
2
2
  MemoryDeviceSeal,
3
3
  beginEchoUnlock,
4
4
  withTeam
5
- } from "../chunk-X62MEF2O.js";
5
+ } from "../chunk-IRHIA3AL.js";
6
6
  import {
7
7
  NO_TEAM,
8
8
  burnPaperRecoveryEntry,
@@ -31,8 +31,8 @@ import {
31
31
  unwrapMagicLinkGrant,
32
32
  updateAuthenticator,
33
33
  writeMagicLinkGrant
34
- } from "../chunk-H4M7ADXY.js";
35
- import "../chunk-PQ6Z2TAP.js";
34
+ } from "../chunk-7PC3DRG7.js";
35
+ import "../chunk-5UKIZIO3.js";
36
36
  import {
37
37
  buildEchoBlock,
38
38
  buildRecipientKeyringFile,
@@ -53,21 +53,21 @@ import {
53
53
  updateKeyringIdentity,
54
54
  verifyPrompt,
55
55
  verifyTypedEcho
56
- } from "../chunk-5W7YXFV5.js";
57
- import "../chunk-DFAUMLD7.js";
58
- import "../chunk-HTGRQZFB.js";
59
- import "../chunk-POS53FG6.js";
60
- import "../chunk-2LPVI4PX.js";
61
- import "../chunk-N4CNVSUF.js";
62
- import "../chunk-FOG7YEJP.js";
63
- import "../chunk-KDJGJR7F.js";
64
- import "../chunk-LKFKXS5K.js";
56
+ } from "../chunk-XJTGBHK6.js";
57
+ import "../chunk-MV2OEK3K.js";
58
+ import "../chunk-DZPMKY3J.js";
59
+ import "../chunk-IZTU6RKH.js";
60
+ import "../chunk-DOPZWTMJ.js";
61
+ import "../chunk-4RUFYGWG.js";
62
+ import "../chunk-XGXVPCYW.js";
63
+ import "../chunk-CWFH36SI.js";
64
+ import "../chunk-KZTPL7NL.js";
65
65
  import "../chunk-LP7BEXCT.js";
66
- import "../chunk-W5LHQXZU.js";
67
- import "../chunk-RK7N4OQ5.js";
66
+ import "../chunk-USKHHOIV.js";
67
+ import "../chunk-N4CHCXDL.js";
68
68
  import {
69
69
  TeamNotEnabledError
70
- } from "../chunk-JBIV4FLR.js";
70
+ } from "../chunk-SW4TOSJL.js";
71
71
  import "../chunk-PZ5AY32C.js";
72
72
  export {
73
73
  MemoryDeviceSeal,
@@ -11,20 +11,20 @@ import {
11
11
  putAtTier,
12
12
  syncDerivedOutputs,
13
13
  withTiers
14
- } from "../chunk-WK5FSW7T.js";
15
- import "../chunk-HTGRQZFB.js";
16
- import "../chunk-POS53FG6.js";
17
- import "../chunk-2LPVI4PX.js";
18
- import "../chunk-N4CNVSUF.js";
19
- import "../chunk-FOG7YEJP.js";
20
- import "../chunk-KDJGJR7F.js";
21
- import "../chunk-LKFKXS5K.js";
14
+ } from "../chunk-5NKHCJU5.js";
15
+ import "../chunk-DZPMKY3J.js";
16
+ import "../chunk-IZTU6RKH.js";
17
+ import "../chunk-DOPZWTMJ.js";
18
+ import "../chunk-4RUFYGWG.js";
19
+ import "../chunk-XGXVPCYW.js";
20
+ import "../chunk-CWFH36SI.js";
21
+ import "../chunk-KZTPL7NL.js";
22
22
  import "../chunk-LP7BEXCT.js";
23
- import "../chunk-W5LHQXZU.js";
24
- import "../chunk-RK7N4OQ5.js";
23
+ import "../chunk-USKHHOIV.js";
24
+ import "../chunk-N4CHCXDL.js";
25
25
  import {
26
26
  TiersNotEnabledError
27
- } from "../chunk-JBIV4FLR.js";
27
+ } from "../chunk-SW4TOSJL.js";
28
28
  import "../chunk-PZ5AY32C.js";
29
29
  export {
30
30
  NO_TIERS,
package/dist/to/index.js CHANGED
@@ -1,11 +1,15 @@
1
+ import {
2
+ NOYDB_ENVELOPE_GENERATION
3
+ } from "../chunk-N4CHCXDL.js";
1
4
  import {
2
5
  ConflictError,
3
6
  DuplicateStoreKindError,
4
7
  NetworkError,
5
8
  PodVersionConflictError,
6
9
  StoreCapabilityError,
7
- UnknownStoreKindError
8
- } from "../chunk-JBIV4FLR.js";
10
+ UnknownStoreKindError,
11
+ isConflictError
12
+ } from "../chunk-SW4TOSJL.js";
9
13
  import "../chunk-PZ5AY32C.js";
10
14
 
11
15
  // src/port/to/locator.ts
@@ -39,11 +43,13 @@ function createStoreLocator() {
39
43
  export {
40
44
  ConflictError,
41
45
  DuplicateStoreKindError,
46
+ NOYDB_ENVELOPE_GENERATION,
42
47
  NetworkError,
43
48
  PodVersionConflictError,
44
49
  StoreCapabilityError,
45
50
  UnknownStoreKindError,
46
51
  createStoreLocator,
52
+ isConflictError,
47
53
  isPodStore
48
54
  };
49
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/port/to/locator.ts"],"sourcesContent":["/**\n * The Locator seam (#945 Task 1): a serializable, CREDENTIALLESS store\n * descriptor plus a factory registry that reconstructs a `NoydbStore` from\n * data.\n *\n * A `StoreDescriptor` is the pod-portable \"what store and where\" — kind,\n * broad topology class, and a kind-specific serializable address/options\n * bag. It is deliberately dumb data: no field on it is ever typed as a\n * function, a `StoreCredentialSource`, or a `StoreCredentials` value, so a\n * descriptor can be written into a pod / manifest / sync payload without an\n * audit for leaked secrets. Anything that must resolve device-side or\n * user-side — a short-lived credential, a device-local directory override,\n * a mounted drive handle — travels out-of-band via `resolve()`'s `opts`,\n * never through the descriptor itself.\n *\n * This module is pure TypeScript: no imports beyond the kernel's own types\n * and errors, no Node built-ins, no crypto. It adds zero runtime\n * dependencies to `@noy-db/hub/to`.\n */\nimport type { NoydbStore, NoydbPodStore, StoreCredentialSource } from '../../kernel/types.js'\nimport { DuplicateStoreKindError, UnknownStoreKindError } from '../../kernel/errors.js'\n\n/**\n * The broad topology bucket a store descriptor's kind falls into —\n * used by callers/UI to group or filter descriptors without knowing every\n * concrete `kind` string.\n */\nexport type StoreClass = 'local' | 'browser' | 'lan' | 'cloud'\n\n/**\n * A serializable, CREDENTIALLESS description of a store instance: enough\n * data to reconstruct a `NoydbStore` via a registered `StoreFactory`, and\n * safe to persist or transmit as-is.\n *\n * CREDENTIALLESS BY CONSTRUCTION: no field here may be typed as a function,\n * a `StoreCredentialSource`, or a `StoreCredentials` value. Credentials\n * NEVER ride the descriptor — they are supplied separately (as a\n * `StoreCredentialSource`) to `StoreLocator.resolve()` at resolve time.\n */\nexport interface StoreDescriptor {\n /** The registered factory key (e.g. `'file'`, `'aws-s3'`, `'webdav'`). */\n readonly kind: string\n /** The broad topology bucket this kind falls into. */\n readonly class: StoreClass\n /** Kind-specific serializable location (e.g. `{ dir }`, `{ bucket, region }`). */\n readonly address: unknown\n /** Kind-specific serializable tuning options. */\n readonly options?: unknown\n}\n\n/**\n * A kind-specific, device-local supplement to a `StoreDescriptor` — a\n * directory override, a mount point, a drive handle — that is resolved\n * device-side and never carried inside a pod alongside the descriptor.\n */\nexport type StoreBinding = unknown\n\n/**\n * Either store shape a factory may produce: the 6-method KV `NoydbStore`, or\n * the whole-vault `NoydbPodStore` implemented by `to-drive` / `to-icloud`.\n *\n * The two are DISJOINT, not sub/supertypes — a pod store has none of the six\n * KV methods — which is why moving between them needs a double cast and why\n * `isPodStore()` exists to narrow instead.\n */\nexport type AnyNoydbStore = NoydbStore | NoydbPodStore\n\n/**\n * Narrow an `AnyNoydbStore` to the pod shape. Discriminates on the\n * `kind: 'bundle'` tag `NoydbPodStore` carries for exactly this purpose; a\n * `NoydbStore` has no `kind` field at all.\n *\n * Use this at a `resolve()` boundary instead of casting — a store resolved\n * from a descriptor read out of a pod is only known to be one of the two\n * shapes at runtime.\n */\nexport function isPodStore(store: AnyNoydbStore): store is NoydbPodStore {\n return (store as NoydbPodStore).kind === 'bundle'\n}\n\n/**\n * Reconstructs a live store from a `StoreDescriptor`. Registered against a\n * `StoreLocator` under the descriptor's `kind`.\n *\n * The type parameter says WHICH shape this factory builds. It defaults to\n * `NoydbStore`, so a bare `StoreFactory` means exactly what it always has;\n * a pod-store factory declares `StoreFactory<NoydbPodStore>` and registers\n * without a cast (#988).\n */\nexport type StoreFactory<S extends AnyNoydbStore = NoydbStore> = (\n descriptor: StoreDescriptor,\n opts: { binding?: StoreBinding; credentials?: StoreCredentialSource },\n) => S | Promise<S>\n\n/** A registry of `StoreFactory`s, keyed by `StoreDescriptor.kind`. */\nexport interface StoreLocator {\n /**\n * Register a factory for `kind`. Throws if `kind` is already registered.\n *\n * Accepts a factory building EITHER store shape — `S` is inferred from the\n * factory's own return type, so a `NoydbPodStore` factory needs no cast.\n */\n register<S extends AnyNoydbStore>(kind: string, factory: StoreFactory<S>): void\n /**\n * Resolve `descriptor` to a live store via its kind's registered factory.\n *\n * Returns `NoydbStore`. If the `kind` was registered with a pod-store\n * factory, the resolved value is really a `NoydbPodStore`: this signature\n * is the seam's remaining unsoundness, kept because widening it to\n * `AnyNoydbStore` would break every existing caller. Where the descriptor's\n * kind is not statically known, prefer `resolveAny()` and `isPodStore()`.\n */\n resolve(\n descriptor: StoreDescriptor,\n opts?: { binding?: StoreBinding; credentials?: StoreCredentialSource },\n ): NoydbStore | Promise<NoydbStore>\n /**\n * As `resolve()`, but typed honestly: the registry is keyed by a runtime\n * `kind` string, so which of the two shapes comes back is not knowable\n * statically. Narrow the result with `isPodStore()`.\n */\n resolveAny(\n descriptor: StoreDescriptor,\n opts?: { binding?: StoreBinding; credentials?: StoreCredentialSource },\n ): AnyNoydbStore | Promise<AnyNoydbStore>\n}\n\n/**\n * Creates a fresh, empty `StoreLocator`.\n *\n * DUPLICATE REGISTRATION: `register()` throws if `kind` is already\n * registered, rather than silently overwriting it (last-wins). A\n * composition root that registers the same kind twice is almost always a\n * mistake — a copy-pasted setup block, two satellite packages fighting\n * over the same kind string — and last-wins would hide it behind whichever\n * registration happened to run last. This mirrors the\n * `DuplicateBehaviorNameError` philosophy (#947): fail loudly at the\n * mistake's source instead of silently at some unrelated `resolve()` call\n * later.\n */\nexport function createStoreLocator(): StoreLocator {\n const factories = new Map<string, StoreFactory<AnyNoydbStore>>()\n\n function lookup(kind: string): StoreFactory<AnyNoydbStore> {\n const factory = factories.get(kind)\n if (!factory) {\n throw new UnknownStoreKindError(kind, [...factories.keys()].sort())\n }\n return factory\n }\n\n return {\n register(kind, factory) {\n if (factories.has(kind)) {\n throw new DuplicateStoreKindError(kind)\n }\n factories.set(kind, factory)\n },\n resolve(descriptor, opts = {}) {\n // The one place the seam's `resolve(): NoydbStore` signature is paid\n // for. A pod-store `kind` really returns a `NoydbPodStore`; the registry\n // is keyed by a runtime string so nothing here can prove otherwise.\n // Concentrated in the module that owns the invariant rather than\n // duplicated as `as unknown as StoreFactory` in every pod-store package\n // (#988). `resolveAny()` is the honest signature over the same call.\n return lookup(descriptor.kind)(descriptor, opts) as NoydbStore | Promise<NoydbStore>\n },\n resolveAny(descriptor, opts = {}) {\n return lookup(descriptor.kind)(descriptor, opts)\n },\n }\n}\n"],"mappings":";;;;;;;;;;;AA4EO,SAAS,WAAW,OAA8C;AACvE,SAAQ,MAAwB,SAAS;AAC3C;AA8DO,SAAS,qBAAmC;AACjD,QAAM,YAAY,oBAAI,IAAyC;AAE/D,WAAS,OAAO,MAA2C;AACzD,UAAM,UAAU,UAAU,IAAI,IAAI;AAClC,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,sBAAsB,MAAM,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE,KAAK,CAAC;AAAA,IACpE;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,SAAS,MAAM,SAAS;AACtB,UAAI,UAAU,IAAI,IAAI,GAAG;AACvB,cAAM,IAAI,wBAAwB,IAAI;AAAA,MACxC;AACA,gBAAU,IAAI,MAAM,OAAO;AAAA,IAC7B;AAAA,IACA,QAAQ,YAAY,OAAO,CAAC,GAAG;AAO7B,aAAO,OAAO,WAAW,IAAI,EAAE,YAAY,IAAI;AAAA,IACjD;AAAA,IACA,WAAW,YAAY,OAAO,CAAC,GAAG;AAChC,aAAO,OAAO,WAAW,IAAI,EAAE,YAAY,IAAI;AAAA,IACjD;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/port/to/locator.ts"],"sourcesContent":["/**\n * The Locator seam (#945 Task 1): a serializable, CREDENTIALLESS store\n * descriptor plus a factory registry that reconstructs a `NoydbStore` from\n * data.\n *\n * A `StoreDescriptor` is the pod-portable \"what store and where\" — kind,\n * broad topology class, and a kind-specific serializable address/options\n * bag. It is deliberately dumb data: no field on it is ever typed as a\n * function, a `StoreCredentialSource`, or a `StoreCredentials` value, so a\n * descriptor can be written into a pod / manifest / sync payload without an\n * audit for leaked secrets. Anything that must resolve device-side or\n * user-side — a short-lived credential, a device-local directory override,\n * a mounted drive handle — travels out-of-band via `resolve()`'s `opts`,\n * never through the descriptor itself.\n *\n * This module is pure TypeScript: no imports beyond the kernel's own types\n * and errors, no Node built-ins, no crypto. It adds zero runtime\n * dependencies to `@noy-db/hub/to`.\n */\nimport type { NoydbStore, NoydbPodStore, StoreCredentialSource } from '../../kernel/types.js'\nimport { DuplicateStoreKindError, UnknownStoreKindError } from '../../kernel/errors.js'\n\n/**\n * The broad topology bucket a store descriptor's kind falls into —\n * used by callers/UI to group or filter descriptors without knowing every\n * concrete `kind` string.\n */\nexport type StoreClass = 'local' | 'browser' | 'lan' | 'cloud'\n\n/**\n * A serializable, CREDENTIALLESS description of a store instance: enough\n * data to reconstruct a `NoydbStore` via a registered `StoreFactory`, and\n * safe to persist or transmit as-is.\n *\n * CREDENTIALLESS BY CONSTRUCTION: no field here may be typed as a function,\n * a `StoreCredentialSource`, or a `StoreCredentials` value. Credentials\n * NEVER ride the descriptor — they are supplied separately (as a\n * `StoreCredentialSource`) to `StoreLocator.resolve()` at resolve time.\n */\nexport interface StoreDescriptor {\n /** The registered factory key (e.g. `'file'`, `'aws-s3'`, `'webdav'`). */\n readonly kind: string\n /** The broad topology bucket this kind falls into. */\n readonly class: StoreClass\n /** Kind-specific serializable location (e.g. `{ dir }`, `{ bucket, region }`). */\n readonly address: unknown\n /** Kind-specific serializable tuning options. */\n readonly options?: unknown\n}\n\n/**\n * A kind-specific, device-local supplement to a `StoreDescriptor` — a\n * directory override, a mount point, a drive handle — that is resolved\n * device-side and never carried inside a pod alongside the descriptor.\n */\nexport type StoreBinding = unknown\n\n/**\n * Either store shape a factory may produce: the 6-method KV `NoydbStore`, or\n * the whole-vault `NoydbPodStore` implemented by `to-drive` / `to-icloud`.\n *\n * The two are DISJOINT, not sub/supertypes — a pod store has none of the six\n * KV methods — which is why moving between them needs a double cast and why\n * `isPodStore()` exists to narrow instead.\n */\nexport type AnyNoydbStore = NoydbStore | NoydbPodStore\n\n/**\n * Narrow an `AnyNoydbStore` to the pod shape. Discriminates on the\n * `kind: 'bundle'` tag `NoydbPodStore` carries for exactly this purpose; a\n * `NoydbStore` has no `kind` field at all.\n *\n * Use this at a `resolve()` boundary instead of casting — a store resolved\n * from a descriptor read out of a pod is only known to be one of the two\n * shapes at runtime.\n */\nexport function isPodStore(store: AnyNoydbStore): store is NoydbPodStore {\n return (store as NoydbPodStore).kind === 'bundle'\n}\n\n/**\n * Reconstructs a live store from a `StoreDescriptor`. Registered against a\n * `StoreLocator` under the descriptor's `kind`.\n *\n * The type parameter says WHICH shape this factory builds. It defaults to\n * `NoydbStore`, so a bare `StoreFactory` means exactly what it always has;\n * a pod-store factory declares `StoreFactory<NoydbPodStore>` and registers\n * without a cast (#988).\n */\nexport type StoreFactory<S extends AnyNoydbStore = NoydbStore> = (\n descriptor: StoreDescriptor,\n opts: { binding?: StoreBinding; credentials?: StoreCredentialSource },\n) => S | Promise<S>\n\n/** A registry of `StoreFactory`s, keyed by `StoreDescriptor.kind`. */\nexport interface StoreLocator {\n /**\n * Register a factory for `kind`. Throws if `kind` is already registered.\n *\n * Accepts a factory building EITHER store shape — `S` is inferred from the\n * factory's own return type, so a `NoydbPodStore` factory needs no cast.\n */\n register<S extends AnyNoydbStore>(kind: string, factory: StoreFactory<S>): void\n /**\n * Resolve `descriptor` to a live store via its kind's registered factory.\n *\n * Returns `NoydbStore`. If the `kind` was registered with a pod-store\n * factory, the resolved value is really a `NoydbPodStore`: this signature\n * is the seam's remaining unsoundness, kept because widening it to\n * `AnyNoydbStore` would break every existing caller. Where the descriptor's\n * kind is not statically known, prefer `resolveAny()` and `isPodStore()`.\n */\n resolve(\n descriptor: StoreDescriptor,\n opts?: { binding?: StoreBinding; credentials?: StoreCredentialSource },\n ): NoydbStore | Promise<NoydbStore>\n /**\n * As `resolve()`, but typed honestly: the registry is keyed by a runtime\n * `kind` string, so which of the two shapes comes back is not knowable\n * statically. Narrow the result with `isPodStore()`.\n */\n resolveAny(\n descriptor: StoreDescriptor,\n opts?: { binding?: StoreBinding; credentials?: StoreCredentialSource },\n ): AnyNoydbStore | Promise<AnyNoydbStore>\n}\n\n/**\n * Creates a fresh, empty `StoreLocator`.\n *\n * DUPLICATE REGISTRATION: `register()` throws if `kind` is already\n * registered, rather than silently overwriting it (last-wins). A\n * composition root that registers the same kind twice is almost always a\n * mistake — a copy-pasted setup block, two satellite packages fighting\n * over the same kind string — and last-wins would hide it behind whichever\n * registration happened to run last. This mirrors the\n * `DuplicateBehaviorNameError` philosophy (#947): fail loudly at the\n * mistake's source instead of silently at some unrelated `resolve()` call\n * later.\n */\nexport function createStoreLocator(): StoreLocator {\n const factories = new Map<string, StoreFactory<AnyNoydbStore>>()\n\n function lookup(kind: string): StoreFactory<AnyNoydbStore> {\n const factory = factories.get(kind)\n if (!factory) {\n throw new UnknownStoreKindError(kind, [...factories.keys()].sort())\n }\n return factory\n }\n\n return {\n register(kind, factory) {\n if (factories.has(kind)) {\n throw new DuplicateStoreKindError(kind)\n }\n factories.set(kind, factory)\n },\n resolve(descriptor, opts = {}) {\n // The one place the seam's `resolve(): NoydbStore` signature is paid\n // for. A pod-store `kind` really returns a `NoydbPodStore`; the registry\n // is keyed by a runtime string so nothing here can prove otherwise.\n // Concentrated in the module that owns the invariant rather than\n // duplicated as `as unknown as StoreFactory` in every pod-store package\n // (#988). `resolveAny()` is the honest signature over the same call.\n return lookup(descriptor.kind)(descriptor, opts) as NoydbStore | Promise<NoydbStore>\n },\n resolveAny(descriptor, opts = {}) {\n return lookup(descriptor.kind)(descriptor, opts)\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AA4EO,SAAS,WAAW,OAA8C;AACvE,SAAQ,MAAwB,SAAS;AAC3C;AA8DO,SAAS,qBAAmC;AACjD,QAAM,YAAY,oBAAI,IAAyC;AAE/D,WAAS,OAAO,MAA2C;AACzD,UAAM,UAAU,UAAU,IAAI,IAAI;AAClC,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,sBAAsB,MAAM,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE,KAAK,CAAC;AAAA,IACpE;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,SAAS,MAAM,SAAS;AACtB,UAAI,UAAU,IAAI,IAAI,GAAG;AACvB,cAAM,IAAI,wBAAwB,IAAI;AAAA,MACxC;AACA,gBAAU,IAAI,MAAM,OAAO;AAAA,IAC7B;AAAA,IACA,QAAQ,YAAY,OAAO,CAAC,GAAG;AAO7B,aAAO,OAAO,WAAW,IAAI,EAAE,YAAY,IAAI;AAAA,IACjD;AAAA,IACA,WAAW,YAAY,OAAO,CAAC,GAAG;AAChC,aAAO,OAAO,WAAW,IAAI,EAAE,YAAY,IAAI;AAAA,IACjD;AAAA,EACF;AACF;","names":[]}
@@ -3,16 +3,16 @@ import {
3
3
  TxContext,
4
4
  TxVault,
5
5
  runTransaction
6
- } from "../chunk-VFIWDPXZ.js";
6
+ } from "../chunk-RPX2H2OL.js";
7
7
  import {
8
8
  lazy
9
9
  } from "../chunk-5D2ALSM5.js";
10
10
  import "../chunk-4AOERLTV.js";
11
- import "../chunk-JBIV4FLR.js";
11
+ import "../chunk-SW4TOSJL.js";
12
12
  import "../chunk-PZ5AY32C.js";
13
13
 
14
14
  // src/with-commit/tx/dry-run.ts
15
- var loadGuardExecutor = lazy(() => import("../executor-AFHQYRAU.js"));
15
+ var loadGuardExecutor = lazy(() => import("../executor-CRH5OB4V.js"));
16
16
  var SEP = " ";
17
17
  var keyOf = (op) => `${op.vaultName}${SEP}${op.collectionName}${SEP}${op.id}`;
18
18
  async function runDryRun(db, fn) {
@@ -3,7 +3,7 @@ import {
3
3
  } from "../chunk-PY4KJPYU.js";
4
4
  import {
5
5
  FilenameSanitizationError
6
- } from "../chunk-JBIV4FLR.js";
6
+ } from "../chunk-SW4TOSJL.js";
7
7
  import "../chunk-PZ5AY32C.js";
8
8
 
9
9
  // src/kernel/util/sanitize-filename.ts
@@ -6,19 +6,19 @@ import {
6
6
  import {
7
7
  buildRecordAad,
8
8
  openEnvelopeJson
9
- } from "../chunk-2LPVI4PX.js";
9
+ } from "../chunk-DOPZWTMJ.js";
10
10
  import {
11
11
  buildRecordEnvelope
12
- } from "../chunk-N4CNVSUF.js";
13
- import "../chunk-FOG7YEJP.js";
14
- import "../chunk-KDJGJR7F.js";
15
- import "../chunk-LKFKXS5K.js";
12
+ } from "../chunk-4RUFYGWG.js";
13
+ import "../chunk-XGXVPCYW.js";
14
+ import "../chunk-CWFH36SI.js";
15
+ import "../chunk-KZTPL7NL.js";
16
16
  import "../chunk-LP7BEXCT.js";
17
17
  import {
18
18
  encrypt
19
- } from "../chunk-W5LHQXZU.js";
20
- import "../chunk-RK7N4OQ5.js";
21
- import "../chunk-JBIV4FLR.js";
19
+ } from "../chunk-USKHHOIV.js";
20
+ import "../chunk-N4CHCXDL.js";
21
+ import "../chunk-SW4TOSJL.js";
22
22
  import "../chunk-PZ5AY32C.js";
23
23
 
24
24
  // src/with-commit/vault-head/head.ts
@@ -2,10 +2,10 @@ import {
2
2
  blindedEqual,
3
3
  evaluateKofN,
4
4
  openVdigPayload
5
- } from "./chunk-FOG7YEJP.js";
5
+ } from "./chunk-XGXVPCYW.js";
6
6
  import {
7
7
  dualReadSealedSlot
8
- } from "./chunk-KDJGJR7F.js";
8
+ } from "./chunk-CWFH36SI.js";
9
9
  import {
10
10
  VDIG_ITERATIONS,
11
11
  normalizeForVerify,
@@ -14,11 +14,11 @@ import {
14
14
  import {
15
15
  base64ToBuffer,
16
16
  generateSalt
17
- } from "./chunk-W5LHQXZU.js";
17
+ } from "./chunk-USKHHOIV.js";
18
18
  import {
19
19
  ClassifiedConfigError,
20
20
  ClassifiedVerifyError
21
- } from "./chunk-JBIV4FLR.js";
21
+ } from "./chunk-SW4TOSJL.js";
22
22
  import "./chunk-PZ5AY32C.js";
23
23
 
24
24
  // src/kernel/enclave/classify/verify.ts
@@ -137,4 +137,4 @@ export {
137
137
  verifyDigestField,
138
138
  verifyTextField
139
139
  };
140
- //# sourceMappingURL=verify-WYOFLSNA.js.map
140
+ //# sourceMappingURL=verify-R6CCBUA3.js.map
@@ -0,0 +1,21 @@
1
+ import {
2
+ dumpVaultSchema
3
+ } from "./chunk-PCIBCL26.js";
4
+ import "./chunk-KHKKD62N.js";
5
+ import "./chunk-VT4DTCK5.js";
6
+ import "./chunk-Y2NBBT6K.js";
7
+ import "./chunk-I5LSKXT6.js";
8
+ import "./chunk-DOPZWTMJ.js";
9
+ import "./chunk-4RUFYGWG.js";
10
+ import "./chunk-XGXVPCYW.js";
11
+ import "./chunk-CWFH36SI.js";
12
+ import "./chunk-KZTPL7NL.js";
13
+ import "./chunk-LP7BEXCT.js";
14
+ import "./chunk-USKHHOIV.js";
15
+ import "./chunk-N4CHCXDL.js";
16
+ import "./chunk-SW4TOSJL.js";
17
+ import "./chunk-PZ5AY32C.js";
18
+ export {
19
+ dumpVaultSchema
20
+ };
21
+ //# sourceMappingURL=walk-3PA4ZOKS.js.map
@@ -22,6 +22,7 @@ export type { DeedMarker } from '../with-party/team/deed.js';
22
22
  export type { NoydbSealer } from '../with-party/team/managed-secret.js';
23
23
  export { diffVault } from './vault-diff.js';
24
24
  export { STATE_VAULT_NAME } from '../kernel/constants.js';
25
+ export { NOYDB_ENVELOPE_GENERATION } from '../kernel/types.js';
25
26
  export { withCargo } from './active.js';
26
27
  export { NO_CARGO } from './strategy.js';
27
28
  export type { CargoStrategy } from './strategy.js';
@@ -0,0 +1,71 @@
1
+ /**
2
+ * The roster epoch: minting and comparison (#1097).
3
+ *
4
+ * ## What this closes, and what it does not
5
+ *
6
+ * A roster tag authenticates the roster's CONTENTS. It makes no claim about
7
+ * being CURRENT, and that gap is reachable without forging anything: there is
8
+ * no role-change API, so narrowing a user's standing means calling `grant`
9
+ * again with a lower role, and the keyring write overwrites in place. The
10
+ * previous, broader file was legitimately minted by this vault. A store that
11
+ * kept a copy re-serves it; the KEK unwraps, the canary checks out, the tag
12
+ * verifies, and the replayed file restores the higher role — usably, not
13
+ * cosmetically.
14
+ *
15
+ * The ROTATION half of #1097 already shipped: rotating the collections a
16
+ * narrowing drops restores the bound ADR 0003 assumed, so the old file's DEKs
17
+ * no longer open anything written since. That converts live access back into
18
+ * stale access. It cannot touch the role, because role gates capabilities
19
+ * rather than keys.
20
+ *
21
+ * ## Why the epoch needs a second channel
22
+ *
23
+ * An epoch stored beside the roster is not an anchor: a store rewinding the
24
+ * roster rewinds the epoch with it. It becomes an anchor only when the reader
25
+ * holds an expected value that arrived by a channel the store does not carry.
26
+ * Hub owns the epoch and the comparison; **who carries the expectation is
27
+ * deliberately not hub's business**, because hub cannot know which channel a
28
+ * deployment trusts.
29
+ *
30
+ * Candidates considered and REJECTED for that anchor, recorded so they are not
31
+ * re-derived:
32
+ *
33
+ * - **Time.** Defeats long rewinds and is useless against fresh ones — and a
34
+ * narrowing replay is entirely the fresh case.
35
+ * - **The vault head.** Circular: head buckets are read with a
36
+ * keyring-issued DEK, and a rewound roster renders as the benign
37
+ * `no-expectations` verdict.
38
+ *
39
+ * @module
40
+ */
41
+ /**
42
+ * Refuse a keyring whose roster epoch is older than the caller expects.
43
+ *
44
+ * OPT-IN: with no `expected` this is a no-op, and the caller is exactly as
45
+ * exposed as before. Deliberate — a deployment with no second channel has
46
+ * nothing to compare against, and inventing a comparison would be worse than
47
+ * declining to make one.
48
+ *
49
+ * ⚠️ **An absent epoch is UNKNOWN, never zero.** Every keyring written before
50
+ * the epoch existed has none, and those are precisely the files a replay would
51
+ * serve. Treating absence as `0` would accept all of them and defeat the
52
+ * mechanism while appearing to work. Same rule as `NOYDB_ENVELOPE_GENERATION`,
53
+ * and the same reason: absence is a statement about the WRITER, not the value.
54
+ *
55
+ * `found > expected` is ACCEPTED. The expectation is a FLOOR, not an equality:
56
+ * an out-of-band anchor is minted at a moment in time and the roster may
57
+ * legitimately have moved on. Requiring equality would refuse healthy vaults
58
+ * after any grant or revoke, which is the fastest way to get a security check
59
+ * switched off.
60
+ */
61
+ export declare function assertRosterEpochCurrent(found: number | undefined, expected: number | undefined, userId: string): void;
62
+ /**
63
+ * The next epoch for a roster write — monotonic, never silently restarting.
64
+ *
65
+ * A write that reused or lowered an epoch would mint a file the comparison
66
+ * above cannot distinguish from a replay, so this is the only sanctioned way
67
+ * to produce one. `undefined` in — a file that predates the mechanism, or a
68
+ * brand-new keyring — starts the line at 1 rather than 0, so that "has an
69
+ * epoch" is never confusable with falsy.
70
+ */
71
+ export declare function nextRosterEpoch(current: number | undefined): number;
@@ -44,7 +44,7 @@ export interface RosterTag {
44
44
  readonly iv: string;
45
45
  readonly data: string;
46
46
  }
47
- export type RosterAuthorityFields = Pick<KeyringFile, 'user_id' | 'role' | 'permissions' | 'granted_by' | 'expires_at' | 'export_capability' | 'import_capability' | 'deks' | 'pending_deks'>;
47
+ export type RosterAuthorityFields = Pick<KeyringFile, 'user_id' | 'role' | 'permissions' | 'granted_by' | 'expires_at' | 'export_capability' | 'import_capability' | 'deks' | 'pending_deks' | 'roster_epoch'>;
48
48
  export declare function rosterCanonical(file: RosterAuthorityFields): string;
49
49
  export declare function mintRosterTag(file: RosterAuthorityFields, rosterKey: EnclaveKey): Promise<RosterTag>;
50
50
  /**
@@ -0,0 +1,28 @@
1
+ import {
2
+ FROZEN_SNAPSHOTS_COLLECTION,
3
+ freezeAndDeleteClosure,
4
+ freezeSnapshotOnly,
5
+ randomId,
6
+ withdrawAccessibleData
7
+ } from "./chunk-5EC7X5QA.js";
8
+ import "./chunk-P22XPNFW.js";
9
+ import "./chunk-RCONOOVF.js";
10
+ import "./chunk-NMDMSHBF.js";
11
+ import "./chunk-DOPZWTMJ.js";
12
+ import "./chunk-4RUFYGWG.js";
13
+ import "./chunk-XGXVPCYW.js";
14
+ import "./chunk-CWFH36SI.js";
15
+ import "./chunk-KZTPL7NL.js";
16
+ import "./chunk-LP7BEXCT.js";
17
+ import "./chunk-USKHHOIV.js";
18
+ import "./chunk-N4CHCXDL.js";
19
+ import "./chunk-SW4TOSJL.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-62VI4W7D.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noy-db/hub",
3
- "version": "0.7.0-pre.1",
3
+ "version": "0.7.0-pre.10",
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>",
@@ -233,14 +233,14 @@
233
233
  "node": ">=22.0.0"
234
234
  },
235
235
  "dependencies": {
236
- "@noy-db/attestation": "0.7.0-pre.1"
236
+ "@noy-db/attestation": "0.7.0-pre.10"
237
237
  },
238
238
  "devDependencies": {
239
239
  "@types/node": "^22.0.0",
240
240
  "esbuild": "^0.25.0",
241
241
  "zod": "^4.0.0",
242
242
  "zod-to-json-schema": "^3.25.2",
243
- "@noy-db/on-shamir": "0.7.0-pre.1"
243
+ "@noy-db/on-shamir": "0.7.0-pre.10"
244
244
  },
245
245
  "peerDependencies": {
246
246
  "zod-to-json-schema": "^3.25.0"
@@ -1,20 +0,0 @@
1
- import {
2
- UserApi,
3
- createUserApi
4
- } from "./chunk-DBNYPLWY.js";
5
- import "./chunk-DFAUMLD7.js";
6
- import "./chunk-2LPVI4PX.js";
7
- import "./chunk-N4CNVSUF.js";
8
- import "./chunk-FOG7YEJP.js";
9
- import "./chunk-KDJGJR7F.js";
10
- import "./chunk-LKFKXS5K.js";
11
- import "./chunk-LP7BEXCT.js";
12
- import "./chunk-W5LHQXZU.js";
13
- import "./chunk-RK7N4OQ5.js";
14
- import "./chunk-JBIV4FLR.js";
15
- import "./chunk-PZ5AY32C.js";
16
- export {
17
- UserApi,
18
- createUserApi
19
- };
20
- //# sourceMappingURL=api-EQYRTZO2.js.map