@nicia-ai/typegraph 0.50.0 → 0.51.1
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 -0
- package/dist/backend/drizzle/indexes.cjs +10 -8
- package/dist/backend/drizzle/indexes.d.cts +1 -1
- package/dist/backend/drizzle/indexes.d.ts +1 -1
- package/dist/backend/drizzle/indexes.js +6 -4
- package/dist/backend/index.cjs +183 -50
- package/dist/backend/index.d.cts +90 -4
- package/dist/backend/index.d.ts +90 -4
- package/dist/backend/index.js +6 -9
- package/dist/backend/postgres/index.cjs +30 -28
- package/dist/backend/postgres/index.d.cts +7 -7
- package/dist/backend/postgres/index.d.ts +7 -7
- package/dist/backend/postgres/index.js +16 -14
- package/dist/backend/postgres/pglite-store.cjs +6 -62
- package/dist/backend/postgres/pglite-store.cjs.map +1 -1
- package/dist/backend/postgres/pglite-store.d.cts +8 -8
- package/dist/backend/postgres/pglite-store.d.ts +8 -8
- package/dist/backend/postgres/pglite-store.js +6 -62
- package/dist/backend/postgres/pglite-store.js.map +1 -1
- package/dist/backend/postgres/pglite.cjs +18 -16
- package/dist/backend/postgres/pglite.d.cts +3 -3
- package/dist/backend/postgres/pglite.d.ts +3 -3
- package/dist/backend/postgres/pglite.js +17 -15
- package/dist/backend/sqlite/index.cjs +27 -25
- package/dist/backend/sqlite/index.d.cts +7 -7
- package/dist/backend/sqlite/index.d.ts +7 -7
- package/dist/backend/sqlite/index.js +14 -12
- package/dist/backend/sqlite/libsql.cjs +21 -19
- package/dist/backend/sqlite/libsql.cjs.map +1 -1
- package/dist/backend/sqlite/libsql.d.cts +3 -3
- package/dist/backend/sqlite/libsql.d.ts +3 -3
- package/dist/backend/sqlite/libsql.js +16 -14
- package/dist/backend/sqlite/libsql.js.map +1 -1
- package/dist/backend/sqlite/local-store.cjs +8 -64
- package/dist/backend/sqlite/local-store.cjs.map +1 -1
- package/dist/backend/sqlite/local-store.d.cts +8 -8
- package/dist/backend/sqlite/local-store.d.ts +8 -8
- package/dist/backend/sqlite/local-store.js +7 -64
- package/dist/backend/sqlite/local-store.js.map +1 -1
- package/dist/backend/sqlite/local.cjs +22 -19
- package/dist/backend/sqlite/local.d.cts +3 -3
- package/dist/backend/sqlite/local.d.ts +3 -3
- package/dist/backend/sqlite/local.js +18 -15
- package/dist/{chunk-TUVD4DFR.cjs → chunk-2CVDZCXH.cjs} +122 -51
- package/dist/chunk-2CVDZCXH.cjs.map +1 -0
- package/dist/{chunk-I5C6OTKR.js → chunk-2DWTBNSH.js} +3 -3
- package/dist/{chunk-I5C6OTKR.js.map → chunk-2DWTBNSH.js.map} +1 -1
- package/dist/{chunk-C76WFIVZ.cjs → chunk-2KCTP3U2.cjs} +180 -127
- package/dist/chunk-2KCTP3U2.cjs.map +1 -0
- package/dist/{chunk-BYBDM423.cjs → chunk-322TBTOQ.cjs} +48 -48
- package/dist/{chunk-BYBDM423.cjs.map → chunk-322TBTOQ.cjs.map} +1 -1
- package/dist/chunk-36SX6QXP.cjs +186 -0
- package/dist/chunk-36SX6QXP.cjs.map +1 -0
- package/dist/{chunk-H3XP6BAV.js → chunk-36VYWVQU.js} +3 -3
- package/dist/{chunk-H3XP6BAV.js.map → chunk-36VYWVQU.js.map} +1 -1
- package/dist/{chunk-VTJVMP4I.js → chunk-4DKY6RIU.js} +102 -31
- package/dist/chunk-4DKY6RIU.js.map +1 -0
- package/dist/chunk-4QKOZYMV.js +9 -0
- package/dist/chunk-4QKOZYMV.js.map +1 -0
- package/dist/{chunk-U3Z7XKAG.js → chunk-57JM6NW3.js} +8 -18
- package/dist/chunk-57JM6NW3.js.map +1 -0
- package/dist/{chunk-WCLMKNQE.cjs → chunk-5FVZSE3B.cjs} +1356 -1108
- package/dist/chunk-5FVZSE3B.cjs.map +1 -0
- package/dist/{chunk-XMY2SXOH.cjs → chunk-5WWEYV4H.cjs} +2208 -579
- package/dist/chunk-5WWEYV4H.cjs.map +1 -0
- package/dist/{chunk-WQBAQZHR.js → chunk-6NLYIMJO.js} +4 -4
- package/dist/{chunk-WQBAQZHR.js.map → chunk-6NLYIMJO.js.map} +1 -1
- package/dist/{chunk-G2TLHH6T.cjs → chunk-7B7I7YAW.cjs} +6 -6
- package/dist/{chunk-G2TLHH6T.cjs.map → chunk-7B7I7YAW.cjs.map} +1 -1
- package/dist/{chunk-EDLKIQRI.js → chunk-7G5IYROL.js} +6 -548
- package/dist/chunk-7G5IYROL.js.map +1 -0
- package/dist/{chunk-46UGOVRW.js → chunk-7QFRK6PU.js} +3 -7
- package/dist/chunk-7QFRK6PU.js.map +1 -0
- package/dist/chunk-A4C4NJ5U.cjs +12 -0
- package/dist/chunk-A4C4NJ5U.cjs.map +1 -0
- package/dist/{chunk-7CCMCMJO.cjs → chunk-AOGOC6JF.cjs} +77 -68
- package/dist/chunk-AOGOC6JF.cjs.map +1 -0
- package/dist/{chunk-TYGGUWMS.cjs → chunk-B3MN7EJR.cjs} +177 -137
- package/dist/chunk-B3MN7EJR.cjs.map +1 -0
- package/dist/{chunk-K6VKTBST.cjs → chunk-BZ5MVITP.cjs} +4 -4
- package/dist/{chunk-K6VKTBST.cjs.map → chunk-BZ5MVITP.cjs.map} +1 -1
- package/dist/{chunk-ZAQUKCUC.js → chunk-CBOD7TXH.js} +5 -5
- package/dist/{chunk-ZAQUKCUC.js.map → chunk-CBOD7TXH.js.map} +1 -1
- package/dist/{chunk-LLVOQOWE.cjs → chunk-CRZ56SZU.cjs} +6 -5
- package/dist/chunk-CRZ56SZU.cjs.map +1 -0
- package/dist/{chunk-ON47CBE4.cjs → chunk-D3GWARN7.cjs} +47 -47
- package/dist/{chunk-ON47CBE4.cjs.map → chunk-D3GWARN7.cjs.map} +1 -1
- package/dist/{chunk-W5SOCUBL.js → chunk-D3OUDFU7.js} +5 -5
- package/dist/{chunk-W5SOCUBL.js.map → chunk-D3OUDFU7.js.map} +1 -1
- package/dist/chunk-EKG2UXNX.cjs +23 -0
- package/dist/chunk-EKG2UXNX.cjs.map +1 -0
- package/dist/{chunk-2Q45FAIE.js → chunk-EVYW3532.js} +28 -19
- package/dist/chunk-EVYW3532.js.map +1 -0
- package/dist/{chunk-7PRMDZIA.cjs → chunk-FMMW3KX7.cjs} +21 -55
- package/dist/chunk-FMMW3KX7.cjs.map +1 -0
- package/dist/chunk-H2VWDQWC.cjs +571 -0
- package/dist/chunk-H2VWDQWC.cjs.map +1 -0
- package/dist/chunk-H4FY6OZK.js +13 -0
- package/dist/chunk-H4FY6OZK.js.map +1 -0
- package/dist/{chunk-OJHD3LXJ.cjs → chunk-H5IJSROF.cjs} +2 -8
- package/dist/chunk-H5IJSROF.cjs.map +1 -0
- package/dist/{chunk-U5EL6JUV.js → chunk-I5IOSA27.js} +101 -103
- package/dist/chunk-I5IOSA27.js.map +1 -0
- package/dist/{chunk-SHC7BCG5.cjs → chunk-I7YAY2VQ.cjs} +7 -7
- package/dist/{chunk-SHC7BCG5.cjs.map → chunk-I7YAY2VQ.cjs.map} +1 -1
- package/dist/chunk-IRCWIA3R.js +20 -0
- package/dist/chunk-IRCWIA3R.js.map +1 -0
- package/dist/chunk-IVQBLXBK.cjs +55 -0
- package/dist/chunk-IVQBLXBK.cjs.map +1 -0
- package/dist/{chunk-5PP4KRPV.js → chunk-IZD4HTCP.js} +5 -5
- package/dist/{chunk-5PP4KRPV.js.map → chunk-IZD4HTCP.js.map} +1 -1
- package/dist/{chunk-RDP6ZRSM.cjs → chunk-JQKMEKKW.cjs} +261 -204
- package/dist/chunk-JQKMEKKW.cjs.map +1 -0
- package/dist/chunk-JVA3KDEA.cjs +691 -0
- package/dist/chunk-JVA3KDEA.cjs.map +1 -0
- package/dist/{chunk-JG5XIJDY.js → chunk-K67P5DLL.js} +62 -22
- package/dist/chunk-K67P5DLL.js.map +1 -0
- package/dist/{chunk-MX7EKQPM.js → chunk-K6OZIHKI.js} +345 -97
- package/dist/chunk-K6OZIHKI.js.map +1 -0
- package/dist/{chunk-CS6JTQQ2.cjs → chunk-KACEYDYV.cjs} +94 -62
- package/dist/chunk-KACEYDYV.cjs.map +1 -0
- package/dist/{chunk-5OWHU7Z7.cjs → chunk-L6EVYIID.cjs} +248 -210
- package/dist/chunk-L6EVYIID.cjs.map +1 -0
- package/dist/{chunk-7OWE7WD6.js → chunk-LI4K2KEJ.js} +4 -4
- package/dist/{chunk-7OWE7WD6.js.map → chunk-LI4K2KEJ.js.map} +1 -1
- package/dist/chunk-LKZDQ2B4.js +1581 -0
- package/dist/chunk-LKZDQ2B4.js.map +1 -0
- package/dist/{chunk-45YZXI6X.cjs → chunk-LLFPQOBA.cjs} +27 -27
- package/dist/{chunk-45YZXI6X.cjs.map → chunk-LLFPQOBA.cjs.map} +1 -1
- package/dist/{chunk-ZRJTM7MT.js → chunk-LZMQ3SFK.js} +3 -3
- package/dist/{chunk-ZRJTM7MT.js.map → chunk-LZMQ3SFK.js.map} +1 -1
- package/dist/{chunk-DI6VC62F.js → chunk-M3VTS3F6.js} +3 -3
- package/dist/{chunk-DI6VC62F.js.map → chunk-M3VTS3F6.js.map} +1 -1
- package/dist/{chunk-MZ34E2GN.js → chunk-NBOS7BY3.js} +60 -21
- package/dist/chunk-NBOS7BY3.js.map +1 -0
- package/dist/{chunk-YA36ABIL.js → chunk-NGQDGL5X.js} +14 -48
- package/dist/chunk-NGQDGL5X.js.map +1 -0
- package/dist/{chunk-ZBFZGLZE.cjs → chunk-NLX5OWK7.cjs} +6 -2
- package/dist/chunk-NLX5OWK7.cjs.map +1 -0
- package/dist/chunk-NUQ2YFFH.cjs +1637 -0
- package/dist/chunk-NUQ2YFFH.cjs.map +1 -0
- package/dist/{chunk-TTCOPKUL.cjs → chunk-OGL4X4PH.cjs} +182 -184
- package/dist/chunk-OGL4X4PH.cjs.map +1 -0
- package/dist/{chunk-HY5BNOUN.cjs → chunk-OTNTGEXR.cjs} +4 -4
- package/dist/{chunk-HY5BNOUN.cjs.map → chunk-OTNTGEXR.cjs.map} +1 -1
- package/dist/chunk-OTWE63BW.js +53 -0
- package/dist/chunk-OTWE63BW.js.map +1 -0
- package/dist/chunk-PC5NGH5A.js +549 -0
- package/dist/chunk-PC5NGH5A.js.map +1 -0
- package/dist/{chunk-IPRP6TDL.cjs → chunk-PS3TUWJM.cjs} +7 -7
- package/dist/{chunk-IPRP6TDL.cjs.map → chunk-PS3TUWJM.cjs.map} +1 -1
- package/dist/{chunk-V76FGHY3.js → chunk-PVFFH7TL.js} +5 -5
- package/dist/{chunk-V76FGHY3.js.map → chunk-PVFFH7TL.js.map} +1 -1
- package/dist/chunk-QCD5JKU4.cjs +15 -0
- package/dist/chunk-QCD5JKU4.cjs.map +1 -0
- package/dist/{chunk-IRPYOHRC.js → chunk-QG5VEOKX.js} +6 -2
- package/dist/chunk-QG5VEOKX.js.map +1 -0
- package/dist/{chunk-2CYI5HRH.js → chunk-RI7RJH4G.js} +49 -17
- package/dist/chunk-RI7RJH4G.js.map +1 -0
- package/dist/{chunk-5LKOVCPP.js → chunk-RVUL2HXY.js} +6 -5
- package/dist/chunk-RVUL2HXY.js.map +1 -0
- package/dist/{chunk-WK23PGTP.cjs → chunk-S5GU4LUN.cjs} +11 -11
- package/dist/{chunk-WK23PGTP.cjs.map → chunk-S5GU4LUN.cjs.map} +1 -1
- package/dist/{chunk-S33YQEL7.js → chunk-SDPWO2Z5.js} +6 -6
- package/dist/{chunk-S33YQEL7.js.map → chunk-SDPWO2Z5.js.map} +1 -1
- package/dist/{chunk-6S3PTHL4.js → chunk-SLGGT2XD.js} +3 -3
- package/dist/{chunk-6S3PTHL4.js.map → chunk-SLGGT2XD.js.map} +1 -1
- package/dist/{chunk-HSEZ7X6Y.cjs → chunk-TIJUA4I6.cjs} +45 -45
- package/dist/{chunk-HSEZ7X6Y.cjs.map → chunk-TIJUA4I6.cjs.map} +1 -1
- package/dist/{chunk-CSNOYIB4.cjs → chunk-TM54OBHX.cjs} +13 -13
- package/dist/{chunk-CSNOYIB4.cjs.map → chunk-TM54OBHX.cjs.map} +1 -1
- package/dist/{chunk-MM3JHVKZ.cjs → chunk-TUWSVL6I.cjs} +4 -4
- package/dist/{chunk-MM3JHVKZ.cjs.map → chunk-TUWSVL6I.cjs.map} +1 -1
- package/dist/{chunk-2GIV5X4P.js → chunk-TYEYRCXL.js} +86 -33
- package/dist/chunk-TYEYRCXL.js.map +1 -0
- package/dist/{chunk-MJPZNEJZ.js → chunk-UKOVGCRN.js} +2095 -496
- package/dist/chunk-UKOVGCRN.js.map +1 -0
- package/dist/chunk-UYKDYE5D.cjs +12 -0
- package/dist/{chunk-KWNWG4RC.cjs.map → chunk-UYKDYE5D.cjs.map} +1 -1
- package/dist/{chunk-FX5ZW6PN.js → chunk-VAAC7L57.js} +95 -40
- package/dist/chunk-VAAC7L57.js.map +1 -0
- package/dist/{chunk-ISKCIQF2.cjs → chunk-VKHXYVN7.cjs} +14 -25
- package/dist/chunk-VKHXYVN7.cjs.map +1 -0
- package/dist/chunk-VUQZNUHU.js +171 -0
- package/dist/chunk-VUQZNUHU.js.map +1 -0
- package/dist/{chunk-K2XYLVVB.cjs → chunk-WDM5WQK4.cjs} +175 -136
- package/dist/chunk-WDM5WQK4.cjs.map +1 -0
- package/dist/{chunk-GVYVGGPJ.js → chunk-WFSYYU4W.js} +66 -28
- package/dist/chunk-WFSYYU4W.js.map +1 -0
- package/dist/{chunk-R7MRFE5P.js → chunk-WS5MT2UJ.js} +3 -3
- package/dist/{chunk-R7MRFE5P.js.map → chunk-WS5MT2UJ.js.map} +1 -1
- package/dist/chunk-XORONCV3.js +202 -0
- package/dist/chunk-XORONCV3.js.map +1 -0
- package/dist/chunk-ZGVTNKTX.cjs +217 -0
- package/dist/chunk-ZGVTNKTX.cjs.map +1 -0
- package/dist/core/index.cjs +20 -20
- package/dist/core/index.d.cts +4 -4
- package/dist/core/index.d.ts +4 -4
- package/dist/core/index.js +4 -4
- package/dist/{ddl-B49O7dB_.d.ts → ddl-BvcbgzHo.d.ts} +3 -3
- package/dist/{ddl-DcZG660s.d.cts → ddl-Ufebz5q5.d.cts} +3 -3
- package/dist/graph-extension/index.d.cts +2 -4
- package/dist/graph-extension/index.d.ts +2 -4
- package/dist/graph-merge/index.cjs +140 -125
- package/dist/graph-merge/index.cjs.map +1 -1
- package/dist/graph-merge/index.d.cts +8 -9
- package/dist/graph-merge/index.d.ts +8 -9
- package/dist/graph-merge/index.js +42 -27
- package/dist/graph-merge/index.js.map +1 -1
- package/dist/index.cjs +144 -143
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -12
- package/dist/index.d.ts +11 -12
- package/dist/index.js +30 -29
- package/dist/index.js.map +1 -1
- package/dist/indexes/index.cjs +14 -12
- package/dist/indexes/index.d.cts +4 -4
- package/dist/indexes/index.d.ts +4 -4
- package/dist/indexes/index.js +7 -5
- package/dist/{ingestion-import-target-CI8OWIkM.d.ts → ingestion-import-target-CAs1OX-l.d.cts} +1 -1
- package/dist/{ingestion-import-target-DCpfM1PX.d.cts → ingestion-import-target-DCQSPfNx.d.ts} +1 -1
- package/dist/interchange/index.cjs +41 -39
- package/dist/interchange/index.cjs.map +1 -1
- package/dist/interchange/index.d.cts +8 -8
- package/dist/interchange/index.d.ts +8 -8
- package/dist/interchange/index.js +16 -14
- package/dist/interchange/index.js.map +1 -1
- package/dist/local-store-impl-JC7OBRAW.js +75 -0
- package/dist/local-store-impl-JC7OBRAW.js.map +1 -0
- package/dist/local-store-impl-UOS2LUIG.cjs +77 -0
- package/dist/local-store-impl-UOS2LUIG.cjs.map +1 -0
- package/dist/{manager-Cfg1ENj1.d.ts → manager-B68OrPR2.d.ts} +1 -2
- package/dist/{manager-D348fa6W.d.cts → manager-D_t7oK69.d.cts} +1 -2
- package/dist/pglite-store-impl-J5J5AA52.cjs +75 -0
- package/dist/pglite-store-impl-J5J5AA52.cjs.map +1 -0
- package/dist/pglite-store-impl-LDRH2DUH.js +73 -0
- package/dist/pglite-store-impl-LDRH2DUH.js.map +1 -0
- package/dist/{postgres-UStOycLI.d.ts → postgres-BPLSVyHM.d.ts} +1 -1
- package/dist/{postgres-CH1kkM5J.d.cts → postgres-CqvtFC2y.d.cts} +1 -1
- package/dist/profiler/index.d.cts +9 -9
- package/dist/profiler/index.d.ts +9 -9
- package/dist/provenance/index.cjs +33 -20
- 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 +24 -11
- package/dist/provenance/index.js.map +1 -1
- package/dist/{repair-validity-windows-aWX7VNvv.d.cts → repair-validity-windows-DEzCKAdy.d.cts} +7 -3
- package/dist/{repair-validity-windows-BtOEe2pS.d.ts → repair-validity-windows-GMdaS2AH.d.ts} +7 -3
- package/dist/resolve-D_H8MHtq.d.ts +1805 -0
- package/dist/resolve-WEW8gWws.d.cts +1805 -0
- package/dist/schema/index.cjs +42 -40
- package/dist/schema/index.d.cts +4 -6
- package/dist/schema/index.d.ts +4 -6
- package/dist/schema/index.js +15 -13
- package/dist/{searchable-z4BiFfHI.d.ts → searchable-C_UREI9K.d.ts} +1 -1
- package/dist/{searchable-C8-RrL3l.d.cts → searchable-ClgET_i7.d.cts} +1 -1
- package/dist/{sqlite-axLw5Lo5.d.ts → sqlite-D1mXO9Kp.d.cts} +2 -1
- package/dist/{sqlite-Cyx9j9o6.d.cts → sqlite-MZA3oZNB.d.ts} +2 -1
- package/dist/{store-CTfQ9taw.d.ts → store-CuFX7fCx.d.cts} +38 -41
- package/dist/{store-DR9J7JVB.d.cts → store-D-ZjXQpW.d.ts} +38 -41
- package/dist/{temporal-CBOrERz5.d.ts → temporal-CpyEiRY8.d.cts} +1 -1
- package/dist/{temporal-B4Ky4wzh.d.cts → temporal-y0Aep9Su.d.ts} +1 -1
- package/dist/{types-CWg4dTjj.d.ts → types-6yf0Vv-_.d.cts} +1672 -1
- package/dist/{types-CWg4dTjj.d.cts → types-6yf0Vv-_.d.ts} +1672 -1
- package/dist/{types-BScHXVM7.d.ts → types-DzJ4dlzk.d.cts} +1 -1
- package/dist/{types-BE921wRl.d.cts → types-_vVSB9k-.d.ts} +1 -1
- package/dist/{where-BWXUPV3C.d.ts → where-DuG2LCLe.d.ts} +1 -1
- package/dist/{where-CNtx1aLc.d.cts → where-Mhf_yyKX.d.cts} +1 -1
- package/package.json +5 -1
- package/dist/chunk-2CYI5HRH.js.map +0 -1
- package/dist/chunk-2GIV5X4P.js.map +0 -1
- package/dist/chunk-2Q45FAIE.js.map +0 -1
- package/dist/chunk-46UGOVRW.js.map +0 -1
- package/dist/chunk-5LKOVCPP.js.map +0 -1
- package/dist/chunk-5OWHU7Z7.cjs.map +0 -1
- package/dist/chunk-6LEOAIIB.js +0 -1160
- package/dist/chunk-6LEOAIIB.js.map +0 -1
- package/dist/chunk-7CCMCMJO.cjs.map +0 -1
- package/dist/chunk-7PRMDZIA.cjs.map +0 -1
- package/dist/chunk-C76WFIVZ.cjs.map +0 -1
- package/dist/chunk-CS6JTQQ2.cjs.map +0 -1
- package/dist/chunk-EDLKIQRI.js.map +0 -1
- package/dist/chunk-EH3JZJUM.cjs +0 -567
- package/dist/chunk-EH3JZJUM.cjs.map +0 -1
- package/dist/chunk-FX5ZW6PN.js.map +0 -1
- package/dist/chunk-GHZPZNFC.cjs +0 -132
- package/dist/chunk-GHZPZNFC.cjs.map +0 -1
- package/dist/chunk-GVYVGGPJ.js.map +0 -1
- package/dist/chunk-IHK5KA2Q.cjs +0 -262
- package/dist/chunk-IHK5KA2Q.cjs.map +0 -1
- package/dist/chunk-IRPYOHRC.js.map +0 -1
- package/dist/chunk-ISKCIQF2.cjs.map +0 -1
- package/dist/chunk-JG5XIJDY.js.map +0 -1
- package/dist/chunk-K2XYLVVB.cjs.map +0 -1
- package/dist/chunk-KWNWG4RC.cjs +0 -12
- package/dist/chunk-LLVOQOWE.cjs.map +0 -1
- package/dist/chunk-MJPZNEJZ.js.map +0 -1
- package/dist/chunk-MX7EKQPM.js.map +0 -1
- package/dist/chunk-MZ34E2GN.js.map +0 -1
- package/dist/chunk-OJHD3LXJ.cjs.map +0 -1
- package/dist/chunk-PALYTHGM.js +0 -114
- package/dist/chunk-PALYTHGM.js.map +0 -1
- package/dist/chunk-RDP6ZRSM.cjs.map +0 -1
- package/dist/chunk-S3SDEQMC.js +0 -532
- package/dist/chunk-S3SDEQMC.js.map +0 -1
- package/dist/chunk-TEC24ZDA.cjs +0 -1254
- package/dist/chunk-TEC24ZDA.cjs.map +0 -1
- package/dist/chunk-TP4NJTI3.cjs +0 -1192
- package/dist/chunk-TP4NJTI3.cjs.map +0 -1
- package/dist/chunk-TTCOPKUL.cjs.map +0 -1
- package/dist/chunk-TUVD4DFR.cjs.map +0 -1
- package/dist/chunk-TYGGUWMS.cjs.map +0 -1
- package/dist/chunk-U3Z7XKAG.js.map +0 -1
- package/dist/chunk-U5EL6JUV.js.map +0 -1
- package/dist/chunk-VTJVMP4I.js.map +0 -1
- package/dist/chunk-WCLMKNQE.cjs.map +0 -1
- package/dist/chunk-XMY2SXOH.cjs.map +0 -1
- package/dist/chunk-Y55DLLEG.js +0 -247
- package/dist/chunk-Y55DLLEG.js.map +0 -1
- package/dist/chunk-YA36ABIL.js.map +0 -1
- package/dist/chunk-ZBFZGLZE.cjs.map +0 -1
- package/dist/index-B0PrmE3K.d.cts +0 -1146
- package/dist/index-CwcXsL5R.d.ts +0 -1146
- package/dist/materialize-indexes-C9GG3O3C.d.ts +0 -266
- package/dist/materialize-indexes-CrSiW_lT.d.cts +0 -266
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/backend/row-mappers.ts","../src/backend/drizzle/operations/shared.ts","../src/backend/drizzle/operations/edge-claims.ts","../src/backend/drizzle/operations/uniques.ts"],"names":["sql","nowIso","getTableName"],"mappings":"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","file":"chunk-S3SDEQMC.js","sourcesContent":["/**\n * Shared database row-mapping utilities.\n */\n\nimport { DatabaseOperationError } from \"../errors\";\nimport { canonicalizeDatabaseTimestamp } from \"../utils/date\";\nimport {\n type EdgeRow,\n type NodeRow,\n rowPropsToJsonText,\n type SchemaVersionRow,\n type UniqueRow,\n} from \"./types\";\n\nfunction asString(value: unknown, field: string): string {\n if (typeof value !== \"string\") {\n throw new DatabaseOperationError(\n `Expected ${field} to be string, got ${typeof value}`,\n { operation: \"select\", entity: \"row\" },\n );\n }\n return value;\n}\n\nfunction asNumber(value: unknown, field: string): number {\n if (typeof value !== \"number\") {\n throw new DatabaseOperationError(\n `Expected ${field} to be number, got ${typeof value}`,\n { operation: \"select\", entity: \"row\" },\n );\n }\n return value;\n}\n\nexport function nowIso(): string {\n return new Date().toISOString();\n}\n\n/**\n * Formats PostgreSQL timestamps used by internal status-table adapters.\n * Row metadata uses the stricter {@link normalizeRowTimestamp} contract.\n */\nexport function formatPostgresTimestamp(value: unknown): string | undefined {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return value.toISOString();\n if (typeof value === \"string\") {\n if (value.includes(\"T\")) return value;\n const date = new Date(value);\n if (!Number.isNaN(date.getTime())) return date.toISOString();\n return value;\n }\n return undefined;\n}\n\n/**\n * Canonicalizes database-driver timestamp values at the row-mapping boundary.\n * Every store and compiled-query metadata projection uses this owner so driver\n * rendering differences cannot become public values.\n */\nexport function normalizeRowTimestamp(\n value: unknown,\n field: string,\n): string | undefined {\n if (value === null || value === undefined) return undefined;\n const canonical = canonicalizeDatabaseTimestamp(value);\n if (canonical === undefined) {\n throw new DatabaseOperationError(\n `Expected ${field} to be a database timestamp, got ${typeof value}`,\n { operation: \"select\", entity: \"row\" },\n );\n }\n return canonical;\n}\n\nexport function normalizeRequiredRowTimestamp(\n value: unknown,\n field: string,\n): string {\n const timestamp = normalizeRowTimestamp(value, field);\n if (timestamp === undefined) {\n throw new DatabaseOperationError(`Expected non-null ${field} timestamp`, {\n operation: \"select\",\n entity: \"row\",\n });\n }\n return timestamp;\n}\n\n/**\n * Coerce a fulltext relevance score to `number` at the backend\n * boundary. Postgres returns `numeric` as a string to preserve\n * precision; a custom `FulltextStrategy` on either dialect could\n * likewise yield a string. Shared so both backends enforce the same\n * `FulltextSearchResult.score: number` contract and reject garbage\n * loudly instead of propagating `NaN`.\n */\nexport function coerceNumericScore(value: number | string): number {\n if (typeof value === \"number\") return value;\n const parsed = Number.parseFloat(value);\n if (Number.isNaN(parsed)) {\n throw new TypeError(\n `Backend returned non-numeric fulltext score: ${JSON.stringify(value)}`,\n );\n }\n return parsed;\n}\n\n/**\n * Normalizes a JSON column that may be returned as a parsed object (JSONB)\n * or string. PostgreSQL drivers hand jsonb back already parsed — keep the\n * object instead of re-stringifying it, so the read path pays zero JSON\n * work per row (consumers normalize via rowPropsToObject /\n * rowPropsToJsonText at the point of use). SQLite text passes through.\n */\nfunction normalizeJsonColumn(value: unknown): string | Record<string, unknown> {\n if (typeof value === \"string\") return value;\n if (value !== null && typeof value === \"object\") {\n return value as Record<string, unknown>;\n }\n return JSON.stringify(value ?? {});\n}\n\n/**\n * Dialect-specific configuration for row mappers.\n *\n * Row mapper factories accept this config to produce dialect-appropriate\n * mappers. Timestamp normalization is dialect-independent and owned by\n * {@link normalizeRowTimestamp}; only JSON columns need dialect configuration.\n */\ntype DialectRowMapperConfig = Readonly<{\n normalizeJson: (value: unknown) => string | Record<string, unknown>;\n}>;\n\n/**\n * SQLite row mapper config. JSON is stored as TEXT.\n */\nexport const SQLITE_ROW_MAPPER_CONFIG: DialectRowMapperConfig = {\n normalizeJson: (value) => {\n if (typeof value !== \"string\") {\n throw new DatabaseOperationError(\n `Expected JSON column to be string, got ${typeof value}`,\n { operation: \"select\", entity: \"row\" },\n );\n }\n return value;\n },\n};\n\n/**\n * PostgreSQL row mapper config. JSONB is returned as parsed objects.\n */\nexport const POSTGRES_ROW_MAPPER_CONFIG: DialectRowMapperConfig = {\n normalizeJson: normalizeJsonColumn,\n};\n\n// Trust boundary: Drizzle raw SQL returns Record<string, unknown> rows.\n// The field access patterns below are intentional unsafe casts at the\n// database driver boundary where we know the column shapes.\n\nexport function createNodeRowMapper(\n config: DialectRowMapperConfig,\n): (row: Record<string, unknown>) => NodeRow {\n return (row) => ({\n graph_id: asString(row[\"graph_id\"], \"graph_id\"),\n kind: asString(row[\"kind\"], \"kind\"),\n id: asString(row[\"id\"], \"id\"),\n props: config.normalizeJson(row[\"props\"]),\n version: asNumber(row[\"version\"], \"version\"),\n valid_from: normalizeRowTimestamp(row[\"valid_from\"], \"valid_from\"),\n valid_to: normalizeRowTimestamp(row[\"valid_to\"], \"valid_to\"),\n created_at: normalizeRequiredRowTimestamp(row[\"created_at\"], \"created_at\"),\n updated_at: normalizeRequiredRowTimestamp(row[\"updated_at\"], \"updated_at\"),\n deleted_at: normalizeRowTimestamp(row[\"deleted_at\"], \"deleted_at\"),\n });\n}\n\nexport function createEdgeRowMapper(\n config: DialectRowMapperConfig,\n): (row: Record<string, unknown>) => EdgeRow {\n return (row) => ({\n graph_id: asString(row[\"graph_id\"], \"graph_id\"),\n id: asString(row[\"id\"], \"id\"),\n kind: asString(row[\"kind\"], \"kind\"),\n from_kind: asString(row[\"from_kind\"], \"from_kind\"),\n from_id: asString(row[\"from_id\"], \"from_id\"),\n to_kind: asString(row[\"to_kind\"], \"to_kind\"),\n to_id: asString(row[\"to_id\"], \"to_id\"),\n props: config.normalizeJson(row[\"props\"]),\n valid_from: normalizeRowTimestamp(row[\"valid_from\"], \"valid_from\"),\n valid_to: normalizeRowTimestamp(row[\"valid_to\"], \"valid_to\"),\n created_at: normalizeRequiredRowTimestamp(row[\"created_at\"], \"created_at\"),\n updated_at: normalizeRequiredRowTimestamp(row[\"updated_at\"], \"updated_at\"),\n deleted_at: normalizeRowTimestamp(row[\"deleted_at\"], \"deleted_at\"),\n });\n}\n\nfunction mapUniqueRow(row: Record<string, unknown>): UniqueRow {\n return {\n graph_id: asString(row[\"graph_id\"], \"graph_id\"),\n node_kind: asString(row[\"node_kind\"], \"node_kind\"),\n constraint_name: asString(row[\"constraint_name\"], \"constraint_name\"),\n key: asString(row[\"key\"], \"key\"),\n node_id: asString(row[\"node_id\"], \"node_id\"),\n concrete_kind: asString(row[\"concrete_kind\"], \"concrete_kind\"),\n deleted_at: normalizeRowTimestamp(row[\"deleted_at\"], \"deleted_at\"),\n };\n}\n\nexport function createUniqueRowMapper(\n _config: DialectRowMapperConfig,\n): (row: Record<string, unknown>) => UniqueRow {\n return mapUniqueRow;\n}\n\nexport function createSchemaVersionRowMapper(\n config: DialectRowMapperConfig,\n): (row: Record<string, unknown>) => SchemaVersionRow {\n return (row) => {\n const isActiveValue = row[\"is_active\"];\n const isActive =\n isActiveValue === true || isActiveValue === 1 || isActiveValue === \"1\";\n\n return {\n graph_id: asString(row[\"graph_id\"], \"graph_id\"),\n version: asNumber(row[\"version\"], \"version\"),\n schema_hash: asString(row[\"schema_hash\"], \"schema_hash\"),\n schema_doc: rowPropsToJsonText(config.normalizeJson(row[\"schema_doc\"])),\n created_at: normalizeRequiredRowTimestamp(\n row[\"created_at\"],\n \"created_at\",\n ),\n is_active: isActive,\n };\n };\n}\n","import {\n getTableName,\n type SQL,\n sql,\n type SQLWrapper,\n} from \"drizzle-orm\";\n\nimport type { PrimaryKeyRelation } from \"../../../utils/sql-errors\";\nimport type { SqlDialect } from \"../../types\";\nimport type { PostgresTables } from \"../schema/postgres\";\nimport type { SqliteTables } from \"../schema/sqlite\";\n\nexport type Tables = SqliteTables | PostgresTables;\n\n/**\n * The names a relation's PRIMARY KEY constraint can carry, given the relation\n * name and its key columns.\n *\n * Two, because TypeGraph supports two provisioning paths for the same schema\n * and they name the constraint differently:\n *\n * - TypeGraph's own DDL (`generatePostgresCreateTableSQL`) emits an UNNAMED\n * `PRIMARY KEY (...)` clause, which PostgreSQL names `<relation>_pkey`;\n * - `drizzle-kit` renders the Drizzle `primaryKey({ columns })` builder with\n * its explicit name, `<relation>_<column>_..._pk`.\n *\n * Both are derived rather than hardcoded so a custom table name is covered\n * too. Accepting only these two — never\n * an arbitrary unique constraint on the relation — is what keeps a declared\n * `unique: true` index violation out of the duplicate-identity classification.\n *\n * One declared bound: PostgreSQL clips every identifier to 63 bytes, and clips\n * the RELATION part to make room for the `_pkey` it appends, so a custom\n * relation name long enough to overflow that (58+ bytes) is named something\n * neither of these matches. Classification then simply does not happen and the\n * driver failure surfaces as it did before — no misattribution, just no\n * translation.\n */\nfunction primaryKeyConstraintNames(\n relation: string,\n keyColumns: readonly string[],\n): readonly string[] {\n return [`${relation}_pkey`, `${relation}_${keyColumns.join(\"_\")}_pk`];\n}\n\n/**\n * The nodes relation's identity constraint: `(graph_id, kind, id)`, the tuple\n * every node read also filters on.\n */\nexport function nodePrimaryKeyConstraint(\n nodes: Tables[\"nodes\"],\n): PrimaryKeyRelation {\n const relation = getTableName(nodes);\n return {\n table: relation,\n constraintNames: primaryKeyConstraintNames(relation, [\n nodes.graphId.name,\n nodes.kind.name,\n nodes.id.name,\n ]),\n };\n}\n\n/**\n * The edges relation's identity constraint: `(graph_id, id)`. An edge id is\n * unique per graph without its kind, so the key is one column shorter than a\n * node's.\n */\nexport function edgePrimaryKeyConstraint(\n edges: Tables[\"edges\"],\n): PrimaryKeyRelation {\n const relation = getTableName(edges);\n return {\n table: relation,\n constraintNames: primaryKeyConstraintNames(relation, [\n edges.graphId.name,\n edges.id.name,\n ]),\n };\n}\n\n/**\n * Converts undefined to SQL NULL for use in template literals.\n * Drizzle doesn't handle undefined in sql`` templates correctly.\n */\nexport function sqlNull(value: string | undefined): SQL | string {\n return value ?? sql.raw(\"NULL\");\n}\n\n/**\n * The `AND valid_from …` conjunction a write carries when its caller ASSERTED\n * the lower bound the target row already holds (see\n * {@link UpdateNodeParams.expectedValidFrom} /\n * {@link UpdateEdgeParams.expectedValidFrom}).\n *\n * NULL-SAFE by construction, and that is the whole point of routing both\n * entities through one builder: `valid_from` is nullable (an open-left window),\n * and `col = NULL` is UNKNOWN in SQL, so the obvious `AND col = ?` spelling\n * turns \"I checked that this row has no lower bound\" into a predicate that\n * matches NOTHING — an assertion that always fails is as wrong as one that\n * never runs. The three states are therefore distinct:\n *\n * - `undefined` — the caller asserted nothing; no predicate is emitted.\n * - `null` — the caller read an OPEN-LEFT window; emits `IS NULL`.\n * - a string — the caller read that bound; emits `= <bound>`.\n *\n * One owner: nodes and edges share this function so the two statements cannot\n * drift into disagreeing about what \"the bound I read\" means.\n */\nexport function expectedValidFromPredicate(\n column: SQLWrapper,\n expected: string | null | undefined,\n): SQL {\n if (expected === undefined) return sql.empty();\n if (expected === null) return sql` AND ${column} IS NULL`;\n return sql` AND ${column} = ${expected}`;\n}\n\nexport function quotedColumn(column: { name: string }): SQL {\n return sql.raw(`\"${column.name.replaceAll('\"', '\"\"')}\"`);\n}\n\n/**\n * Returns a quoted SQL identifier for a bare table name string.\n * Use when the operation targets a table that isn't represented as a\n * Drizzle table object (e.g. the FTS5 virtual table).\n */\nexport function quotedTableName(tableName: string): SQL {\n return sql.raw(`\"${tableName.replaceAll('\"', '\"\"')}\"`);\n}\n\nconst CODE_POINT_ORDER_BUILDERS = {\n postgres: (value: SQL) => sql`${value} COLLATE \"C\"`,\n sqlite: (value: SQL) => value,\n} satisfies Record<SqlDialect, (value: SQL) => SQL>;\n\n/**\n * `column` rendered so that ORDER BY sorts it by code point on both engines.\n *\n * Relevance-ranking SQL breaks score ties on `node_id`. Left bare, Postgres\n * sorts it under the column's collation — a linguistic collation such as\n * `en_US.UTF-8` orders `a, A, b, B` where byte order gives `A, B, a, b`, so\n * the same query returns different pages on two databases whose `datcollate`\n * differs. SQLite's default `BINARY` collation is already code-point order,\n * as is the store's `compareCodePoints`, which ranks the same rows whenever a\n * search falls back to fusing in JavaScript.\n *\n * Forcing the `C` collation on Postgres makes all three agree. The ranking is\n * sorted anyway (no index supplies the order), so this costs nothing.\n */\nexport function codePointOrderKey(column: SQL, dialect: SqlDialect): SQL {\n return CODE_POINT_ORDER_BUILDERS[dialect](column);\n}\n\n/**\n * Subquery yielding the ids of CURRENT nodes of one kind — the candidate\n * set a facade search statement is allowed to return. Passed into the\n * fulltext and vector search builders so top-k is computed over current\n * rows in SQL, instead of ranking side-table rows first and dropping\n * tombstoned/expired nodes after (which silently shrinks results below\n * `limit` under index drift).\n *\n * Currency matches a `current` read: non-tombstoned AND inside the\n * validity window. The instant is BOUND as a parameter (the backend's\n * clock, same source as its write timestamps) rather than compiled as a\n * per-row SQL now() call — on SQLite a per-row strftime() across two\n * search legs dominated unfiltered facade searches.\n */\nexport function liveNodeIdsSubquery(\n nodes: Tables[\"nodes\"],\n graphId: string,\n nodeKind: string,\n nowIso: string,\n): SQL {\n return sql`SELECT ${nodes.id} AS node_id FROM ${nodes} WHERE ${nodes.graphId} = ${graphId} AND ${nodes.kind} = ${nodeKind} AND ${nodes.deletedAt} IS NULL AND (${nodes.validFrom} IS NULL OR ${nodes.validFrom} <= ${nowIso}) AND (${nodes.validTo} IS NULL OR ${nodes.validTo} > ${nowIso})`;\n}\n\nexport function nodeColumnList(nodes: Tables[\"nodes\"]): SQL {\n return sql.raw(\n `\"${nodes.graphId.name}\", \"${nodes.kind.name}\", \"${nodes.id.name}\", \"${nodes.props.name}\", \"${nodes.version.name}\", \"${nodes.validFrom.name}\", \"${nodes.validTo.name}\", \"${nodes.createdAt.name}\", \"${nodes.updatedAt.name}\"`,\n );\n}\n\nexport function edgeColumnList(edges: Tables[\"edges\"]): SQL {\n return sql.raw(\n `\"${edges.graphId.name}\", \"${edges.id.name}\", \"${edges.kind.name}\", \"${edges.fromKind.name}\", \"${edges.fromId.name}\", \"${edges.toKind.name}\", \"${edges.toId.name}\", \"${edges.props.name}\", \"${edges.validFrom.name}\", \"${edges.validTo.name}\", \"${edges.createdAt.name}\", \"${edges.updatedAt.name}\"`,\n );\n}\n","import { getTableName, type SQL, sql } from \"drizzle-orm\";\n\nimport {\n sql as fragmentSql,\n type SqlFragment,\n} from \"../../../query/sql-fragment\";\nimport {\n EDGE_CARDINALITY_SPECS,\n edgeCardinalityAxesForKind,\n edgeCardinalityClaimTarget,\n} from \"../../../store/claims/edge-claims\";\nimport type {\n ClaimEdgeCardinalityParams,\n PurgeEdgeClaimsParams,\n} from \"../../types\";\nimport { quotedColumn, type Tables } from \"./shared\";\n\n/**\n * Qualifies a column with its relation, the one rendering both dialects read\n * identically. The claim statements name TWO relations (the claim rows and the\n * edges their holders are), so a bare column name would be ambiguous in the\n * takeover statement's correlated subquery.\n */\nfunction qualified(tableName: string, column: Readonly<{ name: string }>): SQL {\n return sql.raw(`\"${tableName}\".\"${column.name}\"`);\n}\n\n/**\n * Statement 1 — create-or-lock, decision-free.\n *\n * Its only job is to make the row exist, take its row lock, and report the\n * COMMITTED holder. The `DO UPDATE SET updated_at = <existing>.updated_at` is a\n * deliberate no-op write: it is what makes a conflicting row lock and report\n * itself through RETURNING, which a bare `DO NOTHING` would not. This is the\n * same statement shape `insertUnique` already uses, through the same\n * existing-row qualification, so it introduces no new dialect surface.\n *\n * A returned holder equal to the proposed edge means this writer owns the axis\n * and is done. Any other holder is decided by {@link buildTakeOverEdgeClaim},\n * against a FRESH snapshot — deciding inside this statement would read the\n * pre-lock snapshot of the edges relation and accept two concurrent writers.\n */\nexport function buildLockEdgeClaims(\n tables: Tables,\n entries: readonly ClaimEdgeCardinalityParams[],\n timestamp: string,\n): SQL {\n const { edgeClaims } = tables;\n const claimsName = getTableName(edgeClaims);\n\n const columns = sql.raw(\n `\"${edgeClaims.graphId.name}\", \"${edgeClaims.axis.name}\", \"${edgeClaims.key.name}\", \"${edgeClaims.edgeId.name}\", \"${edgeClaims.updatedAt.name}\"`,\n );\n const conflictColumns = sql.raw(\n `\"${edgeClaims.graphId.name}\", \"${edgeClaims.axis.name}\", \"${edgeClaims.key.name}\"`,\n );\n const valueRows = sql.join(\n entries.map((entry) => {\n const target = edgeCardinalityClaimTarget(entry);\n return sql`(${entry.graphId}, ${target.axis}, ${target.key}, ${entry.edgeId}, ${timestamp})`;\n }),\n sql`, `,\n );\n\n return sql`\n INSERT INTO ${edgeClaims} (${columns})\n VALUES ${valueRows}\n ON CONFLICT (${conflictColumns})\n DO UPDATE SET ${quotedColumn(edgeClaims.updatedAt)} = ${qualified(claimsName, edgeClaims.updatedAt)}\n RETURNING\n ${quotedColumn(edgeClaims.axis)} as axis,\n ${quotedColumn(edgeClaims.key)} as key,\n ${quotedColumn(edgeClaims.edgeId)} as holder_edge_id\n `;\n}\n\n/**\n * Statement 2 — conditional takeover, on a fresh snapshot.\n *\n * Issued only when statement 1 reported a different holder. It succeeds exactly\n * when that holder is no longer an edge this axis and key describe, which is\n * what makes an abandoned claim self-healing: no release path has to have run\n * for a dead holder's axis to be reusable.\n *\n * **The holder is identified by more than its id.** Edge ids are\n * caller-suppliable and graph-unique, so a hard-deleted id can be reused by a\n * DIFFERENT edge; a claim naming that id would otherwise read as a live holder\n * and block its axis forever. The extra terms are exactly the components the\n * axis and key were built from — and exactly the columns `countEdgesFrom` /\n * `edgeExistsBetween` filter on — so the fence's liveness predicate and the\n * probe's read the same shape.\n *\n * The `valid_to IS NULL` term and the to-endpoint terms are not spelled here:\n * they are read from {@link EDGE_CARDINALITY_SPECS}, the same table the\n * TypeScript probe reads.\n */\nexport function buildTakeOverEdgeClaim(\n tables: Tables,\n params: ClaimEdgeCardinalityParams,\n timestamp: string,\n): SQL {\n const { edgeClaims, edges } = tables;\n const claimsName = getTableName(edgeClaims);\n const edgesName = getTableName(edges);\n const spec = EDGE_CARDINALITY_SPECS[params.cardinality];\n const target = edgeCardinalityClaimTarget(params);\n\n const toEndpointTerms =\n spec.keyShape === \"fromAndTo\" ?\n sql` AND ${qualified(edgesName, edges.toKind)} = ${params.toKind} AND ${qualified(edgesName, edges.toId)} = ${params.toId}`\n : sql``;\n const activeTerm =\n spec.holderLiveness === \"liveAndActive\" ?\n sql` AND ${qualified(edgesName, edges.validTo)} IS NULL`\n : sql``;\n\n return sql`\n UPDATE ${edgeClaims}\n SET ${quotedColumn(edgeClaims.edgeId)} = ${params.edgeId},\n ${quotedColumn(edgeClaims.updatedAt)} = ${timestamp}\n WHERE ${qualified(claimsName, edgeClaims.graphId)} = ${params.graphId}\n AND ${qualified(claimsName, edgeClaims.axis)} = ${target.axis}\n AND ${qualified(claimsName, edgeClaims.key)} = ${target.key}\n AND ${qualified(claimsName, edgeClaims.edgeId)} <> ${params.edgeId}\n AND NOT EXISTS (\n SELECT 1 FROM ${edges}\n WHERE ${qualified(edgesName, edges.graphId)} = ${qualified(claimsName, edgeClaims.graphId)}\n AND ${qualified(edgesName, edges.id)} = ${qualified(claimsName, edgeClaims.edgeId)}\n AND ${qualified(edgesName, edges.deletedAt)} IS NULL\n AND ${qualified(edgesName, edges.kind)} = ${params.edgeKind}\n AND ${qualified(edgesName, edges.fromKind)} = ${params.fromKind}\n AND ${qualified(edgesName, edges.fromId)} = ${params.fromId}${toEndpointTerms}${activeTerm}\n )\n RETURNING ${quotedColumn(edgeClaims.edgeId)} as holder_edge_id\n `;\n}\n\n/**\n * Housekeeping: drops the claims named edges hold.\n *\n * A hard delete or a `clearGraph` removes the edges a claim's liveness\n * predicate reads, so the claim would already be takeable; this only stops the\n * relation from growing without bound.\n */\nexport function buildPurgeEdgeClaims(\n tables: Tables,\n params: PurgeEdgeClaimsParams,\n): SQL {\n const { edgeClaims } = tables;\n return sql`\n DELETE FROM ${edgeClaims}\n WHERE ${edgeClaims.graphId} = ${params.graphId}\n AND ${edgeClaims.edgeId} IN (${sql.join(\n params.edgeIds.map((edgeId) => sql`${edgeId}`),\n sql`, `,\n )})\n `;\n}\n\n/**\n * THE definition of \"the cardinality claims an edge kind owns\": every row at\n * one of the kind's declared-cardinality axes.\n *\n * Keyed on the axis rather than on the holder's id because a removed kind's\n * edges are deleted in the same pass, which would leave a claim naming a row\n * that no longer exists — takeable, but never reaped. Takes the relation NAME\n * rather than the Drizzle table so `materializeRemovals`, which knows only its\n * configured table names, compiles the same statement.\n */\nexport function buildHardDeleteEdgeClaimsByEdgeKind(\n edgeClaimsTableName: string,\n params: Readonly<{ graphId: string; edgeKind: string }>,\n): SqlFragment {\n const axes = edgeCardinalityAxesForKind(params.edgeKind).map(\n (axis) => fragmentSql`${axis}`,\n );\n return fragmentSql`DELETE FROM ${fragmentSql.identifier(edgeClaimsTableName)} WHERE ${fragmentSql.identifier(\"graph_id\")} = ${params.graphId} AND ${fragmentSql.identifier(\"axis\")} IN (${fragmentSql.join(axes, fragmentSql`, `)})`;\n}\n\n/**\n * Housekeeping for node-kind removal: deletes every claim held by an edge whose\n * source or target has the removed kind.\n *\n * The holder ids are selected before those edges are deleted. Filtering claim\n * axes cannot express this ownership: an edge kind may connect several node\n * kinds, while its claim axis names only its cardinality and edge kind.\n */\nexport function buildHardDeleteEdgeClaimsByNodeKind(\n edgeClaimsTableName: string,\n edgesTableName: string,\n params: Readonly<{ graphId: string; nodeKind: string }>,\n): SqlFragment {\n return fragmentSql`DELETE FROM ${fragmentSql.identifier(edgeClaimsTableName)} WHERE ${fragmentSql.identifier(\"graph_id\")} = ${params.graphId} AND ${fragmentSql.identifier(\"edge_id\")} IN (SELECT ${fragmentSql.identifier(\"id\")} FROM ${fragmentSql.identifier(edgesTableName)} WHERE ${fragmentSql.identifier(\"graph_id\")} = ${params.graphId} AND (${fragmentSql.identifier(\"from_kind\")} = ${params.nodeKind} OR ${fragmentSql.identifier(\"to_kind\")} = ${params.nodeKind}))`;\n}\n","import { type Column, getTableName, type SQL, sql } from \"drizzle-orm\";\n\nimport {\n sql as fragmentSql,\n type SqlFragment,\n} from \"../../../query/sql-fragment\";\nimport { claimOwnerMatchesSql } from \"../../../store/claims/axis\";\nimport type {\n CheckUniqueBatchParams,\n CheckUniqueParams,\n DeleteUniqueParams,\n HardDeleteUniquesByConcreteKindParams,\n HardDeleteUniquesByNodeIdsParams,\n InsertUniqueParams,\n SqlDialect,\n} from \"../../types\";\nimport { quotedColumn, type Tables } from \"./shared\";\n\ntype InsertUniqueDialectBuilder = (\n tables: Tables,\n params: InsertUniqueParams,\n) => SQL;\n\n/**\n * The proposed row's owner columns, as bound values — the single-row builders'\n * rendering of the `proposed` side of {@link claimOwnerMatchesSql}.\n */\nfunction boundOwnerColumn(\n uniques: Tables[\"uniques\"],\n params: InsertUniqueParams,\n): (column: Column) => SQL {\n return (column) =>\n column.name === uniques.nodeId.name ?\n sql`${params.nodeId}`\n : sql`${params.concreteKind}`;\n}\n\n/**\n * Builds an INSERT query for a uniqueness claim (SQLite).\n *\n * Uses ON CONFLICT with a conditional update that only succeeds if:\n * 1. The existing claim belongs to the same node — the OWNER PAIR\n * `(concrete_kind, node_id)`, because ids are unique only per kind — OR\n * 2. The existing claim is soft-deleted (can be reused)\n *\n * If a different live node holds this key, the conflict handler leaves the\n * row unchanged, and RETURNING shows the conflicting owner.\n */\nfunction buildInsertUniqueSqlite(\n tables: Tables,\n params: InsertUniqueParams,\n): SQL {\n const { uniques } = tables;\n\n const columns = sql.raw(\n `\"${uniques.graphId.name}\", \"${uniques.nodeKind.name}\", \"${uniques.constraintName.name}\", \"${uniques.key.name}\", \"${uniques.nodeId.name}\", \"${uniques.concreteKind.name}\", \"${uniques.deletedAt.name}\"`,\n );\n const conflictColumns = sql.raw(\n `\"${uniques.graphId.name}\", \"${uniques.nodeKind.name}\", \"${uniques.constraintName.name}\", \"${uniques.key.name}\"`,\n );\n\n const ownerMatches = claimOwnerMatchesSql(\n (column) => quotedColumn(column),\n boundOwnerColumn(uniques, params),\n uniques,\n );\n\n return sql`\n INSERT INTO ${uniques} (${columns})\n VALUES (\n ${params.graphId}, ${params.nodeKind}, ${params.constraintName},\n ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${sql.raw(\"NULL\")}\n )\n ON CONFLICT (${conflictColumns})\n DO UPDATE SET\n ${quotedColumn(uniques.nodeId)} = CASE\n WHEN ${ownerMatches} THEN ${params.nodeId}\n WHEN ${quotedColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.nodeId}\n ELSE ${quotedColumn(uniques.nodeId)}\n END,\n ${quotedColumn(uniques.concreteKind)} = CASE\n WHEN ${ownerMatches} THEN ${params.concreteKind}\n WHEN ${quotedColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.concreteKind}\n ELSE ${quotedColumn(uniques.concreteKind)}\n END,\n ${quotedColumn(uniques.deletedAt)} = CASE\n WHEN ${ownerMatches} THEN NULL\n WHEN ${quotedColumn(uniques.deletedAt)} IS NOT NULL THEN NULL\n ELSE ${quotedColumn(uniques.deletedAt)}\n END\n RETURNING\n ${quotedColumn(uniques.nodeId)} as node_id,\n ${quotedColumn(uniques.concreteKind)} as concrete_kind\n `;\n}\n\n/**\n * Builds an INSERT query for a uniqueness claim (PostgreSQL).\n *\n * Uses ON CONFLICT with a conditional update that only succeeds if:\n * 1. The existing claim belongs to the same node — the OWNER PAIR\n * `(concrete_kind, node_id)`, because ids are unique only per kind — OR\n * 2. The existing claim is soft-deleted (can be reused)\n *\n * If a different live node holds this key, the conflict handler leaves the\n * row unchanged, and RETURNING shows the conflicting owner.\n */\nfunction buildInsertUniquePostgres(\n tables: Tables,\n params: InsertUniqueParams,\n): SQL {\n const { uniques } = tables;\n\n const columns = sql.raw(\n `\"${uniques.graphId.name}\", \"${uniques.nodeKind.name}\", \"${uniques.constraintName.name}\", \"${uniques.key.name}\", \"${uniques.nodeId.name}\", \"${uniques.concreteKind.name}\", \"${uniques.deletedAt.name}\"`,\n );\n const conflictColumns = sql.raw(\n `\"${uniques.graphId.name}\", \"${uniques.nodeKind.name}\", \"${uniques.constraintName.name}\", \"${uniques.key.name}\"`,\n );\n\n const tableName = getTableName(uniques);\n const existingColumn = (column: Readonly<{ name: string }>) =>\n sql.raw(`\"${tableName}\".\"${column.name}\"`);\n\n const ownerMatches = claimOwnerMatchesSql(\n (column) => existingColumn(column),\n boundOwnerColumn(uniques, params),\n uniques,\n );\n\n return sql`\n INSERT INTO ${uniques} (${columns})\n VALUES (\n ${params.graphId}, ${params.nodeKind}, ${params.constraintName},\n ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${sql.raw(\"NULL\")}\n )\n ON CONFLICT (${conflictColumns})\n DO UPDATE SET\n ${quotedColumn(uniques.nodeId)} = CASE\n WHEN ${ownerMatches} THEN ${params.nodeId}\n WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.nodeId}\n ELSE ${existingColumn(uniques.nodeId)}\n END,\n ${quotedColumn(uniques.concreteKind)} = CASE\n WHEN ${ownerMatches} THEN ${params.concreteKind}\n WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.concreteKind}\n ELSE ${existingColumn(uniques.concreteKind)}\n END,\n ${quotedColumn(uniques.deletedAt)} = CASE\n WHEN ${ownerMatches} THEN NULL\n WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN NULL\n ELSE ${existingColumn(uniques.deletedAt)}\n END\n RETURNING\n ${quotedColumn(uniques.nodeId)} as node_id,\n ${quotedColumn(uniques.concreteKind)} as concrete_kind\n `;\n}\n\nconst UNIQUE_INSERT_BUILDERS: Record<SqlDialect, InsertUniqueDialectBuilder> = {\n postgres: buildInsertUniquePostgres,\n sqlite: buildInsertUniqueSqlite,\n};\n\n/**\n * Builds an INSERT query for a uniqueness entry.\n * Returns the node_id that now holds the key (may differ from input if conflict).\n */\nexport function buildInsertUnique(\n tables: Tables,\n dialect: SqlDialect,\n params: InsertUniqueParams,\n): SQL {\n const builder = UNIQUE_INSERT_BUILDERS[dialect];\n return builder(tables, params);\n}\n\n/**\n * Builds a multi-row INSERT for uniqueness claims with the same conflict\n * semantics as {@link buildInsertUnique}, expressed against `excluded`\n * (the proposed row) instead of per-statement bound values. RETURNING\n * exposes `(node_kind, constraint_name, key, node_id, concrete_kind)` for\n * every row — ON CONFLICT DO UPDATE returns updated rows too — so the caller\n * can attribute each entry's final OWNER PAIR and raise a uniqueness error for\n * the ones a different live node holds. `concrete_kind` is load-bearing in that\n * list: without it two batch rows sharing an id under different kinds would\n * both read their own `node_id` back and both be accepted.\n *\n * Callers must not pass two entries with the same conflict target\n * (`node_kind`, `constraint_name`, `key`): a multi-row upsert cannot\n * affect one row twice.\n */\nexport function buildInsertUniqueBatch(\n tables: Tables,\n dialect: SqlDialect,\n entries: readonly InsertUniqueParams[],\n): SQL {\n const { uniques } = tables;\n\n const columns = sql.raw(\n `\"${uniques.graphId.name}\", \"${uniques.nodeKind.name}\", \"${uniques.constraintName.name}\", \"${uniques.key.name}\", \"${uniques.nodeId.name}\", \"${uniques.concreteKind.name}\", \"${uniques.deletedAt.name}\"`,\n );\n const conflictColumns = sql.raw(\n `\"${uniques.graphId.name}\", \"${uniques.nodeKind.name}\", \"${uniques.constraintName.name}\", \"${uniques.key.name}\"`,\n );\n\n // Mirror the single-row builders' dialect split for references to the\n // EXISTING row inside DO UPDATE: Postgres qualifies with the table name,\n // SQLite uses the bare quoted column.\n const tableName = getTableName(uniques);\n const existingColumn = (column: Readonly<{ name: string }>) => {\n switch (dialect) {\n case \"postgres\": {\n return sql.raw(`\"${tableName}\".\"${column.name}\"`);\n }\n case \"sqlite\": {\n return sql.raw(`\"${column.name}\"`);\n }\n default: {\n return dialect satisfies never;\n }\n }\n };\n const excludedColumn = (column: Readonly<{ name: string }>) =>\n sql.raw(`excluded.\"${column.name}\"`);\n\n const ownerMatches = claimOwnerMatchesSql(\n (column) => existingColumn(column),\n (column) => excludedColumn(column),\n uniques,\n );\n\n const valueRows = sql.join(\n entries.map(\n (params) =>\n sql`(${params.graphId}, ${params.nodeKind}, ${params.constraintName}, ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${sql.raw(\"NULL\")})`,\n ),\n sql`, `,\n );\n\n return sql`\n INSERT INTO ${uniques} (${columns})\n VALUES ${valueRows}\n ON CONFLICT (${conflictColumns})\n DO UPDATE SET\n ${quotedColumn(uniques.nodeId)} = CASE\n WHEN ${ownerMatches} THEN ${excludedColumn(uniques.nodeId)}\n WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${excludedColumn(uniques.nodeId)}\n ELSE ${existingColumn(uniques.nodeId)}\n END,\n ${quotedColumn(uniques.concreteKind)} = CASE\n WHEN ${ownerMatches} THEN ${excludedColumn(uniques.concreteKind)}\n WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${excludedColumn(uniques.concreteKind)}\n ELSE ${existingColumn(uniques.concreteKind)}\n END,\n ${quotedColumn(uniques.deletedAt)} = CASE\n WHEN ${ownerMatches} THEN NULL\n WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN NULL\n ELSE ${existingColumn(uniques.deletedAt)}\n END\n RETURNING\n ${quotedColumn(uniques.nodeKind)} as node_kind,\n ${quotedColumn(uniques.constraintName)} as constraint_name,\n ${quotedColumn(uniques.key)} as key,\n ${quotedColumn(uniques.nodeId)} as node_id,\n ${quotedColumn(uniques.concreteKind)} as concrete_kind\n `;\n}\n\n/**\n * Builds the owner-scoped soft DELETE that releases a uniqueness claim.\n * Uses raw column name in SET clause.\n *\n * The owner pair `(concrete_kind, node_id)` is always part of the predicate:\n * a release gives up the claims THIS node holds, never a namesake's under\n * another kind and never one that predates this node's write. `nodeKind`\n * additionally restricts the release to one claim axis — see\n * {@link DeleteUniqueParams} for the two shapes and who issues each.\n */\nexport function buildDeleteUnique(\n tables: Tables,\n params: DeleteUniqueParams,\n timestamp: string,\n): SQL {\n const { uniques } = tables;\n\n const axisTerm =\n params.nodeKind === undefined ?\n sql``\n : sql` AND ${uniques.nodeKind} = ${params.nodeKind}`;\n\n return sql`\n UPDATE ${uniques}\n SET ${quotedColumn(uniques.deletedAt)} = ${timestamp}\n WHERE ${uniques.graphId} = ${params.graphId}\n AND ${uniques.concreteKind} = ${params.concreteKind}\n AND ${uniques.nodeId} = ${params.nodeId}\n AND ${uniques.constraintName} = ${params.constraintName}\n AND ${uniques.key} = ${params.key}${axisTerm}\n AND ${uniques.deletedAt} IS NULL\n `;\n}\n\n/**\n * Builds a hard DELETE query for all uniqueness entries for a node.\n */\nexport function buildHardDeleteUniquesByNode(\n tables: Tables,\n graphId: string,\n concreteKind: string,\n nodeId: string,\n): SQL {\n return buildHardDeleteUniquesByNodeIds(tables, {\n graphId,\n concreteKind,\n nodeIds: [nodeId],\n });\n}\n\n/**\n * Builds a hard DELETE for every uniqueness entry owned by concrete nodes.\n */\nexport function buildHardDeleteUniquesByNodeIds(\n tables: Tables,\n params: HardDeleteUniquesByNodeIdsParams,\n): SQL {\n const { uniques } = tables;\n\n return sql`\n DELETE FROM ${uniques}\n WHERE ${uniques.graphId} = ${params.graphId}\n AND ${uniques.concreteKind} = ${params.concreteKind}\n AND ${uniques.nodeId} IN (${sql.join(\n params.nodeIds.map((nodeId) => sql`${nodeId}`),\n sql`, `,\n )})\n `;\n}\n\n/**\n * THE definition of \"the uniqueness claims nodes of this kind own\": every row\n * whose `concrete_kind` is the kind, at whatever axis the row sits on.\n *\n * Kind reaping is a different predicate from a lifecycle release — \"every claim\n * this kind's nodes own\" rather than \"this node's claim for one constraint and\n * key\" — and it is a hard delete rather than a tombstone, so it is its own\n * builder. It is nonetheless the ONLY spelling of that predicate: both the\n * `hardDeleteUniquesByConcreteKind` backend member and `materializeRemovals`'\n * removed-kind cleanup compile this fragment. Keying on `node_kind` instead\n * would leak a claim whose axis is a sibling kind, delete a surviving sibling's\n * claim when the removed kind IS the axis, and never match a claim whose axis\n * is not a kind at all.\n *\n * Takes the relation NAME rather than the Drizzle table so the store-side\n * caller, which knows only its configured table names, can build the same\n * statement; the fragment renders on either dialect.\n */\nexport function buildHardDeleteUniquesByConcreteKind(\n uniquesTableName: string,\n params: HardDeleteUniquesByConcreteKindParams,\n): SqlFragment {\n return fragmentSql`DELETE FROM ${fragmentSql.identifier(uniquesTableName)} WHERE ${fragmentSql.identifier(\"graph_id\")} = ${params.graphId} AND ${fragmentSql.identifier(\"concrete_kind\")} = ${params.concreteKind}`;\n}\n\n/**\n * Builds a SELECT query to check for uniqueness violations.\n */\nexport function buildCheckUnique(\n tables: Tables,\n params: CheckUniqueParams,\n): SQL {\n const { uniques } = tables;\n\n if (params.includeDeleted) {\n return sql`\n SELECT * FROM ${uniques}\n WHERE ${uniques.graphId} = ${params.graphId}\n AND ${uniques.nodeKind} = ${params.nodeKind}\n AND ${uniques.constraintName} = ${params.constraintName}\n AND ${uniques.key} = ${params.key}\n `;\n }\n\n return sql`\n SELECT * FROM ${uniques}\n WHERE ${uniques.graphId} = ${params.graphId}\n AND ${uniques.nodeKind} = ${params.nodeKind}\n AND ${uniques.constraintName} = ${params.constraintName}\n AND ${uniques.key} = ${params.key}\n AND ${uniques.deletedAt} IS NULL\n `;\n}\n\n/**\n * Builds a SELECT query to batch-check uniqueness entries by multiple keys.\n */\nexport function buildCheckUniqueBatch(\n tables: Tables,\n params: CheckUniqueBatchParams,\n): SQL {\n const { uniques } = tables;\n\n const keyPlaceholders = sql.join(\n params.keys.map((key) => sql`${key}`),\n sql`, `,\n );\n\n if (params.includeDeleted) {\n return sql`\n SELECT * FROM ${uniques}\n WHERE ${uniques.graphId} = ${params.graphId}\n AND ${uniques.nodeKind} = ${params.nodeKind}\n AND ${uniques.constraintName} = ${params.constraintName}\n AND ${uniques.key} IN (${keyPlaceholders})\n `;\n }\n\n return sql`\n SELECT * FROM ${uniques}\n WHERE ${uniques.graphId} = ${params.graphId}\n AND ${uniques.nodeKind} = ${params.nodeKind}\n AND ${uniques.constraintName} = ${params.constraintName}\n AND ${uniques.key} IN (${keyPlaceholders})\n AND ${uniques.deletedAt} IS NULL\n `;\n}\n"]}
|