@noy-db/hub 0.10.0-pre.0 → 0.10.0-pre.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +90 -0
- package/README.md +2 -2
- package/dist/api-QSEKT4KS.js +15 -0
- package/dist/as/index.js +19 -12
- package/dist/as/index.js.map +1 -1
- package/dist/at/index.js +6 -9
- package/dist/attestation/index.js +16 -19
- package/dist/attestation/index.js.map +1 -1
- package/dist/{backup-E3GBMNDA.js → backup-BHKVK5SD.js} +9 -12
- package/dist/{backup-E3GBMNDA.js.map → backup-BHKVK5SD.js.map} +1 -1
- package/dist/blobs/index.js +10 -13
- package/dist/blobs/index.js.map +1 -1
- package/dist/broker/index.js +11 -14
- package/dist/broker/index.js.map +1 -1
- package/dist/by/index.js +2 -2
- package/dist/capsule/contract.d.ts +176 -16
- package/dist/capsule/contract.js +35 -30
- package/dist/capsule/enclave-aes/bound.d.ts +11 -1
- package/dist/capsule/enclave-aes/classify/digest.d.ts +4 -2
- package/dist/capsule/enclave-aes/index.d.ts +9 -0
- package/dist/capsule/enclave-aes/index.js +643 -78
- package/dist/capsule/enclave-aes/index.js.map +1 -1
- package/dist/capsule/enclave-aes/primitives.d.ts +2 -2
- package/dist/capsule/index.d.ts +1 -1
- package/dist/capsule/plumbing/classify-reveal.d.ts +29 -0
- package/dist/capsule/plumbing/classify-verify.d.ts +53 -0
- package/dist/capsule/plumbing/index.d.ts +17 -0
- package/dist/{capsule-YQKQZPH7.js → capsule-YAITMH77.js} +16 -9
- package/dist/cargo/index.js +34 -36
- package/dist/{chunk-U43RSPPX.js → chunk-23A4SBRR.js} +3 -4
- package/dist/{chunk-U43RSPPX.js.map → chunk-23A4SBRR.js.map} +1 -1
- package/dist/{chunk-PREYKC76.js → chunk-24AGG4PP.js} +3 -3
- package/dist/{chunk-ZVJKHGE5.js → chunk-24IJZA4M.js} +14 -8
- package/dist/chunk-24IJZA4M.js.map +1 -0
- package/dist/{chunk-4N4OIVK3.js → chunk-2NVQ5SEA.js} +15 -5
- package/dist/chunk-2NVQ5SEA.js.map +1 -0
- package/dist/{chunk-ZNVBCKMV.js → chunk-2SIREKBR.js} +2 -2
- package/dist/{chunk-N6EWQ5VB.js → chunk-37FOG6AE.js} +14 -7
- package/dist/chunk-37FOG6AE.js.map +1 -0
- package/dist/{chunk-UQRKAM2R.js → chunk-3M2KK7O7.js} +3 -3
- package/dist/{chunk-P6FATPXQ.js → chunk-3ZCVY3T6.js} +2 -2
- package/dist/{chunk-PBEHTFUG.js → chunk-4CGWLHPQ.js} +6 -6
- package/dist/{chunk-PFHDQY5L.js → chunk-56Z4NOC6.js} +3 -3
- package/dist/{chunk-GLSCL74M.js → chunk-5AVIUJP4.js} +13 -9
- package/dist/chunk-5AVIUJP4.js.map +1 -0
- package/dist/{chunk-F7X7MPK4.js → chunk-5BGHAVBN.js} +2 -2
- package/dist/{chunk-QHG7GQKM.js → chunk-5JNEDW7I.js} +2 -2
- package/dist/{chunk-GHMINSER.js → chunk-5OWJSDTO.js} +4 -4
- package/dist/{chunk-GHMINSER.js.map → chunk-5OWJSDTO.js.map} +1 -1
- package/dist/{chunk-DYIR6RC3.js → chunk-5Y4MO7UQ.js} +4 -4
- package/dist/{chunk-TLIFNRU5.js → chunk-63LZLRWG.js} +2 -2
- package/dist/{chunk-GZISWBCJ.js → chunk-74W56QPY.js} +4 -4
- package/dist/{chunk-CLOSXHR4.js → chunk-7KNYLHVX.js} +3 -3
- package/dist/chunk-7KNYLHVX.js.map +1 -0
- package/dist/{chunk-LFUID7OW.js → chunk-7VJ2SIEI.js} +42 -22
- package/dist/chunk-7VJ2SIEI.js.map +1 -0
- package/dist/{chunk-WVQDY3UM.js → chunk-AHA7UALU.js} +4 -4
- package/dist/{chunk-U277K5GR.js → chunk-AIHBYQHF.js} +259 -123
- package/dist/chunk-AIHBYQHF.js.map +1 -0
- package/dist/{chunk-S2ORTQGS.js → chunk-ANYX2M6P.js} +3 -3
- package/dist/{chunk-6WEPFEMJ.js → chunk-ATKYMRBC.js} +4 -4
- package/dist/{chunk-7UHLO4ZN.js → chunk-B2HU55QD.js} +2 -2
- package/dist/{chunk-Y22JWHCP.js → chunk-BEKMLYQ4.js} +4 -4
- package/dist/{chunk-27NCEPKM.js → chunk-BPFXD4EX.js} +23 -3
- package/dist/chunk-BPFXD4EX.js.map +1 -0
- package/dist/{chunk-7C7OF26T.js → chunk-C2NXAR3D.js} +5 -5
- package/dist/{chunk-Z2KP6PNF.js → chunk-CJBWJO5P.js} +6 -6
- package/dist/{chunk-Z2KP6PNF.js.map → chunk-CJBWJO5P.js.map} +1 -1
- package/dist/{chunk-6WIFF46H.js → chunk-CQLMRCKX.js} +2 -2
- package/dist/{chunk-URGHKZPL.js → chunk-CR5UPYIJ.js} +1 -1
- package/dist/chunk-CR5UPYIJ.js.map +1 -0
- package/dist/{chunk-LMC5L3MM.js → chunk-DS2JXSUA.js} +6 -6
- package/dist/{chunk-X6Z2SIRF.js → chunk-E2JIE4S3.js} +2 -2
- package/dist/{chunk-EQ6C2ZPT.js → chunk-E7Y4J4GL.js} +2 -2
- package/dist/{chunk-LZN6DTFI.js → chunk-ECDM6YRX.js} +2 -2
- package/dist/{chunk-WRLWEYHY.js → chunk-EFINFZIF.js} +11 -1
- package/dist/chunk-EFINFZIF.js.map +1 -0
- package/dist/{chunk-2T2TGRWE.js → chunk-EM56MHN5.js} +6 -6
- package/dist/{chunk-NK4LGBGQ.js → chunk-EQXOJH6O.js} +4 -4
- package/dist/{chunk-OK44MD3C.js → chunk-ET3U2C3A.js} +2 -2
- package/dist/{chunk-RF5WDM25.js → chunk-EU4G7PQH.js} +2 -2
- package/dist/{chunk-K5JNK63R.js → chunk-EUCUYK5E.js} +10 -10
- package/dist/{chunk-2ODEFG6K.js → chunk-EWSIJDWO.js} +4 -4
- package/dist/{chunk-LJ744WXU.js → chunk-F2FD4LSB.js} +2 -2
- package/dist/{chunk-L4UL4IAR.js → chunk-F7ENMZYJ.js} +2 -2
- package/dist/{chunk-KBIS64X4.js → chunk-FIIVYQOW.js} +5 -5
- package/dist/{chunk-TBVDI3LY.js → chunk-FPK2LPLR.js} +8 -8
- package/dist/chunk-FPK2LPLR.js.map +1 -0
- package/dist/{chunk-BQJ5ORU5.js → chunk-FQEUJGBV.js} +2 -2
- package/dist/{chunk-UORWAG7K.js → chunk-FY4FFNKK.js} +2 -2
- package/dist/{chunk-MMWX5OT5.js → chunk-GDCYZGPB.js} +2 -2
- package/dist/{chunk-7ONMS7QI.js → chunk-H6Q7GKLI.js} +2 -2
- package/dist/{chunk-654RE5YC.js → chunk-HDAPQF6Q.js} +3 -3
- package/dist/{chunk-5SMCBPJ2.js → chunk-HRLMUZLI.js} +5 -5
- package/dist/{chunk-R4GLRJ55.js → chunk-HRNQYGLQ.js} +2 -2
- package/dist/{chunk-HTRLQ4ZZ.js → chunk-I4S7IZSS.js} +321 -235
- package/dist/chunk-I4S7IZSS.js.map +1 -0
- package/dist/{chunk-UNAMWK2Q.js → chunk-IN4XZJYD.js} +4 -3
- package/dist/{chunk-UNAMWK2Q.js.map → chunk-IN4XZJYD.js.map} +1 -1
- package/dist/{chunk-2RH5SEY7.js → chunk-ISIXU45J.js} +2 -2
- package/dist/chunk-ISIXU45J.js.map +1 -0
- package/dist/{chunk-NHEKQWFI.js → chunk-J4L4AS2W.js} +2 -2
- package/dist/{chunk-UMV5GBTJ.js → chunk-JPSOFWJR.js} +2 -2
- package/dist/{chunk-A52BK5AY.js → chunk-JRCO67NG.js} +2 -2
- package/dist/{chunk-FVKQ5QUC.js → chunk-JW3I3NNZ.js} +2 -2
- package/dist/{chunk-BNYDOF2Q.js → chunk-JZMPSQBH.js} +4 -4
- package/dist/{chunk-ZK2WT532.js → chunk-K5TVSOPQ.js} +5 -5
- package/dist/{chunk-2IASHJPS.js → chunk-K75SL74I.js} +2 -2
- package/dist/{chunk-O3NGOHXQ.js → chunk-KA4AAUST.js} +2 -2
- package/dist/chunk-KHSBMLQE.js +161 -0
- package/dist/chunk-KHSBMLQE.js.map +1 -0
- package/dist/{chunk-QQLXKDGC.js → chunk-KUGUML7H.js} +3 -3
- package/dist/{chunk-AMSSAOOB.js → chunk-L4J5NC2Q.js} +2 -2
- package/dist/{chunk-AYOQZJDB.js → chunk-LIX4QPMM.js} +2 -2
- package/dist/{chunk-WIUH6EJ7.js → chunk-LWQFGR34.js} +3 -3
- package/dist/{chunk-QNOWNCZS.js → chunk-MMSSHMHW.js} +2 -2
- package/dist/{chunk-T5EXREMW.js → chunk-N25Z6PR4.js} +6 -5
- package/dist/chunk-N25Z6PR4.js.map +1 -0
- package/dist/{chunk-ND6S2DKC.js → chunk-N5S2BCW3.js} +2 -2
- package/dist/{chunk-X5RGG3ZW.js → chunk-NIZH2TYZ.js} +2 -2
- package/dist/{chunk-SXPLIRQH.js → chunk-NLDBQHDV.js} +2 -2
- package/dist/{chunk-AI35LNWQ.js → chunk-NQQ4MOPC.js} +4 -4
- package/dist/{chunk-B6EWMGFX.js → chunk-NUBI6PYH.js} +2 -2
- package/dist/{chunk-ID4ZBC3X.js → chunk-NYEXUZDW.js} +4 -4
- package/dist/{chunk-GU6QXHPZ.js → chunk-OIBFIWVJ.js} +4 -4
- package/dist/chunk-OIBFIWVJ.js.map +1 -0
- package/dist/{chunk-PWAMX5KU.js → chunk-OOLF5FU2.js} +2 -2
- package/dist/{chunk-WQUIJPN4.js → chunk-OQA7UF2Q.js} +3 -3
- package/dist/{chunk-7JRLCP2J.js → chunk-ORJPICJI.js} +2 -2
- package/dist/{chunk-IF2M43G4.js → chunk-PBRD75JF.js} +2 -2
- package/dist/{chunk-RKBCUP5D.js → chunk-PDCBL23X.js} +39 -17
- package/dist/chunk-PDCBL23X.js.map +1 -0
- package/dist/{chunk-BSEPI3HD.js → chunk-PR36DD2X.js} +7 -7
- package/dist/{chunk-52ZFNK46.js → chunk-PV4HIC4E.js} +2 -2
- package/dist/{chunk-TU6ZJTYT.js → chunk-PZNK4HTV.js} +3 -3
- package/dist/{chunk-LUQBG637.js → chunk-QBLPLNPE.js} +3 -3
- package/dist/{chunk-UADW5NOU.js → chunk-QZXUISRF.js} +5 -5
- package/dist/{chunk-BMAXBTYH.js → chunk-RBXYO7MD.js} +5 -5
- package/dist/{chunk-PZN76MMV.js → chunk-RIACRFWA.js} +4 -4
- package/dist/{chunk-ICHHNI5E.js → chunk-RL6RNDJQ.js} +8 -8
- package/dist/{chunk-4WLI37WK.js → chunk-SJ2P7UXD.js} +7 -7
- package/dist/{chunk-2QH3I7QC.js → chunk-SWXS4LV3.js} +11 -11
- package/dist/{chunk-4KYKRYRT.js → chunk-TOTCZFRF.js} +2 -2
- package/dist/{chunk-CSAN22QG.js → chunk-TT4D52EK.js} +6 -6
- package/dist/{chunk-VLRY2UH4.js → chunk-U7CMJY5P.js} +10 -10
- package/dist/{chunk-NIUHKKMM.js → chunk-UNKTZDA2.js} +11 -11
- package/dist/{chunk-NIUHKKMM.js.map → chunk-UNKTZDA2.js.map} +1 -1
- package/dist/{chunk-QVUMKG3Z.js → chunk-UXH4AKH3.js} +95 -151
- package/dist/chunk-UXH4AKH3.js.map +1 -0
- package/dist/{chunk-PU5ZEV65.js → chunk-UZVHSYIF.js} +2 -2
- package/dist/{chunk-3EXQXOQ2.js → chunk-VHKAW5OI.js} +29 -5
- package/dist/chunk-VHKAW5OI.js.map +1 -0
- package/dist/{chunk-XQGKS4OW.js → chunk-VKZ3TDET.js} +3 -3
- package/dist/{chunk-ZOFNZLAA.js → chunk-VLZPUG5A.js} +4 -4
- package/dist/{chunk-OR3OHKU6.js → chunk-VSN5FLMI.js} +2 -2
- package/dist/{chunk-JQMEXCUZ.js → chunk-VYBBE7RN.js} +8 -8
- package/dist/chunk-VYBBE7RN.js.map +1 -0
- package/dist/{chunk-SVXFCCSX.js → chunk-WHK4JVKF.js} +8 -8
- package/dist/{chunk-YVA6UPRN.js → chunk-X4LDBALX.js} +2 -2
- package/dist/{chunk-35CNOVQE.js → chunk-X67E7NIJ.js} +3 -3
- package/dist/{chunk-IPF5ORDI.js → chunk-XMARKBUC.js} +3 -3
- package/dist/{chunk-B3B6HV5S.js → chunk-XMBBTETD.js} +2 -2
- package/dist/{chunk-GQ4MF3CM.js → chunk-XMBTAN5E.js} +28 -14
- package/dist/chunk-XMBTAN5E.js.map +1 -0
- package/dist/{chunk-FUHUGKDN.js → chunk-XROQP6IQ.js} +4 -4
- package/dist/chunk-XWWDZKLS.js +196 -0
- package/dist/chunk-XWWDZKLS.js.map +1 -0
- package/dist/{chunk-DL4GCSTS.js → chunk-Y2RYUWSQ.js} +10 -10
- package/dist/{chunk-7IV7GVOS.js → chunk-YCTSQV7K.js} +5 -5
- package/dist/{chunk-IFUYLIEY.js → chunk-YF7P2DG7.js} +2 -2
- package/dist/{chunk-PIO6NW7O.js → chunk-ZG7DBIVX.js} +2 -2
- package/dist/{chunk-NUZ7ROUZ.js → chunk-ZGJ775X7.js} +2 -2
- package/dist/{chunk-6BEBWHNL.js → chunk-ZQQLOEWN.js} +3 -3
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-7HXDMYHI.js → classified-marker-HKMRC7SC.js} +3 -3
- package/dist/{reveal-UAPBG743.js → classify-reveal-YSJKJEIR.js} +7 -12
- package/dist/classify-reveal-YSJKJEIR.js.map +1 -0
- package/dist/{verify-QWO5UKD6.js → classify-verify-ZCTKYQ43.js} +31 -41
- package/dist/classify-verify-ZCTKYQ43.js.map +1 -0
- package/dist/collection-facade-PPKNUR2J.js +38 -0
- package/dist/{computed-LZLSYOPG.js → computed-UCYVPMZA.js} +3 -3
- package/dist/consent/index.js +6 -9
- package/dist/consent/index.js.map +1 -1
- package/dist/cover/index.js +6 -9
- package/dist/custody/index.js +11 -13
- package/dist/{dead-filter-PZIJ4F4G.js → dead-filter-YOBWRG4O.js} +8 -11
- package/dist/{dead-filter-PZIJ4F4G.js.map → dead-filter-YOBWRG4O.js.map} +1 -1
- package/dist/debug/index.js +5 -8
- package/dist/debug/index.js.map +1 -1
- package/dist/delegation-SNALWRMO.js +24 -0
- package/dist/derivations/index.js +20 -23
- package/dist/derive-4GNU4E4I.js +17 -0
- package/dist/directory/index.js +7 -10
- package/dist/{dispatch-4BUYPWMJ.js → dispatch-QW32QBLW.js} +17 -20
- package/dist/{dispatch-4BUYPWMJ.js.map → dispatch-QW32QBLW.js.map} +1 -1
- package/dist/{dispatch-KOPDDPEQ.js → dispatch-V5WLDTVX.js} +5 -5
- package/dist/executor-7QN22OKI.js +8 -0
- package/dist/executor-BJZJNVBB.js +8 -0
- package/dist/executor-JEAAEJUM.js +32 -0
- package/dist/export-accessible-TVO2KQPG.js +20 -0
- package/dist/extract-partition-43CLDRN4.js +33 -0
- package/dist/{fanout-sidecar-FYDRL7F3.js → fanout-sidecar-DDONAFJT.js} +6 -9
- package/dist/{fanout-sidecar-FYDRL7F3.js.map → fanout-sidecar-DDONAFJT.js.map} +1 -1
- package/dist/forget/index.js +6 -9
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +4 -4
- package/dist/history/index.js +11 -14
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +11 -14
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +122 -123
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +5 -5
- package/dist/introspection/index.js +8 -11
- package/dist/issue-EIHEDAXM.js +16 -0
- package/dist/kernel/capsule-requirements.d.ts +84 -0
- package/dist/kernel/errors.d.ts +19 -3
- package/dist/kernel/export-scope.d.ts +28 -1
- package/dist/kernel/store-segment-guard.d.ts +29 -0
- package/dist/kernel/types.d.ts +169 -13
- package/dist/kernel/validation.d.ts +32 -0
- package/dist/kernel/vault.d.ts +5 -5
- package/dist/{ledger-UFJCB6T5.js → ledger-BMVUFQ3R.js} +8 -11
- package/dist/liberate-7KHXCLNJ.js +23 -0
- package/dist/link-set-PC2EJRKL.js +26 -0
- package/dist/{managed-secret-H5WYSJ46.js → managed-secret-RPRVEYZA.js} +7 -10
- package/dist/materialized-views/index.js +23 -26
- package/dist/{migrate-cek-SPESQAAO.js → migrate-cek-DTSCWGEF.js} +2 -2
- package/dist/money/index.js +5 -5
- package/dist/noydb-AYDNOXAX.js +98 -0
- package/dist/on/index.js +11 -13
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +9 -12
- package/dist/pod/index.js +65 -67
- package/dist/{pod-handle-GJLCOUGK.js → pod-handle-KBPQRN6Q.js} +6 -9
- package/dist/{pod-handle-GJLCOUGK.js.map → pod-handle-KBPQRN6Q.js.map} +1 -1
- package/dist/policy/index.js +7 -10
- package/dist/port/at/index.d.ts +1 -0
- package/dist/port/with/admission-authority.d.ts +2 -1
- package/dist/port/with/collection-registries.d.ts +37 -0
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-2AC2STHC.js → post-register-RITSNASO.js} +6 -6
- package/dist/query/all/index.js +15 -15
- package/dist/query/index.js +7 -7
- package/dist/query/live/index.js +7 -7
- package/dist/query/reduce/index.js +10 -10
- package/dist/query/relate/index.js +9 -9
- package/dist/reduce/index.js +8 -8
- package/dist/register-BB34SK7E.js +27 -0
- package/dist/registry-65L6V5TO.js +20 -0
- package/dist/registry-HU62GPWA.js +32 -0
- package/dist/registry-SMNK6UM4.js +8 -0
- package/dist/registry-X5VPBKCO.js +8 -0
- package/dist/request-withdrawal-4SKAH46W.js +26 -0
- package/dist/{restore-to-OOPKLAPU.js → restore-to-VQHT67OH.js} +7 -10
- package/dist/{restore-to-OOPKLAPU.js.map → restore-to-VQHT67OH.js.map} +1 -1
- package/dist/revoke-IF5PX2JY.js +21 -0
- package/dist/satellites/index.js +1 -1
- package/dist/schema-update/index.js +2 -2
- package/dist/sealed-record/index.js +9 -12
- package/dist/sealed-record/index.js.map +1 -1
- package/dist/search/index.js +4 -4
- package/dist/{seed-BVYDPVIW.js → seed-F2OSDZJR.js} +11 -13
- package/dist/{seed-BVYDPVIW.js.map → seed-F2OSDZJR.js.map} +1 -1
- package/dist/sequence/index.js +6 -9
- package/dist/session/index.js +6 -9
- package/dist/session/index.js.map +1 -1
- package/dist/shadow/index.js +2 -2
- package/dist/signer-5P7IZC2K.js +20 -0
- package/dist/snapshots/index.js +8 -10
- package/dist/snapshots/index.js.map +1 -1
- package/dist/{stale-CROGJBIJ.js → stale-PUCZH5GJ.js} +7 -10
- package/dist/storage-5EGY5OYE.js +18 -0
- package/dist/store/index.js +1 -1
- package/dist/{store-coordination-provider-2YD2PTTP.js → store-coordination-provider-SEQM7SHJ.js} +7 -10
- package/dist/{store-coordination-provider-2YD2PTTP.js.map → store-coordination-provider-SEQM7SHJ.js.map} +1 -1
- package/dist/sync/index.js +13 -15
- package/dist/sync/index.js.map +1 -1
- package/dist/team/index.js +14 -16
- package/dist/tiers/index.js +8 -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-diff-H7LT5ZBJ.js +8 -0
- package/dist/vault-head/index.js +5 -8
- package/dist/vault-head/index.js.map +1 -1
- package/dist/walk-Z4N7PCZ2.js +17 -0
- package/dist/with-audit/portability/export-accessible.d.ts +3 -1
- package/dist/with-cargo/vault-diff.d.ts +28 -0
- package/dist/with-commit/sequence/index.d.ts +22 -0
- package/dist/with-party/team/delegation.d.ts +16 -12
- package/dist/with-party/team/keyring.d.ts +77 -0
- package/dist/with-party/team/managed-secret.d.ts +40 -3
- package/dist/with-party/team/noydb-facade.d.ts +2 -2
- package/dist/with-party/team/peer-recover.d.ts +2 -2
- package/dist/with-party/team/rotate-recover.d.ts +3 -3
- package/dist/with-shape/manifest/storage.d.ts +2 -2
- package/dist/with-shape/manifest/writer.d.ts +2 -2
- package/dist/with-store/store-middleware.d.ts +18 -5
- package/dist/with-sync/engine.d.ts +0 -2
- package/dist/withdraw-accessible-CRCIQSTL.js +23 -0
- package/package.json +3 -3
- package/dist/api-H4B7ZQXP.js +0 -18
- package/dist/capsule/enclave-aes/classify/reveal.d.ts +0 -10
- package/dist/capsule/enclave-aes/classify/verify.d.ts +0 -36
- package/dist/chunk-27NCEPKM.js.map +0 -1
- package/dist/chunk-2RH5SEY7.js.map +0 -1
- package/dist/chunk-3EXQXOQ2.js.map +0 -1
- package/dist/chunk-4N4OIVK3.js.map +0 -1
- package/dist/chunk-5A3HOTP5.js +0 -591
- package/dist/chunk-5A3HOTP5.js.map +0 -1
- package/dist/chunk-CLOSXHR4.js.map +0 -1
- package/dist/chunk-EPPAEGH5.js +0 -157
- package/dist/chunk-EPPAEGH5.js.map +0 -1
- package/dist/chunk-GLSCL74M.js.map +0 -1
- package/dist/chunk-GQ4MF3CM.js.map +0 -1
- package/dist/chunk-GU6QXHPZ.js.map +0 -1
- package/dist/chunk-HTRLQ4ZZ.js.map +0 -1
- package/dist/chunk-JQMEXCUZ.js.map +0 -1
- package/dist/chunk-LFUID7OW.js.map +0 -1
- package/dist/chunk-N6EWQ5VB.js.map +0 -1
- package/dist/chunk-NH2UOV3B.js +0 -18
- package/dist/chunk-NH2UOV3B.js.map +0 -1
- package/dist/chunk-O6VOR4NH.js +0 -27
- package/dist/chunk-O6VOR4NH.js.map +0 -1
- package/dist/chunk-ODBOHPZU.js +0 -22
- package/dist/chunk-ODBOHPZU.js.map +0 -1
- package/dist/chunk-Q4DBU5RM.js +0 -78
- package/dist/chunk-Q4DBU5RM.js.map +0 -1
- package/dist/chunk-QVUMKG3Z.js.map +0 -1
- package/dist/chunk-RKBCUP5D.js.map +0 -1
- package/dist/chunk-T5EXREMW.js.map +0 -1
- package/dist/chunk-TBVDI3LY.js.map +0 -1
- package/dist/chunk-U277K5GR.js.map +0 -1
- package/dist/chunk-URGHKZPL.js.map +0 -1
- package/dist/chunk-VZFTON37.js +0 -40
- package/dist/chunk-VZFTON37.js.map +0 -1
- package/dist/chunk-WRLWEYHY.js.map +0 -1
- package/dist/chunk-ZVJKHGE5.js.map +0 -1
- package/dist/collection-facade-V63BEBGU.js +0 -41
- package/dist/delegation-7SSGIETH.js +0 -26
- package/dist/derive-IMI3BMDS.js +0 -20
- package/dist/executor-7SY3M6TZ.js +0 -8
- package/dist/executor-SNHW4ELF.js +0 -35
- package/dist/executor-Z3IKK7G3.js +0 -8
- package/dist/export-accessible-O7DIVFUO.js +0 -22
- package/dist/extract-partition-ELZEJKXM.js +0 -35
- package/dist/find-KWB2RYWJ.js +0 -10
- package/dist/issue-5ZHXK4HJ.js +0 -19
- package/dist/liberate-OEOSNNFH.js +0 -25
- package/dist/link-set-KMUBFN2L.js +0 -29
- package/dist/noydb-QDZ4QIKO.js +0 -100
- package/dist/register-PIORIMMR.js +0 -30
- package/dist/registry-BIMICFUH.js +0 -23
- package/dist/registry-JGWLW53D.js +0 -35
- package/dist/registry-SELCBYEQ.js +0 -8
- package/dist/registry-W327UNYH.js +0 -8
- package/dist/request-withdrawal-K3SXXODI.js +0 -28
- package/dist/reveal-UAPBG743.js.map +0 -1
- package/dist/revoke-6AFVXTWF.js +0 -24
- package/dist/signer-TW5MAQJP.js +0 -23
- package/dist/storage-SO2L2Z5J.js +0 -21
- package/dist/vault-diff-C6WUJFNP.js +0 -8
- package/dist/verify-QWO5UKD6.js.map +0 -1
- package/dist/walk-3KEOL7BY.js +0 -20
- package/dist/withdraw-accessible-OZU525ND.js +0 -25
- package/dist/withdraw-accessible-OZU525ND.js.map +0 -1
- /package/dist/{api-H4B7ZQXP.js.map → api-QSEKT4KS.js.map} +0 -0
- /package/dist/{capsule-YQKQZPH7.js.map → capsule-YAITMH77.js.map} +0 -0
- /package/dist/{chunk-PREYKC76.js.map → chunk-24AGG4PP.js.map} +0 -0
- /package/dist/{chunk-ZNVBCKMV.js.map → chunk-2SIREKBR.js.map} +0 -0
- /package/dist/{chunk-UQRKAM2R.js.map → chunk-3M2KK7O7.js.map} +0 -0
- /package/dist/{chunk-P6FATPXQ.js.map → chunk-3ZCVY3T6.js.map} +0 -0
- /package/dist/{chunk-PBEHTFUG.js.map → chunk-4CGWLHPQ.js.map} +0 -0
- /package/dist/{chunk-PFHDQY5L.js.map → chunk-56Z4NOC6.js.map} +0 -0
- /package/dist/{chunk-F7X7MPK4.js.map → chunk-5BGHAVBN.js.map} +0 -0
- /package/dist/{chunk-QHG7GQKM.js.map → chunk-5JNEDW7I.js.map} +0 -0
- /package/dist/{chunk-DYIR6RC3.js.map → chunk-5Y4MO7UQ.js.map} +0 -0
- /package/dist/{chunk-TLIFNRU5.js.map → chunk-63LZLRWG.js.map} +0 -0
- /package/dist/{chunk-GZISWBCJ.js.map → chunk-74W56QPY.js.map} +0 -0
- /package/dist/{chunk-WVQDY3UM.js.map → chunk-AHA7UALU.js.map} +0 -0
- /package/dist/{chunk-S2ORTQGS.js.map → chunk-ANYX2M6P.js.map} +0 -0
- /package/dist/{chunk-6WEPFEMJ.js.map → chunk-ATKYMRBC.js.map} +0 -0
- /package/dist/{chunk-7UHLO4ZN.js.map → chunk-B2HU55QD.js.map} +0 -0
- /package/dist/{chunk-Y22JWHCP.js.map → chunk-BEKMLYQ4.js.map} +0 -0
- /package/dist/{chunk-7C7OF26T.js.map → chunk-C2NXAR3D.js.map} +0 -0
- /package/dist/{chunk-6WIFF46H.js.map → chunk-CQLMRCKX.js.map} +0 -0
- /package/dist/{chunk-LMC5L3MM.js.map → chunk-DS2JXSUA.js.map} +0 -0
- /package/dist/{chunk-X6Z2SIRF.js.map → chunk-E2JIE4S3.js.map} +0 -0
- /package/dist/{chunk-EQ6C2ZPT.js.map → chunk-E7Y4J4GL.js.map} +0 -0
- /package/dist/{chunk-LZN6DTFI.js.map → chunk-ECDM6YRX.js.map} +0 -0
- /package/dist/{chunk-2T2TGRWE.js.map → chunk-EM56MHN5.js.map} +0 -0
- /package/dist/{chunk-NK4LGBGQ.js.map → chunk-EQXOJH6O.js.map} +0 -0
- /package/dist/{chunk-OK44MD3C.js.map → chunk-ET3U2C3A.js.map} +0 -0
- /package/dist/{chunk-RF5WDM25.js.map → chunk-EU4G7PQH.js.map} +0 -0
- /package/dist/{chunk-K5JNK63R.js.map → chunk-EUCUYK5E.js.map} +0 -0
- /package/dist/{chunk-2ODEFG6K.js.map → chunk-EWSIJDWO.js.map} +0 -0
- /package/dist/{chunk-LJ744WXU.js.map → chunk-F2FD4LSB.js.map} +0 -0
- /package/dist/{chunk-L4UL4IAR.js.map → chunk-F7ENMZYJ.js.map} +0 -0
- /package/dist/{chunk-KBIS64X4.js.map → chunk-FIIVYQOW.js.map} +0 -0
- /package/dist/{chunk-BQJ5ORU5.js.map → chunk-FQEUJGBV.js.map} +0 -0
- /package/dist/{chunk-UORWAG7K.js.map → chunk-FY4FFNKK.js.map} +0 -0
- /package/dist/{chunk-MMWX5OT5.js.map → chunk-GDCYZGPB.js.map} +0 -0
- /package/dist/{chunk-7ONMS7QI.js.map → chunk-H6Q7GKLI.js.map} +0 -0
- /package/dist/{chunk-654RE5YC.js.map → chunk-HDAPQF6Q.js.map} +0 -0
- /package/dist/{chunk-5SMCBPJ2.js.map → chunk-HRLMUZLI.js.map} +0 -0
- /package/dist/{chunk-R4GLRJ55.js.map → chunk-HRNQYGLQ.js.map} +0 -0
- /package/dist/{chunk-NHEKQWFI.js.map → chunk-J4L4AS2W.js.map} +0 -0
- /package/dist/{chunk-UMV5GBTJ.js.map → chunk-JPSOFWJR.js.map} +0 -0
- /package/dist/{chunk-A52BK5AY.js.map → chunk-JRCO67NG.js.map} +0 -0
- /package/dist/{chunk-FVKQ5QUC.js.map → chunk-JW3I3NNZ.js.map} +0 -0
- /package/dist/{chunk-BNYDOF2Q.js.map → chunk-JZMPSQBH.js.map} +0 -0
- /package/dist/{chunk-ZK2WT532.js.map → chunk-K5TVSOPQ.js.map} +0 -0
- /package/dist/{chunk-2IASHJPS.js.map → chunk-K75SL74I.js.map} +0 -0
- /package/dist/{chunk-O3NGOHXQ.js.map → chunk-KA4AAUST.js.map} +0 -0
- /package/dist/{chunk-QQLXKDGC.js.map → chunk-KUGUML7H.js.map} +0 -0
- /package/dist/{chunk-AMSSAOOB.js.map → chunk-L4J5NC2Q.js.map} +0 -0
- /package/dist/{chunk-AYOQZJDB.js.map → chunk-LIX4QPMM.js.map} +0 -0
- /package/dist/{chunk-WIUH6EJ7.js.map → chunk-LWQFGR34.js.map} +0 -0
- /package/dist/{chunk-QNOWNCZS.js.map → chunk-MMSSHMHW.js.map} +0 -0
- /package/dist/{chunk-ND6S2DKC.js.map → chunk-N5S2BCW3.js.map} +0 -0
- /package/dist/{chunk-X5RGG3ZW.js.map → chunk-NIZH2TYZ.js.map} +0 -0
- /package/dist/{chunk-SXPLIRQH.js.map → chunk-NLDBQHDV.js.map} +0 -0
- /package/dist/{chunk-AI35LNWQ.js.map → chunk-NQQ4MOPC.js.map} +0 -0
- /package/dist/{chunk-B6EWMGFX.js.map → chunk-NUBI6PYH.js.map} +0 -0
- /package/dist/{chunk-ID4ZBC3X.js.map → chunk-NYEXUZDW.js.map} +0 -0
- /package/dist/{chunk-PWAMX5KU.js.map → chunk-OOLF5FU2.js.map} +0 -0
- /package/dist/{chunk-WQUIJPN4.js.map → chunk-OQA7UF2Q.js.map} +0 -0
- /package/dist/{chunk-7JRLCP2J.js.map → chunk-ORJPICJI.js.map} +0 -0
- /package/dist/{chunk-IF2M43G4.js.map → chunk-PBRD75JF.js.map} +0 -0
- /package/dist/{chunk-BSEPI3HD.js.map → chunk-PR36DD2X.js.map} +0 -0
- /package/dist/{chunk-52ZFNK46.js.map → chunk-PV4HIC4E.js.map} +0 -0
- /package/dist/{chunk-TU6ZJTYT.js.map → chunk-PZNK4HTV.js.map} +0 -0
- /package/dist/{chunk-LUQBG637.js.map → chunk-QBLPLNPE.js.map} +0 -0
- /package/dist/{chunk-UADW5NOU.js.map → chunk-QZXUISRF.js.map} +0 -0
- /package/dist/{chunk-BMAXBTYH.js.map → chunk-RBXYO7MD.js.map} +0 -0
- /package/dist/{chunk-PZN76MMV.js.map → chunk-RIACRFWA.js.map} +0 -0
- /package/dist/{chunk-ICHHNI5E.js.map → chunk-RL6RNDJQ.js.map} +0 -0
- /package/dist/{chunk-4WLI37WK.js.map → chunk-SJ2P7UXD.js.map} +0 -0
- /package/dist/{chunk-2QH3I7QC.js.map → chunk-SWXS4LV3.js.map} +0 -0
- /package/dist/{chunk-4KYKRYRT.js.map → chunk-TOTCZFRF.js.map} +0 -0
- /package/dist/{chunk-CSAN22QG.js.map → chunk-TT4D52EK.js.map} +0 -0
- /package/dist/{chunk-VLRY2UH4.js.map → chunk-U7CMJY5P.js.map} +0 -0
- /package/dist/{chunk-PU5ZEV65.js.map → chunk-UZVHSYIF.js.map} +0 -0
- /package/dist/{chunk-XQGKS4OW.js.map → chunk-VKZ3TDET.js.map} +0 -0
- /package/dist/{chunk-ZOFNZLAA.js.map → chunk-VLZPUG5A.js.map} +0 -0
- /package/dist/{chunk-OR3OHKU6.js.map → chunk-VSN5FLMI.js.map} +0 -0
- /package/dist/{chunk-SVXFCCSX.js.map → chunk-WHK4JVKF.js.map} +0 -0
- /package/dist/{chunk-YVA6UPRN.js.map → chunk-X4LDBALX.js.map} +0 -0
- /package/dist/{chunk-35CNOVQE.js.map → chunk-X67E7NIJ.js.map} +0 -0
- /package/dist/{chunk-IPF5ORDI.js.map → chunk-XMARKBUC.js.map} +0 -0
- /package/dist/{chunk-B3B6HV5S.js.map → chunk-XMBBTETD.js.map} +0 -0
- /package/dist/{chunk-FUHUGKDN.js.map → chunk-XROQP6IQ.js.map} +0 -0
- /package/dist/{chunk-DL4GCSTS.js.map → chunk-Y2RYUWSQ.js.map} +0 -0
- /package/dist/{chunk-7IV7GVOS.js.map → chunk-YCTSQV7K.js.map} +0 -0
- /package/dist/{chunk-IFUYLIEY.js.map → chunk-YF7P2DG7.js.map} +0 -0
- /package/dist/{chunk-PIO6NW7O.js.map → chunk-ZG7DBIVX.js.map} +0 -0
- /package/dist/{chunk-NUZ7ROUZ.js.map → chunk-ZGJ775X7.js.map} +0 -0
- /package/dist/{chunk-6BEBWHNL.js.map → chunk-ZQQLOEWN.js.map} +0 -0
- /package/dist/{classified-marker-7HXDMYHI.js.map → classified-marker-HKMRC7SC.js.map} +0 -0
- /package/dist/{collection-facade-V63BEBGU.js.map → collection-facade-PPKNUR2J.js.map} +0 -0
- /package/dist/{computed-LZLSYOPG.js.map → computed-UCYVPMZA.js.map} +0 -0
- /package/dist/{delegation-7SSGIETH.js.map → delegation-SNALWRMO.js.map} +0 -0
- /package/dist/{derive-IMI3BMDS.js.map → derive-4GNU4E4I.js.map} +0 -0
- /package/dist/{dispatch-KOPDDPEQ.js.map → dispatch-V5WLDTVX.js.map} +0 -0
- /package/dist/{executor-7SY3M6TZ.js.map → executor-7QN22OKI.js.map} +0 -0
- /package/dist/{executor-SNHW4ELF.js.map → executor-BJZJNVBB.js.map} +0 -0
- /package/dist/{executor-Z3IKK7G3.js.map → executor-JEAAEJUM.js.map} +0 -0
- /package/dist/{export-accessible-O7DIVFUO.js.map → export-accessible-TVO2KQPG.js.map} +0 -0
- /package/dist/{extract-partition-ELZEJKXM.js.map → extract-partition-43CLDRN4.js.map} +0 -0
- /package/dist/{find-KWB2RYWJ.js.map → issue-EIHEDAXM.js.map} +0 -0
- /package/dist/{issue-5ZHXK4HJ.js.map → ledger-BMVUFQ3R.js.map} +0 -0
- /package/dist/{ledger-UFJCB6T5.js.map → liberate-7KHXCLNJ.js.map} +0 -0
- /package/dist/{liberate-OEOSNNFH.js.map → link-set-PC2EJRKL.js.map} +0 -0
- /package/dist/{link-set-KMUBFN2L.js.map → managed-secret-RPRVEYZA.js.map} +0 -0
- /package/dist/{migrate-cek-SPESQAAO.js.map → migrate-cek-DTSCWGEF.js.map} +0 -0
- /package/dist/{managed-secret-H5WYSJ46.js.map → noydb-AYDNOXAX.js.map} +0 -0
- /package/dist/{post-register-2AC2STHC.js.map → post-register-RITSNASO.js.map} +0 -0
- /package/dist/{noydb-QDZ4QIKO.js.map → register-BB34SK7E.js.map} +0 -0
- /package/dist/{register-PIORIMMR.js.map → registry-65L6V5TO.js.map} +0 -0
- /package/dist/{registry-BIMICFUH.js.map → registry-HU62GPWA.js.map} +0 -0
- /package/dist/{registry-JGWLW53D.js.map → registry-SMNK6UM4.js.map} +0 -0
- /package/dist/{registry-SELCBYEQ.js.map → registry-X5VPBKCO.js.map} +0 -0
- /package/dist/{registry-W327UNYH.js.map → request-withdrawal-4SKAH46W.js.map} +0 -0
- /package/dist/{request-withdrawal-K3SXXODI.js.map → revoke-IF5PX2JY.js.map} +0 -0
- /package/dist/{revoke-6AFVXTWF.js.map → signer-5P7IZC2K.js.map} +0 -0
- /package/dist/{signer-TW5MAQJP.js.map → stale-PUCZH5GJ.js.map} +0 -0
- /package/dist/{stale-CROGJBIJ.js.map → storage-5EGY5OYE.js.map} +0 -0
- /package/dist/{storage-SO2L2Z5J.js.map → vault-diff-H7LT5ZBJ.js.map} +0 -0
- /package/dist/{vault-diff-C6WUJFNP.js.map → walk-Z4N7PCZ2.js.map} +0 -0
- /package/dist/{walk-3KEOL7BY.js.map → withdraw-accessible-CRCIQSTL.js.map} +0 -0
package/dist/indexing/index.js
CHANGED
|
@@ -8,15 +8,15 @@ import {
|
|
|
8
8
|
decodeIdxId,
|
|
9
9
|
encodeIdxId,
|
|
10
10
|
isIdxId
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-EWSIJDWO.js";
|
|
12
12
|
import {
|
|
13
13
|
CollectionIndexes
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-LIX4QPMM.js";
|
|
15
15
|
import "../chunk-SUZKW6UR.js";
|
|
16
16
|
import "../chunk-4CFHL5RY.js";
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-NLDBQHDV.js";
|
|
18
|
+
import "../chunk-ZG7DBIVX.js";
|
|
19
|
+
import "../chunk-ISIXU45J.js";
|
|
20
20
|
|
|
21
21
|
// src/with-lookup/indexing/active.ts
|
|
22
22
|
function withIndexing() {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../chunk-2DX4JCRI.js";
|
|
2
2
|
import {
|
|
3
3
|
dumpVaultSchema
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-HDAPQF6Q.js";
|
|
5
5
|
import {
|
|
6
6
|
applyListProjection
|
|
7
7
|
} from "../chunk-VG2ZSFYD.js";
|
|
@@ -12,17 +12,14 @@ import {
|
|
|
12
12
|
import {
|
|
13
13
|
jsonSchemaToFields
|
|
14
14
|
} from "../chunk-VYYM3MEN.js";
|
|
15
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-FY4FFNKK.js";
|
|
16
16
|
import "../chunk-Y2NBBT6K.js";
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-EPPAEGH5.js";
|
|
24
|
-
import "../chunk-URGHKZPL.js";
|
|
25
|
-
import "../chunk-2RH5SEY7.js";
|
|
17
|
+
import "../chunk-PBRD75JF.js";
|
|
18
|
+
import "../chunk-EFINFZIF.js";
|
|
19
|
+
import "../chunk-I4S7IZSS.js";
|
|
20
|
+
import "../chunk-XWWDZKLS.js";
|
|
21
|
+
import "../chunk-CR5UPYIJ.js";
|
|
22
|
+
import "../chunk-ISIXU45J.js";
|
|
26
23
|
export {
|
|
27
24
|
FieldMetaUnknownFieldError,
|
|
28
25
|
applyListProjection,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
issueAttestationCore
|
|
3
|
+
} from "./chunk-HRLMUZLI.js";
|
|
4
|
+
import "./chunk-NUBI6PYH.js";
|
|
5
|
+
import "./chunk-XMARKBUC.js";
|
|
6
|
+
import "./chunk-GMKGGY7V.js";
|
|
7
|
+
import "./chunk-4AOERLTV.js";
|
|
8
|
+
import "./chunk-EFINFZIF.js";
|
|
9
|
+
import "./chunk-I4S7IZSS.js";
|
|
10
|
+
import "./chunk-XWWDZKLS.js";
|
|
11
|
+
import "./chunk-CR5UPYIJ.js";
|
|
12
|
+
import "./chunk-ISIXU45J.js";
|
|
13
|
+
export {
|
|
14
|
+
issueAttestationCore
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=issue-EIHEDAXM.js.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which hub features need which capsule group, and the two refusal points
|
|
3
|
+
* (family#156).
|
|
4
|
+
*
|
|
5
|
+
* ⛔ AT STARTUP OR NOT AT ALL. A capability discovered on first write is a
|
|
6
|
+
* half-built vault: some records sealed, a service silently inert, and a
|
|
7
|
+
* consumer who cannot tell a missing capability from a bug. So this refuses at
|
|
8
|
+
* `createNoydb()` for a SERVICE, and at `vault.collection()` for a declared
|
|
9
|
+
* FIELD — the two places a requirement becomes known.
|
|
10
|
+
*
|
|
11
|
+
* ⭐ TWO POINTS, BECAUSE A DECLARATION IS NOT A STRATEGY. A `classifiedFields`
|
|
12
|
+
* declaration writes `_vdig`/`_sealed` with no `classifiedStrategy` at all: the
|
|
13
|
+
* strategy is the READ side (reveal/verify/matchGroup), while the codec's
|
|
14
|
+
* `vdigFields` map comes straight from the declaration at construction.
|
|
15
|
+
* Measured before wiring — a single check at `createNoydb()` would have left
|
|
16
|
+
* every write-side requirement unenforced while looking complete.
|
|
17
|
+
*
|
|
18
|
+
* ⚠️ `authenticate` and `seal` ARE DELIBERATELY ABSENT from both tables, and
|
|
19
|
+
* that is a measurement, not an omission. `deriveKey` (secret → KEK) and
|
|
20
|
+
* `wrapKey`/`unwrapKey` (KEK wraps DEK) are called only from the keyring unlock
|
|
21
|
+
* chain — `with-party/team/keyring.ts` and the DEK-rewrapping paths in
|
|
22
|
+
* `with-cargo`/`custody`/`delegation` — never from a field form. Mapping
|
|
23
|
+
* `storage:'recoverable'` to `seal` or `digest-only` to `authenticate` would
|
|
24
|
+
* have been plausible and invented: those two are the POSTURE groups
|
|
25
|
+
* (`PRIMITIVE_GROUPS` has no primitive for either), and what actually implies
|
|
26
|
+
* them is opening a vault with a secret. That is a THIRD refusal point this
|
|
27
|
+
* ruling did not name, so it is reported rather than added here.
|
|
28
|
+
* @module
|
|
29
|
+
*/
|
|
30
|
+
import { type CapsuleGroup } from '../capsule/contract.js';
|
|
31
|
+
/** The declaration shape the field check reads — a slice of the collection options. */
|
|
32
|
+
export interface DeclaredFieldGroups {
|
|
33
|
+
readonly sensitiveFields?: ReadonlySet<string> | readonly string[] | null;
|
|
34
|
+
readonly deterministicFields?: ReadonlySet<string> | readonly string[] | null;
|
|
35
|
+
readonly perRecordKeys?: boolean;
|
|
36
|
+
/** Classified members by field, with the storage form that decides the group. */
|
|
37
|
+
readonly classifiedByField?: Readonly<Record<string, {
|
|
38
|
+
readonly storage: string;
|
|
39
|
+
readonly equatable?: boolean;
|
|
40
|
+
}>> | null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Every (group, requirer) a set of declared fields needs — the pure half.
|
|
44
|
+
*
|
|
45
|
+
* ⭐ SEPARATED FROM THE THROW on purpose (the family#172 lesson applied to this
|
|
46
|
+
* wiring): the reference capsule supports every group, so no integration test
|
|
47
|
+
* can reach a refusal, and a predicate that only ever runs against a capsule
|
|
48
|
+
* which never refuses is exactly the shape family#172 had to fix. The decision
|
|
49
|
+
* is testable against a stub set; what still needs its own test is that
|
|
50
|
+
* anything CALLS it.
|
|
51
|
+
*/
|
|
52
|
+
export declare function fieldGroupRequirements(collection: string, decl: DeclaredFieldGroups): ReadonlyArray<readonly [CapsuleGroup, string]>;
|
|
53
|
+
/** Every (group, requirer) a set of enabled services needs — the pure half. */
|
|
54
|
+
export declare function serviceGroupRequirements(options: Readonly<Record<string, unknown>>): ReadonlyArray<readonly [CapsuleGroup, string]>;
|
|
55
|
+
/**
|
|
56
|
+
* The POSTURE groups an encrypted vault needs, and the third refusal point
|
|
57
|
+
* (family#156, ruled 2026-10-12).
|
|
58
|
+
*
|
|
59
|
+
* ⭐ IT IS THE KEYRING, NOT A FIELD OR A SERVICE, and that is what the earlier
|
|
60
|
+
* measurement found: `deriveKey` (secret → KEK) is `authenticate` and
|
|
61
|
+
* `wrapKey`/`unwrapKey` (KEK wraps DEK) are `seal`, called only from the
|
|
62
|
+
* keyring's unlock chain. So nothing in {@link SERVICE_GROUPS} or
|
|
63
|
+
* {@link fieldGroupRequirements} can imply them — what implies them is opening
|
|
64
|
+
* a vault that HAS a keyring.
|
|
65
|
+
*
|
|
66
|
+
* ⛔ A PLAINTEXT VAULT MUST STILL OPEN, and the gate for that is STRUCTURAL
|
|
67
|
+
* rather than a condition written here. `createNoydb({ encrypt: false })`
|
|
68
|
+
* short-circuits in `_getKeyringInternal` to `createPlaintextKeyring()` and
|
|
69
|
+
* never reaches `loadKeyring`/`createOwnerKeyring` — so calling this at those
|
|
70
|
+
* two entries means it cannot fire for a vault that has no keyring. An
|
|
71
|
+
* `encrypted` parameter would have been a condition I maintain and that can
|
|
72
|
+
* drift; an unreachable path cannot. Refusing unconditionally would make
|
|
73
|
+
* `exclave-plain` unable to open any vault at all, which is its entire purpose.
|
|
74
|
+
*
|
|
75
|
+
* ⚠️ Called at the KEYRING ENTRY rather than in `openVault`: the ruling says
|
|
76
|
+
* "before any keyring is read or written", and the entry is literally that. It
|
|
77
|
+
* also covers the creation paths `openVault` does not go through — `grant`,
|
|
78
|
+
* `rotateSecret`, recovery — which a guard at the open call site would miss.
|
|
79
|
+
*/
|
|
80
|
+
export declare function assertVaultPostureSupported(caps: ReadonlySet<CapsuleGroup>, requirer: string): void;
|
|
81
|
+
/** Refuse at `createNoydb()` — one assertion per enabled service. */
|
|
82
|
+
export declare function assertServicesSupported(options: Readonly<Record<string, unknown>>, caps: ReadonlySet<CapsuleGroup>): void;
|
|
83
|
+
/** Refuse at `vault.collection()` — one assertion per declared field form. */
|
|
84
|
+
export declare function assertFieldsSupported(collection: string, decl: DeclaredFieldGroups, caps: ReadonlySet<CapsuleGroup>): void;
|
package/dist/kernel/errors.d.ts
CHANGED
|
@@ -895,8 +895,9 @@ export declare class TierDemoteDeniedError extends NoydbError {
|
|
|
895
895
|
}
|
|
896
896
|
/**
|
|
897
897
|
* Thrown when `db.delegate()` is called against a user that has no
|
|
898
|
-
* keyring in the target vault — the
|
|
899
|
-
*
|
|
898
|
+
* keyring in the target vault — the token's content key is sealed to the
|
|
899
|
+
* target's inbox PUBLIC half (core#65/#96), which lives in that keyring, so
|
|
900
|
+
* without it there is nothing to seal to. Nothing secret of theirs is needed.
|
|
900
901
|
*/
|
|
901
902
|
export declare class DelegationTargetMissingError extends NoydbError {
|
|
902
903
|
readonly toUser: string;
|
|
@@ -2402,7 +2403,7 @@ export declare class ManagedRecoveryNotEnrolledError extends NoydbError {
|
|
|
2402
2403
|
constructor(vault: string);
|
|
2403
2404
|
}
|
|
2404
2405
|
/**
|
|
2405
|
-
* Raised by `db.recoverSecret` / `db.enrollRecovery` /
|
|
2406
|
+
* Raised by `db.team.recoverSecret` / `db.team.enrollRecovery` /
|
|
2406
2407
|
* `db.rotateRecovery` when the developer requests a recovery profile
|
|
2407
2408
|
* not yet wired in this hub release.
|
|
2408
2409
|
*
|
|
@@ -2418,6 +2419,21 @@ export declare class RecoveryProfileNotImplementedError extends NoydbError {
|
|
|
2418
2419
|
constructor(profile: string, tracking: string);
|
|
2419
2420
|
}
|
|
2420
2421
|
/**
|
|
2422
|
+
* @deprecated Since family#168 (2026-10-12). Throw
|
|
2423
|
+
* `CapsuleNotSupportedError` from `@noy-db/hub/capsule` instead; this class is
|
|
2424
|
+
* removed at a later breaking cut.
|
|
2425
|
+
*
|
|
2426
|
+
* ⛔ WHY IT IS GOING. Two not-supported classes shipped side by side with two
|
|
2427
|
+
* DIFFERENT codes — this one (`ENCLAVE_NOT_SUPPORTED`) and
|
|
2428
|
+
* `CapsuleNotSupportedError` (`CAPSULE_NOT_SUPPORTED`). Hub never threw this
|
|
2429
|
+
* one; `exclave-plain` threw the other; and the published conformance kit
|
|
2430
|
+
* matched only this code. So a capsule refusing a group EXACTLY AS THE CONTRACT
|
|
2431
|
+
* SAYS was reported by the kit as not refusing at all. Nothing failed anywhere,
|
|
2432
|
+
* because the one capsule that supports every group never takes the branch.
|
|
2433
|
+
*
|
|
2434
|
+
* ⚠️ The kit now accepts BOTH codes, so a fork already throwing this keeps
|
|
2435
|
+
* passing. That is the only reason this class still exists.
|
|
2436
|
+
*
|
|
2421
2437
|
* Thrown by a `capsule/enclave-aes` fork's **optional groups** — sealing,
|
|
2422
2438
|
* deterministic, per-record-key lifecycle — when that fork's crypto
|
|
2423
2439
|
* engine does not implement the requested behavior.
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*
|
|
20
20
|
* @module
|
|
21
21
|
*/
|
|
22
|
-
import type { NoydbStore, ExportStreamOptions } from './types.js';
|
|
22
|
+
import type { NoydbStore, ExportStreamOptions, EncryptedEnvelope } from './types.js';
|
|
23
23
|
/** Where an export's collection names and record ids come from. */
|
|
24
24
|
export interface ExportSource {
|
|
25
25
|
/** Collection names to export, sorted. */
|
|
@@ -28,6 +28,18 @@ export interface ExportSource {
|
|
|
28
28
|
readonly scoped: boolean;
|
|
29
29
|
/** Record ids in one collection. */
|
|
30
30
|
ids(collection: string): Promise<readonly string[]>;
|
|
31
|
+
/**
|
|
32
|
+
* The raw envelope for one record, for `withEnvelopeMeta` (family#166).
|
|
33
|
+
*
|
|
34
|
+
* ⚠️ THE TWO SOURCES ANSWER THIS AT DIFFERENT PRICES, and the caller must
|
|
35
|
+
* only ask when the option was set. The bulk source already holds the whole
|
|
36
|
+
* snapshot, so this is a map lookup; the scoped source enumerated with `list`
|
|
37
|
+
* and has no envelopes, so this is a store `get` per record. Making it part
|
|
38
|
+
* of the source interface rather than reaching for `adapter` at the call site
|
|
39
|
+
* is what keeps that difference in ONE place — the same reason core#45b put
|
|
40
|
+
* the enumeration strategy here.
|
|
41
|
+
*/
|
|
42
|
+
envelope(collection: string, id: string): Promise<EncryptedEnvelope | null>;
|
|
31
43
|
}
|
|
32
44
|
/**
|
|
33
45
|
* Resolve the read strategy for one export.
|
|
@@ -38,3 +50,18 @@ export interface ExportSource {
|
|
|
38
50
|
* the route that happens to be taken is a rule waiting to be lost.
|
|
39
51
|
*/
|
|
40
52
|
export declare function resolveExportSource(adapter: NoydbStore, vault: string, opts: ExportStreamOptions): Promise<ExportSource>;
|
|
53
|
+
/**
|
|
54
|
+
* `_v`/`_ts` for one exported record (family#166).
|
|
55
|
+
*
|
|
56
|
+
* ⚠️ A NULL ENVELOPE YIELDS VERSION 0, not a gap. The record was readable a
|
|
57
|
+
* moment ago (the caller only asks after a non-null `get`), so null here means
|
|
58
|
+
* it was deleted mid-export — and family#147 ruled that absence IS version 0
|
|
59
|
+
* at the store contract, so reporting 0 is the same answer the CAS gives rather
|
|
60
|
+
* than a new sentinel. Returning `undefined` instead would break the
|
|
61
|
+
* positional alignment that `ExportChunk.envelopeMeta` is built on, which is
|
|
62
|
+
* the one property a consumer cannot recover.
|
|
63
|
+
*/
|
|
64
|
+
export declare function readEnvelopeMeta(source: ExportSource, collection: string, id: string): Promise<{
|
|
65
|
+
version: number;
|
|
66
|
+
ts: string;
|
|
67
|
+
}>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { NoydbStore } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Wrap `store` so every segment it is handed is checked first.
|
|
4
|
+
*
|
|
5
|
+
* ⛔ A PROXY, NOT `{ ...store, get() {…} }`, and the spread is a real defect
|
|
6
|
+
* rather than a style preference: it copies OWN ENUMERABLE properties only, so
|
|
7
|
+
* a store implemented as a CLASS loses every prototype method the wrapper does
|
|
8
|
+
* not itself redeclare — `listPage`, `tx`, `getStoreTime`, `listSince`, `ping`
|
|
9
|
+
* all vanish silently, and hub then takes its fallback paths as though the
|
|
10
|
+
* store never offered them. (`with-store`'s `wrapStore` middleware still has
|
|
11
|
+
* that shape; it is family#173, not fixed here.)
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ `Reflect.apply(fn, target, args)` binds `this` to the TARGET, not the
|
|
14
|
+
* proxy. That is load-bearing for a class store with `#private` fields: called
|
|
15
|
+
* through the proxy as the receiver, a method touching `#field` throws
|
|
16
|
+
* "Cannot read private member" — a failure that looks nothing like a wrapper
|
|
17
|
+
* bug. Everything unguarded is forwarded the same way, so `name`,
|
|
18
|
+
* `capabilities` and any vendor extension survive untouched.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* The raw store behind a guard, or `store` itself if it is not guarded.
|
|
22
|
+
*
|
|
23
|
+
* ⚠️ Exists for `Noydb.store`, the published accessor whose whole purpose is
|
|
24
|
+
* handing back what the caller mounted — `===` against their own argument. A
|
|
25
|
+
* proxy satisfies every behavioural assertion and fails that one, which is how
|
|
26
|
+
* `introspection/store-and-sync-targets.test.ts` found it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function unguardedStore(store: NoydbStore): NoydbStore;
|
|
29
|
+
export declare function guardStoreSegments(store: NoydbStore): NoydbStore;
|
package/dist/kernel/types.d.ts
CHANGED
|
@@ -640,6 +640,63 @@ export interface ListPageResult {
|
|
|
640
640
|
/** Opaque cursor for the next page, or `null` if this was the last page. */
|
|
641
641
|
nextCursor: string | null;
|
|
642
642
|
}
|
|
643
|
+
/**
|
|
644
|
+
* ## Segment shape — part of the contract (family#133)
|
|
645
|
+
*
|
|
646
|
+
* `vault` and `collection` are single names: never empty, never `.` or `..`,
|
|
647
|
+
* and they carry no path separator. A record `id` **may** contain `/` — hub
|
|
648
|
+
* materialises persisted index side-cars as `_idx/<field>/<recordId>` — but no
|
|
649
|
+
* slash-separated component of it may be empty, `.` or `..`.
|
|
650
|
+
*
|
|
651
|
+
* ⛔ **ABSENCE AND FAILURE ARE DIFFERENT ANSWERS** (family#162). `get` returns
|
|
652
|
+
* `null`, `list` returns `[]` and `loadAll` returns `{}` for something that is
|
|
653
|
+
* **not there**. A read that FAILED — a permission error, an I/O error, a
|
|
654
|
+
* corrupt body — must **throw**, and must never be reported as absence.
|
|
655
|
+
*
|
|
656
|
+
* Hub cannot tell the two apart, and it has a fail-closed gate that depends on
|
|
657
|
+
* doing so: `assertKeyringOpenAllowed` refuses to self-provision into a vault
|
|
658
|
+
* held by other principals by checking `list(vault, '_keyring')` for emptiness.
|
|
659
|
+
* A store that answered an EACCES with `[]` made that gate read "a
|
|
660
|
+
* genuinely-new vault" and hub provisioned a second owner into a vault that
|
|
661
|
+
* already had one. `@noy-db/to-file` did exactly that until family#162.
|
|
662
|
+
*
|
|
663
|
+
* ⚠️ Not kit-enforceable: a conformance suite cannot inject a read failure into
|
|
664
|
+
* an arbitrary store, so this is a contract a store author honours rather than
|
|
665
|
+
* one the kit can check. That is why it is stated here, in the authority.
|
|
666
|
+
*
|
|
667
|
+
* ⛔ **A NUL (`\x00`) is legal in an id too, and hub emits one** (family#174).
|
|
668
|
+
* `resolveSequenceKey` and `resolvePeriodKey` join a partition as
|
|
669
|
+
* `${name}\x00${parts}`, chosen precisely because a NUL cannot occur in a plain
|
|
670
|
+
* series name — so a partitioned key can never collide with an unpartitioned
|
|
671
|
+
* one. A store that refuses the byte cannot hold a partitioned sequence or
|
|
672
|
+
* period at all. A FILESYSTEM-backed store must therefore **encode** id
|
|
673
|
+
* components (at least NUL and `%`, which the encoding itself needs) and
|
|
674
|
+
* **decode on `list`** — an encoding without a matching decode reports an id
|
|
675
|
+
* that no `get` resolves. `@noy-db/ports/to` has the round-trip case.
|
|
676
|
+
*
|
|
677
|
+
* ⛔ A store must therefore **accept** `/` in an id. Refusing the separator
|
|
678
|
+
* breaks hub's own writes, which is a real measured failure rather than a
|
|
679
|
+
* hypothetical: `to-file` created only the collection directory, so every
|
|
680
|
+
* side-car write failed with `ENOENT` on its atomic-write leaf and persisted
|
|
681
|
+
* indexing never worked on that store.
|
|
682
|
+
*
|
|
683
|
+
* ✅ **Hub validates this centrally since family#133's second half.**
|
|
684
|
+
* `createNoydb()` wraps the mounted store in `guardStoreSegments()`
|
|
685
|
+
* (`kernel/store-segment-guard.ts`), so a malformed vault, collection or id is
|
|
686
|
+
* refused before any store sees it. The sentence here used to say the opposite,
|
|
687
|
+
* which was honest and is now wrong.
|
|
688
|
+
*
|
|
689
|
+
* ⚠️ A store's own guard is still required, and is not redundant: an
|
|
690
|
+
* out-of-tree caller can hold a `NoydbStore` reference and never pass through
|
|
691
|
+
* hub. `@noy-db/ports/to`'s `broken-escapes-namespace` control tests the store
|
|
692
|
+
* side precisely because hub's check cannot reach it.
|
|
693
|
+
*
|
|
694
|
+
* What a store MUST guarantee either way is **containment**: if a malformed id
|
|
695
|
+
* reaches it, the record must not become readable under a different
|
|
696
|
+
* `(vault, collection)` pair. A store may also reject outright —
|
|
697
|
+
* `@noy-db/ports/to` accepts either, and its `broken-escapes-namespace` control
|
|
698
|
+
* is a store that collapses `..` and lets an id climb out of its vault.
|
|
699
|
+
*/
|
|
643
700
|
export interface NoydbStore {
|
|
644
701
|
/**
|
|
645
702
|
* Optional human-readable store name (e.g. 'memory', 'file', 'dynamo').
|
|
@@ -657,13 +714,23 @@ export interface NoydbStore {
|
|
|
657
714
|
/** Get a single record. Returns null if not found. */
|
|
658
715
|
get(vault: string, collection: string, id: string): Promise<EncryptedEnvelope | null>;
|
|
659
716
|
/**
|
|
660
|
-
* Put a record. Throws ConflictError if `expectedVersion` doesn't match
|
|
661
|
-
*
|
|
717
|
+
* Put a record. Throws ConflictError if `expectedVersion` doesn't match the
|
|
718
|
+
* record's current `_v`, **where an absent id counts as version 0** — so the
|
|
719
|
+
* comparison always happens and the two halves fall out of one rule:
|
|
720
|
+
*
|
|
721
|
+
* - `expectedVersion: 0` against an absent id → `0 === 0`, the write lands;
|
|
722
|
+
* - `expectedVersion: N > 0` against an absent id → mismatch, and the
|
|
723
|
+
* `ConflictError` carries `version: 0` (family#147).
|
|
724
|
+
*
|
|
725
|
+
* ⚠️ The second half is a TIGHTENING, ruled on family#147. The natural
|
|
726
|
+
* read-then-compare shape guarded the comparison with `&& existing`, so a
|
|
727
|
+
* writer saying "I expect version 5" against nothing silently UPSERTED. Absence
|
|
728
|
+
* satisfies "I expect no record" and contradicts "I expect the record I read",
|
|
729
|
+
* which is why the halves differ. Both are asserted by `@noy-db/ports/to`
|
|
730
|
+
* (core#134, core#138, family#147).
|
|
662
731
|
*
|
|
663
|
-
*
|
|
664
|
-
*
|
|
665
|
-
* the contract, asserted by `@noy-db/ports/to` (core#134, core#138) and run
|
|
666
|
-
* green across all 19 `to-*` adapters.
|
|
732
|
+
* ⛔ Implement it as `(existing?._v ?? 0) !== expectedVersion`, never
|
|
733
|
+
* `existing && existing._v !== expectedVersion`.
|
|
667
734
|
*
|
|
668
735
|
* ⭐ **So `expectedVersion: 0` is an exact "write only if absent."** hub never
|
|
669
736
|
* stores a version below 1, so the first create is let through and every
|
|
@@ -686,7 +753,30 @@ export interface NoydbStore {
|
|
|
686
753
|
list(vault: string, collection: string): Promise<string[]>;
|
|
687
754
|
/** Load all records for a vault (initial hydration). */
|
|
688
755
|
loadAll(vault: string): Promise<VaultSnapshot>;
|
|
689
|
-
/**
|
|
756
|
+
/**
|
|
757
|
+
* Save all records for a vault (bulk write / restore).
|
|
758
|
+
*
|
|
759
|
+
* ⭐ **This REPLACES, it does not merge** (family#147). Every non-underscore
|
|
760
|
+
* collection in the vault is dropped and the snapshot written over the top, so
|
|
761
|
+
* a collection absent from `data` is GONE afterwards, and a collection present
|
|
762
|
+
* with an EMPTY record set is EMPTIED. `saveAll` is the restore half of
|
|
763
|
+
* `loadAll`, and a merging restore cannot express "this collection is gone" —
|
|
764
|
+
* omitting a key and passing `{}` would mean the same thing, so a backup would
|
|
765
|
+
* silently resurrect what the snapshot was taken to exclude.
|
|
766
|
+
*
|
|
767
|
+
* ⚠️ **Reserved (`_`-prefixed) collections are asymmetric, deliberately.** They
|
|
768
|
+
* are never DROPPED — a partial snapshot must not strand `_keyring` and leave
|
|
769
|
+
* the vault unopenable — but they ARE overwritten when `data` carries them,
|
|
770
|
+
* which is what makes a full restore possible.
|
|
771
|
+
*
|
|
772
|
+
* ⛔ The consequence worth stating rather than leaving to be discovered: a
|
|
773
|
+
* snapshot carrying `_keyring` **replaces the live keyring without passing
|
|
774
|
+
* through any keyring code path** — no epoch check, no roster validation, no
|
|
775
|
+
* grant. Treat a `saveAll` payload as exactly as trusted as the vault itself.
|
|
776
|
+
*
|
|
777
|
+
* Note `loadAll` SKIPS reserved collections, so `loadAll` → `saveAll` does not
|
|
778
|
+
* round-trip them; a restore that needs the keyring must carry it explicitly.
|
|
779
|
+
*/
|
|
690
780
|
saveAll(vault: string, data: VaultSnapshot): Promise<void>;
|
|
691
781
|
/** Optional connectivity check for sync engine. */
|
|
692
782
|
ping?(): Promise<boolean>;
|
|
@@ -906,7 +996,7 @@ export type VaultPolicyOnDisk = Record<string, unknown>;
|
|
|
906
996
|
* - `paper` — `on-recovery` codes (the standard end-to-end profile).
|
|
907
997
|
* - `shamir` / `multi-channel` / `admin-mediated` — API surface ships;
|
|
908
998
|
* per-profile dispatch lands in follow-up issues. Calling
|
|
909
|
-
* `db.recoverSecret` against these throws
|
|
999
|
+
* `db.team.recoverSecret` against these throws
|
|
910
1000
|
* {@link RecoveryProfileNotImplementedError}.
|
|
911
1001
|
*/
|
|
912
1002
|
type RecoveryEnrollment = {
|
|
@@ -1359,6 +1449,23 @@ export interface ExportStreamOptions {
|
|
|
1359
1449
|
* per-partition. Default: `false`.
|
|
1360
1450
|
*/
|
|
1361
1451
|
readonly withLedgerHead?: boolean;
|
|
1452
|
+
/**
|
|
1453
|
+
* When `true`, every chunk carries {@link ExportChunk.envelopeMeta} — the
|
|
1454
|
+
* store-level `_v` and `_ts` of each exported record, positionally aligned
|
|
1455
|
+
* with `records` (family#166).
|
|
1456
|
+
*
|
|
1457
|
+
* ⚠️ OPT-IN BECAUSE THE COST IS ASYMMETRIC, and the asymmetry is the whole
|
|
1458
|
+
* reason this is a flag rather than always-on. An unscoped export already
|
|
1459
|
+
* holds every envelope — `resolveExportSource` does ONE `loadAll` — so the
|
|
1460
|
+
* metadata is free. A SCOPED export deliberately enumerates with `list` and
|
|
1461
|
+
* never pulls the envelopes (core#45b: that avoidance is what makes
|
|
1462
|
+
* "scoping" a property rather than a word), so it costs one `get` per
|
|
1463
|
+
* exported record. Default `false` keeps a scoped export's read as narrow as
|
|
1464
|
+
* core#45b made it.
|
|
1465
|
+
*
|
|
1466
|
+
* Default: `false`.
|
|
1467
|
+
*/
|
|
1468
|
+
readonly withEnvelopeMeta?: boolean;
|
|
1362
1469
|
/**
|
|
1363
1470
|
* Export locale (BCP 47, e.g. `'th'`). When set, records are read at this
|
|
1364
1471
|
* locale through the **`export` layer**: `i18nText` fields collapse to
|
|
@@ -1458,6 +1565,54 @@ export interface ExportChunk<T = unknown> {
|
|
|
1458
1565
|
readonly index: number;
|
|
1459
1566
|
readonly ts: string;
|
|
1460
1567
|
};
|
|
1568
|
+
/**
|
|
1569
|
+
* Store-level version and write timestamp of each exported record
|
|
1570
|
+
* (family#166). Present only when `exportStream({ withEnvelopeMeta: true })`
|
|
1571
|
+
* was called.
|
|
1572
|
+
*
|
|
1573
|
+
* ⛔ POSITIONALLY ALIGNED WITH `records`, NOT KEYED BY ID, and that is
|
|
1574
|
+
* deliberate. A record need not carry an `id` field at all — hub's id is the
|
|
1575
|
+
* store key, not a property of the plaintext — so a `{ [id]: meta }` map
|
|
1576
|
+
* would silently drop every id-less record and quietly mis-key any record
|
|
1577
|
+
* whose own `id` field disagrees with its store key. That is family#151's
|
|
1578
|
+
* defect in `diffVault` exactly, and repeating it here would put it on a
|
|
1579
|
+
* PUBLISHED type.
|
|
1580
|
+
*
|
|
1581
|
+
* ⚠️ So `envelopeMeta[i]` describes `records[i]`, and the two always have the
|
|
1582
|
+
* same length. A record the caller cannot read is skipped from BOTH, which is
|
|
1583
|
+
* the alignment hazard this shape has to get right: `records` already drops a
|
|
1584
|
+
* null `get()`, so the metadata must be appended in that same branch and
|
|
1585
|
+
* never in a second loop over `ids`.
|
|
1586
|
+
*
|
|
1587
|
+
* `version` is the envelope's `_v` — monotonic per record, what a CAS
|
|
1588
|
+
* `expectedVersion` compares against. `ts` is its `_ts`, the store-visible
|
|
1589
|
+
* write time, which is NOT the same as any business timestamp inside the
|
|
1590
|
+
* record.
|
|
1591
|
+
*/
|
|
1592
|
+
readonly envelopeMeta?: ReadonlyArray<{
|
|
1593
|
+
readonly version: number;
|
|
1594
|
+
readonly ts: string;
|
|
1595
|
+
}>;
|
|
1596
|
+
/**
|
|
1597
|
+
* The HUB ID of each exported record, positionally aligned with `records`
|
|
1598
|
+
* (family#151).
|
|
1599
|
+
*
|
|
1600
|
+
* ⭐ ALWAYS POPULATED BY `exportStream`, and not behind a flag. Unlike
|
|
1601
|
+
* {@link ExportChunk.envelopeMeta} it costs nothing — both yield paths
|
|
1602
|
+
* already iterate the id list — and a flag is a way to forget it. The id is
|
|
1603
|
+
* NOT derivable from a record: hub's id is the store key, and a record need
|
|
1604
|
+
* not carry an `id` field at all, which is why `diffVault` keyed by a FIELD
|
|
1605
|
+
* and silently dropped every record that had none.
|
|
1606
|
+
*
|
|
1607
|
+
* ⚠️ Optional in the TYPE so a consumer constructing an `ExportChunk` — an
|
|
1608
|
+
* `as-*` format fixture, say — stays valid. Hub never omits it.
|
|
1609
|
+
*
|
|
1610
|
+
* ⛔ Positionally aligned, like `envelopeMeta`, and for the same reason: a
|
|
1611
|
+
* `{ [id]: record }` map cannot represent a record whose own `id` field
|
|
1612
|
+
* disagrees with its store key, and that disagreement is the bug this field
|
|
1613
|
+
* exists to make visible.
|
|
1614
|
+
*/
|
|
1615
|
+
readonly ids?: readonly string[];
|
|
1461
1616
|
}
|
|
1462
1617
|
export interface DirtyEntry {
|
|
1463
1618
|
readonly vault: string;
|
|
@@ -1620,7 +1775,8 @@ export type ConflictStrategy = 'local-wins' | 'remote-wins' | 'version' | ((conf
|
|
|
1620
1775
|
* Overrides the db-level `conflict` option for the specific collection.
|
|
1621
1776
|
*
|
|
1622
1777
|
* - `'last-writer-wins'` — higher `_ts` wins (timestamp LWW).
|
|
1623
|
-
* - `'first-writer-wins'` — lower `_v` wins (earlier version is preserved)
|
|
1778
|
+
* - `'first-writer-wins'` — lower `_v` wins (earlier version is preserved); on a
|
|
1779
|
+
* tie the copy already on the remote wins, since it reached the remote first.
|
|
1624
1780
|
* - `'manual'` — emits `sync:conflict` with a `resolve` callback. Call
|
|
1625
1781
|
* `resolve(winner)` synchronously to commit or `resolve(null)` to defer.
|
|
1626
1782
|
* - Custom fn — synchronous `(local: T, remote: T) => T`. Must be pure.
|
|
@@ -3476,7 +3632,7 @@ export interface NoydbOptions {
|
|
|
3476
3632
|
/**
|
|
3477
3633
|
* Vault-level policy gate document. When present, the hub
|
|
3478
3634
|
* persists the merged policy at `_meta/policy` on first-time vault
|
|
3479
|
-
* creation and gates sensitive operations (`db.rotateSecret`,
|
|
3635
|
+
* creation and gates sensitive operations (`db.team.rotateSecret`,
|
|
3480
3636
|
* `db.export*`, …) against it. Omitted ⇒ the engine uses
|
|
3481
3637
|
* {@link PERSONAL_POLICY}. Use {@link STRICT_POLICY} for regulated
|
|
3482
3638
|
* deployments.
|
|
@@ -3998,7 +4154,7 @@ export type BuiltInGateName = 'rotate-secret' | 'recover-secret' | 'enroll-authe
|
|
|
3998
4154
|
/** Authorize reading other principals' user envelopes. */
|
|
3999
4155
|
| 'view-team-profiles'
|
|
4000
4156
|
/**
|
|
4001
|
-
* Authorize an atomic peer-recovery — `db.recoverUser`.
|
|
4157
|
+
* Authorize an atomic peer-recovery — `db.team.recoverUser`.
|
|
4002
4158
|
* Distinct from `revoke-user` because peer-recovery is intentional
|
|
4003
4159
|
* re-issuance of someone's keyring under a temp secret, NOT
|
|
4004
4160
|
* removal. Allows owner→owner natively (matches the threat model:
|
|
@@ -4080,8 +4236,8 @@ export interface FactorProof {
|
|
|
4080
4236
|
* Noydb method. Used as the optional last parameter of every method
|
|
4081
4237
|
* that runs through `checkGate`: `db.grant`, `db.revoke`, `db.updateUser`,
|
|
4082
4238
|
* `db.enrollAuthenticator`, `db.removeAuthenticator`, `db.updateAuthenticator`,
|
|
4083
|
-
* `db.enrollWebAuthn`, `db.rotateSecret`, `db.recoverSecret`,
|
|
4084
|
-
* `db.recoverUser`, `db.enrollUnlock`, `db.describeUserAuth`,
|
|
4239
|
+
* `db.team.enrollWebAuthn`, `db.team.rotateSecret`, `db.team.recoverSecret`,
|
|
4240
|
+
* `db.team.recoverUser`, `db.team.enrollUnlock`, `db.team.describeUserAuth`,
|
|
4085
4241
|
* `db.describeAllUsersAuth`.
|
|
4086
4242
|
*
|
|
4087
4243
|
* Previously this type was inlined at every call site as
|
|
@@ -117,6 +117,38 @@ export declare class WeakSecretError extends NoydbError {
|
|
|
117
117
|
readonly suggestion: string;
|
|
118
118
|
constructor(reason: WeakSecretReason, suggestion?: string);
|
|
119
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* The bar an EXPORT secret must clear (family#177).
|
|
122
|
+
*
|
|
123
|
+
* ⭐ DELIBERATELY NOT THE OWNER BAR, and the difference is not laxity. The
|
|
124
|
+
* owner default is phrase-shaped — six lowercase words, each ≥3 characters,
|
|
125
|
+
* `/^[a-z]+( [a-z]+)*$/` — because it is a thing a human memorises and types
|
|
126
|
+
* daily, and because that is the shape the EFF generator emits. An export
|
|
127
|
+
* secret is typed once into a dialog or produced by a password manager, so the
|
|
128
|
+
* phrase rules refuse the strongest things a caller is likely to use:
|
|
129
|
+
* `8f3a9c2b1d4e7f0a` fails on `invalid-chars`, and `Tax-Returns-2026!` fails
|
|
130
|
+
* twice over.
|
|
131
|
+
*
|
|
132
|
+
* ⛔ SO THE BAR IS LENGTH, 12 CHARACTERS, AND NOTHING ELSE. Measured against
|
|
133
|
+
* the real secrets in this repo and the shapes a consumer actually passes:
|
|
134
|
+
*
|
|
135
|
+
* BLOCKED p · pw · pw1 · r-pw · aud-pw · bob-pw · new-pw · alice-pw · hunter2
|
|
136
|
+
* ALLOWED Tax-Returns-2026! · 8f3a9c2b1d4e7f0a · source-pw-2026 ·
|
|
137
|
+
* client-takeaway · correct horse battery staple
|
|
138
|
+
*
|
|
139
|
+
* That is the whole claim: it refuses what a human picks when they are not
|
|
140
|
+
* thinking, and refuses nothing a human or a generator picks when they are.
|
|
141
|
+
*
|
|
142
|
+
* ⚠️ A single repeated character is refused too, because `aaaaaaaaaaaa` clears
|
|
143
|
+
* any length floor and clears no attacker's wordlist.
|
|
144
|
+
*
|
|
145
|
+
* ⚠️ 12 characters is a FLOOR, not a claim about entropy — roughly 40-50 bits
|
|
146
|
+
* for a human-chosen password, well under the owner phrase's ~77. It is sized
|
|
147
|
+
* to stop the hazard (a one-character export secret on a file built to travel)
|
|
148
|
+
* without blocking ordinary use, and the PBKDF2 600K derivation still sits
|
|
149
|
+
* underneath it. A consumer who wants more passes a longer secret.
|
|
150
|
+
*/
|
|
151
|
+
export declare const EXPORT_SECRET_POLICY: SecretPolicy;
|
|
120
152
|
/**
|
|
121
153
|
* Inspect a phrase against the format rules and return a structured
|
|
122
154
|
* verdict. Never throws — callers either branch on `ok` or pass the
|
package/dist/kernel/vault.d.ts
CHANGED
|
@@ -670,9 +670,9 @@ export declare class Vault {
|
|
|
670
670
|
*/
|
|
671
671
|
/**
|
|
672
672
|
* Atomic, gap-free numbering. `vault.sequence('invoice-2026').next()`
|
|
673
|
-
* returns 1, 2, 3, … with no
|
|
674
|
-
*
|
|
675
|
-
* independent
|
|
673
|
+
* returns 1, 2, 3, … with no duplicates under concurrency ON THIS DEVICE
|
|
674
|
+
* — ⛔ counters never sync; two devices issue the SAME numbers (family#206).
|
|
675
|
+
* Optimistic-CAS counter at `_sequences/<name>`; each name is independent.
|
|
676
676
|
*
|
|
677
677
|
* **Online-only:** `next()` throws `SequenceOfflineError` unless the
|
|
678
678
|
* store advertises `capabilities.casAtomic` — gap-free numbering cannot
|
|
@@ -1159,8 +1159,8 @@ export declare class Vault {
|
|
|
1159
1159
|
/**
|
|
1160
1160
|
* issue a time-boxed cross-tier delegation. Writes an
|
|
1161
1161
|
* encrypted envelope to the reserved `_delegations` collection that
|
|
1162
|
-
* the target
|
|
1163
|
-
*
|
|
1162
|
+
* the target picks up at their next `refreshDelegations()` call —
|
|
1163
|
+
* explicit, never automatic (core#56).
|
|
1164
1164
|
*
|
|
1165
1165
|
* Caller must hold the tier DEK for the requested tier and
|
|
1166
1166
|
* collection.
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
LedgerStore,
|
|
4
4
|
applyPatch,
|
|
5
5
|
computePatch
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BEKMLYQ4.js";
|
|
7
7
|
import {
|
|
8
8
|
LEDGER_COLLECTION,
|
|
9
9
|
LEDGER_DELTAS_COLLECTION
|
|
@@ -15,15 +15,12 @@ import {
|
|
|
15
15
|
paddedIndex,
|
|
16
16
|
parseIndex,
|
|
17
17
|
sha256Hex
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-EPPAEGH5.js";
|
|
25
|
-
import "./chunk-URGHKZPL.js";
|
|
26
|
-
import "./chunk-2RH5SEY7.js";
|
|
18
|
+
} from "./chunk-5JNEDW7I.js";
|
|
19
|
+
import "./chunk-EFINFZIF.js";
|
|
20
|
+
import "./chunk-I4S7IZSS.js";
|
|
21
|
+
import "./chunk-XWWDZKLS.js";
|
|
22
|
+
import "./chunk-CR5UPYIJ.js";
|
|
23
|
+
import "./chunk-ISIXU45J.js";
|
|
27
24
|
export {
|
|
28
25
|
LEDGER_COLLECTION,
|
|
29
26
|
LEDGER_DELTAS_COLLECTION,
|
|
@@ -37,4 +34,4 @@ export {
|
|
|
37
34
|
parseIndex,
|
|
38
35
|
sha256Hex
|
|
39
36
|
};
|
|
40
|
-
//# sourceMappingURL=ledger-
|
|
37
|
+
//# sourceMappingURL=ledger-BMVUFQ3R.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {
|
|
2
|
+
liberateVault
|
|
3
|
+
} from "./chunk-DS2JXSUA.js";
|
|
4
|
+
import "./chunk-XROQP6IQ.js";
|
|
5
|
+
import "./chunk-23A4SBRR.js";
|
|
6
|
+
import "./chunk-OIBFIWVJ.js";
|
|
7
|
+
import "./chunk-2NVQ5SEA.js";
|
|
8
|
+
import "./chunk-OQA7UF2Q.js";
|
|
9
|
+
import "./chunk-GMKGGY7V.js";
|
|
10
|
+
import "./chunk-UXH4AKH3.js";
|
|
11
|
+
import "./chunk-ZQQLOEWN.js";
|
|
12
|
+
import "./chunk-KHSBMLQE.js";
|
|
13
|
+
import "./chunk-VKZ3TDET.js";
|
|
14
|
+
import "./chunk-F2FD4LSB.js";
|
|
15
|
+
import "./chunk-EFINFZIF.js";
|
|
16
|
+
import "./chunk-I4S7IZSS.js";
|
|
17
|
+
import "./chunk-XWWDZKLS.js";
|
|
18
|
+
import "./chunk-CR5UPYIJ.js";
|
|
19
|
+
import "./chunk-ISIXU45J.js";
|
|
20
|
+
export {
|
|
21
|
+
liberateVault
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=liberate-7KHXCLNJ.js.map
|