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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/dist/aggregate/index.js +4 -4
  2. package/dist/api-3A3S4SHH.js +20 -0
  3. package/dist/as/index.js +11 -11
  4. package/dist/attestation/index.js +18 -18
  5. package/dist/{backup-BJ57IKAO.js → backup-YPUEKIJC.js} +11 -11
  6. package/dist/blobs/index.js +12 -12
  7. package/dist/broker/index.js +12 -12
  8. package/dist/bundle/index.js +22 -22
  9. package/dist/by/index.js +2 -2
  10. package/dist/cargo/index.js +22 -22
  11. package/dist/{chunk-ZAJAVEXY.js → chunk-2PCAVW2I.js} +2 -2
  12. package/dist/{chunk-HTJQYHZP.js → chunk-3ELCWU56.js} +2 -2
  13. package/dist/{chunk-J2ZX2XUV.js → chunk-554KLAAN.js} +5 -5
  14. package/dist/{chunk-NR5LT5RY.js → chunk-5PFOMHTB.js} +7 -7
  15. package/dist/{chunk-B3HJYUOF.js → chunk-5WZXVULX.js} +2 -2
  16. package/dist/{chunk-ZJ2AK4V7.js → chunk-6HPG2YNX.js} +2 -2
  17. package/dist/{chunk-5M5DVGV7.js → chunk-6HY2X62D.js} +2 -2
  18. package/dist/{chunk-QRB7NAOJ.js → chunk-6NQMXTYC.js} +2 -2
  19. package/dist/{chunk-RIX4V2TB.js → chunk-6XE5TMPR.js} +3 -3
  20. package/dist/{chunk-7DSTRQIJ.js → chunk-A4FXFAKF.js} +2 -2
  21. package/dist/{chunk-454JXE57.js → chunk-A5BDDEXK.js} +10 -170
  22. package/dist/chunk-A5BDDEXK.js.map +1 -0
  23. package/dist/{chunk-EVVGJDRQ.js → chunk-ANATMTOA.js} +3 -3
  24. package/dist/{chunk-W22IKJE2.js → chunk-BOKIKJJB.js} +2 -2
  25. package/dist/{chunk-VZRODIM3.js → chunk-CJ5KKU6X.js} +4 -4
  26. package/dist/{chunk-CDUQTA3Z.js → chunk-CZTLE22N.js} +7 -7
  27. package/dist/{chunk-RCVJZMFE.js → chunk-DDHM2TLX.js} +4 -4
  28. package/dist/{chunk-PN2XMATY.js → chunk-DRWBEDYO.js} +2 -2
  29. package/dist/{chunk-EYZ6IQ6X.js → chunk-DSBQODMZ.js} +5 -5
  30. package/dist/{chunk-LASZKVMO.js → chunk-EO43ANYJ.js} +3 -3
  31. package/dist/{chunk-6QTNZJBS.js → chunk-EWPOHMN2.js} +3 -3
  32. package/dist/chunk-FH52K7EG.js +50 -0
  33. package/dist/chunk-FH52K7EG.js.map +1 -0
  34. package/dist/{chunk-FHS2HQSH.js → chunk-FXZDAV62.js} +11 -8
  35. package/dist/chunk-FXZDAV62.js.map +1 -0
  36. package/dist/{chunk-2NVOWNI3.js → chunk-GDG5VVYG.js} +4 -4
  37. package/dist/{chunk-6JTIAGHD.js → chunk-GULTLPFB.js} +3 -3
  38. package/dist/chunk-GULTLPFB.js.map +1 -0
  39. package/dist/{chunk-3B5VVCNY.js → chunk-GWKAVKHI.js} +2 -2
  40. package/dist/{chunk-BDVFPG6Y.js → chunk-H2KSZMIX.js} +5 -5
  41. package/dist/{chunk-CIE2BASH.js → chunk-HOONYZY2.js} +2 -2
  42. package/dist/{chunk-HDMEGAQE.js → chunk-HQBM64EE.js} +5 -5
  43. package/dist/{chunk-VFUPHI2Z.js → chunk-IAO54J4R.js} +6 -6
  44. package/dist/{chunk-5O3XF4DV.js → chunk-IFJTPAQQ.js} +4 -4
  45. package/dist/{chunk-OSDB5WW3.js → chunk-IK43HLDQ.js} +11 -11
  46. package/dist/{chunk-3QCRBHCY.js → chunk-ISMV2QVG.js} +2 -2
  47. package/dist/{chunk-HB3RFQSC.js → chunk-IY23KFNZ.js} +3 -3
  48. package/dist/{chunk-6CRIV7DE.js → chunk-JBBSYJHP.js} +2 -2
  49. package/dist/{chunk-IU6SNYX6.js → chunk-JFCV5QIK.js} +5 -5
  50. package/dist/{chunk-MEFJPTZ4.js → chunk-JRBNCUNT.js} +3 -3
  51. package/dist/{chunk-4VNQOLML.js → chunk-JVBO4SZL.js} +2 -2
  52. package/dist/{chunk-EQO2UVP4.js → chunk-KS6SAVCZ.js} +6 -6
  53. package/dist/{chunk-4CTHCN4J.js → chunk-LVGTA624.js} +4 -4
  54. package/dist/{chunk-K5IMOGHB.js → chunk-M75ZZHSR.js} +2 -2
  55. package/dist/{chunk-NJ4EOKMB.js → chunk-MT62YSPZ.js} +4 -4
  56. package/dist/{chunk-JKJOGPZN.js → chunk-N6WF5PKC.js} +2 -2
  57. package/dist/{chunk-4JBYV75E.js → chunk-NCCBLYEB.js} +5 -5
  58. package/dist/{chunk-SLFHQTTW.js → chunk-OCVM6KDH.js} +5 -5
  59. package/dist/{chunk-GKEWXIV5.js → chunk-ONTBCHCP.js} +2 -2
  60. package/dist/{chunk-X7QBD67R.js → chunk-PK6JIDQ4.js} +124 -104
  61. package/dist/{chunk-X7QBD67R.js.map → chunk-PK6JIDQ4.js.map} +1 -1
  62. package/dist/{chunk-EVX47VBM.js → chunk-QDPZWTN2.js} +2 -2
  63. package/dist/{chunk-IL6POWCW.js → chunk-R3BLCFD2.js} +6 -6
  64. package/dist/chunk-RA5VTXXG.js +173 -0
  65. package/dist/chunk-RA5VTXXG.js.map +1 -0
  66. package/dist/{chunk-QLWMEXCT.js → chunk-RDXW3OBQ.js} +2 -2
  67. package/dist/{chunk-3LQ2YKO4.js → chunk-RFI7GGFO.js} +2 -2
  68. package/dist/{chunk-FUG4SFN3.js → chunk-RJ6K6K5M.js} +2 -2
  69. package/dist/{chunk-T2FFWNPK.js → chunk-RNG4VRP4.js} +3 -3
  70. package/dist/{chunk-JZUV47FZ.js → chunk-RTEK4C4I.js} +2 -2
  71. package/dist/{chunk-KSKBRKGJ.js → chunk-S3BFKGET.js} +84 -6
  72. package/dist/chunk-S3BFKGET.js.map +1 -0
  73. package/dist/{chunk-5YOLBEQ6.js → chunk-S6Q37VGE.js} +2 -2
  74. package/dist/{chunk-E5ZQT5KX.js → chunk-SMIRGMS7.js} +2 -2
  75. package/dist/{chunk-6T2SCQRU.js → chunk-SV6EAJEP.js} +4 -4
  76. package/dist/chunk-T36RFODW.js +180 -0
  77. package/dist/chunk-T36RFODW.js.map +1 -0
  78. package/dist/{chunk-ERJ7FU55.js → chunk-T3GY65MA.js} +3 -3
  79. package/dist/{chunk-LXEXBTKL.js → chunk-TAGR72IR.js} +4 -4
  80. package/dist/{chunk-JIF24JPM.js → chunk-THVIPWRF.js} +9 -9
  81. package/dist/{chunk-ZUODRVHY.js → chunk-TIGPQDYP.js} +2 -2
  82. package/dist/{chunk-NWSGI5C7.js → chunk-U6JMEH2P.js} +3 -3
  83. package/dist/{chunk-ZICD77GM.js → chunk-UC2ETWF3.js} +2 -2
  84. package/dist/{chunk-VLFCJYTL.js → chunk-UDSR4X4L.js} +9 -9
  85. package/dist/{chunk-SNZ6URZZ.js → chunk-UHNGNKLV.js} +7 -7
  86. package/dist/{chunk-R4ROFEYC.js → chunk-VAIS3SOM.js} +2 -2
  87. package/dist/{chunk-VN3DBQAU.js → chunk-VCBHAE4R.js} +2 -2
  88. package/dist/{chunk-JNAI2HN2.js → chunk-VCTXU4AT.js} +1 -1
  89. package/dist/chunk-VCTXU4AT.js.map +1 -0
  90. package/dist/{chunk-M4CV6BRT.js → chunk-VEALDPHW.js} +2 -2
  91. package/dist/{chunk-AUSTCW2X.js → chunk-VKCADNMR.js} +8 -8
  92. package/dist/{chunk-XWZVFISC.js → chunk-VRBTNCM4.js} +6 -6
  93. package/dist/{chunk-BIOUI4HL.js → chunk-W2OG6JOL.js} +1 -1
  94. package/dist/{chunk-BIOUI4HL.js.map → chunk-W2OG6JOL.js.map} +1 -1
  95. package/dist/{chunk-XDYREZWE.js → chunk-W4TCUGQR.js} +8 -8
  96. package/dist/{chunk-FM3G3NOY.js → chunk-WG4QBZDN.js} +83 -6
  97. package/dist/chunk-WG4QBZDN.js.map +1 -0
  98. package/dist/{chunk-HDQIIUPH.js → chunk-WHXXI3W5.js} +3 -3
  99. package/dist/{chunk-F64IRYG3.js → chunk-WKGF2TJR.js} +2 -2
  100. package/dist/{chunk-CAF6WOK7.js → chunk-WNGGJWF7.js} +2 -2
  101. package/dist/{chunk-EXK7QRWF.js → chunk-WOM2HTML.js} +5 -5
  102. package/dist/{chunk-Q5VNKNE5.js → chunk-WQIYTNJV.js} +3 -3
  103. package/dist/{chunk-GTGPO5KW.js → chunk-WZSHL6DQ.js} +5 -5
  104. package/dist/{chunk-CRI4OUV4.js → chunk-XDIAFPUM.js} +2 -2
  105. package/dist/{chunk-RYCTDFUX.js → chunk-XJMBYYQK.js} +2 -2
  106. package/dist/{chunk-DLG74CNB.js → chunk-XTHCN77N.js} +4 -4
  107. package/dist/chunk-XUW3PXHU.js +248 -0
  108. package/dist/chunk-XUW3PXHU.js.map +1 -0
  109. package/dist/{chunk-I6GALP6E.js → chunk-YCH5GBN6.js} +6 -6
  110. package/dist/{chunk-RZ5SVOYR.js → chunk-YTGDPCPW.js} +2 -2
  111. package/dist/{chunk-UNFPPVNI.js → chunk-YZQOGE2L.js} +2 -2
  112. package/dist/{chunk-MV43JSJF.js → chunk-Z4PD65VQ.js} +4 -4
  113. package/dist/{chunk-YFXZEAYK.js → chunk-ZXEZCY6F.js} +6 -6
  114. package/dist/classified/index.js +5 -5
  115. package/dist/{classified-marker-CZKA6ITE.js → classified-marker-QWMASIT7.js} +3 -3
  116. package/dist/collection-facade-KMBWNCYP.js +44 -0
  117. package/dist/{computed-ZIQTYTDI.js → computed-DSMPXG2Y.js} +3 -3
  118. package/dist/consent/index.js +9 -9
  119. package/dist/{public-envelope-B4KNWVUA.js → cover-QJRXINN5.js} +25 -5
  120. package/dist/{dead-filter-ESOBZZP5.js → dead-filter-66VGI6JV.js} +2 -2
  121. package/dist/delegation-SU6CV3W7.js +25 -0
  122. package/dist/derivations/index.js +12 -12
  123. package/dist/derive-6RWU4EOA.js +21 -0
  124. package/dist/{enclave-AP3I5W7O.js → enclave-TKPN2G2U.js} +9 -9
  125. package/dist/executor-KGNLJD6M.js +9 -0
  126. package/dist/executor-UX4FASYZ.js +26 -0
  127. package/dist/executor-XGIS6CR7.js +9 -0
  128. package/dist/export-accessible-LKW3QV22.js +23 -0
  129. package/dist/extract-partition-UP2ARO75.js +38 -0
  130. package/dist/{fanout-sidecar-A765THMX.js → fanout-sidecar-B5LVUMQX.js} +9 -9
  131. package/dist/find-YS6XWB46.js +11 -0
  132. package/dist/forget/index.js +9 -9
  133. package/dist/guards/index.js +3 -3
  134. package/dist/history/index.js +12 -12
  135. package/dist/i18n/index.js +14 -14
  136. package/dist/index.d.ts +6 -3
  137. package/dist/index.js +110 -89
  138. package/dist/index.js.map +1 -1
  139. package/dist/indexing/index.js +2 -2
  140. package/dist/issue-3ACYX7LO.js +19 -0
  141. package/dist/kernel/errors.d.ts +10 -5
  142. package/dist/kernel/noydb.d.ts +21 -11
  143. package/dist/kernel/types.d.ts +12 -6
  144. package/dist/kernel/vault.d.ts +10 -6
  145. package/dist/{ledger-GFBKVPV4.js → ledger-PTK7XZYT.js} +11 -11
  146. package/dist/liberate-MQQXBUCY.js +24 -0
  147. package/dist/{link-set-Z7Q2ASFX.js → link-set-SLJHDNRB.js} +11 -11
  148. package/dist/materialized-views/index.js +19 -18
  149. package/dist/noydb-ANIW5FLE.js +69 -0
  150. package/dist/on/index.js +9 -9
  151. package/dist/overlay-views/index.js +4 -4
  152. package/dist/periods/index.js +12 -12
  153. package/dist/pod/index.js +13 -11
  154. package/dist/{policy-Z3RUAIY2.js → policy-YDLCOX4P.js} +5 -5
  155. package/dist/portability/index.js +8 -8
  156. package/dist/{post-register-JTH76BLY.js → post-register-2YHSADFI.js} +6 -6
  157. package/dist/query/index.js +10 -8
  158. package/dist/register-PAM3ASRZ.js +23 -0
  159. package/dist/registry-4S2U2TR4.js +19 -0
  160. package/dist/registry-NPOWJHC4.js +9 -0
  161. package/dist/registry-VZ3CCI2R.js +18 -0
  162. package/dist/request-withdrawal-DI3H5WUI.js +31 -0
  163. package/dist/{reveal-DIBHLUZX.js → reveal-HWO4YMTJ.js} +6 -6
  164. package/dist/revoke-R5CZSVUT.js +24 -0
  165. package/dist/satellites/index.js +1 -1
  166. package/dist/sealed-record/index.js +12 -12
  167. package/dist/{seed-Q6M2IZFL.js → seed-3ZMF5EQA.js} +11 -11
  168. package/dist/session/index.js +9 -9
  169. package/dist/shadow/index.js +2 -2
  170. package/dist/signer-MBVHW4WE.js +25 -0
  171. package/dist/snapshots/index.js +10 -10
  172. package/dist/{stale-OSQ7J3AA.js → stale-VZL4OGUB.js} +10 -10
  173. package/dist/storage-3MEJUENZ.js +23 -0
  174. package/dist/{store-coordination-provider-64OEZFGS.js → store-coordination-provider-FKX3F6TQ.js} +3 -3
  175. package/dist/sync/index.js +9 -9
  176. package/dist/team/index.js +15 -15
  177. package/dist/tiers/index.js +10 -10
  178. package/dist/to/index.js +1 -1
  179. package/dist/tx/index.js +3 -3
  180. package/dist/util/index.js +1 -1
  181. package/dist/{verify-ZASTRNPR.js → verify-26Y5GNMK.js} +5 -5
  182. package/dist/via/i18n/policy.d.ts +1 -1
  183. package/dist/{walk-SVNDIZ62.js → walk-IPLXE36W.js} +11 -11
  184. package/dist/with/index.js +11 -11
  185. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +15 -0
  186. package/dist/with-formula/materialized-views/index.d.ts +1 -1
  187. package/dist/with-formula/materialized-views/registry.d.ts +29 -0
  188. package/dist/with-formula/materialized-views/types.d.ts +81 -0
  189. package/dist/with-formula/materialized-views/with-materialized-view.d.ts +9 -5
  190. package/dist/with-party/directory/cover/custom.d.ts +34 -0
  191. package/dist/with-party/directory/cover/index.d.ts +19 -0
  192. package/dist/with-party/directory/cover/schema.d.ts +39 -0
  193. package/dist/with-party/directory/cover/storage.d.ts +71 -0
  194. package/dist/with-party/directory/cover/types.d.ts +149 -0
  195. package/dist/with-party/team/noydb-facade.d.ts +1 -1
  196. package/dist/with-pod/bundle.d.ts +9 -7
  197. package/dist/with-pod/format.d.ts +8 -4
  198. package/dist/with-pod/index.d.ts +2 -1
  199. package/dist/withdraw-accessible-TZDATQVR.js +28 -0
  200. package/package.json +3 -3
  201. package/dist/api-ZGS6LCOF.js +0 -20
  202. package/dist/chunk-454JXE57.js.map +0 -1
  203. package/dist/chunk-4NXKCLLQ.js +0 -97
  204. package/dist/chunk-4NXKCLLQ.js.map +0 -1
  205. package/dist/chunk-6JTIAGHD.js.map +0 -1
  206. package/dist/chunk-FHS2HQSH.js.map +0 -1
  207. package/dist/chunk-FM3G3NOY.js.map +0 -1
  208. package/dist/chunk-JNAI2HN2.js.map +0 -1
  209. package/dist/chunk-KSKBRKGJ.js.map +0 -1
  210. package/dist/chunk-WXSYDNBT.js +0 -39
  211. package/dist/chunk-WXSYDNBT.js.map +0 -1
  212. package/dist/chunk-X3YYQWOQ.js +0 -155
  213. package/dist/chunk-X3YYQWOQ.js.map +0 -1
  214. package/dist/collection-facade-TLWIPI76.js +0 -44
  215. package/dist/delegation-W7ZV2322.js +0 -25
  216. package/dist/derive-H2BJTLUI.js +0 -21
  217. package/dist/executor-KGWTNEQD.js +0 -9
  218. package/dist/executor-OVEXR6RT.js +0 -9
  219. package/dist/executor-UNEH5ZYH.js +0 -25
  220. package/dist/export-accessible-PCMXSUZS.js +0 -23
  221. package/dist/extract-partition-SWHFSYJO.js +0 -38
  222. package/dist/find-N6345CNT.js +0 -11
  223. package/dist/issue-5OKB6I2R.js +0 -19
  224. package/dist/liberate-3VDOT4KO.js +0 -24
  225. package/dist/noydb-ZCJOYBDI.js +0 -68
  226. package/dist/register-VAHONCID.js +0 -23
  227. package/dist/registry-7MLVD3VO.js +0 -19
  228. package/dist/registry-EPKPD5SM.js +0 -18
  229. package/dist/registry-P5T7PS2U.js +0 -9
  230. package/dist/request-withdrawal-TI3A5WPS.js +0 -31
  231. package/dist/revoke-FDRD6GRW.js +0 -24
  232. package/dist/signer-MUWEIUI6.js +0 -25
  233. package/dist/storage-MVFCGEQE.js +0 -23
  234. package/dist/with-party/directory/public-envelope/index.d.ts +0 -12
  235. package/dist/with-party/directory/public-envelope/schema.d.ts +0 -24
  236. package/dist/with-party/directory/public-envelope/storage.d.ts +0 -59
  237. package/dist/with-party/directory/public-envelope/types.d.ts +0 -80
  238. package/dist/withdraw-accessible-WZIEVWSR.js +0 -28
  239. /package/dist/{api-ZGS6LCOF.js.map → api-3A3S4SHH.js.map} +0 -0
  240. /package/dist/{backup-BJ57IKAO.js.map → backup-YPUEKIJC.js.map} +0 -0
  241. /package/dist/{chunk-ZAJAVEXY.js.map → chunk-2PCAVW2I.js.map} +0 -0
  242. /package/dist/{chunk-HTJQYHZP.js.map → chunk-3ELCWU56.js.map} +0 -0
  243. /package/dist/{chunk-J2ZX2XUV.js.map → chunk-554KLAAN.js.map} +0 -0
  244. /package/dist/{chunk-NR5LT5RY.js.map → chunk-5PFOMHTB.js.map} +0 -0
  245. /package/dist/{chunk-B3HJYUOF.js.map → chunk-5WZXVULX.js.map} +0 -0
  246. /package/dist/{chunk-ZJ2AK4V7.js.map → chunk-6HPG2YNX.js.map} +0 -0
  247. /package/dist/{chunk-5M5DVGV7.js.map → chunk-6HY2X62D.js.map} +0 -0
  248. /package/dist/{chunk-QRB7NAOJ.js.map → chunk-6NQMXTYC.js.map} +0 -0
  249. /package/dist/{chunk-RIX4V2TB.js.map → chunk-6XE5TMPR.js.map} +0 -0
  250. /package/dist/{chunk-7DSTRQIJ.js.map → chunk-A4FXFAKF.js.map} +0 -0
  251. /package/dist/{chunk-EVVGJDRQ.js.map → chunk-ANATMTOA.js.map} +0 -0
  252. /package/dist/{chunk-W22IKJE2.js.map → chunk-BOKIKJJB.js.map} +0 -0
  253. /package/dist/{chunk-VZRODIM3.js.map → chunk-CJ5KKU6X.js.map} +0 -0
  254. /package/dist/{chunk-CDUQTA3Z.js.map → chunk-CZTLE22N.js.map} +0 -0
  255. /package/dist/{chunk-RCVJZMFE.js.map → chunk-DDHM2TLX.js.map} +0 -0
  256. /package/dist/{chunk-PN2XMATY.js.map → chunk-DRWBEDYO.js.map} +0 -0
  257. /package/dist/{chunk-EYZ6IQ6X.js.map → chunk-DSBQODMZ.js.map} +0 -0
  258. /package/dist/{chunk-LASZKVMO.js.map → chunk-EO43ANYJ.js.map} +0 -0
  259. /package/dist/{chunk-6QTNZJBS.js.map → chunk-EWPOHMN2.js.map} +0 -0
  260. /package/dist/{chunk-2NVOWNI3.js.map → chunk-GDG5VVYG.js.map} +0 -0
  261. /package/dist/{chunk-3B5VVCNY.js.map → chunk-GWKAVKHI.js.map} +0 -0
  262. /package/dist/{chunk-BDVFPG6Y.js.map → chunk-H2KSZMIX.js.map} +0 -0
  263. /package/dist/{chunk-CIE2BASH.js.map → chunk-HOONYZY2.js.map} +0 -0
  264. /package/dist/{chunk-HDMEGAQE.js.map → chunk-HQBM64EE.js.map} +0 -0
  265. /package/dist/{chunk-VFUPHI2Z.js.map → chunk-IAO54J4R.js.map} +0 -0
  266. /package/dist/{chunk-5O3XF4DV.js.map → chunk-IFJTPAQQ.js.map} +0 -0
  267. /package/dist/{chunk-OSDB5WW3.js.map → chunk-IK43HLDQ.js.map} +0 -0
  268. /package/dist/{chunk-3QCRBHCY.js.map → chunk-ISMV2QVG.js.map} +0 -0
  269. /package/dist/{chunk-HB3RFQSC.js.map → chunk-IY23KFNZ.js.map} +0 -0
  270. /package/dist/{chunk-6CRIV7DE.js.map → chunk-JBBSYJHP.js.map} +0 -0
  271. /package/dist/{chunk-IU6SNYX6.js.map → chunk-JFCV5QIK.js.map} +0 -0
  272. /package/dist/{chunk-MEFJPTZ4.js.map → chunk-JRBNCUNT.js.map} +0 -0
  273. /package/dist/{chunk-4VNQOLML.js.map → chunk-JVBO4SZL.js.map} +0 -0
  274. /package/dist/{chunk-EQO2UVP4.js.map → chunk-KS6SAVCZ.js.map} +0 -0
  275. /package/dist/{chunk-4CTHCN4J.js.map → chunk-LVGTA624.js.map} +0 -0
  276. /package/dist/{chunk-K5IMOGHB.js.map → chunk-M75ZZHSR.js.map} +0 -0
  277. /package/dist/{chunk-NJ4EOKMB.js.map → chunk-MT62YSPZ.js.map} +0 -0
  278. /package/dist/{chunk-JKJOGPZN.js.map → chunk-N6WF5PKC.js.map} +0 -0
  279. /package/dist/{chunk-4JBYV75E.js.map → chunk-NCCBLYEB.js.map} +0 -0
  280. /package/dist/{chunk-SLFHQTTW.js.map → chunk-OCVM6KDH.js.map} +0 -0
  281. /package/dist/{chunk-GKEWXIV5.js.map → chunk-ONTBCHCP.js.map} +0 -0
  282. /package/dist/{chunk-EVX47VBM.js.map → chunk-QDPZWTN2.js.map} +0 -0
  283. /package/dist/{chunk-IL6POWCW.js.map → chunk-R3BLCFD2.js.map} +0 -0
  284. /package/dist/{chunk-QLWMEXCT.js.map → chunk-RDXW3OBQ.js.map} +0 -0
  285. /package/dist/{chunk-3LQ2YKO4.js.map → chunk-RFI7GGFO.js.map} +0 -0
  286. /package/dist/{chunk-FUG4SFN3.js.map → chunk-RJ6K6K5M.js.map} +0 -0
  287. /package/dist/{chunk-T2FFWNPK.js.map → chunk-RNG4VRP4.js.map} +0 -0
  288. /package/dist/{chunk-JZUV47FZ.js.map → chunk-RTEK4C4I.js.map} +0 -0
  289. /package/dist/{chunk-5YOLBEQ6.js.map → chunk-S6Q37VGE.js.map} +0 -0
  290. /package/dist/{chunk-E5ZQT5KX.js.map → chunk-SMIRGMS7.js.map} +0 -0
  291. /package/dist/{chunk-6T2SCQRU.js.map → chunk-SV6EAJEP.js.map} +0 -0
  292. /package/dist/{chunk-ERJ7FU55.js.map → chunk-T3GY65MA.js.map} +0 -0
  293. /package/dist/{chunk-LXEXBTKL.js.map → chunk-TAGR72IR.js.map} +0 -0
  294. /package/dist/{chunk-JIF24JPM.js.map → chunk-THVIPWRF.js.map} +0 -0
  295. /package/dist/{chunk-ZUODRVHY.js.map → chunk-TIGPQDYP.js.map} +0 -0
  296. /package/dist/{chunk-NWSGI5C7.js.map → chunk-U6JMEH2P.js.map} +0 -0
  297. /package/dist/{chunk-ZICD77GM.js.map → chunk-UC2ETWF3.js.map} +0 -0
  298. /package/dist/{chunk-VLFCJYTL.js.map → chunk-UDSR4X4L.js.map} +0 -0
  299. /package/dist/{chunk-SNZ6URZZ.js.map → chunk-UHNGNKLV.js.map} +0 -0
  300. /package/dist/{chunk-R4ROFEYC.js.map → chunk-VAIS3SOM.js.map} +0 -0
  301. /package/dist/{chunk-VN3DBQAU.js.map → chunk-VCBHAE4R.js.map} +0 -0
  302. /package/dist/{chunk-M4CV6BRT.js.map → chunk-VEALDPHW.js.map} +0 -0
  303. /package/dist/{chunk-AUSTCW2X.js.map → chunk-VKCADNMR.js.map} +0 -0
  304. /package/dist/{chunk-XWZVFISC.js.map → chunk-VRBTNCM4.js.map} +0 -0
  305. /package/dist/{chunk-XDYREZWE.js.map → chunk-W4TCUGQR.js.map} +0 -0
  306. /package/dist/{chunk-HDQIIUPH.js.map → chunk-WHXXI3W5.js.map} +0 -0
  307. /package/dist/{chunk-F64IRYG3.js.map → chunk-WKGF2TJR.js.map} +0 -0
  308. /package/dist/{chunk-CAF6WOK7.js.map → chunk-WNGGJWF7.js.map} +0 -0
  309. /package/dist/{chunk-EXK7QRWF.js.map → chunk-WOM2HTML.js.map} +0 -0
  310. /package/dist/{chunk-Q5VNKNE5.js.map → chunk-WQIYTNJV.js.map} +0 -0
  311. /package/dist/{chunk-GTGPO5KW.js.map → chunk-WZSHL6DQ.js.map} +0 -0
  312. /package/dist/{chunk-CRI4OUV4.js.map → chunk-XDIAFPUM.js.map} +0 -0
  313. /package/dist/{chunk-RYCTDFUX.js.map → chunk-XJMBYYQK.js.map} +0 -0
  314. /package/dist/{chunk-DLG74CNB.js.map → chunk-XTHCN77N.js.map} +0 -0
  315. /package/dist/{chunk-I6GALP6E.js.map → chunk-YCH5GBN6.js.map} +0 -0
  316. /package/dist/{chunk-RZ5SVOYR.js.map → chunk-YTGDPCPW.js.map} +0 -0
  317. /package/dist/{chunk-UNFPPVNI.js.map → chunk-YZQOGE2L.js.map} +0 -0
  318. /package/dist/{chunk-MV43JSJF.js.map → chunk-Z4PD65VQ.js.map} +0 -0
  319. /package/dist/{chunk-YFXZEAYK.js.map → chunk-ZXEZCY6F.js.map} +0 -0
  320. /package/dist/{classified-marker-CZKA6ITE.js.map → classified-marker-QWMASIT7.js.map} +0 -0
  321. /package/dist/{collection-facade-TLWIPI76.js.map → collection-facade-KMBWNCYP.js.map} +0 -0
  322. /package/dist/{computed-ZIQTYTDI.js.map → computed-DSMPXG2Y.js.map} +0 -0
  323. /package/dist/{delegation-W7ZV2322.js.map → cover-QJRXINN5.js.map} +0 -0
  324. /package/dist/{dead-filter-ESOBZZP5.js.map → dead-filter-66VGI6JV.js.map} +0 -0
  325. /package/dist/{derive-H2BJTLUI.js.map → delegation-SU6CV3W7.js.map} +0 -0
  326. /package/dist/{enclave-AP3I5W7O.js.map → derive-6RWU4EOA.js.map} +0 -0
  327. /package/dist/{executor-KGWTNEQD.js.map → enclave-TKPN2G2U.js.map} +0 -0
  328. /package/dist/{executor-OVEXR6RT.js.map → executor-KGNLJD6M.js.map} +0 -0
  329. /package/dist/{executor-UNEH5ZYH.js.map → executor-UX4FASYZ.js.map} +0 -0
  330. /package/dist/{export-accessible-PCMXSUZS.js.map → executor-XGIS6CR7.js.map} +0 -0
  331. /package/dist/{extract-partition-SWHFSYJO.js.map → export-accessible-LKW3QV22.js.map} +0 -0
  332. /package/dist/{find-N6345CNT.js.map → extract-partition-UP2ARO75.js.map} +0 -0
  333. /package/dist/{fanout-sidecar-A765THMX.js.map → fanout-sidecar-B5LVUMQX.js.map} +0 -0
  334. /package/dist/{issue-5OKB6I2R.js.map → find-YS6XWB46.js.map} +0 -0
  335. /package/dist/{ledger-GFBKVPV4.js.map → issue-3ACYX7LO.js.map} +0 -0
  336. /package/dist/{liberate-3VDOT4KO.js.map → ledger-PTK7XZYT.js.map} +0 -0
  337. /package/dist/{link-set-Z7Q2ASFX.js.map → liberate-MQQXBUCY.js.map} +0 -0
  338. /package/dist/{noydb-ZCJOYBDI.js.map → link-set-SLJHDNRB.js.map} +0 -0
  339. /package/dist/{policy-Z3RUAIY2.js.map → noydb-ANIW5FLE.js.map} +0 -0
  340. /package/dist/{public-envelope-B4KNWVUA.js.map → policy-YDLCOX4P.js.map} +0 -0
  341. /package/dist/{post-register-JTH76BLY.js.map → post-register-2YHSADFI.js.map} +0 -0
  342. /package/dist/{register-VAHONCID.js.map → register-PAM3ASRZ.js.map} +0 -0
  343. /package/dist/{registry-7MLVD3VO.js.map → registry-4S2U2TR4.js.map} +0 -0
  344. /package/dist/{registry-EPKPD5SM.js.map → registry-NPOWJHC4.js.map} +0 -0
  345. /package/dist/{registry-P5T7PS2U.js.map → registry-VZ3CCI2R.js.map} +0 -0
  346. /package/dist/{request-withdrawal-TI3A5WPS.js.map → request-withdrawal-DI3H5WUI.js.map} +0 -0
  347. /package/dist/{reveal-DIBHLUZX.js.map → reveal-HWO4YMTJ.js.map} +0 -0
  348. /package/dist/{revoke-FDRD6GRW.js.map → revoke-R5CZSVUT.js.map} +0 -0
  349. /package/dist/{seed-Q6M2IZFL.js.map → seed-3ZMF5EQA.js.map} +0 -0
  350. /package/dist/{signer-MUWEIUI6.js.map → signer-MBVHW4WE.js.map} +0 -0
  351. /package/dist/{stale-OSQ7J3AA.js.map → stale-VZL4OGUB.js.map} +0 -0
  352. /package/dist/{storage-MVFCGEQE.js.map → storage-3MEJUENZ.js.map} +0 -0
  353. /package/dist/{store-coordination-provider-64OEZFGS.js.map → store-coordination-provider-FKX3F6TQ.js.map} +0 -0
  354. /package/dist/{verify-ZASTRNPR.js.map → verify-26Y5GNMK.js.map} +0 -0
  355. /package/dist/{walk-SVNDIZ62.js.map → walk-IPLXE36W.js.map} +0 -0
  356. /package/dist/{withdraw-accessible-WZIEVWSR.js.map → withdraw-accessible-TZDATQVR.js.map} +0 -0
