@nicia-ai/typegraph 0.37.0 → 0.38.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/README.md +12 -10
- package/dist/backend/drizzle/indexes.cjs +32 -0
- package/dist/backend/drizzle/indexes.cjs.map +1 -0
- package/dist/backend/drizzle/indexes.d.cts +43 -0
- package/dist/backend/drizzle/indexes.d.ts +43 -0
- package/dist/backend/drizzle/indexes.js +11 -0
- package/dist/backend/drizzle/indexes.js.map +1 -0
- package/dist/backend/index.cjs +161 -0
- package/dist/backend/index.cjs.map +1 -0
- package/dist/backend/index.d.cts +3 -0
- package/dist/backend/index.d.ts +3 -0
- package/dist/backend/index.js +8 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/postgres/index.cjs +32 -28
- package/dist/backend/postgres/index.d.cts +13 -12
- package/dist/backend/postgres/index.d.ts +13 -12
- package/dist/backend/postgres/index.js +19 -15
- package/dist/backend/postgres/pglite-store.cjs +67 -0
- package/dist/backend/postgres/pglite-store.cjs.map +1 -0
- package/dist/backend/postgres/pglite-store.d.cts +38 -0
- package/dist/backend/postgres/pglite-store.d.ts +38 -0
- package/dist/backend/postgres/pglite-store.js +65 -0
- package/dist/backend/postgres/pglite-store.js.map +1 -0
- package/dist/backend/postgres/pglite.cjs +25 -50
- package/dist/backend/postgres/pglite.cjs.map +1 -1
- package/dist/backend/postgres/pglite.d.cts +10 -9
- package/dist/backend/postgres/pglite.d.ts +10 -9
- package/dist/backend/postgres/pglite.js +20 -52
- package/dist/backend/postgres/pglite.js.map +1 -1
- package/dist/backend/sqlite/index.cjs +29 -25
- package/dist/backend/sqlite/index.d.cts +11 -11
- package/dist/backend/sqlite/index.d.ts +11 -11
- package/dist/backend/sqlite/index.js +17 -13
- package/dist/backend/sqlite/libsql.cjs +23 -19
- package/dist/backend/sqlite/libsql.cjs.map +1 -1
- package/dist/backend/sqlite/libsql.d.cts +9 -10
- package/dist/backend/sqlite/libsql.d.ts +9 -10
- package/dist/backend/sqlite/libsql.js +19 -15
- package/dist/backend/sqlite/libsql.js.map +1 -1
- package/dist/backend/sqlite/local-store.cjs +72 -0
- package/dist/backend/sqlite/local-store.cjs.map +1 -0
- package/dist/backend/sqlite/local-store.d.cts +42 -0
- package/dist/backend/sqlite/local-store.d.ts +42 -0
- package/dist/backend/sqlite/local-store.js +67 -0
- package/dist/backend/sqlite/local-store.js.map +1 -0
- package/dist/backend/sqlite/local.cjs +28 -183
- package/dist/backend/sqlite/local.cjs.map +1 -1
- package/dist/backend/sqlite/local.d.cts +8 -81
- package/dist/backend/sqlite/local.d.ts +8 -81
- package/dist/backend/sqlite/local.js +20 -180
- package/dist/backend/sqlite/local.js.map +1 -1
- package/dist/chunk-2EBMPJBO.js +16 -0
- package/dist/chunk-2EBMPJBO.js.map +1 -0
- package/dist/{chunk-NBP2WTJW.cjs → chunk-2SL7OGPR.cjs} +2900 -1597
- package/dist/chunk-2SL7OGPR.cjs.map +1 -0
- package/dist/chunk-35S6P5ZU.js +27 -0
- package/dist/chunk-35S6P5ZU.js.map +1 -0
- package/dist/chunk-3LKL3S6X.js +50 -0
- package/dist/chunk-3LKL3S6X.js.map +1 -0
- package/dist/chunk-6G5CQ6JX.js +47 -0
- package/dist/chunk-6G5CQ6JX.js.map +1 -0
- package/dist/chunk-6XDBRDZE.js +312 -0
- package/dist/chunk-6XDBRDZE.js.map +1 -0
- package/dist/chunk-764JHTLT.cjs +15 -0
- package/dist/chunk-764JHTLT.cjs.map +1 -0
- package/dist/chunk-76HE7DJP.js +68 -0
- package/dist/chunk-76HE7DJP.js.map +1 -0
- package/dist/{chunk-VGDDG3XJ.cjs → chunk-7M3NACL3.cjs} +12 -12
- package/dist/{chunk-VGDDG3XJ.cjs.map → chunk-7M3NACL3.cjs.map} +1 -1
- package/dist/{chunk-NXQFATMF.cjs → chunk-7VLCN3JB.cjs} +153 -123
- package/dist/chunk-7VLCN3JB.cjs.map +1 -0
- package/dist/{chunk-552KNYQJ.js → chunk-A2FGSWMQ.js} +1907 -607
- package/dist/chunk-A2FGSWMQ.js.map +1 -0
- package/dist/chunk-AOL64O4Z.js +165 -0
- package/dist/chunk-AOL64O4Z.js.map +1 -0
- package/dist/{chunk-27SSDCEP.cjs → chunk-B63IFHXR.cjs} +53 -74
- package/dist/chunk-B63IFHXR.cjs.map +1 -0
- package/dist/{chunk-3XXGYU62.cjs → chunk-BKAKAVRW.cjs} +56 -53
- package/dist/chunk-BKAKAVRW.cjs.map +1 -0
- package/dist/{chunk-YTSN73ND.js → chunk-BQITNFQJ.js} +3 -3
- package/dist/{chunk-YTSN73ND.js.map → chunk-BQITNFQJ.js.map} +1 -1
- package/dist/{chunk-NUIG3BCV.cjs → chunk-CQC6VBAF.cjs} +93 -155
- package/dist/chunk-CQC6VBAF.cjs.map +1 -0
- package/dist/{chunk-6EEO3OVU.cjs → chunk-CWX77JB4.cjs} +22 -59
- package/dist/chunk-CWX77JB4.cjs.map +1 -0
- package/dist/{chunk-UGZUAYAR.js → chunk-D7PG5D5K.js} +4 -3
- package/dist/chunk-D7PG5D5K.js.map +1 -0
- package/dist/chunk-DDCIXXOO.js +9 -0
- package/dist/chunk-DDCIXXOO.js.map +1 -0
- package/dist/chunk-DDCYVIVV.cjs +44 -0
- package/dist/chunk-DDCYVIVV.cjs.map +1 -0
- package/dist/{chunk-XPCZADMT.cjs → chunk-DOVMTPKE.cjs} +89 -27
- package/dist/chunk-DOVMTPKE.cjs.map +1 -0
- package/dist/{chunk-5PNMDJ7J.js → chunk-DPNA466P.js} +14 -9
- package/dist/chunk-DPNA466P.js.map +1 -0
- package/dist/{chunk-BYPOGQWK.js → chunk-DRACN6XG.js} +6 -4
- package/dist/chunk-DRACN6XG.js.map +1 -0
- package/dist/chunk-E6TXEISH.cjs +175 -0
- package/dist/chunk-E6TXEISH.cjs.map +1 -0
- package/dist/{chunk-TKT2XHED.js → chunk-E6YZRKMM.js} +13 -12
- package/dist/chunk-E6YZRKMM.js.map +1 -0
- package/dist/{chunk-3C2RYI6L.cjs → chunk-EOJFGECD.cjs} +11 -11
- package/dist/chunk-EOJFGECD.cjs.map +1 -0
- package/dist/{chunk-XWV4JT34.js → chunk-ERZ4QPQX.js} +27 -22
- package/dist/chunk-ERZ4QPQX.js.map +1 -0
- package/dist/{chunk-DFVLCOP6.js → chunk-EZH7FNUS.js} +3 -3
- package/dist/{chunk-DFVLCOP6.js.map → chunk-EZH7FNUS.js.map} +1 -1
- package/dist/{chunk-WWFHO375.cjs → chunk-FJMPR3OH.cjs} +4 -3
- package/dist/chunk-FJMPR3OH.cjs.map +1 -0
- package/dist/chunk-FMNUSGZ4.cjs +12 -0
- package/dist/chunk-FMNUSGZ4.cjs.map +1 -0
- package/dist/{chunk-K3Q3LJY3.js → chunk-G32AO634.js} +201 -100
- package/dist/chunk-G32AO634.js.map +1 -0
- package/dist/{chunk-EXU3RASM.js → chunk-G3CSQLLT.js} +20 -474
- package/dist/chunk-G3CSQLLT.js.map +1 -0
- package/dist/chunk-GNPGGLAE.cjs +212 -0
- package/dist/chunk-GNPGGLAE.cjs.map +1 -0
- package/dist/{chunk-QARBLBXT.cjs → chunk-GUUWKPTK.cjs} +7 -7
- package/dist/{chunk-QARBLBXT.cjs.map → chunk-GUUWKPTK.cjs.map} +1 -1
- package/dist/chunk-GYA4JRP5.js +31 -0
- package/dist/chunk-GYA4JRP5.js.map +1 -0
- package/dist/chunk-I6FX7AAG.js +39 -0
- package/dist/chunk-I6FX7AAG.js.map +1 -0
- package/dist/chunk-IMQKXL4E.cjs +12 -0
- package/dist/{chunk-QSXTWU4U.cjs.map → chunk-IMQKXL4E.cjs.map} +1 -1
- package/dist/chunk-J6IJARLG.js +94 -0
- package/dist/chunk-J6IJARLG.js.map +1 -0
- package/dist/{chunk-W63OVYY4.js → chunk-K34OPSJK.js} +3 -3
- package/dist/{chunk-W63OVYY4.js.map → chunk-K34OPSJK.js.map} +1 -1
- package/dist/{chunk-TGOMW4MB.cjs → chunk-KCLZHYPU.cjs} +110 -109
- package/dist/chunk-KCLZHYPU.cjs.map +1 -0
- package/dist/{chunk-XGPUQ56G.js → chunk-KFLXWVUJ.js} +4 -38
- package/dist/chunk-KFLXWVUJ.js.map +1 -0
- package/dist/{chunk-3DS7Z4T4.cjs → chunk-LZ3TVJY4.cjs} +44 -43
- package/dist/chunk-LZ3TVJY4.cjs.map +1 -0
- package/dist/{chunk-UXLSNRYL.js → chunk-MTNEGGM2.js} +4 -4
- package/dist/chunk-MTNEGGM2.js.map +1 -0
- package/dist/{chunk-IP3CGGPA.cjs → chunk-N2V3HJFV.cjs} +92 -185
- package/dist/chunk-N2V3HJFV.cjs.map +1 -0
- package/dist/chunk-NAUA4PW5.cjs +28 -0
- package/dist/chunk-NAUA4PW5.cjs.map +1 -0
- package/dist/chunk-NMQ6C6TS.cjs +61 -0
- package/dist/chunk-NMQ6C6TS.cjs.map +1 -0
- package/dist/{chunk-2N6EOBTH.cjs → chunk-NPWACFQJ.cjs} +58 -53
- package/dist/chunk-NPWACFQJ.cjs.map +1 -0
- package/dist/{chunk-5KEQ74YU.cjs → chunk-NT6ILURI.cjs} +9 -86
- package/dist/chunk-NT6ILURI.cjs.map +1 -0
- package/dist/chunk-NU23DUSJ.cjs +192 -0
- package/dist/chunk-NU23DUSJ.cjs.map +1 -0
- package/dist/{chunk-WOJMKB3N.cjs → chunk-NWYCOFEZ.cjs} +1677 -308
- package/dist/chunk-NWYCOFEZ.cjs.map +1 -0
- package/dist/{chunk-3GH67G4Z.cjs → chunk-O5H62ZWJ.cjs} +4 -42
- package/dist/chunk-O5H62ZWJ.cjs.map +1 -0
- package/dist/{chunk-3SLPDKHQ.js → chunk-PH4IJ3V5.js} +5 -77
- package/dist/chunk-PH4IJ3V5.js.map +1 -0
- package/dist/chunk-PWXGB77L.cjs +56 -0
- package/dist/chunk-PWXGB77L.cjs.map +1 -0
- package/dist/chunk-PZHC5GCD.js +193 -0
- package/dist/chunk-PZHC5GCD.js.map +1 -0
- package/dist/chunk-QMQLUA66.js +12 -0
- package/dist/chunk-QMQLUA66.js.map +1 -0
- package/dist/{chunk-5WWVZMVX.js → chunk-QZ7A6HBM.js} +2 -2
- package/dist/{chunk-5WWVZMVX.js.map → chunk-QZ7A6HBM.js.map} +1 -1
- package/dist/{chunk-VKGKDOKR.js → chunk-RQPRCEIO.js} +1539 -206
- package/dist/chunk-RQPRCEIO.js.map +1 -0
- package/dist/chunk-RW24SAHI.cjs +74 -0
- package/dist/chunk-RW24SAHI.cjs.map +1 -0
- package/dist/{chunk-BVRDGYXQ.cjs → chunk-SAFZ6JTI.cjs} +14 -9
- package/dist/chunk-SAFZ6JTI.cjs.map +1 -0
- package/dist/{chunk-L7HQ2OSI.js → chunk-SCTZRFW5.js} +87 -166
- package/dist/chunk-SCTZRFW5.js.map +1 -0
- package/dist/{chunk-5KPNWT6X.js → chunk-SDHV2MWU.js} +24 -45
- package/dist/chunk-SDHV2MWU.js.map +1 -0
- package/dist/chunk-SVJ5GEXW.cjs +45 -0
- package/dist/chunk-SVJ5GEXW.cjs.map +1 -0
- package/dist/chunk-SVUKGWSN.cjs +102 -0
- package/dist/chunk-SVUKGWSN.cjs.map +1 -0
- package/dist/chunk-TAUGGLNQ.js +59 -0
- package/dist/chunk-TAUGGLNQ.js.map +1 -0
- package/dist/{chunk-J4IUSYFF.js → chunk-TE5ZA4VX.js} +69 -27
- package/dist/chunk-TE5ZA4VX.js.map +1 -0
- package/dist/{chunk-A42GCBGX.cjs → chunk-TRF4EBJT.cjs} +6 -4
- package/dist/chunk-TRF4EBJT.cjs.map +1 -0
- package/dist/{chunk-KQJ54OG5.js → chunk-U4JDJKPD.js} +19 -56
- package/dist/chunk-U4JDJKPD.js.map +1 -0
- package/dist/chunk-UH2USOMG.cjs +627 -0
- package/dist/chunk-UH2USOMG.cjs.map +1 -0
- package/dist/{chunk-RCVLFTCT.js → chunk-UPXDVI3T.js} +13 -12
- package/dist/chunk-UPXDVI3T.js.map +1 -0
- package/dist/{chunk-5VQM6VWP.cjs → chunk-UWG5GX6E.cjs} +2 -2
- package/dist/{chunk-5VQM6VWP.cjs.map → chunk-UWG5GX6E.cjs.map} +1 -1
- package/dist/{chunk-3RWZPJKV.js → chunk-VBH7ZXSZ.js} +21 -78
- package/dist/chunk-VBH7ZXSZ.js.map +1 -0
- package/dist/{chunk-K5UBVGJN.js → chunk-VDYA2HMS.js} +6 -6
- package/dist/{chunk-K5UBVGJN.js.map → chunk-VDYA2HMS.js.map} +1 -1
- package/dist/chunk-X4PVHAZ6.cjs +83 -0
- package/dist/chunk-X4PVHAZ6.cjs.map +1 -0
- package/dist/{chunk-UYQMBBWJ.js → chunk-X6CNEA32.js} +23 -20
- package/dist/chunk-X6CNEA32.js.map +1 -0
- package/dist/chunk-X6RDQ5NB.cjs +335 -0
- package/dist/chunk-X6RDQ5NB.cjs.map +1 -0
- package/dist/chunk-XD6X7O5R.js +184 -0
- package/dist/chunk-XD6X7O5R.js.map +1 -0
- package/dist/{chunk-DIQ3AV5W.cjs → chunk-XFY73JWD.cjs} +324 -224
- package/dist/chunk-XFY73JWD.cjs.map +1 -0
- package/dist/{chunk-DEFQM7JU.cjs → chunk-XRU7V7FF.cjs} +7 -7
- package/dist/{chunk-DEFQM7JU.cjs.map → chunk-XRU7V7FF.cjs.map} +1 -1
- package/dist/{chunk-TPF25IG6.js → chunk-XZA3Y4YH.js} +3 -3
- package/dist/{chunk-TPF25IG6.js.map → chunk-XZA3Y4YH.js.map} +1 -1
- package/dist/chunk-Y7M44XEK.js +462 -0
- package/dist/chunk-Y7M44XEK.js.map +1 -0
- package/dist/{chunk-RRSNR3TP.js → chunk-YIRLBUNN.js} +3 -3
- package/dist/{chunk-RRSNR3TP.js.map → chunk-YIRLBUNN.js.map} +1 -1
- package/dist/{chunk-IXGYRP2P.js → chunk-YJDSPA5E.js} +79 -49
- package/dist/chunk-YJDSPA5E.js.map +1 -0
- package/dist/{chunk-JBNOGRKW.cjs → chunk-YLINFV7Z.cjs} +157 -115
- package/dist/chunk-YLINFV7Z.cjs.map +1 -0
- package/dist/{chunk-QERAIDRJ.js → chunk-Z2PPIVOO.js} +82 -22
- package/dist/chunk-Z2PPIVOO.js.map +1 -0
- package/dist/chunk-Z5QHVL5U.cjs +12 -0
- package/dist/chunk-Z5QHVL5U.cjs.map +1 -0
- package/dist/chunk-ZDH3DX3C.cjs +30 -0
- package/dist/chunk-ZDH3DX3C.cjs.map +1 -0
- package/dist/chunk-ZE6NVENI.js +77 -0
- package/dist/chunk-ZE6NVENI.js.map +1 -0
- package/dist/chunk-ZHX4KEM7.cjs +49 -0
- package/dist/chunk-ZHX4KEM7.cjs.map +1 -0
- package/dist/chunk-ZKZAIX42.cjs +479 -0
- package/dist/chunk-ZKZAIX42.cjs.map +1 -0
- package/dist/{chunk-TEDRJXOG.cjs → chunk-ZY4GXIVN.cjs} +5 -5
- package/dist/{chunk-TEDRJXOG.cjs.map → chunk-ZY4GXIVN.cjs.map} +1 -1
- package/dist/core/index.cjs +117 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +225 -0
- package/dist/core/index.d.ts +225 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/{ddl-CS0KUVwB.d.ts → ddl-Dx3Z0_WC.d.ts} +3 -3
- package/dist/{ddl-BD-ZfKeX.d.cts → ddl-J6sDyABg.d.cts} +3 -3
- package/dist/define-graph-CzEvA_8F.d.cts +174 -0
- package/dist/define-graph-DRo9xpYN.d.ts +174 -0
- package/dist/{extension-types-BM2ACfYO.d.cts → extension-types-BLEVH4SG.d.cts} +1 -1
- package/dist/{extension-types-BM2ACfYO.d.ts → extension-types-BLEVH4SG.d.ts} +1 -1
- package/dist/graph-extension/index.cjs +21 -19
- package/dist/graph-extension/index.d.cts +4 -4
- package/dist/graph-extension/index.d.ts +4 -4
- package/dist/graph-extension/index.js +6 -4
- package/dist/graph-merge/index.cjs +265 -214
- package/dist/graph-merge/index.cjs.map +1 -1
- package/dist/graph-merge/index.d.cts +8 -89
- package/dist/graph-merge/index.d.ts +8 -89
- package/dist/graph-merge/index.js +141 -90
- package/dist/graph-merge/index.js.map +1 -1
- package/dist/{index-BeacbPoe.d.ts → index-BD_3TCgh.d.ts} +6 -4
- package/dist/{index-BPM59vsg.d.cts → index-BihFPsPu.d.cts} +6 -4
- package/dist/{fulltext-strategy-C27vXaeB.d.cts → index-Bq7vSPHy.d.ts} +3195 -2646
- package/dist/{fulltext-strategy-DebsMrqg.d.ts → index-CrFL_ENI.d.cts} +3195 -2646
- package/dist/index.cjs +326 -315
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +59 -240
- package/dist/index.d.ts +59 -240
- package/dist/index.js +46 -79
- package/dist/index.js.map +1 -1
- package/dist/indexes/index.cjs +26 -38
- package/dist/indexes/index.d.cts +6 -41
- package/dist/indexes/index.d.ts +6 -41
- package/dist/indexes/index.js +14 -10
- package/dist/interchange/index.cjs +48 -39
- package/dist/interchange/index.cjs.map +1 -1
- package/dist/interchange/index.d.cts +7 -8
- package/dist/interchange/index.d.ts +7 -8
- package/dist/interchange/index.js +23 -14
- package/dist/interchange/index.js.map +1 -1
- package/dist/local-options-CZ1BnIoF.d.cts +29 -0
- package/dist/local-options-CZ1BnIoF.d.ts +29 -0
- package/dist/{manager-D00_NXvT.d.ts → manager-CASfhmzV.d.ts} +4 -173
- package/dist/{manager-nU1vTJLy.d.cts → manager-nCEJiYBb.d.cts} +4 -173
- package/dist/{materialize-indexes-zK2J_flP.d.ts → materialize-indexes-D4iei4Kp.d.ts} +1 -1
- package/dist/{materialize-indexes-CuR3gAZb.d.cts → materialize-indexes-ExQ6OrAh.d.cts} +1 -1
- package/dist/{postgres-IaBA4RgE.d.ts → postgres-Cl1ZAN1G.d.ts} +1 -1
- package/dist/{postgres-YrYmPlaU.d.cts → postgres-DMgIKQU-.d.cts} +1 -1
- package/dist/postgres-execution-fKW0qRiN.d.cts +14 -0
- package/dist/postgres-execution-fKW0qRiN.d.ts +14 -0
- package/dist/profiler/index.cjs +9 -8
- package/dist/profiler/index.cjs.map +1 -1
- package/dist/profiler/index.d.cts +9 -17
- package/dist/profiler/index.d.ts +9 -17
- package/dist/profiler/index.js +8 -7
- package/dist/profiler/index.js.map +1 -1
- package/dist/provenance/index.cjs +61 -55
- package/dist/provenance/index.cjs.map +1 -1
- package/dist/provenance/index.d.cts +7 -8
- package/dist/provenance/index.d.ts +7 -8
- package/dist/provenance/index.js +34 -28
- package/dist/provenance/index.js.map +1 -1
- package/dist/schema/index.cjs +46 -37
- package/dist/schema/index.cjs.map +1 -1
- package/dist/schema/index.d.cts +8 -10
- package/dist/schema/index.d.ts +8 -10
- package/dist/schema/index.js +22 -13
- package/dist/schema/index.js.map +1 -1
- package/dist/{sqlite-BUOHPx7p.d.ts → sqlite-BDkW39aa.d.cts} +1 -1
- package/dist/{sqlite-Pp8O19WE.d.cts → sqlite-CYfhvESj.d.ts} +1 -1
- package/dist/sqlite-execution-DwbE2a9y.d.cts +32 -0
- package/dist/sqlite-execution-DwbE2a9y.d.ts +32 -0
- package/dist/{store-view-X96Rd00T.d.cts → store-view-BoHqdHjB.d.cts} +394 -1393
- package/dist/{store-view-ANL6mTph.d.ts → store-view-Ctq-3OHy.d.ts} +394 -1393
- package/dist/temporal-BC_NQV5Y.d.cts +281 -0
- package/dist/temporal-DqtOEo_B.d.ts +281 -0
- package/dist/{types-r-Zyq2Hz.d.cts → types-COq3-vMC.d.cts} +2 -2
- package/dist/{types-wsvuBgPK.d.ts → types-CUevi_D1.d.ts} +2 -2
- package/dist/{where-CJOpJj3a.d.ts → where-BdE_cYtx.d.ts} +5 -5
- package/dist/{where-K3uBP33l.d.cts → where-C92TXCzT.d.cts} +5 -5
- package/package.json +37 -6
- package/dist/chunk-27SSDCEP.cjs.map +0 -1
- package/dist/chunk-2N6EOBTH.cjs.map +0 -1
- package/dist/chunk-3C2RYI6L.cjs.map +0 -1
- package/dist/chunk-3DS7Z4T4.cjs.map +0 -1
- package/dist/chunk-3GH67G4Z.cjs.map +0 -1
- package/dist/chunk-3RWZPJKV.js.map +0 -1
- package/dist/chunk-3SLPDKHQ.js.map +0 -1
- package/dist/chunk-3XXGYU62.cjs.map +0 -1
- package/dist/chunk-44TA22QT.js +0 -1478
- package/dist/chunk-44TA22QT.js.map +0 -1
- package/dist/chunk-552KNYQJ.js.map +0 -1
- package/dist/chunk-5KEQ74YU.cjs.map +0 -1
- package/dist/chunk-5KPNWT6X.js.map +0 -1
- package/dist/chunk-5PNMDJ7J.js.map +0 -1
- package/dist/chunk-6EEO3OVU.cjs.map +0 -1
- package/dist/chunk-7YSP4V4R.cjs +0 -69
- package/dist/chunk-7YSP4V4R.cjs.map +0 -1
- package/dist/chunk-A42GCBGX.cjs.map +0 -1
- package/dist/chunk-BVRDGYXQ.cjs.map +0 -1
- package/dist/chunk-BYPOGQWK.js.map +0 -1
- package/dist/chunk-CUHM5CWJ.cjs +0 -12
- package/dist/chunk-CUHM5CWJ.cjs.map +0 -1
- package/dist/chunk-DIQ3AV5W.cjs.map +0 -1
- package/dist/chunk-EXU3RASM.js.map +0 -1
- package/dist/chunk-IP3CGGPA.cjs.map +0 -1
- package/dist/chunk-IPSVVTWT.cjs +0 -1540
- package/dist/chunk-IPSVVTWT.cjs.map +0 -1
- package/dist/chunk-IXGYRP2P.js.map +0 -1
- package/dist/chunk-J4IUSYFF.js.map +0 -1
- package/dist/chunk-JBNOGRKW.cjs.map +0 -1
- package/dist/chunk-K3Q3LJY3.js.map +0 -1
- package/dist/chunk-KQJ54OG5.js.map +0 -1
- package/dist/chunk-L7HQ2OSI.js.map +0 -1
- package/dist/chunk-M6VES7V6.js +0 -239
- package/dist/chunk-M6VES7V6.js.map +0 -1
- package/dist/chunk-NBP2WTJW.cjs.map +0 -1
- package/dist/chunk-NUIG3BCV.cjs.map +0 -1
- package/dist/chunk-NXQFATMF.cjs.map +0 -1
- package/dist/chunk-OHMP6N2J.js +0 -47
- package/dist/chunk-OHMP6N2J.js.map +0 -1
- package/dist/chunk-QERAIDRJ.js.map +0 -1
- package/dist/chunk-QSXTWU4U.cjs +0 -12
- package/dist/chunk-RCVLFTCT.js.map +0 -1
- package/dist/chunk-TGOMW4MB.cjs.map +0 -1
- package/dist/chunk-TKT2XHED.js.map +0 -1
- package/dist/chunk-UGZUAYAR.js.map +0 -1
- package/dist/chunk-UXLSNRYL.js.map +0 -1
- package/dist/chunk-UYQMBBWJ.js.map +0 -1
- package/dist/chunk-VKGKDOKR.js.map +0 -1
- package/dist/chunk-VL2V6PEN.cjs +0 -261
- package/dist/chunk-VL2V6PEN.cjs.map +0 -1
- package/dist/chunk-WOJMKB3N.cjs.map +0 -1
- package/dist/chunk-WWFHO375.cjs.map +0 -1
- package/dist/chunk-XGPUQ56G.js.map +0 -1
- package/dist/chunk-XGU7DZDA.cjs +0 -1095
- package/dist/chunk-XGU7DZDA.cjs.map +0 -1
- package/dist/chunk-XPCZADMT.cjs.map +0 -1
- package/dist/chunk-XWV4JT34.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/interchange/trusted-import.ts"],"names":["TrustedImportError","getSearchableFields","resolveGraphVectorSlots"],"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 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 trustedImport = store.backend.trustedImport;\n if (trustedImport === undefined) {\n throw new TrustedImportError(\n `The ${store.backend.dialect} backend does not support trusted import.`,\n \"backend_unsupported\",\n { dialect: store.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":"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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,12 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { G as GraphDef } from '../
|
|
3
|
-
import {
|
|
4
|
-
import '../extension-types-
|
|
5
|
-
import '../
|
|
6
|
-
import '
|
|
7
|
-
import '
|
|
8
|
-
import '
|
|
9
|
-
import '../materialize-indexes-CuR3gAZb.cjs';
|
|
2
|
+
import { G as GraphDef } from '../define-graph-CzEvA_8F.cjs';
|
|
3
|
+
import { a as Store } from '../store-view-BoHqdHjB.cjs';
|
|
4
|
+
import '../extension-types-BLEVH4SG.cjs';
|
|
5
|
+
import '../index-CrFL_ENI.cjs';
|
|
6
|
+
import '../temporal-BC_NQV5Y.cjs';
|
|
7
|
+
import '../manager-nCEJiYBb.cjs';
|
|
8
|
+
import '../materialize-indexes-ExQ6OrAh.cjs';
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* Graph interchange format types.
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { G as GraphDef } from '../
|
|
3
|
-
import {
|
|
4
|
-
import '../extension-types-
|
|
5
|
-
import '../
|
|
6
|
-
import '
|
|
7
|
-
import '
|
|
8
|
-
import '
|
|
9
|
-
import '../materialize-indexes-zK2J_flP.js';
|
|
2
|
+
import { G as GraphDef } from '../define-graph-DRo9xpYN.js';
|
|
3
|
+
import { a as Store } from '../store-view-Ctq-3OHy.js';
|
|
4
|
+
import '../extension-types-BLEVH4SG.js';
|
|
5
|
+
import '../index-Bq7vSPHy.js';
|
|
6
|
+
import '../temporal-DqtOEo_B.js';
|
|
7
|
+
import '../manager-CASfhmzV.js';
|
|
8
|
+
import '../materialize-indexes-D4iei4Kp.js';
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* Graph interchange format types.
|
|
@@ -1,16 +1,24 @@
|
|
|
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 '../chunk-
|
|
1
|
+
export { ConflictStrategySchema, ExportOptionsSchema, ExportStreamOptionsSchema, FORMAT_VERSION, GraphDataHeaderSchema, GraphDataSchema, GraphDataSourceSchema, GraphInterchangeChunkSchema, ImportErrorSchema, ImportOptionsSchema, ImportResultSchema, InterchangeEdgeSchema, InterchangeNodeSchema, UnknownPropertyStrategySchema, exportGraph, exportGraphStream, importGraph, importGraphStream } from '../chunk-E6YZRKMM.js';
|
|
2
|
+
import '../chunk-UPXDVI3T.js';
|
|
3
|
+
import { storeBackend } from '../chunk-RQPRCEIO.js';
|
|
4
|
+
import '../chunk-35S6P5ZU.js';
|
|
5
|
+
import '../chunk-PZHC5GCD.js';
|
|
6
|
+
import '../chunk-J6IJARLG.js';
|
|
7
|
+
import '../chunk-ZE6NVENI.js';
|
|
4
8
|
import '../chunk-UR7W5YQK.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
10
|
-
import '../chunk-
|
|
11
|
-
import
|
|
9
|
+
import '../chunk-KFLXWVUJ.js';
|
|
10
|
+
import '../chunk-PH4IJ3V5.js';
|
|
11
|
+
import '../chunk-I6FX7AAG.js';
|
|
12
|
+
import '../chunk-2EBMPJBO.js';
|
|
13
|
+
import '../chunk-G3CSQLLT.js';
|
|
14
|
+
import '../chunk-DDCIXXOO.js';
|
|
15
|
+
import '../chunk-Y7M44XEK.js';
|
|
16
|
+
import '../chunk-6XDBRDZE.js';
|
|
12
17
|
import '../chunk-SNXVDZAJ.js';
|
|
13
|
-
import
|
|
18
|
+
import '../chunk-QMQLUA66.js';
|
|
19
|
+
import { getSearchableFields, resolveGraphVectorSlots } from '../chunk-PC2UBAUB.js';
|
|
20
|
+
import '../chunk-XZA3Y4YH.js';
|
|
21
|
+
import { TrustedImportError } from '../chunk-DPNA466P.js';
|
|
14
22
|
import '../chunk-G6Q5UM7U.js';
|
|
15
23
|
|
|
16
24
|
// src/interchange/trusted-import.ts
|
|
@@ -169,12 +177,13 @@ async function consumeTrustedChunks(store, session, chunks) {
|
|
|
169
177
|
}
|
|
170
178
|
async function trustedImportGraphStream(store, chunks) {
|
|
171
179
|
rejectUnsupportedStoreFeatures(store);
|
|
172
|
-
const
|
|
180
|
+
const backend = storeBackend(store);
|
|
181
|
+
const trustedImport = backend.trustedImport;
|
|
173
182
|
if (trustedImport === void 0) {
|
|
174
183
|
throw new TrustedImportError(
|
|
175
|
-
`The ${
|
|
184
|
+
`The ${backend.dialect} backend does not support trusted import.`,
|
|
176
185
|
"backend_unsupported",
|
|
177
|
-
{ dialect:
|
|
186
|
+
{ dialect: backend.dialect }
|
|
178
187
|
);
|
|
179
188
|
}
|
|
180
189
|
return trustedImport(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/interchange/trusted-import.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAuBA,SAAS,+BACP,KAAA,EACM;AACN,EAAA,IAAI,MAAM,cAAA,EAAgB;AACxB,IAAA,MAAM,IAAI,kBAAA;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,IAAI,kBAAA;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,IAAI,kBAAA;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,KACC,mBAAA,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,IAAI,kBAAA;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,GAAc,uBAAA,CAAwB,KAAA,CAAM,KAAK,CAAA;AACvD,EAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,kBAAA;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,IAAI,kBAAA,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,aAAA,GAAgB,MAAM,OAAA,CAAQ,aAAA;AACpC,EAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,CAAA,IAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,yCAAA,CAAA;AAAA,MAC5B,qBAAA;AAAA,MACA,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,OAAA;AAAQ,KACnC;AAAA,EACF;AACA,EAAA,OAAO,aAAA;AAAA,IAAc,CAAC,OAAA,KACpB,oBAAA,CAAqB,KAAA,EAAO,SAAS,MAAM;AAAA,GAC7C;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.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 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 trustedImport = store.backend.trustedImport;\n if (trustedImport === undefined) {\n throw new TrustedImportError(\n `The ${store.backend.dialect} backend does not support trusted import.`,\n \"backend_unsupported\",\n { dialect: store.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 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"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Journal modes accepted by local SQLite connections. */
|
|
2
|
+
type LocalSqliteJournalMode = "wal" | "delete" | "truncate" | "persist" | "memory" | "off";
|
|
3
|
+
/** Synchronous levels accepted by local SQLite connections. */
|
|
4
|
+
type LocalSqliteSynchronousMode = "off" | "normal" | "full" | "extra";
|
|
5
|
+
/** Connection pragmas applied when TypeGraph opens a local SQLite database. */
|
|
6
|
+
type LocalSqlitePragmaOptions = Readonly<{
|
|
7
|
+
/** `PRAGMA journal_mode`. Default: `"wal"` (no-op on `":memory:"`). */
|
|
8
|
+
journalMode?: LocalSqliteJournalMode;
|
|
9
|
+
/** `PRAGMA synchronous`. Default: `"normal"`. */
|
|
10
|
+
synchronous?: LocalSqliteSynchronousMode;
|
|
11
|
+
/** `PRAGMA busy_timeout`, in milliseconds. Default: `5000`. */
|
|
12
|
+
busyTimeoutMs?: number;
|
|
13
|
+
/**
|
|
14
|
+
* `PRAGMA cache_size`, expressed as a negative KiB value. Positive values
|
|
15
|
+
* mean pages in SQLite and are rejected to prevent accidental oversizing.
|
|
16
|
+
*/
|
|
17
|
+
cacheSizeKib?: number | undefined;
|
|
18
|
+
/** `PRAGMA mmap_size`, in non-negative bytes. */
|
|
19
|
+
mmapSizeBytes?: number | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* `PRAGMA wal_autocheckpoint`, in WAL pages. Use `0` to disable automatic
|
|
22
|
+
* checkpoints and run them explicitly after controlled bulk loads.
|
|
23
|
+
*/
|
|
24
|
+
walAutocheckpointPages?: number | undefined;
|
|
25
|
+
}>;
|
|
26
|
+
/** Defaults for TypeGraph-owned local SQLite connections. */
|
|
27
|
+
declare const DEFAULT_LOCAL_SQLITE_PRAGMAS: Required<LocalSqlitePragmaOptions>;
|
|
28
|
+
|
|
29
|
+
export { DEFAULT_LOCAL_SQLITE_PRAGMAS as D, type LocalSqlitePragmaOptions as L, type LocalSqliteJournalMode as a, type LocalSqliteSynchronousMode as b };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Journal modes accepted by local SQLite connections. */
|
|
2
|
+
type LocalSqliteJournalMode = "wal" | "delete" | "truncate" | "persist" | "memory" | "off";
|
|
3
|
+
/** Synchronous levels accepted by local SQLite connections. */
|
|
4
|
+
type LocalSqliteSynchronousMode = "off" | "normal" | "full" | "extra";
|
|
5
|
+
/** Connection pragmas applied when TypeGraph opens a local SQLite database. */
|
|
6
|
+
type LocalSqlitePragmaOptions = Readonly<{
|
|
7
|
+
/** `PRAGMA journal_mode`. Default: `"wal"` (no-op on `":memory:"`). */
|
|
8
|
+
journalMode?: LocalSqliteJournalMode;
|
|
9
|
+
/** `PRAGMA synchronous`. Default: `"normal"`. */
|
|
10
|
+
synchronous?: LocalSqliteSynchronousMode;
|
|
11
|
+
/** `PRAGMA busy_timeout`, in milliseconds. Default: `5000`. */
|
|
12
|
+
busyTimeoutMs?: number;
|
|
13
|
+
/**
|
|
14
|
+
* `PRAGMA cache_size`, expressed as a negative KiB value. Positive values
|
|
15
|
+
* mean pages in SQLite and are rejected to prevent accidental oversizing.
|
|
16
|
+
*/
|
|
17
|
+
cacheSizeKib?: number | undefined;
|
|
18
|
+
/** `PRAGMA mmap_size`, in non-negative bytes. */
|
|
19
|
+
mmapSizeBytes?: number | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* `PRAGMA wal_autocheckpoint`, in WAL pages. Use `0` to disable automatic
|
|
22
|
+
* checkpoints and run them explicitly after controlled bulk loads.
|
|
23
|
+
*/
|
|
24
|
+
walAutocheckpointPages?: number | undefined;
|
|
25
|
+
}>;
|
|
26
|
+
/** Defaults for TypeGraph-owned local SQLite connections. */
|
|
27
|
+
declare const DEFAULT_LOCAL_SQLITE_PRAGMAS: Required<LocalSqlitePragmaOptions>;
|
|
28
|
+
|
|
29
|
+
export { DEFAULT_LOCAL_SQLITE_PRAGMAS as D, type LocalSqlitePragmaOptions as L, type LocalSqliteJournalMode as a, type LocalSqliteSynchronousMode as b };
|
|
@@ -1,175 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
/** Brand key for GraphDef */
|
|
5
|
-
declare const GRAPH_DEF_BRAND: "__graphDef";
|
|
6
|
-
/**
|
|
7
|
-
* An edge entry in the graph definition.
|
|
8
|
-
* Can be:
|
|
9
|
-
* - EdgeType directly (constrained or unconstrained)
|
|
10
|
-
* - EdgeRegistration object (always works, can override/narrow defaults)
|
|
11
|
-
*/
|
|
12
|
-
type EdgeEntry = EdgeRegistration | AnyEdgeType;
|
|
13
|
-
/**
|
|
14
|
-
* Normalized edge map type - all entries become EdgeRegistration.
|
|
15
|
-
* For bare EdgeTypes, constrained endpoints are extracted from the type;
|
|
16
|
-
* unconstrained edges fall back to all node types in the graph.
|
|
17
|
-
*/
|
|
18
|
-
type NormalizedEdges<TNodes extends Record<string, NodeRegistration>, TEdges extends Record<string, EdgeEntry>> = {
|
|
19
|
-
[K in keyof TEdges]: TEdges[K] extends EdgeRegistration ? TEdges[K] : TEdges[K] extends AnyEdgeType ? EdgeRegistration<TEdges[K], TEdges[K]["from"] extends readonly (infer N extends NodeType)[] ? N : TNodes[keyof TNodes]["type"], TEdges[K]["to"] extends readonly (infer N extends NodeType)[] ? N : TNodes[keyof TNodes]["type"]> : never;
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Configuration for defineGraph.
|
|
23
|
-
*/
|
|
24
|
-
type GraphDefConfig<TNodes extends Record<string, NodeRegistration>, TEdges extends Record<string, EdgeEntry>, TOntology extends readonly OntologyRelation[]> = Readonly<{
|
|
25
|
-
/** Unique identifier for this graph */
|
|
26
|
-
id: string;
|
|
27
|
-
/** Node registrations */
|
|
28
|
-
nodes: TNodes;
|
|
29
|
-
/** Edge registrations or EdgeTypes with built-in domain/range */
|
|
30
|
-
edges: TEdges;
|
|
31
|
-
/** Ontology relations */
|
|
32
|
-
ontology?: TOntology;
|
|
33
|
-
/** Graph-wide defaults */
|
|
34
|
-
defaults?: GraphDefaults;
|
|
35
|
-
/**
|
|
36
|
-
* Index declarations attached to this graph.
|
|
37
|
-
*
|
|
38
|
-
* Accepts the outputs of `defineNodeIndex` / `defineEdgeIndex` (which
|
|
39
|
-
* already return `IndexDeclaration` values) or pre-built declarations
|
|
40
|
-
* reconstructed from a stored schema or graph extension.
|
|
41
|
-
*
|
|
42
|
-
* Validated at definition time: every index must reference a `kind`
|
|
43
|
-
* that exists in `nodes` / `edges`, and index `name`s must be unique
|
|
44
|
-
* within the graph.
|
|
45
|
-
*
|
|
46
|
-
* Index DDL is **not** generated by `defineGraph`. Indexes flow into
|
|
47
|
-
* `SerializedSchema.indexes` so they can later be materialized via
|
|
48
|
-
* `store.materializeIndexes()` — lifting the storage concern out of
|
|
49
|
-
* the schema-version commit path.
|
|
50
|
-
*/
|
|
51
|
-
indexes?: readonly IndexDeclaration[];
|
|
52
|
-
}>;
|
|
53
|
-
/**
|
|
54
|
-
* A graph definition.
|
|
55
|
-
*
|
|
56
|
-
* This is a compile-time artifact that describes the structure of a graph.
|
|
57
|
-
* Use `createStore()` to create a runtime store from this definition.
|
|
58
|
-
*/
|
|
59
|
-
type GraphDef<TNodes extends Record<string, NodeRegistration> = Record<string, NodeRegistration>, TEdges extends Record<string, EdgeRegistration> = Record<string, EdgeRegistration>, TOntology extends readonly OntologyRelation[] = readonly OntologyRelation[]> = Readonly<{
|
|
60
|
-
[GRAPH_DEF_BRAND]: true;
|
|
61
|
-
id: string;
|
|
62
|
-
nodes: TNodes;
|
|
63
|
-
edges: TEdges;
|
|
64
|
-
ontology: TOntology;
|
|
65
|
-
defaults: Readonly<{
|
|
66
|
-
onNodeDelete: DeleteBehavior;
|
|
67
|
-
temporalMode: TemporalMode;
|
|
68
|
-
}>;
|
|
69
|
-
/**
|
|
70
|
-
* Index declarations attached to this graph. Preserves whatever the
|
|
71
|
-
* caller passed to `defineGraph` (including an explicit empty array)
|
|
72
|
-
* for introspection purposes.
|
|
73
|
-
*
|
|
74
|
-
* The serialized canonical form is order-canonicalized (sorted by
|
|
75
|
-
* `name`) and treats `undefined` and `[]` as the same "no slice" form
|
|
76
|
-
* — an empty array does not bump the schema hash, since indexes are
|
|
77
|
-
* an unordered set keyed by name and `[]` carries no semantic meaning
|
|
78
|
-
* that an absent slice doesn't.
|
|
79
|
-
*/
|
|
80
|
-
indexes: readonly IndexDeclaration[] | undefined;
|
|
81
|
-
/**
|
|
82
|
-
* Graph extension this graph was merged with, if any. Set by
|
|
83
|
-
* `mergeGraphExtension`; never set by `defineGraph` directly.
|
|
84
|
-
* Exists solely so re-serialization is stable — the rest of the
|
|
85
|
-
* system reads the merged kinds through `nodes` / `edges` /
|
|
86
|
-
* `ontology` and never inspects this field. Absent on graphs that
|
|
87
|
-
* have never been extended; legacy graphs hash byte-identically.
|
|
88
|
-
*/
|
|
89
|
-
extension: GraphExtension | undefined;
|
|
90
|
-
/**
|
|
91
|
-
* Soft-deprecated kind names attached to this graph. Set by the
|
|
92
|
-
* loader from the persisted schema and by `store.deprecateKinds(...)`
|
|
93
|
-
* / `store.undeprecateKinds(...)`. A purely informational signal
|
|
94
|
-
* surfaced for introspection — does not gate reads, writes, or
|
|
95
|
-
* queries. Defaults to the empty set on freshly-defined graphs.
|
|
96
|
-
*/
|
|
97
|
-
deprecatedKinds: ReadonlySet<string>;
|
|
98
|
-
}>;
|
|
99
|
-
/**
|
|
100
|
-
* Extract node kind names from a GraphDef.
|
|
101
|
-
*/
|
|
102
|
-
type NodeKinds<G extends GraphDef> = keyof G["nodes"] & string;
|
|
103
|
-
/**
|
|
104
|
-
* Extract edge kind names from a GraphDef.
|
|
105
|
-
*/
|
|
106
|
-
type EdgeKinds<G extends GraphDef> = keyof G["edges"] & string;
|
|
107
|
-
/**
|
|
108
|
-
* Get a NodeType from a GraphDef by kind name.
|
|
109
|
-
*/
|
|
110
|
-
type GetNodeType<G extends GraphDef, K extends NodeKinds<G>> = G["nodes"][K]["type"];
|
|
111
|
-
/**
|
|
112
|
-
* Get an EdgeType from a GraphDef by kind name.
|
|
113
|
-
*/
|
|
114
|
-
type GetEdgeType<G extends GraphDef, K extends EdgeKinds<G>> = G["edges"][K]["type"];
|
|
115
|
-
/**
|
|
116
|
-
* Get all NodeTypes from a GraphDef.
|
|
117
|
-
*/
|
|
118
|
-
type AllNodeTypes<G extends GraphDef> = {
|
|
119
|
-
[K in NodeKinds<G>]: G["nodes"][K]["type"];
|
|
120
|
-
}[NodeKinds<G>];
|
|
121
|
-
/**
|
|
122
|
-
* Get all EdgeTypes from a GraphDef.
|
|
123
|
-
*/
|
|
124
|
-
type AllEdgeTypes<G extends GraphDef> = {
|
|
125
|
-
[K in EdgeKinds<G>]: G["edges"][K]["type"];
|
|
126
|
-
}[EdgeKinds<G>];
|
|
127
|
-
/**
|
|
128
|
-
* Creates a graph definition.
|
|
129
|
-
*
|
|
130
|
-
* @example
|
|
131
|
-
* ```typescript
|
|
132
|
-
* const graph = defineGraph({
|
|
133
|
-
* id: "my_graph",
|
|
134
|
-
* nodes: {
|
|
135
|
-
* Person: { type: Person },
|
|
136
|
-
* Company: { type: Company },
|
|
137
|
-
* },
|
|
138
|
-
* edges: {
|
|
139
|
-
* // Traditional EdgeRegistration syntax
|
|
140
|
-
* worksAt: {
|
|
141
|
-
* type: worksAt,
|
|
142
|
-
* from: [Person],
|
|
143
|
-
* to: [Company],
|
|
144
|
-
* cardinality: "many",
|
|
145
|
-
* },
|
|
146
|
-
* // Or use EdgeType directly if it has from/to defined
|
|
147
|
-
* knows, // EdgeType with built-in domain/range
|
|
148
|
-
* },
|
|
149
|
-
* ontology: [
|
|
150
|
-
* subClassOf(Company, Organization),
|
|
151
|
-
* disjointWith(Person, Organization),
|
|
152
|
-
* ],
|
|
153
|
-
* defaults: {
|
|
154
|
-
* onNodeDelete: "restrict",
|
|
155
|
-
* temporalMode: "current",
|
|
156
|
-
* },
|
|
157
|
-
* });
|
|
158
|
-
* ```
|
|
159
|
-
*/
|
|
160
|
-
declare function defineGraph<const TNodes extends Record<string, NodeRegistration<NodeType>>, const TEdges extends Record<string, EdgeEntry>, const TOntology extends readonly OntologyRelation[]>(config: GraphDefConfig<TNodes, TEdges, TOntology>): GraphDef<TNodes, NormalizedEdges<TNodes, TEdges>, TOntology>;
|
|
161
|
-
/**
|
|
162
|
-
* Checks if a value is a GraphDef.
|
|
163
|
-
*/
|
|
164
|
-
declare function isGraphDef(value: unknown): value is GraphDef;
|
|
165
|
-
/**
|
|
166
|
-
* Gets all node kind names from a GraphDef.
|
|
167
|
-
*/
|
|
168
|
-
declare function getNodeKinds<G extends GraphDef>(graph: G): readonly (keyof G["nodes"] & string)[];
|
|
169
|
-
/**
|
|
170
|
-
* Gets all edge kind names from a GraphDef.
|
|
171
|
-
*/
|
|
172
|
-
declare function getEdgeKinds<G extends GraphDef>(graph: G): readonly (keyof G["edges"] & string)[];
|
|
1
|
+
import { a as NodeType, A as AnyEdgeType, I as IndexEntity } from './extension-types-BLEVH4SG.js';
|
|
2
|
+
import { s as SerializedNodeDef, t as SerializedEdgeDef, I as IndexDeclaration, q as SerializedSchema, C as SchemaVersionRow, G as GraphBackend } from './index-Bq7vSPHy.js';
|
|
3
|
+
import { G as GraphDef } from './define-graph-DRo9xpYN.js';
|
|
173
4
|
|
|
174
5
|
/**
|
|
175
6
|
* KindRegistry holds precomputed closures for ontological reasoning.
|
|
@@ -722,4 +553,4 @@ declare function isSchemaInitialized(backend: GraphBackend, graphId: string): Pr
|
|
|
722
553
|
*/
|
|
723
554
|
declare function getSchemaChanges<G extends GraphDef>(backend: GraphBackend, graph: G): Promise<SchemaDiff | undefined>;
|
|
724
555
|
|
|
725
|
-
export { type
|
|
556
|
+
export { type ChangeSeverity as C, type DeprecatedKindsChange as D, type EdgeChange as E, type IndexChange as I, KindRegistry as K, type MigrationHookContext as M, type NodeChange as N, type OntologyChange as O, type SchemaManagerOptions as S, type ChangeType as a, type ExtensionChange as b, type SchemaDiff as c, type SchemaValidationResult as d, applyDeprecatedKinds as e, assertSchemaCurrent as f, computeSchemaDiff as g, ensureSchema as h, getActiveSchema as i, getMigrationActions as j, getSchemaChanges as k, initializeSchema as l, isBackwardsCompatible as m, isSchemaInitialized as n, loadActiveSchemaWithBootstrap as o, loadAndMergeGraphExtensionDocument as p, migrateSchema as q, parseSerializedSchema as r, rollbackSchema as s };
|