@noy-db/hub 0.10.0-pre.1 → 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 +81 -0
- 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-6EKBNC67.js → backup-BHKVK5SD.js} +9 -12
- package/dist/{backup-6EKBNC67.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-QJJFUUSH.js → capsule-YAITMH77.js} +16 -9
- package/dist/cargo/index.js +34 -36
- package/dist/{chunk-J57OMNJ4.js → chunk-23A4SBRR.js} +3 -4
- package/dist/{chunk-J57OMNJ4.js.map → chunk-23A4SBRR.js.map} +1 -1
- package/dist/{chunk-E3CUGBGW.js → chunk-24AGG4PP.js} +3 -3
- package/dist/{chunk-M2VLXPRU.js → chunk-24IJZA4M.js} +14 -8
- package/dist/chunk-24IJZA4M.js.map +1 -0
- package/dist/{chunk-BCJAUHSG.js → chunk-2NVQ5SEA.js} +15 -5
- package/dist/chunk-2NVQ5SEA.js.map +1 -0
- package/dist/{chunk-MRVQKRXI.js → chunk-2SIREKBR.js} +2 -2
- package/dist/{chunk-CE443VXM.js → chunk-37FOG6AE.js} +14 -7
- package/dist/chunk-37FOG6AE.js.map +1 -0
- package/dist/{chunk-ZZZVNHN2.js → chunk-3M2KK7O7.js} +3 -3
- package/dist/{chunk-P6FATPXQ.js → chunk-3ZCVY3T6.js} +2 -2
- package/dist/{chunk-I7NDTNHK.js → chunk-4CGWLHPQ.js} +6 -6
- package/dist/{chunk-PVQIME6P.js → chunk-56Z4NOC6.js} +3 -3
- package/dist/{chunk-XBG6YJPK.js → chunk-5AVIUJP4.js} +11 -9
- package/dist/{chunk-XBG6YJPK.js.map → chunk-5AVIUJP4.js.map} +1 -1
- package/dist/{chunk-HQFTE3DX.js → chunk-5BGHAVBN.js} +2 -2
- package/dist/{chunk-QHG7GQKM.js → chunk-5JNEDW7I.js} +2 -2
- package/dist/{chunk-NC6CF37L.js → chunk-5OWJSDTO.js} +4 -4
- package/dist/{chunk-NC6CF37L.js.map → chunk-5OWJSDTO.js.map} +1 -1
- package/dist/{chunk-YAYDDYRU.js → chunk-5Y4MO7UQ.js} +4 -4
- package/dist/{chunk-TLIFNRU5.js → chunk-63LZLRWG.js} +2 -2
- package/dist/{chunk-BUFFPAR2.js → chunk-74W56QPY.js} +4 -4
- package/dist/{chunk-VPG2UJYR.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-U2N7DH4S.js → chunk-AHA7UALU.js} +4 -4
- package/dist/{chunk-NB2DYYZL.js → chunk-AIHBYQHF.js} +254 -118
- package/dist/chunk-AIHBYQHF.js.map +1 -0
- package/dist/{chunk-RNQ7V4LH.js → chunk-ANYX2M6P.js} +3 -3
- package/dist/{chunk-VFGLMRO2.js → chunk-ATKYMRBC.js} +4 -4
- package/dist/{chunk-7UHLO4ZN.js → chunk-B2HU55QD.js} +2 -2
- package/dist/{chunk-RKOXA5GZ.js → chunk-BEKMLYQ4.js} +4 -4
- package/dist/{chunk-AYUMAPOS.js → chunk-BPFXD4EX.js} +23 -3
- package/dist/chunk-BPFXD4EX.js.map +1 -0
- package/dist/{chunk-R4PDYYK5.js → chunk-C2NXAR3D.js} +5 -5
- package/dist/{chunk-XBOGGTUJ.js → chunk-CJBWJO5P.js} +6 -6
- package/dist/{chunk-XBOGGTUJ.js.map → chunk-CJBWJO5P.js.map} +1 -1
- package/dist/{chunk-44CU4N7N.js → chunk-CQLMRCKX.js} +2 -2
- package/dist/{chunk-VUBRHJ4H.js → chunk-CR5UPYIJ.js} +1 -1
- package/dist/chunk-CR5UPYIJ.js.map +1 -0
- package/dist/{chunk-4XXRPSPS.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-ZMDSBTFT.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-JM72WDAY.js → chunk-EM56MHN5.js} +6 -6
- package/dist/{chunk-YWJMM2WY.js → chunk-EQXOJH6O.js} +4 -4
- package/dist/{chunk-ME6LY5UG.js → chunk-ET3U2C3A.js} +2 -2
- package/dist/{chunk-G2KLVCKO.js → chunk-EU4G7PQH.js} +2 -2
- package/dist/{chunk-WJXLTO43.js → chunk-EUCUYK5E.js} +10 -10
- package/dist/{chunk-EPMX3SCC.js → chunk-EWSIJDWO.js} +4 -4
- package/dist/{chunk-KFYUQMF5.js → chunk-F2FD4LSB.js} +2 -2
- package/dist/{chunk-L4UL4IAR.js → chunk-F7ENMZYJ.js} +2 -2
- package/dist/{chunk-5OG7YQX5.js → chunk-FIIVYQOW.js} +5 -5
- package/dist/{chunk-4RF7DVH2.js → chunk-FPK2LPLR.js} +8 -8
- package/dist/chunk-FPK2LPLR.js.map +1 -0
- package/dist/{chunk-2EF2Z4UN.js → chunk-FQEUJGBV.js} +2 -2
- package/dist/{chunk-UORWAG7K.js → chunk-FY4FFNKK.js} +2 -2
- package/dist/{chunk-WA4ZPMKP.js → chunk-GDCYZGPB.js} +2 -2
- package/dist/{chunk-3HDBDUX2.js → chunk-H6Q7GKLI.js} +2 -2
- package/dist/{chunk-654RE5YC.js → chunk-HDAPQF6Q.js} +3 -3
- package/dist/{chunk-B5PWQMZN.js → chunk-HRLMUZLI.js} +5 -5
- package/dist/{chunk-QWC2PRUR.js → chunk-HRNQYGLQ.js} +2 -2
- package/dist/{chunk-YIVAKBCW.js → chunk-I4S7IZSS.js} +321 -235
- package/dist/chunk-I4S7IZSS.js.map +1 -0
- package/dist/{chunk-7DWAYY45.js → chunk-IN4XZJYD.js} +4 -3
- package/dist/{chunk-7DWAYY45.js.map → chunk-IN4XZJYD.js.map} +1 -1
- package/dist/{chunk-JGYCKX56.js → chunk-ISIXU45J.js} +1 -1
- package/dist/{chunk-JGYCKX56.js.map → chunk-ISIXU45J.js.map} +1 -1
- package/dist/{chunk-7PFOKQOJ.js → chunk-J4L4AS2W.js} +2 -2
- package/dist/{chunk-PZZWAHEJ.js → chunk-JPSOFWJR.js} +2 -2
- package/dist/{chunk-B24ODIKE.js → chunk-JRCO67NG.js} +2 -2
- package/dist/{chunk-PNEBCVXP.js → chunk-JW3I3NNZ.js} +2 -2
- package/dist/{chunk-MXNYMFHE.js → chunk-JZMPSQBH.js} +4 -4
- package/dist/{chunk-IIQMNZXT.js → chunk-K5TVSOPQ.js} +5 -5
- package/dist/{chunk-ZPXCQNXJ.js → chunk-K75SL74I.js} +2 -2
- package/dist/{chunk-TA5VTIC4.js → chunk-KA4AAUST.js} +2 -2
- package/dist/chunk-KHSBMLQE.js +161 -0
- package/dist/chunk-KHSBMLQE.js.map +1 -0
- package/dist/{chunk-JWLVBYP4.js → chunk-KUGUML7H.js} +3 -3
- package/dist/{chunk-GWYZEPBY.js → chunk-L4J5NC2Q.js} +2 -2
- package/dist/{chunk-PIF3TNU2.js → chunk-LIX4QPMM.js} +2 -2
- package/dist/{chunk-LCY6ANV2.js → chunk-LWQFGR34.js} +3 -3
- package/dist/{chunk-HQPS27BT.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-63INIVE4.js → chunk-NIZH2TYZ.js} +2 -2
- package/dist/{chunk-WQHEEYQA.js → chunk-NLDBQHDV.js} +2 -2
- package/dist/{chunk-SKSHWV3E.js → chunk-NQQ4MOPC.js} +4 -4
- package/dist/{chunk-B6EWMGFX.js → chunk-NUBI6PYH.js} +2 -2
- package/dist/{chunk-VWUSOPBF.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-PIEX7WSG.js → chunk-OOLF5FU2.js} +2 -2
- package/dist/{chunk-HOK5KGBO.js → chunk-OQA7UF2Q.js} +3 -3
- package/dist/{chunk-JMMG7UWR.js → chunk-ORJPICJI.js} +2 -2
- package/dist/{chunk-IF2M43G4.js → chunk-PBRD75JF.js} +2 -2
- package/dist/{chunk-X7Q2XL5U.js → chunk-PDCBL23X.js} +39 -17
- package/dist/chunk-PDCBL23X.js.map +1 -0
- package/dist/{chunk-PR2R57YF.js → chunk-PR36DD2X.js} +7 -7
- package/dist/{chunk-LFCX2JAV.js → chunk-PV4HIC4E.js} +2 -2
- package/dist/{chunk-SKF3DF7M.js → chunk-PZNK4HTV.js} +3 -3
- package/dist/{chunk-5F3KYRG6.js → chunk-QBLPLNPE.js} +3 -3
- package/dist/{chunk-4ZRNXWF6.js → chunk-QZXUISRF.js} +5 -5
- package/dist/{chunk-7Q72NTBE.js → chunk-RBXYO7MD.js} +5 -5
- package/dist/{chunk-S2BQV6HM.js → chunk-RIACRFWA.js} +4 -4
- package/dist/{chunk-DO33YCSZ.js → chunk-RL6RNDJQ.js} +8 -8
- package/dist/{chunk-2SPWVX6W.js → chunk-SJ2P7UXD.js} +7 -7
- package/dist/{chunk-26FMWFAW.js → chunk-SWXS4LV3.js} +11 -11
- package/dist/{chunk-J3ECXFU7.js → chunk-TOTCZFRF.js} +2 -2
- package/dist/{chunk-AN4GUUQM.js → chunk-TT4D52EK.js} +6 -6
- package/dist/{chunk-KOJHCSGS.js → chunk-U7CMJY5P.js} +10 -10
- package/dist/{chunk-DDR6SCG7.js → chunk-UNKTZDA2.js} +11 -11
- package/dist/{chunk-DDR6SCG7.js.map → chunk-UNKTZDA2.js.map} +1 -1
- package/dist/{chunk-WVML7HUZ.js → chunk-UXH4AKH3.js} +95 -151
- package/dist/chunk-UXH4AKH3.js.map +1 -0
- package/dist/{chunk-MKQHIYUY.js → chunk-UZVHSYIF.js} +2 -2
- package/dist/{chunk-FDGE56FS.js → chunk-VHKAW5OI.js} +29 -5
- package/dist/chunk-VHKAW5OI.js.map +1 -0
- package/dist/{chunk-OCSKQUNE.js → chunk-VKZ3TDET.js} +3 -3
- package/dist/{chunk-ESDYDGPH.js → chunk-VLZPUG5A.js} +4 -4
- package/dist/{chunk-PCYIDPFM.js → chunk-VSN5FLMI.js} +2 -2
- package/dist/{chunk-S4QDN4IQ.js → chunk-VYBBE7RN.js} +5 -5
- package/dist/{chunk-XBFJRCRW.js → chunk-WHK4JVKF.js} +8 -8
- package/dist/{chunk-CZEWEOOV.js → chunk-X4LDBALX.js} +2 -2
- package/dist/{chunk-YWEPWJRG.js → chunk-X67E7NIJ.js} +3 -3
- package/dist/{chunk-RRI3JBD6.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-GEICXZCQ.js → chunk-XROQP6IQ.js} +4 -4
- package/dist/chunk-XWWDZKLS.js +196 -0
- package/dist/chunk-XWWDZKLS.js.map +1 -0
- package/dist/{chunk-VX72USUQ.js → chunk-Y2RYUWSQ.js} +10 -10
- package/dist/{chunk-6I5RRBPP.js → chunk-YCTSQV7K.js} +5 -5
- package/dist/{chunk-7WV6R7RG.js → chunk-YF7P2DG7.js} +2 -2
- package/dist/{chunk-ZZLIFVZG.js → chunk-ZG7DBIVX.js} +2 -2
- package/dist/{chunk-Y6WJJRVV.js → chunk-ZGJ775X7.js} +2 -2
- package/dist/{chunk-PQGCWTTI.js → chunk-ZQQLOEWN.js} +3 -3
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-LY7KQFPH.js → classified-marker-HKMRC7SC.js} +3 -3
- package/dist/{reveal-LK3GX4L6.js → classify-reveal-YSJKJEIR.js} +7 -12
- package/dist/classify-reveal-YSJKJEIR.js.map +1 -0
- package/dist/{verify-FT5COLP2.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-XG7LFB7A.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-F4EKHDQY.js → dead-filter-YOBWRG4O.js} +8 -11
- package/dist/{dead-filter-F4EKHDQY.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-YNHZLB72.js → dispatch-QW32QBLW.js} +17 -20
- package/dist/{dispatch-YNHZLB72.js.map → dispatch-QW32QBLW.js.map} +1 -1
- package/dist/{dispatch-URNW4Q2T.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-6CSMTIVB.js → fanout-sidecar-DDONAFJT.js} +6 -9
- package/dist/{fanout-sidecar-6CSMTIVB.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 +15 -0
- 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 +164 -8
- package/dist/kernel/validation.d.ts +32 -0
- package/dist/kernel/vault.d.ts +3 -3
- package/dist/{ledger-FV6NFTOR.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-PBJZHPQO.js → managed-secret-RPRVEYZA.js} +7 -10
- package/dist/materialized-views/index.js +23 -26
- package/dist/{migrate-cek-J634S4NU.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-IOEYUDCA.js → pod-handle-KBPQRN6Q.js} +6 -9
- package/dist/{pod-handle-IOEYUDCA.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/collection-registries.d.ts +37 -0
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-L42VXYFB.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-ZQ2MXOFO.js → restore-to-VQHT67OH.js} +7 -10
- package/dist/{restore-to-ZQ2MXOFO.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-XHQQF6LJ.js → seed-F2OSDZJR.js} +11 -13
- package/dist/{seed-XHQQF6LJ.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-XY2QUSGU.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-F7YG22D3.js → store-coordination-provider-SEQM7SHJ.js} +7 -10
- package/dist/{store-coordination-provider-F7YG22D3.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/keyring.d.ts +77 -0
- package/dist/with-party/team/managed-secret.d.ts +40 -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/withdraw-accessible-CRCIQSTL.js +23 -0
- package/package.json +3 -3
- package/dist/api-ARU35MCC.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-4RF7DVH2.js.map +0 -1
- package/dist/chunk-6B4X447I.js +0 -40
- package/dist/chunk-6B4X447I.js.map +0 -1
- package/dist/chunk-6Y3UJT5H.js +0 -157
- package/dist/chunk-6Y3UJT5H.js.map +0 -1
- package/dist/chunk-AYUMAPOS.js.map +0 -1
- package/dist/chunk-BCJAUHSG.js.map +0 -1
- package/dist/chunk-CE443VXM.js.map +0 -1
- package/dist/chunk-FDGE56FS.js.map +0 -1
- package/dist/chunk-GLSRKIU3.js +0 -591
- package/dist/chunk-GLSRKIU3.js.map +0 -1
- package/dist/chunk-GQ4MF3CM.js.map +0 -1
- package/dist/chunk-GU6QXHPZ.js.map +0 -1
- package/dist/chunk-LFUID7OW.js.map +0 -1
- package/dist/chunk-M2VLXPRU.js.map +0 -1
- package/dist/chunk-NB2DYYZL.js.map +0 -1
- package/dist/chunk-NH2UOV3B.js +0 -18
- package/dist/chunk-NH2UOV3B.js.map +0 -1
- package/dist/chunk-OJAFKGI7.js +0 -27
- package/dist/chunk-OJAFKGI7.js.map +0 -1
- package/dist/chunk-PVBKEBJU.js +0 -22
- package/dist/chunk-PVBKEBJU.js.map +0 -1
- package/dist/chunk-RQLCOSEJ.js +0 -78
- package/dist/chunk-RQLCOSEJ.js.map +0 -1
- package/dist/chunk-T5EXREMW.js.map +0 -1
- package/dist/chunk-VPG2UJYR.js.map +0 -1
- package/dist/chunk-VUBRHJ4H.js.map +0 -1
- package/dist/chunk-WRLWEYHY.js.map +0 -1
- package/dist/chunk-WVML7HUZ.js.map +0 -1
- package/dist/chunk-X7Q2XL5U.js.map +0 -1
- package/dist/chunk-YIVAKBCW.js.map +0 -1
- package/dist/collection-facade-SETOHJ3R.js +0 -41
- package/dist/delegation-JIQCMKW6.js +0 -26
- package/dist/derive-45KCFFOS.js +0 -20
- package/dist/executor-BVVZ5UHG.js +0 -8
- package/dist/executor-R25UN3FA.js +0 -8
- package/dist/executor-SIYBLT3P.js +0 -35
- package/dist/export-accessible-P672FZEJ.js +0 -22
- package/dist/extract-partition-DQ3FVL6H.js +0 -35
- package/dist/find-HHF2HBAC.js +0 -10
- package/dist/issue-NPLQHB3S.js +0 -19
- package/dist/liberate-A7WASOCG.js +0 -25
- package/dist/link-set-UMRSGMQ5.js +0 -29
- package/dist/noydb-V23UJKHT.js +0 -100
- package/dist/register-2VINJWYJ.js +0 -30
- package/dist/registry-3VLHDUID.js +0 -8
- package/dist/registry-6HVHDR3P.js +0 -35
- package/dist/registry-V4FQUMYP.js +0 -23
- package/dist/registry-Z2E6ZCPM.js +0 -8
- package/dist/request-withdrawal-PSIHKQP4.js +0 -28
- package/dist/reveal-LK3GX4L6.js.map +0 -1
- package/dist/revoke-2NYMID63.js +0 -24
- package/dist/signer-CP6XZLE3.js +0 -23
- package/dist/storage-QTM6JYQF.js +0 -21
- package/dist/vault-diff-C6WUJFNP.js +0 -8
- package/dist/verify-FT5COLP2.js.map +0 -1
- package/dist/walk-52FW6EKP.js +0 -20
- package/dist/withdraw-accessible-IVMKJGEN.js +0 -25
- package/dist/withdraw-accessible-IVMKJGEN.js.map +0 -1
- /package/dist/{api-ARU35MCC.js.map → api-QSEKT4KS.js.map} +0 -0
- /package/dist/{capsule-QJJFUUSH.js.map → capsule-YAITMH77.js.map} +0 -0
- /package/dist/{chunk-E3CUGBGW.js.map → chunk-24AGG4PP.js.map} +0 -0
- /package/dist/{chunk-MRVQKRXI.js.map → chunk-2SIREKBR.js.map} +0 -0
- /package/dist/{chunk-ZZZVNHN2.js.map → chunk-3M2KK7O7.js.map} +0 -0
- /package/dist/{chunk-P6FATPXQ.js.map → chunk-3ZCVY3T6.js.map} +0 -0
- /package/dist/{chunk-I7NDTNHK.js.map → chunk-4CGWLHPQ.js.map} +0 -0
- /package/dist/{chunk-PVQIME6P.js.map → chunk-56Z4NOC6.js.map} +0 -0
- /package/dist/{chunk-HQFTE3DX.js.map → chunk-5BGHAVBN.js.map} +0 -0
- /package/dist/{chunk-QHG7GQKM.js.map → chunk-5JNEDW7I.js.map} +0 -0
- /package/dist/{chunk-YAYDDYRU.js.map → chunk-5Y4MO7UQ.js.map} +0 -0
- /package/dist/{chunk-TLIFNRU5.js.map → chunk-63LZLRWG.js.map} +0 -0
- /package/dist/{chunk-BUFFPAR2.js.map → chunk-74W56QPY.js.map} +0 -0
- /package/dist/{chunk-U2N7DH4S.js.map → chunk-AHA7UALU.js.map} +0 -0
- /package/dist/{chunk-RNQ7V4LH.js.map → chunk-ANYX2M6P.js.map} +0 -0
- /package/dist/{chunk-VFGLMRO2.js.map → chunk-ATKYMRBC.js.map} +0 -0
- /package/dist/{chunk-7UHLO4ZN.js.map → chunk-B2HU55QD.js.map} +0 -0
- /package/dist/{chunk-RKOXA5GZ.js.map → chunk-BEKMLYQ4.js.map} +0 -0
- /package/dist/{chunk-R4PDYYK5.js.map → chunk-C2NXAR3D.js.map} +0 -0
- /package/dist/{chunk-44CU4N7N.js.map → chunk-CQLMRCKX.js.map} +0 -0
- /package/dist/{chunk-4XXRPSPS.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-ZMDSBTFT.js.map → chunk-ECDM6YRX.js.map} +0 -0
- /package/dist/{chunk-JM72WDAY.js.map → chunk-EM56MHN5.js.map} +0 -0
- /package/dist/{chunk-YWJMM2WY.js.map → chunk-EQXOJH6O.js.map} +0 -0
- /package/dist/{chunk-ME6LY5UG.js.map → chunk-ET3U2C3A.js.map} +0 -0
- /package/dist/{chunk-G2KLVCKO.js.map → chunk-EU4G7PQH.js.map} +0 -0
- /package/dist/{chunk-WJXLTO43.js.map → chunk-EUCUYK5E.js.map} +0 -0
- /package/dist/{chunk-EPMX3SCC.js.map → chunk-EWSIJDWO.js.map} +0 -0
- /package/dist/{chunk-KFYUQMF5.js.map → chunk-F2FD4LSB.js.map} +0 -0
- /package/dist/{chunk-L4UL4IAR.js.map → chunk-F7ENMZYJ.js.map} +0 -0
- /package/dist/{chunk-5OG7YQX5.js.map → chunk-FIIVYQOW.js.map} +0 -0
- /package/dist/{chunk-2EF2Z4UN.js.map → chunk-FQEUJGBV.js.map} +0 -0
- /package/dist/{chunk-UORWAG7K.js.map → chunk-FY4FFNKK.js.map} +0 -0
- /package/dist/{chunk-WA4ZPMKP.js.map → chunk-GDCYZGPB.js.map} +0 -0
- /package/dist/{chunk-3HDBDUX2.js.map → chunk-H6Q7GKLI.js.map} +0 -0
- /package/dist/{chunk-654RE5YC.js.map → chunk-HDAPQF6Q.js.map} +0 -0
- /package/dist/{chunk-B5PWQMZN.js.map → chunk-HRLMUZLI.js.map} +0 -0
- /package/dist/{chunk-QWC2PRUR.js.map → chunk-HRNQYGLQ.js.map} +0 -0
- /package/dist/{chunk-7PFOKQOJ.js.map → chunk-J4L4AS2W.js.map} +0 -0
- /package/dist/{chunk-PZZWAHEJ.js.map → chunk-JPSOFWJR.js.map} +0 -0
- /package/dist/{chunk-B24ODIKE.js.map → chunk-JRCO67NG.js.map} +0 -0
- /package/dist/{chunk-PNEBCVXP.js.map → chunk-JW3I3NNZ.js.map} +0 -0
- /package/dist/{chunk-MXNYMFHE.js.map → chunk-JZMPSQBH.js.map} +0 -0
- /package/dist/{chunk-IIQMNZXT.js.map → chunk-K5TVSOPQ.js.map} +0 -0
- /package/dist/{chunk-ZPXCQNXJ.js.map → chunk-K75SL74I.js.map} +0 -0
- /package/dist/{chunk-TA5VTIC4.js.map → chunk-KA4AAUST.js.map} +0 -0
- /package/dist/{chunk-JWLVBYP4.js.map → chunk-KUGUML7H.js.map} +0 -0
- /package/dist/{chunk-GWYZEPBY.js.map → chunk-L4J5NC2Q.js.map} +0 -0
- /package/dist/{chunk-PIF3TNU2.js.map → chunk-LIX4QPMM.js.map} +0 -0
- /package/dist/{chunk-LCY6ANV2.js.map → chunk-LWQFGR34.js.map} +0 -0
- /package/dist/{chunk-HQPS27BT.js.map → chunk-MMSSHMHW.js.map} +0 -0
- /package/dist/{chunk-ND6S2DKC.js.map → chunk-N5S2BCW3.js.map} +0 -0
- /package/dist/{chunk-63INIVE4.js.map → chunk-NIZH2TYZ.js.map} +0 -0
- /package/dist/{chunk-WQHEEYQA.js.map → chunk-NLDBQHDV.js.map} +0 -0
- /package/dist/{chunk-SKSHWV3E.js.map → chunk-NQQ4MOPC.js.map} +0 -0
- /package/dist/{chunk-B6EWMGFX.js.map → chunk-NUBI6PYH.js.map} +0 -0
- /package/dist/{chunk-VWUSOPBF.js.map → chunk-NYEXUZDW.js.map} +0 -0
- /package/dist/{chunk-PIEX7WSG.js.map → chunk-OOLF5FU2.js.map} +0 -0
- /package/dist/{chunk-HOK5KGBO.js.map → chunk-OQA7UF2Q.js.map} +0 -0
- /package/dist/{chunk-JMMG7UWR.js.map → chunk-ORJPICJI.js.map} +0 -0
- /package/dist/{chunk-IF2M43G4.js.map → chunk-PBRD75JF.js.map} +0 -0
- /package/dist/{chunk-PR2R57YF.js.map → chunk-PR36DD2X.js.map} +0 -0
- /package/dist/{chunk-LFCX2JAV.js.map → chunk-PV4HIC4E.js.map} +0 -0
- /package/dist/{chunk-SKF3DF7M.js.map → chunk-PZNK4HTV.js.map} +0 -0
- /package/dist/{chunk-5F3KYRG6.js.map → chunk-QBLPLNPE.js.map} +0 -0
- /package/dist/{chunk-4ZRNXWF6.js.map → chunk-QZXUISRF.js.map} +0 -0
- /package/dist/{chunk-7Q72NTBE.js.map → chunk-RBXYO7MD.js.map} +0 -0
- /package/dist/{chunk-S2BQV6HM.js.map → chunk-RIACRFWA.js.map} +0 -0
- /package/dist/{chunk-DO33YCSZ.js.map → chunk-RL6RNDJQ.js.map} +0 -0
- /package/dist/{chunk-2SPWVX6W.js.map → chunk-SJ2P7UXD.js.map} +0 -0
- /package/dist/{chunk-26FMWFAW.js.map → chunk-SWXS4LV3.js.map} +0 -0
- /package/dist/{chunk-J3ECXFU7.js.map → chunk-TOTCZFRF.js.map} +0 -0
- /package/dist/{chunk-AN4GUUQM.js.map → chunk-TT4D52EK.js.map} +0 -0
- /package/dist/{chunk-KOJHCSGS.js.map → chunk-U7CMJY5P.js.map} +0 -0
- /package/dist/{chunk-MKQHIYUY.js.map → chunk-UZVHSYIF.js.map} +0 -0
- /package/dist/{chunk-OCSKQUNE.js.map → chunk-VKZ3TDET.js.map} +0 -0
- /package/dist/{chunk-ESDYDGPH.js.map → chunk-VLZPUG5A.js.map} +0 -0
- /package/dist/{chunk-PCYIDPFM.js.map → chunk-VSN5FLMI.js.map} +0 -0
- /package/dist/{chunk-S4QDN4IQ.js.map → chunk-VYBBE7RN.js.map} +0 -0
- /package/dist/{chunk-XBFJRCRW.js.map → chunk-WHK4JVKF.js.map} +0 -0
- /package/dist/{chunk-CZEWEOOV.js.map → chunk-X4LDBALX.js.map} +0 -0
- /package/dist/{chunk-YWEPWJRG.js.map → chunk-X67E7NIJ.js.map} +0 -0
- /package/dist/{chunk-RRI3JBD6.js.map → chunk-XMARKBUC.js.map} +0 -0
- /package/dist/{chunk-B3B6HV5S.js.map → chunk-XMBBTETD.js.map} +0 -0
- /package/dist/{chunk-GEICXZCQ.js.map → chunk-XROQP6IQ.js.map} +0 -0
- /package/dist/{chunk-VX72USUQ.js.map → chunk-Y2RYUWSQ.js.map} +0 -0
- /package/dist/{chunk-6I5RRBPP.js.map → chunk-YCTSQV7K.js.map} +0 -0
- /package/dist/{chunk-7WV6R7RG.js.map → chunk-YF7P2DG7.js.map} +0 -0
- /package/dist/{chunk-ZZLIFVZG.js.map → chunk-ZG7DBIVX.js.map} +0 -0
- /package/dist/{chunk-Y6WJJRVV.js.map → chunk-ZGJ775X7.js.map} +0 -0
- /package/dist/{chunk-PQGCWTTI.js.map → chunk-ZQQLOEWN.js.map} +0 -0
- /package/dist/{classified-marker-LY7KQFPH.js.map → classified-marker-HKMRC7SC.js.map} +0 -0
- /package/dist/{collection-facade-SETOHJ3R.js.map → collection-facade-PPKNUR2J.js.map} +0 -0
- /package/dist/{computed-XG7LFB7A.js.map → computed-UCYVPMZA.js.map} +0 -0
- /package/dist/{delegation-JIQCMKW6.js.map → delegation-SNALWRMO.js.map} +0 -0
- /package/dist/{derive-45KCFFOS.js.map → derive-4GNU4E4I.js.map} +0 -0
- /package/dist/{dispatch-URNW4Q2T.js.map → dispatch-V5WLDTVX.js.map} +0 -0
- /package/dist/{executor-BVVZ5UHG.js.map → executor-7QN22OKI.js.map} +0 -0
- /package/dist/{executor-R25UN3FA.js.map → executor-BJZJNVBB.js.map} +0 -0
- /package/dist/{executor-SIYBLT3P.js.map → executor-JEAAEJUM.js.map} +0 -0
- /package/dist/{export-accessible-P672FZEJ.js.map → export-accessible-TVO2KQPG.js.map} +0 -0
- /package/dist/{extract-partition-DQ3FVL6H.js.map → extract-partition-43CLDRN4.js.map} +0 -0
- /package/dist/{find-HHF2HBAC.js.map → issue-EIHEDAXM.js.map} +0 -0
- /package/dist/{issue-NPLQHB3S.js.map → ledger-BMVUFQ3R.js.map} +0 -0
- /package/dist/{ledger-FV6NFTOR.js.map → liberate-7KHXCLNJ.js.map} +0 -0
- /package/dist/{liberate-A7WASOCG.js.map → link-set-PC2EJRKL.js.map} +0 -0
- /package/dist/{link-set-UMRSGMQ5.js.map → managed-secret-RPRVEYZA.js.map} +0 -0
- /package/dist/{migrate-cek-J634S4NU.js.map → migrate-cek-DTSCWGEF.js.map} +0 -0
- /package/dist/{managed-secret-PBJZHPQO.js.map → noydb-AYDNOXAX.js.map} +0 -0
- /package/dist/{post-register-L42VXYFB.js.map → post-register-RITSNASO.js.map} +0 -0
- /package/dist/{noydb-V23UJKHT.js.map → register-BB34SK7E.js.map} +0 -0
- /package/dist/{register-2VINJWYJ.js.map → registry-65L6V5TO.js.map} +0 -0
- /package/dist/{registry-3VLHDUID.js.map → registry-HU62GPWA.js.map} +0 -0
- /package/dist/{registry-6HVHDR3P.js.map → registry-SMNK6UM4.js.map} +0 -0
- /package/dist/{registry-V4FQUMYP.js.map → registry-X5VPBKCO.js.map} +0 -0
- /package/dist/{registry-Z2E6ZCPM.js.map → request-withdrawal-4SKAH46W.js.map} +0 -0
- /package/dist/{request-withdrawal-PSIHKQP4.js.map → revoke-IF5PX2JY.js.map} +0 -0
- /package/dist/{revoke-2NYMID63.js.map → signer-5P7IZC2K.js.map} +0 -0
- /package/dist/{signer-CP6XZLE3.js.map → stale-PUCZH5GJ.js.map} +0 -0
- /package/dist/{stale-XY2QUSGU.js.map → storage-5EGY5OYE.js.map} +0 -0
- /package/dist/{storage-QTM6JYQF.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-52FW6EKP.js.map → withdraw-accessible-CRCIQSTL.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SatelliteConfigError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ISIXU45J.js";
|
|
4
4
|
|
|
5
5
|
// src/with-shape/satellites/validate.ts
|
|
6
6
|
function validateSatelliteDeclaration(input) {
|
|
@@ -47,4 +47,4 @@ export {
|
|
|
47
47
|
validateSatelliteDeclaration,
|
|
48
48
|
hashFields
|
|
49
49
|
};
|
|
50
|
-
//# sourceMappingURL=chunk-
|
|
50
|
+
//# sourceMappingURL=chunk-J4L4AS2W.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SealedRecordNotEnabledError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ISIXU45J.js";
|
|
4
4
|
|
|
5
5
|
// src/with-audit/sealed-record/strategy.ts
|
|
6
6
|
var NO_SEALED_RECORD = {
|
|
@@ -18,4 +18,4 @@ var NO_SEALED_RECORD = {
|
|
|
18
18
|
export {
|
|
19
19
|
NO_SEALED_RECORD
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-JPSOFWJR.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ValidationError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ISIXU45J.js";
|
|
4
4
|
|
|
5
5
|
// src/with-audit/periods/window.ts
|
|
6
6
|
var PERIODS_COLLECTION = "_periods";
|
|
@@ -23,4 +23,4 @@ export {
|
|
|
23
23
|
PERIOD_REOPENS_COLLECTION,
|
|
24
24
|
periodExclusiveUpperBound
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
26
|
+
//# sourceMappingURL=chunk-JRCO67NG.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BrokerNotEnabledError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ISIXU45J.js";
|
|
4
4
|
|
|
5
5
|
// src/port/with/broker-strategy.ts
|
|
6
6
|
var NO_BROKER = {
|
|
@@ -33,4 +33,4 @@ export {
|
|
|
33
33
|
NO_BROKER,
|
|
34
34
|
buildCredentialBrokerHandle
|
|
35
35
|
};
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-JW3I3NNZ.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildLiveReduction,
|
|
3
3
|
compareReduced
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-SJ2P7UXD.js";
|
|
5
5
|
import {
|
|
6
6
|
canonicalGroupKey
|
|
7
7
|
} from "./chunk-XZHEOSQ2.js";
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
bindDistinctReducers,
|
|
10
10
|
moneySum,
|
|
11
11
|
sum
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TOTCZFRF.js";
|
|
13
13
|
import {
|
|
14
14
|
isDateTruncKey,
|
|
15
15
|
projectDateTruncKeys
|
|
16
16
|
} from "./chunk-XBKH4FOC.js";
|
|
17
17
|
import {
|
|
18
18
|
readPath
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-NLDBQHDV.js";
|
|
20
20
|
|
|
21
21
|
// src/with-lookup/reduce/window.ts
|
|
22
22
|
function isWindowFn(v) {
|
|
@@ -212,4 +212,4 @@ export {
|
|
|
212
212
|
WindowedQuery,
|
|
213
213
|
WindowSelection
|
|
214
214
|
};
|
|
215
|
-
//# sourceMappingURL=chunk-
|
|
215
|
+
//# sourceMappingURL=chunk-JZMPSQBH.js.map
|
|
@@ -2,20 +2,20 @@ import {
|
|
|
2
2
|
BLOB_CHUNKS_COLLECTION,
|
|
3
3
|
BLOB_COLLECTION,
|
|
4
4
|
BLOB_INDEX_COLLECTION
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-YCTSQV7K.js";
|
|
6
6
|
import {
|
|
7
7
|
installViaBinder
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ZG7DBIVX.js";
|
|
9
9
|
import {
|
|
10
10
|
buildRecordAad,
|
|
11
11
|
buildRecordEnvelope,
|
|
12
12
|
encrypt,
|
|
13
13
|
openEnvelopeJson
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-EFINFZIF.js";
|
|
15
15
|
import {
|
|
16
16
|
TamperedError,
|
|
17
17
|
ValidationError
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-ISIXU45J.js";
|
|
19
19
|
|
|
20
20
|
// src/via/blob/binding.ts
|
|
21
21
|
async function eraseBlobs(ctx, cfg) {
|
|
@@ -472,4 +472,4 @@ export {
|
|
|
472
472
|
BLOB_EVICTION_AUDIT_COLLECTION,
|
|
473
473
|
runCompaction
|
|
474
474
|
};
|
|
475
|
-
//# sourceMappingURL=chunk-
|
|
475
|
+
//# sourceMappingURL=chunk-K5TVSOPQ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DuplicateBehaviorNameError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ISIXU45J.js";
|
|
4
4
|
|
|
5
5
|
// src/with-audit/guards/registry.ts
|
|
6
6
|
var GuardRegistry = class {
|
|
@@ -141,4 +141,4 @@ var GuardRegistry = class {
|
|
|
141
141
|
export {
|
|
142
142
|
GuardRegistry
|
|
143
143
|
};
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
144
|
+
//# sourceMappingURL=chunk-K75SL74I.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CollectionNotHydratedError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ISIXU45J.js";
|
|
4
4
|
|
|
5
5
|
// src/kernel/query/hydration.ts
|
|
6
6
|
var INSPECT = /* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom");
|
|
@@ -50,4 +50,4 @@ function gateTerminal(gate, terminal, compute) {
|
|
|
50
50
|
export {
|
|
51
51
|
gateTerminal
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
53
|
+
//# sourceMappingURL=chunk-KA4AAUST.js.map
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NoydbError
|
|
3
|
+
} from "./chunk-ISIXU45J.js";
|
|
4
|
+
|
|
5
|
+
// src/kernel/validation.ts
|
|
6
|
+
var WeakSecretError = class extends NoydbError {
|
|
7
|
+
reason;
|
|
8
|
+
/**
|
|
9
|
+
* Remediation copy. Empty string when no truthful advice was
|
|
10
|
+
* available — a `customValidator` rejected the phrase and supplied
|
|
11
|
+
* none, so the hub has no rules to describe (#1430). Never populated
|
|
12
|
+
* with the built-in copy in that case: wrong advice is worse than
|
|
13
|
+
* none, especially for a vault whose own credentials violate it.
|
|
14
|
+
*/
|
|
15
|
+
suggestion;
|
|
16
|
+
constructor(reason, suggestion) {
|
|
17
|
+
const advice = suggestion ?? "";
|
|
18
|
+
super("WEAK_SECRET", advice ? `Weak secret (${reason}). ${advice}` : `Weak secret (${reason}).`);
|
|
19
|
+
this.name = "WeakSecretError";
|
|
20
|
+
this.reason = reason;
|
|
21
|
+
this.suggestion = advice;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var DEFAULT_MIN_WORDS = 6;
|
|
25
|
+
var DEFAULT_MIN_WORD_LENGTH = 3;
|
|
26
|
+
var EXPORT_SECRET_MIN_LENGTH = 12;
|
|
27
|
+
var EXPORT_SECRET_ADVICE = `An export secret must be at least ${EXPORT_SECRET_MIN_LENGTH} characters. Any characters are allowed \u2014 a passphrase, a generated token, or a password-manager string all qualify. It is not the owner phrase rule: uppercase, digits and punctuation are fine.`;
|
|
28
|
+
var EXPORT_SECRET_POLICY = {
|
|
29
|
+
customValidator: (s) => {
|
|
30
|
+
if (s.length === 0) return { ok: false, reason: "empty", suggestion: EXPORT_SECRET_ADVICE };
|
|
31
|
+
if (s.length < EXPORT_SECRET_MIN_LENGTH) {
|
|
32
|
+
return { ok: false, reason: "too-few-words", suggestion: EXPORT_SECRET_ADVICE };
|
|
33
|
+
}
|
|
34
|
+
if (new Set(s).size === 1) {
|
|
35
|
+
return { ok: false, reason: "repeated-adjacent", suggestion: EXPORT_SECRET_ADVICE };
|
|
36
|
+
}
|
|
37
|
+
return { ok: true, words: s.split(" ").filter(Boolean).length };
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var SUGGESTIONS = {
|
|
41
|
+
empty: "Provide a phrase of at least 6 lowercase words separated by single spaces.",
|
|
42
|
+
"invalid-chars": "Use only lowercase letters [a-z] and single spaces. No punctuation, symbols, digits, or uppercase.",
|
|
43
|
+
"leading-or-trailing-space": "Trim leading and trailing spaces.",
|
|
44
|
+
"double-space": "Use exactly one space between words.",
|
|
45
|
+
"too-few-words": 'Use at least 6 words by default (8 under strict policy). Example: "correct horse battery staple printer toaster".',
|
|
46
|
+
"word-too-short": 'Each word must be at least 3 characters. Drop short fillers like "a", "is", "of".',
|
|
47
|
+
"repeated-adjacent": "Avoid repeating the same word twice in a row."
|
|
48
|
+
};
|
|
49
|
+
function validateSecret(s, opts) {
|
|
50
|
+
if (opts?.customValidator) {
|
|
51
|
+
return opts.customValidator(s);
|
|
52
|
+
}
|
|
53
|
+
const minWords = opts?.minWords ?? DEFAULT_MIN_WORDS;
|
|
54
|
+
const minWordLength = opts?.minWordLength ?? DEFAULT_MIN_WORD_LENGTH;
|
|
55
|
+
const rejectRepeated = opts?.rejectRepeatedAdjacent ?? true;
|
|
56
|
+
if (s.length === 0) {
|
|
57
|
+
return { ok: false, reason: "empty" };
|
|
58
|
+
}
|
|
59
|
+
if (s !== s.trim()) {
|
|
60
|
+
return { ok: false, reason: "leading-or-trailing-space" };
|
|
61
|
+
}
|
|
62
|
+
if (s.includes(" ")) {
|
|
63
|
+
return { ok: false, reason: "double-space" };
|
|
64
|
+
}
|
|
65
|
+
const charPattern = opts?.pattern ?? /^[a-z]+( [a-z]+)*$/;
|
|
66
|
+
if (!charPattern.test(s)) {
|
|
67
|
+
return { ok: false, reason: "invalid-chars" };
|
|
68
|
+
}
|
|
69
|
+
const words = s.split(" ");
|
|
70
|
+
if (words.length < minWords) {
|
|
71
|
+
return { ok: false, reason: "too-few-words", minimum: minWords, got: words.length };
|
|
72
|
+
}
|
|
73
|
+
for (const w of words) {
|
|
74
|
+
if (w.length < minWordLength) {
|
|
75
|
+
return { ok: false, reason: "word-too-short", minimum: minWordLength, got: w.length };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (rejectRepeated) {
|
|
79
|
+
for (let i = 1; i < words.length; i++) {
|
|
80
|
+
if (words[i] === words[i - 1]) {
|
|
81
|
+
return { ok: false, reason: "repeated-adjacent" };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return { ok: true, words: words.length };
|
|
86
|
+
}
|
|
87
|
+
function resolveSuggestion(result, customValidatorInUse) {
|
|
88
|
+
if (result.suggestion !== void 0) return result.suggestion;
|
|
89
|
+
if (customValidatorInUse) return void 0;
|
|
90
|
+
return SUGGESTIONS[result.reason];
|
|
91
|
+
}
|
|
92
|
+
function assertStrongSecret(s, opts) {
|
|
93
|
+
if (opts?.allowWeakSecret) return;
|
|
94
|
+
const result = validateSecret(s, opts);
|
|
95
|
+
if (result.ok) return;
|
|
96
|
+
throw new WeakSecretError(
|
|
97
|
+
result.reason,
|
|
98
|
+
resolveSuggestion(result, opts?.customValidator !== void 0)
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
function estimateEntropy(secret) {
|
|
102
|
+
const result = validateSecret(secret);
|
|
103
|
+
if (!result.ok) return 0;
|
|
104
|
+
return Math.round(result.words * Math.log2(7776));
|
|
105
|
+
}
|
|
106
|
+
var DEFAULT_ECHO_PROMPT_MIN_WORDS = 3;
|
|
107
|
+
var DEFAULT_ECHO_MIN_WORD_LENGTH = 1;
|
|
108
|
+
function validateEchoSecretDetailed(parts, opts) {
|
|
109
|
+
for (const part of [parts.prompt, parts.echo, parts.key]) {
|
|
110
|
+
if (part.trim().length === 0) return { result: { ok: false, reason: "empty" }, failedCheck: "empty" };
|
|
111
|
+
}
|
|
112
|
+
const promptPolicy = {
|
|
113
|
+
minWords: opts?.prompt?.minWords ?? DEFAULT_ECHO_PROMPT_MIN_WORDS,
|
|
114
|
+
minWordLength: opts?.prompt?.minWordLength ?? DEFAULT_ECHO_MIN_WORD_LENGTH,
|
|
115
|
+
...opts?.prompt?.rejectRepeatedAdjacent !== void 0 && { rejectRepeatedAdjacent: opts.prompt.rejectRepeatedAdjacent },
|
|
116
|
+
...opts?.prompt?.pattern !== void 0 && { pattern: opts.prompt.pattern },
|
|
117
|
+
...opts?.prompt?.customValidator !== void 0 && { customValidator: opts.prompt.customValidator }
|
|
118
|
+
};
|
|
119
|
+
const promptResult = validateSecret(parts.prompt, promptPolicy);
|
|
120
|
+
if (!promptResult.ok) return { result: promptResult, failedCheck: "prompt" };
|
|
121
|
+
const combinedPolicy = {
|
|
122
|
+
...opts?.combined?.minWords !== void 0 && { minWords: opts.combined.minWords },
|
|
123
|
+
minWordLength: opts?.combined?.minWordLength ?? DEFAULT_ECHO_MIN_WORD_LENGTH,
|
|
124
|
+
...opts?.combined?.rejectRepeatedAdjacent !== void 0 && { rejectRepeatedAdjacent: opts.combined.rejectRepeatedAdjacent },
|
|
125
|
+
...opts?.combined?.pattern !== void 0 && { pattern: opts.combined.pattern },
|
|
126
|
+
...opts?.combined?.customValidator !== void 0 && { customValidator: opts.combined.customValidator }
|
|
127
|
+
};
|
|
128
|
+
const combinedResult = validateSecret(`${parts.prompt} ${parts.echo} ${parts.key}`, combinedPolicy);
|
|
129
|
+
return { result: combinedResult, failedCheck: "combined" };
|
|
130
|
+
}
|
|
131
|
+
function validateEchoSecret(parts, opts) {
|
|
132
|
+
return validateEchoSecretDetailed(parts, opts).result;
|
|
133
|
+
}
|
|
134
|
+
function promptSuggestion(reason, minWords) {
|
|
135
|
+
if (reason === "too-few-words") {
|
|
136
|
+
return `The prompt (the part you type first) must be at least ${minWords} words. Example: "sono chiamato vicio".`;
|
|
137
|
+
}
|
|
138
|
+
return `The prompt (the part you type first) is the problem. ${SUGGESTIONS[reason]}`;
|
|
139
|
+
}
|
|
140
|
+
function assertStrongEchoSecret(parts, opts) {
|
|
141
|
+
if (opts?.allowWeakSecret) return;
|
|
142
|
+
const { result, failedCheck } = validateEchoSecretDetailed(parts, opts);
|
|
143
|
+
if (result.ok) return;
|
|
144
|
+
const promptMinWords = opts?.prompt?.minWords ?? DEFAULT_ECHO_PROMPT_MIN_WORDS;
|
|
145
|
+
const customInUse = failedCheck === "prompt" ? opts?.prompt?.customValidator !== void 0 : opts?.combined?.customValidator !== void 0;
|
|
146
|
+
const suggestion = result.suggestion !== void 0 ? result.suggestion : failedCheck === "prompt" && !customInUse ? promptSuggestion(result.reason, promptMinWords) : resolveSuggestion(result, customInUse);
|
|
147
|
+
throw new WeakSecretError(result.reason, suggestion);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export {
|
|
151
|
+
WeakSecretError,
|
|
152
|
+
EXPORT_SECRET_POLICY,
|
|
153
|
+
validateSecret,
|
|
154
|
+
assertStrongSecret,
|
|
155
|
+
estimateEntropy,
|
|
156
|
+
DEFAULT_ECHO_PROMPT_MIN_WORDS,
|
|
157
|
+
DEFAULT_ECHO_MIN_WORD_LENGTH,
|
|
158
|
+
validateEchoSecret,
|
|
159
|
+
assertStrongEchoSecret
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=chunk-KHSBMLQE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/kernel/validation.ts"],"sourcesContent":["/**\n * Secret validation — phrase format (per the three-tier session-tiers\n * design, locked 2026-05-04).\n *\n * Secrets are **phrases**: multiple simple words, easy to remember,\n * structurally constrained so a weak choice cannot silently collapse the\n * security floor. The format is intentionally narrow: lowercase letters\n * and single spaces only, no punctuation, no symbols, no digits.\n *\n * - Default minimum: 6 words (~77 bits with the 7,776-word EFF list).\n * - Strict minimum: 8 words (~103 bits).\n * - Per-word minimum: 3 characters (excludes \"a\", \"is\", \"of\").\n * - Adjacent repeats rejected (\"the the\").\n *\n * The hub runs validation default-on at every secret ingress\n * (`createOwnerKeyring`, `grant`, `rotateSecret`); test fixtures and\n * CLI scripts override via `{ allowWeakSecret: true }`.\n *\n * @module\n */\nimport { NoydbError } from './errors.js'\n\n/** All reasons a phrase can be rejected. */\nexport type WeakSecretReason =\n | 'empty'\n | 'invalid-chars'\n | 'leading-or-trailing-space'\n | 'double-space'\n | 'too-few-words'\n | 'word-too-short'\n | 'repeated-adjacent'\n\n/** Per-vault knobs. Aligns with `VaultPolicy.secret`. */\nexport interface SecretPolicy {\n /** Minimum number of words. Default 6. Strict policy uses 8. */\n readonly minWords?: number\n /** Minimum characters per word. Default 3. */\n readonly minWordLength?: number\n /** Reject adjacent identical words (\"the the\"). Default true. */\n readonly rejectRepeatedAdjacent?: boolean\n /**\n * Override the default character-class rule (`/^[a-z]+( [a-z]+)*$/`).\n *\n * The hub's strict default is lowercase-letters-and-single-spaces\n * because that's what the EFF wordlist generator emits and what\n * most attacker password lists are keyed on. Use this knob to allow\n * digits, uppercase, hyphens, or non-Latin scripts when the\n * consumer's audience needs them — e.g.:\n *\n * ```ts\n * // Thai + English mix with digits permitted\n * pattern: /^[\\p{L}0-9 ]+( [\\p{L}0-9 ]+)*$/u\n *\n * // Allow uppercase + hyphens (secret-with-hyphens style)\n * pattern: /^[A-Za-z]+([- ][A-Za-z]+)*$/\n * ```\n *\n * The OTHER structural rules still apply (min-words split by space,\n * min-word-length, repeated-adjacent, leading/trailing whitespace,\n * double-space). For non-space-delimited word semantics, use\n * {@link customValidator} instead.\n *\n */\n readonly pattern?: RegExp\n /**\n * Replace ALL validation entirely with a custom function. When set,\n * none of the other SecretPolicy fields apply — the consumer\n * owns every rule (word splitting, character classes, entropy\n * thresholds, allowlist/denylist). Use sparingly; this is the\n * escape hatch for domain-specific phrase formats:\n *\n * - Localized wordlists with non-space word boundaries\n * - BIP-39 seed phrases (24 words, fixed wordlist, etc.)\n * - Organization-specific HR password policies\n *\n * The returned `SecretValidationResult` is what\n * {@link assertStrongSecret} dispatches on — `ok: true` accepts;\n * `ok: false` throws `WeakSecretError` with the supplied reason.\n *\n * ⚠️ Also supply `suggestion` on a rejection (#1430). Because this\n * knob replaces every default rule, the hub's built-in remediation\n * copy no longer describes anything true about your vault — so it is\n * deliberately NOT used here. Omitting `suggestion` yields a bare\n * `Weak secret (<reason>).`, which is less helpful but never wrong.\n *\n */\n readonly customValidator?: (phrase: string) => SecretValidationResult\n}\n\n/** Result of a check. Discriminated union — compile-time exhaustive. */\nexport type SecretValidationResult =\n | { readonly ok: true; readonly words: number }\n | {\n readonly ok: false\n readonly reason: WeakSecretReason\n readonly minimum?: number\n readonly got?: number\n /**\n * Remediation copy for THIS failure, overriding the hub's built-in\n * `SUGGESTIONS` map (#1430).\n *\n * Only a {@link SecretPolicy.customValidator} has any business\n * setting it: the built-in copy describes the hub's default rules\n * (\"lowercase letters and single spaces\", \"at least 6 words\"), and\n * a vault that replaced those rules gets advice contradicting the\n * format it actually accepts. Supply the copy your rules justify —\n * and note that a validator returning no `suggestion` produces a\n * bare `Weak secret (<reason>).` rather than false advice.\n */\n readonly suggestion?: string\n }\n\n/**\n * Thrown by `assertStrongSecret()` and by every hub ingress\n * point (`createOwnerKeyring`, `grant`, `rotateSecret`) when a\n * supplied phrase fails the structural rules above.\n */\nexport class WeakSecretError extends NoydbError {\n readonly reason: WeakSecretReason\n /**\n * Remediation copy. Empty string when no truthful advice was\n * available — a `customValidator` rejected the phrase and supplied\n * none, so the hub has no rules to describe (#1430). Never populated\n * with the built-in copy in that case: wrong advice is worse than\n * none, especially for a vault whose own credentials violate it.\n */\n readonly suggestion: string\n constructor(reason: WeakSecretReason, suggestion?: string) {\n const advice = suggestion ?? ''\n super('WEAK_SECRET', advice ? `Weak secret (${reason}). ${advice}` : `Weak secret (${reason}).`)\n this.name = 'WeakSecretError'\n this.reason = reason\n this.suggestion = advice\n }\n}\n\nconst DEFAULT_MIN_WORDS = 6\nconst DEFAULT_MIN_WORD_LENGTH = 3\n\n/** The floor, in characters. See {@link EXPORT_SECRET_POLICY}.\n * ⚠️ NOT exported from the package: knip is right that it reaches no published\n * entry point, and the number a consumer needs is already in the error message\n * (`WeakSecretError.suggestion`). Publishing it so a UI can validate ahead of\n * the call is one line, and worth doing when someone asks rather than on spec. */\nconst EXPORT_SECRET_MIN_LENGTH = 12\n\n/** ⚠️ Carried on every verdict, because `resolveSuggestion` suppresses the\n * built-in advice whenever a `customValidator` owns the rules — and advice\n * quoting the six-word phrase rules would be the opposite of the truth here\n * (the exact misdirection #1430 fixed for the owner path). */\nconst EXPORT_SECRET_ADVICE =\n `An export secret must be at least ${EXPORT_SECRET_MIN_LENGTH} characters. Any characters are allowed — ` +\n 'a passphrase, a generated token, or a password-manager string all qualify. ' +\n 'It is not the owner phrase rule: uppercase, digits and punctuation are fine.'\n\n/**\n * The bar an EXPORT secret must clear (family#177).\n *\n * ⭐ DELIBERATELY NOT THE OWNER BAR, and the difference is not laxity. The\n * owner default is phrase-shaped — six lowercase words, each ≥3 characters,\n * `/^[a-z]+( [a-z]+)*$/` — because it is a thing a human memorises and types\n * daily, and because that is the shape the EFF generator emits. An export\n * secret is typed once into a dialog or produced by a password manager, so the\n * phrase rules refuse the strongest things a caller is likely to use:\n * `8f3a9c2b1d4e7f0a` fails on `invalid-chars`, and `Tax-Returns-2026!` fails\n * twice over.\n *\n * ⛔ SO THE BAR IS LENGTH, 12 CHARACTERS, AND NOTHING ELSE. Measured against\n * the real secrets in this repo and the shapes a consumer actually passes:\n *\n * BLOCKED p · pw · pw1 · r-pw · aud-pw · bob-pw · new-pw · alice-pw · hunter2\n * ALLOWED Tax-Returns-2026! · 8f3a9c2b1d4e7f0a · source-pw-2026 ·\n * client-takeaway · correct horse battery staple\n *\n * That is the whole claim: it refuses what a human picks when they are not\n * thinking, and refuses nothing a human or a generator picks when they are.\n *\n * ⚠️ A single repeated character is refused too, because `aaaaaaaaaaaa` clears\n * any length floor and clears no attacker's wordlist.\n *\n * ⚠️ 12 characters is a FLOOR, not a claim about entropy — roughly 40-50 bits\n * for a human-chosen password, well under the owner phrase's ~77. It is sized\n * to stop the hazard (a one-character export secret on a file built to travel)\n * without blocking ordinary use, and the PBKDF2 600K derivation still sits\n * underneath it. A consumer who wants more passes a longer secret.\n */\nexport const EXPORT_SECRET_POLICY: SecretPolicy = {\n customValidator: (s: string): SecretValidationResult => {\n if (s.length === 0) return { ok: false, reason: 'empty', suggestion: EXPORT_SECRET_ADVICE }\n if (s.length < EXPORT_SECRET_MIN_LENGTH) {\n return { ok: false, reason: 'too-few-words', suggestion: EXPORT_SECRET_ADVICE }\n }\n if (new Set(s).size === 1) {\n return { ok: false, reason: 'repeated-adjacent', suggestion: EXPORT_SECRET_ADVICE }\n }\n return { ok: true, words: s.split(' ').filter(Boolean).length }\n },\n}\n\nconst SUGGESTIONS: Record<WeakSecretReason, string> = {\n empty: 'Provide a phrase of at least 6 lowercase words separated by single spaces.',\n 'invalid-chars':\n 'Use only lowercase letters [a-z] and single spaces. No punctuation, symbols, digits, or uppercase.',\n 'leading-or-trailing-space': 'Trim leading and trailing spaces.',\n 'double-space': 'Use exactly one space between words.',\n 'too-few-words':\n 'Use at least 6 words by default (8 under strict policy). Example: \"correct horse battery staple printer toaster\".',\n 'word-too-short': 'Each word must be at least 3 characters. Drop short fillers like \"a\", \"is\", \"of\".',\n 'repeated-adjacent': 'Avoid repeating the same word twice in a row.',\n}\n\n/**\n * Inspect a phrase against the format rules and return a structured\n * verdict. Never throws — callers either branch on `ok` or pass the\n * result to {@link assertStrongSecret} for the throwing flavour.\n */\nexport function validateSecret(\n s: string,\n opts?: SecretPolicy,\n): SecretValidationResult {\n // Escape hatch: customValidator owns the entire decision. None of\n // the structural rules below run when this is set — the consumer is\n // responsible for the full validation contract.\n if (opts?.customValidator) {\n return opts.customValidator(s)\n }\n\n const minWords = opts?.minWords ?? DEFAULT_MIN_WORDS\n const minWordLength = opts?.minWordLength ?? DEFAULT_MIN_WORD_LENGTH\n const rejectRepeated = opts?.rejectRepeatedAdjacent ?? true\n\n if (s.length === 0) {\n return { ok: false, reason: 'empty' }\n }\n\n if (s !== s.trim()) {\n return { ok: false, reason: 'leading-or-trailing-space' }\n }\n\n if (s.includes(' ')) {\n return { ok: false, reason: 'double-space' }\n }\n\n // The default character class is lowercase-letters-and-spaces;\n // consumers can override via SecretPolicy.pattern (e.g. to\n // allow digits, uppercase, or non-Latin scripts). Word splitting\n // below remains space-based — for non-space word semantics the\n // consumer should use customValidator instead.\n const charPattern = opts?.pattern ?? /^[a-z]+( [a-z]+)*$/\n if (!charPattern.test(s)) {\n return { ok: false, reason: 'invalid-chars' }\n }\n\n const words = s.split(' ')\n\n if (words.length < minWords) {\n return { ok: false, reason: 'too-few-words', minimum: minWords, got: words.length }\n }\n\n for (const w of words) {\n if (w.length < minWordLength) {\n return { ok: false, reason: 'word-too-short', minimum: minWordLength, got: w.length }\n }\n }\n\n if (rejectRepeated) {\n for (let i = 1; i < words.length; i++) {\n if (words[i] === words[i - 1]) {\n return { ok: false, reason: 'repeated-adjacent' }\n }\n }\n }\n\n return { ok: true, words: words.length }\n}\n\n/**\n * Throw {@link WeakSecretError} when the phrase fails. Used by\n * `createOwnerKeyring`, `grant`, and `rotateSecret` at ingress.\n *\n * Pass `{ allowWeakSecret: true }` to bypass — intended for test\n * fixtures, CLI scripts, and dev environments. The override never\n * loosens the cryptographic key derivation; it only relaxes the\n * structural-strength gate.\n */\n/**\n * Pick the remediation copy for a failed check (#1430).\n *\n * The built-in `SUGGESTIONS` map describes the hub's DEFAULT rules. A\n * `customValidator` replaces those rules wholesale, so quoting the map\n * then tells the user to do something the vault will reject — the\n * reported case was a vault accepting `ann-saraphia1-2026`-shaped\n * phrases being advised \"no digits, no punctuation, six English words\".\n * The rejection was right and the advice was the opposite of the truth.\n *\n * Precedence: the validator's own copy, else nothing when a validator\n * owns the rules, else the built-in map. Same rationale as\n * {@link promptSuggestion}, which already overrides the map where it\n * would misdirect.\n */\nfunction resolveSuggestion(\n result: Extract<SecretValidationResult, { ok: false }>,\n customValidatorInUse: boolean,\n): string | undefined {\n if (result.suggestion !== undefined) return result.suggestion\n if (customValidatorInUse) return undefined\n return SUGGESTIONS[result.reason]\n}\n\nexport function assertStrongSecret(\n s: string,\n opts?: SecretPolicy & { allowWeakSecret?: boolean },\n): void {\n if (opts?.allowWeakSecret) return\n const result = validateSecret(s, opts)\n if (result.ok) return\n throw new WeakSecretError(\n result.reason,\n resolveSuggestion(result, opts?.customValidator !== undefined),\n )\n}\n\n/**\n * Estimate the entropy of a phrase, given the EFF 7,776-word list as\n * the assumed wordlist. ~12.9 bits per word.\n *\n * Returns 0 for any input that fails the phrase format — character-class\n * estimates aren't comparable to phrase entropy, and surfacing 0 makes\n * weak inputs visible in any UI that displays an entropy meter.\n */\nexport function estimateEntropy(secret: string): number {\n const result = validateSecret(secret)\n if (!result.ok) return 0\n return Math.round(result.words * Math.log2(7776))\n}\n\n/** Dedicated floors for the echo mode's three parts (spec resolved Q1/Q5). */\nexport interface EchoSecretPolicy {\n /** Floor for the typed prompt — the brute-forceable-in-isolation part. */\n readonly prompt?: SecretPolicy\n /** Policy for the combined parts (defaults to the standard whole-secret rules). */\n readonly combined?: SecretPolicy\n}\n\nexport const DEFAULT_ECHO_PROMPT_MIN_WORDS = 3\n/**\n * Default per-word character floor for echo-mode validation (prompt AND\n * combined checks). Relaxed to 1 from the standard 3-char floor\n * ({@link DEFAULT_MIN_WORD_LENGTH}) — echo secrets are natural-language\n * sentences (spec #940's canonical example is Italian), and Romance\n * languages are full of 2-letter function words (\"mi\", \"da\", \"al\") that\n * the standard floor would otherwise reject even though the combined\n * secret is plenty strong. Word-COUNT floors (prompt 3, combined 6) are\n * unchanged — this only relaxes per-word length.\n */\nexport const DEFAULT_ECHO_MIN_WORD_LENGTH = 1\n\n/** Which of `validateEchoSecret`'s three internal checks produced a result. */\ntype EchoSecretCheck = 'empty' | 'prompt' | 'combined'\n\n/**\n * `validateEchoSecret` plus which check produced the result — lets\n * `assertStrongEchoSecret` pick the prompt-specific suggestion without\n * re-running `validateSecret` on the failure path. Internal: NOT\n * package-exported (the public `validateEchoSecret`/`SecretValidationResult`\n * contract stays exactly as before).\n */\nfunction validateEchoSecretDetailed(\n parts: { readonly prompt: string; readonly echo: string; readonly key: string },\n opts?: EchoSecretPolicy,\n): { readonly result: SecretValidationResult; readonly failedCheck: EchoSecretCheck } {\n // Trimmed: a whitespace-only part carries no secret material, so it is\n // 'empty' rather than a confusing spacing complaint.\n for (const part of [parts.prompt, parts.echo, parts.key]) {\n if (part.trim().length === 0) return { result: { ok: false, reason: 'empty' }, failedCheck: 'empty' }\n }\n // Field-by-field construction (not a spread of `opts?.prompt`) so an\n // explicit `{ prompt: { minWords: undefined } }` override falls back to\n // the ECHO prompt default (3) rather than reintroducing `undefined` as\n // an own property that would then hit `validateSecret`'s STANDARD\n // default (6) — a spread copies an explicit-`undefined` key verbatim and\n // clobbers the default set here. Each optional field is included only\n // when actually set (`exactOptionalPropertyTypes`).\n const promptPolicy: SecretPolicy = {\n minWords: opts?.prompt?.minWords ?? DEFAULT_ECHO_PROMPT_MIN_WORDS,\n minWordLength: opts?.prompt?.minWordLength ?? DEFAULT_ECHO_MIN_WORD_LENGTH,\n ...(opts?.prompt?.rejectRepeatedAdjacent !== undefined\n && { rejectRepeatedAdjacent: opts.prompt.rejectRepeatedAdjacent }),\n ...(opts?.prompt?.pattern !== undefined && { pattern: opts.prompt.pattern }),\n ...(opts?.prompt?.customValidator !== undefined && { customValidator: opts.prompt.customValidator }),\n }\n const promptResult = validateSecret(parts.prompt, promptPolicy)\n if (!promptResult.ok) return { result: promptResult, failedCheck: 'prompt' }\n // Same field-by-field construction as promptPolicy above (not a spread of\n // `opts?.combined`) so the combined check's minWordLength defaults to the\n // echo floor too, while minWords keeps the standard whole-secret default\n // (6) when the caller doesn't override it.\n const combinedPolicy: SecretPolicy = {\n ...(opts?.combined?.minWords !== undefined && { minWords: opts.combined.minWords }),\n minWordLength: opts?.combined?.minWordLength ?? DEFAULT_ECHO_MIN_WORD_LENGTH,\n ...(opts?.combined?.rejectRepeatedAdjacent !== undefined\n && { rejectRepeatedAdjacent: opts.combined.rejectRepeatedAdjacent }),\n ...(opts?.combined?.pattern !== undefined && { pattern: opts.combined.pattern }),\n ...(opts?.combined?.customValidator !== undefined && { customValidator: opts.combined.customValidator }),\n }\n const combinedResult = validateSecret(`${parts.prompt} ${parts.echo} ${parts.key}`, combinedPolicy)\n return { result: combinedResult, failedCheck: 'combined' }\n}\n\n/** Validate a 3-part echo secret. Never throws. */\nexport function validateEchoSecret(\n parts: { readonly prompt: string; readonly echo: string; readonly key: string },\n opts?: EchoSecretPolicy,\n): SecretValidationResult {\n return validateEchoSecretDetailed(parts, opts).result\n}\n\n/**\n * Suggestion copy for a failure that came from the PROMPT's dedicated floor.\n * The generic `SUGGESTIONS` copy quotes the 6-word whole-secret floor, which\n * misdirects an owner whose prompt only has to clear 3 words.\n */\nfunction promptSuggestion(reason: WeakSecretReason, minWords: number): string {\n if (reason === 'too-few-words') {\n return `The prompt (the part you type first) must be at least ${minWords} words. Example: \"sono chiamato vicio\".`\n }\n return `The prompt (the part you type first) is the problem. ${SUGGESTIONS[reason]}`\n}\n\n/** Throwing form of {@link validateEchoSecret}. */\nexport function assertStrongEchoSecret(\n parts: { readonly prompt: string; readonly echo: string; readonly key: string },\n opts?: EchoSecretPolicy & { allowWeakSecret?: boolean },\n): void {\n if (opts?.allowWeakSecret) return\n const { result, failedCheck } = validateEchoSecretDetailed(parts, opts)\n if (result.ok) return\n\n const promptMinWords = opts?.prompt?.minWords ?? DEFAULT_ECHO_PROMPT_MIN_WORDS\n // #1430 — a validator-supplied suggestion outranks both the prompt copy\n // and the map, and the half that failed decides which validator is the\n // one that owns the rules here.\n const customInUse = failedCheck === 'prompt'\n ? opts?.prompt?.customValidator !== undefined\n : opts?.combined?.customValidator !== undefined\n const suggestion = result.suggestion !== undefined\n ? result.suggestion\n : failedCheck === 'prompt' && !customInUse\n ? promptSuggestion(result.reason, promptMinWords)\n : resolveSuggestion(result, customInUse)\n\n throw new WeakSecretError(result.reason, suggestion)\n}\n"],"mappings":"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","names":[]}
|
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
exportDekSet,
|
|
10
10
|
generateEphemeralKey,
|
|
11
11
|
importDekSet
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-EFINFZIF.js";
|
|
13
13
|
import {
|
|
14
14
|
SessionExpiredError,
|
|
15
15
|
SessionNotFoundError,
|
|
16
16
|
SessionPolicyError,
|
|
17
17
|
ValidationError
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-ISIXU45J.js";
|
|
19
19
|
|
|
20
20
|
// src/with-party/session/session.ts
|
|
21
21
|
var DEFAULT_TTL_MS = 60 * 60 * 1e3;
|
|
@@ -323,4 +323,4 @@ export {
|
|
|
323
323
|
clearDevUnlock,
|
|
324
324
|
isDevUnlockActive
|
|
325
325
|
};
|
|
326
|
-
//# sourceMappingURL=chunk-
|
|
326
|
+
//# sourceMappingURL=chunk-KUGUML7H.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ValidationError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ISIXU45J.js";
|
|
4
4
|
|
|
5
5
|
// src/with-formula/overlay-views/with-overlayed-view.ts
|
|
6
6
|
function withOverlayedView(spec) {
|
|
@@ -33,4 +33,4 @@ function withOverlayedView(spec) {
|
|
|
33
33
|
export {
|
|
34
34
|
withOverlayedView
|
|
35
35
|
};
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-L4J5NC2Q.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-4CFHL5RY.js";
|
|
10
10
|
import {
|
|
11
11
|
readPath
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-NLDBQHDV.js";
|
|
13
13
|
|
|
14
14
|
// src/with-lookup/indexing/index-snapshot.ts
|
|
15
15
|
var FIELD_INDEX_SNAPSHOT_VERSION = 1;
|
|
@@ -933,4 +933,4 @@ export {
|
|
|
933
933
|
normalizeIndexDefs,
|
|
934
934
|
CollectionIndexes
|
|
935
935
|
};
|
|
936
|
-
//# sourceMappingURL=chunk-
|
|
936
|
+
//# sourceMappingURL=chunk-LIX4QPMM.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
matchesReferencingValue
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RIACRFWA.js";
|
|
4
4
|
import {
|
|
5
5
|
PeriodClosedError
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ISIXU45J.js";
|
|
7
7
|
|
|
8
8
|
// src/kernel/via/dispatch.ts
|
|
9
9
|
function touchFor(batch, collection) {
|
|
@@ -173,4 +173,4 @@ export {
|
|
|
173
173
|
forgetDerivedFanout,
|
|
174
174
|
selfWriteFieldEqual
|
|
175
175
|
};
|
|
176
|
-
//# sourceMappingURL=chunk-
|
|
176
|
+
//# sourceMappingURL=chunk-LWQFGR34.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
NoydbError,
|
|
3
3
|
ValidationError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ISIXU45J.js";
|
|
5
5
|
|
|
6
6
|
// src/with-shape/links/names.ts
|
|
7
7
|
var LINK_COLLECTION_PREFIX = "_links_";
|
|
@@ -60,4 +60,4 @@ export {
|
|
|
60
60
|
linkRowKey,
|
|
61
61
|
LinkIntegrityError
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=chunk-
|
|
63
|
+
//# sourceMappingURL=chunk-MMSSHMHW.js.map
|
|
@@ -3,20 +3,20 @@ import {
|
|
|
3
3
|
} from "./chunk-EPFF7LOX.js";
|
|
4
4
|
import {
|
|
5
5
|
loadFence
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-63LZLRWG.js";
|
|
7
7
|
import {
|
|
8
8
|
SCHEMAS_COLLECTION,
|
|
9
9
|
loadPersistedSchema
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PBRD75JF.js";
|
|
11
11
|
import {
|
|
12
12
|
canonicalJson,
|
|
13
13
|
sha256Hex
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-5JNEDW7I.js";
|
|
15
15
|
import {
|
|
16
16
|
buildSealedRecordEnvelope,
|
|
17
17
|
openEnvelopeJson,
|
|
18
18
|
writeEnvelopeBody
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-EFINFZIF.js";
|
|
20
20
|
|
|
21
21
|
// src/with-shape/manifest/types.ts
|
|
22
22
|
var MANIFEST_SCHEMA_RECORD_ID = "schema";
|
|
@@ -44,6 +44,7 @@ async function saveSchemaManifest(store, vault, manifest, expectedVersion, getDE
|
|
|
44
44
|
{}
|
|
45
45
|
);
|
|
46
46
|
await store.put(vault, MANIFEST_COLLECTION, MANIFEST_SCHEMA_RECORD_ID, env, expectedVersion);
|
|
47
|
+
return env;
|
|
47
48
|
}
|
|
48
49
|
async function computeAggregateHash(collections) {
|
|
49
50
|
return sha256Hex(canonicalJson(collections));
|
|
@@ -84,4 +85,4 @@ export {
|
|
|
84
85
|
saveSchemaManifest,
|
|
85
86
|
deriveSchemaManifest
|
|
86
87
|
};
|
|
87
|
-
//# sourceMappingURL=chunk-
|
|
88
|
+
//# sourceMappingURL=chunk-N25Z6PR4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/with-shape/manifest/types.ts","../src/with-shape/manifest/storage.ts","../src/with-shape/manifest/derive.ts"],"sourcesContent":["/**\n * The pod-wide **schema manifest** record type (#941).\n *\n * This is an INDEX, not a full-inline manifest: `SchemaManifest.collections`\n * carries per-collection *metadata* (generation / content hash / field ids),\n * never the JSON Schema body itself. The JSON Schema stays the source of\n * truth at `_schemas/<collection>`, encrypted under that collection's own\n * DEK (see `with-shape/persisted-schemas`). Inlining full schemas into one\n * pod-wide manifest record would either leak every collection's schema to a\n * principal scoped to a single collection, or force the manifest itself\n * onto a collection-DEK it has no business holding — the index preserves\n * per-collection DEK isolation while still giving a single place to answer\n * \"what schema generation is this pod at, and does collection X's stored\n * schema match its declared content hash.\"\n *\n * `aggregateHash` binds the whole per-collection index's content: it is\n * `sha256Hex(canonicalJson(collections))`, so any change to any collection's\n * entry (a new generation, a changed hash, added/renamed field ids) changes\n * `aggregateHash` too. Canonical JSON (sorted object keys, no whitespace)\n * makes the hash independent of the map's key insertion order.\n *\n * @module\n */\n\n/** Per-collection entry inside a {@link SchemaManifest}'s `collections` index. */\nexport interface SchemaManifestEntry {\n /** The vault-wide schema-fence generation this collection's schema was last written at. */\n readonly generation: number\n /** SHA-256 (hex) of the collection's canonicalised JSON Schema (see `persisted-schemas/derive.ts`). */\n readonly contentHash: string\n /** Stable per-field ids (#946), keyed by the field's current name. Absent when the collection has none. */\n readonly fieldIds?: Record<string, string>\n}\n\n/**\n * The pod-wide schema manifest — one record per pod, stored at\n * `_manifest/schema` (see `storage.ts`). An INDEX over the per-collection\n * `_schemas/<collection>` entries, not the schemas themselves.\n */\nexport interface SchemaManifest {\n readonly v: 1\n readonly kind: 'schema'\n /** Pod-wide schema-fence generation (`FenceDoc.currentSchemaVersion`) as of this manifest's derivation. */\n readonly generation: number\n /** Per-collection index: collection name → its manifest entry. */\n readonly collections: Record<string, SchemaManifestEntry>\n /** `sha256Hex(canonicalJson(collections))` — the pod-wide content binding over the index. */\n readonly aggregateHash: string\n}\n\n/** The record id the schema manifest is stored under inside `_manifest`. */\nexport const MANIFEST_SCHEMA_RECORD_ID = 'schema' as const\n","/**\n * Read / write the pod-wide `_manifest/schema` envelope.\n *\n * Mirrors `with-shape/persisted-schemas/storage.ts`'s shape: the same\n * standard noy-db record envelope, AES-GCM encrypted with a collection DEK\n * (here, the `_manifest` collection's own DEK — the manifest INDEX\n * discloses collection names + hashes + generations + field ids, metadata\n * rather than schema bodies, so it gets the same encryption grain as\n * `_schemas` itself).\n *\n * Storage layout:\n *\n * <vault>/_manifest/schema → EncryptedEnvelope\n *\n * Unlike `persisted-schemas/storage.ts` (which takes an already-resolved\n * `EnclaveKey`), these functions take a `getDEK` resolver and call\n * `getDEK(MANIFEST_COLLECTION)` themselves — there is exactly one manifest\n * record per pod, so there is no per-collection DEK the caller needs to\n * pick; resolving it here keeps every manifest call-site symmetric.\n *\n * @module\n */\n\nimport { buildSealedRecordEnvelope, openEnvelopeJson, writeEnvelopeBody, type EnclaveKey } from '../../capsule/index.js'\nimport { canonicalJson, sha256Hex } from '../../with-commit/history/ledger/index.js'\nimport type { NoydbStore, EncryptedEnvelope } from '../../kernel/types.js'\nimport { MANIFEST_COLLECTION } from './reserved-collections.js'\nimport { MANIFEST_SCHEMA_RECORD_ID, type SchemaManifest, type SchemaManifestEntry } from './types.js'\n\n/** A resolver for a collection's DEK — the same shape as `Vault`'s internal `getDEK`. */\nexport type GetManifestDEK = (collectionName: string) => Promise<EnclaveKey>\n\n/**\n * A decrypted schema-manifest read paired with the wrapping envelope's `_v`\n * — the optimistic-concurrency token. Pass `version` back to\n * {@link saveSchemaManifest} (via `writeSchemaManifest`'s `expectedVersion`)\n * to make the write a strict CAS.\n */\nexport interface LoadedSchemaManifest {\n /** Wrapping envelope `_v`. */\n readonly version: number\n /** Decrypted schema manifest. */\n readonly manifest: SchemaManifest\n}\n\n/**\n * Read the `_manifest/schema` envelope together with its wrapping `_v`.\n * Returns `undefined` when no manifest has ever been written, when the\n * envelope fails to decrypt (wrong DEK), or when it doesn't parse as a\n * `v: 1, kind: 'schema'` manifest.\n */\nexport async function loadSchemaManifestEntry(\n store: NoydbStore,\n vault: string,\n getDEK: GetManifestDEK,\n): Promise<LoadedSchemaManifest | undefined> {\n const envelope = await store.get(vault, MANIFEST_COLLECTION, MANIFEST_SCHEMA_RECORD_ID)\n if (!envelope) return undefined\n const dek = await getDEK(MANIFEST_COLLECTION)\n try {\n const plaintext = await openEnvelopeJson({ collection: MANIFEST_COLLECTION, id: MANIFEST_SCHEMA_RECORD_ID }, envelope, dek)\n const parsed = JSON.parse(plaintext) as SchemaManifest\n if (parsed.v !== 1 || parsed.kind !== 'schema') return undefined\n return { version: envelope._v, manifest: parsed }\n } catch {\n return undefined\n }\n}\n\n/**\n * Encrypt and persist the schema manifest as a strict CAS write:\n * `expectedVersion` must match the stored envelope's `_v` (0 when no\n * envelope exists yet) or `store.put` throws `ConflictError` — surfaced by\n * `writer.ts`'s `writeSchemaManifest` as `ManifestConflictError` rather than\n * retried.\n */\nexport async function saveSchemaManifest(\n store: NoydbStore,\n vault: string,\n manifest: SchemaManifest,\n expectedVersion: number,\n getDEK: GetManifestDEK,\n // family#197 — returns the envelope it WROTE, so the ledger append can hash\n // exactly that rather than re-reading the record (where a concurrent writer's\n // newer envelope would be hashed against our version number).\n): Promise<EncryptedEnvelope> {\n const dek = await getDEK(MANIFEST_COLLECTION)\n const json = JSON.stringify(manifest)\n const env = await buildSealedRecordEnvelope(\n { collection: MANIFEST_COLLECTION, id: MANIFEST_SCHEMA_RECORD_ID, version: expectedVersion + 1 },\n (identity) => writeEnvelopeBody(identity, json, dek),\n {},\n )\n await store.put(vault, MANIFEST_COLLECTION, MANIFEST_SCHEMA_RECORD_ID, env, expectedVersion)\n return env\n}\n\n/**\n * `sha256Hex(canonicalJson(collections))` — the pod-wide content binding\n * over a schema manifest's per-collection index. Canonical JSON sorts\n * object keys at every depth, so the result is independent of the map's\n * key insertion order. Shared by the writer's tests and (#941 Task 3) the\n * derivation path, so the hash is computed identically everywhere.\n */\nexport async function computeAggregateHash(\n collections: Record<string, SchemaManifestEntry>,\n): Promise<string> {\n return sha256Hex(canonicalJson(collections))\n}\n","/**\n * Derive the pod-wide {@link SchemaManifest} from the per-collection\n * `_schemas/<collection>` records — the source of truth (#941 Task 3).\n *\n * The manifest is an INDEX, never a cache with independent state: every\n * field in a {@link SchemaManifestEntry} is a direct projection of the\n * matching `PersistedSchemaEnvelope` (`hash` → `contentHash`, `fieldIds` →\n * `fieldIds`, `generation` → `generation`, falling back to the live fence's\n * `currentSchemaVersion` for a legacy pre-#946 envelope that never got a\n * generation stamp). Re-running this function against the same stored state\n * always produces the same manifest — that's what makes round-trip identity\n * (AC #2: dump → restore → re-derive matches the original) hold for free,\n * with no special-cased restore logic.\n *\n * A collection whose `_schemas/<collection>` envelope decrypts successfully\n * but has no derivable content (`hash === null` — a stub envelope for a\n * non-Zod validator) is legitimately omitted from the index: there is no\n * content hash to bind.\n *\n * ## Scoped principals: \"cannot decrypt\" is NOT \"doesn't exist\"\n *\n * A `_schemas/<collection>` envelope is encrypted under **that data\n * collection's own DEK** — the same key its records use — NOT a shared\n * `_schemas`-wide key. In a team vault, a collection-scoped grantee (e.g.\n * `grant(..., { role: 'operator', permissions: { invoices: 'rw' } })`) holds\n * only the DEKs their `permissions` name, plus every system-prefixed (`_*`)\n * collection's DEK — `_manifest` included, by `grant()`'s \"propagate system\n * collections to every role\" rule (`keyring.ts`). So a member scoped to\n * `invoices` CAN decrypt `_manifest/schema` (the pod-wide index) but CANNOT\n * decrypt a sibling's `_schemas/customers` envelope — even though that\n * envelope is right there in `store.list(vault, SCHEMAS_COLLECTION)`.\n *\n * `lookupDEK` (the {@link LookupDEK} passed in) reflects this: it returns\n * `undefined` for a collection name whose DEK the caller does not hold —\n * deliberately NEVER minting a fresh one (see the module doc on\n * `LookupDEK` for why). This function distinguishes that case\n * (`undecodableCollections`) from \"the schema envelope legitimately has no\n * derivable content\" (`hash === null`) — the caller (`sync.ts`) MUST treat\n * an incomplete view differently: writing a manifest derived from a\n * partial view would silently drop every collection this principal can't\n * see. See `sync.ts`'s module doc for how the sync path handles this.\n *\n * @module\n */\n\nimport type { EnclaveKey } from '../../capsule/index.js'\nimport { loadFence } from '../schema-update/fence.js'\nimport { loadPersistedSchema, SCHEMAS_COLLECTION } from '../persisted-schemas/storage.js'\nimport { computeAggregateHash } from './storage.js'\nimport type { NoydbStore } from '../../kernel/types.js'\nimport type { SchemaManifest, SchemaManifestEntry } from './types.js'\n\n/**\n * A NON-MINTING DEK lookup: returns the collection's DEK if the caller\n * already holds it, `undefined` otherwise. Deliberately distinct from\n * `storage.ts`'s `GetManifestDEK` (which mints+persists a fresh DEK for an\n * absent collection — correct for a caller about to WRITE that collection,\n * e.g. `_manifest` itself). `deriveSchemaManifest` only ever READS sibling\n * collections it never created and has no business minting keys for — an\n * absent DEK here means \"not my collection to see,\" never \"new collection\n * that needs a key.\" Minting here would be worse than a no-op: it would\n * silently persist a garbage DEK into the caller's OWN `_keyring/<user>`\n * file (via `ensureCollectionDEK`'s `persistKeyring` side effect) that\n * still can't decrypt anything — see `sync.ts` / `with-pod/open.ts`'s\n * fix notes (#941 review).\n */\nexport type LookupDEK = (collectionName: string) => Promise<EnclaveKey | undefined>\n\nexport interface DeriveSchemaManifestResult {\n /** The derived manifest — an index over every collection this principal could decrypt. */\n readonly manifest: SchemaManifest\n /**\n * Names present in `_schemas` (per `store.list`) whose envelope this\n * principal could NOT decrypt — either no DEK held for that collection,\n * or the DEK held failed to decrypt/parse it (treated the same: the\n * caller cannot verify what's there, so it cannot safely be omitted or\n * asserted). Empty for a principal with full visibility (typically the\n * owner/admin/custodian). Non-empty means `manifest.collections` is\n * DEFINITELY INCOMPLETE relative to the pod's true collection set —\n * see `sync.ts` for why that must gate whether the manifest gets written.\n */\n readonly undecodableCollections: readonly string[]\n}\n\n/**\n * Read the fence generation + every `_schemas/<collection>` envelope this\n * principal can decrypt, and project them into a fresh {@link SchemaManifest}.\n * `lookupDEK` is called once per collection found under `_schemas` (never\n * mints — see {@link LookupDEK}). Names whose DEK isn't held, or whose\n * envelope fails to decrypt/parse despite holding a DEK, are reported via\n * `undecodableCollections` rather than silently dropped from the result.\n */\nexport async function deriveSchemaManifest(\n store: NoydbStore,\n vault: string,\n lookupDEK: LookupDEK,\n): Promise<DeriveSchemaManifestResult> {\n const fence = await loadFence(store, vault)\n const collectionNames = await store.list(vault, SCHEMAS_COLLECTION)\n\n const collections: Record<string, SchemaManifestEntry> = {}\n const undecodableCollections: string[] = []\n for (const name of collectionNames) {\n const dek = await lookupDEK(name)\n if (dek === undefined) {\n undecodableCollections.push(name) // present in _schemas, but not decodable by this principal\n continue\n }\n\n const payload = await loadPersistedSchema(store, vault, name, dek)\n if (!payload) {\n // Held a DEK but still couldn't decrypt/parse — cannot distinguish\n // \"wrong key after all\" from real corruption from here; treat as\n // undecodable (never silently drop) rather than \"no content.\"\n undecodableCollections.push(name)\n continue\n }\n if (payload.hash === null) continue // legitimately no derivable content (stub envelope)\n\n const entry: SchemaManifestEntry = {\n generation: payload.generation ?? fence.currentSchemaVersion,\n contentHash: payload.hash,\n }\n collections[name] = payload.fieldIds !== undefined ? { ...entry, fieldIds: payload.fieldIds } : entry\n }\n\n const aggregateHash = await computeAggregateHash(collections)\n const manifest: SchemaManifest = { v: 1, kind: 'schema', generation: fence.currentSchemaVersion, collections, aggregateHash }\n return { manifest, undecodableCollections }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmDO,IAAM,4BAA4B;;;ACAzC,eAAsB,wBACpB,OACA,OACA,QAC2C;AAC3C,QAAM,WAAW,MAAM,MAAM,IAAI,OAAO,qBAAqB,yBAAyB;AACtF,MAAI,CAAC,SAAU,QAAO;AACtB,QAAM,MAAM,MAAM,OAAO,mBAAmB;AAC5C,MAAI;AACF,UAAM,YAAY,MAAM,iBAAiB,EAAE,YAAY,qBAAqB,IAAI,0BAA0B,GAAG,UAAU,GAAG;AAC1H,UAAM,SAAS,KAAK,MAAM,SAAS;AACnC,QAAI,OAAO,MAAM,KAAK,OAAO,SAAS,SAAU,QAAO;AACvD,WAAO,EAAE,SAAS,SAAS,IAAI,UAAU,OAAO;AAAA,EAClD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AASA,eAAsB,mBACpB,OACA,OACA,UACA,iBACA,QAI4B;AAC5B,QAAM,MAAM,MAAM,OAAO,mBAAmB;AAC5C,QAAM,OAAO,KAAK,UAAU,QAAQ;AACpC,QAAM,MAAM,MAAM;AAAA,IAChB,EAAE,YAAY,qBAAqB,IAAI,2BAA2B,SAAS,kBAAkB,EAAE;AAAA,IAC/F,CAAC,aAAa,kBAAkB,UAAU,MAAM,GAAG;AAAA,IACnD,CAAC;AAAA,EACH;AACA,QAAM,MAAM,IAAI,OAAO,qBAAqB,2BAA2B,KAAK,eAAe;AAC3F,SAAO;AACT;AASA,eAAsB,qBACpB,aACiB;AACjB,SAAO,UAAU,cAAc,WAAW,CAAC;AAC7C;;;AChBA,eAAsB,qBACpB,OACA,OACA,WACqC;AACrC,QAAM,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC1C,QAAM,kBAAkB,MAAM,MAAM,KAAK,OAAO,kBAAkB;AAElE,QAAM,cAAmD,CAAC;AAC1D,QAAM,yBAAmC,CAAC;AAC1C,aAAW,QAAQ,iBAAiB;AAClC,UAAM,MAAM,MAAM,UAAU,IAAI;AAChC,QAAI,QAAQ,QAAW;AACrB,6BAAuB,KAAK,IAAI;AAChC;AAAA,IACF;AAEA,UAAM,UAAU,MAAM,oBAAoB,OAAO,OAAO,MAAM,GAAG;AACjE,QAAI,CAAC,SAAS;AAIZ,6BAAuB,KAAK,IAAI;AAChC;AAAA,IACF;AACA,QAAI,QAAQ,SAAS,KAAM;AAE3B,UAAM,QAA6B;AAAA,MACjC,YAAY,QAAQ,cAAc,MAAM;AAAA,MACxC,aAAa,QAAQ;AAAA,IACvB;AACA,gBAAY,IAAI,IAAI,QAAQ,aAAa,SAAY,EAAE,GAAG,OAAO,UAAU,QAAQ,SAAS,IAAI;AAAA,EAClG;AAEA,QAAM,gBAAgB,MAAM,qBAAqB,WAAW;AAC5D,QAAM,WAA2B,EAAE,GAAG,GAAG,MAAM,UAAU,YAAY,MAAM,sBAAsB,aAAa,cAAc;AAC5H,SAAO,EAAE,UAAU,uBAAuB;AAC5C;","names":[]}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
buildRecordEnvelope,
|
|
7
7
|
encrypt,
|
|
8
8
|
openEnvelopeJson
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-EFINFZIF.js";
|
|
10
10
|
|
|
11
11
|
// src/with-audit/consent/consent.ts
|
|
12
12
|
var CONSENT_AUDIT_COLLECTION = "_consent_audit";
|
|
@@ -62,4 +62,4 @@ export {
|
|
|
62
62
|
writeConsentEntry,
|
|
63
63
|
loadConsentEntries
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
65
|
+
//# sourceMappingURL=chunk-N5S2BCW3.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
NonAdditiveSchemaChangeError,
|
|
3
3
|
SchemaLockedError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ISIXU45J.js";
|
|
5
5
|
|
|
6
6
|
// src/with-shape/schema-update/strategies.ts
|
|
7
7
|
function blindUpdate() {
|
|
@@ -62,4 +62,4 @@ export {
|
|
|
62
62
|
lockSchema,
|
|
63
63
|
coordinatedCutover
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
65
|
+
//# sourceMappingURL=chunk-NIZH2TYZ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UnsafePatternError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ISIXU45J.js";
|
|
4
4
|
|
|
5
5
|
// src/kernel/query/predicate.ts
|
|
6
6
|
function readPath(record, path) {
|
|
@@ -272,4 +272,4 @@ export {
|
|
|
272
272
|
evaluateClause,
|
|
273
273
|
hasFnClause
|
|
274
274
|
};
|
|
275
|
-
//# sourceMappingURL=chunk-
|
|
275
|
+
//# sourceMappingURL=chunk-NLDBQHDV.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
grant,
|
|
3
3
|
revoke
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UXH4AKH3.js";
|
|
5
5
|
import {
|
|
6
6
|
CustodyNotEnabledError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ISIXU45J.js";
|
|
8
8
|
|
|
9
9
|
// src/with-party/custody/active.ts
|
|
10
10
|
function withCustody() {
|
|
@@ -16,7 +16,7 @@ function withCustody() {
|
|
|
16
16
|
return host._revokeCustodianImpl(revoke, vault, options, factors);
|
|
17
17
|
},
|
|
18
18
|
async liberate(vault, opts) {
|
|
19
|
-
const { liberateVault } = await import("./liberate-
|
|
19
|
+
const { liberateVault } = await import("./liberate-7KHXCLNJ.js");
|
|
20
20
|
return liberateVault(vault, opts);
|
|
21
21
|
}
|
|
22
22
|
};
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
withCustody,
|
|
75
75
|
CustodyApi
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-NQQ4MOPC.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
signBytes,
|
|
3
3
|
verifyBytes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EFINFZIF.js";
|
|
5
5
|
|
|
6
6
|
// src/with-audit/attestation/scheme.ts
|
|
7
7
|
var ENCLAVE_SCHEME = { sign: signBytes, verify: verifyBytes };
|
|
@@ -9,4 +9,4 @@ var ENCLAVE_SCHEME = { sign: signBytes, verify: verifyBytes };
|
|
|
9
9
|
export {
|
|
10
10
|
ENCLAVE_SCHEME
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=chunk-
|
|
12
|
+
//# sourceMappingURL=chunk-NUBI6PYH.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
installViaBinder
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZG7DBIVX.js";
|
|
4
4
|
import {
|
|
5
5
|
SealedHandle
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CR5UPYIJ.js";
|
|
7
7
|
import {
|
|
8
8
|
ClassifiedConfigError,
|
|
9
9
|
ClassifiedNotEnabledError
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ISIXU45J.js";
|
|
11
11
|
|
|
12
12
|
// src/via/classified/descriptor.ts
|
|
13
13
|
function isClassifiedFieldSpec(x) {
|
|
@@ -270,4 +270,4 @@ export {
|
|
|
270
270
|
enforceClassifiedWrite,
|
|
271
271
|
NO_CLASSIFIED
|
|
272
272
|
};
|
|
273
|
-
//# sourceMappingURL=chunk-
|
|
273
|
+
//# sourceMappingURL=chunk-NYEXUZDW.js.map
|