@@ -0,0 +1,248 @@
1
+ import {
2
+ NOYDB_FORMAT_VERSION
3
+ } from "./chunk-VCTXU4AT.js";
4
+ import {
5
+ ValidationError
6
+ } from "./chunk-W2OG6JOL.js";
7
+
8
+ // src/with-party/directory/cover/custom.ts
9
+ var CUSTOM_KEY_PATTERN = /^[a-z0-9]+([.-][a-z0-9]+)+$/i;
10
+ var MAX_CUSTOM_DEPTH = 8;
11
+ function validateCustomInput(custom) {
12
+ if (custom === null || typeof custom !== "object" || Array.isArray(custom)) {
13
+ throw new ValidationError(
14
+ `setCover: custom must be a { [namespace]: value } object, got ${Array.isArray(custom) ? "array" : typeof custom}.`
15
+ );
16
+ }
17
+ for (const [ns, value] of Object.entries(custom)) {
18
+ if (!CUSTOM_KEY_PATTERN.test(ns)) {
19
+ throw new ValidationError(
20
+ `setCover: custom namespace "${ns}" is invalid. Keys must be reverse-DNS or package-style identifiers with at least one dot/dash-separated segment (e.g. "noydb.viewer", "com.acme.registry").`
21
+ );
22
+ }
23
+ assertJsonValue(value, ns, 1, /* @__PURE__ */ new Set());
24
+ }
25
+ }
26
+ function assertJsonValue(value, ns, depth, seen) {
27
+ if (value === null) return;
28
+ const t = typeof value;
29
+ if (t === "string" || t === "number" || t === "boolean") return;
30
+ if (t !== "object") {
31
+ throw new ValidationError(
32
+ `setCover: custom["${ns}"] contains a non-JSON value (${t}). Only strings, numbers, booleans, null, arrays, and plain objects are allowed.`
33
+ );
34
+ }
35
+ const container = value;
36
+ if (seen.has(container)) {
37
+ throw new ValidationError(
38
+ `setCover: custom["${ns}"] contains a circular reference.`
39
+ );
40
+ }
41
+ if (depth > MAX_CUSTOM_DEPTH) {
42
+ throw new ValidationError(
43
+ `setCover: custom["${ns}"] nests deeper than the ${MAX_CUSTOM_DEPTH}-level cap.`
44
+ );
45
+ }
46
+ seen.add(container);
47
+ const children = Array.isArray(container) ? container : Object.values(container);
48
+ for (const child of children) {
49
+ assertJsonValue(child, ns, depth + 1, seen);
50
+ }
51
+ seen.delete(container);
52
+ }
53
+ function mergeCustom(existing, patch) {
54
+ if (patch === void 0) {
55
+ return existing !== void 0 ? { custom: existing } : {};
56
+ }
57
+ const merged = { ...existing };
58
+ for (const [ns, value] of Object.entries(patch)) {
59
+ if (value === null) {
60
+ delete merged[ns];
61
+ } else {
62
+ merged[ns] = value;
63
+ }
64
+ }
65
+ return Object.keys(merged).length > 0 ? { custom: merged } : {};
66
+ }
67
+ function validateCoverSize(cover, schema) {
68
+ if (cover.custom !== void 0) {
69
+ const customSize = JSON.stringify(cover.custom).length;
70
+ if (customSize > schema.maxCustomBytes) {
71
+ throw new ValidationError(
72
+ `setCover: custom exceeds the ${schema.maxCustomBytes}-byte cap (got ${customSize} bytes serialized, after merging with the stored namespaces).`
73
+ );
74
+ }
75
+ }
76
+ const totalSize = JSON.stringify(cover).length;
77
+ if (totalSize > schema.maxCoverBytes) {
78
+ throw new ValidationError(
79
+ `setCover: the cover document exceeds the ${schema.maxCoverBytes}-byte cap (got ${totalSize} bytes serialized).`
80
+ );
81
+ }
82
+ }
83
+
84
+ // src/with-party/directory/cover/schema.ts
85
+ var DATA_URL_PREFIX = /^data:([a-zA-Z0-9.+-]+\/[a-zA-Z0-9.+-]+);base64,/;
86
+ function validateCoverInput(input, schema) {
87
+ const allowed = new Set(schema.fields);
88
+ for (const key of Object.keys(input)) {
89
+ const known = key === "name" || key === "description" || key === "icon" || key === "defaultLocale" || key === "custom" ? key : void 0;
90
+ if (!known) {
91
+ throw new ValidationError(
92
+ `setCover: unknown field "${key}". Allowed fields: ${[...allowed].join(", ")}.`
93
+ );
94
+ }
95
+ if (!allowed.has(known)) {
96
+ throw new ValidationError(
97
+ `setCover: field "${known}" is not enabled in this vault's schema. Allowed fields: ${[...allowed].join(", ")}.`
98
+ );
99
+ }
100
+ }
101
+ if (input.name !== void 0) {
102
+ validateText(input.name, "name", schema.maxStringChars);
103
+ }
104
+ if (input.description !== void 0) {
105
+ validateText(input.description, "description", schema.maxStringChars);
106
+ }
107
+ if (input.icon !== void 0) {
108
+ validateIcon(input.icon, schema);
109
+ }
110
+ if (input.defaultLocale !== void 0 && typeof input.defaultLocale !== "string") {
111
+ throw new ValidationError(
112
+ `setCover: defaultLocale must be a string (BCP-47), got ${typeof input.defaultLocale}.`
113
+ );
114
+ }
115
+ if (input.custom !== void 0) {
116
+ validateCustomInput(input.custom);
117
+ }
118
+ }
119
+ function validateText(value, field, maxChars) {
120
+ if (typeof value === "string") {
121
+ if (value.length > maxChars) {
122
+ throw new ValidationError(
123
+ `setCover: ${field} exceeds the ${maxChars}-character cap (got ${value.length}).`
124
+ );
125
+ }
126
+ return;
127
+ }
128
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
129
+ throw new ValidationError(
130
+ `setCover: ${field} must be a string or { [locale]: string } map, got ${typeof value}.`
131
+ );
132
+ }
133
+ for (const [locale, str] of Object.entries(value)) {
134
+ if (typeof str !== "string") {
135
+ throw new ValidationError(
136
+ `setCover: ${field}[${locale}] must be a string, got ${typeof str}.`
137
+ );
138
+ }
139
+ if (str.length > maxChars) {
140
+ throw new ValidationError(
141
+ `setCover: ${field}[${locale}] exceeds the ${maxChars}-character cap (got ${str.length}).`
142
+ );
143
+ }
144
+ }
145
+ }
146
+ function validateIcon(icon, schema) {
147
+ if (typeof icon !== "string") {
148
+ throw new ValidationError(
149
+ `setCover: icon must be a data: URL string, got ${typeof icon}.`
150
+ );
151
+ }
152
+ if (icon.length > schema.maxIconBytes) {
153
+ throw new ValidationError(
154
+ `setCover: icon exceeds the ${schema.maxIconBytes}-byte cap (got ${icon.length}).`
155
+ );
156
+ }
157
+ const m = DATA_URL_PREFIX.exec(icon);
158
+ if (!m) {
159
+ throw new ValidationError(
160
+ "setCover: icon must be a base64 data URL (`data:image/png;base64,\u2026` or `data:image/svg+xml;base64,\u2026`). External URLs are not supported in v1."
161
+ );
162
+ }
163
+ const mime = m[1];
164
+ if (!schema.iconMimeTypes.includes(mime)) {
165
+ throw new ValidationError(
166
+ `setCover: icon MIME type "${mime}" is not allowed. Permitted types: ${schema.iconMimeTypes.join(", ")}.`
167
+ );
168
+ }
169
+ }
170
+ function isCover(x) {
171
+ if (x === null || typeof x !== "object" || Array.isArray(x)) return false;
172
+ const obj = x;
173
+ return obj["_noydb_public"] === 1 && typeof obj["version"] === "number";
174
+ }
175
+ var validatePublicEnvelopeInput = validateCoverInput;
176
+ var isPublicEnvelope = isCover;
177
+
178
+ // src/with-party/directory/cover/storage.ts
179
+ var COVER_RECORD_ID = "public-envelope";
180
+ async function loadCover(store, vault) {
181
+ const envelope = await store.get(vault, "_meta", COVER_RECORD_ID);
182
+ if (!envelope) return void 0;
183
+ try {
184
+ const parsed = JSON.parse(envelope._data);
185
+ if (!isCover(parsed)) return void 0;
186
+ return parsed;
187
+ } catch {
188
+ return void 0;
189
+ }
190
+ }
191
+ async function saveCover(store, vault, cover) {
192
+ const wireEnvelope = {
193
+ _noydb: NOYDB_FORMAT_VERSION,
194
+ _v: 1,
195
+ _ts: (/* @__PURE__ */ new Date()).toISOString(),
196
+ _iv: "",
197
+ _data: JSON.stringify(cover)
198
+ };
199
+ await store.put(vault, "_meta", COVER_RECORD_ID, wireEnvelope);
200
+ }
201
+ async function readCover(store, vault, opts = {}) {
202
+ const raw = await loadCover(store, vault);
203
+ if (!raw) return void 0;
204
+ if (opts.locale === void 0) return raw;
205
+ return resolveLocale(raw, opts.locale);
206
+ }
207
+ function resolveLocale(cover, locale) {
208
+ return {
209
+ ...cover,
210
+ ...cover.name !== void 0 ? { name: pickLocale(cover.name, locale, cover.defaultLocale) } : {},
211
+ ...cover.description !== void 0 ? { description: pickLocale(cover.description, locale, cover.defaultLocale) } : {}
212
+ };
213
+ }
214
+ function pickLocale(value, locale, defaultLocale) {
215
+ if (typeof value === "string") return value;
216
+ if (value[locale] !== void 0 && value[locale] !== "") return value[locale];
217
+ if (defaultLocale && value[defaultLocale] !== void 0 && value[defaultLocale] !== "") {
218
+ return value[defaultLocale];
219
+ }
220
+ for (const v of Object.values(value)) {
221
+ if (v !== "") return v;
222
+ }
223
+ return "";
224
+ }
225
+ var PUBLIC_ENVELOPE_RECORD_ID = COVER_RECORD_ID;
226
+ var loadPublicEnvelope = loadCover;
227
+ var savePublicEnvelope = saveCover;
228
+ var readPublicEnvelope = readCover;
229
+
230
+ export {
231
+ mergeCustom,
232
+ validateCoverSize,
233
+ validateCoverInput,
234
+ isCover,
235
+ validatePublicEnvelopeInput,
236
+ isPublicEnvelope,
237
+ COVER_RECORD_ID,
238
+ loadCover,
239
+ saveCover,
240
+ readCover,
241
+ resolveLocale,
242
+ pickLocale,
243
+ PUBLIC_ENVELOPE_RECORD_ID,
244
+ loadPublicEnvelope,
245
+ savePublicEnvelope,
246
+ readPublicEnvelope
247
+ };
248
+ //# sourceMappingURL=chunk-XUW3PXHU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/with-party/directory/cover/custom.ts","../src/with-party/directory/cover/schema.ts","../src/with-party/directory/cover/storage.ts"],"sourcesContent":["/**\n * The cover's namespaced `custom` extension slot (#800) — input\n * validation, the namespace-level patch merge, and the post-merge\n * size caps.\n *\n * Like everything on the cover, `custom` is plaintext, public by\n * design, and unauthenticated — payloads are hints (display defaults,\n * routing suggestions, registry pointers), never an input to\n * security, authorization, or data-integrity decisions.\n *\n * @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/public-envelope.md\n *\n * @module\n */\nimport { ValidationError } from '../../../kernel/errors.js'\nimport type { Cover, JsonValue, ResolvedCoverSchema } from './types.js'\n\n/**\n * Namespace keys must be reverse-DNS or package-style identifiers —\n * at least one dot/dash-separated segment (`noydb.viewer`,\n * `com.acme.registry` pass; a bare `config` fails), so two frameworks\n * can't collide on a bare word.\n */\nconst CUSTOM_KEY_PATTERN = /^[a-z0-9]+([.-][a-z0-9]+)+$/i\n\n/** Maximum nesting depth of a namespace payload (containers, not leaves). */\nconst MAX_CUSTOM_DEPTH = 8\n\n/**\n * Validate the owner-supplied `custom` input: the field must be a\n * plain object, every key must match {@link CUSTOM_KEY_PATTERN}, and\n * every value must be JSON-serializable (no functions, `undefined`,\n * symbols, bigints, or cycles) within the depth cap. `null` is\n * accepted — it is the delete-this-namespace directive and never\n * persists. Throws `ValidationError` on the first violation.\n */\nexport function validateCustomInput(custom: Record<string, JsonValue>): void {\n if (custom === null || typeof custom !== 'object' || Array.isArray(custom)) {\n throw new ValidationError(\n `setCover: custom must be a { [namespace]: value } object, got ${\n Array.isArray(custom) ? 'array' : typeof custom\n }.`,\n )\n }\n for (const [ns, value] of Object.entries(custom)) {\n if (!CUSTOM_KEY_PATTERN.test(ns)) {\n throw new ValidationError(\n `setCover: custom namespace \"${ns}\" is invalid. Keys must be ` +\n 'reverse-DNS or package-style identifiers with at least one ' +\n 'dot/dash-separated segment (e.g. \"noydb.viewer\", \"com.acme.registry\").',\n )\n }\n assertJsonValue(value, ns, 1, new Set())\n }\n}\n\nfunction assertJsonValue(\n value: unknown,\n ns: string,\n depth: number,\n seen: Set<object>,\n): void {\n if (value === null) return\n const t = typeof value\n if (t === 'string' || t === 'number' || t === 'boolean') return\n if (t !== 'object') {\n throw new ValidationError(\n `setCover: custom[\"${ns}\"] contains a non-JSON value (${t}). ` +\n 'Only strings, numbers, booleans, null, arrays, and plain objects are allowed.',\n )\n }\n const container = value as object\n if (seen.has(container)) {\n throw new ValidationError(\n `setCover: custom[\"${ns}\"] contains a circular reference.`,\n )\n }\n if (depth > MAX_CUSTOM_DEPTH) {\n throw new ValidationError(\n `setCover: custom[\"${ns}\"] nests deeper than the ${MAX_CUSTOM_DEPTH}-level cap.`,\n )\n }\n seen.add(container)\n const children = Array.isArray(container) ? container : Object.values(container)\n for (const child of children) {\n assertJsonValue(child, ns, depth + 1, seen)\n }\n seen.delete(container)\n}\n\n/**\n * Namespace-level patch merge for `setCover`: provided namespaces\n * replace their previous value, absent namespaces are preserved, and\n * an explicit `null` deletes that namespace (so `null` never persists\n * as a namespace value). A whole-`custom`-absent patch preserves the\n * previous custom, consistent with the other cover fields. Rationale:\n * framework A must never need read-modify-write of framework B's data.\n *\n * Returns a spreadable fragment — `{ custom }` when the merge leaves\n * at least one namespace, `{}` when it leaves none (the field is\n * dropped from the persisted document rather than stored empty).\n */\nexport function mergeCustom(\n existing: Record<string, JsonValue> | undefined,\n patch: Record<string, JsonValue> | undefined,\n): { custom: Record<string, JsonValue> } | Record<string, never> {\n if (patch === undefined) {\n return existing !== undefined ? { custom: existing } : {}\n }\n const merged: Record<string, JsonValue> = { ...existing }\n for (const [ns, value] of Object.entries(patch)) {\n if (value === null) {\n delete merged[ns]\n } else {\n merged[ns] = value\n }\n }\n return Object.keys(merged).length > 0 ? { custom: merged } : {}\n}\n\n/**\n * Post-merge size caps — validates the WOULD-BE-PERSISTED document\n * (after the namespace merge), so a small patch can't tip the stored\n * cover over a cap unnoticed. `maxCoverBytes` bounds the entire\n * serialized document, which also closes the unbounded locale-map\n * key-count hole for `name` / `description`. Sizes are measured as\n * `JSON.stringify` length. Throws `ValidationError` on violation.\n */\nexport function validateCoverSize(\n cover: Cover,\n schema: ResolvedCoverSchema,\n): void {\n if (cover.custom !== undefined) {\n const customSize = JSON.stringify(cover.custom).length\n if (customSize > schema.maxCustomBytes) {\n throw new ValidationError(\n `setCover: custom exceeds the ${schema.maxCustomBytes}-byte cap ` +\n `(got ${customSize} bytes serialized, after merging with the stored namespaces).`,\n )\n }\n }\n const totalSize = JSON.stringify(cover).length\n if (totalSize > schema.maxCoverBytes) {\n throw new ValidationError(\n `setCover: the cover document exceeds the ${schema.maxCoverBytes}-byte cap ` +\n `(got ${totalSize} bytes serialized).`,\n )\n }\n}\n","/**\n * Validate-on-write for the cover. Runs at every `setCover` call;\n * the developer's schema decides which fields are allowed and the\n * size caps that apply.\n *\n * @module\n */\nimport { ValidationError } from '../../../kernel/errors.js'\nimport { validateCustomInput } from './custom.js'\nimport type {\n Cover,\n CoverText,\n JsonValue,\n ResolvedCoverSchema,\n CoverField,\n} from './types.js'\n\n/** Owner-supplied input — the subset of {@link Cover} the owner can set. */\nexport interface SetCoverInput {\n readonly name?: CoverText\n readonly description?: CoverText\n readonly icon?: string\n readonly defaultLocale?: string\n /**\n * Namespace-level patch for the cover's `custom` slot (#800):\n * provided namespaces replace their previous value, absent\n * namespaces are preserved, an explicit `null` deletes that\n * namespace. Requires `'custom'` in the schema's `fields` list —\n * the `cover: true` shorthand does NOT enable it.\n */\n readonly custom?: Record<string, JsonValue>\n}\n\nconst DATA_URL_PREFIX = /^data:([a-zA-Z0-9.+-]+\\/[a-zA-Z0-9.+-]+);base64,/\n\n/**\n * Validate an owner-supplied cover input against the developer's\n * resolved schema. Throws `ValidationError` on the first violation;\n * returns void on success.\n *\n * The validator is deliberately strict: every fail mode is a hard\n * error rather than a silent drop, so the owner finds out immediately\n * which field they oversized rather than discovering a truncated\n * label months later.\n */\nexport function validateCoverInput(\n input: SetCoverInput,\n schema: ResolvedCoverSchema,\n): void {\n const allowed = new Set<CoverField>(schema.fields)\n\n // Reject any key not in the schema's allowed-field list.\n for (const key of Object.keys(input)) {\n const known: CoverField | undefined =\n key === 'name' || key === 'description' || key === 'icon' || key === 'defaultLocale' || key === 'custom'\n ? key\n : undefined\n if (!known) {\n throw new ValidationError(\n `setCover: unknown field \"${key}\". ` +\n `Allowed fields: ${[...allowed].join(', ')}.`,\n )\n }\n if (!allowed.has(known)) {\n throw new ValidationError(\n `setCover: field \"${known}\" is not enabled in this vault's schema. ` +\n `Allowed fields: ${[...allowed].join(', ')}.`,\n )\n }\n }\n\n if (input.name !== undefined) {\n validateText(input.name, 'name', schema.maxStringChars)\n }\n if (input.description !== undefined) {\n validateText(input.description, 'description', schema.maxStringChars)\n }\n if (input.icon !== undefined) {\n validateIcon(input.icon, schema)\n }\n if (input.defaultLocale !== undefined && typeof input.defaultLocale !== 'string') {\n throw new ValidationError(\n `setCover: defaultLocale must be a string (BCP-47), got ${typeof input.defaultLocale}.`,\n )\n }\n if (input.custom !== undefined) {\n validateCustomInput(input.custom)\n }\n}\n\nfunction validateText(\n value: CoverText,\n field: string,\n maxChars: number,\n): void {\n if (typeof value === 'string') {\n if (value.length > maxChars) {\n throw new ValidationError(\n `setCover: ${field} exceeds the ${maxChars}-character cap (got ${value.length}).`,\n )\n }\n return\n }\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new ValidationError(\n `setCover: ${field} must be a string or { [locale]: string } map, got ${typeof value}.`,\n )\n }\n // Locale map. Each value must be a non-empty string within the cap.\n for (const [locale, str] of Object.entries(value)) {\n if (typeof str !== 'string') {\n throw new ValidationError(\n `setCover: ${field}[${locale}] must be a string, got ${typeof str}.`,\n )\n }\n if (str.length > maxChars) {\n throw new ValidationError(\n `setCover: ${field}[${locale}] exceeds the ${maxChars}-character cap (got ${str.length}).`,\n )\n }\n }\n}\n\nfunction validateIcon(icon: string, schema: ResolvedCoverSchema): void {\n if (typeof icon !== 'string') {\n throw new ValidationError(\n `setCover: icon must be a data: URL string, got ${typeof icon}.`,\n )\n }\n if (icon.length > schema.maxIconBytes) {\n throw new ValidationError(\n `setCover: icon exceeds the ${schema.maxIconBytes}-byte cap (got ${icon.length}).`,\n )\n }\n const m = DATA_URL_PREFIX.exec(icon)\n if (!m) {\n throw new ValidationError(\n 'setCover: icon must be a base64 data URL ' +\n '(`data:image/png;base64,…` or `data:image/svg+xml;base64,…`). ' +\n 'External URLs are not supported in v1.',\n )\n }\n const mime = m[1]!\n if (!schema.iconMimeTypes.includes(mime)) {\n throw new ValidationError(\n `setCover: icon MIME type \"${mime}\" is not allowed. ` +\n `Permitted types: ${schema.iconMimeTypes.join(', ')}.`,\n )\n }\n}\n\n/**\n * Lightweight runtime predicate — used by the bundle header\n * validator to recognise a cover without requiring it. (The wire\n * discriminator keeps its frozen name: `_noydb_public: 1`.)\n */\nexport function isCover(x: unknown): x is Cover {\n if (x === null || typeof x !== 'object' || Array.isArray(x)) return false\n const obj = x as Record<string, unknown>\n return obj['_noydb_public'] === 1 && typeof obj['version'] === 'number'\n}\n\n// ─── Deprecated aliases (#799 public-envelope → cover; remove after one pre-release window) ───\n\n/** @deprecated Use {@link SetCoverInput}. */\nexport type SetPublicEnvelopeInput = SetCoverInput\n/** @deprecated Use {@link validateCoverInput}. */\nexport const validatePublicEnvelopeInput = validateCoverInput\n/** @deprecated Use {@link isCover}. */\nexport const isPublicEnvelope = isCover\n","/**\n * Persistence helpers for `_meta/public-envelope` — the cover's\n * frozen wire location. Mirrors the bypass-AES pattern used by\n * `_meta/handle` and `_meta/policy` — the document is plaintext\n * JSON, the envelope's `_iv` field is left empty.\n *\n * @module\n */\nimport type { NoydbStore, EncryptedEnvelope } from '../../../kernel/types.js'\nimport { NOYDB_FORMAT_VERSION } from '../../../kernel/types.js'\nimport type { Cover } from './types.js'\nimport { isCover } from './schema.js'\n\n/**\n * Reserved id for the vault-level cover record. The VALUE is frozen\n * wire format — the record predates the #799 rename and stays at\n * `_meta/public-envelope` so existing vaults need no migration.\n */\nexport const COVER_RECORD_ID = 'public-envelope'\n\n/**\n * Read the cover from `_meta/public-envelope`. Returns `undefined`\n * when no cover has been persisted (fresh vault, or a vault written\n * before the feature was enabled). Tolerates corrupted documents —\n * a JSON parse failure surfaces as `undefined`, not a thrown error,\n * mirroring `_meta/handle`'s contract.\n */\nexport async function loadCover(\n store: NoydbStore,\n vault: string,\n): Promise<Cover | undefined> {\n const envelope = await store.get(vault, '_meta', COVER_RECORD_ID)\n if (!envelope) return undefined\n try {\n const parsed = JSON.parse(envelope._data) as unknown\n if (!isCover(parsed)) return undefined\n return parsed\n } catch {\n return undefined\n }\n}\n\n/** Persist the cover. Idempotent — overwrites any prior write. */\nexport async function saveCover(\n store: NoydbStore,\n vault: string,\n cover: Cover,\n): Promise<void> {\n const wireEnvelope: EncryptedEnvelope = {\n _noydb: NOYDB_FORMAT_VERSION,\n _v: 1,\n _ts: new Date().toISOString(),\n _iv: '',\n _data: JSON.stringify(cover),\n }\n await store.put(vault, '_meta', COVER_RECORD_ID, wireEnvelope)\n}\n\n/**\n * Public, no-key reader. Plain function, not a method on `Noydb` —\n * the whole point is it works without an authenticated session, so\n * a UI can show \"Acme 2026 Tax Records\" before unlocking.\n *\n * Resolves any `name` / `description` locale map through the supplied\n * `locale` (when provided). Omitting `locale` returns the raw\n * cover, which a multilingual picker can render as it pleases.\n */\nexport async function readCover(\n store: NoydbStore,\n vault: string,\n opts: { readonly locale?: string } = {},\n): Promise<Cover | undefined> {\n const raw = await loadCover(store, vault)\n if (!raw) return undefined\n if (opts.locale === undefined) return raw\n return resolveLocale(raw, opts.locale)\n}\n\n/**\n * Resolve the locale-map fields (`name`, `description`) of a cover\n * to plain strings for the requested locale, falling back through\n * `defaultLocale` and then any available translation.\n *\n * @internal\n */\nexport function resolveLocale(\n cover: Cover,\n locale: string,\n): Cover {\n return {\n ...cover,\n ...(cover.name !== undefined ? { name: pickLocale(cover.name, locale, cover.defaultLocale) } : {}),\n ...(cover.description !== undefined ? { description: pickLocale(cover.description, locale, cover.defaultLocale) } : {}),\n }\n}\n\n/**\n * Resolve a `string | { [locale]: string }` value to a string for a\n * given locale. Exported so the bundle reader can reuse it without\n * duplicating the fallback chain.\n *\n * **Looser than `resolveI18nText`** — the hub's record-field resolver\n * throws `LocaleNotSpecifiedError` when no translation matches, but\n * label semantics deliberately prefer \"show *something*\" over\n * throwing. The fallback chain is:\n * 1. Exact `locale` match.\n * 2. `defaultLocale` (when supplied on the cover).\n * 3. First non-empty value in the map.\n * 4. Empty string (only if every translation is empty — pathological).\n *\n * This deviation is documented in `https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/public-envelope.md`.\n */\nexport function pickLocale(\n value: string | Record<string, string>,\n locale: string,\n defaultLocale: string | undefined,\n): string {\n if (typeof value === 'string') return value\n if (value[locale] !== undefined && value[locale] !== '') return value[locale]\n if (defaultLocale && value[defaultLocale] !== undefined && value[defaultLocale] !== '') {\n return value[defaultLocale]\n }\n for (const v of Object.values(value)) {\n if (v !== '') return v\n }\n return ''\n}\n\n// ─── Deprecated aliases (#799 public-envelope → cover; remove after one pre-release window) ───\n\n/** @deprecated Use {@link COVER_RECORD_ID}. */\nexport const PUBLIC_ENVELOPE_RECORD_ID = COVER_RECORD_ID\n/** @deprecated Use {@link loadCover}. */\nexport const loadPublicEnvelope = loadCover\n/** @deprecated Use {@link saveCover}. */\nexport const savePublicEnvelope = saveCover\n/** @deprecated Use {@link readCover}. */\nexport const readPublicEnvelope = readCover\n"],"mappings":"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","names":[]}
@@ -4,19 +4,19 @@ import {
4
4
  grant,
5
5
  revoke,
6
6
  rotateKeys
7
- } from "./chunk-J2ZX2XUV.js";
7
+ } from "./chunk-554KLAAN.js";
8
8
  import {
9
9
  openEnvelopeJson
10
- } from "./chunk-XDYREZWE.js";
10
+ } from "./chunk-W4TCUGQR.js";
11
11
  import {
12
12
  encrypt
13
- } from "./chunk-CIE2BASH.js";
13
+ } from "./chunk-HOONYZY2.js";
14
14
  import {
15
15
  NOYDB_FORMAT_VERSION
16
- } from "./chunk-JNAI2HN2.js";
16
+ } from "./chunk-VCTXU4AT.js";
17
17
  import {
18
18
  PermissionDeniedError
19
- } from "./chunk-BIOUI4HL.js";
19
+ } from "./chunk-W2OG6JOL.js";
20
20
 
