cojson 0.8.21 → 0.8.23
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/CHANGELOG.md +7 -0
- package/dist/native/CoValuesStore.js +31 -0
- package/dist/native/CoValuesStore.js.map +1 -0
- package/dist/native/PeerState.js +3 -0
- package/dist/native/PeerState.js.map +1 -1
- package/dist/native/SyncStateSubscriptionManager.js +2 -2
- package/dist/native/SyncStateSubscriptionManager.js.map +1 -1
- package/dist/native/coValueState.js +175 -27
- package/dist/native/coValueState.js.map +1 -1
- package/dist/native/localNode.js +20 -41
- package/dist/native/localNode.js.map +1 -1
- package/dist/native/sync.js +43 -82
- package/dist/native/sync.js.map +1 -1
- package/dist/web/CoValuesStore.js +31 -0
- package/dist/web/CoValuesStore.js.map +1 -0
- package/dist/web/PeerState.js +3 -0
- package/dist/web/PeerState.js.map +1 -1
- package/dist/web/SyncStateSubscriptionManager.js +2 -2
- package/dist/web/SyncStateSubscriptionManager.js.map +1 -1
- package/dist/web/coValueState.js +175 -27
- package/dist/web/coValueState.js.map +1 -1
- package/dist/web/localNode.js +20 -41
- package/dist/web/localNode.js.map +1 -1
- package/dist/web/sync.js +43 -82
- package/dist/web/sync.js.map +1 -1
- package/package.json +1 -1
- package/src/CoValuesStore.ts +38 -0
- package/src/PeerState.ts +4 -0
- package/src/SyncStateSubscriptionManager.ts +2 -2
- package/src/coValueState.ts +253 -42
- package/src/localNode.ts +28 -56
- package/src/sync.ts +58 -104
- package/src/tests/coValueState.test.ts +362 -0
- package/src/tests/group.test.ts +1 -1
- package/src/tests/sync.test.ts +123 -9
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CoValueState } from "./coValueState.js";
|
|
2
|
+
export class CoValuesStore {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.coValues = new Map();
|
|
5
|
+
}
|
|
6
|
+
get(id) {
|
|
7
|
+
let entry = this.coValues.get(id);
|
|
8
|
+
if (!entry) {
|
|
9
|
+
entry = CoValueState.Unknown(id);
|
|
10
|
+
this.coValues.set(id, entry);
|
|
11
|
+
}
|
|
12
|
+
return entry;
|
|
13
|
+
}
|
|
14
|
+
setAsAvailable(id, coValue) {
|
|
15
|
+
const entry = this.get(id);
|
|
16
|
+
entry.dispatch({
|
|
17
|
+
type: "available",
|
|
18
|
+
coValue,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
getEntries() {
|
|
22
|
+
return this.coValues.entries();
|
|
23
|
+
}
|
|
24
|
+
getValues() {
|
|
25
|
+
return this.coValues.values();
|
|
26
|
+
}
|
|
27
|
+
getKeys() {
|
|
28
|
+
return this.coValues.keys();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=CoValuesStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoValuesStore.js","sourceRoot":"","sources":["../../src/CoValuesStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,OAAO,aAAa;IAA1B;QACE,aAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAgC9C,CAAC;IA9BC,GAAG,CAAC,EAAW;QACb,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,cAAc,CAAC,EAAW,EAAE,OAAoB;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3B,KAAK,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,WAAW;YACjB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
package/dist/native/PeerState.js
CHANGED
|
@@ -34,6 +34,9 @@ export class PeerState {
|
|
|
34
34
|
get crashOnClose() {
|
|
35
35
|
return this.peer.crashOnClose;
|
|
36
36
|
}
|
|
37
|
+
shouldRetryUnavailableCoValues() {
|
|
38
|
+
return this.peer.role === "server";
|
|
39
|
+
}
|
|
37
40
|
isServerOrStoragePeer() {
|
|
38
41
|
return this.peer.role === "server" || this.peer.role === "storage";
|
|
39
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PeerState.js","sourceRoot":"","sources":["../../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EACL,yBAAyB,GAE1B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,OAAO,SAAS;IACpB,YACU,IAAU,EAClB,WAAwC;QADhC,SAAI,GAAJ,IAAI,CAAM;QAsBX,mBAAc,GAAiB,IAAI,GAAG,EAAE,CAAC;QAOzC,oBAAe,GAA0C,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"PeerState.js","sourceRoot":"","sources":["../../src/PeerState.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,8 +44,8 @@ export class SyncStateSubscriptionManager {
|
|
|
44
44
|
}
|
|
45
45
|
getIsCoValueFullyUploadedIntoPeer(peerId, id) {
|
|
46
46
|
const peer = this.syncManager.peers[peerId];
|
|
47
|
-
const entry = this.syncManager.local.
|
|
48
|
-
if (!peer
|
|
47
|
+
const entry = this.syncManager.local.coValuesStore.get(id);
|
|
48
|
+
if (!peer) {
|
|
49
49
|
return false;
|
|
50
50
|
}
|
|
51
51
|
if (entry.state.type !== "available") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncStateSubscriptionManager.js","sourceRoot":"","sources":["../../src/SyncStateSubscriptionManager.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,MAAM,OAAO,4BAA4B;IACvC,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAEpC,cAAS,GAAG,IAAI,GAAG,EAMxB,CAAC;QAEI,qBAAgB,GAAG,IAAI,GAAG,EAG/B,CAAC;IAb2C,CAAC;IAehD,kBAAkB,CAChB,QAIS;QAET,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,sBAAsB,CACpB,MAAc,EACd,QAA2E;QAE3E,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAEjE,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;QAED,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExB,OAAO,GAAG,EAAE;YACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,EAAW;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzD,mDAAmD;QACnD,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QACnE,MAAM,qBAAqB,GAAG,IAAI,CAAC,iCAAiC,CAClE,MAAM,EACN,EAAE,CACH,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,aAAa;YAAE,OAAO;QAE3B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,iCAAiC,CAAC,MAAc,EAAE,EAAW;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"SyncStateSubscriptionManager.js","sourceRoot":"","sources":["../../src/SyncStateSubscriptionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
return { promise, resolve };
|
|
1
|
+
export const CO_VALUE_LOADING_MAX_RETRIES = 5;
|
|
2
|
+
export class CoValueUnknownState {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.type = "unknown";
|
|
5
|
+
}
|
|
7
6
|
}
|
|
8
|
-
class
|
|
7
|
+
export class CoValueLoadingState {
|
|
9
8
|
constructor(peersIds) {
|
|
10
|
-
this.type = "
|
|
9
|
+
this.type = "loading";
|
|
10
|
+
this.peers = new Map();
|
|
11
11
|
this.peers = new Map();
|
|
12
12
|
for (const peerId of peersIds) {
|
|
13
13
|
this.peers.set(peerId, createResolvablePromise());
|
|
14
14
|
}
|
|
15
15
|
const { resolve, promise } = createResolvablePromise();
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
16
|
+
this.result = promise;
|
|
17
|
+
this.resolveResult = resolve;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
markAsUnavailable(peerId) {
|
|
20
20
|
const entry = this.peers.get(peerId);
|
|
21
21
|
if (entry) {
|
|
22
|
-
entry.resolve(
|
|
23
|
-
}
|
|
24
|
-
if (value === "available") {
|
|
25
|
-
this.resolve("available");
|
|
26
|
-
return;
|
|
22
|
+
entry.resolve();
|
|
27
23
|
}
|
|
28
24
|
this.peers.delete(peerId);
|
|
29
25
|
// If none of the peers have the coValue, we resolve to unavailable
|
|
@@ -31,6 +27,13 @@ class CoValueUnknownState {
|
|
|
31
27
|
this.resolve("unavailable");
|
|
32
28
|
}
|
|
33
29
|
}
|
|
30
|
+
resolve(value) {
|
|
31
|
+
this.resolveResult(value);
|
|
32
|
+
for (const entry of this.peers.values()) {
|
|
33
|
+
entry.resolve();
|
|
34
|
+
}
|
|
35
|
+
this.peers.clear();
|
|
36
|
+
}
|
|
34
37
|
// Wait for a specific peer to have a known state
|
|
35
38
|
waitForPeer(peerId) {
|
|
36
39
|
const entry = this.peers.get(peerId);
|
|
@@ -40,35 +43,180 @@ class CoValueUnknownState {
|
|
|
40
43
|
return entry.promise;
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
|
-
class CoValueAvailableState {
|
|
46
|
+
export class CoValueAvailableState {
|
|
44
47
|
constructor(coValue) {
|
|
45
48
|
this.coValue = coValue;
|
|
46
49
|
this.type = "available";
|
|
47
50
|
}
|
|
48
51
|
}
|
|
52
|
+
export class CoValueUnavailableState {
|
|
53
|
+
constructor() {
|
|
54
|
+
this.type = "unavailable";
|
|
55
|
+
}
|
|
56
|
+
}
|
|
49
57
|
export class CoValueState {
|
|
50
|
-
constructor(state) {
|
|
58
|
+
constructor(id, state) {
|
|
59
|
+
this.id = id;
|
|
51
60
|
this.state = state;
|
|
52
61
|
}
|
|
53
|
-
static Unknown(
|
|
54
|
-
return new CoValueState(new CoValueUnknownState(
|
|
62
|
+
static Unknown(id) {
|
|
63
|
+
return new CoValueState(id, new CoValueUnknownState());
|
|
64
|
+
}
|
|
65
|
+
static Loading(id, peersIds) {
|
|
66
|
+
return new CoValueState(id, new CoValueLoadingState(peersIds));
|
|
55
67
|
}
|
|
56
68
|
static Available(coValue) {
|
|
57
|
-
return new CoValueState(new CoValueAvailableState(coValue));
|
|
69
|
+
return new CoValueState(coValue.id, new CoValueAvailableState(coValue));
|
|
58
70
|
}
|
|
59
|
-
|
|
71
|
+
static Unavailable(id) {
|
|
72
|
+
return new CoValueState(id, new CoValueUnavailableState());
|
|
73
|
+
}
|
|
74
|
+
async getCoValue() {
|
|
60
75
|
if (this.state.type === "available") {
|
|
76
|
+
return this.state.coValue;
|
|
77
|
+
}
|
|
78
|
+
if (this.state.type === "unavailable") {
|
|
79
|
+
return "unavailable";
|
|
80
|
+
}
|
|
81
|
+
// If we don't have a resolved state we return a new promise
|
|
82
|
+
// that will be resolved when the state will move to available or unavailable
|
|
83
|
+
if (!this.promise) {
|
|
84
|
+
const { promise, resolve } = createResolvablePromise();
|
|
85
|
+
this.promise = promise;
|
|
86
|
+
this.resolve = resolve;
|
|
87
|
+
}
|
|
88
|
+
return this.promise;
|
|
89
|
+
}
|
|
90
|
+
moveToState(value) {
|
|
91
|
+
this.state = value;
|
|
92
|
+
if (!this.resolve) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// If the state is available we resolve the promise
|
|
96
|
+
// and clear it to handle the possible transition from unavailable to available
|
|
97
|
+
if (value.type === "available") {
|
|
98
|
+
this.resolve(value.coValue);
|
|
99
|
+
this.clearPromise();
|
|
100
|
+
}
|
|
101
|
+
else if (value.type === "unavailable") {
|
|
102
|
+
this.resolve("unavailable");
|
|
103
|
+
this.clearPromise();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
clearPromise() {
|
|
107
|
+
this.promise = undefined;
|
|
108
|
+
this.resolve = undefined;
|
|
109
|
+
}
|
|
110
|
+
async loadFromPeers(peers) {
|
|
111
|
+
const state = this.state;
|
|
112
|
+
if (state.type !== "unknown" && state.type !== "unavailable") {
|
|
61
113
|
return;
|
|
62
114
|
}
|
|
115
|
+
if (peers.length === 0) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const doLoad = async (peersToLoadFrom) => {
|
|
119
|
+
const peersWithoutErrors = getPeersWithoutErrors(peersToLoadFrom, this.id);
|
|
120
|
+
// If we are in the loading state we move to a new loading state
|
|
121
|
+
// to reset all the loading promises
|
|
122
|
+
if (this.state.type === "loading" || this.state.type === "unknown") {
|
|
123
|
+
this.moveToState(new CoValueLoadingState(peersWithoutErrors.map((p) => p.id)));
|
|
124
|
+
}
|
|
125
|
+
// Assign the current state to a variable to not depend on the state changes
|
|
126
|
+
// that may happen while we wait for loadCoValueFromPeers to complete
|
|
127
|
+
const currentState = this.state;
|
|
128
|
+
// If we entered successfully the loading state, we load the coValue from the peers
|
|
129
|
+
//
|
|
130
|
+
// We may not enter the loading state if the coValue has become available in between
|
|
131
|
+
// of the retries
|
|
132
|
+
if (currentState.type === "loading") {
|
|
133
|
+
await loadCoValueFromPeers(this, peersWithoutErrors);
|
|
134
|
+
const result = await currentState.result;
|
|
135
|
+
return result !== "unavailable";
|
|
136
|
+
}
|
|
137
|
+
return currentState.type === "available";
|
|
138
|
+
};
|
|
139
|
+
await doLoad(peers);
|
|
140
|
+
// Retry loading from peers that have the retry flag enabled
|
|
141
|
+
const peersWithRetry = peers.filter((p) => p.shouldRetryUnavailableCoValues());
|
|
142
|
+
if (peersWithRetry.length > 0) {
|
|
143
|
+
// We want to exit early if the coValue becomes available in between the retries
|
|
144
|
+
await Promise.race([
|
|
145
|
+
this.getCoValue(),
|
|
146
|
+
runWithRetry(() => doLoad(peersWithRetry), CO_VALUE_LOADING_MAX_RETRIES),
|
|
147
|
+
]);
|
|
148
|
+
}
|
|
149
|
+
// If after the retries the coValue is still loading, we consider the load failed
|
|
150
|
+
if (this.state.type === "loading") {
|
|
151
|
+
this.moveToState(new CoValueUnavailableState());
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
dispatch(action) {
|
|
155
|
+
const currentState = this.state;
|
|
63
156
|
switch (action.type) {
|
|
64
|
-
case "
|
|
65
|
-
|
|
157
|
+
case "available":
|
|
158
|
+
if (currentState.type === "loading") {
|
|
159
|
+
currentState.resolve(action.coValue);
|
|
160
|
+
}
|
|
161
|
+
// It should be always possible to move to the available state
|
|
162
|
+
this.moveToState(new CoValueAvailableState(action.coValue));
|
|
66
163
|
break;
|
|
67
|
-
case "found":
|
|
68
|
-
|
|
69
|
-
|
|
164
|
+
case "not-found-in-peer":
|
|
165
|
+
if (currentState.type === "loading") {
|
|
166
|
+
currentState.markAsUnavailable(action.peerId);
|
|
167
|
+
}
|
|
70
168
|
break;
|
|
71
169
|
}
|
|
72
170
|
}
|
|
73
171
|
}
|
|
172
|
+
async function loadCoValueFromPeers(coValueEntry, peers) {
|
|
173
|
+
for (const peer of peers) {
|
|
174
|
+
await peer.pushOutgoingMessage({
|
|
175
|
+
action: "load",
|
|
176
|
+
id: coValueEntry.id,
|
|
177
|
+
header: false,
|
|
178
|
+
sessions: {},
|
|
179
|
+
});
|
|
180
|
+
if (coValueEntry.state.type === "loading") {
|
|
181
|
+
await coValueEntry.state.waitForPeer(peer.id);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
async function runWithRetry(fn, maxRetries) {
|
|
186
|
+
let retries = 1;
|
|
187
|
+
while (retries < maxRetries) {
|
|
188
|
+
/**
|
|
189
|
+
* With maxRetries of 5 we should wait:
|
|
190
|
+
* 300ms
|
|
191
|
+
* 900ms
|
|
192
|
+
* 2700ms
|
|
193
|
+
* 8100ms
|
|
194
|
+
*/
|
|
195
|
+
await sleep(3 ** retries * 100);
|
|
196
|
+
const result = await fn();
|
|
197
|
+
if (result === true) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
retries++;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function createResolvablePromise() {
|
|
204
|
+
let resolve;
|
|
205
|
+
const promise = new Promise((res) => {
|
|
206
|
+
resolve = res;
|
|
207
|
+
});
|
|
208
|
+
return { promise, resolve };
|
|
209
|
+
}
|
|
210
|
+
function sleep(ms) {
|
|
211
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
212
|
+
}
|
|
213
|
+
function getPeersWithoutErrors(peers, coValueId) {
|
|
214
|
+
return peers.filter((p) => {
|
|
215
|
+
if (p.erroredCoValues.has(coValueId)) {
|
|
216
|
+
console.error(`Skipping load on errored coValue ${coValueId} from peer ${p.id}`);
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
return true;
|
|
220
|
+
});
|
|
221
|
+
}
|
|
74
222
|
//# sourceMappingURL=coValueState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coValueState.js","sourceRoot":"","sources":["../../src/coValueState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"coValueState.js","sourceRoot":"","sources":["../../src/coValueState.ts"],"names":[],"mappings":"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"}
|
package/dist/native/localNode.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ResultAsync, err, ok, okAsync } from "neverthrow";
|
|
2
|
+
import { CoValuesStore } from "./CoValuesStore.js";
|
|
2
3
|
import { CoValueCore, } from "./coValueCore.js";
|
|
3
|
-
import { CoValueState } from "./coValueState.js";
|
|
4
4
|
import { ControlledAgent, RawControlledAccount, accountHeaderForInitialAgentSecret, } from "./coValues/account.js";
|
|
5
5
|
import { secretSeedFromInviteSecret, } from "./coValues/group.js";
|
|
6
6
|
import { isAgentID } from "./ids.js";
|
|
@@ -21,7 +21,7 @@ export class LocalNode {
|
|
|
21
21
|
/** @category 3. Low-level */
|
|
22
22
|
constructor(account, currentSessionID, crypto) {
|
|
23
23
|
/** @internal */
|
|
24
|
-
this.
|
|
24
|
+
this.coValuesStore = new CoValuesStore();
|
|
25
25
|
/** @category 3. Low-level */
|
|
26
26
|
this.syncManager = new SyncManager(this);
|
|
27
27
|
this.crashed = undefined;
|
|
@@ -54,14 +54,14 @@ export class LocalNode {
|
|
|
54
54
|
}
|
|
55
55
|
const controlledAccount = new RawControlledAccount(accountOnNodeWithAccount.core, accountOnNodeWithAccount.agentSecret);
|
|
56
56
|
nodeWithAccount.account = controlledAccount;
|
|
57
|
-
nodeWithAccount.
|
|
57
|
+
nodeWithAccount.coValuesStore.setAsAvailable(controlledAccount.id, controlledAccount.core);
|
|
58
58
|
controlledAccount.core._cachedContent = undefined;
|
|
59
59
|
if (!controlledAccount.get("profile")) {
|
|
60
60
|
throw new Error("Must set account profile in initial migration");
|
|
61
61
|
}
|
|
62
62
|
// we shouldn't need this, but it fixes account data not syncing for new accounts
|
|
63
63
|
function syncAllCoValuesAfterCreateAccount() {
|
|
64
|
-
for (const coValueEntry of
|
|
64
|
+
for (const coValueEntry of nodeWithAccount.coValuesStore.getValues()) {
|
|
65
65
|
if (coValueEntry.state.type === "available") {
|
|
66
66
|
void nodeWithAccount.syncManager.syncCoValue(coValueEntry.state.coValue);
|
|
67
67
|
}
|
|
@@ -94,7 +94,7 @@ export class LocalNode {
|
|
|
94
94
|
node.syncManager = loadingNode.syncManager;
|
|
95
95
|
node.syncManager.local = node;
|
|
96
96
|
controlledAccount.core.node = node;
|
|
97
|
-
node.
|
|
97
|
+
node.coValuesStore.setAsAvailable(accountID, controlledAccount.core);
|
|
98
98
|
controlledAccount.core._cachedContent = undefined;
|
|
99
99
|
const profileID = account.get("profile");
|
|
100
100
|
if (!profileID) {
|
|
@@ -123,39 +123,25 @@ export class LocalNode {
|
|
|
123
123
|
});
|
|
124
124
|
}
|
|
125
125
|
const coValue = new CoValueCore(header, this);
|
|
126
|
-
this.
|
|
126
|
+
this.coValuesStore.setAsAvailable(coValue.id, coValue);
|
|
127
127
|
void this.syncManager.syncCoValue(coValue);
|
|
128
128
|
return coValue;
|
|
129
129
|
}
|
|
130
130
|
/** @internal */
|
|
131
|
-
async loadCoValueCore(id,
|
|
131
|
+
async loadCoValueCore(id, skipLoadingFromPeer) {
|
|
132
132
|
if (this.crashed) {
|
|
133
133
|
throw new Error("Trying to load CoValue after node has crashed", {
|
|
134
134
|
cause: this.crashed,
|
|
135
135
|
});
|
|
136
136
|
}
|
|
137
|
-
|
|
138
|
-
if (
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
.map((peer) => peer.id));
|
|
142
|
-
if (options.dontWaitFor)
|
|
143
|
-
peersToWaitFor.delete(options.dontWaitFor);
|
|
144
|
-
entry = CoValueState.Unknown(peersToWaitFor);
|
|
145
|
-
this.coValues[id] = entry;
|
|
146
|
-
this.syncManager.loadFromPeers(id, options.dontLoadFrom).catch((e) => {
|
|
137
|
+
const entry = this.coValuesStore.get(id);
|
|
138
|
+
if (entry.state.type === "unknown" || entry.state.type === "unavailable") {
|
|
139
|
+
const peers = this.syncManager.getServerAndStoragePeers(skipLoadingFromPeer);
|
|
140
|
+
await entry.loadFromPeers(peers).catch((e) => {
|
|
147
141
|
console.error("Error loading from peers", id, e);
|
|
148
142
|
});
|
|
149
143
|
}
|
|
150
|
-
|
|
151
|
-
return Promise.resolve(entry.state.coValue);
|
|
152
|
-
}
|
|
153
|
-
await entry.state.ready;
|
|
154
|
-
const updatedEntry = this.coValues[id];
|
|
155
|
-
if (updatedEntry?.state.type === "available") {
|
|
156
|
-
return Promise.resolve(updatedEntry.state.coValue);
|
|
157
|
-
}
|
|
158
|
-
return "unavailable";
|
|
144
|
+
return entry.getCoValue();
|
|
159
145
|
}
|
|
160
146
|
/**
|
|
161
147
|
* Loads a CoValue's content, syncing from peers as necessary and resolving the returned
|
|
@@ -172,10 +158,7 @@ export class LocalNode {
|
|
|
172
158
|
return core.getCurrentContent();
|
|
173
159
|
}
|
|
174
160
|
getLoaded(id) {
|
|
175
|
-
const entry = this.
|
|
176
|
-
if (!entry) {
|
|
177
|
-
return undefined;
|
|
178
|
-
}
|
|
161
|
+
const entry = this.coValuesStore.get(id);
|
|
179
162
|
if (entry.state.type === "available") {
|
|
180
163
|
return entry.state.coValue.getCurrentContent();
|
|
181
164
|
}
|
|
@@ -257,12 +240,9 @@ export class LocalNode {
|
|
|
257
240
|
}
|
|
258
241
|
/** @internal */
|
|
259
242
|
expectCoValueLoaded(id, expectation) {
|
|
260
|
-
const entry = this.
|
|
261
|
-
if (
|
|
262
|
-
throw new Error(`${expectation ? expectation + ": " : ""}
|
|
263
|
-
}
|
|
264
|
-
if (entry.state.type === "unknown") {
|
|
265
|
-
throw new Error(`${expectation ? expectation + ": " : ""}CoValue ${id} not yet loaded`);
|
|
243
|
+
const entry = this.coValuesStore.get(id);
|
|
244
|
+
if (entry.state.type !== "available") {
|
|
245
|
+
throw new Error(`${expectation ? expectation + ": " : ""}CoValue ${id} not yet loaded. Current state: ${entry.state.type}`);
|
|
266
246
|
}
|
|
267
247
|
return entry.state.coValue;
|
|
268
248
|
}
|
|
@@ -390,25 +370,24 @@ export class LocalNode {
|
|
|
390
370
|
/** @internal */
|
|
391
371
|
testWithDifferentAccount(account, currentSessionID) {
|
|
392
372
|
const newNode = new LocalNode(account, currentSessionID, this.crypto);
|
|
393
|
-
const coValuesToCopy =
|
|
373
|
+
const coValuesToCopy = Array.from(this.coValuesStore.getEntries());
|
|
394
374
|
while (coValuesToCopy.length > 0) {
|
|
395
375
|
const [coValueID, entry] = coValuesToCopy[coValuesToCopy.length - 1];
|
|
396
|
-
if (entry.state.type
|
|
376
|
+
if (entry.state.type !== "available") {
|
|
397
377
|
coValuesToCopy.pop();
|
|
398
378
|
continue;
|
|
399
379
|
}
|
|
400
380
|
else {
|
|
401
381
|
const allDepsCopied = entry.state.coValue
|
|
402
382
|
.getDependedOnCoValues()
|
|
403
|
-
.every((dep) => newNode.
|
|
383
|
+
.every((dep) => newNode.coValuesStore.get(dep).state.type === "available");
|
|
404
384
|
if (!allDepsCopied) {
|
|
405
385
|
// move to end of queue
|
|
406
386
|
coValuesToCopy.unshift(coValuesToCopy.pop());
|
|
407
387
|
continue;
|
|
408
388
|
}
|
|
409
389
|
const newCoValue = new CoValueCore(entry.state.coValue.header, newNode, new Map(entry.state.coValue.sessionLogs));
|
|
410
|
-
newNode.
|
|
411
|
-
CoValueState.Available(newCoValue);
|
|
390
|
+
newNode.coValuesStore.setAsAvailable(coValueID, newCoValue);
|
|
412
391
|
coValuesToCopy.pop();
|
|
413
392
|
}
|
|
414
393
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localNode.js","sourceRoot":"","sources":["../../src/localNode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"localNode.js","sourceRoot":"","sources":["../../src/localNode.ts"],"names":[],"mappings":"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"}
|