@noy-db/hub 0.7.0 → 0.8.0-pre.0
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 +105 -14
- package/LICENSE +202 -21
- package/NOTICE +1 -0
- package/README.md +27 -10
- package/codemods/0.8.0-pre.json +61 -0
- package/dist/api-GVYEKSJE.js +19 -0
- package/dist/as/index.js +11 -11
- package/dist/at/index.js +9 -9
- package/dist/attestation/index.js +20 -20
- package/dist/{backup-IJTB4S4M.js → backup-7TFRVFLH.js} +21 -15
- package/dist/backup-7TFRVFLH.js.map +1 -0
- package/dist/blobs/index.js +13 -13
- package/dist/broker/index.js +12 -12
- package/dist/by/index.js +2 -2
- package/dist/cargo/index.js +39 -36
- package/dist/{chunk-7O3Y4PPD.js → chunk-244VXYPG.js} +140 -16
- package/dist/chunk-244VXYPG.js.map +1 -0
- package/dist/{chunk-BUE2D7PX.js → chunk-32YV3TJT.js} +2 -2
- package/dist/{chunk-3RCJJBNR.js → chunk-3ELRMVJK.js} +12 -12
- package/dist/{chunk-6GMZ7HEE.js → chunk-3F7GLNAE.js} +6 -6
- package/dist/{chunk-2Y4IMKA6.js → chunk-3H5KLDZN.js} +4 -4
- package/dist/{chunk-VTFVLCUH.js → chunk-3JWHAR6E.js} +2 -2
- package/dist/{chunk-YMUFFJCO.js → chunk-3TDUWVWB.js} +5 -2
- package/dist/chunk-3TDUWVWB.js.map +1 -0
- package/dist/{chunk-JBDFMYKQ.js → chunk-4AF3TUMP.js} +2 -2
- package/dist/{chunk-ZORTV6NH.js → chunk-4I522ERM.js} +88 -4
- package/dist/chunk-4I522ERM.js.map +1 -0
- package/dist/{chunk-MUM7IANK.js → chunk-4MXI3ODD.js} +4 -4
- package/dist/chunk-4MXI3ODD.js.map +1 -0
- package/dist/{chunk-BLN54W3L.js → chunk-5FDLC6G7.js} +56 -3
- package/dist/chunk-5FDLC6G7.js.map +1 -0
- package/dist/chunk-5O7D6ZTW.js +53 -0
- package/dist/chunk-5O7D6ZTW.js.map +1 -0
- package/dist/{chunk-J6FXAEUG.js → chunk-6B3VNR4P.js} +12 -12
- package/dist/{chunk-TUFM4UZP.js → chunk-6K7DPM7D.js} +2 -2
- package/dist/{chunk-K6LHRFBL.js → chunk-6LMQ5R26.js} +7 -7
- package/dist/{chunk-SPXXX5E4.js → chunk-6LNL42F5.js} +94 -32
- package/dist/chunk-6LNL42F5.js.map +1 -0
- package/dist/{chunk-XLMEZIAJ.js → chunk-6OWXYZK2.js} +2 -2
- package/dist/{chunk-BOWNCWZT.js → chunk-6QSQQLSE.js} +3 -3
- package/dist/chunk-7JE7BDYJ.js +1558 -0
- package/dist/chunk-7JE7BDYJ.js.map +1 -0
- package/dist/{chunk-KG7TZKZG.js → chunk-7VCXZDA4.js} +5 -5
- package/dist/chunk-7VCXZDA4.js.map +1 -0
- package/dist/{chunk-NQKIUNW5.js → chunk-A6IJU4TK.js} +2 -2
- package/dist/{chunk-BM5TWITZ.js → chunk-ANWPSTZU.js} +38 -9
- package/dist/chunk-ANWPSTZU.js.map +1 -0
- package/dist/{chunk-QIZPZMUI.js → chunk-AOWGXU6D.js} +2 -2
- package/dist/{chunk-CUZLNGD5.js → chunk-B2YY6WDD.js} +1 -1
- package/dist/chunk-B2YY6WDD.js.map +1 -0
- package/dist/{chunk-SFAWCTEM.js → chunk-B57AFBY2.js} +2 -2
- package/dist/{chunk-GPEQUXHL.js → chunk-B6SJIBQK.js} +4 -4
- package/dist/chunk-BJ2IXQ5Q.js +100 -0
- package/dist/chunk-BJ2IXQ5Q.js.map +1 -0
- package/dist/{chunk-Q2PU57HC.js → chunk-BK2HHQGN.js} +2 -2
- package/dist/chunk-BKT776R5.js +1 -0
- package/dist/{chunk-KUX3OB6D.js → chunk-BP6DARYA.js} +33 -5
- package/dist/chunk-BP6DARYA.js.map +1 -0
- package/dist/{chunk-FXBIP2WD.js → chunk-BUDAGWL5.js} +6 -6
- package/dist/chunk-CF5UU4S7.js +757 -0
- package/dist/chunk-CF5UU4S7.js.map +1 -0
- package/dist/{chunk-BOET4NA4.js → chunk-CKNGS5MH.js} +3 -3
- package/dist/chunk-CY2CYVWZ.js +41 -0
- package/dist/chunk-CY2CYVWZ.js.map +1 -0
- package/dist/{chunk-2577DKXB.js → chunk-DC5QVPV7.js} +2 -2
- package/dist/chunk-DC5QVPV7.js.map +1 -0
- package/dist/{chunk-YSRUYAVU.js → chunk-DE4DH2RZ.js} +2 -2
- package/dist/{chunk-6I2RQCET.js → chunk-DF73H4UN.js} +4 -4
- package/dist/{chunk-4GVM6QZA.js → chunk-ENAG3IY7.js} +2 -2
- package/dist/chunk-ENAG3IY7.js.map +1 -0
- package/dist/{chunk-K7NTTA6P.js → chunk-EOVMT6TB.js} +2 -2
- package/dist/chunk-F24ZZTHQ.js +193 -0
- package/dist/chunk-F24ZZTHQ.js.map +1 -0
- package/dist/chunk-F2TDU7MQ.js +456 -0
- package/dist/chunk-F2TDU7MQ.js.map +1 -0
- package/dist/chunk-F6NCB7KT.js +13 -0
- package/dist/chunk-F6NCB7KT.js.map +1 -0
- package/dist/{chunk-SPYWXKJN.js → chunk-F7XGHL5O.js} +3 -3
- package/dist/chunk-F7XGHL5O.js.map +1 -0
- package/dist/{chunk-XTXOCYOJ.js → chunk-FCKWQE2H.js} +5 -5
- package/dist/{chunk-U4FOQDY4.js → chunk-FH2L2E34.js} +4 -4
- package/dist/chunk-FH2L2E34.js.map +1 -0
- package/dist/{chunk-4OZNXTO4.js → chunk-FN5EBVTQ.js} +2 -2
- package/dist/chunk-FQ54DWUQ.js +270 -0
- package/dist/chunk-FQ54DWUQ.js.map +1 -0
- package/dist/{chunk-NKHRDYOR.js → chunk-FQ5VRHIB.js} +4 -4
- package/dist/{chunk-FAHMLERK.js → chunk-FW22ZCXT.js} +2 -2
- package/dist/chunk-FXQBGFOX.js +524 -0
- package/dist/chunk-FXQBGFOX.js.map +1 -0
- package/dist/{chunk-AO42KJO6.js → chunk-GF5BZ7D4.js} +45 -9
- package/dist/chunk-GF5BZ7D4.js.map +1 -0
- package/dist/{chunk-TRGTKX5E.js → chunk-GHLTDZRS.js} +5 -3
- package/dist/{chunk-TRGTKX5E.js.map → chunk-GHLTDZRS.js.map} +1 -1
- package/dist/{chunk-5WDXHNSW.js → chunk-HBPPGWUM.js} +5 -5
- package/dist/chunk-HBPPGWUM.js.map +1 -0
- package/dist/{chunk-KTFRCC5C.js → chunk-HBRLNOHL.js} +82 -8
- package/dist/chunk-HBRLNOHL.js.map +1 -0
- package/dist/chunk-HLEK5VAN.js +275 -0
- package/dist/chunk-HLEK5VAN.js.map +1 -0
- package/dist/{chunk-RMS3NEA3.js → chunk-HT2AHGQI.js} +2 -2
- package/dist/{chunk-CHJBLCOG.js → chunk-HVSCEIYL.js} +7 -7
- package/dist/{chunk-UXWB3FPF.js → chunk-I3JDRCMW.js} +150 -22
- package/dist/chunk-I3JDRCMW.js.map +1 -0
- package/dist/{chunk-GY4WYNNG.js → chunk-ID6Z6E66.js} +2 -2
- package/dist/{chunk-EYBQEIUY.js → chunk-IEX7NK2K.js} +3 -3
- package/dist/{chunk-KUJDV5QH.js → chunk-ISZQJBML.js} +5 -5
- package/dist/{chunk-LWBCUYZW.js → chunk-IT22PWKV.js} +2 -2
- package/dist/{chunk-EQEYOJBM.js → chunk-IUWCVHQ7.js} +3 -3
- package/dist/chunk-IUWCVHQ7.js.map +1 -0
- package/dist/{chunk-7V4TP3AF.js → chunk-J6UOHJY5.js} +4 -4
- package/dist/{chunk-JMGDHKQF.js → chunk-JCN44NCY.js} +2 -2
- package/dist/{chunk-CARABLSQ.js → chunk-K6W7BVZ6.js} +3 -3
- package/dist/{chunk-77K4PG6P.js → chunk-KJFW62P4.js} +29 -11
- package/dist/chunk-KJFW62P4.js.map +1 -0
- package/dist/{chunk-453F654R.js → chunk-L7DOS3TE.js} +2 -2
- package/dist/chunk-LGNDFRYC.js +23 -0
- package/dist/chunk-LGNDFRYC.js.map +1 -0
- package/dist/{chunk-WEQEYLCS.js → chunk-LGRLME4M.js} +7 -7
- package/dist/{chunk-RMF67KCG.js → chunk-LQ4ZHOKP.js} +2 -2
- package/dist/{chunk-ZVO4QVPD.js → chunk-M522UYZ2.js} +5 -5
- package/dist/{chunk-G56KBWFY.js → chunk-M7NI3IWE.js} +45 -12
- package/dist/chunk-M7NI3IWE.js.map +1 -0
- package/dist/chunk-MDWKM2XC.js +293 -0
- package/dist/chunk-MDWKM2XC.js.map +1 -0
- package/dist/chunk-MKXXMNJH.js +204 -0
- package/dist/chunk-MKXXMNJH.js.map +1 -0
- package/dist/{chunk-SKGMN35F.js → chunk-MLPHLJIQ.js} +3 -3
- package/dist/chunk-MLPHLJIQ.js.map +1 -0
- package/dist/{chunk-2N4GY74U.js → chunk-MTL7MXGR.js} +6 -6
- package/dist/{chunk-TFR7DSOV.js → chunk-MVZ2TPVP.js} +2 -2
- package/dist/{chunk-CPWQB3N5.js → chunk-N5DNADLQ.js} +7 -7
- package/dist/{chunk-ELNXJMGB.js → chunk-NNARWO72.js} +6 -6
- package/dist/{chunk-PT43Y56J.js → chunk-NRT6QZQB.js} +102 -16
- package/dist/chunk-NRT6QZQB.js.map +1 -0
- package/dist/{chunk-QIBVIOXO.js → chunk-NWHBJQAL.js} +99 -8
- package/dist/chunk-NWHBJQAL.js.map +1 -0
- package/dist/chunk-NYMLINRP.js +28 -0
- package/dist/chunk-NYMLINRP.js.map +1 -0
- package/dist/{chunk-7MG7SJT7.js → chunk-ODVPTDPK.js} +1 -1
- package/dist/chunk-ODVPTDPK.js.map +1 -0
- package/dist/chunk-ORDURZBU.js +461 -0
- package/dist/chunk-ORDURZBU.js.map +1 -0
- package/dist/{chunk-6YXCPL4T.js → chunk-PDCG6PR5.js} +2 -2
- package/dist/{chunk-REDOOY2Q.js → chunk-PSIV7CJV.js} +2 -2
- package/dist/{chunk-NA2NIJZI.js → chunk-QBBUZ3I3.js} +126 -19
- package/dist/chunk-QBBUZ3I3.js.map +1 -0
- package/dist/{chunk-5VCRVKOZ.js → chunk-QOOUUR4A.js} +6 -4
- package/dist/{chunk-5VCRVKOZ.js.map → chunk-QOOUUR4A.js.map} +1 -1
- package/dist/{chunk-ANATMFIO.js → chunk-QWFHIOD2.js} +5 -5
- package/dist/{chunk-X2DLENDQ.js → chunk-QWGU66MP.js} +3 -3
- package/dist/chunk-RHVMZSUU.js +7 -0
- package/dist/chunk-RHVMZSUU.js.map +1 -0
- package/dist/{chunk-BSFNRLK2.js → chunk-S57HTZ6X.js} +5 -5
- package/dist/{chunk-SZJ3DLZA.js → chunk-SEE332EV.js} +2 -2
- package/dist/{chunk-YYP7WSEB.js → chunk-SI3V7D4G.js} +2 -2
- package/dist/{chunk-UGTBXF5U.js → chunk-SOIQ4MM4.js} +3 -3
- package/dist/chunk-SUZKW6UR.js +25 -0
- package/dist/chunk-SUZKW6UR.js.map +1 -0
- package/dist/{chunk-VXGSWL6L.js → chunk-SYVZW77S.js} +6 -6
- package/dist/{chunk-6GOE5PGN.js → chunk-T2LBQ5DV.js} +883 -227
- package/dist/chunk-T2LBQ5DV.js.map +1 -0
- package/dist/chunk-T52GX4SA.js +215 -0
- package/dist/chunk-T52GX4SA.js.map +1 -0
- package/dist/{chunk-MVMXZYXT.js → chunk-TKUOEU2F.js} +2 -2
- package/dist/chunk-TOPYQ6GA.js +31 -0
- package/dist/chunk-TOPYQ6GA.js.map +1 -0
- package/dist/{chunk-SMH6SRX7.js → chunk-TROR3ALR.js} +2 -2
- package/dist/{chunk-2C3AQB46.js → chunk-UD5EVGZ7.js} +42 -389
- package/dist/chunk-UD5EVGZ7.js.map +1 -0
- package/dist/{chunk-KJIMGIWO.js → chunk-UPD5NWI5.js} +65 -17
- package/dist/chunk-UPD5NWI5.js.map +1 -0
- package/dist/{chunk-SL3JAAKN.js → chunk-UYB234ZR.js} +30 -2
- package/dist/chunk-UYB234ZR.js.map +1 -0
- package/dist/chunk-VHM7HCKB.js +220 -0
- package/dist/chunk-VHM7HCKB.js.map +1 -0
- package/dist/{chunk-DGOZ4UZD.js → chunk-VNNRUGMM.js} +2 -2
- package/dist/{chunk-HDOU6I2Y.js → chunk-VNPEWFPD.js} +4 -4
- package/dist/{chunk-L7CIOOBW.js → chunk-WNJ4AVGE.js} +2 -2
- package/dist/{chunk-FMZY5Q6L.js → chunk-WX5ADGTZ.js} +3 -3
- package/dist/{chunk-VXANTWBJ.js → chunk-WY2XXTET.js} +92 -6
- package/dist/{chunk-VXANTWBJ.js.map → chunk-WY2XXTET.js.map} +1 -1
- package/dist/{chunk-6X6SEMEE.js → chunk-X25NWUZB.js} +33 -8
- package/dist/chunk-X25NWUZB.js.map +1 -0
- package/dist/{chunk-Q7HZX3IF.js → chunk-X4773RBR.js} +2 -2
- package/dist/chunk-XBKH4FOC.js +195 -0
- package/dist/chunk-XBKH4FOC.js.map +1 -0
- package/dist/{chunk-ANSIZYEG.js → chunk-YNIUIERI.js} +3 -3
- package/dist/chunk-YSK2CU2Q.js +936 -0
- package/dist/chunk-YSK2CU2Q.js.map +1 -0
- package/dist/{chunk-UXVWEX5L.js → chunk-Z5HTYMMQ.js} +6 -2
- package/dist/chunk-Z5HTYMMQ.js.map +1 -0
- package/dist/{chunk-RRNRNANG.js → chunk-ZE4CHIED.js} +66 -75
- package/dist/chunk-ZE4CHIED.js.map +1 -0
- package/dist/chunk-ZSX4S5XB.js +1289 -0
- package/dist/chunk-ZSX4S5XB.js.map +1 -0
- package/dist/{chunk-BZ3534YM.js → chunk-ZUVBC32X.js} +2 -2
- package/dist/{chunk-L742JPKZ.js → chunk-ZXABPVM6.js} +6 -6
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-LI2SF2E4.js → classified-marker-W3USLL5M.js} +3 -3
- package/dist/collection-facade-QU6IJBN3.js +48 -0
- package/dist/{computed-VPOKQK4N.js → computed-TPFBX7U4.js} +3 -3
- package/dist/consent/index.js +9 -9
- package/dist/cover/index.js +10 -10
- package/dist/coverage/index.js +306 -0
- package/dist/coverage/index.js.map +1 -0
- package/dist/custody/index.js +12 -12
- package/dist/{dead-filter-TSWZQRR5.js → dead-filter-U2UYKSZL.js} +2 -2
- package/dist/debug/index.js +1 -1
- package/dist/{delegation-OVIFFPG4.js → delegation-S3AEPW2T.js} +11 -11
- package/dist/derivations/index.js +25 -22
- package/dist/derive-OX7F6TGG.js +21 -0
- package/dist/directory/index.js +10 -10
- package/dist/{dispatch-WC6X2M6C.js → dispatch-3CQDJV5Q.js} +5 -5
- package/dist/{dispatch-S73TK3IY.js → dispatch-RH4LHKBH.js} +21 -21
- package/dist/{enclave-KJOTOH7X.js → enclave-27SMF6GF.js} +15 -9
- package/dist/executor-B6SRO2QS.js +36 -0
- package/dist/executor-BI5CHWRY.js +8 -0
- package/dist/executor-RBKM5W5K.js +8 -0
- package/dist/export-accessible-VMA3YM5V.js +22 -0
- package/dist/extract-partition-NF7PXGPP.js +37 -0
- package/dist/{fanout-sidecar-WUFXNYP4.js → fanout-sidecar-OT6RYLOL.js} +9 -9
- package/dist/find-LZMP26KF.js +10 -0
- package/dist/forget/index.js +9 -9
- package/dist/guards/index.js +4 -4
- package/dist/history/index.js +13 -13
- package/dist/i18n/index.js +14 -14
- package/dist/index.d.ts +29 -6
- package/dist/index.js +999 -191
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +13 -5
- package/dist/indexing/index.js.map +1 -1
- package/dist/introspection/index.js +11 -11
- package/dist/issue-IHARXWW5.js +18 -0
- package/dist/ivf-flat-UZ6DQDLS.js +314 -0
- package/dist/ivf-flat-UZ6DQDLS.js.map +1 -0
- package/dist/{json-schema-V3M5MUCM.js → json-schema-3SHX72CC.js} +2 -1
- package/dist/json-schema-3SHX72CC.js.map +1 -0
- package/dist/kernel/collection-config.d.ts +4 -20
- package/dist/kernel/collection.d.ts +29 -8
- package/dist/kernel/enclave/crypto.d.ts +16 -0
- package/dist/kernel/enclave/index.d.ts +1 -1
- package/dist/kernel/enclave/record-keys/record-codec.d.ts +25 -0
- package/dist/kernel/errors.d.ts +227 -36
- package/dist/kernel/generation-map.d.ts +48 -0
- package/dist/kernel/memory-store.d.ts +35 -7
- package/dist/kernel/noydb.d.ts +6 -1
- package/dist/kernel/present-cache.d.ts +58 -0
- package/dist/kernel/query/all.d.ts +7 -0
- package/dist/kernel/query/builder.d.ts +601 -270
- package/dist/kernel/query/civil-date.d.ts +64 -0
- package/dist/kernel/query/cursor.d.ts +40 -0
- package/dist/kernel/query/distinct-key.d.ts +98 -0
- package/dist/kernel/query/hydration.d.ts +76 -0
- package/dist/kernel/query/index.d.ts +31 -15
- package/dist/kernel/query/internal/core.d.ts +30 -0
- package/dist/kernel/query/internal/hooks.d.ts +22 -0
- package/dist/kernel/query/internal/maintenance.d.ts +43 -0
- package/dist/kernel/query/live/incremental.d.ts +314 -0
- package/dist/kernel/query/live/index.d.ts +22 -0
- package/dist/kernel/query/live/install.d.ts +2 -0
- package/dist/kernel/query/{live.d.ts → live/live.d.ts} +39 -9
- package/dist/kernel/query/live/methods.d.ts +107 -0
- package/dist/kernel/query/predicate.d.ts +119 -1
- package/dist/kernel/query/reduce/date-trunc.d.ts +75 -0
- package/dist/kernel/query/reduce/index.d.ts +36 -0
- package/dist/kernel/query/reduce/install.d.ts +2 -0
- package/dist/kernel/query/reduce/methods.d.ts +259 -0
- package/dist/kernel/query/reduce/scan-methods.d.ts +121 -0
- package/dist/kernel/query/relate/explain.d.ts +199 -0
- package/dist/kernel/query/relate/index.d.ts +48 -0
- package/dist/kernel/query/relate/install.d.ts +2 -0
- package/dist/kernel/query/relate/join-on.d.ts +126 -0
- package/dist/kernel/query/relate/join-reduce.d.ts +16 -0
- package/dist/kernel/query/relate/join.d.ts +452 -0
- package/dist/kernel/query/relate/methods.d.ts +426 -0
- package/dist/kernel/query/relate/partition.d.ts +87 -0
- package/dist/kernel/query/relate/scan-methods.d.ts +163 -0
- package/dist/kernel/query/relate/traverse.d.ts +109 -0
- package/dist/kernel/query/scan-builder.d.ts +79 -176
- package/dist/kernel/query/sort-key.d.ts +52 -0
- package/dist/kernel/tx-write-gate.d.ts +77 -0
- package/dist/kernel/types.d.ts +71 -3
- package/dist/kernel/validation.d.ts +27 -10
- package/dist/kernel/vault.d.ts +9 -4
- package/dist/kernel/via/compose.d.ts +3 -0
- package/dist/kernel/via/index.d.ts +56 -0
- package/dist/kernel/via/pipeline.d.ts +48 -0
- package/dist/{ledger-F33ZVMTK.js → ledger-KZPCMVZY.js} +11 -11
- package/dist/liberate-GRLCZMW4.js +24 -0
- package/dist/link-set-JCMJ7ULP.js +30 -0
- package/dist/{managed-secret-PQYKSR6T.js → managed-secret-S3MQ6SH6.js} +10 -10
- package/dist/materialized-views/index.js +30 -23
- package/dist/{migrate-cek-5ENH64AA.js → migrate-cek-V7GKJZ7O.js} +2 -2
- package/dist/money/index.js +5 -5
- package/dist/noydb-SWQJ3MZS.js +97 -0
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +12 -12
- package/dist/pod/index.js +75 -68
- package/dist/{pod-handle-Q736KYON.js → pod-handle-WGDFB4C2.js} +9 -9
- package/dist/policy/index.js +10 -10
- package/dist/port/with/blob-strategy.d.ts +9 -0
- package/dist/port/with/collection-options.d.ts +5 -0
- package/dist/port/with/coverage-strategy.d.ts +83 -0
- package/dist/port/with/service-bus.d.ts +46 -0
- package/dist/port/with/strategies.d.ts +2 -0
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-LNE2FE2A.js → post-register-SLSXIPBV.js} +6 -6
- package/dist/query/all/index.js +31 -0
- package/dist/query/index.js +20 -32
- package/dist/query/live/index.js +21 -0
- package/dist/query/live/index.js.map +1 -0
- package/dist/query/reduce/index.js +33 -0
- package/dist/query/reduce/index.js.map +1 -0
- package/dist/query/relate/index.js +56 -0
- package/dist/query/relate/index.js.map +1 -0
- package/dist/reduce/index.js +72 -18
- package/dist/reduce/index.js.map +1 -1
- package/dist/register-F3OYE7MJ.js +31 -0
- package/dist/registry-CILQFXFK.js +8 -0
- package/dist/registry-XNNYQVKV.js +8 -0
- package/dist/registry-YCDZV3VW.js +35 -0
- package/dist/registry-ZGYS33TE.js +24 -0
- package/dist/request-withdrawal-Z5NC6TXT.js +30 -0
- package/dist/{reveal-67RDQRIN.js → reveal-4BCKPEC2.js} +6 -6
- package/dist/revoke-ZL62WC2D.js +23 -0
- package/dist/satellites/index.js +1 -1
- package/dist/schema-update/index.js +2 -2
- package/dist/sealed-record/index.js +12 -12
- package/dist/search/index.js +11 -5
- package/dist/{seed-G42JYN56.js → seed-4JS2RJ4A.js} +12 -12
- package/dist/sequence/index.js +9 -9
- package/dist/session/index.js +9 -9
- package/dist/shadow/index.js +2 -2
- package/dist/signer-MBZZMXTC.js +24 -0
- package/dist/snapshots/index.js +10 -10
- package/dist/{stale-DDL7WQEZ.js → stale-TJ3DYZMQ.js} +10 -10
- package/dist/storage-SVMKRGCW.js +22 -0
- package/dist/{store-coordination-provider-MEQ2MJQG.js → store-coordination-provider-2O2VUHKW.js} +10 -10
- package/dist/sync/index.js +10 -10
- package/dist/team/index.js +17 -15
- package/dist/tiers/index.js +13 -11
- package/dist/to/index.js +2 -2
- package/dist/transactions/index.js +3 -3
- package/dist/util/index.js +1 -1
- package/dist/vault-head/index.js +8 -8
- package/dist/{verify-KOV2G5D6.js → verify-RVT67IMH.js} +5 -5
- package/dist/via/blob/index.d.ts +1 -0
- package/dist/via/geo/binding.d.ts +31 -0
- package/dist/via/geo/descriptor.d.ts +54 -0
- package/dist/via/geo/geohash.d.ts +95 -0
- package/dist/via/geo/index.d.ts +13 -0
- package/dist/via/geo/where.d.ts +50 -0
- package/dist/via/i18n/core.d.ts +1 -1
- package/dist/via/lookup/registry.d.ts +1 -1
- package/dist/via/lookup/snapshot.d.ts +3 -3
- package/dist/walk-HJ42EISE.js +21 -0
- package/dist/walk-HJ42EISE.js.map +1 -0
- package/dist/with-audit/coverage/accounting.d.ts +112 -0
- package/dist/with-audit/coverage/active.d.ts +29 -0
- package/dist/with-audit/coverage/index.d.ts +61 -0
- package/dist/with-audit/coverage/sketch.d.ts +75 -0
- package/dist/with-audit/periods/periods.d.ts +55 -7
- package/dist/with-audit/periods/reserved-collections.d.ts +3 -0
- package/dist/with-audit/periods/vault-facade.d.ts +17 -0
- package/dist/with-audit/tiers/index.d.ts +51 -0
- package/dist/with-audit/tiers/strategy.d.ts +8 -0
- package/dist/with-cargo/floor.d.ts +2 -2
- package/dist/with-commit/tx/invariants.d.ts +1 -1
- package/dist/with-commit/tx/transaction.d.ts +13 -3
- package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +4 -3
- package/dist/with-formula/materialized-views/emit-memo.d.ts +40 -0
- package/dist/with-formula/materialized-views/executor.d.ts +8 -0
- package/dist/with-formula/materialized-views/index.d.ts +1 -1
- package/dist/with-formula/materialized-views/registry.d.ts +15 -0
- package/dist/with-formula/materialized-views/types.d.ts +106 -14
- package/dist/with-formula/materialized-views/window-stage.d.ts +11 -0
- package/dist/with-formula/overlay-views/types.d.ts +1 -1
- package/dist/with-formula/overlay-views/virtual-collection.d.ts +13 -4
- package/dist/with-lookup/embeddings/chunks.d.ts +79 -0
- package/dist/with-lookup/embeddings/descriptor.d.ts +21 -0
- package/dist/with-lookup/embeddings/index.d.ts +3 -0
- package/dist/with-lookup/embeddings/ivf-flat.d.ts +93 -0
- package/dist/with-lookup/embeddings/vector-index.d.ts +73 -0
- package/dist/with-lookup/embeddings/vector-set.d.ts +94 -1
- package/dist/with-lookup/embeddings/with-vector-index.d.ts +67 -0
- package/dist/with-lookup/indexing/collection-facade.d.ts +85 -2
- package/dist/with-lookup/indexing/compound-indexes.d.ts +129 -0
- package/dist/with-lookup/indexing/eager-indexes.d.ts +170 -1
- package/dist/with-lookup/indexing/index-snapshot.d.ts +62 -0
- package/dist/with-lookup/indexing/lazy-builder.d.ts +33 -0
- package/dist/with-lookup/indexing/persisted-field-indexes.d.ts +104 -0
- package/dist/with-lookup/indexing/persisted-indexes.d.ts +12 -0
- package/dist/with-lookup/indexing/sorted-indexes.d.ts +117 -0
- package/dist/with-lookup/indexing/unique-constraints.d.ts +106 -23
- package/dist/with-lookup/reduce/active.d.ts +2 -24
- package/dist/with-lookup/reduce/group-core.d.ts +43 -0
- package/dist/with-lookup/reduce/groupby.d.ts +195 -36
- package/dist/with-lookup/reduce/incremental-group.d.ts +153 -0
- package/dist/with-lookup/reduce/index.d.ts +26 -5
- package/dist/with-lookup/reduce/reducers.d.ts +255 -1
- package/dist/with-lookup/reduce/reduction.d.ts +44 -13
- package/dist/with-lookup/reduce/strategy.d.ts +43 -3
- package/dist/with-lookup/reduce/window.d.ts +262 -0
- package/dist/with-lookup/search/collection-facade.d.ts +44 -8
- package/dist/with-lookup/search/index-store.d.ts +5 -3
- package/dist/with-lookup/search/index.d.ts +4 -2
- package/dist/with-lookup/search/inverted-index.d.ts +38 -2
- package/dist/with-lookup/search/persisted-index-store.d.ts +5 -2
- package/dist/with-lookup/search/phrase.d.ts +28 -0
- package/dist/with-lookup/search/retrieve-types.d.ts +57 -1
- package/dist/with-lookup/search/serialize.d.ts +29 -3
- package/dist/with-lookup/search/strategy.d.ts +2 -6
- package/dist/with-party/directory/cover/index.d.ts +1 -1
- package/dist/with-party/directory/cover/storage.d.ts +1 -1
- package/dist/with-party/directory/cover/types.d.ts +1 -1
- package/dist/with-party/directory/index.d.ts +1 -1
- package/dist/with-party/directory/types.d.ts +1 -1
- package/dist/with-party/directory/user-envelope/api.d.ts +1 -1
- package/dist/with-party/policy/engine.d.ts +1 -1
- package/dist/with-party/policy/index.d.ts +1 -1
- package/dist/with-party/policy/presets.d.ts +1 -1
- package/dist/with-party/team/authenticators.d.ts +91 -1
- package/dist/with-party/team/index.d.ts +3 -2
- package/dist/with-party/team/keyring.d.ts +13 -6
- package/dist/with-party/team/managed-secret.d.ts +1 -1
- package/dist/with-party/team/noydb-facade.d.ts +12 -3
- package/dist/with-party/team/wrapped-deks.d.ts +4 -4
- package/dist/with-pod/format.d.ts +1 -1
- package/dist/with-pod/pod.d.ts +5 -5
- package/dist/with-shape/blobs/blob-compaction.d.ts +16 -0
- package/dist/with-shape/blobs/blob-set.d.ts +21 -2
- package/dist/with-shape/blobs/legacy-sweep.d.ts +35 -0
- package/dist/with-shape/introspection/describe.d.ts +6 -0
- package/dist/with-shape/introspection/field-meta.d.ts +18 -0
- package/dist/with-shape/introspection/types.d.ts +57 -1
- package/dist/with-shape/links/vault-facade.d.ts +1 -1
- package/dist/with-store/partitioned/index.d.ts +337 -0
- package/dist/with-sync/change-broadcast.d.ts +153 -0
- package/dist/withdraw-accessible-5NZUPAVA.js +27 -0
- package/dist/withdraw-accessible-5NZUPAVA.js.map +1 -0
- package/package.json +37 -10
- package/dist/api-TXFOVOXX.js +0 -19
- package/dist/backup-IJTB4S4M.js.map +0 -1
- package/dist/chunk-2577DKXB.js.map +0 -1
- package/dist/chunk-2C3AQB46.js.map +0 -1
- package/dist/chunk-4GVM6QZA.js.map +0 -1
- package/dist/chunk-5WDXHNSW.js.map +0 -1
- package/dist/chunk-6GOE5PGN.js.map +0 -1
- package/dist/chunk-6X6SEMEE.js.map +0 -1
- package/dist/chunk-77K4PG6P.js.map +0 -1
- package/dist/chunk-7MG2LHO5.js +0 -1616
- package/dist/chunk-7MG2LHO5.js.map +0 -1
- package/dist/chunk-7MG7SJT7.js.map +0 -1
- package/dist/chunk-7O3Y4PPD.js.map +0 -1
- package/dist/chunk-AO42KJO6.js.map +0 -1
- package/dist/chunk-ATL3ZVXT.js +0 -151
- package/dist/chunk-ATL3ZVXT.js.map +0 -1
- package/dist/chunk-BLN54W3L.js.map +0 -1
- package/dist/chunk-BM5TWITZ.js.map +0 -1
- package/dist/chunk-CUZLNGD5.js.map +0 -1
- package/dist/chunk-EQEYOJBM.js.map +0 -1
- package/dist/chunk-G56KBWFY.js.map +0 -1
- package/dist/chunk-I3ISCYT7.js +0 -159
- package/dist/chunk-I3ISCYT7.js.map +0 -1
- package/dist/chunk-KG7TZKZG.js.map +0 -1
- package/dist/chunk-KJIMGIWO.js.map +0 -1
- package/dist/chunk-KTFRCC5C.js.map +0 -1
- package/dist/chunk-KUX3OB6D.js.map +0 -1
- package/dist/chunk-MUM7IANK.js.map +0 -1
- package/dist/chunk-NA2NIJZI.js.map +0 -1
- package/dist/chunk-NSITFOCJ.js +0 -99
- package/dist/chunk-NSITFOCJ.js.map +0 -1
- package/dist/chunk-PT43Y56J.js.map +0 -1
- package/dist/chunk-QIBVIOXO.js.map +0 -1
- package/dist/chunk-RRNRNANG.js.map +0 -1
- package/dist/chunk-RTBJ5IOO.js +0 -87
- package/dist/chunk-RTBJ5IOO.js.map +0 -1
- package/dist/chunk-SKGMN35F.js.map +0 -1
- package/dist/chunk-SL3JAAKN.js.map +0 -1
- package/dist/chunk-SPXXX5E4.js.map +0 -1
- package/dist/chunk-SPYWXKJN.js.map +0 -1
- package/dist/chunk-U4FOQDY4.js.map +0 -1
- package/dist/chunk-UXVWEX5L.js.map +0 -1
- package/dist/chunk-UXWB3FPF.js.map +0 -1
- package/dist/chunk-YMUFFJCO.js.map +0 -1
- package/dist/chunk-ZN4FD4PE.js +0 -364
- package/dist/chunk-ZN4FD4PE.js.map +0 -1
- package/dist/chunk-ZORTV6NH.js.map +0 -1
- package/dist/collection-facade-4GRREZ6C.js +0 -45
- package/dist/derive-6O5SWQKN.js +0 -21
- package/dist/executor-5NIMLSKZ.js +0 -8
- package/dist/executor-AQVXV5GZ.js +0 -8
- package/dist/executor-PUAO6AKJ.js +0 -29
- package/dist/export-accessible-72EQNBMR.js +0 -22
- package/dist/extract-partition-PUYNU3UF.js +0 -37
- package/dist/find-2ABFCZX4.js +0 -10
- package/dist/issue-SIDORTSZ.js +0 -18
- package/dist/json-schema-V3M5MUCM.js.map +0 -1
- package/dist/kernel/query/join.d.ts +0 -232
- package/dist/liberate-LCDPNAG2.js +0 -24
- package/dist/link-set-FKNWAYKS.js +0 -30
- package/dist/noydb-DUXZPKSN.js +0 -90
- package/dist/register-I2DZXGAR.js +0 -31
- package/dist/registry-23WF3TGH.js +0 -8
- package/dist/registry-4AYVUNXK.js +0 -8
- package/dist/registry-VSSQPIGF.js +0 -18
- package/dist/registry-YLEWMGAC.js +0 -32
- package/dist/request-withdrawal-KFQHEZ25.js +0 -30
- package/dist/revoke-DQDZAZZM.js +0 -23
- package/dist/signer-WAMDZHEN.js +0 -24
- package/dist/storage-FLR73HHF.js +0 -22
- package/dist/walk-3UQBRMDV.js +0 -21
- package/dist/withdraw-accessible-EL5GXZBS.js +0 -27
- /package/dist/{api-TXFOVOXX.js.map → api-GVYEKSJE.js.map} +0 -0
- /package/dist/{chunk-BUE2D7PX.js.map → chunk-32YV3TJT.js.map} +0 -0
- /package/dist/{chunk-3RCJJBNR.js.map → chunk-3ELRMVJK.js.map} +0 -0
- /package/dist/{chunk-6GMZ7HEE.js.map → chunk-3F7GLNAE.js.map} +0 -0
- /package/dist/{chunk-2Y4IMKA6.js.map → chunk-3H5KLDZN.js.map} +0 -0
- /package/dist/{chunk-VTFVLCUH.js.map → chunk-3JWHAR6E.js.map} +0 -0
- /package/dist/{chunk-JBDFMYKQ.js.map → chunk-4AF3TUMP.js.map} +0 -0
- /package/dist/{chunk-J6FXAEUG.js.map → chunk-6B3VNR4P.js.map} +0 -0
- /package/dist/{chunk-TUFM4UZP.js.map → chunk-6K7DPM7D.js.map} +0 -0
- /package/dist/{chunk-K6LHRFBL.js.map → chunk-6LMQ5R26.js.map} +0 -0
- /package/dist/{chunk-XLMEZIAJ.js.map → chunk-6OWXYZK2.js.map} +0 -0
- /package/dist/{chunk-BOWNCWZT.js.map → chunk-6QSQQLSE.js.map} +0 -0
- /package/dist/{chunk-NQKIUNW5.js.map → chunk-A6IJU4TK.js.map} +0 -0
- /package/dist/{chunk-QIZPZMUI.js.map → chunk-AOWGXU6D.js.map} +0 -0
- /package/dist/{chunk-SFAWCTEM.js.map → chunk-B57AFBY2.js.map} +0 -0
- /package/dist/{chunk-GPEQUXHL.js.map → chunk-B6SJIBQK.js.map} +0 -0
- /package/dist/{chunk-Q2PU57HC.js.map → chunk-BK2HHQGN.js.map} +0 -0
- /package/dist/{collection-facade-4GRREZ6C.js.map → chunk-BKT776R5.js.map} +0 -0
- /package/dist/{chunk-FXBIP2WD.js.map → chunk-BUDAGWL5.js.map} +0 -0
- /package/dist/{chunk-BOET4NA4.js.map → chunk-CKNGS5MH.js.map} +0 -0
- /package/dist/{chunk-YSRUYAVU.js.map → chunk-DE4DH2RZ.js.map} +0 -0
- /package/dist/{chunk-6I2RQCET.js.map → chunk-DF73H4UN.js.map} +0 -0
- /package/dist/{chunk-K7NTTA6P.js.map → chunk-EOVMT6TB.js.map} +0 -0
- /package/dist/{chunk-XTXOCYOJ.js.map → chunk-FCKWQE2H.js.map} +0 -0
- /package/dist/{chunk-4OZNXTO4.js.map → chunk-FN5EBVTQ.js.map} +0 -0
- /package/dist/{chunk-NKHRDYOR.js.map → chunk-FQ5VRHIB.js.map} +0 -0
- /package/dist/{chunk-FAHMLERK.js.map → chunk-FW22ZCXT.js.map} +0 -0
- /package/dist/{chunk-RMS3NEA3.js.map → chunk-HT2AHGQI.js.map} +0 -0
- /package/dist/{chunk-CHJBLCOG.js.map → chunk-HVSCEIYL.js.map} +0 -0
- /package/dist/{chunk-GY4WYNNG.js.map → chunk-ID6Z6E66.js.map} +0 -0
- /package/dist/{chunk-EYBQEIUY.js.map → chunk-IEX7NK2K.js.map} +0 -0
- /package/dist/{chunk-KUJDV5QH.js.map → chunk-ISZQJBML.js.map} +0 -0
- /package/dist/{chunk-LWBCUYZW.js.map → chunk-IT22PWKV.js.map} +0 -0
- /package/dist/{chunk-7V4TP3AF.js.map → chunk-J6UOHJY5.js.map} +0 -0
- /package/dist/{chunk-JMGDHKQF.js.map → chunk-JCN44NCY.js.map} +0 -0
- /package/dist/{chunk-CARABLSQ.js.map → chunk-K6W7BVZ6.js.map} +0 -0
- /package/dist/{chunk-453F654R.js.map → chunk-L7DOS3TE.js.map} +0 -0
- /package/dist/{chunk-WEQEYLCS.js.map → chunk-LGRLME4M.js.map} +0 -0
- /package/dist/{chunk-RMF67KCG.js.map → chunk-LQ4ZHOKP.js.map} +0 -0
- /package/dist/{chunk-ZVO4QVPD.js.map → chunk-M522UYZ2.js.map} +0 -0
- /package/dist/{chunk-2N4GY74U.js.map → chunk-MTL7MXGR.js.map} +0 -0
- /package/dist/{chunk-TFR7DSOV.js.map → chunk-MVZ2TPVP.js.map} +0 -0
- /package/dist/{chunk-CPWQB3N5.js.map → chunk-N5DNADLQ.js.map} +0 -0
- /package/dist/{chunk-ELNXJMGB.js.map → chunk-NNARWO72.js.map} +0 -0
- /package/dist/{chunk-6YXCPL4T.js.map → chunk-PDCG6PR5.js.map} +0 -0
- /package/dist/{chunk-REDOOY2Q.js.map → chunk-PSIV7CJV.js.map} +0 -0
- /package/dist/{chunk-ANATMFIO.js.map → chunk-QWFHIOD2.js.map} +0 -0
- /package/dist/{chunk-X2DLENDQ.js.map → chunk-QWGU66MP.js.map} +0 -0
- /package/dist/{chunk-BSFNRLK2.js.map → chunk-S57HTZ6X.js.map} +0 -0
- /package/dist/{chunk-SZJ3DLZA.js.map → chunk-SEE332EV.js.map} +0 -0
- /package/dist/{chunk-YYP7WSEB.js.map → chunk-SI3V7D4G.js.map} +0 -0
- /package/dist/{chunk-UGTBXF5U.js.map → chunk-SOIQ4MM4.js.map} +0 -0
- /package/dist/{chunk-VXGSWL6L.js.map → chunk-SYVZW77S.js.map} +0 -0
- /package/dist/{chunk-MVMXZYXT.js.map → chunk-TKUOEU2F.js.map} +0 -0
- /package/dist/{chunk-SMH6SRX7.js.map → chunk-TROR3ALR.js.map} +0 -0
- /package/dist/{chunk-DGOZ4UZD.js.map → chunk-VNNRUGMM.js.map} +0 -0
- /package/dist/{chunk-HDOU6I2Y.js.map → chunk-VNPEWFPD.js.map} +0 -0
- /package/dist/{chunk-L7CIOOBW.js.map → chunk-WNJ4AVGE.js.map} +0 -0
- /package/dist/{chunk-FMZY5Q6L.js.map → chunk-WX5ADGTZ.js.map} +0 -0
- /package/dist/{chunk-Q7HZX3IF.js.map → chunk-X4773RBR.js.map} +0 -0
- /package/dist/{chunk-ANSIZYEG.js.map → chunk-YNIUIERI.js.map} +0 -0
- /package/dist/{chunk-BZ3534YM.js.map → chunk-ZUVBC32X.js.map} +0 -0
- /package/dist/{chunk-L742JPKZ.js.map → chunk-ZXABPVM6.js.map} +0 -0
- /package/dist/{classified-marker-LI2SF2E4.js.map → classified-marker-W3USLL5M.js.map} +0 -0
- /package/dist/{computed-VPOKQK4N.js.map → collection-facade-QU6IJBN3.js.map} +0 -0
- /package/dist/{derive-6O5SWQKN.js.map → computed-TPFBX7U4.js.map} +0 -0
- /package/dist/{dead-filter-TSWZQRR5.js.map → dead-filter-U2UYKSZL.js.map} +0 -0
- /package/dist/{delegation-OVIFFPG4.js.map → delegation-S3AEPW2T.js.map} +0 -0
- /package/dist/{enclave-KJOTOH7X.js.map → derive-OX7F6TGG.js.map} +0 -0
- /package/dist/{dispatch-WC6X2M6C.js.map → dispatch-3CQDJV5Q.js.map} +0 -0
- /package/dist/{dispatch-S73TK3IY.js.map → dispatch-RH4LHKBH.js.map} +0 -0
- /package/dist/{executor-5NIMLSKZ.js.map → enclave-27SMF6GF.js.map} +0 -0
- /package/dist/{executor-AQVXV5GZ.js.map → executor-B6SRO2QS.js.map} +0 -0
- /package/dist/{executor-PUAO6AKJ.js.map → executor-BI5CHWRY.js.map} +0 -0
- /package/dist/{export-accessible-72EQNBMR.js.map → executor-RBKM5W5K.js.map} +0 -0
- /package/dist/{extract-partition-PUYNU3UF.js.map → export-accessible-VMA3YM5V.js.map} +0 -0
- /package/dist/{find-2ABFCZX4.js.map → extract-partition-NF7PXGPP.js.map} +0 -0
- /package/dist/{fanout-sidecar-WUFXNYP4.js.map → fanout-sidecar-OT6RYLOL.js.map} +0 -0
- /package/dist/{issue-SIDORTSZ.js.map → find-LZMP26KF.js.map} +0 -0
- /package/dist/{ledger-F33ZVMTK.js.map → issue-IHARXWW5.js.map} +0 -0
- /package/dist/{liberate-LCDPNAG2.js.map → ledger-KZPCMVZY.js.map} +0 -0
- /package/dist/{link-set-FKNWAYKS.js.map → liberate-GRLCZMW4.js.map} +0 -0
- /package/dist/{managed-secret-PQYKSR6T.js.map → link-set-JCMJ7ULP.js.map} +0 -0
- /package/dist/{noydb-DUXZPKSN.js.map → managed-secret-S3MQ6SH6.js.map} +0 -0
- /package/dist/{migrate-cek-5ENH64AA.js.map → migrate-cek-V7GKJZ7O.js.map} +0 -0
- /package/dist/{register-I2DZXGAR.js.map → noydb-SWQJ3MZS.js.map} +0 -0
- /package/dist/{pod-handle-Q736KYON.js.map → pod-handle-WGDFB4C2.js.map} +0 -0
- /package/dist/{post-register-LNE2FE2A.js.map → post-register-SLSXIPBV.js.map} +0 -0
- /package/dist/{registry-23WF3TGH.js.map → query/all/index.js.map} +0 -0
- /package/dist/{registry-4AYVUNXK.js.map → register-F3OYE7MJ.js.map} +0 -0
- /package/dist/{registry-VSSQPIGF.js.map → registry-CILQFXFK.js.map} +0 -0
- /package/dist/{registry-YLEWMGAC.js.map → registry-XNNYQVKV.js.map} +0 -0
- /package/dist/{request-withdrawal-KFQHEZ25.js.map → registry-YCDZV3VW.js.map} +0 -0
- /package/dist/{revoke-DQDZAZZM.js.map → registry-ZGYS33TE.js.map} +0 -0
- /package/dist/{signer-WAMDZHEN.js.map → request-withdrawal-Z5NC6TXT.js.map} +0 -0
- /package/dist/{reveal-67RDQRIN.js.map → reveal-4BCKPEC2.js.map} +0 -0
- /package/dist/{stale-DDL7WQEZ.js.map → revoke-ZL62WC2D.js.map} +0 -0
- /package/dist/{seed-G42JYN56.js.map → seed-4JS2RJ4A.js.map} +0 -0
- /package/dist/{storage-FLR73HHF.js.map → signer-MBZZMXTC.js.map} +0 -0
- /package/dist/{walk-3UQBRMDV.js.map → stale-TJ3DYZMQ.js.map} +0 -0
- /package/dist/{withdraw-accessible-EL5GXZBS.js.map → storage-SVMKRGCW.js.map} +0 -0
- /package/dist/{store-coordination-provider-MEQ2MJQG.js.map → store-coordination-provider-2O2VUHKW.js.map} +0 -0
- /package/dist/{verify-KOV2G5D6.js.map → verify-RVT67IMH.js.map} +0 -0
|
@@ -1,4 +1,30 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* (De)serialize an InvertedIndex to/from a JSON string for persistence (L1.5).
|
|
3
|
+
*
|
|
4
|
+
* ## Why a validator, and why its failure mode is "rebuild" (#1354)
|
|
5
|
+
*
|
|
6
|
+
* Positional postings changed the persisted shape, so this module adopts the
|
|
7
|
+
* discipline #1359 established for the field-index sidecars: a blob is used
|
|
8
|
+
* only if it is EXACTLY the current format, and anything else is discarded
|
|
9
|
+
* whole and rebuilt from the record cache. There is no migration path and no
|
|
10
|
+
* partial load, because a half-trusted index answers confidently and wrongly —
|
|
11
|
+
* a pre-#1354 blob read leniently would report "no positions here", which a
|
|
12
|
+
* phrase query cannot distinguish from "your phrase is not in this record".
|
|
13
|
+
*
|
|
14
|
+
* ⭐ An out-of-order position list is REJECTED, not re-sorted. Re-sorting would
|
|
15
|
+
* launder a corrupt blob into a plausible-looking answer; the cache can always
|
|
16
|
+
* rebuild the truth.
|
|
17
|
+
*/
|
|
18
|
+
import { InvertedIndex, type IndexSnapshot } from './inverted-index.js';
|
|
3
19
|
export declare function serializeIndex(idx: InvertedIndex): string;
|
|
4
|
-
|
|
20
|
+
/** `null` ⇒ the blob is unusable and the caller must rebuild. Never throws. */
|
|
21
|
+
export declare function deserializeIndex(json: string): InvertedIndex | null;
|
|
22
|
+
/**
|
|
23
|
+
* Decode + structurally validate a persisted index snapshot. Returns `null` for
|
|
24
|
+
* anything that is not exactly the current format: torn JSON, a stamp from
|
|
25
|
+
* another release, a shape mismatch, a position list that is not strictly
|
|
26
|
+
* ascending or that names a token the doc does not have, or a `pos`/`posFields`
|
|
27
|
+
* disagreement (a doc whose field opted in but carries no positions would make
|
|
28
|
+
* every phrase query silently miss it).
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseIndexSnapshot(json: string): IndexSnapshot | null;
|
|
@@ -16,15 +16,11 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import type { SearchContext } from './collection-facade.js';
|
|
18
18
|
import type { SearchOptions, SearchResult } from './index.js';
|
|
19
|
-
import type { RetrieveOptions, RetrieveHit } from './retrieve-types.js';
|
|
19
|
+
import type { RetrieveOptions, RetrieveHit, SimilarToOptions } from './retrieve-types.js';
|
|
20
20
|
export interface SearchStrategy {
|
|
21
21
|
search<T>(ctx: SearchContext<T>, field: string, query: string, opts?: SearchOptions): Promise<SearchResult<T>[]>;
|
|
22
22
|
retrieve<T>(ctx: SearchContext<T>, query: string, opts?: RetrieveOptions<T>): Promise<RetrieveHit<T>[]>;
|
|
23
|
-
similarTo<T>(ctx: SearchContext<T>, vector: Float32Array, opts?:
|
|
24
|
-
k?: number;
|
|
25
|
-
minScore?: number;
|
|
26
|
-
includeRecord?: boolean;
|
|
27
|
-
}): Promise<RetrieveHit<T>[]>;
|
|
23
|
+
similarTo<T>(ctx: SearchContext<T>, vector: Float32Array, opts?: SimilarToOptions): Promise<RetrieveHit<T>[]>;
|
|
28
24
|
warmIndex<T>(ctx: SearchContext<T>): Promise<void>;
|
|
29
25
|
flushIndex<T>(ctx: SearchContext<T>): Promise<void>;
|
|
30
26
|
embedOnWrite<T>(ctx: SearchContext<T>, id: string, record: T, version: number): Promise<void>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Cover service — barrel export. (Formerly "public envelope"; the
|
|
3
3
|
* old names remain as deprecated aliases for one pre-release window.)
|
|
4
4
|
*
|
|
5
|
-
* @see https://github.com/
|
|
5
|
+
* @see https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
@@ -50,6 +50,6 @@ export declare function resolveLocale(cover: Cover, locale: string): Cover;
|
|
|
50
50
|
* 3. First non-empty value in the map.
|
|
51
51
|
* 4. Empty string (only if every translation is empty — pathological).
|
|
52
52
|
*
|
|
53
|
-
* This deviation is documented in `https://github.com/
|
|
53
|
+
* This deviation is documented in `https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md`.
|
|
54
54
|
*/
|
|
55
55
|
export declare function pickLocale(value: string | Record<string, string>, locale: string, defaultLocale: string | undefined): string;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* record still lives at `_meta/public-envelope` and carries the
|
|
9
9
|
* `_noydb_public: 1` discriminator.)
|
|
10
10
|
*
|
|
11
|
-
* @see https://github.com/
|
|
11
|
+
* @see https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md
|
|
12
12
|
*
|
|
13
13
|
* @module
|
|
14
14
|
*/
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* User-list visibility — barrel export for the
|
|
3
3
|
* `@noy-db/hub/directory` surface.
|
|
4
4
|
*
|
|
5
|
-
* @see https://github.com/
|
|
5
|
+
* @see https://github.com/noy-db/docs/blob/main/content/docs/services/user-envelope.md → Directory visibility
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* flags exist to keep admin-UI listings tidy, not to hide principals
|
|
15
15
|
* from a determined attacker.
|
|
16
16
|
*
|
|
17
|
-
* @see https://github.com/
|
|
17
|
+
* @see https://github.com/noy-db/docs/blob/main/content/docs/services/user-envelope.md → Directory visibility
|
|
18
18
|
*
|
|
19
19
|
* @module
|
|
20
20
|
*/
|
|
@@ -130,7 +130,7 @@ export declare class UserApi implements VaultUserApi {
|
|
|
130
130
|
* Honest caveat: this is a UX flag, not a privacy guarantee. The
|
|
131
131
|
* envelope ciphertext at `_users/<keyringId>` and the keyring file at
|
|
132
132
|
* `_keyring/<userId>` are both still observable to anyone with direct
|
|
133
|
-
* store read access. See `https://github.com/
|
|
133
|
+
* store read access. See `https://github.com/noy-db/docs/blob/main/content/docs/services/user-envelope.md` →
|
|
134
134
|
* "Directory visibility".
|
|
135
135
|
*/
|
|
136
136
|
setMyVisibility(visibility: UserVisibility): Promise<void>;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* a stable {@link PolicyDenyReason} so consumers can branch in error
|
|
8
8
|
* UIs.
|
|
9
9
|
*
|
|
10
|
-
* @see https://github.com/
|
|
10
|
+
* @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → checkGate() API
|
|
11
11
|
*
|
|
12
12
|
* @module
|
|
13
13
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Policy gate DSL — barrel export for the `@noy-db/hub/policy` surface.
|
|
3
3
|
*
|
|
4
|
-
* @see https://github.com/
|
|
4
|
+
* @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → Policy gates DSL
|
|
5
5
|
*
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
@@ -9,7 +9,7 @@ import type { VaultPolicy } from '../../kernel/types.js';
|
|
|
9
9
|
* The unspecified gates (e.g. `view-user-auth`) inherit the engine
|
|
10
10
|
* default of `{ enabled: false, minTier: 1 }` — they fail closed.
|
|
11
11
|
*
|
|
12
|
-
* @see https://github.com/
|
|
12
|
+
* @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → Built-in gates
|
|
13
13
|
*/
|
|
14
14
|
export declare const PERSONAL_POLICY: VaultPolicy;
|
|
15
15
|
/**
|
|
@@ -9,12 +9,14 @@
|
|
|
9
9
|
* (`on-webauthn`, `on-oidc`, `on-password`); this module accepts the
|
|
10
10
|
* package's `wrapped_kek` ciphertext + `meta` payload and persists it.
|
|
11
11
|
*
|
|
12
|
-
* @see https://github.com/
|
|
12
|
+
* @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → Tier 2 — Authenticate
|
|
13
13
|
*
|
|
14
14
|
* @module
|
|
15
15
|
*/
|
|
16
16
|
import type { NoydbStore, KeyringAuthenticator } from '../../kernel/types.js';
|
|
17
17
|
import type { UnlockedKeyring } from './keyring.js';
|
|
18
|
+
import { type SlotRewrapCeremony } from './rotate-recover.js';
|
|
19
|
+
import type { RotateSecretInput } from './rotate-recover.js';
|
|
18
20
|
/** Fields shared across both wrap-KEK and wrap-DEKs enroll inputs. */
|
|
19
21
|
interface EnrollAuthenticatorBase {
|
|
20
22
|
readonly id: string;
|
|
@@ -84,6 +86,29 @@ export declare function updateAuthenticator(store: NoydbStore, vault: string, ke
|
|
|
84
86
|
/**
|
|
85
87
|
* Drop a slot by id. No-op if the slot doesn't exist (idempotent —
|
|
86
88
|
* removing a non-existent slot is a recoverable retry, not an error).
|
|
89
|
+
*
|
|
90
|
+
* ⛔ **THIS HIDES A CREDENTIAL. IT DOES NOT REVOKE ONE.** (#1445) The slot
|
|
91
|
+
* leaves the keyring file and nothing else happens — no key material moves. A
|
|
92
|
+
* slot blob captured before removal, or cached by an honest client earlier in
|
|
93
|
+
* the same session, still unwraps the FULL LIVE DEK SET and reads every record,
|
|
94
|
+
* for as long as those DEKs remain current.
|
|
95
|
+
*
|
|
96
|
+
* That is not a leak in one `on-*` package. `@noy-db/on-password`'s
|
|
97
|
+
* `unwrapDeksWithPassword` and `@noy-db/on-webauthn`'s `unwrapKeyringSummary`
|
|
98
|
+
* both carry the DEK map inside the blob and need no store, no keyring and no
|
|
99
|
+
* network — the blob authenticates itself. A membership check inside a verifier
|
|
100
|
+
* cannot close it, because a blob holder calls the primitive directly and never
|
|
101
|
+
* reaches the verifier.
|
|
102
|
+
*
|
|
103
|
+
* ⭐ To actually revoke, see {@link revokeAuthenticator} — removal, then a DEK
|
|
104
|
+
* rotation, then a re-wrap of the slots that stay. Every step is required and
|
|
105
|
+
* the reasons are measured, not assumed; read that doc before assembling the
|
|
106
|
+
* sequence by hand.
|
|
107
|
+
*
|
|
108
|
+
* ⚠️ Idempotency is only sound when the slot list is actually
|
|
109
|
+
* visible — see {@link assertSlotListVisible} (#1426).
|
|
110
|
+
*
|
|
111
|
+
* @throws `ValidationError` when the session cannot see the slot list.
|
|
87
112
|
*/
|
|
88
113
|
export declare function removeAuthenticator(store: NoydbStore, vault: string, keyring: UnlockedKeyring, slotId: string): Promise<UnlockedKeyring>;
|
|
89
114
|
/**
|
|
@@ -92,4 +117,69 @@ export declare function removeAuthenticator(store: NoydbStore, vault: string, ke
|
|
|
92
117
|
* before invoking the method-specific verifier.
|
|
93
118
|
*/
|
|
94
119
|
export declare function findAuthenticator(keyring: UnlockedKeyring, slotId: string): KeyringAuthenticator | undefined;
|
|
120
|
+
/** Inputs for {@link revokeAuthenticator}. */
|
|
121
|
+
export interface RevokeAuthenticatorOptions {
|
|
122
|
+
/** The slot to revoke. */
|
|
123
|
+
readonly slotId: string;
|
|
124
|
+
/**
|
|
125
|
+
* The vault owner's CURRENT secret. Passed as both `oldSecret` and
|
|
126
|
+
* `newSecret` to `rotateSecret`, which accepts them being equal — measured,
|
|
127
|
+
* so revoking one credential does not force everyone onto a new phrase.
|
|
128
|
+
*/
|
|
129
|
+
readonly secret: RotateSecretInput['oldSecret'];
|
|
130
|
+
/**
|
|
131
|
+
* A re-wrap ceremony for EVERY slot that stays, keyed by slot id.
|
|
132
|
+
*
|
|
133
|
+
* ⛔ A slot with no ceremony is DROPPED, not preserved — that is
|
|
134
|
+
* `rotateSecret`'s existing behaviour (#29 / PR5: "without `slotCeremonies`,
|
|
135
|
+
* rotation drops every slot"), and it is the honest outcome, because after
|
|
136
|
+
* step 2 its blob wraps DEKs that no longer exist. Supplying one requires
|
|
137
|
+
* that credential to be present: the password for `on-password`, a live
|
|
138
|
+
* assertion for `on-webauthn`. There is no way around that — re-wrapping a
|
|
139
|
+
* credential is the credential's own operation.
|
|
140
|
+
*/
|
|
141
|
+
readonly slotCeremonies?: {
|
|
142
|
+
readonly [slotId: string]: SlotRewrapCeremony;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Actually revoke an authenticator slot: remove it, mint fresh DEKs, and
|
|
147
|
+
* re-wrap the slots that stay (#1445).
|
|
148
|
+
*
|
|
149
|
+
* ## Why this is three steps and not one
|
|
150
|
+
*
|
|
151
|
+
* Each was measured, because the composition looks obvious and the obvious
|
|
152
|
+
* compositions do not work:
|
|
153
|
+
*
|
|
154
|
+
* 1. **{@link removeAuthenticator}** hides the slot. On its own it revokes
|
|
155
|
+
* nothing — the captured blob carries its own DEKs.
|
|
156
|
+
* 2. **`rotateKeys`** is the step that revokes. It is the ONLY one that calls
|
|
157
|
+
* `generateDEK()`. Measured: a collection's DEK is byte-identical across a
|
|
158
|
+
* `rotateSecret` and different across a `rotateKeys`.
|
|
159
|
+
* ⚠️ `rotateSecret` alone does NOT revoke, however it reads:
|
|
160
|
+
* it unwraps every DEK with the old KEK and rewraps THE SAME KEY MATERIAL
|
|
161
|
+
* under the new one. A captured blob holds DEK VALUES and records are
|
|
162
|
+
* encrypted with DEKs, so rewrapping them changes nothing the holder needs.
|
|
163
|
+
* 3. **`rotateSecret` with `slotCeremonies`** re-wraps the remaining slots
|
|
164
|
+
* around the new DEKs. Without it they survive step 2 BYTE-IDENTICAL
|
|
165
|
+
* (measured: `rotateKeys` never touches `authenticators[]`) and therefore
|
|
166
|
+
* silently wrap keys that no longer exist — every other credential in the
|
|
167
|
+
* vault dies quietly. This step is what makes the operation safe for
|
|
168
|
+
* everyone who was not being revoked.
|
|
169
|
+
*
|
|
170
|
+
* ⭐ Neither primitive is sufficient alone and they are not interchangeable:
|
|
171
|
+
* `rotateKeys` mints keys but cannot re-wrap slots; `rotateSecret` re-wraps
|
|
172
|
+
* slots but cannot mint keys.
|
|
173
|
+
*
|
|
174
|
+
* ## Cost
|
|
175
|
+
*
|
|
176
|
+
* Step 2 re-encrypts every record in every affected collection, and every
|
|
177
|
+
* remaining credential holder must be present for step 3. This is expensive on
|
|
178
|
+
* purpose: it is what revocation costs when the credential is a bearer token.
|
|
179
|
+
*
|
|
180
|
+
* @throws `ValidationError` when the session cannot see the slot list
|
|
181
|
+
* ({@link assertSlotListVisible}) — a tier-1 unlock is required, and #1432
|
|
182
|
+
* guarantees the KEK rotation needs is present at this point.
|
|
183
|
+
*/
|
|
184
|
+
export declare function revokeAuthenticator(store: NoydbStore, vault: string, keyring: UnlockedKeyring, options: RevokeAuthenticatorOptions): Promise<UnlockedKeyring>;
|
|
95
185
|
export {};
|
|
@@ -19,8 +19,9 @@ export type { UnlockedKeyring } from './keyring.js';
|
|
|
19
19
|
export { loadKeyring, createOwnerKeyring, grant, revoke, changeSecret, listUsers, listUsersWithEnvelopes, ensureCollectionDEK, persistKeyring, updateKeyringIdentity, buildRecipientKeyringFile, } from './keyring.js';
|
|
20
20
|
export type { PodRecipient, ListUsersOptions } from './keyring.js';
|
|
21
21
|
export type { LoadKeyringOptions, CreateOwnerKeyringOptions, RotateKeysOptions, ChangeSecretOptions, } from './keyring.js';
|
|
22
|
-
export { enrollAuthenticator, removeAuthenticator,
|
|
23
|
-
|
|
22
|
+
export { enrollAuthenticator, removeAuthenticator, revokeAuthenticator, // #1445 — the three-step revocation; removeAuthenticator alone only hides
|
|
23
|
+
updateAuthenticator, findAuthenticator, } from './authenticators.js';
|
|
24
|
+
export type { EnrollAuthenticatorOptions, EnrollAuthenticatorWrappingKEKOptions, EnrollAuthenticatorWrappingDEKsOptions, UpdateAuthenticatorOptions, RevokeAuthenticatorOptions, } from './authenticators.js';
|
|
24
25
|
export { rotateSecret, recoverSecret, } from './rotate-recover.js';
|
|
25
26
|
export type { RotateSecretInput, RecoverSecretInput, RecoverSecretResult, RecoveryProof, SlotRewrapContext, SlotRewrapCeremony, } from './rotate-recover.js';
|
|
26
27
|
export { recoverUser } from './peer-recover.js';
|
|
@@ -16,14 +16,21 @@ export interface UnlockedKeyring {
|
|
|
16
16
|
*/
|
|
17
17
|
readonly pendingDeks?: Map<string, EnclaveKey> | undefined;
|
|
18
18
|
/**
|
|
19
|
-
* The KEK, when this keyring was unlocked via tier 1 (secret)
|
|
20
|
-
*
|
|
21
|
-
* keyring was opened via:
|
|
19
|
+
* The KEK, when this keyring was unlocked via tier 1 (secret).
|
|
20
|
+
* `null` for every other path:
|
|
22
21
|
*
|
|
23
22
|
* - Unencrypted mode (no KEK exists)
|
|
23
|
+
* - **Every shipped tier-2 unlock** — `@noy-db/on-webauthn`,
|
|
24
|
+
* `@noy-db/on-oidc` and `@noy-db/on-password` all rebuild the
|
|
25
|
+
* DEK set from their own slot and return `kek: null`. A slot
|
|
26
|
+
* being wrap-KEK on disk (`wrapped_kek`, see
|
|
27
|
+
* `KeyringAuthenticatorWrappingKEK`) is what lets `rotateSecret`
|
|
28
|
+
* re-wrap it via the slot ceremony; it does not mean the unlock
|
|
29
|
+
* surfaces the KEK. (Measured against on-webauthn / on-oidc
|
|
30
|
+
* source and the published 0.7.0 dist, 2026-09-02 — an earlier
|
|
31
|
+
* version of this comment claimed both yield the KEK; neither
|
|
32
|
+
* ever did.)
|
|
24
33
|
* - Tier-3 PIN quick-resume (`@noy-db/on-pin`)
|
|
25
|
-
* - Wrap-DEKs tier-2 unlock (`@noy-db/on-password`'s
|
|
26
|
-
* `verifyPasswordSlot`)
|
|
27
34
|
* - Session-state restore (`session/session.ts`)
|
|
28
35
|
* - Dev-unlock fixture (`session/dev-unlock.ts`)
|
|
29
36
|
*
|
|
@@ -490,7 +497,7 @@ export interface ListUsersOptions {
|
|
|
490
497
|
* strong as the role the calling layer passes in. The hub-level wrapper
|
|
491
498
|
* on `Vault` sources `callerRole` from the unlocked keyring's `role`
|
|
492
499
|
* field, which is signed-by-construction (it lives in the user's own
|
|
493
|
-
* keyring file). See `https://github.com/
|
|
500
|
+
* keyring file). See `https://github.com/noy-db/docs/blob/main/content/docs/services/user-envelope.md` →
|
|
494
501
|
* "Directory visibility".
|
|
495
502
|
*
|
|
496
503
|
* Principals without a persisted envelope (legacy keyrings predating
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
* - Mandatory strong-recovery enforcement.
|
|
44
44
|
* - Recovery flow under managed mode (generates fresh sealed phrase).
|
|
45
45
|
*
|
|
46
|
-
* @see https://github.com/
|
|
46
|
+
* @see https://github.com/noy-db/docs/blob/main/content/docs/services/session-tiers.md → Managed-secret mode
|
|
47
47
|
*
|
|
48
48
|
* @module
|
|
49
49
|
*/
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* Internal service — reached through `noydb.team.rotateSecret(...)` etc.
|
|
20
20
|
*/
|
|
21
21
|
import type { NoydbOptions, NoydbStore, KeyringAuthenticator } from '../../kernel/types.js';
|
|
22
|
-
import type
|
|
22
|
+
import { type RotateResult, type RotateKeysOptions, type RosterVerifyResult, type QuarantineResult } from './keyring.js';
|
|
23
23
|
import { type RotateSecretInput, type RecoverSecretInput, type RecoverSecretResult, type RotateRecoveryOptions, type RotateRecoveryResult, type EnrollRecoveryResult, type RecoveryEnrollmentInput, type RecoveryProof } from './rotate-recover.js';
|
|
24
24
|
import { type RecoverUserOptions } from './peer-recover.js';
|
|
25
25
|
import { type PaperRecoveryEntry, type ShamirRecoveryEntry } from './recovery.js';
|
|
@@ -92,9 +92,18 @@ export declare class TeamFacade {
|
|
|
92
92
|
*/
|
|
93
93
|
enrollAuthenticator(vault: string, options: EnrollAuthenticatorOptions, factors?: FactorProofBundle): Promise<void>;
|
|
94
94
|
/**
|
|
95
|
-
* Remove a tier-2 authenticator slot. Idempotent — removing a
|
|
96
|
-
*
|
|
95
|
+
* Remove a tier-2 authenticator slot. Idempotent — removing a slot
|
|
96
|
+
* that is not in the keyring is a successful no-op. Gated by
|
|
97
97
|
* `remove-authenticator`.
|
|
98
|
+
*
|
|
99
|
+
* ⚠️ Idempotency needs the slot list to be VISIBLE, and a tier-3
|
|
100
|
+
* PIN-resumed / session-restored keyring carries an empty one
|
|
101
|
+
* (#1426). Such a session throws `ValidationError` rather than
|
|
102
|
+
* reporting a removal it did not perform — re-authenticate at tier 1
|
|
103
|
+
* first.
|
|
104
|
+
*
|
|
105
|
+
* @throws `ValidationError` when the active keyring cannot see its
|
|
106
|
+
* slot list (`kek === null`).
|
|
98
107
|
*/
|
|
99
108
|
removeAuthenticator(vault: string, slotId: string, factors?: FactorProofBundle): Promise<void>;
|
|
100
109
|
/** Read the slot list for a vault. Internal — `describeAuthConfig` consumes this. */
|
|
@@ -66,10 +66,10 @@ export interface WrappedDeksBlob {
|
|
|
66
66
|
* PIN). Caller normalization rules apply (e.g. paper
|
|
67
67
|
* recovery uppercase-strips the code before reaching this function).
|
|
68
68
|
*
|
|
69
|
-
* @param deks - DEK set to wrap.
|
|
70
|
-
* `
|
|
71
|
-
*
|
|
72
|
-
*
|
|
69
|
+
* @param deks - DEK set to wrap. Serialized through the enclave's
|
|
70
|
+
* `exportDekSet` door (the hub mints DEKs extractable;
|
|
71
|
+
* consumers feeding non-extractable keys will get
|
|
72
|
+
* `InvalidAccessError` from WebCrypto).
|
|
73
73
|
* @param credential - String input the consumer minted (paper code,
|
|
74
74
|
* password, PIN). Treated as opaque bytes by PBKDF2.
|
|
75
75
|
*/
|
|
@@ -113,7 +113,7 @@ export interface NoydbPodHeader {
|
|
|
113
113
|
/** SHA-256 of the compressed body bytes (lowercase hex). Lets readers verify integrity without decompressing. */
|
|
114
114
|
readonly bodySha256: string;
|
|
115
115
|
/**
|
|
116
|
-
* Owner-curated cover (`https://github.com/
|
|
116
|
+
* Owner-curated cover (`https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md`).
|
|
117
117
|
* Optional — present only when the source vault has a
|
|
118
118
|
* `_meta/public-envelope` document AND the writer's hub is opted
|
|
119
119
|
* into the feature. Treat as **untrusted hint**; the body's
|
package/dist/with-pod/pod.d.ts
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* *unwrapped JSON string*, not a Vault object. The caller
|
|
28
28
|
* is responsible for piping that JSON into
|
|
29
29
|
* `vault.load(json, secret)`. Splitting the layers
|
|
30
|
-
* keeps
|
|
30
|
+
* keeps `format.ts` free of any crypto/secret
|
|
31
31
|
* concerns — it's purely a format layer. The same `readPod`
|
|
32
32
|
* call can also feed verification tools, format inspectors, or
|
|
33
33
|
* archive utilities that don't care about decryption.
|
|
@@ -51,7 +51,7 @@ export type AutoCredentialKind = 'secret' | 'password' | 'pin';
|
|
|
51
51
|
* correct login/prefill path rather than treating all credentials
|
|
52
52
|
* as secrets.
|
|
53
53
|
*
|
|
54
|
-
* `
|
|
54
|
+
* `format.ts` is a pure format layer — it carries the credential
|
|
55
55
|
* without interpreting it. The consumer is responsible for
|
|
56
56
|
* dispatching on `kind`.
|
|
57
57
|
*/
|
|
@@ -274,7 +274,7 @@ export interface WritePodOptions {
|
|
|
274
274
|
* bundle that is missing something, and the defect surfaces later — in
|
|
275
275
|
* whoever imports it — with nothing left to trace it back to.
|
|
276
276
|
*
|
|
277
|
-
* `
|
|
277
|
+
* `pod-option-keys.test.ts` parses `WritePodOptions` out of this file and
|
|
278
278
|
* fails if the two ever drift, so adding an option is enough; you do not have
|
|
279
279
|
* to remember to update this list, only to keep the interface shape parseable.
|
|
280
280
|
*
|
|
@@ -285,7 +285,7 @@ export declare const WRITE_POD_OPTION_KEYS: readonly ["compression", "collection
|
|
|
285
285
|
* Result returned by `readPod`. The caller is expected to
|
|
286
286
|
* pass `dumpJson` into `vault.load(json, secret)` to
|
|
287
287
|
* actually restore a vault. Splitting the layers keeps the
|
|
288
|
-
*
|
|
288
|
+
* `format.ts` free of crypto concerns — see file-level docs.
|
|
289
289
|
*/
|
|
290
290
|
export interface PodReadResult {
|
|
291
291
|
readonly header: NoydbPodHeader;
|
|
@@ -471,7 +471,7 @@ export interface PodVerifyResult {
|
|
|
471
471
|
*/
|
|
472
472
|
export declare function verifyPodHeader(bytes: Uint8Array, trustedKeys: Readonly<Record<string, string>>): Promise<PodVerifyResult>;
|
|
473
473
|
/**
|
|
474
|
-
* Read just the bundle's cover (`https://github.com/
|
|
474
|
+
* Read just the bundle's cover (`https://github.com/noy-db/docs/blob/main/content/docs/services/public-envelope.md`)
|
|
475
475
|
* — without verifying the body or even parsing the dump JSON. Pass
|
|
476
476
|
* the raw bundle bytes; receive the owner-curated metadata or
|
|
477
477
|
* `undefined` if the bundle was written without one.
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
import type { NoydbStore, SlotInfo } from '../../kernel/types.js';
|
|
32
32
|
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
33
33
|
import { type OrphanChunkReport } from './orphan-report.js';
|
|
34
|
+
import { type UnreferencedLegacyBlobReport } from './legacy-sweep.js';
|
|
34
35
|
export interface BlobFieldPolicy<T = unknown> {
|
|
35
36
|
/**
|
|
36
37
|
* Via port brand marker — lets a `BlobFieldPolicy` satisfy the kernel's
|
|
@@ -158,6 +159,15 @@ export interface CompactionResult {
|
|
|
158
159
|
* is the expected reading everywhere else.
|
|
159
160
|
*/
|
|
160
161
|
readonly orphanBlobChunks: OrphanChunkReport;
|
|
162
|
+
/**
|
|
163
|
+
* #1453 — legacy (no `_cek`) blobs at `refCount <= 0`: released by every
|
|
164
|
+
* reference-drop path but never reclaimed, because a legacy chunk has no
|
|
165
|
+
* eager shred. Counted on every run; deleted only with
|
|
166
|
+
* `reclaimLegacyBlobs: true`. Not an orphan in the `orphanBlobChunks`
|
|
167
|
+
* sense — these rows keep their index entry, which is exactly why that
|
|
168
|
+
* report could not see them.
|
|
169
|
+
*/
|
|
170
|
+
readonly unreferencedLegacyBlobs: UnreferencedLegacyBlobReport;
|
|
161
171
|
}
|
|
162
172
|
export interface CompactRunOptions {
|
|
163
173
|
/** Override "now" for deterministic testing. */
|
|
@@ -189,6 +199,12 @@ export interface CompactRunOptions {
|
|
|
189
199
|
readonly cacheBudget?: {
|
|
190
200
|
readonly maxBytes: number;
|
|
191
201
|
};
|
|
202
|
+
/**
|
|
203
|
+
* #1453 — reclaim unreferenced legacy blobs (chunks first, then the index
|
|
204
|
+
* row). Off by default: reclaiming is irreversible and the default posture
|
|
205
|
+
* for a maintenance pass is to report. Ignored under `dryRun`.
|
|
206
|
+
*/
|
|
207
|
+
readonly reclaimLegacyBlobs?: boolean;
|
|
192
208
|
}
|
|
193
209
|
export interface CompactionContext {
|
|
194
210
|
readonly adapter: NoydbStore;
|
|
@@ -82,6 +82,8 @@ export declare class BlobSet {
|
|
|
82
82
|
* a cleared view: see `ownerRecordElevated()`/`ownerTier()`.
|
|
83
83
|
*/
|
|
84
84
|
private readonly clearedTier;
|
|
85
|
+
/** #1452 — see `BlobsStrategyOpenArgs.assertOwnerWritable`. */
|
|
86
|
+
private readonly assertOwnerWritable;
|
|
85
87
|
constructor(opts: {
|
|
86
88
|
store: NoydbStore;
|
|
87
89
|
vault: string;
|
|
@@ -99,6 +101,7 @@ export declare class BlobSet {
|
|
|
99
101
|
keyring?: UnlockedKeyring;
|
|
100
102
|
clearedTier?: number;
|
|
101
103
|
pinCache?: BlobPinCache;
|
|
104
|
+
assertOwnerWritable?: () => Promise<void>;
|
|
102
105
|
});
|
|
103
106
|
/**
|
|
104
107
|
* #724 I1 completion: a legacy (non-`perRecordKeys`) blob has no per-blob
|
|
@@ -1275,10 +1278,26 @@ export declare class BlobSet {
|
|
|
1275
1278
|
*/
|
|
1276
1279
|
list(): Promise<SlotInfo[]>;
|
|
1277
1280
|
/**
|
|
1278
|
-
* Delete the named slot from this record.
|
|
1279
|
-
*
|
|
1281
|
+
* Delete the named slot from this record and decrement the blob's refCount.
|
|
1282
|
+
* At refCount 0 an erasable blob (`perRecordKeys`) is crypto-shredded on the
|
|
1283
|
+
* spot; a legacy blob keeps its chunks until
|
|
1284
|
+
* `vault.compact({ reclaimLegacyBlobs: true })` reclaims them (#1453), or
|
|
1285
|
+
* `blob(id).migrate()` makes it erasable first.
|
|
1286
|
+
*
|
|
1287
|
+
* Gated on the owning record (#1452): refused where an update of the record
|
|
1288
|
+
* would be refused.
|
|
1280
1289
|
*/
|
|
1281
1290
|
delete(slotName: string): Promise<void>;
|
|
1291
|
+
/**
|
|
1292
|
+
* #1451 — release EVERY slot this record holds. Called by
|
|
1293
|
+
* `Collection.delete()` after the record is gone, so "the record is deleted"
|
|
1294
|
+
* and "its attachments are released" are one operation. Ungated: the record
|
|
1295
|
+
* delete itself already passed the gate bus. Ref-counted like any release —
|
|
1296
|
+
* content another record still holds survives.
|
|
1297
|
+
*/
|
|
1298
|
+
releaseAll(): Promise<void>;
|
|
1299
|
+
/** The body of {@link delete}, minus the owner gate. */
|
|
1300
|
+
private releaseSlot;
|
|
1282
1301
|
/**
|
|
1283
1302
|
* Pin the named slot for offline availability ON THIS DEVICE.
|
|
1284
1303
|
*
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1453 — count, and optionally reclaim, legacy blobs nothing references.
|
|
3
|
+
*
|
|
4
|
+
* A legacy blob (no per-blob `_cek`) is left at refCount 0 "for deferred GC"
|
|
5
|
+
* by `releaseRef`; before this the deferred GC had no verb outside
|
|
6
|
+
* `forget()` (which needs `withForget`), and `orphanBlobChunks` could not see
|
|
7
|
+
* these rows because they keep their index entry — so `vault.compact()`
|
|
8
|
+
* reported clean over a vault whose blob storage grew on every overwrite.
|
|
9
|
+
*
|
|
10
|
+
* Reclaiming here is SAFE where reclaiming orphans is not (see
|
|
11
|
+
* `orphan-report.ts`): the decision reads `refCount` off an AAD-bound index
|
|
12
|
+
* row the hub decrypted itself, never the store's `list()`. A withholding
|
|
13
|
+
* store cannot make a live blob look unreferenced; it can only hide a row from
|
|
14
|
+
* this sweep, which then does nothing to it.
|
|
15
|
+
*
|
|
16
|
+
* Rows sealed at an elevated tier do not open under the flat `_blob` DEK and
|
|
17
|
+
* are skipped, not counted: this is a tier-0 pass.
|
|
18
|
+
*/
|
|
19
|
+
import type { NoydbStore } from '../../kernel/types.js';
|
|
20
|
+
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
21
|
+
/** What `vault.compact()` reports (and, on request, reclaims) about legacy blobs. */
|
|
22
|
+
export interface UnreferencedLegacyBlobReport {
|
|
23
|
+
/** `_blob_index` rows with no `_cek` (legacy) and `refCount <= 0`. */
|
|
24
|
+
readonly blobs: number;
|
|
25
|
+
/** Chunk rows those blobs still hold. */
|
|
26
|
+
readonly chunks: number;
|
|
27
|
+
/** How many of those blobs this run deleted (chunks first, then the index row). */
|
|
28
|
+
readonly reclaimed: number;
|
|
29
|
+
}
|
|
30
|
+
export declare function sweepUnreferencedLegacyBlobs(ctx: {
|
|
31
|
+
adapter: NoydbStore;
|
|
32
|
+
vault: string;
|
|
33
|
+
getDEK: (name: string) => Promise<EnclaveKey>;
|
|
34
|
+
encrypted: boolean;
|
|
35
|
+
}, reclaim: boolean): Promise<UnreferencedLegacyBlobReport>;
|
|
@@ -48,6 +48,12 @@ export interface DescribedField {
|
|
|
48
48
|
readonly semanticType?: string;
|
|
49
49
|
readonly unit?: string;
|
|
50
50
|
readonly sensitivity?: 'public' | 'pii' | 'secret';
|
|
51
|
+
/**
|
|
52
|
+
* Read-shape sensitivity (#1363) — orthogonal to {@link DescribedField.sensitivity}.
|
|
53
|
+
* Telemetry plumbing, never a control: it tells a sensor which collections
|
|
54
|
+
* have a coverage worth accounting for. See `FieldMeta.bulk`.
|
|
55
|
+
*/
|
|
56
|
+
readonly bulk?: 'sensitive';
|
|
51
57
|
readonly aggregate?: 'sum' | 'count' | 'distinct' | 'none';
|
|
52
58
|
readonly aliases?: readonly string[];
|
|
53
59
|
readonly ref?: {
|
|
@@ -19,6 +19,24 @@ export interface FieldMeta {
|
|
|
19
19
|
unit?: string;
|
|
20
20
|
/** Data classification driving redaction/inspector masking. */
|
|
21
21
|
sensitivity?: 'public' | 'pii' | 'secret';
|
|
22
|
+
/**
|
|
23
|
+
* Sensitivity that is a property of the READ SHAPE, not the value (#1251).
|
|
24
|
+
*
|
|
25
|
+
* ⚠️ Declaring this prevents nothing. Against an insider holding the device
|
|
26
|
+
* and local keys it is TELEMETRY: it lets an opt-in sensor make bulk
|
|
27
|
+
* extraction visible early, attributable and loud. The real remediation is
|
|
28
|
+
* key custody — tiers and per-collection DEKs — not this label.
|
|
29
|
+
*
|
|
30
|
+
* Reads as: *this field's collection is a corpus whose COVERAGE is a
|
|
31
|
+
* protected quantity.* Deliberately ORTHOGONAL to {@link FieldMeta.sensitivity}:
|
|
32
|
+
* a company tax id stays `'public'` (it is public by law) and is still
|
|
33
|
+
* `bulk: 'sensitive'`, because the book of business is the set, not the value.
|
|
34
|
+
*
|
|
35
|
+
* The kernel does NOTHING with it beyond carrying it through introspection
|
|
36
|
+
* (`describe()` / `dumpSchema()`), so a sensor can discover which
|
|
37
|
+
* collections to account for. Zero runtime cost when unused.
|
|
38
|
+
*/
|
|
39
|
+
bulk?: 'sensitive';
|
|
22
40
|
/** Default aggregation for this field. */
|
|
23
41
|
aggregate?: 'sum' | 'count' | 'distinct' | 'none';
|
|
24
42
|
/** Canonical search synonyms (data vocabulary, not UI). */
|