@noy-db/hub 0.4.0-pre.3 → 0.4.0-pre.5
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/README.md +2 -2
- package/dist/aggregate/index.js +4 -4
- package/dist/api-22ES33N3.js +20 -0
- package/dist/as/index.js +11 -11
- package/dist/attestation/index.js +20 -20
- package/dist/{backup-JL2GOTYQ.js → backup-YCHAC575.js} +11 -11
- package/dist/blobs/index.js +12 -12
- package/dist/broker/index.js +12 -12
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +29 -29
- package/dist/{chunk-2RMDVWGB.js → chunk-2CRZOVDI.js} +2 -2
- package/dist/{chunk-T7S4V52L.js → chunk-2PDBYF2O.js} +4 -4
- package/dist/{chunk-WJDYZP3U.js → chunk-3LJYHE7S.js} +36 -36
- package/dist/chunk-3LJYHE7S.js.map +1 -0
- package/dist/{chunk-CCT4WZI6.js → chunk-3OWYOECI.js} +5 -5
- package/dist/chunk-3OWYOECI.js.map +1 -0
- package/dist/{chunk-L4OA7G5T.js → chunk-522MBPE5.js} +2 -2
- package/dist/{chunk-ZJGZDOQO.js → chunk-5ATANZSW.js} +6 -6
- package/dist/{chunk-M25ZIEB2.js → chunk-5HSSTOOG.js} +2 -2
- package/dist/{chunk-LLVW4V7R.js → chunk-5WLDZZ6S.js} +3 -3
- package/dist/{chunk-7B4GPCX7.js → chunk-6RPWILRH.js} +5 -5
- package/dist/{chunk-IGM563N5.js → chunk-6SYOHUHM.js} +6 -6
- package/dist/chunk-6SYOHUHM.js.map +1 -0
- package/dist/{chunk-HGVFJL63.js → chunk-7BIJS6II.js} +15 -5
- package/dist/{chunk-HGVFJL63.js.map → chunk-7BIJS6II.js.map} +1 -1
- package/dist/{chunk-KR5EGWI4.js → chunk-7ICV4ASA.js} +5 -5
- package/dist/{chunk-J3VW4J4E.js → chunk-7LP7FFJ2.js} +2 -2
- package/dist/chunk-7LP7FFJ2.js.map +1 -0
- package/dist/{chunk-5P5AAXYA.js → chunk-7U6AB7DZ.js} +7 -7
- package/dist/chunk-7U6AB7DZ.js.map +1 -0
- package/dist/{chunk-KMONEHDJ.js → chunk-AFAPBZAA.js} +2 -2
- package/dist/{chunk-GBEXTC6Z.js → chunk-BAAUFCJK.js} +3 -3
- package/dist/chunk-BAAUFCJK.js.map +1 -0
- package/dist/{chunk-CGPO3ZYB.js → chunk-BY5YBSXA.js} +2 -2
- package/dist/{chunk-3O62PVDW.js → chunk-CJVEAVYH.js} +5 -5
- package/dist/chunk-CJVEAVYH.js.map +1 -0
- package/dist/{chunk-3XVOLB75.js → chunk-CKUYQO2P.js} +3 -3
- package/dist/{chunk-2JZ763FV.js → chunk-D4LAJ737.js} +2 -2
- package/dist/{chunk-OOTTXUNV.js → chunk-DYZ5CCVM.js} +2 -2
- package/dist/{chunk-LUH2MPEF.js → chunk-EEZCB74X.js} +808 -1175
- package/dist/chunk-EEZCB74X.js.map +1 -0
- package/dist/{chunk-N4FZ6ITM.js → chunk-EGU4PWQW.js} +2 -2
- package/dist/{chunk-JKWNG3TM.js → chunk-FHHYCBBP.js} +2 -2
- package/dist/{chunk-UBF7HTOR.js → chunk-FIP7KI2P.js} +40 -40
- package/dist/chunk-FIP7KI2P.js.map +1 -0
- package/dist/{chunk-N4A3DCBT.js → chunk-FTCGEUOY.js} +8 -8
- package/dist/{chunk-5BB3N4KU.js → chunk-G4MFQXYX.js} +2 -2
- package/dist/{chunk-PEY6ZTCF.js → chunk-GEEJPID6.js} +9 -9
- package/dist/{chunk-PEY6ZTCF.js.map → chunk-GEEJPID6.js.map} +1 -1
- package/dist/{chunk-KVHWEPT2.js → chunk-GHEMAVTN.js} +2 -2
- package/dist/{chunk-OVFCAS7U.js → chunk-GP54LU5N.js} +9 -9
- package/dist/{chunk-XW7NWO4A.js → chunk-GTNRMJYH.js} +2 -2
- package/dist/{chunk-J6U4BOKP.js → chunk-HAPY7WFP.js} +12 -12
- package/dist/{chunk-GU5AYA2Q.js → chunk-HQKRZIX6.js} +5 -5
- package/dist/{chunk-OWE4BNTM.js → chunk-I2XEBEEF.js} +4 -4
- package/dist/{chunk-WEC3JGBA.js → chunk-IGLU4ME7.js} +3 -3
- package/dist/{chunk-BZK6JEX4.js → chunk-ILM6X6CP.js} +5 -5
- package/dist/{chunk-2KL6NDD4.js → chunk-J5TEU77Q.js} +4 -4
- package/dist/{chunk-UEO5CHOP.js → chunk-JAMDDLIM.js} +13 -13
- package/dist/chunk-JAMDDLIM.js.map +1 -0
- package/dist/{chunk-V7RGFJ3Z.js → chunk-JIHH26WQ.js} +6 -6
- package/dist/{chunk-XGVDLQJE.js → chunk-JN3SGXJE.js} +3 -3
- package/dist/{chunk-XULHFSHO.js → chunk-K4BWPNJO.js} +5 -5
- package/dist/chunk-K4BWPNJO.js.map +1 -0
- package/dist/{chunk-BZEPJJOK.js → chunk-K7BADAOS.js} +4 -4
- package/dist/{chunk-OWLPX2GI.js → chunk-KJTIAECI.js} +17 -17
- package/dist/chunk-KJTIAECI.js.map +1 -0
- package/dist/{chunk-SN75YVM5.js → chunk-L2CAWCQL.js} +18 -18
- package/dist/{chunk-SN75YVM5.js.map → chunk-L2CAWCQL.js.map} +1 -1
- package/dist/{chunk-MSO2C3KG.js → chunk-LC7DSMHR.js} +2 -2
- package/dist/{chunk-JA5B3SLH.js → chunk-M6QA2KK2.js} +2 -2
- package/dist/{chunk-IUIVDVXM.js → chunk-MUPZ6IZX.js} +2 -2
- package/dist/{chunk-QAFWRGVD.js → chunk-OGVE4IJW.js} +7 -7
- package/dist/{chunk-BCOKZC4B.js → chunk-OHV6T5JB.js} +19 -19
- package/dist/chunk-OHV6T5JB.js.map +1 -0
- package/dist/{chunk-25ZDB25Z.js → chunk-OMSKGLYA.js} +3 -3
- package/dist/chunk-OMSKGLYA.js.map +1 -0
- package/dist/{chunk-2U7Y7BNJ.js → chunk-ONB627HU.js} +2 -2
- package/dist/{chunk-GYB2QK5H.js → chunk-OWLZONGX.js} +2 -2
- package/dist/{chunk-YHPUDB7Q.js → chunk-OWOT7CFC.js} +2 -2
- package/dist/{chunk-VEX6G3YL.js → chunk-P4NUJVWL.js} +2 -2
- package/dist/{chunk-NM4LVUXH.js → chunk-PTT2NB46.js} +2 -2
- package/dist/{chunk-2ITLQZV5.js → chunk-PWWWMRT7.js} +2 -2
- package/dist/{chunk-GS3Q2KOZ.js → chunk-QBOQI6PG.js} +2 -2
- package/dist/{chunk-JIMEB4C6.js → chunk-QMMOMBH6.js} +4 -4
- package/dist/{chunk-QDNVHA2F.js → chunk-QMZ5A6FQ.js} +2 -2
- package/dist/{chunk-FLHOTGOO.js → chunk-QVGEVZ5F.js} +3 -3
- package/dist/{chunk-AFBJHD55.js → chunk-QZJEYZ4I.js} +5 -5
- package/dist/{chunk-V3YB7RGR.js → chunk-R2N37AA6.js} +3 -3
- package/dist/{chunk-JLHKBAFY.js → chunk-RWW3I3PO.js} +3 -3
- package/dist/{chunk-IGAIOGCN.js → chunk-S4YERMGJ.js} +4 -4
- package/dist/{chunk-OGFPMCSP.js → chunk-SBOHNJUD.js} +2 -2
- package/dist/{chunk-QXPOEAKR.js → chunk-SC4JLMZI.js} +2 -2
- package/dist/{chunk-EDC6MLXV.js → chunk-SEU6QHH4.js} +2 -2
- package/dist/{chunk-F4COUZLL.js → chunk-TMR64XPL.js} +2 -2
- package/dist/{chunk-DEQ2JTBR.js → chunk-TNATF3HB.js} +3 -3
- package/dist/{chunk-GZ2GKOF6.js → chunk-TNJVDG2B.js} +3 -3
- package/dist/{chunk-5OZCCLNC.js → chunk-TSNRZSRC.js} +2 -2
- package/dist/{chunk-QCUH2G77.js → chunk-UTEATWHO.js} +6 -6
- package/dist/{chunk-JA5O7UEZ.js → chunk-UVBHM7AK.js} +6 -6
- package/dist/chunk-UVBHM7AK.js.map +1 -0
- package/dist/{chunk-HKR25MGX.js → chunk-V5JUAW4M.js} +10 -10
- package/dist/chunk-V5JUAW4M.js.map +1 -0
- package/dist/{chunk-YGBIBOCR.js → chunk-VEGQYPCP.js} +7 -7
- package/dist/{chunk-25G7U6RD.js → chunk-WQN5SM7P.js} +2 -2
- package/dist/{chunk-NOT7XA7Q.js → chunk-X3MWEFPT.js} +5 -5
- package/dist/chunk-XUFAFHQM.js +78 -0
- package/dist/chunk-XUFAFHQM.js.map +1 -0
- package/dist/{chunk-MEKAMERX.js → chunk-YCAJDK4O.js} +29 -29
- package/dist/chunk-YCAJDK4O.js.map +1 -0
- package/dist/{chunk-BVZGNMVM.js → chunk-YFFEF6HR.js} +3 -3
- package/dist/{chunk-H4SMS4O2.js → chunk-YJ3TREAC.js} +2 -2
- package/dist/{chunk-5SZ24DL5.js → chunk-YQQPNXNO.js} +6 -6
- package/dist/{chunk-5BHNQNBI.js → chunk-YTW6ZIPD.js} +1 -1
- package/dist/chunk-YTW6ZIPD.js.map +1 -0
- package/dist/{chunk-EW4HFWGJ.js → chunk-YWZEDG7F.js} +6 -6
- package/dist/{chunk-2VUISNGP.js → chunk-YXIVUWDU.js} +5 -5
- package/dist/{chunk-YG2EG6CB.js → chunk-YXZNGHID.js} +4 -4
- package/dist/{chunk-QYJIOWKN.js → chunk-YZN6NRTR.js} +9 -9
- package/dist/{chunk-IZX3WZBF.js → chunk-YZNKFYDC.js} +4 -4
- package/dist/{chunk-E2R5NRZD.js → chunk-Z4D3YGAB.js} +2 -2
- package/dist/{chunk-STR7WBOB.js → chunk-ZUDAK436.js} +2 -2
- package/dist/{chunk-ITI3SJRB.js → chunk-ZX5FNWH7.js} +2 -2
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-7S5IEP6Q.js → classified-marker-52P3D72W.js} +3 -3
- package/dist/collection-facade-XKCFHSLR.js +44 -0
- package/dist/{computed-WZNKRLCY.js → computed-33DRJDOC.js} +3 -3
- package/dist/consent/index.js +9 -9
- package/dist/{cover-B5MY43CK.js → cover-5BSNJREH.js} +4 -4
- package/dist/{dead-filter-KRRD57MR.js → dead-filter-JXVCKS6W.js} +2 -2
- package/dist/delegation-WWZPEDK2.js +25 -0
- package/dist/derivations/index.js +12 -12
- package/dist/derive-CWWFEQ4N.js +21 -0
- package/dist/dispatch-PKQQFDBT.js +193 -0
- package/dist/dispatch-PKQQFDBT.js.map +1 -0
- package/dist/dispatch-SMXUO7W5.js +72 -0
- package/dist/dispatch-SMXUO7W5.js.map +1 -0
- package/dist/{enclave-YFKA3GJT.js → enclave-I5H3GINP.js} +11 -11
- package/dist/executor-FCJEH3FU.js +9 -0
- package/dist/executor-OHET7TF7.js +9 -0
- package/dist/executor-SHYLIBOM.js +26 -0
- package/dist/export-accessible-FBL6TDSK.js +23 -0
- package/dist/extract-partition-ZYIRYMTI.js +38 -0
- package/dist/{fanout-sidecar-HJV3A7PM.js → fanout-sidecar-WWXVHHUH.js} +9 -9
- package/dist/find-LEBUXVL7.js +11 -0
- package/dist/forget/index.js +9 -9
- package/dist/guards/index.js +3 -3
- package/dist/history/index.js +12 -12
- package/dist/i18n/index.js +14 -14
- package/dist/index.d.ts +13 -9
- package/dist/index.js +119 -118
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +2 -2
- package/dist/issue-F76PAGIR.js +19 -0
- package/dist/kernel/collection-config.d.ts +11 -69
- package/dist/kernel/collection.d.ts +10 -22
- package/dist/kernel/enclave/crypto.d.ts +8 -8
- package/dist/kernel/enclave/index.d.ts +2 -2
- package/dist/kernel/errors.d.ts +20 -20
- package/dist/kernel/noydb.d.ts +43 -103
- package/dist/kernel/types.d.ts +82 -41
- package/dist/kernel/validation.d.ts +33 -33
- package/dist/kernel/vault.d.ts +31 -215
- package/dist/kernel/via/dispatch.d.ts +7 -0
- package/dist/{ledger-SW6QQOAV.js → ledger-M2BKCNVS.js} +11 -11
- package/dist/liberate-ZP7UB57K.js +24 -0
- package/dist/{link-set-GNGGCFI4.js → link-set-ZU4E5J5S.js} +11 -11
- package/dist/materialized-views/index.js +19 -19
- package/dist/noydb-BNDGEK5X.js +71 -0
- package/dist/on/index.js +9 -9
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +13 -13
- package/dist/pod/index.js +11 -11
- package/dist/{policy-EAXSJNOT.js → policy-IY2YEA3A.js} +5 -5
- package/dist/port/at/index.d.ts +4 -4
- package/dist/port/with/archive-strategy.d.ts +31 -0
- package/dist/port/with/collection-options.d.ts +171 -0
- package/dist/port/with/strategies.d.ts +134 -0
- package/dist/port/with/team-strategy.d.ts +1 -1
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-A7HCFBP5.js → post-register-XIAHB6KF.js} +6 -6
- package/dist/query/index.js +6 -6
- package/dist/register-HB4TQZSV.js +23 -0
- package/dist/registry-6BMBFEXT.js +19 -0
- package/dist/registry-7CZWF3EQ.js +9 -0
- package/dist/registry-JOFO7RAH.js +18 -0
- package/dist/request-withdrawal-UN3TRHWI.js +31 -0
- package/dist/{reveal-PB3YG544.js → reveal-VWXRV2XU.js} +6 -6
- package/dist/revoke-OLO2OVR7.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/sealed-record/index.js +12 -12
- package/dist/{seed-EKF4DIBB.js → seed-CDBFOTIK.js} +12 -12
- package/dist/seed-CDBFOTIK.js.map +1 -0
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-MGGKPYAN.js +25 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/{stale-4UNPHWOU.js → stale-NBROTA66.js} +10 -10
- package/dist/storage-3R37QZLA.js +23 -0
- package/dist/{store-coordination-provider-3AELCZ4Y.js → store-coordination-provider-P3IU5JHD.js} +3 -3
- package/dist/sync/index.js +10 -10
- package/dist/team/index.js +20 -20
- package/dist/tiers/index.js +10 -10
- package/dist/to/index.js +1 -1
- package/dist/tx/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/{verify-MXN66IIH.js → verify-5X37OXRY.js} +5 -5
- package/dist/{walk-H4YE52S2.js → walk-E3OVLBFR.js} +11 -11
- package/dist/with/index.js +11 -11
- package/dist/with-audit/portability/export-accessible.d.ts +4 -4
- package/dist/with-audit/portability/request-withdrawal.d.ts +3 -3
- package/dist/with-audit/portability/withdraw-accessible.d.ts +2 -2
- package/dist/with-audit/sealed-record/strategy.d.ts +1 -1
- package/dist/with-cargo/adopt-partition.d.ts +7 -7
- package/dist/with-cargo/index.d.ts +1 -1
- package/dist/with-commit/history/time-machine.d.ts +2 -2
- package/dist/with-formula/derivations/dispatch.d.ts +98 -0
- package/dist/with-formula/materialized-views/dispatch.d.ts +75 -0
- package/dist/with-party/custody/liberate.d.ts +3 -3
- package/dist/with-party/session/dev-unlock.d.ts +2 -2
- package/dist/with-party/session/session.d.ts +2 -2
- package/dist/with-party/team/deed.d.ts +8 -8
- package/dist/with-party/team/index.d.ts +2 -2
- package/dist/with-party/team/keyring.d.ts +19 -19
- package/dist/with-party/team/{managed-passphrase.d.ts → managed-secret.d.ts} +27 -27
- package/dist/with-party/team/noydb-facade.d.ts +41 -41
- package/dist/with-party/team/peer-recover.d.ts +13 -13
- package/dist/with-party/team/recovery.d.ts +5 -5
- package/dist/with-party/team/rotate-recover.d.ts +30 -30
- package/dist/with-pod/bundle.d.ts +30 -30
- package/dist/with-pod/format.d.ts +2 -2
- package/dist/withdraw-accessible-Q2EMATCU.js +28 -0
- package/package.json +3 -3
- package/dist/api-UPAT2O3M.js +0 -20
- package/dist/chunk-25ZDB25Z.js.map +0 -1
- package/dist/chunk-3O62PVDW.js.map +0 -1
- package/dist/chunk-5BHNQNBI.js.map +0 -1
- package/dist/chunk-5P5AAXYA.js.map +0 -1
- package/dist/chunk-BCOKZC4B.js.map +0 -1
- package/dist/chunk-CCT4WZI6.js.map +0 -1
- package/dist/chunk-GBEXTC6Z.js.map +0 -1
- package/dist/chunk-HKR25MGX.js.map +0 -1
- package/dist/chunk-IGM563N5.js.map +0 -1
- package/dist/chunk-J3VW4J4E.js.map +0 -1
- package/dist/chunk-JA5O7UEZ.js.map +0 -1
- package/dist/chunk-LUH2MPEF.js.map +0 -1
- package/dist/chunk-MEKAMERX.js.map +0 -1
- package/dist/chunk-OWLPX2GI.js.map +0 -1
- package/dist/chunk-UBF7HTOR.js.map +0 -1
- package/dist/chunk-UEO5CHOP.js.map +0 -1
- package/dist/chunk-WJDYZP3U.js.map +0 -1
- package/dist/chunk-XULHFSHO.js.map +0 -1
- package/dist/collection-facade-ENLTJZBT.js +0 -44
- package/dist/delegation-UT76AQIG.js +0 -25
- package/dist/derive-SGRCCKVP.js +0 -21
- package/dist/executor-TEZYRDN3.js +0 -9
- package/dist/executor-WQQRU6DO.js +0 -9
- package/dist/executor-YORMIBWV.js +0 -26
- package/dist/export-accessible-HXMKW5LJ.js +0 -23
- package/dist/extract-partition-QGQ2R42J.js +0 -38
- package/dist/find-VV6PBIHK.js +0 -11
- package/dist/issue-7JJ4Z7E2.js +0 -19
- package/dist/liberate-FK7JI2QX.js +0 -24
- package/dist/noydb-KUX2TJMX.js +0 -70
- package/dist/register-YBMRLZLO.js +0 -23
- package/dist/registry-3LXKNXWI.js +0 -9
- package/dist/registry-4V4YQCXJ.js +0 -19
- package/dist/registry-ZULMLCJK.js +0 -18
- package/dist/request-withdrawal-SEVUEUDG.js +0 -31
- package/dist/revoke-5QULL5GT.js +0 -24
- package/dist/seed-EKF4DIBB.js.map +0 -1
- package/dist/signer-ZMH35FT4.js +0 -25
- package/dist/storage-QOZKQMID.js +0 -23
- package/dist/withdraw-accessible-HPOVNG2G.js +0 -28
- /package/dist/{api-UPAT2O3M.js.map → api-22ES33N3.js.map} +0 -0
- /package/dist/{backup-JL2GOTYQ.js.map → backup-YCHAC575.js.map} +0 -0
- /package/dist/{chunk-2RMDVWGB.js.map → chunk-2CRZOVDI.js.map} +0 -0
- /package/dist/{chunk-T7S4V52L.js.map → chunk-2PDBYF2O.js.map} +0 -0
- /package/dist/{chunk-L4OA7G5T.js.map → chunk-522MBPE5.js.map} +0 -0
- /package/dist/{chunk-ZJGZDOQO.js.map → chunk-5ATANZSW.js.map} +0 -0
- /package/dist/{chunk-M25ZIEB2.js.map → chunk-5HSSTOOG.js.map} +0 -0
- /package/dist/{chunk-LLVW4V7R.js.map → chunk-5WLDZZ6S.js.map} +0 -0
- /package/dist/{chunk-7B4GPCX7.js.map → chunk-6RPWILRH.js.map} +0 -0
- /package/dist/{chunk-KR5EGWI4.js.map → chunk-7ICV4ASA.js.map} +0 -0
- /package/dist/{chunk-KMONEHDJ.js.map → chunk-AFAPBZAA.js.map} +0 -0
- /package/dist/{chunk-CGPO3ZYB.js.map → chunk-BY5YBSXA.js.map} +0 -0
- /package/dist/{chunk-3XVOLB75.js.map → chunk-CKUYQO2P.js.map} +0 -0
- /package/dist/{chunk-2JZ763FV.js.map → chunk-D4LAJ737.js.map} +0 -0
- /package/dist/{chunk-OOTTXUNV.js.map → chunk-DYZ5CCVM.js.map} +0 -0
- /package/dist/{chunk-N4FZ6ITM.js.map → chunk-EGU4PWQW.js.map} +0 -0
- /package/dist/{chunk-JKWNG3TM.js.map → chunk-FHHYCBBP.js.map} +0 -0
- /package/dist/{chunk-N4A3DCBT.js.map → chunk-FTCGEUOY.js.map} +0 -0
- /package/dist/{chunk-5BB3N4KU.js.map → chunk-G4MFQXYX.js.map} +0 -0
- /package/dist/{chunk-KVHWEPT2.js.map → chunk-GHEMAVTN.js.map} +0 -0
- /package/dist/{chunk-OVFCAS7U.js.map → chunk-GP54LU5N.js.map} +0 -0
- /package/dist/{chunk-XW7NWO4A.js.map → chunk-GTNRMJYH.js.map} +0 -0
- /package/dist/{chunk-J6U4BOKP.js.map → chunk-HAPY7WFP.js.map} +0 -0
- /package/dist/{chunk-GU5AYA2Q.js.map → chunk-HQKRZIX6.js.map} +0 -0
- /package/dist/{chunk-OWE4BNTM.js.map → chunk-I2XEBEEF.js.map} +0 -0
- /package/dist/{chunk-WEC3JGBA.js.map → chunk-IGLU4ME7.js.map} +0 -0
- /package/dist/{chunk-BZK6JEX4.js.map → chunk-ILM6X6CP.js.map} +0 -0
- /package/dist/{chunk-2KL6NDD4.js.map → chunk-J5TEU77Q.js.map} +0 -0
- /package/dist/{chunk-V7RGFJ3Z.js.map → chunk-JIHH26WQ.js.map} +0 -0
- /package/dist/{chunk-XGVDLQJE.js.map → chunk-JN3SGXJE.js.map} +0 -0
- /package/dist/{chunk-BZEPJJOK.js.map → chunk-K7BADAOS.js.map} +0 -0
- /package/dist/{chunk-MSO2C3KG.js.map → chunk-LC7DSMHR.js.map} +0 -0
- /package/dist/{chunk-JA5B3SLH.js.map → chunk-M6QA2KK2.js.map} +0 -0
- /package/dist/{chunk-IUIVDVXM.js.map → chunk-MUPZ6IZX.js.map} +0 -0
- /package/dist/{chunk-QAFWRGVD.js.map → chunk-OGVE4IJW.js.map} +0 -0
- /package/dist/{chunk-2U7Y7BNJ.js.map → chunk-ONB627HU.js.map} +0 -0
- /package/dist/{chunk-GYB2QK5H.js.map → chunk-OWLZONGX.js.map} +0 -0
- /package/dist/{chunk-YHPUDB7Q.js.map → chunk-OWOT7CFC.js.map} +0 -0
- /package/dist/{chunk-VEX6G3YL.js.map → chunk-P4NUJVWL.js.map} +0 -0
- /package/dist/{chunk-NM4LVUXH.js.map → chunk-PTT2NB46.js.map} +0 -0
- /package/dist/{chunk-2ITLQZV5.js.map → chunk-PWWWMRT7.js.map} +0 -0
- /package/dist/{chunk-GS3Q2KOZ.js.map → chunk-QBOQI6PG.js.map} +0 -0
- /package/dist/{chunk-JIMEB4C6.js.map → chunk-QMMOMBH6.js.map} +0 -0
- /package/dist/{chunk-QDNVHA2F.js.map → chunk-QMZ5A6FQ.js.map} +0 -0
- /package/dist/{chunk-FLHOTGOO.js.map → chunk-QVGEVZ5F.js.map} +0 -0
- /package/dist/{chunk-AFBJHD55.js.map → chunk-QZJEYZ4I.js.map} +0 -0
- /package/dist/{chunk-V3YB7RGR.js.map → chunk-R2N37AA6.js.map} +0 -0
- /package/dist/{chunk-JLHKBAFY.js.map → chunk-RWW3I3PO.js.map} +0 -0
- /package/dist/{chunk-IGAIOGCN.js.map → chunk-S4YERMGJ.js.map} +0 -0
- /package/dist/{chunk-OGFPMCSP.js.map → chunk-SBOHNJUD.js.map} +0 -0
- /package/dist/{chunk-QXPOEAKR.js.map → chunk-SC4JLMZI.js.map} +0 -0
- /package/dist/{chunk-EDC6MLXV.js.map → chunk-SEU6QHH4.js.map} +0 -0
- /package/dist/{chunk-F4COUZLL.js.map → chunk-TMR64XPL.js.map} +0 -0
- /package/dist/{chunk-DEQ2JTBR.js.map → chunk-TNATF3HB.js.map} +0 -0
- /package/dist/{chunk-GZ2GKOF6.js.map → chunk-TNJVDG2B.js.map} +0 -0
- /package/dist/{chunk-5OZCCLNC.js.map → chunk-TSNRZSRC.js.map} +0 -0
- /package/dist/{chunk-QCUH2G77.js.map → chunk-UTEATWHO.js.map} +0 -0
- /package/dist/{chunk-YGBIBOCR.js.map → chunk-VEGQYPCP.js.map} +0 -0
- /package/dist/{chunk-25G7U6RD.js.map → chunk-WQN5SM7P.js.map} +0 -0
- /package/dist/{chunk-NOT7XA7Q.js.map → chunk-X3MWEFPT.js.map} +0 -0
- /package/dist/{chunk-BVZGNMVM.js.map → chunk-YFFEF6HR.js.map} +0 -0
- /package/dist/{chunk-H4SMS4O2.js.map → chunk-YJ3TREAC.js.map} +0 -0
- /package/dist/{chunk-5SZ24DL5.js.map → chunk-YQQPNXNO.js.map} +0 -0
- /package/dist/{chunk-EW4HFWGJ.js.map → chunk-YWZEDG7F.js.map} +0 -0
- /package/dist/{chunk-2VUISNGP.js.map → chunk-YXIVUWDU.js.map} +0 -0
- /package/dist/{chunk-YG2EG6CB.js.map → chunk-YXZNGHID.js.map} +0 -0
- /package/dist/{chunk-QYJIOWKN.js.map → chunk-YZN6NRTR.js.map} +0 -0
- /package/dist/{chunk-IZX3WZBF.js.map → chunk-YZNKFYDC.js.map} +0 -0
- /package/dist/{chunk-E2R5NRZD.js.map → chunk-Z4D3YGAB.js.map} +0 -0
- /package/dist/{chunk-STR7WBOB.js.map → chunk-ZUDAK436.js.map} +0 -0
- /package/dist/{chunk-ITI3SJRB.js.map → chunk-ZX5FNWH7.js.map} +0 -0
- /package/dist/{classified-marker-7S5IEP6Q.js.map → classified-marker-52P3D72W.js.map} +0 -0
- /package/dist/{collection-facade-ENLTJZBT.js.map → collection-facade-XKCFHSLR.js.map} +0 -0
- /package/dist/{computed-WZNKRLCY.js.map → computed-33DRJDOC.js.map} +0 -0
- /package/dist/{cover-B5MY43CK.js.map → cover-5BSNJREH.js.map} +0 -0
- /package/dist/{dead-filter-KRRD57MR.js.map → dead-filter-JXVCKS6W.js.map} +0 -0
- /package/dist/{delegation-UT76AQIG.js.map → delegation-WWZPEDK2.js.map} +0 -0
- /package/dist/{derive-SGRCCKVP.js.map → derive-CWWFEQ4N.js.map} +0 -0
- /package/dist/{enclave-YFKA3GJT.js.map → enclave-I5H3GINP.js.map} +0 -0
- /package/dist/{executor-TEZYRDN3.js.map → executor-FCJEH3FU.js.map} +0 -0
- /package/dist/{executor-WQQRU6DO.js.map → executor-OHET7TF7.js.map} +0 -0
- /package/dist/{executor-YORMIBWV.js.map → executor-SHYLIBOM.js.map} +0 -0
- /package/dist/{export-accessible-HXMKW5LJ.js.map → export-accessible-FBL6TDSK.js.map} +0 -0
- /package/dist/{extract-partition-QGQ2R42J.js.map → extract-partition-ZYIRYMTI.js.map} +0 -0
- /package/dist/{fanout-sidecar-HJV3A7PM.js.map → fanout-sidecar-WWXVHHUH.js.map} +0 -0
- /package/dist/{find-VV6PBIHK.js.map → find-LEBUXVL7.js.map} +0 -0
- /package/dist/{issue-7JJ4Z7E2.js.map → issue-F76PAGIR.js.map} +0 -0
- /package/dist/{ledger-SW6QQOAV.js.map → ledger-M2BKCNVS.js.map} +0 -0
- /package/dist/{liberate-FK7JI2QX.js.map → liberate-ZP7UB57K.js.map} +0 -0
- /package/dist/{link-set-GNGGCFI4.js.map → link-set-ZU4E5J5S.js.map} +0 -0
- /package/dist/{noydb-KUX2TJMX.js.map → noydb-BNDGEK5X.js.map} +0 -0
- /package/dist/{policy-EAXSJNOT.js.map → policy-IY2YEA3A.js.map} +0 -0
- /package/dist/{post-register-A7HCFBP5.js.map → post-register-XIAHB6KF.js.map} +0 -0
- /package/dist/{register-YBMRLZLO.js.map → register-HB4TQZSV.js.map} +0 -0
- /package/dist/{registry-3LXKNXWI.js.map → registry-6BMBFEXT.js.map} +0 -0
- /package/dist/{registry-4V4YQCXJ.js.map → registry-7CZWF3EQ.js.map} +0 -0
- /package/dist/{registry-ZULMLCJK.js.map → registry-JOFO7RAH.js.map} +0 -0
- /package/dist/{request-withdrawal-SEVUEUDG.js.map → request-withdrawal-UN3TRHWI.js.map} +0 -0
- /package/dist/{reveal-PB3YG544.js.map → reveal-VWXRV2XU.js.map} +0 -0
- /package/dist/{revoke-5QULL5GT.js.map → revoke-OLO2OVR7.js.map} +0 -0
- /package/dist/{signer-ZMH35FT4.js.map → signer-MGGKPYAN.js.map} +0 -0
- /package/dist/{stale-4UNPHWOU.js.map → stale-NBROTA66.js.map} +0 -0
- /package/dist/{storage-QOZKQMID.js.map → storage-3R37QZLA.js.map} +0 -0
- /package/dist/{store-coordination-provider-3AELCZ4Y.js.map → store-coordination-provider-P3IU5JHD.js.map} +0 -0
- /package/dist/{verify-MXN66IIH.js.map → verify-5X37OXRY.js.map} +0 -0
- /package/dist/{walk-H4YE52S2.js.map → walk-E3OVLBFR.js.map} +0 -0
- /package/dist/{withdraw-accessible-HPOVNG2G.js.map → withdraw-accessible-Q2EMATCU.js.map} +0 -0
package/dist/kernel/noydb.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import type { NoydbOptions, NoydbEventMap, GrantOptions, RevokeOptions, UpdateUserOptions, UserInfo, PushResult, PullResult, PushOptions, PullOptions, SyncStatus, NoydbStore, AccessibleVault, ListAccessibleVaultsOptions, QueryAcrossOptions, QueryAcrossResult, TranslatorAuditEntry, WriteConflict, UserApiFactory, ActiveTier, FactorProofBundle, GateName, VaultPolicy } from './types.js';
|
|
2
|
-
import type {
|
|
3
|
-
import { type RotatePassphraseInput, type RecoverPassphraseInput, type RecoverPassphraseResult, type RotateRecoveryOptions, type RotateRecoveryResult, type EnrollRecoveryResult, type RecoveryEnrollmentInput, type RecoveryProof } from '../with-party/team/rotate-recover.js';
|
|
4
|
-
import type { RecoverUserOptions } from '../with-party/team/peer-recover.js';
|
|
5
|
-
import { type PaperRecoveryEntry, type ShamirRecoveryEntry } from '../with-party/team/recovery.js';
|
|
2
|
+
import type { SecretPolicy } from './validation.js';
|
|
6
3
|
import { type CoordinationProvider } from '../port/by/default-provider.js';
|
|
7
4
|
import type { Cover } from '../with-party/directory/cover/types.js';
|
|
8
5
|
import type { SetCoverInput } from '../with-party/directory/cover/schema.js';
|
|
@@ -13,9 +10,6 @@ import { WriteHookRegistry, type WriteHook, type Unsubscribe } from '../port/wit
|
|
|
13
10
|
import { ServiceBus } from '../port/with/service-bus.js';
|
|
14
11
|
import { type TabCoordinationOptions, type TabRole, type TabPresence } from '../with-party/tab-coordination.js';
|
|
15
12
|
import type { UnlockedKeyring } from '../with-party/team/keyring.js';
|
|
16
|
-
import { type EnrollAuthenticatorOptions, type UpdateAuthenticatorOptions } from '../with-party/team/authenticators.js';
|
|
17
|
-
import { type QuickUnlockState } from '../with-party/session/unlock-state.js';
|
|
18
|
-
import type { KeyringAuthenticator } from './types.js';
|
|
19
13
|
import type { SyncEngine } from '../with-party/team/sync.js';
|
|
20
14
|
import type { SyncTransaction } from '../with-party/team/sync-transaction.js';
|
|
21
15
|
import { type SnapshotMeta } from '../with-fork/snapshots/strategy.js';
|
|
@@ -24,6 +18,7 @@ import { TxContext } from '../with-commit/tx/transaction.js';
|
|
|
24
18
|
import type { DryRunResult } from '../with-commit/tx/dry-run.js';
|
|
25
19
|
import { type ForgetStrategy } from '../with-audit/forget/strategy.js';
|
|
26
20
|
import { type CustodyStrategy } from '../with-party/custody/strategy.js';
|
|
21
|
+
import { TeamFacade } from '../with-party/team/noydb-facade.js';
|
|
27
22
|
/** NoydbOptions with the store resolved to a non-optional value (internal use only). */
|
|
28
23
|
type ResolvedNoydbOptions = NoydbOptions & {
|
|
29
24
|
readonly store: NoydbStore;
|
|
@@ -56,7 +51,7 @@ export declare class Noydb {
|
|
|
56
51
|
private readonly keyringCache;
|
|
57
52
|
private readonly syncEngines;
|
|
58
53
|
/**
|
|
59
|
-
* Per-vault active session tier — defaults to `1` after a
|
|
54
|
+
* Per-vault active session tier — defaults to `1` after a secret
|
|
60
55
|
* unlock; tier-2 / tier-3 unlocks downgrade it. Used by
|
|
61
56
|
* {@link checkGate} to evaluate `gate.minTier`.
|
|
62
57
|
*/
|
|
@@ -84,26 +79,38 @@ export declare class Noydb {
|
|
|
84
79
|
private writeRelay;
|
|
85
80
|
/** Per-vault policy enforcers. */
|
|
86
81
|
private readonly policyEnforcers;
|
|
87
|
-
private readonly txStrategy;
|
|
88
|
-
private readonly forgetStrategy;
|
|
89
82
|
/**
|
|
90
|
-
*
|
|
91
|
-
* `
|
|
92
|
-
*
|
|
83
|
+
* Every opt-in service, resolved once (#838). Shared by reference with each
|
|
84
|
+
* `Vault` this instance opens and, through them, every `Collection` — so
|
|
85
|
+
* there is exactly one resolution and no construction path can disagree
|
|
86
|
+
* about which services are enabled (the #834 bug class).
|
|
93
87
|
*/
|
|
94
|
-
readonly
|
|
88
|
+
private readonly strategies;
|
|
95
89
|
/**
|
|
96
|
-
* Opt-in
|
|
97
|
-
* `
|
|
98
|
-
*
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
90
|
+
* Opt-in sovereign-custody (FR-6) strategy — `NO_CUSTODY` (throwing) unless
|
|
91
|
+
* `withCustody()` was passed. Kept as a public accessor because `Vault`
|
|
92
|
+
* routes `vault.custody.liberate` through `this.noydb.custodyStrategy`.
|
|
93
|
+
* @internal
|
|
94
|
+
*/
|
|
95
|
+
get custodyStrategy(): CustodyStrategy;
|
|
102
96
|
private readonly snapshots;
|
|
103
97
|
private readonly policyManager;
|
|
104
98
|
/** Pre-resolved policy-gate engine function (mirrors `coordinationProvider`/`userApiFactory` above). */
|
|
105
99
|
private readonly policyCheckGate;
|
|
106
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Credential and multi-user operations — enrolment, secret rotation,
|
|
102
|
+
* recovery, quick-unlock (#846).
|
|
103
|
+
*
|
|
104
|
+
* Public because 23 methods on this class did nothing but restate a
|
|
105
|
+
* TeamFacade signature and forward to it, so every signature had to be
|
|
106
|
+
* hand-kept in sync with its counterpart. `db.team.rotateSecret(…)`
|
|
107
|
+
* reads the same and has one source of truth.
|
|
108
|
+
*
|
|
109
|
+
* A getter, not a field, so it appears in the prototype-based kernel API
|
|
110
|
+
* manifest — an instance field is invisible to it (the same reason
|
|
111
|
+
* `custodyStrategy` became one in #838).
|
|
112
|
+
*/
|
|
113
|
+
get team(): TeamFacade;
|
|
107
114
|
/**
|
|
108
115
|
* Currently-running multi-record transaction, set by
|
|
109
116
|
* `runTransaction` at the start of Phase 2 (commit) and cleared in
|
|
@@ -282,9 +289,9 @@ export declare class Noydb {
|
|
|
282
289
|
*
|
|
283
290
|
* The walk is a two-step pipeline: first ask the adapter for the
|
|
284
291
|
* universe of compartments it stores, then for each one attempt to
|
|
285
|
-
* load the calling user's keyring with the in-memory
|
|
292
|
+
* load the calling user's keyring with the in-memory secret.
|
|
286
293
|
* Compartments where the user has no keyring file (`NoAccessError`)
|
|
287
|
-
* or where the
|
|
294
|
+
* or where the secret doesn't unwrap (`InvalidKeyError`) are
|
|
288
295
|
* silently dropped from the result — the existence of those
|
|
289
296
|
* compartments is **not** confirmed in the return value.
|
|
290
297
|
*
|
|
@@ -305,15 +312,15 @@ export declare class Noydb {
|
|
|
305
312
|
* **Known edge case.** A vault whose keyring file
|
|
306
313
|
* happens to have an empty wrapped-DEKs map (because the owner
|
|
307
314
|
* granted access before any collection was created) will pass the
|
|
308
|
-
* `loadKeyring` probe with *any*
|
|
315
|
+
* `loadKeyring` probe with *any* secret — there are no DEKs to
|
|
309
316
|
* unwrap, so the integrity-checked unwrap that normally rejects
|
|
310
|
-
* wrong
|
|
317
|
+
* wrong secrets never runs. The result is that an unrelated
|
|
311
318
|
* principal who happens to know the user-id and the vault
|
|
312
319
|
* name can show up in `listAccessibleVaults()` as having
|
|
313
320
|
* access to that empty vault. They cannot read any actual
|
|
314
321
|
* data (their DEK set is empty), so this is a metadata leak
|
|
315
322
|
* (vault name + user-id), not a content leak. Hardening this
|
|
316
|
-
* via a
|
|
323
|
+
* via a secret canary in the keyring file is a deferred
|
|
317
324
|
* follow-up.
|
|
318
325
|
*
|
|
319
326
|
* **Cost.** O(compartments × keyring-load) — one `loadKeyring`
|
|
@@ -406,15 +413,15 @@ export declare class Noydb {
|
|
|
406
413
|
*/
|
|
407
414
|
_resolveBackend(vaultId: string): NoydbStore;
|
|
408
415
|
/**
|
|
409
|
-
* Change the current user's
|
|
416
|
+
* Change the current user's secret for a vault.
|
|
410
417
|
*
|
|
411
|
-
* Validates the new
|
|
412
|
-
* `{
|
|
413
|
-
* fixtures and migrations. Pass a `
|
|
418
|
+
* Validates the new secret against the strength rules. Pass
|
|
419
|
+
* `{ allowWeakSecret: true }` to skip — typically only useful for
|
|
420
|
+
* fixtures and migrations. Pass a `SecretPolicy` to override the
|
|
414
421
|
* default rules (e.g. consumer-tunable `pattern` / `customValidator`).
|
|
415
422
|
*/
|
|
416
|
-
changeSecret(vault: string,
|
|
417
|
-
|
|
423
|
+
changeSecret(vault: string, newSecret: string, options?: SecretPolicy & {
|
|
424
|
+
allowWeakSecret?: boolean;
|
|
418
425
|
}): Promise<void>;
|
|
419
426
|
/** Push local changes to remote for a vault. */
|
|
420
427
|
push(vault: string, options?: PushOptions): Promise<PushResult>;
|
|
@@ -672,7 +679,7 @@ export declare class Noydb {
|
|
|
672
679
|
* denial; resolves with `void` on success.
|
|
673
680
|
*
|
|
674
681
|
* @param vault The vault whose policy applies.
|
|
675
|
-
* @param gate Gate name — built-in (e.g. `'rotate-
|
|
682
|
+
* @param gate Gate name — built-in (e.g. `'rotate-secret'`)
|
|
676
683
|
* or app-defined (`app:*`).
|
|
677
684
|
* @param presented Caller-supplied factor proofs.
|
|
678
685
|
*/
|
|
@@ -687,12 +694,12 @@ export declare class Noydb {
|
|
|
687
694
|
* Two enforcement modes:
|
|
688
695
|
*
|
|
689
696
|
* 1. **Managed-mode mandatory strong-recovery.** When
|
|
690
|
-
* `
|
|
697
|
+
* `secretMode === 'managed'`, the vault MUST have at least
|
|
691
698
|
* one **strong** recovery profile (Shamir today). Paper alone is
|
|
692
699
|
* rejected because under managed mode the user has no memorized
|
|
693
|
-
*
|
|
700
|
+
* secret, so losing the paper sheet = losing every record.
|
|
694
701
|
* This check is unconditional — independent of `requireRecovery`
|
|
695
|
-
* and the `recover-
|
|
702
|
+
* and the `recover-secret` gate.
|
|
696
703
|
*
|
|
697
704
|
* 2. **Opt-in strict mandatory-recovery.** When
|
|
698
705
|
* `requireRecovery: true` is set on createNoydb (and the gate is
|
|
@@ -711,26 +718,6 @@ export declare class Noydb {
|
|
|
711
718
|
* @internal
|
|
712
719
|
*/
|
|
713
720
|
_setActiveTier(vault: string, tier: ActiveTier): void;
|
|
714
|
-
/** Add a tier-2 authenticator slot — see {@link TeamFacade.enrollAuthenticator}. */
|
|
715
|
-
enrollAuthenticator(vault: string, options: EnrollAuthenticatorOptions, factors?: FactorProofBundle): Promise<void>;
|
|
716
|
-
/** Remove a tier-2 authenticator slot — see {@link TeamFacade.removeAuthenticator}. */
|
|
717
|
-
removeAuthenticator(vault: string, slotId: string, factors?: FactorProofBundle): Promise<void>;
|
|
718
|
-
/** Read the slot list for a vault — see {@link TeamFacade.listAuthenticators}. */
|
|
719
|
-
listAuthenticators(vault: string): Promise<ReadonlyArray<KeyringAuthenticator>>;
|
|
720
|
-
/** Mutate an authenticator slot's `meta` — see {@link TeamFacade.updateAuthenticator}. */
|
|
721
|
-
updateAuthenticator(vault: string, slotId: string, options: UpdateAuthenticatorOptions, factors?: FactorProofBundle): Promise<void>;
|
|
722
|
-
/** Native WebAuthn enrollment — see {@link TeamFacade.enrollWebAuthn}. */
|
|
723
|
-
enrollWebAuthn(vault: string, ceremony: (keyring: UnlockedKeyring) => Promise<EnrollAuthenticatorOptions>, factors?: FactorProofBundle): Promise<{
|
|
724
|
-
credentialId: string;
|
|
725
|
-
}>;
|
|
726
|
-
/** List webauthn-method slots — see {@link TeamFacade.listWebAuthnSlots}. */
|
|
727
|
-
listWebAuthnSlots(vault: string): Promise<ReadonlyArray<{
|
|
728
|
-
id: string;
|
|
729
|
-
enrolledAt: string;
|
|
730
|
-
credentialId: string;
|
|
731
|
-
}>>;
|
|
732
|
-
/** Unlock via a tier-2 authenticator slot — see {@link TeamFacade.unlockViaAuthenticator}. */
|
|
733
|
-
unlockViaAuthenticator(vault: string, slotId: string, verify: (slot: KeyringAuthenticator) => Promise<UnlockedKeyring>): Promise<UnlockedKeyring>;
|
|
734
721
|
/**
|
|
735
722
|
* Set the owner-curated cover for a vault. Throws
|
|
736
723
|
* `ValidationError` if the developer did not opt the hub into
|
|
@@ -760,53 +747,6 @@ export declare class Noydb {
|
|
|
760
747
|
getCover(vault: string, opts?: {
|
|
761
748
|
readonly locale?: string;
|
|
762
749
|
}): Promise<Cover | undefined>;
|
|
763
|
-
/** English summary of the configured auth model — see {@link TeamFacade.describeAuthConfig}. */
|
|
764
|
-
describeAuthConfig(vault: string): Promise<string>;
|
|
765
|
-
/** Mermaid `flowchart TB` source for the auth graph — see {@link TeamFacade.diagramAuthConfig}. */
|
|
766
|
-
diagramAuthConfig(vault: string): Promise<string>;
|
|
767
|
-
/** Per-user enrollment summary — see {@link TeamFacade.describeUserAuth}. */
|
|
768
|
-
describeUserAuth(vault: string, userId: string, factors?: FactorProofBundle): Promise<string>;
|
|
769
|
-
/** Bulk per-user enrollment summary — see {@link TeamFacade.describeAllUsersAuth}. */
|
|
770
|
-
describeAllUsersAuth(vault: string, factors?: FactorProofBundle): Promise<Array<{
|
|
771
|
-
userId: string;
|
|
772
|
-
description: string;
|
|
773
|
-
}>>;
|
|
774
|
-
/** Rotate the user's passphrase (user remembers old) — see {@link TeamFacade.rotatePassphrase}. */
|
|
775
|
-
rotatePassphrase(vault: string, input: RotatePassphraseInput, factors?: FactorProofBundle): Promise<void>;
|
|
776
|
-
/** Reset the passphrase using a recovery proof — see {@link TeamFacade.recoverPassphrase}. */
|
|
777
|
-
recoverPassphrase(vault: string, input: RecoverPassphraseInput, factors?: FactorProofBundle): Promise<RecoverPassphraseResult>;
|
|
778
|
-
/** Deliberate paper/Shamir recovery-code regeneration — see {@link TeamFacade.rotateRecovery}. */
|
|
779
|
-
rotateRecovery(vault: string, options: RotateRecoveryOptions, factors?: FactorProofBundle): Promise<RotateRecoveryResult>;
|
|
780
|
-
/** Atomic create-and-enroll for managed-mode vaults — see {@link TeamFacade.openVaultAndEnrollRecovery}. */
|
|
781
|
-
openVaultAndEnrollRecovery(vault: string, opts: {
|
|
782
|
-
readonly recovery: ReadonlyArray<RecoveryEnrollmentInput>;
|
|
783
|
-
readonly locale?: string;
|
|
784
|
-
}): Promise<{
|
|
785
|
-
readonly vault: Vault;
|
|
786
|
-
readonly recoveryEnrollments: ReadonlyArray<EnrollRecoveryResult>;
|
|
787
|
-
}>;
|
|
788
|
-
/** Recovery flow under managed-passphrase mode — see {@link TeamFacade.recoverManagedPassphrase}. */
|
|
789
|
-
recoverManagedPassphrase(vault: string, options: {
|
|
790
|
-
readonly recoveryProof: RecoveryProof;
|
|
791
|
-
readonly passphrasePolicy?: PassphrasePolicy;
|
|
792
|
-
}): Promise<void>;
|
|
793
|
-
/** Atomic peer-recovery of an existing user's keyring — see {@link TeamFacade.recoverUser}. */
|
|
794
|
-
recoverUser(vault: string, options: RecoverUserOptions, factors?: FactorProofBundle): Promise<void>;
|
|
795
|
-
/** Persist a recovery enrollment (paper or Shamir) — see {@link TeamFacade.enrollRecovery}. */
|
|
796
|
-
enrollRecovery(vault: string, enrollment: RecoveryEnrollmentInput): Promise<EnrollRecoveryResult>;
|
|
797
|
-
/** Read the persisted recovery entries (paper + Shamir) — see {@link TeamFacade.listRecoveryEntries}. */
|
|
798
|
-
listRecoveryEntries(vault: string): Promise<{
|
|
799
|
-
paper: ReadonlyArray<PaperRecoveryEntry>;
|
|
800
|
-
shamir: ReadonlyArray<ShamirRecoveryEntry>;
|
|
801
|
-
}>;
|
|
802
|
-
/** Register a tier-3 quick-unlock state — see {@link TeamFacade.enrollUnlock}. */
|
|
803
|
-
enrollUnlock(vault: string, state: QuickUnlockState, factors?: FactorProofBundle): Promise<void>;
|
|
804
|
-
/** Resume a session via the registered tier-3 state — see {@link TeamFacade.unlockViaPin}. */
|
|
805
|
-
unlockViaPin(vault: string, resume: (state: QuickUnlockState) => Promise<UnlockedKeyring>): Promise<UnlockedKeyring | undefined>;
|
|
806
|
-
/** Drop the tier-3 state for a vault — see {@link TeamFacade.clearQuickUnlock}. */
|
|
807
|
-
clearQuickUnlock(vault: string): void;
|
|
808
|
-
/** Public defensive-copy accessor for the unlocked keyring — see {@link TeamFacade.getKeyring}. */
|
|
809
|
-
getKeyring(vault: string): Promise<UnlockedKeyring>;
|
|
810
750
|
/**
|
|
811
751
|
* Live-reference variant used by the hub's own code paths. Internal
|
|
812
752
|
* mutations on `deks` (e.g. {@link ensureCollectionDEK} adding a
|
package/dist/kernel/types.d.ts
CHANGED
|
@@ -55,11 +55,11 @@ import type { SyncStrategy } from '../with-party/team/sync-strategy.js';
|
|
|
55
55
|
import type { GuardStrategyHandleAny } from '../with-audit/guards/types.js';
|
|
56
56
|
import type { DerivationStrategyHandle } from '../with-formula/derivations/types.js';
|
|
57
57
|
import type { UnlockedKeyring } from '../with-party/team/keyring.js';
|
|
58
|
-
import type {
|
|
58
|
+
import type { SecretPolicy } from './validation.js';
|
|
59
59
|
import type { CoverSchema } from '../with-party/directory/cover/types.js';
|
|
60
60
|
import type { MaterializedViewStrategyHandle } from '../with-formula/materialized-views/types.js';
|
|
61
61
|
import type { OverlayedViewStrategyHandle } from '../with-formula/overlay-views/types.js';
|
|
62
|
-
import type { SealingKeyProvider, RecipientHint } from '../with-party/team/managed-
|
|
62
|
+
import type { SealingKeyProvider, RecipientHint } from '../with-party/team/managed-secret.js';
|
|
63
63
|
import type { ShamirRecoveryProvider } from '../with-party/team/shamir-recovery-provider.js';
|
|
64
64
|
import type { ObjectProjection } from '../with-shape/blobs/object-projection.js';
|
|
65
65
|
import type { CoordinationProvider } from '../port/by/types.js';
|
|
@@ -755,7 +755,7 @@ export type VaultPolicyOnDisk = Record<string, unknown>;
|
|
|
755
755
|
* - `paper` — `on-recovery` codes (the standard end-to-end profile).
|
|
756
756
|
* - `shamir` / `multi-channel` / `admin-mediated` — API surface ships;
|
|
757
757
|
* per-profile dispatch lands in follow-up issues. Calling
|
|
758
|
-
* `db.
|
|
758
|
+
* `db.recoverSecret` against these throws
|
|
759
759
|
* {@link RecoveryProfileNotImplementedError}.
|
|
760
760
|
*/
|
|
761
761
|
export type RecoveryEnrollment = {
|
|
@@ -837,7 +837,7 @@ export interface KeyringAuthenticatorWrappingKEK extends KeyringAuthenticatorBas
|
|
|
837
837
|
*
|
|
838
838
|
* Trade-off: a slot of this kind reconstructs `UnlockedKeyring` with
|
|
839
839
|
* `kek: null` after unlock. That is semantically correct for tier-2
|
|
840
|
-
* (sensitive ops like `enrollAuthenticator` / `
|
|
840
|
+
* (sensitive ops like `enrollAuthenticator` / `rotateSecret`
|
|
841
841
|
* require a tier-1 unlock anyway) and matches how `@noy-db/on-pin`
|
|
842
842
|
* already behaves at tier 3.
|
|
843
843
|
*
|
|
@@ -877,12 +877,12 @@ export interface KeyringFile {
|
|
|
877
877
|
readonly created_at: string;
|
|
878
878
|
readonly granted_by: string;
|
|
879
879
|
/**
|
|
880
|
-
*
|
|
880
|
+
* Secret canary — base64 AES-KW-wrapped form of a known constant
|
|
881
881
|
* 256-bit value, wrapped under the keyring's KEK.
|
|
882
882
|
*
|
|
883
883
|
* Optional: older keyrings load with no canary and fall back to
|
|
884
884
|
* the multi-DEK corruption heuristic. Newer keyrings
|
|
885
|
-
* carry one and let `loadKeyring` distinguish wrong-
|
|
885
|
+
* carry one and let `loadKeyring` distinguish wrong-secret
|
|
886
886
|
* from corruption even when ALL DEKs (including a single-DEK keyring's
|
|
887
887
|
* sole DEK) are corrupted.
|
|
888
888
|
*
|
|
@@ -1395,7 +1395,7 @@ export interface GrantOptions {
|
|
|
1395
1395
|
readonly userId: string;
|
|
1396
1396
|
readonly displayName: string;
|
|
1397
1397
|
readonly role: Role;
|
|
1398
|
-
readonly
|
|
1398
|
+
readonly secret: string;
|
|
1399
1399
|
readonly permissions?: Permissions;
|
|
1400
1400
|
/**
|
|
1401
1401
|
* Optional `@noy-db/as-*` export capability. Omit or
|
|
@@ -1412,9 +1412,9 @@ export interface GrantOptions {
|
|
|
1412
1412
|
/**
|
|
1413
1413
|
* Skip phrase-format strength validation (issue #7). Defaults to
|
|
1414
1414
|
* false — `grant()` rejects phrases that don't meet the configured
|
|
1415
|
-
* `
|
|
1415
|
+
* `SecretPolicy`. Test fixtures and CLI scripts pass `true`.
|
|
1416
1416
|
*/
|
|
1417
|
-
readonly
|
|
1417
|
+
readonly allowWeakSecret?: boolean;
|
|
1418
1418
|
/**
|
|
1419
1419
|
* Initial user-envelope payload for the new principal. Sealed under
|
|
1420
1420
|
* the same vault DEK (the reserved `_users` collection's DEK) and
|
|
@@ -1612,7 +1612,7 @@ export interface SessionPolicy {
|
|
|
1612
1612
|
readonly absoluteTimeoutMs?: number;
|
|
1613
1613
|
/**
|
|
1614
1614
|
* Operations that require the user to re-authenticate (re-enter their
|
|
1615
|
-
*
|
|
1615
|
+
* secret or perform a fresh WebAuthn assertion) before proceeding,
|
|
1616
1616
|
* even if the session is still alive.
|
|
1617
1617
|
*
|
|
1618
1618
|
* Common pattern: `requireReAuthFor: ['export', 'grant']` — allow
|
|
@@ -2400,7 +2400,7 @@ export interface NoydbOptions {
|
|
|
2400
2400
|
* throw `TeamNotEnabledError` and the keyring grant/revoke/rotate engines
|
|
2401
2401
|
* are reached only via opt-in — the always-on floor is single-user.
|
|
2402
2402
|
* Single-user primitives (owner keyring, unlock, `listUsers`,
|
|
2403
|
-
* `updateUser`,
|
|
2403
|
+
* `updateUser`, secret rotate/recover) stay ungated, as does the
|
|
2404
2404
|
* `createDeedOwner` free function (no createNoydb instance to gate
|
|
2405
2405
|
* against).
|
|
2406
2406
|
*/
|
|
@@ -2484,12 +2484,12 @@ export interface NoydbOptions {
|
|
|
2484
2484
|
readonly sync?: NoydbStore | SyncTarget | SyncTarget[];
|
|
2485
2485
|
/** User identifier. */
|
|
2486
2486
|
readonly user: string;
|
|
2487
|
-
/**
|
|
2487
|
+
/** Secret for key derivation. Required unless encrypt is false or `getKeyring` is provided. */
|
|
2488
2488
|
readonly secret?: string;
|
|
2489
2489
|
/**
|
|
2490
2490
|
* Optional callback that returns an unlocked keyring for a given vault.
|
|
2491
2491
|
* Use this to plug in WebAuthn / OIDC / Shamir / any unlock path that
|
|
2492
|
-
* produces an `UnlockedKeyring` outside the
|
|
2492
|
+
* produces an `UnlockedKeyring` outside the secret model.
|
|
2493
2493
|
*
|
|
2494
2494
|
* When set, `secret` MUST NOT also be set — `createNoydb` throws if both
|
|
2495
2495
|
* are supplied. When neither is set (and `encrypt !== false`), `createNoydb`
|
|
@@ -2517,32 +2517,32 @@ export interface NoydbOptions {
|
|
|
2517
2517
|
* ```
|
|
2518
2518
|
*
|
|
2519
2519
|
* Note: this callback is responsible for both the "open existing vault"
|
|
2520
|
-
* and the "create new vault" cases. Unlike the
|
|
2520
|
+
* and the "create new vault" cases. Unlike the secret path, there is
|
|
2521
2521
|
* no automatic `NoAccessError` → `createOwnerKeyring` fallback, because
|
|
2522
2522
|
* the callback owner has the UI context to decide which path to run.
|
|
2523
|
-
* For first-time bootstrap, use a
|
|
2523
|
+
* For first-time bootstrap, use a secret or recovery code, enroll
|
|
2524
2524
|
* WebAuthn from the unlocked keyring, then swap to `getKeyring` on
|
|
2525
2525
|
* subsequent sessions.
|
|
2526
2526
|
*/
|
|
2527
2527
|
readonly getKeyring?: (vault: string) => Promise<UnlockedKeyring>;
|
|
2528
2528
|
/**
|
|
2529
|
-
*
|
|
2529
|
+
* Secret mode. Default `'standard'`.
|
|
2530
2530
|
*
|
|
2531
2531
|
* - `'standard'` — the legacy flow. `secret` supplies the
|
|
2532
|
-
* plaintext
|
|
2533
|
-
* `rotate-
|
|
2532
|
+
* plaintext secret, the user knows it, and the policy gate
|
|
2533
|
+
* `rotate-secret` is enabled.
|
|
2534
2534
|
* - `'managed'` — rubber-hose-resistant mode. Hub generates a
|
|
2535
|
-
* 256-bit random
|
|
2535
|
+
* 256-bit random secret at first open and seals it under
|
|
2536
2536
|
* the provided `sealingKey`. The user never sees or types the
|
|
2537
|
-
*
|
|
2537
|
+
* secret, defeating the $5-wrench attack. Mutually
|
|
2538
2538
|
* exclusive with `secret` and `getKeyring`.
|
|
2539
2539
|
*
|
|
2540
|
-
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Managed-
|
|
2540
|
+
* @see https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/session-tiers.md → Managed-secret mode
|
|
2541
2541
|
*/
|
|
2542
|
-
readonly
|
|
2542
|
+
readonly secretMode?: 'standard' | 'managed';
|
|
2543
2543
|
/**
|
|
2544
2544
|
* Provider that seals/unseals the auto-generated managed-mode
|
|
2545
|
-
*
|
|
2545
|
+
* secret. Required when `secretMode === 'managed'`; ignored
|
|
2546
2546
|
* otherwise. Implementations live in per-platform packages
|
|
2547
2547
|
* (`@noy-db/seal-macos-keychain`, `@noy-db/seal-wincred`,
|
|
2548
2548
|
* `@noy-db/seal-libsecret`, `@noy-db/seal-aws-kms`, …).
|
|
@@ -2591,17 +2591,17 @@ export interface NoydbOptions {
|
|
|
2591
2591
|
*/
|
|
2592
2592
|
readonly sessionPolicy?: SessionPolicy;
|
|
2593
2593
|
/**
|
|
2594
|
-
* Validate
|
|
2594
|
+
* Validate secret strength against the phrase format
|
|
2595
2595
|
* on first-time keyring creation. When
|
|
2596
|
-
* `true`, weak phrases throw {@link
|
|
2597
|
-
* `createNoydb()` / `db.
|
|
2596
|
+
* `true`, weak phrases throw {@link WeakSecretError} from
|
|
2597
|
+
* `createNoydb()` / `db.team.rotateSecret()`. Default: `false` for
|
|
2598
2598
|
* back-compat; planned to flip to `true` in a future major release.
|
|
2599
2599
|
*/
|
|
2600
|
-
readonly
|
|
2600
|
+
readonly validateSecret?: boolean;
|
|
2601
2601
|
/**
|
|
2602
2602
|
* Vault-level policy gate document. When present, the hub
|
|
2603
2603
|
* persists the merged policy at `_meta/policy` on first-time vault
|
|
2604
|
-
* creation and gates sensitive operations (`db.
|
|
2604
|
+
* creation and gates sensitive operations (`db.rotateSecret`,
|
|
2605
2605
|
* `db.export*`, …) against it. Omitted ⇒ the engine uses
|
|
2606
2606
|
* {@link PERSONAL_POLICY}. Use {@link STRICT_POLICY} for regulated
|
|
2607
2607
|
* deployments.
|
|
@@ -2616,11 +2616,11 @@ export interface NoydbOptions {
|
|
|
2616
2616
|
readonly policy?: VaultPolicy;
|
|
2617
2617
|
/**
|
|
2618
2618
|
* Mandatory recovery profile enrollment. Vaults with
|
|
2619
|
-
* `recover-
|
|
2619
|
+
* `recover-secret` enabled MUST register at least one profile
|
|
2620
2620
|
* before being production-ready, otherwise `createNoydb()` throws
|
|
2621
2621
|
* {@link RecoveryNotEnrolledError}. Set
|
|
2622
|
-
* `policy.gates['recover-
|
|
2623
|
-
* deliberately opt out of recovery (
|
|
2622
|
+
* `policy.gates['recover-secret'].enabled = false` to
|
|
2623
|
+
* deliberately opt out of recovery (secret loss = data loss).
|
|
2624
2624
|
*
|
|
2625
2625
|
* The `'paper'` profile is supported end-to-end. Other
|
|
2626
2626
|
* profiles ship the API shape and throw
|
|
@@ -2647,7 +2647,7 @@ export interface NoydbOptions {
|
|
|
2647
2647
|
* data records but not the keyring row, or a WebAuthn credential was rotated).
|
|
2648
2648
|
* **All previously encrypted data is unrecoverable after a reset.**
|
|
2649
2649
|
*
|
|
2650
|
-
* Only applies to the
|
|
2650
|
+
* Only applies to the secret (`secret`) path. When `getKeyring` is used,
|
|
2651
2651
|
* the callback is responsible for handling stale-keyring detection itself.
|
|
2652
2652
|
*/
|
|
2653
2653
|
readonly onInvalidKey?: 'error' | 'reset';
|
|
@@ -3037,7 +3037,7 @@ export interface WarningRules {
|
|
|
3037
3037
|
}
|
|
3038
3038
|
/**
|
|
3039
3039
|
* Policy applied to one named gate. `enabled: false` disables the
|
|
3040
|
-
* action entirely (useful in managed-
|
|
3040
|
+
* action entirely (useful in managed-secret mode where rotation is
|
|
3041
3041
|
* impossible by construction).
|
|
3042
3042
|
*/
|
|
3043
3043
|
export interface GatePolicy {
|
|
@@ -3053,11 +3053,11 @@ export interface GatePolicy {
|
|
|
3053
3053
|
* and use the same engine; the engine treats unknown names with no
|
|
3054
3054
|
* configured policy as "no gate" (no-op).
|
|
3055
3055
|
*/
|
|
3056
|
-
export type BuiltInGateName = 'rotate-
|
|
3056
|
+
export type BuiltInGateName = 'rotate-secret' | 'recover-secret' | 'enroll-authenticator' | 'remove-authenticator'
|
|
3057
3057
|
/**
|
|
3058
3058
|
* Authorize a deliberate paper-recovery-code regeneration —
|
|
3059
|
-
* `db.rotateRecovery`. Symmetric to `rotate-
|
|
3060
|
-
* the case where the user remembers their
|
|
3059
|
+
* `db.rotateRecovery`. Symmetric to `rotate-secret` for
|
|
3060
|
+
* the case where the user remembers their secret but wants a
|
|
3061
3061
|
* fresh sheet (lost the printout, suspect compromise of the off-site
|
|
3062
3062
|
* copy). PERSONAL allows tier-1; STRICT requires an off-device
|
|
3063
3063
|
* factor so a stolen unlocked laptop cannot silently mint a new
|
|
@@ -3080,7 +3080,7 @@ export type BuiltInGateName = 'rotate-passphrase' | 'recover-passphrase' | 'enro
|
|
|
3080
3080
|
/**
|
|
3081
3081
|
* Authorize an atomic peer-recovery — `db.recoverUser`.
|
|
3082
3082
|
* Distinct from `revoke-user` because peer-recovery is intentional
|
|
3083
|
-
* re-issuance of someone's keyring under a temp
|
|
3083
|
+
* re-issuance of someone's keyring under a temp secret, NOT
|
|
3084
3084
|
* removal. Allows owner→owner natively (matches the threat model:
|
|
3085
3085
|
* a co-owner explicitly recovering another co-owner). Ships with a
|
|
3086
3086
|
* factor-proof default in `STRICT_POLICY` so the issuer must
|
|
@@ -3139,12 +3139,12 @@ export type BuiltInGateName = 'rotate-passphrase' | 'recover-passphrase' | 'enro
|
|
|
3139
3139
|
export type GateName = BuiltInGateName | `app:${string}`;
|
|
3140
3140
|
/**
|
|
3141
3141
|
* Top-level policy object. Persisted at `_meta/policy` once at vault
|
|
3142
|
-
* creation. The `
|
|
3143
|
-
* applied at every
|
|
3142
|
+
* creation. The `secret` block configures the strength rules
|
|
3143
|
+
* applied at every secret ingress; `gates` configures
|
|
3144
3144
|
* the action-level requirements.
|
|
3145
3145
|
*/
|
|
3146
3146
|
export interface VaultPolicy {
|
|
3147
|
-
readonly
|
|
3147
|
+
readonly secret?: SecretPolicy;
|
|
3148
3148
|
readonly gates: Partial<Record<GateName, GatePolicy>>;
|
|
3149
3149
|
}
|
|
3150
3150
|
/** Concrete proof an actor presents to {@link checkGate}. */
|
|
@@ -3160,7 +3160,7 @@ export interface FactorProof {
|
|
|
3160
3160
|
* Noydb method. Used as the optional last parameter of every method
|
|
3161
3161
|
* that runs through `checkGate`: `db.grant`, `db.revoke`, `db.updateUser`,
|
|
3162
3162
|
* `db.enrollAuthenticator`, `db.removeAuthenticator`, `db.updateAuthenticator`,
|
|
3163
|
-
* `db.enrollWebAuthn`, `db.
|
|
3163
|
+
* `db.enrollWebAuthn`, `db.rotateSecret`, `db.recoverSecret`,
|
|
3164
3164
|
* `db.recoverUser`, `db.enrollUnlock`, `db.describeUserAuth`,
|
|
3165
3165
|
* `db.describeAllUsersAuth`.
|
|
3166
3166
|
*
|
|
@@ -3286,4 +3286,45 @@ export interface NoydbPolicyDeps {
|
|
|
3286
3286
|
* synchronously — mirrors {@link UserApiFactory}.
|
|
3287
3287
|
*/
|
|
3288
3288
|
export type NoydbPolicyFactory = (deps: NoydbPolicyDeps) => NoydbPolicyApi;
|
|
3289
|
+
/**
|
|
3290
|
+
* Named field-set declarations for a collection's type-level shape (#839).
|
|
3291
|
+
*
|
|
3292
|
+
* Replaces the positional `Collection<T, S, Q, M>` tail at every surface a
|
|
3293
|
+
* consumer touches. The positional form was unreadable and unsafe: `Q` and `M`
|
|
3294
|
+
* are both `keyof T & string`, so swapping them type-checked silently, and
|
|
3295
|
+
* reaching `M` meant writing placeholders —
|
|
3296
|
+
* `collection<Sale, never, never, 'amount' | 'tax'>`.
|
|
3297
|
+
*
|
|
3298
|
+
* ```ts
|
|
3299
|
+
* vault.collection<Sale, { money: 'amount' | 'tax' }>('sales')
|
|
3300
|
+
* vault.collection<Invoice, { sensitive: 'ssn'; indexed: 'clientId' }>('invoices')
|
|
3301
|
+
* ```
|
|
3302
|
+
*
|
|
3303
|
+
* Every member is optional; omitting one keeps that axis permissive, which is
|
|
3304
|
+
* what the `[X] extends [never]` guards in {@link QueryField} /
|
|
3305
|
+
* {@link IndexFieldName} encode. Those guards are NOT removable — they are the
|
|
3306
|
+
* difference between "no indexes declared, so `where()` accepts any field" and
|
|
3307
|
+
* "indexes declared, so `where()` is restricted to them" — so they are
|
|
3308
|
+
* re-expressed against this shape rather than dropped.
|
|
3309
|
+
*/
|
|
3310
|
+
export interface CollectionShape<T> {
|
|
3311
|
+
/** Fields sealed at rest; reads return {@link Sealed} handles. */
|
|
3312
|
+
readonly sensitive?: keyof T & string;
|
|
3313
|
+
/** Fields carrying a declared secondary index; narrows `where()` / `orderBy()`. */
|
|
3314
|
+
readonly indexed?: keyof T & string;
|
|
3315
|
+
/** Fields carrying a money descriptor. */
|
|
3316
|
+
readonly money?: keyof T & string;
|
|
3317
|
+
}
|
|
3318
|
+
/** The `sensitive` field set of a {@link CollectionShape}, or `never` if unset. */
|
|
3319
|
+
export type SensitiveOf<T, O> = O extends {
|
|
3320
|
+
sensitive: infer S;
|
|
3321
|
+
} ? (S & keyof T & string) : never;
|
|
3322
|
+
/** The `indexed` field set of a {@link CollectionShape}, or `never` if unset. */
|
|
3323
|
+
export type IndexedOf<T, O> = O extends {
|
|
3324
|
+
indexed: infer Q;
|
|
3325
|
+
} ? (Q & keyof T & string) : never;
|
|
3326
|
+
/** The `money` field set of a {@link CollectionShape}, or `never` if unset. */
|
|
3327
|
+
export type MoneyOf<T, O> = O extends {
|
|
3328
|
+
money: infer M;
|
|
3329
|
+
} ? (M & keyof T & string) : never;
|
|
3289
3330
|
export {};
|