@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
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Civil-date recognition for `dateTrunc()` (#1410).
|
|
3
|
+
*
|
|
4
|
+
* ## Why this module exists
|
|
5
|
+
*
|
|
6
|
+
* `dateTrunc()` buckets a value by resolving it to an instant and reading the
|
|
7
|
+
* civil calendar date that instant falls on in the declared `timeZone`. That is
|
|
8
|
+
* exactly right for a *timestamp*. It is a **category error** for a value that
|
|
9
|
+
* names no instant.
|
|
10
|
+
*
|
|
11
|
+
* `'2026-01-01'` — the shape `z.string().date()` produces — is a calendar date.
|
|
12
|
+
* ECMA-262 nonetheless resolves the ISO date-only form to **UTC midnight**, and
|
|
13
|
+
* converting that instant into any zone west of UTC moves it back a day. So
|
|
14
|
+
* `dateTrunc(..., 'month', { timeZone: 'America/New_York' })` silently bucketed
|
|
15
|
+
* `'2026-01-01'` into `2025-12` — a wrong year, no error, no warning. Correct at
|
|
16
|
+
* `+07` and UTC purely by accident of sign, which is what made it latent.
|
|
17
|
+
*
|
|
18
|
+
* ## The rule
|
|
19
|
+
*
|
|
20
|
+
* **A string carrying no timezone designator denotes CIVIL time and is used as
|
|
21
|
+
* written. Everything else is an instant and is converted through the zone.**
|
|
22
|
+
*
|
|
23
|
+
* That covers three shapes, all of which are zoneless:
|
|
24
|
+
*
|
|
25
|
+
* | input | denotes | why |
|
|
26
|
+
* |---|---|---|
|
|
27
|
+
* | `'2026-01-01'`, `'2026-01'`, `'2026'` | civil | ISO calendar forms; no time, no zone |
|
|
28
|
+
* | `'2026-01-01T08:30'`, `'2026-01-01 08:30:00.5'` | civil | offsetless date-time |
|
|
29
|
+
* | `'2026-01-01T00:00:00Z'`, `'…+07:00'`, `Date`, epoch ms | instant | carries, or *is*, a fixed point in time |
|
|
30
|
+
*
|
|
31
|
+
* The offsetless date-time is the subtle one and it is included **deliberately**.
|
|
32
|
+
* ECMA-262 parses it as *host-local*, which is the same defect one layer down:
|
|
33
|
+
* the bucket would depend on the machine the query ran on, and this module's
|
|
34
|
+
* whole premise (see `date-trunc.ts`) is that a host-local guess is never
|
|
35
|
+
* acceptable. Reading it as civil makes the result host-independent. The
|
|
36
|
+
* time-of-day is then simply discarded — every `dateTrunc` unit is a day or
|
|
37
|
+
* coarser, so no unit can observe it.
|
|
38
|
+
*
|
|
39
|
+
* ⚠️ **Loose, non-ISO strings are NOT recognised here** — `'01/01/2026'`,
|
|
40
|
+
* RFC-2822, and anything else `Date.parse` accepts by implementation extension
|
|
41
|
+
* stay on the instant path. Their parsing is implementation-defined, so there
|
|
42
|
+
* is no shape this module could claim to recognise correctly; a consumer who
|
|
43
|
+
* wants civil treatment should pass an ISO calendar date.
|
|
44
|
+
*
|
|
45
|
+
* ⚠️ **An out-of-range field is REFUSED, not rolled over.** V8's `Date.parse`
|
|
46
|
+
* accepts `'2026-02-30'` and yields 2 March; bucketing a typo under a
|
|
47
|
+
* wrong-but-plausible key is the failure mode this whole module exists to
|
|
48
|
+
* prevent, so a recognised-shape-but-impossible date throws instead.
|
|
49
|
+
*/
|
|
50
|
+
/** A calendar date with no instant and no zone. `m` is 1-12. */
|
|
51
|
+
export interface CivilDate {
|
|
52
|
+
readonly y: number;
|
|
53
|
+
readonly m: number;
|
|
54
|
+
readonly d: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* What a value denotes:
|
|
58
|
+
* - a {@link CivilDate} — a zoneless calendar shape, use it as written;
|
|
59
|
+
* - `'invalid'` — a recognised calendar shape naming no real day (see the
|
|
60
|
+
* out-of-range note above); the caller refuses it with its own context;
|
|
61
|
+
* - `undefined` — an instant, or an unrecognised shape: convert through the
|
|
62
|
+
* declared zone exactly as before.
|
|
63
|
+
*/
|
|
64
|
+
export declare function civilDateOf(value: unknown): CivilDate | 'invalid' | undefined;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyset cursors for `Query.page()` / `Query.after()` (#1346).
|
|
3
|
+
*
|
|
4
|
+
* A cursor names a POSITION — the `(sortKey, id)` of the last row a page
|
|
5
|
+
* served — not an offset. That is the whole point: a record inserted or
|
|
6
|
+
* deleted before the position cannot shift the next window, where
|
|
7
|
+
* `offset(n)` would re-serve or skip a row.
|
|
8
|
+
*
|
|
9
|
+
* The encoding is deliberately OPAQUE: consumers must treat the string as a
|
|
10
|
+
* token and pass it back verbatim, so the shape stays free to change. It is
|
|
11
|
+
* an encoding, NOT a signature — a cursor carries no secret and travels only
|
|
12
|
+
* as far as the caller sends it. The `shape` token is an integrity check
|
|
13
|
+
* against consumer mistakes (a cursor replayed against another sort order or
|
|
14
|
+
* another collection), not against an adversary.
|
|
15
|
+
*
|
|
16
|
+
* Portability: hub/src must run in a browser/Worker/Deno/Bun, so the base64
|
|
17
|
+
* step uses `btoa`/`atob` over a `TextEncoder` byte string — never `Buffer`.
|
|
18
|
+
*/
|
|
19
|
+
import type { OrderBy } from './builder.js';
|
|
20
|
+
/** The decoded keyset a cursor names. */
|
|
21
|
+
export interface KeysetCursor {
|
|
22
|
+
/** The sort spec + source identity this cursor was minted for. */
|
|
23
|
+
readonly shape: string;
|
|
24
|
+
/** The row's sort-key values, one per `orderBy` entry. */
|
|
25
|
+
readonly values: readonly unknown[];
|
|
26
|
+
/** The row's record id — the tiebreak that makes the keyset a total order. */
|
|
27
|
+
readonly id: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The token a cursor is bound to. Two queries may resume each other's cursors
|
|
31
|
+
* only when this matches: same source, same ordered sort spec.
|
|
32
|
+
*/
|
|
33
|
+
export declare function keysetShape(identity: string | undefined, orderBy: readonly OrderBy[]): string;
|
|
34
|
+
export declare function encodeCursor(cursor: KeysetCursor): string;
|
|
35
|
+
/**
|
|
36
|
+
* Decode a cursor and REFUSE it unless it was minted for `expectedShape`.
|
|
37
|
+
* Silently returning a nonsense window for a mismatched cursor is the
|
|
38
|
+
* failure mode this exists to prevent.
|
|
39
|
+
*/
|
|
40
|
+
export declare function decodeCursor(raw: string, expectedShape: string): KeysetCursor;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ⚠️ #1458 — this file is SHARED, not Reduce's.
|
|
3
|
+
*
|
|
4
|
+
* It moved into `query/reduce/` with `distinct()` and moved straight back: the
|
|
5
|
+
* eager index layer (`with-lookup/indexing/eager-indexes.ts`) canonicalises its
|
|
6
|
+
* bucket keys through `stringifyBucketKey` / `isProbeableBucketKey`, so
|
|
7
|
+
* `@noy-db/hub/query` reaches it at runtime through the index fast path and the
|
|
8
|
+
* query-tiers closure check said so. Two callers with different lifetimes —
|
|
9
|
+
* `distinctKeyOf` for Reduce, the bucket-key pair for Find's indexes — and the
|
|
10
|
+
* canonicalisation must be ONE definition or a probe and a bucket disagree.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* The ONE definition of "are these two field values the same value?" (#1347).
|
|
14
|
+
*
|
|
15
|
+
* `distinct()`, `countDistinct()` and the eager hash index all have to answer
|
|
16
|
+
* that question, and they have to answer it IDENTICALLY — an index-backed
|
|
17
|
+
* `distinct()` reads bucket keys, a scanned one recomputes them, and the two
|
|
18
|
+
* are only allowed to be different code paths because they are not different
|
|
19
|
+
* definitions. So `stringifyBucketKey` lives here and `eager-indexes.ts`
|
|
20
|
+
* imports it rather than keeping a private twin; a change to one is a change
|
|
21
|
+
* to both by construction.
|
|
22
|
+
*
|
|
23
|
+
* ⚠️ THE KEY IS COMPUTED FROM THE **STORED** VALUE, never the decoded one.
|
|
24
|
+
* That is what makes a Via-covered field behave: money stores a scaled
|
|
25
|
+
* integer, and a legacy row written before the field was declared can hold a
|
|
26
|
+
* non-canonical spelling of it (`'0100'` where a canonical write produces
|
|
27
|
+
* `'100'`). Both denote 1.00, and `ViaPipeline.canonicalizeIndexKey` folds
|
|
28
|
+
* them onto one key. Dedup on the raw string reports two values; dedup on the
|
|
29
|
+
* FORMATTED string is worse still, because it makes distinctness depend on a
|
|
30
|
+
* locale the query layer does not have.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Stringify a value into a stable bucket key.
|
|
34
|
+
*
|
|
35
|
+
* `null`/`undefined` produce a sentinel that records will never match (so we
|
|
36
|
+
* never index nullish values — `where('x', '==', null)` falls back to a
|
|
37
|
+
* linear scan). Numbers, booleans, strings, and Date objects are coerced via
|
|
38
|
+
* `String()`. Objects produce a sentinel that no real record will match —
|
|
39
|
+
* querying with object values is a code smell.
|
|
40
|
+
*/
|
|
41
|
+
export declare function stringifyBucketKey(value: unknown): string;
|
|
42
|
+
/**
|
|
43
|
+
* Is this OPERAND one a hash bucket can answer for? (#1402)
|
|
44
|
+
*
|
|
45
|
+
* ⛔ Two of {@link stringifyBucketKey}'s outputs are not addresses, and a
|
|
46
|
+
* probe that treats them as one returns wrong rows SILENTLY — the #1402
|
|
47
|
+
* failure mode, and measured on `main` for ordinary non-Via fields:
|
|
48
|
+
*
|
|
49
|
+
* - `'\0OBJECT\0'` is a COLLISION BUCKET, not a sentinel. Every non-Date
|
|
50
|
+
* object-valued record in the collection sits in it, so
|
|
51
|
+
* `where('obj', '==', { k: 1 })` matched `[a, b]` from the index against
|
|
52
|
+
* `[]` from the scan (the scan compares by reference and matches
|
|
53
|
+
* neither). The doc above says *"objects produce a sentinel that no real
|
|
54
|
+
* record will match"*; that was true of the OPERAND and false of the
|
|
55
|
+
* stored values, which is exactly the half that decides the answer.
|
|
56
|
+
* - `'\0NULL\0'` is an empty bucket, because nullish values are never
|
|
57
|
+
* inserted. Probing it returns `EMPTY_SET`, which reads as "no matches"
|
|
58
|
+
* rather than "I cannot answer" — so `where('tag', '==', undefined)`
|
|
59
|
+
* returned `[]` from the index against the records that genuinely have
|
|
60
|
+
* no `tag` from the scan. The doc above already claims this case *"falls
|
|
61
|
+
* back to a linear scan"*; it did not.
|
|
62
|
+
*
|
|
63
|
+
* Both are fixed at the PROBE, never at the bucketing: a caller that gets
|
|
64
|
+
* `false` here must return `null` (= "no index answer, scan it"), not an
|
|
65
|
+
* empty set. Bucketing is untouched, so no stored data or persisted sidecar
|
|
66
|
+
* moves.
|
|
67
|
+
*
|
|
68
|
+
* ⚠️ EAGER MODE ONLY, deliberately. `PersistedCollectionIndex` (lazy) has
|
|
69
|
+
* no scan to fall back TO — refusing there converts wrong rows into an
|
|
70
|
+
* `IndexRequiredError`, which is a behaviour decision of its own and is
|
|
71
|
+
* left open rather than smuggled in here.
|
|
72
|
+
*/
|
|
73
|
+
export declare function isProbeableBucketKey(value: unknown): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* The narrow slice of `ViaPipeline` a distinct key needs. Declared
|
|
76
|
+
* structurally so this module — kernel spine — does not have to reach into a
|
|
77
|
+
* `with-*` service, and so a caller holding only a money binder can satisfy it.
|
|
78
|
+
*/
|
|
79
|
+
export interface BucketKeyCanonicalizer {
|
|
80
|
+
canonicalizeIndexKey(field: string, rawValue: unknown): string | undefined;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The distinct key for one stored field value, or `undefined` when the value
|
|
84
|
+
* is NULLISH and therefore not a distinct value at all.
|
|
85
|
+
*
|
|
86
|
+
* ⭐ NULLISH IS EXCLUDED, DELIBERATELY. Three reasons, and the first is the
|
|
87
|
+
* one that decides it: the hash index does not hold nullish values, so an
|
|
88
|
+
* index-backed `distinct()` *cannot* report them, and a scan that did would
|
|
89
|
+
* make the two paths disagree — a correctness bug that only appears on the
|
|
90
|
+
* collections large enough to have an index. Second, it matches
|
|
91
|
+
* `COUNT(DISTINCT x)` and Dexie's `uniqueKeys()`, so nobody is surprised.
|
|
92
|
+
* Third, a caller who wants the nullish bucket can ask for it directly with
|
|
93
|
+
* `.where(field, '==', null)`, which is cheap and says what it means.
|
|
94
|
+
* (`groupBy()` goes the OTHER way and buckets nullish — that is not an
|
|
95
|
+
* inconsistency: a group key is a partition of the rows, a distinct value is
|
|
96
|
+
* a member of the field's value set.)
|
|
97
|
+
*/
|
|
98
|
+
export declare function distinctKeyOf(field: string, storedValue: unknown, via?: BucketKeyCanonicalizer): string | undefined;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1414 — the cold-collection gate.
|
|
3
|
+
*
|
|
4
|
+
* An eager collection that has never been read asynchronously holds an EMPTY
|
|
5
|
+
* cache. Before this module every synchronous query terminal answered out of
|
|
6
|
+
* that cache, so a cold collection reported `[]` / `0` / `false` with total
|
|
7
|
+
* confidence, forever, until some `list()`/`get()` hydrated it. Guards inherit
|
|
8
|
+
* the same source through `ReadOnlyVaultFacade`, and both failure directions
|
|
9
|
+
* were measured on shipped stable: a valid write refused because the guard's
|
|
10
|
+
* lookup came back empty, and — worse — a write that a warm instance REFUSES
|
|
11
|
+
* committing on a cold one, because the guard's `await …toArray()` saw nothing.
|
|
12
|
+
*
|
|
13
|
+
* **Empty and unable-to-answer are different facts.** Same posture as #1402
|
|
14
|
+
* ("an index that cannot answer must say so, not return nothing") and #1410.
|
|
15
|
+
*
|
|
16
|
+
* The fix has to serve two callers at once, and that is what shapes this
|
|
17
|
+
* module:
|
|
18
|
+
*
|
|
19
|
+
* - the AWAITED caller (`await q.toArray()`, and therefore every guard, since
|
|
20
|
+
* `GuardSpec.check` is async) must transparently hydrate and get the rows.
|
|
21
|
+
* This is the half that closes the bypass.
|
|
22
|
+
* - the SYNCHRONOUS caller must be told, loudly, that the answer it is about
|
|
23
|
+
* to trust is not an answer.
|
|
24
|
+
*
|
|
25
|
+
* A terminal cannot both throw and be awaitable, so a cold terminal returns a
|
|
26
|
+
* **pending result**: a thenable that hydrates and re-runs the terminal when
|
|
27
|
+
* awaited, and throws {@link CollectionNotHydratedError} on every use that
|
|
28
|
+
* READS it — indexing, `.length`, iteration, spread, `.map()`, `JSON.stringify`,
|
|
29
|
+
* `String()`, `in`, `Object.keys`, arithmetic, any property read.
|
|
30
|
+
*
|
|
31
|
+
* ⛔ **THE EXACT BOUNDARY, enumerated — because "any other use" is what this
|
|
32
|
+
* doc used to say, and it was not true (#1462).** Two operations answer
|
|
33
|
+
* without reaching a proxy trap, and NEITHER CAN BE MADE TO THROW:
|
|
34
|
+
*
|
|
35
|
+
* | use | result | why it cannot throw |
|
|
36
|
+
* |---|---|---|
|
|
37
|
+
* | `typeof rows` | `'object'` | answered from the value's type, no trap |
|
|
38
|
+
* | `if (rows)` / `Boolean(rows)` — truthiness | `true` | `ToBoolean` never calls a trap |
|
|
39
|
+
*
|
|
40
|
+
* Do not try to close either with a `valueOf` returning `false` — that would
|
|
41
|
+
* resurrect the confident-wrong-answer this whole module exists to abolish, in
|
|
42
|
+
* the one shape nobody would ever check.
|
|
43
|
+
*
|
|
44
|
+
* ⭐ **`Array.isArray` used to be a third row, and it was the dangerous one.**
|
|
45
|
+
* `toArray()` is declared `T[]`, so `Array.isArray(rows) ? rows : []` is the
|
|
46
|
+
* ORDINARY defensive shape for the declared type — and it returned `[]` on a
|
|
47
|
+
* cold collection, restoring the silent empty read this module abolishes,
|
|
48
|
+
* behind code that looks like it handles the edge case. It is closed: the
|
|
49
|
+
* proxy's target is `[]`, and `IsArray` unwraps a proxy to its target, so the
|
|
50
|
+
* check answers `true` and the guard falls through to the throwing path. That
|
|
51
|
+
* cost one character of target and no change to the design — the report that
|
|
52
|
+
* found it assumed it needed a real array exotic object.
|
|
53
|
+
*
|
|
54
|
+
* ⚠️ **So the rule for anyone extending this: a use that reaches a trap must
|
|
55
|
+
* throw, and a use that cannot reach one must be IN THE TABLE ABOVE.** The
|
|
56
|
+
* table is pinned by `__tests__/1462-pending-result-surface.test.ts`, which
|
|
57
|
+
* also asserts this comment no longer claims a total guarantee — a probe
|
|
58
|
+
* written against "any other use" passes vacuously, because the phrase names
|
|
59
|
+
* no specific use for anything to contradict.
|
|
60
|
+
*/
|
|
61
|
+
export interface HydrationGate {
|
|
62
|
+
/** `<vault>/<collection>` — names the collection in the error. */
|
|
63
|
+
readonly label: string;
|
|
64
|
+
/** Collection name alone, for the error's structured field. */
|
|
65
|
+
readonly collection: string;
|
|
66
|
+
/** False only while the eager cache has never been bulk-loaded. */
|
|
67
|
+
isHydrated(): boolean;
|
|
68
|
+
/** Bulk-load the collection. Idempotent. */
|
|
69
|
+
hydrate(): Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Terminal wrapper. Returns `compute()` unchanged whenever the source is
|
|
73
|
+
* hydrated (or carries no gate at all — a plain-object source, a join source,
|
|
74
|
+
* a lazy collection), so the hot path is one property read and a boolean.
|
|
75
|
+
*/
|
|
76
|
+
export declare function gateTerminal<V>(gate: HydrationGate | undefined, terminal: string, compute: () => V): V;
|
|
@@ -1,25 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* `@noy-db/hub/query` — **Find**, the always-on group of the query DSL (#1458).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* - `QueryPlan<T>` — serializable plan object
|
|
4
|
+
* ```ts
|
|
5
|
+
* import { Query } from '@noy-db/hub/query'
|
|
6
|
+
* invoices.query().where('status', '==', 'paid').orderBy('date', 'desc').limit(20).toArray()
|
|
7
|
+
* ```
|
|
9
8
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* Predicate → sort → slice → hydrate, over one source: `where` (ten
|
|
10
|
+
* operators), `or`, `and`, `filter`, `wherePredicate`, `orderBy`, `limit`,
|
|
11
|
+
* `offset`, `page`, `after`, `first`, `toArray`, `count`, `exists`, `ids`,
|
|
12
|
+
* `toPlan`. Nothing here reaches a second collection, folds a result set, or
|
|
13
|
+
* re-runs on change.
|
|
14
|
+
*
|
|
15
|
+
* ⭐ **The other three groups are subpaths, and each is one import:**
|
|
16
|
+
*
|
|
17
|
+
* | group | import | brings |
|
|
18
|
+
* |---|---|---|
|
|
19
|
+
* | Live | `@noy-db/hub/query/live` | `subscribe`, `live` |
|
|
20
|
+
* | Reduce | `@noy-db/hub/query/reduce` | `aggregate`, `groupBy`, `window`, `distinct`, `dateTrunc` |
|
|
21
|
+
* | Relate | `@noy-db/hub/query/relate` | the joins, `traverse`, `explain` |
|
|
22
|
+
*
|
|
23
|
+
* The import is a SIDE EFFECT — it patches the methods onto `Query.prototype`
|
|
24
|
+
* and merges their types into `Query`, so one line at your app's entry serves
|
|
25
|
+
* the whole program. Calling a method whose group is not imported does not
|
|
26
|
+
* compile; if it reaches runtime through a cast, it throws
|
|
27
|
+
* {@link QueryExtensionMissingError} naming the subpath.
|
|
28
|
+
*
|
|
29
|
+
* ⚠️ **`@noy-db/hub` (the root barrel) imports all three**, so a consumer on
|
|
30
|
+
* the root barrel needs none of this and sees no change. The saving is for
|
|
31
|
+
* consumers who import this subpath directly.
|
|
12
32
|
*/
|
|
13
|
-
export { Query, executePlan
|
|
33
|
+
export { Query, executePlan } from './builder.js';
|
|
14
34
|
export type { QueryPlan, QuerySource, OrderBy } from './builder.js';
|
|
15
35
|
export type { Operator, Clause, FieldClause, FilterClause, GroupClause, CrossJoinClause } from './predicate.js';
|
|
16
36
|
export { evaluateClause, evaluateFieldClause, readPath } from './predicate.js';
|
|
17
37
|
export { CollectionIndexes } from '../../with-lookup/indexing/eager-indexes.js';
|
|
18
38
|
export type { IndexDef, HashIndex } from '../../with-lookup/indexing/eager-indexes.js';
|
|
19
|
-
export { applyJoins, DEFAULT_JOIN_MAX_ROWS, resetJoinWarnings } from './join.js';
|
|
20
|
-
export type { JoinLeg, JoinContext, JoinableSource, JoinStrategy } from './join.js';
|
|
21
|
-
export { buildLiveQuery } from './live.js';
|
|
22
|
-
export type { LiveQuery, LiveUpstream } from './live.js';
|
|
23
39
|
export { ScanBuilder } from './scan-builder.js';
|
|
24
|
-
export type { ScanPageProvider } from './scan-builder.js';
|
|
25
|
-
export {
|
|
40
|
+
export type { ScanPageProvider, MultiReduceResult } from './scan-builder.js';
|
|
41
|
+
export { IndexRequiredError, IndexWriteFailureError, FieldNotQueryableError, UnsafePatternError, QueryExtensionMissingError, } from '../errors.js';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1458 — how an extension group's methods reach `Query.prototype`.
|
|
3
|
+
*
|
|
4
|
+
* Each group defines its half of the builder as a MIXIN CLASS whose method
|
|
5
|
+
* bodies moved out of `builder.ts` unchanged — `this.plan`, `this.source`,
|
|
6
|
+
* `this.joinContext` and the rest still resolve, because TypeScript's
|
|
7
|
+
* `private` is a compile-time construct and a method installed on the
|
|
8
|
+
* prototype reads them like any other property. The mixin declares those
|
|
9
|
+
* fields with `declare`, which emits nothing.
|
|
10
|
+
*
|
|
11
|
+
* ⭐ **Why a mixin CLASS rather than a file of `Query.prototype.x = function`
|
|
12
|
+
* assignments.** The bodies are the point: several are 100+ lines carrying
|
|
13
|
+
* prose that explains a decision, and a mechanical rewrite into assignment
|
|
14
|
+
* form would have touched every one of them. As class methods they moved
|
|
15
|
+
* byte-for-byte, so the diff shows a relocation rather than a rewrite — and an
|
|
16
|
+
* overload set (`join`, `joinOn`, `aggregate`, `groupBy` all have them)
|
|
17
|
+
* survives, which an assignment form cannot express.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Copy a mixin's prototype methods onto a target prototype, replacing the Find
|
|
21
|
+
* stubs.
|
|
22
|
+
*
|
|
23
|
+
* `getOwnPropertyNames` rather than `Object.assign`: class methods are
|
|
24
|
+
* non-enumerable prototype properties, so `assign` copies nothing at all —
|
|
25
|
+
* silently, leaving every stub in place. Descriptors are copied whole so a
|
|
26
|
+
* getter stays a getter.
|
|
27
|
+
*/
|
|
28
|
+
export declare function installMethods(target: object, mixin: {
|
|
29
|
+
prototype: object;
|
|
30
|
+
}): void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Clause, CrossJoinClause } from '../predicate.js';
|
|
2
|
+
import type { JoinableSource, JoinContext, JoinLeg } from '../relate/join.js';
|
|
3
|
+
import type { OrderBy } from '../builder.js';
|
|
4
|
+
/** The Relate entry points Find's executor calls. Every one is join-conditional. */
|
|
5
|
+
export interface RelateHooks {
|
|
6
|
+
applyJoins(rows: readonly unknown[], joins: readonly JoinLeg[], ctx: JoinContext, locale?: string): unknown[];
|
|
7
|
+
splitAroundJoins(clauses: readonly Clause[], joins: readonly JoinLeg[]): {
|
|
8
|
+
preJoin: readonly Clause[];
|
|
9
|
+
postJoin: readonly Clause[];
|
|
10
|
+
};
|
|
11
|
+
orderReferencesJoinAlias(orderBy: readonly OrderBy[], joins: readonly JoinLeg[]): boolean;
|
|
12
|
+
joinsDropLeftRows(joins: readonly JoinLeg[]): boolean;
|
|
13
|
+
applyCrossJoin(leftRel: unknown[], clause: CrossJoinClause, rightSource: JoinableSource): unknown[];
|
|
14
|
+
}
|
|
15
|
+
/** Called once by `@noy-db/hub/query/relate` on load. */
|
|
16
|
+
export declare function installRelateHooks(hooks: RelateHooks): void;
|
|
17
|
+
/**
|
|
18
|
+
* The Relate hooks, or the actionable error. Read only from a guarded branch —
|
|
19
|
+
* see this module's header for why that makes the throw unreachable for a
|
|
20
|
+
* consumer who never built a join.
|
|
21
|
+
*/
|
|
22
|
+
export declare function relateHooks(): RelateHooks;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { DeclaredPredicate, InternalSource, QueryPlan } from '../builder.js';
|
|
2
|
+
import type { JoinContext } from '../relate/join.js';
|
|
3
|
+
import type { ReduceStrategy } from '../../../with-lookup/reduce/strategy.js';
|
|
4
|
+
/** @internal — copied onto `Query.prototype` by both Live and Reduce. */
|
|
5
|
+
export declare class MaintenanceMethods {
|
|
6
|
+
protected readonly source: InternalSource;
|
|
7
|
+
protected readonly plan: QueryPlan;
|
|
8
|
+
protected readonly joinContext: JoinContext | undefined;
|
|
9
|
+
protected readonly reduceStrategy: ReduceStrategy;
|
|
10
|
+
protected readonly predicates: ReadonlyMap<string, DeclaredPredicate> | undefined;
|
|
11
|
+
protected decodeVia: (records: readonly unknown[], locale?: string) => unknown[];
|
|
12
|
+
/**
|
|
13
|
+
* Build the #1341 delta maintainer for this plan, or `undefined` when the
|
|
14
|
+
* plan shape or the source cannot support one (the query then re-runs in
|
|
15
|
+
* full, exactly as it did before #1341).
|
|
16
|
+
*
|
|
17
|
+
* Everything the maintainer needs is taken from THIS query so the two paths
|
|
18
|
+
* cannot diverge: `matches` is the same `filterRecords` call the eager
|
|
19
|
+
* pipeline makes, `compare` is the same comparator `sortRecords` sorts with,
|
|
20
|
+
* and `decode` is the same Via result decode `toArray()` applies after
|
|
21
|
+
* slicing.
|
|
22
|
+
*/
|
|
23
|
+
private incrementalMaintainer;
|
|
24
|
+
/**
|
|
25
|
+
* Build the #1341 grouped-maintenance seam for this plan, or `undefined`
|
|
26
|
+
* when the plan shape or the source cannot support one (a grouped live
|
|
27
|
+
* reduction then re-runs in full, exactly as it did before).
|
|
28
|
+
*
|
|
29
|
+
* Same whitelist and the same three inputs `incrementalMaintainer('records')`
|
|
30
|
+
* uses, for the same reason: `.groupBy()`'s record pipeline IS
|
|
31
|
+
* `.aggregate()`'s — `candidateRecords` + `filterRecords`, with no sort, no
|
|
32
|
+
* window and no Via result decode — so `orderBy`/`limit` are stripped before
|
|
33
|
+
* the whitelist is asked. `matches` is the same `filterRecords` call the
|
|
34
|
+
* eager pipeline makes, which is what stops the two paths from drifting.
|
|
35
|
+
*
|
|
36
|
+
* The one addition is `project`: `.groupBy(dateTrunc(...))` (#1350) stamps a
|
|
37
|
+
* derived key onto each row AFTER filtering and before bucketing, and the
|
|
38
|
+
* maintainer has to stamp it too or it would bucket on a field that is not
|
|
39
|
+
* there. It is a pure per-record map, which is the only kind of projection
|
|
40
|
+
* this hook may carry.
|
|
41
|
+
*/
|
|
42
|
+
private groupMaintenance;
|
|
43
|
+
}
|