21
21
  // src/with-party/team/active.ts
22
22
  function withTeam() {
@@ -96,4 +96,4 @@ export {
96
96
  listCredentials,
97
97
  credentialStatus
98
98
  };
99
- //# sourceMappingURL=chunk-I6GALP6E.js.map
99
+ //# sourceMappingURL=chunk-YCH5GBN6.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ConflictError,
3
3
  PodVersionConflictError
4
- } from "./chunk-BIOUI4HL.js";
4
+ } from "./chunk-W2OG6JOL.js";
5
5
 
6
6
  // src/with-pod/pod-store.ts
7
7
  var BUNDLE_STORE_VERSION = 1;
@@ -152,4 +152,4 @@ export {
152
152
  wrapBundleStore,
153
153
  createBundleStore
154
154
  };
155
- //# sourceMappingURL=chunk-RZ5SVOYR.js.map
155
+ //# sourceMappingURL=chunk-YTGDPCPW.js.map
@@ -4,7 +4,7 @@ import {
4
4
  chainAnchor,
5
5
  loadPeriods,
6
6
  validatePeriodName
7
- } from "./chunk-DLG74CNB.js";
7
+ } from "./chunk-XTHCN77N.js";
8
8
 
9
9
  // src/with-audit/periods/active.ts
10
10
  function withPeriods() {
@@ -20,4 +20,4 @@ function withPeriods() {
20
20
  export {
21
21
  withPeriods
22
22
  };
23
- //# sourceMappingURL=chunk-UNFPPVNI.js.map
23
+ //# sourceMappingURL=chunk-YZQOGE2L.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  installViaBinder
3
- } from "./chunk-4VNQOLML.js";
3
+ } from "./chunk-JVBO4SZL.js";
4
4
  import {
5
5
  SealedHandle
6
- } from "./chunk-JNAI2HN2.js";
6
+ } from "./chunk-VCTXU4AT.js";
7
7
  import {
8
8
  ClassifiedConfigError,
9
9
  ClassifiedNotEnabledError
10
- } from "./chunk-BIOUI4HL.js";
10
+ } from "./chunk-W2OG6JOL.js";
11
11
 
