cojson 0.20.7 → 0.20.9
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 +26 -0
- package/dist/SyncStateManager.d.ts.map +1 -1
- package/dist/SyncStateManager.js +0 -2
- package/dist/SyncStateManager.js.map +1 -1
- package/dist/base64url.d.ts +15 -0
- package/dist/base64url.d.ts.map +1 -1
- package/dist/base64url.js +101 -5
- package/dist/base64url.js.map +1 -1
- package/dist/base64url.test.js +76 -1
- package/dist/base64url.test.js.map +1 -1
- package/dist/coValue.d.ts +2 -1
- package/dist/coValue.d.ts.map +1 -1
- package/dist/coValue.js.map +1 -1
- package/dist/coValueCore/coValueCore.d.ts +9 -11
- package/dist/coValueCore/coValueCore.d.ts.map +1 -1
- package/dist/coValueCore/coValueCore.js +92 -65
- package/dist/coValueCore/coValueCore.js.map +1 -1
- package/dist/coValueCore/verifiedState.d.ts +38 -7
- package/dist/coValueCore/verifiedState.d.ts.map +1 -1
- package/dist/coValueCore/verifiedState.js +226 -30
- package/dist/coValueCore/verifiedState.js.map +1 -1
- package/dist/coValues/binaryCoStream.d.ts +63 -0
- package/dist/coValues/binaryCoStream.d.ts.map +1 -0
- package/dist/coValues/binaryCoStream.js +125 -0
- package/dist/coValues/binaryCoStream.js.map +1 -0
- package/dist/coValues/coList.d.ts +3 -1
- package/dist/coValues/coList.d.ts.map +1 -1
- package/dist/coValues/coList.js +15 -6
- package/dist/coValues/coList.js.map +1 -1
- package/dist/coValues/coMap.d.ts +1 -1
- package/dist/coValues/coMap.d.ts.map +1 -1
- package/dist/coValues/coMap.js +2 -2
- package/dist/coValues/coMap.js.map +1 -1
- package/dist/coValues/coStream.d.ts +0 -38
- package/dist/coValues/coStream.d.ts.map +1 -1
- package/dist/coValues/coStream.js +0 -86
- package/dist/coValues/coStream.js.map +1 -1
- package/dist/coValues/group.d.ts +44 -6
- package/dist/coValues/group.d.ts.map +1 -1
- package/dist/coValues/group.js +198 -17
- package/dist/coValues/group.js.map +1 -1
- package/dist/coreToCoValue.d.ts +2 -1
- package/dist/coreToCoValue.d.ts.map +1 -1
- package/dist/coreToCoValue.js +2 -1
- package/dist/coreToCoValue.js.map +1 -1
- package/dist/crypto/NapiCrypto.d.ts +18 -24
- package/dist/crypto/NapiCrypto.d.ts.map +1 -1
- package/dist/crypto/NapiCrypto.js +98 -60
- package/dist/crypto/NapiCrypto.js.map +1 -1
- package/dist/crypto/RNCrypto.d.ts +16 -3
- package/dist/crypto/RNCrypto.d.ts.map +1 -1
- package/dist/crypto/RNCrypto.js +117 -54
- package/dist/crypto/RNCrypto.js.map +1 -1
- package/dist/crypto/WasmCrypto.d.ts +18 -24
- package/dist/crypto/WasmCrypto.d.ts.map +1 -1
- package/dist/crypto/WasmCrypto.js +100 -61
- package/dist/crypto/WasmCrypto.js.map +1 -1
- package/dist/crypto/crypto.d.ts +55 -19
- package/dist/crypto/crypto.d.ts.map +1 -1
- package/dist/crypto/crypto.js +14 -3
- package/dist/crypto/crypto.js.map +1 -1
- package/dist/exports.d.ts +7 -3
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +4 -2
- package/dist/exports.js.map +1 -1
- package/dist/localNode.d.ts +3 -1
- package/dist/localNode.d.ts.map +1 -1
- package/dist/localNode.js +10 -3
- package/dist/localNode.js.map +1 -1
- package/dist/media.d.ts +1 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/permissions.d.ts +2 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +19 -3
- package/dist/permissions.js.map +1 -1
- package/dist/storage/sqliteAsync/client.d.ts +24 -12
- package/dist/storage/sqliteAsync/client.d.ts.map +1 -1
- package/dist/storage/sqliteAsync/client.js +70 -58
- package/dist/storage/sqliteAsync/client.js.map +1 -1
- package/dist/storage/sqliteAsync/types.d.ts +1 -1
- package/dist/storage/sqliteAsync/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +1 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +7 -1
- package/dist/sync.js.map +1 -1
- package/dist/tests/CojsonMessageChannel.test.js +2 -2
- package/dist/tests/SQLiteClientAsync.test.d.ts +2 -0
- package/dist/tests/SQLiteClientAsync.test.d.ts.map +1 -0
- package/dist/tests/SQLiteClientAsync.test.js +64 -0
- package/dist/tests/SQLiteClientAsync.test.js.map +1 -0
- package/dist/tests/StorageApiAsync.test.js +2 -8
- package/dist/tests/StorageApiAsync.test.js.map +1 -1
- package/dist/tests/SyncStateManager.test.js +2 -2
- package/dist/tests/WasmCrypto.test.js +1 -15
- package/dist/tests/WasmCrypto.test.js.map +1 -1
- package/dist/tests/coList.test.js +24 -5
- package/dist/tests/coList.test.js.map +1 -1
- package/dist/tests/coStream.test.js +4 -3
- package/dist/tests/coStream.test.js.map +1 -1
- package/dist/tests/coValueCore.initTransaction.test.d.ts +2 -0
- package/dist/tests/coValueCore.initTransaction.test.d.ts.map +1 -0
- package/dist/tests/coValueCore.initTransaction.test.js +438 -0
- package/dist/tests/coValueCore.initTransaction.test.js.map +1 -0
- package/dist/tests/coValueCore.test.js +11 -19
- package/dist/tests/coValueCore.test.js.map +1 -1
- package/dist/tests/crypto.test.js +83 -0
- package/dist/tests/crypto.test.js.map +1 -1
- package/dist/tests/deleteCoValue.test.js +5 -5
- package/dist/tests/deleteCoValue.test.js.map +1 -1
- package/dist/tests/group.inheritance.test.js +11 -0
- package/dist/tests/group.inheritance.test.js.map +1 -1
- package/dist/tests/group.test.js +24 -1
- package/dist/tests/group.test.js.map +1 -1
- package/dist/tests/groupSealer.test.d.ts +2 -0
- package/dist/tests/groupSealer.test.d.ts.map +1 -0
- package/dist/tests/groupSealer.test.js +913 -0
- package/dist/tests/groupSealer.test.js.map +1 -0
- package/dist/tests/setup.js +5 -0
- package/dist/tests/setup.js.map +1 -1
- package/dist/tests/sync.auth.test.js +10 -10
- package/dist/tests/sync.concurrentLoad.test.js +12 -12
- package/dist/tests/sync.deleted.test.js +8 -8
- package/dist/tests/sync.garbageCollection.test.js +10 -10
- package/dist/tests/sync.invite.test.js +12 -12
- package/dist/tests/sync.known.test.js +2 -2
- package/dist/tests/sync.load.test.js +107 -107
- package/dist/tests/sync.mesh.test.js +164 -46
- package/dist/tests/sync.mesh.test.js.map +1 -1
- package/dist/tests/sync.multipleServers.test.js +43 -43
- package/dist/tests/sync.peerReconciliation.test.js +29 -29
- package/dist/tests/sync.sharding.test.js +3 -3
- package/dist/tests/sync.storage.test.js +104 -104
- package/dist/tests/sync.storage.test.js.map +1 -1
- package/dist/tests/sync.storageAsync.test.js +56 -56
- package/dist/tests/sync.upload.test.js +22 -22
- package/dist/tests/testStorage.d.ts +2 -0
- package/dist/tests/testStorage.d.ts.map +1 -1
- package/dist/tests/testStorage.js +30 -6
- package/dist/tests/testStorage.js.map +1 -1
- package/dist/typeUtils/isCoValue.js +1 -1
- package/dist/typeUtils/isCoValue.js.map +1 -1
- package/package.json +4 -4
- package/src/SyncStateManager.ts +0 -2
- package/src/base64url.test.ts +89 -1
- package/src/base64url.ts +134 -6
- package/src/coValue.ts +2 -1
- package/src/coValueCore/coValueCore.ts +126 -84
- package/src/coValueCore/verifiedState.ts +335 -53
- package/src/coValues/binaryCoStream.ts +217 -0
- package/src/coValues/coList.ts +21 -8
- package/src/coValues/coMap.ts +3 -0
- package/src/coValues/coStream.ts +0 -170
- package/src/coValues/group.ts +270 -21
- package/src/coreToCoValue.ts +2 -1
- package/src/crypto/NapiCrypto.ts +198 -95
- package/src/crypto/RNCrypto.ts +229 -102
- package/src/crypto/WasmCrypto.ts +201 -95
- package/src/crypto/crypto.ts +118 -45
- package/src/exports.ts +11 -5
- package/src/localNode.ts +17 -1
- package/src/media.ts +1 -1
- package/src/permissions.ts +30 -7
- package/src/storage/sqliteAsync/client.ts +136 -115
- package/src/storage/sqliteAsync/types.ts +3 -1
- package/src/storage/types.ts +4 -0
- package/src/sync.ts +10 -1
- package/src/tests/CojsonMessageChannel.test.ts +2 -2
- package/src/tests/SQLiteClientAsync.test.ts +75 -0
- package/src/tests/StorageApiAsync.test.ts +4 -9
- package/src/tests/SyncStateManager.test.ts +2 -2
- package/src/tests/WasmCrypto.test.ts +1 -25
- package/src/tests/coList.test.ts +39 -5
- package/src/tests/coStream.test.ts +4 -5
- package/src/tests/coValueCore.initTransaction.test.ts +836 -0
- package/src/tests/coValueCore.test.ts +11 -22
- package/src/tests/crypto.test.ts +107 -0
- package/src/tests/deleteCoValue.test.ts +5 -5
- package/src/tests/group.inheritance.test.ts +16 -0
- package/src/tests/group.test.ts +29 -1
- package/src/tests/groupSealer.test.ts +1473 -0
- package/src/tests/setup.ts +6 -0
- package/src/tests/sync.auth.test.ts +10 -10
- package/src/tests/sync.concurrentLoad.test.ts +12 -12
- package/src/tests/sync.deleted.test.ts +8 -8
- package/src/tests/sync.garbageCollection.test.ts +10 -10
- package/src/tests/sync.invite.test.ts +12 -12
- package/src/tests/sync.known.test.ts +2 -2
- package/src/tests/sync.load.test.ts +107 -107
- package/src/tests/sync.mesh.test.ts +189 -46
- package/src/tests/sync.multipleServers.test.ts +43 -43
- package/src/tests/sync.peerReconciliation.test.ts +29 -29
- package/src/tests/sync.sharding.test.ts +3 -3
- package/src/tests/sync.storage.test.ts +104 -104
- package/src/tests/sync.storageAsync.test.ts +56 -56
- package/src/tests/sync.upload.test.ts +22 -22
- package/src/tests/testStorage.ts +39 -9
- package/src/typeUtils/isCoValue.ts +1 -1
- package/dist/coValueCore/SessionMap.d.ts +0 -55
- package/dist/coValueCore/SessionMap.d.ts.map +0 -1
- package/dist/coValueCore/SessionMap.js +0 -206
- package/dist/coValueCore/SessionMap.js.map +0 -1
- package/dist/tests/coreWasm.test.d.ts +0 -2
- package/dist/tests/coreWasm.test.d.ts.map +0 -1
- package/dist/tests/coreWasm.test.js +0 -203
- package/dist/tests/coreWasm.test.js.map +0 -1
- package/src/coValueCore/SessionMap.ts +0 -394
- package/src/tests/coreWasm.test.ts +0 -452
|
@@ -89,12 +89,12 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
89
89
|
}),
|
|
90
90
|
).toMatchInlineSnapshot(`
|
|
91
91
|
[
|
|
92
|
-
"edge-france -> storage | CONTENT Group header: true new: After: 0 New:
|
|
93
|
-
"edge-france -> core | CONTENT Group header: true new: After: 0 New:
|
|
92
|
+
"edge-france -> storage | CONTENT Group header: true new: After: 0 New: 4",
|
|
93
|
+
"edge-france -> core | CONTENT Group header: true new: After: 0 New: 4",
|
|
94
94
|
"edge-france -> storage | CONTENT Map header: true new: After: 0 New: 1",
|
|
95
95
|
"edge-france -> core | CONTENT Map header: true new: After: 0 New: 1",
|
|
96
|
-
"core -> edge-france | KNOWN Group sessions: header/
|
|
97
|
-
"core -> storage | CONTENT Group header: true new: After: 0 New:
|
|
96
|
+
"core -> edge-france | KNOWN Group sessions: header/4",
|
|
97
|
+
"core -> storage | CONTENT Group header: true new: After: 0 New: 4",
|
|
98
98
|
"core -> edge-france | KNOWN Map sessions: header/1",
|
|
99
99
|
"core -> storage | CONTENT Map header: true new: After: 0 New: 1",
|
|
100
100
|
"client -> storage | LOAD Map sessions: empty",
|
|
@@ -103,16 +103,16 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
103
103
|
"edge-italy -> storage | LOAD Map sessions: empty",
|
|
104
104
|
"storage -> edge-italy | KNOWN Map sessions: empty",
|
|
105
105
|
"edge-italy -> core | LOAD Map sessions: empty",
|
|
106
|
-
"core -> edge-italy | CONTENT Group header: true new: After: 0 New:
|
|
106
|
+
"core -> edge-italy | CONTENT Group header: true new: After: 0 New: 4",
|
|
107
107
|
"core -> edge-italy | CONTENT Map header: true new: After: 0 New: 1",
|
|
108
|
-
"edge-italy -> core | KNOWN Group sessions: header/
|
|
109
|
-
"edge-italy -> storage | CONTENT Group header: true new: After: 0 New:
|
|
108
|
+
"edge-italy -> core | KNOWN Group sessions: header/4",
|
|
109
|
+
"edge-italy -> storage | CONTENT Group header: true new: After: 0 New: 4",
|
|
110
110
|
"edge-italy -> core | KNOWN Map sessions: header/1",
|
|
111
111
|
"edge-italy -> storage | CONTENT Map header: true new: After: 0 New: 1",
|
|
112
|
-
"edge-italy -> client | CONTENT Group header: true new: After: 0 New:
|
|
112
|
+
"edge-italy -> client | CONTENT Group header: true new: After: 0 New: 4",
|
|
113
113
|
"edge-italy -> client | CONTENT Map header: true new: After: 0 New: 1",
|
|
114
|
-
"client -> edge-italy | KNOWN Group sessions: header/
|
|
115
|
-
"client -> storage | CONTENT Group header: true new: After: 0 New:
|
|
114
|
+
"client -> edge-italy | KNOWN Group sessions: header/4",
|
|
115
|
+
"client -> storage | CONTENT Group header: true new: After: 0 New: 4",
|
|
116
116
|
"client -> edge-italy | KNOWN Map sessions: header/1",
|
|
117
117
|
"client -> storage | CONTENT Map header: true new: After: 0 New: 1",
|
|
118
118
|
]
|
|
@@ -153,18 +153,18 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
153
153
|
}),
|
|
154
154
|
).toMatchInlineSnapshot(`
|
|
155
155
|
[
|
|
156
|
-
"edge-france -> storage | CONTENT Group header: true new: After: 0 New:
|
|
157
|
-
"edge-france -> core | CONTENT Group header: true new: After: 0 New:
|
|
158
|
-
"edge-france -> storage | CONTENT ParentGroup header: true new: After: 0 New:
|
|
159
|
-
"edge-france -> core | CONTENT ParentGroup header: true new: After: 0 New:
|
|
160
|
-
"edge-france -> storage | CONTENT Group header: false new: After:
|
|
161
|
-
"edge-france -> core | CONTENT Group header: false new: After:
|
|
162
|
-
"core -> edge-france | KNOWN Group sessions: header/
|
|
163
|
-
"core -> storage | CONTENT Group header: true new: After: 0 New:
|
|
164
|
-
"core -> edge-france | KNOWN ParentGroup sessions: header/
|
|
165
|
-
"core -> storage | CONTENT ParentGroup header: true new: After: 0 New:
|
|
166
|
-
"core -> edge-france | KNOWN Group sessions: header/
|
|
167
|
-
"core -> storage | CONTENT Group header: false new: After:
|
|
156
|
+
"edge-france -> storage | CONTENT Group header: true new: After: 0 New: 4",
|
|
157
|
+
"edge-france -> core | CONTENT Group header: true new: After: 0 New: 4",
|
|
158
|
+
"edge-france -> storage | CONTENT ParentGroup header: true new: After: 0 New: 6",
|
|
159
|
+
"edge-france -> core | CONTENT ParentGroup header: true new: After: 0 New: 6",
|
|
160
|
+
"edge-france -> storage | CONTENT Group header: false new: After: 4 New: 2",
|
|
161
|
+
"edge-france -> core | CONTENT Group header: false new: After: 4 New: 2",
|
|
162
|
+
"core -> edge-france | KNOWN Group sessions: header/4",
|
|
163
|
+
"core -> storage | CONTENT Group header: true new: After: 0 New: 4",
|
|
164
|
+
"core -> edge-france | KNOWN ParentGroup sessions: header/6",
|
|
165
|
+
"core -> storage | CONTENT ParentGroup header: true new: After: 0 New: 6",
|
|
166
|
+
"core -> edge-france | KNOWN Group sessions: header/6",
|
|
167
|
+
"core -> storage | CONTENT Group header: false new: After: 4 New: 2",
|
|
168
168
|
"edge-france -> storage | CONTENT Map header: true new: After: 0 New: 1",
|
|
169
169
|
"edge-france -> core | CONTENT Map header: true new: After: 0 New: 1",
|
|
170
170
|
"core -> edge-france | KNOWN Map sessions: header/1",
|
|
@@ -173,20 +173,20 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
173
173
|
"edge-italy -> storage | LOAD Map sessions: empty",
|
|
174
174
|
"storage -> edge-italy | KNOWN Map sessions: empty",
|
|
175
175
|
"edge-italy -> core | LOAD Map sessions: empty",
|
|
176
|
-
"core -> edge-italy | CONTENT ParentGroup header: true new: After: 0 New:
|
|
177
|
-
"core -> edge-italy | CONTENT Group header: true new: After: 0 New:
|
|
176
|
+
"core -> edge-italy | CONTENT ParentGroup header: true new: After: 0 New: 6",
|
|
177
|
+
"core -> edge-italy | CONTENT Group header: true new: After: 0 New: 6",
|
|
178
178
|
"core -> edge-italy | CONTENT Map header: true new: After: 0 New: 1",
|
|
179
|
-
"edge-italy -> core | KNOWN ParentGroup sessions: header/
|
|
180
|
-
"edge-italy -> storage | CONTENT ParentGroup header: true new: After: 0 New:
|
|
181
|
-
"edge-italy -> core | KNOWN Group sessions: header/
|
|
182
|
-
"edge-italy -> storage | CONTENT Group header: true new: After: 0 New:
|
|
179
|
+
"edge-italy -> core | KNOWN ParentGroup sessions: header/6",
|
|
180
|
+
"edge-italy -> storage | CONTENT ParentGroup header: true new: After: 0 New: 6",
|
|
181
|
+
"edge-italy -> core | KNOWN Group sessions: header/6",
|
|
182
|
+
"edge-italy -> storage | CONTENT Group header: true new: After: 0 New: 6",
|
|
183
183
|
"edge-italy -> core | KNOWN Map sessions: header/1",
|
|
184
184
|
"edge-italy -> storage | CONTENT Map header: true new: After: 0 New: 1",
|
|
185
|
-
"edge-italy -> client | CONTENT ParentGroup header: true new: After: 0 New:
|
|
186
|
-
"edge-italy -> client | CONTENT Group header: true new: After: 0 New:
|
|
185
|
+
"edge-italy -> client | CONTENT ParentGroup header: true new: After: 0 New: 6",
|
|
186
|
+
"edge-italy -> client | CONTENT Group header: true new: After: 0 New: 6",
|
|
187
187
|
"edge-italy -> client | CONTENT Map header: true new: After: 0 New: 1",
|
|
188
|
-
"client -> edge-italy | KNOWN ParentGroup sessions: header/
|
|
189
|
-
"client -> edge-italy | KNOWN Group sessions: header/
|
|
188
|
+
"client -> edge-italy | KNOWN ParentGroup sessions: header/6",
|
|
189
|
+
"client -> edge-italy | KNOWN Group sessions: header/6",
|
|
190
190
|
"client -> edge-italy | KNOWN Map sessions: header/1",
|
|
191
191
|
]
|
|
192
192
|
`);
|
|
@@ -402,10 +402,10 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
402
402
|
"client -> core | LOAD Map sessions: empty",
|
|
403
403
|
"client -> another-server | LOAD Map sessions: empty",
|
|
404
404
|
"core -> storage-of-client | CONTENT Map header: false new: After: 1 New: 1",
|
|
405
|
-
"another-server -> client | CONTENT Group header: true new: After: 0 New:
|
|
405
|
+
"another-server -> client | CONTENT Group header: true new: After: 0 New: 4",
|
|
406
406
|
"another-server -> client | CONTENT Map header: true new: After: 0 New: 1",
|
|
407
|
-
"client -> another-server | KNOWN Group sessions: header/
|
|
408
|
-
"client -> core | LOAD Group sessions: header/
|
|
407
|
+
"client -> another-server | KNOWN Group sessions: header/4",
|
|
408
|
+
"client -> core | LOAD Group sessions: header/4",
|
|
409
409
|
"client -> another-server | KNOWN Map sessions: header/1",
|
|
410
410
|
]
|
|
411
411
|
`);
|
|
@@ -459,9 +459,9 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
459
459
|
).toMatchInlineSnapshot(`
|
|
460
460
|
[
|
|
461
461
|
"client -> another-server | LOAD Map sessions: empty",
|
|
462
|
-
"another-server -> client | CONTENT Group header: true new: After: 0 New:
|
|
462
|
+
"another-server -> client | CONTENT Group header: true new: After: 0 New: 4",
|
|
463
463
|
"another-server -> client | CONTENT Map header: true new: After: 0 New: 1",
|
|
464
|
-
"client -> another-server | KNOWN Group sessions: header/
|
|
464
|
+
"client -> another-server | KNOWN Group sessions: header/4",
|
|
465
465
|
"client -> another-server | KNOWN Map sessions: header/1",
|
|
466
466
|
]
|
|
467
467
|
`);
|
|
@@ -500,7 +500,7 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
500
500
|
}),
|
|
501
501
|
).toMatchInlineSnapshot(`
|
|
502
502
|
[
|
|
503
|
-
"edge -> storage | CONTENT Group header: true new: After: 0 New:
|
|
503
|
+
"edge -> storage | CONTENT Group header: true new: After: 0 New: 6",
|
|
504
504
|
"edge -> storage | CONTENT Map header: true new: After: 0 New: 21 expectContentUntil: header/100",
|
|
505
505
|
"edge -> storage | CONTENT Map header: false new: After: 21 New: 21",
|
|
506
506
|
"edge -> storage | CONTENT Map header: false new: After: 42 New: 21",
|
|
@@ -550,11 +550,11 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
550
550
|
"storage -> client | KNOWN Map sessions: empty",
|
|
551
551
|
"client -> edge | LOAD Map sessions: empty",
|
|
552
552
|
"edge -> storage | LOAD Map sessions: empty",
|
|
553
|
-
"storage -> edge | CONTENT Group header: true new: After: 0 New:
|
|
554
|
-
"edge -> core | LOAD Group sessions: header/
|
|
553
|
+
"storage -> edge | CONTENT Group header: true new: After: 0 New: 6",
|
|
554
|
+
"edge -> core | LOAD Group sessions: header/6",
|
|
555
555
|
"storage -> edge | CONTENT Map header: true new: After: 0 New: 21 expectContentUntil: header/100",
|
|
556
556
|
"edge -> core | LOAD Map sessions: header/100",
|
|
557
|
-
"edge -> client | CONTENT Group header: true new: After: 0 New:
|
|
557
|
+
"edge -> client | CONTENT Group header: true new: After: 0 New: 6",
|
|
558
558
|
"edge -> client | CONTENT Map header: true new: After: 0 New: 21 expectContentUntil: header/100",
|
|
559
559
|
"storage -> edge | CONTENT Map header: true new: After: 21 New: 21",
|
|
560
560
|
"edge -> client | CONTENT Map header: false new: After: 21 New: 21 expectContentUntil: header/100",
|
|
@@ -570,8 +570,8 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
570
570
|
"core -> storage | GET_KNOWN_STATE Map",
|
|
571
571
|
"storage -> core | GET_KNOWN_STATE_RESULT Map sessions: empty",
|
|
572
572
|
"core -> edge | KNOWN Map sessions: empty",
|
|
573
|
-
"client -> edge | KNOWN Group sessions: header/
|
|
574
|
-
"client -> storage | CONTENT Group header: true new: After: 0 New:
|
|
573
|
+
"client -> edge | KNOWN Group sessions: header/6",
|
|
574
|
+
"client -> storage | CONTENT Group header: true new: After: 0 New: 6",
|
|
575
575
|
"client -> edge | KNOWN Map sessions: header/21",
|
|
576
576
|
"client -> storage | CONTENT Map header: true new: After: 0 New: 21",
|
|
577
577
|
"client -> edge | KNOWN Map sessions: header/42",
|
|
@@ -582,14 +582,14 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
582
582
|
"client -> storage | CONTENT Map header: false new: After: 63 New: 21",
|
|
583
583
|
"client -> edge | KNOWN Map sessions: header/100",
|
|
584
584
|
"client -> storage | CONTENT Map header: false new: After: 84 New: 16",
|
|
585
|
-
"edge -> core | CONTENT Group header: true new: After: 0 New:
|
|
585
|
+
"edge -> core | CONTENT Group header: true new: After: 0 New: 6",
|
|
586
586
|
"edge -> core | CONTENT Map header: true new: After: 0 New: 21 expectContentUntil: header/100",
|
|
587
587
|
"edge -> core | CONTENT Map header: false new: After: 21 New: 21",
|
|
588
588
|
"edge -> core | CONTENT Map header: false new: After: 42 New: 21",
|
|
589
589
|
"edge -> core | CONTENT Map header: false new: After: 63 New: 21",
|
|
590
590
|
"edge -> core | CONTENT Map header: false new: After: 84 New: 16",
|
|
591
|
-
"core -> edge | KNOWN Group sessions: header/
|
|
592
|
-
"core -> storage | CONTENT Group header: true new: After: 0 New:
|
|
591
|
+
"core -> edge | KNOWN Group sessions: header/6",
|
|
592
|
+
"core -> storage | CONTENT Group header: true new: After: 0 New: 6",
|
|
593
593
|
"core -> edge | KNOWN Map sessions: header/21",
|
|
594
594
|
"core -> storage | CONTENT Map header: true new: After: 0 New: 21",
|
|
595
595
|
"core -> edge | KNOWN Map sessions: header/42",
|
|
@@ -605,4 +605,147 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
605
605
|
|
|
606
606
|
expect(mapOnClient.core.knownState()).toEqual(largeMap.core.knownState());
|
|
607
607
|
});
|
|
608
|
+
|
|
609
|
+
test("edge must subscribe to core when handling client LOAD with lazy loading", async () => {
|
|
610
|
+
// Topology: client1 -> edge -> core <- client2
|
|
611
|
+
//
|
|
612
|
+
// When edge uses lazy loading (getKnownStateFromStorage) to respond
|
|
613
|
+
// to a client's LOAD request with KNOWN, it MUST still subscribe to
|
|
614
|
+
// core by sending a LOAD request. Otherwise, edge won't receive
|
|
615
|
+
// future updates from core for that covalue.
|
|
616
|
+
//
|
|
617
|
+
// This test verifies that updates from client2 (connected to core)
|
|
618
|
+
// properly propagate to client1 (connected to edge).
|
|
619
|
+
|
|
620
|
+
// Setup: core server with storage
|
|
621
|
+
const core = setupTestNode();
|
|
622
|
+
core.addStorage({ ourName: "core" });
|
|
623
|
+
|
|
624
|
+
// Setup: edge server with storage, connected to core
|
|
625
|
+
// NOTE: Using persistent: false so that when edge reconnects after restart,
|
|
626
|
+
// core doesn't preserve the old subscription state (known states).
|
|
627
|
+
// This simulates a fresh connection where edge must explicitly subscribe.
|
|
628
|
+
const edge = setupTestNode();
|
|
629
|
+
edge.addStorage({ ourName: "edge" });
|
|
630
|
+
edge.connectToSyncServer({
|
|
631
|
+
ourName: "edge",
|
|
632
|
+
syncServerName: "core",
|
|
633
|
+
syncServer: core.node,
|
|
634
|
+
persistent: false,
|
|
635
|
+
});
|
|
636
|
+
|
|
637
|
+
// Setup: client1 connected to edge
|
|
638
|
+
const client1 = setupTestNode();
|
|
639
|
+
client1.connectToSyncServer({
|
|
640
|
+
ourName: "client1",
|
|
641
|
+
syncServerName: "edge",
|
|
642
|
+
syncServer: edge.node,
|
|
643
|
+
});
|
|
644
|
+
|
|
645
|
+
// Create covalue on core and sync to edge and client1
|
|
646
|
+
const group = core.node.createGroup();
|
|
647
|
+
group.addMember("everyone", "writer"); // Allow anyone to write
|
|
648
|
+
const map = group.createMap();
|
|
649
|
+
map.set("hello", "world", "trusting");
|
|
650
|
+
await map.core.waitForSync();
|
|
651
|
+
|
|
652
|
+
// Client1 loads the covalue (syncs to edge storage)
|
|
653
|
+
const mapOnClient1 = await loadCoValueOrFail(client1.node, map.id);
|
|
654
|
+
expect(mapOnClient1.get("hello")).toEqual("world");
|
|
655
|
+
|
|
656
|
+
// Verify the states match
|
|
657
|
+
const client1KnownState = mapOnClient1.core.knownState();
|
|
658
|
+
const edgeStorageKnownState = edge.node.storage!.getKnownState(map.id);
|
|
659
|
+
expect(client1KnownState).toEqual(edgeStorageKnownState);
|
|
660
|
+
|
|
661
|
+
// Disconnect client1 (keeps data in memory)
|
|
662
|
+
client1.disconnect();
|
|
663
|
+
|
|
664
|
+
// Restart edge with a NEW session to ensure it's a completely fresh peer
|
|
665
|
+
// This is necessary because core tracks subscriptions by peer ID (agent+session),
|
|
666
|
+
// and we need edge to appear as a new peer that has never subscribed to the coValues.
|
|
667
|
+
const edgeStorage = edge.node.storage!;
|
|
668
|
+
|
|
669
|
+
// Disconnect old edge from core first
|
|
670
|
+
edge.disconnect();
|
|
671
|
+
|
|
672
|
+
const newEdge = edge.spawnNewSession();
|
|
673
|
+
newEdge.node.setStorage(edgeStorage);
|
|
674
|
+
|
|
675
|
+
newEdge.connectToSyncServer({
|
|
676
|
+
ourName: "edge2",
|
|
677
|
+
syncServerName: "core",
|
|
678
|
+
syncServer: core.node,
|
|
679
|
+
persistent: false,
|
|
680
|
+
});
|
|
681
|
+
|
|
682
|
+
// Replace edge reference for the rest of the test
|
|
683
|
+
const edge2 = newEdge;
|
|
684
|
+
|
|
685
|
+
SyncMessagesLog.clear();
|
|
686
|
+
|
|
687
|
+
// Client1 reconnects with existing data (same known state as edge's storage)
|
|
688
|
+
// This triggers the lazy loading path in handleLoad
|
|
689
|
+
client1.connectToSyncServer({
|
|
690
|
+
ourName: "client1",
|
|
691
|
+
syncServerName: "edge2",
|
|
692
|
+
syncServer: edge2.node,
|
|
693
|
+
});
|
|
694
|
+
|
|
695
|
+
await client1.node.syncManager.waitForAllCoValuesSync();
|
|
696
|
+
|
|
697
|
+
// Verify edge2 used lazy loading AND subscribed to core
|
|
698
|
+
// Key messages:
|
|
699
|
+
// - edge -> storage | GET_KNOWN_STATE (lazy loading)
|
|
700
|
+
// - edge2 -> client1 | KNOWN (responds with KNOWN, not CONTENT)
|
|
701
|
+
// - edge2 -> core | LOAD (subscribes to core for future updates)
|
|
702
|
+
expect(
|
|
703
|
+
SyncMessagesLog.getMessages({
|
|
704
|
+
Group: group.core,
|
|
705
|
+
Map: map.core,
|
|
706
|
+
}),
|
|
707
|
+
).toMatchInlineSnapshot(`
|
|
708
|
+
[
|
|
709
|
+
"client1 -> edge2 | LOAD Group sessions: header/6",
|
|
710
|
+
"client1 -> edge2 | LOAD Map sessions: header/1",
|
|
711
|
+
"edge -> storage | GET_KNOWN_STATE Group",
|
|
712
|
+
"storage -> edge | GET_KNOWN_STATE_RESULT Group sessions: header/6",
|
|
713
|
+
"edge2 -> client1 | KNOWN Group sessions: header/6",
|
|
714
|
+
"edge2 -> core | LOAD Group sessions: header/6",
|
|
715
|
+
"edge -> storage | GET_KNOWN_STATE Map",
|
|
716
|
+
"storage -> edge | GET_KNOWN_STATE_RESULT Map sessions: header/1",
|
|
717
|
+
"edge2 -> client1 | KNOWN Map sessions: header/1",
|
|
718
|
+
"edge2 -> core | LOAD Map sessions: header/1",
|
|
719
|
+
"core -> edge2 | KNOWN Group sessions: header/6",
|
|
720
|
+
]
|
|
721
|
+
`);
|
|
722
|
+
|
|
723
|
+
// IMPORTANT: Verify the coValue is NOT loaded into memory on edge yet.
|
|
724
|
+
// The lazy loading optimization means edge should only have the coValue
|
|
725
|
+
// in storage, not in memory, until actual content arrives.
|
|
726
|
+
const mapOnEdge = edge2.node.getCoValue(map.id);
|
|
727
|
+
expect(mapOnEdge.isAvailable()).toBe(false);
|
|
728
|
+
|
|
729
|
+
SyncMessagesLog.clear();
|
|
730
|
+
|
|
731
|
+
// Now client2 connects directly to core and makes an update
|
|
732
|
+
const client2 = setupTestNode();
|
|
733
|
+
client2.connectToSyncServer({
|
|
734
|
+
ourName: "client2",
|
|
735
|
+
syncServerName: "core",
|
|
736
|
+
syncServer: core.node,
|
|
737
|
+
});
|
|
738
|
+
|
|
739
|
+
const mapOnClient2 = await loadCoValueOrFail(client2.node, map.id);
|
|
740
|
+
mapOnClient2.set("hello", "updated by client2", "trusting");
|
|
741
|
+
await mapOnClient2.core.waitForSync();
|
|
742
|
+
|
|
743
|
+
// Wait for propagation: core -> edge2 -> client1
|
|
744
|
+
// Without the fix, this will timeout because edge2 never subscribed to core
|
|
745
|
+
await waitFor(() => mapOnClient1.get("hello") === "updated by client2");
|
|
746
|
+
|
|
747
|
+
// Verify edge2 now has the coValue in memory (received from core)
|
|
748
|
+
expect(mapOnEdge.isAvailable()).toBe(true);
|
|
749
|
+
expect(mapOnClient1.get("hello")).toEqual("updated by client2");
|
|
750
|
+
});
|
|
608
751
|
});
|
|
@@ -56,12 +56,12 @@ describe("multiple servers peers", () => {
|
|
|
56
56
|
}),
|
|
57
57
|
).toMatchInlineSnapshot(`
|
|
58
58
|
[
|
|
59
|
-
"client -> server1 | CONTENT Group header: true new: After: 0 New:
|
|
60
|
-
"client -> server2 | CONTENT Group header: true new: After: 0 New:
|
|
59
|
+
"client -> server1 | CONTENT Group header: true new: After: 0 New: 4",
|
|
60
|
+
"client -> server2 | CONTENT Group header: true new: After: 0 New: 4",
|
|
61
61
|
"client -> server1 | CONTENT Map header: true new: After: 0 New: 1",
|
|
62
62
|
"client -> server2 | CONTENT Map header: true new: After: 0 New: 1",
|
|
63
|
-
"server1 -> client | KNOWN Group sessions: header/
|
|
64
|
-
"server2 -> client | KNOWN Group sessions: header/
|
|
63
|
+
"server1 -> client | KNOWN Group sessions: header/4",
|
|
64
|
+
"server2 -> client | KNOWN Group sessions: header/4",
|
|
65
65
|
"server1 -> client | KNOWN Map sessions: header/1",
|
|
66
66
|
"server2 -> client | KNOWN Map sessions: header/1",
|
|
67
67
|
]
|
|
@@ -129,20 +129,20 @@ describe("multiple servers peers", () => {
|
|
|
129
129
|
}),
|
|
130
130
|
).toMatchInlineSnapshot(`
|
|
131
131
|
[
|
|
132
|
-
"client -> server1 | CONTENT Group header: true new: After: 0 New:
|
|
133
|
-
"client -> server2 | CONTENT Group header: true new: After: 0 New:
|
|
134
|
-
"client -> server1 | CONTENT ParentGroup header: true new: After: 0 New:
|
|
135
|
-
"client -> server2 | CONTENT ParentGroup header: true new: After: 0 New:
|
|
136
|
-
"client -> server1 | CONTENT Group header: false new: After:
|
|
137
|
-
"client -> server2 | CONTENT Group header: false new: After:
|
|
132
|
+
"client -> server1 | CONTENT Group header: true new: After: 0 New: 4",
|
|
133
|
+
"client -> server2 | CONTENT Group header: true new: After: 0 New: 4",
|
|
134
|
+
"client -> server1 | CONTENT ParentGroup header: true new: After: 0 New: 6",
|
|
135
|
+
"client -> server2 | CONTENT ParentGroup header: true new: After: 0 New: 6",
|
|
136
|
+
"client -> server1 | CONTENT Group header: false new: After: 4 New: 2",
|
|
137
|
+
"client -> server2 | CONTENT Group header: false new: After: 4 New: 2",
|
|
138
138
|
"client -> server1 | CONTENT Map header: true new: After: 0 New: 1",
|
|
139
139
|
"client -> server2 | CONTENT Map header: true new: After: 0 New: 1",
|
|
140
|
-
"server1 -> client | KNOWN Group sessions: header/
|
|
141
|
-
"server2 -> client | KNOWN Group sessions: header/
|
|
142
|
-
"server1 -> client | KNOWN ParentGroup sessions: header/
|
|
143
|
-
"server2 -> client | KNOWN ParentGroup sessions: header/
|
|
144
|
-
"server1 -> client | KNOWN Group sessions: header/
|
|
145
|
-
"server2 -> client | KNOWN Group sessions: header/
|
|
140
|
+
"server1 -> client | KNOWN Group sessions: header/4",
|
|
141
|
+
"server2 -> client | KNOWN Group sessions: header/4",
|
|
142
|
+
"server1 -> client | KNOWN ParentGroup sessions: header/6",
|
|
143
|
+
"server2 -> client | KNOWN ParentGroup sessions: header/6",
|
|
144
|
+
"server1 -> client | KNOWN Group sessions: header/6",
|
|
145
|
+
"server2 -> client | KNOWN Group sessions: header/6",
|
|
146
146
|
"server1 -> client | KNOWN Map sessions: header/1",
|
|
147
147
|
"server2 -> client | KNOWN Map sessions: header/1",
|
|
148
148
|
]
|
|
@@ -190,12 +190,12 @@ describe("multiple servers peers", () => {
|
|
|
190
190
|
}),
|
|
191
191
|
).toMatchInlineSnapshot(`
|
|
192
192
|
[
|
|
193
|
-
"client -> server1 | CONTENT Group header: true new: After: 0 New:
|
|
194
|
-
"client -> server2 | CONTENT Group header: true new: After: 0 New:
|
|
193
|
+
"client -> server1 | CONTENT Group header: true new: After: 0 New: 6",
|
|
194
|
+
"client -> server2 | CONTENT Group header: true new: After: 0 New: 6",
|
|
195
195
|
"client -> server1 | CONTENT Map header: true new: After: 0 New: 1",
|
|
196
196
|
"client -> server2 | CONTENT Map header: true new: After: 0 New: 1",
|
|
197
|
-
"server1 -> client | KNOWN Group sessions: header/
|
|
198
|
-
"server2 -> client | KNOWN Group sessions: header/
|
|
197
|
+
"server1 -> client | KNOWN Group sessions: header/6",
|
|
198
|
+
"server2 -> client | KNOWN Group sessions: header/6",
|
|
199
199
|
"server1 -> client | KNOWN Map sessions: header/1",
|
|
200
200
|
"server2 -> client | KNOWN Map sessions: header/1",
|
|
201
201
|
"client -> server1 | CONTENT Map header: false new: After: 1 New: 1",
|
|
@@ -229,16 +229,16 @@ describe("multiple servers peers", () => {
|
|
|
229
229
|
}),
|
|
230
230
|
).toMatchInlineSnapshot(`
|
|
231
231
|
[
|
|
232
|
-
"client -> server1 | CONTENT Group header: true new: After: 0 New:
|
|
233
|
-
"client -> server2 | CONTENT Group header: true new: After: 0 New:
|
|
232
|
+
"client -> server1 | CONTENT Group header: true new: After: 0 New: 4",
|
|
233
|
+
"client -> server2 | CONTENT Group header: true new: After: 0 New: 4",
|
|
234
234
|
"client -> server1 | CONTENT InitialMap header: true new: ",
|
|
235
235
|
"client -> server2 | CONTENT InitialMap header: true new: ",
|
|
236
236
|
"client -> server1 | CONTENT ChildMap header: true new: After: 0 New: 1",
|
|
237
237
|
"client -> server2 | CONTENT ChildMap header: true new: After: 0 New: 1",
|
|
238
238
|
"client -> server1 | CONTENT InitialMap header: false new: After: 0 New: 1",
|
|
239
239
|
"client -> server2 | CONTENT InitialMap header: false new: After: 0 New: 1",
|
|
240
|
-
"server1 -> client | KNOWN Group sessions: header/
|
|
241
|
-
"server2 -> client | KNOWN Group sessions: header/
|
|
240
|
+
"server1 -> client | KNOWN Group sessions: header/4",
|
|
241
|
+
"server2 -> client | KNOWN Group sessions: header/4",
|
|
242
242
|
"server1 -> client | KNOWN InitialMap sessions: header/0",
|
|
243
243
|
"server2 -> client | KNOWN InitialMap sessions: header/0",
|
|
244
244
|
"server1 -> client | KNOWN ChildMap sessions: header/1",
|
|
@@ -269,16 +269,16 @@ describe("multiple servers peers", () => {
|
|
|
269
269
|
}),
|
|
270
270
|
).toMatchInlineSnapshot(`
|
|
271
271
|
[
|
|
272
|
-
"client -> server1 | CONTENT Group header: true new: After: 0 New:
|
|
273
|
-
"client -> server2 | CONTENT Group header: true new: After: 0 New:
|
|
272
|
+
"client -> server1 | CONTENT Group header: true new: After: 0 New: 6",
|
|
273
|
+
"client -> server2 | CONTENT Group header: true new: After: 0 New: 6",
|
|
274
274
|
"client -> server1 | CONTENT Map header: true new: After: 0 New: 73 expectContentUntil: header/200",
|
|
275
275
|
"client -> server2 | CONTENT Map header: true new: After: 0 New: 73 expectContentUntil: header/200",
|
|
276
276
|
"client -> server1 | CONTENT Map header: false new: After: 73 New: 73",
|
|
277
277
|
"client -> server2 | CONTENT Map header: false new: After: 73 New: 73",
|
|
278
278
|
"client -> server1 | CONTENT Map header: false new: After: 146 New: 54",
|
|
279
279
|
"client -> server2 | CONTENT Map header: false new: After: 146 New: 54",
|
|
280
|
-
"server1 -> client | KNOWN Group sessions: header/
|
|
281
|
-
"server2 -> client | KNOWN Group sessions: header/
|
|
280
|
+
"server1 -> client | KNOWN Group sessions: header/6",
|
|
281
|
+
"server2 -> client | KNOWN Group sessions: header/6",
|
|
282
282
|
"server1 -> client | KNOWN Map sessions: header/73",
|
|
283
283
|
"server2 -> client | KNOWN Map sessions: header/73",
|
|
284
284
|
"server1 -> client | KNOWN Map sessions: header/146",
|
|
@@ -311,8 +311,8 @@ describe("multiple servers peers", () => {
|
|
|
311
311
|
}),
|
|
312
312
|
).toMatchInlineSnapshot(`
|
|
313
313
|
[
|
|
314
|
-
"client -> server1 | CONTENT Group header: true new: After: 0 New:
|
|
315
|
-
"client -> server2 | CONTENT Group header: true new: After: 0 New:
|
|
314
|
+
"client -> server1 | CONTENT Group header: true new: After: 0 New: 6",
|
|
315
|
+
"client -> server2 | CONTENT Group header: true new: After: 0 New: 6",
|
|
316
316
|
"client -> server1 | CONTENT Map header: true new: ",
|
|
317
317
|
"client -> server2 | CONTENT Map header: true new: ",
|
|
318
318
|
"client -> server1 | CONTENT Map header: false new: After: 0 New: 73 expectContentUntil: header/200",
|
|
@@ -321,8 +321,8 @@ describe("multiple servers peers", () => {
|
|
|
321
321
|
"client -> server2 | CONTENT Map header: false new: After: 73 New: 73",
|
|
322
322
|
"client -> server1 | CONTENT Map header: false new: After: 146 New: 54",
|
|
323
323
|
"client -> server2 | CONTENT Map header: false new: After: 146 New: 54",
|
|
324
|
-
"server1 -> client | KNOWN Group sessions: header/
|
|
325
|
-
"server2 -> client | KNOWN Group sessions: header/
|
|
324
|
+
"server1 -> client | KNOWN Group sessions: header/6",
|
|
325
|
+
"server2 -> client | KNOWN Group sessions: header/6",
|
|
326
326
|
"server1 -> client | KNOWN Map sessions: header/0",
|
|
327
327
|
"server2 -> client | KNOWN Map sessions: header/0",
|
|
328
328
|
"server1 -> client | KNOWN Map sessions: header/73",
|
|
@@ -367,22 +367,22 @@ describe("multiple servers peers", () => {
|
|
|
367
367
|
[
|
|
368
368
|
"client -> server1 | LOAD Map sessions: empty",
|
|
369
369
|
"client -> server2 | LOAD Map sessions: empty",
|
|
370
|
-
"client -> server1 | CONTENT Group header: true new: After: 0 New:
|
|
371
|
-
"client -> server2 | CONTENT Group header: true new: After: 0 New:
|
|
370
|
+
"client -> server1 | CONTENT Group header: true new: After: 0 New: 6",
|
|
371
|
+
"client -> server2 | CONTENT Group header: true new: After: 0 New: 6",
|
|
372
372
|
"client -> server1 | CONTENT Map header: true new: ",
|
|
373
373
|
"client -> server2 | CONTENT Map header: true new: ",
|
|
374
374
|
"server1 -> client | KNOWN Map sessions: empty",
|
|
375
375
|
"server2 -> client | KNOWN Map sessions: empty",
|
|
376
|
-
"server1 -> client | KNOWN Group sessions: header/
|
|
377
|
-
"server2 -> client | KNOWN Group sessions: header/
|
|
376
|
+
"server1 -> client | KNOWN Group sessions: header/6",
|
|
377
|
+
"server2 -> client | KNOWN Group sessions: header/6",
|
|
378
378
|
"server1 -> client | KNOWN Map sessions: header/0",
|
|
379
|
-
"server1 -> client | CONTENT Group header: true new: After: 0 New:
|
|
379
|
+
"server1 -> client | CONTENT Group header: true new: After: 0 New: 6",
|
|
380
380
|
"server1 -> client | CONTENT Map header: true new: ",
|
|
381
381
|
"server2 -> client | KNOWN Map sessions: header/0",
|
|
382
|
-
"server2 -> client | CONTENT Group header: true new: After: 0 New:
|
|
382
|
+
"server2 -> client | CONTENT Group header: true new: After: 0 New: 6",
|
|
383
383
|
"server2 -> client | CONTENT Map header: true new: ",
|
|
384
|
-
"client -> server1 | KNOWN Group sessions: header/
|
|
385
|
-
"client -> server2 | LOAD Group sessions: header/
|
|
384
|
+
"client -> server1 | KNOWN Group sessions: header/6",
|
|
385
|
+
"client -> server2 | LOAD Group sessions: header/6",
|
|
386
386
|
"client -> server1 | KNOWN Map sessions: header/0",
|
|
387
387
|
"client -> server2 | CONTENT Map header: true new: ",
|
|
388
388
|
"client -> server1 | CONTENT Map header: false new: After: 0 New: 73 expectContentUntil: header/200",
|
|
@@ -391,8 +391,8 @@ describe("multiple servers peers", () => {
|
|
|
391
391
|
"client -> server2 | CONTENT Map header: false new: After: 73 New: 73",
|
|
392
392
|
"client -> server1 | CONTENT Map header: false new: After: 146 New: 54",
|
|
393
393
|
"client -> server2 | CONTENT Map header: false new: After: 146 New: 54",
|
|
394
|
-
"client -> server2 | KNOWN Group sessions: header/
|
|
395
|
-
"client -> server2 | CONTENT Group header: false new: After: 0 New:
|
|
394
|
+
"client -> server2 | KNOWN Group sessions: header/6",
|
|
395
|
+
"client -> server2 | CONTENT Group header: false new: After: 0 New: 6",
|
|
396
396
|
"client -> server2 | KNOWN Map sessions: header/0",
|
|
397
397
|
"server2 -> client | KNOWN Map sessions: header/0",
|
|
398
398
|
"server1 -> client | KNOWN Map sessions: header/73",
|
|
@@ -407,7 +407,7 @@ describe("multiple servers peers", () => {
|
|
|
407
407
|
"server1 -> client | CONTENT Map header: false new: After: 146 New: 54",
|
|
408
408
|
"server2 -> client | KNOWN Map sessions: header/200",
|
|
409
409
|
"server2 -> client | CONTENT Map header: false new: After: 146 New: 54",
|
|
410
|
-
"server2 -> client | KNOWN Group sessions: header/
|
|
410
|
+
"server2 -> client | KNOWN Group sessions: header/6",
|
|
411
411
|
"client -> server1 | KNOWN Map sessions: header/73",
|
|
412
412
|
"client -> server2 | CONTENT Map header: false new: After: 0 New: 73",
|
|
413
413
|
"client -> server2 | KNOWN Map sessions: header/73",
|