@nicia-ai/typegraph 0.42.1 → 0.44.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/dist/backend/drizzle/indexes.cjs +9 -9
- package/dist/backend/drizzle/indexes.d.cts +1 -1
- package/dist/backend/drizzle/indexes.d.ts +1 -1
- package/dist/backend/drizzle/indexes.js +5 -5
- package/dist/backend/index.cjs +50 -50
- package/dist/backend/index.d.cts +3 -3
- package/dist/backend/index.d.ts +3 -3
- package/dist/backend/index.js +11 -11
- package/dist/backend/postgres/index.cjs +26 -26
- package/dist/backend/postgres/index.d.cts +6 -5
- package/dist/backend/postgres/index.d.ts +6 -5
- package/dist/backend/postgres/index.js +13 -13
- package/dist/backend/postgres/pglite-store.cjs +33 -33
- package/dist/backend/postgres/pglite-store.cjs.map +1 -1
- package/dist/backend/postgres/pglite-store.d.cts +7 -7
- package/dist/backend/postgres/pglite-store.d.ts +7 -7
- package/dist/backend/postgres/pglite-store.js +29 -29
- package/dist/backend/postgres/pglite-store.js.map +1 -1
- package/dist/backend/postgres/pglite.cjs +15 -15
- package/dist/backend/postgres/pglite.d.cts +3 -2
- package/dist/backend/postgres/pglite.d.ts +3 -2
- package/dist/backend/postgres/pglite.js +14 -14
- package/dist/backend/sqlite/index.cjs +23 -23
- package/dist/backend/sqlite/index.d.cts +7 -6
- package/dist/backend/sqlite/index.d.ts +7 -6
- package/dist/backend/sqlite/index.js +11 -11
- package/dist/backend/sqlite/libsql.cjs +17 -17
- package/dist/backend/sqlite/libsql.cjs.map +1 -1
- package/dist/backend/sqlite/libsql.d.cts +3 -2
- package/dist/backend/sqlite/libsql.d.ts +3 -2
- package/dist/backend/sqlite/libsql.js +13 -13
- package/dist/backend/sqlite/libsql.js.map +1 -1
- package/dist/backend/sqlite/local-store.cjs +34 -34
- package/dist/backend/sqlite/local-store.cjs.map +1 -1
- package/dist/backend/sqlite/local-store.d.cts +8 -7
- package/dist/backend/sqlite/local-store.d.ts +8 -7
- package/dist/backend/sqlite/local-store.js +30 -30
- package/dist/backend/sqlite/local-store.js.map +1 -1
- package/dist/backend/sqlite/local.cjs +16 -16
- package/dist/backend/sqlite/local.d.cts +3 -2
- package/dist/backend/sqlite/local.d.ts +3 -2
- package/dist/backend/sqlite/local.js +14 -14
- package/dist/{chunk-3RPQDGUE.cjs → chunk-2BIG7U6E.cjs} +5 -5
- package/dist/{chunk-3RPQDGUE.cjs.map → chunk-2BIG7U6E.cjs.map} +1 -1
- package/dist/{chunk-2OOY4OYT.js → chunk-2L54C2C2.js} +4 -4
- package/dist/{chunk-2OOY4OYT.js.map → chunk-2L54C2C2.js.map} +1 -1
- package/dist/{chunk-V2GZBPY2.cjs → chunk-2VLBGQBY.cjs} +310 -61
- package/dist/chunk-2VLBGQBY.cjs.map +1 -0
- package/dist/{chunk-RXOAXO3R.js → chunk-2WDD2NO3.js} +3 -3
- package/dist/{chunk-RXOAXO3R.js.map → chunk-2WDD2NO3.js.map} +1 -1
- package/dist/{chunk-2HKIID5K.js → chunk-2Y4IFKW7.js} +5 -5
- package/dist/{chunk-2HKIID5K.js.map → chunk-2Y4IFKW7.js.map} +1 -1
- package/dist/{chunk-ECU53PMN.cjs → chunk-3PRKZW6D.cjs} +5 -5
- package/dist/chunk-3PRKZW6D.cjs.map +1 -0
- package/dist/{chunk-2G6ZEGYO.js → chunk-46GDII45.js} +4 -4
- package/dist/{chunk-2G6ZEGYO.js.map → chunk-46GDII45.js.map} +1 -1
- package/dist/{chunk-OYJSYDIH.js → chunk-4MB3AQAQ.js} +13 -3
- package/dist/chunk-4MB3AQAQ.js.map +1 -0
- package/dist/chunk-4SZ6XPTG.cjs +12 -0
- package/dist/{chunk-VGMNGWBR.cjs.map → chunk-4SZ6XPTG.cjs.map} +1 -1
- package/dist/{chunk-FY4VY5EV.cjs → chunk-5MUSU4ZP.cjs} +20 -20
- package/dist/chunk-5MUSU4ZP.cjs.map +1 -0
- package/dist/{chunk-ZIRC2U6G.js → chunk-63KCKSSH.js} +78 -16
- package/dist/chunk-63KCKSSH.js.map +1 -0
- package/dist/{chunk-7Y6BV3TK.cjs → chunk-66UVLHQA.cjs} +100 -100
- package/dist/{chunk-7Y6BV3TK.cjs.map → chunk-66UVLHQA.cjs.map} +1 -1
- package/dist/{chunk-M4GYQF2H.js → chunk-6DCB664D.js} +7 -4
- package/dist/chunk-6DCB664D.js.map +1 -0
- package/dist/{chunk-OMQ2NBOR.cjs → chunk-6JZUSDY2.cjs} +27 -27
- package/dist/{chunk-OMQ2NBOR.cjs.map → chunk-6JZUSDY2.cjs.map} +1 -1
- package/dist/{chunk-Z3WIL6S3.js → chunk-7G32LIQM.js} +5 -5
- package/dist/{chunk-Z3WIL6S3.js.map → chunk-7G32LIQM.js.map} +1 -1
- package/dist/{chunk-2SO5I5AI.cjs → chunk-7V2FGGI2.cjs} +250 -198
- package/dist/chunk-7V2FGGI2.cjs.map +1 -0
- package/dist/{chunk-I73ATSAH.cjs → chunk-A2I2XO52.cjs} +4 -4
- package/dist/{chunk-I73ATSAH.cjs.map → chunk-A2I2XO52.cjs.map} +1 -1
- package/dist/{chunk-O2GZM7UK.cjs → chunk-A4PBRX4C.cjs} +7 -7
- package/dist/{chunk-O2GZM7UK.cjs.map → chunk-A4PBRX4C.cjs.map} +1 -1
- package/dist/{chunk-5P6IPIT6.cjs → chunk-ALFUGRYB.cjs} +75 -65
- package/dist/chunk-ALFUGRYB.cjs.map +1 -0
- package/dist/{chunk-NXIZL7ZZ.js → chunk-ATLN63JA.js} +6 -6
- package/dist/chunk-ATLN63JA.js.map +1 -0
- package/dist/{chunk-CUPJL6TS.js → chunk-B75XRV3O.js} +3 -3
- package/dist/{chunk-CUPJL6TS.js.map → chunk-B75XRV3O.js.map} +1 -1
- package/dist/{chunk-DP7KC6CL.js → chunk-BCP7LLOY.js} +754 -476
- package/dist/chunk-BCP7LLOY.js.map +1 -0
- package/dist/{chunk-RAWG2FEU.js → chunk-BEFM74L2.js} +264 -18
- package/dist/chunk-BEFM74L2.js.map +1 -0
- package/dist/{chunk-LQLVJWUH.js → chunk-BNUFUFAU.js} +7 -7
- package/dist/chunk-BNUFUFAU.js.map +1 -0
- package/dist/{chunk-KTBTSHU6.cjs → chunk-C4F7VJ5D.cjs} +13 -3
- package/dist/chunk-C4F7VJ5D.cjs.map +1 -0
- package/dist/{chunk-CVK4T34X.cjs → chunk-CPEL3YIR.cjs} +22 -22
- package/dist/{chunk-CVK4T34X.cjs.map → chunk-CPEL3YIR.cjs.map} +1 -1
- package/dist/{chunk-O3USVVWS.js → chunk-DK2S42XB.js} +3 -3
- package/dist/{chunk-O3USVVWS.js.map → chunk-DK2S42XB.js.map} +1 -1
- package/dist/{chunk-DMZEVJGL.cjs → chunk-EE7N5XXQ.cjs} +13 -13
- package/dist/{chunk-DMZEVJGL.cjs.map → chunk-EE7N5XXQ.cjs.map} +1 -1
- package/dist/{chunk-ZGOUVMVS.js → chunk-EFELJVLA.js} +5 -5
- package/dist/{chunk-ZGOUVMVS.js.map → chunk-EFELJVLA.js.map} +1 -1
- package/dist/chunk-EPTSMFH7.cjs +12 -0
- package/dist/{chunk-U3YRCZ5L.cjs.map → chunk-EPTSMFH7.cjs.map} +1 -1
- package/dist/{chunk-FSCJOTHF.cjs → chunk-EQ7JKLZO.cjs} +10 -10
- package/dist/{chunk-FSCJOTHF.cjs.map → chunk-EQ7JKLZO.cjs.map} +1 -1
- package/dist/{chunk-5Q3P6OIC.cjs → chunk-FGO5JFVJ.cjs} +12 -12
- package/dist/chunk-FGO5JFVJ.cjs.map +1 -0
- package/dist/{chunk-VC26BUNP.js → chunk-FMGEZBAQ.js} +5 -5
- package/dist/{chunk-VC26BUNP.js.map → chunk-FMGEZBAQ.js.map} +1 -1
- package/dist/{chunk-UZLEQFTV.js → chunk-FMMIX6N4.js} +4 -4
- package/dist/chunk-FMMIX6N4.js.map +1 -0
- package/dist/{chunk-5C75HQYQ.js → chunk-FRHHDHKH.js} +5 -5
- package/dist/{chunk-5C75HQYQ.js.map → chunk-FRHHDHKH.js.map} +1 -1
- package/dist/{chunk-EVFL2ZY5.js → chunk-FSXTPBRN.js} +63 -12
- package/dist/chunk-FSXTPBRN.js.map +1 -0
- package/dist/{chunk-TRC646QQ.cjs → chunk-GFRGG2US.cjs} +7 -7
- package/dist/{chunk-TRC646QQ.cjs.map → chunk-GFRGG2US.cjs.map} +1 -1
- package/dist/{chunk-UJRWOV5B.js → chunk-GWEDD3DH.js} +5 -5
- package/dist/{chunk-UJRWOV5B.js.map → chunk-GWEDD3DH.js.map} +1 -1
- package/dist/{chunk-AQR6BHB3.cjs → chunk-HJH3RMXG.cjs} +10 -10
- package/dist/{chunk-AQR6BHB3.cjs.map → chunk-HJH3RMXG.cjs.map} +1 -1
- package/dist/{chunk-F7TDKSVB.cjs → chunk-HOHAJ2NR.cjs} +4 -4
- package/dist/{chunk-F7TDKSVB.cjs.map → chunk-HOHAJ2NR.cjs.map} +1 -1
- package/dist/{chunk-YPVQYM3L.js → chunk-HOIFFY4M.js} +100 -20
- package/dist/chunk-HOIFFY4M.js.map +1 -0
- package/dist/{chunk-LDCWO5B6.js → chunk-IIMQJYAM.js} +3 -3
- package/dist/{chunk-LDCWO5B6.js.map → chunk-IIMQJYAM.js.map} +1 -1
- package/dist/{chunk-OM6RIOA5.cjs → chunk-IIT5K7SK.cjs} +13 -13
- package/dist/{chunk-OM6RIOA5.cjs.map → chunk-IIT5K7SK.cjs.map} +1 -1
- package/dist/{chunk-EQOQOT55.js → chunk-IJTLXNGJ.js} +5 -5
- package/dist/{chunk-EQOQOT55.js.map → chunk-IJTLXNGJ.js.map} +1 -1
- package/dist/{chunk-4XRP2N6B.js → chunk-JRP3VGHS.js} +3 -3
- package/dist/{chunk-4XRP2N6B.js.map → chunk-JRP3VGHS.js.map} +1 -1
- package/dist/{chunk-42XYPKZU.js → chunk-K3BUWSFR.js} +41 -3
- package/dist/chunk-K3BUWSFR.js.map +1 -0
- package/dist/{chunk-GT7NEXSU.js → chunk-KCO5EFJU.js} +3 -3
- package/dist/{chunk-GT7NEXSU.js.map → chunk-KCO5EFJU.js.map} +1 -1
- package/dist/{chunk-ARN3ZODS.cjs → chunk-KKYELPZ2.cjs} +6 -6
- package/dist/{chunk-ARN3ZODS.cjs.map → chunk-KKYELPZ2.cjs.map} +1 -1
- package/dist/{chunk-33PAKPED.cjs → chunk-MCHP7RHZ.cjs} +41 -41
- package/dist/{chunk-33PAKPED.cjs.map → chunk-MCHP7RHZ.cjs.map} +1 -1
- package/dist/{chunk-CDYRPI5U.js → chunk-MIJKEVV7.js} +4 -4
- package/dist/{chunk-CDYRPI5U.js.map → chunk-MIJKEVV7.js.map} +1 -1
- package/dist/{chunk-K2HHCWZO.cjs → chunk-NCX65HBY.cjs} +137 -108
- package/dist/chunk-NCX65HBY.cjs.map +1 -0
- package/dist/{chunk-6TJ6PKPS.cjs → chunk-NN3QSOVS.cjs} +27 -27
- package/dist/{chunk-6TJ6PKPS.cjs.map → chunk-NN3QSOVS.cjs.map} +1 -1
- package/dist/{chunk-F2KVJ6FF.cjs → chunk-OSZPLZIV.cjs} +179 -117
- package/dist/chunk-OSZPLZIV.cjs.map +1 -0
- package/dist/{chunk-UTTW2Q3M.cjs → chunk-OVUUTCPJ.cjs} +171 -133
- package/dist/chunk-OVUUTCPJ.cjs.map +1 -0
- package/dist/{chunk-FMPZPOUD.js → chunk-PAW2XUZN.js} +3 -3
- package/dist/{chunk-FMPZPOUD.js.map → chunk-PAW2XUZN.js.map} +1 -1
- package/dist/{chunk-5ZPRE4CV.cjs → chunk-PDGEXGS6.cjs} +204 -124
- package/dist/chunk-PDGEXGS6.cjs.map +1 -0
- package/dist/{chunk-CVNGKTHO.js → chunk-PHXITZE4.js} +4 -4
- package/dist/{chunk-CVNGKTHO.js.map → chunk-PHXITZE4.js.map} +1 -1
- package/dist/{chunk-ZPCKPLMX.cjs → chunk-QB6VMOJ2.cjs} +8 -8
- package/dist/{chunk-ZPCKPLMX.cjs.map → chunk-QB6VMOJ2.cjs.map} +1 -1
- package/dist/{chunk-5AERZSHC.cjs → chunk-QGKILWGZ.cjs} +4 -4
- package/dist/{chunk-5AERZSHC.cjs.map → chunk-QGKILWGZ.cjs.map} +1 -1
- package/dist/{chunk-ZOHCFYXE.js → chunk-QT6V3YRH.js} +3 -3
- package/dist/{chunk-ZOHCFYXE.js.map → chunk-QT6V3YRH.js.map} +1 -1
- package/dist/{chunk-XDMPDUKL.cjs → chunk-QYWINYEA.cjs} +9 -9
- package/dist/{chunk-XDMPDUKL.cjs.map → chunk-QYWINYEA.cjs.map} +1 -1
- package/dist/{chunk-3V6D5DEC.js → chunk-S4KQ5LV4.js} +3 -3
- package/dist/{chunk-3V6D5DEC.js.map → chunk-S4KQ5LV4.js.map} +1 -1
- package/dist/{chunk-6NB73BXV.js → chunk-SBPC5IP3.js} +40 -12
- package/dist/chunk-SBPC5IP3.js.map +1 -0
- package/dist/{chunk-HHBKGPEI.js → chunk-SQRD2CYF.js} +264 -21
- package/dist/chunk-SQRD2CYF.js.map +1 -0
- package/dist/{chunk-O7XVCLXW.cjs → chunk-ST3LPB2V.cjs} +324 -77
- package/dist/chunk-ST3LPB2V.cjs.map +1 -0
- package/dist/{chunk-FFQGI67R.cjs → chunk-STQ3BSED.cjs} +44 -44
- package/dist/{chunk-FFQGI67R.cjs.map → chunk-STQ3BSED.cjs.map} +1 -1
- package/dist/{chunk-JOYPNY33.js → chunk-TCRIQMBU.js} +9 -9
- package/dist/{chunk-JOYPNY33.js.map → chunk-TCRIQMBU.js.map} +1 -1
- package/dist/{chunk-ZP2KPDNN.js → chunk-TFMVL4QH.js} +3 -3
- package/dist/{chunk-ZP2KPDNN.js.map → chunk-TFMVL4QH.js.map} +1 -1
- package/dist/{chunk-4WYFRACU.js → chunk-TVLKA4AY.js} +3 -3
- package/dist/{chunk-4WYFRACU.js.map → chunk-TVLKA4AY.js.map} +1 -1
- package/dist/{chunk-X2XOQZT3.cjs → chunk-U5W4LKZV.cjs} +13 -9
- package/dist/chunk-U5W4LKZV.cjs.map +1 -0
- package/dist/{chunk-WYQILW5V.js → chunk-VITTKBWF.js} +43 -33
- package/dist/chunk-VITTKBWF.js.map +1 -0
- package/dist/{chunk-AO2WPYFZ.cjs → chunk-WBUFJ7BS.cjs} +4 -4
- package/dist/{chunk-AO2WPYFZ.cjs.map → chunk-WBUFJ7BS.cjs.map} +1 -1
- package/dist/{chunk-CI5NPLXX.js → chunk-XMYJY7NI.js} +3 -3
- package/dist/{chunk-CI5NPLXX.js.map → chunk-XMYJY7NI.js.map} +1 -1
- package/dist/{chunk-277UZV7X.cjs → chunk-XR4YZFKW.cjs} +1803 -1525
- package/dist/chunk-XR4YZFKW.cjs.map +1 -0
- package/dist/{chunk-5GV4JQNA.cjs → chunk-YNULOIR5.cjs} +43 -43
- package/dist/{chunk-5GV4JQNA.cjs.map → chunk-YNULOIR5.cjs.map} +1 -1
- package/dist/{chunk-ZBV4LQD2.cjs → chunk-ZTAJL4DT.cjs} +4 -4
- package/dist/{chunk-ZBV4LQD2.cjs.map → chunk-ZTAJL4DT.cjs.map} +1 -1
- package/dist/core/index.cjs +28 -28
- package/dist/core/index.d.cts +5 -5
- package/dist/core/index.d.ts +5 -5
- package/dist/core/index.js +8 -8
- package/dist/{ddl-Bc4Dl8fu.d.ts → ddl-D5369kOY.d.ts} +3 -3
- package/dist/{ddl-3unqC-kg.d.cts → ddl-eWg7hx6R.d.cts} +3 -3
- package/dist/{define-graph-Byslw2OO.d.cts → define-graph-DVF-oN1i.d.cts} +1 -1
- package/dist/{define-graph-DBFnc7u_.d.ts → define-graph-SvYXOl78.d.ts} +1 -1
- package/dist/graph-extension/index.cjs +20 -20
- package/dist/graph-extension/index.d.cts +4 -4
- package/dist/graph-extension/index.d.ts +4 -4
- package/dist/graph-extension/index.js +5 -5
- package/dist/graph-merge/index.cjs +104 -104
- package/dist/graph-merge/index.d.cts +9 -8
- package/dist/graph-merge/index.d.ts +9 -8
- package/dist/graph-merge/index.js +24 -24
- package/dist/{index-DQzVJBHa.d.ts → index-By89Sezh.d.ts} +37 -7
- package/dist/{index-DHXw7QAl.d.cts → index-DcQ3Sxs-.d.cts} +37 -7
- package/dist/index.cjs +210 -202
- package/dist/index.d.cts +13 -13
- package/dist/index.d.ts +13 -13
- package/dist/index.js +34 -34
- package/dist/indexes/index.cjs +13 -13
- package/dist/indexes/index.d.cts +4 -4
- package/dist/indexes/index.d.ts +4 -4
- package/dist/indexes/index.js +6 -6
- package/dist/interchange/index.cjs +49 -41
- package/dist/interchange/index.cjs.map +1 -1
- package/dist/interchange/index.d.cts +11 -11
- package/dist/interchange/index.d.ts +11 -11
- package/dist/interchange/index.js +23 -15
- package/dist/interchange/index.js.map +1 -1
- package/dist/{manager-Dl0-er1G.d.ts → manager-B0KjKE93.d.ts} +44 -6
- package/dist/{manager-U9_zopqr.d.cts → manager-Cn0NFIhN.d.cts} +44 -6
- package/dist/{materialize-indexes-BM3u0aXE.d.ts → materialize-indexes-BD4V3svD.d.ts} +1 -1
- package/dist/{materialize-indexes-DzMCetZe.d.cts → materialize-indexes-DVRhd5h4.d.cts} +1 -1
- package/dist/{postgres-C5-WMKFA.d.ts → postgres-DaEWvN4x.d.cts} +1 -1
- package/dist/{postgres-DpJqtbSX.d.cts → postgres-u0a0HN2D.d.ts} +1 -1
- package/dist/profiler/index.d.cts +10 -9
- package/dist/profiler/index.d.ts +10 -9
- package/dist/provenance/index.cjs +38 -38
- package/dist/provenance/index.cjs.map +1 -1
- package/dist/provenance/index.d.cts +7 -7
- package/dist/provenance/index.d.ts +7 -7
- package/dist/provenance/index.js +8 -8
- package/dist/provenance/index.js.map +1 -1
- package/dist/schema/index.cjs +41 -41
- package/dist/schema/index.d.cts +7 -7
- package/dist/schema/index.d.ts +7 -7
- package/dist/schema/index.js +14 -14
- package/dist/{searchable-B4mUXZT6.d.cts → searchable-BT7j9_IK.d.cts} +2 -2
- package/dist/{searchable-C7jmPNLT.d.ts → searchable-CnYEancP.d.ts} +2 -2
- package/dist/{sqlite-Da7jiYu9.d.cts → sqlite-BrMoSsI7.d.cts} +1 -1
- package/dist/{sqlite-Ch5tSYQY.d.ts → sqlite-CHhZUyO5.d.ts} +1 -1
- package/dist/{store-view-CNcOG8bQ.d.cts → store-view-Bvdku0Ht.d.ts} +199 -35
- package/dist/{store-view-6C2vTWqf.d.ts → store-view-w-md0nQ4.d.cts} +199 -35
- package/dist/{temporal-BtrTYTiB.d.ts → temporal--x9T8K4S.d.ts} +1 -1
- package/dist/{temporal-CMpigMCW.d.cts → temporal-BCORwUau.d.cts} +1 -1
- package/dist/{types-G4sVM-76.d.cts → types-6-WJmSD4.d.cts} +1 -1
- package/dist/{types-D2rU5Taq.d.ts → types-COODtTJU.d.ts} +1 -1
- package/dist/{types-Dh-EgT-w.d.ts → types-Cjvkj0jA.d.cts} +351 -12
- package/dist/{types-Dh-EgT-w.d.cts → types-Cjvkj0jA.d.ts} +351 -12
- package/dist/{where-B8Y21kig.d.ts → where-5xVawAwL.d.ts} +1 -1
- package/dist/{where-DbZ9XDOI.d.cts → where-CUQmCR6d.d.cts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-277UZV7X.cjs.map +0 -1
- package/dist/chunk-2SO5I5AI.cjs.map +0 -1
- package/dist/chunk-42XYPKZU.js.map +0 -1
- package/dist/chunk-5P6IPIT6.cjs.map +0 -1
- package/dist/chunk-5Q3P6OIC.cjs.map +0 -1
- package/dist/chunk-5ZPRE4CV.cjs.map +0 -1
- package/dist/chunk-6NB73BXV.js.map +0 -1
- package/dist/chunk-DP7KC6CL.js.map +0 -1
- package/dist/chunk-ECU53PMN.cjs.map +0 -1
- package/dist/chunk-EVFL2ZY5.js.map +0 -1
- package/dist/chunk-F2KVJ6FF.cjs.map +0 -1
- package/dist/chunk-FY4VY5EV.cjs.map +0 -1
- package/dist/chunk-HHBKGPEI.js.map +0 -1
- package/dist/chunk-K2HHCWZO.cjs.map +0 -1
- package/dist/chunk-KTBTSHU6.cjs.map +0 -1
- package/dist/chunk-LQLVJWUH.js.map +0 -1
- package/dist/chunk-M4GYQF2H.js.map +0 -1
- package/dist/chunk-NXIZL7ZZ.js.map +0 -1
- package/dist/chunk-O7XVCLXW.cjs.map +0 -1
- package/dist/chunk-OYJSYDIH.js.map +0 -1
- package/dist/chunk-RAWG2FEU.js.map +0 -1
- package/dist/chunk-U3YRCZ5L.cjs +0 -12
- package/dist/chunk-UTTW2Q3M.cjs.map +0 -1
- package/dist/chunk-UZLEQFTV.js.map +0 -1
- package/dist/chunk-V2GZBPY2.cjs.map +0 -1
- package/dist/chunk-VGMNGWBR.cjs +0 -12
- package/dist/chunk-WYQILW5V.js.map +0 -1
- package/dist/chunk-X2XOQZT3.cjs.map +0 -1
- package/dist/chunk-YPVQYM3L.js.map +0 -1
- package/dist/chunk-ZIRC2U6G.js.map +0 -1
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
5
|
-
var
|
|
3
|
+
var chunkALFUGRYB_cjs = require('../chunk-ALFUGRYB.cjs');
|
|
4
|
+
require('../chunk-NCX65HBY.cjs');
|
|
5
|
+
var chunk7V2FGGI2_cjs = require('../chunk-7V2FGGI2.cjs');
|
|
6
6
|
require('../chunk-ZDH3DX3C.cjs');
|
|
7
|
-
require('../chunk-
|
|
8
|
-
require('../chunk-
|
|
9
|
-
require('../chunk-
|
|
10
|
-
require('../chunk-
|
|
7
|
+
require('../chunk-CPEL3YIR.cjs');
|
|
8
|
+
require('../chunk-3PRKZW6D.cjs');
|
|
9
|
+
require('../chunk-EQ7JKLZO.cjs');
|
|
10
|
+
require('../chunk-KKYELPZ2.cjs');
|
|
11
11
|
require('../chunk-ACSVZPK7.cjs');
|
|
12
|
-
require('../chunk-
|
|
13
|
-
require('../chunk-
|
|
14
|
-
require('../chunk-
|
|
12
|
+
require('../chunk-WBUFJ7BS.cjs');
|
|
13
|
+
require('../chunk-QB6VMOJ2.cjs');
|
|
14
|
+
require('../chunk-ZTAJL4DT.cjs');
|
|
15
15
|
require('../chunk-NAUA4PW5.cjs');
|
|
16
|
-
require('../chunk-
|
|
17
|
-
require('../chunk-
|
|
16
|
+
require('../chunk-OVUUTCPJ.cjs');
|
|
17
|
+
require('../chunk-U5W4LKZV.cjs');
|
|
18
18
|
require('../chunk-SJDMVITW.cjs');
|
|
19
19
|
require('../chunk-764JHTLT.cjs');
|
|
20
20
|
var chunkHAHNRASW_cjs = require('../chunk-HAHNRASW.cjs');
|
|
21
|
-
require('../chunk-
|
|
22
|
-
var
|
|
21
|
+
require('../chunk-A4PBRX4C.cjs');
|
|
22
|
+
var chunkC4F7VJ5D_cjs = require('../chunk-C4F7VJ5D.cjs');
|
|
23
23
|
require('../chunk-TDXIBCGY.cjs');
|
|
24
24
|
|
|
25
25
|
// src/interchange/trusted-import.ts
|
|
26
26
|
function rejectUnsupportedStoreFeatures(store) {
|
|
27
27
|
if (store.historyEnabled) {
|
|
28
|
-
throw new
|
|
28
|
+
throw new chunkC4F7VJ5D_cjs.TrustedImportError(
|
|
29
29
|
"Trusted import does not support recorded-time history capture.",
|
|
30
30
|
"history_unsupported",
|
|
31
31
|
{ graphId: store.graphId }
|
|
32
32
|
);
|
|
33
33
|
}
|
|
34
34
|
if (store.revisionTrackingEnabled) {
|
|
35
|
-
throw new
|
|
35
|
+
throw new chunkC4F7VJ5D_cjs.TrustedImportError(
|
|
36
36
|
"Trusted import does not support revision tracking.",
|
|
37
37
|
"revision_tracking_unsupported",
|
|
38
38
|
{ graphId: store.graphId }
|
|
@@ -40,7 +40,7 @@ function rejectUnsupportedStoreFeatures(store) {
|
|
|
40
40
|
}
|
|
41
41
|
const uniqueKinds = Object.values(store.graph.nodes).filter((registration) => (registration.unique?.length ?? 0) > 0).map((registration) => registration.type.kind);
|
|
42
42
|
if (uniqueKinds.length > 0) {
|
|
43
|
-
throw new
|
|
43
|
+
throw new chunkC4F7VJ5D_cjs.TrustedImportError(
|
|
44
44
|
"Trusted import does not maintain node uniqueness sidecars.",
|
|
45
45
|
"uniqueness_unsupported",
|
|
46
46
|
{ graphId: store.graphId, nodeKinds: uniqueKinds }
|
|
@@ -50,7 +50,7 @@ function rejectUnsupportedStoreFeatures(store) {
|
|
|
50
50
|
(registration) => chunkHAHNRASW_cjs.getSearchableFields(registration.type.schema).length > 0
|
|
51
51
|
).map((registration) => registration.type.kind);
|
|
52
52
|
if (searchableKinds.length > 0) {
|
|
53
|
-
throw new
|
|
53
|
+
throw new chunkC4F7VJ5D_cjs.TrustedImportError(
|
|
54
54
|
"Trusted import does not maintain fulltext sidecars.",
|
|
55
55
|
"fulltext_unsupported",
|
|
56
56
|
{ graphId: store.graphId, nodeKinds: searchableKinds }
|
|
@@ -58,7 +58,7 @@ function rejectUnsupportedStoreFeatures(store) {
|
|
|
58
58
|
}
|
|
59
59
|
const vectorSlots = chunkHAHNRASW_cjs.resolveGraphVectorSlots(store.graph);
|
|
60
60
|
if (vectorSlots.length > 0) {
|
|
61
|
-
throw new
|
|
61
|
+
throw new chunkC4F7VJ5D_cjs.TrustedImportError(
|
|
62
62
|
"Trusted import does not maintain vector sidecars.",
|
|
63
63
|
"vector_unsupported",
|
|
64
64
|
{
|
|
@@ -69,7 +69,7 @@ function rejectUnsupportedStoreFeatures(store) {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
function invalidStream(message) {
|
|
72
|
-
return new
|
|
72
|
+
return new chunkC4F7VJ5D_cjs.TrustedImportError(message, "invalid_stream");
|
|
73
73
|
}
|
|
74
74
|
function nodeParams(graphId, node) {
|
|
75
75
|
return {
|
|
@@ -178,17 +178,25 @@ async function consumeTrustedChunks(store, session, chunks) {
|
|
|
178
178
|
}
|
|
179
179
|
async function trustedImportGraphStream(store, chunks) {
|
|
180
180
|
rejectUnsupportedStoreFeatures(store);
|
|
181
|
-
const backend =
|
|
181
|
+
const backend = chunk7V2FGGI2_cjs.storeBackend(store);
|
|
182
182
|
const trustedImport = backend.trustedImport;
|
|
183
183
|
if (trustedImport === void 0) {
|
|
184
|
-
throw new
|
|
184
|
+
throw new chunkC4F7VJ5D_cjs.TrustedImportError(
|
|
185
185
|
`The ${backend.dialect} backend does not support trusted import.`,
|
|
186
186
|
"backend_unsupported",
|
|
187
187
|
{ dialect: backend.dialect }
|
|
188
188
|
);
|
|
189
189
|
}
|
|
190
|
+
const schemaVersion = store.introspect().schemaVersion;
|
|
191
|
+
const options = schemaVersion === void 0 ? void 0 : {
|
|
192
|
+
schemaWrite: {
|
|
193
|
+
graphId: store.graphId,
|
|
194
|
+
expectedVersion: schemaVersion
|
|
195
|
+
}
|
|
196
|
+
};
|
|
190
197
|
return trustedImport(
|
|
191
|
-
(session) => consumeTrustedChunks(store, session, chunks)
|
|
198
|
+
(session) => consumeTrustedChunks(store, session, chunks),
|
|
199
|
+
options
|
|
192
200
|
);
|
|
193
201
|
}
|
|
194
202
|
function* graphDataChunks(data) {
|
|
@@ -203,75 +211,75 @@ function trustedImportGraph(store, data) {
|
|
|
203
211
|
|
|
204
212
|
Object.defineProperty(exports, "ConflictStrategySchema", {
|
|
205
213
|
enumerable: true,
|
|
206
|
-
get: function () { return
|
|
214
|
+
get: function () { return chunkALFUGRYB_cjs.ConflictStrategySchema; }
|
|
207
215
|
});
|
|
208
216
|
Object.defineProperty(exports, "ExportOptionsSchema", {
|
|
209
217
|
enumerable: true,
|
|
210
|
-
get: function () { return
|
|
218
|
+
get: function () { return chunkALFUGRYB_cjs.ExportOptionsSchema; }
|
|
211
219
|
});
|
|
212
220
|
Object.defineProperty(exports, "ExportStreamOptionsSchema", {
|
|
213
221
|
enumerable: true,
|
|
214
|
-
get: function () { return
|
|
222
|
+
get: function () { return chunkALFUGRYB_cjs.ExportStreamOptionsSchema; }
|
|
215
223
|
});
|
|
216
224
|
Object.defineProperty(exports, "FORMAT_VERSION", {
|
|
217
225
|
enumerable: true,
|
|
218
|
-
get: function () { return
|
|
226
|
+
get: function () { return chunkALFUGRYB_cjs.FORMAT_VERSION; }
|
|
219
227
|
});
|
|
220
228
|
Object.defineProperty(exports, "GraphDataHeaderSchema", {
|
|
221
229
|
enumerable: true,
|
|
222
|
-
get: function () { return
|
|
230
|
+
get: function () { return chunkALFUGRYB_cjs.GraphDataHeaderSchema; }
|
|
223
231
|
});
|
|
224
232
|
Object.defineProperty(exports, "GraphDataSchema", {
|
|
225
233
|
enumerable: true,
|
|
226
|
-
get: function () { return
|
|
234
|
+
get: function () { return chunkALFUGRYB_cjs.GraphDataSchema; }
|
|
227
235
|
});
|
|
228
236
|
Object.defineProperty(exports, "GraphDataSourceSchema", {
|
|
229
237
|
enumerable: true,
|
|
230
|
-
get: function () { return
|
|
238
|
+
get: function () { return chunkALFUGRYB_cjs.GraphDataSourceSchema; }
|
|
231
239
|
});
|
|
232
240
|
Object.defineProperty(exports, "GraphInterchangeChunkSchema", {
|
|
233
241
|
enumerable: true,
|
|
234
|
-
get: function () { return
|
|
242
|
+
get: function () { return chunkALFUGRYB_cjs.GraphInterchangeChunkSchema; }
|
|
235
243
|
});
|
|
236
244
|
Object.defineProperty(exports, "ImportErrorSchema", {
|
|
237
245
|
enumerable: true,
|
|
238
|
-
get: function () { return
|
|
246
|
+
get: function () { return chunkALFUGRYB_cjs.ImportErrorSchema; }
|
|
239
247
|
});
|
|
240
248
|
Object.defineProperty(exports, "ImportOptionsSchema", {
|
|
241
249
|
enumerable: true,
|
|
242
|
-
get: function () { return
|
|
250
|
+
get: function () { return chunkALFUGRYB_cjs.ImportOptionsSchema; }
|
|
243
251
|
});
|
|
244
252
|
Object.defineProperty(exports, "ImportResultSchema", {
|
|
245
253
|
enumerable: true,
|
|
246
|
-
get: function () { return
|
|
254
|
+
get: function () { return chunkALFUGRYB_cjs.ImportResultSchema; }
|
|
247
255
|
});
|
|
248
256
|
Object.defineProperty(exports, "InterchangeEdgeSchema", {
|
|
249
257
|
enumerable: true,
|
|
250
|
-
get: function () { return
|
|
258
|
+
get: function () { return chunkALFUGRYB_cjs.InterchangeEdgeSchema; }
|
|
251
259
|
});
|
|
252
260
|
Object.defineProperty(exports, "InterchangeNodeSchema", {
|
|
253
261
|
enumerable: true,
|
|
254
|
-
get: function () { return
|
|
262
|
+
get: function () { return chunkALFUGRYB_cjs.InterchangeNodeSchema; }
|
|
255
263
|
});
|
|
256
264
|
Object.defineProperty(exports, "UnknownPropertyStrategySchema", {
|
|
257
265
|
enumerable: true,
|
|
258
|
-
get: function () { return
|
|
266
|
+
get: function () { return chunkALFUGRYB_cjs.UnknownPropertyStrategySchema; }
|
|
259
267
|
});
|
|
260
268
|
Object.defineProperty(exports, "exportGraph", {
|
|
261
269
|
enumerable: true,
|
|
262
|
-
get: function () { return
|
|
270
|
+
get: function () { return chunkALFUGRYB_cjs.exportGraph; }
|
|
263
271
|
});
|
|
264
272
|
Object.defineProperty(exports, "exportGraphStream", {
|
|
265
273
|
enumerable: true,
|
|
266
|
-
get: function () { return
|
|
274
|
+
get: function () { return chunkALFUGRYB_cjs.exportGraphStream; }
|
|
267
275
|
});
|
|
268
276
|
Object.defineProperty(exports, "importGraph", {
|
|
269
277
|
enumerable: true,
|
|
270
|
-
get: function () { return
|
|
278
|
+
get: function () { return chunkALFUGRYB_cjs.importGraph; }
|
|
271
279
|
});
|
|
272
280
|
Object.defineProperty(exports, "importGraphStream", {
|
|
273
281
|
enumerable: true,
|
|
274
|
-
get: function () { return
|
|
282
|
+
get: function () { return chunkALFUGRYB_cjs.importGraphStream; }
|
|
275
283
|
});
|
|
276
284
|
exports.trustedImportGraph = trustedImportGraph;
|
|
277
285
|
exports.trustedImportGraphStream = trustedImportGraphStream;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/interchange/trusted-import.ts"],"names":["TrustedImportError","getSearchableFields","resolveGraphVectorSlots","storeBackend"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n InsertEdgeParams,\n InsertNodeParams,\n TrustedImportSession,\n} from \"../backend/types\";\nimport type { GraphDef } from \"../core/define-graph\";\nimport { resolveGraphVectorSlots } from \"../core/embedding\";\nimport { getSearchableFields } from \"../core/searchable\";\nimport { TrustedImportError } from \"../errors\";\nimport { storeBackend } from \"../store/runtime-port\";\nimport type { Store } from \"../store/store\";\nimport type {\n GraphData,\n GraphInterchangeChunk,\n InterchangeEdge,\n InterchangeNode,\n} from \"./types\";\n\n/** Counts committed by a trusted initial import. */\nexport type TrustedImportResult = Readonly<{\n nodes: number;\n edges: number;\n}>;\n\nfunction rejectUnsupportedStoreFeatures<G extends GraphDef>(\n store: Store<G>,\n): void {\n if (store.historyEnabled) {\n throw new TrustedImportError(\n \"Trusted import does not support recorded-time history capture.\",\n \"history_unsupported\",\n { graphId: store.graphId },\n );\n }\n if (store.revisionTrackingEnabled) {\n throw new TrustedImportError(\n \"Trusted import does not support revision tracking.\",\n \"revision_tracking_unsupported\",\n { graphId: store.graphId },\n );\n }\n\n const uniqueKinds = Object.values(store.graph.nodes)\n .filter((registration) => (registration.unique?.length ?? 0) > 0)\n .map((registration) => registration.type.kind);\n if (uniqueKinds.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain node uniqueness sidecars.\",\n \"uniqueness_unsupported\",\n { graphId: store.graphId, nodeKinds: uniqueKinds },\n );\n }\n\n const searchableKinds = Object.values(store.graph.nodes)\n .filter(\n (registration) =>\n getSearchableFields(registration.type.schema).length > 0,\n )\n .map((registration) => registration.type.kind);\n if (searchableKinds.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain fulltext sidecars.\",\n \"fulltext_unsupported\",\n { graphId: store.graphId, nodeKinds: searchableKinds },\n );\n }\n\n const vectorSlots = resolveGraphVectorSlots(store.graph);\n if (vectorSlots.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain vector sidecars.\",\n \"vector_unsupported\",\n {\n graphId: store.graphId,\n fields: vectorSlots.map((slot) => `${slot.nodeKind}.${slot.fieldPath}`),\n },\n );\n }\n}\n\nfunction invalidStream(message: string): TrustedImportError {\n return new TrustedImportError(message, \"invalid_stream\");\n}\n\nfunction nodeParams(graphId: string, node: InterchangeNode): InsertNodeParams {\n return {\n graphId,\n kind: node.kind,\n id: node.id,\n props: node.properties,\n ...(node.validFrom === undefined ? {} : { validFrom: node.validFrom }),\n ...(node.validTo === undefined ? {} : { validTo: node.validTo }),\n };\n}\n\nfunction edgeParams(graphId: string, edge: InterchangeEdge): InsertEdgeParams {\n return {\n graphId,\n id: edge.id,\n kind: edge.kind,\n fromKind: edge.from.kind,\n fromId: edge.from.id,\n toKind: edge.to.kind,\n toId: edge.to.id,\n props: edge.properties,\n ...(edge.validFrom === undefined ? {} : { validFrom: edge.validFrom }),\n ...(edge.validTo === undefined ? {} : { validTo: edge.validTo }),\n };\n}\n\nasync function consumeTrustedChunks<G extends GraphDef>(\n store: Store<G>,\n session: TrustedImportSession,\n chunks:\n AsyncIterable<GraphInterchangeChunk> | Iterable<GraphInterchangeChunk>,\n): Promise<TrustedImportResult> {\n const nodeKinds = new Set(\n Object.values(store.graph.nodes).map(\n (registration) => registration.type.kind,\n ),\n );\n const edgeKinds = new Set(\n Object.values(store.graph.edges).map(\n (registration) => registration.type.kind,\n ),\n );\n let receivedHeader = false;\n let receivedEdges = false;\n let nodeCount = 0;\n let edgeCount = 0;\n\n for await (const chunk of chunks) {\n switch (chunk.type) {\n case \"header\": {\n if (receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream emitted more than one header.\",\n );\n }\n receivedHeader = true;\n break;\n }\n case \"nodes\": {\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream must start with a header.\",\n );\n }\n if (receivedEdges) {\n throw invalidStream(\n \"Trusted graph interchange stream cannot emit nodes after edges.\",\n );\n }\n const unknownKind = chunk.nodes.find(\n (node) => !nodeKinds.has(node.kind),\n )?.kind;\n if (unknownKind !== undefined) {\n throw invalidStream(\n `Unknown node kind in trusted import: ${unknownKind}`,\n );\n }\n await session.insertNodes(\n chunk.nodes.map((node) => nodeParams(store.graphId, node)),\n );\n nodeCount += chunk.nodes.length;\n break;\n }\n case \"edges\": {\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream must start with a header.\",\n );\n }\n receivedEdges = true;\n const invalidEdge = chunk.edges.find(\n (edge) =>\n !edgeKinds.has(edge.kind) ||\n !nodeKinds.has(edge.from.kind) ||\n !nodeKinds.has(edge.to.kind),\n );\n if (invalidEdge !== undefined) {\n throw invalidStream(\n `Unknown edge or endpoint kind in trusted import: ${invalidEdge.kind}`,\n );\n }\n await session.insertEdges(\n chunk.edges.map((edge) => edgeParams(store.graphId, edge)),\n );\n edgeCount += chunk.edges.length;\n break;\n }\n }\n }\n\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream ended before emitting a header.\",\n );\n }\n return { nodes: nodeCount, edges: edgeCount };\n}\n\n/**\n * Atomically imports a header-first stream into a fresh, dedicated database.\n *\n * This is an intentionally trusted path. It checks stream ordering and kind\n * names, but it does not validate properties, references, cardinality, or\n * conflicts. The caller must guarantee those invariants. Use\n * {@link importGraphStream} for untrusted data.\n */\nexport async function trustedImportGraphStream<G extends GraphDef>(\n store: Store<G>,\n chunks:\n AsyncIterable<GraphInterchangeChunk> | Iterable<GraphInterchangeChunk>,\n): Promise<TrustedImportResult> {\n rejectUnsupportedStoreFeatures(store);\n const backend = storeBackend(store);\n const trustedImport = backend.trustedImport;\n if (trustedImport === undefined) {\n throw new TrustedImportError(\n `The ${backend.dialect} backend does not support trusted import.`,\n \"backend_unsupported\",\n { dialect: backend.dialect },\n );\n }\n return trustedImport((session) =>\n consumeTrustedChunks(store, session, chunks),\n );\n}\n\nfunction* graphDataChunks(data: GraphData): Iterable<GraphInterchangeChunk> {\n const { nodes, edges, ...header } = data;\n yield { type: \"header\", header };\n yield { type: \"nodes\", nodes };\n yield { type: \"edges\", edges };\n}\n\n/** In-memory convenience wrapper around {@link trustedImportGraphStream}. */\nexport function trustedImportGraph<G extends GraphDef>(\n store: Store<G>,\n data: GraphData,\n): Promise<TrustedImportResult> {\n return trustedImportGraphStream(store, graphDataChunks(data));\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/interchange/trusted-import.ts"],"names":["TrustedImportError","getSearchableFields","resolveGraphVectorSlots","storeBackend"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAS,+BACP,KAAA,EACM;AACN,EAAA,IAAI,MAAM,cAAA,EAAgB;AACxB,IAAA,MAAM,IAAIA,oCAAA;AAAA,MACR,gEAAA;AAAA,MACA,qBAAA;AAAA,MACA,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA;AAAQ,KAC3B;AAAA,EACF;AACA,EAAA,IAAI,MAAM,uBAAA,EAAyB;AACjC,IAAA,MAAM,IAAIA,oCAAA;AAAA,MACR,oDAAA;AAAA,MACA,+BAAA;AAAA,MACA,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA;AAAQ,KAC3B;AAAA,EACF;AAEA,EAAA,MAAM,WAAA,GAAc,OAAO,MAAA,CAAO,KAAA,CAAM,MAAM,KAAK,CAAA,CAChD,OAAO,CAAC,YAAA,KAAA,CAAkB,aAAa,MAAA,EAAQ,MAAA,IAAU,KAAK,CAAC,CAAA,CAC/D,IAAI,CAAC,YAAA,KAAiB,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA;AAC/C,EAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAIA,oCAAA;AAAA,MACR,4DAAA;AAAA,MACA,wBAAA;AAAA,MACA,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA,EAAS,WAAW,WAAA;AAAY,KACnD;AAAA,EACF;AAEA,EAAA,MAAM,kBAAkB,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CACpD,MAAA;AAAA,IACC,CAAC,YAAA,KACCC,qCAAA,CAAoB,aAAa,IAAA,CAAK,MAAM,EAAE,MAAA,GAAS;AAAA,IAE1D,GAAA,CAAI,CAAC,YAAA,KAAiB,YAAA,CAAa,KAAK,IAAI,CAAA;AAC/C,EAAA,IAAI,eAAA,CAAgB,SAAS,CAAA,EAAG;AAC9B,IAAA,MAAM,IAAID,oCAAA;AAAA,MACR,qDAAA;AAAA,MACA,sBAAA;AAAA,MACA,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA,EAAS,WAAW,eAAA;AAAgB,KACvD;AAAA,EACF;AAEA,EAAA,MAAM,WAAA,GAAcE,yCAAA,CAAwB,KAAA,CAAM,KAAK,CAAA;AACvD,EAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAIF,oCAAA;AAAA,MACR,mDAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,QACE,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,MAAA,EAAQ,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,KAAS,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAA,CAAA,EAAI,IAAA,CAAK,SAAS,CAAA,CAAE;AAAA;AACxE,KACF;AAAA,EACF;AACF;AAEA,SAAS,cAAc,OAAA,EAAqC;AAC1D,EAAA,OAAO,IAAIA,oCAAA,CAAmB,OAAA,EAAS,gBAAgB,CAAA;AACzD;AAEA,SAAS,UAAA,CAAW,SAAiB,IAAA,EAAyC;AAC5E,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,OAAO,IAAA,CAAK,UAAA;AAAA,IACZ,GAAI,KAAK,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,IAAA,CAAK,SAAA,EAAU;AAAA,IACpE,GAAI,KAAK,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA;AAAQ,GAChE;AACF;AAEA,SAAS,UAAA,CAAW,SAAiB,IAAA,EAAyC;AAC5E,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,QAAA,EAAU,KAAK,IAAA,CAAK,IAAA;AAAA,IACpB,MAAA,EAAQ,KAAK,IAAA,CAAK,EAAA;AAAA,IAClB,MAAA,EAAQ,KAAK,EAAA,CAAG,IAAA;AAAA,IAChB,IAAA,EAAM,KAAK,EAAA,CAAG,EAAA;AAAA,IACd,OAAO,IAAA,CAAK,UAAA;AAAA,IACZ,GAAI,KAAK,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,IAAA,CAAK,SAAA,EAAU;AAAA,IACpE,GAAI,KAAK,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA;AAAQ,GAChE;AACF;AAEA,eAAe,oBAAA,CACb,KAAA,EACA,OAAA,EACA,MAAA,EAE8B;AAC9B,EAAA,MAAM,YAAY,IAAI,GAAA;AAAA,IACpB,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAE,GAAA;AAAA,MAC/B,CAAC,YAAA,KAAiB,YAAA,CAAa,IAAA,CAAK;AAAA;AACtC,GACF;AACA,EAAA,MAAM,YAAY,IAAI,GAAA;AAAA,IACpB,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAE,GAAA;AAAA,MAC/B,CAAC,YAAA,KAAiB,YAAA,CAAa,IAAA,CAAK;AAAA;AACtC,GACF;AACA,EAAA,IAAI,cAAA,GAAiB,KAAA;AACrB,EAAA,IAAI,aAAA,GAAgB,KAAA;AACpB,EAAA,IAAI,SAAA,GAAY,CAAA;AAChB,EAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,EAAA,WAAA,MAAiB,SAAS,MAAA,EAAQ;AAChC,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,QAAA,EAAU;AACb,QAAA,IAAI,cAAA,EAAgB;AAClB,UAAA,MAAM,aAAA;AAAA,YACJ;AAAA,WACF;AAAA,QACF;AACA,QAAA,cAAA,GAAiB,IAAA;AACjB,QAAA;AAAA,MACF;AAAA,MACA,KAAK,OAAA,EAAS;AACZ,QAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,UAAA,MAAM,aAAA;AAAA,YACJ;AAAA,WACF;AAAA,QACF;AACA,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,MAAM,aAAA;AAAA,YACJ;AAAA,WACF;AAAA,QACF;AACA,QAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,IAAA;AAAA,UAC9B,CAAC,IAAA,KAAS,CAAC,SAAA,CAAU,GAAA,CAAI,KAAK,IAAI;AAAA,SACpC,EAAG,IAAA;AACH,QAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,UAAA,MAAM,aAAA;AAAA,YACJ,wCAAwC,WAAW,CAAA;AAAA,WACrD;AAAA,QACF;AACA,QAAA,MAAM,OAAA,CAAQ,WAAA;AAAA,UACZ,KAAA,CAAM,MAAM,GAAA,CAAI,CAAC,SAAS,UAAA,CAAW,KAAA,CAAM,OAAA,EAAS,IAAI,CAAC;AAAA,SAC3D;AACA,QAAA,SAAA,IAAa,MAAM,KAAA,CAAM,MAAA;AACzB,QAAA;AAAA,MACF;AAAA,MACA,KAAK,OAAA,EAAS;AACZ,QAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,UAAA,MAAM,aAAA;AAAA,YACJ;AAAA,WACF;AAAA,QACF;AACA,QAAA,aAAA,GAAgB,IAAA;AAChB,QAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,IAAA;AAAA,UAC9B,CAAC,SACC,CAAC,SAAA,CAAU,IAAI,IAAA,CAAK,IAAI,KACxB,CAAC,SAAA,CAAU,IAAI,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,IAC7B,CAAC,UAAU,GAAA,CAAI,IAAA,CAAK,GAAG,IAAI;AAAA,SAC/B;AACA,QAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,UAAA,MAAM,aAAA;AAAA,YACJ,CAAA,iDAAA,EAAoD,YAAY,IAAI,CAAA;AAAA,WACtE;AAAA,QACF;AACA,QAAA,MAAM,OAAA,CAAQ,WAAA;AAAA,UACZ,KAAA,CAAM,MAAM,GAAA,CAAI,CAAC,SAAS,UAAA,CAAW,KAAA,CAAM,OAAA,EAAS,IAAI,CAAC;AAAA,SAC3D;AACA,QAAA,SAAA,IAAa,MAAM,KAAA,CAAM,MAAA;AACzB,QAAA;AAAA,MACF;AAAA;AACF,EACF;AAEA,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,MAAM,aAAA;AAAA,MACJ;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAC9C;AAUA,eAAsB,wBAAA,CACpB,OACA,MAAA,EAE8B;AAC9B,EAAA,8BAAA,CAA+B,KAAK,CAAA;AACpC,EAAA,MAAM,OAAA,GAAUG,+BAAa,KAAK,CAAA;AAClC,EAAA,MAAM,gBAAgB,OAAA,CAAQ,aAAA;AAC9B,EAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,IAAA,MAAM,IAAIH,oCAAA;AAAA,MACR,CAAA,IAAA,EAAO,QAAQ,OAAO,CAAA,yCAAA,CAAA;AAAA,MACtB,qBAAA;AAAA,MACA,EAAE,OAAA,EAAS,OAAA,CAAQ,OAAA;AAAQ,KAC7B;AAAA,EACF;AACA,EAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,UAAA,EAAW,CAAE,aAAA;AACzC,EAAA,MAAM,OAAA,GACJ,aAAA,KAAkB,MAAA,GAAY,MAAA,GAC5B;AAAA,IACE,WAAA,EAAa;AAAA,MACX,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,eAAA,EAAiB;AAAA;AACnB,GACF;AAEJ,EAAA,OAAO,aAAA;AAAA,IACL,CAAC,OAAA,KAAY,oBAAA,CAAqB,KAAA,EAAO,SAAS,MAAM,CAAA;AAAA,IACxD;AAAA,GACF;AACF;AAEA,UAAU,gBAAgB,IAAA,EAAkD;AAC1E,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,GAAG,QAAO,GAAI,IAAA;AACpC,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAO;AAC/B,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM;AAC7B,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM;AAC/B;AAGO,SAAS,kBAAA,CACd,OACA,IAAA,EAC8B;AAC9B,EAAA,OAAO,wBAAA,CAAyB,KAAA,EAAO,eAAA,CAAgB,IAAI,CAAC,CAAA;AAC9D","file":"index.cjs","sourcesContent":["import type {\n InsertEdgeParams,\n InsertNodeParams,\n TrustedImportOptions,\n TrustedImportSession,\n} from \"../backend/types\";\nimport type { GraphDef } from \"../core/define-graph\";\nimport { resolveGraphVectorSlots } from \"../core/embedding\";\nimport { getSearchableFields } from \"../core/searchable\";\nimport { TrustedImportError } from \"../errors\";\nimport { storeBackend } from \"../store/runtime-port\";\nimport type { Store } from \"../store/store\";\nimport type {\n GraphData,\n GraphInterchangeChunk,\n InterchangeEdge,\n InterchangeNode,\n} from \"./types\";\n\n/** Counts committed by a trusted initial import. */\nexport type TrustedImportResult = Readonly<{\n nodes: number;\n edges: number;\n}>;\n\nfunction rejectUnsupportedStoreFeatures<G extends GraphDef>(\n store: Store<G>,\n): void {\n if (store.historyEnabled) {\n throw new TrustedImportError(\n \"Trusted import does not support recorded-time history capture.\",\n \"history_unsupported\",\n { graphId: store.graphId },\n );\n }\n if (store.revisionTrackingEnabled) {\n throw new TrustedImportError(\n \"Trusted import does not support revision tracking.\",\n \"revision_tracking_unsupported\",\n { graphId: store.graphId },\n );\n }\n\n const uniqueKinds = Object.values(store.graph.nodes)\n .filter((registration) => (registration.unique?.length ?? 0) > 0)\n .map((registration) => registration.type.kind);\n if (uniqueKinds.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain node uniqueness sidecars.\",\n \"uniqueness_unsupported\",\n { graphId: store.graphId, nodeKinds: uniqueKinds },\n );\n }\n\n const searchableKinds = Object.values(store.graph.nodes)\n .filter(\n (registration) =>\n getSearchableFields(registration.type.schema).length > 0,\n )\n .map((registration) => registration.type.kind);\n if (searchableKinds.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain fulltext sidecars.\",\n \"fulltext_unsupported\",\n { graphId: store.graphId, nodeKinds: searchableKinds },\n );\n }\n\n const vectorSlots = resolveGraphVectorSlots(store.graph);\n if (vectorSlots.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain vector sidecars.\",\n \"vector_unsupported\",\n {\n graphId: store.graphId,\n fields: vectorSlots.map((slot) => `${slot.nodeKind}.${slot.fieldPath}`),\n },\n );\n }\n}\n\nfunction invalidStream(message: string): TrustedImportError {\n return new TrustedImportError(message, \"invalid_stream\");\n}\n\nfunction nodeParams(graphId: string, node: InterchangeNode): InsertNodeParams {\n return {\n graphId,\n kind: node.kind,\n id: node.id,\n props: node.properties,\n ...(node.validFrom === undefined ? {} : { validFrom: node.validFrom }),\n ...(node.validTo === undefined ? {} : { validTo: node.validTo }),\n };\n}\n\nfunction edgeParams(graphId: string, edge: InterchangeEdge): InsertEdgeParams {\n return {\n graphId,\n id: edge.id,\n kind: edge.kind,\n fromKind: edge.from.kind,\n fromId: edge.from.id,\n toKind: edge.to.kind,\n toId: edge.to.id,\n props: edge.properties,\n ...(edge.validFrom === undefined ? {} : { validFrom: edge.validFrom }),\n ...(edge.validTo === undefined ? {} : { validTo: edge.validTo }),\n };\n}\n\nasync function consumeTrustedChunks<G extends GraphDef>(\n store: Store<G>,\n session: TrustedImportSession,\n chunks:\n AsyncIterable<GraphInterchangeChunk> | Iterable<GraphInterchangeChunk>,\n): Promise<TrustedImportResult> {\n const nodeKinds = new Set(\n Object.values(store.graph.nodes).map(\n (registration) => registration.type.kind,\n ),\n );\n const edgeKinds = new Set(\n Object.values(store.graph.edges).map(\n (registration) => registration.type.kind,\n ),\n );\n let receivedHeader = false;\n let receivedEdges = false;\n let nodeCount = 0;\n let edgeCount = 0;\n\n for await (const chunk of chunks) {\n switch (chunk.type) {\n case \"header\": {\n if (receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream emitted more than one header.\",\n );\n }\n receivedHeader = true;\n break;\n }\n case \"nodes\": {\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream must start with a header.\",\n );\n }\n if (receivedEdges) {\n throw invalidStream(\n \"Trusted graph interchange stream cannot emit nodes after edges.\",\n );\n }\n const unknownKind = chunk.nodes.find(\n (node) => !nodeKinds.has(node.kind),\n )?.kind;\n if (unknownKind !== undefined) {\n throw invalidStream(\n `Unknown node kind in trusted import: ${unknownKind}`,\n );\n }\n await session.insertNodes(\n chunk.nodes.map((node) => nodeParams(store.graphId, node)),\n );\n nodeCount += chunk.nodes.length;\n break;\n }\n case \"edges\": {\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream must start with a header.\",\n );\n }\n receivedEdges = true;\n const invalidEdge = chunk.edges.find(\n (edge) =>\n !edgeKinds.has(edge.kind) ||\n !nodeKinds.has(edge.from.kind) ||\n !nodeKinds.has(edge.to.kind),\n );\n if (invalidEdge !== undefined) {\n throw invalidStream(\n `Unknown edge or endpoint kind in trusted import: ${invalidEdge.kind}`,\n );\n }\n await session.insertEdges(\n chunk.edges.map((edge) => edgeParams(store.graphId, edge)),\n );\n edgeCount += chunk.edges.length;\n break;\n }\n }\n }\n\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream ended before emitting a header.\",\n );\n }\n return { nodes: nodeCount, edges: edgeCount };\n}\n\n/**\n * Atomically imports a header-first stream into a fresh, dedicated database.\n *\n * This is an intentionally trusted path. It checks stream ordering and kind\n * names, but it does not validate properties, references, cardinality, or\n * conflicts. The caller must guarantee those invariants. Use\n * {@link importGraphStream} for untrusted data.\n */\nexport async function trustedImportGraphStream<G extends GraphDef>(\n store: Store<G>,\n chunks:\n AsyncIterable<GraphInterchangeChunk> | Iterable<GraphInterchangeChunk>,\n): Promise<TrustedImportResult> {\n rejectUnsupportedStoreFeatures(store);\n const backend = storeBackend(store);\n const trustedImport = backend.trustedImport;\n if (trustedImport === undefined) {\n throw new TrustedImportError(\n `The ${backend.dialect} backend does not support trusted import.`,\n \"backend_unsupported\",\n { dialect: backend.dialect },\n );\n }\n const schemaVersion = store.introspect().schemaVersion;\n const options: TrustedImportOptions | undefined =\n schemaVersion === undefined ? undefined : (\n {\n schemaWrite: {\n graphId: store.graphId,\n expectedVersion: schemaVersion,\n },\n }\n );\n return trustedImport(\n (session) => consumeTrustedChunks(store, session, chunks),\n options,\n );\n}\n\nfunction* graphDataChunks(data: GraphData): Iterable<GraphInterchangeChunk> {\n const { nodes, edges, ...header } = data;\n yield { type: \"header\", header };\n yield { type: \"nodes\", nodes };\n yield { type: \"edges\", edges };\n}\n\n/** In-memory convenience wrapper around {@link trustedImportGraphStream}. */\nexport function trustedImportGraph<G extends GraphDef>(\n store: Store<G>,\n data: GraphData,\n): Promise<TrustedImportResult> {\n return trustedImportGraphStream(store, graphDataChunks(data));\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
export { C as ContributionDiagnostic, a as ContributionDiagnosticState } from '../types-Cjvkj0jA.cjs';
|
|
1
2
|
import { z } from 'zod';
|
|
2
|
-
import { G as GraphDef } from '../define-graph-
|
|
3
|
-
import { a as Store } from '../store-view-
|
|
4
|
-
import '../
|
|
5
|
-
import '../
|
|
6
|
-
import '../
|
|
7
|
-
import '../
|
|
8
|
-
import '../searchable-B4mUXZT6.cjs';
|
|
3
|
+
import { G as GraphDef } from '../define-graph-DVF-oN1i.cjs';
|
|
4
|
+
import { a as Store } from '../store-view-w-md0nQ4.cjs';
|
|
5
|
+
import '../temporal-BCORwUau.cjs';
|
|
6
|
+
import '../manager-Cn0NFIhN.cjs';
|
|
7
|
+
import '../materialize-indexes-DVRhd5h4.cjs';
|
|
8
|
+
import '../searchable-BT7j9_IK.cjs';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Graph interchange format types.
|
|
@@ -76,8 +76,8 @@ type InterchangeEdge = z.infer<typeof InterchangeEdgeSchema>;
|
|
|
76
76
|
*/
|
|
77
77
|
declare const ConflictStrategySchema: z.ZodEnum<{
|
|
78
78
|
error: "error";
|
|
79
|
-
skip: "skip";
|
|
80
79
|
update: "update";
|
|
80
|
+
skip: "skip";
|
|
81
81
|
}>;
|
|
82
82
|
type ConflictStrategy = z.infer<typeof ConflictStrategySchema>;
|
|
83
83
|
/**
|
|
@@ -88,8 +88,8 @@ type ConflictStrategy = z.infer<typeof ConflictStrategySchema>;
|
|
|
88
88
|
* - `allow`: Pass through to storage (relies on backend behavior)
|
|
89
89
|
*/
|
|
90
90
|
declare const UnknownPropertyStrategySchema: z.ZodEnum<{
|
|
91
|
-
error: "error";
|
|
92
91
|
allow: "allow";
|
|
92
|
+
error: "error";
|
|
93
93
|
strip: "strip";
|
|
94
94
|
}>;
|
|
95
95
|
type UnknownPropertyStrategy = z.infer<typeof UnknownPropertyStrategySchema>;
|
|
@@ -99,12 +99,12 @@ type UnknownPropertyStrategy = z.infer<typeof UnknownPropertyStrategySchema>;
|
|
|
99
99
|
declare const ImportOptionsSchema: z.ZodObject<{
|
|
100
100
|
onConflict: z.ZodEnum<{
|
|
101
101
|
error: "error";
|
|
102
|
-
skip: "skip";
|
|
103
102
|
update: "update";
|
|
103
|
+
skip: "skip";
|
|
104
104
|
}>;
|
|
105
105
|
onUnknownProperty: z.ZodDefault<z.ZodEnum<{
|
|
106
|
-
error: "error";
|
|
107
106
|
allow: "allow";
|
|
107
|
+
error: "error";
|
|
108
108
|
strip: "strip";
|
|
109
109
|
}>>;
|
|
110
110
|
validateReferences: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
export { C as ContributionDiagnostic, a as ContributionDiagnosticState } from '../types-Cjvkj0jA.js';
|
|
1
2
|
import { z } from 'zod';
|
|
2
|
-
import { G as GraphDef } from '../define-graph-
|
|
3
|
-
import { a as Store } from '../store-view-
|
|
4
|
-
import '../
|
|
5
|
-
import '../
|
|
6
|
-
import '../
|
|
7
|
-
import '../
|
|
8
|
-
import '../searchable-C7jmPNLT.js';
|
|
3
|
+
import { G as GraphDef } from '../define-graph-SvYXOl78.js';
|
|
4
|
+
import { a as Store } from '../store-view-Bvdku0Ht.js';
|
|
5
|
+
import '../temporal--x9T8K4S.js';
|
|
6
|
+
import '../manager-B0KjKE93.js';
|
|
7
|
+
import '../materialize-indexes-BD4V3svD.js';
|
|
8
|
+
import '../searchable-CnYEancP.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Graph interchange format types.
|
|
@@ -76,8 +76,8 @@ type InterchangeEdge = z.infer<typeof InterchangeEdgeSchema>;
|
|
|
76
76
|
*/
|
|
77
77
|
declare const ConflictStrategySchema: z.ZodEnum<{
|
|
78
78
|
error: "error";
|
|
79
|
-
skip: "skip";
|
|
80
79
|
update: "update";
|
|
80
|
+
skip: "skip";
|
|
81
81
|
}>;
|
|
82
82
|
type ConflictStrategy = z.infer<typeof ConflictStrategySchema>;
|
|
83
83
|
/**
|
|
@@ -88,8 +88,8 @@ type ConflictStrategy = z.infer<typeof ConflictStrategySchema>;
|
|
|
88
88
|
* - `allow`: Pass through to storage (relies on backend behavior)
|
|
89
89
|
*/
|
|
90
90
|
declare const UnknownPropertyStrategySchema: z.ZodEnum<{
|
|
91
|
-
error: "error";
|
|
92
91
|
allow: "allow";
|
|
92
|
+
error: "error";
|
|
93
93
|
strip: "strip";
|
|
94
94
|
}>;
|
|
95
95
|
type UnknownPropertyStrategy = z.infer<typeof UnknownPropertyStrategySchema>;
|
|
@@ -99,12 +99,12 @@ type UnknownPropertyStrategy = z.infer<typeof UnknownPropertyStrategySchema>;
|
|
|
99
99
|
declare const ImportOptionsSchema: z.ZodObject<{
|
|
100
100
|
onConflict: z.ZodEnum<{
|
|
101
101
|
error: "error";
|
|
102
|
-
skip: "skip";
|
|
103
102
|
update: "update";
|
|
103
|
+
skip: "skip";
|
|
104
104
|
}>;
|
|
105
105
|
onUnknownProperty: z.ZodDefault<z.ZodEnum<{
|
|
106
|
-
error: "error";
|
|
107
106
|
allow: "allow";
|
|
107
|
+
error: "error";
|
|
108
108
|
strip: "strip";
|
|
109
109
|
}>>;
|
|
110
110
|
validateReferences: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
export { ConflictStrategySchema, ExportOptionsSchema, ExportStreamOptionsSchema, FORMAT_VERSION, GraphDataHeaderSchema, GraphDataSchema, GraphDataSourceSchema, GraphInterchangeChunkSchema, ImportErrorSchema, ImportOptionsSchema, ImportResultSchema, InterchangeEdgeSchema, InterchangeNodeSchema, UnknownPropertyStrategySchema, exportGraph, exportGraphStream, importGraph, importGraphStream } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import { storeBackend } from '../chunk-
|
|
1
|
+
export { ConflictStrategySchema, ExportOptionsSchema, ExportStreamOptionsSchema, FORMAT_VERSION, GraphDataHeaderSchema, GraphDataSchema, GraphDataSourceSchema, GraphInterchangeChunkSchema, ImportErrorSchema, ImportOptionsSchema, ImportResultSchema, InterchangeEdgeSchema, InterchangeNodeSchema, UnknownPropertyStrategySchema, exportGraph, exportGraphStream, importGraph, importGraphStream } from '../chunk-VITTKBWF.js';
|
|
2
|
+
import '../chunk-SBPC5IP3.js';
|
|
3
|
+
import { storeBackend } from '../chunk-FSXTPBRN.js';
|
|
4
4
|
import '../chunk-35S6P5ZU.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-MIJKEVV7.js';
|
|
6
|
+
import '../chunk-FMMIX6N4.js';
|
|
7
|
+
import '../chunk-2L54C2C2.js';
|
|
8
|
+
import '../chunk-DK2S42XB.js';
|
|
9
9
|
import '../chunk-UR7W5YQK.js';
|
|
10
|
-
import '../chunk-
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
10
|
+
import '../chunk-B75XRV3O.js';
|
|
11
|
+
import '../chunk-S4KQ5LV4.js';
|
|
12
|
+
import '../chunk-KCO5EFJU.js';
|
|
13
13
|
import '../chunk-2EBMPJBO.js';
|
|
14
|
-
import '../chunk-
|
|
15
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-K3BUWSFR.js';
|
|
15
|
+
import '../chunk-6DCB664D.js';
|
|
16
16
|
import '../chunk-SNXVDZAJ.js';
|
|
17
17
|
import '../chunk-QMQLUA66.js';
|
|
18
18
|
import { getSearchableFields, resolveGraphVectorSlots } from '../chunk-PC2UBAUB.js';
|
|
19
|
-
import '../chunk-
|
|
20
|
-
import { TrustedImportError } from '../chunk-
|
|
19
|
+
import '../chunk-TVLKA4AY.js';
|
|
20
|
+
import { TrustedImportError } from '../chunk-4MB3AQAQ.js';
|
|
21
21
|
import '../chunk-G6Q5UM7U.js';
|
|
22
22
|
|
|
23
23
|
// src/interchange/trusted-import.ts
|
|
@@ -185,8 +185,16 @@ async function trustedImportGraphStream(store, chunks) {
|
|
|
185
185
|
{ dialect: backend.dialect }
|
|
186
186
|
);
|
|
187
187
|
}
|
|
188
|
+
const schemaVersion = store.introspect().schemaVersion;
|
|
189
|
+
const options = schemaVersion === void 0 ? void 0 : {
|
|
190
|
+
schemaWrite: {
|
|
191
|
+
graphId: store.graphId,
|
|
192
|
+
expectedVersion: schemaVersion
|
|
193
|
+
}
|
|
194
|
+
};
|
|
188
195
|
return trustedImport(
|
|
189
|
-
(session) => consumeTrustedChunks(store, session, chunks)
|
|
196
|
+
(session) => consumeTrustedChunks(store, session, chunks),
|
|
197
|
+
options
|
|
190
198
|
);
|
|
191
199
|
}
|
|
192
200
|
function* graphDataChunks(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/interchange/trusted-import.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n InsertEdgeParams,\n InsertNodeParams,\n TrustedImportSession,\n} from \"../backend/types\";\nimport type { GraphDef } from \"../core/define-graph\";\nimport { resolveGraphVectorSlots } from \"../core/embedding\";\nimport { getSearchableFields } from \"../core/searchable\";\nimport { TrustedImportError } from \"../errors\";\nimport { storeBackend } from \"../store/runtime-port\";\nimport type { Store } from \"../store/store\";\nimport type {\n GraphData,\n GraphInterchangeChunk,\n InterchangeEdge,\n InterchangeNode,\n} from \"./types\";\n\n/** Counts committed by a trusted initial import. */\nexport type TrustedImportResult = Readonly<{\n nodes: number;\n edges: number;\n}>;\n\nfunction rejectUnsupportedStoreFeatures<G extends GraphDef>(\n store: Store<G>,\n): void {\n if (store.historyEnabled) {\n throw new TrustedImportError(\n \"Trusted import does not support recorded-time history capture.\",\n \"history_unsupported\",\n { graphId: store.graphId },\n );\n }\n if (store.revisionTrackingEnabled) {\n throw new TrustedImportError(\n \"Trusted import does not support revision tracking.\",\n \"revision_tracking_unsupported\",\n { graphId: store.graphId },\n );\n }\n\n const uniqueKinds = Object.values(store.graph.nodes)\n .filter((registration) => (registration.unique?.length ?? 0) > 0)\n .map((registration) => registration.type.kind);\n if (uniqueKinds.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain node uniqueness sidecars.\",\n \"uniqueness_unsupported\",\n { graphId: store.graphId, nodeKinds: uniqueKinds },\n );\n }\n\n const searchableKinds = Object.values(store.graph.nodes)\n .filter(\n (registration) =>\n getSearchableFields(registration.type.schema).length > 0,\n )\n .map((registration) => registration.type.kind);\n if (searchableKinds.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain fulltext sidecars.\",\n \"fulltext_unsupported\",\n { graphId: store.graphId, nodeKinds: searchableKinds },\n );\n }\n\n const vectorSlots = resolveGraphVectorSlots(store.graph);\n if (vectorSlots.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain vector sidecars.\",\n \"vector_unsupported\",\n {\n graphId: store.graphId,\n fields: vectorSlots.map((slot) => `${slot.nodeKind}.${slot.fieldPath}`),\n },\n );\n }\n}\n\nfunction invalidStream(message: string): TrustedImportError {\n return new TrustedImportError(message, \"invalid_stream\");\n}\n\nfunction nodeParams(graphId: string, node: InterchangeNode): InsertNodeParams {\n return {\n graphId,\n kind: node.kind,\n id: node.id,\n props: node.properties,\n ...(node.validFrom === undefined ? {} : { validFrom: node.validFrom }),\n ...(node.validTo === undefined ? {} : { validTo: node.validTo }),\n };\n}\n\nfunction edgeParams(graphId: string, edge: InterchangeEdge): InsertEdgeParams {\n return {\n graphId,\n id: edge.id,\n kind: edge.kind,\n fromKind: edge.from.kind,\n fromId: edge.from.id,\n toKind: edge.to.kind,\n toId: edge.to.id,\n props: edge.properties,\n ...(edge.validFrom === undefined ? {} : { validFrom: edge.validFrom }),\n ...(edge.validTo === undefined ? {} : { validTo: edge.validTo }),\n };\n}\n\nasync function consumeTrustedChunks<G extends GraphDef>(\n store: Store<G>,\n session: TrustedImportSession,\n chunks:\n AsyncIterable<GraphInterchangeChunk> | Iterable<GraphInterchangeChunk>,\n): Promise<TrustedImportResult> {\n const nodeKinds = new Set(\n Object.values(store.graph.nodes).map(\n (registration) => registration.type.kind,\n ),\n );\n const edgeKinds = new Set(\n Object.values(store.graph.edges).map(\n (registration) => registration.type.kind,\n ),\n );\n let receivedHeader = false;\n let receivedEdges = false;\n let nodeCount = 0;\n let edgeCount = 0;\n\n for await (const chunk of chunks) {\n switch (chunk.type) {\n case \"header\": {\n if (receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream emitted more than one header.\",\n );\n }\n receivedHeader = true;\n break;\n }\n case \"nodes\": {\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream must start with a header.\",\n );\n }\n if (receivedEdges) {\n throw invalidStream(\n \"Trusted graph interchange stream cannot emit nodes after edges.\",\n );\n }\n const unknownKind = chunk.nodes.find(\n (node) => !nodeKinds.has(node.kind),\n )?.kind;\n if (unknownKind !== undefined) {\n throw invalidStream(\n `Unknown node kind in trusted import: ${unknownKind}`,\n );\n }\n await session.insertNodes(\n chunk.nodes.map((node) => nodeParams(store.graphId, node)),\n );\n nodeCount += chunk.nodes.length;\n break;\n }\n case \"edges\": {\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream must start with a header.\",\n );\n }\n receivedEdges = true;\n const invalidEdge = chunk.edges.find(\n (edge) =>\n !edgeKinds.has(edge.kind) ||\n !nodeKinds.has(edge.from.kind) ||\n !nodeKinds.has(edge.to.kind),\n );\n if (invalidEdge !== undefined) {\n throw invalidStream(\n `Unknown edge or endpoint kind in trusted import: ${invalidEdge.kind}`,\n );\n }\n await session.insertEdges(\n chunk.edges.map((edge) => edgeParams(store.graphId, edge)),\n );\n edgeCount += chunk.edges.length;\n break;\n }\n }\n }\n\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream ended before emitting a header.\",\n );\n }\n return { nodes: nodeCount, edges: edgeCount };\n}\n\n/**\n * Atomically imports a header-first stream into a fresh, dedicated database.\n *\n * This is an intentionally trusted path. It checks stream ordering and kind\n * names, but it does not validate properties, references, cardinality, or\n * conflicts. The caller must guarantee those invariants. Use\n * {@link importGraphStream} for untrusted data.\n */\nexport async function trustedImportGraphStream<G extends GraphDef>(\n store: Store<G>,\n chunks:\n AsyncIterable<GraphInterchangeChunk> | Iterable<GraphInterchangeChunk>,\n): Promise<TrustedImportResult> {\n rejectUnsupportedStoreFeatures(store);\n const backend = storeBackend(store);\n const trustedImport = backend.trustedImport;\n if (trustedImport === undefined) {\n throw new TrustedImportError(\n `The ${backend.dialect} backend does not support trusted import.`,\n \"backend_unsupported\",\n { dialect: backend.dialect },\n );\n }\n return trustedImport((session) =>\n consumeTrustedChunks(store, session, chunks),\n );\n}\n\nfunction* graphDataChunks(data: GraphData): Iterable<GraphInterchangeChunk> {\n const { nodes, edges, ...header } = data;\n yield { type: \"header\", header };\n yield { type: \"nodes\", nodes };\n yield { type: \"edges\", edges };\n}\n\n/** In-memory convenience wrapper around {@link trustedImportGraphStream}. */\nexport function trustedImportGraph<G extends GraphDef>(\n store: Store<G>,\n data: GraphData,\n): Promise<TrustedImportResult> {\n return trustedImportGraphStream(store, graphDataChunks(data));\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/interchange/trusted-import.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n InsertEdgeParams,\n InsertNodeParams,\n TrustedImportOptions,\n TrustedImportSession,\n} from \"../backend/types\";\nimport type { GraphDef } from \"../core/define-graph\";\nimport { resolveGraphVectorSlots } from \"../core/embedding\";\nimport { getSearchableFields } from \"../core/searchable\";\nimport { TrustedImportError } from \"../errors\";\nimport { storeBackend } from \"../store/runtime-port\";\nimport type { Store } from \"../store/store\";\nimport type {\n GraphData,\n GraphInterchangeChunk,\n InterchangeEdge,\n InterchangeNode,\n} from \"./types\";\n\n/** Counts committed by a trusted initial import. */\nexport type TrustedImportResult = Readonly<{\n nodes: number;\n edges: number;\n}>;\n\nfunction rejectUnsupportedStoreFeatures<G extends GraphDef>(\n store: Store<G>,\n): void {\n if (store.historyEnabled) {\n throw new TrustedImportError(\n \"Trusted import does not support recorded-time history capture.\",\n \"history_unsupported\",\n { graphId: store.graphId },\n );\n }\n if (store.revisionTrackingEnabled) {\n throw new TrustedImportError(\n \"Trusted import does not support revision tracking.\",\n \"revision_tracking_unsupported\",\n { graphId: store.graphId },\n );\n }\n\n const uniqueKinds = Object.values(store.graph.nodes)\n .filter((registration) => (registration.unique?.length ?? 0) > 0)\n .map((registration) => registration.type.kind);\n if (uniqueKinds.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain node uniqueness sidecars.\",\n \"uniqueness_unsupported\",\n { graphId: store.graphId, nodeKinds: uniqueKinds },\n );\n }\n\n const searchableKinds = Object.values(store.graph.nodes)\n .filter(\n (registration) =>\n getSearchableFields(registration.type.schema).length > 0,\n )\n .map((registration) => registration.type.kind);\n if (searchableKinds.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain fulltext sidecars.\",\n \"fulltext_unsupported\",\n { graphId: store.graphId, nodeKinds: searchableKinds },\n );\n }\n\n const vectorSlots = resolveGraphVectorSlots(store.graph);\n if (vectorSlots.length > 0) {\n throw new TrustedImportError(\n \"Trusted import does not maintain vector sidecars.\",\n \"vector_unsupported\",\n {\n graphId: store.graphId,\n fields: vectorSlots.map((slot) => `${slot.nodeKind}.${slot.fieldPath}`),\n },\n );\n }\n}\n\nfunction invalidStream(message: string): TrustedImportError {\n return new TrustedImportError(message, \"invalid_stream\");\n}\n\nfunction nodeParams(graphId: string, node: InterchangeNode): InsertNodeParams {\n return {\n graphId,\n kind: node.kind,\n id: node.id,\n props: node.properties,\n ...(node.validFrom === undefined ? {} : { validFrom: node.validFrom }),\n ...(node.validTo === undefined ? {} : { validTo: node.validTo }),\n };\n}\n\nfunction edgeParams(graphId: string, edge: InterchangeEdge): InsertEdgeParams {\n return {\n graphId,\n id: edge.id,\n kind: edge.kind,\n fromKind: edge.from.kind,\n fromId: edge.from.id,\n toKind: edge.to.kind,\n toId: edge.to.id,\n props: edge.properties,\n ...(edge.validFrom === undefined ? {} : { validFrom: edge.validFrom }),\n ...(edge.validTo === undefined ? {} : { validTo: edge.validTo }),\n };\n}\n\nasync function consumeTrustedChunks<G extends GraphDef>(\n store: Store<G>,\n session: TrustedImportSession,\n chunks:\n AsyncIterable<GraphInterchangeChunk> | Iterable<GraphInterchangeChunk>,\n): Promise<TrustedImportResult> {\n const nodeKinds = new Set(\n Object.values(store.graph.nodes).map(\n (registration) => registration.type.kind,\n ),\n );\n const edgeKinds = new Set(\n Object.values(store.graph.edges).map(\n (registration) => registration.type.kind,\n ),\n );\n let receivedHeader = false;\n let receivedEdges = false;\n let nodeCount = 0;\n let edgeCount = 0;\n\n for await (const chunk of chunks) {\n switch (chunk.type) {\n case \"header\": {\n if (receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream emitted more than one header.\",\n );\n }\n receivedHeader = true;\n break;\n }\n case \"nodes\": {\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream must start with a header.\",\n );\n }\n if (receivedEdges) {\n throw invalidStream(\n \"Trusted graph interchange stream cannot emit nodes after edges.\",\n );\n }\n const unknownKind = chunk.nodes.find(\n (node) => !nodeKinds.has(node.kind),\n )?.kind;\n if (unknownKind !== undefined) {\n throw invalidStream(\n `Unknown node kind in trusted import: ${unknownKind}`,\n );\n }\n await session.insertNodes(\n chunk.nodes.map((node) => nodeParams(store.graphId, node)),\n );\n nodeCount += chunk.nodes.length;\n break;\n }\n case \"edges\": {\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream must start with a header.\",\n );\n }\n receivedEdges = true;\n const invalidEdge = chunk.edges.find(\n (edge) =>\n !edgeKinds.has(edge.kind) ||\n !nodeKinds.has(edge.from.kind) ||\n !nodeKinds.has(edge.to.kind),\n );\n if (invalidEdge !== undefined) {\n throw invalidStream(\n `Unknown edge or endpoint kind in trusted import: ${invalidEdge.kind}`,\n );\n }\n await session.insertEdges(\n chunk.edges.map((edge) => edgeParams(store.graphId, edge)),\n );\n edgeCount += chunk.edges.length;\n break;\n }\n }\n }\n\n if (!receivedHeader) {\n throw invalidStream(\n \"Trusted graph interchange stream ended before emitting a header.\",\n );\n }\n return { nodes: nodeCount, edges: edgeCount };\n}\n\n/**\n * Atomically imports a header-first stream into a fresh, dedicated database.\n *\n * This is an intentionally trusted path. It checks stream ordering and kind\n * names, but it does not validate properties, references, cardinality, or\n * conflicts. The caller must guarantee those invariants. Use\n * {@link importGraphStream} for untrusted data.\n */\nexport async function trustedImportGraphStream<G extends GraphDef>(\n store: Store<G>,\n chunks:\n AsyncIterable<GraphInterchangeChunk> | Iterable<GraphInterchangeChunk>,\n): Promise<TrustedImportResult> {\n rejectUnsupportedStoreFeatures(store);\n const backend = storeBackend(store);\n const trustedImport = backend.trustedImport;\n if (trustedImport === undefined) {\n throw new TrustedImportError(\n `The ${backend.dialect} backend does not support trusted import.`,\n \"backend_unsupported\",\n { dialect: backend.dialect },\n );\n }\n const schemaVersion = store.introspect().schemaVersion;\n const options: TrustedImportOptions | undefined =\n schemaVersion === undefined ? undefined : (\n {\n schemaWrite: {\n graphId: store.graphId,\n expectedVersion: schemaVersion,\n },\n }\n );\n return trustedImport(\n (session) => consumeTrustedChunks(store, session, chunks),\n options,\n );\n}\n\nfunction* graphDataChunks(data: GraphData): Iterable<GraphInterchangeChunk> {\n const { nodes, edges, ...header } = data;\n yield { type: \"header\", header };\n yield { type: \"nodes\", nodes };\n yield { type: \"edges\", edges };\n}\n\n/** In-memory convenience wrapper around {@link trustedImportGraphStream}. */\nexport function trustedImportGraph<G extends GraphDef>(\n store: Store<G>,\n data: GraphData,\n): Promise<TrustedImportResult> {\n return trustedImportGraphStream(store, graphDataChunks(data));\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { G as GraphDef } from './define-graph-
|
|
3
|
-
import { S as SchemaDiff } from './materialize-indexes-
|
|
1
|
+
import { b as NodeType, c as AnyEdgeType, w as SchemaVersionRow, x as GraphBackend, y as SerializedSchema } from './types-Cjvkj0jA.js';
|
|
2
|
+
import { G as GraphDef } from './define-graph-SvYXOl78.js';
|
|
3
|
+
import { S as SchemaDiff } from './materialize-indexes-BD4V3svD.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* KindRegistry holds precomputed closures for ontological reasoning.
|
|
@@ -342,6 +342,28 @@ declare function assertSchemaCurrent<G extends GraphDef>(backend: GraphBackend,
|
|
|
342
342
|
* @returns The created schema version row
|
|
343
343
|
*/
|
|
344
344
|
declare function initializeSchema<G extends GraphDef>(backend: GraphBackend, graph: G): Promise<SchemaVersionRow>;
|
|
345
|
+
type MigrateSchemaOptions = Readonly<{
|
|
346
|
+
/**
|
|
347
|
+
* Commit even when a dropped kind still holds rows.
|
|
348
|
+
*
|
|
349
|
+
* **This does not preserve those rows.** They are immediately unreachable —
|
|
350
|
+
* nothing references the kind any more — and they are not safe from
|
|
351
|
+
* deletion either: `materializeRemovals` re-derives removals by walking
|
|
352
|
+
* schema-version history, so the next reconcile finds the dropped kind and
|
|
353
|
+
* hard-deletes its rows, including soft-deleted ones. The flag buys a
|
|
354
|
+
* committed schema, not retained data.
|
|
355
|
+
*
|
|
356
|
+
* If you need the rows, copy them out **before** committing. If you want
|
|
357
|
+
* them removed, prefer `Store.removeKinds()`, which queues the cleanup
|
|
358
|
+
* explicitly instead of relying on history reconciliation.
|
|
359
|
+
*
|
|
360
|
+
* Dropping an *empty* kind needs no flag — it strands nothing, and it is
|
|
361
|
+
* the last step of the documented three-deploy kind-removal flow.
|
|
362
|
+
*
|
|
363
|
+
* @defaultValue false
|
|
364
|
+
*/
|
|
365
|
+
discardDroppedKindRows?: boolean;
|
|
366
|
+
}>;
|
|
345
367
|
/**
|
|
346
368
|
* Migrates the schema to match the current graph definition.
|
|
347
369
|
*
|
|
@@ -352,12 +374,21 @@ declare function initializeSchema<G extends GraphDef>(backend: GraphBackend, gra
|
|
|
352
374
|
* active version since `currentVersion` was read, this throws
|
|
353
375
|
* `StaleVersionError`; the caller should refetch and retry.
|
|
354
376
|
*
|
|
377
|
+
* Folds the persisted graph extension into `graph` first, like every other
|
|
378
|
+
* commit path — kinds committed at runtime by `Store.evolve()` live in
|
|
379
|
+
* `schema_doc.extension`, so committing the caller's graph verbatim would
|
|
380
|
+
* erase them while leaving their rows behind. Property-level breaking
|
|
381
|
+
* changes (the documented "force the contract deploy" use) are unaffected.
|
|
382
|
+
*
|
|
355
383
|
* @param backend - The database backend
|
|
356
384
|
* @param graph - The current graph definition
|
|
357
385
|
* @param currentVersion - The current active schema version
|
|
386
|
+
* @param options - See {@link MigrateSchemaOptions}
|
|
358
387
|
* @returns The new version number
|
|
388
|
+
* @throws MigrationError with `reason: "kind-removal"` when the commit would
|
|
389
|
+
* drop a kind that still holds rows and `discardDroppedKindRows` is not set.
|
|
359
390
|
*/
|
|
360
|
-
declare function migrateSchema<G extends GraphDef>(backend: GraphBackend, graph: G, currentVersion: number): Promise<number>;
|
|
391
|
+
declare function migrateSchema<G extends GraphDef>(backend: GraphBackend, graph: G, currentVersion: number, options?: MigrateSchemaOptions): Promise<number>;
|
|
361
392
|
/**
|
|
362
393
|
* Rolls back the active schema to a previous version.
|
|
363
394
|
*
|
|
@@ -377,7 +408,11 @@ declare function migrateSchema<G extends GraphDef>(backend: GraphBackend, graph:
|
|
|
377
408
|
*/
|
|
378
409
|
declare function rollbackSchema(backend: GraphBackend, graphId: string, targetVersion: number): Promise<void>;
|
|
379
410
|
/**
|
|
380
|
-
* Gets the current active schema for a graph
|
|
411
|
+
* Gets the current active schema for a graph — the committed document itself,
|
|
412
|
+
* with the `nodes` / `edges` / `ontology` maps the database actually holds.
|
|
413
|
+
*
|
|
414
|
+
* This is the answer to "what kinds does this database already have?". Use
|
|
415
|
+
* {@link getCommittedSchemaVersion} when only the version number is needed.
|
|
381
416
|
*
|
|
382
417
|
* @param backend - The database backend
|
|
383
418
|
* @param graphId - The graph ID
|
|
@@ -435,6 +470,9 @@ declare function requiresMigration<G extends GraphDef>(backend: GraphBackend, gr
|
|
|
435
470
|
* further; it is a backward-compatible follow-up, not required for the
|
|
436
471
|
* round-trip win above.
|
|
437
472
|
*
|
|
473
|
+
* Returns only the version; for the document it names, see
|
|
474
|
+
* {@link getActiveSchema}.
|
|
475
|
+
*
|
|
438
476
|
* @param backend - The database backend
|
|
439
477
|
* @param graphId - The graph ID
|
|
440
478
|
* @returns The active committed version, or `undefined` if the schema has not
|
|
@@ -442,4 +480,4 @@ declare function requiresMigration<G extends GraphDef>(backend: GraphBackend, gr
|
|
|
442
480
|
*/
|
|
443
481
|
declare function getCommittedSchemaVersion(backend: GraphBackend, graphId: string): Promise<number | undefined>;
|
|
444
482
|
|
|
445
|
-
export { KindRegistry as K, type
|
|
483
|
+
export { KindRegistry as K, type MigrateSchemaOptions as M, type SchemaManagerOptions as S, type MigrationHookContext as a, type SchemaValidationResult as b, applyDeprecatedKinds as c, assertSchemaCurrent as d, ensureSchema as e, getCommittedSchemaVersion as f, getActiveSchema as g, getSchemaChanges as h, initializeSchema as i, isSchemaInitialized as j, loadAndMergeGraphExtensionDocument as k, loadActiveSchemaWithBootstrap as l, migrateSchema as m, rollbackSchema as n, parseSerializedSchema as p, requiresMigration as r };
|