cojson 0.10.0 → 0.10.2
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 +2 -10
- package/CHANGELOG.md +13 -0
- package/dist/CoValuesStore.js.map +1 -0
- package/dist/PeerKnownStates.js.map +1 -0
- package/dist/PeerState.js.map +1 -0
- package/dist/PriorityBasedMessageQueue.js.map +1 -0
- package/dist/SyncStateManager.js.map +1 -0
- package/dist/base64url.js.map +1 -0
- package/dist/base64url.test.js.map +1 -0
- package/dist/coValue.js.map +1 -0
- package/dist/coValueCore.js.map +1 -0
- package/dist/{native/coValueState.js → coValueState.js} +1 -0
- package/dist/coValueState.js.map +1 -0
- package/dist/coValues/account.js.map +1 -0
- package/dist/coValues/coList.js.map +1 -0
- package/dist/coValues/coMap.js.map +1 -0
- package/dist/coValues/coPlainText.js.map +1 -0
- package/dist/coValues/coStream.js.map +1 -0
- package/dist/coValues/group.js.map +1 -0
- package/dist/coreToCoValue.js.map +1 -0
- package/dist/crypto/PureJSCrypto.js.map +1 -0
- package/dist/crypto/WasmCrypto.js.map +1 -0
- package/dist/crypto/crypto.js.map +1 -0
- package/dist/exports.js.map +1 -0
- package/dist/ids.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/jsonStringify.js.map +1 -0
- package/dist/{native/jsonValue.js.map → jsonValue.js.map} +1 -1
- package/dist/localNode.js.map +1 -0
- package/dist/logger.js.map +1 -0
- package/dist/media.js.map +1 -0
- package/dist/permissions.js.map +1 -0
- package/dist/priority.js.map +1 -0
- package/dist/storage/FileSystem.js.map +1 -0
- package/dist/storage/chunksAndKnownStates.js.map +1 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/streamUtils.js.map +1 -0
- package/dist/{web/sync.js → sync.js} +5 -1
- package/dist/sync.js.map +1 -0
- package/dist/typeUtils/accountOrAgentIDfromSessionID.js.map +1 -0
- package/dist/typeUtils/expectGroup.js.map +1 -0
- package/dist/typeUtils/isAccountID.js.map +1 -0
- package/dist/typeUtils/isCoValue.js.map +1 -0
- package/package.json +19 -21
- package/src/coValueState.ts +1 -0
- package/src/exports.ts +1 -0
- package/src/index.ts +1 -0
- package/src/sync.ts +5 -1
- package/tsconfig.json +3 -1
- package/dist/native/CoValuesStore.js.map +0 -1
- package/dist/native/PeerKnownStates.js.map +0 -1
- package/dist/native/PeerState.js.map +0 -1
- package/dist/native/PriorityBasedMessageQueue.js.map +0 -1
- package/dist/native/SyncStateManager.js.map +0 -1
- package/dist/native/base64url.js.map +0 -1
- package/dist/native/base64url.test.js.map +0 -1
- package/dist/native/coValue.js.map +0 -1
- package/dist/native/coValueCore.js.map +0 -1
- package/dist/native/coValueState.js.map +0 -1
- package/dist/native/coValues/account.js.map +0 -1
- package/dist/native/coValues/coList.js.map +0 -1
- package/dist/native/coValues/coMap.js.map +0 -1
- package/dist/native/coValues/coPlainText.js.map +0 -1
- package/dist/native/coValues/coStream.js.map +0 -1
- package/dist/native/coValues/group.js.map +0 -1
- package/dist/native/coreToCoValue.js.map +0 -1
- package/dist/native/crypto/PureJSCrypto.js.map +0 -1
- package/dist/native/crypto/WasmCrypto.js.map +0 -1
- package/dist/native/crypto/crypto.js.map +0 -1
- package/dist/native/crypto/export.js +0 -3
- package/dist/native/crypto/export.js.map +0 -1
- package/dist/native/exports.js.map +0 -1
- package/dist/native/ids.js.map +0 -1
- package/dist/native/index.native.js +0 -3
- package/dist/native/index.native.js.map +0 -1
- package/dist/native/jsonStringify.js.map +0 -1
- package/dist/native/localNode.js.map +0 -1
- package/dist/native/logger.js.map +0 -1
- package/dist/native/media.js.map +0 -1
- package/dist/native/permissions.js.map +0 -1
- package/dist/native/priority.js.map +0 -1
- package/dist/native/storage/FileSystem.js.map +0 -1
- package/dist/native/storage/chunksAndKnownStates.js.map +0 -1
- package/dist/native/storage/index.js.map +0 -1
- package/dist/native/streamUtils.js.map +0 -1
- package/dist/native/sync.js +0 -555
- package/dist/native/sync.js.map +0 -1
- package/dist/native/typeUtils/accountOrAgentIDfromSessionID.js.map +0 -1
- package/dist/native/typeUtils/expectGroup.js.map +0 -1
- package/dist/native/typeUtils/isAccountID.js.map +0 -1
- package/dist/native/typeUtils/isCoValue.js.map +0 -1
- package/dist/web/CoValuesStore.js +0 -31
- package/dist/web/CoValuesStore.js.map +0 -1
- package/dist/web/PeerKnownStates.js +0 -68
- package/dist/web/PeerKnownStates.js.map +0 -1
- package/dist/web/PeerState.js +0 -103
- package/dist/web/PeerState.js.map +0 -1
- package/dist/web/PriorityBasedMessageQueue.js +0 -98
- package/dist/web/PriorityBasedMessageQueue.js.map +0 -1
- package/dist/web/SyncStateManager.js +0 -94
- package/dist/web/SyncStateManager.js.map +0 -1
- package/dist/web/base64url.js +0 -53
- package/dist/web/base64url.js.map +0 -1
- package/dist/web/base64url.test.js +0 -25
- package/dist/web/base64url.test.js.map +0 -1
- package/dist/web/coValue.js +0 -52
- package/dist/web/coValue.js.map +0 -1
- package/dist/web/coValueCore.js +0 -597
- package/dist/web/coValueCore.js.map +0 -1
- package/dist/web/coValueState.js +0 -267
- package/dist/web/coValueState.js.map +0 -1
- package/dist/web/coValues/account.js +0 -100
- package/dist/web/coValues/account.js.map +0 -1
- package/dist/web/coValues/coList.js +0 -381
- package/dist/web/coValues/coList.js.map +0 -1
- package/dist/web/coValues/coMap.js +0 -273
- package/dist/web/coValues/coMap.js.map +0 -1
- package/dist/web/coValues/coPlainText.js +0 -86
- package/dist/web/coValues/coPlainText.js.map +0 -1
- package/dist/web/coValues/coStream.js +0 -224
- package/dist/web/coValues/coStream.js.map +0 -1
- package/dist/web/coValues/group.js +0 -522
- package/dist/web/coValues/group.js.map +0 -1
- package/dist/web/coreToCoValue.js +0 -46
- package/dist/web/coreToCoValue.js.map +0 -1
- package/dist/web/crypto/PureJSCrypto.js +0 -94
- package/dist/web/crypto/PureJSCrypto.js.map +0 -1
- package/dist/web/crypto/WasmCrypto.js +0 -115
- package/dist/web/crypto/WasmCrypto.js.map +0 -1
- package/dist/web/crypto/crypto.js +0 -152
- package/dist/web/crypto/crypto.js.map +0 -1
- package/dist/web/crypto/export.js +0 -3
- package/dist/web/crypto/export.js.map +0 -1
- package/dist/web/exports.js +0 -48
- package/dist/web/exports.js.map +0 -1
- package/dist/web/ids.js +0 -50
- package/dist/web/ids.js.map +0 -1
- package/dist/web/index.web.js +0 -3
- package/dist/web/index.web.js.map +0 -1
- package/dist/web/jsonStringify.js +0 -57
- package/dist/web/jsonStringify.js.map +0 -1
- package/dist/web/jsonValue.js +0 -2
- package/dist/web/jsonValue.js.map +0 -1
- package/dist/web/localNode.js +0 -412
- package/dist/web/localNode.js.map +0 -1
- package/dist/web/logger.js +0 -58
- package/dist/web/logger.js.map +0 -1
- package/dist/web/media.js +0 -2
- package/dist/web/media.js.map +0 -1
- package/dist/web/permissions.js +0 -341
- package/dist/web/permissions.js.map +0 -1
- package/dist/web/priority.js +0 -31
- package/dist/web/priority.js.map +0 -1
- package/dist/web/storage/FileSystem.js +0 -48
- package/dist/web/storage/FileSystem.js.map +0 -1
- package/dist/web/storage/chunksAndKnownStates.js +0 -98
- package/dist/web/storage/chunksAndKnownStates.js.map +0 -1
- package/dist/web/storage/index.js +0 -336
- package/dist/web/storage/index.js.map +0 -1
- package/dist/web/streamUtils.js +0 -41
- package/dist/web/streamUtils.js.map +0 -1
- package/dist/web/sync.js.map +0 -1
- package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js +0 -5
- package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js.map +0 -1
- package/dist/web/typeUtils/expectGroup.js +0 -13
- package/dist/web/typeUtils/expectGroup.js.map +0 -1
- package/dist/web/typeUtils/isAccountID.js +0 -4
- package/dist/web/typeUtils/isAccountID.js.map +0 -1
- package/dist/web/typeUtils/isCoValue.js +0 -11
- package/dist/web/typeUtils/isCoValue.js.map +0 -1
- package/src/crypto/export.ts +0 -2
- package/src/index.native.ts +0 -2
- package/src/index.web.ts +0 -2
- package/tsconfig.native.json +0 -10
- package/tsconfig.web.json +0 -5
- /package/dist/{native/CoValuesStore.js → CoValuesStore.js} +0 -0
- /package/dist/{native/PeerKnownStates.js → PeerKnownStates.js} +0 -0
- /package/dist/{native/PeerState.js → PeerState.js} +0 -0
- /package/dist/{native/PriorityBasedMessageQueue.js → PriorityBasedMessageQueue.js} +0 -0
- /package/dist/{native/SyncStateManager.js → SyncStateManager.js} +0 -0
- /package/dist/{native/base64url.js → base64url.js} +0 -0
- /package/dist/{native/base64url.test.js → base64url.test.js} +0 -0
- /package/dist/{native/coValue.js → coValue.js} +0 -0
- /package/dist/{native/coValueCore.js → coValueCore.js} +0 -0
- /package/dist/{native/coValues → coValues}/account.js +0 -0
- /package/dist/{native/coValues → coValues}/coList.js +0 -0
- /package/dist/{native/coValues → coValues}/coMap.js +0 -0
- /package/dist/{native/coValues → coValues}/coPlainText.js +0 -0
- /package/dist/{native/coValues → coValues}/coStream.js +0 -0
- /package/dist/{native/coValues → coValues}/group.js +0 -0
- /package/dist/{native/coreToCoValue.js → coreToCoValue.js} +0 -0
- /package/dist/{native/crypto → crypto}/PureJSCrypto.js +0 -0
- /package/dist/{native/crypto → crypto}/WasmCrypto.js +0 -0
- /package/dist/{native/crypto → crypto}/crypto.js +0 -0
- /package/dist/{native/exports.js → exports.js} +0 -0
- /package/dist/{native/ids.js → ids.js} +0 -0
- /package/dist/{native/jsonStringify.js → jsonStringify.js} +0 -0
- /package/dist/{native/jsonValue.js → jsonValue.js} +0 -0
- /package/dist/{native/localNode.js → localNode.js} +0 -0
- /package/dist/{native/logger.js → logger.js} +0 -0
- /package/dist/{native/media.js → media.js} +0 -0
- /package/dist/{native/permissions.js → permissions.js} +0 -0
- /package/dist/{native/priority.js → priority.js} +0 -0
- /package/dist/{native/storage → storage}/FileSystem.js +0 -0
- /package/dist/{native/storage → storage}/chunksAndKnownStates.js +0 -0
- /package/dist/{native/storage → storage}/index.js +0 -0
- /package/dist/{native/streamUtils.js → streamUtils.js} +0 -0
- /package/dist/{native/typeUtils → typeUtils}/accountOrAgentIDfromSessionID.js +0 -0
- /package/dist/{native/typeUtils → typeUtils}/expectGroup.js +0 -0
- /package/dist/{native/typeUtils → typeUtils}/isAccountID.js +0 -0
- /package/dist/{native/typeUtils → typeUtils}/isCoValue.js +0 -0
package/dist/web/coValueState.js
DELETED
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import { logger } from "./logger.js";
|
|
2
|
-
export const CO_VALUE_LOADING_CONFIG = {
|
|
3
|
-
MAX_RETRIES: 2,
|
|
4
|
-
TIMEOUT: 30000,
|
|
5
|
-
};
|
|
6
|
-
export class CoValueUnknownState {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.type = "unknown";
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
export class CoValueLoadingState {
|
|
12
|
-
constructor(peersIds) {
|
|
13
|
-
this.type = "loading";
|
|
14
|
-
this.peers = new Map();
|
|
15
|
-
this.peers = new Map();
|
|
16
|
-
for (const peerId of peersIds) {
|
|
17
|
-
this.peers.set(peerId, createResolvablePromise());
|
|
18
|
-
}
|
|
19
|
-
const { resolve, promise } = createResolvablePromise();
|
|
20
|
-
this.result = promise;
|
|
21
|
-
this.resolveResult = resolve;
|
|
22
|
-
}
|
|
23
|
-
markAsUnavailable(peerId) {
|
|
24
|
-
const entry = this.peers.get(peerId);
|
|
25
|
-
if (entry) {
|
|
26
|
-
entry.resolve();
|
|
27
|
-
}
|
|
28
|
-
this.peers.delete(peerId);
|
|
29
|
-
// If none of the peers have the coValue, we resolve to unavailable
|
|
30
|
-
if (this.peers.size === 0) {
|
|
31
|
-
this.resolve("unavailable");
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
resolve(value) {
|
|
35
|
-
this.resolveResult(value);
|
|
36
|
-
for (const entry of this.peers.values()) {
|
|
37
|
-
entry.resolve();
|
|
38
|
-
}
|
|
39
|
-
this.peers.clear();
|
|
40
|
-
}
|
|
41
|
-
// Wait for a specific peer to have a known state
|
|
42
|
-
waitForPeer(peerId) {
|
|
43
|
-
const entry = this.peers.get(peerId);
|
|
44
|
-
if (!entry) {
|
|
45
|
-
return Promise.resolve();
|
|
46
|
-
}
|
|
47
|
-
return entry.promise;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
export class CoValueAvailableState {
|
|
51
|
-
constructor(coValue) {
|
|
52
|
-
this.coValue = coValue;
|
|
53
|
-
this.type = "available";
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export class CoValueUnavailableState {
|
|
57
|
-
constructor() {
|
|
58
|
-
this.type = "unavailable";
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export class CoValueState {
|
|
62
|
-
constructor(id, state) {
|
|
63
|
-
this.id = id;
|
|
64
|
-
this.state = state;
|
|
65
|
-
}
|
|
66
|
-
static Unknown(id) {
|
|
67
|
-
return new CoValueState(id, new CoValueUnknownState());
|
|
68
|
-
}
|
|
69
|
-
static Loading(id, peersIds) {
|
|
70
|
-
return new CoValueState(id, new CoValueLoadingState(peersIds));
|
|
71
|
-
}
|
|
72
|
-
static Available(coValue) {
|
|
73
|
-
return new CoValueState(coValue.id, new CoValueAvailableState(coValue));
|
|
74
|
-
}
|
|
75
|
-
static Unavailable(id) {
|
|
76
|
-
return new CoValueState(id, new CoValueUnavailableState());
|
|
77
|
-
}
|
|
78
|
-
async getCoValue() {
|
|
79
|
-
if (this.state.type === "available") {
|
|
80
|
-
return this.state.coValue;
|
|
81
|
-
}
|
|
82
|
-
if (this.state.type === "unavailable") {
|
|
83
|
-
return "unavailable";
|
|
84
|
-
}
|
|
85
|
-
// If we don't have a resolved state we return a new promise
|
|
86
|
-
// that will be resolved when the state will move to available or unavailable
|
|
87
|
-
if (!this.promise) {
|
|
88
|
-
const { promise, resolve } = createResolvablePromise();
|
|
89
|
-
this.promise = promise;
|
|
90
|
-
this.resolve = resolve;
|
|
91
|
-
}
|
|
92
|
-
return this.promise;
|
|
93
|
-
}
|
|
94
|
-
moveToState(value) {
|
|
95
|
-
this.state = value;
|
|
96
|
-
if (!this.resolve) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
// If the state is available we resolve the promise
|
|
100
|
-
// and clear it to handle the possible transition from unavailable to available
|
|
101
|
-
if (value.type === "available") {
|
|
102
|
-
this.resolve(value.coValue);
|
|
103
|
-
this.clearPromise();
|
|
104
|
-
}
|
|
105
|
-
else if (value.type === "unavailable") {
|
|
106
|
-
this.resolve("unavailable");
|
|
107
|
-
this.clearPromise();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
clearPromise() {
|
|
111
|
-
this.promise = undefined;
|
|
112
|
-
this.resolve = undefined;
|
|
113
|
-
}
|
|
114
|
-
async loadFromPeers(peers) {
|
|
115
|
-
const state = this.state;
|
|
116
|
-
if (state.type !== "unknown" && state.type !== "unavailable") {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
if (peers.length === 0) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
const doLoad = async (peersToLoadFrom) => {
|
|
123
|
-
const peersWithoutErrors = getPeersWithoutErrors(peersToLoadFrom, this.id);
|
|
124
|
-
// If we are in the loading state we move to a new loading state
|
|
125
|
-
// to reset all the loading promises
|
|
126
|
-
if (this.state.type === "loading" || this.state.type === "unknown") {
|
|
127
|
-
this.moveToState(new CoValueLoadingState(peersWithoutErrors.map((p) => p.id)));
|
|
128
|
-
}
|
|
129
|
-
// Assign the current state to a variable to not depend on the state changes
|
|
130
|
-
// that may happen while we wait for loadCoValueFromPeers to complete
|
|
131
|
-
const currentState = this.state;
|
|
132
|
-
// If we entered successfully the loading state, we load the coValue from the peers
|
|
133
|
-
//
|
|
134
|
-
// We may not enter the loading state if the coValue has become available in between
|
|
135
|
-
// of the retries
|
|
136
|
-
if (currentState.type === "loading") {
|
|
137
|
-
await loadCoValueFromPeers(this, peersWithoutErrors);
|
|
138
|
-
const result = await currentState.result;
|
|
139
|
-
return result !== "unavailable";
|
|
140
|
-
}
|
|
141
|
-
return currentState.type === "available";
|
|
142
|
-
};
|
|
143
|
-
await doLoad(peers);
|
|
144
|
-
// Retry loading from peers that have the retry flag enabled
|
|
145
|
-
const peersWithRetry = peers.filter((p) => p.shouldRetryUnavailableCoValues());
|
|
146
|
-
if (peersWithRetry.length > 0) {
|
|
147
|
-
// We want to exit early if the coValue becomes available in between the retries
|
|
148
|
-
await Promise.race([
|
|
149
|
-
this.getCoValue(),
|
|
150
|
-
runWithRetry(() => doLoad(peersWithRetry), CO_VALUE_LOADING_CONFIG.MAX_RETRIES),
|
|
151
|
-
]);
|
|
152
|
-
}
|
|
153
|
-
// If after the retries the coValue is still loading, we consider the load failed
|
|
154
|
-
if (this.state.type === "loading") {
|
|
155
|
-
this.moveToState(new CoValueUnavailableState());
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
dispatch(action) {
|
|
159
|
-
const currentState = this.state;
|
|
160
|
-
switch (action.type) {
|
|
161
|
-
case "available":
|
|
162
|
-
if (currentState.type === "loading") {
|
|
163
|
-
currentState.resolve(action.coValue);
|
|
164
|
-
}
|
|
165
|
-
// It should be always possible to move to the available state
|
|
166
|
-
this.moveToState(new CoValueAvailableState(action.coValue));
|
|
167
|
-
break;
|
|
168
|
-
case "not-found-in-peer":
|
|
169
|
-
if (currentState.type === "loading") {
|
|
170
|
-
currentState.markAsUnavailable(action.peerId);
|
|
171
|
-
}
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
async function loadCoValueFromPeers(coValueEntry, peers) {
|
|
177
|
-
for (const peer of peers) {
|
|
178
|
-
if (peer.closed) {
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
|
-
if (coValueEntry.state.type === "available") {
|
|
182
|
-
/**
|
|
183
|
-
* We don't need to wait for the message to be delivered here.
|
|
184
|
-
*
|
|
185
|
-
* This way when the coValue becomes available because it's cached we don't wait for the server
|
|
186
|
-
* peer to consume the messages queue before moving forward.
|
|
187
|
-
*/
|
|
188
|
-
peer
|
|
189
|
-
.pushOutgoingMessage({
|
|
190
|
-
action: "load",
|
|
191
|
-
...coValueEntry.state.coValue.knownState(),
|
|
192
|
-
})
|
|
193
|
-
.catch((err) => {
|
|
194
|
-
logger.warn(`Failed to push load message to peer ${peer.id}`, err);
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
/**
|
|
199
|
-
* We only wait for the load state to be resolved.
|
|
200
|
-
*/
|
|
201
|
-
peer
|
|
202
|
-
.pushOutgoingMessage({
|
|
203
|
-
action: "load",
|
|
204
|
-
id: coValueEntry.id,
|
|
205
|
-
header: false,
|
|
206
|
-
sessions: {},
|
|
207
|
-
})
|
|
208
|
-
.catch((err) => {
|
|
209
|
-
logger.warn(`Failed to push load message to peer ${peer.id}`, err);
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
if (coValueEntry.state.type === "loading") {
|
|
213
|
-
const timeout = setTimeout(() => {
|
|
214
|
-
if (coValueEntry.state.type === "loading") {
|
|
215
|
-
logger.warn("Failed to load coValue from peer", {
|
|
216
|
-
peerId: peer.id,
|
|
217
|
-
peerRole: peer.role,
|
|
218
|
-
});
|
|
219
|
-
coValueEntry.dispatch({
|
|
220
|
-
type: "not-found-in-peer",
|
|
221
|
-
peerId: peer.id,
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
}, CO_VALUE_LOADING_CONFIG.TIMEOUT);
|
|
225
|
-
await coValueEntry.state.waitForPeer(peer.id);
|
|
226
|
-
clearTimeout(timeout);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
async function runWithRetry(fn, maxRetries) {
|
|
231
|
-
let retries = 1;
|
|
232
|
-
while (retries < maxRetries) {
|
|
233
|
-
/**
|
|
234
|
-
* With maxRetries of 5 we should wait:
|
|
235
|
-
* 300ms
|
|
236
|
-
* 900ms
|
|
237
|
-
* 2700ms
|
|
238
|
-
* 8100ms
|
|
239
|
-
*/
|
|
240
|
-
await sleep(3 ** retries * 100);
|
|
241
|
-
const result = await fn();
|
|
242
|
-
if (result === true) {
|
|
243
|
-
return;
|
|
244
|
-
}
|
|
245
|
-
retries++;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
function createResolvablePromise() {
|
|
249
|
-
let resolve;
|
|
250
|
-
const promise = new Promise((res) => {
|
|
251
|
-
resolve = res;
|
|
252
|
-
});
|
|
253
|
-
return { promise, resolve };
|
|
254
|
-
}
|
|
255
|
-
function sleep(ms) {
|
|
256
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
257
|
-
}
|
|
258
|
-
function getPeersWithoutErrors(peers, coValueId) {
|
|
259
|
-
return peers.filter((p) => {
|
|
260
|
-
if (p.erroredCoValues.has(coValueId)) {
|
|
261
|
-
logger.warn(`Skipping load on errored coValue ${coValueId} from peer ${p.id}`);
|
|
262
|
-
return false;
|
|
263
|
-
}
|
|
264
|
-
return true;
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
//# sourceMappingURL=coValueState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coValueState.js","sourceRoot":"","sources":["../../src/coValueState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { ok } from "neverthrow";
|
|
2
|
-
import { logger } from "../logger.js";
|
|
3
|
-
import { RawCoMap } from "./coMap.js";
|
|
4
|
-
import { RawGroup } from "./group.js";
|
|
5
|
-
export function accountHeaderForInitialAgentSecret(agentSecret, crypto) {
|
|
6
|
-
const agent = crypto.getAgentID(agentSecret);
|
|
7
|
-
return {
|
|
8
|
-
type: "comap",
|
|
9
|
-
ruleset: { type: "group", initialAdmin: agent },
|
|
10
|
-
meta: {
|
|
11
|
-
type: "account",
|
|
12
|
-
},
|
|
13
|
-
createdAt: null,
|
|
14
|
-
uniqueness: null,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
export class RawAccount extends RawGroup {
|
|
18
|
-
currentAgentID() {
|
|
19
|
-
if (this._cachedCurrentAgentID) {
|
|
20
|
-
return ok(this._cachedCurrentAgentID);
|
|
21
|
-
}
|
|
22
|
-
const agents = this.keys()
|
|
23
|
-
.filter((k) => k.startsWith("sealer_"))
|
|
24
|
-
.sort((a, b) => (this.lastEditAt(a)?.at.getTime() || 0) -
|
|
25
|
-
(this.lastEditAt(b)?.at.getTime() || 0));
|
|
26
|
-
if (agents.length !== 1) {
|
|
27
|
-
logger.warn("Account has " + agents.length + " agents", { id: this.id });
|
|
28
|
-
}
|
|
29
|
-
this._cachedCurrentAgentID = agents[0];
|
|
30
|
-
return ok(agents[0]);
|
|
31
|
-
}
|
|
32
|
-
createInvite(_) {
|
|
33
|
-
throw new Error("Cannot create invite from an account");
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/** @hidden */
|
|
37
|
-
export class RawControlledAccount extends RawAccount {
|
|
38
|
-
constructor(core, agentSecret) {
|
|
39
|
-
super(core);
|
|
40
|
-
this.agentSecret = agentSecret;
|
|
41
|
-
this.crypto = core.node.crypto;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Creates a new group (with the current account as the group's first admin).
|
|
45
|
-
* @category 1. High-level
|
|
46
|
-
*/
|
|
47
|
-
createGroup(uniqueness = this.core.crypto.createdNowUnique()) {
|
|
48
|
-
return this.core.node.createGroup(uniqueness);
|
|
49
|
-
}
|
|
50
|
-
async acceptInvite(groupOrOwnedValueID, inviteSecret) {
|
|
51
|
-
return this.core.node.acceptInvite(groupOrOwnedValueID, inviteSecret);
|
|
52
|
-
}
|
|
53
|
-
currentAgentID() {
|
|
54
|
-
if (this._cachedCurrentAgentID) {
|
|
55
|
-
return ok(this._cachedCurrentAgentID);
|
|
56
|
-
}
|
|
57
|
-
const agentID = this.crypto.getAgentID(this.agentSecret);
|
|
58
|
-
this._cachedCurrentAgentID = agentID;
|
|
59
|
-
return ok(agentID);
|
|
60
|
-
}
|
|
61
|
-
currentSignerID() {
|
|
62
|
-
return this.currentAgentID().map((id) => this.crypto.getAgentSignerID(id));
|
|
63
|
-
}
|
|
64
|
-
currentSignerSecret() {
|
|
65
|
-
return this.crypto.getAgentSignerSecret(this.agentSecret);
|
|
66
|
-
}
|
|
67
|
-
currentSealerID() {
|
|
68
|
-
return this.currentAgentID().map((id) => this.crypto.getAgentSealerID(id));
|
|
69
|
-
}
|
|
70
|
-
currentSealerSecret() {
|
|
71
|
-
return this.crypto.getAgentSealerSecret(this.agentSecret);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
export class ControlledAgent {
|
|
75
|
-
constructor(agentSecret, crypto) {
|
|
76
|
-
this.agentSecret = agentSecret;
|
|
77
|
-
this.crypto = crypto;
|
|
78
|
-
}
|
|
79
|
-
get id() {
|
|
80
|
-
return this.crypto.getAgentID(this.agentSecret);
|
|
81
|
-
}
|
|
82
|
-
currentAgentID() {
|
|
83
|
-
return ok(this.crypto.getAgentID(this.agentSecret));
|
|
84
|
-
}
|
|
85
|
-
currentSignerID() {
|
|
86
|
-
return this.currentAgentID().map((id) => this.crypto.getAgentSignerID(id));
|
|
87
|
-
}
|
|
88
|
-
currentSignerSecret() {
|
|
89
|
-
return this.crypto.getAgentSignerSecret(this.agentSecret);
|
|
90
|
-
}
|
|
91
|
-
currentSealerID() {
|
|
92
|
-
return this.currentAgentID().map((id) => this.crypto.getAgentSealerID(id));
|
|
93
|
-
}
|
|
94
|
-
currentSealerSecret() {
|
|
95
|
-
return this.crypto.getAgentSealerSecret(this.agentSecret);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
export class RawProfile extends RawCoMap {
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=account.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/coValues/account.ts"],"names":[],"mappings":"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"}
|