@ibgib/core-gib 0.1.22 → 0.1.25
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/graph-helper.d.mts +25 -0
- package/dist/common/other/graph-helper.d.mts.map +1 -1
- package/dist/common/other/graph-helper.mjs +75 -1
- package/dist/common/other/graph-helper.mjs.map +1 -1
- package/dist/sync/graft-info/graft-info-helpers.mjs +2 -2
- package/dist/sync/graft-info/graft-info-helpers.mjs.map +1 -1
- package/dist/sync/sync-conflict.respec.mjs +8 -12
- package/dist/sync/sync-conflict.respec.mjs.map +1 -1
- package/dist/sync/sync-constants.d.mts +14 -4
- package/dist/sync/sync-constants.d.mts.map +1 -1
- package/dist/sync/sync-constants.mjs +15 -3
- package/dist/sync/sync-constants.mjs.map +1 -1
- package/dist/sync/sync-helpers.d.mts +22 -15
- package/dist/sync/sync-helpers.d.mts.map +1 -1
- package/dist/sync/sync-helpers.mjs +159 -90
- package/dist/sync/sync-helpers.mjs.map +1 -1
- package/dist/sync/sync-innerspace-constants.respec.mjs +8 -9
- package/dist/sync/sync-innerspace-constants.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs +8 -9
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-dest-ahead.respec.mjs +8 -9
- package/dist/sync/sync-innerspace-dest-ahead.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs +8 -9
- package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-partial-update.respec.mjs +8 -9
- package/dist/sync/sync-innerspace-partial-update.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace.respec.mjs +6 -7
- package/dist/sync/sync-innerspace.respec.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.d.mts +2 -0
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.mjs +4 -0
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.d.mts +0 -15
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts +30 -16
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs +47 -79
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-types.d.mts +40 -1
- package/dist/sync/sync-peer/sync-peer-types.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-v1.d.mts +47 -14
- package/dist/sync/sync-peer/sync-peer-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-v1.mjs +188 -144
- package/dist/sync/sync-peer/sync-peer-v1.mjs.map +1 -1
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts +39 -3
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts.map +1 -1
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs +137 -31
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs.map +1 -1
- package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts +5 -0
- package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts.map +1 -1
- package/dist/sync/sync-saga-coordinator.d.mts +81 -77
- package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
- package/dist/sync/sync-saga-coordinator.mjs +608 -597
- package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
- package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts +154 -26
- package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts.map +1 -1
- package/dist/sync/sync-types.d.mts +87 -92
- package/dist/sync/sync-types.d.mts.map +1 -1
- package/dist/sync/sync-types.mjs +6 -2
- package/dist/sync/sync-types.mjs.map +1 -1
- package/dist/timeline/timeline-api.d.mts.map +1 -1
- package/dist/timeline/timeline-api.mjs +15 -8
- package/dist/timeline/timeline-api.mjs.map +1 -1
- package/package.json +1 -1
- package/src/common/other/graph-helper.mts +79 -1
- package/src/sync/graft-info/graft-info-helpers.mts +3 -3
- package/src/sync/sync-conflict.respec.mts +8 -14
- package/src/sync/sync-constants.mts +15 -4
- package/src/sync/sync-helpers.mts +173 -101
- package/src/sync/sync-innerspace-constants.respec.mts +8 -9
- package/src/sync/sync-innerspace-deep-updates.respec.mts +8 -9
- package/src/sync/sync-innerspace-dest-ahead.respec.mts +8 -9
- package/src/sync/sync-innerspace-multiple-timelines.respec.mts +8 -9
- package/src/sync/sync-innerspace-partial-update.respec.mts +9 -12
- package/src/sync/sync-innerspace.respec.mts +6 -7
- package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.mts +7 -0
- package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.mts +0 -15
- package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mts +72 -96
- package/src/sync/sync-peer/sync-peer-types.mts +43 -2
- package/src/sync/sync-peer/sync-peer-v1.mts +215 -142
- package/src/sync/sync-saga-context/sync-saga-context-helpers.mts +145 -37
- package/src/sync/sync-saga-context/sync-saga-context-types.mts +5 -0
- package/src/sync/sync-saga-coordinator.mts +680 -714
- package/src/sync/sync-saga-message/sync-saga-message-types.mts +160 -24
- package/src/sync/sync-types.mts +96 -105
- package/src/timeline/timeline-api.mts +17 -10
|
@@ -4,8 +4,12 @@
|
|
|
4
4
|
import { extractErrorMsg, getTimestamp } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
5
5
|
import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
|
|
6
6
|
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
7
|
+
import { validateIbGibIntrinsically } from '@ibgib/ts-gib/dist/V1/validate-helper.mjs';
|
|
8
|
+
import { GLOBAL_LOG_A_LOT } from '../../core-constants.mjs';
|
|
7
9
|
import { SYNC_SAGA_CONTEXT_ATOM } from './sync-saga-context-constants.mjs';
|
|
8
10
|
import { SYNC_SAGA_PAYLOAD_ADDRS_DOMAIN } from '../sync-constants.mjs';
|
|
11
|
+
import { putInSpace, registerNewIbGib } from '../../witness/space/space-helper.mjs';
|
|
12
|
+
const logalot = GLOBAL_LOG_A_LOT;
|
|
9
13
|
/**
|
|
10
14
|
* Constructs the standard 'ib' string for a Sync Saga Context stone.
|
|
11
15
|
*/
|
|
@@ -57,42 +61,144 @@ export async function parseSyncSagaContextIb({ ib, }) {
|
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
63
|
/**
|
|
60
|
-
* Creates
|
|
64
|
+
* Creates new SyncSagaContext stone. Puts/registers in {@link localSpace}
|
|
65
|
+
* immediately after creation.
|
|
61
66
|
*
|
|
62
67
|
* @returns The context ibGib.
|
|
68
|
+
*
|
|
69
|
+
* ## notes
|
|
70
|
+
*
|
|
71
|
+
* the other ibgibs that are related to this context stone should already be
|
|
72
|
+
* put/registered in {@link localSpace}.
|
|
63
73
|
*/
|
|
64
|
-
export async function createSyncSagaContext({ sagaFrame, sessionKeystones, payloadIbGibsDomain, }) {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
export async function createSyncSagaContext({ sagaFrame, sessionKeystones, payloadIbGibsDomain, localSpace, }) {
|
|
75
|
+
const lc = `[${createSyncSagaContext.name}]`;
|
|
76
|
+
try {
|
|
77
|
+
if (logalot) {
|
|
78
|
+
console.log(`${lc} starting... (I: 6b87bee313e811d1d2fc90e87fbec826)`);
|
|
79
|
+
}
|
|
80
|
+
const date = new Date();
|
|
81
|
+
const timestamp = getTimestamp(date);
|
|
82
|
+
const timestampMs = date.getMilliseconds();
|
|
83
|
+
const data = {
|
|
84
|
+
timestamp,
|
|
85
|
+
timestampMs,
|
|
86
|
+
};
|
|
87
|
+
// Domain Payloads
|
|
88
|
+
const payloadAddrsDomain = payloadIbGibsDomain ?
|
|
89
|
+
payloadIbGibsDomain?.map(x => getIbGibAddr({ ibGib: x })) :
|
|
90
|
+
undefined;
|
|
91
|
+
if (payloadAddrsDomain && payloadAddrsDomain.length > 0) {
|
|
92
|
+
data[SYNC_SAGA_PAYLOAD_ADDRS_DOMAIN] = payloadAddrsDomain;
|
|
93
|
+
}
|
|
94
|
+
// rel8ns should always have saga frame, sometimes have keystone
|
|
95
|
+
const rel8ns = {
|
|
96
|
+
sagaFrame: [getIbGibAddr({ ibGib: sagaFrame })],
|
|
97
|
+
};
|
|
98
|
+
if (sessionKeystones && sessionKeystones.length > 0) {
|
|
99
|
+
rel8ns.sessionKeystone = sessionKeystones.map(x => getIbGibAddr({ ibGib: x }));
|
|
100
|
+
}
|
|
101
|
+
// Generate standard ib
|
|
102
|
+
const ib = await getSyncSagaContextIb({ data });
|
|
103
|
+
const contextIbGib = await Factory_V1.stone({
|
|
104
|
+
parentPrimitiveIb: SYNC_SAGA_CONTEXT_ATOM,
|
|
105
|
+
ib,
|
|
106
|
+
data,
|
|
107
|
+
rel8ns,
|
|
108
|
+
});
|
|
109
|
+
// put/register immediately. Note that contextIbGib at this point is
|
|
110
|
+
// pure DTO, i.e., only ib, gib, data, rel8ns props.
|
|
111
|
+
await putInSpace({ ibGib: contextIbGib, space: localSpace, });
|
|
112
|
+
await registerNewIbGib({
|
|
113
|
+
ibGib: contextIbGib,
|
|
114
|
+
space: localSpace,
|
|
115
|
+
fnBroadcast: undefined,
|
|
116
|
+
});
|
|
117
|
+
// Attach actual ibgibs for transport (not pure DTO now)
|
|
118
|
+
contextIbGib.sagaFrame = sagaFrame;
|
|
119
|
+
if (payloadIbGibsDomain && payloadIbGibsDomain.length > 0) {
|
|
120
|
+
contextIbGib.payloadIbGibsDomain = payloadIbGibsDomain;
|
|
121
|
+
}
|
|
122
|
+
return contextIbGib;
|
|
76
123
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
};
|
|
81
|
-
if (sessionKeystones && sessionKeystones.length > 0) {
|
|
82
|
-
rel8ns.sessionKeystone = sessionKeystones.map(x => getIbGibAddr({ ibGib: x }));
|
|
124
|
+
catch (error) {
|
|
125
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
126
|
+
throw error;
|
|
83
127
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
128
|
+
finally {
|
|
129
|
+
if (logalot) {
|
|
130
|
+
console.log(`${lc} complete.`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Validates ONLY the {@link context} ibgib itself and saga frame/msg stone(s)
|
|
136
|
+
* ({@link SyncSagaContextIbGib_V1.sagaFrame}).
|
|
137
|
+
*
|
|
138
|
+
* Does NOT...
|
|
139
|
+
* * validate keystones (authn or authz)
|
|
140
|
+
* * validate domain payload ibgibs...
|
|
141
|
+
* * intrinsically
|
|
142
|
+
* * in relation to this context (addrs match up)
|
|
143
|
+
*
|
|
144
|
+
* @returns empty array if valid, else validation errors
|
|
145
|
+
*/
|
|
146
|
+
export async function validateContextAndSagaFrame({ context }) {
|
|
147
|
+
const lc = `[${validateContextAndSagaFrame.name}]`;
|
|
148
|
+
try {
|
|
149
|
+
if (logalot) {
|
|
150
|
+
console.log(`${lc} starting... (I: 7797f8294bd8f7e5089cb722ad468226)`);
|
|
151
|
+
}
|
|
152
|
+
const errors = [];
|
|
153
|
+
// validate just the context first. if this fails we return early.
|
|
154
|
+
const intrinsicErrors = await validateIbGibIntrinsically({ ibGib: context });
|
|
155
|
+
if (intrinsicErrors && intrinsicErrors.length > 0) {
|
|
156
|
+
intrinsicErrors.forEach(x => errors.push(x));
|
|
157
|
+
return errors; /* <<<< returns early */
|
|
158
|
+
}
|
|
159
|
+
if (context.sagaFrame) {
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
errors.push(`context.sagaFrame is falsy. (E: b4edd88f4963f493789f83b29ba2df26)`);
|
|
163
|
+
}
|
|
164
|
+
// validate the entire context graph intrinsically, including saga frame, stones, identity(s) (if applicable but not authentication, that will be done in a separate step)
|
|
165
|
+
// ensure the non-dto properties on the context object (i.e. props
|
|
166
|
+
// that are not ib, gib, data, or rel8ns) match the data in the
|
|
167
|
+
// context object
|
|
168
|
+
throw new Error(`not implemented (E: cb639658e1183fa6c8a4ebca023ba926)`);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
finally {
|
|
175
|
+
if (logalot) {
|
|
176
|
+
console.log(`${lc} complete.`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* validates the payload ibgibs ({@link SyncSagaContextIbGib_V1.payloadIbGibsDomain}) intrinsically
|
|
182
|
+
*
|
|
183
|
+
* @returns empty array if valid, else validation errors
|
|
184
|
+
*/
|
|
185
|
+
export async function validateContextDomainPayloadIbGibs({ context }) {
|
|
186
|
+
const lc = `[${validateContextDomainPayloadIbGibs.name}]`;
|
|
187
|
+
try {
|
|
188
|
+
if (logalot) {
|
|
189
|
+
console.log(`${lc} starting... (I: 9f9fe835bcc80c75aa7fd6d887fc0826)`);
|
|
190
|
+
}
|
|
191
|
+
console.error(`${lc} NAG MESSAGE (NOT THROWN). not implemented (E: bfe02ab36a227291a8f17ffc08f2ef26)`);
|
|
192
|
+
return [];
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
196
|
+
throw error;
|
|
197
|
+
}
|
|
198
|
+
finally {
|
|
199
|
+
if (logalot) {
|
|
200
|
+
console.log(`${lc} complete.`);
|
|
201
|
+
}
|
|
95
202
|
}
|
|
96
|
-
return contextIbGib;
|
|
97
203
|
}
|
|
98
204
|
//# sourceMappingURL=sync-saga-context-helpers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-saga-context-helpers.mjs","sourceRoot":"","sources":["../../../src/sync/sync-saga-context/sync-saga-context-helpers.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-saga-context-helpers.mjs","sourceRoot":"","sources":["../../../src/sync/sync-saga-context/sync-saga-context-helpers.mts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,11 @@ export interface SyncSagaContextRel8ns_V1 extends IbGibRel8ns_V1 {
|
|
|
37
37
|
/**
|
|
38
38
|
* The Ephemeral Session Keystone Identity used for this saga.
|
|
39
39
|
* Required for validating the saga frame signature.
|
|
40
|
+
*
|
|
41
|
+
* ## notes
|
|
42
|
+
*
|
|
43
|
+
* This will be different for the sender and receiver, yes? hmm...
|
|
44
|
+
* I think I need to put "sender" or "receiver" in the session keystone ib.
|
|
40
45
|
*/
|
|
41
46
|
sessionKeystone?: IbGibAddr[];
|
|
42
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-saga-context-types.d.mts","sourceRoot":"","sources":["../../../src/sync/sync-saga-context/sync-saga-context-types.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,OAAO,sBAAsB,CAAC;IACpC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IACxD;;;OAGG;IACH,CAAC,8BAA8B,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC5D;;;;OAIG;IACH,SAAS,EAAE,SAAS,EAAE,CAAC;IAEvB
|
|
1
|
+
{"version":3,"file":"sync-saga-context-types.d.mts","sourceRoot":"","sources":["../../../src/sync/sync-saga-context/sync-saga-context-types.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,OAAO,sBAAsB,CAAC;IACpC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IACxD;;;OAGG;IACH,CAAC,8BAA8B,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC5D;;;;OAIG;IACH,SAAS,EAAE,SAAS,EAAE,CAAC;IAEvB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,QAAQ,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;IACvG;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAEjC;;;;OAIG;IACH,SAAS,EAAE,YAAY,CAAC;CAC3B"}
|
|
@@ -4,21 +4,13 @@ import { KeystoneIbGib_V1 } from "../keystone/keystone-types.mjs";
|
|
|
4
4
|
import { KeystoneService_V1 } from "../keystone/keystone-service-v1.mjs";
|
|
5
5
|
import { MetaspaceService } from "../witness/space/metaspace/metaspace-types.mjs";
|
|
6
6
|
import { SyncStage } from "./sync-constants.mjs";
|
|
7
|
-
import { SyncIbGib_V1, SyncConflictStrategy, SyncOptions } from "./sync-types.mjs";
|
|
8
|
-
import { SyncSagaMessageData_V1 } from "./sync-saga-message/sync-saga-message-types.mjs";
|
|
7
|
+
import { SyncIbGib_V1, SyncConflictStrategy, SyncOptions, DomainIbGibAnalysisInfo, NextSagaFrameInfo, HandleSagaResponseContextResult } from "./sync-types.mjs";
|
|
8
|
+
import { SyncSagaMessageData_V1, SyncSagaMessageInitData_V1 } from "./sync-saga-message/sync-saga-message-types.mjs";
|
|
9
9
|
import { SyncSagaInfo } from "./sync-types.mjs";
|
|
10
10
|
import { SyncPeerWitness } from "./sync-peer/sync-peer-types.mjs";
|
|
11
11
|
import { SyncSagaContextIbGib_V1 } from "./sync-saga-context/sync-saga-context-types.mjs";
|
|
12
12
|
import { SubjectWitness } from "../common/pubsub/subject/subject-types.mjs";
|
|
13
|
-
|
|
14
|
-
* Result of handling a saga frame.
|
|
15
|
-
* Separates control and domain payloads.
|
|
16
|
-
*/
|
|
17
|
-
export interface HandleSagaFrameResult {
|
|
18
|
-
frame: SyncIbGib_V1;
|
|
19
|
-
payloadIbGibsControl?: IbGib_V1[];
|
|
20
|
-
payloadIbGibsDomain?: IbGib_V1[];
|
|
21
|
-
}
|
|
13
|
+
import { FlatIbGibGraph } from "../common/other/graph-types.mjs";
|
|
22
14
|
/**
|
|
23
15
|
* Orchestrates the synchronization process between two spaces (Source and Destination).
|
|
24
16
|
*
|
|
@@ -49,7 +41,7 @@ export declare class SyncSagaCoordinator {
|
|
|
49
41
|
* @param opts.domainIbGibs - The root ibgibs defining the scope of the sync.
|
|
50
42
|
* @param opts.useSessionIdentity - (Optional) Whether to create an ephemeral session identity. Default: true.
|
|
51
43
|
*/
|
|
52
|
-
sync({ peer,
|
|
44
|
+
sync({ peer, domainIbGibs, conflictStrategy, useSessionIdentity, metaspace, localSpace, }: SyncOptions): Promise<SyncSagaInfo>;
|
|
53
45
|
protected getSessionIdentity({ sagaId, metaspace, tempSpace, }: {
|
|
54
46
|
sagaId: string;
|
|
55
47
|
metaspace: MetaspaceService;
|
|
@@ -62,26 +54,24 @@ export declare class SyncSagaCoordinator {
|
|
|
62
54
|
* **Execution Context**: **Sender (Local)**.
|
|
63
55
|
*
|
|
64
56
|
* This method manages the "Ping Pong" request-response cycle on the Sender.
|
|
65
|
-
* It sends frames via the Peer Witness and processes the responses using `
|
|
57
|
+
* It sends frames via the Peer Witness and processes the responses using `handleSagaResponseContext`.
|
|
66
58
|
*
|
|
67
59
|
* **Data Transport Note**:
|
|
68
60
|
* Actual ibGib data (payloads) are transported via `SyncSagaContext.rel8ns.payload`.
|
|
69
|
-
* When `
|
|
61
|
+
* When `handleSagaResponseContext` returns a `nextPayloadIbGibs` (data to send), this loop injects it into
|
|
70
62
|
* the NEXT request context.
|
|
71
63
|
* When the Peer responds with data (in the response context), it is resolved and put into `tempSpace`.
|
|
72
64
|
*/
|
|
73
|
-
protected executeSagaLoop({
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
[addr: string]: IbGib_V1;
|
|
77
|
-
};
|
|
65
|
+
protected executeSagaLoop({ initFrame, initDomainGraph, peer, sessionIdentity, updates$, localSpace, tempSpace, metaspace }: {
|
|
66
|
+
initFrame: SyncIbGib_V1;
|
|
67
|
+
initDomainGraph: FlatIbGibGraph;
|
|
78
68
|
peer: SyncPeerWitness;
|
|
79
69
|
sessionIdentity?: KeystoneIbGib_V1;
|
|
80
70
|
updates$: SubjectWitness<SyncSagaContextIbGib_V1>;
|
|
71
|
+
metaspace: MetaspaceService;
|
|
81
72
|
localSpace: IbGibSpaceAny;
|
|
82
73
|
tempSpace: IbGibSpaceAny;
|
|
83
|
-
|
|
84
|
-
}): Promise<IbGib_V1[]>;
|
|
74
|
+
}): Promise<void>;
|
|
85
75
|
/**
|
|
86
76
|
* Helper to get Knowledge Vector for specific domain ibGibs or TJPs.
|
|
87
77
|
* Useful for testing and external validation.
|
|
@@ -94,19 +84,10 @@ export declare class SyncSagaCoordinator {
|
|
|
94
84
|
}): Promise<{
|
|
95
85
|
[tjp: string]: string | null;
|
|
96
86
|
}>;
|
|
97
|
-
protected
|
|
87
|
+
protected analyzeDomainIbGibs({ domainIbGibs, space, }: {
|
|
98
88
|
domainIbGibs: IbGib_V1[];
|
|
99
89
|
space: IbGibSpaceAny;
|
|
100
|
-
}): Promise<
|
|
101
|
-
srcStones: IbGib_V1[];
|
|
102
|
-
srcTimelinesMap: {
|
|
103
|
-
[tjp: string]: IbGib_V1[];
|
|
104
|
-
};
|
|
105
|
-
srcSortedTjps: string[];
|
|
106
|
-
srcGraph: {
|
|
107
|
-
[addr: string]: IbGib_V1;
|
|
108
|
-
};
|
|
109
|
-
}>;
|
|
90
|
+
}): Promise<DomainIbGibAnalysisInfo>;
|
|
110
91
|
/**
|
|
111
92
|
* Creates the Initial Saga Frame (Init Stage).
|
|
112
93
|
*
|
|
@@ -116,42 +97,66 @@ export declare class SyncSagaCoordinator {
|
|
|
116
97
|
* Generates the first frame containing the Knowledge Vector of the Local Space.
|
|
117
98
|
* This is sent to the Receiver to begin Gap Analysis.
|
|
118
99
|
*/
|
|
119
|
-
protected createInitFrame({ sagaId, sessionIdentity,
|
|
100
|
+
protected createInitFrame({ sagaId, sessionIdentity, domainIbGibs, conflictStrategy, metaspace, localSpace, tempSpace, }: {
|
|
120
101
|
sagaId: string;
|
|
121
102
|
sessionIdentity?: KeystoneIbGib_V1;
|
|
122
|
-
localSpace: IbGibSpaceAny;
|
|
123
103
|
domainIbGibs: IbGib_V1[];
|
|
124
|
-
tempSpace: IbGibSpaceAny;
|
|
125
|
-
metaspace: MetaspaceService;
|
|
126
104
|
conflictStrategy: SyncConflictStrategy;
|
|
105
|
+
metaspace: MetaspaceService;
|
|
106
|
+
localSpace: IbGibSpaceAny;
|
|
107
|
+
tempSpace: IbGibSpaceAny;
|
|
127
108
|
}): Promise<{
|
|
128
|
-
|
|
129
|
-
|
|
109
|
+
initFrame: SyncIbGib_V1;
|
|
110
|
+
initDomainGraph: {
|
|
130
111
|
[addr: string]: IbGib_V1;
|
|
131
112
|
};
|
|
132
113
|
}>;
|
|
133
114
|
/**
|
|
134
115
|
* Helper to poll for streaming domain payloads and put them in the
|
|
135
116
|
* local {@link tempSpace}.
|
|
117
|
+
*
|
|
118
|
+
* @returns when all {@link expectedAddrs} are done being transmitted.
|
|
136
119
|
*/
|
|
137
|
-
protected pollForDomainPayloads({ expectedAddrs, domainPayloadsMap, tempSpace, }: {
|
|
120
|
+
protected pollForDomainPayloads({ expectedAddrs, pollIntervalMs, domainPayloadsMap, tempSpace, }: {
|
|
138
121
|
expectedAddrs: string[];
|
|
122
|
+
pollIntervalMs: number;
|
|
139
123
|
domainPayloadsMap: Map<string, IbGib_V1>;
|
|
140
124
|
tempSpace: IbGibSpaceAny;
|
|
141
|
-
}): Promise<
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
125
|
+
}): Promise<IbGib_V1[]>;
|
|
126
|
+
/**
|
|
127
|
+
* This is the heart of the "ping pong" transaction, where we send a context
|
|
128
|
+
* and receive a context. IOW, this drives the FSM of the sync saga ibgib as
|
|
129
|
+
* a whole.
|
|
130
|
+
*
|
|
131
|
+
* This is called in two places:
|
|
132
|
+
*
|
|
133
|
+
* ## 1. Sender
|
|
134
|
+
*
|
|
135
|
+
* On the sender, this is called within the {@link executeSagaLoop} which
|
|
136
|
+
* initiates and drives the sync.
|
|
137
|
+
*
|
|
138
|
+
* ## 2. Receiver
|
|
139
|
+
*
|
|
140
|
+
* On the receiver, this is called directly by the receiving endpoint. That
|
|
141
|
+
* endpoint's job is basically to get these things collocated and prepared
|
|
142
|
+
* to make this call.
|
|
143
|
+
*
|
|
144
|
+
* This is a one-off on the receiver.
|
|
145
|
+
*/
|
|
146
|
+
handleResponseSagaContext({ sagaContext, mySpace, myTempSpace, identity, identitySecret, metaspace, }: {
|
|
147
|
+
sagaContext: SyncSagaContextIbGib_V1;
|
|
148
|
+
/**
|
|
149
|
+
* Local space relative to the execution context's POV
|
|
150
|
+
*/
|
|
151
|
+
mySpace: IbGibSpaceAny;
|
|
152
|
+
/**
|
|
153
|
+
* Local temp space relative to the execution context's POV
|
|
154
|
+
*/
|
|
155
|
+
myTempSpace: IbGibSpaceAny;
|
|
149
156
|
identity?: KeystoneIbGib_V1;
|
|
150
157
|
identitySecret?: string;
|
|
151
158
|
metaspace: MetaspaceService;
|
|
152
|
-
|
|
153
|
-
expectedDomainAddrs?: string[];
|
|
154
|
-
}): Promise<HandleSagaFrameResult | null>;
|
|
159
|
+
}): Promise<HandleSagaResponseContextResult | null>;
|
|
155
160
|
/**
|
|
156
161
|
* Handles the `Init` frame.
|
|
157
162
|
*
|
|
@@ -164,15 +169,24 @@ export declare class SyncSagaCoordinator {
|
|
|
164
169
|
* 3. Identifies what Receiver needs (`deltaReqAddrs`).
|
|
165
170
|
* 4. Returns an `Ack` frame containing these lists.
|
|
166
171
|
*/
|
|
167
|
-
protected handleInitFrame({ sagaIbGib, messageData,
|
|
172
|
+
protected handleInitFrame({ sagaIbGib, messageData, mySpace, myTempSpace, metaspace, identity, }: {
|
|
168
173
|
sagaIbGib: SyncIbGib_V1;
|
|
169
|
-
messageData:
|
|
170
|
-
|
|
171
|
-
|
|
174
|
+
messageData: SyncSagaMessageInitData_V1;
|
|
175
|
+
/**
|
|
176
|
+
* Local space relative to the execution context's POV
|
|
177
|
+
*/
|
|
178
|
+
mySpace: IbGibSpaceAny;
|
|
179
|
+
/**
|
|
180
|
+
* Local temp space relative to the execution context's POV.
|
|
181
|
+
*
|
|
182
|
+
* NOTE: Since this always executes on the receiver's end, this should
|
|
183
|
+
* be the receiver's temp space.
|
|
184
|
+
*/
|
|
185
|
+
myTempSpace: IbGibSpaceAny;
|
|
172
186
|
metaspace: MetaspaceService;
|
|
173
187
|
identity?: KeystoneIbGib_V1;
|
|
174
188
|
identitySecret?: string;
|
|
175
|
-
}): Promise<
|
|
189
|
+
}): Promise<NextSagaFrameInfo>;
|
|
176
190
|
/**
|
|
177
191
|
* Handles the `Ack` frame.
|
|
178
192
|
*
|
|
@@ -194,7 +208,7 @@ export declare class SyncSagaCoordinator {
|
|
|
194
208
|
tempSpace: IbGibSpaceAny;
|
|
195
209
|
metaspace: MetaspaceService;
|
|
196
210
|
identity?: KeystoneIbGib_V1;
|
|
197
|
-
}): Promise<
|
|
211
|
+
}): Promise<NextSagaFrameInfo>;
|
|
198
212
|
/**
|
|
199
213
|
* Handles the `Delta` frame.
|
|
200
214
|
*
|
|
@@ -214,46 +228,36 @@ export declare class SyncSagaCoordinator {
|
|
|
214
228
|
tempSpace: IbGibSpaceAny;
|
|
215
229
|
metaspace: MetaspaceService;
|
|
216
230
|
identity?: KeystoneIbGib_V1;
|
|
217
|
-
}): Promise<
|
|
231
|
+
}): Promise<NextSagaFrameInfo>;
|
|
218
232
|
protected handleCommitFrame({ sagaIbGib, destSpace, tempSpace, metaspace, identity, }: {
|
|
219
233
|
sagaIbGib: SyncIbGib_V1;
|
|
220
234
|
destSpace: IbGibSpaceAny;
|
|
221
235
|
tempSpace: IbGibSpaceAny;
|
|
222
236
|
metaspace: MetaspaceService;
|
|
223
237
|
identity?: KeystoneIbGib_V1;
|
|
224
|
-
}): Promise<
|
|
225
|
-
protected createSyncMsgStone<TStoneData extends SyncSagaMessageData_V1>({ data,
|
|
238
|
+
}): Promise<NextSagaFrameInfo>;
|
|
239
|
+
protected createSyncMsgStone<TStoneData extends SyncSagaMessageData_V1>({ data, localSpace, metaspace, }: {
|
|
226
240
|
data: TStoneData;
|
|
227
|
-
|
|
241
|
+
localSpace: IbGibSpaceAny;
|
|
228
242
|
metaspace: MetaspaceService;
|
|
229
243
|
}): Promise<IbGib_V1<TStoneData>>;
|
|
230
|
-
/**
|
|
231
|
-
* Ensures saga frame and its msg stone(s) are in BOTH spaces for audit trail.
|
|
232
|
-
* Control ibgibs (saga frames, msg stones, identity) must be in both destSpace and tempSpace.
|
|
233
|
-
*/
|
|
234
|
-
protected ensureSagaFrameInBothSpaces({ frame, destSpace, tempSpace, metaspace, }: {
|
|
235
|
-
frame: SyncIbGib_V1;
|
|
236
|
-
destSpace: IbGibSpaceAny;
|
|
237
|
-
tempSpace: IbGibSpaceAny;
|
|
238
|
-
metaspace: MetaspaceService;
|
|
239
|
-
}): Promise<void>;
|
|
240
244
|
/**
|
|
241
245
|
* Evolves the saga timeline with a new frame.
|
|
242
246
|
*/
|
|
243
|
-
protected evolveSyncSagaIbGib({ prevSagaIbGib, msgStones,
|
|
247
|
+
protected evolveSyncSagaIbGib({ prevSagaIbGib, conflictStrategy, msgStones, sessionIdentity, localSpace, metaspace, }: {
|
|
244
248
|
prevSagaIbGib?: SyncIbGib_V1;
|
|
249
|
+
conflictStrategy?: SyncConflictStrategy;
|
|
245
250
|
msgStones: IbGib_V1[];
|
|
246
|
-
|
|
247
|
-
space: IbGibSpaceAny;
|
|
251
|
+
localSpace: IbGibSpaceAny;
|
|
248
252
|
metaspace: MetaspaceService;
|
|
249
|
-
|
|
253
|
+
sessionIdentity?: KeystoneIbGib_V1;
|
|
250
254
|
}): Promise<SyncIbGib_V1>;
|
|
251
|
-
protected getStageAndPayloadFromFrame({
|
|
252
|
-
|
|
255
|
+
protected getStageAndPayloadFromFrame({ sagaFrame, space }: {
|
|
256
|
+
sagaFrame: IbGib_V1;
|
|
253
257
|
space: IbGibSpaceAny;
|
|
254
258
|
}): Promise<{
|
|
255
259
|
stage: SyncStage;
|
|
256
|
-
messageData:
|
|
260
|
+
messageData: unknown;
|
|
257
261
|
}>;
|
|
258
262
|
protected sortTimelinesTopologically(timelines: {
|
|
259
263
|
[tjp: string]: IbGib_V1[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-saga-coordinator.d.mts","sourceRoot":"","sources":["../../src/sync/sync-saga-coordinator.mts"],"names":[],"mappings":"AAYA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"sync-saga-coordinator.d.mts","sourceRoot":"","sources":["../../src/sync/sync-saga-coordinator.mts"],"names":[],"mappings":"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"}
|