@noy-db/hub 0.9.0-pre.0 → 0.9.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 +39 -0
- package/dist/api-H4B7ZQXP.js +18 -0
- package/dist/as/index.js +10 -10
- package/dist/at/index.js +8 -8
- package/dist/attestation/index.js +18 -18
- package/dist/{backup-7RKNZMQO.js → backup-E3GBMNDA.js} +92 -31
- package/dist/backup-E3GBMNDA.js.map +1 -0
- package/dist/blobs/index.js +12 -12
- package/dist/broker/index.js +13 -13
- package/dist/by/index.js +2 -2
- package/dist/capsule/contract.js +6 -6
- package/dist/capsule/enclave-aes/crypto.d.ts +18 -0
- package/dist/capsule/enclave-aes/index.d.ts +2 -2
- package/dist/capsule/enclave-aes/index.js +14 -8
- package/dist/capsule/enclave-aes/index.js.map +1 -1
- package/dist/capsule/index.d.ts +1 -1
- package/dist/{capsule-57BDK7LG.js → capsule-YQKQZPH7.js} +14 -8
- package/dist/cargo/index.js +35 -35
- package/dist/{chunk-AJFPAHMW.js → chunk-27NCEPKM.js} +3 -3
- package/dist/{chunk-PGC35KXE.js → chunk-2IASHJPS.js} +2 -2
- package/dist/{chunk-NYJBYVBG.js → chunk-2ODEFG6K.js} +4 -4
- package/dist/{chunk-7BMOS4JQ.js → chunk-2QH3I7QC.js} +11 -11
- package/dist/{chunk-VSUQI5Q6.js → chunk-2RH5SEY7.js} +16 -2
- package/dist/chunk-2RH5SEY7.js.map +1 -0
- package/dist/{chunk-IVMFIKNA.js → chunk-2T2TGRWE.js} +6 -6
- package/dist/{chunk-G66YXUTY.js → chunk-35CNOVQE.js} +3 -3
- package/dist/{chunk-OJU67C23.js → chunk-3EXQXOQ2.js} +4 -4
- package/dist/{chunk-BJH77UY2.js → chunk-4KYKRYRT.js} +2 -2
- package/dist/{chunk-RDOEOPOI.js → chunk-4N4OIVK3.js} +5 -5
- package/dist/{chunk-WHOKGHJ3.js → chunk-4WLI37WK.js} +7 -7
- package/dist/{chunk-RNACRT5H.js → chunk-52ZFNK46.js} +2 -2
- package/dist/{chunk-CB4467G3.js → chunk-5A3HOTP5.js} +33 -7
- package/dist/chunk-5A3HOTP5.js.map +1 -0
- package/dist/{chunk-QDHHHI5Q.js → chunk-5SMCBPJ2.js} +5 -5
- package/dist/{chunk-EMAWOGVH.js → chunk-654RE5YC.js} +3 -3
- package/dist/{chunk-FZXRLNJO.js → chunk-6BEBWHNL.js} +3 -3
- package/dist/{chunk-EUD3HQM4.js → chunk-6WEPFEMJ.js} +4 -4
- package/dist/{chunk-YFFMPZPY.js → chunk-6WIFF46H.js} +2 -2
- package/dist/{chunk-ZVSKSUGI.js → chunk-7C7OF26T.js} +5 -5
- package/dist/{chunk-QXJXG7DN.js → chunk-7IV7GVOS.js} +5 -5
- package/dist/{chunk-MQ7YWBQ5.js → chunk-7JRLCP2J.js} +2 -2
- package/dist/{chunk-QSHATAXJ.js → chunk-7ONMS7QI.js} +2 -2
- package/dist/{chunk-JBMMWYOH.js → chunk-7UHLO4ZN.js} +35 -2
- package/dist/chunk-7UHLO4ZN.js.map +1 -0
- package/dist/{chunk-6WS35E6X.js → chunk-A52BK5AY.js} +2 -2
- package/dist/{chunk-GOJQ5DZA.js → chunk-AI35LNWQ.js} +4 -4
- package/dist/chunk-AI35LNWQ.js.map +1 -0
- package/dist/{chunk-XXQ5XIYY.js → chunk-AMSSAOOB.js} +2 -2
- package/dist/{chunk-3V6LZHUO.js → chunk-AYOQZJDB.js} +2 -2
- package/dist/{chunk-DL6BZKP3.js → chunk-B3B6HV5S.js} +2 -2
- package/dist/{chunk-5XONHAFD.js → chunk-B6EWMGFX.js} +2 -2
- package/dist/{chunk-6Y5E4SJU.js → chunk-BMAXBTYH.js} +5 -5
- package/dist/{chunk-LGGIFKJP.js → chunk-BNYDOF2Q.js} +4 -4
- package/dist/{chunk-XXNWU5QZ.js → chunk-BQJ5ORU5.js} +2 -2
- package/dist/{chunk-Z3ZXVB2Y.js → chunk-BSEPI3HD.js} +12 -12
- package/dist/chunk-BSEPI3HD.js.map +1 -0
- package/dist/{chunk-BYHCKX73.js → chunk-CLOSXHR4.js} +3 -3
- package/dist/{chunk-5HNW4ZTA.js → chunk-CSAN22QG.js} +6 -6
- package/dist/{chunk-TZYTMZZY.js → chunk-DL4GCSTS.js} +10 -10
- package/dist/{chunk-EA4VDI5D.js → chunk-DYIR6RC3.js} +4 -4
- package/dist/{chunk-PUBI455O.js → chunk-EPPAEGH5.js} +2 -2
- package/dist/{chunk-2A56DSRI.js → chunk-EQ6C2ZPT.js} +17 -51
- package/dist/chunk-EQ6C2ZPT.js.map +1 -0
- package/dist/{chunk-BNFNQNEP.js → chunk-F7X7MPK4.js} +2 -2
- package/dist/{chunk-SNM7LSYG.js → chunk-FUHUGKDN.js} +4 -4
- package/dist/{chunk-72XBVN4J.js → chunk-FVKQ5QUC.js} +2 -2
- package/dist/chunk-FVKQ5QUC.js.map +1 -0
- package/dist/{chunk-D4V5JJAK.js → chunk-GHMINSER.js} +4 -4
- package/dist/{chunk-APFFJN5T.js → chunk-GLSCL74M.js} +31 -34
- package/dist/chunk-GLSCL74M.js.map +1 -0
- package/dist/{chunk-XKBTJGFP.js → chunk-GU6QXHPZ.js} +3 -3
- package/dist/chunk-GU6QXHPZ.js.map +1 -0
- package/dist/{chunk-QGFEBNHO.js → chunk-GZISWBCJ.js} +4 -4
- package/dist/{chunk-OM3SEDI4.js → chunk-HTRLQ4ZZ.js} +4 -4
- package/dist/{chunk-SWXLZ4HX.js → chunk-ICHHNI5E.js} +8 -8
- package/dist/{chunk-K673OO6B.js → chunk-ID4ZBC3X.js} +4 -4
- package/dist/{chunk-H3YM66EI.js → chunk-IF2M43G4.js} +2 -2
- package/dist/{chunk-QGSNJD3B.js → chunk-IFUYLIEY.js} +2 -2
- package/dist/{chunk-D5A3GCZ4.js → chunk-IPF5ORDI.js} +3 -3
- package/dist/{delegation-ONLM4JFI.js → chunk-JQMEXCUZ.js} +59 -16
- package/dist/chunk-JQMEXCUZ.js.map +1 -0
- package/dist/{chunk-TFWFPZRU.js → chunk-K5JNK63R.js} +11 -11
- package/dist/{chunk-TFWFPZRU.js.map → chunk-K5JNK63R.js.map} +1 -1
- package/dist/{chunk-BVF3SXD7.js → chunk-KBIS64X4.js} +5 -5
- package/dist/chunk-L4UL4IAR.js +55 -0
- package/dist/chunk-L4UL4IAR.js.map +1 -0
- package/dist/{chunk-RIZTZJX6.js → chunk-LJ744WXU.js} +2 -2
- package/dist/{chunk-XITHENBI.js → chunk-LMC5L3MM.js} +7 -7
- package/dist/{chunk-XITHENBI.js.map → chunk-LMC5L3MM.js.map} +1 -1
- package/dist/{chunk-L5A3KR7R.js → chunk-LUQBG637.js} +3 -3
- package/dist/{chunk-6QLCS7ET.js → chunk-LZN6DTFI.js} +2 -2
- package/dist/{chunk-NIXRB5BP.js → chunk-MMWX5OT5.js} +2 -2
- package/dist/{chunk-JA25QG5M.js → chunk-N6EWQ5VB.js} +622 -119
- package/dist/chunk-N6EWQ5VB.js.map +1 -0
- package/dist/{chunk-UOZOWN73.js → chunk-ND6S2DKC.js} +2 -2
- package/dist/{chunk-WFWFXDNS.js → chunk-NHEKQWFI.js} +2 -2
- package/dist/{chunk-2ZFD2UJC.js → chunk-NIUHKKMM.js} +9 -9
- package/dist/{chunk-XA34THLF.js → chunk-NK4LGBGQ.js} +4 -4
- package/dist/{chunk-JSWKVZCR.js → chunk-NUZ7ROUZ.js} +2 -2
- package/dist/{chunk-DHU2AQ6T.js → chunk-O3NGOHXQ.js} +2 -2
- package/dist/{chunk-ZBUAX4EF.js → chunk-O6VOR4NH.js} +2 -2
- package/dist/{chunk-JZ4EDEIP.js → chunk-ODBOHPZU.js} +3 -3
- package/dist/{chunk-5UUJE4FP.js → chunk-OK44MD3C.js} +2 -2
- package/dist/{chunk-ECGXA4LT.js → chunk-OR3OHKU6.js} +2 -2
- package/dist/{chunk-ZWF3EWZA.js → chunk-P6FATPXQ.js} +2 -2
- package/dist/{chunk-PCYPXLEX.js → chunk-PBEHTFUG.js} +6 -6
- package/dist/{chunk-7CT6SX4M.js → chunk-PFHDQY5L.js} +3 -3
- package/dist/{chunk-PTJY5R3O.js → chunk-PIO6NW7O.js} +2 -2
- package/dist/{chunk-TMIJAR2X.js → chunk-PREYKC76.js} +3 -3
- package/dist/{chunk-ZHQJAV6D.js → chunk-PU5ZEV65.js} +2 -2
- package/dist/{chunk-UNSQZSZP.js → chunk-PWAMX5KU.js} +2 -2
- package/dist/{chunk-GETUTTZU.js → chunk-PZN76MMV.js} +4 -4
- package/dist/{chunk-ABU6A4Z5.js → chunk-Q4DBU5RM.js} +2 -2
- package/dist/{chunk-2WJKJZSO.js → chunk-QHG7GQKM.js} +2 -2
- package/dist/{chunk-UAKY6E4N.js → chunk-QNOWNCZS.js} +2 -2
- package/dist/{chunk-JPSL5GIZ.js → chunk-QQLXKDGC.js} +3 -3
- package/dist/{chunk-45VHWE4C.js → chunk-QVUMKG3Z.js} +271 -69
- package/dist/chunk-QVUMKG3Z.js.map +1 -0
- package/dist/{chunk-OK57EATL.js → chunk-R4GLRJ55.js} +2 -2
- package/dist/{chunk-B65CC6Z6.js → chunk-RF5WDM25.js} +2 -2
- package/dist/{chunk-G46JSSVX.js → chunk-RKBCUP5D.js} +7 -7
- package/dist/{chunk-GCUMOKTN.js → chunk-S2ORTQGS.js} +3 -3
- package/dist/{chunk-MRJDLXI3.js → chunk-SVXFCCSX.js} +8 -8
- package/dist/{chunk-BUE7R3B5.js → chunk-SXPLIRQH.js} +2 -2
- package/dist/{chunk-5LMCVBMY.js → chunk-T5EXREMW.js} +5 -5
- package/dist/{chunk-PT2YCQVK.js → chunk-TBVDI3LY.js} +4 -4
- package/dist/{chunk-BMHQHH7Q.js → chunk-TLIFNRU5.js} +2 -2
- package/dist/{chunk-YKGJ44Z7.js → chunk-TU6ZJTYT.js} +3 -3
- package/dist/{chunk-FSQNGPHH.js → chunk-U277K5GR.js} +612 -175
- package/dist/chunk-U277K5GR.js.map +1 -0
- package/dist/{chunk-55P6OBB7.js → chunk-U43RSPPX.js} +2 -2
- package/dist/{chunk-K7RW7FI4.js → chunk-UADW5NOU.js} +5 -5
- package/dist/{chunk-GRS2HIV6.js → chunk-UMV5GBTJ.js} +2 -2
- package/dist/{chunk-4UIP3QNW.js → chunk-UNAMWK2Q.js} +2 -2
- package/dist/{chunk-J4KAPKBJ.js → chunk-UORWAG7K.js} +2 -2
- package/dist/{chunk-V55JASXO.js → chunk-UQRKAM2R.js} +3 -3
- package/dist/{chunk-2ELOCEXE.js → chunk-URGHKZPL.js} +1 -1
- package/dist/chunk-URGHKZPL.js.map +1 -0
- package/dist/{chunk-ZMVSKYTJ.js → chunk-VLRY2UH4.js} +10 -10
- package/dist/{chunk-SPPOUJLN.js → chunk-VZFTON37.js} +2 -2
- package/dist/{chunk-CAD7N6HQ.js → chunk-WIUH6EJ7.js} +10 -10
- package/dist/chunk-WIUH6EJ7.js.map +1 -0
- package/dist/{chunk-YQFBH5ZJ.js → chunk-WQUIJPN4.js} +3 -3
- package/dist/{chunk-4J3MNVVX.js → chunk-WRLWEYHY.js} +7 -1
- package/dist/{chunk-4J3MNVVX.js.map → chunk-WRLWEYHY.js.map} +1 -1
- package/dist/{chunk-NZULV7LK.js → chunk-WVQDY3UM.js} +4 -4
- package/dist/{chunk-3Y5JLSXS.js → chunk-X5RGG3ZW.js} +2 -2
- package/dist/{chunk-PFCTSXHU.js → chunk-X6Z2SIRF.js} +2 -2
- package/dist/{chunk-UHFGK6YA.js → chunk-XQGKS4OW.js} +3 -3
- package/dist/{chunk-L2F3CFCH.js → chunk-Y22JWHCP.js} +4 -4
- package/dist/{chunk-C53ER7AG.js → chunk-YVA6UPRN.js} +2 -2
- package/dist/{chunk-226V6XXJ.js → chunk-Z2KP6PNF.js} +6 -6
- package/dist/{chunk-G5EDYVSE.js → chunk-ZK2WT532.js} +5 -5
- package/dist/{chunk-SFCD6OU7.js → chunk-ZNVBCKMV.js} +2 -2
- package/dist/{chunk-BU2ABHFW.js → chunk-ZOFNZLAA.js} +4 -4
- package/dist/{chunk-X2RP4TO5.js → chunk-ZVJKHGE5.js} +7 -7
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-KHDOYIJB.js → classified-marker-7HXDMYHI.js} +3 -3
- package/dist/collection-facade-V63BEBGU.js +41 -0
- package/dist/{computed-XMFTHAXV.js → computed-LZLSYOPG.js} +3 -3
- package/dist/consent/index.js +8 -8
- package/dist/cover/index.js +8 -8
- package/dist/custody/index.js +12 -12
- package/dist/{dead-filter-CXV5NS67.js → dead-filter-PZIJ4F4G.js} +10 -10
- package/dist/debug/index.js +7 -7
- package/dist/delegation-7SSGIETH.js +26 -0
- package/dist/derivations/index.js +22 -22
- package/dist/derive-IMI3BMDS.js +20 -0
- package/dist/directory/index.js +9 -9
- package/dist/{dispatch-2MQFMEGY.js → dispatch-4BUYPWMJ.js} +19 -19
- package/dist/{dispatch-OFDA4WQV.js → dispatch-KOPDDPEQ.js} +5 -5
- package/dist/executor-7SY3M6TZ.js +8 -0
- package/dist/executor-SNHW4ELF.js +35 -0
- package/dist/executor-Z3IKK7G3.js +8 -0
- package/dist/export-accessible-O7DIVFUO.js +22 -0
- package/dist/extract-partition-ELZEJKXM.js +35 -0
- package/dist/{fanout-sidecar-BO67PCPO.js → fanout-sidecar-FYDRL7F3.js} +8 -8
- package/dist/find-KWB2RYWJ.js +10 -0
- package/dist/forget/index.js +8 -8
- package/dist/guards/index.js +4 -4
- package/dist/history/index.js +15 -13
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +13 -13
- package/dist/index.d.ts +3 -2
- package/dist/index.js +111 -107
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +5 -5
- package/dist/introspection/index.js +10 -10
- package/dist/issue-5ZHXK4HJ.js +19 -0
- package/dist/kernel/collection.d.ts +85 -6
- package/dist/kernel/constants.d.ts +7 -0
- package/dist/kernel/errors.d.ts +9 -0
- package/dist/kernel/merge-authority.d.ts +5 -1
- package/dist/kernel/noydb.d.ts +116 -21
- package/dist/kernel/rejection-seal.d.ts +13 -0
- package/dist/kernel/sync-wiring.d.ts +55 -0
- package/dist/kernel/types.d.ts +366 -8
- package/dist/kernel/vault.d.ts +39 -5
- package/dist/{ledger-MSJGWKGW.js → ledger-UFJCB6T5.js} +10 -10
- package/dist/liberate-OEOSNNFH.js +25 -0
- package/dist/{link-set-QXXSPPHL.js → link-set-KMUBFN2L.js} +10 -10
- package/dist/{managed-secret-VSK7ANQI.js → managed-secret-H5WYSJ46.js} +9 -9
- package/dist/materialized-views/index.js +25 -25
- package/dist/{migrate-cek-GEBFYBDC.js → migrate-cek-SPESQAAO.js} +2 -2
- package/dist/money/index.js +5 -5
- package/dist/noydb-QDZ4QIKO.js +100 -0
- package/dist/on/index.js +12 -12
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +11 -11
- package/dist/pod/index.js +66 -64
- package/dist/{pod-handle-YE7CT66T.js → pod-handle-GJLCOUGK.js} +8 -8
- package/dist/policy/index.js +9 -9
- package/dist/port/at/index.d.ts +1 -1
- package/dist/port/by/index.d.ts +1 -1
- package/dist/port/on/index.d.ts +1 -1
- package/dist/port/with/admission-authority.d.ts +34 -0
- package/dist/port/with/broker-strategy.d.ts +10 -0
- package/dist/port/with/rejection-courier.d.ts +37 -0
- package/dist/port/with/restore-host.d.ts +33 -0
- package/dist/port/with/service-bus.d.ts +18 -0
- package/dist/port/with/team-strategy.d.ts +2 -2
- package/dist/port/with/write-hooks.d.ts +2 -0
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-QC5TEAW3.js → post-register-2AC2STHC.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-PIORIMMR.js +30 -0
- package/dist/registry-BIMICFUH.js +23 -0
- package/dist/registry-JGWLW53D.js +35 -0
- package/dist/registry-SELCBYEQ.js +8 -0
- package/dist/registry-W327UNYH.js +8 -0
- package/dist/request-withdrawal-K3SXXODI.js +28 -0
- package/dist/restore-to-OOPKLAPU.js +66 -0
- package/dist/restore-to-OOPKLAPU.js.map +1 -0
- package/dist/{reveal-YQTRNQFH.js → reveal-UAPBG743.js} +7 -7
- package/dist/revoke-6AFVXTWF.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/schema-update/index.js +2 -2
- package/dist/sealed-record/index.js +11 -11
- package/dist/search/index.js +4 -4
- package/dist/{seed-JMQTRKRE.js → seed-BVYDPVIW.js} +33 -18
- package/dist/seed-BVYDPVIW.js.map +1 -0
- package/dist/sequence/index.js +8 -8
- package/dist/session/index.js +8 -8
- package/dist/shadow/index.js +2 -2
- package/dist/signer-TW5MAQJP.js +23 -0
- package/dist/snapshots/index.js +9 -9
- package/dist/{stale-SKV33PBU.js → stale-CROGJBIJ.js} +9 -9
- package/dist/storage-SO2L2Z5J.js +21 -0
- package/dist/{store-coordination-provider-Z6HKPOGM.js → store-coordination-provider-2YD2PTTP.js} +9 -9
- package/dist/sync/index.js +16 -16
- package/dist/sync/index.js.map +1 -1
- package/dist/team/index.js +15 -15
- package/dist/tiers/index.js +10 -10
- package/dist/to/index.js +2 -2
- package/dist/transactions/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/vault-head/index.js +7 -7
- package/dist/{verify-KWQIWLGH.js → verify-QWO5UKD6.js} +7 -7
- package/dist/walk-3KEOL7BY.js +20 -0
- package/dist/with-audit/guards/types.d.ts +2 -0
- package/dist/with-audit/tiers/index.d.ts +5 -5
- package/dist/with-commit/history/history.d.ts +16 -0
- package/dist/with-commit/history/restore-to.d.ts +40 -0
- package/dist/with-party/broker/seed.d.ts +4 -0
- package/dist/with-party/custody/strategy.d.ts +2 -2
- package/dist/with-party/team/delegation.d.ts +41 -11
- package/dist/with-party/team/index.d.ts +2 -0
- package/dist/with-party/team/keyring.d.ts +133 -3
- package/dist/with-party/team/managed-secret.d.ts +1 -1
- package/dist/with-party/team/noydb-facade.d.ts +14 -2
- package/dist/with-party/team/roster-tag.d.ts +1 -1
- package/dist/with-pod/backup.d.ts +9 -17
- package/dist/with-sync/active.d.ts +28 -1
- package/dist/with-sync/engine.d.ts +59 -2
- package/dist/with-sync/index.d.ts +1 -0
- package/dist/with-sync/reserved-mirror.d.ts +27 -4
- package/dist/with-sync/strategy.d.ts +2 -0
- package/dist/withdraw-accessible-OZU525ND.js +25 -0
- package/dist/withdraw-accessible-OZU525ND.js.map +1 -0
- package/package.json +3 -3
- package/dist/api-MSJXVYQG.js +0 -18
- package/dist/backup-7RKNZMQO.js.map +0 -1
- package/dist/chunk-2A56DSRI.js.map +0 -1
- package/dist/chunk-2ELOCEXE.js.map +0 -1
- package/dist/chunk-45VHWE4C.js.map +0 -1
- package/dist/chunk-72XBVN4J.js.map +0 -1
- package/dist/chunk-APFFJN5T.js.map +0 -1
- package/dist/chunk-CAD7N6HQ.js.map +0 -1
- package/dist/chunk-CB4467G3.js.map +0 -1
- package/dist/chunk-FSQNGPHH.js.map +0 -1
- package/dist/chunk-GOJQ5DZA.js.map +0 -1
- package/dist/chunk-JA25QG5M.js.map +0 -1
- package/dist/chunk-JBMMWYOH.js.map +0 -1
- package/dist/chunk-VSUQI5Q6.js.map +0 -1
- package/dist/chunk-XKBTJGFP.js.map +0 -1
- package/dist/chunk-Z3ZXVB2Y.js.map +0 -1
- package/dist/collection-facade-LZIF7GWD.js +0 -41
- package/dist/delegation-ONLM4JFI.js.map +0 -1
- package/dist/derive-3YSIS36W.js +0 -20
- package/dist/executor-E6YDJ7YA.js +0 -8
- package/dist/executor-NJX3YQQ4.js +0 -35
- package/dist/executor-WWM3DD4P.js +0 -8
- package/dist/export-accessible-RLHU5G4W.js +0 -22
- package/dist/extract-partition-QII2EDCS.js +0 -35
- package/dist/find-6M7GYDUZ.js +0 -10
- package/dist/issue-LPEEEMPP.js +0 -19
- package/dist/liberate-LEKDYKTC.js +0 -25
- package/dist/noydb-F2AUF6KL.js +0 -98
- package/dist/register-SN72QALV.js +0 -30
- package/dist/registry-253FF7C6.js +0 -35
- package/dist/registry-3AZWQTDT.js +0 -23
- package/dist/registry-7UEBTHWG.js +0 -8
- package/dist/registry-IVJ67NFQ.js +0 -8
- package/dist/request-withdrawal-UKVJZKX2.js +0 -28
- package/dist/revoke-G2KXJQA5.js +0 -24
- package/dist/seed-JMQTRKRE.js.map +0 -1
- package/dist/signer-IUIYR3CX.js +0 -23
- package/dist/storage-NPBYP2SM.js +0 -21
- package/dist/walk-F4OLXI5H.js +0 -20
- package/dist/withdraw-accessible-ZKPLZ66E.js +0 -25
- /package/dist/{api-MSJXVYQG.js.map → api-H4B7ZQXP.js.map} +0 -0
- /package/dist/{capsule-57BDK7LG.js.map → capsule-YQKQZPH7.js.map} +0 -0
- /package/dist/{chunk-AJFPAHMW.js.map → chunk-27NCEPKM.js.map} +0 -0
- /package/dist/{chunk-PGC35KXE.js.map → chunk-2IASHJPS.js.map} +0 -0
- /package/dist/{chunk-NYJBYVBG.js.map → chunk-2ODEFG6K.js.map} +0 -0
- /package/dist/{chunk-7BMOS4JQ.js.map → chunk-2QH3I7QC.js.map} +0 -0
- /package/dist/{chunk-IVMFIKNA.js.map → chunk-2T2TGRWE.js.map} +0 -0
- /package/dist/{chunk-G66YXUTY.js.map → chunk-35CNOVQE.js.map} +0 -0
- /package/dist/{chunk-OJU67C23.js.map → chunk-3EXQXOQ2.js.map} +0 -0
- /package/dist/{chunk-BJH77UY2.js.map → chunk-4KYKRYRT.js.map} +0 -0
- /package/dist/{chunk-RDOEOPOI.js.map → chunk-4N4OIVK3.js.map} +0 -0
- /package/dist/{chunk-WHOKGHJ3.js.map → chunk-4WLI37WK.js.map} +0 -0
- /package/dist/{chunk-RNACRT5H.js.map → chunk-52ZFNK46.js.map} +0 -0
- /package/dist/{chunk-QDHHHI5Q.js.map → chunk-5SMCBPJ2.js.map} +0 -0
- /package/dist/{chunk-EMAWOGVH.js.map → chunk-654RE5YC.js.map} +0 -0
- /package/dist/{chunk-FZXRLNJO.js.map → chunk-6BEBWHNL.js.map} +0 -0
- /package/dist/{chunk-EUD3HQM4.js.map → chunk-6WEPFEMJ.js.map} +0 -0
- /package/dist/{chunk-YFFMPZPY.js.map → chunk-6WIFF46H.js.map} +0 -0
- /package/dist/{chunk-ZVSKSUGI.js.map → chunk-7C7OF26T.js.map} +0 -0
- /package/dist/{chunk-QXJXG7DN.js.map → chunk-7IV7GVOS.js.map} +0 -0
- /package/dist/{chunk-MQ7YWBQ5.js.map → chunk-7JRLCP2J.js.map} +0 -0
- /package/dist/{chunk-QSHATAXJ.js.map → chunk-7ONMS7QI.js.map} +0 -0
- /package/dist/{chunk-6WS35E6X.js.map → chunk-A52BK5AY.js.map} +0 -0
- /package/dist/{chunk-XXQ5XIYY.js.map → chunk-AMSSAOOB.js.map} +0 -0
- /package/dist/{chunk-3V6LZHUO.js.map → chunk-AYOQZJDB.js.map} +0 -0
- /package/dist/{chunk-DL6BZKP3.js.map → chunk-B3B6HV5S.js.map} +0 -0
- /package/dist/{chunk-5XONHAFD.js.map → chunk-B6EWMGFX.js.map} +0 -0
- /package/dist/{chunk-6Y5E4SJU.js.map → chunk-BMAXBTYH.js.map} +0 -0
- /package/dist/{chunk-LGGIFKJP.js.map → chunk-BNYDOF2Q.js.map} +0 -0
- /package/dist/{chunk-XXNWU5QZ.js.map → chunk-BQJ5ORU5.js.map} +0 -0
- /package/dist/{chunk-BYHCKX73.js.map → chunk-CLOSXHR4.js.map} +0 -0
- /package/dist/{chunk-5HNW4ZTA.js.map → chunk-CSAN22QG.js.map} +0 -0
- /package/dist/{chunk-TZYTMZZY.js.map → chunk-DL4GCSTS.js.map} +0 -0
- /package/dist/{chunk-EA4VDI5D.js.map → chunk-DYIR6RC3.js.map} +0 -0
- /package/dist/{chunk-PUBI455O.js.map → chunk-EPPAEGH5.js.map} +0 -0
- /package/dist/{chunk-BNFNQNEP.js.map → chunk-F7X7MPK4.js.map} +0 -0
- /package/dist/{chunk-SNM7LSYG.js.map → chunk-FUHUGKDN.js.map} +0 -0
- /package/dist/{chunk-D4V5JJAK.js.map → chunk-GHMINSER.js.map} +0 -0
- /package/dist/{chunk-QGFEBNHO.js.map → chunk-GZISWBCJ.js.map} +0 -0
- /package/dist/{chunk-OM3SEDI4.js.map → chunk-HTRLQ4ZZ.js.map} +0 -0
- /package/dist/{chunk-SWXLZ4HX.js.map → chunk-ICHHNI5E.js.map} +0 -0
- /package/dist/{chunk-K673OO6B.js.map → chunk-ID4ZBC3X.js.map} +0 -0
- /package/dist/{chunk-H3YM66EI.js.map → chunk-IF2M43G4.js.map} +0 -0
- /package/dist/{chunk-QGSNJD3B.js.map → chunk-IFUYLIEY.js.map} +0 -0
- /package/dist/{chunk-D5A3GCZ4.js.map → chunk-IPF5ORDI.js.map} +0 -0
- /package/dist/{chunk-BVF3SXD7.js.map → chunk-KBIS64X4.js.map} +0 -0
- /package/dist/{chunk-RIZTZJX6.js.map → chunk-LJ744WXU.js.map} +0 -0
- /package/dist/{chunk-L5A3KR7R.js.map → chunk-LUQBG637.js.map} +0 -0
- /package/dist/{chunk-6QLCS7ET.js.map → chunk-LZN6DTFI.js.map} +0 -0
- /package/dist/{chunk-NIXRB5BP.js.map → chunk-MMWX5OT5.js.map} +0 -0
- /package/dist/{chunk-UOZOWN73.js.map → chunk-ND6S2DKC.js.map} +0 -0
- /package/dist/{chunk-WFWFXDNS.js.map → chunk-NHEKQWFI.js.map} +0 -0
- /package/dist/{chunk-2ZFD2UJC.js.map → chunk-NIUHKKMM.js.map} +0 -0
- /package/dist/{chunk-XA34THLF.js.map → chunk-NK4LGBGQ.js.map} +0 -0
- /package/dist/{chunk-JSWKVZCR.js.map → chunk-NUZ7ROUZ.js.map} +0 -0
- /package/dist/{chunk-DHU2AQ6T.js.map → chunk-O3NGOHXQ.js.map} +0 -0
- /package/dist/{chunk-ZBUAX4EF.js.map → chunk-O6VOR4NH.js.map} +0 -0
- /package/dist/{chunk-JZ4EDEIP.js.map → chunk-ODBOHPZU.js.map} +0 -0
- /package/dist/{chunk-5UUJE4FP.js.map → chunk-OK44MD3C.js.map} +0 -0
- /package/dist/{chunk-ECGXA4LT.js.map → chunk-OR3OHKU6.js.map} +0 -0
- /package/dist/{chunk-ZWF3EWZA.js.map → chunk-P6FATPXQ.js.map} +0 -0
- /package/dist/{chunk-PCYPXLEX.js.map → chunk-PBEHTFUG.js.map} +0 -0
- /package/dist/{chunk-7CT6SX4M.js.map → chunk-PFHDQY5L.js.map} +0 -0
- /package/dist/{chunk-PTJY5R3O.js.map → chunk-PIO6NW7O.js.map} +0 -0
- /package/dist/{chunk-TMIJAR2X.js.map → chunk-PREYKC76.js.map} +0 -0
- /package/dist/{chunk-ZHQJAV6D.js.map → chunk-PU5ZEV65.js.map} +0 -0
- /package/dist/{chunk-UNSQZSZP.js.map → chunk-PWAMX5KU.js.map} +0 -0
- /package/dist/{chunk-GETUTTZU.js.map → chunk-PZN76MMV.js.map} +0 -0
- /package/dist/{chunk-ABU6A4Z5.js.map → chunk-Q4DBU5RM.js.map} +0 -0
- /package/dist/{chunk-2WJKJZSO.js.map → chunk-QHG7GQKM.js.map} +0 -0
- /package/dist/{chunk-UAKY6E4N.js.map → chunk-QNOWNCZS.js.map} +0 -0
- /package/dist/{chunk-JPSL5GIZ.js.map → chunk-QQLXKDGC.js.map} +0 -0
- /package/dist/{chunk-OK57EATL.js.map → chunk-R4GLRJ55.js.map} +0 -0
- /package/dist/{chunk-B65CC6Z6.js.map → chunk-RF5WDM25.js.map} +0 -0
- /package/dist/{chunk-G46JSSVX.js.map → chunk-RKBCUP5D.js.map} +0 -0
- /package/dist/{chunk-GCUMOKTN.js.map → chunk-S2ORTQGS.js.map} +0 -0
- /package/dist/{chunk-MRJDLXI3.js.map → chunk-SVXFCCSX.js.map} +0 -0
- /package/dist/{chunk-BUE7R3B5.js.map → chunk-SXPLIRQH.js.map} +0 -0
- /package/dist/{chunk-5LMCVBMY.js.map → chunk-T5EXREMW.js.map} +0 -0
- /package/dist/{chunk-PT2YCQVK.js.map → chunk-TBVDI3LY.js.map} +0 -0
- /package/dist/{chunk-BMHQHH7Q.js.map → chunk-TLIFNRU5.js.map} +0 -0
- /package/dist/{chunk-YKGJ44Z7.js.map → chunk-TU6ZJTYT.js.map} +0 -0
- /package/dist/{chunk-55P6OBB7.js.map → chunk-U43RSPPX.js.map} +0 -0
- /package/dist/{chunk-K7RW7FI4.js.map → chunk-UADW5NOU.js.map} +0 -0
- /package/dist/{chunk-GRS2HIV6.js.map → chunk-UMV5GBTJ.js.map} +0 -0
- /package/dist/{chunk-4UIP3QNW.js.map → chunk-UNAMWK2Q.js.map} +0 -0
- /package/dist/{chunk-J4KAPKBJ.js.map → chunk-UORWAG7K.js.map} +0 -0
- /package/dist/{chunk-V55JASXO.js.map → chunk-UQRKAM2R.js.map} +0 -0
- /package/dist/{chunk-ZMVSKYTJ.js.map → chunk-VLRY2UH4.js.map} +0 -0
- /package/dist/{chunk-SPPOUJLN.js.map → chunk-VZFTON37.js.map} +0 -0
- /package/dist/{chunk-YQFBH5ZJ.js.map → chunk-WQUIJPN4.js.map} +0 -0
- /package/dist/{chunk-NZULV7LK.js.map → chunk-WVQDY3UM.js.map} +0 -0
- /package/dist/{chunk-3Y5JLSXS.js.map → chunk-X5RGG3ZW.js.map} +0 -0
- /package/dist/{chunk-PFCTSXHU.js.map → chunk-X6Z2SIRF.js.map} +0 -0
- /package/dist/{chunk-UHFGK6YA.js.map → chunk-XQGKS4OW.js.map} +0 -0
- /package/dist/{chunk-L2F3CFCH.js.map → chunk-Y22JWHCP.js.map} +0 -0
- /package/dist/{chunk-C53ER7AG.js.map → chunk-YVA6UPRN.js.map} +0 -0
- /package/dist/{chunk-226V6XXJ.js.map → chunk-Z2KP6PNF.js.map} +0 -0
- /package/dist/{chunk-G5EDYVSE.js.map → chunk-ZK2WT532.js.map} +0 -0
- /package/dist/{chunk-SFCD6OU7.js.map → chunk-ZNVBCKMV.js.map} +0 -0
- /package/dist/{chunk-BU2ABHFW.js.map → chunk-ZOFNZLAA.js.map} +0 -0
- /package/dist/{chunk-X2RP4TO5.js.map → chunk-ZVJKHGE5.js.map} +0 -0
- /package/dist/{classified-marker-KHDOYIJB.js.map → classified-marker-7HXDMYHI.js.map} +0 -0
- /package/dist/{collection-facade-LZIF7GWD.js.map → collection-facade-V63BEBGU.js.map} +0 -0
- /package/dist/{computed-XMFTHAXV.js.map → computed-LZLSYOPG.js.map} +0 -0
- /package/dist/{dead-filter-CXV5NS67.js.map → dead-filter-PZIJ4F4G.js.map} +0 -0
- /package/dist/{derive-3YSIS36W.js.map → delegation-7SSGIETH.js.map} +0 -0
- /package/dist/{executor-E6YDJ7YA.js.map → derive-IMI3BMDS.js.map} +0 -0
- /package/dist/{dispatch-2MQFMEGY.js.map → dispatch-4BUYPWMJ.js.map} +0 -0
- /package/dist/{dispatch-OFDA4WQV.js.map → dispatch-KOPDDPEQ.js.map} +0 -0
- /package/dist/{executor-NJX3YQQ4.js.map → executor-7SY3M6TZ.js.map} +0 -0
- /package/dist/{executor-WWM3DD4P.js.map → executor-SNHW4ELF.js.map} +0 -0
- /package/dist/{export-accessible-RLHU5G4W.js.map → executor-Z3IKK7G3.js.map} +0 -0
- /package/dist/{extract-partition-QII2EDCS.js.map → export-accessible-O7DIVFUO.js.map} +0 -0
- /package/dist/{find-6M7GYDUZ.js.map → extract-partition-ELZEJKXM.js.map} +0 -0
- /package/dist/{fanout-sidecar-BO67PCPO.js.map → fanout-sidecar-FYDRL7F3.js.map} +0 -0
- /package/dist/{issue-LPEEEMPP.js.map → find-KWB2RYWJ.js.map} +0 -0
- /package/dist/{ledger-MSJGWKGW.js.map → issue-5ZHXK4HJ.js.map} +0 -0
- /package/dist/{liberate-LEKDYKTC.js.map → ledger-UFJCB6T5.js.map} +0 -0
- /package/dist/{link-set-QXXSPPHL.js.map → liberate-OEOSNNFH.js.map} +0 -0
- /package/dist/{managed-secret-VSK7ANQI.js.map → link-set-KMUBFN2L.js.map} +0 -0
- /package/dist/{noydb-F2AUF6KL.js.map → managed-secret-H5WYSJ46.js.map} +0 -0
- /package/dist/{migrate-cek-GEBFYBDC.js.map → migrate-cek-SPESQAAO.js.map} +0 -0
- /package/dist/{register-SN72QALV.js.map → noydb-QDZ4QIKO.js.map} +0 -0
- /package/dist/{pod-handle-YE7CT66T.js.map → pod-handle-GJLCOUGK.js.map} +0 -0
- /package/dist/{post-register-QC5TEAW3.js.map → post-register-2AC2STHC.js.map} +0 -0
- /package/dist/{registry-253FF7C6.js.map → register-PIORIMMR.js.map} +0 -0
- /package/dist/{registry-3AZWQTDT.js.map → registry-BIMICFUH.js.map} +0 -0
- /package/dist/{registry-7UEBTHWG.js.map → registry-JGWLW53D.js.map} +0 -0
- /package/dist/{registry-IVJ67NFQ.js.map → registry-SELCBYEQ.js.map} +0 -0
- /package/dist/{request-withdrawal-UKVJZKX2.js.map → registry-W327UNYH.js.map} +0 -0
- /package/dist/{revoke-G2KXJQA5.js.map → request-withdrawal-K3SXXODI.js.map} +0 -0
- /package/dist/{reveal-YQTRNQFH.js.map → reveal-UAPBG743.js.map} +0 -0
- /package/dist/{signer-IUIYR3CX.js.map → revoke-6AFVXTWF.js.map} +0 -0
- /package/dist/{stale-SKV33PBU.js.map → signer-TW5MAQJP.js.map} +0 -0
- /package/dist/{storage-NPBYP2SM.js.map → stale-CROGJBIJ.js.map} +0 -0
- /package/dist/{walk-F4OLXI5H.js.map → storage-SO2L2Z5J.js.map} +0 -0
- /package/dist/{store-coordination-provider-Z6HKPOGM.js.map → store-coordination-provider-2YD2PTTP.js.map} +0 -0
- /package/dist/{verify-KWQIWLGH.js.map → verify-QWO5UKD6.js.map} +0 -0
- /package/dist/{withdraw-accessible-ZKPLZ66E.js.map → walk-3KEOL7BY.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-2ODEFG6K.js";
|
|
12
12
|
import {
|
|
13
13
|
CollectionIndexes
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-AYOQZJDB.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-SXPLIRQH.js";
|
|
18
|
+
import "../chunk-PIO6NW7O.js";
|
|
19
|
+
import "../chunk-2RH5SEY7.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-654RE5YC.js";
|
|
5
5
|
import {
|
|
6
6
|
applyListProjection
|
|
7
7
|
} from "../chunk-VG2ZSFYD.js";
|
|
@@ -12,17 +12,17 @@ import {
|
|
|
12
12
|
import {
|
|
13
13
|
jsonSchemaToFields
|
|
14
14
|
} from "../chunk-VYYM3MEN.js";
|
|
15
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-UORWAG7K.js";
|
|
16
16
|
import "../chunk-Y2NBBT6K.js";
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-IF2M43G4.js";
|
|
18
|
+
import "../chunk-WRLWEYHY.js";
|
|
19
|
+
import "../chunk-O6VOR4NH.js";
|
|
20
|
+
import "../chunk-VZFTON37.js";
|
|
21
21
|
import "../chunk-NH2UOV3B.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-HTRLQ4ZZ.js";
|
|
23
|
+
import "../chunk-EPPAEGH5.js";
|
|
24
|
+
import "../chunk-URGHKZPL.js";
|
|
25
|
+
import "../chunk-2RH5SEY7.js";
|
|
26
26
|
export {
|
|
27
27
|
FieldMetaUnknownFieldError,
|
|
28
28
|
applyListProjection,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
issueAttestationCore
|
|
3
|
+
} from "./chunk-5SMCBPJ2.js";
|
|
4
|
+
import "./chunk-B6EWMGFX.js";
|
|
5
|
+
import "./chunk-IPF5ORDI.js";
|
|
6
|
+
import "./chunk-GMKGGY7V.js";
|
|
7
|
+
import "./chunk-4AOERLTV.js";
|
|
8
|
+
import "./chunk-WRLWEYHY.js";
|
|
9
|
+
import "./chunk-O6VOR4NH.js";
|
|
10
|
+
import "./chunk-VZFTON37.js";
|
|
11
|
+
import "./chunk-NH2UOV3B.js";
|
|
12
|
+
import "./chunk-HTRLQ4ZZ.js";
|
|
13
|
+
import "./chunk-EPPAEGH5.js";
|
|
14
|
+
import "./chunk-URGHKZPL.js";
|
|
15
|
+
import "./chunk-2RH5SEY7.js";
|
|
16
|
+
export {
|
|
17
|
+
issueAttestationCore
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=issue-5ZHXK4HJ.js.map
|
|
@@ -666,6 +666,38 @@ export declare class Collection<T, S extends keyof T = never, Q extends keyof T
|
|
|
666
666
|
* never half-writes the receiver.
|
|
667
667
|
*/
|
|
668
668
|
validateInput(record: T): Promise<T>;
|
|
669
|
+
/**
|
|
670
|
+
* core#74 — ADMISSION of a record arriving by sync. Runs the same
|
|
671
|
+
* `beforePut` gate bus (guards, periods) and `db.onBeforeWrite` hooks a
|
|
672
|
+
* local `put` runs, on the DECRYPTED incoming record against this device's
|
|
673
|
+
* current state, with `origin: 'sync-apply'`. A throw is a refusal; the
|
|
674
|
+
* engine parks the envelope and leaves the local copy untouched.
|
|
675
|
+
*
|
|
676
|
+
* Not gated, deliberately: tombstones and delete markers (erasure wins, as
|
|
677
|
+
* on every other path), elevated envelopes (#707 — invisible to gate
|
|
678
|
+
* handlers), and a record this session holds no key for (it cannot judge;
|
|
679
|
+
* the merge authority's stated residue, #1042). Schema validation does not
|
|
680
|
+
* run — the writer validated. Zero cost when nothing is registered.
|
|
681
|
+
* @internal
|
|
682
|
+
*/
|
|
683
|
+
/**
|
|
684
|
+
* @internal core#74 — judge a record against THIS device's gates and hooks.
|
|
685
|
+
*
|
|
686
|
+
* ⚠️ core#108: under `'push-recheck'` the record is already in the local
|
|
687
|
+
* store, so `resolveGatePrior` returns the record itself and `existing`
|
|
688
|
+
* equals `incoming` — the state it was written over is gone and cannot be
|
|
689
|
+
* reconstructed. That makes the re-check sound for rules that read AMBIENT
|
|
690
|
+
* state (a closed period, a revoked clearance) and degenerate for rules
|
|
691
|
+
* that compare against a prior, which see a no-op diff and pass. Widening
|
|
692
|
+
* it would need the pre-write snapshot kept in the dirty log, which is a
|
|
693
|
+
* different feature; do not "fix" it by synthesising a prior here.
|
|
694
|
+
*/
|
|
695
|
+
_admitRemote(id: string, envelope: EncryptedEnvelope, origin?: 'sync-apply' | 'push-recheck'): Promise<{
|
|
696
|
+
admitted: true;
|
|
697
|
+
} | {
|
|
698
|
+
admitted: false;
|
|
699
|
+
reason: string;
|
|
700
|
+
}>;
|
|
669
701
|
/**
|
|
670
702
|
* Resolve the prior record as REAL VALUES for the eager write/delete paths
|
|
671
703
|
* (history snapshot, ledger patch, index upkeep). The eager cache holds
|
|
@@ -739,7 +771,7 @@ export declare class Collection<T, S extends keyof T = never, Q extends keyof T
|
|
|
739
771
|
* @internal `wave` (#638 Task 4): when present (the sync/cutover/restore dispatch wave),
|
|
740
772
|
* an eager MV already refreshed this wave is skipped (per-target dedup, keyed on spec name).
|
|
741
773
|
*/
|
|
742
|
-
|
|
774
|
+
_dispatchMaterializedViews(id: string, record: T, wave?: WaveContext): Promise<void>;
|
|
743
775
|
/**
|
|
744
776
|
* Fire registered derivation strategies for this source collection.
|
|
745
777
|
* Eager mode runs `derive` inline and writes each output via the
|
|
@@ -784,7 +816,7 @@ export declare class Collection<T, S extends keyof T = never, Q extends keyof T
|
|
|
784
816
|
* and from `forgetDerivedFanout` (#638 Task 6), which needs the per-target outcome to fill
|
|
785
817
|
* `ForgetResult.derivedAggregatesRecomputed`/`derivedResidueFrozen`). `wave` (#640): per-target dedup for the sync-apply path; `undefined` on local-delete (byte-identical).
|
|
786
818
|
*/
|
|
787
|
-
|
|
819
|
+
_dispatchRollupsOnDelete(id: string, deleted: T, wave?: WaveContext): Promise<ReadonlyArray<{
|
|
788
820
|
readonly into: string;
|
|
789
821
|
readonly parentId: string;
|
|
790
822
|
readonly outcome: RollupOutcome;
|
|
@@ -793,9 +825,9 @@ export declare class Collection<T, S extends keyof T = never, Q extends keyof T
|
|
|
793
825
|
_recomputeDeletedRollups(intents: readonly RollupDeleteIntent[], wave: WaveContext): Promise<void>;
|
|
794
826
|
/** @internal `wave` (#638 Task 4) — threaded to `recomputeRollup` for the sync/cutover/restore
|
|
795
827
|
* dispatch wave's per-target dedup; `undefined` on the local-write path (byte-identical). */
|
|
796
|
-
|
|
828
|
+
_dispatchDerivations(id: string, record: T, version: number, wave?: WaveContext, prior?: Record<string, unknown> | null): Promise<void>;
|
|
797
829
|
/** @internal — trigger fan-out for a deleted parent (#1249); see dispatch.ts. */
|
|
798
|
-
|
|
830
|
+
_dispatchTriggerDerivationsOnDelete(id: string, deleted: T): Promise<void>;
|
|
799
831
|
/**
|
|
800
832
|
* Delete a record by ID. Runs inside the hub's write-queue tracker
|
|
801
833
|
* so `hub.writeQueue.pending` reflects this write.
|
|
@@ -936,7 +968,7 @@ export declare class Collection<T, S extends keyof T = never, Q extends keyof T
|
|
|
936
968
|
* erasure too — forget()'s fanout, GDPR residue. A delete-of-absent contributes 0 either way.
|
|
937
969
|
* @internal
|
|
938
970
|
*/
|
|
939
|
-
|
|
971
|
+
_dispatchArrayDerivationsOnDelete(id: string, eraseRecordShapeToo?: boolean): Promise<number>;
|
|
940
972
|
/**
|
|
941
973
|
* Mirror of {@link dispatchMaterializedViews} for the delete/forget path — no `_materializedFrom`
|
|
942
974
|
* skip (record's gone); the `internal` gate at `_doDelete` is the recursion guard. Returns the
|
|
@@ -946,7 +978,7 @@ export declare class Collection<T, S extends keyof T = never, Q extends keyof T
|
|
|
946
978
|
* manual serves empty until `refreshView()`. `residueUndecodable`/`residueDeclined` (#776/#785) carry `outputCollection:id` entries whose ownership stamp `invalidateMVAtRest` could not decode, resp. decoded+stamp-matched but declined erasure — surfaced, not erased.
|
|
947
979
|
* @internal
|
|
948
980
|
*/
|
|
949
|
-
|
|
981
|
+
_dispatchMaterializedViewsOnDelete(id: string): Promise<{
|
|
950
982
|
deleted: number;
|
|
951
983
|
residueUndecodable: string[];
|
|
952
984
|
residueDeclined: string[];
|
|
@@ -962,6 +994,35 @@ export declare class Collection<T, S extends keyof T = never, Q extends keyof T
|
|
|
962
994
|
* each record is locale-resolved before being returned.
|
|
963
995
|
*/
|
|
964
996
|
list(locale?: LocaleReadOptions): Promise<T[]>;
|
|
997
|
+
/**
|
|
998
|
+
* @internal core#122 — forget everything read from the store, so the next
|
|
999
|
+
* read re-hydrates.
|
|
1000
|
+
*
|
|
1001
|
+
* ⭐ Why this is needed even though the vault drops its collection cache on
|
|
1002
|
+
* restore: `vault.collection(name)` hands back the instance FROM that cache,
|
|
1003
|
+
* so a handle the caller is already holding IS one of the objects in it.
|
|
1004
|
+
* Dropping the map makes the NEXT `vault.collection()` build a fresh
|
|
1005
|
+
* instance and leaves the caller's handle answering from its own pre-restore
|
|
1006
|
+
* cache — correct for the next caller, invisible to the current one, and the
|
|
1007
|
+
* natural shape of restore code holds the handle across the load.
|
|
1008
|
+
*
|
|
1009
|
+
* ⛔ Not a general "refresh": it deliberately does NOT re-read here. The
|
|
1010
|
+
* next read pays for it, so a restore that touches fifty collections does
|
|
1011
|
+
* not hydrate fifty times for a caller who will look at one.
|
|
1012
|
+
*/
|
|
1013
|
+
_invalidateAfterRestore(): void;
|
|
1014
|
+
/**
|
|
1015
|
+
* core#103 — `list()` with the hub-assigned id alongside each record.
|
|
1016
|
+
*
|
|
1017
|
+
* ⭐ The id is not derivable from a record, so a caller keyed on it
|
|
1018
|
+
* previously had to `get()` per row after `list()`. Tuple order mirrors
|
|
1019
|
+
* `putMany`: `[id, record]` reads the same going in and coming out.
|
|
1020
|
+
*
|
|
1021
|
+
* Same eager-mode requirement and the same locale/Via pipeline as `list()`
|
|
1022
|
+
* — deliberately, so the two cannot drift into answering differently about
|
|
1023
|
+
* the same collection. `list()` is unchanged.
|
|
1024
|
+
*/
|
|
1025
|
+
listEntries(locale?: LocaleReadOptions): Promise<Array<readonly [id: string, record: T]>>;
|
|
965
1026
|
/**
|
|
966
1027
|
* Scan-mode full-text search over a plain-text `field`. Decrypts the
|
|
967
1028
|
* collection in memory and ranks records by BM25 against the tokenized query.
|
|
@@ -1200,6 +1261,24 @@ export declare class Collection<T, S extends keyof T = never, Q extends keyof T
|
|
|
1200
1261
|
items: T[];
|
|
1201
1262
|
nextCursor: string | null;
|
|
1202
1263
|
}>;
|
|
1264
|
+
/**
|
|
1265
|
+
* core#103 — `listPage()` with the hub-assigned id alongside each record.
|
|
1266
|
+
*
|
|
1267
|
+
* ⭐ The id is not derivable from the record. An app that stores its own key
|
|
1268
|
+
* in a field is fine; one that relies on the id hub assigned had no bulk
|
|
1269
|
+
* read that returned it and had to `get()` per row to find out — which is
|
|
1270
|
+
* the shape pilot-1 hit writing a rule keyed on the record id.
|
|
1271
|
+
*
|
|
1272
|
+
* Tuple order mirrors `putMany`, so `[id, record]` reads the same way going
|
|
1273
|
+
* in and coming out. `listPage()` is unchanged and delegates here.
|
|
1274
|
+
*/
|
|
1275
|
+
listPageEntries(opts?: {
|
|
1276
|
+
cursor?: string;
|
|
1277
|
+
limit?: number;
|
|
1278
|
+
}): Promise<{
|
|
1279
|
+
items: Array<readonly [id: string, record: T]>;
|
|
1280
|
+
nextCursor: string | null;
|
|
1281
|
+
}>;
|
|
1203
1282
|
/**
|
|
1204
1283
|
* Stream every record in the collection page-by-page as an async
|
|
1205
1284
|
* iterable, with chainable `.where()` / `.filter()` clauses and a
|
|
@@ -52,3 +52,10 @@ export declare const ROSTER_KEY_ID = "_roster";
|
|
|
52
52
|
* of rewriting every chunk and index row on every revocation.
|
|
53
53
|
*/
|
|
54
54
|
export declare const BLOB_ADDRESS_KEY_ID = "_blob_addr";
|
|
55
|
+
/**
|
|
56
|
+
* core#96 — the DEK-map slot holding a member's INBOX KEY: the AES key that
|
|
57
|
+
* seals the private half of their inbox key pair (`KeyringFile.inbox_key`).
|
|
58
|
+
* A reserved key, not a collection — never propagated to a grantee (it is
|
|
59
|
+
* per member), never rotated, stripped by `revoke` the way `_roster` is.
|
|
60
|
+
*/
|
|
61
|
+
export declare const INBOX_KEY_ID = "_inbox_key";
|
package/dist/kernel/errors.d.ts
CHANGED
|
@@ -622,6 +622,15 @@ export declare class DuplicateStoreKindError extends NoydbError {
|
|
|
622
622
|
readonly kind: string;
|
|
623
623
|
constructor(kind: string);
|
|
624
624
|
}
|
|
625
|
+
/**
|
|
626
|
+
* core#96 — `updateUser` needs to deliver a DEK to a member whose keyring has
|
|
627
|
+
* no inbox key pair (written before inboxes existed), or the caller is not
|
|
628
|
+
* cleared to amend. The member can still be re-granted with a fresh secret.
|
|
629
|
+
*/
|
|
630
|
+
export declare class MemberInboxMissingError extends NoydbError {
|
|
631
|
+
readonly userId: string;
|
|
632
|
+
constructor(userId: string, message?: string);
|
|
633
|
+
}
|
|
625
634
|
export declare class PrivilegeEscalationError extends NoydbError {
|
|
626
635
|
readonly offendingCollection: string;
|
|
627
636
|
constructor(offendingCollection: string, message?: string);
|
|
@@ -15,11 +15,15 @@ import type { EnclaveKey } from '../capsule/index.js';
|
|
|
15
15
|
*/
|
|
16
16
|
export declare function buildMergeAuthority(
|
|
17
17
|
/**
|
|
18
|
+
* A GETTER for the DEK map (core#100): the vault reloads its keyring in
|
|
19
|
+
* place after a pull that replaced its file (core#82) — a delivered DEK, a
|
|
20
|
+
* rotation — and an authority that captured the object at wiring kept
|
|
21
|
+
* verifying with the map that no longer opened the records.
|
|
18
22
|
* Just the DEK map, not the whole keyring. `port-layering` refused a type
|
|
19
23
|
* import of `UnlockedKeyring` from `with-party` — correctly, and the narrower
|
|
20
24
|
* shape is better anyway: this needs to look up keys, not to know what a
|
|
21
25
|
* keyring is.
|
|
22
26
|
*/
|
|
23
|
-
keyring: {
|
|
27
|
+
keyring: () => {
|
|
24
28
|
readonly deks: ReadonlyMap<string, EnclaveKey>;
|
|
25
29
|
}): MergeAuthority;
|
package/dist/kernel/noydb.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { RotateResult, RosterVerifyResult, QuarantineResult } from '../with-party/team/keyring.js';
|
|
2
|
-
import type { NoydbOptions, NoydbEventMap, GrantOptions, RevokeOptions, UpdateUserOptions, UserInfo, PushResult, PullResult, RealignResult, PushOptions, PullOptions, SyncStatus, SyncTargetInfo, SyncTargetStatus, NoydbStore, AccessibleVault, ListAccessibleVaultsOptions, QueryAcrossOptions, QueryAcrossResult, TranslatorAuditEntry, WriteConflict, UserApiFactory, ActiveTier, FactorProofBundle, GateName, VaultPolicy } from './types.js';
|
|
1
|
+
import type { RotateResult, RevokeResult, RosterVerifyResult, QuarantineResult } from '../with-party/team/keyring.js';
|
|
2
|
+
import type { NoydbOptions, NoydbEventMap, GrantOptions, RevokeOptions, UpdateUserOptions, UserInfo, PushResult, PullResult, RealignResult, PushOptions, PullOptions, SyncStatus, SyncTarget, SyncTargetInfo, SyncTargetStatus, NoydbStore, AccessibleVault, ListAccessibleVaultsOptions, QueryAcrossOptions, QueryAcrossResult, TranslatorAuditEntry, WriteConflict, UserApiFactory, ActiveTier, FactorProofBundle, GateName, VaultPolicy, SyncRejectedApi, ReplaceRemoteResult } from './types.js';
|
|
3
3
|
import type { SecretPolicy } from './validation.js';
|
|
4
4
|
import { type NoydbMesh } from '../port/by/default-provider.js';
|
|
5
5
|
import type { Cover } from '../with-party/directory/cover/types.js';
|
|
@@ -51,6 +51,8 @@ export declare class Noydb {
|
|
|
51
51
|
private readonly vaultOpening;
|
|
52
52
|
private readonly keyringCache;
|
|
53
53
|
private readonly syncEngines;
|
|
54
|
+
/** core#90 — conflict resolvers registered per vault, replayed onto a target attached after open. */
|
|
55
|
+
private readonly conflictResolvers;
|
|
54
56
|
/**
|
|
55
57
|
* Per-vault active session tier — defaults to `1` after a secret
|
|
56
58
|
* unlock; tier-2 / tier-3 unlocks downgrade it. Used by
|
|
@@ -90,10 +92,10 @@ export declare class Noydb {
|
|
|
90
92
|
/**
|
|
91
93
|
* Opt-in sovereign-custody (FR-6) strategy — `NO_CUSTODY` (throwing) unless
|
|
92
94
|
* `withCustody()` was passed. Kept as a public accessor because `Vault`
|
|
93
|
-
* routes `vault.custody.liberate` through `this.noydb.
|
|
95
|
+
* routes `vault.custody.liberate` through `this.noydb._custodyStrategy`.
|
|
94
96
|
* @internal
|
|
95
97
|
*/
|
|
96
|
-
get
|
|
98
|
+
get _custodyStrategy(): CustodyStrategy;
|
|
97
99
|
private readonly snapshots;
|
|
98
100
|
private readonly policyManager;
|
|
99
101
|
/** Pre-resolved policy-gate engine function (mirrors `meshPort`/`userApiFactory` above). */
|
|
@@ -176,6 +178,13 @@ export declare class Noydb {
|
|
|
176
178
|
/**
|
|
177
179
|
* Grant access to a user for a vault.
|
|
178
180
|
*
|
|
181
|
+
* ⚠️ On an EXISTING user this RE-KEYS them: a new KEK from `secret`,
|
|
182
|
+
* authenticator slots dropped, the file overwritten. So it needs the
|
|
183
|
+
* member's CURRENT secret — after `acceptInvite` or `rotateSecret` an
|
|
184
|
+
* owner never holds it, and a re-grant with a stale one locks the member
|
|
185
|
+
* out. To change what an existing member may do, use `updateUser`
|
|
186
|
+
* (core#96); re-grant only to re-key, with a fresh temporary secret.
|
|
187
|
+
*
|
|
179
188
|
* Gated by `enroll-user`. `STRICT_POLICY` requires a TOTP / email-OTP
|
|
180
189
|
* factor proof so the operator affirmatively re-asserts identity at
|
|
181
190
|
* the moment of grant; `PERSONAL_POLICY` accepts a tier-1 unlock alone.
|
|
@@ -220,23 +229,37 @@ export declare class Noydb {
|
|
|
220
229
|
revokeCustodian(vault: string, options: RevokeOptions, factors?: FactorProofBundle): Promise<void>;
|
|
221
230
|
/** @internal — revoke-custodian engine, reached only via withCustody().
|
|
222
231
|
* Mirrors `_grantCustodianImpl` (#267: engine passed in). */
|
|
223
|
-
_revokeCustodianImpl(engine: (adapter: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, options: RevokeOptions) => Promise<
|
|
224
|
-
/**
|
|
225
|
-
*
|
|
226
|
-
* `
|
|
227
|
-
*
|
|
228
|
-
*
|
|
232
|
+
_revokeCustodianImpl(engine: (adapter: NoydbStore, vault: string, callerKeyring: UnlockedKeyring, options: RevokeOptions) => Promise<RevokeResult>, vault: string, options: RevokeOptions, factors?: FactorProofBundle): Promise<void>;
|
|
233
|
+
/**
|
|
234
|
+
* Change what an EXISTING member may do — `role`, `displayName`, and/or
|
|
235
|
+
* `permissions` — without holding their secret. The member's KEK, salt
|
|
236
|
+
* and authenticator slots are untouched; tier-2 enrollments and recovery
|
|
237
|
+
* codes survive.
|
|
238
|
+
*
|
|
239
|
+
* core#96 — the keys follow the header. A change that widens access
|
|
240
|
+
* delivers the DEKs the member lacks through their keyring INBOX
|
|
241
|
+
* (sealed to a per-member key pair only their KEK opens; drained at
|
|
242
|
+
* their next tier-1 unlock, or at the next pull of an open session). A
|
|
243
|
+
* change that narrows access drops the DEKs and rotates those
|
|
244
|
+
* collections, as a narrowing `grant` does (#1097). A role change
|
|
245
|
+
* re-registers the member with a configured broker host under a fresh
|
|
246
|
+
* `_broker_member` key. This is the widening path: `db.grant` on an
|
|
247
|
+
* existing user RE-KEYS them from `secret`, so it needs their CURRENT
|
|
248
|
+
* secret — after `acceptInvite` or `rotateSecret` an owner never holds it.
|
|
229
249
|
*
|
|
230
250
|
* Different from `db.revoke + db.grant`:
|
|
231
251
|
*
|
|
232
|
-
* - Same `userId`, same
|
|
233
|
-
* `_users/<keyringId>` envelope.
|
|
234
|
-
*
|
|
252
|
+
* - Same `userId`, same KEK, same `granted_by`, same
|
|
253
|
+
* `_users/<keyringId>` envelope. Last-write-wins via the standard
|
|
254
|
+
* keyring put.
|
|
235
255
|
* - No cascade on role demotion (admins demoted to operator keep
|
|
236
256
|
* the keyrings they previously granted; the cascade rules are
|
|
237
257
|
* a `db.revoke` concern, not `db.updateUser`).
|
|
238
258
|
* - Tier-2 slots NOT dropped — the wrapping is unaffected.
|
|
239
259
|
*
|
|
260
|
+
* @throws `MemberInboxMissingError` when a DEK must be delivered to a
|
|
261
|
+
* member whose keyring predates inboxes — re-grant them once.
|
|
262
|
+
*
|
|
240
263
|
* Role-elevation guard: BOTH the old and new role must satisfy
|
|
241
264
|
* `db.grant`'s hierarchy. Owner can do anything; admin manages
|
|
242
265
|
* admin/operator/viewer/client laterally; admin cannot promote to
|
|
@@ -257,6 +280,46 @@ export declare class Noydb {
|
|
|
257
280
|
* }, { factors: [{ kind: 'totp' }] })
|
|
258
281
|
* ```
|
|
259
282
|
*
|
|
283
|
+
* ## ⚠️ A NARROWING DOES NOT REACH A SESSION THAT IS ALREADY OPEN
|
|
284
|
+
*
|
|
285
|
+
* This writes the target's keyring. It cannot reach into a `Noydb` the
|
|
286
|
+
* target already has open: an eager collection holds the records it
|
|
287
|
+
* hydrated, and nothing polls the keyring, so that session keeps serving
|
|
288
|
+
* rows it read while it still had the key. A FRESH open throws
|
|
289
|
+
* `NoAccessError` correctly (core#101), and so does that session for any
|
|
290
|
+
* collection it had not already hydrated.
|
|
291
|
+
*
|
|
292
|
+
* ⭐ A long-lived admin console — one holding a vault open while changing
|
|
293
|
+
* somebody's permissions — must RE-OPEN the affected session rather than
|
|
294
|
+
* expect its next read to start failing.
|
|
295
|
+
*
|
|
296
|
+
* ## What the window is, MEASURED — it is narrower than it sounds
|
|
297
|
+
*
|
|
298
|
+
* The consumer building that console asked the two questions a security
|
|
299
|
+
* reviewer asks, and reasoning would have got both wrong in the cautious
|
|
300
|
+
* direction. Measured on a synced vault, after `updateUser` narrowed the
|
|
301
|
+
* member away and `rotate()` re-keyed:
|
|
302
|
+
*
|
|
303
|
+
* 1. **Records arriving AFTER the narrowing are not readable.** A `pull()`
|
|
304
|
+
* into the open session brings the new roster, the session reloads its
|
|
305
|
+
* keyring, and reads then throw `NoAccessError` — including for rows it
|
|
306
|
+
* had already cached. ⭐ So with sync on, the window CLOSES at the next
|
|
307
|
+
* pull; it is not open until re-open.
|
|
308
|
+
* 2. **Writes are refused locally.** `put()` throws `ReadOnlyError` on the
|
|
309
|
+
* narrowed collection — the record is never encrypted, never queued, and
|
|
310
|
+
* `push()` carries nothing. Nothing reaches the remote to be judged, so
|
|
311
|
+
* this does not even rest on the admission gate (core#74).
|
|
312
|
+
*
|
|
313
|
+
* ⛔ So it is not a confidentiality hole and not a write hole: no access is
|
|
314
|
+
* gained, nothing new becomes readable, and nothing can be written. What
|
|
315
|
+
* survives is a read of rows the session ALREADY HELD, on a device with no
|
|
316
|
+
* sync or one that has not pulled since.
|
|
317
|
+
*
|
|
318
|
+
* ⚠️ Which is still the window that matters when a narrowing is
|
|
319
|
+
* security-motivated rather than administrative — a departing member, a
|
|
320
|
+
* suspected device. `rotate()` is the answer there and a console should
|
|
321
|
+
* REQUIRE it for that case rather than offer it.
|
|
322
|
+
*
|
|
260
323
|
* @throws `NoAccessError` when no keyring exists for the target.
|
|
261
324
|
* @throws `PermissionDeniedError` when the role hierarchy rejects.
|
|
262
325
|
* @throws `ValidationError` when no field is provided.
|
|
@@ -291,6 +354,14 @@ export declare class Noydb {
|
|
|
291
354
|
* reaching into internals. See `noy-db rotate` for the CLI wrapper.
|
|
292
355
|
* Opt-in (#267): throws {@link TeamNotEnabledError} without `withTeam()`.
|
|
293
356
|
*/
|
|
357
|
+
/**
|
|
358
|
+
* core#74 — the records this device's admission gate refused on pull
|
|
359
|
+
* (`PullResult.rejected`, `sync:rejected`), parked under `_sync_rejected`
|
|
360
|
+
* with the envelope intact. `list()` them; `readmit()` applies one after all
|
|
361
|
+
* (bypassing the gate); `discard()` drops the parking record. Per device:
|
|
362
|
+
* a refusal is local to the device that judged it.
|
|
363
|
+
*/
|
|
364
|
+
rejected(vault: string): SyncRejectedApi;
|
|
294
365
|
rotate(vault: string, collections: string[]): Promise<RotateResult>;
|
|
295
366
|
/**
|
|
296
367
|
* Verify every `_keyring` file in the vault. Read-only (#1121).
|
|
@@ -423,9 +494,13 @@ export declare class Noydb {
|
|
|
423
494
|
*/
|
|
424
495
|
queryAcross<T>(vaultIds: string[], fn: (vault: Vault) => Promise<T>, options?: QueryAcrossOptions): Promise<QueryAcrossResult<T>[]>;
|
|
425
496
|
/**
|
|
426
|
-
*
|
|
427
|
-
*
|
|
428
|
-
* `
|
|
497
|
+
* True once `close()` has been called.
|
|
498
|
+
*
|
|
499
|
+
* ⭐ NOT `@internal`, and core#128 removed that tag rather than `_`-prefixing
|
|
500
|
+
* this: the doc's own reason — "read by outward orchestration frameworks
|
|
501
|
+
* whose entry points can't see the private `closed` field" — IS a public
|
|
502
|
+
* contract. Prefixing it would have broken the readers it exists for. The
|
|
503
|
+
* tag was the defect, not the name.
|
|
429
504
|
*/
|
|
430
505
|
get isClosed(): boolean;
|
|
431
506
|
/**
|
|
@@ -460,6 +535,18 @@ export declare class Noydb {
|
|
|
460
535
|
pull(vault: string, options?: PullOptions): Promise<PullResult>;
|
|
461
536
|
/** core#82 — replace every local envelope that fails to authenticate with the primary target's healthy copy; see `SyncEngine.realign`. */
|
|
462
537
|
realign(vault: string): Promise<RealignResult>;
|
|
538
|
+
/**
|
|
539
|
+
* core#72 — make THIS device's vault authoritative on its primary target:
|
|
540
|
+
* every local record is written unconditionally (re-versioned above the
|
|
541
|
+
* target's copy where the target moved on), every id the target holds that
|
|
542
|
+
* the local vault does not gets a delete marker, the reserved collections
|
|
543
|
+
* are mirrored, and a new restore EPOCH is written on the target. Every
|
|
544
|
+
* other device's next pull crosses that epoch: its unpushed edits are parked
|
|
545
|
+
* (`db.rejected(vault)`, reason `restore-epoch`), its dirty log dropped, the
|
|
546
|
+
* target adopted wholesale. The act of a restore (`vault.load` then this), or
|
|
547
|
+
* of declaring one replica the truth. Owner/admin, ledgered by the pushes.
|
|
548
|
+
*/
|
|
549
|
+
replaceRemote(vault: string): Promise<ReplaceRemoteResult>;
|
|
463
550
|
/**
|
|
464
551
|
* Bidirectional sync: pull then push for all targets.
|
|
465
552
|
* `sync-peer` targets do pull+push; `backup`/`archive` targets do push-only.
|
|
@@ -525,7 +612,7 @@ export declare class Noydb {
|
|
|
525
612
|
get store(): NoydbStore;
|
|
526
613
|
/**
|
|
527
614
|
* Currently-running multi-record transaction, or `null` outside
|
|
528
|
-
* Phase 2. `Collection.
|
|
615
|
+
* Phase 2. `Collection._dispatchDerivations` consults this so a
|
|
529
616
|
* recursive derived-output write inside `Collection.put` can register
|
|
530
617
|
* its envelope onto `ctx._executed` and roll back with the main
|
|
531
618
|
* staged ops on mid-batch failure.
|
|
@@ -582,6 +669,8 @@ export declare class Noydb {
|
|
|
582
669
|
*/
|
|
583
670
|
listSyncTargets(vault: string): SyncTargetInfo[];
|
|
584
671
|
private getSyncEngine;
|
|
672
|
+
/** core#90 — attach a sync target to an OPEN vault (primary when it had none, else keyed by position); records written before it are sent by `push({ full: true })`. Rationale in `kernel/sync-wiring.ts`. */
|
|
673
|
+
attachSyncTarget(vault: string, target: NoydbStore | SyncTarget): Promise<void>;
|
|
585
674
|
_forEachSyncEngine(vault: string, fn: (engine: SyncEngine) => void): void;
|
|
586
675
|
on<K extends keyof NoydbEventMap>(event: K, handler: (data: NoydbEventMap[K]) => void): void;
|
|
587
676
|
off<K extends keyof NoydbEventMap>(event: K, handler: (data: NoydbEventMap[K]) => void): void;
|
|
@@ -641,9 +730,15 @@ export declare class Noydb {
|
|
|
641
730
|
/** @internal Session that owns this instance's writers. */
|
|
642
731
|
get _sessionId(): string;
|
|
643
732
|
/**
|
|
644
|
-
*
|
|
645
|
-
*
|
|
646
|
-
*
|
|
733
|
+
* Drain-barrier coordination transport for the schema fence. The default
|
|
734
|
+
* store-backed provider reproduces today's fence behavior; a `by-*`
|
|
735
|
+
* real-time transport is injected via the `mesh` option.
|
|
736
|
+
*
|
|
737
|
+
* ⭐ NOT `@internal`, and core#128 removed that tag rather than
|
|
738
|
+
* `_`-prefixing this. `db.mesh` is documented as a public handle in
|
|
739
|
+
* `port/by/index.ts` — "a `Noydb` handle (`db.mesh`) without ever naming a
|
|
740
|
+
* `by-*` pack" — and `createNoydb({ mesh })` is a public option. The tag
|
|
741
|
+
* contradicted both; prefixing would have broken the documented handle.
|
|
647
742
|
*/
|
|
648
743
|
get mesh(): NoydbMesh;
|
|
649
744
|
/**
|
|
@@ -689,7 +784,7 @@ export declare class Noydb {
|
|
|
689
784
|
*
|
|
690
785
|
* @internal — not part of the public API surface
|
|
691
786
|
*/
|
|
692
|
-
|
|
787
|
+
_invokeTranslator(text: string, from: string, to: string, field: string, collection: string): Promise<string>;
|
|
693
788
|
/**
|
|
694
789
|
* Read the active policy for a vault. Loads from `_meta/policy` on
|
|
695
790
|
* first call; subsequent calls hit the in-memory cache. Throws
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EnclaveKey } from '../capsule/index.js';
|
|
2
|
+
import type { EncryptedEnvelope, SyncRejection } from './types.js';
|
|
3
|
+
/** core#107 — where replicated refusals live. Reserved, declared in `reserved-mirror.ts`. */
|
|
4
|
+
export declare const REJECTIONS_COLLECTION = "_sync_rejections";
|
|
5
|
+
/** `<collection>::<id>` — one live refusal per record, newer `_v` supersedes. */
|
|
6
|
+
export declare const rejectionKey: (collection: string, id: string) => string;
|
|
7
|
+
export declare function sealRejection(collection: string, id: string, rejection: SyncRejection, dek: EnclaveKey, version: number): Promise<EncryptedEnvelope>;
|
|
8
|
+
/**
|
|
9
|
+
* `null` when this device cannot open it. Never throws: a member who does not
|
|
10
|
+
* hold the collection's DEK receives the envelope like everybody else (the
|
|
11
|
+
* mirror is DEK-free and copies it unconditionally) and must skip it quietly.
|
|
12
|
+
*/
|
|
13
|
+
export declare function openRejection(collection: string, id: string, envelope: EncryptedEnvelope, dek: EnclaveKey): Promise<SyncRejection | null>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The vault-side seams every sync engine of a vault is wired with — at
|
|
3
|
+
* `openVault()` and again on `attachSyncTarget()` (core#90). One function so
|
|
4
|
+
* the two paths cannot drift: `sync` used to be construction-only, which forced
|
|
5
|
+
* pilot-1's direct cloud shape (a target whose credentials come from
|
|
6
|
+
* `vault.broker()`, reachable only once the vault is open) into a two-phase
|
|
7
|
+
* open with a reconstruct in between. Attaching after open needs exactly the
|
|
8
|
+
* wiring open does, plus a replay of the conflict resolvers collections
|
|
9
|
+
* registered before the target existed — hence `conflictResolvers` on the host.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
import type { Vault } from './vault.js';
|
|
14
|
+
import type { CollectionConflictResolver, EncryptedEnvelope, SyncRejection } from './types.js';
|
|
15
|
+
type WiredEngine = {
|
|
16
|
+
setCacheInvalidator(fn: (collection: string, id: string, action: 'put' | 'delete') => Promise<void>): void;
|
|
17
|
+
setGraphBatchController(c: {
|
|
18
|
+
begin(): void;
|
|
19
|
+
flush(): Promise<void>;
|
|
20
|
+
}): void;
|
|
21
|
+
setReservedLookupSource(s: {
|
|
22
|
+
collections(): readonly string[];
|
|
23
|
+
}): void;
|
|
24
|
+
setReservedDictExpander(fn: (names: readonly string[]) => readonly string[]): void;
|
|
25
|
+
setPeriodPullSource(s: {
|
|
26
|
+
periods(): Promise<readonly unknown[]>;
|
|
27
|
+
}): void;
|
|
28
|
+
setRosterReload(seam: {
|
|
29
|
+
userId: string;
|
|
30
|
+
reload: () => Promise<void>;
|
|
31
|
+
}): void;
|
|
32
|
+
setAdmission(a: {
|
|
33
|
+
admit(collection: string, id: string, envelope: EncryptedEnvelope, origin?: 'sync-apply' | 'push-recheck'): Promise<{
|
|
34
|
+
admitted: true;
|
|
35
|
+
} | {
|
|
36
|
+
admitted: false;
|
|
37
|
+
reason: string;
|
|
38
|
+
}>;
|
|
39
|
+
}): void;
|
|
40
|
+
setRejectionCourier(c: {
|
|
41
|
+
seal(collection: string, id: string, rejection: SyncRejection, version: number): Promise<EncryptedEnvelope | null>;
|
|
42
|
+
open(collection: string, id: string, envelope: EncryptedEnvelope): Promise<SyncRejection | null>;
|
|
43
|
+
}): void;
|
|
44
|
+
setCollectionNames(fn: () => readonly string[]): void;
|
|
45
|
+
registerConflictResolver(name: string, resolver: CollectionConflictResolver): void;
|
|
46
|
+
};
|
|
47
|
+
export interface EngineWiringHost {
|
|
48
|
+
readonly user: string;
|
|
49
|
+
readonly keyringCache: ReadonlyMap<string, {
|
|
50
|
+
readonly deks: ReadonlyMap<string, unknown>;
|
|
51
|
+
}>;
|
|
52
|
+
readonly conflictResolvers: ReadonlyMap<string, ReadonlyMap<string, CollectionConflictResolver>>;
|
|
53
|
+
}
|
|
54
|
+
export declare function wireEngine(host: EngineWiringHost, name: string, comp: Vault, engine: WiredEngine): void;
|
|
55
|
+
export {};
|