@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,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Query.explain()` — a readable execution plan (#1348).
|
|
3
|
+
*
|
|
4
|
+
* `toPlan()` answers *what* the query is; this answers *how it would run*:
|
|
5
|
+
* the dispatch per clause (`index:hash` vs `scan`), row estimates taken from
|
|
6
|
+
* real index cardinalities, join strategy and side sizes against the row
|
|
7
|
+
* ceiling, whether ordering/pagination lands pre- or post-join, and which
|
|
8
|
+
* cardinality caps are close to tripping.
|
|
9
|
+
*
|
|
10
|
+
* ⛔ PURELY OBSERVATIONAL. Every read here is a size probe or an index
|
|
11
|
+
* bucket lookup — both pure. `explain()` must never execute the plan, and a
|
|
12
|
+
* terminal must return the same thing whether or not it was called. The
|
|
13
|
+
* guarantee is pinned by `__tests__/query-explain.test.ts`
|
|
14
|
+
* ("results are identical whether or not explain() was called").
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ DISPATCH SELECTION IS MIRRORED, NOT SHARED. `indexDispatchFor` below
|
|
17
|
+
* reproduces `candidateRecords()` in `builder.ts` — deliberately, so this
|
|
18
|
+
* file stays out of the executor's way. That mirror is not left to trust:
|
|
19
|
+
* the index path never calls `source.snapshot()` and the scan path always
|
|
20
|
+
* does, so a snapshot-call counter is an executor-side witness of dispatch,
|
|
21
|
+
* and the suite asserts the two agree. **A new index kind must land in BOTH
|
|
22
|
+
* places** — a branch here and the matching branch in `candidateRecords` —
|
|
23
|
+
* plus a label on {@link ExplainDispatch}.
|
|
24
|
+
*
|
|
25
|
+
* ⭐ #1375 — THE MIRROR IS NOW POLICED EXHAUSTIVELY, and that is the durable
|
|
26
|
+
* half of the fix. `__tests__/query-explain.test.ts` carries a TABLE of query
|
|
27
|
+
* shapes spanning every dispatch kind and asserts, for each, that the label
|
|
28
|
+
* `explain()` claims agrees with an executor-side observation. Add a shape to
|
|
29
|
+
* that table when you add an index kind, and a kind that forgets this file
|
|
30
|
+
* fails a test instead of silently reporting the previous era's answer — which
|
|
31
|
+
* is exactly what #1344 and #1345 did to the pre-#1344 `explain()`.
|
|
32
|
+
*
|
|
33
|
+
* ⚠️ The observation is "did the executor READ RECORDS OUT OF the snapshot",
|
|
34
|
+
* not "did it CALL `snapshot()`". #1344's `orderedIndexRows` and #1345's
|
|
35
|
+
* `compoundCandidates` both call `snapshot()` for their coverage check and
|
|
36
|
+
* read only its `.length`, so the original call-counter witness would now
|
|
37
|
+
* report a scan for two paths that never touch a record.
|
|
38
|
+
*/
|
|
39
|
+
import type { QueryPlan } from '../builder.js';
|
|
40
|
+
import type { JoinContext } from './join.js';
|
|
41
|
+
import type { ViaPipeline } from '../../via/pipeline.js';
|
|
42
|
+
/**
|
|
43
|
+
* How a node is executed. An OPEN label set on purpose — a consumer reads
|
|
44
|
+
* these as strings, so a build that knows a dispatch this one does not still
|
|
45
|
+
* type-checks. A new index kind adds its label here, its branch in
|
|
46
|
+
* {@link indexDispatchFor} (or {@link orderedIndexPick} when it replaces the
|
|
47
|
+
* `sort` node's dispatch), AND a row in the witness table named in this file's
|
|
48
|
+
* header. No consumer shape moves.
|
|
49
|
+
*/
|
|
50
|
+
export type ExplainDispatch = 'source' | 'index:hash'
|
|
51
|
+
/** #1344 — a sorted index served `<` `<=` `>` `>=` `between` `startsWith`. */
|
|
52
|
+
| 'index:range'
|
|
53
|
+
/** #1345 — a compound tuple served an equality prefix (+ an optional range). */
|
|
54
|
+
| 'index:compound'
|
|
55
|
+
/**
|
|
56
|
+
* #1355 — a sorted index served a UNION of `startsWith` slices named by a
|
|
57
|
+
* Via binding's prefix probe (`geo()`'s `near`). Unlike every other index
|
|
58
|
+
* label, the clause is NOT consumed: the cover is a superset and the
|
|
59
|
+
* binding's predicate still runs over the candidates, so `estimatedRows`
|
|
60
|
+
* here is the candidate count, not the answer's.
|
|
61
|
+
*/
|
|
62
|
+
| 'index:prefix'
|
|
63
|
+
/**
|
|
64
|
+
* #1344 / #1345 — an ordered index walk answered `orderBy(f).limit(n)`
|
|
65
|
+
* outright: no sort runs, and only the page's worth of records is read.
|
|
66
|
+
*/
|
|
67
|
+
| 'index:ordered' | 'scan' | 'join:nested' | 'join:hash' | 'join:reverse-index'
|
|
68
|
+
/** #1339 — a declared composite `on`, hashed over a tuple key. */
|
|
69
|
+
| 'join:composite-hash'
|
|
70
|
+
/** #1339 — a declared range `on`, nested-loop over a sorted right side. */
|
|
71
|
+
| 'join:sorted-range' | 'crossJoin' | 'sort' | 'page'
|
|
72
|
+
/**
|
|
73
|
+
* #1342 — a partitioned union read every declared partition, because the
|
|
74
|
+
* predicate proved no narrowing. The SOUND default: everything that is not
|
|
75
|
+
* on `resolvePartitionScope`'s whitelist lands here.
|
|
76
|
+
*/
|
|
77
|
+
| 'partitions:all'
|
|
78
|
+
/**
|
|
79
|
+
* #1342 — a top-level AND-ed `==`/`in` on the declared partition key
|
|
80
|
+
* narrowed the set, so the excluded members were never asked for.
|
|
81
|
+
*
|
|
82
|
+
* ⚠️ Unlike every other label in this union, this one is NOT decided in
|
|
83
|
+
* this file. `resolvePartitionScope` (`query/partition.ts`) is called by
|
|
84
|
+
* the executor and by `explain()`, so there is nothing to keep in step —
|
|
85
|
+
* see that module's header for why a third mirror site was refused.
|
|
86
|
+
*/
|
|
87
|
+
| 'partitions:pruned' | (string & {});
|
|
88
|
+
/** One line of the plan. */
|
|
89
|
+
export interface ExplainNode {
|
|
90
|
+
/** Pipeline stage: 'source' | 'where' | 'group' | 'filter' | 'wherePredicate' | 'crossJoin' | 'join' | 'orderBy' | 'page'. */
|
|
91
|
+
readonly op: string;
|
|
92
|
+
/** How this stage runs. */
|
|
93
|
+
readonly dispatch: ExplainDispatch;
|
|
94
|
+
/** One-line, no-op-prefix description, e.g. `status == "open"`. */
|
|
95
|
+
readonly detail: string;
|
|
96
|
+
/**
|
|
97
|
+
* Rows this stage is expected to emit. Exact where an index or a snapshot
|
|
98
|
+
* size supplies it; an upper bound (carried through unchanged) where only a
|
|
99
|
+
* scan can answer — the accompanying note says which.
|
|
100
|
+
*/
|
|
101
|
+
readonly estimatedRows: number | undefined;
|
|
102
|
+
/** Why this dispatch, and anything about to trip. */
|
|
103
|
+
readonly notes: readonly string[];
|
|
104
|
+
/** Sub-clauses of an `and`/`or` group. Empty for every other node. */
|
|
105
|
+
readonly children: readonly ExplainNode[];
|
|
106
|
+
}
|
|
107
|
+
/** A cardinality ceiling this plan runs against. */
|
|
108
|
+
export interface ExplainCap {
|
|
109
|
+
/** e.g. `join:client:right`, `crossJoin:lines`. */
|
|
110
|
+
readonly name: string;
|
|
111
|
+
/** The ceiling that would throw. */
|
|
112
|
+
readonly limit: number;
|
|
113
|
+
/** The size measured (or estimated) against it. */
|
|
114
|
+
readonly observed: number;
|
|
115
|
+
/** `warn` mirrors the executor's 80%-of-ceiling warning; `exceeded` would throw. */
|
|
116
|
+
readonly status: 'ok' | 'warn' | 'exceeded';
|
|
117
|
+
}
|
|
118
|
+
/** The result of {@link explainPlan}. */
|
|
119
|
+
export interface QueryExplanation {
|
|
120
|
+
/** The plan tree, in execution order. */
|
|
121
|
+
readonly nodes: readonly ExplainNode[];
|
|
122
|
+
/** Every cardinality ceiling this plan runs against. */
|
|
123
|
+
readonly caps: readonly ExplainCap[];
|
|
124
|
+
/**
|
|
125
|
+
* Fields this query references whose Via binding rewrites aggregate
|
|
126
|
+
* reducers — money's exact-BigInt sum being the one that ships. Applies to
|
|
127
|
+
* `.aggregate()`/`.groupBy()` over these fields, not to the row pipeline.
|
|
128
|
+
*/
|
|
129
|
+
readonly reducerRewrite: readonly {
|
|
130
|
+
readonly brand: string;
|
|
131
|
+
readonly field: string;
|
|
132
|
+
}[];
|
|
133
|
+
/** One line per node, depth-indented. Stable for a given plan. */
|
|
134
|
+
readonly text: string;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* The slice of a query source `explain()` reads. Structurally satisfied by
|
|
138
|
+
* the builder's internal source; declared here so this module does not
|
|
139
|
+
* depend on the builder's non-exported types.
|
|
140
|
+
*/
|
|
141
|
+
export interface ExplainSource {
|
|
142
|
+
snapshot(): readonly unknown[];
|
|
143
|
+
/**
|
|
144
|
+
* #1414/#1421 — the cold-collection gate. `explain()` is the one terminal
|
|
145
|
+
* that stays answerable while unhydrated (a diagnostic that refuses to
|
|
146
|
+
* diagnose is useless), so it carries the distinction instead: a snapshot
|
|
147
|
+
* of zero rows because nothing has been loaded is NOT the same fact as a
|
|
148
|
+
* snapshot of zero rows because the collection is empty, and only the
|
|
149
|
+
* second one is safe to act on.
|
|
150
|
+
*/
|
|
151
|
+
hydration?: {
|
|
152
|
+
isHydrated(): boolean;
|
|
153
|
+
};
|
|
154
|
+
getIndexes?(): ExplainIndexProbe | null;
|
|
155
|
+
lookupById?(id: string): unknown;
|
|
156
|
+
via?: ViaPipeline;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* The index-store surface `explain()` probes. Declared structurally rather
|
|
160
|
+
* than importing `CollectionIndexes`: the kernel spine may not statically
|
|
161
|
+
* reach a `with-*` service (`check:architecture`'s port-layering gate), and
|
|
162
|
+
* every method here is a pure read. `CollectionIndexes` satisfies it.
|
|
163
|
+
*/
|
|
164
|
+
export interface ExplainIndexProbe {
|
|
165
|
+
has(field: string): boolean;
|
|
166
|
+
fields(): string[];
|
|
167
|
+
lookupEqual(field: string, value: unknown): ReadonlySet<string> | null;
|
|
168
|
+
lookupIn(field: string, values: readonly unknown[]): ReadonlySet<string> | null;
|
|
169
|
+
/** #1344 — does a SORTED index cover this field? */
|
|
170
|
+
hasSorted?(field: string): boolean;
|
|
171
|
+
/** #1344 — entry count of the sorted index; compare against the snapshot. */
|
|
172
|
+
sortedSize?(field: string): number;
|
|
173
|
+
/** #1344 — ids satisfying a range operator, or `null` when unserved. */
|
|
174
|
+
lookupRange?(field: string, op: string, value: unknown): ReadonlySet<string> | null;
|
|
175
|
+
/** #1344 — every indexed id in field order, or `null` when unserved. */
|
|
176
|
+
orderedIds?(field: string, direction: 'asc' | 'desc'): readonly string[] | null;
|
|
177
|
+
/** #1345 — declared field tuples, in declaration order. */
|
|
178
|
+
compoundTuples?(): ReadonlyArray<readonly string[]>;
|
|
179
|
+
/** #1345 — records the tuple's index holds; compare against the snapshot. */
|
|
180
|
+
compoundSize?(fields: readonly string[]): number;
|
|
181
|
+
/** #1345 — ids for an equality prefix, optionally narrowed by a range. */
|
|
182
|
+
lookupCompound?(fields: readonly string[], prefixValues: readonly unknown[], range?: {
|
|
183
|
+
readonly op: string;
|
|
184
|
+
readonly value: unknown;
|
|
185
|
+
}): ReadonlySet<string> | null;
|
|
186
|
+
/** #1345 — an equality prefix ordered by the remaining component. */
|
|
187
|
+
compoundOrderedIds?(fields: readonly string[], prefixValues: readonly unknown[], direction: 'asc' | 'desc'): readonly string[] | null;
|
|
188
|
+
}
|
|
189
|
+
/** Build the explanation for a plan. Reads sizes and index buckets; runs nothing. */
|
|
190
|
+
export declare function explainPlan(source: ExplainSource, plan: QueryPlan, joinContext?: JoinContext): QueryExplanation;
|
|
191
|
+
/**
|
|
192
|
+
* One line per node, two spaces per level of depth.
|
|
193
|
+
*
|
|
194
|
+
* Exported (#1342) so the partitioned union's `explain()` renders its
|
|
195
|
+
* partition line and the member's nodes with THIS renderer rather than a
|
|
196
|
+
* second one — a consumer diffing two `explain().text` outputs must not be
|
|
197
|
+
* reading two formatters.
|
|
198
|
+
*/
|
|
199
|
+
export declare function renderExplainText(nodes: readonly ExplainNode[]): string;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@noy-db/hub/query/relate` — **the Relate group of the query DSL.**
|
|
3
|
+
*
|
|
4
|
+
* ```ts
|
|
5
|
+
* import '@noy-db/hub/query/relate' // once, in your app's entry
|
|
6
|
+
*
|
|
7
|
+
* invoices.query()
|
|
8
|
+
* .where('status', '==', 'paid')
|
|
9
|
+
* .join<'client', Client>('clientId', { as: 'client' })
|
|
10
|
+
* .toArray()
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* ⭐ **THIS MODULE EXISTS FOR ITS SIDE EFFECT.** Importing it patches
|
|
14
|
+
* `Query.prototype` with the ten Relate methods and fills the executor's join
|
|
15
|
+
* hooks; the `declare module` block below merges the same methods into the
|
|
16
|
+
* `Query` TYPE, so the method and its signature arrive together and a call
|
|
17
|
+
* without this import does not compile.
|
|
18
|
+
*
|
|
19
|
+
* ⚠️ It is listed in `package.json`'s `sideEffects` array for exactly that
|
|
20
|
+
* reason. A bundler told `sideEffects: false` about this file would drop the
|
|
21
|
+
* import — and the failure is a runtime `QueryExtensionMissingError` in
|
|
22
|
+
* production from code that typechecked. Do not remove it from that list.
|
|
23
|
+
*
|
|
24
|
+
* The value exports below are the free functions Relate has always published
|
|
25
|
+
* through `@noy-db/hub/query`; they moved here with their group.
|
|
26
|
+
*/
|
|
27
|
+
import type { RelateSurface } from './methods.js';
|
|
28
|
+
import type { ScanRelateSurface } from './scan-methods.js';
|
|
29
|
+
declare module '../builder.js' {
|
|
30
|
+
interface Query<T, S extends keyof T = never, Q extends keyof T & string = never, M extends keyof T & string = never> extends RelateSurface<T, S, Q, M> {
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
declare module '../scan-builder.js' {
|
|
34
|
+
interface ScanBuilder<T, S extends keyof T = never, M extends keyof T & string = never> extends ScanRelateSurface<T, S, M> {
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export { applyJoins, DEFAULT_JOIN_MAX_ROWS, DEFAULT_CROSS_JOIN_MAX_ROWS, resetJoinWarnings } from './join.js';
|
|
38
|
+
export type { JoinLeg, JoinContext, JoinableSource, JoinStrategy, JoinDirection } from './join.js';
|
|
39
|
+
export type { JoinOnSpec, JoinOnPlan, JoinOnOp } from './join-on.js';
|
|
40
|
+
export { runTraversal } from './traverse.js';
|
|
41
|
+
export type { TraversalRow, TraverseOptions, TraverseDirection, TraverseSource, CyclePolicy } from './traverse.js';
|
|
42
|
+
export { explainPlan, renderExplainText } from './explain.js';
|
|
43
|
+
export type { QueryExplanation, ExplainNode, ExplainCap, ExplainDispatch, ExplainSource, ExplainIndexProbe } from './explain.js';
|
|
44
|
+
export { ALL_PARTITIONS, describePartitionScope, partitionsInScope, resolvePartitionScope, } from './partition.js';
|
|
45
|
+
export type { PartitionScope } from './partition.js';
|
|
46
|
+
export type { QueryPlan } from '../builder.js';
|
|
47
|
+
export type { Clause } from '../predicate.js';
|
|
48
|
+
export { JoinTooLargeError, DanglingReferenceError, TraversalCycleError, CrossJoinTooLargeError, CrossJoinSourceUnknownError, } from '../../errors.js';
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declared non-equi and composite joins — `.joinOn(target, { on })` (#1339).
|
|
3
|
+
*
|
|
4
|
+
* `join.ts` resolves a `ref()`-declared FK against the target's `id`. That is
|
|
5
|
+
* one shape of join. This module is the other two the query DSL could not
|
|
6
|
+
* express at all:
|
|
7
|
+
*
|
|
8
|
+
* - **composite equality** — `on: [['clientId','clientId'], ['year','year']]`
|
|
9
|
+
* - **range / theta** — `on: { left: 'date', op: 'between', right: ['from','to'] }`
|
|
10
|
+
*
|
|
11
|
+
* ⭐ THE DECLARED FORM IS THE WHOLE POINT, and it is the only reason this is
|
|
12
|
+
* not `crossJoin({ on: fn })` with extra steps. `crossJoin`'s `on` is a
|
|
13
|
+
* closure: it pairs arbitrary rows perfectly and serializes to the sentinel
|
|
14
|
+
* `'[inline]'`, which is why a materialized view over one has its drift
|
|
15
|
+
* detection disabled. A `JoinOnPlan` is plain JSON, so `serializePlan()`
|
|
16
|
+
* emits it verbatim, `summarizeQueryPlan()` folds it into the MV
|
|
17
|
+
* `queryHash`, and two plans differing only in their `on` are two different
|
|
18
|
+
* queries — pinned by `__tests__/query-join-on.test.ts`.
|
|
19
|
+
*
|
|
20
|
+
* ⛔ THE NORMAL FORM IS PART OF THE HASH. `normalizeJoinOn` is the ONLY place
|
|
21
|
+
* a `JoinOnSpec` becomes a `JoinOnPlan`, and it sorts composite pairs so two
|
|
22
|
+
* logically identical joins hash identically (an AND of equalities is
|
|
23
|
+
* commutative). Changing the normal form moves every stored `queryHash` for a
|
|
24
|
+
* `joinOn` MV. Adding a new `on` KIND does not, because the leg is omitted
|
|
25
|
+
* entirely when absent — the same discipline `direction` (#1289) and `inner`
|
|
26
|
+
* (#1361) follow.
|
|
27
|
+
*
|
|
28
|
+
* **Key encoding.** Both strategies key on {@link SortKey} — the per-component
|
|
29
|
+
* ordered key #1345's `CompoundIndex` already uses — rather than a second,
|
|
30
|
+
* hand-rolled encoding. That buys the kind-ranking invariant for free: the
|
|
31
|
+
* string `'2026'` and the number `2026` live in different kinds and never
|
|
32
|
+
* match, exactly as `predicate.ts`'s `isComparable` refuses to compare them.
|
|
33
|
+
* A component whose value has no order-defined type (nullish, boolean,
|
|
34
|
+
* object, array) makes the whole record unkeyable and it drops out of the
|
|
35
|
+
* probe — same rule as `CompoundIndex`, where a record is indexed only when
|
|
36
|
+
* EVERY component has an ordered value.
|
|
37
|
+
*
|
|
38
|
+
* **Cost, stated honestly:**
|
|
39
|
+
*
|
|
40
|
+
* | strategy | build | per left row | total |
|
|
41
|
+
* |---|---|---|---|
|
|
42
|
+
* | `join:composite-hash` | O(m) one pass | O(1) + matches | **O(n + m + output)** |
|
|
43
|
+
* | `join:sorted-range` (`< <= > >=`) | O(m log m) one sort | O(log m) + matches | **O(m log m + n log m + output)** |
|
|
44
|
+
* | `join:sorted-range` (`between`) | O(m log m) | O(log m + p), p = rights whose `from` ≤ probe | **O(m log m + n·p)** — degrades to O(n·m) when every interval starts early |
|
|
45
|
+
*
|
|
46
|
+
* ⚠️ Neither is index-aware in the `lookupRange`/`lookupCompound` sense: a
|
|
47
|
+
* `JoinableSource` exposes `snapshot()` and `lookupById()` and nothing else,
|
|
48
|
+
* so the right collection's declared indexes are not reachable from here.
|
|
49
|
+
* The sort/hash is built per execution over the right SNAPSHOT. Reaching a
|
|
50
|
+
* real index would mean widening the published `JoinableSource` seam and
|
|
51
|
+
* taking a kernel→`with-lookup` runtime edge for a service that is opt-in;
|
|
52
|
+
* that is a separate decision, not a detail of this one.
|
|
53
|
+
*
|
|
54
|
+
* ⚠️ **A theta join EXPANDS rows**, which the ref join never does — so the
|
|
55
|
+
* per-side `maxRows` ceilings are not sufficient on their own. The OUTPUT is
|
|
56
|
+
* checked against the same ceiling as it is produced, and the join throws
|
|
57
|
+
* `JoinTooLargeError` with `side: 'output'` rather than allocating an
|
|
58
|
+
* unbounded cartesian product. That check is the difference between an error
|
|
59
|
+
* and a hang.
|
|
60
|
+
*/
|
|
61
|
+
/** Comparison operators a declared range join understands. */
|
|
62
|
+
export type JoinOnOp = '<' | '<=' | '>' | '>=' | 'between';
|
|
63
|
+
/**
|
|
64
|
+
* The consumer-facing `on`, in either of the two shapes #1339 proposed.
|
|
65
|
+
*
|
|
66
|
+
* - `[['clientId','clientId'], ['year','year']]` — composite equality; every
|
|
67
|
+
* pair must match. Each pair is `[leftField, rightField]`.
|
|
68
|
+
* - `{ left, op, right }` — a comparison of ONE left field against one right
|
|
69
|
+
* field (`< <= > >=`), or against a right INTERVAL for `between`, where
|
|
70
|
+
* `right` names the two boundary fields `[fromField, toField]` and the
|
|
71
|
+
* bounds are inclusive.
|
|
72
|
+
*/
|
|
73
|
+
export type JoinOnSpec = readonly (readonly [string, string])[] | {
|
|
74
|
+
readonly left: string;
|
|
75
|
+
readonly op: Exclude<JoinOnOp, 'between'>;
|
|
76
|
+
readonly right: string;
|
|
77
|
+
} | {
|
|
78
|
+
readonly left: string;
|
|
79
|
+
readonly op: 'between';
|
|
80
|
+
readonly right: readonly [string, string];
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* The normalised, serialisable form stored on the {@link JoinLeg}. This is
|
|
84
|
+
* what lands in `toPlan()` and in the MV `queryHash` — see the module header
|
|
85
|
+
* before changing its shape.
|
|
86
|
+
*/
|
|
87
|
+
export type JoinOnPlan = {
|
|
88
|
+
readonly kind: 'composite';
|
|
89
|
+
/** `[leftField, rightField]` pairs, sorted by left then right field. */
|
|
90
|
+
readonly pairs: readonly (readonly [string, string])[];
|
|
91
|
+
} | {
|
|
92
|
+
readonly kind: 'range';
|
|
93
|
+
readonly left: string;
|
|
94
|
+
readonly op: JoinOnOp;
|
|
95
|
+
/** One right field, or the two inclusive boundary fields for `between`. */
|
|
96
|
+
readonly right: readonly string[];
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Validate and normalise a consumer `on` into its plan form.
|
|
100
|
+
*
|
|
101
|
+
* Every refusal is at PLAN time, with the offending shape named: an `on` that
|
|
102
|
+
* cannot be serialised deterministically must never reach a `queryHash`,
|
|
103
|
+
* because a hash over an invalid plan is a hash nothing can reproduce.
|
|
104
|
+
*/
|
|
105
|
+
export declare function normalizeJoinOn(on: JoinOnSpec, target: string): JoinOnPlan;
|
|
106
|
+
/** A short, stable rendering of the predicate for `explain()`'s detail line. */
|
|
107
|
+
export declare function describeJoinOn(on: JoinOnPlan): string;
|
|
108
|
+
/** `explain()`'s dispatch label for a declared-`on` leg. */
|
|
109
|
+
export declare function joinOnDispatch(on: JoinOnPlan): 'join:composite-hash' | 'join:sorted-range';
|
|
110
|
+
/** One row the declared join produced: the left row and its matched right record. */
|
|
111
|
+
export interface JoinOnMatch {
|
|
112
|
+
readonly left: unknown;
|
|
113
|
+
/** `undefined` when this left row matched nothing — the left-outer row. */
|
|
114
|
+
readonly right: unknown;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Run a declared `on` against the right snapshot, emitting one
|
|
118
|
+
* {@link JoinOnMatch} per matched pair plus one `right: undefined` match per
|
|
119
|
+
* left row that matched nothing (the caller applies ref-mode / inner-drop
|
|
120
|
+
* semantics, exactly as it does for the ref join).
|
|
121
|
+
*
|
|
122
|
+
* `onOverflow` is called the moment the produced row count would exceed the
|
|
123
|
+
* ceiling; it is expected to throw. Passing the check as a callback keeps the
|
|
124
|
+
* error's wording — which names the leg and the ceiling — with the leg.
|
|
125
|
+
*/
|
|
126
|
+
export declare function matchDeclaredJoin(leftRows: readonly unknown[], on: JoinOnPlan, rightSnapshot: readonly unknown[], maxRows: number, onOverflow: (produced: number) => never): JoinOnMatch[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ViaPipeline } from '../../via/pipeline.js';
|
|
2
|
+
/**
|
|
3
|
+
* The pipeline `aggregate()` / `groupBy()` should reduce THIS plan with: the
|
|
4
|
+
* source's own, plus the alias binding when the plan can produce an alias.
|
|
5
|
+
*
|
|
6
|
+
* Returns the left pipeline unchanged when there is no alias to serve, so a
|
|
7
|
+
* query with no joins — every query written before #1338 — is handed exactly
|
|
8
|
+
* the object it was handed before.
|
|
9
|
+
*/
|
|
10
|
+
export declare function reduceViaFor(leftVia: ViaPipeline | undefined, aliasVia: ReadonlyMap<string, ViaPipeline> | undefined): ViaPipeline | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* The pipeline for a grouped plan whose GROUP KEY stays on the left: the
|
|
13
|
+
* source's own, plus the refusal above so an aliased reducer is a loud error
|
|
14
|
+
* rather than a confident zero. No aliases in the plan → unchanged.
|
|
15
|
+
*/
|
|
16
|
+
export declare function refuseAliasReduceVia(leftVia: ViaPipeline | undefined, aliases: ReadonlySet<string>): ViaPipeline | undefined;
|