12
12
  // src/via/classified/descriptor.ts
13
13
  function isClassifiedFieldSpec(x) {
@@ -262,4 +262,4 @@ export {
262
262
  enforceClassifiedWrite,
263
263
  NO_CLASSIFIED
264
264
  };
265
- //# sourceMappingURL=chunk-MV43JSJF.js.map
265
+ //# sourceMappingURL=chunk-Z4PD65VQ.js.map
@@ -2,20 +2,20 @@ import {
2
2
  ATTESTATIONS_COLLECTION,
3
3
  REVOKED_RECORD_ID,
4
4
  loadOrCreateSigner
5
- } from "./chunk-EXK7QRWF.js";
5
+ } from "./chunk-WOM2HTML.js";
6
6
  import {
7
7
  openEnvelopeJson
8
- } from "./chunk-XDYREZWE.js";
8
+ } from "./chunk-W4TCUGQR.js";
9
9
  import {
10
10
  encrypt
11
- } from "./chunk-CIE2BASH.js";
11
+ } from "./chunk-HOONYZY2.js";
12
12
  import {
13
13
  NOYDB_FORMAT_VERSION
14
- } from "./chunk-JNAI2HN2.js";
14
+ } from "./chunk-VCTXU4AT.js";
15
15
  import {
16
16
  AttestationError,
17
17
  ConflictError
18
- } from "./chunk-BIOUI4HL.js";
18
+ } from "./chunk-W2OG6JOL.js";
19
19
 
