@noy-db/hub 0.7.0-pre.7 → 0.7.0-pre.9
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.
- package/CHANGELOG.md +85 -0
- package/README.md +4 -1
- package/dist/api-GJQF7OAJ.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/at/index.js +9 -9
- package/dist/attestation/index.js +18 -18
- package/dist/{backup-SZBDQQSL.js → backup-QZQEP5RO.js} +12 -12
- package/dist/blobs/index.js +13 -13
- package/dist/broker/index.js +12 -12
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +30 -30
- package/dist/{chunk-AB5P32RE.js → chunk-2DGBRE4K.js} +2 -2
- package/dist/{chunk-XVU7J43V.js → chunk-2E2LT37H.js} +2 -2
- package/dist/{chunk-ILSR22WM.js → chunk-2MQ2D5OZ.js} +5 -5
- package/dist/{chunk-JHLJQUXU.js → chunk-357ECVLE.js} +3 -3
- package/dist/{chunk-SHILAQH5.js → chunk-3GIA3HJ2.js} +2 -2
- package/dist/{chunk-XLPXGN66.js → chunk-3SWP2FYA.js} +8 -8
- package/dist/{chunk-QU3YUP2X.js → chunk-4RUFYGWG.js} +2 -2
- package/dist/{chunk-4G25SDQL.js → chunk-4U52PMEL.js} +4 -4
- package/dist/{chunk-7XODKGTW.js → chunk-5EC7X5QA.js} +5 -5
- package/dist/{chunk-RJ7RIIX6.js → chunk-5NKHCJU5.js} +8 -8
- package/dist/{chunk-X6TBQKHW.js → chunk-5UKIZIO3.js} +2 -2
- package/dist/{chunk-VSLUSXVK.js → chunk-5W5CEHLA.js} +6 -6
- package/dist/{chunk-YPSOHDNC.js → chunk-65ZYRK7O.js} +2 -2
- package/dist/{chunk-PRHCMEUK.js → chunk-6L5IMNJX.js} +80 -80
- package/dist/{chunk-4ZPE6SKS.js → chunk-75WNTBZL.js} +3 -3
- package/dist/{chunk-7CWII4BL.js → chunk-7XT7KZTN.js} +10 -10
- package/dist/{chunk-HQINBNHM.js → chunk-7YVSWPZB.js} +7 -7
- package/dist/{chunk-Q7GEDVHC.js → chunk-AHIIBDNH.js} +7 -7
- package/dist/{chunk-XSN63FUS.js → chunk-AW4KTQA4.js} +2 -2
- package/dist/{chunk-KDJGJR7F.js → chunk-CWFH36SI.js} +2 -2
- package/dist/{chunk-X67FCULK.js → chunk-DIVY2CJZ.js} +3 -3
- package/dist/{chunk-Z2PWOSCJ.js → chunk-DNMTN46H.js} +2 -2
- package/dist/{chunk-BYBB4ABD.js → chunk-DOPZWTMJ.js} +8 -8
- package/dist/{chunk-HTGRQZFB.js → chunk-DZPMKY3J.js} +3 -3
- package/dist/{chunk-XJ3FEKEY.js → chunk-FKQCC4C5.js} +2 -2
- package/dist/{chunk-E6YA6UAP.js → chunk-FLRLZ4XZ.js} +2 -2
- package/dist/{chunk-4JDIRUTT.js → chunk-FN26SFGH.js} +2 -2
- package/dist/{chunk-BWWUXE3L.js → chunk-FPN5D4JX.js} +6 -6
- package/dist/{chunk-VVAVTSTR.js → chunk-FRIVOR5N.js} +4 -4
- package/dist/{chunk-3QARDAYW.js → chunk-FYT3DXPN.js} +2 -2
- package/dist/{chunk-H6WXKZL7.js → chunk-FZWAGG5T.js} +6 -6
- package/dist/{chunk-CBRS2NEK.js → chunk-GHADG5QZ.js} +2 -2
- package/dist/{chunk-LFDMKZIP.js → chunk-GKOJR53Y.js} +5 -5
- package/dist/{chunk-M7UC2QPT.js → chunk-GM4IM7TC.js} +2 -2
- package/dist/{chunk-S3I7VKID.js → chunk-H5GVPOB4.js} +5 -5
- package/dist/{chunk-4MZEZ37W.js → chunk-HLFLJCDX.js} +10 -8
- package/dist/{chunk-4MZEZ37W.js.map → chunk-HLFLJCDX.js.map} +1 -1
- package/dist/{chunk-EO2KGKEJ.js → chunk-HOIWW2LV.js} +4 -4
- package/dist/{chunk-ZQ2UUHSL.js → chunk-HS3LEVT4.js} +7 -7
- package/dist/{chunk-626TSARM.js → chunk-I5LSKXT6.js} +4 -4
- package/dist/{chunk-FKFIEEY6.js → chunk-IAHDSFFA.js} +10 -10
- package/dist/{chunk-ZKRRBRSZ.js → chunk-IS5LFHV2.js} +7 -7
- package/dist/{chunk-POS53FG6.js → chunk-IZTU6RKH.js} +2 -2
- package/dist/{chunk-VAG47QHV.js → chunk-J6FXVDKC.js} +2 -2
- package/dist/{chunk-2GXEQUEX.js → chunk-JFSUYGNE.js} +2 -2
- package/dist/{chunk-UALOYGCP.js → chunk-JILOSL4O.js} +3 -3
- package/dist/{chunk-WLFABTZ6.js → chunk-JRWLUWDM.js} +3 -3
- package/dist/{chunk-2QNKXGUS.js → chunk-JUBWUJY5.js} +2 -2
- package/dist/{chunk-JVLSU7S2.js → chunk-JY4U6CYV.js} +2 -2
- package/dist/{chunk-672U6STZ.js → chunk-K432FT7T.js} +4 -4
- package/dist/{chunk-WLLUM35R.js → chunk-KQIDBIZL.js} +2 -2
- package/dist/{chunk-LKFKXS5K.js → chunk-KZTPL7NL.js} +2 -2
- package/dist/{chunk-S2VG3ABP.js → chunk-LAI7ENPW.js} +3 -3
- package/dist/{chunk-L3FHEWA3.js → chunk-LUVGSKXE.js} +6 -6
- package/dist/{chunk-EXDIHWFO.js → chunk-MENI33ZV.js} +3 -3
- package/dist/{chunk-S6YB5ZRP.js → chunk-MOQ6OGKS.js} +4 -4
- package/dist/{chunk-OMHHGOG4.js → chunk-MQPHKJ74.js} +15 -13
- package/dist/chunk-MQPHKJ74.js.map +1 -0
- package/dist/{chunk-5ACAVJUI.js → chunk-MTTPHBIE.js} +2 -2
- package/dist/{chunk-T3PHCEN4.js → chunk-MU74BYOD.js} +3 -3
- package/dist/{chunk-26W5VETY.js → chunk-MV2OEK3K.js} +5 -5
- package/dist/{chunk-GU3LQYW2.js → chunk-N4CHCXDL.js} +1 -1
- package/dist/chunk-N4CHCXDL.js.map +1 -0
- package/dist/{chunk-44C2URL7.js → chunk-NMDMSHBF.js} +3 -3
- package/dist/{chunk-225O5CXQ.js → chunk-O3SNM66K.js} +2 -2
- package/dist/{chunk-YCSM3GZU.js → chunk-OEJ4R52I.js} +2 -2
- package/dist/{chunk-ZTYG36DH.js → chunk-OHGCRKWA.js} +57 -22
- package/dist/chunk-OHGCRKWA.js.map +1 -0
- package/dist/{chunk-UPJMBMCR.js → chunk-OKCQNMO6.js} +6 -6
- package/dist/{chunk-IF56DYJK.js → chunk-OLUTCM23.js} +7 -7
- package/dist/{chunk-RDHUZ674.js → chunk-OQDHIAR2.js} +4 -4
- package/dist/{chunk-4TZUFNXL.js → chunk-P22XPNFW.js} +2 -2
- package/dist/{chunk-L3HDEHGM.js → chunk-P2RJAVMR.js} +4 -4
- package/dist/{chunk-UCUALOSM.js → chunk-P7KJME6C.js} +2 -2
- package/dist/{chunk-XWNLKG6R.js → chunk-PCIBCL26.js} +3 -3
- package/dist/{chunk-4A4TYISP.js → chunk-PV7XXAXK.js} +2 -2
- package/dist/{chunk-BOFRKAUS.js → chunk-Q2OAAREU.js} +6 -6
- package/dist/{chunk-Z7ZXZL6Y.js → chunk-Q2ZN5DWZ.js} +2 -2
- package/dist/{chunk-JJZIIJSA.js → chunk-QJLOWGOU.js} +5 -5
- package/dist/{chunk-7LYUJNU3.js → chunk-QOHGWFAW.js} +2 -2
- package/dist/{chunk-6AQIFBSP.js → chunk-RCONOOVF.js} +5 -5
- package/dist/{chunk-Y3XWRDAM.js → chunk-RHTPGS56.js} +3 -3
- package/dist/{chunk-VFIWDPXZ.js → chunk-RPX2H2OL.js} +3 -3
- package/dist/{chunk-JBIV4FLR.js → chunk-SW4TOSJL.js} +5 -1
- package/dist/chunk-SW4TOSJL.js.map +1 -0
- package/dist/{chunk-6NRVFD55.js → chunk-SWFIXQF5.js} +6 -6
- package/dist/{chunk-U6GCYG2T.js → chunk-TAJZ7GXO.js} +3 -3
- package/dist/{chunk-XBFEKTIY.js → chunk-TQGT5BZE.js} +4 -4
- package/dist/{chunk-TOV6VMHF.js → chunk-U3RMWOXY.js} +3 -3
- package/dist/{chunk-PUJTKLPL.js → chunk-UL7TLJ54.js} +3 -3
- package/dist/{chunk-W5LHQXZU.js → chunk-USKHHOIV.js} +2 -2
- package/dist/{chunk-J4MN6XIU.js → chunk-UTFY6W6X.js} +2 -2
- package/dist/{chunk-P6ASQOZR.js → chunk-VT4DTCK5.js} +2 -2
- package/dist/{chunk-4FPEWQKF.js → chunk-VTTDPGEK.js} +27 -17
- package/dist/chunk-VTTDPGEK.js.map +1 -0
- package/dist/{chunk-HSGEIMJS.js → chunk-X6YRP5EC.js} +5 -5
- package/dist/{chunk-FOG7YEJP.js → chunk-XGXVPCYW.js} +3 -3
- package/dist/{chunk-5263OEM3.js → chunk-XJP66QEN.js} +2 -2
- package/dist/{chunk-OPXR4PB2.js → chunk-XKA6UH5V.js} +2 -2
- package/dist/{chunk-XDVVBETV.js → chunk-YHIAWECL.js} +2 -2
- package/dist/{chunk-F7ZFRPGQ.js → chunk-ZB2K3FV7.js} +2 -2
- package/dist/{chunk-NLKLXXTO.js → chunk-ZQGRZN5L.js} +2 -2
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-KL4YXUXD.js → classified-marker-R37XW5PC.js} +3 -3
- package/dist/collection-facade-OPJ3EC4L.js +45 -0
- package/dist/{computed-ASBNTLOK.js → computed-HW6IG5UH.js} +3 -3
- package/dist/consent/index.js +9 -9
- package/dist/cover/index.js +9 -9
- package/dist/custody/index.js +12 -12
- package/dist/{dead-filter-ZGRFZKYE.js → dead-filter-GRT6RAML.js} +2 -2
- package/dist/debug/index.js +1 -1
- package/dist/{delegation-2DO3VI5E.js → delegation-6QRAYSK6.js} +11 -11
- package/dist/derivations/index.js +12 -12
- package/dist/derive-AAIXSQIE.js +22 -0
- package/dist/directory/index.js +10 -10
- package/dist/{dispatch-FNCCONFK.js → dispatch-DR3XITEC.js} +18 -18
- package/dist/{dispatch-M62IAL2S.js → dispatch-QCF7KPIP.js} +5 -5
- package/dist/{enclave-4P4KH5ZW.js → enclave-OXZY3NOP.js} +9 -9
- package/dist/executor-67NA4KPO.js +29 -0
- package/dist/executor-7JDP7UBK.js +9 -0
- package/dist/executor-CRH5OB4V.js +9 -0
- package/dist/export-accessible-K4GJAU7U.js +23 -0
- package/dist/extract-partition-YJFL5OKK.js +38 -0
- package/dist/{fanout-sidecar-BRQHWTZQ.js → fanout-sidecar-KGQCUJ7P.js} +9 -9
- package/dist/find-SVZHMEQI.js +11 -0
- package/dist/forget/index.js +9 -9
- package/dist/guards/index.js +4 -4
- package/dist/history/index.js +13 -13
- package/dist/i18n/index.js +14 -14
- package/dist/index.js +92 -92
- package/dist/indexing/index.js +2 -2
- package/dist/introspection/index.js +11 -11
- package/dist/issue-64N6OG7U.js +19 -0
- package/dist/kernel/errors.d.ts +17 -0
- package/dist/kernel/types.d.ts +27 -0
- package/dist/{ledger-4X5ZH43X.js → ledger-ZAFULLAF.js} +11 -11
- package/dist/liberate-XL6NSGOL.js +25 -0
- package/dist/{link-set-WHTYVTOV.js → link-set-LQI2IJX6.js} +11 -11
- package/dist/{managed-secret-CXALLEUB.js → managed-secret-7OH7HKXV.js} +10 -10
- package/dist/materialized-views/index.js +20 -20
- package/dist/{migrate-cek-LBRKYUZZ.js → migrate-cek-QHZ75E6E.js} +2 -2
- package/dist/money/index.js +4 -4
- package/dist/noydb-SWUGPFBK.js +86 -0
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +12 -12
- package/dist/pod/index.js +57 -57
- package/dist/{pod-handle-DHEYBTJ2.js → pod-handle-BLOI4IFY.js} +9 -9
- package/dist/policy/index.js +10 -10
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-4DXRYGTU.js → post-register-R33EKJQR.js} +6 -6
- package/dist/query/index.js +3 -3
- package/dist/reduce/index.js +4 -4
- package/dist/register-AYBQNTM3.js +32 -0
- package/dist/registry-CQWWOBO4.js +9 -0
- package/dist/registry-JCZ4BNLV.js +18 -0
- package/dist/registry-JFFENZ44.js +9 -0
- package/dist/registry-ZA4HACYR.js +19 -0
- package/dist/request-withdrawal-7IKUIAEB.js +31 -0
- package/dist/{reveal-X2QMWOVX.js → reveal-PI6ADRQU.js} +6 -6
- package/dist/revoke-PUJKRYJF.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/schema-update/index.js +2 -2
- package/dist/sealed-record/index.js +12 -12
- package/dist/search/index.js +4 -4
- package/dist/{seed-IX5NFSH5.js → seed-CG7JMJNY.js} +12 -12
- package/dist/sequence/index.js +9 -9
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-5TA7FUC3.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/{stale-5I36LPVK.js → stale-HZR7745Y.js} +10 -10
- package/dist/storage-J2QHNJCB.js +23 -0
- package/dist/{store-coordination-provider-OLPNRMFO.js → store-coordination-provider-MYIHSZXT.js} +10 -10
- package/dist/sync/index.js +10 -10
- package/dist/team/index.js +15 -15
- package/dist/tiers/index.js +11 -11
- package/dist/to/index.js +2 -2
- package/dist/transactions/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/vault-head/index.js +8 -8
- package/dist/{verify-WYOFLSNA.js → verify-R6CCBUA3.js} +5 -5
- package/dist/walk-3PA4ZOKS.js +21 -0
- package/dist/with-party/team/roster-epoch.d.ts +71 -0
- package/dist/with-party/team/roster-tag.d.ts +1 -1
- package/dist/withdraw-accessible-62VI4W7D.js +28 -0
- package/package.json +3 -3
- package/dist/api-OAZLPNVV.js +0 -20
- package/dist/chunk-4FPEWQKF.js.map +0 -1
- package/dist/chunk-GU3LQYW2.js.map +0 -1
- package/dist/chunk-JBIV4FLR.js.map +0 -1
- package/dist/chunk-OMHHGOG4.js.map +0 -1
- package/dist/chunk-ZTYG36DH.js.map +0 -1
- package/dist/collection-facade-6IY2LW6W.js +0 -45
- package/dist/derive-TCTS7ULE.js +0 -22
- package/dist/executor-AFHQYRAU.js +0 -9
- package/dist/executor-CDIMJVE2.js +0 -29
- package/dist/executor-YYDW6XQI.js +0 -9
- package/dist/export-accessible-WADNWX35.js +0 -23
- package/dist/extract-partition-SHQYQSWE.js +0 -38
- package/dist/find-SZBL2HPB.js +0 -11
- package/dist/issue-2DGG7NKE.js +0 -19
- package/dist/liberate-7NEPRE52.js +0 -25
- package/dist/noydb-BQ3ZTN2Z.js +0 -86
- package/dist/register-GLCOH73C.js +0 -32
- package/dist/registry-GWGHZWGP.js +0 -19
- package/dist/registry-IWFMXCHX.js +0 -9
- package/dist/registry-Q3FG3OAX.js +0 -9
- package/dist/registry-T346IZCF.js +0 -18
- package/dist/request-withdrawal-2RERJECX.js +0 -31
- package/dist/revoke-4NRSCPNW.js +0 -24
- package/dist/signer-HJHTGX7X.js +0 -25
- package/dist/storage-ZYYAB3J3.js +0 -23
- package/dist/walk-LTV7LOCN.js +0 -21
- package/dist/withdraw-accessible-V4XCPH7U.js +0 -28
- /package/dist/{api-OAZLPNVV.js.map → api-GJQF7OAJ.js.map} +0 -0
- /package/dist/{backup-SZBDQQSL.js.map → backup-QZQEP5RO.js.map} +0 -0
- /package/dist/{chunk-AB5P32RE.js.map → chunk-2DGBRE4K.js.map} +0 -0
- /package/dist/{chunk-XVU7J43V.js.map → chunk-2E2LT37H.js.map} +0 -0
- /package/dist/{chunk-ILSR22WM.js.map → chunk-2MQ2D5OZ.js.map} +0 -0
- /package/dist/{chunk-JHLJQUXU.js.map → chunk-357ECVLE.js.map} +0 -0
- /package/dist/{chunk-SHILAQH5.js.map → chunk-3GIA3HJ2.js.map} +0 -0
- /package/dist/{chunk-XLPXGN66.js.map → chunk-3SWP2FYA.js.map} +0 -0
- /package/dist/{chunk-QU3YUP2X.js.map → chunk-4RUFYGWG.js.map} +0 -0
- /package/dist/{chunk-4G25SDQL.js.map → chunk-4U52PMEL.js.map} +0 -0
- /package/dist/{chunk-7XODKGTW.js.map → chunk-5EC7X5QA.js.map} +0 -0
- /package/dist/{chunk-RJ7RIIX6.js.map → chunk-5NKHCJU5.js.map} +0 -0
- /package/dist/{chunk-X6TBQKHW.js.map → chunk-5UKIZIO3.js.map} +0 -0
- /package/dist/{chunk-VSLUSXVK.js.map → chunk-5W5CEHLA.js.map} +0 -0
- /package/dist/{chunk-YPSOHDNC.js.map → chunk-65ZYRK7O.js.map} +0 -0
- /package/dist/{chunk-PRHCMEUK.js.map → chunk-6L5IMNJX.js.map} +0 -0
- /package/dist/{chunk-4ZPE6SKS.js.map → chunk-75WNTBZL.js.map} +0 -0
- /package/dist/{chunk-7CWII4BL.js.map → chunk-7XT7KZTN.js.map} +0 -0
- /package/dist/{chunk-HQINBNHM.js.map → chunk-7YVSWPZB.js.map} +0 -0
- /package/dist/{chunk-Q7GEDVHC.js.map → chunk-AHIIBDNH.js.map} +0 -0
- /package/dist/{chunk-XSN63FUS.js.map → chunk-AW4KTQA4.js.map} +0 -0
- /package/dist/{chunk-KDJGJR7F.js.map → chunk-CWFH36SI.js.map} +0 -0
- /package/dist/{chunk-X67FCULK.js.map → chunk-DIVY2CJZ.js.map} +0 -0
- /package/dist/{chunk-Z2PWOSCJ.js.map → chunk-DNMTN46H.js.map} +0 -0
- /package/dist/{chunk-BYBB4ABD.js.map → chunk-DOPZWTMJ.js.map} +0 -0
- /package/dist/{chunk-HTGRQZFB.js.map → chunk-DZPMKY3J.js.map} +0 -0
- /package/dist/{chunk-XJ3FEKEY.js.map → chunk-FKQCC4C5.js.map} +0 -0
- /package/dist/{chunk-E6YA6UAP.js.map → chunk-FLRLZ4XZ.js.map} +0 -0
- /package/dist/{chunk-4JDIRUTT.js.map → chunk-FN26SFGH.js.map} +0 -0
- /package/dist/{chunk-BWWUXE3L.js.map → chunk-FPN5D4JX.js.map} +0 -0
- /package/dist/{chunk-VVAVTSTR.js.map → chunk-FRIVOR5N.js.map} +0 -0
- /package/dist/{chunk-3QARDAYW.js.map → chunk-FYT3DXPN.js.map} +0 -0
- /package/dist/{chunk-H6WXKZL7.js.map → chunk-FZWAGG5T.js.map} +0 -0
- /package/dist/{chunk-CBRS2NEK.js.map → chunk-GHADG5QZ.js.map} +0 -0
- /package/dist/{chunk-LFDMKZIP.js.map → chunk-GKOJR53Y.js.map} +0 -0
- /package/dist/{chunk-M7UC2QPT.js.map → chunk-GM4IM7TC.js.map} +0 -0
- /package/dist/{chunk-S3I7VKID.js.map → chunk-H5GVPOB4.js.map} +0 -0
- /package/dist/{chunk-EO2KGKEJ.js.map → chunk-HOIWW2LV.js.map} +0 -0
- /package/dist/{chunk-ZQ2UUHSL.js.map → chunk-HS3LEVT4.js.map} +0 -0
- /package/dist/{chunk-626TSARM.js.map → chunk-I5LSKXT6.js.map} +0 -0
- /package/dist/{chunk-FKFIEEY6.js.map → chunk-IAHDSFFA.js.map} +0 -0
- /package/dist/{chunk-ZKRRBRSZ.js.map → chunk-IS5LFHV2.js.map} +0 -0
- /package/dist/{chunk-POS53FG6.js.map → chunk-IZTU6RKH.js.map} +0 -0
- /package/dist/{chunk-VAG47QHV.js.map → chunk-J6FXVDKC.js.map} +0 -0
- /package/dist/{chunk-2GXEQUEX.js.map → chunk-JFSUYGNE.js.map} +0 -0
- /package/dist/{chunk-UALOYGCP.js.map → chunk-JILOSL4O.js.map} +0 -0
- /package/dist/{chunk-WLFABTZ6.js.map → chunk-JRWLUWDM.js.map} +0 -0
- /package/dist/{chunk-2QNKXGUS.js.map → chunk-JUBWUJY5.js.map} +0 -0
- /package/dist/{chunk-JVLSU7S2.js.map → chunk-JY4U6CYV.js.map} +0 -0
- /package/dist/{chunk-672U6STZ.js.map → chunk-K432FT7T.js.map} +0 -0
- /package/dist/{chunk-WLLUM35R.js.map → chunk-KQIDBIZL.js.map} +0 -0
- /package/dist/{chunk-LKFKXS5K.js.map → chunk-KZTPL7NL.js.map} +0 -0
- /package/dist/{chunk-S2VG3ABP.js.map → chunk-LAI7ENPW.js.map} +0 -0
- /package/dist/{chunk-L3FHEWA3.js.map → chunk-LUVGSKXE.js.map} +0 -0
- /package/dist/{chunk-EXDIHWFO.js.map → chunk-MENI33ZV.js.map} +0 -0
- /package/dist/{chunk-S6YB5ZRP.js.map → chunk-MOQ6OGKS.js.map} +0 -0
- /package/dist/{chunk-5ACAVJUI.js.map → chunk-MTTPHBIE.js.map} +0 -0
- /package/dist/{chunk-T3PHCEN4.js.map → chunk-MU74BYOD.js.map} +0 -0
- /package/dist/{chunk-26W5VETY.js.map → chunk-MV2OEK3K.js.map} +0 -0
- /package/dist/{chunk-44C2URL7.js.map → chunk-NMDMSHBF.js.map} +0 -0
- /package/dist/{chunk-225O5CXQ.js.map → chunk-O3SNM66K.js.map} +0 -0
- /package/dist/{chunk-YCSM3GZU.js.map → chunk-OEJ4R52I.js.map} +0 -0
- /package/dist/{chunk-UPJMBMCR.js.map → chunk-OKCQNMO6.js.map} +0 -0
- /package/dist/{chunk-IF56DYJK.js.map → chunk-OLUTCM23.js.map} +0 -0
- /package/dist/{chunk-RDHUZ674.js.map → chunk-OQDHIAR2.js.map} +0 -0
- /package/dist/{chunk-4TZUFNXL.js.map → chunk-P22XPNFW.js.map} +0 -0
- /package/dist/{chunk-L3HDEHGM.js.map → chunk-P2RJAVMR.js.map} +0 -0
- /package/dist/{chunk-UCUALOSM.js.map → chunk-P7KJME6C.js.map} +0 -0
- /package/dist/{chunk-XWNLKG6R.js.map → chunk-PCIBCL26.js.map} +0 -0
- /package/dist/{chunk-4A4TYISP.js.map → chunk-PV7XXAXK.js.map} +0 -0
- /package/dist/{chunk-BOFRKAUS.js.map → chunk-Q2OAAREU.js.map} +0 -0
- /package/dist/{chunk-Z7ZXZL6Y.js.map → chunk-Q2ZN5DWZ.js.map} +0 -0
- /package/dist/{chunk-JJZIIJSA.js.map → chunk-QJLOWGOU.js.map} +0 -0
- /package/dist/{chunk-7LYUJNU3.js.map → chunk-QOHGWFAW.js.map} +0 -0
- /package/dist/{chunk-6AQIFBSP.js.map → chunk-RCONOOVF.js.map} +0 -0
- /package/dist/{chunk-Y3XWRDAM.js.map → chunk-RHTPGS56.js.map} +0 -0
- /package/dist/{chunk-VFIWDPXZ.js.map → chunk-RPX2H2OL.js.map} +0 -0
- /package/dist/{chunk-6NRVFD55.js.map → chunk-SWFIXQF5.js.map} +0 -0
- /package/dist/{chunk-U6GCYG2T.js.map → chunk-TAJZ7GXO.js.map} +0 -0
- /package/dist/{chunk-XBFEKTIY.js.map → chunk-TQGT5BZE.js.map} +0 -0
- /package/dist/{chunk-TOV6VMHF.js.map → chunk-U3RMWOXY.js.map} +0 -0
- /package/dist/{chunk-PUJTKLPL.js.map → chunk-UL7TLJ54.js.map} +0 -0
- /package/dist/{chunk-W5LHQXZU.js.map → chunk-USKHHOIV.js.map} +0 -0
- /package/dist/{chunk-J4MN6XIU.js.map → chunk-UTFY6W6X.js.map} +0 -0
- /package/dist/{chunk-P6ASQOZR.js.map → chunk-VT4DTCK5.js.map} +0 -0
- /package/dist/{chunk-HSGEIMJS.js.map → chunk-X6YRP5EC.js.map} +0 -0
- /package/dist/{chunk-FOG7YEJP.js.map → chunk-XGXVPCYW.js.map} +0 -0
- /package/dist/{chunk-5263OEM3.js.map → chunk-XJP66QEN.js.map} +0 -0
- /package/dist/{chunk-OPXR4PB2.js.map → chunk-XKA6UH5V.js.map} +0 -0
- /package/dist/{chunk-XDVVBETV.js.map → chunk-YHIAWECL.js.map} +0 -0
- /package/dist/{chunk-F7ZFRPGQ.js.map → chunk-ZB2K3FV7.js.map} +0 -0
- /package/dist/{chunk-NLKLXXTO.js.map → chunk-ZQGRZN5L.js.map} +0 -0
- /package/dist/{classified-marker-KL4YXUXD.js.map → classified-marker-R37XW5PC.js.map} +0 -0
- /package/dist/{collection-facade-6IY2LW6W.js.map → collection-facade-OPJ3EC4L.js.map} +0 -0
- /package/dist/{computed-ASBNTLOK.js.map → computed-HW6IG5UH.js.map} +0 -0
- /package/dist/{dead-filter-ZGRFZKYE.js.map → dead-filter-GRT6RAML.js.map} +0 -0
- /package/dist/{delegation-2DO3VI5E.js.map → delegation-6QRAYSK6.js.map} +0 -0
- /package/dist/{derive-TCTS7ULE.js.map → derive-AAIXSQIE.js.map} +0 -0
- /package/dist/{dispatch-FNCCONFK.js.map → dispatch-DR3XITEC.js.map} +0 -0
- /package/dist/{dispatch-M62IAL2S.js.map → dispatch-QCF7KPIP.js.map} +0 -0
- /package/dist/{enclave-4P4KH5ZW.js.map → enclave-OXZY3NOP.js.map} +0 -0
- /package/dist/{executor-AFHQYRAU.js.map → executor-67NA4KPO.js.map} +0 -0
- /package/dist/{executor-CDIMJVE2.js.map → executor-7JDP7UBK.js.map} +0 -0
- /package/dist/{executor-YYDW6XQI.js.map → executor-CRH5OB4V.js.map} +0 -0
- /package/dist/{export-accessible-WADNWX35.js.map → export-accessible-K4GJAU7U.js.map} +0 -0
- /package/dist/{extract-partition-SHQYQSWE.js.map → extract-partition-YJFL5OKK.js.map} +0 -0
- /package/dist/{fanout-sidecar-BRQHWTZQ.js.map → fanout-sidecar-KGQCUJ7P.js.map} +0 -0
- /package/dist/{find-SZBL2HPB.js.map → find-SVZHMEQI.js.map} +0 -0
- /package/dist/{issue-2DGG7NKE.js.map → issue-64N6OG7U.js.map} +0 -0
- /package/dist/{ledger-4X5ZH43X.js.map → ledger-ZAFULLAF.js.map} +0 -0
- /package/dist/{liberate-7NEPRE52.js.map → liberate-XL6NSGOL.js.map} +0 -0
- /package/dist/{link-set-WHTYVTOV.js.map → link-set-LQI2IJX6.js.map} +0 -0
- /package/dist/{managed-secret-CXALLEUB.js.map → managed-secret-7OH7HKXV.js.map} +0 -0
- /package/dist/{migrate-cek-LBRKYUZZ.js.map → migrate-cek-QHZ75E6E.js.map} +0 -0
- /package/dist/{noydb-BQ3ZTN2Z.js.map → noydb-SWUGPFBK.js.map} +0 -0
- /package/dist/{pod-handle-DHEYBTJ2.js.map → pod-handle-BLOI4IFY.js.map} +0 -0
- /package/dist/{post-register-4DXRYGTU.js.map → post-register-R33EKJQR.js.map} +0 -0
- /package/dist/{register-GLCOH73C.js.map → register-AYBQNTM3.js.map} +0 -0
- /package/dist/{registry-GWGHZWGP.js.map → registry-CQWWOBO4.js.map} +0 -0
- /package/dist/{registry-IWFMXCHX.js.map → registry-JCZ4BNLV.js.map} +0 -0
- /package/dist/{registry-Q3FG3OAX.js.map → registry-JFFENZ44.js.map} +0 -0
- /package/dist/{registry-T346IZCF.js.map → registry-ZA4HACYR.js.map} +0 -0
- /package/dist/{request-withdrawal-2RERJECX.js.map → request-withdrawal-7IKUIAEB.js.map} +0 -0
- /package/dist/{reveal-X2QMWOVX.js.map → reveal-PI6ADRQU.js.map} +0 -0
- /package/dist/{revoke-4NRSCPNW.js.map → revoke-PUJKRYJF.js.map} +0 -0
- /package/dist/{seed-IX5NFSH5.js.map → seed-CG7JMJNY.js.map} +0 -0
- /package/dist/{signer-HJHTGX7X.js.map → signer-5TA7FUC3.js.map} +0 -0
- /package/dist/{stale-5I36LPVK.js.map → stale-HZR7745Y.js.map} +0 -0
- /package/dist/{storage-ZYYAB3J3.js.map → storage-J2QHNJCB.js.map} +0 -0
- /package/dist/{store-coordination-provider-OLPNRMFO.js.map → store-coordination-provider-MYIHSZXT.js.map} +0 -0
- /package/dist/{verify-WYOFLSNA.js.map → verify-R6CCBUA3.js.map} +0 -0
- /package/dist/{walk-LTV7LOCN.js.map → walk-3PA4ZOKS.js.map} +0 -0
- /package/dist/{withdraw-accessible-V4XCPH7U.js.map → withdraw-accessible-62VI4W7D.js.map} +0 -0
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createNoydb
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6L5IMNJX.js";
|
|
4
4
|
import {
|
|
5
5
|
deriveSchemaManifest
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5W5CEHLA.js";
|
|
7
7
|
import {
|
|
8
8
|
loadFence
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GM4IM7TC.js";
|
|
10
10
|
import {
|
|
11
11
|
readPod,
|
|
12
12
|
readPodRedirect,
|
|
13
13
|
signRecord,
|
|
14
14
|
verifyPodHeader,
|
|
15
15
|
verifyRecord
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-RCONOOVF.js";
|
|
17
17
|
import {
|
|
18
18
|
loadKeyring
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-OHGCRKWA.js";
|
|
20
20
|
import {
|
|
21
21
|
ConflictError,
|
|
22
22
|
MigrationRequiredError,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
RedirectDepthExceededError,
|
|
27
27
|
RedirectLoopError,
|
|
28
28
|
RedirectUnreachableError
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-SW4TOSJL.js";
|
|
30
30
|
|
|
31
31
|
// src/with-pod/pod-store.ts
|
|
32
32
|
var BUNDLE_STORE_VERSION = 1;
|
|
@@ -286,4 +286,4 @@ export {
|
|
|
286
286
|
followRedirects,
|
|
287
287
|
open
|
|
288
288
|
};
|
|
289
|
-
//# sourceMappingURL=chunk-
|
|
289
|
+
//# sourceMappingURL=chunk-7YVSWPZB.js.map
|
|
@@ -7,28 +7,28 @@ import {
|
|
|
7
7
|
deriveSchemaManifest,
|
|
8
8
|
loadSchemaManifestEntry,
|
|
9
9
|
saveSchemaManifest
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-5W5CEHLA.js";
|
|
11
11
|
import {
|
|
12
12
|
MANIFEST_COLLECTION
|
|
13
13
|
} from "./chunk-EPFF7LOX.js";
|
|
14
14
|
import {
|
|
15
15
|
loadFence,
|
|
16
16
|
saveFence
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-GM4IM7TC.js";
|
|
18
18
|
import {
|
|
19
19
|
derivePersistedSchema
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-VT4DTCK5.js";
|
|
21
21
|
import {
|
|
22
22
|
loadPersistedSchemaEntry,
|
|
23
23
|
savePersistedSchema
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-I5LSKXT6.js";
|
|
25
25
|
import {
|
|
26
26
|
envelopePayloadHash
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-JRWLUWDM.js";
|
|
28
28
|
import {
|
|
29
29
|
ManifestConflictError,
|
|
30
30
|
isConflictError
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-SW4TOSJL.js";
|
|
32
32
|
|
|
33
33
|
// src/with-shape/persisted-schemas/field-ids.ts
|
|
34
34
|
var BASE32URL_ALPHABET = "abcdefghijklmnopqrstuvwxyz234567";
|
|
@@ -257,4 +257,4 @@ export {
|
|
|
257
257
|
persistClassifiedMarker,
|
|
258
258
|
persistSatelliteMarker
|
|
259
259
|
};
|
|
260
|
-
//# sourceMappingURL=chunk-
|
|
260
|
+
//# sourceMappingURL=chunk-AHIIBDNH.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
DanglingReferenceError,
|
|
6
6
|
JoinTooLargeError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-SW4TOSJL.js";
|
|
8
8
|
|
|
9
9
|
// src/kernel/query/join.ts
|
|
10
10
|
var DEFAULT_JOIN_MAX_ROWS = 5e4;
|
|
@@ -186,4 +186,4 @@ export {
|
|
|
186
186
|
applyJoins,
|
|
187
187
|
resetJoinWarnings
|
|
188
188
|
};
|
|
189
|
-
//# sourceMappingURL=chunk-
|
|
189
|
+
//# sourceMappingURL=chunk-AW4KTQA4.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
decrypt,
|
|
3
3
|
deriveSealedFieldKey,
|
|
4
4
|
deriveSealedFieldKeyFromCek
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-USKHHOIV.js";
|
|
6
6
|
|
|
7
7
|
// src/kernel/enclave/record-keys/sealed-slot.ts
|
|
8
8
|
function parseSealedSlot(blob) {
|
|
@@ -26,4 +26,4 @@ export {
|
|
|
26
26
|
parseSealedSlot,
|
|
27
27
|
dualReadSealedSlot
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-CWFH36SI.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
installViaBinder
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YHIAWECL.js";
|
|
4
4
|
import {
|
|
5
5
|
LocaleNotSpecifiedError,
|
|
6
6
|
MissingTranslationError,
|
|
7
7
|
ScriptViolationError,
|
|
8
8
|
TranslatorNotConfiguredError
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-SW4TOSJL.js";
|
|
10
10
|
|
|
11
11
|
// src/port/with/i18n-strategy.ts
|
|
12
12
|
function notEnabled(op) {
|
|
@@ -618,4 +618,4 @@ export {
|
|
|
618
618
|
presentI18nForJoin,
|
|
619
619
|
stripI18nFilled
|
|
620
620
|
};
|
|
621
|
-
//# sourceMappingURL=chunk-
|
|
621
|
+
//# sourceMappingURL=chunk-DIVY2CJZ.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
formatScaledInt,
|
|
5
5
|
parseToScaledInt,
|
|
6
6
|
rescaleScaledInt
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-U3RMWOXY.js";
|
|
8
8
|
|
|
9
9
|
// src/via/money/arith.ts
|
|
10
10
|
function parseAmount(label, amount, scale, rounding) {
|
|
@@ -120,4 +120,4 @@ export {
|
|
|
120
120
|
isMoneyString,
|
|
121
121
|
moneyNumber
|
|
122
122
|
};
|
|
123
|
-
//# sourceMappingURL=chunk-
|
|
123
|
+
//# sourceMappingURL=chunk-DNMTN46H.js.map
|
|
@@ -2,19 +2,19 @@ import {
|
|
|
2
2
|
buildRecordEnvelope,
|
|
3
3
|
isDeleteMarker,
|
|
4
4
|
isTombstone
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-4RUFYGWG.js";
|
|
6
6
|
import {
|
|
7
7
|
blindedEqual,
|
|
8
8
|
openVdigPayload,
|
|
9
9
|
sealVdigPayload
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-XGXVPCYW.js";
|
|
11
11
|
import {
|
|
12
12
|
dualReadSealedSlot,
|
|
13
13
|
parseSealedSlot
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-CWFH36SI.js";
|
|
15
15
|
import {
|
|
16
16
|
mintBidxTag
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-KZTPL7NL.js";
|
|
18
18
|
import {
|
|
19
19
|
VDIG_ITERATIONS,
|
|
20
20
|
normalizeForVerify,
|
|
@@ -35,11 +35,11 @@ import {
|
|
|
35
35
|
generateSalt,
|
|
36
36
|
unwrapCek,
|
|
37
37
|
wrapCek
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-USKHHOIV.js";
|
|
39
39
|
import {
|
|
40
40
|
NOYDB_FORMAT_VERSION,
|
|
41
41
|
SealedHandle
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-N4CHCXDL.js";
|
|
43
43
|
import {
|
|
44
44
|
ClassifiedConfigError,
|
|
45
45
|
ClassifiedRotationError,
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
SchemaValidationError,
|
|
49
49
|
TamperedError,
|
|
50
50
|
ValidationError
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-SW4TOSJL.js";
|
|
52
52
|
|
|
53
53
|
// src/kernel/enclave/record-aad.ts
|
|
54
54
|
var SCHEME = "noydb-aad/2";
|
|
@@ -1364,4 +1364,4 @@ export {
|
|
|
1364
1364
|
issueChallenge,
|
|
1365
1365
|
verifyBrokerProof
|
|
1366
1366
|
};
|
|
1367
|
-
//# sourceMappingURL=chunk-
|
|
1367
|
+
//# sourceMappingURL=chunk-DOPZWTMJ.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
dekKey
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IZTU6RKH.js";
|
|
4
4
|
import {
|
|
5
5
|
TierNotGrantedError
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-SW4TOSJL.js";
|
|
7
7
|
|
|
8
8
|
// src/with-party/team/tiers.ts
|
|
9
9
|
function assertTierAccess(keyring, collection, tier) {
|
|
@@ -17,4 +17,4 @@ function assertTierAccess(keyring, collection, tier) {
|
|
|
17
17
|
export {
|
|
18
18
|
assertTierAccess
|
|
19
19
|
};
|
|
20
|
-
//# sourceMappingURL=chunk-
|
|
20
|
+
//# sourceMappingURL=chunk-DZPMKY3J.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CargoNotEnabledError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SW4TOSJL.js";
|
|
4
4
|
|
|
5
5
|
// src/with-cargo/strategy.ts
|
|
6
6
|
var NO_CARGO = {
|
|
@@ -12,4 +12,4 @@ var NO_CARGO = {
|
|
|
12
12
|
export {
|
|
13
13
|
NO_CARGO
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
15
|
+
//# sourceMappingURL=chunk-FKQCC4C5.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AttestationNotEnabledError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SW4TOSJL.js";
|
|
4
4
|
|
|
5
5
|
// src/with-audit/attestation/strategy.ts
|
|
6
6
|
var NO_ATTESTATION = {
|
|
@@ -27,4 +27,4 @@ var NO_ATTESTATION = {
|
|
|
27
27
|
export {
|
|
28
28
|
NO_ATTESTATION
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-FLRLZ4XZ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
LookupHandle
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TQGT5BZE.js";
|
|
4
4
|
|
|
5
5
|
// src/via/lookup/active.ts
|
|
6
6
|
function withLookup() {
|
|
@@ -33,4 +33,4 @@ function withLookup() {
|
|
|
33
33
|
export {
|
|
34
34
|
withLookup
|
|
35
35
|
};
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-FN26SFGH.js.map
|
|
@@ -2,21 +2,21 @@ import {
|
|
|
2
2
|
ATTESTATIONS_COLLECTION,
|
|
3
3
|
REVOKED_RECORD_ID,
|
|
4
4
|
loadOrCreateSigner
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GKOJR53Y.js";
|
|
6
6
|
import {
|
|
7
7
|
buildRecordAad,
|
|
8
8
|
openEnvelopeJson
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-DOPZWTMJ.js";
|
|
10
10
|
import {
|
|
11
11
|
buildRecordEnvelope
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-4RUFYGWG.js";
|
|
13
13
|
import {
|
|
14
14
|
encrypt
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-USKHHOIV.js";
|
|
16
16
|
import {
|
|
17
17
|
AttestationError,
|
|
18
18
|
ConflictError
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-SW4TOSJL.js";
|
|
20
20
|
|
|
21
21
|
// src/with-audit/attestation/revoke.ts
|
|
22
22
|
import { signRevocationList } from "@noy-db/attestation";
|
|
@@ -81,4 +81,4 @@ export {
|
|
|
81
81
|
getRevokedDocIdsCore,
|
|
82
82
|
publishRevocationListCore
|
|
83
83
|
};
|
|
84
|
-
//# sourceMappingURL=chunk-
|
|
84
|
+
//# sourceMappingURL=chunk-FPN5D4JX.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
dictCollectionName
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TQGT5BZE.js";
|
|
4
4
|
import {
|
|
5
5
|
getAtPath,
|
|
6
6
|
presentI18nForJoin
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-DIVY2CJZ.js";
|
|
8
8
|
import {
|
|
9
9
|
PeriodClosedError,
|
|
10
10
|
UnknownDictCodeError,
|
|
11
11
|
ValidationError
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-SW4TOSJL.js";
|
|
13
13
|
|
|
14
14
|
// src/via/lookup/registry.ts
|
|
15
15
|
function enforceStaticDictOnPut(staticFields, record) {
|
|
@@ -487,4 +487,4 @@ export {
|
|
|
487
487
|
forgetDerivedFanout,
|
|
488
488
|
selfWriteFieldEqual
|
|
489
489
|
};
|
|
490
|
-
//# sourceMappingURL=chunk-
|
|
490
|
+
//# sourceMappingURL=chunk-FRIVOR5N.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
OverlayIdMismatchError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SW4TOSJL.js";
|
|
4
4
|
|
|
5
5
|
// src/with-formula/overlay-views/virtual-collection.ts
|
|
6
6
|
var OverlayedCollection = class {
|
|
@@ -206,4 +206,4 @@ var OverlayedCollection = class {
|
|
|
206
206
|
export {
|
|
207
207
|
OverlayedCollection
|
|
208
208
|
};
|
|
209
|
-
//# sourceMappingURL=chunk-
|
|
209
|
+
//# sourceMappingURL=chunk-FYT3DXPN.js.map
|
|
@@ -201,7 +201,7 @@ var engineCtx = (ctx) => ({
|
|
|
201
201
|
function withClassified() {
|
|
202
202
|
return {
|
|
203
203
|
async reveal(ctx, id, field) {
|
|
204
|
-
const { revealSealedField } = await import("./reveal-
|
|
204
|
+
const { revealSealedField } = await import("./reveal-PI6ADRQU.js");
|
|
205
205
|
const value = await revealSealedField({
|
|
206
206
|
collection: ctx.collection,
|
|
207
207
|
encrypted: ctx.encrypted,
|
|
@@ -213,26 +213,26 @@ function withClassified() {
|
|
|
213
213
|
return value;
|
|
214
214
|
},
|
|
215
215
|
async verify(ctx, id, field, candidate) {
|
|
216
|
-
const { verifyDigestField } = await import("./verify-
|
|
216
|
+
const { verifyDigestField } = await import("./verify-R6CCBUA3.js");
|
|
217
217
|
const verdict = await verifyDigestField(engineCtx(ctx), id, field, candidate, policyOf(ctx.spec));
|
|
218
218
|
await ctx.onAccess?.("verify", id);
|
|
219
219
|
return verdict;
|
|
220
220
|
},
|
|
221
221
|
async verifyText(ctx, id, field, candidate) {
|
|
222
|
-
const { verifyTextField } = await import("./verify-
|
|
222
|
+
const { verifyTextField } = await import("./verify-R6CCBUA3.js");
|
|
223
223
|
const verdict = await verifyTextField(engineCtx(ctx), id, field, candidate, ctx.spec.verifyNormalize ?? "password");
|
|
224
224
|
await ctx.onAccess?.("verify", id);
|
|
225
225
|
return verdict;
|
|
226
226
|
},
|
|
227
227
|
async matchGroup(ctx, id, answers, opts) {
|
|
228
|
-
const { matchGroupFields } = await import("./verify-
|
|
228
|
+
const { matchGroupFields } = await import("./verify-R6CCBUA3.js");
|
|
229
229
|
const members = (ctx.groupMembers ?? []).map((m) => ({ field: m.field, policy: policyOf(m.spec) }));
|
|
230
230
|
const result = await matchGroupFields(engineCtx(ctx), id, answers, members, opts);
|
|
231
231
|
await ctx.onAccess?.("verify", id);
|
|
232
232
|
return result;
|
|
233
233
|
},
|
|
234
234
|
async computeTarget(ctx, field, candidate, costByte) {
|
|
235
|
-
const { computeBidxTarget } = await import("./find-
|
|
235
|
+
const { computeBidxTarget } = await import("./find-SVZHMEQI.js");
|
|
236
236
|
const dek = await ctx.getDEK();
|
|
237
237
|
return computeBidxTarget(candidate, policyOf(ctx.spec).normalize, dek, ctx.collection, field, costByte);
|
|
238
238
|
}
|
|
@@ -244,4 +244,4 @@ export {
|
|
|
244
244
|
classified,
|
|
245
245
|
withClassified
|
|
246
246
|
};
|
|
247
|
-
//# sourceMappingURL=chunk-
|
|
247
|
+
//# sourceMappingURL=chunk-FZWAGG5T.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
QuiesceTimeoutError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SW4TOSJL.js";
|
|
4
4
|
|
|
5
5
|
// src/port/by/types.ts
|
|
6
6
|
function isQuorum(writers, generation, excludeWriterId) {
|
|
@@ -51,4 +51,4 @@ export {
|
|
|
51
51
|
isQuorum,
|
|
52
52
|
runDrainBarrier
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-GHADG5QZ.js.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildRecordAad,
|
|
3
3
|
openEnvelopeJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DOPZWTMJ.js";
|
|
5
5
|
import {
|
|
6
6
|
buildRecordEnvelope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4RUFYGWG.js";
|
|
8
8
|
import {
|
|
9
9
|
encrypt
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-USKHHOIV.js";
|
|
11
11
|
import {
|
|
12
12
|
ConflictError
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-SW4TOSJL.js";
|
|
14
14
|
|
|
15
15
|
// src/with-audit/attestation/signer.ts
|
|
16
16
|
import { generateDocSigningKeyPair } from "@noy-db/attestation";
|
|
@@ -55,4 +55,4 @@ export {
|
|
|
55
55
|
loadSigner,
|
|
56
56
|
loadOrCreateSigner
|
|
57
57
|
};
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-GKOJR53Y.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildRecordEnvelope
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4RUFYGWG.js";
|
|
4
4
|
|
|
5
5
|
// src/with-shape/schema-update/fence.ts
|
|
6
6
|
var FENCE_RECORD_ID = "schema-fence";
|
|
@@ -36,4 +36,4 @@ export {
|
|
|
36
36
|
loadFence,
|
|
37
37
|
saveFence
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-GM4IM7TC.js.map
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildRecordAad,
|
|
3
3
|
openEnvelopeJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DOPZWTMJ.js";
|
|
5
5
|
import {
|
|
6
6
|
buildRecordEnvelope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4RUFYGWG.js";
|
|
8
8
|
import {
|
|
9
9
|
encrypt
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-USKHHOIV.js";
|
|
11
11
|
import {
|
|
12
12
|
SequenceContentionError,
|
|
13
13
|
SequenceNotEnabledError,
|
|
14
14
|
SequenceOfflineError,
|
|
15
15
|
ValidationError,
|
|
16
16
|
isConflictError
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-SW4TOSJL.js";
|
|
18
18
|
|
|
19
19
|
// src/with-commit/sequence/active.ts
|
|
20
20
|
function withSequence() {
|
|
@@ -201,4 +201,4 @@ export {
|
|
|
201
201
|
resolveSequenceKey,
|
|
202
202
|
SequenceStore
|
|
203
203
|
};
|
|
204
|
-
//# sourceMappingURL=chunk-
|
|
204
|
+
//# sourceMappingURL=chunk-H5GVPOB4.js.map
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
2
|
freezeSnapshotOnly
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5EC7X5QA.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveManagedSecret
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JUBWUJY5.js";
|
|
7
7
|
import {
|
|
8
8
|
assertRosterTagValid,
|
|
9
9
|
createOwnerKeyring,
|
|
10
10
|
mintRosterTag,
|
|
11
|
+
nextRosterEpoch,
|
|
11
12
|
requireRosterKey
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-OHGCRKWA.js";
|
|
13
14
|
import {
|
|
14
15
|
buildRecordEnvelope
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-4RUFYGWG.js";
|
|
16
17
|
import {
|
|
17
18
|
wrapKey
|
|
18
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-USKHHOIV.js";
|
|
19
20
|
import {
|
|
20
21
|
PermissionDeniedError
|
|
21
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-SW4TOSJL.js";
|
|
22
23
|
|
|
23
24
|
// src/with-party/team/deed.ts
|
|
24
25
|
var DEED_RECORD_ID = "deed";
|
|
@@ -107,7 +108,8 @@ async function liberateVault(vault, opts) {
|
|
|
107
108
|
}
|
|
108
109
|
const rosterKey = requireRosterKey(keyring, "liberateVault");
|
|
109
110
|
const merged = { ...keyringFile, deks: mergedDeks };
|
|
110
|
-
const
|
|
111
|
+
const withEpoch = { ...merged, roster_epoch: nextRosterEpoch(keyringFile.roster_epoch) };
|
|
112
|
+
const mergedFile = { ...withEpoch, roster_tag: await mintRosterTag(withEpoch, rosterKey) };
|
|
111
113
|
await adapter.put(vaultName, "_keyring", opts.newOwnerId, { ...env, _data: JSON.stringify(mergedFile) });
|
|
112
114
|
await vault._getLedgerOrNull()?.append({
|
|
113
115
|
op: "lifecycle",
|
|
@@ -135,4 +137,4 @@ export {
|
|
|
135
137
|
isDeedVault,
|
|
136
138
|
liberateVault
|
|
137
139
|
};
|
|
138
|
-
//# sourceMappingURL=chunk-
|
|
140
|
+
//# sourceMappingURL=chunk-HLFLJCDX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/with-party/team/deed.ts","../src/with-party/custody/liberate.ts"],"sourcesContent":["/**\n * FR-6 — Deed: sealed / hidden-owner provisioning.\n *\n * A **Deed** is a vault owned by a *latent* principal who never\n * authenticates. The owner credential (the random secret that\n * derives `KEK_owner`) is minted machine-side and sealed under a\n * **non-firm** {@link NoydbSealer} — that sealing boundary is\n * the cryptographic *inalienability anchor*: whoever holds the\n * provider (the client / their KMS) is the only party that can ever\n * re-derive `KEK_owner`. A firm-side custodian operates the vault\n * fully but can never reach the owner key — there is deliberately NO\n * firm-controlled fallback.\n *\n * Provisioning reuses the managed-mode seam:\n * - {@link resolveManagedSecret} mints + seals + persists the random\n * secret at `_meta/sealed-secret` (and unseals it on every\n * subsequent open through the same provider).\n * - {@link createOwnerKeyring} derives `KEK_owner` from that\n * secret and writes the `_keyring/<ownerUserId>` file.\n *\n * On top of that, a Deed writes a `_meta/deed` **marker**. The marker\n * is PLAINTEXT metadata — it records WHO the latent owner is and WHICH\n * sealing boundary protects them, so it must be readable without\n * unlocking the vault (a custodian or auditor inspecting the vault must\n * be able to see \"this is a Deed vault, owner = X, sealed under Y\"\n * without any key). The marker itself is therefore never sealed; only\n * the owner *credential* is.\n *\n * @module\n */\n\nimport { buildRecordEnvelope } from '../../kernel/enclave/index.js'\nimport type { NoydbStore } from '../../kernel/types.js'\nimport type { UnlockedKeyring } from './keyring.js'\nimport { createOwnerKeyring } from './keyring.js'\nimport type { NoydbSealer } from './managed-secret.js'\nimport { resolveManagedSecret } from './managed-secret.js'\n\n/** Reserved id for the Deed marker under `_meta`. */\nexport const DEED_RECORD_ID = 'deed' as const\n\n/**\n * Plaintext metadata recording a vault's latent-owner Deed. Persisted\n * at `_meta/deed`. Readable without unlocking the vault by design — it\n * carries no secret material, only the identity of the latent owner\n * and the sealing boundary that anchors inalienability.\n */\nexport interface DeedMarker {\n /** The latent owner principal — the user id of the `_keyring/<id>` owner file. */\n readonly ownerUserId: string\n /**\n * The `NoydbSealer.id` the owner credential is sealed under.\n * The inalienability anchor: only the holder of this (non-firm)\n * provider can re-derive `KEK_owner`. Audit metadata — never secret.\n */\n readonly sealedUnder: string\n /** Always `true` for a Deed — the owner never authenticates interactively. */\n readonly latent: true\n /** ISO-8601 timestamp the Deed was issued. */\n readonly issuedAt: string\n /**\n * ISO-8601 timestamp the vault was liberated (a new owner claimed it\n * via the audited Liberate ceremony), if any. Absent until liberation.\n */\n readonly liberatedAt?: string\n}\n\n/**\n * Wire-format payload stored inside the `_meta/deed` envelope. Carries\n * a magic marker for forensics + the {@link DeedMarker} fields. JSON,\n * AES-GCM bypassed (the marker is plaintext metadata by design).\n */\ninterface DeedEnvelopePayload extends DeedMarker {\n readonly _noydb_deed: 1\n}\n\n/**\n * Provision a Deed: a latent owner whose credential is sealed under\n * `sealing` (a NON-firm provider). Mints + seals the owner secret\n * via {@link resolveManagedSecret}, derives the owner keyring via\n * {@link createOwnerKeyring}, then writes the plaintext `_meta/deed`\n * marker. Returns the unlocked owner keyring.\n *\n * The returned keyring is the only in-memory window onto `KEK_owner`\n * for this call; the persistent re-entry point is the sealing provider\n * (re-run {@link resolveManagedSecret} with the same provider to\n * re-resolve the secret, then {@link createOwnerKeyring}/load to\n * unlock — no interactive secret is ever required).\n *\n * There is deliberately no firm-controlled fallback: the marker's\n * `sealedUnder` is the single cryptographic anchor of ownership.\n */\nexport async function createDeedOwner(\n store: NoydbStore,\n vault: string,\n ownerUserId: string,\n sealing: NoydbSealer,\n): Promise<UnlockedKeyring> {\n // 1. Mint + seal + persist the random owner secret under the\n // non-firm provider (writes _meta/sealed-secret).\n const secret = await resolveManagedSecret(store, vault, sealing)\n\n // 2. Derive KEK_owner from the (never-human-seen) secret and\n // write the owner keyring file.\n const keyring = await createOwnerKeyring(store, vault, { userId: ownerUserId, secret: secret })\n\n // 3. Write the plaintext Deed marker. NOT sealed — it is audit\n // metadata that must be readable without unlocking.\n await saveDeedMarker(store, vault, {\n ownerUserId,\n sealedUnder: sealing.id,\n latent: true,\n issuedAt: new Date().toISOString(),\n })\n\n return keyring\n}\n\n/**\n * Read the {@link DeedMarker} from `_meta/deed`, or `null` if the vault\n * has no Deed marker (i.e. it is not a Deed vault). Plaintext read — no\n * unlocking required.\n */\nexport async function loadDeedMarker(\n store: NoydbStore,\n vault: string,\n): Promise<DeedMarker | null> {\n const envelope = await store.get(vault, '_meta', DEED_RECORD_ID)\n if (!envelope) return null\n let payload: unknown\n try {\n payload = JSON.parse(envelope._data)\n } catch {\n return null\n }\n if (typeof payload !== 'object' || payload === null) return null\n const r = payload as Record<string, unknown>\n if (r._noydb_deed !== 1) return null\n if (\n typeof r.ownerUserId !== 'string'\n || typeof r.sealedUnder !== 'string'\n || r.latent !== true\n || typeof r.issuedAt !== 'string'\n ) {\n return null\n }\n const marker: DeedMarker = {\n ownerUserId: r.ownerUserId,\n sealedUnder: r.sealedUnder,\n latent: true,\n issuedAt: r.issuedAt,\n ...(typeof r.liberatedAt === 'string' ? { liberatedAt: r.liberatedAt } : {}),\n }\n return marker\n}\n\n/** Whether `vault` carries a Deed marker (a sealed/latent owner). */\nexport async function isDeedVault(\n store: NoydbStore,\n vault: string,\n): Promise<boolean> {\n return (await loadDeedMarker(store, vault)) !== null\n}\n\n/**\n * Persist a {@link DeedMarker} at `_meta/deed`. Mirrors\n * `saveSealedSecret`'s envelope shape: a standard\n * {@link EncryptedEnvelope} with AES-GCM bypassed (`_iv: ''`), the\n * payload stored as plaintext JSON in `_data`. The marker is metadata,\n * not a secret — sealing it would defeat its purpose (auditors /\n * custodians must read it without a key).\n *\n * @internal — used by `createDeedOwner` and (later) the Liberate\n * ceremony to stamp `liberatedAt`.\n */\nexport async function saveDeedMarker(\n store: NoydbStore,\n vault: string,\n marker: DeedMarker,\n): Promise<void> {\n const persisted: DeedEnvelopePayload = { _noydb_deed: 1, ...marker }\n const prior = await store.get(vault, '_meta', DEED_RECORD_ID)\n const env = buildRecordEnvelope(\n { collection: '_meta', id: DEED_RECORD_ID, version: (prior?._v ?? 0) + 1 },\n // AES-GCM bypassed — the marker is plaintext audit metadata.\n { iv: '', data: JSON.stringify(persisted) },\n )\n await store.put(vault, '_meta', DEED_RECORD_ID, env)\n}\n","/**\n * `liberateVault` — the audited claim of ownership over a\n * sealed-owner (Deed) vault. The inverse of withdrawal.\n *\n * A **Deed** vault's owner credential is sealed under a non-firm provider, so\n * the firm-side **custodian** (which holds every collection DEK and operates\n * the vault fully) can never reach `KEK_owner`. Liberation is the ONLY route\n * by which a custodian assumes ownership, and it is deliberately a manual,\n * audited ceremony:\n *\n * 1. gate `'liberate-vault'` (fail-closed)\n * 2. caller MUST be the `custodian` (the de-facto authority holding the DEKs)\n * 3. freeze a PRE-liberation EVIDENCE snapshot (hash-pinned in the ledger) —\n * but PRESERVE the live data for the new owner (see the freeze decision\n * below)\n * 4. mint a NEW owner keyring re-wrapping the incumbent DEKs under the new\n * owner's KEK\n * 5. lifecycle ledger `liberation-claimed:<newOwnerId>:<legalBasis>`\n * 6. stamp the `_meta/deed` marker with `liberatedAt`\n *\n * ## Security: the inalienability floor\n *\n * Liberation **mints a new owner from the custodian's DEKs** — it does NOT\n * unseal the original sealed owner. The old sealed-owner credential is left\n * untouched and ORPHANED (its `_keyring/<id>` file remains, its KEK is still\n * sealed under the non-firm provider), never impersonated. The new owner is a\n * DISTINCT principal under a fresh KEK derived from `newOwnerSecret`. This\n * preserves the inalienability floor: the act of claiming ownership is itself\n * auditable and produces a different principal, rather than silently assuming\n * the latent owner's identity.\n *\n * ## Freeze decision: snapshot-only, not freeze-and-delete\n *\n * `freezeAndDeleteClosure` (withdraw-accessible.ts) writes a hash-pinned\n * snapshot and THEN delete-closures the live records — correct for a\n * destructive withdrawal, WRONG for liberation. Liberation transfers\n * operational continuity; it must leave the live data intact for the new\n * owner. We therefore call the snapshot-only core `freezeSnapshotOnly`\n * (factored out of that module; the freeze-AND-delete withdrawal path is\n * unchanged) to pin the evidence snapshot while preserving the records.\n *\n * @module\n */\n\nimport type { Vault } from '../../kernel/vault.js'\nimport type { FactorProofBundle, KeyringFile } from '../../kernel/types.js'\nimport { PermissionDeniedError } from '../../kernel/errors.js'\nimport { wrapKey } from '../../kernel/enclave/index.js'\nimport { createOwnerKeyring, requireRosterKey } from '../team/keyring.js'\nimport { mintRosterTag, assertRosterTagValid } from '../team/roster-tag.js'\nimport type { FrozenSnapshotRef } from '../../with-audit/portability/withdraw-accessible.js'\nimport { freezeSnapshotOnly } from '../../with-audit/portability/withdraw-accessible.js'\nimport { loadDeedMarker, saveDeedMarker } from '../team/deed.js'\n\nexport interface LiberateOptions {\n /** The id of the new owner principal the custodian mints by claiming ownership. */\n readonly newOwnerId: string\n /** The secret that derives the new owner's KEK (the DEKs are re-wrapped under it). */\n readonly newOwnerSecret: string\n /** Legal/contractual basis recorded in the audit (e.g. 'contractual-handover'). */\n readonly legalBasis: string\n readonly factors?: FactorProofBundle\n}\n\nexport interface LiberateResult {\n /** The hash-pinned pre-liberation evidence snapshot. */\n readonly snapshot: FrozenSnapshotRef\n}\n\n/**\n * Audited claim of ownership over a sealed-owner vault by its custodian. See\n * the module doc for the full ceremony + security rationale.\n */\nexport async function liberateVault(\n vault: Vault,\n opts: LiberateOptions,\n): Promise<LiberateResult> {\n // 1. gate — fail-closed `liberate-vault`.\n await vault.noydb.checkGate(vault.name, 'liberate-vault', opts.factors)\n\n // 2. caller must be the custodian (the de-facto authority holding the DEKs).\n const { name: vaultName, adapter, keyring } = vault._introspectState()\n if (keyring.role !== 'custodian') {\n throw new PermissionDeniedError(\n 'liberation is claimed only by the custodian (the de-facto authority holding the DEKs)',\n )\n }\n\n // Refuse to clobber an existing principal: the new owner must be a FRESH id.\n // (Checked before any side effect so a colliding id never leaves a half-run\n // ceremony — no orphan snapshot, no partial keyring overwrite.)\n const existing = await adapter.get(vaultName, '_keyring', opts.newOwnerId)\n if (existing) {\n throw new PermissionDeniedError(\n `liberateVault: newOwnerId \"${opts.newOwnerId}\" already exists as a principal; choose a fresh id (liberation mints a distinct owner, it never overwrites an existing keyring)`,\n )\n }\n\n // 3. Pre-liberation EVIDENCE snapshot of every operational collection —\n // snapshot-only (live data preserved for the new owner; liberation\n // transfers operational continuity, it does not erase).\n const collections = await listOperationalCollections(vault)\n const snapshot = await freezeSnapshotOnly(vault, collections, { actorUserId: keyring.userId })\n\n // 4. Mint a NEW owner keyring, re-wrapping the incumbent DEKs under the new\n // owner's fresh KEK. The old sealed owner is NOT unsealed — a DISTINCT\n // principal is minted and the original owner credential is left orphaned\n // (inalienability floor). Mirrors adopt-partition.ts's DEK re-wrap.\n const newOwner = await createOwnerKeyring(adapter, vaultName, { userId: opts.newOwnerId, secret: opts.newOwnerSecret })\n if (!newOwner.kek) {\n throw new PermissionDeniedError(\n `new owner keyring for \"${opts.newOwnerId}\" has no KEK to re-wrap the incumbent DEKs under`,\n )\n }\n const env = await adapter.get(vaultName, '_keyring', opts.newOwnerId)\n if (!env) {\n throw new PermissionDeniedError(`new owner keyring for \"${opts.newOwnerId}\" did not persist`)\n }\n const keyringFile = JSON.parse(env._data) as KeyringFile\n // #1096 — this is a read-BACK of the file `createOwnerKeyring` just wrote, and\n // it is about to be edited and restamped, so the store gets a window to alter\n // it in between. Verified against the NEW owner's own roster key, not the\n // incumbent's: at this instant the file is still stamped under the fresh key\n // minted above (the swap to the incumbent key happens below).\n const mintedRosterKey = requireRosterKey(newOwner, 'liberateVault')\n await assertRosterTagValid(keyringFile, mintedRosterKey, opts.newOwnerId)\n const mergedDeks: Record<string, string> = { ...keyringFile.deks }\n for (const [collection, dek] of keyring.deks) {\n mergedDeks[collection] = await wrapKey(dek, newOwner.kek)\n }\n // #1096 — liberation joins a new owner to an EXISTING vault, so the vault's\n // roster key must stay the incumbent one. `createOwnerKeyring` above minted a\n // fresh roster key (correct for a new vault, wrong here), and the merge loop\n // has just overwritten `_roster` with the incumbent's — so the tag it stamped\n // no longer matches the key in the file. Restamp under the key that actually\n // ends up persisted, or the new owner cannot open the vault they just claimed.\n //\n // Keeping the incumbent key is the substantive half: a fresh one would leave\n // the new owner unable to verify any co-member's roster, and every co-member\n // unable to verify theirs.\n const rosterKey = requireRosterKey(keyring, 'liberateVault')\n const merged: KeyringFile = { ...keyringFile, deks: mergedDeks }\n const mergedFile: KeyringFile = { ...merged, roster_tag: await mintRosterTag(merged, rosterKey) }\n await adapter.put(vaultName, '_keyring', opts.newOwnerId, { ...env, _data: JSON.stringify(mergedFile) })\n\n // 5. Lifecycle ledger audit (no-op if the history strategy is absent).\n await vault._getLedgerOrNull()?.append({\n op: 'lifecycle', collection: '', id: '', version: 0, actor: opts.newOwnerId, payloadHash: '',\n reason: `liberation-claimed:${opts.newOwnerId}:${opts.legalBasis}`,\n })\n\n // 6. Stamp the Deed marker with `liberatedAt` (if a marker exists).\n const marker = await loadDeedMarker(adapter, vaultName)\n if (marker) {\n await saveDeedMarker(adapter, vaultName, { ...marker, liberatedAt: new Date().toISOString() })\n }\n\n return { snapshot }\n}\n\n/**\n * Enumerate the vault's operational (user-facing) collections — those carried\n * by the caller's keyring DEK map, minus the reserved internal collections\n * (`_*`). These are the collections frozen into the evidence snapshot.\n */\nasync function listOperationalCollections(vault: Vault): Promise<readonly string[]> {\n const { keyring } = vault._introspectState()\n return [...keyring.deks.keys()].filter((c) => !c.startsWith('_'))\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/with-party/team/deed.ts","../src/with-party/custody/liberate.ts"],"sourcesContent":["/**\n * FR-6 — Deed: sealed / hidden-owner provisioning.\n *\n * A **Deed** is a vault owned by a *latent* principal who never\n * authenticates. The owner credential (the random secret that\n * derives `KEK_owner`) is minted machine-side and sealed under a\n * **non-firm** {@link NoydbSealer} — that sealing boundary is\n * the cryptographic *inalienability anchor*: whoever holds the\n * provider (the client / their KMS) is the only party that can ever\n * re-derive `KEK_owner`. A firm-side custodian operates the vault\n * fully but can never reach the owner key — there is deliberately NO\n * firm-controlled fallback.\n *\n * Provisioning reuses the managed-mode seam:\n * - {@link resolveManagedSecret} mints + seals + persists the random\n * secret at `_meta/sealed-secret` (and unseals it on every\n * subsequent open through the same provider).\n * - {@link createOwnerKeyring} derives `KEK_owner` from that\n * secret and writes the `_keyring/<ownerUserId>` file.\n *\n * On top of that, a Deed writes a `_meta/deed` **marker**. The marker\n * is PLAINTEXT metadata — it records WHO the latent owner is and WHICH\n * sealing boundary protects them, so it must be readable without\n * unlocking the vault (a custodian or auditor inspecting the vault must\n * be able to see \"this is a Deed vault, owner = X, sealed under Y\"\n * without any key). The marker itself is therefore never sealed; only\n * the owner *credential* is.\n *\n * @module\n */\n\nimport { buildRecordEnvelope } from '../../kernel/enclave/index.js'\nimport type { NoydbStore } from '../../kernel/types.js'\nimport type { UnlockedKeyring } from './keyring.js'\nimport { createOwnerKeyring } from './keyring.js'\nimport type { NoydbSealer } from './managed-secret.js'\nimport { resolveManagedSecret } from './managed-secret.js'\n\n/** Reserved id for the Deed marker under `_meta`. */\nexport const DEED_RECORD_ID = 'deed' as const\n\n/**\n * Plaintext metadata recording a vault's latent-owner Deed. Persisted\n * at `_meta/deed`. Readable without unlocking the vault by design — it\n * carries no secret material, only the identity of the latent owner\n * and the sealing boundary that anchors inalienability.\n */\nexport interface DeedMarker {\n /** The latent owner principal — the user id of the `_keyring/<id>` owner file. */\n readonly ownerUserId: string\n /**\n * The `NoydbSealer.id` the owner credential is sealed under.\n * The inalienability anchor: only the holder of this (non-firm)\n * provider can re-derive `KEK_owner`. Audit metadata — never secret.\n */\n readonly sealedUnder: string\n /** Always `true` for a Deed — the owner never authenticates interactively. */\n readonly latent: true\n /** ISO-8601 timestamp the Deed was issued. */\n readonly issuedAt: string\n /**\n * ISO-8601 timestamp the vault was liberated (a new owner claimed it\n * via the audited Liberate ceremony), if any. Absent until liberation.\n */\n readonly liberatedAt?: string\n}\n\n/**\n * Wire-format payload stored inside the `_meta/deed` envelope. Carries\n * a magic marker for forensics + the {@link DeedMarker} fields. JSON,\n * AES-GCM bypassed (the marker is plaintext metadata by design).\n */\ninterface DeedEnvelopePayload extends DeedMarker {\n readonly _noydb_deed: 1\n}\n\n/**\n * Provision a Deed: a latent owner whose credential is sealed under\n * `sealing` (a NON-firm provider). Mints + seals the owner secret\n * via {@link resolveManagedSecret}, derives the owner keyring via\n * {@link createOwnerKeyring}, then writes the plaintext `_meta/deed`\n * marker. Returns the unlocked owner keyring.\n *\n * The returned keyring is the only in-memory window onto `KEK_owner`\n * for this call; the persistent re-entry point is the sealing provider\n * (re-run {@link resolveManagedSecret} with the same provider to\n * re-resolve the secret, then {@link createOwnerKeyring}/load to\n * unlock — no interactive secret is ever required).\n *\n * There is deliberately no firm-controlled fallback: the marker's\n * `sealedUnder` is the single cryptographic anchor of ownership.\n */\nexport async function createDeedOwner(\n store: NoydbStore,\n vault: string,\n ownerUserId: string,\n sealing: NoydbSealer,\n): Promise<UnlockedKeyring> {\n // 1. Mint + seal + persist the random owner secret under the\n // non-firm provider (writes _meta/sealed-secret).\n const secret = await resolveManagedSecret(store, vault, sealing)\n\n // 2. Derive KEK_owner from the (never-human-seen) secret and\n // write the owner keyring file.\n const keyring = await createOwnerKeyring(store, vault, { userId: ownerUserId, secret: secret })\n\n // 3. Write the plaintext Deed marker. NOT sealed — it is audit\n // metadata that must be readable without unlocking.\n await saveDeedMarker(store, vault, {\n ownerUserId,\n sealedUnder: sealing.id,\n latent: true,\n issuedAt: new Date().toISOString(),\n })\n\n return keyring\n}\n\n/**\n * Read the {@link DeedMarker} from `_meta/deed`, or `null` if the vault\n * has no Deed marker (i.e. it is not a Deed vault). Plaintext read — no\n * unlocking required.\n */\nexport async function loadDeedMarker(\n store: NoydbStore,\n vault: string,\n): Promise<DeedMarker | null> {\n const envelope = await store.get(vault, '_meta', DEED_RECORD_ID)\n if (!envelope) return null\n let payload: unknown\n try {\n payload = JSON.parse(envelope._data)\n } catch {\n return null\n }\n if (typeof payload !== 'object' || payload === null) return null\n const r = payload as Record<string, unknown>\n if (r._noydb_deed !== 1) return null\n if (\n typeof r.ownerUserId !== 'string'\n || typeof r.sealedUnder !== 'string'\n || r.latent !== true\n || typeof r.issuedAt !== 'string'\n ) {\n return null\n }\n const marker: DeedMarker = {\n ownerUserId: r.ownerUserId,\n sealedUnder: r.sealedUnder,\n latent: true,\n issuedAt: r.issuedAt,\n ...(typeof r.liberatedAt === 'string' ? { liberatedAt: r.liberatedAt } : {}),\n }\n return marker\n}\n\n/** Whether `vault` carries a Deed marker (a sealed/latent owner). */\nexport async function isDeedVault(\n store: NoydbStore,\n vault: string,\n): Promise<boolean> {\n return (await loadDeedMarker(store, vault)) !== null\n}\n\n/**\n * Persist a {@link DeedMarker} at `_meta/deed`. Mirrors\n * `saveSealedSecret`'s envelope shape: a standard\n * {@link EncryptedEnvelope} with AES-GCM bypassed (`_iv: ''`), the\n * payload stored as plaintext JSON in `_data`. The marker is metadata,\n * not a secret — sealing it would defeat its purpose (auditors /\n * custodians must read it without a key).\n *\n * @internal — used by `createDeedOwner` and (later) the Liberate\n * ceremony to stamp `liberatedAt`.\n */\nexport async function saveDeedMarker(\n store: NoydbStore,\n vault: string,\n marker: DeedMarker,\n): Promise<void> {\n const persisted: DeedEnvelopePayload = { _noydb_deed: 1, ...marker }\n const prior = await store.get(vault, '_meta', DEED_RECORD_ID)\n const env = buildRecordEnvelope(\n { collection: '_meta', id: DEED_RECORD_ID, version: (prior?._v ?? 0) + 1 },\n // AES-GCM bypassed — the marker is plaintext audit metadata.\n { iv: '', data: JSON.stringify(persisted) },\n )\n await store.put(vault, '_meta', DEED_RECORD_ID, env)\n}\n","/**\n * `liberateVault` — the audited claim of ownership over a\n * sealed-owner (Deed) vault. The inverse of withdrawal.\n *\n * A **Deed** vault's owner credential is sealed under a non-firm provider, so\n * the firm-side **custodian** (which holds every collection DEK and operates\n * the vault fully) can never reach `KEK_owner`. Liberation is the ONLY route\n * by which a custodian assumes ownership, and it is deliberately a manual,\n * audited ceremony:\n *\n * 1. gate `'liberate-vault'` (fail-closed)\n * 2. caller MUST be the `custodian` (the de-facto authority holding the DEKs)\n * 3. freeze a PRE-liberation EVIDENCE snapshot (hash-pinned in the ledger) —\n * but PRESERVE the live data for the new owner (see the freeze decision\n * below)\n * 4. mint a NEW owner keyring re-wrapping the incumbent DEKs under the new\n * owner's KEK\n * 5. lifecycle ledger `liberation-claimed:<newOwnerId>:<legalBasis>`\n * 6. stamp the `_meta/deed` marker with `liberatedAt`\n *\n * ## Security: the inalienability floor\n *\n * Liberation **mints a new owner from the custodian's DEKs** — it does NOT\n * unseal the original sealed owner. The old sealed-owner credential is left\n * untouched and ORPHANED (its `_keyring/<id>` file remains, its KEK is still\n * sealed under the non-firm provider), never impersonated. The new owner is a\n * DISTINCT principal under a fresh KEK derived from `newOwnerSecret`. This\n * preserves the inalienability floor: the act of claiming ownership is itself\n * auditable and produces a different principal, rather than silently assuming\n * the latent owner's identity.\n *\n * ## Freeze decision: snapshot-only, not freeze-and-delete\n *\n * `freezeAndDeleteClosure` (withdraw-accessible.ts) writes a hash-pinned\n * snapshot and THEN delete-closures the live records — correct for a\n * destructive withdrawal, WRONG for liberation. Liberation transfers\n * operational continuity; it must leave the live data intact for the new\n * owner. We therefore call the snapshot-only core `freezeSnapshotOnly`\n * (factored out of that module; the freeze-AND-delete withdrawal path is\n * unchanged) to pin the evidence snapshot while preserving the records.\n *\n * @module\n */\n\nimport type { Vault } from '../../kernel/vault.js'\nimport type { FactorProofBundle, KeyringFile } from '../../kernel/types.js'\nimport { PermissionDeniedError } from '../../kernel/errors.js'\nimport { wrapKey } from '../../kernel/enclave/index.js'\nimport { createOwnerKeyring, requireRosterKey } from '../team/keyring.js'\nimport { mintRosterTag, assertRosterTagValid } from '../team/roster-tag.js'\nimport { nextRosterEpoch } from '../team/roster-epoch.js'\nimport type { FrozenSnapshotRef } from '../../with-audit/portability/withdraw-accessible.js'\nimport { freezeSnapshotOnly } from '../../with-audit/portability/withdraw-accessible.js'\nimport { loadDeedMarker, saveDeedMarker } from '../team/deed.js'\n\nexport interface LiberateOptions {\n /** The id of the new owner principal the custodian mints by claiming ownership. */\n readonly newOwnerId: string\n /** The secret that derives the new owner's KEK (the DEKs are re-wrapped under it). */\n readonly newOwnerSecret: string\n /** Legal/contractual basis recorded in the audit (e.g. 'contractual-handover'). */\n readonly legalBasis: string\n readonly factors?: FactorProofBundle\n}\n\nexport interface LiberateResult {\n /** The hash-pinned pre-liberation evidence snapshot. */\n readonly snapshot: FrozenSnapshotRef\n}\n\n/**\n * Audited claim of ownership over a sealed-owner vault by its custodian. See\n * the module doc for the full ceremony + security rationale.\n */\nexport async function liberateVault(\n vault: Vault,\n opts: LiberateOptions,\n): Promise<LiberateResult> {\n // 1. gate — fail-closed `liberate-vault`.\n await vault.noydb.checkGate(vault.name, 'liberate-vault', opts.factors)\n\n // 2. caller must be the custodian (the de-facto authority holding the DEKs).\n const { name: vaultName, adapter, keyring } = vault._introspectState()\n if (keyring.role !== 'custodian') {\n throw new PermissionDeniedError(\n 'liberation is claimed only by the custodian (the de-facto authority holding the DEKs)',\n )\n }\n\n // Refuse to clobber an existing principal: the new owner must be a FRESH id.\n // (Checked before any side effect so a colliding id never leaves a half-run\n // ceremony — no orphan snapshot, no partial keyring overwrite.)\n const existing = await adapter.get(vaultName, '_keyring', opts.newOwnerId)\n if (existing) {\n throw new PermissionDeniedError(\n `liberateVault: newOwnerId \"${opts.newOwnerId}\" already exists as a principal; choose a fresh id (liberation mints a distinct owner, it never overwrites an existing keyring)`,\n )\n }\n\n // 3. Pre-liberation EVIDENCE snapshot of every operational collection —\n // snapshot-only (live data preserved for the new owner; liberation\n // transfers operational continuity, it does not erase).\n const collections = await listOperationalCollections(vault)\n const snapshot = await freezeSnapshotOnly(vault, collections, { actorUserId: keyring.userId })\n\n // 4. Mint a NEW owner keyring, re-wrapping the incumbent DEKs under the new\n // owner's fresh KEK. The old sealed owner is NOT unsealed — a DISTINCT\n // principal is minted and the original owner credential is left orphaned\n // (inalienability floor). Mirrors adopt-partition.ts's DEK re-wrap.\n const newOwner = await createOwnerKeyring(adapter, vaultName, { userId: opts.newOwnerId, secret: opts.newOwnerSecret })\n if (!newOwner.kek) {\n throw new PermissionDeniedError(\n `new owner keyring for \"${opts.newOwnerId}\" has no KEK to re-wrap the incumbent DEKs under`,\n )\n }\n const env = await adapter.get(vaultName, '_keyring', opts.newOwnerId)\n if (!env) {\n throw new PermissionDeniedError(`new owner keyring for \"${opts.newOwnerId}\" did not persist`)\n }\n const keyringFile = JSON.parse(env._data) as KeyringFile\n // #1096 — this is a read-BACK of the file `createOwnerKeyring` just wrote, and\n // it is about to be edited and restamped, so the store gets a window to alter\n // it in between. Verified against the NEW owner's own roster key, not the\n // incumbent's: at this instant the file is still stamped under the fresh key\n // minted above (the swap to the incumbent key happens below).\n const mintedRosterKey = requireRosterKey(newOwner, 'liberateVault')\n await assertRosterTagValid(keyringFile, mintedRosterKey, opts.newOwnerId)\n const mergedDeks: Record<string, string> = { ...keyringFile.deks }\n for (const [collection, dek] of keyring.deks) {\n mergedDeks[collection] = await wrapKey(dek, newOwner.kek)\n }\n // #1096 — liberation joins a new owner to an EXISTING vault, so the vault's\n // roster key must stay the incumbent one. `createOwnerKeyring` above minted a\n // fresh roster key (correct for a new vault, wrong here), and the merge loop\n // has just overwritten `_roster` with the incumbent's — so the tag it stamped\n // no longer matches the key in the file. Restamp under the key that actually\n // ends up persisted, or the new owner cannot open the vault they just claimed.\n //\n // Keeping the incumbent key is the substantive half: a fresh one would leave\n // the new owner unable to verify any co-member's roster, and every co-member\n // unable to verify theirs.\n const rosterKey = requireRosterKey(keyring, 'liberateVault')\n const merged: KeyringFile = { ...keyringFile, deks: mergedDeks }\n // #1097 — stamped BEFORE the tag is minted, so it lands inside the\n // authenticated canonical and a store can neither edit nor strip it.\n const withEpoch = { ...merged, roster_epoch: nextRosterEpoch(keyringFile.roster_epoch) }\n const mergedFile: KeyringFile = { ...withEpoch, roster_tag: await mintRosterTag(withEpoch, rosterKey) }\n await adapter.put(vaultName, '_keyring', opts.newOwnerId, { ...env, _data: JSON.stringify(mergedFile) })\n\n // 5. Lifecycle ledger audit (no-op if the history strategy is absent).\n await vault._getLedgerOrNull()?.append({\n op: 'lifecycle', collection: '', id: '', version: 0, actor: opts.newOwnerId, payloadHash: '',\n reason: `liberation-claimed:${opts.newOwnerId}:${opts.legalBasis}`,\n })\n\n // 6. Stamp the Deed marker with `liberatedAt` (if a marker exists).\n const marker = await loadDeedMarker(adapter, vaultName)\n if (marker) {\n await saveDeedMarker(adapter, vaultName, { ...marker, liberatedAt: new Date().toISOString() })\n }\n\n return { snapshot }\n}\n\n/**\n * Enumerate the vault's operational (user-facing) collections — those carried\n * by the caller's keyring DEK map, minus the reserved internal collections\n * (`_*`). These are the collections frozen into the evidence snapshot.\n */\nasync function listOperationalCollections(vault: Vault): Promise<readonly string[]> {\n const { keyring } = vault._introspectState()\n return [...keyring.deks.keys()].filter((c) => !c.startsWith('_'))\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildRecordAad,
|
|
3
3
|
openEnvelopeJson
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DOPZWTMJ.js";
|
|
5
5
|
import {
|
|
6
6
|
buildRecordEnvelope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4RUFYGWG.js";
|
|
8
8
|
import {
|
|
9
9
|
encrypt,
|
|
10
10
|
hmacSha256Hex,
|
|
11
11
|
sha256Hex
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-USKHHOIV.js";
|
|
13
13
|
|
|
14
14
|
// src/with-audit/forget/strategy.ts
|
|
15
15
|
var NO_FORGET = { subjects: {} };
|
|
@@ -149,4 +149,4 @@ export {
|
|
|
149
149
|
coerceSubjectId,
|
|
150
150
|
readDottedPath
|
|
151
151
|
};
|
|
152
|
-
//# sourceMappingURL=chunk-
|
|
152
|
+
//# sourceMappingURL=chunk-HOIWW2LV.js.map
|