cojson 0.15.8 → 0.15.10
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 +12 -0
- package/dist/IncomingMessagesQueue.d.ts +27 -0
- package/dist/IncomingMessagesQueue.d.ts.map +1 -0
- package/dist/IncomingMessagesQueue.js +114 -0
- package/dist/IncomingMessagesQueue.js.map +1 -0
- package/dist/PeerState.d.ts +2 -10
- package/dist/PeerState.d.ts.map +1 -1
- package/dist/PeerState.js +9 -90
- package/dist/PeerState.js.map +1 -1
- package/dist/PriorityBasedMessageQueue.d.ts +2 -1
- package/dist/PriorityBasedMessageQueue.d.ts.map +1 -1
- package/dist/PriorityBasedMessageQueue.js +9 -6
- package/dist/PriorityBasedMessageQueue.js.map +1 -1
- package/dist/SyncStateManager.d.ts +1 -0
- package/dist/SyncStateManager.d.ts.map +1 -1
- package/dist/SyncStateManager.js +1 -1
- package/dist/SyncStateManager.js.map +1 -1
- package/dist/coValue.d.ts +1 -1
- package/dist/coValueCore/coValueCore.d.ts +9 -17
- package/dist/coValueCore/coValueCore.d.ts.map +1 -1
- package/dist/coValueCore/coValueCore.js +75 -50
- package/dist/coValueCore/coValueCore.js.map +1 -1
- package/dist/coValueCore/verifiedState.d.ts +10 -3
- package/dist/coValueCore/verifiedState.d.ts.map +1 -1
- package/dist/coValueCore/verifiedState.js +73 -14
- package/dist/coValueCore/verifiedState.js.map +1 -1
- package/dist/coValues/coMap.d.ts +3 -3
- package/dist/coValues/coStream.d.ts +2 -2
- package/dist/coValues/group.d.ts +1 -1
- package/dist/coValues/group.d.ts.map +1 -1
- package/dist/coValues/group.js +2 -4
- package/dist/coValues/group.js.map +1 -1
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +23 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto/WasmCrypto.d.ts.map +1 -1
- package/dist/crypto/WasmCrypto.js +2 -1
- package/dist/crypto/WasmCrypto.js.map +1 -1
- package/dist/exports.d.ts +18 -7
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +11 -8
- package/dist/exports.js.map +1 -1
- package/dist/localNode.d.ts +8 -2
- package/dist/localNode.d.ts.map +1 -1
- package/dist/localNode.js +19 -12
- package/dist/localNode.js.map +1 -1
- package/dist/storage/StoreQueue.d.ts +15 -0
- package/dist/storage/StoreQueue.d.ts.map +1 -0
- package/dist/storage/StoreQueue.js +35 -0
- package/dist/storage/StoreQueue.js.map +1 -0
- package/dist/storage/index.d.ts +6 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/knownState.d.ts +18 -0
- package/dist/storage/knownState.d.ts.map +1 -0
- package/dist/storage/knownState.js +63 -0
- package/dist/storage/knownState.js.map +1 -0
- package/dist/storage/sqlite/client.d.ts +37 -0
- package/dist/storage/sqlite/client.d.ts.map +1 -0
- package/dist/storage/sqlite/client.js +89 -0
- package/dist/storage/sqlite/client.js.map +1 -0
- package/dist/storage/sqlite/index.d.ts +5 -0
- package/dist/storage/sqlite/index.d.ts.map +1 -0
- package/dist/storage/sqlite/index.js +13 -0
- package/dist/storage/sqlite/index.js.map +1 -0
- package/dist/storage/sqlite/sqliteMigrations.d.ts +3 -0
- package/dist/storage/sqlite/sqliteMigrations.d.ts.map +1 -0
- package/dist/storage/sqlite/sqliteMigrations.js +44 -0
- package/dist/storage/sqlite/sqliteMigrations.js.map +1 -0
- package/dist/storage/sqlite/types.d.ts +8 -0
- package/dist/storage/sqlite/types.d.ts.map +1 -0
- package/dist/storage/sqlite/types.js +2 -0
- package/dist/storage/sqlite/types.js.map +1 -0
- package/dist/storage/sqliteAsync/client.d.ts +37 -0
- package/dist/storage/sqliteAsync/client.d.ts.map +1 -0
- package/dist/storage/sqliteAsync/client.js +88 -0
- package/dist/storage/sqliteAsync/client.js.map +1 -0
- package/dist/storage/sqliteAsync/index.d.ts +6 -0
- package/dist/storage/sqliteAsync/index.d.ts.map +1 -0
- package/dist/storage/sqliteAsync/index.js +15 -0
- package/dist/storage/sqliteAsync/index.js.map +1 -0
- package/dist/storage/sqliteAsync/types.d.ts +9 -0
- package/dist/storage/sqliteAsync/types.d.ts.map +1 -0
- package/dist/storage/sqliteAsync/types.js +2 -0
- package/dist/storage/sqliteAsync/types.js.map +1 -0
- package/dist/storage/storageAsync.d.ts +22 -0
- package/dist/storage/storageAsync.d.ts.map +1 -0
- package/dist/storage/storageAsync.js +214 -0
- package/dist/storage/storageAsync.js.map +1 -0
- package/dist/storage/storageSync.d.ts +21 -0
- package/dist/storage/storageSync.d.ts.map +1 -0
- package/dist/storage/storageSync.js +206 -0
- package/dist/storage/storageSync.js.map +1 -0
- package/dist/storage/syncUtils.d.ts +13 -0
- package/dist/storage/syncUtils.d.ts.map +1 -0
- package/dist/storage/syncUtils.js +25 -0
- package/dist/storage/syncUtils.js.map +1 -0
- package/dist/storage/types.d.ts +82 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/streamUtils.d.ts +13 -9
- package/dist/streamUtils.d.ts.map +1 -1
- package/dist/streamUtils.js +46 -13
- package/dist/streamUtils.js.map +1 -1
- package/dist/sync.d.ts +22 -14
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +143 -125
- package/dist/sync.js.map +1 -1
- package/dist/tests/IncomingMessagesQueue.test.d.ts +2 -0
- package/dist/tests/IncomingMessagesQueue.test.d.ts.map +1 -0
- package/dist/tests/IncomingMessagesQueue.test.js +437 -0
- package/dist/tests/IncomingMessagesQueue.test.js.map +1 -0
- package/dist/tests/PeerState.test.js +6 -94
- package/dist/tests/PeerState.test.js.map +1 -1
- package/dist/tests/PriorityBasedMessageQueue.test.js +14 -14
- package/dist/tests/PriorityBasedMessageQueue.test.js.map +1 -1
- package/dist/tests/StoreQueue.test.d.ts +2 -0
- package/dist/tests/StoreQueue.test.d.ts.map +1 -0
- package/dist/tests/StoreQueue.test.js +208 -0
- package/dist/tests/StoreQueue.test.js.map +1 -0
- package/dist/tests/SyncStateManager.test.js +3 -1
- package/dist/tests/SyncStateManager.test.js.map +1 -1
- package/dist/tests/account.test.js +9 -9
- package/dist/tests/account.test.js.map +1 -1
- package/dist/tests/coStream.test.js +1 -1
- package/dist/tests/coStream.test.js.map +1 -1
- package/dist/tests/coValueCore.test.js +208 -1
- package/dist/tests/coValueCore.test.js.map +1 -1
- package/dist/tests/coValueCoreLoadingState.test.js +2 -2
- package/dist/tests/coValueCoreLoadingState.test.js.map +1 -1
- package/dist/tests/group.addMember.test.js.map +1 -1
- package/dist/tests/group.removeMember.test.js +1 -1
- package/dist/tests/group.removeMember.test.js.map +1 -1
- package/dist/tests/messagesTestUtils.js +1 -1
- package/dist/tests/messagesTestUtils.js.map +1 -1
- package/dist/tests/sync.auth.test.js +23 -15
- package/dist/tests/sync.auth.test.js.map +1 -1
- package/dist/tests/sync.invite.test.js +10 -16
- package/dist/tests/sync.invite.test.js.map +1 -1
- package/dist/tests/sync.load.test.js +52 -50
- package/dist/tests/sync.load.test.js.map +1 -1
- package/dist/tests/sync.mesh.test.js +173 -56
- package/dist/tests/sync.mesh.test.js.map +1 -1
- package/dist/tests/sync.peerReconciliation.test.js +42 -32
- package/dist/tests/sync.peerReconciliation.test.js.map +1 -1
- package/dist/tests/sync.storage.test.js +162 -62
- package/dist/tests/sync.storage.test.js.map +1 -1
- package/dist/tests/sync.storageAsync.test.d.ts +2 -0
- package/dist/tests/sync.storageAsync.test.d.ts.map +1 -0
- package/dist/tests/sync.storageAsync.test.js +361 -0
- package/dist/tests/sync.storageAsync.test.js.map +1 -0
- package/dist/tests/sync.test.js +16 -21
- package/dist/tests/sync.test.js.map +1 -1
- package/dist/tests/sync.upload.test.js +28 -25
- package/dist/tests/sync.upload.test.js.map +1 -1
- package/dist/tests/testStorage.d.ts +12 -0
- package/dist/tests/testStorage.d.ts.map +1 -0
- package/dist/tests/testStorage.js +151 -0
- package/dist/tests/testStorage.js.map +1 -0
- package/dist/tests/testUtils.d.ts +20 -15
- package/dist/tests/testUtils.d.ts.map +1 -1
- package/dist/tests/testUtils.js +79 -45
- package/dist/tests/testUtils.js.map +1 -1
- package/package.json +2 -2
- package/src/IncomingMessagesQueue.ts +142 -0
- package/src/PeerState.ts +11 -110
- package/src/PriorityBasedMessageQueue.ts +13 -5
- package/src/SyncStateManager.ts +1 -1
- package/src/coValueCore/coValueCore.ts +100 -66
- package/src/coValueCore/verifiedState.ts +91 -21
- package/src/coValues/group.ts +2 -4
- package/src/config.ts +26 -0
- package/src/crypto/WasmCrypto.ts +3 -1
- package/src/exports.ts +20 -27
- package/src/localNode.ts +27 -12
- package/src/storage/StoreQueue.ts +56 -0
- package/src/storage/index.ts +5 -0
- package/src/storage/knownState.ts +88 -0
- package/src/storage/sqlite/client.ts +180 -0
- package/src/storage/sqlite/index.ts +19 -0
- package/src/storage/sqlite/sqliteMigrations.ts +44 -0
- package/src/storage/sqlite/types.ts +7 -0
- package/src/storage/sqliteAsync/client.ts +179 -0
- package/src/storage/sqliteAsync/index.ts +25 -0
- package/src/storage/sqliteAsync/types.ts +8 -0
- package/src/storage/storageAsync.ts +367 -0
- package/src/storage/storageSync.ts +343 -0
- package/src/storage/syncUtils.ts +50 -0
- package/src/storage/types.ts +162 -0
- package/src/streamUtils.ts +61 -19
- package/src/sync.ts +191 -160
- package/src/tests/IncomingMessagesQueue.test.ts +626 -0
- package/src/tests/PeerState.test.ts +6 -118
- package/src/tests/PriorityBasedMessageQueue.test.ts +18 -14
- package/src/tests/StoreQueue.test.ts +283 -0
- package/src/tests/SyncStateManager.test.ts +4 -1
- package/src/tests/account.test.ts +11 -12
- package/src/tests/coStream.test.ts +1 -3
- package/src/tests/coValueCore.test.ts +270 -1
- package/src/tests/coValueCoreLoadingState.test.ts +2 -2
- package/src/tests/group.addMember.test.ts +1 -0
- package/src/tests/group.removeMember.test.ts +2 -8
- package/src/tests/messagesTestUtils.ts +2 -2
- package/src/tests/sync.auth.test.ts +24 -14
- package/src/tests/sync.invite.test.ts +11 -17
- package/src/tests/sync.load.test.ts +53 -49
- package/src/tests/sync.mesh.test.ts +198 -56
- package/src/tests/sync.peerReconciliation.test.ts +44 -34
- package/src/tests/sync.storage.test.ts +231 -64
- package/src/tests/sync.storageAsync.test.ts +486 -0
- package/src/tests/sync.test.ts +17 -23
- package/src/tests/sync.upload.test.ts +29 -24
- package/src/tests/testStorage.ts +216 -0
- package/src/tests/testUtils.ts +89 -54
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# cojson
|
|
2
2
|
|
|
3
|
+
## 0.15.10
|
|
4
|
+
|
|
5
|
+
## 0.15.9
|
|
6
|
+
|
|
7
|
+
### Patch Changes
|
|
8
|
+
|
|
9
|
+
- 27b4837: Wait for the full streaming before return values in load and subscribe
|
|
10
|
+
- 2776263: - Refactored the Peer incoming/outgoing channels to be syncronous
|
|
11
|
+
- Changed the storage communication to work with an explicit API and removed the storage role on peers
|
|
12
|
+
- Added scheduling of the incoming messages using a round-robin over the peers and a timer to do collaborative scheduling with the event loop
|
|
13
|
+
- Added expectContentUntil on the content messages to optimize content syncing with servers during streaming
|
|
14
|
+
|
|
3
15
|
## 0.15.8
|
|
4
16
|
|
|
5
17
|
## 0.15.7
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { PeerState } from "./PeerState.js";
|
|
2
|
+
import { LinkedList } from "./PriorityBasedMessageQueue.js";
|
|
3
|
+
import type { SyncMessage } from "./sync.js";
|
|
4
|
+
/**
|
|
5
|
+
* A queue that schedules messages across different peers using a round-robin approach.
|
|
6
|
+
*
|
|
7
|
+
* This class manages incoming sync messages from multiple peers, ensuring fair processing
|
|
8
|
+
* by cycling through each peer's message queue in a round-robin fashion. It also implements
|
|
9
|
+
* collaborative scheduling on message processing, pausing when the main thread is blocked
|
|
10
|
+
* for more than 50ms.
|
|
11
|
+
*/
|
|
12
|
+
export declare class IncomingMessagesQueue {
|
|
13
|
+
private pullCounter;
|
|
14
|
+
private pushCounter;
|
|
15
|
+
queues: [LinkedList<SyncMessage>, PeerState][];
|
|
16
|
+
peerToQueue: WeakMap<PeerState, LinkedList<SyncMessage>>;
|
|
17
|
+
currentQueue: number;
|
|
18
|
+
constructor();
|
|
19
|
+
push(msg: SyncMessage, peer: PeerState): void;
|
|
20
|
+
pull(): {
|
|
21
|
+
msg: SyncMessage;
|
|
22
|
+
peer: PeerState;
|
|
23
|
+
} | undefined;
|
|
24
|
+
processing: boolean;
|
|
25
|
+
processQueue(callback: (msg: SyncMessage, peer: PeerState) => void): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=IncomingMessagesQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncomingMessagesQueue.d.ts","sourceRoot":"","sources":["../src/IncomingMessagesQueue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;IAE7B,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;IAC/C,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACzD,YAAY,SAAK;;IAwCV,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS;IAiBtC,IAAI;;;;IAgCX,UAAU,UAAS;IAEb,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI;CA6BzE"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { ValueType, metrics } from "@opentelemetry/api";
|
|
2
|
+
import { LinkedList } from "./PriorityBasedMessageQueue.js";
|
|
3
|
+
import { SYNC_SCHEDULER_CONFIG } from "./config.js";
|
|
4
|
+
import { logger } from "./logger.js";
|
|
5
|
+
/**
|
|
6
|
+
* A queue that schedules messages across different peers using a round-robin approach.
|
|
7
|
+
*
|
|
8
|
+
* This class manages incoming sync messages from multiple peers, ensuring fair processing
|
|
9
|
+
* by cycling through each peer's message queue in a round-robin fashion. It also implements
|
|
10
|
+
* collaborative scheduling on message processing, pausing when the main thread is blocked
|
|
11
|
+
* for more than 50ms.
|
|
12
|
+
*/
|
|
13
|
+
export class IncomingMessagesQueue {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.currentQueue = 0;
|
|
16
|
+
this.processing = false;
|
|
17
|
+
this.pullCounter = metrics
|
|
18
|
+
.getMeter("cojson")
|
|
19
|
+
.createCounter(`jazz.messagequeue.incoming.pulled`, {
|
|
20
|
+
description: "Number of messages pulled from the queue",
|
|
21
|
+
valueType: ValueType.INT,
|
|
22
|
+
unit: "1",
|
|
23
|
+
});
|
|
24
|
+
this.pushCounter = metrics
|
|
25
|
+
.getMeter("cojson")
|
|
26
|
+
.createCounter(`jazz.messagequeue.incoming.pushed`, {
|
|
27
|
+
description: "Number of messages pushed to the queue",
|
|
28
|
+
valueType: ValueType.INT,
|
|
29
|
+
unit: "1",
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* This makes sure that those metrics are generated (and emitted) as soon as the queue is created.
|
|
33
|
+
* This is to avoid edge cases where one series reset is delayed, which would cause spikes or dips
|
|
34
|
+
* when queried - and it also more correctly represents the actual state of the queue after a restart.
|
|
35
|
+
*/
|
|
36
|
+
this.pullCounter.add(0, {
|
|
37
|
+
peerRole: "client",
|
|
38
|
+
});
|
|
39
|
+
this.pushCounter.add(0, {
|
|
40
|
+
peerRole: "client",
|
|
41
|
+
});
|
|
42
|
+
this.pullCounter.add(0, {
|
|
43
|
+
peerRole: "server",
|
|
44
|
+
});
|
|
45
|
+
this.pushCounter.add(0, {
|
|
46
|
+
peerRole: "server",
|
|
47
|
+
});
|
|
48
|
+
this.queues = [];
|
|
49
|
+
this.peerToQueue = new WeakMap();
|
|
50
|
+
}
|
|
51
|
+
push(msg, peer) {
|
|
52
|
+
const queue = this.peerToQueue.get(peer);
|
|
53
|
+
if (!queue) {
|
|
54
|
+
const newQueue = new LinkedList();
|
|
55
|
+
this.peerToQueue.set(peer, newQueue);
|
|
56
|
+
this.queues.push([newQueue, peer]);
|
|
57
|
+
newQueue.push(msg);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
queue.push(msg);
|
|
61
|
+
}
|
|
62
|
+
this.pushCounter.add(1, {
|
|
63
|
+
peerRole: peer.role,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
pull() {
|
|
67
|
+
const entry = this.queues[this.currentQueue];
|
|
68
|
+
if (!entry) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
const [queue, peer] = entry;
|
|
72
|
+
const msg = queue.shift();
|
|
73
|
+
if (queue.isEmpty()) {
|
|
74
|
+
this.queues.splice(this.currentQueue, 1);
|
|
75
|
+
this.peerToQueue.delete(peer);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.currentQueue++;
|
|
79
|
+
}
|
|
80
|
+
if (this.currentQueue >= this.queues.length) {
|
|
81
|
+
this.currentQueue = 0;
|
|
82
|
+
}
|
|
83
|
+
if (msg) {
|
|
84
|
+
this.pullCounter.add(1, {
|
|
85
|
+
peerRole: peer.role,
|
|
86
|
+
});
|
|
87
|
+
return { msg, peer };
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
async processQueue(callback) {
|
|
92
|
+
this.processing = true;
|
|
93
|
+
let entry;
|
|
94
|
+
let lastTimer = performance.now();
|
|
95
|
+
while ((entry = this.pull())) {
|
|
96
|
+
const { msg, peer } = entry;
|
|
97
|
+
try {
|
|
98
|
+
callback(msg, peer);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
logger.error("Error processing message", { err });
|
|
102
|
+
}
|
|
103
|
+
const currentTimer = performance.now();
|
|
104
|
+
// We check if we have blocked the main thread for too long
|
|
105
|
+
// and if so, we schedule a timer task to yield to the event loop
|
|
106
|
+
if (currentTimer - lastTimer >
|
|
107
|
+
SYNC_SCHEDULER_CONFIG.INCOMING_MESSAGES_TIME_BUDGET) {
|
|
108
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
this.processing = false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=IncomingMessagesQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncomingMessagesQueue.js","sourceRoot":"","sources":["../src/IncomingMessagesQueue.ts"],"names":[],"mappings":"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"}
|
package/dist/PeerState.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { RawCoID, SessionID } from "./ids.js";
|
|
|
3
3
|
import { CoValueKnownState, Peer, SyncMessage } from "./sync.js";
|
|
4
4
|
export declare class PeerState {
|
|
5
5
|
private peer;
|
|
6
|
-
private queue;
|
|
7
6
|
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.
|
|
@@ -32,21 +31,14 @@ export declare class PeerState {
|
|
|
32
31
|
setKnownState(id: RawCoID, knownState: CoValueKnownState | "empty"): void;
|
|
33
32
|
setOptimisticKnownState(id: RawCoID, knownState: CoValueKnownState | "empty"): void;
|
|
34
33
|
get id(): string;
|
|
35
|
-
get role(): "server" | "client"
|
|
34
|
+
get role(): "server" | "client";
|
|
36
35
|
get priority(): number | undefined;
|
|
37
|
-
get crashOnClose(): boolean;
|
|
38
|
-
shouldRetryUnavailableCoValues(): boolean;
|
|
39
|
-
isServerOrStoragePeer(): boolean;
|
|
40
|
-
private processing;
|
|
41
36
|
closed: boolean;
|
|
42
|
-
|
|
37
|
+
get incoming(): import("./sync.js").IncomingPeerChannel;
|
|
43
38
|
pushOutgoingMessage(msg: SyncMessage): void;
|
|
44
|
-
isProcessing(): boolean;
|
|
45
|
-
get incoming(): import("./sync.js").IncomingSyncStream;
|
|
46
39
|
closeListeners: Set<() => void>;
|
|
47
40
|
addCloseListener(listener: () => void): () => void;
|
|
48
41
|
emitClose(): void;
|
|
49
42
|
gracefulShutdown(): void;
|
|
50
|
-
processIncomingMessages(callback: (msg: SyncMessage) => void): Promise<void>;
|
|
51
43
|
}
|
|
52
44
|
//# sourceMappingURL=PeerState.d.ts.map
|
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,eAAe,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"PeerState.d.ts","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEjE,qBAAa,SAAS;IAElB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,EAClB,WAAW,EAAE,uBAAuB,GAAG,SAAS;IAMlD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IAEvC,IAAI,WAAW,IAAI,uBAAuB,CAEzC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,sBAAsB,EAAE,eAAe,CAAC;IAEjD,IAAI,qBAAqB,IAAI,uBAAuB,CAEnD;IAED,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,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAKzC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB;IAKjD,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB;IAI3D,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAKrE,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO;IAKlE,uBAAuB,CACrB,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,iBAAiB,GAAG,OAAO;IAKzC,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,wBAEP;IAED,IAAI,QAAQ,uBAEX;IAEM,MAAM,UAAS;IAEtB,IAAI,QAAQ,4CAEX;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,24 +1,12 @@
|
|
|
1
1
|
import { PeerKnownStates } from "./PeerKnownStates.js";
|
|
2
|
-
import { PriorityBasedMessageQueue } from "./PriorityBasedMessageQueue.js";
|
|
3
2
|
import { logger } from "./logger.js";
|
|
4
|
-
import { CO_VALUE_PRIORITY } from "./priority.js";
|
|
5
3
|
export class PeerState {
|
|
6
4
|
constructor(peer, knownStates) {
|
|
7
5
|
this.peer = peer;
|
|
8
6
|
this.toldKnownState = new Set();
|
|
9
7
|
this.loadRequestSent = new Set();
|
|
10
|
-
this.processing = false;
|
|
11
8
|
this.closed = false;
|
|
12
9
|
this.closeListeners = new Set();
|
|
13
|
-
/**
|
|
14
|
-
* We set as default priority HIGH to handle all the messages without a
|
|
15
|
-
* priority property as HIGH priority.
|
|
16
|
-
*
|
|
17
|
-
* This way we consider all the non-content messsages as HIGH priority.
|
|
18
|
-
*/
|
|
19
|
-
this.queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.HIGH, {
|
|
20
|
-
peerRole: peer.role,
|
|
21
|
-
});
|
|
22
10
|
this._knownStates = knownStates?.clone() ?? new PeerKnownStates();
|
|
23
11
|
this._optimisticKnownStates = knownStates?.clone() ?? new PeerKnownStates();
|
|
24
12
|
}
|
|
@@ -66,61 +54,12 @@ export class PeerState {
|
|
|
66
54
|
get priority() {
|
|
67
55
|
return this.peer.priority;
|
|
68
56
|
}
|
|
69
|
-
get crashOnClose() {
|
|
70
|
-
return this.peer.crashOnClose;
|
|
71
|
-
}
|
|
72
|
-
shouldRetryUnavailableCoValues() {
|
|
73
|
-
return this.peer.role === "server";
|
|
74
|
-
}
|
|
75
|
-
isServerOrStoragePeer() {
|
|
76
|
-
return this.peer.role === "server" || this.peer.role === "storage";
|
|
77
|
-
}
|
|
78
|
-
async processQueue() {
|
|
79
|
-
if (this.processing) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
this.processing = true;
|
|
83
|
-
let msg;
|
|
84
|
-
while ((msg = this.queue.pull())) {
|
|
85
|
-
if (this.closed) {
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
// Awaiting the push to send one message at a time
|
|
89
|
-
// This way when the peer is "under pressure" we can enqueue all
|
|
90
|
-
// the coming messages and organize them by priority
|
|
91
|
-
try {
|
|
92
|
-
await this.peer.outgoing.push(msg);
|
|
93
|
-
}
|
|
94
|
-
catch (e) {
|
|
95
|
-
logger.error("Error sending message", {
|
|
96
|
-
err: e,
|
|
97
|
-
action: msg.action,
|
|
98
|
-
id: msg.id,
|
|
99
|
-
peerId: this.id,
|
|
100
|
-
peerRole: this.role,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
this.processing = false;
|
|
105
|
-
}
|
|
106
|
-
pushOutgoingMessage(msg) {
|
|
107
|
-
if (this.closed) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
this.queue.push(msg);
|
|
111
|
-
void this.processQueue();
|
|
112
|
-
}
|
|
113
|
-
isProcessing() {
|
|
114
|
-
return this.processing;
|
|
115
|
-
}
|
|
116
57
|
get incoming() {
|
|
117
|
-
if (this.closed) {
|
|
118
|
-
return (async function* () {
|
|
119
|
-
yield "Disconnected";
|
|
120
|
-
})();
|
|
121
|
-
}
|
|
122
58
|
return this.peer.incoming;
|
|
123
59
|
}
|
|
60
|
+
pushOutgoingMessage(msg) {
|
|
61
|
+
this.peer.outgoing.push(msg);
|
|
62
|
+
}
|
|
124
63
|
addCloseListener(listener) {
|
|
125
64
|
if (this.closed) {
|
|
126
65
|
listener();
|
|
@@ -138,38 +77,18 @@ export class PeerState {
|
|
|
138
77
|
this.closeListeners.clear();
|
|
139
78
|
}
|
|
140
79
|
gracefulShutdown() {
|
|
80
|
+
if (this.closed) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
141
83
|
logger.debug("Gracefully closing", {
|
|
142
84
|
peerId: this.id,
|
|
143
85
|
peerRole: this.role,
|
|
144
86
|
});
|
|
145
|
-
this.peer.crashOnClose = false;
|
|
146
|
-
this.peer.outgoing.close();
|
|
147
87
|
this.closed = true;
|
|
88
|
+
this.peer.outgoing.push("Disconnected");
|
|
89
|
+
this.peer.outgoing.close();
|
|
90
|
+
this.peer.incoming.close();
|
|
148
91
|
this.emitClose();
|
|
149
92
|
}
|
|
150
|
-
async processIncomingMessages(callback) {
|
|
151
|
-
if (this.closed) {
|
|
152
|
-
throw new Error("Peer is closed");
|
|
153
|
-
}
|
|
154
|
-
const processIncomingMessages = async () => {
|
|
155
|
-
for await (const msg of this.incoming) {
|
|
156
|
-
if (this.closed) {
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
if (msg === "Disconnected") {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
if (msg === "PingTimeout") {
|
|
163
|
-
logger.error("Ping timeout from peer", {
|
|
164
|
-
peerId: this.id,
|
|
165
|
-
peerRole: this.role,
|
|
166
|
-
});
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
callback(msg);
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
return processIncomingMessages();
|
|
173
|
-
}
|
|
174
93
|
}
|
|
175
94
|
//# sourceMappingURL=PeerState.js.map
|
package/dist/PeerState.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PeerState.js","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA2B,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"PeerState.js","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ export declare class LinkedList<T> {
|
|
|
16
16
|
length: number;
|
|
17
17
|
push(value: T): void;
|
|
18
18
|
shift(): T | undefined;
|
|
19
|
+
isEmpty(): boolean;
|
|
19
20
|
}
|
|
20
21
|
declare class QueueMeter {
|
|
21
22
|
private attrs?;
|
|
@@ -28,7 +29,7 @@ declare class QueueMeter {
|
|
|
28
29
|
export declare class PriorityBasedMessageQueue {
|
|
29
30
|
private defaultPriority;
|
|
30
31
|
private queues;
|
|
31
|
-
constructor(defaultPriority: CoValuePriority,
|
|
32
|
+
constructor(defaultPriority: CoValuePriority, type: "incoming" | "outgoing",
|
|
32
33
|
/**
|
|
33
34
|
* Optional attributes to be added to the generated metrics.
|
|
34
35
|
* By default the metrics will have the priority as an attribute.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PriorityBasedMessageQueue.d.ts","sourceRoot":"","sources":["../src/PriorityBasedMessageQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAa7C,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAU,CAAC,CAAC;IACX,OAAO,CAAC,KAAK,CAAC;gBAAN,KAAK,CAAC,EAAE,UAAU,YAAA;IAEtC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,MAAM,SAAK;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;IAiBb,KAAK;
|
|
1
|
+
{"version":3,"file":"PriorityBasedMessageQueue.d.ts","sourceRoot":"","sources":["../src/PriorityBasedMessageQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAa7C,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAU,CAAC,CAAC;IACX,OAAO,CAAC,KAAK,CAAC;gBAAN,KAAK,CAAC,EAAE,UAAU,YAAA;IAEtC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,MAAM,SAAK;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;IAiBb,KAAK;IAoBL,OAAO;CAGR;AAED,cAAM,UAAU;IAMZ,OAAO,CAAC,KAAK,CAAC;IALhB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;gBAG3B,MAAM,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA;IA0B1C,IAAI;IAIJ,IAAI;CAGZ;AAeD,qBAAa,yBAAyB;IAIlC,OAAO,CAAC,eAAe;IAHzB,OAAO,CAAC,MAAM,CAAa;gBAGjB,eAAe,EAAE,eAAe,EACxC,IAAI,EAAE,UAAU,GAAG,UAAU;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IASzC,OAAO,CAAC,QAAQ;IAIT,IAAI,CAAC,GAAG,EAAE,WAAW;IAMrB,IAAI;CAKZ"}
|
|
@@ -42,6 +42,9 @@ export class LinkedList {
|
|
|
42
42
|
this.meter?.pull();
|
|
43
43
|
return value;
|
|
44
44
|
}
|
|
45
|
+
isEmpty() {
|
|
46
|
+
return this.head === undefined;
|
|
47
|
+
}
|
|
45
48
|
}
|
|
46
49
|
class QueueMeter {
|
|
47
50
|
constructor(prefix, attrs) {
|
|
@@ -75,8 +78,8 @@ class QueueMeter {
|
|
|
75
78
|
this.pushCounter.add(1, this.attrs);
|
|
76
79
|
}
|
|
77
80
|
}
|
|
78
|
-
function meteredList(attrs) {
|
|
79
|
-
return new LinkedList(new QueueMeter("jazz.messagequeue", attrs));
|
|
81
|
+
function meteredList(type, attrs) {
|
|
82
|
+
return new LinkedList(new QueueMeter("jazz.messagequeue." + type, attrs));
|
|
80
83
|
}
|
|
81
84
|
const PRIORITY_TO_QUEUE_INDEX = {
|
|
82
85
|
[CO_VALUE_PRIORITY.HIGH]: 0,
|
|
@@ -84,7 +87,7 @@ const PRIORITY_TO_QUEUE_INDEX = {
|
|
|
84
87
|
[CO_VALUE_PRIORITY.LOW]: 2,
|
|
85
88
|
};
|
|
86
89
|
export class PriorityBasedMessageQueue {
|
|
87
|
-
constructor(defaultPriority,
|
|
90
|
+
constructor(defaultPriority, type,
|
|
88
91
|
/**
|
|
89
92
|
* Optional attributes to be added to the generated metrics.
|
|
90
93
|
* By default the metrics will have the priority as an attribute.
|
|
@@ -92,9 +95,9 @@ export class PriorityBasedMessageQueue {
|
|
|
92
95
|
attrs) {
|
|
93
96
|
this.defaultPriority = defaultPriority;
|
|
94
97
|
this.queues = [
|
|
95
|
-
meteredList({ priority: CO_VALUE_PRIORITY.HIGH, ...attrs }),
|
|
96
|
-
meteredList({ priority: CO_VALUE_PRIORITY.MEDIUM, ...attrs }),
|
|
97
|
-
meteredList({ priority: CO_VALUE_PRIORITY.LOW, ...attrs }),
|
|
98
|
+
meteredList(type, { priority: CO_VALUE_PRIORITY.HIGH, ...attrs }),
|
|
99
|
+
meteredList(type, { priority: CO_VALUE_PRIORITY.MEDIUM, ...attrs }),
|
|
100
|
+
meteredList(type, { priority: CO_VALUE_PRIORITY.LOW, ...attrs }),
|
|
98
101
|
];
|
|
99
102
|
}
|
|
100
103
|
getQueue(priority) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PriorityBasedMessageQueue.js","sourceRoot":"","sources":["../src/PriorityBasedMessageQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAwB,MAAM,eAAe,CAAC;AAmBxE;;;GAGG;AACH,MAAM,OAAO,UAAU;IACrB,YAAoB,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;QAEtC,SAAI,GAAkC,SAAS,CAAC;QAChD,SAAI,GAAkC,SAAS,CAAC;QAChD,WAAM,GAAG,CAAC,CAAC;IAJ8B,CAAC;IAM1C,IAAI,CAAC,KAAQ;QACX,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAExC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QAEtB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,MAAM,UAAU;IAId,YACE,MAAc,EACN,KAAuC;QAAvC,UAAK,GAAL,KAAK,CAAkC;QAE/C,IAAI,CAAC,WAAW,GAAG,OAAO;aACvB,QAAQ,CAAC,QAAQ,CAAC;aAClB,aAAa,CAAC,GAAG,MAAM,SAAS,EAAE;YACjC,WAAW,EAAE,0CAA0C;YACvD,SAAS,EAAE,SAAS,CAAC,GAAG;YACxB,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QACL,IAAI,CAAC,WAAW,GAAG,OAAO;aACvB,QAAQ,CAAC,QAAQ,CAAC;aAClB,aAAa,CAAC,GAAG,MAAM,SAAS,EAAE;YACjC,WAAW,EAAE,wCAAwC;YACrD,SAAS,EAAE,SAAS,CAAC,GAAG;YACxB,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QAEL;;;;WAIG;QACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACF;AAED,SAAS,WAAW,
|
|
1
|
+
{"version":3,"file":"PriorityBasedMessageQueue.js","sourceRoot":"","sources":["../src/PriorityBasedMessageQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,4 +17,5 @@ export declare class SyncStateManager {
|
|
|
17
17
|
private getKnownStateSessions;
|
|
18
18
|
private getIsCoValueFullyUploadedIntoPeer;
|
|
19
19
|
}
|
|
20
|
+
export declare function getIsUploaded(from: Record<string, number>, to: Record<string, number>): boolean;
|
|
20
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,EACL,iBAAiB,EACjB,MAAM,EACN,WAAW,EAEZ,MAAM,WAAW,CAAC;AAEnB,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,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;IAkB/C,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;IA4BzC,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,iCAAiC;CAS1C"}
|
|
1
|
+
{"version":3,"file":"SyncStateManager.d.ts","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EACL,iBAAiB,EACjB,MAAM,EACN,WAAW,EAEZ,MAAM,WAAW,CAAC;AAEnB,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,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;IAkB/C,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;IA4BzC,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,iCAAiC;CAS1C;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAS3B"}
|
package/dist/SyncStateManager.js
CHANGED
|
@@ -82,7 +82,7 @@ export class SyncStateManager {
|
|
|
82
82
|
return getIsUploaded(sessions.coValue, sessions.peer);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
function getIsUploaded(from, to) {
|
|
85
|
+
export function getIsUploaded(from, to) {
|
|
86
86
|
for (const sessionId of Object.keys(from)) {
|
|
87
87
|
if (from[sessionId] !== to[sessionId]) {
|
|
88
88
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncStateManager.js","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SyncStateManager.js","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"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"}
|
package/dist/coValue.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export declare class RawUnknownCoValue implements RawCoValue {
|
|
|
38
38
|
core: AvailableCoValueCore;
|
|
39
39
|
totalValidTransactions: number;
|
|
40
40
|
constructor(core: AvailableCoValueCore);
|
|
41
|
-
get type(): "comap" | "
|
|
41
|
+
get type(): "comap" | "costream" | "colist" | "coplaintext";
|
|
42
42
|
get headerMeta(): JsonObject;
|
|
43
43
|
/** @category 6. Meta */
|
|
44
44
|
get group(): RawGroup;
|
|
@@ -9,14 +9,6 @@ import { JsonValue } from "../jsonValue.js";
|
|
|
9
9
|
import { LocalNode, ResolveAccountAgentError } from "../localNode.js";
|
|
10
10
|
import { CoValueKnownState, PeerID } from "../sync.js";
|
|
11
11
|
import { CoValueHeader, Transaction, VerifiedState } from "./verifiedState.js";
|
|
12
|
-
/**
|
|
13
|
-
In order to not block other concurrently syncing CoValues we introduce a maximum size of transactions,
|
|
14
|
-
since they are the smallest unit of progress that can be synced within a CoValue.
|
|
15
|
-
This is particularly important for storing binary data in CoValues, since they are likely to be at least on the order of megabytes.
|
|
16
|
-
This also means that we want to keep signatures roughly after each MAX_RECOMMENDED_TX size chunk,
|
|
17
|
-
to be able to verify partially loaded CoValues or CoValues that are still being created (like a video live stream).
|
|
18
|
-
**/
|
|
19
|
-
export declare const MAX_RECOMMENDED_TX_SIZE: number;
|
|
20
12
|
export declare function idforHeader(header: CoValueHeader, crypto: CryptoProvider): RawCoID;
|
|
21
13
|
export type DecryptedTransaction = {
|
|
22
14
|
txID: TransactionID;
|
|
@@ -26,11 +18,6 @@ export type DecryptedTransaction = {
|
|
|
26
18
|
export type AvailableCoValueCore = CoValueCore & {
|
|
27
19
|
verified: VerifiedState;
|
|
28
20
|
};
|
|
29
|
-
export declare const CO_VALUE_LOADING_CONFIG: {
|
|
30
|
-
MAX_RETRIES: number;
|
|
31
|
-
TIMEOUT: number;
|
|
32
|
-
RETRY_DELAY: number;
|
|
33
|
-
};
|
|
34
21
|
export declare class CoValueCore {
|
|
35
22
|
readonly node: LocalNode;
|
|
36
23
|
private readonly crypto;
|
|
@@ -57,8 +44,9 @@ export declare class CoValueCore {
|
|
|
57
44
|
private constructor();
|
|
58
45
|
static fromID(id: RawCoID, node: LocalNode): CoValueCore;
|
|
59
46
|
static fromHeader(header: CoValueHeader, node: LocalNode): AvailableCoValueCore;
|
|
60
|
-
get loadingState(): "
|
|
47
|
+
get loadingState(): "available" | "unknown" | "loading" | "unavailable";
|
|
61
48
|
isAvailable(): this is AvailableCoValueCore;
|
|
49
|
+
hasVerifiedContent(): this is AvailableCoValueCore;
|
|
62
50
|
isErroredInPeer(peerId: PeerID): boolean;
|
|
63
51
|
waitForAvailableOrUnavailable(): Promise<CoValueCore>;
|
|
64
52
|
waitForAvailable(): Promise<CoValueCore>;
|
|
@@ -71,13 +59,14 @@ export declare class CoValueCore {
|
|
|
71
59
|
private updateCounter;
|
|
72
60
|
markNotFoundInPeer(peerId: PeerID): void;
|
|
73
61
|
missingDependencies: Set<`co_z${string}`>;
|
|
62
|
+
checkCircularDependencies(dependency: CoValueCore): boolean;
|
|
74
63
|
markMissingDependency(dependency: RawCoID): void;
|
|
75
|
-
provideHeader(header: CoValueHeader, fromPeerId: PeerID): void;
|
|
64
|
+
provideHeader(header: CoValueHeader, fromPeerId: PeerID, streamingKnownState?: CoValueKnownState["sessions"]): void;
|
|
76
65
|
internalMarkMagicallyAvailable(verified: VerifiedState, { forceOverwrite }?: {
|
|
77
66
|
forceOverwrite?: boolean;
|
|
78
67
|
}): void;
|
|
79
68
|
markErrored(peerId: PeerID, error: TryAddTransactionsError): void;
|
|
80
|
-
|
|
69
|
+
markPending(peerId: PeerID): void;
|
|
81
70
|
internalShamefullyCloneVerifiedStateFrom(state: VerifiedState, { forceOverwrite }?: {
|
|
82
71
|
forceOverwrite?: boolean;
|
|
83
72
|
}): void;
|
|
@@ -85,6 +74,7 @@ export declare class CoValueCore {
|
|
|
85
74
|
groupInvalidationSubscription?: () => void;
|
|
86
75
|
subscribeToGroupInvalidation(): void;
|
|
87
76
|
contentInClonedNodeWithDifferentAccount(account: ControlledAccountOrAgent): RawCoValue;
|
|
77
|
+
knownStateWithStreaming(): CoValueKnownState;
|
|
88
78
|
knownState(): CoValueKnownState;
|
|
89
79
|
get meta(): JsonValue;
|
|
90
80
|
nextTransactionID(): TransactionID;
|
|
@@ -122,7 +112,9 @@ export declare class CoValueCore {
|
|
|
122
112
|
waitForSync(options?: {
|
|
123
113
|
timeout?: number;
|
|
124
114
|
}): Promise<unknown[]>;
|
|
125
|
-
|
|
115
|
+
load(peers: PeerState[]): void;
|
|
116
|
+
loadFromStorage(done?: (found: boolean) => void): void;
|
|
117
|
+
loadFromPeers(peers: PeerState[]): void;
|
|
126
118
|
internalLoadFromPeer(peer: PeerState): Promise<void> | undefined;
|
|
127
119
|
}
|
|
128
120
|
export type InvalidHashError = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coValueCore.d.ts","sourceRoot":"","sources":["../../src/coValueCore/coValueCore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAO,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAgB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"coValueCore.d.ts","sourceRoot":"","sources":["../../src/coValueCore/coValueCore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAO,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAgB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EACL,cAAc,EAEd,IAAI,EACJ,KAAK,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,OAAO,EACP,SAAS,EACT,aAAa,EAGd,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAmB,MAAM,YAAY,CAAC;AAKxE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/E,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,cAAc,GACrB,OAAO,CAGT;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG;IAAE,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAC;AAE7E,qBAAa,WAAW;IAEtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAGxC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,SAAS,CAAuB;IACxC;;;;;;;;;;8EAU0E;IAC1E,IAAI,QAAQ,yBAEX;IACD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAOlB;IAGJ,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAEZ;IACd,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE1B;IACP,OAAO,CAAC,kBAAkB,CAAC,CAAe;IAC1C,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO;IA8BP,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,WAAW;IAIxD,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,SAAS,GACd,oBAAoB;IAIvB,IAAI,YAAY,wDAgBf;IAED,WAAW,IAAI,IAAI,IAAI,oBAAoB;IAI3C,kBAAkB,IAAI,IAAI,IAAI,oBAAoB;IAIlD,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,6BAA6B,IAAI,OAAO,CAAC,WAAW,CAAC;IAcrD,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAcxC,eAAe,CAAC,MAAM,EAAE,MAAM;cArHlB,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa;;cAEnD,SAAS;eACR,uBAAuB;;IAsHpC,OAAO,CAAC,aAAa;IAWrB,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAOjC,mBAAmB,uBAAsB;IAGzC,yBAAyB,CAAC,UAAU,EAAE,WAAW;IA2BjD,qBAAqB,CAAC,UAAU,EAAE,OAAO;IAqBzC,aAAa,CACX,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAClB,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC;IAuBrD,8BAA8B,CAC5B,QAAQ,EAAE,aAAa,EACvB,EAAE,cAAsB,EAAE,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO;IAU/D,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB;IAO1D,WAAW,CAAC,MAAM,EAAE,MAAM;IAO1B,wCAAwC,CACtC,KAAK,EAAE,aAAa,EACpB,EAAE,cAAsB,EAAE,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO;IAY/D,oCAAoC;IAKpC,6BAA6B,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3C,4BAA4B;IA6B5B,uCAAuC,CAAC,OAAO,EAAE,wBAAwB;IAMzE,uBAAuB,IAAI,iBAAiB;IAQ5C,UAAU,IAAI,iBAAiB;IAQ/B,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED,iBAAiB,IAAI,aAAa;IAsBlC,kBAAkB,CAChB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,WAAW,EAAE,EAC9B,oBAAoB,EAAE,IAAI,GAAG,SAAS,EACtC,YAAY,EAAE,SAAS,EACvB,UAAU,EAAE,WAAW,GAAG,UAAU,EACpC,UAAU,GAAE,OAAe,EAC3B,qBAAqB,CAAC,EAAE,aAAa,GACpC,MAAM,CAAC,IAAI,EAAE,uBAAuB,CAAC;IA8CxC,eAAe,SAAK;IACpB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAE9C,YAAY,CAAC,UAAU,EAAE,WAAW,GAAG,UAAU;IAwCjD,SAAS,CACP,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,EACxD,eAAe,UAAO,GACrB,MAAM,IAAI;IAcb,eAAe,CACb,OAAO,EAAE,SAAS,EAAE,EACpB,OAAO,EAAE,SAAS,GAAG,UAAU,GAC9B,OAAO;IA0EV,iBAAiB,CAAC,OAAO,CAAC,EAAE;QAC1B,yBAAyB,EAAE,IAAI,CAAC;KACjC,GAAG,UAAU;IAsBd,oBAAoB,CAAC,OAAO,CAAC,EAAE;QAC7B,yBAAyB,EAAE,OAAO,CAAC;QACnC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;KACnD,GAAG,oBAAoB,EAAE;IAkF1B,0BAA0B,CAAC,OAAO,CAAC,EAAE;QACnC,yBAAyB,EAAE,OAAO,CAAC;QACnC,iBAAiB,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;KAClD,GAAG,oBAAoB,EAAE;IAQ1B,mBAAmB,CACjB,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAChD,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,MAAM,CAAC;IAalD,iBAAiB,IAAI;QACnB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;QAC9B,EAAE,EAAE,KAAK,CAAC;KACX;IAiCD,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS;IAgB/C,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS;IA2IvD,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW;YAC5C,KAAK;gBAAU,SAAS;;IAqBvD,QAAQ,IAAI,QAAQ;IAkBpB,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW,GAAG,SAAS;IAMnD,qBAAqB,IAAI,GAAG,CAAC,OAAO,CAAC;IAsBrC,WAAW,CAAC,OAAO,CAAC,EAAE;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;IAID,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;IASvB,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IA+B/C,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;IAyBhC,oBAAoB,CAAC,IAAI,EAAE,SAAS;CA6CrC;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,eAAe,EAAE,IAAI,CAAC;IACtB,oBAAoB,EAAE,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,kBAAkB,CAAC;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,YAAY,EAAE,SAAS,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,+CAA+C,GAAG;IAC5D,IAAI,EAAE,4CAA4C,CAAC;IACnD,EAAE,EAAE,OAAO,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,+CAA+C,GAC/C,wBAAwB,GACxB,gBAAgB,GAChB,qBAAqB,CAAC"}
|