cojson 0.13.16 → 0.13.18

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.
Files changed (168) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +16 -0
  3. package/dist/PeerState.d.ts +3 -0
  4. package/dist/PeerState.d.ts.map +1 -1
  5. package/dist/PeerState.js +9 -0
  6. package/dist/PeerState.js.map +1 -1
  7. package/dist/SyncStateManager.d.ts.map +1 -1
  8. package/dist/SyncStateManager.js +2 -3
  9. package/dist/SyncStateManager.js.map +1 -1
  10. package/dist/coValue.d.ts +6 -4
  11. package/dist/coValue.d.ts.map +1 -1
  12. package/dist/coValue.js +5 -4
  13. package/dist/coValue.js.map +1 -1
  14. package/dist/coValueCore/coValueCore.d.ts +143 -0
  15. package/dist/coValueCore/coValueCore.d.ts.map +1 -0
  16. package/dist/{coValueCore.js → coValueCore/coValueCore.js} +314 -246
  17. package/dist/coValueCore/coValueCore.js.map +1 -0
  18. package/dist/coValueCore/verifiedState.d.ts +65 -0
  19. package/dist/coValueCore/verifiedState.d.ts.map +1 -0
  20. package/dist/coValueCore/verifiedState.js +210 -0
  21. package/dist/coValueCore/verifiedState.js.map +1 -0
  22. package/dist/coValues/account.d.ts +8 -10
  23. package/dist/coValues/account.d.ts.map +1 -1
  24. package/dist/coValues/account.js +12 -13
  25. package/dist/coValues/account.js.map +1 -1
  26. package/dist/coValues/coList.d.ts +10 -6
  27. package/dist/coValues/coList.d.ts.map +1 -1
  28. package/dist/coValues/coList.js +41 -15
  29. package/dist/coValues/coList.js.map +1 -1
  30. package/dist/coValues/coMap.d.ts +4 -3
  31. package/dist/coValues/coMap.d.ts.map +1 -1
  32. package/dist/coValues/coMap.js +5 -3
  33. package/dist/coValues/coMap.js.map +1 -1
  34. package/dist/coValues/coPlainText.d.ts +2 -2
  35. package/dist/coValues/coPlainText.d.ts.map +1 -1
  36. package/dist/coValues/coPlainText.js +5 -5
  37. package/dist/coValues/coPlainText.js.map +1 -1
  38. package/dist/coValues/coStream.d.ts +5 -4
  39. package/dist/coValues/coStream.d.ts.map +1 -1
  40. package/dist/coValues/coStream.js +5 -3
  41. package/dist/coValues/coStream.js.map +1 -1
  42. package/dist/coValues/group.d.ts +7 -2
  43. package/dist/coValues/group.d.ts.map +1 -1
  44. package/dist/coValues/group.js +29 -26
  45. package/dist/coValues/group.js.map +1 -1
  46. package/dist/coreToCoValue.d.ts +4 -3
  47. package/dist/coreToCoValue.d.ts.map +1 -1
  48. package/dist/coreToCoValue.js +10 -14
  49. package/dist/coreToCoValue.js.map +1 -1
  50. package/dist/exports.d.ts +6 -5
  51. package/dist/exports.d.ts.map +1 -1
  52. package/dist/exports.js +3 -4
  53. package/dist/exports.js.map +1 -1
  54. package/dist/localNode.d.ts +30 -24
  55. package/dist/localNode.d.ts.map +1 -1
  56. package/dist/localNode.js +153 -177
  57. package/dist/localNode.js.map +1 -1
  58. package/dist/permissions.d.ts +2 -1
  59. package/dist/permissions.d.ts.map +1 -1
  60. package/dist/permissions.js +15 -11
  61. package/dist/permissions.js.map +1 -1
  62. package/dist/priority.d.ts +1 -1
  63. package/dist/priority.d.ts.map +1 -1
  64. package/dist/sync.d.ts +2 -2
  65. package/dist/sync.d.ts.map +1 -1
  66. package/dist/sync.js +86 -55
  67. package/dist/sync.js.map +1 -1
  68. package/dist/tests/coList.test.js +133 -13
  69. package/dist/tests/coList.test.js.map +1 -1
  70. package/dist/tests/coMap.test.js +43 -14
  71. package/dist/tests/coMap.test.js.map +1 -1
  72. package/dist/tests/coPlainText.test.js +9 -10
  73. package/dist/tests/coPlainText.test.js.map +1 -1
  74. package/dist/tests/coStream.test.js +49 -18
  75. package/dist/tests/coStream.test.js.map +1 -1
  76. package/dist/tests/coValueCore.test.js +22 -28
  77. package/dist/tests/coValueCore.test.js.map +1 -1
  78. package/dist/tests/coValueCoreLoadingState.test.d.ts +2 -0
  79. package/dist/tests/coValueCoreLoadingState.test.d.ts.map +1 -0
  80. package/dist/tests/coValueCoreLoadingState.test.js +227 -0
  81. package/dist/tests/coValueCoreLoadingState.test.js.map +1 -0
  82. package/dist/tests/group.test.js +42 -43
  83. package/dist/tests/group.test.js.map +1 -1
  84. package/dist/tests/messagesTestUtils.d.ts +2 -2
  85. package/dist/tests/messagesTestUtils.d.ts.map +1 -1
  86. package/dist/tests/messagesTestUtils.js +1 -1
  87. package/dist/tests/messagesTestUtils.js.map +1 -1
  88. package/dist/tests/permissions.test.js +224 -292
  89. package/dist/tests/permissions.test.js.map +1 -1
  90. package/dist/tests/priority.test.js +13 -14
  91. package/dist/tests/priority.test.js.map +1 -1
  92. package/dist/tests/sync.auth.test.d.ts +2 -0
  93. package/dist/tests/sync.auth.test.d.ts.map +1 -0
  94. package/dist/tests/sync.auth.test.js +141 -0
  95. package/dist/tests/sync.auth.test.js.map +1 -0
  96. package/dist/tests/sync.load.test.js +60 -2
  97. package/dist/tests/sync.load.test.js.map +1 -1
  98. package/dist/tests/sync.mesh.test.js +70 -10
  99. package/dist/tests/sync.mesh.test.js.map +1 -1
  100. package/dist/tests/sync.peerReconciliation.test.js +19 -19
  101. package/dist/tests/sync.peerReconciliation.test.js.map +1 -1
  102. package/dist/tests/sync.storage.test.js +20 -13
  103. package/dist/tests/sync.storage.test.js.map +1 -1
  104. package/dist/tests/sync.test.js +32 -39
  105. package/dist/tests/sync.test.js.map +1 -1
  106. package/dist/tests/sync.upload.test.js +126 -37
  107. package/dist/tests/sync.upload.test.js.map +1 -1
  108. package/dist/tests/testUtils.d.ts +24 -15
  109. package/dist/tests/testUtils.d.ts.map +1 -1
  110. package/dist/tests/testUtils.js +88 -61
  111. package/dist/tests/testUtils.js.map +1 -1
  112. package/dist/typeUtils/expectGroup.js +1 -1
  113. package/dist/typeUtils/expectGroup.js.map +1 -1
  114. package/package.json +1 -1
  115. package/src/PeerState.ts +11 -0
  116. package/src/SyncStateManager.ts +2 -3
  117. package/src/coValue.ts +14 -8
  118. package/src/{coValueCore.ts → coValueCore/coValueCore.ts} +470 -413
  119. package/src/coValueCore/verifiedState.ts +376 -0
  120. package/src/coValues/account.ts +20 -25
  121. package/src/coValues/coList.ts +63 -29
  122. package/src/coValues/coMap.ts +13 -6
  123. package/src/coValues/coPlainText.ts +10 -8
  124. package/src/coValues/coStream.ts +12 -7
  125. package/src/coValues/group.ts +50 -28
  126. package/src/coreToCoValue.ts +14 -15
  127. package/src/exports.ts +9 -7
  128. package/src/localNode.ts +248 -283
  129. package/src/permissions.ts +18 -12
  130. package/src/priority.ts +1 -1
  131. package/src/sync.ts +96 -63
  132. package/src/tests/coList.test.ts +200 -12
  133. package/src/tests/coMap.test.ts +65 -14
  134. package/src/tests/coPlainText.test.ts +12 -9
  135. package/src/tests/coStream.test.ts +80 -17
  136. package/src/tests/coValueCore.test.ts +30 -27
  137. package/src/tests/coValueCoreLoadingState.test.ts +337 -0
  138. package/src/tests/group.test.ts +44 -68
  139. package/src/tests/messagesTestUtils.ts +3 -8
  140. package/src/tests/permissions.test.ts +283 -449
  141. package/src/tests/priority.test.ts +17 -13
  142. package/src/tests/sync.auth.test.ts +188 -0
  143. package/src/tests/sync.load.test.ts +79 -2
  144. package/src/tests/sync.mesh.test.ts +89 -9
  145. package/src/tests/sync.peerReconciliation.test.ts +25 -25
  146. package/src/tests/sync.storage.test.ts +20 -13
  147. package/src/tests/sync.test.ts +43 -43
  148. package/src/tests/sync.upload.test.ts +157 -37
  149. package/src/tests/testUtils.ts +120 -74
  150. package/src/typeUtils/expectGroup.ts +1 -1
  151. package/dist/CoValuesStore.d.ts +0 -14
  152. package/dist/CoValuesStore.d.ts.map +0 -1
  153. package/dist/CoValuesStore.js +0 -32
  154. package/dist/CoValuesStore.js.map +0 -1
  155. package/dist/coValueCore.d.ts +0 -141
  156. package/dist/coValueCore.d.ts.map +0 -1
  157. package/dist/coValueCore.js.map +0 -1
  158. package/dist/coValueState.d.ts +0 -34
  159. package/dist/coValueState.d.ts.map +0 -1
  160. package/dist/coValueState.js +0 -228
  161. package/dist/coValueState.js.map +0 -1
  162. package/dist/tests/coValueState.test.d.ts +0 -2
  163. package/dist/tests/coValueState.test.d.ts.map +0 -1
  164. package/dist/tests/coValueState.test.js +0 -344
  165. package/dist/tests/coValueState.test.js.map +0 -1
  166. package/src/CoValuesStore.ts +0 -41
  167. package/src/coValueState.ts +0 -300
  168. package/src/tests/coValueState.test.ts +0 -525
