@noy-db/hub 0.6.0-pre.2 → 0.6.0-pre.21
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 +5234 -0
- package/codemods/0.4.0-pre.json +699 -0
- package/codemods/0.6.0-pre.json +211 -0
- package/dist/api-EYNT6KGS.js +20 -0
- package/dist/attestation/index.js +19 -19
- package/dist/{backup-YYBE5RPC.js → backup-FSC36VWC.js} +36 -18
- package/dist/backup-FSC36VWC.js.map +1 -0
- package/dist/blobs/index.js +13 -13
- package/dist/broker/index.js +12 -12
- package/dist/cargo/index.js +33 -33
- package/dist/{chunk-35EBKWQU.js → chunk-2LFOMUEA.js} +4 -4
- package/dist/{chunk-OF3L2SD6.js → chunk-32B7VCKU.js} +2 -2
- package/dist/{chunk-MSWYQLMQ.js → chunk-3B6S6RSI.js} +2 -2
- package/dist/{chunk-PJNTR2NV.js → chunk-3ENNPCIW.js} +7 -10
- package/dist/chunk-3ENNPCIW.js.map +1 -0
- package/dist/{chunk-7F4DBNSP.js → chunk-3O72ZD2E.js} +3 -3
- package/dist/{chunk-FNSMZQS4.js → chunk-3PMFMUFX.js} +2 -2
- package/dist/{chunk-WQDTCJ6W.js → chunk-45YHJ3GV.js} +11 -3
- package/dist/{chunk-WQDTCJ6W.js.map → chunk-45YHJ3GV.js.map} +1 -1
- package/dist/{chunk-NIVEDYJZ.js → chunk-4A34KWOU.js} +31 -49
- package/dist/chunk-4A34KWOU.js.map +1 -0
- package/dist/{chunk-ZJADGNYF.js → chunk-4AOERLTV.js} +1 -1
- package/dist/chunk-4AOERLTV.js.map +1 -0
- package/dist/{chunk-EDXAQ6JI.js → chunk-4N5Q23KV.js} +87 -34
- package/dist/chunk-4N5Q23KV.js.map +1 -0
- package/dist/{chunk-VV4NSB7P.js → chunk-4OQZNXQG.js} +15 -24
- package/dist/chunk-4OQZNXQG.js.map +1 -0
- package/dist/{chunk-FAXZQ5UF.js → chunk-4RAS6HN6.js} +2 -2
- package/dist/{chunk-C2OOEM57.js → chunk-4YL2LMXK.js} +92 -35
- package/dist/chunk-4YL2LMXK.js.map +1 -0
- package/dist/{chunk-EP7VPR7Y.js → chunk-5Q7AJ7DN.js} +11 -8
- package/dist/chunk-5Q7AJ7DN.js.map +1 -0
- package/dist/{chunk-VMCCGUQB.js → chunk-6JPGVL7X.js} +2 -2
- package/dist/{chunk-PRDRGL73.js → chunk-6KTVJ5ZZ.js} +17 -14
- package/dist/chunk-6KTVJ5ZZ.js.map +1 -0
- package/dist/{chunk-4MC5JRRX.js → chunk-6WO62AJW.js} +14 -15
- package/dist/chunk-6WO62AJW.js.map +1 -0
- package/dist/{chunk-WLYIROCJ.js → chunk-6YD5SYQS.js} +2 -2
- package/dist/{chunk-YAWK6AWF.js → chunk-7KAE7CQ2.js} +2 -2
- package/dist/{chunk-MWKDOHEF.js → chunk-7LNE2N2V.js} +17 -10
- package/dist/chunk-7LNE2N2V.js.map +1 -0
- package/dist/{chunk-5PR33AC4.js → chunk-7PJ3BKHS.js} +20 -17
- package/dist/chunk-7PJ3BKHS.js.map +1 -0
- package/dist/{chunk-JXIDGFKS.js → chunk-A4TOGAUW.js} +4 -2
- package/dist/chunk-A4TOGAUW.js.map +1 -0
- package/dist/{chunk-VCETL77O.js → chunk-AU3AUJIZ.js} +27 -7
- package/dist/chunk-AU3AUJIZ.js.map +1 -0
- package/dist/{chunk-NKH7GSIH.js → chunk-AUPSEJ7O.js} +4 -4
- package/dist/{chunk-CCZJJ4I2.js → chunk-B6IYATME.js} +4 -4
- package/dist/{chunk-WYZ5MYUA.js → chunk-BAHOV5I5.js} +44 -42
- package/dist/chunk-BAHOV5I5.js.map +1 -0
- package/dist/{chunk-G5APARUV.js → chunk-BEZDLIDG.js} +13 -15
- package/dist/chunk-BEZDLIDG.js.map +1 -0
- package/dist/{chunk-ERB6NDDW.js → chunk-CAGI4LLJ.js} +427 -72
- package/dist/chunk-CAGI4LLJ.js.map +1 -0
- package/dist/{chunk-4UVDI4XE.js → chunk-CLAHBPOI.js} +4 -4
- package/dist/{chunk-HNGSV2YC.js → chunk-CWM4GQD2.js} +39 -10
- package/dist/chunk-CWM4GQD2.js.map +1 -0
- package/dist/{chunk-HVQGCKY4.js → chunk-D3R7Q4QK.js} +2 -2
- package/dist/{chunk-I4F6PKUK.js → chunk-DIZ6HM7Q.js} +16 -17
- package/dist/chunk-DIZ6HM7Q.js.map +1 -0
- package/dist/{chunk-ZNACADFG.js → chunk-DVRZYAGT.js} +4 -4
- package/dist/chunk-DVRZYAGT.js.map +1 -0
- package/dist/{chunk-P7OG2ETF.js → chunk-DXKLLKME.js} +3 -3
- package/dist/{chunk-TDJPS3T2.js → chunk-E5SC6ENM.js} +24 -19
- package/dist/chunk-E5SC6ENM.js.map +1 -0
- package/dist/{chunk-26JMGSSC.js → chunk-EES37S2V.js} +4 -4
- package/dist/chunk-EES37S2V.js.map +1 -0
- package/dist/{chunk-JIUVJ4M7.js → chunk-EKEIEJL6.js} +2 -2
- package/dist/{chunk-GASWQ3XG.js → chunk-ESKIAXO2.js} +15 -16
- package/dist/chunk-ESKIAXO2.js.map +1 -0
- package/dist/{chunk-TOAIYQJR.js → chunk-FFSQFH6D.js} +7 -10
- package/dist/chunk-FFSQFH6D.js.map +1 -0
- package/dist/{chunk-DG27IUVI.js → chunk-FS7NTGCJ.js} +2 -2
- package/dist/{chunk-V5KYPBUR.js → chunk-FW7NGYLT.js} +11 -14
- package/dist/chunk-FW7NGYLT.js.map +1 -0
- package/dist/{chunk-52QYGZHH.js → chunk-GBBDFE6C.js} +2 -2
- package/dist/chunk-GBBDFE6C.js.map +1 -0
- package/dist/{chunk-HXGUIPQB.js → chunk-GQXFOAYZ.js} +3 -3
- package/dist/{chunk-BTVYJWSN.js → chunk-GTHVPVAR.js} +10 -10
- package/dist/{chunk-DMQCLZ4Z.js → chunk-GWO2IDAB.js} +2 -2
- package/dist/{chunk-6HFM7EIT.js → chunk-H3G4I3PN.js} +2 -2
- package/dist/chunk-HK67PX4J.js +27 -0
- package/dist/chunk-HK67PX4J.js.map +1 -0
- package/dist/{chunk-E7OBCBXS.js → chunk-HQSPF5IY.js} +22 -18
- package/dist/chunk-HQSPF5IY.js.map +1 -0
- package/dist/{chunk-VJFMXYKP.js → chunk-HR5R5JOM.js} +2 -2
- package/dist/{chunk-FDX7OWWI.js → chunk-HYYVT2KZ.js} +2 -2
- package/dist/{chunk-JRCYZEHU.js → chunk-I6QKB7MT.js} +2 -2
- package/dist/{chunk-MZ5ZFO2D.js → chunk-ICDHUUMQ.js} +84 -112
- package/dist/chunk-ICDHUUMQ.js.map +1 -0
- package/dist/{chunk-W5W6KHN2.js → chunk-IGNJOJEP.js} +1 -1
- package/dist/chunk-IGNJOJEP.js.map +1 -0
- package/dist/{chunk-KUDZVJKQ.js → chunk-IJ46VCWD.js} +2 -2
- package/dist/{chunk-4HDYQL3J.js → chunk-INMHEMXX.js} +2 -2
- package/dist/{chunk-66W5OOCX.js → chunk-JLYQQNY4.js} +52 -65
- package/dist/chunk-JLYQQNY4.js.map +1 -0
- package/dist/{chunk-UHXCLPGC.js → chunk-JNMTN5D5.js} +2 -2
- package/dist/chunk-JNMTN5D5.js.map +1 -0
- package/dist/{chunk-I4ZAO7F7.js → chunk-JWMBG5S3.js} +7 -11
- package/dist/chunk-JWMBG5S3.js.map +1 -0
- package/dist/chunk-KRVS7YWY.js +123 -0
- package/dist/chunk-KRVS7YWY.js.map +1 -0
- package/dist/{chunk-AR2JDFAE.js → chunk-KV6JM2IA.js} +2 -2
- package/dist/{chunk-PVU7LW5L.js → chunk-KX57HODD.js} +6 -6
- package/dist/{chunk-PY7CI6L5.js → chunk-LGFTOU27.js} +553 -275
- package/dist/chunk-LGFTOU27.js.map +1 -0
- package/dist/chunk-LN7P6MZB.js +190 -0
- package/dist/chunk-LN7P6MZB.js.map +1 -0
- package/dist/{chunk-UIBGXRDD.js → chunk-LX46B56Q.js} +25 -31
- package/dist/chunk-LX46B56Q.js.map +1 -0
- package/dist/{chunk-CEJWMBXO.js → chunk-LXECF2ZR.js} +2 -2
- package/dist/{chunk-7VHY5E3X.js → chunk-MSLPDFK2.js} +7 -7
- package/dist/{chunk-I6SDX7WX.js → chunk-MZTUTEHP.js} +16 -22
- package/dist/chunk-MZTUTEHP.js.map +1 -0
- package/dist/{chunk-VRA4Q7DA.js → chunk-NCCEDL2K.js} +55 -48
- package/dist/chunk-NCCEDL2K.js.map +1 -0
- package/dist/{chunk-HNHCQ556.js → chunk-NR2SUJ3H.js} +2 -2
- package/dist/{chunk-AHLJSVRL.js → chunk-NW4TY6VC.js} +5 -7
- package/dist/chunk-NW4TY6VC.js.map +1 -0
- package/dist/{chunk-RKKORO4M.js → chunk-O742QBZZ.js} +10 -10
- package/dist/chunk-O742QBZZ.js.map +1 -0
- package/dist/{chunk-VN45YLWM.js → chunk-OHOKBMTM.js} +343 -132
- package/dist/chunk-OHOKBMTM.js.map +1 -0
- package/dist/{chunk-W3TVWF6N.js → chunk-OIBEJN5H.js} +2 -2
- package/dist/{chunk-QD724WDJ.js → chunk-OMYCSTXL.js} +4 -4
- package/dist/{chunk-Z45YRGFO.js → chunk-ONVD6GBY.js} +2 -2
- package/dist/{chunk-TAGFGKHP.js → chunk-OTHHO3KI.js} +7 -10
- package/dist/chunk-OTHHO3KI.js.map +1 -0
- package/dist/{chunk-3737A6EA.js → chunk-P2MR5UNE.js} +75 -18
- package/dist/chunk-P2MR5UNE.js.map +1 -0
- package/dist/chunk-PENPHA45.js +66 -0
- package/dist/chunk-PENPHA45.js.map +1 -0
- package/dist/{chunk-3FSX6LDG.js → chunk-PPCOKVFA.js} +8 -3
- package/dist/{chunk-3FSX6LDG.js.map → chunk-PPCOKVFA.js.map} +1 -1
- package/dist/{chunk-VOQW5LAM.js → chunk-QSIEL6TL.js} +102 -71
- package/dist/chunk-QSIEL6TL.js.map +1 -0
- package/dist/chunk-RFO4UXKQ.js +201 -0
- package/dist/chunk-RFO4UXKQ.js.map +1 -0
- package/dist/{chunk-KCQX65FU.js → chunk-RKCRPPNB.js} +3 -3
- package/dist/{chunk-7TSYBD3E.js → chunk-RSXQNFGO.js} +2 -2
- package/dist/{chunk-SZ2K3MHL.js → chunk-S56VYR4Q.js} +8 -11
- package/dist/{chunk-SZ2K3MHL.js.map → chunk-S56VYR4Q.js.map} +1 -1
- package/dist/{chunk-7NXHMW6Y.js → chunk-SYS46BL7.js} +2 -2
- package/dist/{chunk-55LKVALY.js → chunk-T7IR4N2S.js} +1 -3
- package/dist/chunk-T7IR4N2S.js.map +1 -0
- package/dist/{chunk-A67356IR.js → chunk-T7JGWTES.js} +33 -8
- package/dist/chunk-T7JGWTES.js.map +1 -0
- package/dist/{chunk-WHJKIZS7.js → chunk-TDSN2O2V.js} +27 -149
- package/dist/chunk-TDSN2O2V.js.map +1 -0
- package/dist/{chunk-747LRSOO.js → chunk-TMBSPLUG.js} +2 -2
- package/dist/{chunk-LWSJG3LI.js → chunk-TQPASLY4.js} +7 -3
- package/dist/chunk-TQPASLY4.js.map +1 -0
- package/dist/{chunk-WKPJXWKR.js → chunk-TX5MKAHA.js} +3 -3
- package/dist/{chunk-HFQ6LGIO.js → chunk-U27Y4DJZ.js} +12 -10
- package/dist/{chunk-HFQ6LGIO.js.map → chunk-U27Y4DJZ.js.map} +1 -1
- package/dist/{chunk-E6427JU2.js → chunk-VVSOPRUE.js} +18 -2
- package/dist/chunk-VVSOPRUE.js.map +1 -0
- package/dist/{chunk-7G6VDWXB.js → chunk-WVE6YKMX.js} +3 -3
- package/dist/chunk-WVE6YKMX.js.map +1 -0
- package/dist/{chunk-GLKDWWNO.js → chunk-YALD3SST.js} +16 -14
- package/dist/chunk-YALD3SST.js.map +1 -0
- package/dist/{chunk-NJDQ4YSV.js → chunk-YKXZHUOW.js} +4 -4
- package/dist/{chunk-VW6ZZGCG.js → chunk-ZLHHE5XZ.js} +3 -3
- package/dist/{chunk-FUHKW252.js → chunk-ZZXLB6AS.js} +2 -2
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-FTOX7Q5L.js → classified-marker-NA6HUV33.js} +3 -3
- package/dist/collection-facade-VBM35WAH.js +45 -0
- package/dist/{computed-6G5M3UPH.js → computed-GSTLWSY5.js} +3 -3
- package/dist/consent/index.js +10 -10
- package/dist/cover/index.js +10 -3
- package/dist/custody/index.js +11 -11
- package/dist/{dead-filter-ENRIOQIE.js → dead-filter-UALP5DJX.js} +2 -2
- package/dist/debug/index.js +1 -1
- package/dist/{delegation-SSEPLXXO.js → delegation-JLNXM7KH.js} +24 -23
- package/dist/delegation-JLNXM7KH.js.map +1 -0
- package/dist/derivations/index.js +12 -12
- package/dist/derive-YUO3TQYN.js +22 -0
- package/dist/directory/index.js +10 -10
- package/dist/{dispatch-RE74SH6L.js → dispatch-4ZHLSFZQ.js} +5 -5
- package/dist/{dispatch-BDVGYC6X.js → dispatch-77CB75KB.js} +18 -18
- package/dist/{enclave-52VUXNRL.js → enclave-O4NOROCJ.js} +27 -9
- package/dist/executor-CZDXBXKE.js +29 -0
- package/dist/executor-DVJAWN3B.js +9 -0
- package/dist/executor-VRLG4TQJ.js +9 -0
- package/dist/export-accessible-UXSMG7AB.js +23 -0
- package/dist/extract-partition-TVY7AMKH.js +38 -0
- package/dist/{fanout-sidecar-DTBIDOWF.js → fanout-sidecar-NLQ7QAYW.js} +18 -27
- package/dist/fanout-sidecar-NLQ7QAYW.js.map +1 -0
- package/dist/find-WSARMJBW.js +11 -0
- package/dist/forget/index.js +9 -9
- package/dist/guards/index.js +7 -7
- package/dist/history/index.js +23 -20
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +14 -14
- package/dist/index.d.ts +33 -15
- package/dist/index.js +187 -191
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +2 -2
- package/dist/introspection/index.js +11 -11
- package/dist/issue-3JNJNPT3.js +19 -0
- package/dist/kernel/constants.d.ts +18 -0
- package/dist/kernel/enclave/crypto.d.ts +24 -4
- package/dist/kernel/enclave/index.d.ts +9 -2
- package/dist/kernel/enclave/record-aad.d.ts +131 -0
- package/dist/kernel/enclave/record-envelope.d.ts +76 -0
- package/dist/kernel/enclave/record-keys/envelope-body.d.ts +34 -2
- package/dist/kernel/enclave/record-keys/lifecycle.d.ts +22 -5
- package/dist/kernel/enclave/record-keys/record-codec.d.ts +47 -14
- package/dist/kernel/enclave/record-keys/rekey-blob.d.ts +88 -0
- package/dist/kernel/enclave/record-keys/rekey.d.ts +68 -0
- package/dist/kernel/enclave/record-keys/tombstone.d.ts +3 -2
- package/dist/kernel/errors.d.ts +71 -12
- package/dist/kernel/merge-authority.d.ts +25 -0
- package/dist/kernel/noydb.d.ts +27 -4
- package/dist/kernel/query/builder.d.ts +15 -2
- package/dist/kernel/query/join.d.ts +27 -0
- package/dist/kernel/sync-policy.d.ts +0 -2
- package/dist/kernel/tier-visibility.d.ts +15 -0
- package/dist/kernel/types.d.ts +145 -12
- package/dist/kernel/vault.d.ts +22 -18
- package/dist/kernel/via/index.d.ts +11 -2
- package/dist/{ledger-4WJL66BW.js → ledger-MVPNG5OS.js} +11 -11
- package/dist/liberate-4LOJOLDT.js +24 -0
- package/dist/{link-set-N4ZPV6E6.js → link-set-3POMQR3I.js} +11 -11
- package/dist/{managed-secret-OTHS64IF.js → managed-secret-IARIJJ7Q.js} +11 -3
- package/dist/materialized-views/index.js +22 -21
- package/dist/migrate-cek-XM2ETTZW.js +19 -0
- package/dist/migrate-cek-XM2ETTZW.js.map +1 -0
- package/dist/money/index.js +12 -8
- package/dist/noydb-IRILUDED.js +84 -0
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +22 -12
- package/dist/pod/index.js +75 -86
- package/dist/pod-handle-MELERCKU.js +41 -0
- package/dist/pod-handle-MELERCKU.js.map +1 -0
- package/dist/policy/index.js +11 -4
- package/dist/port/to/index.d.ts +4 -4
- package/dist/port/to/locator.d.ts +54 -8
- package/dist/port/with/i18n-strategy.d.ts +4 -1
- package/dist/port/with/lookup-strategy.d.ts +4 -1
- package/dist/port/with/merge-authority.d.ts +52 -0
- package/dist/port/with/service-bus.d.ts +0 -4
- package/dist/port/with/strategies.d.ts +2 -0
- package/dist/port/with/team-strategy.d.ts +5 -1
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-ZAG2CAIY.js → post-register-Z5T7FY45.js} +6 -6
- package/dist/query/index.js +3 -3
- package/dist/reduce/index.js +4 -4
- package/dist/register-UZ37QPDB.js +32 -0
- package/dist/registry-ETJNA7PO.js +9 -0
- package/dist/registry-F7U6KSLX.js +9 -0
- package/dist/registry-L4ELKX6C.js +18 -0
- package/dist/registry-SDT5LIGO.js +19 -0
- package/dist/request-withdrawal-PVFEYX57.js +31 -0
- package/dist/{reveal-CMOJY4VO.js → reveal-DQ2E3QAZ.js} +6 -6
- package/dist/revoke-YXY6SHUH.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/schema-update/index.js +2 -2
- package/dist/sealed-record/index.js +20 -13
- package/dist/sealed-record/index.js.map +1 -1
- package/dist/search/index.js +4 -4
- package/dist/{seed-UK4QRIUN.js → seed-DZ4ORU5N.js} +19 -22
- package/dist/seed-DZ4ORU5N.js.map +1 -0
- package/dist/sequence/index.js +9 -9
- package/dist/session/index.js +10 -10
- package/dist/shadow/index.js +2 -2
- package/dist/share-link/index.js +1 -1
- package/dist/signer-Q7XQBMPA.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/snapshots/index.js.map +1 -1
- package/dist/{stale-ZWXSOWJI.js → stale-NI7SAXAZ.js} +10 -10
- package/dist/storage-3VNGSHXS.js +23 -0
- package/dist/{store-coordination-provider-PB6QZ57W.js → store-coordination-provider-TYKNR3OU.js} +18 -12
- package/dist/store-coordination-provider-TYKNR3OU.js.map +1 -0
- package/dist/sync/index.js +11 -11
- package/dist/team/index.js +15 -14
- package/dist/tiers/index.js +11 -10
- package/dist/to/index.js +17 -9
- package/dist/to/index.js.map +1 -1
- package/dist/transactions/index.js +4 -4
- package/dist/{ulid-PTAIMDG4.js → ulid-VQW6ERQN.js} +2 -2
- package/dist/util/index.js +1 -1
- package/dist/vault-head/index.js +115 -0
- package/dist/vault-head/index.js.map +1 -0
- package/dist/{verify-RO5RTZOJ.js → verify-6J2YLKSO.js} +5 -5
- package/dist/via/lookup/handle.d.ts +4 -1
- package/dist/via/money/exact.d.ts +44 -0
- package/dist/via/money/index.d.ts +2 -0
- package/dist/via/money/normalize.d.ts +20 -0
- package/dist/walk-WRA7RAPY.js +21 -0
- package/dist/with-audit/guards/immutable-guard.d.ts +14 -0
- package/dist/with-audit/periods/active.d.ts +28 -1
- package/dist/with-audit/periods/index.d.ts +4 -2
- package/dist/with-audit/periods/periods.d.ts +161 -6
- package/dist/with-audit/periods/strategy.d.ts +14 -5
- package/dist/with-audit/periods/vault-facade.d.ts +89 -10
- package/dist/with-audit/periods/window.d.ts +10 -0
- package/dist/with-audit/sealed-record/index.d.ts +13 -0
- package/dist/with-audit/tiers/index.d.ts +17 -2
- package/dist/with-cargo/adopt-partition.d.ts +1 -1
- package/dist/with-cargo/extract-partition.d.ts +1 -1
- package/dist/with-cargo/index.d.ts +2 -2
- package/dist/with-commit/history/history.d.ts +26 -0
- package/dist/with-commit/history/index.d.ts +2 -1
- package/dist/with-commit/history/ledger/store.d.ts +7 -1
- package/dist/with-commit/history/strategy.d.ts +11 -1
- package/dist/with-commit/numbering/index.d.ts +0 -5
- package/dist/with-commit/vault-head/active.d.ts +2 -0
- package/dist/with-commit/vault-head/head.d.ts +28 -0
- package/dist/with-commit/vault-head/index.d.ts +10 -0
- package/dist/with-commit/vault-head/strategy.d.ts +127 -0
- package/dist/with-commit/vault-head/verify.d.ts +90 -0
- package/dist/with-formula/materialized-views/types.d.ts +52 -0
- package/dist/with-party/directory/cover/storage.d.ts +0 -8
- package/dist/with-party/directory/storage.d.ts +0 -11
- package/dist/with-party/directory/visibility.d.ts +0 -21
- package/dist/with-party/policy/storage.d.ts +0 -10
- package/dist/with-party/team/index.d.ts +1 -1
- package/dist/with-party/team/keyring.d.ts +149 -3
- package/dist/with-party/team/noydb-facade.d.ts +5 -1
- package/dist/with-party/team/roster-tag.d.ts +101 -0
- package/dist/with-party/team/tiers.d.ts +2 -1
- package/dist/with-pod/format.d.ts +10 -12
- package/dist/with-pod/index.d.ts +10 -10
- package/dist/with-pod/open.d.ts +2 -2
- package/dist/with-pod/pod-handle.d.ts +19 -0
- package/dist/with-pod/pod-store.d.ts +0 -8
- package/dist/with-pod/{bundle.d.ts → pod.d.ts} +26 -19
- package/dist/with-pod/ulid.d.ts +1 -1
- package/dist/with-shape/blobs/blob-set.d.ts +2 -2
- package/dist/with-shape/introspection/index.d.ts +1 -0
- package/dist/with-sync/engine.d.ts +54 -5
- package/dist/with-sync/strategy.d.ts +3 -0
- package/dist/withdraw-accessible-4JTDFRFZ.js +28 -0
- package/package.json +13 -5
- package/dist/api-WVY3H3YH.js +0 -20
- package/dist/backup-YYBE5RPC.js.map +0 -1
- package/dist/bundle-handle-JEUWU2SJ.js +0 -36
- package/dist/bundle-handle-JEUWU2SJ.js.map +0 -1
- package/dist/chunk-26JMGSSC.js.map +0 -1
- package/dist/chunk-3737A6EA.js.map +0 -1
- package/dist/chunk-4MC5JRRX.js.map +0 -1
- package/dist/chunk-52QYGZHH.js.map +0 -1
- package/dist/chunk-55LKVALY.js.map +0 -1
- package/dist/chunk-5PR33AC4.js.map +0 -1
- package/dist/chunk-66W5OOCX.js.map +0 -1
- package/dist/chunk-7G6VDWXB.js.map +0 -1
- package/dist/chunk-A67356IR.js.map +0 -1
- package/dist/chunk-AFHQATY4.js +0 -47
- package/dist/chunk-AFHQATY4.js.map +0 -1
- package/dist/chunk-AHLJSVRL.js.map +0 -1
- package/dist/chunk-C2OOEM57.js.map +0 -1
- package/dist/chunk-DIMKRG2E.js +0 -131
- package/dist/chunk-DIMKRG2E.js.map +0 -1
- package/dist/chunk-E6427JU2.js.map +0 -1
- package/dist/chunk-E7OBCBXS.js.map +0 -1
- package/dist/chunk-EDXAQ6JI.js.map +0 -1
- package/dist/chunk-EP7VPR7Y.js.map +0 -1
- package/dist/chunk-ERB6NDDW.js.map +0 -1
- package/dist/chunk-G5APARUV.js.map +0 -1
- package/dist/chunk-GASWQ3XG.js.map +0 -1
- package/dist/chunk-GLKDWWNO.js.map +0 -1
- package/dist/chunk-HNGSV2YC.js.map +0 -1
- package/dist/chunk-I4F6PKUK.js.map +0 -1
- package/dist/chunk-I4ZAO7F7.js.map +0 -1
- package/dist/chunk-I6SDX7WX.js.map +0 -1
- package/dist/chunk-JXIDGFKS.js.map +0 -1
- package/dist/chunk-LWSJG3LI.js.map +0 -1
- package/dist/chunk-MWKDOHEF.js.map +0 -1
- package/dist/chunk-MZ5ZFO2D.js.map +0 -1
- package/dist/chunk-NIVEDYJZ.js.map +0 -1
- package/dist/chunk-NWCGDAV6.js +0 -45
- package/dist/chunk-NWCGDAV6.js.map +0 -1
- package/dist/chunk-PJNTR2NV.js.map +0 -1
- package/dist/chunk-PRDRGL73.js.map +0 -1
- package/dist/chunk-PY7CI6L5.js.map +0 -1
- package/dist/chunk-RKKORO4M.js.map +0 -1
- package/dist/chunk-TAGFGKHP.js.map +0 -1
- package/dist/chunk-TDJPS3T2.js.map +0 -1
- package/dist/chunk-TOAIYQJR.js.map +0 -1
- package/dist/chunk-UHXCLPGC.js.map +0 -1
- package/dist/chunk-UIBGXRDD.js.map +0 -1
- package/dist/chunk-V5KYPBUR.js.map +0 -1
- package/dist/chunk-VCETL77O.js.map +0 -1
- package/dist/chunk-VN45YLWM.js.map +0 -1
- package/dist/chunk-VOQW5LAM.js.map +0 -1
- package/dist/chunk-VRA4Q7DA.js.map +0 -1
- package/dist/chunk-VV4NSB7P.js.map +0 -1
- package/dist/chunk-W5W6KHN2.js.map +0 -1
- package/dist/chunk-WHJKIZS7.js.map +0 -1
- package/dist/chunk-WYZ5MYUA.js.map +0 -1
- package/dist/chunk-ZJADGNYF.js.map +0 -1
- package/dist/chunk-ZNACADFG.js.map +0 -1
- package/dist/collection-facade-QN5ULWYC.js +0 -45
- package/dist/delegation-SSEPLXXO.js.map +0 -1
- package/dist/derive-6V3PIZF7.js +0 -22
- package/dist/executor-CYJQLKKI.js +0 -9
- package/dist/executor-FHHLXO4Y.js +0 -28
- package/dist/executor-S4QIKEHW.js +0 -9
- package/dist/export-accessible-PE5AYKZR.js +0 -23
- package/dist/extract-partition-X2L26O6A.js +0 -38
- package/dist/fanout-sidecar-DTBIDOWF.js.map +0 -1
- package/dist/find-RBBYKXI7.js +0 -11
- package/dist/issue-RNU55YOF.js +0 -19
- package/dist/liberate-PX4CAT5V.js +0 -24
- package/dist/noydb-YPSEGK32.js +0 -83
- package/dist/register-TMD6YRCX.js +0 -32
- package/dist/registry-CZVINVQH.js +0 -9
- package/dist/registry-FVLDWQKT.js +0 -18
- package/dist/registry-IKUR2MXD.js +0 -9
- package/dist/registry-JET4HBLY.js +0 -19
- package/dist/request-withdrawal-RH55LNZL.js +0 -31
- package/dist/revoke-R5TBYVA6.js +0 -24
- package/dist/seed-UK4QRIUN.js.map +0 -1
- package/dist/signer-AGALOXOO.js +0 -25
- package/dist/storage-N7LB275C.js +0 -23
- package/dist/store-coordination-provider-PB6QZ57W.js.map +0 -1
- package/dist/walk-OCUHCYJ6.js +0 -21
- package/dist/with-pod/bundle-handle.d.ts +0 -9
- package/dist/withdraw-accessible-QQNWM5BO.js +0 -28
- /package/dist/{api-WVY3H3YH.js.map → api-EYNT6KGS.js.map} +0 -0
- /package/dist/{chunk-35EBKWQU.js.map → chunk-2LFOMUEA.js.map} +0 -0
- /package/dist/{chunk-OF3L2SD6.js.map → chunk-32B7VCKU.js.map} +0 -0
- /package/dist/{chunk-MSWYQLMQ.js.map → chunk-3B6S6RSI.js.map} +0 -0
- /package/dist/{chunk-7F4DBNSP.js.map → chunk-3O72ZD2E.js.map} +0 -0
- /package/dist/{chunk-FNSMZQS4.js.map → chunk-3PMFMUFX.js.map} +0 -0
- /package/dist/{chunk-FAXZQ5UF.js.map → chunk-4RAS6HN6.js.map} +0 -0
- /package/dist/{chunk-VMCCGUQB.js.map → chunk-6JPGVL7X.js.map} +0 -0
- /package/dist/{chunk-WLYIROCJ.js.map → chunk-6YD5SYQS.js.map} +0 -0
- /package/dist/{chunk-YAWK6AWF.js.map → chunk-7KAE7CQ2.js.map} +0 -0
- /package/dist/{chunk-NKH7GSIH.js.map → chunk-AUPSEJ7O.js.map} +0 -0
- /package/dist/{chunk-CCZJJ4I2.js.map → chunk-B6IYATME.js.map} +0 -0
- /package/dist/{chunk-4UVDI4XE.js.map → chunk-CLAHBPOI.js.map} +0 -0
- /package/dist/{chunk-HVQGCKY4.js.map → chunk-D3R7Q4QK.js.map} +0 -0
- /package/dist/{chunk-P7OG2ETF.js.map → chunk-DXKLLKME.js.map} +0 -0
- /package/dist/{chunk-JIUVJ4M7.js.map → chunk-EKEIEJL6.js.map} +0 -0
- /package/dist/{chunk-DG27IUVI.js.map → chunk-FS7NTGCJ.js.map} +0 -0
- /package/dist/{chunk-HXGUIPQB.js.map → chunk-GQXFOAYZ.js.map} +0 -0
- /package/dist/{chunk-BTVYJWSN.js.map → chunk-GTHVPVAR.js.map} +0 -0
- /package/dist/{chunk-DMQCLZ4Z.js.map → chunk-GWO2IDAB.js.map} +0 -0
- /package/dist/{chunk-6HFM7EIT.js.map → chunk-H3G4I3PN.js.map} +0 -0
- /package/dist/{chunk-VJFMXYKP.js.map → chunk-HR5R5JOM.js.map} +0 -0
- /package/dist/{chunk-FDX7OWWI.js.map → chunk-HYYVT2KZ.js.map} +0 -0
- /package/dist/{chunk-JRCYZEHU.js.map → chunk-I6QKB7MT.js.map} +0 -0
- /package/dist/{chunk-KUDZVJKQ.js.map → chunk-IJ46VCWD.js.map} +0 -0
- /package/dist/{chunk-4HDYQL3J.js.map → chunk-INMHEMXX.js.map} +0 -0
- /package/dist/{chunk-AR2JDFAE.js.map → chunk-KV6JM2IA.js.map} +0 -0
- /package/dist/{chunk-PVU7LW5L.js.map → chunk-KX57HODD.js.map} +0 -0
- /package/dist/{chunk-CEJWMBXO.js.map → chunk-LXECF2ZR.js.map} +0 -0
- /package/dist/{chunk-7VHY5E3X.js.map → chunk-MSLPDFK2.js.map} +0 -0
- /package/dist/{chunk-HNHCQ556.js.map → chunk-NR2SUJ3H.js.map} +0 -0
- /package/dist/{chunk-W3TVWF6N.js.map → chunk-OIBEJN5H.js.map} +0 -0
- /package/dist/{chunk-QD724WDJ.js.map → chunk-OMYCSTXL.js.map} +0 -0
- /package/dist/{chunk-Z45YRGFO.js.map → chunk-ONVD6GBY.js.map} +0 -0
- /package/dist/{chunk-KCQX65FU.js.map → chunk-RKCRPPNB.js.map} +0 -0
- /package/dist/{chunk-7TSYBD3E.js.map → chunk-RSXQNFGO.js.map} +0 -0
- /package/dist/{chunk-7NXHMW6Y.js.map → chunk-SYS46BL7.js.map} +0 -0
- /package/dist/{chunk-747LRSOO.js.map → chunk-TMBSPLUG.js.map} +0 -0
- /package/dist/{chunk-WKPJXWKR.js.map → chunk-TX5MKAHA.js.map} +0 -0
- /package/dist/{chunk-NJDQ4YSV.js.map → chunk-YKXZHUOW.js.map} +0 -0
- /package/dist/{chunk-VW6ZZGCG.js.map → chunk-ZLHHE5XZ.js.map} +0 -0
- /package/dist/{chunk-FUHKW252.js.map → chunk-ZZXLB6AS.js.map} +0 -0
- /package/dist/{classified-marker-FTOX7Q5L.js.map → classified-marker-NA6HUV33.js.map} +0 -0
- /package/dist/{collection-facade-QN5ULWYC.js.map → collection-facade-VBM35WAH.js.map} +0 -0
- /package/dist/{computed-6G5M3UPH.js.map → computed-GSTLWSY5.js.map} +0 -0
- /package/dist/{dead-filter-ENRIOQIE.js.map → dead-filter-UALP5DJX.js.map} +0 -0
- /package/dist/{derive-6V3PIZF7.js.map → derive-YUO3TQYN.js.map} +0 -0
- /package/dist/{dispatch-RE74SH6L.js.map → dispatch-4ZHLSFZQ.js.map} +0 -0
- /package/dist/{dispatch-BDVGYC6X.js.map → dispatch-77CB75KB.js.map} +0 -0
- /package/dist/{enclave-52VUXNRL.js.map → enclave-O4NOROCJ.js.map} +0 -0
- /package/dist/{executor-CYJQLKKI.js.map → executor-CZDXBXKE.js.map} +0 -0
- /package/dist/{executor-FHHLXO4Y.js.map → executor-DVJAWN3B.js.map} +0 -0
- /package/dist/{executor-S4QIKEHW.js.map → executor-VRLG4TQJ.js.map} +0 -0
- /package/dist/{export-accessible-PE5AYKZR.js.map → export-accessible-UXSMG7AB.js.map} +0 -0
- /package/dist/{extract-partition-X2L26O6A.js.map → extract-partition-TVY7AMKH.js.map} +0 -0
- /package/dist/{find-RBBYKXI7.js.map → find-WSARMJBW.js.map} +0 -0
- /package/dist/{issue-RNU55YOF.js.map → issue-3JNJNPT3.js.map} +0 -0
- /package/dist/{ledger-4WJL66BW.js.map → ledger-MVPNG5OS.js.map} +0 -0
- /package/dist/{liberate-PX4CAT5V.js.map → liberate-4LOJOLDT.js.map} +0 -0
- /package/dist/{link-set-N4ZPV6E6.js.map → link-set-3POMQR3I.js.map} +0 -0
- /package/dist/{managed-secret-OTHS64IF.js.map → managed-secret-IARIJJ7Q.js.map} +0 -0
- /package/dist/{noydb-YPSEGK32.js.map → noydb-IRILUDED.js.map} +0 -0
- /package/dist/{post-register-ZAG2CAIY.js.map → post-register-Z5T7FY45.js.map} +0 -0
- /package/dist/{register-TMD6YRCX.js.map → register-UZ37QPDB.js.map} +0 -0
- /package/dist/{registry-CZVINVQH.js.map → registry-ETJNA7PO.js.map} +0 -0
- /package/dist/{registry-FVLDWQKT.js.map → registry-F7U6KSLX.js.map} +0 -0
- /package/dist/{registry-IKUR2MXD.js.map → registry-L4ELKX6C.js.map} +0 -0
- /package/dist/{registry-JET4HBLY.js.map → registry-SDT5LIGO.js.map} +0 -0
- /package/dist/{request-withdrawal-RH55LNZL.js.map → request-withdrawal-PVFEYX57.js.map} +0 -0
- /package/dist/{reveal-CMOJY4VO.js.map → reveal-DQ2E3QAZ.js.map} +0 -0
- /package/dist/{revoke-R5TBYVA6.js.map → revoke-YXY6SHUH.js.map} +0 -0
- /package/dist/{signer-AGALOXOO.js.map → signer-Q7XQBMPA.js.map} +0 -0
- /package/dist/{stale-ZWXSOWJI.js.map → stale-NI7SAXAZ.js.map} +0 -0
- /package/dist/{storage-N7LB275C.js.map → storage-3VNGSHXS.js.map} +0 -0
- /package/dist/{ulid-PTAIMDG4.js.map → ulid-VQW6ERQN.js.map} +0 -0
- /package/dist/{verify-RO5RTZOJ.js.map → verify-6J2YLKSO.js.map} +0 -0
- /package/dist/{walk-OCUHCYJ6.js.map → walk-WRA7RAPY.js.map} +0 -0
- /package/dist/{withdraw-accessible-QQNWM5BO.js.map → withdraw-accessible-4JTDFRFZ.js.map} +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MergeAuthority } from '../port/with/merge-authority.js';
|
|
2
|
+
import type { EnclaveKey } from './enclave/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* ⚠️ **A client cannot verify what it cannot decrypt** — and that boundary is
|
|
5
|
+
* stated here rather than hidden.
|
|
6
|
+
*
|
|
7
|
+
* A record at a tier this caller holds no key for is accepted **unverified**.
|
|
8
|
+
* Rejecting it would break replication of data the peer legitimately holds but
|
|
9
|
+
* this client is not cleared to read, converting a confidentiality boundary
|
|
10
|
+
* into a replication failure. The residue is narrow: envelopes whose key the
|
|
11
|
+
* client lacks are pass-through, exactly as every envelope was before #1042.
|
|
12
|
+
*
|
|
13
|
+
* Closing that residue needs the vault head (#1044), which can detect absence
|
|
14
|
+
* and substitution without holding the key.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildMergeAuthority(
|
|
17
|
+
/**
|
|
18
|
+
* Just the DEK map, not the whole keyring. `port-layering` refused a type
|
|
19
|
+
* import of `UnlockedKeyring` from `with-party` — correctly, and the narrower
|
|
20
|
+
* shape is better anyway: this needs to look up keys, not to know what a
|
|
21
|
+
* keyring is.
|
|
22
|
+
*/
|
|
23
|
+
keyring: {
|
|
24
|
+
readonly deks: ReadonlyMap<string, EnclaveKey>;
|
|
25
|
+
}): MergeAuthority;
|
package/dist/kernel/noydb.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { RotateResult } from '../with-party/team/keyring.js';
|
|
2
|
-
import type { NoydbOptions, NoydbEventMap, GrantOptions, RevokeOptions, UpdateUserOptions, UserInfo, PushResult, PullResult, PushOptions, PullOptions, SyncStatus, SyncTargetInfo, NoydbStore, AccessibleVault, ListAccessibleVaultsOptions, QueryAcrossOptions, QueryAcrossResult, TranslatorAuditEntry, WriteConflict, UserApiFactory, ActiveTier, FactorProofBundle, GateName, VaultPolicy } from './types.js';
|
|
1
|
+
import type { RotateResult, RosterVerifyResult, QuarantineResult } from '../with-party/team/keyring.js';
|
|
2
|
+
import type { NoydbOptions, NoydbEventMap, GrantOptions, RevokeOptions, UpdateUserOptions, UserInfo, PushResult, PullResult, PushOptions, PullOptions, SyncStatus, SyncTargetInfo, SyncTargetStatus, NoydbStore, AccessibleVault, ListAccessibleVaultsOptions, QueryAcrossOptions, QueryAcrossResult, TranslatorAuditEntry, WriteConflict, UserApiFactory, ActiveTier, FactorProofBundle, GateName, VaultPolicy } from './types.js';
|
|
3
3
|
import type { SecretPolicy } from './validation.js';
|
|
4
4
|
import { type CoordinationProvider } from '../port/by/default-provider.js';
|
|
5
5
|
import type { Cover } from '../with-party/directory/cover/types.js';
|
|
@@ -282,8 +282,8 @@ export declare class Noydb {
|
|
|
282
282
|
* collection) pair that was dropped. Re-run `grant()` for those pairs, or
|
|
283
283
|
* they stay locked out.
|
|
284
284
|
*
|
|
285
|
-
* Unlike `revoke(
|
|
286
|
-
*
|
|
285
|
+
* Unlike `revoke()`, this call does not REMOVE any user from the vault —
|
|
286
|
+
* they keep membership and their other collections.
|
|
287
287
|
* This is the "just rotate" path; "revoke and rotate" lives in `revoke()`.
|
|
288
288
|
*
|
|
289
289
|
* Exposed on Noydb (rather than only on the lower-level keyring
|
|
@@ -292,6 +292,23 @@ export declare class Noydb {
|
|
|
292
292
|
* Opt-in (#267): throws {@link TeamNotEnabledError} without `withTeam()`.
|
|
293
293
|
*/
|
|
294
294
|
rotate(vault: string, collections: string[]): Promise<RotateResult>;
|
|
295
|
+
/**
|
|
296
|
+
* Verify every `_keyring` file in the vault. Read-only (#1121).
|
|
297
|
+
*
|
|
298
|
+
* Names each failing file and why, so the bad one need not be found by trial.
|
|
299
|
+
* Reports `checked` too: "nothing unverified" is equally true of a sweep that
|
|
300
|
+
* examined nothing.
|
|
301
|
+
*/
|
|
302
|
+
verifyRoster(vault: string): Promise<RosterVerifyResult>;
|
|
303
|
+
/**
|
|
304
|
+
* Remove a `_keyring` file that cannot be authenticated, and re-key behind it
|
|
305
|
+
* (#1121). Owner-only; refuses a file that verifies (use {@link revoke}).
|
|
306
|
+
*
|
|
307
|
+
* `revoke` consults the target's own `role`, so it cannot act on a file it
|
|
308
|
+
* will not trust. This ignores every claim the file makes — which is exactly
|
|
309
|
+
* why it is restricted to files that already fail authentication.
|
|
310
|
+
*/
|
|
311
|
+
quarantineKeyring(vault: string, userId: string, factors?: FactorProofBundle): Promise<QuarantineResult>;
|
|
295
312
|
/** List all users with access to a vault. */
|
|
296
313
|
listUsers(vault: string): Promise<UserInfo[]>;
|
|
297
314
|
/**
|
|
@@ -549,6 +566,12 @@ export declare class Noydb {
|
|
|
549
566
|
_clearActiveTxContext(ctx: TxContext): void;
|
|
550
567
|
/** Get sync status for a vault. */
|
|
551
568
|
syncStatus(vault: string): SyncStatus;
|
|
569
|
+
/**
|
|
570
|
+
* Per-target sync state for `vault` (#1034) — `syncStatus()` reads only the
|
|
571
|
+
* primary engine, so it cannot express "the LAN store is behind, the cloud
|
|
572
|
+
* is current". Registration order, primary first. See {@link SyncTargetStatus}.
|
|
573
|
+
*/
|
|
574
|
+
syncTargetStatus(vault: string): SyncTargetStatus[];
|
|
552
575
|
/**
|
|
553
576
|
* Enumerate the sync targets wired for `vault` (#948) — the primary engine
|
|
554
577
|
* (keyed by vault name) plus any additional targets (keyed `vault::label`
|
|
@@ -309,6 +309,12 @@ export declare class Query<T, S extends keyof T = never, Q extends keyof T & str
|
|
|
309
309
|
toArray(opts?: {
|
|
310
310
|
locale?: string;
|
|
311
311
|
}): T[];
|
|
312
|
+
/**
|
|
313
|
+
* Joins need a `JoinContext`. Unreachable in practice — `.join()` throws
|
|
314
|
+
* when one is missing — but belt-and-braces for a plan built through the
|
|
315
|
+
* raw `Query` constructor with joins pre-populated.
|
|
316
|
+
*/
|
|
317
|
+
private requireJoinContext;
|
|
312
318
|
/**
|
|
313
319
|
* Decode this source's Via-covered fields on read (e.g. money: stored
|
|
314
320
|
* scaled-int → canonical decimal), so `query().toArray()` agrees with
|
|
@@ -330,12 +336,19 @@ export declare class Query<T, S extends keyof T = never, Q extends keyof T & str
|
|
|
330
336
|
}): T | null;
|
|
331
337
|
/**
|
|
332
338
|
* Return the number of matching records (after where/filter,
|
|
333
|
-
* before limit). **Joins are NOT applied** — count() reports the
|
|
334
|
-
* left-side cardinality, because joins
|
|
339
|
+
* before limit). **Joins are normally NOT applied** — count() reports the
|
|
340
|
+
* left-side cardinality, because joins are projection-only
|
|
335
341
|
* (they attach an aliased field; they never filter). Running joins
|
|
336
342
|
* here just to discard the aliases would be wasteful, and in strict
|
|
337
343
|
* mode it could throw `DanglingReferenceError` for a call whose
|
|
338
344
|
* intent is purely to count.
|
|
345
|
+
*
|
|
346
|
+
* The exception (#1030) is a `where` clause addressing a join alias. Then
|
|
347
|
+
* the legs must run, because the predicate is part of what is being
|
|
348
|
+
* counted — skipping them would report the unfiltered left cardinality.
|
|
349
|
+
* A strict-mode `DanglingReferenceError` becomes reachable from `count()`
|
|
350
|
+
* in exactly that case, which is acceptable: the caller asked to filter on
|
|
351
|
+
* the joined side, so they asked for the join.
|
|
339
352
|
*/
|
|
340
353
|
count(): number;
|
|
341
354
|
/**
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
* including joined reads.
|
|
46
46
|
*/
|
|
47
47
|
import type { RefDescriptor, RefMode } from '../refs.js';
|
|
48
|
+
import type { Clause } from './predicate.js';
|
|
48
49
|
/** Planner strategy for a single join leg. Auto-selected unless overridden. */
|
|
49
50
|
export type JoinStrategy = 'hash' | 'nested';
|
|
50
51
|
/** Default per-side row ceiling before `.join()` throws `JoinTooLargeError`. */
|
|
@@ -168,6 +169,32 @@ export interface JoinContext {
|
|
|
168
169
|
*/
|
|
169
170
|
resolveDictSource?(field: string): JoinableSource | null;
|
|
170
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Split a plan's clauses into those evaluable before the join legs run and
|
|
174
|
+
* those that need the joined shape (#1030).
|
|
175
|
+
*
|
|
176
|
+
* Join legs attach after `where` so the left set can be narrowed (and
|
|
177
|
+
* index-driven) first. That is the right default, but it silently broke any
|
|
178
|
+
* predicate addressing a joined alias: the field did not exist yet, so
|
|
179
|
+
* `readPath` returned `undefined`, nothing matched, and the query returned an
|
|
180
|
+
* empty result with no error.
|
|
181
|
+
*
|
|
182
|
+
* The split is deliberately narrow. When no clause addresses an alias — every
|
|
183
|
+
* query written against the previous behaviour — `postJoin` is empty and the
|
|
184
|
+
* caller takes its original path unchanged. The reordered pipeline therefore
|
|
185
|
+
* only ever runs for queries that match nothing today.
|
|
186
|
+
*
|
|
187
|
+
* KNOWN RESIDUAL: `.filter(r => r.client?.name === 'Ann')` cannot be
|
|
188
|
+
* classified (the predicate is a closure), so it still runs pre-join and still
|
|
189
|
+
* sees no alias. Prefer `.where()` for anything addressing a joined field.
|
|
190
|
+
*
|
|
191
|
+
* Shared by the eager `Query` and the streaming `ScanBuilder` so the two
|
|
192
|
+
* cannot drift on which side a clause belongs to.
|
|
193
|
+
*/
|
|
194
|
+
export declare function splitAroundJoins(clauses: readonly Clause[], joins: readonly JoinLeg[]): {
|
|
195
|
+
readonly preJoin: readonly Clause[];
|
|
196
|
+
readonly postJoin: readonly Clause[];
|
|
197
|
+
};
|
|
171
198
|
/**
|
|
172
199
|
* Apply every join leg in the plan against a base set of left-side
|
|
173
200
|
* rows. Called by the query executor after `where` / `orderBy` /
|
|
@@ -119,8 +119,6 @@ export interface SyncPolicy {
|
|
|
119
119
|
export declare const INDEXED_STORE_POLICY: SyncPolicy;
|
|
120
120
|
/** Default for bundle stores (Drive, WebDAV, Git). */
|
|
121
121
|
export declare const POD_STORE_POLICY: SyncPolicy;
|
|
122
|
-
/** @deprecated Use `POD_STORE_POLICY`. */
|
|
123
|
-
export declare const BUNDLE_STORE_POLICY: SyncPolicy;
|
|
124
122
|
/**
|
|
125
123
|
* Current operational state of the `SyncScheduler`.
|
|
126
124
|
*
|
|
@@ -52,3 +52,18 @@ export declare function assertTierWritable(adapter: NoydbStore, vault: string, n
|
|
|
52
52
|
* explicit for concurrent writes generally.
|
|
53
53
|
*/
|
|
54
54
|
export declare function assertCutoverTierSafe(adapter: NoydbStore, vault: string, name: string, tiersEnabled: boolean): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* The key a collection's DEK is stored under in `UnlockedKeyring.deks` for a
|
|
57
|
+
* given tier: `collection` at tier 0, `collection#N` above it.
|
|
58
|
+
*
|
|
59
|
+
* Lives in the kernel because the `deks` map is a kernel type and the kernel
|
|
60
|
+
* reads it — `noydb.ts` needs this to resolve the right DEK when verifying a
|
|
61
|
+
* pulled envelope (#1042). `with-party/team/tiers.ts` re-exports it, so every
|
|
62
|
+
* existing importer is unchanged; the definition simply moved to the layer that
|
|
63
|
+
* owns the map rather than one that happens to use it.
|
|
64
|
+
*
|
|
65
|
+
* This move was forced by `port-layering`, and rightly: the alternative was the
|
|
66
|
+
* kernel spine statically importing a `with-*` service, or duplicating the
|
|
67
|
+
* naming convention in two places where it could drift.
|
|
68
|
+
*/
|
|
69
|
+
export declare function dekKey(collection: string, tier: number): string;
|
package/dist/kernel/types.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ import type { PeriodsStrategy } from '../with-audit/periods/strategy.js';
|
|
|
34
34
|
import type { ShadowStrategy } from '../with-fork/shadow/strategy.js';
|
|
35
35
|
import type { TransactionsStrategy } from '../with-commit/tx/strategy.js';
|
|
36
36
|
import type { HistoryStrategy } from '../with-commit/history/strategy.js';
|
|
37
|
+
import type { VaultHeadStrategy } from '../with-commit/vault-head/strategy.js';
|
|
37
38
|
import type { ForgetStrategy } from '../with-audit/forget/strategy.js';
|
|
38
39
|
import type { SnapshotsStrategy } from '../with-fork/snapshots/strategy.js';
|
|
39
40
|
import type { DerivationSkippedFrozen } from './via/dispatch.js';
|
|
@@ -908,6 +909,21 @@ export interface KeyringFile {
|
|
|
908
909
|
readonly role: Role;
|
|
909
910
|
readonly permissions: Permissions;
|
|
910
911
|
readonly deks: Record<string, string>;
|
|
912
|
+
/**
|
|
913
|
+
* DEKs for a rotation that has STARTED but not committed (#1074).
|
|
914
|
+
*
|
|
915
|
+
* `rotateKeys` persists the new DEK here *before* rewriting any record, so an
|
|
916
|
+
* interruption can never strand records under a key that was only ever in
|
|
917
|
+
* memory. On commit these move into `deks` and this is cleared.
|
|
918
|
+
*
|
|
919
|
+
* Present on disk ⇒ a rotation was interrupted and the collection may hold
|
|
920
|
+
* records on both sides of the migration. Re-running `rotateKeys` resumes
|
|
921
|
+
* with this key rather than minting a fresh one.
|
|
922
|
+
*
|
|
923
|
+
* Optional: absent on every keyring written before this existed, and absent
|
|
924
|
+
* in the normal committed state.
|
|
925
|
+
*/
|
|
926
|
+
readonly pending_deks?: Record<string, string>;
|
|
911
927
|
readonly salt: string;
|
|
912
928
|
readonly created_at: string;
|
|
913
929
|
readonly granted_by: string;
|
|
@@ -915,17 +931,31 @@ export interface KeyringFile {
|
|
|
915
931
|
* Secret canary — base64 AES-KW-wrapped form of a known constant
|
|
916
932
|
* 256-bit value, wrapped under the keyring's KEK.
|
|
917
933
|
*
|
|
918
|
-
*
|
|
919
|
-
*
|
|
920
|
-
*
|
|
921
|
-
* from corruption even when ALL DEKs (including a single-DEK keyring's
|
|
922
|
-
* sole DEK) are corrupted.
|
|
934
|
+
* Lets `loadKeyring` distinguish wrong-secret from corruption even when
|
|
935
|
+
* ALL DEKs (including a single-DEK keyring's sole DEK) are corrupted: the
|
|
936
|
+
* canary unwrapping proves the KEK correct independent of any DEK byte.
|
|
923
937
|
*
|
|
924
938
|
* AES-KW is deterministic — every write site mints fresh on each
|
|
925
939
|
* persist; same KEK + same constant input always produces the same
|
|
926
940
|
* ciphertext, so this round-trips without state.
|
|
941
|
+
*
|
|
942
|
+
* REQUIRED as of #1096 (no-legacy policy): the pre-canary fallback
|
|
943
|
+
* heuristic is deleted, so an absent canary is not an old file, it is a
|
|
944
|
+
* store that stripped the field — `KeyringTamperedError('canary-missing')`.
|
|
927
945
|
*/
|
|
928
|
-
readonly canary
|
|
946
|
+
readonly canary: string;
|
|
947
|
+
/**
|
|
948
|
+
* #1096 — AES-GCM({iv,data}) of the canonical authority fields
|
|
949
|
+
* (user_id, role, permissions, granted_by, expires_at, capabilities)
|
|
950
|
+
* under the vault roster key (carried as `deks[ROSTER_KEY_ID]`).
|
|
951
|
+
* Required: a valid canary with a missing or mismatching tag is refused
|
|
952
|
+
* as KeyringTamperedError — absence must itself be an error, or a store
|
|
953
|
+
* opts out of verification by deleting a plaintext field.
|
|
954
|
+
*/
|
|
955
|
+
readonly roster_tag: {
|
|
956
|
+
readonly iv: string;
|
|
957
|
+
readonly data: string;
|
|
958
|
+
};
|
|
929
959
|
/**
|
|
930
960
|
* Tier-2 authenticator slots (multi-slot keyring extension).
|
|
931
961
|
* Optional / append-only: keyring files written before the
|
|
@@ -956,7 +986,7 @@ export interface KeyringFile {
|
|
|
956
986
|
* "this slot works for 30 days then becomes opaque to its holder."
|
|
957
987
|
*
|
|
958
988
|
* Absent on live keyrings written via `db.grant()` — the field is
|
|
959
|
-
* meaningful for `
|
|
989
|
+
* meaningful for `PodRecipient` slots produced by
|
|
960
990
|
* `writePod({ recipients: [...] })`. Setting it on a live
|
|
961
991
|
* keyring is allowed but unusual.
|
|
962
992
|
*/
|
|
@@ -1284,9 +1314,38 @@ export interface SyncTransactionResult {
|
|
|
1284
1314
|
}
|
|
1285
1315
|
export interface SyncStatus {
|
|
1286
1316
|
readonly dirty: number;
|
|
1317
|
+
/**
|
|
1318
|
+
* ISO 8601 timestamp of the last push that completed with **no errors**, or
|
|
1319
|
+
* `null` if none ever has (#1036). A failed attempt does not advance it — so
|
|
1320
|
+
* this answers "when did my data last reach the remote?", which is the reading
|
|
1321
|
+
* the name invites and the one the field previously did not honour.
|
|
1322
|
+
*/
|
|
1287
1323
|
readonly lastPush: string | null;
|
|
1324
|
+
/** As {@link SyncStatus.lastPush}, for pulls: last pull that had no errors. */
|
|
1288
1325
|
readonly lastPull: string | null;
|
|
1326
|
+
/**
|
|
1327
|
+
* Whether the **browser** reports network connectivity — driven solely by the
|
|
1328
|
+
* global `online`/`offline` events (#1034). It is NOT target reachability: an
|
|
1329
|
+
* unreachable store never flips it, and losing Wi-Fi flips it for every target
|
|
1330
|
+
* at once. To detect a failing target, read {@link SyncStatus.lastError}.
|
|
1331
|
+
*/
|
|
1289
1332
|
readonly online: boolean;
|
|
1333
|
+
/**
|
|
1334
|
+
* The failure that ended the most recent push/pull, cleared by the next
|
|
1335
|
+
* success (#1036). **Absent** when nothing has failed since the last success —
|
|
1336
|
+
* so `lastPush: null` with no `lastError` means "never synced", while
|
|
1337
|
+
* `lastPush` set plus a `lastError` means "synced then, failing since".
|
|
1338
|
+
*
|
|
1339
|
+
* Live state, not persisted: a reload cannot know whether the target still
|
|
1340
|
+
* fails, so it starts absent until the next attempt says otherwise.
|
|
1341
|
+
*/
|
|
1342
|
+
readonly lastError?: {
|
|
1343
|
+
/** ISO 8601 timestamp of the failed attempt. */
|
|
1344
|
+
readonly at: string;
|
|
1345
|
+
readonly op: 'push' | 'pull';
|
|
1346
|
+
/** Message of the first error the attempt collected. */
|
|
1347
|
+
readonly message: string;
|
|
1348
|
+
};
|
|
1290
1349
|
/**
|
|
1291
1350
|
* Per-collection readiness under a `'phased'` pull policy (#809). **Absent**
|
|
1292
1351
|
* for every other policy, and a collection the sequence never names is absent
|
|
@@ -1329,6 +1388,41 @@ export interface SyncTarget {
|
|
|
1329
1388
|
* (#948). Deliberately omits any preset *name* — a resolved `SyncPolicy` doesn't
|
|
1330
1389
|
* retain which preset (if any) it came from, so only its push/pull mode is surfaced.
|
|
1331
1390
|
*/
|
|
1391
|
+
/**
|
|
1392
|
+
* Per-target sync state (#1034). `syncStatus()` answers for the vault as a
|
|
1393
|
+
* whole; this answers per target, which is what a redundant topology needs in
|
|
1394
|
+
* order to say "the LAN store is unavailable — syncing via the cloud" rather
|
|
1395
|
+
* than just "something is wrong".
|
|
1396
|
+
*
|
|
1397
|
+
* Deliberately carries **no `online` flag.** `SyncStatus.online` reflects the
|
|
1398
|
+
* *browser's* global connectivity — it is set only by the `online`/`offline`
|
|
1399
|
+
* window events and no store outcome ever changes it, so every engine flips at
|
|
1400
|
+
* once for the same reason. Exposing it per target would make a global signal
|
|
1401
|
+
* look per-target: a status list would appear to update row by row while every
|
|
1402
|
+
* row actually moved together. Per-target *reachability* derived from real
|
|
1403
|
+
* store outcomes is a separate, still-unbuilt thing.
|
|
1404
|
+
*/
|
|
1405
|
+
export interface SyncTargetStatus {
|
|
1406
|
+
/** As registered. `undefined` when the target was declared without one. */
|
|
1407
|
+
readonly label: string | undefined;
|
|
1408
|
+
readonly role: SyncTargetRole;
|
|
1409
|
+
/** Pending local writes for this target. */
|
|
1410
|
+
readonly dirty: number;
|
|
1411
|
+
/** Last push that completed with no errors, or `null`. See {@link SyncStatus.lastPush}. */
|
|
1412
|
+
readonly lastPush: string | null;
|
|
1413
|
+
/** Last pull that completed with no errors, or `null`. */
|
|
1414
|
+
readonly lastPull: string | null;
|
|
1415
|
+
/**
|
|
1416
|
+
* Nothing queued for this target — `dirty === 0`.
|
|
1417
|
+
*
|
|
1418
|
+
* Well-defined for every role: for a `sync-peer` it means the two sides
|
|
1419
|
+
* agree as of the last exchange; for a push-only `backup` it means every
|
|
1420
|
+
* local write has reached it. It is a statement about the *outbound* queue
|
|
1421
|
+
* only, and says nothing about whether the target holds data this client has
|
|
1422
|
+
* not pulled.
|
|
1423
|
+
*/
|
|
1424
|
+
readonly caughtUp: boolean;
|
|
1425
|
+
}
|
|
1332
1426
|
export interface SyncTargetInfo {
|
|
1333
1427
|
readonly label: string | undefined;
|
|
1334
1428
|
readonly role: SyncTargetRole;
|
|
@@ -1544,7 +1638,6 @@ export interface UpdateUserOptions {
|
|
|
1544
1638
|
}
|
|
1545
1639
|
export interface RevokeOptions {
|
|
1546
1640
|
readonly userId: string;
|
|
1547
|
-
readonly rotateKeys?: boolean;
|
|
1548
1641
|
/**
|
|
1549
1642
|
* Cascade behavior when the revoked user is an admin who has granted
|
|
1550
1643
|
* other admins.
|
|
@@ -1868,10 +1961,10 @@ export interface CrdtStrategy {
|
|
|
1868
1961
|
* that operate on whole-vault bundles rather than per-record KV.
|
|
1869
1962
|
*
|
|
1870
1963
|
* Implement `readBundle` / `writeBundle` instead of the six-method KV
|
|
1871
|
-
* contract. Use `
|
|
1964
|
+
* contract. Use `wrapPodStore()` from `@noy-db/hub` to convert to a
|
|
1872
1965
|
* `NoydbStore` that the rest of the API consumes transparently.
|
|
1873
1966
|
*
|
|
1874
|
-
* Named `NoydbPodStore`
|
|
1967
|
+
* Named `NoydbPodStore` for consistency
|
|
1875
1968
|
* with the hub / to-* / in-* rename. Concrete implementations ship
|
|
1876
1969
|
* in `@noy-db/to-*` packages starting in.
|
|
1877
1970
|
*/
|
|
@@ -1907,8 +2000,6 @@ export interface NoydbPodStore {
|
|
|
1907
2000
|
size: number;
|
|
1908
2001
|
}>>;
|
|
1909
2002
|
}
|
|
1910
|
-
/** @deprecated Use `NoydbPodStore`. */
|
|
1911
|
-
export type NoydbBundleStore = NoydbPodStore;
|
|
1912
2003
|
/**
|
|
1913
2004
|
* Content-addressed blob object stored in the vault-level blob index.
|
|
1914
2005
|
* Identified by HMAC-SHA-256(blobDEK, plaintext) — opaque to the store.
|
|
@@ -2354,6 +2445,13 @@ export interface NoydbOptions {
|
|
|
2354
2445
|
* @internal
|
|
2355
2446
|
*/
|
|
2356
2447
|
readonly historyStrategy?: HistoryStrategy;
|
|
2448
|
+
/**
|
|
2449
|
+
* #1044 — opt in to the vault head, which detects a store that WITHHOLDS.
|
|
2450
|
+
* `withVaultHead()` from `@noy-db/hub/vault-head`. Costs one small write per
|
|
2451
|
+
* commit; on a single-device offline vault it defends against nothing, which
|
|
2452
|
+
* is why it is opt-in while AAD is not.
|
|
2453
|
+
*/
|
|
2454
|
+
readonly vaultHeadStrategy?: VaultHeadStrategy;
|
|
2357
2455
|
/**
|
|
2358
2456
|
* GDPR right-to-erasure. Pass `withForget({ subjects })`
|
|
2359
2457
|
* from `@noy-db/hub/forget` to declare which collections carry erasable
|
|
@@ -2516,6 +2614,41 @@ export interface NoydbOptions {
|
|
|
2516
2614
|
* without a gated source instance and stay ungated.
|
|
2517
2615
|
*/
|
|
2518
2616
|
readonly cargoStrategy?: CargoStrategy;
|
|
2617
|
+
/**
|
|
2618
|
+
* @deprecated renamed to `blobsStrategy` (#873).
|
|
2619
|
+
*
|
|
2620
|
+
* Declared as `never` on purpose — see the block note below.
|
|
2621
|
+
*/
|
|
2622
|
+
readonly blobStrategy?: never;
|
|
2623
|
+
/**
|
|
2624
|
+
* @deprecated renamed to `indexingStrategy` (#873).
|
|
2625
|
+
*
|
|
2626
|
+
* Declared as `never` on purpose — see the block note below.
|
|
2627
|
+
*/
|
|
2628
|
+
readonly indexStrategy?: never;
|
|
2629
|
+
/**
|
|
2630
|
+
* @deprecated renamed to `transactionsStrategy` (#873).
|
|
2631
|
+
*
|
|
2632
|
+
* Declared as `never` on purpose — see the block note below.
|
|
2633
|
+
*/
|
|
2634
|
+
readonly txStrategy?: never;
|
|
2635
|
+
/**
|
|
2636
|
+
* @deprecated renamed to `reduceStrategy` (#873).
|
|
2637
|
+
*
|
|
2638
|
+
* The four keys above are the `#873` strategy-key renames, carried as
|
|
2639
|
+
* unusable `never` slots rather than simply deleted (#993).
|
|
2640
|
+
*
|
|
2641
|
+
* An ABSENT key is answered by TypeScript's excess-property check with the
|
|
2642
|
+
* nearest known key by edit distance, so `txStrategy` was reported as "Did
|
|
2643
|
+
* you mean to write `crdtStrategy`?" — a suggestion that silently enables a
|
|
2644
|
+
* CRDT strategy for a caller who trusts it. A DECLARED `never` key matches
|
|
2645
|
+
* exactly, so the compiler surfaces the `@deprecated` line naming the real
|
|
2646
|
+
* replacement instead of guessing.
|
|
2647
|
+
*
|
|
2648
|
+
* One release of carry; drop with the rest of the 0.4.0-pre compatibility
|
|
2649
|
+
* surface.
|
|
2650
|
+
*/
|
|
2651
|
+
readonly aggregateStrategy?: never;
|
|
2519
2652
|
/**
|
|
2520
2653
|
* Optional guard strategies — collection-level write guards. Each
|
|
2521
2654
|
* handle is the output of `withGuard()` from `@noy-db/hub/guards`.
|
package/dist/kernel/vault.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { IssueDelegationOptions, DelegationToken } from '../with-party/team
|
|
|
6
6
|
import { Collection } from './collection.js';
|
|
7
7
|
import type { JoinableSource } from './query/index.js';
|
|
8
8
|
import type { OnDirtyCallback } from './collection.js';
|
|
9
|
-
import type { UnlockedKeyring,
|
|
9
|
+
import type { UnlockedKeyring, PodRecipient } from '../with-party/team/keyring.js';
|
|
10
10
|
import type { MaterializedViewRegistry } from '../with-formula/materialized-views/registry.js';
|
|
11
11
|
import type { MaterializedViewStrategy } from '../with-formula/materialized-views/types.js';
|
|
12
12
|
import type { OverlayedViewRegistry } from '../with-formula/overlay-views/registry.js';
|
|
@@ -29,6 +29,7 @@ import { type ForgetResult } from '../with-audit/forget/strategy.js';
|
|
|
29
29
|
import { type SubjectRef } from '../with-audit/forget/subject-index.js';
|
|
30
30
|
import type { VaultFrame } from '../with-fork/shadow/vault-frame.js';
|
|
31
31
|
import type { ConsentContext, ConsentAuditEntry, ConsentAuditFilter, ConsentOp } from '../with-audit/consent/consent.js';
|
|
32
|
+
import { type PeriodScope, type PeriodGuardPrior, type ReopenPeriodOptions, type PeriodScopeWithReason } from '../with-audit/periods/vault-facade.js';
|
|
32
33
|
import { type RefDescriptor, type RefViolation } from './refs.js';
|
|
33
34
|
import type { DictionaryHandle, DictionaryOptions } from '../port/with/i18n-strategy.js';
|
|
34
35
|
import { type LinkSpec, type LinkSetHandle } from '../with-shape/links/names.js';
|
|
@@ -41,7 +42,7 @@ import type { DerivationRegistry } from '../with-formula/derivations/registry.js
|
|
|
41
42
|
import type { DerivationStrategy } from '../with-formula/derivations/types.js';
|
|
42
43
|
import { type BehaviorSummary } from '../with-shape/introspection/behaviors.js';
|
|
43
44
|
import type { JoinedHandle } from '../with-shape/satellites/types.js';
|
|
44
|
-
import { type PeriodRecord, type ClosePeriodOptions, type OpenPeriodOptions } from '../with-audit/periods/index.js';
|
|
45
|
+
import { type PeriodRecord, type PeriodReopenEvent, type ClosePeriodOptions, type OpenPeriodOptions } from '../with-audit/periods/index.js';
|
|
45
46
|
import { type EnclaveKey } from './enclave/index.js';
|
|
46
47
|
import type { RecipientSealer } from '../with-party/team/managed-secret.js';
|
|
47
48
|
import { type ExportBlobsOptions, type ExportBlobsHandle } from '../with-shape/blobs/export-blobs.js';
|
|
@@ -335,7 +336,7 @@ export declare class Vault {
|
|
|
335
336
|
* unblocks R-S7 when a base gains forget coverage after its satellite was
|
|
336
337
|
* already declared without `perRecordKeys`. Call BEFORE re-declaring with
|
|
337
338
|
* `{ satelliteOf, perRecordKeys: true }` AND before this collection serves
|
|
338
|
-
* writes (unfenced walk — see
|
|
339
|
+
* writes (unfenced walk — see `with-shape/satellites/migrate-cek.ts`); resumable.
|
|
339
340
|
*/
|
|
340
341
|
migrateSatellitePerRecordKeys(satelliteName: string): Promise<{
|
|
341
342
|
migrated: number;
|
|
@@ -573,7 +574,7 @@ export declare class Vault {
|
|
|
573
574
|
*
|
|
574
575
|
* @public
|
|
575
576
|
*/
|
|
576
|
-
buildBundleRecipientKeyrings(recipients: readonly
|
|
577
|
+
buildBundleRecipientKeyrings(recipients: readonly PodRecipient[]): Promise<Record<string, KeyringFile>>;
|
|
577
578
|
/**
|
|
578
579
|
* Authorize an `@noy-db/as-*` export against the current keyring's
|
|
579
580
|
* `exportCapability`. Throws `ExportCapabilityError` if
|
|
@@ -744,7 +745,7 @@ export declare class Vault {
|
|
|
744
745
|
*
|
|
745
746
|
* @internal
|
|
746
747
|
*/
|
|
747
|
-
_decryptEnvelopeForBundleFilter(env: EncryptedEnvelope, collectionName: string): Promise<unknown>;
|
|
748
|
+
_decryptEnvelopeForBundleFilter(env: EncryptedEnvelope, collectionName: string, recordId: string): Promise<unknown>;
|
|
748
749
|
/**
|
|
749
750
|
* Read-only accessor for the invoking keyring's import capability
|
|
750
751
|
* (issue ). UI affordance — returns false in every default-closed
|
|
@@ -1236,10 +1237,10 @@ export declare class Vault {
|
|
|
1236
1237
|
* both closed and opened entries in `closedAt` order.
|
|
1237
1238
|
*/
|
|
1238
1239
|
openPeriod<TCollections extends Record<string, Record<string, unknown>>>(options: OpenPeriodOptions<TCollections>): Promise<PeriodRecord>;
|
|
1239
|
-
/**
|
|
1240
|
-
listPeriods(): Promise<readonly PeriodRecord[]>;
|
|
1241
|
-
/**
|
|
1242
|
-
getPeriod(name: string): Promise<PeriodRecord | null>;
|
|
1240
|
+
/** Every closed / opened period in `closedAt` order; ALL timelines unless `{ partition }` scopes it (#1005). */
|
|
1241
|
+
listPeriods(options?: PeriodScope): Promise<readonly PeriodRecord[]>;
|
|
1242
|
+
/** One period by name within a timeline (vault-wide unless `{ partition }`). `null` if not found. */
|
|
1243
|
+
getPeriod(name: string, options?: PeriodScope): Promise<PeriodRecord | null>;
|
|
1243
1244
|
/**
|
|
1244
1245
|
* Freeze a closed period (#604): purges in-window delete markers and
|
|
1245
1246
|
* records a `_period_freezes` companion, never mutating the chained
|
|
@@ -1248,7 +1249,7 @@ export declare class Vault {
|
|
|
1248
1249
|
* and purging re-opens the #589 resurrection window for a peer offline
|
|
1249
1250
|
* since before the cutoff (see periods.ts's "Freeze" section).
|
|
1250
1251
|
*/
|
|
1251
|
-
freezePeriod(name: string): Promise<PeriodRecord>;
|
|
1252
|
+
freezePeriod(name: string, options?: PeriodScope): Promise<PeriodRecord>;
|
|
1252
1253
|
/**
|
|
1253
1254
|
* Archive a closed period (#613): relocates its in-window records from the
|
|
1254
1255
|
* hot store to the configured cold tier (via the routeStore's cold route),
|
|
@@ -1256,7 +1257,7 @@ export declare class Vault {
|
|
|
1256
1257
|
* the chained `_periods` record. Non-destructive (reads fall through to
|
|
1257
1258
|
* cold) and idempotent. Requires a routeStore with a cold route.
|
|
1258
1259
|
*/
|
|
1259
|
-
archivePeriod(name: string): Promise<PeriodRecord>;
|
|
1260
|
+
archivePeriod(name: string, options?: PeriodScope): Promise<PeriodRecord>;
|
|
1260
1261
|
/**
|
|
1261
1262
|
* Target-purge a closed+frozen period (#615): sweeps delete markers off the
|
|
1262
1263
|
* vault's push-only sync targets (`backup`/`archive`), recording a
|
|
@@ -1265,12 +1266,15 @@ export declare class Vault {
|
|
|
1265
1266
|
* frozen first. Idempotent; a vault with no push-only targets writes no
|
|
1266
1267
|
* companion and is re-runnable.
|
|
1267
1268
|
*/
|
|
1268
|
-
purgePeriodTargets(name: string): Promise<PeriodRecord>;
|
|
1269
|
+
purgePeriodTargets(name: string, options?: PeriodScope): Promise<PeriodRecord>;
|
|
1270
|
+
/** Return a closed period to writable (#1022); logged append-only, close chain untouched. */
|
|
1271
|
+
reopenPeriod(name: string, options?: ReopenPeriodOptions): Promise<PeriodRecord>;
|
|
1272
|
+
/** Seal a reopened period again (#1022) rather than waiting for its `until` to lapse. */
|
|
1273
|
+
reclosePeriod(name: string, options?: PeriodScopeWithReason): Promise<PeriodRecord>;
|
|
1274
|
+
/** The append-only reopen/reclose log for one period (#1022), in order. */
|
|
1275
|
+
listPeriodReopens(name: string, options?: PeriodScope): Promise<readonly PeriodReopenEvent[]>;
|
|
1269
1276
|
/** @internal — called by the gate bus before put/delete. */
|
|
1270
|
-
_assertTsWritable(existing:
|
|
1271
|
-
ts: string | null;
|
|
1272
|
-
record: Record<string, unknown> | null;
|
|
1273
|
-
} | null, incoming: Record<string, unknown> | null): Promise<void>;
|
|
1277
|
+
_assertTsWritable(existing: PeriodGuardPrior | null, incoming: Record<string, unknown> | null, collection?: string): Promise<void>;
|
|
1274
1278
|
/** List all collection names in this vault. */
|
|
1275
1279
|
collections(): Promise<string[]>;
|
|
1276
1280
|
/**
|
|
@@ -1344,12 +1348,12 @@ export declare class Vault {
|
|
|
1344
1348
|
* distinct handles, which is the right behavior — they're
|
|
1345
1349
|
* separate vault instances now.
|
|
1346
1350
|
*/
|
|
1347
|
-
|
|
1351
|
+
getPodHandle(): Promise<string>;
|
|
1348
1352
|
/**
|
|
1349
1353
|
* Read the owner-curated cover for this vault (or `undefined` if
|
|
1350
1354
|
* none is persisted). The cover lives in `_meta/public-envelope`
|
|
1351
1355
|
* (the frozen wire name) as plaintext — readable without any KEK
|
|
1352
|
-
* — so `
|
|
1356
|
+
* — so `getPodHandle`-style callers can label a vault before
|
|
1353
1357
|
* unlock.
|
|
1354
1358
|
*
|
|
1355
1359
|
* Mirrors `Noydb.getCover(vault, opts)` but scoped to a
|
|
@@ -47,8 +47,17 @@ export interface ViaCryptoCtx {
|
|
|
47
47
|
delete(field: string): Promise<void>;
|
|
48
48
|
};
|
|
49
49
|
reservedEnvelopes(prefix: string): {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
/**
|
|
51
|
+
* `id` is the record id the envelope will be stored under. Required
|
|
52
|
+
* (#1051) because this function holds the DEK, so it is where record-identity
|
|
53
|
+
* AAD is applied — a caller that cannot name the id cannot be bound.
|
|
54
|
+
*/
|
|
55
|
+
encrypt(identity: {
|
|
56
|
+
readonly collection: string;
|
|
57
|
+
readonly id: string;
|
|
58
|
+
readonly by?: string;
|
|
59
|
+
}, json: string, v: number): Promise<EncryptedEnvelope>;
|
|
60
|
+
decrypt(collection: string, id: string, env: EncryptedEnvelope): Promise<string>;
|
|
52
61
|
};
|
|
53
62
|
}
|
|
54
63
|
/** Per-call erase context — `forget()`'s per-ref participation door (phase C). */
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
LedgerStore,
|
|
4
4
|
applyPatch,
|
|
5
5
|
computePatch
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4A34KWOU.js";
|
|
7
7
|
import {
|
|
8
8
|
LEDGER_COLLECTION,
|
|
9
9
|
LEDGER_DELTAS_COLLECTION
|
|
@@ -15,16 +15,16 @@ import {
|
|
|
15
15
|
paddedIndex,
|
|
16
16
|
parseIndex,
|
|
17
17
|
sha256Hex
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-ZLHHE5XZ.js";
|
|
19
|
+
import "./chunk-OHOKBMTM.js";
|
|
20
|
+
import "./chunk-PENPHA45.js";
|
|
21
|
+
import "./chunk-GQXFOAYZ.js";
|
|
22
|
+
import "./chunk-KV6JM2IA.js";
|
|
23
|
+
import "./chunk-TMBSPLUG.js";
|
|
24
24
|
import "./chunk-LP7BEXCT.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-AU3AUJIZ.js";
|
|
26
|
+
import "./chunk-IGNJOJEP.js";
|
|
27
|
+
import "./chunk-CWM4GQD2.js";
|
|
28
28
|
import "./chunk-PZ5AY32C.js";
|
|
29
29
|
export {
|
|
30
30
|
LEDGER_COLLECTION,
|
|
@@ -39,4 +39,4 @@ export {
|
|
|
39
39
|
parseIndex,
|
|
40
40
|
sha256Hex
|
|
41
41
|
};
|
|
42
|
-
//# sourceMappingURL=ledger-
|
|
42
|
+
//# sourceMappingURL=ledger-MVPNG5OS.js.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
liberateVault
|
|
3
|
+
} from "./chunk-HQSPF5IY.js";
|
|
4
|
+
import "./chunk-5Q7AJ7DN.js";
|
|
5
|
+
import "./chunk-GBBDFE6C.js";
|
|
6
|
+
import "./chunk-OTHHO3KI.js";
|
|
7
|
+
import "./chunk-QSIEL6TL.js";
|
|
8
|
+
import "./chunk-S56VYR4Q.js";
|
|
9
|
+
import "./chunk-CAGI4LLJ.js";
|
|
10
|
+
import "./chunk-LX46B56Q.js";
|
|
11
|
+
import "./chunk-OHOKBMTM.js";
|
|
12
|
+
import "./chunk-PENPHA45.js";
|
|
13
|
+
import "./chunk-GQXFOAYZ.js";
|
|
14
|
+
import "./chunk-KV6JM2IA.js";
|
|
15
|
+
import "./chunk-TMBSPLUG.js";
|
|
16
|
+
import "./chunk-LP7BEXCT.js";
|
|
17
|
+
import "./chunk-AU3AUJIZ.js";
|
|
18
|
+
import "./chunk-IGNJOJEP.js";
|
|
19
|
+
import "./chunk-CWM4GQD2.js";
|
|
20
|
+
import "./chunk-PZ5AY32C.js";
|
|
21
|
+
export {
|
|
22
|
+
liberateVault
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=liberate-4LOJOLDT.js.map
|