@nicia-ai/typegraph 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend/drizzle/indexes.d.cts +1 -1
- package/dist/backend/drizzle/indexes.d.ts +1 -1
- package/dist/backend/index.cjs +27 -19
- package/dist/backend/index.d.cts +37 -55
- package/dist/backend/index.d.ts +37 -55
- package/dist/backend/index.js +4 -4
- package/dist/backend/postgres/index.cjs +7 -7
- package/dist/backend/postgres/index.d.cts +21 -7
- package/dist/backend/postgres/index.d.ts +21 -7
- package/dist/backend/postgres/index.js +6 -6
- package/dist/backend/postgres/pglite-store.cjs +17 -17
- 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 +14 -14
- package/dist/backend/postgres/pglite.cjs +8 -8
- package/dist/backend/postgres/pglite.d.cts +3 -3
- package/dist/backend/postgres/pglite.d.ts +3 -3
- package/dist/backend/postgres/pglite.js +7 -7
- package/dist/backend/sqlite/index.cjs +7 -7
- package/dist/backend/sqlite/index.d.cts +20 -7
- package/dist/backend/sqlite/index.d.ts +20 -7
- package/dist/backend/sqlite/index.js +6 -6
- package/dist/backend/sqlite/libsql.cjs +8 -8
- package/dist/backend/sqlite/libsql.d.cts +3 -3
- package/dist/backend/sqlite/libsql.d.ts +3 -3
- package/dist/backend/sqlite/libsql.js +6 -6
- package/dist/backend/sqlite/local-store.cjs +18 -18
- 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 +15 -15
- package/dist/backend/sqlite/local.cjs +9 -9
- package/dist/backend/sqlite/local.d.cts +3 -3
- package/dist/backend/sqlite/local.d.ts +3 -3
- package/dist/backend/sqlite/local.js +7 -7
- package/dist/{chunk-EMIB2RXD.cjs → chunk-2HIYYMWY.cjs} +99 -96
- package/dist/chunk-2HIYYMWY.cjs.map +1 -0
- package/dist/{chunk-6KFLYYOC.cjs → chunk-2QGYQBS2.cjs} +5 -5
- package/dist/{chunk-6KFLYYOC.cjs.map → chunk-2QGYQBS2.cjs.map} +1 -1
- package/dist/{chunk-5FT3TLPK.js → chunk-2SYZXD54.js} +16 -13
- package/dist/chunk-2SYZXD54.js.map +1 -0
- package/dist/{chunk-XYBQI6LE.js → chunk-2TYSSBU5.js} +6 -6
- package/dist/{chunk-XYBQI6LE.js.map → chunk-2TYSSBU5.js.map} +1 -1
- package/dist/{chunk-6JVZSOHQ.cjs → chunk-3FPR224C.cjs} +26 -26
- package/dist/{chunk-6JVZSOHQ.cjs.map → chunk-3FPR224C.cjs.map} +1 -1
- package/dist/{chunk-MFZR4QKM.cjs → chunk-3KOY4FH3.cjs} +181 -4
- package/dist/chunk-3KOY4FH3.cjs.map +1 -0
- package/dist/{chunk-6FWSNSRE.js → chunk-4WMMBDS5.js} +4 -4
- package/dist/chunk-4WMMBDS5.js.map +1 -0
- package/dist/{chunk-NG2RB5WL.js → chunk-5K2BKEBD.js} +18 -3
- package/dist/chunk-5K2BKEBD.js.map +1 -0
- package/dist/chunk-5PRKMB24.cjs +124 -0
- package/dist/chunk-5PRKMB24.cjs.map +1 -0
- package/dist/chunk-6LN7FIVU.js +107 -0
- package/dist/chunk-6LN7FIVU.js.map +1 -0
- package/dist/{chunk-I4G3SQPF.cjs → chunk-7XUYFFR4.cjs} +7 -7
- package/dist/chunk-7XUYFFR4.cjs.map +1 -0
- package/dist/{chunk-KH7XW7VV.js → chunk-ACGSAMD3.js} +24 -27
- package/dist/chunk-ACGSAMD3.js.map +1 -0
- package/dist/{chunk-QS3NQZVC.js → chunk-AX6JGVTZ.js} +16 -11
- package/dist/chunk-AX6JGVTZ.js.map +1 -0
- package/dist/{chunk-DJZTXBWY.js → chunk-BRRP76WO.js} +71 -30
- package/dist/chunk-BRRP76WO.js.map +1 -0
- package/dist/{chunk-5UMTUOM5.js → chunk-CT3ZKTOF.js} +5 -4
- package/dist/chunk-CT3ZKTOF.js.map +1 -0
- package/dist/{chunk-XY5OMOJD.js → chunk-DZAICA5J.js} +3 -3
- package/dist/{chunk-XY5OMOJD.js.map → chunk-DZAICA5J.js.map} +1 -1
- package/dist/{chunk-OIFSOPSR.cjs → chunk-EZEEWCFJ.cjs} +38 -156
- package/dist/chunk-EZEEWCFJ.cjs.map +1 -0
- package/dist/{chunk-AMMWA76F.cjs → chunk-FA2AFWLP.cjs} +6 -6
- package/dist/{chunk-AMMWA76F.cjs.map → chunk-FA2AFWLP.cjs.map} +1 -1
- package/dist/{chunk-FNOMT74T.js → chunk-I4GAZH5Z.js} +180 -5
- package/dist/chunk-I4GAZH5Z.js.map +1 -0
- package/dist/{chunk-WGX7JH7E.cjs → chunk-JB6T4GLL.cjs} +106 -134
- package/dist/chunk-JB6T4GLL.cjs.map +1 -0
- package/dist/{chunk-MX4DHSQP.cjs → chunk-JFRT7S3B.cjs} +92 -98
- package/dist/chunk-JFRT7S3B.cjs.map +1 -0
- package/dist/{chunk-SE6EGQSD.js → chunk-KF6K7TGH.js} +38 -66
- package/dist/chunk-KF6K7TGH.js.map +1 -0
- package/dist/{chunk-ZHNXLS3C.js → chunk-NACVVDWB.js} +208 -8
- package/dist/chunk-NACVVDWB.js.map +1 -0
- package/dist/{chunk-M35DF33T.js → chunk-OD4SSY2U.js} +29 -16
- package/dist/chunk-OD4SSY2U.js.map +1 -0
- package/dist/{chunk-U5EDAVOJ.cjs → chunk-OTUPEF2W.cjs} +54 -49
- package/dist/chunk-OTUPEF2W.cjs.map +1 -0
- package/dist/{chunk-BCQ76AXA.cjs → chunk-PFBRJBUL.cjs} +107 -94
- package/dist/chunk-PFBRJBUL.cjs.map +1 -0
- package/dist/{chunk-AVGUJWVX.js → chunk-S5TERQVW.js} +15 -132
- package/dist/chunk-S5TERQVW.js.map +1 -0
- package/dist/chunk-SIT26LAZ.cjs +614 -0
- package/dist/chunk-SIT26LAZ.cjs.map +1 -0
- package/dist/{chunk-BR7SHKGM.cjs → chunk-SR725PWF.cjs} +548 -507
- package/dist/chunk-SR725PWF.cjs.map +1 -0
- package/dist/{chunk-5FBRVORR.cjs → chunk-TKZXMWQF.cjs} +8 -7
- package/dist/chunk-TKZXMWQF.cjs.map +1 -0
- package/dist/{chunk-425IZOQ5.cjs → chunk-TQHGE7UC.cjs} +20 -2
- package/dist/chunk-TQHGE7UC.cjs.map +1 -0
- package/dist/{chunk-GYUJZARH.cjs → chunk-TUNPBZY3.cjs} +4 -4
- package/dist/{chunk-GYUJZARH.cjs.map → chunk-TUNPBZY3.cjs.map} +1 -1
- package/dist/chunk-UGHG7PGX.js +592 -0
- package/dist/chunk-UGHG7PGX.js.map +1 -0
- package/dist/{chunk-KABFHAL7.cjs → chunk-UMGZDVOA.cjs} +213 -12
- package/dist/chunk-UMGZDVOA.cjs.map +1 -0
- package/dist/{chunk-UPAJHMW3.cjs → chunk-WCCATHMB.cjs} +54 -57
- package/dist/chunk-WCCATHMB.cjs.map +1 -0
- package/dist/{chunk-LEWHMOUY.js → chunk-YIURNGXI.js} +4 -4
- package/dist/{chunk-LEWHMOUY.js.map → chunk-YIURNGXI.js.map} +1 -1
- package/dist/{chunk-EP4RUYD6.js → chunk-YVF2EM7B.js} +3 -3
- package/dist/{chunk-EP4RUYD6.js.map → chunk-YVF2EM7B.js.map} +1 -1
- package/dist/{chunk-NNQ6A3RM.js → chunk-ZFMCDJGB.js} +7 -12
- package/dist/chunk-ZFMCDJGB.js.map +1 -0
- package/dist/core/index.cjs +6 -6
- package/dist/core/index.d.cts +4 -4
- package/dist/core/index.d.ts +4 -4
- package/dist/core/index.js +2 -2
- package/dist/ddl-BL1NZLMY.d.cts +78 -0
- package/dist/ddl-D_oW-EVO.d.ts +78 -0
- package/dist/graph-extension/index.d.cts +4 -4
- package/dist/graph-extension/index.d.ts +4 -4
- package/dist/graph-merge/index.cjs +334 -191
- package/dist/graph-merge/index.cjs.map +1 -1
- package/dist/graph-merge/index.d.cts +65 -15
- package/dist/graph-merge/index.d.ts +65 -15
- package/dist/graph-merge/index.js +174 -32
- package/dist/graph-merge/index.js.map +1 -1
- package/dist/{index-CHTv4XMZ.d.cts → index-COs_z6nV.d.cts} +2 -2
- package/dist/{index-CzoJ3MUw.d.ts → index-D7d1u2gr.d.ts} +2 -2
- package/dist/index.cjs +90 -86
- package/dist/index.d.cts +12 -12
- package/dist/index.d.ts +12 -12
- package/dist/index.js +13 -13
- package/dist/indexes/index.d.cts +4 -4
- package/dist/indexes/index.d.ts +4 -4
- package/dist/interchange/index.cjs +38 -38
- package/dist/interchange/index.d.cts +7 -7
- package/dist/interchange/index.d.ts +7 -7
- package/dist/interchange/index.js +10 -10
- package/dist/{manager-DlY1vlla.d.cts → manager-CYaff3n3.d.cts} +2 -2
- package/dist/{manager-B6sOQzcQ.d.ts → manager-D9eRT_ns.d.ts} +2 -2
- package/dist/{materialize-indexes-DQL4xcpf.d.ts → materialize-indexes-DJ3ykH59.d.ts} +1 -1
- package/dist/{materialize-indexes-sskhp-c_.d.cts → materialize-indexes-DTtAnvfY.d.cts} +1 -1
- package/dist/{postgres-BXy_nyMs.d.cts → postgres-CcL4bAHS.d.ts} +1 -1
- package/dist/{postgres-B6YOUcaK.d.ts → postgres-DMj39MEu.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 +25 -26
- 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 +9 -10
- package/dist/provenance/index.js.map +1 -1
- package/dist/repair-validity-windows-BFNZvd_H.d.cts +166 -0
- package/dist/repair-validity-windows-DlUSqwCg.d.ts +166 -0
- package/dist/schema/index.cjs +35 -35
- package/dist/schema/index.d.cts +6 -6
- package/dist/schema/index.d.ts +6 -6
- package/dist/schema/index.js +8 -8
- package/dist/{searchable-D9gMiwcS.d.ts → searchable-DHJMh_nj.d.cts} +1 -1
- package/dist/{searchable-0Cn_lY8U.d.cts → searchable-bpE1bBfc.d.ts} +1 -1
- package/dist/{sqlite-DioSxaPe.d.cts → sqlite-D7Oz0SQh.d.ts} +1 -1
- package/dist/{sqlite-ClXuBYAj.d.ts → sqlite-YppHrNFb.d.cts} +1 -1
- package/dist/{store-5j-w5onJ.d.ts → store-JUVvtmR4.d.cts} +113 -26
- package/dist/{store-CFedKGU5.d.cts → store-UzrGvZOo.d.ts} +113 -26
- package/dist/{temporal-CjO9FH1l.d.ts → temporal-5GqpYCk2.d.cts} +1 -1
- package/dist/{temporal-Ce1pG0S1.d.cts → temporal-CbnLzTmM.d.ts} +1 -1
- package/dist/{types-DKkMJZjR.d.cts → types-BqFZTQmV.d.cts} +29 -4
- package/dist/{types-DKkMJZjR.d.ts → types-BqFZTQmV.d.ts} +29 -4
- package/dist/{types-BrdOFu48.d.ts → types-Bx74kaTt.d.ts} +1 -1
- package/dist/{types-oj_OGAaZ.d.cts → types-CXAhpW-c.d.cts} +1 -1
- package/dist/{where-D1wKCJ4Q.d.cts → where-DI_Fqz-X.d.cts} +1 -1
- package/dist/{where-C8w2627G.d.ts → where-O-k2wgYm.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-3HGRTCDU.cjs +0 -269
- package/dist/chunk-3HGRTCDU.cjs.map +0 -1
- package/dist/chunk-425IZOQ5.cjs.map +0 -1
- package/dist/chunk-5FBRVORR.cjs.map +0 -1
- package/dist/chunk-5FT3TLPK.js.map +0 -1
- package/dist/chunk-5UMTUOM5.js.map +0 -1
- package/dist/chunk-6FWSNSRE.js.map +0 -1
- package/dist/chunk-AVGUJWVX.js.map +0 -1
- package/dist/chunk-BCQ76AXA.cjs.map +0 -1
- package/dist/chunk-BR7SHKGM.cjs.map +0 -1
- package/dist/chunk-DJZTXBWY.js.map +0 -1
- package/dist/chunk-EMIB2RXD.cjs.map +0 -1
- package/dist/chunk-FNOMT74T.js.map +0 -1
- package/dist/chunk-I4G3SQPF.cjs.map +0 -1
- package/dist/chunk-JR6SX5RH.cjs +0 -268
- package/dist/chunk-JR6SX5RH.cjs.map +0 -1
- package/dist/chunk-KABFHAL7.cjs.map +0 -1
- package/dist/chunk-KH7XW7VV.js.map +0 -1
- package/dist/chunk-M35DF33T.js.map +0 -1
- package/dist/chunk-MFZR4QKM.cjs.map +0 -1
- package/dist/chunk-MX4DHSQP.cjs.map +0 -1
- package/dist/chunk-NAZ2RA4L.js +0 -254
- package/dist/chunk-NAZ2RA4L.js.map +0 -1
- package/dist/chunk-NG2RB5WL.js.map +0 -1
- package/dist/chunk-NNQ6A3RM.js.map +0 -1
- package/dist/chunk-OIFSOPSR.cjs.map +0 -1
- package/dist/chunk-QS3NQZVC.js.map +0 -1
- package/dist/chunk-SE6EGQSD.js.map +0 -1
- package/dist/chunk-SHSSRCFR.js +0 -246
- package/dist/chunk-SHSSRCFR.js.map +0 -1
- package/dist/chunk-U5EDAVOJ.cjs.map +0 -1
- package/dist/chunk-UPAJHMW3.cjs.map +0 -1
- package/dist/chunk-WGX7JH7E.cjs.map +0 -1
- package/dist/chunk-ZHNXLS3C.js.map +0 -1
- package/dist/ddl-CprnMXJ-.d.ts +0 -38
- package/dist/ddl-DJA7Lci5.d.cts +0 -38
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
5
|
-
var
|
|
6
|
-
require('../chunk-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
3
|
+
var chunkSR725PWF_cjs = require('../chunk-SR725PWF.cjs');
|
|
4
|
+
require('../chunk-FA2AFWLP.cjs');
|
|
5
|
+
var chunkOTUPEF2W_cjs = require('../chunk-OTUPEF2W.cjs');
|
|
6
|
+
require('../chunk-JB6T4GLL.cjs');
|
|
7
|
+
var chunk3KOY4FH3_cjs = require('../chunk-3KOY4FH3.cjs');
|
|
8
|
+
var chunk3FPR224C_cjs = require('../chunk-3FPR224C.cjs');
|
|
9
9
|
var chunk26YKDNUD_cjs = require('../chunk-26YKDNUD.cjs');
|
|
10
|
-
var
|
|
11
|
-
var
|
|
10
|
+
var chunkJFRT7S3B_cjs = require('../chunk-JFRT7S3B.cjs');
|
|
11
|
+
var chunkEZEEWCFJ_cjs = require('../chunk-EZEEWCFJ.cjs');
|
|
12
12
|
var chunkPWLJ77UV_cjs = require('../chunk-PWLJ77UV.cjs');
|
|
13
|
-
require('../chunk-
|
|
13
|
+
var chunkSIT26LAZ_cjs = require('../chunk-SIT26LAZ.cjs');
|
|
14
14
|
var chunk3U5ABFDW_cjs = require('../chunk-3U5ABFDW.cjs');
|
|
15
|
-
|
|
15
|
+
require('../chunk-5PRKMB24.cjs');
|
|
16
16
|
var chunkBFUOME67_cjs = require('../chunk-BFUOME67.cjs');
|
|
17
17
|
var chunkFQPEMEWX_cjs = require('../chunk-FQPEMEWX.cjs');
|
|
18
|
-
require('../chunk-
|
|
19
|
-
var
|
|
18
|
+
require('../chunk-2QGYQBS2.cjs');
|
|
19
|
+
var chunkTQHGE7UC_cjs = require('../chunk-TQHGE7UC.cjs');
|
|
20
20
|
require('../chunk-AOSSQDVO.cjs');
|
|
21
21
|
require('../chunk-OI2GQ25X.cjs');
|
|
22
22
|
require('../chunk-LRQKXRXO.cjs');
|
|
@@ -716,10 +716,10 @@ function endpointTuple(assertion) {
|
|
|
716
716
|
return [assertion.a.kind, assertion.a.id, assertion.b.kind, assertion.b.id];
|
|
717
717
|
}
|
|
718
718
|
function identityEndpointKey(assertion) {
|
|
719
|
-
return
|
|
719
|
+
return chunkEZEEWCFJ_cjs.encodeTupleKey(endpointTuple(assertion));
|
|
720
720
|
}
|
|
721
721
|
function identitySemanticKey(assertion) {
|
|
722
|
-
return
|
|
722
|
+
return chunkJFRT7S3B_cjs.identityAssertionSemanticKey(
|
|
723
723
|
assertion.relation,
|
|
724
724
|
assertion.a,
|
|
725
725
|
assertion.b
|
|
@@ -728,11 +728,11 @@ function identitySemanticKey(assertion) {
|
|
|
728
728
|
function identityDedupeKey(assertion) {
|
|
729
729
|
const semantic = identitySemanticKey(assertion);
|
|
730
730
|
if (assertion.validTo === void 0) return semantic;
|
|
731
|
-
return
|
|
731
|
+
return chunkEZEEWCFJ_cjs.encodeTupleKey([semantic, assertion.validFrom, assertion.validTo]);
|
|
732
732
|
}
|
|
733
733
|
function compareIdentitySurvivors(left, right) {
|
|
734
|
-
const byValidity =
|
|
735
|
-
return byValidity === 0 ?
|
|
734
|
+
const byValidity = chunkEZEEWCFJ_cjs.compareCodePoints(left.validFrom, right.validFrom);
|
|
735
|
+
return byValidity === 0 ? chunkEZEEWCFJ_cjs.compareCodePoints(left.id, right.id) : byValidity;
|
|
736
736
|
}
|
|
737
737
|
var DUPLICATE_IDENTITY_ASSERTION_DROP_REASON = "identity:duplicate-assertion";
|
|
738
738
|
var REDUNDANT_IDENTITY_ASSERTION_DROP_REASON = "identity:endpoints-collapsed";
|
|
@@ -763,7 +763,7 @@ function dedupeIdentityAssertions(assertions, committedIds) {
|
|
|
763
763
|
}
|
|
764
764
|
return {
|
|
765
765
|
survivors: [...survivorBySemantic.values()].toSorted(
|
|
766
|
-
(left, right) =>
|
|
766
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareCodePoints(identityDedupeKey(left), identityDedupeKey(right))
|
|
767
767
|
),
|
|
768
768
|
dropped
|
|
769
769
|
};
|
|
@@ -783,7 +783,7 @@ function assertNoOpposingIdentityRelations(assertions) {
|
|
|
783
783
|
);
|
|
784
784
|
for (const sameAssertion of same) {
|
|
785
785
|
for (const differentAssertion of different) {
|
|
786
|
-
if (!
|
|
786
|
+
if (!chunkJFRT7S3B_cjs.identityValidityWindowsOverlap(sameAssertion, differentAssertion)) {
|
|
787
787
|
continue;
|
|
788
788
|
}
|
|
789
789
|
throw new IdentityMergeConflictError(
|
|
@@ -900,7 +900,7 @@ function planIdentityChanges(staging, storedIdentityRowsById) {
|
|
|
900
900
|
return {
|
|
901
901
|
assertions: deduped.survivors,
|
|
902
902
|
retractions: retractions.toSorted(
|
|
903
|
-
(left, right) =>
|
|
903
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareCodePoints(left.id, right.id)
|
|
904
904
|
),
|
|
905
905
|
dropped: [...deduped.dropped, ...retractionDropped]
|
|
906
906
|
};
|
|
@@ -943,7 +943,7 @@ function remapIdentityAssertionEndpoints(assertions, canonicalOf, retypeMap, sto
|
|
|
943
943
|
);
|
|
944
944
|
continue;
|
|
945
945
|
}
|
|
946
|
-
const [a, b] =
|
|
946
|
+
const [a, b] = chunkJFRT7S3B_cjs.normalizeIdentityPair(remappedA, remappedB);
|
|
947
947
|
const endpointWindowA = endpointWindows.get(mergeKeyOf(a));
|
|
948
948
|
const endpointWindowB = endpointWindows.get(mergeKeyOf(b));
|
|
949
949
|
const validFrom = [
|
|
@@ -951,17 +951,17 @@ function remapIdentityAssertionEndpoints(assertions, canonicalOf, retypeMap, sto
|
|
|
951
951
|
endpointWindowA?.validFrom,
|
|
952
952
|
endpointWindowB?.validFrom
|
|
953
953
|
].filter((bound) => bound !== void 0).reduce(
|
|
954
|
-
(latest, bound) =>
|
|
954
|
+
(latest, bound) => chunkEZEEWCFJ_cjs.compareCodePoints(latest, bound) < 0 ? bound : latest
|
|
955
955
|
);
|
|
956
956
|
const validTo = [
|
|
957
957
|
assertion.validTo,
|
|
958
958
|
endpointWindowA?.validTo,
|
|
959
959
|
endpointWindowB?.validTo
|
|
960
960
|
].filter((bound) => bound !== void 0).reduce(
|
|
961
|
-
(earliest, bound) => earliest === void 0 ||
|
|
961
|
+
(earliest, bound) => earliest === void 0 || chunkEZEEWCFJ_cjs.compareCodePoints(bound, earliest) < 0 ? bound : earliest,
|
|
962
962
|
void 0
|
|
963
963
|
);
|
|
964
|
-
if (validTo !== void 0 &&
|
|
964
|
+
if (validTo !== void 0 && chunkEZEEWCFJ_cjs.compareCodePoints(validFrom, validTo) >= 0) {
|
|
965
965
|
dropped.push(
|
|
966
966
|
droppedIdentityAssertion(
|
|
967
967
|
assertion,
|
|
@@ -1098,7 +1098,7 @@ async function buildIdentityPeerProbe(target, probedIds, targetPeers, plan, prof
|
|
|
1098
1098
|
(group) => group.map((member) => mergeKey(member.kind, member.id))
|
|
1099
1099
|
)
|
|
1100
1100
|
]);
|
|
1101
|
-
const ledger = (await relevantLedgerAssertions(target, memberKeys,
|
|
1101
|
+
const ledger = (await relevantLedgerAssertions(target, memberKeys, chunk3KOY4FH3_cjs.storeBackend(target))).filter(
|
|
1102
1102
|
(assertion) => !plannedDeletions.has(mergeKey(assertion.a.kind, assertion.a.id)) && !plannedDeletions.has(mergeKey(assertion.b.kind, assertion.b.id))
|
|
1103
1103
|
);
|
|
1104
1104
|
return {
|
|
@@ -1119,7 +1119,7 @@ async function buildIdentityPeerProbe(target, probedIds, targetPeers, plan, prof
|
|
|
1119
1119
|
};
|
|
1120
1120
|
}
|
|
1121
1121
|
async function snapshotIdentityClasses(target, seeds, liveKeys, plannedDeletions, txBackend) {
|
|
1122
|
-
const classes = await
|
|
1122
|
+
const classes = await chunk3KOY4FH3_cjs.storeRuntime(target).structuralIdentityClasses(
|
|
1123
1123
|
seeds,
|
|
1124
1124
|
txBackend
|
|
1125
1125
|
);
|
|
@@ -1127,7 +1127,7 @@ async function snapshotIdentityClasses(target, seeds, liveKeys, plannedDeletions
|
|
|
1127
1127
|
const groups = [];
|
|
1128
1128
|
for (const seed of seeds) {
|
|
1129
1129
|
const key = mergeKey(seed.kind, seed.id);
|
|
1130
|
-
const members = (classes.get(
|
|
1130
|
+
const members = (classes.get(chunkJFRT7S3B_cjs.identityReferenceKey(seed)) ?? [seed]).filter(
|
|
1131
1131
|
(member) => !plannedDeletions.has(mergeKey(member.kind, member.id))
|
|
1132
1132
|
);
|
|
1133
1133
|
groups.push(members);
|
|
@@ -1136,7 +1136,7 @@ async function snapshotIdentityClasses(target, seeds, liveKeys, plannedDeletions
|
|
|
1136
1136
|
return { fingerprints, groups };
|
|
1137
1137
|
}
|
|
1138
1138
|
async function relevantLedgerAssertions(target, memberKeys, backend) {
|
|
1139
|
-
const current = await
|
|
1139
|
+
const current = await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionsAtTarget(
|
|
1140
1140
|
backend,
|
|
1141
1141
|
"state"
|
|
1142
1142
|
);
|
|
@@ -1147,7 +1147,7 @@ async function relevantLedgerAssertions(target, memberKeys, backend) {
|
|
|
1147
1147
|
function differentLedgerFingerprint(assertions) {
|
|
1148
1148
|
return JSON.stringify(
|
|
1149
1149
|
assertions.filter((assertion) => assertion.relation === "different").map((assertion) => [assertion.id, ...endpointTuple(assertion)]).toSorted(
|
|
1150
|
-
(left, right) =>
|
|
1150
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(chunkEZEEWCFJ_cjs.encodeTupleKey(left), chunkEZEEWCFJ_cjs.encodeTupleKey(right))
|
|
1151
1151
|
)
|
|
1152
1152
|
);
|
|
1153
1153
|
}
|
|
@@ -1209,7 +1209,7 @@ async function assertPlannedIdentityIdsFresh(target, txBackend, plan) {
|
|
|
1209
1209
|
...plan.identityRetractions.map((retraction) => retraction.id)
|
|
1210
1210
|
];
|
|
1211
1211
|
if (plannedIds.length === 0) return;
|
|
1212
|
-
const storedById = await
|
|
1212
|
+
const storedById = await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionRowsByIds(
|
|
1213
1213
|
plannedIds,
|
|
1214
1214
|
txBackend
|
|
1215
1215
|
);
|
|
@@ -1262,7 +1262,7 @@ function affectedIdentityClassSeeds(plan, profile) {
|
|
|
1262
1262
|
return [...seedsByKey.values()];
|
|
1263
1263
|
}
|
|
1264
1264
|
async function assertMergedIdentityClassesConsistent(target, txBackend, plan) {
|
|
1265
|
-
await
|
|
1265
|
+
await chunk3KOY4FH3_cjs.storeRuntime(target).assertIdentityClassesConsistentAtTarget(
|
|
1266
1266
|
txBackend,
|
|
1267
1267
|
affectedIdentityClassSeeds(plan, target.graph.identity?.sameIdAcrossKinds)
|
|
1268
1268
|
);
|
|
@@ -1316,7 +1316,7 @@ function translateIdentityCommitError(error) {
|
|
|
1316
1316
|
}
|
|
1317
1317
|
async function assertIdentityPeersStable(target, txBackend, probe, plan) {
|
|
1318
1318
|
if (probe === void 0) return;
|
|
1319
|
-
const live = (await
|
|
1319
|
+
const live = (await chunk3KOY4FH3_cjs.storeRuntime(target).liveNodesSharingIds(probe.ids, txBackend)).filter((peer) => !probe.plannedDeletions.has(mergeKey(peer.kind, peer.id)));
|
|
1320
1320
|
const seedKindsById = /* @__PURE__ */ new Map();
|
|
1321
1321
|
for (const seed of probe.seeds) {
|
|
1322
1322
|
const kinds = seedKindsById.get(seed.id) ?? /* @__PURE__ */ new Set();
|
|
@@ -1341,7 +1341,7 @@ async function assertIdentityPeersStable(target, txBackend, probe, plan) {
|
|
|
1341
1341
|
probe.plannedDeletions,
|
|
1342
1342
|
txBackend
|
|
1343
1343
|
);
|
|
1344
|
-
const drifted = [...probe.classFingerprints].filter(([key, fingerprint]) => liveFingerprints.get(key) !== fingerprint).map(([key]) => key).sort((left, right) =>
|
|
1344
|
+
const drifted = [...probe.classFingerprints].filter(([key, fingerprint]) => liveFingerprints.get(key) !== fingerprint).map(([key]) => key).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
|
|
1345
1345
|
if (drifted.length > 0) {
|
|
1346
1346
|
throw new BaseVersionMismatchError(
|
|
1347
1347
|
`mergeIncremental() validated identity against the classes visible at planning, but the identity class of ${drifted.length} node(s) the plan folds on changed before the commit transaction. Committing the plan could contradict identity truth it never validated.`,
|
|
@@ -1385,8 +1385,8 @@ var ENUMERATION_PAGE_SIZE = 1e3;
|
|
|
1385
1385
|
var EXPLICIT_RETRACTION = { kind: "explicit" };
|
|
1386
1386
|
function validWindowOf(row) {
|
|
1387
1387
|
return {
|
|
1388
|
-
validFrom:
|
|
1389
|
-
validTo:
|
|
1388
|
+
validFrom: chunkTQHGE7UC_cjs.canonicalizeDatabaseTimestamp(row.valid_from),
|
|
1389
|
+
validTo: chunkTQHGE7UC_cjs.canonicalizeDatabaseTimestamp(row.valid_to)
|
|
1390
1390
|
};
|
|
1391
1391
|
}
|
|
1392
1392
|
function windowsDiffer(left, right) {
|
|
@@ -1498,7 +1498,7 @@ function diffNodeKind(kind, baseRows, forkRows) {
|
|
|
1498
1498
|
deleted.push({
|
|
1499
1499
|
id: baseRow.id,
|
|
1500
1500
|
kind,
|
|
1501
|
-
deletedAt: forkRow === void 0 ? void 0 :
|
|
1501
|
+
deletedAt: forkRow === void 0 ? void 0 : chunkTQHGE7UC_cjs.canonicalizeDatabaseTimestamp(forkRow.deleted_at)
|
|
1502
1502
|
});
|
|
1503
1503
|
}
|
|
1504
1504
|
}
|
|
@@ -1609,15 +1609,15 @@ function classifyRetractions(retracted, deletedNodes, forkRowsById) {
|
|
|
1609
1609
|
});
|
|
1610
1610
|
}
|
|
1611
1611
|
function byId(left, right) {
|
|
1612
|
-
return
|
|
1612
|
+
return chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id);
|
|
1613
1613
|
}
|
|
1614
1614
|
async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
|
|
1615
1615
|
const graph = baseStore.graph;
|
|
1616
1616
|
const nodeKinds = chunkBFUOME67_cjs.getNodeKinds(graph);
|
|
1617
1617
|
const edgeKinds = chunkBFUOME67_cjs.getEdgeKinds(graph);
|
|
1618
1618
|
const [baseIdentity, forkIdentity] = await Promise.all([
|
|
1619
|
-
|
|
1620
|
-
|
|
1619
|
+
chunk3KOY4FH3_cjs.storeRuntime(baseStore).readCurrentIdentityAssertions("archival"),
|
|
1620
|
+
chunk3KOY4FH3_cjs.storeRuntime(forkStore).readCurrentIdentityAssertions("archival")
|
|
1621
1621
|
]);
|
|
1622
1622
|
const baseIdentityById = new Map(
|
|
1623
1623
|
baseIdentity.map((assertion) => [assertion.id, assertion])
|
|
@@ -1632,12 +1632,12 @@ async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
|
|
|
1632
1632
|
const forkNodeVersions = /* @__PURE__ */ new Map();
|
|
1633
1633
|
for (const kind of nodeKinds) {
|
|
1634
1634
|
const baseRows = await enumerateAllNodes(
|
|
1635
|
-
|
|
1635
|
+
chunk3KOY4FH3_cjs.storeBackend(baseStore),
|
|
1636
1636
|
baseStore.graphId,
|
|
1637
1637
|
kind
|
|
1638
1638
|
);
|
|
1639
1639
|
const forkRows = await enumerateAllNodes(
|
|
1640
|
-
|
|
1640
|
+
chunk3KOY4FH3_cjs.storeBackend(forkStore),
|
|
1641
1641
|
forkStore.graphId,
|
|
1642
1642
|
kind
|
|
1643
1643
|
);
|
|
@@ -1667,12 +1667,12 @@ async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
|
|
|
1667
1667
|
const forkEdgeSignatures = /* @__PURE__ */ new Map();
|
|
1668
1668
|
for (const kind of edgeKinds) {
|
|
1669
1669
|
const baseRows = await enumerateAllEdges(
|
|
1670
|
-
|
|
1670
|
+
chunk3KOY4FH3_cjs.storeBackend(baseStore),
|
|
1671
1671
|
baseStore.graphId,
|
|
1672
1672
|
kind
|
|
1673
1673
|
);
|
|
1674
1674
|
const forkRows = await enumerateAllEdges(
|
|
1675
|
-
|
|
1675
|
+
chunk3KOY4FH3_cjs.storeBackend(forkStore),
|
|
1676
1676
|
forkStore.graphId,
|
|
1677
1677
|
kind
|
|
1678
1678
|
);
|
|
@@ -1708,7 +1708,7 @@ async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
|
|
|
1708
1708
|
const retractedAssertions = baseIdentity.filter((assertion) => {
|
|
1709
1709
|
const fork = forkIdentityById.get(assertion.id);
|
|
1710
1710
|
return fork === void 0 || assertionTruthKey(fork) !== assertionTruthKey(assertion);
|
|
1711
|
-
}).toSorted((left, right) =>
|
|
1711
|
+
}).toSorted((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id));
|
|
1712
1712
|
const classifiedRetractions = classifyRetractions(
|
|
1713
1713
|
retractedAssertions,
|
|
1714
1714
|
deletedNodes,
|
|
@@ -1739,7 +1739,7 @@ async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
|
|
|
1739
1739
|
new: forkIdentity.filter((assertion) => {
|
|
1740
1740
|
const base = baseIdentityById.get(assertion.id);
|
|
1741
1741
|
return base === void 0 || assertionIdentityKey(base) !== assertionIdentityKey(assertion) && assertionTruthKey(base) !== assertionTruthKey(assertion);
|
|
1742
|
-
}).toSorted((left, right) =>
|
|
1742
|
+
}).toSorted((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)),
|
|
1743
1743
|
retracted: classifiedRetractions
|
|
1744
1744
|
},
|
|
1745
1745
|
forkNodeVersions,
|
|
@@ -1769,14 +1769,14 @@ async function readActiveSchemaVersion(backend, graphId) {
|
|
|
1769
1769
|
}
|
|
1770
1770
|
async function computeSchemaComponent(store) {
|
|
1771
1771
|
const version = await readActiveSchemaVersion(
|
|
1772
|
-
|
|
1772
|
+
chunk3KOY4FH3_cjs.storeBackend(store),
|
|
1773
1773
|
store.graphId
|
|
1774
1774
|
);
|
|
1775
|
-
return
|
|
1775
|
+
return chunk3FPR224C_cjs.computeSchemaHash(chunk3FPR224C_cjs.serializeSchema(store.graph, version));
|
|
1776
1776
|
}
|
|
1777
1777
|
function byDigestEntry(left, right) {
|
|
1778
|
-
const byKind =
|
|
1779
|
-
return byKind === 0 ?
|
|
1778
|
+
const byKind = chunkEZEEWCFJ_cjs.compareStrings(left.kind, right.kind);
|
|
1779
|
+
return byKind === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id) : byKind;
|
|
1780
1780
|
}
|
|
1781
1781
|
var CONTENT_FINGERPRINT_BYTES = 16;
|
|
1782
1782
|
async function computeContentComponent(backend, graphId, graph, identityAssertions) {
|
|
@@ -1831,7 +1831,7 @@ async function computeBaseVersion(store) {
|
|
|
1831
1831
|
computeSchemaComponent(store),
|
|
1832
1832
|
store.revisionOriginNow(),
|
|
1833
1833
|
store.revisionNow(),
|
|
1834
|
-
readActiveSchemaVersion(
|
|
1834
|
+
readActiveSchemaVersion(chunk3KOY4FH3_cjs.storeBackend(store), store.graphId)
|
|
1835
1835
|
]);
|
|
1836
1836
|
return asBaseVersion(
|
|
1837
1837
|
`${schemaComponent2}${SCHEMA_VERSION_TAG}${activeVersion}${TOKEN_SEPARATOR}${revisionComponent(origin, revision)}`
|
|
@@ -1846,9 +1846,9 @@ async function computeBaseVersion(store) {
|
|
|
1846
1846
|
);
|
|
1847
1847
|
}
|
|
1848
1848
|
async function computeStoreContentComponent(store) {
|
|
1849
|
-
const identityAssertions = await
|
|
1849
|
+
const identityAssertions = await chunk3KOY4FH3_cjs.storeRuntime(store).readCurrentIdentityAssertions("state");
|
|
1850
1850
|
return computeContentComponent(
|
|
1851
|
-
|
|
1851
|
+
chunk3KOY4FH3_cjs.storeBackend(store),
|
|
1852
1852
|
store.graphId,
|
|
1853
1853
|
store.graph,
|
|
1854
1854
|
identityAssertions
|
|
@@ -1886,12 +1886,24 @@ function contentComponentOf(version) {
|
|
|
1886
1886
|
// src/graph-merge/working-copy.ts
|
|
1887
1887
|
var CLONE_IMPORT_BATCH_SIZE = 1e3;
|
|
1888
1888
|
function cloneWorkingCopyStrategy(makeBackend) {
|
|
1889
|
+
return cloneWorkingCopyWithGraphStrategy(
|
|
1890
|
+
makeBackend,
|
|
1891
|
+
(baseStore) => baseStore.graph
|
|
1892
|
+
);
|
|
1893
|
+
}
|
|
1894
|
+
function cloneIngestionWorkingCopyStrategy(makeBackend) {
|
|
1895
|
+
return cloneWorkingCopyWithGraphStrategy(
|
|
1896
|
+
makeBackend,
|
|
1897
|
+
(baseStore) => graphWithoutNodeUniqueness(baseStore.graph)
|
|
1898
|
+
);
|
|
1899
|
+
}
|
|
1900
|
+
function cloneWorkingCopyWithGraphStrategy(makeBackend, graphForClone) {
|
|
1889
1901
|
return {
|
|
1890
1902
|
create: async (baseStore) => {
|
|
1891
1903
|
const backend = await makeBackend();
|
|
1892
1904
|
try {
|
|
1893
|
-
const [freshStore] = await
|
|
1894
|
-
baseStore
|
|
1905
|
+
const [freshStore] = await chunkSR725PWF_cjs.createStoreWithSchema(
|
|
1906
|
+
graphForClone(baseStore),
|
|
1895
1907
|
backend,
|
|
1896
1908
|
{
|
|
1897
1909
|
// Keep descendants branchable with the same O(1) anchor contract,
|
|
@@ -1911,16 +1923,16 @@ function cloneWorkingCopyStrategy(makeBackend) {
|
|
|
1911
1923
|
validateReferences: true,
|
|
1912
1924
|
batchSize: CLONE_IMPORT_BATCH_SIZE
|
|
1913
1925
|
};
|
|
1914
|
-
const result =
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
) === void 0 ? await
|
|
1926
|
+
const result = chunkSIT26LAZ_cjs.snapshotExportContention(
|
|
1927
|
+
chunk3KOY4FH3_cjs.storeBackend(baseStore),
|
|
1928
|
+
chunk3KOY4FH3_cjs.storeBackend(freshStore)
|
|
1929
|
+
) === void 0 ? await chunkOTUPEF2W_cjs.importGraphStream(
|
|
1918
1930
|
freshStore,
|
|
1919
|
-
|
|
1931
|
+
chunkOTUPEF2W_cjs.exportGraphStream(baseStore, exportOptions),
|
|
1920
1932
|
importOptions
|
|
1921
|
-
) : await
|
|
1933
|
+
) : await chunkOTUPEF2W_cjs.importGraph(
|
|
1922
1934
|
freshStore,
|
|
1923
|
-
await
|
|
1935
|
+
await chunkOTUPEF2W_cjs.exportGraph(baseStore, exportOptions),
|
|
1924
1936
|
importOptions
|
|
1925
1937
|
);
|
|
1926
1938
|
if (!result.success) {
|
|
@@ -1940,15 +1952,39 @@ function cloneWorkingCopyStrategy(makeBackend) {
|
|
|
1940
1952
|
}
|
|
1941
1953
|
};
|
|
1942
1954
|
}
|
|
1955
|
+
function graphWithoutNodeUniqueness(graph) {
|
|
1956
|
+
const nodes = Object.fromEntries(
|
|
1957
|
+
Object.entries(graph.nodes).map(([name, registration]) => {
|
|
1958
|
+
const { unique: _omitted, ...withoutUnique } = registration;
|
|
1959
|
+
return [name, Object.freeze(withoutUnique)];
|
|
1960
|
+
})
|
|
1961
|
+
);
|
|
1962
|
+
const extension = graph.extension?.nodes === void 0 ? graph.extension : Object.freeze({
|
|
1963
|
+
...graph.extension,
|
|
1964
|
+
nodes: Object.freeze(
|
|
1965
|
+
Object.fromEntries(
|
|
1966
|
+
Object.entries(graph.extension.nodes).map(([name, node]) => {
|
|
1967
|
+
const { unique: _omitted, ...withoutUnique } = node;
|
|
1968
|
+
return [name, Object.freeze(withoutUnique)];
|
|
1969
|
+
})
|
|
1970
|
+
)
|
|
1971
|
+
)
|
|
1972
|
+
});
|
|
1973
|
+
return Object.freeze({
|
|
1974
|
+
...graph,
|
|
1975
|
+
nodes: Object.freeze(nodes),
|
|
1976
|
+
extension
|
|
1977
|
+
});
|
|
1978
|
+
}
|
|
1943
1979
|
|
|
1944
1980
|
// src/graph-merge/branch.ts
|
|
1945
1981
|
async function branch(baseStore, makeBackend, options, strategy) {
|
|
1946
1982
|
try {
|
|
1947
1983
|
const base = await computeBaseVersion(baseStore);
|
|
1948
|
-
const id = options?.id ?? asBranchId(
|
|
1984
|
+
const id = options?.id ?? asBranchId(chunkEZEEWCFJ_cjs.generateId());
|
|
1949
1985
|
const workingCopyStrategy = strategy ?? cloneWorkingCopyStrategy(makeBackend);
|
|
1950
1986
|
const store = await workingCopyStrategy.create(baseStore);
|
|
1951
|
-
const schemaAnchor = await
|
|
1987
|
+
const schemaAnchor = await captureBranchSchemaAnchor(store);
|
|
1952
1988
|
return chunkGYEG3ZLZ_cjs.ok({
|
|
1953
1989
|
id,
|
|
1954
1990
|
base,
|
|
@@ -1963,19 +1999,66 @@ async function branch(baseStore, makeBackend, options, strategy) {
|
|
|
1963
1999
|
);
|
|
1964
2000
|
}
|
|
1965
2001
|
}
|
|
1966
|
-
async function
|
|
2002
|
+
async function captureBranchSchemaAnchor(store) {
|
|
1967
2003
|
try {
|
|
1968
|
-
const schemaRow = await
|
|
2004
|
+
const schemaRow = await chunk3KOY4FH3_cjs.storeBackend(store).getActiveSchema(store.graphId);
|
|
1969
2005
|
return schemaRow === void 0 ? void 0 : { version: schemaRow.version, hash: schemaRow.schema_hash };
|
|
1970
2006
|
} catch (error) {
|
|
1971
2007
|
try {
|
|
1972
|
-
await
|
|
2008
|
+
await chunk3KOY4FH3_cjs.storeBackend(store).close();
|
|
1973
2009
|
} catch {
|
|
1974
2010
|
}
|
|
1975
2011
|
throw error;
|
|
1976
2012
|
}
|
|
1977
2013
|
}
|
|
1978
2014
|
|
|
2015
|
+
// src/graph-merge/ingestion-branch.ts
|
|
2016
|
+
var PRIVATE_BRANCHES = /* @__PURE__ */ new WeakMap();
|
|
2017
|
+
async function ingestionBranch(baseStore, makeBackend, options) {
|
|
2018
|
+
try {
|
|
2019
|
+
const created = await branch(
|
|
2020
|
+
baseStore,
|
|
2021
|
+
makeBackend,
|
|
2022
|
+
options,
|
|
2023
|
+
cloneIngestionWorkingCopyStrategy(makeBackend)
|
|
2024
|
+
);
|
|
2025
|
+
if (chunkGYEG3ZLZ_cjs.isErr(created)) {
|
|
2026
|
+
return chunkGYEG3ZLZ_cjs.err(
|
|
2027
|
+
new BranchError("Failed to create constraint-aware ingestion branch", {
|
|
2028
|
+
cause: created.error
|
|
2029
|
+
})
|
|
2030
|
+
);
|
|
2031
|
+
}
|
|
2032
|
+
const privateBranch = created.data;
|
|
2033
|
+
const { base, id, store } = privateBranch;
|
|
2034
|
+
const handle = Object.freeze({
|
|
2035
|
+
id,
|
|
2036
|
+
base,
|
|
2037
|
+
nodes: store.nodes,
|
|
2038
|
+
edges: store.edges,
|
|
2039
|
+
close: async () => chunk3KOY4FH3_cjs.storeBackend(store).close()
|
|
2040
|
+
});
|
|
2041
|
+
PRIVATE_BRANCHES.set(handle, privateBranch);
|
|
2042
|
+
return chunkGYEG3ZLZ_cjs.ok(handle);
|
|
2043
|
+
} catch (error) {
|
|
2044
|
+
return chunkGYEG3ZLZ_cjs.err(
|
|
2045
|
+
new BranchError("Failed to create constraint-aware ingestion branch", {
|
|
2046
|
+
cause: error
|
|
2047
|
+
})
|
|
2048
|
+
);
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
function unwrapMergeBranch(input) {
|
|
2052
|
+
const privateBranch = PRIVATE_BRANCHES.get(input);
|
|
2053
|
+
if (privateBranch !== void 0) {
|
|
2054
|
+
return privateBranch;
|
|
2055
|
+
}
|
|
2056
|
+
return input;
|
|
2057
|
+
}
|
|
2058
|
+
function unwrapMergeBranches(inputs) {
|
|
2059
|
+
return inputs.map((input) => unwrapMergeBranch(input));
|
|
2060
|
+
}
|
|
2061
|
+
|
|
1979
2062
|
// src/graph-merge/blocking.ts
|
|
1980
2063
|
var UNBLOCKED_BUCKET_KEY = "unblocked";
|
|
1981
2064
|
var KEY_PART_SEPARATOR = "\0";
|
|
@@ -2037,12 +2120,12 @@ function blockNodes(newNodes, resolveConfig, uniqueConstraints = []) {
|
|
|
2037
2120
|
}
|
|
2038
2121
|
}
|
|
2039
2122
|
const sortedKeys = [...buckets.keys()].sort(
|
|
2040
|
-
(left, right) =>
|
|
2123
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
2041
2124
|
);
|
|
2042
2125
|
const ordered = /* @__PURE__ */ new Map();
|
|
2043
2126
|
for (const key of sortedKeys) {
|
|
2044
2127
|
const members = [...chunkN66HCGCY_cjs.requireDefined(buckets.get(key))].sort(
|
|
2045
|
-
(left, right) =>
|
|
2128
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
|
|
2046
2129
|
);
|
|
2047
2130
|
ordered.set(key, members);
|
|
2048
2131
|
}
|
|
@@ -2059,7 +2142,7 @@ function buildBranchRank(branchOrder, allBranchIds) {
|
|
|
2059
2142
|
next += 1;
|
|
2060
2143
|
}
|
|
2061
2144
|
}
|
|
2062
|
-
const remaining = allBranchIds.filter((branchId) => !rank.has(branchId)).sort((left, right) =>
|
|
2145
|
+
const remaining = allBranchIds.filter((branchId) => !rank.has(branchId)).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
|
|
2063
2146
|
for (const branchId of remaining) {
|
|
2064
2147
|
if (!rank.has(branchId)) {
|
|
2065
2148
|
rank.set(branchId, next);
|
|
@@ -2131,8 +2214,8 @@ function collectConflictingValues(property, contributions) {
|
|
|
2131
2214
|
values.push({ branchId, value });
|
|
2132
2215
|
}
|
|
2133
2216
|
return [...values].sort((left, right) => {
|
|
2134
|
-
const byBranch =
|
|
2135
|
-
return byBranch === 0 ?
|
|
2217
|
+
const byBranch = chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId);
|
|
2218
|
+
return byBranch === 0 ? chunkEZEEWCFJ_cjs.compareStrings(
|
|
2136
2219
|
canonicalValueKey(left.value),
|
|
2137
2220
|
canonicalValueKey(right.value)
|
|
2138
2221
|
) : byBranch;
|
|
@@ -2262,7 +2345,7 @@ function unionProperties(canonicalMember, members, context, baseContext, branchR
|
|
|
2262
2345
|
const props = chunkN66HCGCY_cjs.createDataKeyedBag();
|
|
2263
2346
|
const conflicts = [];
|
|
2264
2347
|
for (const property of [...propertyNames].sort(
|
|
2265
|
-
(left, right) =>
|
|
2348
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
2266
2349
|
)) {
|
|
2267
2350
|
const values = collectConflictingValues(property, members);
|
|
2268
2351
|
if (values.length === 0) {
|
|
@@ -2327,14 +2410,14 @@ function canonicalizeCluster(cluster, members, policy, branchRank, weights, cano
|
|
|
2327
2410
|
);
|
|
2328
2411
|
const memberIds = [
|
|
2329
2412
|
...new Set(cluster.members.map((member) => idOf(member)))
|
|
2330
|
-
].sort((left, right) =>
|
|
2413
|
+
].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
|
|
2331
2414
|
const branchOrigins = [
|
|
2332
2415
|
...new Set(
|
|
2333
2416
|
members.map((member) => member.branchId).filter(
|
|
2334
2417
|
(branchId) => branchId !== BASE_PROVENANCE_BRANCH && branchId !== preferredBranchId
|
|
2335
2418
|
)
|
|
2336
2419
|
)
|
|
2337
|
-
].sort((left, right) =>
|
|
2420
|
+
].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
|
|
2338
2421
|
const resolution = {
|
|
2339
2422
|
canonicalId,
|
|
2340
2423
|
memberIds,
|
|
@@ -2414,7 +2497,7 @@ var EQUIVALENCE_META_EDGES = /* @__PURE__ */ new Set([
|
|
|
2414
2497
|
chunkXUO3KQFO_cjs.META_EDGE_SAME_AS
|
|
2415
2498
|
]);
|
|
2416
2499
|
function buildSubClassClosure(ontology) {
|
|
2417
|
-
const unionFind = new UnionFind(
|
|
2500
|
+
const unionFind = new UnionFind(chunkEZEEWCFJ_cjs.compareStrings);
|
|
2418
2501
|
for (const relation of ontology) {
|
|
2419
2502
|
unionFind.add(relation.from);
|
|
2420
2503
|
unionFind.add(relation.to);
|
|
@@ -2510,7 +2593,7 @@ function sourceKey(source) {
|
|
|
2510
2593
|
}
|
|
2511
2594
|
}
|
|
2512
2595
|
function compareMatchSources(left, right) {
|
|
2513
|
-
return
|
|
2596
|
+
return chunkEZEEWCFJ_cjs.compareStrings(sourceKey(left), sourceKey(right));
|
|
2514
2597
|
}
|
|
2515
2598
|
function compareEntityRefs(left, right) {
|
|
2516
2599
|
return compareMergeKeys(
|
|
@@ -3252,7 +3335,7 @@ function pickHighestPriorityBranch(branchIds, branchRank) {
|
|
|
3252
3335
|
let chosenRank = branchRank.get(chosen) ?? Number.MAX_SAFE_INTEGER;
|
|
3253
3336
|
for (const candidate of branchIds.slice(1)) {
|
|
3254
3337
|
const candidateRank = branchRank.get(candidate) ?? Number.MAX_SAFE_INTEGER;
|
|
3255
|
-
if (candidateRank < chosenRank || candidateRank === chosenRank &&
|
|
3338
|
+
if (candidateRank < chosenRank || candidateRank === chosenRank && chunkEZEEWCFJ_cjs.compareStrings(candidate, chosen) < 0) {
|
|
3256
3339
|
chosen = candidate;
|
|
3257
3340
|
chosenRank = candidateRank;
|
|
3258
3341
|
}
|
|
@@ -3345,20 +3428,20 @@ function resolveDeleteModifyOver(modified, deleted, modifiedEntity, deletedEntit
|
|
|
3345
3428
|
}
|
|
3346
3429
|
return {
|
|
3347
3430
|
survivingModifications: [...survivingModifications].sort((left, right) => {
|
|
3348
|
-
const byId2 =
|
|
3431
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(
|
|
3349
3432
|
modifiedEntity(left).id,
|
|
3350
3433
|
modifiedEntity(right).id
|
|
3351
3434
|
);
|
|
3352
|
-
return byId2 === 0 ?
|
|
3435
|
+
return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
|
|
3353
3436
|
}),
|
|
3354
3437
|
deletions: [...deletions].sort(
|
|
3355
|
-
(left, right) =>
|
|
3438
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
|
|
3356
3439
|
),
|
|
3357
3440
|
conflicts: [...conflicts].sort(
|
|
3358
|
-
(left, right) =>
|
|
3441
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.entityId, right.entityId)
|
|
3359
3442
|
),
|
|
3360
3443
|
dropped: [...dropped].sort(
|
|
3361
|
-
(left, right) =>
|
|
3444
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
|
|
3362
3445
|
)
|
|
3363
3446
|
};
|
|
3364
3447
|
}
|
|
@@ -3402,11 +3485,11 @@ function reconcileOver(survivingModifications, entityOf, rebuild, policy, branch
|
|
|
3402
3485
|
}
|
|
3403
3486
|
return {
|
|
3404
3487
|
survivingModifications: [...out].sort((left, right) => {
|
|
3405
|
-
const byId2 =
|
|
3406
|
-
return byId2 === 0 ?
|
|
3488
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(entityOf(left).id, entityOf(right).id);
|
|
3489
|
+
return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
|
|
3407
3490
|
}),
|
|
3408
3491
|
conflicts: conflicts.sort(
|
|
3409
|
-
(left, right) =>
|
|
3492
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(
|
|
3410
3493
|
`${left.entityId}|${left.property}`,
|
|
3411
3494
|
`${right.entityId}|${right.property}`
|
|
3412
3495
|
)
|
|
@@ -3440,7 +3523,7 @@ function threeWayMergeProps(entityId, kind, baseProps, contributions, context, b
|
|
|
3440
3523
|
propertyNames.add(name);
|
|
3441
3524
|
}
|
|
3442
3525
|
}
|
|
3443
|
-
for (const property of [...propertyNames].sort(
|
|
3526
|
+
for (const property of [...propertyNames].sort(chunkEZEEWCFJ_cjs.compareStrings)) {
|
|
3444
3527
|
const baseHas = chunkN66HCGCY_cjs.hasOwnKey(baseProps, property);
|
|
3445
3528
|
const baseKey = baseHas ? canonicalValueKey(chunkN66HCGCY_cjs.requireDefined(baseProps[property])) : void 0;
|
|
3446
3529
|
const changed = contributions.filter((contribution) => {
|
|
@@ -3540,7 +3623,7 @@ function earliestEnd(claims) {
|
|
|
3540
3623
|
let earliest;
|
|
3541
3624
|
for (const claim of claims) {
|
|
3542
3625
|
if (claim.change.kind !== "set") continue;
|
|
3543
|
-
if (earliest === void 0 ||
|
|
3626
|
+
if (earliest === void 0 || chunkEZEEWCFJ_cjs.compareStrings(claim.change.validTo, earliest) < 0) {
|
|
3544
3627
|
earliest = claim.change.validTo;
|
|
3545
3628
|
}
|
|
3546
3629
|
}
|
|
@@ -3556,7 +3639,7 @@ function resolveEndClaims(claims, preferredBranchId) {
|
|
|
3556
3639
|
}
|
|
3557
3640
|
function claimingBranches(claims) {
|
|
3558
3641
|
return [...new Set(claims.map((claim) => claim.branchId))].sort(
|
|
3559
|
-
(left, right) =>
|
|
3642
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
3560
3643
|
);
|
|
3561
3644
|
}
|
|
3562
3645
|
function sameValidToChange(left, right) {
|
|
@@ -3653,7 +3736,7 @@ function resolvePopulation(entity, deltas, deletions, preferredBranchId, dropIte
|
|
|
3653
3736
|
mergeKey(right.kind, right.id)
|
|
3654
3737
|
)
|
|
3655
3738
|
),
|
|
3656
|
-
dropped: dropped.sort((left, right) =>
|
|
3739
|
+
dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id))
|
|
3657
3740
|
};
|
|
3658
3741
|
}
|
|
3659
3742
|
function resolveValidWindows(staging, nodeDeletions, edgeDeletions, preferredBranchId) {
|
|
@@ -3742,7 +3825,7 @@ function rowsById(groupEdges) {
|
|
|
3742
3825
|
function sourcePairByRow(rows) {
|
|
3743
3826
|
const pairs = /* @__PURE__ */ new Map();
|
|
3744
3827
|
for (const [id, members] of rows) {
|
|
3745
|
-
const sorted = members.map((member) => member.sourcePair).sort((left, right) =>
|
|
3828
|
+
const sorted = members.map((member) => member.sourcePair).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
|
|
3746
3829
|
pairs.set(id, chunkN66HCGCY_cjs.requireDefined(sorted[0]));
|
|
3747
3830
|
}
|
|
3748
3831
|
return pairs;
|
|
@@ -3753,14 +3836,14 @@ function foldSets(groupEdges) {
|
|
|
3753
3836
|
const representatives = /* @__PURE__ */ new Map();
|
|
3754
3837
|
for (const [id, pair] of sourcePairs) {
|
|
3755
3838
|
const representative = representatives.get(pair);
|
|
3756
|
-
if (representative === void 0 ||
|
|
3839
|
+
if (representative === void 0 || chunkEZEEWCFJ_cjs.compareStrings(id, representative) < 0) {
|
|
3757
3840
|
representatives.set(pair, id);
|
|
3758
3841
|
}
|
|
3759
3842
|
}
|
|
3760
3843
|
const collapsed = [];
|
|
3761
3844
|
const parallel = [];
|
|
3762
3845
|
for (const id of [...rows.keys()].sort(
|
|
3763
|
-
(left, right) =>
|
|
3846
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
3764
3847
|
)) {
|
|
3765
3848
|
const members = chunkN66HCGCY_cjs.requireDefined(rows.get(id));
|
|
3766
3849
|
const pair = chunkN66HCGCY_cjs.requireDefined(sourcePairs.get(id));
|
|
@@ -3773,7 +3856,7 @@ function foldSets(groupEdges) {
|
|
|
3773
3856
|
return [collapsed, ...parallel];
|
|
3774
3857
|
}
|
|
3775
3858
|
function compareMembers(left, right, preferredBranchId) {
|
|
3776
|
-
const byId2 =
|
|
3859
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.staged.id, right.staged.id);
|
|
3777
3860
|
if (byId2 !== 0) {
|
|
3778
3861
|
return byId2;
|
|
3779
3862
|
}
|
|
@@ -3782,7 +3865,7 @@ function compareMembers(left, right, preferredBranchId) {
|
|
|
3782
3865
|
if (leftPreferred !== rightPreferred) {
|
|
3783
3866
|
return leftPreferred ? -1 : 1;
|
|
3784
3867
|
}
|
|
3785
|
-
return
|
|
3868
|
+
return chunkEZEEWCFJ_cjs.compareStrings(left.staged.branchId, right.staged.branchId);
|
|
3786
3869
|
}
|
|
3787
3870
|
function pickSurvivor(edges, preferredBranchId) {
|
|
3788
3871
|
const inherited = edges.filter(
|
|
@@ -3808,8 +3891,8 @@ function authoredProperty(edge, property) {
|
|
|
3808
3891
|
}
|
|
3809
3892
|
function unauthoredValue(property, edges) {
|
|
3810
3893
|
const carriers = edges.filter((edge) => chunkN66HCGCY_cjs.hasOwnKey(edge.staged.props, property)).sort((left, right) => {
|
|
3811
|
-
const byId2 =
|
|
3812
|
-
return byId2 === 0 ?
|
|
3894
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.staged.id, right.staged.id);
|
|
3895
|
+
return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(
|
|
3813
3896
|
canonicalValueKey(left.staged.props[property]),
|
|
3814
3897
|
canonicalValueKey(right.staged.props[property])
|
|
3815
3898
|
) : byId2;
|
|
@@ -3826,7 +3909,7 @@ function unionEdgeProps(survivorId, kind, survivor, edges, context, branchRank,
|
|
|
3826
3909
|
const props = chunkN66HCGCY_cjs.createDataKeyedBag();
|
|
3827
3910
|
const conflicts = [];
|
|
3828
3911
|
for (const property of [...propertyNames].sort(
|
|
3829
|
-
(left, right) =>
|
|
3912
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
3830
3913
|
)) {
|
|
3831
3914
|
const claimants = edges.filter((edge) => authoredProperty(edge, property)).map((edge) => edge.staged);
|
|
3832
3915
|
const values = collectConflictingValues(property, claimants);
|
|
@@ -3859,7 +3942,7 @@ function unionEdgeProps(survivorId, kind, survivor, edges, context, branchRank,
|
|
|
3859
3942
|
function foldEdgeSet(foldSet, context, branchRank, preferredBranchId) {
|
|
3860
3943
|
const survivor = pickSurvivor(foldSet, preferredBranchId);
|
|
3861
3944
|
const survivorId = survivor.staged.id;
|
|
3862
|
-
const mergedIds = foldSet.map((edge) => edge.staged.id).sort((left, right) =>
|
|
3945
|
+
const mergedIds = foldSet.map((edge) => edge.staged.id).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
|
|
3863
3946
|
const fromId = idOf(survivor.fromKey);
|
|
3864
3947
|
const fromKind = kindOf(survivor.fromKey);
|
|
3865
3948
|
const toId = idOf(survivor.toKey);
|
|
@@ -3957,7 +4040,7 @@ function repointEdges(stagedEdges, canonicalOf, deletedNodeIds, policy, branchRa
|
|
|
3957
4040
|
const merged = [];
|
|
3958
4041
|
const conflicts = [];
|
|
3959
4042
|
const sortedGroups = [...liveByGroup.keys()].sort(
|
|
3960
|
-
(left, right) =>
|
|
4043
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
3961
4044
|
);
|
|
3962
4045
|
for (const group of sortedGroups) {
|
|
3963
4046
|
const groupEdges = chunkN66HCGCY_cjs.requireDefined(liveByGroup.get(group));
|
|
@@ -3985,12 +4068,12 @@ function repointEdges(stagedEdges, canonicalOf, deletedNodeIds, policy, branchRa
|
|
|
3985
4068
|
),
|
|
3986
4069
|
edge.id
|
|
3987
4070
|
])
|
|
3988
|
-
})).sort((left, right) =>
|
|
4071
|
+
})).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.sortKey, right.sortKey)).map(({ edge }) => edge);
|
|
3989
4072
|
return {
|
|
3990
4073
|
edges: sortedEdges,
|
|
3991
|
-
dropped: dropped.sort((left, right) =>
|
|
4074
|
+
dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)),
|
|
3992
4075
|
conflicts: conflicts.sort(
|
|
3993
|
-
(left, right) =>
|
|
4076
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(
|
|
3994
4077
|
`${left.entityId}|${left.property}`,
|
|
3995
4078
|
`${right.entityId}|${right.property}`
|
|
3996
4079
|
)
|
|
@@ -4781,7 +4864,7 @@ function buildProvenanceGraph(targetGraphId) {
|
|
|
4781
4864
|
});
|
|
4782
4865
|
}
|
|
4783
4866
|
async function openProvenanceStore(...args) {
|
|
4784
|
-
const [backend, targetGraphId] = args.length === 1 ? [
|
|
4867
|
+
const [backend, targetGraphId] = args.length === 1 ? [chunk3KOY4FH3_cjs.storeBackend(args[0]), args[0].graphId] : args;
|
|
4785
4868
|
const graph = buildOwnedProvenanceGraph(targetGraphId);
|
|
4786
4869
|
const preflight = await inspectSidecarGraphId(backend, graph, targetGraphId);
|
|
4787
4870
|
if (preflight.state === "refuse") {
|
|
@@ -4793,7 +4876,7 @@ async function openProvenanceStore(...args) {
|
|
|
4793
4876
|
throw provenanceGraphIdCollision(graph.id, targetGraphId, claim.reason);
|
|
4794
4877
|
}
|
|
4795
4878
|
}
|
|
4796
|
-
const [store] = await
|
|
4879
|
+
const [store] = await chunkSR725PWF_cjs.createStoreWithSchema(graph, backend);
|
|
4797
4880
|
return store;
|
|
4798
4881
|
}
|
|
4799
4882
|
async function claimSidecarOwnership(backend, graph, targetGraphId) {
|
|
@@ -4842,14 +4925,14 @@ async function inspectSidecarGraphId(port, graph, targetGraphId) {
|
|
|
4842
4925
|
if (activeSchema === void 0) {
|
|
4843
4926
|
return { state: "refuse", reason: "application-graph" };
|
|
4844
4927
|
}
|
|
4845
|
-
const ownedHash = await
|
|
4846
|
-
|
|
4928
|
+
const ownedHash = await chunk3FPR224C_cjs.computeSchemaHash(
|
|
4929
|
+
chunk3FPR224C_cjs.serializeSchema(graph, activeSchema.version)
|
|
4847
4930
|
);
|
|
4848
4931
|
if (activeSchema.schema_hash === ownedHash) {
|
|
4849
4932
|
return { state: "refuse", reason: "unowned-exact-schema-graph" };
|
|
4850
4933
|
}
|
|
4851
|
-
const legacyHash = await
|
|
4852
|
-
|
|
4934
|
+
const legacyHash = await chunk3FPR224C_cjs.computeSchemaHash(
|
|
4935
|
+
chunk3FPR224C_cjs.serializeSchema(buildProvenanceGraph(targetGraphId), activeSchema.version)
|
|
4853
4936
|
);
|
|
4854
4937
|
if (activeSchema.schema_hash !== legacyHash) {
|
|
4855
4938
|
return { state: "refuse", reason: "application-graph" };
|
|
@@ -5041,7 +5124,7 @@ function contributionKey(record) {
|
|
|
5041
5124
|
]);
|
|
5042
5125
|
}
|
|
5043
5126
|
function encodeProvenanceTuple(values) {
|
|
5044
|
-
return values.some((value) => value.includes(ID_SEPARATOR)) ?
|
|
5127
|
+
return values.some((value) => value.includes(ID_SEPARATOR)) ? chunkEZEEWCFJ_cjs.encodeTupleKey(values) : values.join(ID_SEPARATOR);
|
|
5045
5128
|
}
|
|
5046
5129
|
async function provenanceNodeId(targetGraphId, record) {
|
|
5047
5130
|
const tuple = encodeProvenanceTuple([
|
|
@@ -5084,7 +5167,7 @@ async function readProvenance(store, query = {}) {
|
|
|
5084
5167
|
const all = await store.nodes.Provenance.find();
|
|
5085
5168
|
return all.filter(
|
|
5086
5169
|
(node) => (query.branchId === void 0 || node.branchId === query.branchId) && (query.canonicalId === void 0 || node.canonicalId === query.canonicalId) && (query.role === void 0 || node.role === query.role)
|
|
5087
|
-
).sort((left, right) =>
|
|
5170
|
+
).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id));
|
|
5088
5171
|
}
|
|
5089
5172
|
|
|
5090
5173
|
// src/graph-merge/sources.ts
|
|
@@ -5094,10 +5177,10 @@ function orderEndpoints(left, right, sources) {
|
|
|
5094
5177
|
return compareMergeKeys(leftKey, rightKey) <= 0 ? { a: leftKey, b: rightKey, left, right, sources } : { a: rightKey, b: leftKey, left: right, right: left, sources };
|
|
5095
5178
|
}
|
|
5096
5179
|
function sortMembersById(members) {
|
|
5097
|
-
return [...members].sort((left, right) =>
|
|
5180
|
+
return [...members].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id));
|
|
5098
5181
|
}
|
|
5099
5182
|
function sortedBucketKeys(blocks) {
|
|
5100
|
-
return [...blocks.keys()].sort((left, right) =>
|
|
5183
|
+
return [...blocks.keys()].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
|
|
5101
5184
|
}
|
|
5102
5185
|
var NODE_SYSTEM_FIELDS = /* @__PURE__ */ new Set(["id", "kind", "meta"]);
|
|
5103
5186
|
function nodeProps(node) {
|
|
@@ -5125,7 +5208,7 @@ function windowedPairs(members, config) {
|
|
|
5125
5208
|
key: fieldText(node, config.sortFields)
|
|
5126
5209
|
}));
|
|
5127
5210
|
keyed.sort(
|
|
5128
|
-
(left, right) => left.key === right.key ?
|
|
5211
|
+
(left, right) => left.key === right.key ? chunkEZEEWCFJ_cjs.compareStrings(left.node.id, right.node.id) : chunkEZEEWCFJ_cjs.compareStrings(left.key, right.key)
|
|
5129
5212
|
);
|
|
5130
5213
|
const pairs = [];
|
|
5131
5214
|
for (let index = 0; index < keyed.length; index += 1) {
|
|
@@ -5236,7 +5319,7 @@ function ontologyRetypeEdges(stagedIdentities, isRetypeCompatible) {
|
|
|
5236
5319
|
}
|
|
5237
5320
|
}
|
|
5238
5321
|
const edges = [];
|
|
5239
|
-
for (const id of [...identitiesById.keys()].sort(
|
|
5322
|
+
for (const id of [...identitiesById.keys()].sort(chunkEZEEWCFJ_cjs.compareStrings)) {
|
|
5240
5323
|
const identities = [...new Set(identitiesById.get(id))].sort(
|
|
5241
5324
|
compareMergeKeys
|
|
5242
5325
|
);
|
|
@@ -5344,7 +5427,7 @@ var baseUniqueSource = {
|
|
|
5344
5427
|
const forcedEdges = [];
|
|
5345
5428
|
const baseMembers = /* @__PURE__ */ new Map();
|
|
5346
5429
|
const constraints = [...uniqueConstraints].sort(
|
|
5347
|
-
(left, right) =>
|
|
5430
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.name, right.name)
|
|
5348
5431
|
);
|
|
5349
5432
|
const items = nodes.map((node) => ({ props: nodeProps(node) }));
|
|
5350
5433
|
const matchesByConstraint = await Promise.all(
|
|
@@ -5414,7 +5497,7 @@ var baseUniqueSource = {
|
|
|
5414
5497
|
pairs: [],
|
|
5415
5498
|
forcedEdges,
|
|
5416
5499
|
baseMembers: [...baseMembers.values()].sort(
|
|
5417
|
-
(left, right) =>
|
|
5500
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
|
|
5418
5501
|
)
|
|
5419
5502
|
};
|
|
5420
5503
|
}
|
|
@@ -5492,7 +5575,7 @@ var baseKeySource = {
|
|
|
5492
5575
|
pairs,
|
|
5493
5576
|
forcedEdges: [],
|
|
5494
5577
|
baseMembers: [...baseMembers.values()].sort(
|
|
5495
|
-
(left, right) =>
|
|
5578
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
|
|
5496
5579
|
)
|
|
5497
5580
|
};
|
|
5498
5581
|
}
|
|
@@ -5504,16 +5587,16 @@ var CANDIDATE_SOURCES = [
|
|
|
5504
5587
|
|
|
5505
5588
|
// src/graph-merge/staging.ts
|
|
5506
5589
|
function compareByIdThenBranch(left, right) {
|
|
5507
|
-
const byId2 =
|
|
5508
|
-
return byId2 === 0 ?
|
|
5590
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id);
|
|
5591
|
+
return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
|
|
5509
5592
|
}
|
|
5510
5593
|
function compareByKindIdBranch(left, right) {
|
|
5511
|
-
const byKind =
|
|
5594
|
+
const byKind = chunkEZEEWCFJ_cjs.compareStrings(left.kind, right.kind);
|
|
5512
5595
|
if (byKind !== 0) {
|
|
5513
5596
|
return byKind;
|
|
5514
5597
|
}
|
|
5515
|
-
const byId2 =
|
|
5516
|
-
return byId2 === 0 ?
|
|
5598
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id);
|
|
5599
|
+
return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
|
|
5517
5600
|
}
|
|
5518
5601
|
function groupByKind(items) {
|
|
5519
5602
|
const buckets = /* @__PURE__ */ new Map();
|
|
@@ -5527,7 +5610,7 @@ function groupByKind(items) {
|
|
|
5527
5610
|
}
|
|
5528
5611
|
const ordered = /* @__PURE__ */ new Map();
|
|
5529
5612
|
for (const kind of [...buckets.keys()].sort(
|
|
5530
|
-
(left, right) =>
|
|
5613
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
5531
5614
|
)) {
|
|
5532
5615
|
ordered.set(
|
|
5533
5616
|
kind,
|
|
@@ -5549,7 +5632,7 @@ async function stageBranches(baseStore, branches, captureTargetStateFor) {
|
|
|
5549
5632
|
const windowedEdges = [];
|
|
5550
5633
|
const newIdentityAssertions = [];
|
|
5551
5634
|
const retractedIdentityAssertions = [];
|
|
5552
|
-
const baseIdentityAssertions = await
|
|
5635
|
+
const baseIdentityAssertions = await chunk3KOY4FH3_cjs.storeRuntime(baseStore).readCurrentIdentityAssertions("state");
|
|
5553
5636
|
let targetNodeVersions = /* @__PURE__ */ new Map();
|
|
5554
5637
|
let targetEdgeSignatures = /* @__PURE__ */ new Map();
|
|
5555
5638
|
for (const branch2 of branches) {
|
|
@@ -5620,17 +5703,17 @@ async function stageBranches(baseStore, branches, captureTargetStateFor) {
|
|
|
5620
5703
|
(left, right) => compareByKindIdBranch(left, right)
|
|
5621
5704
|
),
|
|
5622
5705
|
newIdentityAssertions: newIdentityAssertions.toSorted((left, right) => {
|
|
5623
|
-
const byId2 =
|
|
5624
|
-
return byId2 === 0 ?
|
|
5706
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.assertion.id, right.assertion.id);
|
|
5707
|
+
return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
|
|
5625
5708
|
}),
|
|
5626
5709
|
retractedIdentityAssertions: retractedIdentityAssertions.toSorted(
|
|
5627
5710
|
(left, right) => {
|
|
5628
|
-
const byId2 =
|
|
5629
|
-
return byId2 === 0 ?
|
|
5711
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.assertion.id, right.assertion.id);
|
|
5712
|
+
return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
|
|
5630
5713
|
}
|
|
5631
5714
|
),
|
|
5632
5715
|
baseIdentityAssertions: baseIdentityAssertions.toSorted(
|
|
5633
|
-
(left, right) =>
|
|
5716
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
|
|
5634
5717
|
),
|
|
5635
5718
|
targetNodeVersions,
|
|
5636
5719
|
targetEdgeSignatures
|
|
@@ -5682,7 +5765,7 @@ async function withTxConflictRetry(commit) {
|
|
|
5682
5765
|
// src/graph-merge/type-reconcile.ts
|
|
5683
5766
|
var INCOMPATIBLE_TYPES_FLAG_REASON = "type-reconcile:incompatible-kinds";
|
|
5684
5767
|
function distinctKinds(kinds) {
|
|
5685
|
-
return [...new Set(kinds)].sort((left, right) =>
|
|
5768
|
+
return [...new Set(kinds)].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
|
|
5686
5769
|
}
|
|
5687
5770
|
function areEquivalent(closure, left, right) {
|
|
5688
5771
|
return left !== right && isReachable2(closure, left, right) && isReachable2(closure, right, left);
|
|
@@ -5701,7 +5784,7 @@ function mostSpecificCommonKind(closure, kinds) {
|
|
|
5701
5784
|
return void 0;
|
|
5702
5785
|
}
|
|
5703
5786
|
return chunkN66HCGCY_cjs.requireDefined(
|
|
5704
|
-
[...qualifiers].sort((left, right) =>
|
|
5787
|
+
[...qualifiers].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right))[0]
|
|
5705
5788
|
);
|
|
5706
5789
|
}
|
|
5707
5790
|
function reconcileTypes(clusters, closure, mode) {
|
|
@@ -5739,10 +5822,10 @@ function reconcileTypes(clusters, closure, mode) {
|
|
|
5739
5822
|
}
|
|
5740
5823
|
return {
|
|
5741
5824
|
reconciliations: reconciliations.sort(
|
|
5742
|
-
(left, right) =>
|
|
5825
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.entityId, right.entityId)
|
|
5743
5826
|
),
|
|
5744
5827
|
retypeMap,
|
|
5745
|
-
dropped: dropped.sort((left, right) =>
|
|
5828
|
+
dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id))
|
|
5746
5829
|
};
|
|
5747
5830
|
}
|
|
5748
5831
|
|
|
@@ -5760,8 +5843,8 @@ function newNodesByKind(staging) {
|
|
|
5760
5843
|
ordered.set(
|
|
5761
5844
|
kind,
|
|
5762
5845
|
[...items].sort((left, right) => {
|
|
5763
|
-
const byId2 =
|
|
5764
|
-
return byId2 === 0 ?
|
|
5846
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.node.id, right.node.id);
|
|
5847
|
+
return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
|
|
5765
5848
|
})
|
|
5766
5849
|
);
|
|
5767
5850
|
}
|
|
@@ -5795,7 +5878,7 @@ async function precomputeEmbeddings(byKind, resolve, embedder) {
|
|
|
5795
5878
|
}
|
|
5796
5879
|
async function embedSortedTexts(texts, embedder) {
|
|
5797
5880
|
const orderedTexts = [...texts].sort(
|
|
5798
|
-
(left, right) =>
|
|
5881
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
5799
5882
|
);
|
|
5800
5883
|
const vectors = await embedder(orderedTexts);
|
|
5801
5884
|
if (vectors.length !== orderedTexts.length) {
|
|
@@ -6070,9 +6153,9 @@ function buildProvenanceIndex(records) {
|
|
|
6070
6153
|
for (const [branchId, sets] of byBranch) {
|
|
6071
6154
|
frozen.set(branchId, {
|
|
6072
6155
|
nodeIds: [...sets.nodeIds].sort(
|
|
6073
|
-
(left, right) =>
|
|
6156
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
6074
6157
|
),
|
|
6075
|
-
edgeIds: [...sets.edgeIds].sort((left, right) =>
|
|
6158
|
+
edgeIds: [...sets.edgeIds].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)).map((id) => id)
|
|
6076
6159
|
});
|
|
6077
6160
|
}
|
|
6078
6161
|
return {
|
|
@@ -6472,7 +6555,7 @@ function buildInternalMergePlan(staging, candidateEdges, candidateWarnings, cand
|
|
|
6472
6555
|
...identityRemap.dropped,
|
|
6473
6556
|
...validWindows.dropped
|
|
6474
6557
|
].sort(
|
|
6475
|
-
(left, right) =>
|
|
6558
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(`${left.kind}|${left.id}`, `${right.kind}|${right.id}`)
|
|
6476
6559
|
);
|
|
6477
6560
|
return {
|
|
6478
6561
|
canonicalEntities,
|
|
@@ -6509,7 +6592,7 @@ function buildInternalMergePlan(staging, candidateEdges, candidateWarnings, cand
|
|
|
6509
6592
|
mergeKey(left.kind, left.entityId),
|
|
6510
6593
|
mergeKey(right.kind, right.entityId)
|
|
6511
6594
|
);
|
|
6512
|
-
return byEntity === 0 ?
|
|
6595
|
+
return byEntity === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.property, right.property) : byEntity;
|
|
6513
6596
|
}
|
|
6514
6597
|
),
|
|
6515
6598
|
deleteModifyConflicts: [
|
|
@@ -6659,20 +6742,67 @@ function nodeWriteWindowOptions(write) {
|
|
|
6659
6742
|
...write.validTo === void 0 ? {} : { validTo: write.validTo }
|
|
6660
6743
|
};
|
|
6661
6744
|
}
|
|
6662
|
-
async function applyNodeRows(nodesApi, deletions, upserts) {
|
|
6663
|
-
|
|
6664
|
-
|
|
6665
|
-
}
|
|
6666
|
-
const committed = /* @__PURE__ */ new Set();
|
|
6745
|
+
async function applyNodeRows(target, txBackend, nodesApi, deletions, upserts) {
|
|
6746
|
+
const afterImages = /* @__PURE__ */ new Map();
|
|
6747
|
+
const upsertsByKind = /* @__PURE__ */ new Map();
|
|
6667
6748
|
for (const upsert of upserts) {
|
|
6668
|
-
|
|
6669
|
-
|
|
6670
|
-
|
|
6671
|
-
|
|
6749
|
+
const items = upsertsByKind.get(upsert.kind);
|
|
6750
|
+
if (items === void 0) upsertsByKind.set(upsert.kind, [upsert]);
|
|
6751
|
+
else items.push(upsert);
|
|
6752
|
+
}
|
|
6753
|
+
for (const [kind, items] of upsertsByKind) {
|
|
6754
|
+
const currentRows = await nodeCollection(nodesApi, kind).getByIds(
|
|
6755
|
+
items.map((item) => item.id),
|
|
6756
|
+
INCLUDE_TOMBSTONES
|
|
6672
6757
|
);
|
|
6673
|
-
|
|
6758
|
+
const currentById = /* @__PURE__ */ new Map();
|
|
6759
|
+
for (const node of currentRows) {
|
|
6760
|
+
if (node !== void 0) currentById.set(node.id, nodeProps2(node));
|
|
6761
|
+
}
|
|
6762
|
+
for (const item of items) {
|
|
6763
|
+
const props = chunkN66HCGCY_cjs.createDataKeyedBag();
|
|
6764
|
+
const unset = new Set(
|
|
6765
|
+
Object.entries(item.props).filter(([, value]) => value === void 0).map(([key]) => key)
|
|
6766
|
+
);
|
|
6767
|
+
for (const [key, value] of Object.entries(
|
|
6768
|
+
currentById.get(item.id) ?? {}
|
|
6769
|
+
)) {
|
|
6770
|
+
if (!unset.has(key)) props[key] = value;
|
|
6771
|
+
}
|
|
6772
|
+
for (const [key, value] of Object.entries(item.props)) {
|
|
6773
|
+
if (value !== void 0) props[key] = value;
|
|
6774
|
+
}
|
|
6775
|
+
afterImages.set(mergeKey(kind, item.id), props);
|
|
6776
|
+
}
|
|
6674
6777
|
}
|
|
6675
|
-
return
|
|
6778
|
+
return chunk3KOY4FH3_cjs.storeRuntime(target).applyResolvedNodeUniqueness(
|
|
6779
|
+
txBackend,
|
|
6780
|
+
{
|
|
6781
|
+
upserts: upserts.map((upsert) => ({
|
|
6782
|
+
kind: upsert.kind,
|
|
6783
|
+
id: upsert.id,
|
|
6784
|
+
props: chunkN66HCGCY_cjs.requireDefined(
|
|
6785
|
+
afterImages.get(mergeKey(upsert.kind, upsert.id))
|
|
6786
|
+
)
|
|
6787
|
+
})),
|
|
6788
|
+
releases: deletions
|
|
6789
|
+
},
|
|
6790
|
+
async () => {
|
|
6791
|
+
for (const deletion of deletions) {
|
|
6792
|
+
await nodeCollection(nodesApi, deletion.kind).delete(deletion.id);
|
|
6793
|
+
}
|
|
6794
|
+
const committed = /* @__PURE__ */ new Set();
|
|
6795
|
+
for (const upsert of upserts) {
|
|
6796
|
+
await nodeCollection(nodesApi, upsert.kind).upsertByIdFromRecord(
|
|
6797
|
+
upsert.id,
|
|
6798
|
+
upsert.props,
|
|
6799
|
+
nodeWriteWindowOptions(upsert)
|
|
6800
|
+
);
|
|
6801
|
+
committed.add(mergeKey(upsert.kind, upsert.id));
|
|
6802
|
+
}
|
|
6803
|
+
return committed.size;
|
|
6804
|
+
}
|
|
6805
|
+
);
|
|
6676
6806
|
}
|
|
6677
6807
|
async function applyEdgeRows(edgesApi, deletions, upserts) {
|
|
6678
6808
|
for (const deletion of deletions) {
|
|
@@ -6693,7 +6823,7 @@ async function applyEdgeRows(edgesApi, deletions, upserts) {
|
|
|
6693
6823
|
}
|
|
6694
6824
|
async function applyIdentityRows(target, txBackend, assertions, retractions, assertConsistent) {
|
|
6695
6825
|
try {
|
|
6696
|
-
const applied = await
|
|
6826
|
+
const applied = await chunk3KOY4FH3_cjs.storeRuntime(target).applyIdentityMergeAtTarget(
|
|
6697
6827
|
txBackend,
|
|
6698
6828
|
retractions,
|
|
6699
6829
|
assertions
|
|
@@ -6733,7 +6863,13 @@ async function applyInternalMergePlan(plan, nodesApi, edgesApi, target, txBacken
|
|
|
6733
6863
|
);
|
|
6734
6864
|
let committedNodes;
|
|
6735
6865
|
try {
|
|
6736
|
-
committedNodes = await applyNodeRows(
|
|
6866
|
+
committedNodes = await applyNodeRows(
|
|
6867
|
+
target,
|
|
6868
|
+
txBackend,
|
|
6869
|
+
nodesApi,
|
|
6870
|
+
nodeDeletions,
|
|
6871
|
+
nodeUpserts
|
|
6872
|
+
);
|
|
6737
6873
|
} catch (error) {
|
|
6738
6874
|
throw error instanceof chunkMRDBBHIZ_cjs.IdentityEndpointValidityError ? translateIdentityCommitError(error) : error;
|
|
6739
6875
|
}
|
|
@@ -6785,7 +6921,7 @@ async function applyInternalMergePlan(plan, nodesApi, edgesApi, target, txBacken
|
|
|
6785
6921
|
};
|
|
6786
6922
|
}
|
|
6787
6923
|
async function commitPlan(target, plan, expectedBaseVersion) {
|
|
6788
|
-
if (!
|
|
6924
|
+
if (!chunk3KOY4FH3_cjs.storeBackend(target).capabilities.transactions) {
|
|
6789
6925
|
throw new MergeError(
|
|
6790
6926
|
"merge() requires a transaction-capable target backend. The merged plan (canonical upserts, soft-deletes, edge upserts) must commit atomically; a non-transactional fallback would leave a partially-merged graph on a mid-commit failure. (mergeIncremental() enforces the same requirement.)",
|
|
6791
6927
|
{ details: { capability: "transactions" } }
|
|
@@ -6796,14 +6932,14 @@ async function commitPlan(target, plan, expectedBaseVersion) {
|
|
|
6796
6932
|
() => target.transaction(async (tx) => {
|
|
6797
6933
|
if (expectedBaseVersion !== void 0) {
|
|
6798
6934
|
await assertTargetUnchanged(
|
|
6799
|
-
|
|
6935
|
+
chunk3KOY4FH3_cjs.transactionBackend(tx),
|
|
6800
6936
|
target,
|
|
6801
6937
|
expectedBaseVersion
|
|
6802
6938
|
);
|
|
6803
6939
|
}
|
|
6804
6940
|
await assertPlannedIdentityIdsFresh(
|
|
6805
6941
|
target,
|
|
6806
|
-
|
|
6942
|
+
chunk3KOY4FH3_cjs.transactionBackend(tx),
|
|
6807
6943
|
plan
|
|
6808
6944
|
);
|
|
6809
6945
|
return applyInternalMergePlan(
|
|
@@ -6811,7 +6947,7 @@ async function commitPlan(target, plan, expectedBaseVersion) {
|
|
|
6811
6947
|
tx.nodes,
|
|
6812
6948
|
tx.edges,
|
|
6813
6949
|
target,
|
|
6814
|
-
|
|
6950
|
+
chunk3KOY4FH3_cjs.transactionBackend(tx)
|
|
6815
6951
|
);
|
|
6816
6952
|
}, mergeCommitTransactionOptions(target))
|
|
6817
6953
|
)
|
|
@@ -6832,9 +6968,9 @@ function mergeCommitTransactionOptions(target) {
|
|
|
6832
6968
|
}
|
|
6833
6969
|
async function assertTargetUnchanged(txBackend, target, expectedBaseVersion) {
|
|
6834
6970
|
if (hasRevisionAnchor(expectedBaseVersion)) {
|
|
6835
|
-
await
|
|
6971
|
+
await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
|
|
6836
6972
|
const expectedOrigin = revisionOriginOf(expectedBaseVersion);
|
|
6837
|
-
const liveOrigin = await
|
|
6973
|
+
const liveOrigin = await chunkEZEEWCFJ_cjs.readRevisionOrigin(
|
|
6838
6974
|
txBackend,
|
|
6839
6975
|
target.revisionSchema,
|
|
6840
6976
|
target.graphId
|
|
@@ -6848,7 +6984,7 @@ async function assertTargetUnchanged(txBackend, target, expectedBaseVersion) {
|
|
|
6848
6984
|
}
|
|
6849
6985
|
);
|
|
6850
6986
|
}
|
|
6851
|
-
const liveRevision = await
|
|
6987
|
+
const liveRevision = await chunkEZEEWCFJ_cjs.readRecordedClock(
|
|
6852
6988
|
txBackend,
|
|
6853
6989
|
target.revisionSchema,
|
|
6854
6990
|
target.graphId
|
|
@@ -6869,7 +7005,7 @@ async function assertTargetUnchanged(txBackend, target, expectedBaseVersion) {
|
|
|
6869
7005
|
txBackend,
|
|
6870
7006
|
target.graphId,
|
|
6871
7007
|
target.graph,
|
|
6872
|
-
await
|
|
7008
|
+
await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionsAtTarget(txBackend, "state")
|
|
6873
7009
|
);
|
|
6874
7010
|
const expectedContent = contentComponentOf(expectedBaseVersion);
|
|
6875
7011
|
if (liveContent !== expectedContent) {
|
|
@@ -6961,7 +7097,7 @@ async function tryOpenProvenanceStore(target) {
|
|
|
6961
7097
|
}
|
|
6962
7098
|
}
|
|
6963
7099
|
function assertPublicPlanCapability(target) {
|
|
6964
|
-
if (!
|
|
7100
|
+
if (!chunk3KOY4FH3_cjs.storeBackend(target).capabilities.transactions) {
|
|
6965
7101
|
throw new MergePlanCapabilityError(
|
|
6966
7102
|
"Public merge plans require a transaction-capable target backend.",
|
|
6967
7103
|
{ details: { capability: "transactions" } }
|
|
@@ -6980,7 +7116,7 @@ function assertPublicPlanCapability(target) {
|
|
|
6980
7116
|
async function captureMergePlanTargetFence(target) {
|
|
6981
7117
|
assertPublicPlanCapability(target);
|
|
6982
7118
|
const [activeSchema, schemaHash, origin, revision] = await Promise.all([
|
|
6983
|
-
|
|
7119
|
+
chunk3KOY4FH3_cjs.storeBackend(target).getActiveSchema(target.graphId),
|
|
6984
7120
|
computeSchemaComponent(target),
|
|
6985
7121
|
target.revisionOriginNow(),
|
|
6986
7122
|
target.revisionNow()
|
|
@@ -7009,7 +7145,7 @@ async function assertPlanningFenceUnchanged(target, startingFence) {
|
|
|
7009
7145
|
function splitWireProps(props) {
|
|
7010
7146
|
const setProps = chunkN66HCGCY_cjs.createDataKeyedBag();
|
|
7011
7147
|
const unsetProps = [];
|
|
7012
|
-
for (const key of Object.keys(props).sort(
|
|
7148
|
+
for (const key of Object.keys(props).sort(chunkEZEEWCFJ_cjs.compareStrings)) {
|
|
7013
7149
|
const value = props[key];
|
|
7014
7150
|
if (value === void 0) {
|
|
7015
7151
|
unsetProps.push(key);
|
|
@@ -7146,7 +7282,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
|
|
|
7146
7282
|
}
|
|
7147
7283
|
}
|
|
7148
7284
|
for (const branch2 of branches) {
|
|
7149
|
-
const branchSchemaRow = await
|
|
7285
|
+
const branchSchemaRow = await chunk3KOY4FH3_cjs.storeBackend(branch2.store).getActiveSchema(
|
|
7150
7286
|
branch2.store.graphId
|
|
7151
7287
|
);
|
|
7152
7288
|
let drifted;
|
|
@@ -7154,7 +7290,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
|
|
|
7154
7290
|
const anchor = branch2.schemaAnchor;
|
|
7155
7291
|
drifted = anchor === void 0 ? branchSchemaRow !== void 0 : branchSchemaRow?.version !== anchor.version || branchSchemaRow.schema_hash !== anchor.hash;
|
|
7156
7292
|
} else {
|
|
7157
|
-
const sourceSchemaRow = await
|
|
7293
|
+
const sourceSchemaRow = await chunk3KOY4FH3_cjs.storeBackend(store).getActiveSchema(
|
|
7158
7294
|
store.graphId
|
|
7159
7295
|
);
|
|
7160
7296
|
drifted = branchSchemaRow?.schema_hash !== sourceSchemaRow?.schema_hash;
|
|
@@ -7199,7 +7335,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
|
|
|
7199
7335
|
options.embedder
|
|
7200
7336
|
);
|
|
7201
7337
|
const ctx = {
|
|
7202
|
-
backend:
|
|
7338
|
+
backend: chunk3KOY4FH3_cjs.storeBackend(store),
|
|
7203
7339
|
...embeddings === void 0 ? {} : { embeddings }
|
|
7204
7340
|
};
|
|
7205
7341
|
const candidates = await generateAllCandidates(
|
|
@@ -7227,7 +7363,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
|
|
|
7227
7363
|
])
|
|
7228
7364
|
])
|
|
7229
7365
|
];
|
|
7230
|
-
const targetPeers = identityProbeIds === void 0 ? [] : await
|
|
7366
|
+
const targetPeers = identityProbeIds === void 0 ? [] : await chunk3KOY4FH3_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
|
|
7231
7367
|
const stagedIdentityIds = [
|
|
7232
7368
|
.../* @__PURE__ */ new Set([
|
|
7233
7369
|
...staging.newIdentityAssertions.map((staged) => staged.assertion.id),
|
|
@@ -7236,7 +7372,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
|
|
|
7236
7372
|
)
|
|
7237
7373
|
])
|
|
7238
7374
|
];
|
|
7239
|
-
const storedIdentityRowsById = stagedIdentityIds.length === 0 || target.graph.identity === void 0 ? NO_STORED_ASSERTIONS : await
|
|
7375
|
+
const storedIdentityRowsById = stagedIdentityIds.length === 0 || target.graph.identity === void 0 ? NO_STORED_ASSERTIONS : await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionRowsByIds(
|
|
7240
7376
|
stagedIdentityIds
|
|
7241
7377
|
);
|
|
7242
7378
|
const identityContext = {
|
|
@@ -7261,14 +7397,14 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
|
|
|
7261
7397
|
if (plan.identityAssertions.length > 0) {
|
|
7262
7398
|
assertOneIdOneTruth(
|
|
7263
7399
|
plan.identityAssertions,
|
|
7264
|
-
await
|
|
7400
|
+
await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionRowsByIds(
|
|
7265
7401
|
plan.identityAssertions.map((assertion) => assertion.id)
|
|
7266
7402
|
)
|
|
7267
7403
|
);
|
|
7268
7404
|
}
|
|
7269
7405
|
let identityGuard;
|
|
7270
7406
|
if (identityProbeIds !== void 0 && incremental !== void 0) {
|
|
7271
|
-
const freshPeers = await
|
|
7407
|
+
const freshPeers = await chunk3KOY4FH3_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
|
|
7272
7408
|
const built = await buildIdentityPeerProbe(
|
|
7273
7409
|
target,
|
|
7274
7410
|
identityProbeIds,
|
|
@@ -7397,7 +7533,8 @@ function incrementalSchemaError() {
|
|
|
7397
7533
|
{ details: {} }
|
|
7398
7534
|
);
|
|
7399
7535
|
}
|
|
7400
|
-
async function planMerge(store,
|
|
7536
|
+
async function planMerge(store, branchInputs, optionsInput = {}) {
|
|
7537
|
+
const branches = unwrapMergeBranches(branchInputs);
|
|
7401
7538
|
const normalized = tryNormalize(optionsInput);
|
|
7402
7539
|
if (chunkGYEG3ZLZ_cjs.isErr(normalized)) return chunkGYEG3ZLZ_cjs.err(normalized.error);
|
|
7403
7540
|
const options = normalized.data;
|
|
@@ -7418,7 +7555,7 @@ async function planMerge(store, branches, optionsInput = {}) {
|
|
|
7418
7555
|
const anchors = {
|
|
7419
7556
|
kind: "snapshot",
|
|
7420
7557
|
base: { graphId: store.graphId, baseVersion: precondition.data },
|
|
7421
|
-
branches: [...branches].sort((left, right) =>
|
|
7558
|
+
branches: [...branches].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
|
|
7422
7559
|
branchId: branch2.id,
|
|
7423
7560
|
baseVersion: branch2.base
|
|
7424
7561
|
}))
|
|
@@ -7438,7 +7575,8 @@ async function planMerge(store, branches, optionsInput = {}) {
|
|
|
7438
7575
|
);
|
|
7439
7576
|
}
|
|
7440
7577
|
async function planMergeIncremental(args) {
|
|
7441
|
-
const { forkPoint, target
|
|
7578
|
+
const { forkPoint, target } = args;
|
|
7579
|
+
const branches = unwrapMergeBranches(args.branches);
|
|
7442
7580
|
const normalized = tryNormalize(args.options ?? {}, ["target"]);
|
|
7443
7581
|
if (chunkGYEG3ZLZ_cjs.isErr(normalized)) return chunkGYEG3ZLZ_cjs.err(normalized.error);
|
|
7444
7582
|
const options = normalized.data;
|
|
@@ -7464,7 +7602,7 @@ async function planMergeIncremental(args) {
|
|
|
7464
7602
|
computeSchemaComponent(target)
|
|
7465
7603
|
]);
|
|
7466
7604
|
if (forkSchema !== targetSchema) return chunkGYEG3ZLZ_cjs.err(incrementalSchemaError());
|
|
7467
|
-
const forkActiveSchema = await
|
|
7605
|
+
const forkActiveSchema = await chunk3KOY4FH3_cjs.storeBackend(forkPoint).getActiveSchema(
|
|
7468
7606
|
forkPoint.graphId
|
|
7469
7607
|
);
|
|
7470
7608
|
const targetBranch = {
|
|
@@ -7483,7 +7621,7 @@ async function planMergeIncremental(args) {
|
|
|
7483
7621
|
hash: forkActiveSchema?.schema_hash ?? forkSchema
|
|
7484
7622
|
}
|
|
7485
7623
|
},
|
|
7486
|
-
branches: [...branches].sort((left, right) =>
|
|
7624
|
+
branches: [...branches].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
|
|
7487
7625
|
branchId: branch2.id,
|
|
7488
7626
|
baseVersion: branch2.base
|
|
7489
7627
|
}))
|
|
@@ -7808,7 +7946,7 @@ async function preflightWireMergeWrites(target, nodesApi, edgesApi, artifact) {
|
|
|
7808
7946
|
}
|
|
7809
7947
|
}
|
|
7810
7948
|
async function assertMergePlanFenceInsideTransaction(target, txBackend, artifact) {
|
|
7811
|
-
await
|
|
7949
|
+
await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
|
|
7812
7950
|
const activeSchema = await txBackend.getActiveSchema(target.graphId);
|
|
7813
7951
|
const liveSchema = {
|
|
7814
7952
|
managed: activeSchema !== void 0,
|
|
@@ -7821,7 +7959,7 @@ async function assertMergePlanFenceInsideTransaction(target, txBackend, artifact
|
|
|
7821
7959
|
{ details: { expected: artifact.target.schema, live: liveSchema } }
|
|
7822
7960
|
);
|
|
7823
7961
|
}
|
|
7824
|
-
const liveOrigin = await
|
|
7962
|
+
const liveOrigin = await chunkEZEEWCFJ_cjs.readRevisionOrigin(
|
|
7825
7963
|
txBackend,
|
|
7826
7964
|
target.revisionSchema,
|
|
7827
7965
|
target.graphId
|
|
@@ -7837,7 +7975,7 @@ async function assertMergePlanFenceInsideTransaction(target, txBackend, artifact
|
|
|
7837
7975
|
}
|
|
7838
7976
|
);
|
|
7839
7977
|
}
|
|
7840
|
-
const liveRevision = await
|
|
7978
|
+
const liveRevision = await chunkEZEEWCFJ_cjs.readRecordedClock(
|
|
7841
7979
|
txBackend,
|
|
7842
7980
|
target.revisionSchema,
|
|
7843
7981
|
target.graphId
|
|
@@ -7879,6 +8017,8 @@ function identityConsistencySeeds(artifact, profile) {
|
|
|
7879
8017
|
}
|
|
7880
8018
|
async function applyWireMergeWrites(target, nodesApi, edgesApi, txBackend, artifact) {
|
|
7881
8019
|
const committedNodes = await applyNodeRows(
|
|
8020
|
+
target,
|
|
8021
|
+
txBackend,
|
|
7882
8022
|
nodesApi,
|
|
7883
8023
|
artifact.writes.nodeDeletes,
|
|
7884
8024
|
artifact.writes.nodeUpserts.map((upsert) => ({
|
|
@@ -7911,7 +8051,7 @@ async function applyWireMergeWrites(target, nodesApi, edgesApi, txBackend, artif
|
|
|
7911
8051
|
txBackend,
|
|
7912
8052
|
identityAssertions,
|
|
7913
8053
|
identityRetractions,
|
|
7914
|
-
() =>
|
|
8054
|
+
() => chunk3KOY4FH3_cjs.storeRuntime(target).assertIdentityClassesConsistentAtTarget(
|
|
7915
8055
|
txBackend,
|
|
7916
8056
|
identityConsistencySeeds(
|
|
7917
8057
|
artifact,
|
|
@@ -7919,8 +8059,8 @@ async function applyWireMergeWrites(target, nodesApi, edgesApi, txBackend, artif
|
|
|
7919
8059
|
)
|
|
7920
8060
|
)
|
|
7921
8061
|
);
|
|
7922
|
-
if (!
|
|
7923
|
-
await
|
|
8062
|
+
if (!chunkEZEEWCFJ_cjs.forceRecordedGraphRevision(txBackend, target.graphId) && !chunkJFRT7S3B_cjs.forceWriteTransactionRevision(txBackend)) {
|
|
8063
|
+
await chunkEZEEWCFJ_cjs.advanceRevisionClock(
|
|
7924
8064
|
txBackend,
|
|
7925
8065
|
target.revisionSchema,
|
|
7926
8066
|
target.graphId,
|
|
@@ -7991,7 +8131,7 @@ async function applyMergePlan(target, input) {
|
|
|
7991
8131
|
}
|
|
7992
8132
|
const merged = await withTxConflictRetry(
|
|
7993
8133
|
() => target.transaction(async (tx) => {
|
|
7994
|
-
const txBackend =
|
|
8134
|
+
const txBackend = chunk3KOY4FH3_cjs.transactionBackend(tx);
|
|
7995
8135
|
await assertMergePlanFenceInsideTransaction(
|
|
7996
8136
|
target,
|
|
7997
8137
|
txBackend,
|
|
@@ -8051,7 +8191,8 @@ async function applyMergePlan(target, input) {
|
|
|
8051
8191
|
);
|
|
8052
8192
|
}
|
|
8053
8193
|
}
|
|
8054
|
-
async function merge(store,
|
|
8194
|
+
async function merge(store, branchInputs, optionsInput = {}) {
|
|
8195
|
+
const branches = unwrapMergeBranches(branchInputs);
|
|
8055
8196
|
const normalized = tryNormalize(optionsInput);
|
|
8056
8197
|
if (chunkGYEG3ZLZ_cjs.isErr(normalized)) {
|
|
8057
8198
|
return chunkGYEG3ZLZ_cjs.err(normalized.error);
|
|
@@ -8246,7 +8387,7 @@ async function validateIncrementalEdgeWrites(target, edgesApi, plan) {
|
|
|
8246
8387
|
}
|
|
8247
8388
|
}
|
|
8248
8389
|
}
|
|
8249
|
-
const notFound = [...plannedKindById.keys()].filter((id) => !existingById.has(id)).sort((left, right) =>
|
|
8390
|
+
const notFound = [...plannedKindById.keys()].filter((id) => !existingById.has(id)).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
|
|
8250
8391
|
if (notFound.length > 0) {
|
|
8251
8392
|
const crossKindById = /* @__PURE__ */ new Map();
|
|
8252
8393
|
for (const kind of Object.keys(target.graph.edges)) {
|
|
@@ -8483,7 +8624,7 @@ async function assertForkPointUnchanged(precondition) {
|
|
|
8483
8624
|
);
|
|
8484
8625
|
}
|
|
8485
8626
|
async function commitIncrementalPlan(target, plan, guard) {
|
|
8486
|
-
if (!
|
|
8627
|
+
if (!chunk3KOY4FH3_cjs.storeBackend(target).capabilities.transactions) {
|
|
8487
8628
|
throw new MergeError(
|
|
8488
8629
|
"mergeIncremental() requires a transaction-capable target backend. Incremental writes must preflight existing rows and commit atomically; non-transactional fallback would allow partial graph writes.",
|
|
8489
8630
|
{ details: { capability: "transactions" } }
|
|
@@ -8493,7 +8634,7 @@ async function commitIncrementalPlan(target, plan, guard) {
|
|
|
8493
8634
|
() => withTxConflictRetry(
|
|
8494
8635
|
() => target.transaction(async (tx) => {
|
|
8495
8636
|
if (target.revisionTrackingEnabled) {
|
|
8496
|
-
await
|
|
8637
|
+
await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(chunk3KOY4FH3_cjs.transactionBackend(tx), target.graphId);
|
|
8497
8638
|
}
|
|
8498
8639
|
await assertForkPointUnchanged(guard.forkPoint);
|
|
8499
8640
|
const nodesApi = tx.nodes;
|
|
@@ -8504,12 +8645,12 @@ async function commitIncrementalPlan(target, plan, guard) {
|
|
|
8504
8645
|
);
|
|
8505
8646
|
await assertPlannedIdentityIdsFresh(
|
|
8506
8647
|
target,
|
|
8507
|
-
|
|
8648
|
+
chunk3KOY4FH3_cjs.transactionBackend(tx),
|
|
8508
8649
|
plan
|
|
8509
8650
|
);
|
|
8510
8651
|
await assertIdentityPeersStable(
|
|
8511
8652
|
target,
|
|
8512
|
-
|
|
8653
|
+
chunk3KOY4FH3_cjs.transactionBackend(tx),
|
|
8513
8654
|
guard.identityPeerProbe,
|
|
8514
8655
|
plan
|
|
8515
8656
|
);
|
|
@@ -8521,14 +8662,15 @@ async function commitIncrementalPlan(target, plan, guard) {
|
|
|
8521
8662
|
nodesApi,
|
|
8522
8663
|
edgesApi,
|
|
8523
8664
|
target,
|
|
8524
|
-
|
|
8665
|
+
chunk3KOY4FH3_cjs.transactionBackend(tx)
|
|
8525
8666
|
);
|
|
8526
8667
|
}, mergeCommitTransactionOptions(target))
|
|
8527
8668
|
)
|
|
8528
8669
|
);
|
|
8529
8670
|
}
|
|
8530
8671
|
async function mergeIncremental(args) {
|
|
8531
|
-
const { forkPoint, target
|
|
8672
|
+
const { forkPoint, target } = args;
|
|
8673
|
+
const branches = unwrapMergeBranches(args.branches);
|
|
8532
8674
|
const normalized = tryNormalize(args.options ?? {}, ["target"]);
|
|
8533
8675
|
if (chunkGYEG3ZLZ_cjs.isErr(normalized)) {
|
|
8534
8676
|
return chunkGYEG3ZLZ_cjs.err(normalized.error);
|
|
@@ -8614,6 +8756,7 @@ exports.asBranchId = asBranchId;
|
|
|
8614
8756
|
exports.branch = branch;
|
|
8615
8757
|
exports.cloneWorkingCopyStrategy = cloneWorkingCopyStrategy;
|
|
8616
8758
|
exports.computeBaseVersion = computeBaseVersion;
|
|
8759
|
+
exports.ingestionBranch = ingestionBranch;
|
|
8617
8760
|
exports.merge = merge;
|
|
8618
8761
|
exports.mergeIncremental = mergeIncremental;
|
|
8619
8762
|
exports.normalizeMergeOptions = normalizeMergeOptions;
|