20
20
  // src/with-audit/attestation/revoke.ts
21
21
  import { signRevocationList } from "@noy-db/attestation";
@@ -82,4 +82,4 @@ export {
82
82
  getRevokedDocIdsCore,
83
83
  publishRevocationListCore
84
84
  };
85
- //# sourceMappingURL=chunk-YFXZEAYK.js.map
85
+ //# sourceMappingURL=chunk-ZXEZCY6F.js.map
@@ -2,7 +2,7 @@ import {
2
2
  classified,
3
3
  luhnCheck,
4
4
  withClassified
5
- } from "../chunk-EQO2UVP4.js";
5
+ } from "../chunk-KS6SAVCZ.js";
6
6
  import {
7
7
  ClassifiedNeverStoredError,
8
8
  ClassifiedValidationError,
@@ -11,15 +11,15 @@ import {
11
11
  isClassifiedFieldSpec,
12
12
  isClassifiedGroup,
13
13
  resolveClassifiedFields
14
- } from "../chunk-MV43JSJF.js";
15
- import "../chunk-4VNQOLML.js";
16
- import "../chunk-JNAI2HN2.js";
14
+ } from "../chunk-Z4PD65VQ.js";
15
+ import "../chunk-JVBO4SZL.js";
16
+ import "../chunk-VCTXU4AT.js";
17
17
  import {
18
18
  ClassifiedConfigError,
19
19
  ClassifiedRevealError,
20
20
  ClassifiedRotationError,
21
21
  ClassifiedVerifyError
22
- } from "../chunk-BIOUI4HL.js";
22
+ } from "../chunk-W2OG6JOL.js";
23
23
  import "../chunk-PZ5AY32C.js";
