cojson 0.18.29 → 0.18.31
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +17 -0
- package/dist/PeerState.d.ts +23 -14
- package/dist/PeerState.d.ts.map +1 -1
- package/dist/PeerState.js +74 -23
- package/dist/PeerState.js.map +1 -1
- package/dist/SyncStateManager.d.ts +3 -3
- package/dist/SyncStateManager.d.ts.map +1 -1
- package/dist/SyncStateManager.js +18 -44
- package/dist/SyncStateManager.js.map +1 -1
- package/dist/coValueContentMessage.d.ts.map +1 -1
- package/dist/coValueContentMessage.js +2 -1
- package/dist/coValueContentMessage.js.map +1 -1
- package/dist/coValueCore/PeerKnownState.d.ts +21 -0
- package/dist/coValueCore/PeerKnownState.d.ts.map +1 -0
- package/dist/coValueCore/PeerKnownState.js +52 -0
- package/dist/coValueCore/PeerKnownState.js.map +1 -0
- package/dist/coValueCore/coValueCore.d.ts +39 -8
- package/dist/coValueCore/coValueCore.d.ts.map +1 -1
- package/dist/coValueCore/coValueCore.js +139 -40
- package/dist/coValueCore/coValueCore.js.map +1 -1
- package/dist/coValueCore/decryptTransactionChangesAndMeta.d.ts.map +1 -1
- package/dist/coValueCore/decryptTransactionChangesAndMeta.js +0 -5
- package/dist/coValueCore/decryptTransactionChangesAndMeta.js.map +1 -1
- package/dist/coValueCore/verifiedState.d.ts +0 -14
- package/dist/coValueCore/verifiedState.d.ts.map +1 -1
- package/dist/coValueCore/verifiedState.js +2 -32
- package/dist/coValueCore/verifiedState.js.map +1 -1
- package/dist/coValues/coList.d.ts +3 -4
- package/dist/coValues/coList.d.ts.map +1 -1
- package/dist/coValues/coList.js +4 -4
- package/dist/coValues/coList.js.map +1 -1
- package/dist/coValues/coMap.d.ts +3 -4
- package/dist/coValues/coMap.d.ts.map +1 -1
- package/dist/coValues/coMap.js +5 -4
- package/dist/coValues/coMap.js.map +1 -1
- package/dist/coValues/coStream.d.ts +3 -3
- package/dist/coValues/coStream.d.ts.map +1 -1
- package/dist/coValues/coStream.js +3 -4
- package/dist/coValues/coStream.js.map +1 -1
- package/dist/coValues/group.d.ts +3 -3
- package/dist/coValues/group.d.ts.map +1 -1
- package/dist/coValues/group.js +74 -52
- package/dist/coValues/group.js.map +1 -1
- package/dist/exports.d.ts +2 -2
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +2 -2
- package/dist/exports.js.map +1 -1
- package/dist/localNode.d.ts.map +1 -1
- package/dist/localNode.js +7 -5
- package/dist/localNode.js.map +1 -1
- package/dist/permissions.d.ts +5 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +173 -109
- package/dist/permissions.js.map +1 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +33 -44
- package/dist/sync.js.map +1 -1
- package/dist/tests/PeerKnownState.test.d.ts +2 -0
- package/dist/tests/PeerKnownState.test.d.ts.map +1 -0
- package/dist/tests/PeerKnownState.test.js +342 -0
- package/dist/tests/PeerKnownState.test.js.map +1 -0
- package/dist/tests/PeerState.test.js +17 -16
- package/dist/tests/PeerState.test.js.map +1 -1
- package/dist/tests/StorageApiAsync.test.js +12 -12
- package/dist/tests/StorageApiAsync.test.js.map +1 -1
- package/dist/tests/StorageApiSync.test.js +11 -11
- package/dist/tests/StorageApiSync.test.js.map +1 -1
- package/dist/tests/SyncStateManager.test.js +16 -21
- package/dist/tests/SyncStateManager.test.js.map +1 -1
- package/dist/tests/coValueCore.dependencies.test.js +59 -0
- package/dist/tests/coValueCore.dependencies.test.js.map +1 -1
- package/dist/tests/coValueCore.test.js +41 -21
- package/dist/tests/coValueCore.test.js.map +1 -1
- package/dist/tests/group.addMember.test.js +266 -219
- package/dist/tests/group.addMember.test.js.map +1 -1
- package/dist/tests/group.inheritance.test.js +12 -0
- package/dist/tests/group.inheritance.test.js.map +1 -1
- package/dist/tests/group.invite.test.js +77 -0
- package/dist/tests/group.invite.test.js.map +1 -1
- package/dist/tests/group.removeMember.test.js +65 -8
- package/dist/tests/group.removeMember.test.js.map +1 -1
- package/dist/tests/group.roleOf.test.js +14 -4
- package/dist/tests/group.roleOf.test.js.map +1 -1
- package/dist/tests/permissions.test.js +51 -202
- package/dist/tests/permissions.test.js.map +1 -1
- package/dist/tests/sync.content.test.js +2 -2
- package/dist/tests/sync.content.test.js.map +1 -1
- package/dist/tests/sync.invite.test.js +6 -6
- package/dist/tests/sync.load.test.js +22 -22
- package/dist/tests/sync.mesh.test.js +9 -9
- package/dist/tests/sync.storage.test.js +13 -7
- package/dist/tests/sync.storage.test.js.map +1 -1
- package/dist/tests/sync.storageAsync.test.js +3 -3
- package/dist/tests/sync.test.js +13 -33
- package/dist/tests/sync.test.js.map +1 -1
- package/dist/tests/sync.upload.test.js +2 -2
- package/package.json +3 -3
- package/src/PeerState.ts +86 -34
- package/src/SyncStateManager.ts +25 -60
- package/src/coValueContentMessage.ts +3 -1
- package/src/coValueCore/PeerKnownState.ts +74 -0
- package/src/coValueCore/coValueCore.ts +180 -49
- package/src/coValueCore/decryptTransactionChangesAndMeta.ts +0 -6
- package/src/coValueCore/verifiedState.ts +2 -37
- package/src/coValues/coList.ts +7 -7
- package/src/coValues/coMap.ts +9 -7
- package/src/coValues/coStream.ts +6 -5
- package/src/coValues/group.ts +99 -60
- package/src/exports.ts +2 -1
- package/src/localNode.ts +7 -5
- package/src/permissions.ts +204 -123
- package/src/sync.ts +37 -53
- package/src/tests/PeerKnownState.test.ts +426 -0
- package/src/tests/PeerState.test.ts +24 -24
- package/src/tests/StorageApiAsync.test.ts +12 -12
- package/src/tests/StorageApiSync.test.ts +11 -11
- package/src/tests/SyncStateManager.test.ts +23 -53
- package/src/tests/coValueCore.dependencies.test.ts +87 -0
- package/src/tests/coValueCore.test.ts +64 -22
- package/src/tests/group.addMember.test.ts +384 -345
- package/src/tests/group.inheritance.test.ts +33 -0
- package/src/tests/group.invite.test.ts +117 -0
- package/src/tests/group.removeMember.test.ts +96 -10
- package/src/tests/group.roleOf.test.ts +16 -4
- package/src/tests/permissions.test.ts +56 -295
- package/src/tests/sync.content.test.ts +2 -2
- package/src/tests/sync.invite.test.ts +6 -6
- package/src/tests/sync.load.test.ts +22 -22
- package/src/tests/sync.mesh.test.ts +9 -9
- package/src/tests/sync.storage.test.ts +13 -8
- package/src/tests/sync.storageAsync.test.ts +3 -3
- package/src/tests/sync.test.ts +21 -50
- package/src/tests/sync.upload.test.ts +2 -2
- package/dist/PeerKnownStates.d.ts +0 -19
- package/dist/PeerKnownStates.d.ts.map +0 -1
- package/dist/PeerKnownStates.js +0 -64
- package/dist/PeerKnownStates.js.map +0 -1
- package/dist/tests/PeerKnownStates.test.d.ts +0 -2
- package/dist/tests/PeerKnownStates.test.d.ts.map +0 -1
- package/dist/tests/PeerKnownStates.test.js +0 -77
- package/dist/tests/PeerKnownStates.test.js.map +0 -1
- package/src/PeerKnownStates.ts +0 -93
- package/src/tests/PeerKnownStates.test.ts +0 -99
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# cojson
|
|
2
2
|
|
|
3
|
+
## 0.18.31
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 7c2b7b8: Bugfix: diable the progressive child rotation
|
|
8
|
+
- cojson-core-wasm@0.18.31
|
|
9
|
+
- cojson-core-napi@0.18.31
|
|
10
|
+
|
|
11
|
+
## 0.18.30
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- ad83da2: Optimize the parsing of large CoValues by switching to stages containers
|
|
16
|
+
- d08b7e2: feat: introduced new "manager" role who can invite and remove members, and being removed by admins.
|
|
17
|
+
- cojson-core-wasm@0.18.30
|
|
18
|
+
- cojson-core-napi@0.18.30
|
|
19
|
+
|
|
3
20
|
## 0.18.29
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
package/dist/PeerState.d.ts
CHANGED
|
@@ -1,36 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { RawCoID
|
|
1
|
+
import { PeerKnownState } from "./coValueCore/PeerKnownState.js";
|
|
2
|
+
import { RawCoID } from "./ids.js";
|
|
3
3
|
import { CoValueKnownState } from "./knownState.js";
|
|
4
4
|
import { Peer, SyncMessage } from "./sync.js";
|
|
5
5
|
export declare class PeerState {
|
|
6
6
|
private peer;
|
|
7
|
-
constructor(peer: Peer, knownStates: ReadonlyPeerKnownStates | undefined);
|
|
8
7
|
/**
|
|
9
8
|
* Here we to collect all the known states that a given peer has told us about.
|
|
10
9
|
*
|
|
11
10
|
* This can be used to safely track the sync state of a coValue in a given peer.
|
|
12
11
|
*/
|
|
13
|
-
readonly _knownStates
|
|
14
|
-
|
|
12
|
+
private readonly _knownStates;
|
|
13
|
+
constructor(peer: Peer, knownStates: Map<RawCoID, PeerKnownState> | undefined);
|
|
14
|
+
getKnownState(id: RawCoID): CoValueKnownState | undefined;
|
|
15
|
+
getOptimisticKnownState(id: RawCoID): CoValueKnownState | undefined;
|
|
16
|
+
isCoValueSubscribedToPeer(id: RawCoID): boolean;
|
|
15
17
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
+
* Closes the current peer state and creates a new one from a given peer,
|
|
19
|
+
* keeping the same known states.
|
|
18
20
|
*
|
|
19
|
-
*
|
|
20
|
-
* waiting for any acknowledgement from the peer.
|
|
21
|
+
* This is used to create a new peer state when a peer reconnects.
|
|
21
22
|
*/
|
|
22
|
-
|
|
23
|
-
get optimisticKnownStates(): ReadonlyPeerKnownStates;
|
|
23
|
+
newPeerStateFrom(peer: Peer): PeerState;
|
|
24
24
|
readonly toldKnownState: Set<RawCoID>;
|
|
25
25
|
readonly loadRequestSent: Set<RawCoID>;
|
|
26
26
|
trackLoadRequestSent(id: RawCoID): void;
|
|
27
27
|
trackToldKnownState(id: RawCoID): void;
|
|
28
|
+
private getOrCreateKnownState;
|
|
28
29
|
updateHeader(id: RawCoID, header: boolean): void;
|
|
29
30
|
combineWith(id: RawCoID, value: CoValueKnownState): void;
|
|
30
31
|
combineOptimisticWith(id: RawCoID, value: CoValueKnownState): void;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
setKnownState(id: RawCoID, payload: CoValueKnownState | "empty"): void;
|
|
33
|
+
/**
|
|
34
|
+
* Emit a change event for a given coValue.
|
|
35
|
+
*
|
|
36
|
+
* This is used to notify subscribers that the known state of a coValue has changed,
|
|
37
|
+
* but the known state of the peer has not.
|
|
38
|
+
*/
|
|
39
|
+
emitCoValueChange(id: RawCoID): void;
|
|
40
|
+
listeners: Set<(id: RawCoID, value: PeerKnownState) => void>;
|
|
41
|
+
private triggerUpdate;
|
|
42
|
+
subscribeToKnownStatesUpdates(listener: (id: RawCoID, value: PeerKnownState) => void): () => void;
|
|
34
43
|
get id(): string;
|
|
35
44
|
get role(): "client" | "server";
|
|
36
45
|
get priority(): number | undefined;
|
package/dist/PeerState.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PeerState.d.ts","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PeerState.d.ts","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAa,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,SAAS;IASlB,OAAO,CAAC,IAAI;IARd;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;gBAGlD,IAAI,EAAE,IAAI,EAClB,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,SAAS;IAKvD,aAAa,CAAC,EAAE,EAAE,OAAO;IAIzB,uBAAuB,CAAC,EAAE,EAAE,OAAO;IAInC,yBAAyB,CAAC,EAAE,EAAE,OAAO;IAIrC;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,IAAI;IAe3B,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IAClD,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IAEnD,oBAAoB,CAAC,EAAE,EAAE,OAAO;IAKhC,mBAAmB,CAAC,EAAE,EAAE,OAAO;IAI/B,OAAO,CAAC,qBAAqB;IAW7B,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAMzC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB;IAMjD,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB;IAM3D,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAM/D;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,EAAE,OAAO;IAS7B,SAAS,WAAgB,OAAO,SAAS,cAAc,KAAK,IAAI,EAAI;IAEpE,OAAO,CAAC,aAAa;IAMrB,6BAA6B,CAC3B,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI;IASxD,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,wBAEP;IAED,IAAI,QAAQ,uBAEX;IAEM,MAAM,UAAS;IAEtB,IAAI,QAAQ,4CAEX;IAED,IAAI,UAAU,wBAEb;IAED,mBAAmB,CAAC,GAAG,EAAE,WAAW;IAIpC,cAAc,YAAiB,IAAI,EAAI;IAEvC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI;IAarC,SAAS;IAQT,gBAAgB;CAgBjB"}
|
package/dist/PeerState.js
CHANGED
|
@@ -1,20 +1,41 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PeerKnownState } from "./coValueCore/PeerKnownState.js";
|
|
2
2
|
import { logger } from "./logger.js";
|
|
3
3
|
export class PeerState {
|
|
4
4
|
constructor(peer, knownStates) {
|
|
5
5
|
this.peer = peer;
|
|
6
6
|
this.toldKnownState = new Set();
|
|
7
7
|
this.loadRequestSent = new Set();
|
|
8
|
+
this.listeners = new Set();
|
|
8
9
|
this.closed = false;
|
|
9
10
|
this.closeListeners = new Set();
|
|
10
|
-
this._knownStates = knownStates
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
this._knownStates = knownStates ?? new Map();
|
|
12
|
+
}
|
|
13
|
+
getKnownState(id) {
|
|
14
|
+
return this._knownStates.get(id)?.value();
|
|
15
|
+
}
|
|
16
|
+
getOptimisticKnownState(id) {
|
|
17
|
+
return this._knownStates.get(id)?.optimisticValue();
|
|
18
|
+
}
|
|
19
|
+
isCoValueSubscribedToPeer(id) {
|
|
20
|
+
return this._knownStates.has(id);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Closes the current peer state and creates a new one from a given peer,
|
|
24
|
+
* keeping the same known states.
|
|
25
|
+
*
|
|
26
|
+
* This is used to create a new peer state when a peer reconnects.
|
|
27
|
+
*/
|
|
28
|
+
newPeerStateFrom(peer) {
|
|
29
|
+
if (!this.closed) {
|
|
30
|
+
this.gracefulShutdown();
|
|
31
|
+
}
|
|
32
|
+
const knownStates = new Map();
|
|
33
|
+
// On reconnect, we reset all the optimistic known states
|
|
34
|
+
// because we can't know if those syncs were successful or not
|
|
35
|
+
for (const knownState of this._knownStates.values()) {
|
|
36
|
+
knownStates.set(knownState.id, knownState.cloneWithoutOptimistic());
|
|
37
|
+
}
|
|
38
|
+
return new PeerState(peer, knownStates);
|
|
18
39
|
}
|
|
19
40
|
trackLoadRequestSent(id) {
|
|
20
41
|
this.toldKnownState.add(id);
|
|
@@ -23,27 +44,57 @@ export class PeerState {
|
|
|
23
44
|
trackToldKnownState(id) {
|
|
24
45
|
this.toldKnownState.add(id);
|
|
25
46
|
}
|
|
47
|
+
getOrCreateKnownState(id) {
|
|
48
|
+
let knownState = this._knownStates.get(id);
|
|
49
|
+
if (!knownState) {
|
|
50
|
+
knownState = new PeerKnownState(id, this.peer.id);
|
|
51
|
+
this._knownStates.set(id, knownState);
|
|
52
|
+
}
|
|
53
|
+
return knownState;
|
|
54
|
+
}
|
|
26
55
|
updateHeader(id, header) {
|
|
27
|
-
this.
|
|
28
|
-
|
|
56
|
+
const knownState = this.getOrCreateKnownState(id);
|
|
57
|
+
knownState.updateHeader(header);
|
|
58
|
+
this.triggerUpdate(id, knownState);
|
|
29
59
|
}
|
|
30
60
|
combineWith(id, value) {
|
|
31
|
-
this.
|
|
32
|
-
|
|
61
|
+
const knownState = this.getOrCreateKnownState(id);
|
|
62
|
+
knownState.combineWith(value);
|
|
63
|
+
this.triggerUpdate(id, knownState);
|
|
33
64
|
}
|
|
34
65
|
combineOptimisticWith(id, value) {
|
|
35
|
-
this.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
66
|
+
const knownState = this.getOrCreateKnownState(id);
|
|
67
|
+
knownState.combineOptimisticWith(value);
|
|
68
|
+
this.triggerUpdate(id, knownState);
|
|
69
|
+
}
|
|
70
|
+
setKnownState(id, payload) {
|
|
71
|
+
const knownState = this.getOrCreateKnownState(id);
|
|
72
|
+
knownState.set(payload);
|
|
73
|
+
this.triggerUpdate(id, knownState);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Emit a change event for a given coValue.
|
|
77
|
+
*
|
|
78
|
+
* This is used to notify subscribers that the known state of a coValue has changed,
|
|
79
|
+
* but the known state of the peer has not.
|
|
80
|
+
*/
|
|
81
|
+
emitCoValueChange(id) {
|
|
82
|
+
if (this.peer.role === "client" && !this.isCoValueSubscribedToPeer(id)) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const knownState = this.getOrCreateKnownState(id);
|
|
86
|
+
this.triggerUpdate(id, knownState);
|
|
40
87
|
}
|
|
41
|
-
|
|
42
|
-
this.
|
|
43
|
-
|
|
88
|
+
triggerUpdate(id, value) {
|
|
89
|
+
for (const listener of this.listeners) {
|
|
90
|
+
listener(id, value);
|
|
91
|
+
}
|
|
44
92
|
}
|
|
45
|
-
|
|
46
|
-
this.
|
|
93
|
+
subscribeToKnownStatesUpdates(listener) {
|
|
94
|
+
this.listeners.add(listener);
|
|
95
|
+
return () => {
|
|
96
|
+
this.listeners.delete(listener);
|
|
97
|
+
};
|
|
47
98
|
}
|
|
48
99
|
get id() {
|
|
49
100
|
return this.peer.id;
|
package/dist/PeerState.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PeerState.js","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PeerState.js","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RawCoID } from "./ids.js";
|
|
2
2
|
import { CoValueKnownState } from "./knownState.js";
|
|
3
|
+
import { PeerState } from "./PeerState.js";
|
|
3
4
|
import { PeerID, SyncManager } from "./sync.js";
|
|
4
5
|
export type SyncState = {
|
|
5
6
|
uploaded: boolean;
|
|
@@ -13,9 +14,8 @@ export declare class SyncStateManager {
|
|
|
13
14
|
private listenersByPeers;
|
|
14
15
|
subscribeToUpdates(listener: GlobalSyncStateListenerCallback): () => void;
|
|
15
16
|
subscribeToPeerUpdates(peerId: PeerID, listener: PeerSyncStateListenerCallback): () => void;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
private getKnownStateSessions;
|
|
17
|
+
triggerUpdate(peerId: PeerID, id: RawCoID, knownState: CoValueKnownState): void;
|
|
18
|
+
isSynced(peer: PeerState, id: RawCoID): boolean;
|
|
19
19
|
private getIsCoValueFullyUploadedIntoPeer;
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=SyncStateManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncStateManager.d.ts","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"SyncStateManager.d.ts","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAA4B,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,CAC5C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,SAAS,KACZ,IAAI,CAAC;AAEV,MAAM,MAAM,6BAA6B,GAAG,CAC1C,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,SAAS,KACZ,IAAI,CAAC;AAEV,qBAAa,gBAAgB;IACf,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAE5C,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,gBAAgB,CAGpB;IAEJ,kBAAkB,CAAC,QAAQ,EAAE,+BAA+B;IAQ5D,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,6BAA6B;IAezC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB;IAuBxE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO;IAQrC,OAAO,CAAC,iCAAiC;CAmB1C"}
|
package/dist/SyncStateManager.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { areLocalSessionsUploaded } from "./knownState.js";
|
|
2
2
|
export class SyncStateManager {
|
|
3
3
|
constructor(syncManager) {
|
|
4
4
|
this.syncManager = syncManager;
|
|
@@ -21,31 +21,15 @@ export class SyncStateManager {
|
|
|
21
21
|
listeners.delete(listener);
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// only when requested
|
|
27
|
-
const syncState = {};
|
|
28
|
-
const getIsUploaded = () => this.getIsCoValueFullyUploadedIntoPeer(peerId, id);
|
|
29
|
-
Object.defineProperties(syncState, {
|
|
30
|
-
uploaded: {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: getIsUploaded,
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
return syncState;
|
|
36
|
-
}
|
|
37
|
-
triggerUpdate(peerId, id) {
|
|
38
|
-
const peer = this.syncManager.peers[peerId];
|
|
39
|
-
if (!peer) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
const peerListeners = this.listenersByPeers.get(peer.id);
|
|
24
|
+
triggerUpdate(peerId, id, knownState) {
|
|
25
|
+
const peerListeners = this.listenersByPeers.get(peerId);
|
|
43
26
|
// If we don't have any active listeners do nothing
|
|
44
27
|
if (!peerListeners?.size && !this.listeners.size) {
|
|
45
28
|
return;
|
|
46
29
|
}
|
|
47
|
-
const
|
|
48
|
-
|
|
30
|
+
const syncState = {
|
|
31
|
+
uploaded: this.getIsCoValueFullyUploadedIntoPeer(knownState, id),
|
|
32
|
+
};
|
|
49
33
|
for (const listener of this.listeners) {
|
|
50
34
|
listener(peerId, knownState, syncState);
|
|
51
35
|
}
|
|
@@ -55,31 +39,21 @@ export class SyncStateManager {
|
|
|
55
39
|
listener(knownState, syncState);
|
|
56
40
|
}
|
|
57
41
|
}
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
if (!
|
|
61
|
-
return
|
|
62
|
-
|
|
63
|
-
const peerSessions = peer.knownStates.get(id)?.sessions;
|
|
64
|
-
if (!peerSessions) {
|
|
65
|
-
return undefined;
|
|
66
|
-
}
|
|
67
|
-
const entry = this.syncManager.local.getCoValue(id);
|
|
68
|
-
if (!entry.isAvailable()) {
|
|
69
|
-
return undefined;
|
|
70
|
-
}
|
|
71
|
-
const coValueSessions = entry.knownState().sessions;
|
|
72
|
-
return {
|
|
73
|
-
peer: peerSessions,
|
|
74
|
-
coValue: coValueSessions,
|
|
75
|
-
};
|
|
42
|
+
isSynced(peer, id) {
|
|
43
|
+
const peerKnownState = peer.getKnownState(id);
|
|
44
|
+
if (!peerKnownState)
|
|
45
|
+
return false;
|
|
46
|
+
return this.getIsCoValueFullyUploadedIntoPeer(peerKnownState, id);
|
|
76
47
|
}
|
|
77
|
-
getIsCoValueFullyUploadedIntoPeer(
|
|
78
|
-
const
|
|
79
|
-
if (!
|
|
48
|
+
getIsCoValueFullyUploadedIntoPeer(peerKnownState, id) {
|
|
49
|
+
const entry = this.syncManager.local.getCoValue(id);
|
|
50
|
+
if (!entry.hasVerifiedContent()) {
|
|
80
51
|
return false;
|
|
81
52
|
}
|
|
82
|
-
|
|
53
|
+
// Accessing verified knownState to skip the immutability
|
|
54
|
+
// applied on CoValueCore
|
|
55
|
+
const knownState = entry.verified.knownState();
|
|
56
|
+
return areLocalSessionsUploaded(knownState.sessions, peerKnownState.sessions);
|
|
83
57
|
}
|
|
84
58
|
}
|
|
85
59
|
//# sourceMappingURL=SyncStateManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncStateManager.js","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"SyncStateManager.js","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAmB9E,MAAM,OAAO,gBAAgB;IAC3B,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAEpC,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;QACvD,qBAAgB,GAAG,IAAI,GAAG,EAG/B,CAAC;IAN2C,CAAC;IAQhD,kBAAkB,CAAC,QAAyC;QAC1D,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,QAAuC;QAEvC,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,EAAE,UAA6B;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAExD,mDAAmD;QACnD,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG;YAChB,QAAQ,EAAE,IAAI,CAAC,iCAAiC,CAAC,UAAU,EAAE,EAAE,CAAC;SACjE,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,aAAa;YAAE,OAAO;QAE3B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAe,EAAE,EAAW;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QAElC,OAAO,IAAI,CAAC,iCAAiC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,iCAAiC,CACvC,cAAiC,EACjC,EAAW;QAEX,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEpD,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yDAAyD;QACzD,yBAAyB;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE/C,OAAO,wBAAwB,CAC7B,UAAU,CAAC,QAAQ,EACnB,cAAc,CAAC,QAAQ,CACxB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coValueContentMessage.d.ts","sourceRoot":"","sources":["../src/coValueContentMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,OAAO,EACX,MAAM,EAAE,aAAa,EACrB,aAAa,UAAO,GACnB,iBAAiB,CAQnB;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,QAcd;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,UAI1D;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,WASzB;
|
|
1
|
+
{"version":3,"file":"coValueContentMessage.d.ts","sourceRoot":"","sources":["../src/coValueContentMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,OAAO,EACX,MAAM,EAAE,aAAa,EACrB,aAAa,UAAO,GACnB,iBAAiB,CAQnB;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,QAcd;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,UAI1D;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,WASzB;AAID,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAUrE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,+CAU/D;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,iBAAiB,UAS3D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,YAKxD"}
|
|
@@ -35,8 +35,9 @@ export function exceedsRecommendedSize(baseSize, transactionSize) {
|
|
|
35
35
|
}
|
|
36
36
|
return (baseSize + transactionSize > TRANSACTION_CONFIG.MAX_RECOMMENDED_TX_SIZE);
|
|
37
37
|
}
|
|
38
|
+
const cachedTextEncoder = new TextEncoder();
|
|
38
39
|
export function validateTxSizeLimitInBytes(changes) {
|
|
39
|
-
const serializedSize =
|
|
40
|
+
const serializedSize = cachedTextEncoder.encode(JSON.stringify(changes)).length;
|
|
40
41
|
if (serializedSize > TRANSACTION_CONFIG.MAX_TX_SIZE_BYTES) {
|
|
41
42
|
throw new Error(`Transaction is too large to be synced: ${serializedSize} > ${TRANSACTION_CONFIG.MAX_TX_SIZE_BYTES} bytes. ` +
|
|
42
43
|
`Consider breaking your transaction into smaller chunks.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coValueContentMessage.js","sourceRoot":"","sources":["../src/coValueContentMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGtD,MAAM,UAAU,oBAAoB,CAClC,EAAW,EACX,MAAqB,EACrB,aAAa,GAAG,IAAI;IAEpB,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,EAAE;QACF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC1C,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC;QACvC,GAAG,EAAE,EAAE;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,OAA0B,EAC1B,WAAwB,EACxB,SAAoB,EACpB,SAAoB,EACpB,KAAa;IAEb,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,cAAc,CAAC,aAAa,GAAG,SAAS,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;YACvB,KAAK,EAAE,KAAK;YACZ,eAAe,EAAE,CAAC,WAAW,CAAC;YAC9B,aAAa,EAAE,SAAS;SACzB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAwB;IACzD,OAAO,WAAW,CAAC,OAAO,KAAK,SAAS;QACtC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM;QACrC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,eAAwB;IAExB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,QAAQ,GAAG,kBAAkB,CAAC,uBAAuB,CAAC;IAC/D,CAAC;IAED,OAAO,CACL,QAAQ,GAAG,eAAe,GAAG,kBAAkB,CAAC,uBAAuB,CACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAoB;IAC7D,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"coValueContentMessage.js","sourceRoot":"","sources":["../src/coValueContentMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { RawCoID } from "../ids.js";
|
|
2
|
+
import { CoValueKnownState } from "../knownState.js";
|
|
3
|
+
import { PeerID } from "../sync.js";
|
|
4
|
+
export declare class PeerKnownState {
|
|
5
|
+
readonly id: RawCoID;
|
|
6
|
+
readonly peerId: PeerID;
|
|
7
|
+
private knownState;
|
|
8
|
+
private optimisticKnownState?;
|
|
9
|
+
constructor(id: RawCoID, peerId: PeerID);
|
|
10
|
+
cloneWithoutOptimistic(): PeerKnownState;
|
|
11
|
+
updateHeader(header: boolean): void;
|
|
12
|
+
combineWith(value: CoValueKnownState): void;
|
|
13
|
+
combineOptimisticWith(value: CoValueKnownState): void;
|
|
14
|
+
/**
|
|
15
|
+
* Aligns the CoValue known state with the defined payload
|
|
16
|
+
*/
|
|
17
|
+
set(payload: CoValueKnownState | "empty"): void;
|
|
18
|
+
value(): CoValueKnownState;
|
|
19
|
+
optimisticValue(): CoValueKnownState;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=PeerKnownState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PeerKnownState.d.ts","sourceRoot":"","sources":["../../src/coValueCore/PeerKnownState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAGL,iBAAiB,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,qBAAa,cAAc;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,oBAAoB,CAAC,CAAoB;gBAErC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAMvC,sBAAsB;IAMtB,YAAY,CAAC,MAAM,EAAE,OAAO;IAQ5B,WAAW,CAAC,KAAK,EAAE,iBAAiB;IAQpC,qBAAqB,CAAC,KAAK,EAAE,iBAAiB;IAQ9C;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAYxC,KAAK;IAIL,eAAe;CAGhB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { cloneKnownState, combineKnownStates, emptyKnownState, } from "../knownState.js";
|
|
2
|
+
export class PeerKnownState {
|
|
3
|
+
constructor(id, peerId) {
|
|
4
|
+
this.id = id;
|
|
5
|
+
this.peerId = peerId;
|
|
6
|
+
this.knownState = emptyKnownState(id);
|
|
7
|
+
}
|
|
8
|
+
cloneWithoutOptimistic() {
|
|
9
|
+
const clone = new PeerKnownState(this.id, this.peerId);
|
|
10
|
+
clone.set(this.knownState);
|
|
11
|
+
return clone;
|
|
12
|
+
}
|
|
13
|
+
updateHeader(header) {
|
|
14
|
+
this.knownState.header = header;
|
|
15
|
+
if (this.optimisticKnownState) {
|
|
16
|
+
this.optimisticKnownState.header = header;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
combineWith(value) {
|
|
20
|
+
combineKnownStates(this.knownState, value);
|
|
21
|
+
if (this.optimisticKnownState) {
|
|
22
|
+
combineKnownStates(this.optimisticKnownState, value);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
combineOptimisticWith(value) {
|
|
26
|
+
if (!this.optimisticKnownState) {
|
|
27
|
+
this.optimisticKnownState = cloneKnownState(this.knownState);
|
|
28
|
+
}
|
|
29
|
+
combineKnownStates(this.optimisticKnownState, value);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Aligns the CoValue known state with the defined payload
|
|
33
|
+
*/
|
|
34
|
+
set(payload) {
|
|
35
|
+
if (payload === "empty") {
|
|
36
|
+
this.knownState.header = false;
|
|
37
|
+
this.knownState.sessions = {};
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.knownState.header = payload.header;
|
|
41
|
+
this.knownState.sessions = { ...payload.sessions };
|
|
42
|
+
}
|
|
43
|
+
this.optimisticKnownState = undefined;
|
|
44
|
+
}
|
|
45
|
+
value() {
|
|
46
|
+
return this.knownState;
|
|
47
|
+
}
|
|
48
|
+
optimisticValue() {
|
|
49
|
+
return this.optimisticKnownState ?? this.knownState;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=PeerKnownState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PeerKnownState.js","sourceRoot":"","sources":["../../src/coValueCore/PeerKnownState.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,kBAAkB,EAElB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,OAAO,cAAc;IAMzB,YAAY,EAAW,EAAE,MAAc;QACrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,sBAAsB;QACpB,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY,CAAC,MAAe;QAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAEhC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAAwB;QAClC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,KAAwB;QAC5C,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC;QAED,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAoC;QACtC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;IACxC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,UAAU,CAAC;IACtD,CAAC;CACF"}
|
|
@@ -14,6 +14,7 @@ import { type RawAccountID } from "../coValues/account.js";
|
|
|
14
14
|
import { CoValueKnownState, KnownStateSessions } from "../knownState.js";
|
|
15
15
|
export declare function idforHeader(header: CoValueHeader, crypto: CryptoProvider): RawCoID;
|
|
16
16
|
export declare class VerifiedTransaction {
|
|
17
|
+
dispatchTransaction: (transaction: VerifiedTransaction) => void;
|
|
17
18
|
author: RawAccountID | AgentID;
|
|
18
19
|
currentTxID: TransactionID;
|
|
19
20
|
sourceTxID: TransactionID | undefined;
|
|
@@ -22,21 +23,21 @@ export declare class VerifiedTransaction {
|
|
|
22
23
|
sourceTxMadeAt: number | undefined;
|
|
23
24
|
changes: JsonValue[] | undefined;
|
|
24
25
|
meta: JsonObject | undefined;
|
|
25
|
-
isValid: boolean;
|
|
26
26
|
isValidated: boolean;
|
|
27
|
-
|
|
28
|
-
hasMetaBeenParsed: boolean;
|
|
27
|
+
isValid: boolean;
|
|
29
28
|
previous: VerifiedTransaction | undefined;
|
|
30
29
|
constructor(sessionID: SessionID, txIndex: number, tx: Transaction, branchId: RawCoID | undefined, parsingCache: {
|
|
31
30
|
changes: JsonValue[];
|
|
32
31
|
meta: JsonObject | undefined;
|
|
33
|
-
} | undefined, previous: VerifiedTransaction | undefined);
|
|
32
|
+
} | undefined, previous: VerifiedTransaction | undefined, dispatchTransaction: (transaction: VerifiedTransaction) => void);
|
|
34
33
|
get txID(): TransactionID;
|
|
35
34
|
get madeAt(): number;
|
|
36
35
|
isValidTransactionWithChanges(): this is {
|
|
37
36
|
changes: JsonValue[];
|
|
38
37
|
isValid: true;
|
|
39
38
|
};
|
|
39
|
+
markValid(): void;
|
|
40
|
+
markInvalid(): void;
|
|
40
41
|
}
|
|
41
42
|
export type DecryptedTransaction = Omit<VerifiedTransaction, "changes"> & {
|
|
42
43
|
changes: JsonValue[];
|
|
@@ -67,16 +68,23 @@ export declare class CoValueCore {
|
|
|
67
68
|
readonly listeners: Set<(core: CoValueCore, unsub: () => void) => void>;
|
|
68
69
|
private counter;
|
|
69
70
|
constructor(id: RawCoID, node: LocalNode);
|
|
70
|
-
get loadingState(): "
|
|
71
|
+
get loadingState(): "available" | "unknown" | "loading" | "unavailable";
|
|
71
72
|
hasMissingDependencies(): boolean;
|
|
72
73
|
isAvailable(): this is AvailableCoValueCore;
|
|
74
|
+
/**
|
|
75
|
+
* True if the coValue is completely downloaded:
|
|
76
|
+
* - the current coValue is available and not streaming
|
|
77
|
+
* - the group is available and not streaming
|
|
78
|
+
* - TODO: all the parent groups are available and not streaming
|
|
79
|
+
*/
|
|
80
|
+
isCompletelyDownloaded(): this is AvailableCoValueCore;
|
|
73
81
|
hasVerifiedContent(): this is AvailableCoValueCore;
|
|
74
82
|
isErroredInPeer(peerId: PeerID): boolean;
|
|
75
83
|
waitFor(callback: (value: CoValueCore) => boolean): Promise<CoValueCore>;
|
|
76
84
|
waitForAvailableOrUnavailable(): Promise<CoValueCore>;
|
|
77
85
|
waitForAvailable(): Promise<CoValueCore>;
|
|
78
86
|
waitForFullStreaming(): Promise<CoValueCore>;
|
|
79
|
-
getLoadingStateForPeer(peerId: PeerID): "
|
|
87
|
+
getLoadingStateForPeer(peerId: PeerID): "available" | "unknown" | "unavailable" | "pending" | "errored";
|
|
80
88
|
private updateCounter;
|
|
81
89
|
unmount(garbageCollectGroups?: boolean): boolean;
|
|
82
90
|
markNotFoundInPeer(peerId: PeerID): void;
|
|
@@ -99,12 +107,27 @@ export declare class CoValueCore {
|
|
|
99
107
|
groupInvalidationSubscription?: () => void;
|
|
100
108
|
subscribeToGroupInvalidation(): void;
|
|
101
109
|
contentInClonedNodeWithDifferentAccount(account: ControlledAccountOrAgent): Promise<RawCoValue>;
|
|
110
|
+
private _cachedKnownStateWithStreaming?;
|
|
111
|
+
/**
|
|
112
|
+
* Returns the known state considering the known state of the streaming source
|
|
113
|
+
*
|
|
114
|
+
* Used to correctly manage the content & subscriptions during the content streaming process
|
|
115
|
+
*/
|
|
102
116
|
knownStateWithStreaming(): CoValueKnownState;
|
|
117
|
+
private _cachedKnownState?;
|
|
118
|
+
/**
|
|
119
|
+
* Returns the known state of the CoValue
|
|
120
|
+
*
|
|
121
|
+
* The return value identity is going to be stable as long as the CoValue is not modified.
|
|
122
|
+
*
|
|
123
|
+
* On change the knownState is invalidated and a new object is returned.
|
|
124
|
+
*/
|
|
103
125
|
knownState(): CoValueKnownState;
|
|
104
126
|
get meta(): JsonValue;
|
|
105
127
|
nextTransactionID(): TransactionID;
|
|
106
128
|
addDependenciesFromContentMessage(newContent: NewContentMessage): void;
|
|
107
129
|
tryAddTransactions(sessionID: SessionID, newTransactions: Transaction[], newSignature: Signature, skipVerify?: boolean): Result<true, TryAddTransactionsError>;
|
|
130
|
+
private resetKnownStateCache;
|
|
108
131
|
private processNewTransactions;
|
|
109
132
|
private scheduleNotifyUpdate;
|
|
110
133
|
pauseNotifyUpdate(): void;
|
|
@@ -123,6 +146,10 @@ export declare class CoValueCore {
|
|
|
123
146
|
latestTxMadeAt: number;
|
|
124
147
|
resetParsedTransactions(): void;
|
|
125
148
|
verifiedTransactions: VerifiedTransaction[];
|
|
149
|
+
toValidateTransactions: VerifiedTransaction[];
|
|
150
|
+
toDecryptTransactions: VerifiedTransaction[];
|
|
151
|
+
toParseMetaTransactions: VerifiedTransaction[];
|
|
152
|
+
toProcessTransactions: VerifiedTransaction[];
|
|
126
153
|
private verifiedTransactionsKnownSessions;
|
|
127
154
|
private lastVerifiedTransactionBySessionID;
|
|
128
155
|
private parsingCache;
|
|
@@ -136,6 +163,7 @@ export declare class CoValueCore {
|
|
|
136
163
|
* @internal
|
|
137
164
|
* */
|
|
138
165
|
loadVerifiedTransactionsFromLogs(): void;
|
|
166
|
+
dispatchTransaction: (transaction: VerifiedTransaction) => void;
|
|
139
167
|
/**
|
|
140
168
|
* Iterates over the verifiedTransactions and marks them as valid or invalid, based on the group membership of the authors of the transactions .
|
|
141
169
|
*/
|
|
@@ -158,11 +186,14 @@ export declare class CoValueCore {
|
|
|
158
186
|
ignorePrivateTransactions: boolean;
|
|
159
187
|
from?: CoValueKnownState["sessions"];
|
|
160
188
|
to?: CoValueKnownState["sessions"];
|
|
161
|
-
knownTransactions?:
|
|
189
|
+
knownTransactions?: Record<RawCoID, number>;
|
|
162
190
|
skipBranchSource?: boolean;
|
|
163
191
|
}): DecryptedTransaction[];
|
|
164
192
|
dependencies: Set<RawCoID>;
|
|
165
193
|
private addDependency;
|
|
194
|
+
dependant: Set<RawCoID>;
|
|
195
|
+
private addDependant;
|
|
196
|
+
isGroup(): boolean;
|
|
166
197
|
createBranch(name: string, ownerId?: RawCoID): CoValueCore;
|
|
167
198
|
mergeBranch(): CoValueCore;
|
|
168
199
|
getBranch(name: string, ownerId?: RawCoID): CoValueCore;
|
|
@@ -173,7 +204,7 @@ export declare class CoValueCore {
|
|
|
173
204
|
getMergeCommits(): MergeCommit[];
|
|
174
205
|
getValidSortedTransactions(options?: {
|
|
175
206
|
ignorePrivateTransactions: boolean;
|
|
176
|
-
knownTransactions?:
|
|
207
|
+
knownTransactions?: Record<RawCoID, number>;
|
|
177
208
|
}): DecryptedTransaction[];
|
|
178
209
|
compareTransactions(a: Pick<VerifiedTransaction, "madeAt" | "txID">, b: Pick<VerifiedTransaction, "madeAt" | "txID">): number;
|
|
179
210
|
getCurrentReadKey(): {
|