@ibgib/core-gib 0.1.19 → 0.1.21
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/common/other/ibgib-helper.d.mts +13 -0
- package/dist/common/other/ibgib-helper.d.mts.map +1 -1
- package/dist/common/other/ibgib-helper.mjs +44 -0
- package/dist/common/other/ibgib-helper.mjs.map +1 -1
- package/dist/sync/graft-info/graft-info-constants.d.mts +5 -0
- package/dist/sync/graft-info/graft-info-constants.d.mts.map +1 -0
- package/dist/sync/graft-info/graft-info-constants.mjs +5 -0
- package/dist/sync/graft-info/graft-info-constants.mjs.map +1 -0
- package/dist/sync/graft-info/graft-info-helpers.d.mts +49 -0
- package/dist/sync/graft-info/graft-info-helpers.d.mts.map +1 -0
- package/dist/sync/graft-info/graft-info-helpers.mjs +236 -0
- package/dist/sync/graft-info/graft-info-helpers.mjs.map +1 -0
- package/dist/sync/graft-info/graft-info-helpers.respec.d.mts +2 -0
- package/dist/sync/graft-info/graft-info-helpers.respec.d.mts.map +1 -0
- package/dist/sync/graft-info/graft-info-helpers.respec.mjs +70 -0
- package/dist/sync/graft-info/graft-info-helpers.respec.mjs.map +1 -0
- package/dist/sync/graft-info/graft-info-types.d.mts +31 -0
- package/dist/sync/graft-info/graft-info-types.d.mts.map +1 -0
- package/dist/sync/graft-info/graft-info-types.mjs +2 -0
- package/dist/sync/graft-info/graft-info-types.mjs.map +1 -0
- package/dist/sync/strategies/conflict-optimistic.d.mts +37 -0
- package/dist/sync/strategies/conflict-optimistic.d.mts.map +1 -0
- package/dist/sync/strategies/conflict-optimistic.mjs +112 -0
- package/dist/sync/strategies/conflict-optimistic.mjs.map +1 -0
- package/dist/sync/sync-conflict.respec.d.mts +8 -0
- package/dist/sync/sync-conflict.respec.d.mts.map +1 -0
- package/dist/sync/sync-conflict.respec.mjs +277 -0
- package/dist/sync/sync-conflict.respec.mjs.map +1 -0
- package/dist/sync/sync-constants.d.mts +1 -3
- package/dist/sync/sync-constants.d.mts.map +1 -1
- package/dist/sync/sync-constants.mjs +0 -2
- package/dist/sync/sync-constants.mjs.map +1 -1
- package/dist/sync/sync-innerspace-constants.respec.mjs +2 -2
- package/dist/sync/sync-innerspace-constants.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs +0 -1
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace.respec.mjs +1 -1
- package/dist/sync/sync-innerspace.respec.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace-v1.d.mts +5 -2
- package/dist/sync/sync-peer/sync-peer-innerspace-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace-v1.mjs +70 -7
- package/dist/sync/sync-peer/sync-peer-innerspace-v1.mjs.map +1 -1
- package/dist/sync/sync-saga-coordinator.d.mts +45 -27
- package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
- package/dist/sync/sync-saga-coordinator.mjs +811 -253
- package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
- package/dist/sync/sync-saga-message/sync-saga-message-helpers.d.mts +11 -0
- package/dist/sync/sync-saga-message/sync-saga-message-helpers.d.mts.map +1 -1
- package/dist/sync/sync-saga-message/sync-saga-message-helpers.mjs +25 -0
- package/dist/sync/sync-saga-message/sync-saga-message-helpers.mjs.map +1 -1
- package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts +24 -12
- package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts.map +1 -1
- package/dist/sync/sync-types.d.mts +31 -4
- package/dist/sync/sync-types.d.mts.map +1 -1
- package/dist/sync/sync-types.mjs.map +1 -1
- package/ibgib-foundations.md +147 -0
- package/package.json +1 -1
- package/roadmap.md +59 -0
- package/src/common/other/ibgib-helper.mts +52 -0
- package/src/keystone/README.md +13 -155
- package/src/keystone/docs/architecture.md +55 -0
- package/src/sync/README.md +37 -42
- package/src/sync/docs/architecture.md +69 -0
- package/src/sync/docs/verification.md +43 -0
- package/src/sync/graft-info/graft-info-constants.mts +4 -0
- package/src/sync/graft-info/graft-info-helpers.mts +308 -0
- package/src/sync/graft-info/graft-info-helpers.respec.mts +83 -0
- package/src/sync/graft-info/graft-info-types.mts +33 -0
- package/src/sync/strategies/conflict-optimistic.mts +149 -0
- package/src/sync/sync-conflict.respec.mts +330 -0
- package/src/sync/sync-constants.mts +1 -4
- package/src/sync/sync-innerspace-constants.respec.mts +1 -1
- package/src/sync/sync-innerspace-deep-updates.respec.mts +0 -1
- package/src/sync/sync-innerspace.respec.mts +1 -1
- package/src/sync/sync-peer/sync-peer-innerspace-v1.mts +85 -12
- package/src/sync/sync-saga-coordinator.mts +905 -268
- package/src/sync/sync-saga-message/sync-saga-message-helpers.mts +43 -0
- package/src/sync/sync-saga-message/sync-saga-message-types.mts +23 -11
- package/src/sync/sync-types.mts +33 -4
- package/test_output.log +0 -0
- package/tmp.md +44 -426
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IbGib_V1, IbGibData_V1, IbGibRel8ns_V1 } from "@ibgib/ts-gib/dist/V1/types.mjs";
|
|
2
|
+
import { GRAFT_INFO_ATOM } from "./graft-info-constants.mjs";
|
|
3
|
+
export interface GraftInfoIb_V1 {
|
|
4
|
+
atom: typeof GRAFT_INFO_ATOM;
|
|
5
|
+
algo: string;
|
|
6
|
+
}
|
|
7
|
+
export interface GraftInfoData_V1 extends IbGibData_V1 {
|
|
8
|
+
/**
|
|
9
|
+
* The algorithm or strategy used to perform the graft.
|
|
10
|
+
*/
|
|
11
|
+
algo: string;
|
|
12
|
+
/**
|
|
13
|
+
* Optional details about the graft, e.g. validation results or specifics about conflicts resolved.
|
|
14
|
+
*/
|
|
15
|
+
details?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface GraftInfoRel8ns_V1 extends IbGibRel8ns_V1 {
|
|
18
|
+
/**
|
|
19
|
+
* The 'base' of the graft (the earlier tip, usually).
|
|
20
|
+
* This is the timeline we are grafting ONTO.
|
|
21
|
+
*/
|
|
22
|
+
graftbase?: string[];
|
|
23
|
+
/**
|
|
24
|
+
* The 'orphan' tip (the later tip, usually) effectively grafted into the base.
|
|
25
|
+
* This is the branch that ends here, its DNA spliced into the base.
|
|
26
|
+
*/
|
|
27
|
+
graftorphan?: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface GraftInfoIbGib_V1 extends IbGib_V1<GraftInfoData_V1, GraftInfoRel8ns_V1> {
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=graft-info-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graft-info-types.d.mts","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,OAAO,eAAe,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;CAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graft-info-types.mjs","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-types.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module conflict-optimistic
|
|
3
|
+
*
|
|
4
|
+
* Implements the Optimistic Conflict Resolution Strategy.
|
|
5
|
+
*
|
|
6
|
+
* Logic:
|
|
7
|
+
* 1. findLCA: Traverses `past` to find common ancestor.
|
|
8
|
+
* 2. mergeDivergentTimelines: Replays DNA to create a merged tip.
|
|
9
|
+
*/
|
|
10
|
+
import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
|
|
11
|
+
import { IbGibSpaceAny } from '../../witness/space/space-base-v1.mjs';
|
|
12
|
+
export interface LCAResult {
|
|
13
|
+
lcaAddr: string;
|
|
14
|
+
branchA: IbGib_V1[];
|
|
15
|
+
branchB: IbGib_V1[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Finds the Last Common Ancestor (LCA) between two divergent timelines.
|
|
19
|
+
*
|
|
20
|
+
* Note: simplistic implementation assuming simple linear divergence.
|
|
21
|
+
* Complex DAGs might require more robust graph traversal.
|
|
22
|
+
*/
|
|
23
|
+
export declare function findLCA({ tipA, tipB, space, }: {
|
|
24
|
+
tipA: IbGib_V1;
|
|
25
|
+
tipB: IbGib_V1;
|
|
26
|
+
space: IbGibSpaceAny;
|
|
27
|
+
}): Promise<LCAResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Optimistically grafts two divergent timelines by inspecting DNA and replaying transforms.
|
|
30
|
+
*/
|
|
31
|
+
export declare function mergeDivergentTimelines({ tipA, tipB, space, metaspace, }: {
|
|
32
|
+
tipA: IbGib_V1;
|
|
33
|
+
tipB: IbGib_V1;
|
|
34
|
+
space: IbGibSpaceAny;
|
|
35
|
+
metaspace: any;
|
|
36
|
+
}): Promise<IbGib_V1>;
|
|
37
|
+
//# sourceMappingURL=conflict-optimistic.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-optimistic.d.mts","sourceRoot":"","sources":["../../../src/sync/strategies/conflict-optimistic.mts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAgC,MAAM,iCAAiC,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAMtE,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,EAC1B,IAAI,EACJ,IAAI,EACJ,KAAK,GACR,EAAE;IACC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACxB,GAAG,OAAO,CAAC,SAAS,CAAC,CA2ErB;AAID;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,EAC1C,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,SAAS,GACZ,EAAE;IACC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;CAClB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkBpB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module conflict-optimistic
|
|
3
|
+
*
|
|
4
|
+
* Implements the Optimistic Conflict Resolution Strategy.
|
|
5
|
+
*
|
|
6
|
+
* Logic:
|
|
7
|
+
* 1. findLCA: Traverses `past` to find common ancestor.
|
|
8
|
+
* 2. mergeDivergentTimelines: Replays DNA to create a merged tip.
|
|
9
|
+
*/
|
|
10
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
11
|
+
import { getFromSpace } from '../../witness/space/space-helper.mjs';
|
|
12
|
+
const lc = `[conflict-optimistic]`;
|
|
13
|
+
/**
|
|
14
|
+
* Finds the Last Common Ancestor (LCA) between two divergent timelines.
|
|
15
|
+
*
|
|
16
|
+
* Note: simplistic implementation assuming simple linear divergence.
|
|
17
|
+
* Complex DAGs might require more robust graph traversal.
|
|
18
|
+
*/
|
|
19
|
+
export async function findLCA({ tipA, tipB, space, }) {
|
|
20
|
+
// 1. Load history for both
|
|
21
|
+
// Optimization: Just load 'past' array if available.
|
|
22
|
+
// Ideally we assume 'past' is full history for V1.
|
|
23
|
+
// Check if one is ancestor of another first?
|
|
24
|
+
const pastA = tipA.rel8ns?.past || [];
|
|
25
|
+
const pastB = tipB.rel8ns?.past || [];
|
|
26
|
+
const addrA = getIbGibAddr({ ibGib: tipA });
|
|
27
|
+
const addrB = getIbGibAddr({ ibGib: tipB });
|
|
28
|
+
// Is B in A's past?
|
|
29
|
+
if (pastA.includes(addrB)) {
|
|
30
|
+
return { lcaAddr: addrB, branchA: [], branchB: [] };
|
|
31
|
+
} // Not a divergence, just an update.
|
|
32
|
+
// Is A in B's past?
|
|
33
|
+
if (pastB.includes(addrA)) {
|
|
34
|
+
return { lcaAddr: addrA, branchA: [], branchB: [] };
|
|
35
|
+
}
|
|
36
|
+
// Find intersection
|
|
37
|
+
let lcaAddr;
|
|
38
|
+
// Iterate backwards through A's past
|
|
39
|
+
// The *latest* entry in A's past that is also in B's past (or is B itself, but we checked that)
|
|
40
|
+
// Actually, 'past' is usually ordered? V1 convention is accretive, so order matches evolution.
|
|
41
|
+
// But 'past' array order isn't strictly guaranteed by schema to be chronological, but robust implementations do so.
|
|
42
|
+
// Let's assume Set intersection.
|
|
43
|
+
const setPastB = new Set(pastB);
|
|
44
|
+
// Find the *latest* item in pastA that is in setPastB.
|
|
45
|
+
// We assume pastA is ordered [older -> newer].
|
|
46
|
+
for (let i = pastA.length - 1; i >= 0; i--) {
|
|
47
|
+
const candidate = pastA[i];
|
|
48
|
+
if (setPastB.has(candidate)) {
|
|
49
|
+
lcaAddr = candidate;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (!lcaAddr) {
|
|
54
|
+
// Fallback: check if they share the SAME TJP (they should if they are same timeline).
|
|
55
|
+
// If they share TJP but no common past, the TJP itself is the LCA.
|
|
56
|
+
const tjpA = tipA.rel8ns?.tjp?.[0];
|
|
57
|
+
const tjpB = tipB.rel8ns?.tjp?.[0];
|
|
58
|
+
if (tjpA && tjpA === tjpB) {
|
|
59
|
+
lcaAddr = tjpA;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
throw new Error(`No LCA found for divergences. Are they the same timeline? (E: 81aa17f0e34b4138ad1743a60a76f27b)`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// 2. Reconstruct Branches
|
|
66
|
+
// We need the actual ibGib objects from LCA to Tips to inspect DNA.
|
|
67
|
+
// This requires fetching from Space.
|
|
68
|
+
// Helper to get path from LCA to Tip
|
|
69
|
+
const getPath = async (tip, past, lca) => {
|
|
70
|
+
const pathAddrs = [];
|
|
71
|
+
let foundLca = false;
|
|
72
|
+
for (const addr of past) {
|
|
73
|
+
if (foundLca) {
|
|
74
|
+
pathAddrs.push(addr);
|
|
75
|
+
}
|
|
76
|
+
else if (addr === lca) {
|
|
77
|
+
foundLca = true;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
pathAddrs.push(getIbGibAddr({ ibGib: tip }));
|
|
81
|
+
// Fetch all
|
|
82
|
+
const res = await getFromSpace({ space, addrs: pathAddrs });
|
|
83
|
+
if (!res.success || !res.ibGibs) {
|
|
84
|
+
throw new Error(`Failed to fetch history branch. (E: 7904097405be4a27b871c5031631553c)`);
|
|
85
|
+
}
|
|
86
|
+
return res.ibGibs;
|
|
87
|
+
};
|
|
88
|
+
const branchA = await getPath(tipA, pastA, lcaAddr);
|
|
89
|
+
const branchB = await getPath(tipB, pastB, lcaAddr);
|
|
90
|
+
return { lcaAddr, branchA, branchB };
|
|
91
|
+
}
|
|
92
|
+
import { graftTimelines } from '../graft-info/graft-info-helpers.mjs';
|
|
93
|
+
/**
|
|
94
|
+
* Optimistically grafts two divergent timelines by inspecting DNA and replaying transforms.
|
|
95
|
+
*/
|
|
96
|
+
export async function mergeDivergentTimelines({ tipA, tipB, space, metaspace, }) {
|
|
97
|
+
const lc = `[${mergeDivergentTimelines.name}]`;
|
|
98
|
+
// 1. Find LCA & Branches
|
|
99
|
+
const { lcaAddr, branchA, branchB } = await findLCA({ tipA, tipB, space });
|
|
100
|
+
// 2. Delegate to Graft Engine
|
|
101
|
+
// The graft engine handles timestamp verification, DNA fetching, replay, and Stone creation.
|
|
102
|
+
const result = await graftTimelines({
|
|
103
|
+
tipA,
|
|
104
|
+
branchA,
|
|
105
|
+
tipB,
|
|
106
|
+
branchB,
|
|
107
|
+
space,
|
|
108
|
+
metaspace,
|
|
109
|
+
});
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=conflict-optimistic.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-optimistic.mjs","sourceRoot":"","sources":["../../../src/sync/strategies/conflict-optimistic.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-conflict.respec.d.mts","sourceRoot":"","sources":["../../src/sync/sync-conflict.respec.mts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module sync-conflict.respec
|
|
3
|
+
*
|
|
4
|
+
* Verifies Conflict Resolution strategies in SyncSagaCoordinator.
|
|
5
|
+
* Reproduces divergence scenarios and asserts resolution behavior.
|
|
6
|
+
*/
|
|
7
|
+
import { respecfully, iReckon, ifWeMight } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
8
|
+
const maam = `[${import.meta.url}]`, sir = maam;
|
|
9
|
+
import { delay, extractErrorMsg, pretty } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
10
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
11
|
+
import { SyncSagaCoordinator } from './sync-saga-coordinator.mjs';
|
|
12
|
+
import { getFromSpace } from '../witness/space/space-helper.mjs';
|
|
13
|
+
import { Metaspace_Innerspace } from '../witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.mjs';
|
|
14
|
+
import { InnerSpace_V1 } from '../witness/space/inner-space/inner-space-v1.mjs';
|
|
15
|
+
import { createTimelineRootHelper, getTestKeystoneServiceHelper } from '../agent-helpers.mjs';
|
|
16
|
+
import { mut8Timeline } from '../timeline/timeline-api.mjs';
|
|
17
|
+
import { SyncPeerInnerspace_V1 } from './sync-peer/sync-peer-innerspace-v1.mjs';
|
|
18
|
+
import { DEFAULT_INNER_SPACE_DATA_V1 } from '../witness/space/inner-space/inner-space-types.mjs';
|
|
19
|
+
import { getTjpAddr } from '../common/other/ibgib-helper.mjs';
|
|
20
|
+
import { SyncConflictStrategy } from './sync-types.mjs';
|
|
21
|
+
import { fnObs } from '../common/pubsub/observer/observer-helper.mjs';
|
|
22
|
+
import { getDependencyGraph } from '../common/other/graph-helper.mjs';
|
|
23
|
+
const logalot = true;
|
|
24
|
+
const lc = `[sync-conflict.respec]`;
|
|
25
|
+
await respecfully(sir, `Sync Conflict Resolution`, async () => {
|
|
26
|
+
let metaspace;
|
|
27
|
+
let sourceSpace;
|
|
28
|
+
let destSpace;
|
|
29
|
+
await respecfully(sir, `Scenario: Simple Divergence (Field A vs Field B)`, async () => {
|
|
30
|
+
// 1. Setup Spaces
|
|
31
|
+
metaspace = new Metaspace_Innerspace(undefined);
|
|
32
|
+
await metaspace.initialize({
|
|
33
|
+
getFnAlert: () => async ({ title, msg }) => { console.log(`[Alert] ${title}: ${msg}`); },
|
|
34
|
+
getFnPrompt: () => async ({ title, msg }) => { console.log(`[Prompt] ${title}: ${msg}`); return ''; },
|
|
35
|
+
getFnPromptPassword: () => async (title, msg) => { console.log(`[PromptPwd] ${title}: ${msg}`); return null; },
|
|
36
|
+
});
|
|
37
|
+
while (!metaspace.initialized) {
|
|
38
|
+
await delay(10);
|
|
39
|
+
}
|
|
40
|
+
const defaultLocalUserSpace = await metaspace.getLocalUserSpace({ lock: false });
|
|
41
|
+
await defaultLocalUserSpace.initialized;
|
|
42
|
+
sourceSpace = new InnerSpace_V1({
|
|
43
|
+
...DEFAULT_INNER_SPACE_DATA_V1,
|
|
44
|
+
name: 'source',
|
|
45
|
+
uuid: 'source_uuid',
|
|
46
|
+
description: 'source test space',
|
|
47
|
+
});
|
|
48
|
+
await sourceSpace.initialized;
|
|
49
|
+
destSpace = new InnerSpace_V1({
|
|
50
|
+
...DEFAULT_INNER_SPACE_DATA_V1,
|
|
51
|
+
name: 'dest',
|
|
52
|
+
uuid: 'dest_uuid',
|
|
53
|
+
description: 'dest test space',
|
|
54
|
+
});
|
|
55
|
+
await destSpace.initialized;
|
|
56
|
+
// 2. Seed Common History (V0 -> V1)
|
|
57
|
+
console.log(`${lc} Creating Common History...`);
|
|
58
|
+
const testRoot = await createTimelineRootHelper({
|
|
59
|
+
ib: 'timeline_root',
|
|
60
|
+
data: { type: 'testRoot', text: 'v0' },
|
|
61
|
+
space: sourceSpace,
|
|
62
|
+
});
|
|
63
|
+
// Create V1 (Common)
|
|
64
|
+
const v1_Common = await mut8Timeline({
|
|
65
|
+
timeline: testRoot,
|
|
66
|
+
mut8Opts: { dataToAddOrPatch: { text: 'v1_common' } },
|
|
67
|
+
metaspace,
|
|
68
|
+
space: sourceSpace,
|
|
69
|
+
});
|
|
70
|
+
const tjpAddr = getTjpAddr({ ibGib: testRoot, defaultIfNone: 'incomingAddr' }) ??
|
|
71
|
+
getIbGibAddr({ ibGib: testRoot });
|
|
72
|
+
console.log(`${lc} [TEST DEBUG] tjpAddr: ${tjpAddr}`);
|
|
73
|
+
// Sync testRoot to dest immediately so they start synced
|
|
74
|
+
// must get the entire dependency graph for testRoot
|
|
75
|
+
const depGraph_testRootAndV1Common = await getDependencyGraph({
|
|
76
|
+
ibGibAddrs: [tjpAddr],
|
|
77
|
+
space: sourceSpace,
|
|
78
|
+
live: true,
|
|
79
|
+
}) ?? {};
|
|
80
|
+
console.log(`${lc} depGraph_testRootAndV1Common: ${pretty(depGraph_testRootAndV1Common)}`);
|
|
81
|
+
if (Object.keys(depGraph_testRootAndV1Common).length === 0) {
|
|
82
|
+
throw new Error(`(UNEXPECTED) depGraph_testRootAndV1Common empty? (E: 39b4d855ffa65476084b4123786da826)`);
|
|
83
|
+
}
|
|
84
|
+
// put the entire graph into the destspace, but...
|
|
85
|
+
await metaspace.put({ ibGibs: Object.values(depGraph_testRootAndV1Common), space: destSpace });
|
|
86
|
+
// ...only register the main ibgibs
|
|
87
|
+
await metaspace.registerNewIbGib({ ibGib: testRoot, space: destSpace });
|
|
88
|
+
await metaspace.registerNewIbGib({ ibGib: v1_Common, space: destSpace });
|
|
89
|
+
const resGetDest = await getFromSpace({ space: destSpace, addr: getIbGibAddr({ ibGib: v1_Common }) });
|
|
90
|
+
if (!resGetDest.success || !resGetDest.ibGibs || resGetDest.ibGibs.length === 0) {
|
|
91
|
+
throw new Error(`Failed to retrieve v1_Dest from destSpace. (E: a1b2c3d4e5f6g7h8i9j0)`);
|
|
92
|
+
}
|
|
93
|
+
const v1_Dest = resGetDest.ibGibs[0];
|
|
94
|
+
// 3. Create Divergence (V2a vs V2b)
|
|
95
|
+
console.log(`${lc} Creating Divergence...`);
|
|
96
|
+
// Source: V1 -> V2a (Edit Field A)
|
|
97
|
+
const v2a = await mut8Timeline({
|
|
98
|
+
timeline: v1_Common,
|
|
99
|
+
mut8Opts: { dataToAddOrPatch: { fieldA: 'source_edit' } },
|
|
100
|
+
metaspace,
|
|
101
|
+
space: sourceSpace,
|
|
102
|
+
});
|
|
103
|
+
// Dest: V1 -> V2b (Edit Field B)
|
|
104
|
+
const v2b = await mut8Timeline({
|
|
105
|
+
timeline: v1_Dest,
|
|
106
|
+
mut8Opts: { dataToAddOrPatch: { fieldB: 'dest_edit' } },
|
|
107
|
+
metaspace,
|
|
108
|
+
space: destSpace,
|
|
109
|
+
});
|
|
110
|
+
// Verify Divergence
|
|
111
|
+
console.log(`${lc} Divergence created.`);
|
|
112
|
+
// 4. Run Sync (Optimistic)
|
|
113
|
+
console.log(`${lc} Setting up Coordinators...`);
|
|
114
|
+
const mockKeystone = await getTestKeystoneServiceHelper();
|
|
115
|
+
const senderCoordinator = new SyncSagaCoordinator(mockKeystone);
|
|
116
|
+
const receiverCoordinator = new SyncSagaCoordinator(mockKeystone);
|
|
117
|
+
// Create sender's tempSpace for transactional payload transfer
|
|
118
|
+
const senderTempSpaceName = `tmp_sender_test_${Date.now()}`;
|
|
119
|
+
const senderTempSpace = await metaspace.createNewLocalSpace({
|
|
120
|
+
opts: {
|
|
121
|
+
allowCancel: false,
|
|
122
|
+
spaceName: senderTempSpaceName,
|
|
123
|
+
getFnPrompt: metaspace.getFnPrompt,
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
if (!senderTempSpace) {
|
|
127
|
+
throw new Error(`(UNEXPECTED) senderTempSpace falsy? (E: ef4388c87e98f0211852eefa22414f26)`);
|
|
128
|
+
}
|
|
129
|
+
await senderTempSpace.initialized;
|
|
130
|
+
const peer = new SyncPeerInnerspace_V1({
|
|
131
|
+
senderSpace: sourceSpace,
|
|
132
|
+
senderTempSpace, // Pass sender's tempSpace for payload transfer
|
|
133
|
+
receiverSpace: destSpace,
|
|
134
|
+
receiverCoordinator,
|
|
135
|
+
receiverMetaspace: metaspace,
|
|
136
|
+
});
|
|
137
|
+
await peer.initialized;
|
|
138
|
+
// Verify Receiver has correct KV (Pre-Sync Check)
|
|
139
|
+
// This ensures the conflict precondition exists.
|
|
140
|
+
await ifWeMight(sir, 'verify receiver KV pre-sync', async () => {
|
|
141
|
+
try {
|
|
142
|
+
const destKV = await receiverCoordinator.getKnowledgeVector({
|
|
143
|
+
space: destSpace,
|
|
144
|
+
metaspace,
|
|
145
|
+
domainIbGibs: [v1_Dest]
|
|
146
|
+
});
|
|
147
|
+
const v1TjpAddr = getTjpAddr({ ibGib: v1_Dest, defaultIfNone: 'incomingAddr' }) ?? getIbGibAddr({ ibGib: v1_Dest });
|
|
148
|
+
console.log(`[TEST DEBUG] v1_Dest: ${JSON.stringify(v1_Dest)}`);
|
|
149
|
+
console.log(`[TEST DEBUG] v1TjpAddr: ${v1TjpAddr}`);
|
|
150
|
+
console.log(`[TEST DEBUG] destKV: ${JSON.stringify(destKV)}`);
|
|
151
|
+
console.log(`[TEST DEBUG] v1_Dest.rel8ns.tjp: ${v1_Dest.rel8ns?.tjp?.join(', ')}`);
|
|
152
|
+
// Actually v1 has tjp rel8n.
|
|
153
|
+
const destTip = destKV[v1TjpAddr];
|
|
154
|
+
iReckon(sir, !!destTip).asTo(`Dest KV has timeline tip for ${v1TjpAddr}`).isGonnaBeTruthy();
|
|
155
|
+
if (!destTip) {
|
|
156
|
+
throw new Error(`Test Setup Fail: Dest Space does not have index for timeline ${v1TjpAddr}. Seeding failed. (E: c194a80b4e4877b77826c37a1753b826)`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
161
|
+
iReckon(sir, true).asTo('getKnowledgeVector errored out').isGonnaBeFalse();
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
console.log(`${lc} Running Sync (ConflictStrategy: optimistic)...`);
|
|
165
|
+
let resSync;
|
|
166
|
+
try {
|
|
167
|
+
resSync = await senderCoordinator.sync({
|
|
168
|
+
peer,
|
|
169
|
+
source: sourceSpace,
|
|
170
|
+
dest: destSpace,
|
|
171
|
+
metaspace,
|
|
172
|
+
domainIbGibs: [v2a],
|
|
173
|
+
conflictStrategy: SyncConflictStrategy.optimistic,
|
|
174
|
+
// identity: undefined as any, // Not needed? If removed, it uses session identity.
|
|
175
|
+
// identitySecret: undefined as any,
|
|
176
|
+
// explicit useSessionIdentity: true is default
|
|
177
|
+
});
|
|
178
|
+
const sublc = `${lc}[updates$]`;
|
|
179
|
+
/**
|
|
180
|
+
* I have added this so you can see how to subscribe to an ibgib
|
|
181
|
+
* observable using {@link fnObs}.
|
|
182
|
+
*/
|
|
183
|
+
const subscription = await resSync.updates$.subscribe(fnObs({
|
|
184
|
+
next: async (ctxIbGib) => {
|
|
185
|
+
console.log(`${sublc} next fired. ${pretty(ctxIbGib)}`);
|
|
186
|
+
},
|
|
187
|
+
error: async (e) => {
|
|
188
|
+
if (e.data) {
|
|
189
|
+
console.error(`${sublc} error fired. error: ${JSON.stringify(e.data)} (E: 01cc08ba05ad99682831174fd7c31a26)`);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
console.dir(e);
|
|
193
|
+
console.error(`${sublc} error fired. error: ${extractErrorMsg(e)} (E: 73d3d61464e8e4ce4cd6efd8b9675826)`);
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
complete: async () => {
|
|
197
|
+
console.log(`${sublc} complete fired`);
|
|
198
|
+
},
|
|
199
|
+
}));
|
|
200
|
+
console.log(`${lc} awaiting resSync.done`);
|
|
201
|
+
await resSync.done;
|
|
202
|
+
console.log(`${lc} Sync Complete.`);
|
|
203
|
+
}
|
|
204
|
+
catch (e) {
|
|
205
|
+
console.error(`${lc} Sync Failed with Error:`, e);
|
|
206
|
+
iReckon(sir, false).asTo(`Sync failed with error: ${e}`).isGonnaBeTruthy();
|
|
207
|
+
return; // Exit test early
|
|
208
|
+
}
|
|
209
|
+
// 5. Verification
|
|
210
|
+
// Expectation: Both Spaces should now have a NEW tip (V3) that merges V2a and V2b.
|
|
211
|
+
const resSourceTip = await getFromSpace({ space: sourceSpace, addr: getIbGibAddr({ ibGib: v2a }) });
|
|
212
|
+
await ifWeMight(sir, `verify merge happened`, async () => {
|
|
213
|
+
// Retrieve updated KV from Source (or check what happened to v2a)
|
|
214
|
+
// Ideally, we just check the source space for the timeline tip
|
|
215
|
+
// The timeline tip for testRoot/v0 should now be NEW.
|
|
216
|
+
try {
|
|
217
|
+
// Get the KV for the Source Space
|
|
218
|
+
const sourceKV = await senderCoordinator.getKnowledgeVector({
|
|
219
|
+
space: sourceSpace,
|
|
220
|
+
metaspace,
|
|
221
|
+
domainIbGibs: [testRoot] // We want to know the tip of this timeline
|
|
222
|
+
});
|
|
223
|
+
const tjpAddr = getTjpAddr({ ibGib: testRoot, defaultIfNone: 'incomingAddr' }) ??
|
|
224
|
+
getIbGibAddr({ ibGib: testRoot });
|
|
225
|
+
if (logalot) {
|
|
226
|
+
console.log(`${lc} getKnowledgeVector returned. sourceKV: ${pretty(sourceKV)} (I: e8780cda37c8b2a46eeb85786874e926)`);
|
|
227
|
+
}
|
|
228
|
+
const sourceTipAddr = sourceKV[tjpAddr];
|
|
229
|
+
if (!sourceTipAddr) {
|
|
230
|
+
throw new Error(`Source Space missing timeline tip for ${tjpAddr} (E: ec95980b9c980c5c5870812e15e43826)`);
|
|
231
|
+
}
|
|
232
|
+
console.log(`${lc} [TEST DEBUG] sourceTipAddr: ${sourceTipAddr}`);
|
|
233
|
+
console.log(`${lc} [TEST DEBUG] v2a: ${getIbGibAddr({ ibGib: v2a })}`);
|
|
234
|
+
console.log(`${lc} [TEST DEBUG] v2b: ${getIbGibAddr({ ibGib: v2b })}`);
|
|
235
|
+
iReckon(sir, sourceTipAddr).asTo(`Source Tip (${sourceTipAddr}) should NOT be v2a`).not.isGonnaBe(getIbGibAddr({ ibGib: v2a }));
|
|
236
|
+
iReckon(sir, sourceTipAddr).asTo(`Source Tip (${sourceTipAddr}) should NOT be v2b`).not.isGonnaBe(getIbGibAddr({ ibGib: v2b }));
|
|
237
|
+
// Fetch the new tip
|
|
238
|
+
const resTip = await getFromSpace({ space: sourceSpace, addr: sourceTipAddr });
|
|
239
|
+
const newTip = resTip.ibGibs[0];
|
|
240
|
+
console.log(`${lc} [TEST DEBUG] newTip: ${JSON.stringify(newTip)}`);
|
|
241
|
+
// Check Data: Should have BOTH edits
|
|
242
|
+
iReckon(sir, newTip.data.fieldA).asTo('New Tip Data Field A').isGonnaBe('source_edit');
|
|
243
|
+
iReckon(sir, newTip.data.fieldB).asTo('New Tip Data Field B').isGonnaBe('dest_edit');
|
|
244
|
+
// Check Graft Structure
|
|
245
|
+
// Look for 'graftinfo' rel8n
|
|
246
|
+
const graftInfoRel = newTip.rel8ns?.graftinfo;
|
|
247
|
+
iReckon(sir, graftInfoRel).asTo('New Tip should have graftinfo rel8n').isGonnaBeTruthy();
|
|
248
|
+
if (graftInfoRel) {
|
|
249
|
+
iReckon(sir, graftInfoRel.length).asTo('Only 1 graftinfo').isGonnaBe(1);
|
|
250
|
+
// Fetch Graft Info Stone
|
|
251
|
+
const resGraft = await getFromSpace({ space: sourceSpace, addr: graftInfoRel[0] });
|
|
252
|
+
const graftInfo = resGraft.ibGibs[0];
|
|
253
|
+
console.log(`${lc} [TEST DEBUG] graftInfo: ${JSON.stringify(graftInfo)}`);
|
|
254
|
+
// Check Graft Relations (graftbase, graftorphan)
|
|
255
|
+
const baseRel = graftInfo.rel8ns?.graftbase;
|
|
256
|
+
const orphanRel = graftInfo.rel8ns?.graftorphan;
|
|
257
|
+
iReckon(sir, baseRel).asTo('Graft Base exists').isGonnaBeTruthy();
|
|
258
|
+
iReckon(sir, orphanRel).asTo('Graft Orphan exists').isGonnaBeTruthy();
|
|
259
|
+
// Verify Base/Orphan identity (one should be v2a, one v2b)
|
|
260
|
+
const addrV2a = getIbGibAddr({ ibGib: v2a });
|
|
261
|
+
const addrV2b = getIbGibAddr({ ibGib: v2b });
|
|
262
|
+
const bases = baseRel || [];
|
|
263
|
+
const orphans = orphanRel || [];
|
|
264
|
+
const isV2aInvolved = bases.includes(addrV2a) || orphans.includes(addrV2a);
|
|
265
|
+
const isV2bInvolved = bases.includes(addrV2b) || orphans.includes(addrV2b);
|
|
266
|
+
iReckon(sir, isV2aInvolved).asTo('V2a is involved in graft').isGonnaBeTrue();
|
|
267
|
+
iReckon(sir, isV2bInvolved).asTo('V2b is involved in graft').isGonnaBeTrue();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
272
|
+
iReckon(sir, true).asTo('getKnowledgeVector errored out').isGonnaBeFalse();
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
//# sourceMappingURL=sync-conflict.respec.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-conflict.respec.mjs","sourceRoot":"","sources":["../../src/sync/sync-conflict.respec.mts"],"names":[],"mappings":"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"}
|
|
@@ -10,14 +10,12 @@ export declare const SYNC_STAGE_ACK = "ack";
|
|
|
10
10
|
export declare const SYNC_STAGE_REQUEST = "request";
|
|
11
11
|
export declare const SYNC_STAGE_DELTA = "delta";
|
|
12
12
|
export declare const SYNC_STAGE_COMMIT = "commit";
|
|
13
|
-
export
|
|
14
|
-
export type SyncStage = typeof SYNC_STAGE_INIT | typeof SYNC_STAGE_ACK | typeof SYNC_STAGE_REQUEST | typeof SYNC_STAGE_DELTA | typeof SYNC_STAGE_COMMIT | typeof SYNC_STAGE_CONFLICT;
|
|
13
|
+
export type SyncStage = typeof SYNC_STAGE_INIT | typeof SYNC_STAGE_ACK | typeof SYNC_STAGE_REQUEST | typeof SYNC_STAGE_DELTA | typeof SYNC_STAGE_COMMIT;
|
|
15
14
|
export declare const SyncStage: {
|
|
16
15
|
readonly init: "init";
|
|
17
16
|
readonly ack: "ack";
|
|
18
17
|
readonly request: "request";
|
|
19
18
|
readonly delta: "delta";
|
|
20
19
|
readonly commit: "commit";
|
|
21
|
-
readonly conflict: "conflict";
|
|
22
20
|
};
|
|
23
21
|
//# sourceMappingURL=sync-constants.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-constants.d.mts","sourceRoot":"","sources":["../../src/sync/sync-constants.mts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,SAAS,CAAC;AAEhC,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,kCAAkC,kBAAkB,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAE7C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAC5C,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,eAAO,MAAM,iBAAiB,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-constants.d.mts","sourceRoot":"","sources":["../../src/sync/sync-constants.mts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,SAAS,CAAC;AAEhC,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,kCAAkC,kBAAkB,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAE7C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAC5C,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,MAAM,MAAM,SAAS,GACf,OAAO,eAAe,GACtB,OAAO,cAAc,GACrB,OAAO,kBAAkB,GACzB,OAAO,gBAAgB,GACvB,OAAO,iBAAiB,CAAC;AAE/B,eAAO,MAAM,SAAS;;;;;;CAMZ,CAAC"}
|
|
@@ -10,13 +10,11 @@ export const SYNC_STAGE_ACK = "ack";
|
|
|
10
10
|
export const SYNC_STAGE_REQUEST = "request";
|
|
11
11
|
export const SYNC_STAGE_DELTA = "delta";
|
|
12
12
|
export const SYNC_STAGE_COMMIT = "commit";
|
|
13
|
-
export const SYNC_STAGE_CONFLICT = "conflict";
|
|
14
13
|
export const SyncStage = {
|
|
15
14
|
init: SYNC_STAGE_INIT,
|
|
16
15
|
ack: SYNC_STAGE_ACK,
|
|
17
16
|
request: SYNC_STAGE_REQUEST,
|
|
18
17
|
delta: SYNC_STAGE_DELTA,
|
|
19
18
|
commit: SYNC_STAGE_COMMIT,
|
|
20
|
-
conflict: SYNC_STAGE_CONFLICT,
|
|
21
19
|
};
|
|
22
20
|
//# sourceMappingURL=sync-constants.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-constants.mjs","sourceRoot":"","sources":["../../src/sync/sync-constants.mts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAEhC,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,eAAe,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-constants.mjs","sourceRoot":"","sources":["../../src/sync/sync-constants.mts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAEhC,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,eAAe,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAS1C,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,IAAI,EAAE,eAAe;IACrB,GAAG,EAAE,cAAc;IACnB,OAAO,EAAE,kBAAkB;IAC3B,KAAK,EAAE,gBAAgB;IACvB,MAAM,EAAE,iBAAiB;CACnB,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Verifies syncing "Constants" (ibGibs without timelines/TJPs).
|
|
5
5
|
* Also verifies Smart Diff behavior (Constants shouldn't be re-sent).
|
|
6
6
|
*/
|
|
7
|
-
import { respecfully,
|
|
7
|
+
import { respecfully, iReckon, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
8
8
|
const maam = `[${import.meta.url}]`, sir = maam;
|
|
9
9
|
import { delay } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
10
10
|
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
@@ -18,7 +18,7 @@ import { DEFAULT_INNER_SPACE_DATA_V1 } from '../witness/space/inner-space/inner-
|
|
|
18
18
|
import { getTestKeystoneServiceHelper } from '../agent-helpers.mjs';
|
|
19
19
|
const lc = `[sync-innerspace-constants.respec]`;
|
|
20
20
|
await respecfully(sir, `Sync Constants (No TJP)`, async () => {
|
|
21
|
-
await
|
|
21
|
+
await ifWe(sir, `Verify Constants Sync`, async () => {
|
|
22
22
|
// 1. Setup Spaces
|
|
23
23
|
const metaspace = new Metaspace_Innerspace(undefined);
|
|
24
24
|
await metaspace.initialize({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-innerspace-constants.respec.mjs","sourceRoot":"","sources":["../../src/sync/sync-innerspace-constants.respec.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACH,WAAW,
|
|
1
|
+
{"version":3,"file":"sync-innerspace-constants.respec.mjs","sourceRoot":"","sources":["../../src/sync/sync-innerspace-constants.respec.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACH,WAAW,EAAa,OAAO,EAAE,IAAI,EACxC,MAAM,kDAAkD,CAAC;AAC1D,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,iDAAiD,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0EAA0E,CAAC;AAChH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,EAAE,GAAG,oCAAoC,CAAC;AAEhD,MAAM,WAAW,CAAC,GAAG,EAAE,yBAAyB,EAAE,KAAK,IAAI,EAAE;IAEzD,MAAM,IAAI,CAAC,GAAG,EAAE,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAChD,kBAAkB;QAClB,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,UAAU,CAAC;YACvB,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAC/C,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3D,mBAAmB,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC;SACpE,CAAC,CAAC;QACH,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAEnD,MAAM,WAAW,GAAG,IAAI,aAAa,CAAC;YAClC,GAAG,2BAA2B;YAC9B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,mBAAmB;SACnC,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,WAAW,CAAC;QAE9B,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;YAChC,GAAG,2BAA2B;YAC9B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,iBAAiB;SACjC,CAAC,CAAC;QACH,MAAM,SAAS,CAAC,WAAW,CAAC;QAE5B,oCAAoC;QACpC,uEAAuE;QACvE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC;YACjC,EAAE,EAAE,aAAa;YACjB,iBAAiB,EAAE,MAAM;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvD,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,cAAc,EAAE,CAAC;QAE1F,uBAAuB;QACvB,MAAM,YAAY,GAAG,MAAM,4BAA4B,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAElE,MAAM,IAAI,GAAG,IAAI,qBAAqB,CAAC;YACnC,WAAW,EAAE,WAAW;YACxB,aAAa,EAAE,SAAS;YACxB,mBAAmB,EAAE,mBAAmB;YACxC,iBAAiB,EAAE,SAAS;SAC/B,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;YACvC,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,CAAC,EAAE,CAAC;YAClB,kBAAkB,EAAE,KAAK;SAC5B,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC;QACnB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,aAAa,EAAE,CAAC;QAEtE,oBAAoB;QACpB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC,MAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,aAAa,EAAE,CAAC;QAEzG,sDAAsD;QACtD,iCAAiC;QACjC,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;YACnC,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,CAAC,EAAE,CAAC;YAClB,kBAAkB,EAAE,KAAK;SAC5B,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC;QACnB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEnF,kDAAkD;QAClD,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC;YACjC,EAAE,EAAE,aAAa;YACjB,iBAAiB,EAAE,MAAM;YACzB,MAAM,EAAE;gBACJ,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,iBAAiB;aACpC;SACJ,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvD,UAAU;QACV,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;YACnC,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,CAAC,EAAE,CAAC;YAClB,kBAAkB,EAAE,KAAK;SAC5B,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC;QACnB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,aAAa,EAAE,CAAC;QAE7D,oBAAoB;QACpB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,CAAC;IAExE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|