24
24
  export {
25
25
  ClassifiedConfigError,
@@ -13,11 +13,11 @@ function markerForFields(vdigFields) {
13
13
  async function persistClassifiedMarkerForFields(store, vault, collectionName, vdigFields, dek) {
14
14
  const marker = markerForFields(vdigFields);
15
15
  if (marker === null) return;
16
- const { persistClassifiedMarker } = await import("./register-VAHONCID.js");
16
+ const { persistClassifiedMarker } = await import("./register-PAM3ASRZ.js");
17
17
  await persistClassifiedMarker({ store, vault, collectionName, dek, marker });
18
18
  }
19
19
  async function readClassifiedMarkerDigestOnly(store, vault, collectionName, dek) {
20
- const { loadPersistedSchema } = await import("./storage-MVFCGEQE.js");
20
+ const { loadPersistedSchema } = await import("./storage-3MEJUENZ.js");
21
21
  const persisted = await loadPersistedSchema(store, vault, collectionName, dek);
22
22
  return persisted?.classified?.digestOnly ?? [];
23
23
  }
@@ -25,4 +25,4 @@ export {
25
25
  persistClassifiedMarkerForFields,
26
26
  readClassifiedMarkerDigestOnly
27
27
  };
28
- //# sourceMappingURL=classified-marker-CZKA6ITE.js.map
28
+ //# sourceMappingURL=classified-marker-QWMASIT7.js.map
@@ -0,0 +1,44 @@
1
+ import {
2
+ buildPersistedIndexCallbacks,
3
+ buildRetrievalDocs,
4
+ embedOnWrite,
5
+ flushIndex,
6
+ hasIndexedBlobFields,
7
+ rebuildEmbeddings,
8
+ retrieve,
9
+ search,
10
+ similarTo,
11
+ syncTierSearch,
12
+ warmIndex
13
+ } from "./chunk-IK43HLDQ.js";
14
+ import "./chunk-AURFOK3D.js";
15
+ import "./chunk-QDPZWTN2.js";
16
+ import "./chunk-MT62YSPZ.js";
17
+ import "./chunk-GULTLPFB.js";
18
+ import "./chunk-JVBO4SZL.js";
19
+ import "./chunk-DRWBEDYO.js";
20
+ import "./chunk-WQIYTNJV.js";
21
+ import "./chunk-W4TCUGQR.js";
22
+ import "./chunk-A4FXFAKF.js";
23
+ import "./chunk-IY23KFNZ.js";
24
+ import "./chunk-N6WF5PKC.js";
25
+ import "./chunk-6HY2X62D.js";
26
+ import "./chunk-LP7BEXCT.js";
27
+ import "./chunk-HOONYZY2.js";
28
+ import "./chunk-VCTXU4AT.js";
29
+ import "./chunk-W2OG6JOL.js";
30
+ import "./chunk-PZ5AY32C.js";
31
+ export {
32
+ buildPersistedIndexCallbacks,
33
+ buildRetrievalDocs,
34
+ embedOnWrite,
35
+ flushIndex,
36
+ hasIndexedBlobFields,
37
+ rebuildEmbeddings,
38
+ retrieve,
39
+ search,
40
+ similarTo,
41
+ syncTierSearch,
42
+ warmIndex
43
+ };
44
+ //# sourceMappingURL=collection-facade-KMBWNCYP.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ComputedFieldError,
3
3
  evalComputedFields
4
- } from "./chunk-ZJ2AK4V7.js";
5
- import "./chunk-BIOUI4HL.js";
4
+ } from "./chunk-6HPG2YNX.js";
5
+ import "./chunk-W2OG6JOL.js";
6
6
  import "./chunk-PZ5AY32C.js";
