@noy-db/hub 0.4.0-pre.0 → 0.4.0-pre.10
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 +3 -4
- package/dist/api-ZDKTWNBB.js +20 -0
- package/dist/attestation/index.js +18 -18
- package/dist/{backup-YPUEKIJC.js → backup-2UX7PRM5.js} +13 -13
- package/dist/blobs/index.js +30 -15
- package/dist/blobs/index.js.map +1 -1
- package/dist/broker/index.js +12 -12
- package/dist/broker/index.js.map +1 -1
- package/dist/cargo/index.js +58 -29
- package/dist/{chunk-IY23KFNZ.js → chunk-35NMVJ7I.js} +3 -3
- package/dist/{chunk-S3BFKGET.js → chunk-3HUYRN24.js} +4 -4
- package/dist/chunk-3HUYRN24.js.map +1 -0
- package/dist/{walk-IPLXE36W.js → chunk-3V3XR4S4.js} +4 -13
- package/dist/{walk-IPLXE36W.js.map → chunk-3V3XR4S4.js.map} +1 -1
- package/dist/{chunk-RTEK4C4I.js → chunk-4JQK3L4V.js} +2 -2
- package/dist/{chunk-3ELCWU56.js → chunk-4ZKNC6A6.js} +2 -2
- package/dist/{chunk-VQNJ7UZL.js → chunk-55LKVALY.js} +106 -10
- package/dist/chunk-55LKVALY.js.map +1 -0
- package/dist/{chunk-VAIS3SOM.js → chunk-55LX6FSX.js} +2 -2
- package/dist/chunk-5D2ALSM5.js +19 -0
- package/dist/chunk-5D2ALSM5.js.map +1 -0
- package/dist/{chunk-6HPG2YNX.js → chunk-5DRROK5W.js} +2 -2
- package/dist/{chunk-S6Q37VGE.js → chunk-5GQEU4DN.js} +2 -2
- package/dist/chunk-5JOFWL4G.js +25 -0
- package/dist/chunk-5JOFWL4G.js.map +1 -0
- package/dist/{chunk-ZXEZCY6F.js → chunk-63FE525P.js} +6 -6
- package/dist/chunk-6LJY7X5A.js +18 -0
- package/dist/chunk-6LJY7X5A.js.map +1 -0
- package/dist/{chunk-JVBO4SZL.js → chunk-6UBZ6I5Z.js} +2 -2
- package/dist/{chunk-BOKIKJJB.js → chunk-6ZNSB3H6.js} +5 -17
- package/dist/chunk-6ZNSB3H6.js.map +1 -0
- package/dist/{chunk-IK43HLDQ.js → chunk-7YVBQJ7K.js} +13 -355
- package/dist/chunk-7YVBQJ7K.js.map +1 -0
- package/dist/{chunk-VRBTNCM4.js → chunk-ABS7FMMD.js} +6 -6
- package/dist/chunk-AFHQATY4.js +47 -0
- package/dist/chunk-AFHQATY4.js.map +1 -0
- package/dist/{chunk-HOONYZY2.js → chunk-AKKRXT23.js} +7 -7
- package/dist/chunk-AKKRXT23.js.map +1 -0
- package/dist/{chunk-DDHM2TLX.js → chunk-AT2JJEKJ.js} +4 -4
- package/dist/chunk-AT2JJEKJ.js.map +1 -0
- package/dist/{chunk-M75ZZHSR.js → chunk-BLBAQRBM.js} +2 -2
- package/dist/{chunk-554KLAAN.js → chunk-BLCWSJLN.js} +88 -81
- package/dist/chunk-BLCWSJLN.js.map +1 -0
- package/dist/chunk-CADUYBQD.js +151 -0
- package/dist/chunk-CADUYBQD.js.map +1 -0
- package/dist/{chunk-WOM2HTML.js → chunk-CI32CAFS.js} +5 -5
- package/dist/{chunk-FH52K7EG.js → chunk-CUZLNGD5.js} +2 -6
- package/dist/{chunk-FH52K7EG.js.map → chunk-CUZLNGD5.js.map} +1 -1
- package/dist/{chunk-U6JMEH2P.js → chunk-CXQW2NWO.js} +145 -3
- package/dist/chunk-CXQW2NWO.js.map +1 -0
- package/dist/{chunk-EO43ANYJ.js → chunk-DABACXEF.js} +3 -3
- package/dist/{chunk-CJ5KKU6X.js → chunk-DMH3VZU5.js} +4 -4
- package/dist/chunk-DSDXAKIP.js +50 -0
- package/dist/chunk-DSDXAKIP.js.map +1 -0
- package/dist/{chunk-WZSHL6DQ.js → chunk-DZ2JXHWK.js} +5 -5
- package/dist/chunk-DZFQVICS.js +23 -0
- package/dist/chunk-DZFQVICS.js.map +1 -0
- package/dist/chunk-E23UGFVC.js +63 -0
- package/dist/chunk-E23UGFVC.js.map +1 -0
- package/dist/{chunk-Z4PD65VQ.js → chunk-EE7UHLKH.js} +4 -4
- package/dist/chunk-EIPVYUEP.js +654 -0
- package/dist/chunk-EIPVYUEP.js.map +1 -0
- package/dist/{chunk-RNG4VRP4.js → chunk-EKRSCRNM.js} +3 -3
- package/dist/{chunk-YMUGBZN2.js → chunk-FQ5CHJR7.js} +1 -1
- package/dist/chunk-FQ5CHJR7.js.map +1 -0
- package/dist/{chunk-RFI7GGFO.js → chunk-FQZ6XTQ7.js} +17 -20
- package/dist/chunk-FQZ6XTQ7.js.map +1 -0
- package/dist/{chunk-MT62YSPZ.js → chunk-FRMPM7WG.js} +4 -4
- package/dist/{chunk-W4TCUGQR.js → chunk-G2JUIDFA.js} +13 -9
- package/dist/{chunk-W4TCUGQR.js.map → chunk-G2JUIDFA.js.map} +1 -1
- package/dist/{chunk-T3GY65MA.js → chunk-G6WWZNJP.js} +13 -13
- package/dist/chunk-G6WWZNJP.js.map +1 -0
- package/dist/chunk-GJW4HX2O.js +1 -0
- package/dist/{chunk-KS6SAVCZ.js → chunk-GU3IP74F.js} +6 -6
- package/dist/{chunk-UHNGNKLV.js → chunk-GWWOGNBK.js} +308 -18
- package/dist/chunk-GWWOGNBK.js.map +1 -0
- package/dist/{chunk-5PFOMHTB.js → chunk-H2GPHUZD.js} +12 -13
- package/dist/chunk-H2GPHUZD.js.map +1 -0
- package/dist/{chunk-H2KSZMIX.js → chunk-HMU5P6RL.js} +5 -5
- package/dist/chunk-HMU5P6RL.js.map +1 -0
- package/dist/{chunk-JFCV5QIK.js → chunk-I5GEJX3R.js} +5 -5
- package/dist/chunk-I5GEJX3R.js.map +1 -0
- package/dist/{chunk-GWKAVKHI.js → chunk-IG6KUWBX.js} +2 -2
- package/dist/chunk-IG6KUWBX.js.map +1 -0
- package/dist/{chunk-LVGTA624.js → chunk-IPUG56GJ.js} +15 -5
- package/dist/{chunk-LVGTA624.js.map → chunk-IPUG56GJ.js.map} +1 -1
- package/dist/{chunk-SMIRGMS7.js → chunk-IXNCZTWA.js} +2 -2
- package/dist/{chunk-WQIYTNJV.js → chunk-IXTSNGYY.js} +3 -3
- package/dist/{chunk-WHXXI3W5.js → chunk-IYZISPGD.js} +7 -5
- package/dist/chunk-IYZISPGD.js.map +1 -0
- package/dist/{chunk-HQBM64EE.js → chunk-JDOMW53O.js} +145 -16
- package/dist/chunk-JDOMW53O.js.map +1 -0
- package/dist/{chunk-NCCBLYEB.js → chunk-JJZGIE4U.js} +6 -5
- package/dist/{chunk-DRWBEDYO.js → chunk-JYJFGD2H.js} +2 -2
- package/dist/{chunk-TAGR72IR.js → chunk-KRCBZYTZ.js} +26 -177
- package/dist/chunk-KRCBZYTZ.js.map +1 -0
- package/dist/{chunk-DSBQODMZ.js → chunk-L2DGWBCT.js} +14 -14
- package/dist/chunk-L2DGWBCT.js.map +1 -0
- package/dist/{chunk-VEALDPHW.js → chunk-L3YYLT4E.js} +15 -2
- package/dist/chunk-L3YYLT4E.js.map +1 -0
- package/dist/{chunk-FXZDAV62.js → chunk-LNPUSMZL.js} +29 -31
- package/dist/chunk-LNPUSMZL.js.map +1 -0
- package/dist/{chunk-XJMBYYQK.js → chunk-LNZKOUJR.js} +2 -2
- package/dist/{chunk-R3BLCFD2.js → chunk-MBKVNOJS.js} +6 -6
- package/dist/chunk-MCHBCNCE.js +367 -0
- package/dist/chunk-MCHBCNCE.js.map +1 -0
- package/dist/{chunk-VCBHAE4R.js → chunk-MHMLXJ3I.js} +2 -2
- package/dist/chunk-MHMLXJ3I.js.map +1 -0
- package/dist/{chunk-WNGGJWF7.js → chunk-MSMJJB4J.js} +2 -2
- package/dist/chunk-MSMJJB4J.js.map +1 -0
- package/dist/{chunk-T36RFODW.js → chunk-MXUT7FTE.js} +2 -2
- package/dist/chunk-MXUT7FTE.js.map +1 -0
- package/dist/{chunk-WG4QBZDN.js → chunk-N4BBNYIB.js} +11 -9
- package/dist/chunk-N4BBNYIB.js.map +1 -0
- package/dist/{chunk-PK6JIDQ4.js → chunk-NFIBXF4V.js} +1084 -1583
- package/dist/chunk-NFIBXF4V.js.map +1 -0
- package/dist/{chunk-VKCADNMR.js → chunk-NFNJLRY7.js} +368 -52
- package/dist/chunk-NFNJLRY7.js.map +1 -0
- package/dist/{chunk-N6WF5PKC.js → chunk-NFZGZ4AK.js} +2 -2
- package/dist/{chunk-JRBNCUNT.js → chunk-NGSJZFGL.js} +21 -4
- package/dist/chunk-NGSJZFGL.js.map +1 -0
- package/dist/chunk-NJ4DYYO5.js +81 -0
- package/dist/chunk-NJ4DYYO5.js.map +1 -0
- package/dist/chunk-NM5UYF6Q.js +24 -0
- package/dist/chunk-NM5UYF6Q.js.map +1 -0
- package/dist/{chunk-JBBSYJHP.js → chunk-NYEFP7DY.js} +4 -4
- package/dist/chunk-NYEFP7DY.js.map +1 -0
- package/dist/{chunk-GDG5VVYG.js → chunk-NZ24MX4J.js} +8 -46
- package/dist/chunk-NZ24MX4J.js.map +1 -0
- package/dist/{chunk-IFJTPAQQ.js → chunk-OLEPKFTW.js} +4 -4
- package/dist/chunk-OLEPKFTW.js.map +1 -0
- package/dist/{chunk-THVIPWRF.js → chunk-PEATRIYJ.js} +9 -9
- package/dist/chunk-PEOZ34EM.js +13 -0
- package/dist/chunk-PEOZ34EM.js.map +1 -0
- package/dist/{chunk-UC2ETWF3.js → chunk-PTHKZWEH.js} +2 -14
- package/dist/{chunk-UC2ETWF3.js.map → chunk-PTHKZWEH.js.map} +1 -1
- package/dist/chunk-PVEWA2DU.js +23 -0
- package/dist/chunk-PVEWA2DU.js.map +1 -0
- package/dist/{chunk-VCTXU4AT.js → chunk-QBAC3GXA.js} +1 -1
- package/dist/chunk-QBAC3GXA.js.map +1 -0
- package/dist/{chunk-RDXW3OBQ.js → chunk-QD46HPZG.js} +2 -2
- package/dist/chunk-QD46HPZG.js.map +1 -0
- package/dist/{chunk-YZQOGE2L.js → chunk-QDIH2744.js} +2 -2
- package/dist/{chunk-6HY2X62D.js → chunk-QJNCB5SK.js} +2 -2
- package/dist/{chunk-IAO54J4R.js → chunk-QX76XVQH.js} +6 -6
- package/dist/chunk-QX76XVQH.js.map +1 -0
- package/dist/{chunk-W2OG6JOL.js → chunk-QZWTRENR.js} +24 -7
- package/dist/chunk-QZWTRENR.js.map +1 -0
- package/dist/{chunk-6NQMXTYC.js → chunk-RO5NM6UI.js} +2 -2
- package/dist/chunk-RO5NM6UI.js.map +1 -0
- package/dist/chunk-SGDPRCC4.js +1075 -0
- package/dist/chunk-SGDPRCC4.js.map +1 -0
- package/dist/{chunk-2PCAVW2I.js → chunk-SHEEBRZ4.js} +2 -2
- package/dist/chunk-SMY5X46Z.js +14 -0
- package/dist/chunk-SMY5X46Z.js.map +1 -0
- package/dist/{chunk-ISMV2QVG.js → chunk-TG634KCO.js} +11 -2
- package/dist/chunk-TG634KCO.js.map +1 -0
- package/dist/{chunk-XUW3PXHU.js → chunk-TUXQSFHZ.js} +4 -16
- package/dist/{chunk-XUW3PXHU.js.map → chunk-TUXQSFHZ.js.map} +1 -1
- package/dist/{chunk-GULTLPFB.js → chunk-UADPR6F4.js} +3 -3
- package/dist/{chunk-GULTLPFB.js.map → chunk-UADPR6F4.js.map} +1 -1
- package/dist/{chunk-XTHCN77N.js → chunk-UDHBXYGG.js} +29 -19
- package/dist/chunk-UDHBXYGG.js.map +1 -0
- package/dist/{chunk-RA5VTXXG.js → chunk-V6UQZA2H.js} +2 -2
- package/dist/chunk-VG2ZSFYD.js +32 -0
- package/dist/chunk-VG2ZSFYD.js.map +1 -0
- package/dist/chunk-VKQCVU2Z.js +21 -0
- package/dist/chunk-VKQCVU2Z.js.map +1 -0
- package/dist/{chunk-QDPZWTN2.js → chunk-W3G5REIU.js} +2 -2
- package/dist/{chunk-A4FXFAKF.js → chunk-W3L64Y3J.js} +2 -2
- package/dist/{chunk-ONTBCHCP.js → chunk-W66AM5IB.js} +2 -2
- package/dist/chunk-W66AM5IB.js.map +1 -0
- package/dist/{chunk-A5BDDEXK.js → chunk-WBKZUO5V.js} +26 -43
- package/dist/chunk-WBKZUO5V.js.map +1 -0
- package/dist/{chunk-XDIAFPUM.js → chunk-WLXMTYGO.js} +2 -2
- package/dist/{chunk-RJ6K6K5M.js → chunk-X3F5YJG2.js} +2 -2
- package/dist/{chunk-WKGF2TJR.js → chunk-X45JYIAY.js} +3 -3
- package/dist/chunk-X45JYIAY.js.map +1 -0
- package/dist/{chunk-6XE5TMPR.js → chunk-X4MVWPHV.js} +3 -3
- package/dist/chunk-X4MVWPHV.js.map +1 -0
- package/dist/chunk-XZHEOSQ2.js +16 -0
- package/dist/chunk-XZHEOSQ2.js.map +1 -0
- package/dist/chunk-Y2NBBT6K.js +18 -0
- package/dist/chunk-Y2NBBT6K.js.map +1 -0
- package/dist/{chunk-CZTLE22N.js → chunk-Y2NJBNX3.js} +8 -8
- package/dist/{chunk-CZTLE22N.js.map → chunk-Y2NJBNX3.js.map} +1 -1
- package/dist/{chunk-YTGDPCPW.js → chunk-Y6B6HVKC.js} +2 -2
- package/dist/chunk-YMUFFJCO.js +23 -0
- package/dist/chunk-YMUFFJCO.js.map +1 -0
- package/dist/{chunk-SV6EAJEP.js → chunk-YWWQM7KP.js} +5 -14
- package/dist/chunk-YWWQM7KP.js.map +1 -0
- package/dist/{chunk-UDSR4X4L.js → chunk-YZJSJOUI.js} +239 -16
- package/dist/chunk-YZJSJOUI.js.map +1 -0
- package/dist/{chunk-5WZXVULX.js → chunk-ZTLOXFPB.js} +2 -2
- package/dist/chunk-ZTLOXFPB.js.map +1 -0
- package/dist/classified/index.js +5 -5
- package/dist/{classified-marker-QWMASIT7.js → classified-marker-7PKJBFCG.js} +3 -3
- package/dist/collection-facade-6I5K5IOD.js +45 -0
- package/dist/{computed-DSMPXG2Y.js → computed-AB45PS4V.js} +3 -3
- package/dist/consent/index.js +13 -9
- package/dist/consent/index.js.map +1 -1
- package/dist/cover/index.js +37 -0
- package/dist/crdt/index.js +4 -0
- package/dist/crdt/index.js.map +1 -1
- package/dist/custody/index.js +26 -0
- package/dist/{dead-filter-66VGI6JV.js → dead-filter-FL3WIUZS.js} +2 -2
- package/dist/{chunk-OCVM6KDH.js → delegation-QXZ4MPPH.js} +12 -6
- package/dist/{chunk-OCVM6KDH.js.map → delegation-QXZ4MPPH.js.map} +1 -1
- package/dist/derivations/index.js +12 -12
- package/dist/derive-VGS7FKE3.js +22 -0
- package/dist/directory/index.js +46 -0
- package/dist/dispatch-EGGC7UD7.js +72 -0
- package/dist/dispatch-EGGC7UD7.js.map +1 -0
- package/dist/dispatch-GDSTUTVP.js +194 -0
- package/dist/dispatch-GDSTUTVP.js.map +1 -0
- package/dist/{enclave-TKPN2G2U.js → enclave-SPEEDYZ4.js} +13 -11
- package/dist/executor-IEBLTBCW.js +9 -0
- package/dist/executor-OTF556PL.js +28 -0
- package/dist/executor-RM7XWQDU.js +9 -0
- package/dist/export-accessible-P42BQ4PB.js +23 -0
- package/dist/extract-partition-TCYXRWBN.js +38 -0
- package/dist/{fanout-sidecar-B5LVUMQX.js → fanout-sidecar-SSMRSC2L.js} +9 -9
- package/dist/find-OZMTRIK3.js +11 -0
- package/dist/forget/index.js +11 -11
- package/dist/forget/index.js.map +1 -1
- package/dist/guards/index.js +4 -4
- package/dist/history/index.js +16 -12
- package/dist/history/index.js.map +1 -1
- package/dist/i18n/index.js +16 -14
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +42 -42
- package/dist/index.js +332 -2106
- package/dist/index.js.map +1 -1
- package/dist/indexing/index.js +4 -2
- package/dist/indexing/index.js.map +1 -1
- package/dist/introspection/index.js +28 -0
- package/dist/issue-FCKN5O6C.js +19 -0
- package/dist/kernel/best-effort-revert.d.ts +9 -1
- package/dist/kernel/collection-config.d.ts +12 -70
- package/dist/kernel/collection.d.ts +11 -23
- package/dist/kernel/enclave/crypto.d.ts +8 -8
- package/dist/kernel/enclave/index.d.ts +4 -4
- package/dist/kernel/enclave/record-keys/envelope-body.d.ts +8 -0
- package/dist/kernel/errors.d.ts +41 -22
- package/dist/kernel/lazy.d.ts +30 -0
- package/dist/kernel/noydb.d.ts +81 -124
- package/dist/kernel/query/builder.d.ts +10 -10
- package/dist/kernel/query/index.d.ts +0 -6
- package/dist/kernel/query/scan-builder.d.ts +4 -4
- package/dist/kernel/sync-policy.d.ts +76 -4
- package/dist/kernel/types.d.ts +187 -86
- package/dist/kernel/validation.d.ts +33 -33
- package/dist/kernel/vault.d.ts +41 -229
- package/dist/kernel/via/dispatch.d.ts +7 -0
- package/dist/{ledger-PTK7XZYT.js → ledger-6XBEVWYP.js} +11 -11
- package/dist/liberate-CYUOS4NC.js +24 -0
- package/dist/{link-set-SLJHDNRB.js → link-set-NK6L2A5S.js} +11 -11
- package/dist/materialized-views/index.js +22 -19
- package/dist/money/index.js +31 -0
- package/dist/noydb-FZZIMLCI.js +81 -0
- package/dist/overlay-views/index.js +4 -4
- package/dist/periods/index.js +21 -17
- package/dist/pod/index.js +26 -12
- package/dist/{policy-YDLCOX4P.js → policy/index.js} +6 -6
- package/dist/port/with/archive-strategy.d.ts +31 -0
- package/dist/port/with/blob-strategy.d.ts +15 -5
- package/dist/port/with/collection-options.d.ts +171 -0
- package/dist/port/with/collection-registries.d.ts +62 -0
- package/dist/port/with/strategies.d.ts +134 -0
- package/dist/port/with/team-strategy.d.ts +3 -2
- package/dist/portability/index.js +8 -8
- package/dist/{post-register-2YHSADFI.js → post-register-VFIYISUK.js} +6 -6
- package/dist/query/index.js +6 -46
- package/dist/{aggregate → reduce}/index.js +24 -17
- package/dist/reduce/index.js.map +1 -0
- package/dist/register-UKU2J6MN.js +25 -0
- package/dist/registry-2VCWVHZS.js +19 -0
- package/dist/registry-7Y5WF7GS.js +9 -0
- package/dist/{registry-VW6P6A3J.js → registry-BWD2ED52.js} +2 -2
- package/dist/registry-DTWRJLSF.js +18 -0
- package/dist/request-withdrawal-JYDZ5XY2.js +31 -0
- package/dist/{reveal-HWO4YMTJ.js → reveal-CL2BCW6A.js} +6 -6
- package/dist/revoke-2TSAD2T4.js +24 -0
- package/dist/satellites/index.js +1 -1
- package/dist/schema-update/index.js +26 -0
- package/dist/sealed-record/index.js +12 -12
- package/dist/search/index.js +36 -0
- package/dist/{seed-3ZMF5EQA.js → seed-NUVJEL7T.js} +12 -12
- package/dist/seed-NUVJEL7T.js.map +1 -0
- package/dist/sequence/index.js +30 -0
- package/dist/session/index.js +13 -9
- package/dist/session/index.js.map +1 -1
- package/dist/shadow/index.js +6 -2
- package/dist/shadow/index.js.map +1 -1
- package/dist/share-link/index.d.ts +19 -0
- package/dist/share-link/index.js +201 -0
- package/dist/share-link/index.js.map +1 -0
- package/dist/share-link/share-link.d.ts +123 -0
- package/dist/signer-K7Z2EOMG.js +25 -0
- package/dist/snapshots/index.js +14 -10
- package/dist/snapshots/index.js.map +1 -1
- package/dist/{stale-VZL4OGUB.js → stale-A4J26OIC.js} +11 -10
- package/dist/storage-YVHZUISN.js +23 -0
- package/dist/store/index.js +22 -0
- package/dist/{store-coordination-provider-FKX3F6TQ.js → store-coordination-provider-EWRZL7XF.js} +3 -3
- package/dist/sync/index.js +15 -11
- package/dist/sync/index.js.map +1 -1
- package/dist/team/index.js +33 -47
- package/dist/tiers/index.js +10 -10
- package/dist/to/index.js +1 -1
- package/dist/{tx → transactions}/index.js +7 -3
- package/dist/transactions/index.js.map +1 -0
- package/dist/util/index.js +1 -1
- package/dist/{verify-26Y5GNMK.js → verify-7XWHJWUN.js} +5 -5
- package/dist/via/blob/active.d.ts +23 -7
- package/dist/via/blob/binding.d.ts +1 -1
- package/dist/via/blob/index.d.ts +7 -1
- package/dist/via/i18n/core.d.ts +1 -1
- package/dist/via/i18n/index.d.ts +2 -0
- package/dist/via/money/money-reducer.d.ts +2 -2
- package/dist/walk-P5D6CF4V.js +21 -0
- package/dist/with-audit/consent/index.d.ts +2 -0
- package/dist/with-audit/forget/active.d.ts +3 -3
- package/dist/with-audit/forget/index.d.ts +6 -5
- package/dist/with-audit/forget/strategy.d.ts +3 -3
- package/dist/with-audit/guards/executor.d.ts +4 -4
- package/dist/with-audit/guards/immutable-guard.d.ts +3 -3
- package/dist/with-audit/guards/index.d.ts +1 -1
- package/dist/with-audit/guards/registry.d.ts +3 -3
- package/dist/with-audit/guards/transition-guard.d.ts +3 -3
- package/dist/with-audit/guards/types.d.ts +10 -10
- package/dist/with-audit/guards/with-guard.d.ts +2 -2
- package/dist/with-audit/periods/index.d.ts +2 -0
- package/dist/with-audit/periods/periods.d.ts +1 -16
- package/dist/with-audit/periods/vault-facade.d.ts +6 -0
- package/dist/with-audit/periods/window.d.ts +16 -0
- 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-audit/tiers/index.d.ts +1 -0
- package/dist/with-cargo/adopt-partition.d.ts +7 -7
- package/dist/{legacy/kernel.d.ts → with-cargo/floor.d.ts} +4 -4
- package/dist/with-cargo/index.d.ts +15 -2
- package/dist/with-commit/crdt/index.d.ts +2 -0
- package/dist/with-commit/history/index.d.ts +2 -0
- package/dist/with-commit/history/time-machine.d.ts +2 -2
- package/dist/with-commit/numbering/descriptor.d.ts +16 -6
- package/dist/with-commit/tx/active.d.ts +5 -5
- package/dist/with-commit/tx/index.d.ts +2 -2
- package/dist/with-commit/tx/invariants.d.ts +1 -1
- package/dist/with-commit/tx/strategy.d.ts +3 -3
- package/dist/with-fork/shadow/index.d.ts +2 -0
- package/dist/with-fork/snapshots/active.d.ts +2 -2
- package/dist/with-fork/snapshots/index.d.ts +3 -1
- package/dist/with-fork/snapshots/noydb-facade.d.ts +3 -3
- package/dist/with-fork/snapshots/strategy.d.ts +2 -2
- package/dist/with-formula/derivations/dispatch.d.ts +98 -0
- package/dist/with-formula/derivations/executor.d.ts +2 -2
- package/dist/with-formula/derivations/index.d.ts +4 -1
- package/dist/with-formula/derivations/registry.d.ts +3 -3
- package/dist/with-formula/derivations/stale.d.ts +2 -2
- package/dist/with-formula/derivations/types.d.ts +3 -3
- package/dist/with-formula/derivations/with-derivation.d.ts +2 -2
- package/dist/with-formula/derivations/with-rollup.d.ts +15 -8
- package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +3 -3
- package/dist/with-formula/materialized-views/dispatch.d.ts +75 -0
- package/dist/with-formula/materialized-views/index.d.ts +2 -1
- package/dist/with-formula/materialized-views/registry.d.ts +4 -4
- package/dist/with-formula/materialized-views/types.d.ts +11 -11
- package/dist/with-formula/materialized-views/with-materialized-view.d.ts +2 -2
- package/dist/with-formula/overlay-views/index.d.ts +1 -1
- package/dist/with-formula/overlay-views/registry.d.ts +4 -4
- package/dist/with-formula/overlay-views/types.d.ts +3 -3
- package/dist/with-formula/overlay-views/virtual-collection.d.ts +2 -2
- package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +2 -2
- package/dist/with-lookup/indexing/active.d.ts +5 -5
- package/dist/with-lookup/indexing/index.d.ts +3 -1
- package/dist/with-lookup/indexing/strategy.d.ts +3 -3
- package/dist/with-lookup/{aggregate → reduce}/active.d.ts +8 -8
- package/dist/with-lookup/{aggregate → reduce}/groupby.d.ts +21 -21
- package/dist/with-lookup/reduce/index.d.ts +34 -0
- package/dist/with-lookup/{aggregate → reduce}/reducers.d.ts +11 -12
- package/dist/with-lookup/{aggregate/aggregation.d.ts → reduce/reduction.d.ts} +21 -21
- package/dist/with-lookup/{aggregate → reduce}/strategy.d.ts +15 -15
- package/dist/with-lookup/search/build-docs.d.ts +7 -2
- package/dist/with-lookup/search/index.d.ts +1 -1
- package/dist/with-party/broker/index.d.ts +1 -0
- package/dist/with-party/broker/seed.d.ts +1 -1
- package/dist/with-party/custody/liberate.d.ts +3 -3
- package/dist/with-party/directory/cover/index.d.ts +1 -5
- package/dist/with-party/directory/cover/schema.d.ts +0 -6
- package/dist/with-party/directory/cover/storage.d.ts +0 -8
- package/dist/with-party/directory/cover/types.d.ts +0 -21
- package/dist/with-party/directory/index.d.ts +2 -0
- package/dist/with-party/session/dev-unlock.d.ts +2 -2
- package/dist/with-party/session/index.d.ts +2 -0
- 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 +4 -7
- package/dist/with-party/team/keyring.d.ts +83 -35
- package/dist/with-party/team/{managed-passphrase.d.ts → managed-secret.d.ts} +27 -27
- package/dist/with-party/team/noydb-facade.d.ts +43 -42
- 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 -32
- package/dist/with-pod/format.d.ts +2 -2
- package/dist/with-pod/index.d.ts +2 -1
- package/dist/with-shape/blobs/blob-compaction.d.ts +43 -3
- package/dist/with-shape/blobs/blob-pinning.d.ts +112 -0
- package/dist/with-shape/blobs/blob-set.d.ts +86 -2
- package/dist/with-shape/introspection/index.d.ts +6 -0
- package/dist/with-shape/schema-update/index.d.ts +1 -0
- package/dist/with-store/index.d.ts +3 -2
- package/dist/with-store/route-store.d.ts +1 -1
- package/dist/{with-party/team/sync-active.d.ts → with-sync/active.d.ts} +1 -1
- package/dist/{with-party/team/sync-credentials.d.ts → with-sync/credentials.d.ts} +3 -3
- package/dist/{with-party/team/sync.d.ts → with-sync/engine.d.ts} +17 -4
- package/dist/{with-party/sync → with-sync}/index.d.ts +4 -2
- package/dist/with-sync/period-scope.d.ts +78 -0
- package/dist/{with-party/team → with-sync}/presence.d.ts +2 -2
- package/dist/{with-party/team/sync-strategy.d.ts → with-sync/strategy.d.ts} +6 -6
- package/dist/{with-party/team/sync-transaction.d.ts → with-sync/transaction.d.ts} +3 -3
- package/dist/withdraw-accessible-A2PWF5MZ.js +28 -0
- package/dist/withdraw-accessible-A2PWF5MZ.js.map +1 -0
- package/package.json +49 -36
- package/dist/aggregate/index.js.map +0 -1
- package/dist/api-3A3S4SHH.js +0 -20
- package/dist/as/index.js +0 -30
- package/dist/at/index.js +0 -1
- package/dist/bundle/index.js +0 -153
- package/dist/bundle/index.js.map +0 -1
- package/dist/by/index.js +0 -11
- package/dist/chunk-554KLAAN.js.map +0 -1
- package/dist/chunk-5PFOMHTB.js.map +0 -1
- package/dist/chunk-5WZXVULX.js.map +0 -1
- package/dist/chunk-6NQMXTYC.js.map +0 -1
- package/dist/chunk-6XE5TMPR.js.map +0 -1
- package/dist/chunk-A5BDDEXK.js.map +0 -1
- package/dist/chunk-ANATMTOA.js +0 -205
- package/dist/chunk-ANATMTOA.js.map +0 -1
- package/dist/chunk-BOKIKJJB.js.map +0 -1
- package/dist/chunk-CHFZDSE4.js +0 -1
- package/dist/chunk-DDHM2TLX.js.map +0 -1
- package/dist/chunk-DSBQODMZ.js.map +0 -1
- package/dist/chunk-EWPOHMN2.js +0 -255
- package/dist/chunk-EWPOHMN2.js.map +0 -1
- package/dist/chunk-FXZDAV62.js.map +0 -1
- package/dist/chunk-GDG5VVYG.js.map +0 -1
- package/dist/chunk-GWKAVKHI.js.map +0 -1
- package/dist/chunk-H2KSZMIX.js.map +0 -1
- package/dist/chunk-HOONYZY2.js.map +0 -1
- package/dist/chunk-HQBM64EE.js.map +0 -1
- package/dist/chunk-IAO54J4R.js.map +0 -1
- package/dist/chunk-IFJTPAQQ.js.map +0 -1
- package/dist/chunk-IK43HLDQ.js.map +0 -1
- package/dist/chunk-ISMV2QVG.js.map +0 -1
- package/dist/chunk-JBBSYJHP.js.map +0 -1
- package/dist/chunk-JFCV5QIK.js.map +0 -1
- package/dist/chunk-JRBNCUNT.js.map +0 -1
- package/dist/chunk-LB7FD65R.js +0 -163
- package/dist/chunk-LB7FD65R.js.map +0 -1
- package/dist/chunk-ONTBCHCP.js.map +0 -1
- package/dist/chunk-PK6JIDQ4.js.map +0 -1
- package/dist/chunk-RDXW3OBQ.js.map +0 -1
- package/dist/chunk-RFI7GGFO.js.map +0 -1
- package/dist/chunk-S3BFKGET.js.map +0 -1
- package/dist/chunk-SV6EAJEP.js.map +0 -1
- package/dist/chunk-T36RFODW.js.map +0 -1
- package/dist/chunk-T3GY65MA.js.map +0 -1
- package/dist/chunk-TAGR72IR.js.map +0 -1
- package/dist/chunk-TIGPQDYP.js +0 -14
- package/dist/chunk-TIGPQDYP.js.map +0 -1
- package/dist/chunk-U6JMEH2P.js.map +0 -1
- package/dist/chunk-UDSR4X4L.js.map +0 -1
- package/dist/chunk-UHNGNKLV.js.map +0 -1
- package/dist/chunk-VCBHAE4R.js.map +0 -1
- package/dist/chunk-VCTXU4AT.js.map +0 -1
- package/dist/chunk-VEALDPHW.js.map +0 -1
- package/dist/chunk-VKCADNMR.js.map +0 -1
- package/dist/chunk-VQNJ7UZL.js.map +0 -1
- package/dist/chunk-W2OG6JOL.js.map +0 -1
- package/dist/chunk-WG4QBZDN.js.map +0 -1
- package/dist/chunk-WHXXI3W5.js.map +0 -1
- package/dist/chunk-WKGF2TJR.js.map +0 -1
- package/dist/chunk-WNGGJWF7.js.map +0 -1
- package/dist/chunk-XTHCN77N.js.map +0 -1
- package/dist/chunk-YCH5GBN6.js +0 -99
- package/dist/chunk-YCH5GBN6.js.map +0 -1
- package/dist/chunk-YMUGBZN2.js.map +0 -1
- package/dist/collection-facade-KMBWNCYP.js +0 -44
- package/dist/cover-QJRXINN5.js +0 -52
- package/dist/delegation-SU6CV3W7.js +0 -25
- package/dist/derive-6RWU4EOA.js +0 -21
- package/dist/executor-KGNLJD6M.js +0 -9
- package/dist/executor-UX4FASYZ.js +0 -26
- package/dist/executor-XGIS6CR7.js +0 -9
- package/dist/export-accessible-LKW3QV22.js +0 -23
- package/dist/extract-partition-UP2ARO75.js +0 -38
- package/dist/find-YS6XWB46.js +0 -11
- package/dist/in/index.js +0 -1
- package/dist/issue-3ACYX7LO.js +0 -19
- package/dist/legacy/bundle.d.ts +0 -30
- package/dist/liberate-MQQXBUCY.js +0 -24
- package/dist/noydb-ANIW5FLE.js +0 -69
- package/dist/on/index.js +0 -17
- package/dist/port/as/index.d.ts +0 -26
- package/dist/port/at/index.d.ts +0 -18
- package/dist/port/in/index.d.ts +0 -21
- package/dist/port/on/index.d.ts +0 -27
- package/dist/port/ui/index.d.ts +0 -21
- package/dist/port/with/index.d.ts +0 -18
- package/dist/register-PAM3ASRZ.js +0 -23
- package/dist/registry-4S2U2TR4.js +0 -19
- package/dist/registry-NPOWJHC4.js +0 -9
- package/dist/registry-VZ3CCI2R.js +0 -18
- package/dist/request-withdrawal-DI3H5WUI.js +0 -31
- package/dist/revoke-R5CZSVUT.js +0 -24
- package/dist/seed-3ZMF5EQA.js.map +0 -1
- package/dist/signer-MBVHW4WE.js +0 -25
- package/dist/storage-3MEJUENZ.js +0 -23
- package/dist/tx/index.js.map +0 -1
- package/dist/ui/index.js +0 -1
- package/dist/with/index.js +0 -31
- package/dist/with-lookup/aggregate/index.d.ts +0 -23
- package/dist/withdraw-accessible-TZDATQVR.js +0 -28
- /package/dist/{api-3A3S4SHH.js.map → api-ZDKTWNBB.js.map} +0 -0
- /package/dist/{backup-YPUEKIJC.js.map → backup-2UX7PRM5.js.map} +0 -0
- /package/dist/{chunk-IY23KFNZ.js.map → chunk-35NMVJ7I.js.map} +0 -0
- /package/dist/{chunk-RTEK4C4I.js.map → chunk-4JQK3L4V.js.map} +0 -0
- /package/dist/{chunk-3ELCWU56.js.map → chunk-4ZKNC6A6.js.map} +0 -0
- /package/dist/{chunk-VAIS3SOM.js.map → chunk-55LX6FSX.js.map} +0 -0
- /package/dist/{chunk-6HPG2YNX.js.map → chunk-5DRROK5W.js.map} +0 -0
- /package/dist/{chunk-S6Q37VGE.js.map → chunk-5GQEU4DN.js.map} +0 -0
- /package/dist/{chunk-ZXEZCY6F.js.map → chunk-63FE525P.js.map} +0 -0
- /package/dist/{chunk-JVBO4SZL.js.map → chunk-6UBZ6I5Z.js.map} +0 -0
- /package/dist/{chunk-VRBTNCM4.js.map → chunk-ABS7FMMD.js.map} +0 -0
- /package/dist/{chunk-M75ZZHSR.js.map → chunk-BLBAQRBM.js.map} +0 -0
- /package/dist/{chunk-WOM2HTML.js.map → chunk-CI32CAFS.js.map} +0 -0
- /package/dist/{chunk-EO43ANYJ.js.map → chunk-DABACXEF.js.map} +0 -0
- /package/dist/{chunk-CJ5KKU6X.js.map → chunk-DMH3VZU5.js.map} +0 -0
- /package/dist/{chunk-WZSHL6DQ.js.map → chunk-DZ2JXHWK.js.map} +0 -0
- /package/dist/{chunk-Z4PD65VQ.js.map → chunk-EE7UHLKH.js.map} +0 -0
- /package/dist/{chunk-RNG4VRP4.js.map → chunk-EKRSCRNM.js.map} +0 -0
- /package/dist/{chunk-MT62YSPZ.js.map → chunk-FRMPM7WG.js.map} +0 -0
- /package/dist/{as/index.js.map → chunk-GJW4HX2O.js.map} +0 -0
- /package/dist/{chunk-KS6SAVCZ.js.map → chunk-GU3IP74F.js.map} +0 -0
- /package/dist/{chunk-SMIRGMS7.js.map → chunk-IXNCZTWA.js.map} +0 -0
- /package/dist/{chunk-WQIYTNJV.js.map → chunk-IXTSNGYY.js.map} +0 -0
- /package/dist/{chunk-NCCBLYEB.js.map → chunk-JJZGIE4U.js.map} +0 -0
- /package/dist/{chunk-DRWBEDYO.js.map → chunk-JYJFGD2H.js.map} +0 -0
- /package/dist/{chunk-XJMBYYQK.js.map → chunk-LNZKOUJR.js.map} +0 -0
- /package/dist/{chunk-R3BLCFD2.js.map → chunk-MBKVNOJS.js.map} +0 -0
- /package/dist/{chunk-N6WF5PKC.js.map → chunk-NFZGZ4AK.js.map} +0 -0
- /package/dist/{chunk-THVIPWRF.js.map → chunk-PEATRIYJ.js.map} +0 -0
- /package/dist/{chunk-YZQOGE2L.js.map → chunk-QDIH2744.js.map} +0 -0
- /package/dist/{chunk-6HY2X62D.js.map → chunk-QJNCB5SK.js.map} +0 -0
- /package/dist/{chunk-2PCAVW2I.js.map → chunk-SHEEBRZ4.js.map} +0 -0
- /package/dist/{chunk-RA5VTXXG.js.map → chunk-V6UQZA2H.js.map} +0 -0
- /package/dist/{chunk-QDPZWTN2.js.map → chunk-W3G5REIU.js.map} +0 -0
- /package/dist/{chunk-A4FXFAKF.js.map → chunk-W3L64Y3J.js.map} +0 -0
- /package/dist/{chunk-XDIAFPUM.js.map → chunk-WLXMTYGO.js.map} +0 -0
- /package/dist/{chunk-RJ6K6K5M.js.map → chunk-X3F5YJG2.js.map} +0 -0
- /package/dist/{chunk-YTGDPCPW.js.map → chunk-Y6B6HVKC.js.map} +0 -0
- /package/dist/{classified-marker-QWMASIT7.js.map → classified-marker-7PKJBFCG.js.map} +0 -0
- /package/dist/{at/index.js.map → collection-facade-6I5K5IOD.js.map} +0 -0
- /package/dist/{by/index.js.map → computed-AB45PS4V.js.map} +0 -0
- /package/dist/{in → cover}/index.js.map +0 -0
- /package/dist/{on → custody}/index.js.map +0 -0
- /package/dist/{dead-filter-66VGI6JV.js.map → dead-filter-FL3WIUZS.js.map} +0 -0
- /package/dist/{chunk-CHFZDSE4.js.map → derive-VGS7FKE3.js.map} +0 -0
- /package/dist/{ui → directory}/index.js.map +0 -0
- /package/dist/{collection-facade-KMBWNCYP.js.map → enclave-SPEEDYZ4.js.map} +0 -0
- /package/dist/{computed-DSMPXG2Y.js.map → executor-IEBLTBCW.js.map} +0 -0
- /package/dist/{cover-QJRXINN5.js.map → executor-OTF556PL.js.map} +0 -0
- /package/dist/{delegation-SU6CV3W7.js.map → executor-RM7XWQDU.js.map} +0 -0
- /package/dist/{derive-6RWU4EOA.js.map → export-accessible-P42BQ4PB.js.map} +0 -0
- /package/dist/{enclave-TKPN2G2U.js.map → extract-partition-TCYXRWBN.js.map} +0 -0
- /package/dist/{fanout-sidecar-B5LVUMQX.js.map → fanout-sidecar-SSMRSC2L.js.map} +0 -0
- /package/dist/{executor-KGNLJD6M.js.map → find-OZMTRIK3.js.map} +0 -0
- /package/dist/{with → introspection}/index.js.map +0 -0
- /package/dist/{executor-UX4FASYZ.js.map → issue-FCKN5O6C.js.map} +0 -0
- /package/dist/{executor-XGIS6CR7.js.map → ledger-6XBEVWYP.js.map} +0 -0
- /package/dist/{export-accessible-LKW3QV22.js.map → liberate-CYUOS4NC.js.map} +0 -0
- /package/dist/{extract-partition-UP2ARO75.js.map → link-set-NK6L2A5S.js.map} +0 -0
- /package/dist/{find-YS6XWB46.js.map → money/index.js.map} +0 -0
- /package/dist/{issue-3ACYX7LO.js.map → noydb-FZZIMLCI.js.map} +0 -0
- /package/dist/{ledger-PTK7XZYT.js.map → policy/index.js.map} +0 -0
- /package/dist/{post-register-2YHSADFI.js.map → post-register-VFIYISUK.js.map} +0 -0
- /package/dist/{liberate-MQQXBUCY.js.map → register-UKU2J6MN.js.map} +0 -0
- /package/dist/{link-set-SLJHDNRB.js.map → registry-2VCWVHZS.js.map} +0 -0
- /package/dist/{noydb-ANIW5FLE.js.map → registry-7Y5WF7GS.js.map} +0 -0
- /package/dist/{policy-YDLCOX4P.js.map → registry-BWD2ED52.js.map} +0 -0
- /package/dist/{register-PAM3ASRZ.js.map → registry-DTWRJLSF.js.map} +0 -0
- /package/dist/{registry-4S2U2TR4.js.map → request-withdrawal-JYDZ5XY2.js.map} +0 -0
- /package/dist/{reveal-HWO4YMTJ.js.map → reveal-CL2BCW6A.js.map} +0 -0
- /package/dist/{registry-NPOWJHC4.js.map → revoke-2TSAD2T4.js.map} +0 -0
- /package/dist/{registry-VW6P6A3J.js.map → schema-update/index.js.map} +0 -0
- /package/dist/{registry-VZ3CCI2R.js.map → search/index.js.map} +0 -0
- /package/dist/{request-withdrawal-DI3H5WUI.js.map → sequence/index.js.map} +0 -0
- /package/dist/{revoke-R5CZSVUT.js.map → signer-K7Z2EOMG.js.map} +0 -0
- /package/dist/{signer-MBVHW4WE.js.map → stale-A4J26OIC.js.map} +0 -0
- /package/dist/{stale-VZL4OGUB.js.map → storage-YVHZUISN.js.map} +0 -0
- /package/dist/{storage-3MEJUENZ.js.map → store/index.js.map} +0 -0
- /package/dist/{store-coordination-provider-FKX3F6TQ.js.map → store-coordination-provider-EWRZL7XF.js.map} +0 -0
- /package/dist/{verify-26Y5GNMK.js.map → verify-7XWHJWUN.js.map} +0 -0
- /package/dist/{withdraw-accessible-TZDATQVR.js.map → walk-P5D6CF4V.js.map} +0 -0
- /package/dist/with-lookup/{aggregate → reduce}/canonical-key.d.ts +0 -0
- /package/dist/{with-party → with-sync}/tab-coordination.d.ts +0 -0
- /package/dist/{with-party → with-sync}/tab-write-relay.d.ts +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #808 — device-local blob pin registry + external side-cache + KPI counters.
|
|
3
|
+
*
|
|
4
|
+
* Pinning marks a blob slot "keep this available offline" **for this device
|
|
5
|
+
* only**. Pin state is intentionally NEVER written to the vault's
|
|
6
|
+
* `NoydbStore` — the vault store is the synced/shared substrate, and each
|
|
7
|
+
* device pins for itself. Instead, `withBlobs()` owns one {@link BlobPinCache}
|
|
8
|
+
* per strategy instance and threads it into every `BlobSet` it opens; the
|
|
9
|
+
* registry rows live in a pluggable {@link BlobPinStore}.
|
|
10
|
+
*
|
|
11
|
+
* The default backend is in-memory ({@link memoryBlobPinStore}) — the hub has
|
|
12
|
+
* NO device-persistence idiom of its own (it never touches IndexedDB or any
|
|
13
|
+
* Node fs API; persistence backends are the `to-*` package family), so a
|
|
14
|
+
* durable registry is supplied by the consumer:
|
|
15
|
+
* `withBlobs({ pinStore: myIdbBackedStore })`. The interface is four async
|
|
16
|
+
* methods, deliberately trivial to implement over IndexedDB / SQLite / a file.
|
|
17
|
+
*
|
|
18
|
+
* ## What a registry row holds
|
|
19
|
+
*
|
|
20
|
+
* One row per `{vault, collection, record, slot}` ({@link blobPinKey}):
|
|
21
|
+
* - the pin flag + timestamps (LRU input for the cache-budget pass), and
|
|
22
|
+
* - for `external: true` slots, the **local encrypted copy** of the object's
|
|
23
|
+
* bytes ({@link BlobPinEntry.cipher}). The object-store copy of an external
|
|
24
|
+
* blob lives OUTSIDE the zero-knowledge envelope by design; the local copy
|
|
25
|
+
* does NOT — it is AES-256-GCM-encrypted under the vault's `_blob` DEK
|
|
26
|
+
* through the same enclave path that encrypts blob chunks
|
|
27
|
+
* (`encryptBytesWithAAD`, AAD-bound to the row's pin key), so a stolen
|
|
28
|
+
* device store leaks nothing the vault store wouldn't.
|
|
29
|
+
*
|
|
30
|
+
* Internal (chunked) blobs never store bytes here — their ciphertext already
|
|
31
|
+
* lives in `_blob_chunks`; the registry only carries their pin flag and
|
|
32
|
+
* access times.
|
|
33
|
+
*
|
|
34
|
+
* @module
|
|
35
|
+
*/
|
|
36
|
+
/** One device-local registry row — see the module doc for the field posture. */
|
|
37
|
+
export interface BlobPinEntry {
|
|
38
|
+
/** Slot is pinned for offline on THIS device. */
|
|
39
|
+
readonly pinned: boolean;
|
|
40
|
+
/** ISO timestamp of the pin (absent when not pinned). */
|
|
41
|
+
readonly pinnedAt?: string;
|
|
42
|
+
/** ISO timestamp of the last local read — LRU input for the budget pass. */
|
|
43
|
+
readonly lastAccessAt?: string;
|
|
44
|
+
/** Plaintext byte length of the cached external copy (external slots only). */
|
|
45
|
+
readonly cachedBytes?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Encrypted local copy of an external slot's bytes: base64 IV + base64
|
|
48
|
+
* AES-256-GCM ciphertext under the vault's `_blob` DEK, AAD-bound to the
|
|
49
|
+
* row's {@link blobPinKey}. On an UNENCRYPTED vault (`encrypt: false`) the
|
|
50
|
+
* fallback mirrors the envelope convention: `iv === ''`, `data` = base64
|
|
51
|
+
* plaintext.
|
|
52
|
+
*/
|
|
53
|
+
readonly cipher?: {
|
|
54
|
+
readonly iv: string;
|
|
55
|
+
readonly data: string;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Pluggable device-local backend for the pin registry (#808). Implementations
|
|
60
|
+
* MUST be device-local (never synced) — an IndexedDB- or file-backed store is
|
|
61
|
+
* the expected production shape; {@link memoryBlobPinStore} is the default.
|
|
62
|
+
*/
|
|
63
|
+
export interface BlobPinStore {
|
|
64
|
+
get(key: string): Promise<BlobPinEntry | null>;
|
|
65
|
+
set(key: string, entry: BlobPinEntry): Promise<void>;
|
|
66
|
+
delete(key: string): Promise<void>;
|
|
67
|
+
/** All rows whose key starts with `prefix` (`''` = every row). */
|
|
68
|
+
entries(prefix: string): Promise<Array<{
|
|
69
|
+
key: string;
|
|
70
|
+
entry: BlobPinEntry;
|
|
71
|
+
}>>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* In-memory {@link BlobPinStore} — the default. Pin state then lasts for the
|
|
75
|
+
* strategy instance's lifetime (one app session); pass a durable store to
|
|
76
|
+
* `withBlobs({ pinStore })` to keep pins across restarts.
|
|
77
|
+
*/
|
|
78
|
+
export declare function memoryBlobPinStore(): BlobPinStore;
|
|
79
|
+
/**
|
|
80
|
+
* Device-local blob-cache KPI counters (#808) — read via
|
|
81
|
+
* `withBlobs().cacheStats()`. "Local" reads (internal chunks, cached external
|
|
82
|
+
* copies) count as hits; network fetches from the object store count as
|
|
83
|
+
* misses and add to `bytesDownloaded` (the 4G-budget number).
|
|
84
|
+
*/
|
|
85
|
+
export interface BlobCacheStats {
|
|
86
|
+
readonly hits: number;
|
|
87
|
+
readonly misses: number;
|
|
88
|
+
readonly bytesDownloaded: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The per-strategy bundle `withBlobs()` threads into every `BlobSet`: the
|
|
92
|
+
* registry backend plus the shared mutable KPI counters.
|
|
93
|
+
*
|
|
94
|
+
* @internal
|
|
95
|
+
*/
|
|
96
|
+
export interface BlobPinCache {
|
|
97
|
+
readonly store: BlobPinStore;
|
|
98
|
+
readonly stats: {
|
|
99
|
+
hits: number;
|
|
100
|
+
misses: number;
|
|
101
|
+
bytesDownloaded: number;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/** @internal */
|
|
105
|
+
export declare function createBlobPinCache(store?: BlobPinStore): BlobPinCache;
|
|
106
|
+
/**
|
|
107
|
+
* Registry key for one slot's row: `{vault}::{collection}::{record}::{slot}`
|
|
108
|
+
* (the blobs' established `::` separator — record ids and slot names are
|
|
109
|
+
* already `::`-refused at the write surface, see `assertKeyPartSafe`).
|
|
110
|
+
* Omitting `slotName` yields the record's row PREFIX (for per-record scans).
|
|
111
|
+
*/
|
|
112
|
+
export declare function blobPinKey(vault: string, collection: string, recordId: string, slotName?: string): string;
|
|
@@ -2,6 +2,7 @@ import type { NoydbStore, BlobObject, SlotInfo, VersionRecord, BlobPutOptions, B
|
|
|
2
2
|
import type { ObjectProjection } from './object-projection.js';
|
|
3
3
|
import type { BlobFieldsConfig } from './blob-compaction.js';
|
|
4
4
|
import { type EnclaveKey } from '../../kernel/enclave/index.js';
|
|
5
|
+
import { type BlobPinCache } from './blob-pinning.js';
|
|
5
6
|
import type { UnlockedKeyring } from '../../with-party/team/keyring.js';
|
|
6
7
|
/**
|
|
7
8
|
* DEK slot name for vault-shared blob data. Calling `getDEK('_blob')`
|
|
@@ -69,6 +70,12 @@ export declare class BlobSet {
|
|
|
69
70
|
private readonly objectStore;
|
|
70
71
|
private readonly blobFields;
|
|
71
72
|
private readonly keyring;
|
|
73
|
+
/**
|
|
74
|
+
* Device-local pin registry + external side-cache + KPI counters (#808).
|
|
75
|
+
* Injected by `withBlobs()` (one shared instance per strategy — per
|
|
76
|
+
* "device"); absent on a direct construction that never threads one.
|
|
77
|
+
*/
|
|
78
|
+
private readonly pinCache;
|
|
72
79
|
/**
|
|
73
80
|
* Set only on the cleared clone `atTier()` returns (#749) — never by
|
|
74
81
|
* `openSlot`/`Collection.blob()`. Its presence is what makes a `BlobSet`
|
|
@@ -91,6 +98,7 @@ export declare class BlobSet {
|
|
|
91
98
|
blobFields?: BlobFieldsConfig;
|
|
92
99
|
keyring?: UnlockedKeyring;
|
|
93
100
|
clearedTier?: number;
|
|
101
|
+
pinCache?: BlobPinCache;
|
|
94
102
|
});
|
|
95
103
|
/**
|
|
96
104
|
* #724 I1 completion: a legacy (non-`perRecordKeys`) blob has no per-blob
|
|
@@ -101,7 +109,7 @@ export declare class BlobSet {
|
|
|
101
109
|
* DECLARED; a collection with an undeclared field (or no `blobFields` at
|
|
102
110
|
* all) constructs fine and reaches this write path unguarded. Refuse the
|
|
103
111
|
* write itself instead of broadening the construction mandate, which
|
|
104
|
-
* would over-refuse blobless tiered collections (`
|
|
112
|
+
* would over-refuse blobless tiered collections (`blobsStrategy` is
|
|
105
113
|
* vault-wide, not per-collection). Called from every content-write entry
|
|
106
114
|
* (`put()`, `publish()`) — never from a read path, so a pre-existing
|
|
107
115
|
* legacy blob stays readable (back-compat).
|
|
@@ -1136,7 +1144,11 @@ export declare class BlobSet {
|
|
|
1136
1144
|
/**
|
|
1137
1145
|
* Fetch all bytes for the named slot.
|
|
1138
1146
|
* Returns `null` if the slot does not exist.
|
|
1139
|
-
* Throws `
|
|
1147
|
+
* Throws `BlobOfflineError` if the content is not available locally (#808):
|
|
1148
|
+
* an internal blob whose chunk envelopes are absent from the local store, or
|
|
1149
|
+
* an external slot with no local cached copy while the object store is
|
|
1150
|
+
* unreachable. External reads populate the device-local encrypted
|
|
1151
|
+
* side-cache, so a repeat read is served locally (see `pin()`).
|
|
1140
1152
|
*/
|
|
1141
1153
|
get(slotName: string): Promise<Uint8Array | null>;
|
|
1142
1154
|
/**
|
|
@@ -1182,6 +1194,12 @@ export declare class BlobSet {
|
|
|
1182
1194
|
/**
|
|
1183
1195
|
* List all slot entries for this record.
|
|
1184
1196
|
* Returns metadata only — no chunk data is loaded.
|
|
1197
|
+
*
|
|
1198
|
+
* #808: when a pin registry is present (`withBlobs()`), each entry is
|
|
1199
|
+
* annotated with this DEVICE's view — `pinned` / `lastAccessAt` /
|
|
1200
|
+
* `cachedBytes` (see their `SlotInfo` doc comments). The annotations come
|
|
1201
|
+
* from the device-local registry, never the vault store, and are what
|
|
1202
|
+
* `vault.compact()`'s pin exemption + cache-budget LRU pass key off.
|
|
1185
1203
|
*/
|
|
1186
1204
|
list(): Promise<SlotInfo[]>;
|
|
1187
1205
|
/**
|
|
@@ -1189,6 +1207,72 @@ export declare class BlobSet {
|
|
|
1189
1207
|
* Decrements refCount on the blob. Chunks are GC'd by `vault.blobGC()`.
|
|
1190
1208
|
*/
|
|
1191
1209
|
delete(slotName: string): Promise<void>;
|
|
1210
|
+
/**
|
|
1211
|
+
* Pin the named slot for offline availability ON THIS DEVICE.
|
|
1212
|
+
*
|
|
1213
|
+
* - Downloads eagerly (call while online): an internal blob's chunks are
|
|
1214
|
+
* fetched once to prove they are locally readable; an `external` slot's
|
|
1215
|
+
* bytes are fetched from the object store and kept in the device-local
|
|
1216
|
+
* side-cache, **encrypted** under the vault's `_blob` DEK via the same
|
|
1217
|
+
* enclave path as chunk encryption (the object-store copy sits outside
|
|
1218
|
+
* the ZK envelope by design; the local copy does not).
|
|
1219
|
+
* - A pinned slot is EXEMPT from `vault.compact()` eviction — both the
|
|
1220
|
+
* `blobFields` policy pass and the `cacheBudget` LRU pass.
|
|
1221
|
+
* - Pin state is device-local (never synced): it lives in the `withBlobs()`
|
|
1222
|
+
* pin registry, not in the vault store. Each device pins for itself.
|
|
1223
|
+
*
|
|
1224
|
+
* Throws `NotFoundError` for a missing slot and `BlobOfflineError` when the
|
|
1225
|
+
* eager download cannot complete (offline).
|
|
1226
|
+
*/
|
|
1227
|
+
pin(slotName: string): Promise<void>;
|
|
1228
|
+
/**
|
|
1229
|
+
* Unpin the named slot on this device — it returns to the normal lifecycle:
|
|
1230
|
+
* `blobFields` policy eviction applies again, and any local cached copy
|
|
1231
|
+
* (external slots) stays but becomes budget-managed (`cacheBudget` LRU).
|
|
1232
|
+
* A no-op when the slot is not pinned here.
|
|
1233
|
+
*/
|
|
1234
|
+
unpin(slotName: string): Promise<void>;
|
|
1235
|
+
/** Whether the named slot is pinned for offline ON THIS DEVICE (#808). */
|
|
1236
|
+
isPinned(slotName: string): Promise<boolean>;
|
|
1237
|
+
/**
|
|
1238
|
+
* Drop this slot's device-local cached copy (the encrypted external
|
|
1239
|
+
* side-cache) WITHOUT touching the slot, the vault store, or the object
|
|
1240
|
+
* store. Returns the plaintext bytes freed (0 when nothing was cached, the
|
|
1241
|
+
* slot is pinned — pinned copies are exempt — or no registry is present).
|
|
1242
|
+
* The cache-budget pass inside `vault.compact()` is the expected caller;
|
|
1243
|
+
* the LRU access row itself is kept.
|
|
1244
|
+
*/
|
|
1245
|
+
dropLocalCache(slotName: string): Promise<number>;
|
|
1246
|
+
/** This slot's registry key — see {@link blobPinKey}. */
|
|
1247
|
+
private pinKeyFor;
|
|
1248
|
+
/** AAD binding for a cached external copy: the row's own registry key. */
|
|
1249
|
+
private pinCopyAAD;
|
|
1250
|
+
private requirePinCache;
|
|
1251
|
+
/** KPI hit + LRU access stamp for a successful LOCAL read. No-op without a registry. */
|
|
1252
|
+
private recordLocalHit;
|
|
1253
|
+
/**
|
|
1254
|
+
* Read an `external` slot (#808 taxonomy): local encrypted side-cache first
|
|
1255
|
+
* (hit); else the object store (miss + `bytesDownloaded`), auto-caching the
|
|
1256
|
+
* fetched bytes so the NEXT read — and any later offline read — is local.
|
|
1257
|
+
* A network failure with no local copy is the typed `BlobOfflineError`;
|
|
1258
|
+
* a genuinely absent object (fetch succeeded, nothing there) stays `null`.
|
|
1259
|
+
*/
|
|
1260
|
+
private readExternal;
|
|
1261
|
+
/**
|
|
1262
|
+
* Decrypt a cached external copy. `null` (treated as a cache miss → network
|
|
1263
|
+
* refresh) when the vault keys can no longer open it — e.g. the copy was
|
|
1264
|
+
* cached before the owning record moved tiers, so it is sealed under a DEK
|
|
1265
|
+
* this handle no longer resolves. Genuine non-crypto failures propagate.
|
|
1266
|
+
*/
|
|
1267
|
+
private decryptCachedCopy;
|
|
1268
|
+
/**
|
|
1269
|
+
* Write an external slot's bytes into the device-local side-cache —
|
|
1270
|
+
* ENCRYPTED under the vault's `_blob` DEK (owner tier) via the enclave's
|
|
1271
|
+
* AAD-bound path, mirroring chunk encryption; base64 plaintext with
|
|
1272
|
+
* `iv: ''` only on an unencrypted vault (the envelope convention). A
|
|
1273
|
+
* pre-existing pin flag survives the rewrite.
|
|
1274
|
+
*/
|
|
1275
|
+
private cacheExternalCopy;
|
|
1192
1276
|
/**
|
|
1193
1277
|
* Return a native `Response` whose body streams the decrypted,
|
|
1194
1278
|
* decompressed blob bytes with full HTTP metadata headers.
|
|
@@ -9,4 +9,10 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export type { VaultSchemaSnapshot, DumpSchemaOptions, CollectionDescriptor, CollectionConfig, CollectionStats, FieldDescriptor, FieldSource, MaterializedViewDescriptor, OverlayViewDescriptor, DerivationDescriptor, InternalCollectionStats, } from './types.js';
|
|
11
11
|
export { dumpVaultSchema } from './walk.js';
|
|
12
|
+
export type { VaultIntrospectState } from './walk.js';
|
|
12
13
|
export { jsonSchemaToFields } from './fields.js';
|
|
14
|
+
export type { SchemaIntrospection } from './types.js';
|
|
15
|
+
export type { FieldMeta, SemanticType } from './field-meta.js';
|
|
16
|
+
export type { CollectionDescription, DescribedField, DescribeOptions } from './describe.js';
|
|
17
|
+
export { applyListProjection } from './projection.js';
|
|
18
|
+
export type { ListProjectionOptions } from './projection.js';
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Store routing (multiplex by collection/size/age) and composable store
|
|
5
5
|
* middleware (retry, logging, metrics, circuit-breaker, cache, health-check).
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Published as `@noy-db/hub/store` (#843 C3a). Also re-exported from the root
|
|
7
|
+
* barrel, matching how the Via features are dual-homed — the subpath exists so
|
|
8
|
+
* the surface is navigable and tree-shakeable, not to force a migration.
|
|
8
9
|
*
|
|
9
10
|
* Named re-exports (not `export *`) so tsup keeps the barrel populated
|
|
10
11
|
* even with `sideEffects: false`.
|
|
@@ -204,7 +204,7 @@ export interface RoutedNoydbStore extends NoydbStore {
|
|
|
204
204
|
* - `hydrate: ['invoices', 'clients']` — copies only named collections.
|
|
205
205
|
*
|
|
206
206
|
* Use cases:
|
|
207
|
-
* - Shared device: `await store.override('default',
|
|
207
|
+
* - Shared device: `await store.override('default', toMemory(), { hydrate: true })`
|
|
208
208
|
* - Restricted network: `store.override('blobs', localFile(...))`
|
|
209
209
|
*/
|
|
210
210
|
override(route: OverrideTarget, store: NoydbStore, opts?: OverrideOptions): void | Promise<void>;
|
|
@@ -36,15 +36,15 @@
|
|
|
36
36
|
* Operators, viewers, and clients cannot call this API. The check is made
|
|
37
37
|
* against the caller's keyring role at call time.
|
|
38
38
|
*/
|
|
39
|
-
import type { NoydbStore } from '
|
|
40
|
-
import type { UnlockedKeyring } from '
|
|
39
|
+
import type { NoydbStore } from '../kernel/types.js';
|
|
40
|
+
import type { UnlockedKeyring } from '../with-party/team/keyring.js';
|
|
41
41
|
/**
|
|
42
42
|
* The reserved collection name. Never collides with user collections.
|
|
43
43
|
* Canonical definition lives in `reserved-secret-collections.ts` (shared with
|
|
44
44
|
* the `vault.collection()` guard and grant DEK-propagation); re-exported here
|
|
45
45
|
* for existing consumers.
|
|
46
46
|
*/
|
|
47
|
-
export { SYNC_CREDENTIALS_COLLECTION } from '
|
|
47
|
+
export { SYNC_CREDENTIALS_COLLECTION } from '../with-party/team/reserved-secret-collections.js';
|
|
48
48
|
/**
|
|
49
49
|
* An OAuth/auth token stored in `_sync_credentials`.
|
|
50
50
|
*
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { NoydbStore, DirtyEntry, ConflictStrategy, CollectionConflictResolver, PushOptions, PullOptions, PushResult, PullResult, SyncStatus, SyncTargetRole } from '
|
|
2
|
-
import type
|
|
3
|
-
import type {
|
|
4
|
-
import {
|
|
1
|
+
import type { NoydbStore, DirtyEntry, ConflictStrategy, CollectionConflictResolver, PushOptions, PullOptions, PushResult, PullResult, SyncStatus, SyncTargetRole } from '../kernel/types.js';
|
|
2
|
+
import { type PeriodPullSource } from './period-scope.js';
|
|
3
|
+
import type { NoydbEventEmitter } from '../kernel/events.js';
|
|
4
|
+
import type { SyncPolicy } from '../kernel/sync-policy.js';
|
|
5
|
+
import { SyncScheduler } from '../kernel/sync-policy.js';
|
|
5
6
|
/** #650 Task 4 (#647) — the declared reserved-lookup (`_dict_*`/`_lookup_*`) collection-name
|
|
6
7
|
* registry a `SyncEngine` enumerates on pull. Explicit, not a blanket underscore-glob — other
|
|
7
8
|
* `_`-prefixed namespaces keep their `loadAll`-skip semantics untouched. */
|
|
@@ -66,6 +67,18 @@ export declare class SyncEngine {
|
|
|
66
67
|
private reservedDictExpander?;
|
|
67
68
|
/** Wire the reserved-dict expansion function (#653). Same injection pattern as `setPairExpander`. */
|
|
68
69
|
setReservedDictExpander(expander: (names: readonly string[]) => readonly string[]): void;
|
|
70
|
+
/** #807: vault-injected source of decrypted period records — resolves the `_ts` windows a
|
|
71
|
+
* `pull({ periods })` scopes to. Re-read AFTER the summaries phase, so a fresh device's
|
|
72
|
+
* freshly pulled `_periods` index is what the windows are computed from. `undefined` on a
|
|
73
|
+
* standalone engine that was never vault-attached (period-scoped pull then throws). */
|
|
74
|
+
private periodPullSource?;
|
|
75
|
+
/** Wire the period-window source (#807). Same injection pattern as `setReservedLookupSource`. */
|
|
76
|
+
setPeriodPullSource(source: PeriodPullSource): void;
|
|
77
|
+
/** #807: KPI accumulator `applyRemote` feeds during a period-scoped `pull()` — pointed at the
|
|
78
|
+
* active phase's counters (summaries → records) and cleared before pull returns. Approximate
|
|
79
|
+
* by design: a push interleaved mid-pull on the same engine would attribute its converge
|
|
80
|
+
* applies to the open phase; the counters are a download-budget KPI, not an audit source. */
|
|
81
|
+
private pullByteSink;
|
|
69
82
|
constructor(opts: {
|
|
70
83
|
local: NoydbStore;
|
|
71
84
|
remote: NoydbStore;
|
|
@@ -27,5 +27,7 @@
|
|
|
27
27
|
* via `@noy-db/hub/team` for advanced consumers that construct them
|
|
28
28
|
* directly. This subpath is the clean LTS factory entry point.
|
|
29
29
|
*/
|
|
30
|
-
export { withSync } from '
|
|
31
|
-
export type { SyncStrategy } from '
|
|
30
|
+
export { withSync } from './active.js';
|
|
31
|
+
export type { SyncStrategy } from './strategy.js';
|
|
32
|
+
/** The un-opted-in stub for this service — exported so callers can compare against it (#844). */
|
|
33
|
+
export { NO_SYNC } from './strategy.js';
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #807 — period-scoped pull support for the `SyncEngine` (thin-client
|
|
3
|
+
* bootstrap: first sync pulls the current period + the period summaries;
|
|
4
|
+
* historical periods backfill on demand via `pull({ periods: ['<name>'] })`).
|
|
5
|
+
*
|
|
6
|
+
* ## Membership law
|
|
7
|
+
*
|
|
8
|
+
* The engine only ever sees ciphertext envelopes, so period membership at
|
|
9
|
+
* the sync tier is by write-time `_ts` against the closed periods' windows
|
|
10
|
+
* (`periodExclusiveUpperBound`) — the SAME store-tier law freeze (#604) and
|
|
11
|
+
* archive (#613) use, NOT the business-date (`dateField`) seal the write
|
|
12
|
+
* guard applies inside the trust boundary. A late-booked record (in-period
|
|
13
|
+
* business date, current write-time) therefore syncs with the current
|
|
14
|
+
* period — mirroring how it archives at the NEXT period's archive.
|
|
15
|
+
*
|
|
16
|
+
* Closed periods partition the timeline by their exclusive upper bounds:
|
|
17
|
+
* the earliest closed period's window is unbounded below (a close seals
|
|
18
|
+
* everything at-or-before its `endDate`), each later one starts at its
|
|
19
|
+
* predecessor's bound, and the CURRENT window is everything at-or-after
|
|
20
|
+
* the latest closed bound (everything, when no period was ever closed).
|
|
21
|
+
*
|
|
22
|
+
* ## What a period filter can never drop
|
|
23
|
+
*
|
|
24
|
+
* - **Period summaries** (`_periods` + freeze/archive/target-purge
|
|
25
|
+
* companions) — the navigation index; always pulled in full, exempt from
|
|
26
|
+
* every filter (`collections`, `periods`, `modifiedSince`).
|
|
27
|
+
* - **Delete markers and tombstones** — an erasure or delete must never be
|
|
28
|
+
* skipped by partial sync (the #589/#590 law, mirroring the
|
|
29
|
+
* `modifiedSince` exemption). This is what makes a device that never
|
|
30
|
+
* pulled period P converge instead of resurrecting P's deleted records
|
|
31
|
+
* when it later backfills.
|
|
32
|
+
* - **Reserved lookups** (`_dict_*`/`_lookup_*`) — vocabulary/config rows
|
|
33
|
+
* are not period-partitioned data; their explicit pull loop is exempt.
|
|
34
|
+
*
|
|
35
|
+
* Push is NEVER period-filtered — `PushOptions` has no `periods` member at
|
|
36
|
+
* all; a thin client's writes always flow up in full.
|
|
37
|
+
*/
|
|
38
|
+
import type { EncryptedEnvelope } from '../kernel/types.js';
|
|
39
|
+
import { PERIODS_COLLECTION } from '../with-audit/periods/window.js';
|
|
40
|
+
export { PERIODS_COLLECTION };
|
|
41
|
+
/**
|
|
42
|
+
* The reserved period-metadata collections a period-scoped pull always
|
|
43
|
+
* fetches first (phase 1, "summaries"): the hash-chained `_periods` index
|
|
44
|
+
* plus its freeze/archive/target-purge companions.
|
|
45
|
+
*/
|
|
46
|
+
export declare const PERIOD_SUMMARY_COLLECTIONS: readonly string[];
|
|
47
|
+
/** The subset of a decrypted `PeriodRecord` the window computation needs. */
|
|
48
|
+
export interface PeriodSyncRecord {
|
|
49
|
+
readonly name: string;
|
|
50
|
+
readonly kind: 'closed' | 'opened';
|
|
51
|
+
readonly endDate: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Vault-injected source of decrypted period records, wired via
|
|
55
|
+
* `SyncEngine.setPeriodPullSource` (same injection pattern as
|
|
56
|
+
* `setReservedLookupSource`). MUST re-read from the local store on every
|
|
57
|
+
* call — the engine invokes it right after the summaries phase applied
|
|
58
|
+
* freshly pulled `_periods` envelopes.
|
|
59
|
+
*/
|
|
60
|
+
export interface PeriodPullSource {
|
|
61
|
+
periods(): Promise<readonly PeriodSyncRecord[]>;
|
|
62
|
+
}
|
|
63
|
+
/** Validate the raw `PullOptions.periods` value (runtime shape only). */
|
|
64
|
+
export declare function validatePeriodsOption(periods: unknown): asserts periods is readonly string[] | {
|
|
65
|
+
readonly current: true;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Resolve the selected `_ts` windows and return the pull-scope predicate:
|
|
69
|
+
* `true` = the envelope is in scope for this pull. Tombstones and delete
|
|
70
|
+
* markers are unconditionally in scope (see module doc).
|
|
71
|
+
*
|
|
72
|
+
* Throws `ValidationError` for a name that is not a closed period in the
|
|
73
|
+
* (freshly synced) `_periods` index — a typo'd backfill must fail loudly,
|
|
74
|
+
* never silently pull nothing.
|
|
75
|
+
*/
|
|
76
|
+
export declare function buildPeriodScope(option: readonly string[] | {
|
|
77
|
+
readonly current: true;
|
|
78
|
+
}, records: readonly PeriodSyncRecord[]): (envelope: EncryptedEnvelope) => boolean;
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* reserved `_presence_<collection>` collection on the sync adapter
|
|
15
15
|
* (if available) or local adapter, and polled periodically.
|
|
16
16
|
*/
|
|
17
|
-
import type { NoydbStore, PresencePeer } from '
|
|
18
|
-
import { type EnclaveKey } from '
|
|
17
|
+
import type { NoydbStore, PresencePeer } from '../kernel/types.js';
|
|
18
|
+
import { type EnclaveKey } from '../kernel/enclave/index.js';
|
|
19
19
|
/** Options for constructing a PresenceHandle. @internal */
|
|
20
20
|
export interface PresenceHandleOpts {
|
|
21
21
|
/** Local adapter for storage-poll fallback. */
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
*
|
|
25
25
|
* @internal
|
|
26
26
|
*/
|
|
27
|
-
import type { NoydbStore, ConflictStrategy, SyncTargetRole } from '
|
|
28
|
-
import type { NoydbEventEmitter } from '
|
|
29
|
-
import type { SyncPolicy } from '
|
|
30
|
-
import type { SyncEngine } from './
|
|
31
|
-
import type { SyncTransaction } from './
|
|
27
|
+
import type { NoydbStore, ConflictStrategy, SyncTargetRole } from '../kernel/types.js';
|
|
28
|
+
import type { NoydbEventEmitter } from '../kernel/events.js';
|
|
29
|
+
import type { SyncPolicy } from '../kernel/sync-policy.js';
|
|
30
|
+
import type { SyncEngine } from './engine.js';
|
|
31
|
+
import type { SyncTransaction } from './transaction.js';
|
|
32
32
|
import type { PresenceHandle, PresenceHandleOpts } from './presence.js';
|
|
33
|
-
import type { Vault } from '
|
|
33
|
+
import type { Vault } from '../kernel/vault.js';
|
|
34
34
|
/**
|
|
35
35
|
* Options accepted by `SyncStrategy.buildSyncEngine`. Mirrors the
|
|
36
36
|
* `SyncEngine` constructor verbatim — kept here so core code never
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { SyncTransactionResult } from '
|
|
2
|
-
import type { SyncEngine } from './
|
|
3
|
-
import type { Vault } from '
|
|
1
|
+
import type { SyncTransactionResult } from '../kernel/types.js';
|
|
2
|
+
import type { SyncEngine } from './engine.js';
|
|
3
|
+
import type { Vault } from '../kernel/vault.js';
|
|
4
4
|
/**
|
|
5
5
|
* Sync transaction.
|
|
6
6
|
*
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FROZEN_SNAPSHOTS_COLLECTION,
|
|
3
|
+
freezeAndDeleteClosure,
|
|
4
|
+
freezeSnapshotOnly,
|
|
5
|
+
randomId,
|
|
6
|
+
withdrawAccessibleData
|
|
7
|
+
} from "./chunk-I5GEJX3R.js";
|
|
8
|
+
import "./chunk-X45JYIAY.js";
|
|
9
|
+
import "./chunk-LNPUSMZL.js";
|
|
10
|
+
import "./chunk-TUXQSFHZ.js";
|
|
11
|
+
import "./chunk-G2JUIDFA.js";
|
|
12
|
+
import "./chunk-W3L64Y3J.js";
|
|
13
|
+
import "./chunk-35NMVJ7I.js";
|
|
14
|
+
import "./chunk-NFZGZ4AK.js";
|
|
15
|
+
import "./chunk-QJNCB5SK.js";
|
|
16
|
+
import "./chunk-LP7BEXCT.js";
|
|
17
|
+
import "./chunk-AKKRXT23.js";
|
|
18
|
+
import "./chunk-QBAC3GXA.js";
|
|
19
|
+
import "./chunk-QZWTRENR.js";
|
|
20
|
+
import "./chunk-PZ5AY32C.js";
|
|
21
|
+
export {
|
|
22
|
+
FROZEN_SNAPSHOTS_COLLECTION,
|
|
23
|
+
freezeAndDeleteClosure,
|
|
24
|
+
freezeSnapshotOnly,
|
|
25
|
+
randomId,
|
|
26
|
+
withdrawAccessibleData
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=withdraw-accessible-A2PWF5MZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|