@@ -1,228 +0,0 @@
1
- import { ValueType } from "@opentelemetry/api";
2
- import { metrics } from "@opentelemetry/api";
3
- import { emptyKnownState } from "./sync.js";
4
- export const CO_VALUE_LOADING_CONFIG = {
5
- MAX_RETRIES: 2,
6
- TIMEOUT: 30000,
7
- };
8
- export class CoValueState {
9
- constructor(id) {
10
- this.peers = new Map();
11
- this.core = null;
12
- this.listeners = new Set();
13
- this.id = id;
14
- this.counter = metrics
15
- .getMeter("cojson")
16
- .createUpDownCounter("jazz.covalues.loaded", {
17
- description: "The number of covalues in the system",
18
- unit: "covalue",
19
- valueType: ValueType.INT,
20
- });
21
- this.updateCounter(null);
22
- }
23
- get highLevelState() {
24
- if (this.core) {
25
- return "available";
26
- }
27
- else if (this.peers.size === 0) {
28
- return "unknown";
29
- }
30
- for (const peer of this.peers.values()) {
31
- if (peer.type === "pending") {
32
- return "loading";
33
- }
34
- else if (peer.type === "unknown") {
35
- return "unknown";
36
- }
37
- }
38
- return "unavailable";
39
- }
40
- isErroredInPeer(peerId) {
41
- return this.peers.get(peerId)?.type === "errored";
42
- }
43
- isAvailable() {
44
- return !!this.core;
45
- }
46
- addListener(listener) {
47
- this.listeners.add(listener);
48
- listener(this);
49
- }
50
- removeListener(listener) {
51
- this.listeners.delete(listener);
52
- }
53
- notifyListeners() {
54
- for (const listener of this.listeners) {
55
- listener(this);
56
- }
57
- }
58
- async getCoValue() {
59
- if (this.highLevelState === "unavailable") {
60
- return "unavailable";
61
- }
62
- return new Promise((resolve) => {
63
- const listener = (state) => {
64
- if (state.core) {
65
- resolve(state.core);
66
- this.removeListener(listener);
67
- }
68
- };
69
- this.addListener(listener);
70
- });
71
- }
72
- async loadFromPeers(peers) {
73
- if (peers.length === 0) {
74
- return;
75
- }
76
- const loadAttempt = async (peersToLoadFrom) => {
77
- const peersToActuallyLoadFrom = [];
78
- for (const peer of peersToLoadFrom) {
79
- const currentState = this.peers.get(peer.id);
80
- if (currentState?.type === "available") {
81
- continue;
82
- }
83
- if (currentState?.type === "errored") {
84
- continue;
85
- }
86
- if (currentState?.type === "unavailable" ||
87
- currentState?.type === "pending") {
88
- if (peer.shouldRetryUnavailableCoValues()) {
89
- this.markPending(peer.id);
90
- peersToActuallyLoadFrom.push(peer);
91
- }
92
- continue;
93
- }
94
- if (!currentState || currentState?.type === "unknown") {
95
- this.markPending(peer.id);
96
- peersToActuallyLoadFrom.push(peer);
97
- }
98
- }
99
- for (const peer of peersToActuallyLoadFrom) {
100
- if (peer.closed) {
101
- this.markNotFoundInPeer(peer.id);
102
- continue;
103
- }
104
- peer.pushOutgoingMessage({
105
- action: "load",
106
- ...(this.core ? this.core.knownState() : emptyKnownState(this.id)),
107
- });
108
- /**
109
- * Use a very long timeout for storage peers, because under pressure
110
- * they may take a long time to consume the messages queue
111
- *
112
- * TODO: Track errors on storage and do not rely on timeout
113
- */
114
- const timeoutDuration = peer.role === "storage"
115
- ? CO_VALUE_LOADING_CONFIG.TIMEOUT * 10
116
- : CO_VALUE_LOADING_CONFIG.TIMEOUT;
117
- const waitingForPeer = new Promise((resolve) => {
118
- const markNotFound = () => {
119
- if (this.peers.get(peer.id)?.type === "pending") {
120
- this.markNotFoundInPeer(peer.id);
121
- }
122
- };
123
- const timeout = setTimeout(markNotFound, timeoutDuration);
124
- const removeCloseListener = peer.addCloseListener(markNotFound);
125
- const listener = (state) => {
126
- const peerState = state.peers.get(peer.id);
127
- if (state.isAvailable() || // might have become available from another peer e.g. through handleNewContent
128
- peerState?.type === "available" ||
129
- peerState?.type === "errored" ||
130
- peerState?.type === "unavailable") {
131
- state.removeListener(listener);
132
- removeCloseListener();
133
- clearTimeout(timeout);
134
- resolve();
135
- }
136
- };
137
- this.addListener(listener);
138
- });
139
- await waitingForPeer;
140
- }
141
- };
142
- await loadAttempt(peers);
143
- if (this.isAvailable()) {
144
- return;
145
- }
146
- // Retry loading from peers that have the retry flag enabled
147
- const peersWithRetry = peers.filter((p) => p.shouldRetryUnavailableCoValues());
148
- if (peersWithRetry.length > 0) {
149
- const waitingForCoValue = new Promise((resolve) => {
150
- const listener = (state) => {
151
- if (state.isAvailable()) {
152
- resolve();
153
- this.removeListener(listener);
154
- }
155
- };
156
- this.addListener(listener);
157
- });
158
- // We want to exit early if the coValue becomes available in between the retries
159
- await Promise.race([
160
- waitingForCoValue,
161
- runWithRetry(() => loadAttempt(peersWithRetry), CO_VALUE_LOADING_CONFIG.MAX_RETRIES),
162
- ]);
163
- }
164
- }
165
- updateCounter(previousState) {
166
- const newState = this.highLevelState;
167
- if (previousState !== newState) {
168
- if (previousState) {
169
- this.counter.add(-1, { state: previousState });
170
- }
171
- this.counter.add(1, { state: newState });
172
- }
173
- }
174
- markNotFoundInPeer(peerId) {
175
- const previousState = this.highLevelState;
176
- this.peers.set(peerId, { type: "unavailable" });
177
- this.updateCounter(previousState);
178
- this.notifyListeners();
179
- }
180
- // TODO: rename to "provided"
181
- markAvailable(coValue, fromPeerId) {
182
- const previousState = this.highLevelState;
183
- this.core = coValue;
184
- this.peers.set(fromPeerId, { type: "available" });
185
- this.updateCounter(previousState);
186
- this.notifyListeners();
187
- }
188
- internalMarkMagicallyAvailable(coValue) {
189
- const previousState = this.highLevelState;
190
- this.core = coValue;
191
- this.updateCounter(previousState);
192
- this.notifyListeners();
193
- }
194
- markErrored(peerId, error) {
195
- const previousState = this.highLevelState;
196
- this.peers.set(peerId, { type: "errored", error });
197
- this.updateCounter(previousState);
198
- this.notifyListeners();
199
- }
200
- markPending(peerId) {
201
- const previousState = this.highLevelState;
202
- this.peers.set(peerId, { type: "pending" });
203
- this.updateCounter(previousState);
204
- this.notifyListeners();
205
- }
206
- }
207
- async function runWithRetry(fn, maxRetries) {
208
- let retries = 1;
209
- while (retries < maxRetries) {
210
- /**
211
- * With maxRetries of 5 we should wait:
212
- * 300ms
213
- * 900ms
214
- * 2700ms
215
- * 8100ms
216
- */
217
- await sleep(3 ** retries * 100);
218
- const result = await fn();
219
- if (result === true) {
220
- return;
221
- }
222
- retries++;
223
- }
224
- }
225
- function sleep(ms) {
226
- return new Promise((resolve) => setTimeout(resolve, ms));
227
- }
228
- //# 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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=coValueState.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coValueState.test.d.ts","sourceRoot":"","sources":["../../src/tests/coValueState.test.ts"],"names":[],"mappings":""}
@@ -1,344 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, onTestFinished, test, vi, } from "vitest";
2
- import { PeerState } from "../PeerState";
3
- import { CO_VALUE_LOADING_CONFIG, CoValueState } from "../coValueState";
4
- import { createTestMetricReader, tearDownTestMetricReader } from "./testUtils";
5
- const initialMaxRetries = CO_VALUE_LOADING_CONFIG.MAX_RETRIES;
6
- function mockMaxRetries(maxRetries) {
7
- CO_VALUE_LOADING_CONFIG.MAX_RETRIES = maxRetries;
8
- onTestFinished(() => {
9
- CO_VALUE_LOADING_CONFIG.MAX_RETRIES = initialMaxRetries;
10
- });
11
- }
12
- let metricReader;
13
- beforeEach(() => {
14
- metricReader = createTestMetricReader();
15
- mockMaxRetries(5);
16
- });
17
- afterEach(() => {
18
- tearDownTestMetricReader();
19
- });
20
- describe("CoValueState", () => {
21
- const mockCoValueId = "co_test123";
22
- test("should create unknown state", async () => {
23
- const state = new CoValueState(mockCoValueId);
24
- expect(state.id).toBe(mockCoValueId);
25
- expect(state.highLevelState).toBe("unknown");
26
- expect(await metricReader.getMetricValue("jazz.covalues.loaded", {
27
- state: "unknown",
28
- })).toBe(1);
29
- });
30
- test("should create loading state", async () => {
31
- const state = new CoValueState(mockCoValueId);
32
- state.loadFromPeers([
33
- createMockPeerState({ id: "peer1", role: "server" }),
34
- createMockPeerState({ id: "peer2", role: "server" }),
35
- ]);
36
- expect(state.id).toBe(mockCoValueId);
37
- expect(state.highLevelState).toBe("loading");
38
- expect(await metricReader.getMetricValue("jazz.covalues.loaded", {
39
- state: "loading",
40
- })).toBe(1);
41
- });
42
- test("should create available state", async () => {
43
- const mockCoValue = createMockCoValueCore(mockCoValueId);
44
- const state = new CoValueState(mockCoValueId);
45
- state.internalMarkMagicallyAvailable(mockCoValue);
46
- expect(state.id).toBe(mockCoValueId);
47
- expect(state.highLevelState).toBe("available");
48
- expect(state.core).toBe(mockCoValue);
49
- await expect(state.getCoValue()).resolves.toEqual(mockCoValue);
50
- expect(await metricReader.getMetricValue("jazz.covalues.loaded", {
51
- state: "available",
52
- })).toBe(1);
53
- });
54
- test("should handle found action", async () => {
55
- const mockCoValue = createMockCoValueCore(mockCoValueId);
56
- const state = new CoValueState(mockCoValueId);
57
- state.loadFromPeers([
58
- createMockPeerState({ id: "peer1", role: "server" }),
59
- createMockPeerState({ id: "peer2", role: "server" }),
60
- ]);
61
- expect(await metricReader.getMetricValue("jazz.covalues.loaded", {
62
- state: "available",
63
- })).toBe(undefined);
64
- expect(await metricReader.getMetricValue("jazz.covalues.loaded", {
65
- state: "loading",
66
- })).toBe(1);
67
- const stateValuePromise = state.getCoValue();
68
- state.internalMarkMagicallyAvailable(mockCoValue);
69
- const result = await state.getCoValue();
70
- expect(result).toBe(mockCoValue);
71
- await expect(stateValuePromise).resolves.toBe(mockCoValue);
72
- expect(await metricReader.getMetricValue("jazz.covalues.loaded", {
73
- state: "available",
74
- })).toBe(1);
75
- expect(await metricReader.getMetricValue("jazz.covalues.loaded", {
76
- state: "loading",
77
- })).toBe(0);
78
- });
79
- test("should retry loading from peers when unsuccessful", async () => {
80
- vi.useFakeTimers();
81
- const peer1 = createMockPeerState({
82
- id: "peer1",
83
- role: "server",
84
- }, async () => {
85
- state.markNotFoundInPeer("peer1");
86
- });
87
- const peer2 = createMockPeerState({
88
- id: "peer2",
89
- role: "server",
90
- }, async () => {
91
- state.markNotFoundInPeer("peer2");
92
- });
93
- const mockPeers = [peer1, peer2];
94
- const state = new CoValueState(mockCoValueId);
95
- const loadPromise = state.loadFromPeers(mockPeers);
96
- // Should attempt CO_VALUE_LOADING_CONFIG.MAX_RETRIES retries
97
- for (let i = 0; i < CO_VALUE_LOADING_CONFIG.MAX_RETRIES; i++) {
98
- await vi.runAllTimersAsync();
99
- }
100
- await loadPromise;
101
- expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(CO_VALUE_LOADING_CONFIG.MAX_RETRIES);
102
- expect(peer2.pushOutgoingMessage).toHaveBeenCalledTimes(CO_VALUE_LOADING_CONFIG.MAX_RETRIES);
103
- expect(state.highLevelState).toBe("unavailable");
104
- await expect(state.getCoValue()).resolves.toBe("unavailable");
105
- vi.useRealTimers();
106
- });
107
- test("should skip errored coValues when loading from peers", async () => {
108
- vi.useFakeTimers();
109
- const peer1 = createMockPeerState({
110
- id: "peer1",
111
- role: "server",
112
- }, async () => {
113
- state.markErrored("peer1", {});
114
- });
115
- const peer2 = createMockPeerState({
116
- id: "peer2",
117
- role: "server",
118
- }, async () => {
119
- state.markNotFoundInPeer("peer2");
120
- });
121
- const mockPeers = [peer1, peer2];
122
- const state = new CoValueState(mockCoValueId);
123
- const loadPromise = state.loadFromPeers(mockPeers);
124
- // Should attempt CO_VALUE_LOADING_CONFIG.MAX_RETRIES retries
125
- for (let i = 0; i < CO_VALUE_LOADING_CONFIG.MAX_RETRIES; i++) {
126
- await vi.runAllTimersAsync();
127
- }
128
- await loadPromise;
129
- expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(1);
130
- expect(peer2.pushOutgoingMessage).toHaveBeenCalledTimes(CO_VALUE_LOADING_CONFIG.MAX_RETRIES);
131
- expect(state.highLevelState).toBe("unavailable");
132
- await expect(state.getCoValue()).resolves.toBe("unavailable");
133
- vi.useRealTimers();
134
- });
135
- test("should retry only on server peers", async () => {
136
- vi.useFakeTimers();
137
- const peer1 = createMockPeerState({
138
- id: "peer1",
139
- role: "storage",
140
- }, async () => {
141
- state.markNotFoundInPeer("peer1");
142
- });
143
- const peer2 = createMockPeerState({
144
- id: "peer2",
145
- role: "server",
146
- }, async () => {
147
- state.markNotFoundInPeer("peer2");
148
- });
149
- const mockPeers = [peer1, peer2];
150
- const state = new CoValueState(mockCoValueId);
151
- const loadPromise = state.loadFromPeers(mockPeers);
152
- // Should attempt CO_VALUE_LOADING_CONFIG.MAX_RETRIES retries
153
- for (let i = 0; i < CO_VALUE_LOADING_CONFIG.MAX_RETRIES; i++) {
154
- await vi.runAllTimersAsync();
155
- }
156
- await loadPromise;
157
- expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(1);
158
- expect(peer2.pushOutgoingMessage).toHaveBeenCalledTimes(CO_VALUE_LOADING_CONFIG.MAX_RETRIES);
159
- expect(state.highLevelState).toBe("unavailable");
160
- await expect(state.getCoValue()).resolves.toEqual("unavailable");
161
- vi.useRealTimers();
162
- });
163
- test("should handle the coValues that become available in between of the retries", async () => {
164
- vi.useFakeTimers();
165
- mockMaxRetries(5);
166
- let retries = 0;
167
- const peer1 = createMockPeerState({
168
- id: "peer1",
169
- role: "server",
170
- }, async () => {
171
- retries++;
172
- state.markNotFoundInPeer("peer1");
173
- if (retries === 2) {
174
- setTimeout(() => {
175
- state.markAvailable(createMockCoValueCore(mockCoValueId), "peer1");
176
- }, 100);
177
- }
178
- });
179
- const mockPeers = [peer1];
180
- const state = new CoValueState(mockCoValueId);
181
- const loadPromise = state.loadFromPeers(mockPeers);
182
- // Should attempt CO_VALUE_LOADING_CONFIG.MAX_RETRIES retries
183
- for (let i = 0; i < CO_VALUE_LOADING_CONFIG.MAX_RETRIES + 1; i++) {
184
- await vi.runAllTimersAsync();
185
- }
186
- await loadPromise;
187
- expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(2);
188
- expect(state.highLevelState).toBe("available");
189
- await expect(state.getCoValue()).resolves.toEqual({ id: mockCoValueId });
190
- vi.useRealTimers();
191
- });
192
- test("should have a coValue as value property when becomes available after that have been marked as unavailable", async () => {
193
- vi.useFakeTimers();
194
- const peer1 = createMockPeerState({
195
- id: "peer1",
196
- role: "server",
197
- }, async () => {
198
- state.markNotFoundInPeer("peer1");
199
- });
200
- const mockPeers = [peer1];
201
- const state = new CoValueState(mockCoValueId);
202
- const loadPromise = state.loadFromPeers(mockPeers);
203
- // Should attempt CO_VALUE_LOADING_CONFIG.MAX_RETRIES retries
204
- for (let i = 0; i < CO_VALUE_LOADING_CONFIG.MAX_RETRIES; i++) {
205
- await vi.runAllTimersAsync();
206
- }
207
- state.internalMarkMagicallyAvailable(createMockCoValueCore(mockCoValueId));
208
- await loadPromise;
209
- expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(CO_VALUE_LOADING_CONFIG.MAX_RETRIES);
210
- expect(state.highLevelState).toBe("available");
211
- await expect(state.getCoValue()).resolves.toEqual({ id: mockCoValueId });
212
- vi.useRealTimers();
213
- });
214
- test("should stop retrying when value becomes available", async () => {
215
- vi.useFakeTimers();
216
- mockMaxRetries(5);
217
- let run = 1;
218
- const peer1 = createMockPeerState({
219
- id: "peer1",
220
- role: "server",
221
- }, async () => {
222
- if (run > 2) {
223
- state.markAvailable(createMockCoValueCore(mockCoValueId), "peer1");
224
- }
225
- else {
226
- state.markNotFoundInPeer("peer1");
227
- run++;
228
- }
229
- });
230
- const mockPeers = [peer1];
231
- const state = new CoValueState(mockCoValueId);
232
- const loadPromise = state.loadFromPeers(mockPeers);
233
- for (let i = 0; i < CO_VALUE_LOADING_CONFIG.MAX_RETRIES; i++) {
234
- await vi.runAllTimersAsync();
235
- }
236
- await loadPromise;
237
- expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(3);
238
- expect(state.highLevelState).toBe("available");
239
- await expect(state.getCoValue()).resolves.toEqual({ id: mockCoValueId });
240
- vi.useRealTimers();
241
- });
242
- test("should start sending the known state to peers when available", async () => {
243
- vi.useFakeTimers();
244
- const mockCoValue = createMockCoValueCore(mockCoValueId);
245
- const peer1 = createMockPeerState({
246
- id: "peer1",
247
- role: "storage",
248
- }, async () => {
249
- state.markAvailable(mockCoValue, "peer1");
250
- });
251
- const peer2 = createMockPeerState({
252
- id: "peer2",
253
- role: "server",
254
- }, async () => {
255
- state.markNotFoundInPeer("peer2");
256
- });
257
- const state = new CoValueState(mockCoValueId);
258
- const loadPromise = state.loadFromPeers([peer1, peer2]);
259
- for (let i = 0; i < CO_VALUE_LOADING_CONFIG.MAX_RETRIES; i++) {
260
- await vi.runAllTimersAsync();
261
- }
262
- await loadPromise;
263
- expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(1);
264
- expect(peer2.pushOutgoingMessage).toHaveBeenCalledTimes(1);
265
- expect(peer2.pushOutgoingMessage).toHaveBeenCalledWith({
266
- action: "load",
267
- ...mockCoValue.knownState(),
268
- });
269
- expect(state.highLevelState).toBe("available");
270
- await expect(state.getCoValue()).resolves.toEqual({ id: mockCoValueId });
271
- vi.useRealTimers();
272
- });
273
- test("should skip closed peers", async () => {
274
- vi.useFakeTimers();
275
- const mockCoValue = createMockCoValueCore(mockCoValueId);
276
- const peer1 = createMockPeerState({
277
- id: "peer1",
278
- role: "storage",
279
- }, async () => {
280
- return new Promise(() => { });
281
- });
282
- const peer2 = createMockPeerState({
283
- id: "peer2",
284
- role: "server",
285
- }, async () => {
286
- state.markAvailable(mockCoValue, "peer2");
287
- });
288
- peer1.closed = true;
289
- const state = new CoValueState(mockCoValueId);
290
- const loadPromise = state.loadFromPeers([peer1, peer2]);
291
- for (let i = 0; i < CO_VALUE_LOADING_CONFIG.MAX_RETRIES; i++) {
292
- await vi.runAllTimersAsync();
293
- }
294
- await loadPromise;
295
- expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(0);
296
- expect(peer2.pushOutgoingMessage).toHaveBeenCalledTimes(1);
297
- expect(state.highLevelState).toBe("available");
298
- await expect(state.getCoValue()).resolves.toEqual({ id: mockCoValueId });
299
- vi.useRealTimers();
300
- });
301
- test("should not be stuck in loading state when not getting a response", async () => {
302
- vi.useFakeTimers();
303
- const peer1 = createMockPeerState({
304
- id: "peer1",
305
- role: "server",
306
- }, async () => { });
307
- const state = new CoValueState(mockCoValueId);
308
- const loadPromise = state.loadFromPeers([peer1]);
309
- for (let i = 0; i < CO_VALUE_LOADING_CONFIG.MAX_RETRIES * 2; i++) {
310
- await vi.runAllTimersAsync();
311
- }
312
- await loadPromise;
313
- expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(CO_VALUE_LOADING_CONFIG.MAX_RETRIES);
314
- expect(state.highLevelState).toBe("unavailable");
315
- await expect(state.getCoValue()).resolves.toEqual("unavailable");
316
- vi.useRealTimers();
317
- });
318
- });
319
- function createMockPeerState(peer, pushFn = () => Promise.resolve()) {
320
- const peerState = new PeerState({
321
- id: "peer",
322
- role: "server",
323
- outgoing: {
324
- push: pushFn,
325
- },
326
- ...peer,
327
- }, undefined);
328
- vi.spyOn(peerState, "pushOutgoingMessage").mockImplementation(pushFn);
329
- return peerState;
330
- }
331
- function createMockCoValueCore(mockCoValueId) {
332
- // Setting the knownState as part of the prototype to simplify
333
- // the equality checks
334
- const mockCoValue = Object.create({
335
- knownState: vi.fn().mockReturnValue({
336
- id: mockCoValueId,
337
- header: true,
338
- sessions: {},
339
- }),
340
- });
341
- mockCoValue.id = mockCoValueId;
342
- return mockCoValue;
343
- }
344
- //# sourceMappingURL=coValueState.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coValueState.test.js","sourceRoot":"","sources":["../../src/tests/coValueState.test.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import { CoValueCore } from "./coValueCore.js";
2
- import { CoValueState } from "./coValueState.js";
3
- import { RawCoID } from "./ids.js";
4
- import { PeerID } from "./sync.js";
5
-
6
- export class CoValuesStore {
7
- coValues = new Map<RawCoID, CoValueState>();
8
-
9
- get(id: RawCoID) {
10
- let entry = this.coValues.get(id);
11
-
12
- if (!entry) {
13
- entry = new CoValueState(id);
14
- this.coValues.set(id, entry);
15
- }
16
-
17
- return entry;
18
- }
19
-
20
- markAsAvailable(id: RawCoID, coValue: CoValueCore, fromPeerId: PeerID) {
21
- const entry = this.get(id);
22
- entry.markAvailable(coValue, fromPeerId);
23
- }
24
-
25
- internalMarkMagicallyAvailable(id: RawCoID, coValue: CoValueCore) {
26
- const entry = this.get(id);
27
- entry.internalMarkMagicallyAvailable(coValue);
28
- }
29
-
30
- getEntries() {
31
- return this.coValues.entries();
32
- }
33
-
34
- getValues() {
35
- return this.coValues.values();
36
- }
37
-
38
- getKeys() {
39
- return this.coValues.keys();
40
- }
41
- }