7
7
  export {
8
8
  ComputedFieldError,
9
9
  evalComputedFields
10
10
  };
11
- //# sourceMappingURL=computed-ZIQTYTDI.js.map
11
+ //# sourceMappingURL=computed-DSMPXG2Y.js.map
@@ -2,17 +2,17 @@ import {
2
2
  CONSENT_AUDIT_COLLECTION,
3
3
  loadConsentEntries,
4
4
  writeConsentEntry
5
- } from "../chunk-T2FFWNPK.js";
5
+ } from "../chunk-RNG4VRP4.js";
6
6
  import "../chunk-ZJADGNYF.js";
7
- import "../chunk-XDYREZWE.js";
8
- import "../chunk-7DSTRQIJ.js";
9
- import "../chunk-HB3RFQSC.js";
10
- import "../chunk-JKJOGPZN.js";
11
- import "../chunk-5M5DVGV7.js";
7
+ import "../chunk-W4TCUGQR.js";
8
+ import "../chunk-A4FXFAKF.js";
9
+ import "../chunk-IY23KFNZ.js";
10
+ import "../chunk-N6WF5PKC.js";
11
+ import "../chunk-6HY2X62D.js";
12
12
  import "../chunk-LP7BEXCT.js";
13
- import "../chunk-CIE2BASH.js";
14
- import "../chunk-JNAI2HN2.js";
15
- import "../chunk-BIOUI4HL.js";
13
+ import "../chunk-HOONYZY2.js";
14
+ import "../chunk-VCTXU4AT.js";
15
+ import "../chunk-W2OG6JOL.js";
16
16
  import "../chunk-PZ5AY32C.js";
17
17
 
18
18
  // src/with-audit/consent/active.ts
@@ -1,32 +1,52 @@
1
1
  import {
2
+ COVER_FIELDS,
3
+ DEFAULT_COVER_SCHEMA,
2
4
  DEFAULT_PUBLIC_ENVELOPE_SCHEMA,
3
5
  PUBLIC_ENVELOPE_FIELDS,
4
6
  resolveSchema
5
- } from "./chunk-WXSYDNBT.js";
7
+ } from "./chunk-FH52K7EG.js";
6
8
  import {
9
+ COVER_RECORD_ID,
7
10
  PUBLIC_ENVELOPE_RECORD_ID,
11
+ isCover,
8
12
  isPublicEnvelope,
13
+ loadCover,
9
14
  loadPublicEnvelope,
15
+ mergeCustom,
10
16
  pickLocale,
17
+ readCover,
11
18
  readPublicEnvelope,
12
19
  resolveLocale,
20
+ saveCover,
13
21
  savePublicEnvelope,
22
+ validateCoverInput,
23
+ validateCoverSize,
14
24
  validatePublicEnvelopeInput
15
- } from "./chunk-X3YYQWOQ.js";
16
- import "./chunk-JNAI2HN2.js";
17
- import "./chunk-BIOUI4HL.js";
25
+ } from "./chunk-XUW3PXHU.js";
26
+ import "./chunk-VCTXU4AT.js";
27
+ import "./chunk-W2OG6JOL.js";
18
28
  import "./chunk-PZ5AY32C.js";
19
29
  export {
30
+ COVER_FIELDS,
31
+ COVER_RECORD_ID,
32
+ DEFAULT_COVER_SCHEMA,
20
33
  DEFAULT_PUBLIC_ENVELOPE_SCHEMA,
21
34
  PUBLIC_ENVELOPE_FIELDS,
22
35
  PUBLIC_ENVELOPE_RECORD_ID,
36
+ isCover,
23
37
  isPublicEnvelope,
38
+ loadCover,
24
39
  loadPublicEnvelope,
40
+ mergeCustom,
25
41
  pickLocale,
42
+ readCover,
26
43
  readPublicEnvelope,
27
44
  resolveLocale,
28
45
  resolveSchema,
46
+ saveCover,
29
47
  savePublicEnvelope,
48
+ validateCoverInput,
49
+ validateCoverSize,
30
50
  validatePublicEnvelopeInput
31
51
  };
32
- //# sourceMappingURL=public-envelope-B4KNWVUA.js.map
52
+ //# sourceMappingURL=cover-QJRXINN5.js.map
@@ -5,7 +5,7 @@ import "./chunk-PZ5AY32C.js";
5
5
 
6
6
  // src/with-shape/satellites/dead-filter.ts
7
7
  async function liveBaseIdSetsForBundle(store, vaultName, collectionNames, getDEK) {
8
- const { loadPersistedSchema } = await import("./storage-MVFCGEQE.js");
8
+ const { loadPersistedSchema } = await import("./storage-3MEJUENZ.js");
9
9
  const out = /* @__PURE__ */ new Map();
10
10
  for (const name of collectionNames) {
11
11
  if (name.startsWith("_")) continue;
@@ -25,4 +25,4 @@ async function liveBaseIdSetsForBundle(store, vaultName, collectionNames, getDEK
25
25
  export {
26
26
  liveBaseIdSetsForBundle
27
27
  };
28
- //# sourceMappingURL=dead-filter-ESOBZZP5.js.map
28
+ //# sourceMappingURL=dead-filter-66VGI6JV.js.map
@@ -0,0 +1,25 @@
1
+ import {
2
+ DELEGATIONS_COLLECTION,
3
+ issueDelegation,
4
+ loadActiveDelegations,
5
+ revokeDelegation
6
+ } from "./chunk-OCVM6KDH.js";
7
+ import "./chunk-UC2ETWF3.js";
8
+ import "./chunk-ZJADGNYF.js";
9
+ import "./chunk-W4TCUGQR.js";
10
+ import "./chunk-A4FXFAKF.js";
11
+ import "./chunk-IY23KFNZ.js";
12
+ import "./chunk-N6WF5PKC.js";
13
+ import "./chunk-6HY2X62D.js";
14
+ import "./chunk-LP7BEXCT.js";
15
+ import "./chunk-HOONYZY2.js";
16
+ import "./chunk-VCTXU4AT.js";
17
+ import "./chunk-W2OG6JOL.js";
18
+ import "./chunk-PZ5AY32C.js";
19
+ export {
20
+ DELEGATIONS_COLLECTION,
21
+ issueDelegation,
22
+ loadActiveDelegations,
23
+ revokeDelegation
24
+ };
25
+ //# sourceMappingURL=delegation-SU6CV3W7.js.map