@dxos/echo-pipeline 0.8.4-main.ae835ea → 0.8.4-main.bc2380dfbc
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/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/{browser/chunk-WJJXJTNS.mjs → neutral/chunk-46DCRDA7.mjs} +44 -13
- package/dist/lib/neutral/chunk-46DCRDA7.mjs.map +7 -0
- package/dist/lib/{browser/chunk-FR6GJ4S4.mjs → neutral/chunk-LR7UFVQX.mjs} +145 -618
- package/dist/lib/neutral/chunk-LR7UFVQX.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/filter/index.mjs +1 -2
- package/dist/lib/neutral/index.mjs +7332 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/{browser → neutral}/testing/index.mjs +49 -292
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/types/src/automerge/automerge-host-subduction.test.d.ts +2 -0
- package/dist/types/src/automerge/automerge-host-subduction.test.d.ts.map +1 -0
- package/dist/types/src/automerge/automerge-host.d.ts +105 -27
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
- package/dist/types/src/automerge/automerge-repo-subduction.test.d.ts +2 -0
- package/dist/types/src/automerge/automerge-repo-subduction.test.d.ts.map +1 -0
- package/dist/types/src/automerge/automerge-repo.test.d.ts +1 -1
- package/dist/types/src/automerge/automerge-repo.test.d.ts.map +1 -1
- package/dist/types/src/automerge/automerge-subduction.test.d.ts +2 -0
- package/dist/types/src/automerge/automerge-subduction.test.d.ts.map +1 -0
- package/dist/types/src/automerge/collection-synchronizer.d.ts +22 -2
- package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-data-monitor.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-network-adapter.d.ts +17 -11
- package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-replicator.d.ts +28 -16
- package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
- package/dist/types/src/automerge/errors.d.ts +35 -0
- package/dist/types/src/automerge/errors.d.ts.map +1 -0
- package/dist/types/src/automerge/handle-state.d.ts +52 -0
- package/dist/types/src/automerge/handle-state.d.ts.map +1 -0
- package/dist/types/src/automerge/heads-store.d.ts +9 -2
- package/dist/types/src/automerge/heads-store.d.ts.map +1 -1
- package/dist/types/src/automerge/index.d.ts +2 -0
- package/dist/types/src/automerge/index.d.ts.map +1 -1
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +10 -4
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts.map +1 -1
- package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts +8 -8
- package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts.map +1 -1
- package/dist/types/src/automerge/mesh-echo-replicator.d.ts +6 -5
- package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
- package/dist/types/src/automerge/network-protocol.d.ts.map +1 -1
- package/dist/types/src/automerge/space-collection.d.ts.map +1 -1
- package/dist/types/src/common/feeds.d.ts.map +1 -1
- package/dist/types/src/common/space-id.d.ts.map +1 -1
- package/dist/types/src/db-host/automerge-data-source.d.ts +35 -0
- package/dist/types/src/db-host/automerge-data-source.d.ts.map +1 -0
- package/dist/types/src/db-host/automerge-data-source.test.d.ts +2 -0
- package/dist/types/src/db-host/automerge-data-source.test.d.ts.map +1 -0
- package/dist/types/src/db-host/automerge-metrics.d.ts.map +1 -1
- package/dist/types/src/db-host/data-service.d.ts +12 -6
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/db-host/database-root.d.ts +9 -3
- package/dist/types/src/db-host/database-root.d.ts.map +1 -1
- package/dist/types/src/db-host/documents-synchronizer.d.ts +30 -8
- package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
- package/dist/types/src/db-host/echo-host.d.ts +74 -28
- package/dist/types/src/db-host/echo-host.d.ts.map +1 -1
- package/dist/types/src/db-host/index.d.ts +2 -0
- package/dist/types/src/db-host/index.d.ts.map +1 -1
- package/dist/types/src/db-host/invalidation-hint.d.ts +19 -0
- package/dist/types/src/db-host/invalidation-hint.d.ts.map +1 -0
- package/dist/types/src/db-host/local-queue-service.d.ts +19 -0
- package/dist/types/src/db-host/local-queue-service.d.ts.map +1 -0
- package/dist/types/src/db-host/query-invalidation.test.d.ts +2 -0
- package/dist/types/src/db-host/query-invalidation.test.d.ts.map +1 -0
- package/dist/types/src/db-host/query-service.d.ts +18 -10
- package/dist/types/src/db-host/query-service.d.ts.map +1 -1
- package/dist/types/src/db-host/queue-data-source.d.ts +38 -0
- package/dist/types/src/db-host/queue-data-source.d.ts.map +1 -0
- package/dist/types/src/db-host/queue-service.test.d.ts +2 -0
- package/dist/types/src/db-host/queue-service.test.d.ts.map +1 -0
- package/dist/types/src/db-host/space-state-manager.d.ts +3 -2
- package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -1
- package/dist/types/src/db-host/stub.d.ts +11 -0
- package/dist/types/src/db-host/stub.d.ts.map +1 -0
- package/dist/types/src/edge/echo-edge-replicator.d.ts +7 -6
- package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -1
- package/dist/types/src/edge/echo-edge-subduction-replicator.d.ts +39 -0
- package/dist/types/src/edge/echo-edge-subduction-replicator.d.ts.map +1 -0
- package/dist/types/src/edge/echo-edge-subduction-replicator.test.d.ts +2 -0
- package/dist/types/src/edge/echo-edge-subduction-replicator.test.d.ts.map +1 -0
- package/dist/types/src/edge/index.d.ts +1 -0
- package/dist/types/src/edge/index.d.ts.map +1 -1
- package/dist/types/src/edge/inflight-request-limiter.d.ts.map +1 -1
- package/dist/types/src/filter/filter-match.d.ts +1 -1
- package/dist/types/src/filter/filter-match.d.ts.map +1 -1
- package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
- package/dist/types/src/pipeline/message-selector.d.ts.map +1 -1
- package/dist/types/src/pipeline/pipeline.d.ts +2 -2
- package/dist/types/src/pipeline/pipeline.d.ts.map +1 -1
- package/dist/types/src/pipeline/timeframe-clock.d.ts.map +1 -1
- package/dist/types/src/query/errors.d.ts +16 -20
- package/dist/types/src/query/errors.d.ts.map +1 -1
- package/dist/types/src/query/plan.d.ts +59 -8
- package/dist/types/src/query/plan.d.ts.map +1 -1
- package/dist/types/src/query/query-executor.d.ts +55 -12
- package/dist/types/src/query/query-executor.d.ts.map +1 -1
- package/dist/types/src/query/query-planner.d.ts +10 -1
- package/dist/types/src/query/query-planner.d.ts.map +1 -1
- package/dist/types/src/space/admission-discovery-extension.d.ts.map +1 -1
- package/dist/types/src/space/auth.d.ts +3 -3
- package/dist/types/src/space/auth.d.ts.map +1 -1
- package/dist/types/src/space/control-pipeline.d.ts +4 -3
- package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/space-manager.d.ts +7 -7
- package/dist/types/src/space/space-manager.d.ts.map +1 -1
- package/dist/types/src/space/space-protocol.d.ts +9 -8
- package/dist/types/src/space/space-protocol.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +5 -5
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/change-metadata.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +0 -2
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-feed-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-network-adapter.d.ts +1 -1
- package/dist/types/src/testing/test-network-adapter.d.ts.map +1 -1
- package/dist/types/src/testing/test-replicator.d.ts +13 -13
- package/dist/types/src/testing/test-replicator.d.ts.map +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +56 -54
- package/src/automerge/automerge-host-subduction.test.ts +263 -0
- package/src/automerge/automerge-host.test.ts +145 -32
- package/src/automerge/automerge-host.ts +442 -163
- package/src/automerge/automerge-repo-subduction.test.ts +1054 -0
- package/src/automerge/automerge-repo.test.ts +284 -77
- package/src/automerge/automerge-subduction.test.ts +330 -0
- package/src/automerge/collection-synchronizer.test.ts +96 -16
- package/src/automerge/collection-synchronizer.ts +125 -26
- package/src/automerge/echo-network-adapter.test.ts +2 -1
- package/src/automerge/echo-network-adapter.ts +44 -32
- package/src/automerge/echo-replicator.ts +30 -16
- package/src/automerge/errors.ts +10 -0
- package/src/automerge/handle-state.ts +62 -0
- package/src/automerge/heads-store.ts +42 -3
- package/src/automerge/index.ts +2 -0
- package/src/automerge/leveldb-storage-adapter.ts +70 -4
- package/src/automerge/mesh-echo-replicator-connection.ts +8 -8
- package/src/automerge/mesh-echo-replicator.ts +14 -11
- package/src/db-host/automerge-data-source.test.ts +299 -0
- package/src/db-host/automerge-data-source.ts +187 -0
- package/src/db-host/data-service.ts +27 -10
- package/src/db-host/database-root.ts +19 -7
- package/src/db-host/documents-synchronizer.test.ts +145 -14
- package/src/db-host/documents-synchronizer.ts +158 -59
- package/src/db-host/echo-host.ts +376 -90
- package/src/db-host/index.ts +2 -0
- package/src/db-host/invalidation-hint.ts +50 -0
- package/src/db-host/local-queue-service.ts +127 -0
- package/src/db-host/query-invalidation.test.ts +270 -0
- package/src/db-host/query-service.ts +108 -111
- package/src/db-host/queue-data-source.ts +160 -0
- package/src/db-host/queue-service.test.ts +145 -0
- package/src/db-host/space-state-manager.ts +11 -9
- package/src/db-host/stub.ts +33 -0
- package/src/edge/echo-edge-replicator.test.ts +9 -9
- package/src/edge/echo-edge-replicator.ts +50 -42
- package/src/edge/echo-edge-subduction-replicator.test.ts +158 -0
- package/src/edge/echo-edge-subduction-replicator.ts +377 -0
- package/src/edge/index.ts +1 -0
- package/src/filter/filter-match.test.ts +41 -25
- package/src/filter/filter-match.ts +75 -20
- package/src/metadata/metadata-store.ts +8 -5
- package/src/pipeline/pipeline-stress.test.ts +1 -3
- package/src/pipeline/pipeline.test.ts +0 -1
- package/src/pipeline/pipeline.ts +2 -3
- package/src/query/errors.ts +2 -2
- package/src/query/plan.ts +73 -9
- package/src/query/query-executor.ts +1064 -172
- package/src/query/query-planner.test.ts +854 -86
- package/src/query/query-planner.ts +444 -38
- package/src/space/admission-discovery-extension.ts +1 -1
- package/src/space/auth.ts +6 -6
- package/src/space/control-pipeline.test.ts +2 -2
- package/src/space/control-pipeline.ts +7 -7
- package/src/space/space-manager.ts +12 -17
- package/src/space/space-protocol.browser.test.ts +13 -12
- package/src/space/space-protocol.test.ts +13 -13
- package/src/space/space-protocol.ts +16 -15
- package/src/space/space.test.ts +2 -2
- package/src/space/space.ts +9 -10
- package/src/testing/index.ts +0 -2
- package/src/testing/test-agent-builder.ts +0 -1
- package/src/testing/test-network-adapter.ts +24 -3
- package/src/testing/test-replicator.ts +15 -20
- package/src/util.ts +7 -3
- package/dist/lib/browser/chunk-CGS2ULMK.mjs +0 -11
- package/dist/lib/browser/chunk-CGS2ULMK.mjs.map +0 -7
- package/dist/lib/browser/chunk-FR6GJ4S4.mjs.map +0 -7
- package/dist/lib/browser/chunk-WJJXJTNS.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -5492
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JQCCVDLT.mjs +0 -2144
- package/dist/lib/node-esm/chunk-JQCCVDLT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LEQ77KAT.mjs +0 -240
- package/dist/lib/node-esm/chunk-LEQ77KAT.mjs.map +0 -7
- package/dist/lib/node-esm/filter/index.mjs +0 -13
- package/dist/lib/node-esm/filter/index.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -5492
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/testing/index.mjs +0 -764
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/types/src/db-host/documents-iterator.d.ts +0 -7
- package/dist/types/src/db-host/documents-iterator.d.ts.map +0 -1
- package/dist/types/src/testing/test-data.d.ts +0 -18
- package/dist/types/src/testing/test-data.d.ts.map +0 -1
- package/dist/types/src/testing/test-schema.d.ts +0 -37
- package/dist/types/src/testing/test-schema.d.ts.map +0 -1
- package/src/db-host/documents-iterator.ts +0 -74
- package/src/testing/test-data.ts +0 -127
- package/src/testing/test-schema.ts +0 -53
- /package/dist/lib/{browser → neutral}/filter/index.mjs.map +0 -0
|
@@ -6,10 +6,7 @@ import {
|
|
|
6
6
|
SpaceManager,
|
|
7
7
|
SpaceProtocol,
|
|
8
8
|
valueEncoding
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import {
|
|
11
|
-
__export
|
|
12
|
-
} from "../chunk-CGS2ULMK.mjs";
|
|
9
|
+
} from "../chunk-LR7UFVQX.mjs";
|
|
13
10
|
|
|
14
11
|
// src/testing/change-metadata.ts
|
|
15
12
|
import { log } from "@dxos/log";
|
|
@@ -17,12 +14,7 @@ import { schema } from "@dxos/protocols/proto";
|
|
|
17
14
|
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/change-metadata.ts";
|
|
18
15
|
var EchoMetadata = schema.getCodecForType("dxos.echo.metadata.EchoMetadata");
|
|
19
16
|
var changeStorageVersionInMetadata = async (storage, version) => {
|
|
20
|
-
log("Changing storage version in metadata. USE ONLY FOR TESTING.", void 0, {
|
|
21
|
-
F: __dxlog_file,
|
|
22
|
-
L: 19,
|
|
23
|
-
S: void 0,
|
|
24
|
-
C: (f, a) => f(...a)
|
|
25
|
-
});
|
|
17
|
+
log("Changing storage version in metadata. USE ONLY FOR TESTING.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 13, S: void 0 });
|
|
26
18
|
const metadata = new MetadataStore(storage.createDirectory("metadata"));
|
|
27
19
|
await metadata.load();
|
|
28
20
|
const echoMetadata = metadata.metadata;
|
|
@@ -130,8 +122,8 @@ var TestAgent = class {
|
|
|
130
122
|
get spaces() {
|
|
131
123
|
return Array.from(this._spaces.values());
|
|
132
124
|
}
|
|
133
|
-
getSpace(
|
|
134
|
-
return this._spaces.get(
|
|
125
|
+
getSpace(spaceKey) {
|
|
126
|
+
return this._spaces.get(spaceKey);
|
|
135
127
|
}
|
|
136
128
|
_networkManager;
|
|
137
129
|
get networkManager() {
|
|
@@ -154,10 +146,10 @@ var TestAgent = class {
|
|
|
154
146
|
blobStore: this.blobStore
|
|
155
147
|
});
|
|
156
148
|
}
|
|
157
|
-
async createSpace(identityKey = this.identityKey,
|
|
158
|
-
if (!
|
|
149
|
+
async createSpace(identityKey = this.identityKey, spaceKey, genesisKey, dataKey, saveMetadata = false) {
|
|
150
|
+
if (!spaceKey) {
|
|
159
151
|
saveMetadata = true;
|
|
160
|
-
|
|
152
|
+
spaceKey = await this.keyring.createKey();
|
|
161
153
|
}
|
|
162
154
|
if (!genesisKey) {
|
|
163
155
|
genesisKey = await this.keyring.createKey();
|
|
@@ -170,7 +162,7 @@ var TestAgent = class {
|
|
|
170
162
|
sparse: true
|
|
171
163
|
});
|
|
172
164
|
const metadata = {
|
|
173
|
-
key:
|
|
165
|
+
key: spaceKey,
|
|
174
166
|
genesisFeedKey: genesisKey,
|
|
175
167
|
controlFeedKey: controlFeed.key,
|
|
176
168
|
dataFeedKey: dataFeed.key
|
|
@@ -200,11 +192,8 @@ var TestAgent = class {
|
|
|
200
192
|
});
|
|
201
193
|
await space.setControlFeed(controlFeed);
|
|
202
194
|
await space.setDataFeed(dataFeed);
|
|
203
|
-
await space.open(new Context(void 0, {
|
|
204
|
-
|
|
205
|
-
L: 206
|
|
206
|
-
}));
|
|
207
|
-
this._spaces.set(spaceKey2, space);
|
|
195
|
+
await space.open(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 164 }));
|
|
196
|
+
this._spaces.set(spaceKey, space);
|
|
208
197
|
return space;
|
|
209
198
|
}
|
|
210
199
|
createSpaceProtocol(topic, gossip) {
|
|
@@ -263,12 +252,30 @@ import { log as log2 } from "@dxos/log";
|
|
|
263
252
|
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts";
|
|
264
253
|
var TestAdapter = class _TestAdapter extends NetworkAdapter {
|
|
265
254
|
_params;
|
|
266
|
-
static createPair(connectionStateProvider = () => "on") {
|
|
255
|
+
static createPair(connectionStateProvider = () => "on", onMessage) {
|
|
267
256
|
const adapter1 = new _TestAdapter({
|
|
268
|
-
send: (message) =>
|
|
257
|
+
send: (message) => {
|
|
258
|
+
onMessage?.(message);
|
|
259
|
+
if (connectionStateProvider() === "on") {
|
|
260
|
+
void sleep(10).then(() => {
|
|
261
|
+
if (connectionStateProvider() === "on" && adapter2.peerId) {
|
|
262
|
+
adapter2.receive(message);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
269
267
|
});
|
|
270
268
|
const adapter2 = new _TestAdapter({
|
|
271
|
-
send: (message) =>
|
|
269
|
+
send: (message) => {
|
|
270
|
+
onMessage?.(message);
|
|
271
|
+
if (connectionStateProvider() === "on") {
|
|
272
|
+
void sleep(10).then(() => {
|
|
273
|
+
if (connectionStateProvider() === "on" && adapter1.peerId) {
|
|
274
|
+
adapter1.receive(message);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
272
279
|
});
|
|
273
280
|
return [
|
|
274
281
|
adapter1,
|
|
@@ -290,30 +297,14 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
|
|
|
290
297
|
this.onConnect.wake();
|
|
291
298
|
}
|
|
292
299
|
peerCandidate(peerId) {
|
|
293
|
-
invariant(peerId, "PeerId is required", {
|
|
294
|
-
F: __dxlog_file3,
|
|
295
|
-
L: 45,
|
|
296
|
-
S: this,
|
|
297
|
-
A: [
|
|
298
|
-
"peerId",
|
|
299
|
-
"'PeerId is required'"
|
|
300
|
-
]
|
|
301
|
-
});
|
|
300
|
+
invariant(peerId, "PeerId is required", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 55, S: this, A: ["peerId", "'PeerId is required'"] });
|
|
302
301
|
this.emit("peer-candidate", {
|
|
303
302
|
peerId,
|
|
304
303
|
peerMetadata: {}
|
|
305
304
|
});
|
|
306
305
|
}
|
|
307
306
|
peerDisconnected(peerId) {
|
|
308
|
-
invariant(peerId, "PeerId is required", {
|
|
309
|
-
F: __dxlog_file3,
|
|
310
|
-
L: 50,
|
|
311
|
-
S: this,
|
|
312
|
-
A: [
|
|
313
|
-
"peerId",
|
|
314
|
-
"'PeerId is required'"
|
|
315
|
-
]
|
|
316
|
-
});
|
|
307
|
+
invariant(peerId, "PeerId is required", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 62, S: this, A: ["peerId", "'PeerId is required'"] });
|
|
317
308
|
this.emit("peer-disconnected", {
|
|
318
309
|
peerId
|
|
319
310
|
});
|
|
@@ -323,27 +314,14 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
|
|
|
323
314
|
from: message.senderId,
|
|
324
315
|
to: message.targetId,
|
|
325
316
|
type: message.type
|
|
326
|
-
}, {
|
|
327
|
-
F: __dxlog_file3,
|
|
328
|
-
L: 55,
|
|
329
|
-
S: this,
|
|
330
|
-
C: (f, a) => f(...a)
|
|
331
|
-
});
|
|
317
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 68, S: this });
|
|
332
318
|
this._params.send(message);
|
|
333
319
|
}
|
|
334
320
|
disconnect() {
|
|
335
321
|
this.peerId = void 0;
|
|
336
322
|
}
|
|
337
323
|
receive(message) {
|
|
338
|
-
invariant(this.peerId, "Peer id is not set", {
|
|
339
|
-
F: __dxlog_file3,
|
|
340
|
-
L: 64,
|
|
341
|
-
S: this,
|
|
342
|
-
A: [
|
|
343
|
-
"this.peerId",
|
|
344
|
-
"'Peer id is not set'"
|
|
345
|
-
]
|
|
346
|
-
});
|
|
324
|
+
invariant(this.peerId, "Peer id is not set", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 79, S: this, A: ["this.peerId", "'Peer id is not set'"] });
|
|
347
325
|
this.emit("message", message);
|
|
348
326
|
}
|
|
349
327
|
};
|
|
@@ -353,14 +331,14 @@ import { sleep as sleep2, synchronized } from "@dxos/async";
|
|
|
353
331
|
import { LifecycleState, Resource } from "@dxos/context";
|
|
354
332
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
355
333
|
import { log as log3 } from "@dxos/log";
|
|
356
|
-
import
|
|
334
|
+
import * as TeleportAutomergeReplicator from "@dxos/teleport-extension-automerge-replicator";
|
|
335
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-replicator.ts";
|
|
357
336
|
function _ts_decorate(decorators, target, key, desc) {
|
|
358
337
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
359
338
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
360
339
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
361
340
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
362
341
|
}
|
|
363
|
-
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-replicator.ts";
|
|
364
342
|
var TestReplicationNetwork = class extends Resource {
|
|
365
343
|
_replicators = /* @__PURE__ */ new Set();
|
|
366
344
|
_latency = void 0;
|
|
@@ -368,7 +346,7 @@ var TestReplicationNetwork = class extends Resource {
|
|
|
368
346
|
super();
|
|
369
347
|
this._latency = options.latency;
|
|
370
348
|
}
|
|
371
|
-
async _close(
|
|
349
|
+
async _close(_ctx) {
|
|
372
350
|
for (const replicator of this._replicators) {
|
|
373
351
|
for (const connection of replicator.connections) {
|
|
374
352
|
void connection.writable.abort();
|
|
@@ -379,27 +357,11 @@ var TestReplicationNetwork = class extends Resource {
|
|
|
379
357
|
async createReplicator() {
|
|
380
358
|
const replicator = new TestReplicator({
|
|
381
359
|
onConnect: async () => {
|
|
382
|
-
invariant2(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
383
|
-
F: __dxlog_file4,
|
|
384
|
-
L: 45,
|
|
385
|
-
S: this,
|
|
386
|
-
A: [
|
|
387
|
-
"this._lifecycleState === LifecycleState.OPEN",
|
|
388
|
-
""
|
|
389
|
-
]
|
|
390
|
-
});
|
|
360
|
+
invariant2(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 33, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
|
|
391
361
|
await this._connectReplicator(replicator);
|
|
392
362
|
},
|
|
393
363
|
onDisconnect: async () => {
|
|
394
|
-
invariant2(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
395
|
-
F: __dxlog_file4,
|
|
396
|
-
L: 49,
|
|
397
|
-
S: this,
|
|
398
|
-
A: [
|
|
399
|
-
"this._lifecycleState === LifecycleState.OPEN",
|
|
400
|
-
""
|
|
401
|
-
]
|
|
402
|
-
});
|
|
364
|
+
invariant2(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 37, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
|
|
403
365
|
await this._disconnectReplicator(replicator);
|
|
404
366
|
}
|
|
405
367
|
});
|
|
@@ -414,12 +376,7 @@ var TestReplicationNetwork = class extends Resource {
|
|
|
414
376
|
log3("create connection", {
|
|
415
377
|
from: replicator.context.peerId,
|
|
416
378
|
to: otherReplicator.context.peerId
|
|
417
|
-
}, {
|
|
418
|
-
F: __dxlog_file4,
|
|
419
|
-
L: 63,
|
|
420
|
-
S: this,
|
|
421
|
-
C: (f, a) => f(...a)
|
|
422
|
-
});
|
|
379
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 49, S: this });
|
|
423
380
|
const [connection1, connection2] = this._createConnectionPair(replicator.context.peerId, otherReplicator.context.peerId);
|
|
424
381
|
await replicator.context.onConnectionOpen(connection1);
|
|
425
382
|
await otherReplicator.context.onConnectionOpen(connection2);
|
|
@@ -440,12 +397,7 @@ var TestReplicationNetwork = class extends Resource {
|
|
|
440
397
|
from: peer1,
|
|
441
398
|
to: peer2,
|
|
442
399
|
message
|
|
443
|
-
}, {
|
|
444
|
-
F: __dxlog_file4,
|
|
445
|
-
L: 86,
|
|
446
|
-
S: this,
|
|
447
|
-
C: (f, a) => f(...a)
|
|
448
|
-
});
|
|
400
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 69, S: this });
|
|
449
401
|
}
|
|
450
402
|
if (this._latency !== void 0) {
|
|
451
403
|
await sleep2(this._latency);
|
|
@@ -460,12 +412,7 @@ var TestReplicationNetwork = class extends Resource {
|
|
|
460
412
|
from: peer2,
|
|
461
413
|
to: peer1,
|
|
462
414
|
message
|
|
463
|
-
}, {
|
|
464
|
-
F: __dxlog_file4,
|
|
465
|
-
L: 99,
|
|
466
|
-
S: this,
|
|
467
|
-
C: (f, a) => f(...a)
|
|
468
|
-
});
|
|
415
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 84, S: this });
|
|
469
416
|
}
|
|
470
417
|
if (this._latency !== void 0) {
|
|
471
418
|
await sleep2(this._latency);
|
|
@@ -494,15 +441,10 @@ var TestReplicator = class {
|
|
|
494
441
|
connected = false;
|
|
495
442
|
context = void 0;
|
|
496
443
|
connections = /* @__PURE__ */ new Set();
|
|
497
|
-
async connect(context) {
|
|
444
|
+
async connect(_ctx, context) {
|
|
498
445
|
log3("connect", {
|
|
499
446
|
peerId: context.peerId
|
|
500
|
-
}, {
|
|
501
|
-
F: __dxlog_file4,
|
|
502
|
-
L: 131,
|
|
503
|
-
S: this,
|
|
504
|
-
C: (f, a) => f(...a)
|
|
505
|
-
});
|
|
447
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 118, S: this });
|
|
506
448
|
this.context = context;
|
|
507
449
|
this.connected = true;
|
|
508
450
|
await this._params.onConnect();
|
|
@@ -510,12 +452,7 @@ var TestReplicator = class {
|
|
|
510
452
|
async disconnect() {
|
|
511
453
|
log3("disconnect", {
|
|
512
454
|
peerId: this.context.peerId
|
|
513
|
-
}, {
|
|
514
|
-
F: __dxlog_file4,
|
|
515
|
-
L: 138,
|
|
516
|
-
S: this,
|
|
517
|
-
C: (f, a) => f(...a)
|
|
518
|
-
});
|
|
455
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 126, S: this });
|
|
519
456
|
this.connected = false;
|
|
520
457
|
await this._params.onDisconnect();
|
|
521
458
|
}
|
|
@@ -544,15 +481,15 @@ var TestReplicatorConnection = class {
|
|
|
544
481
|
get bundleSyncEnabled() {
|
|
545
482
|
return false;
|
|
546
483
|
}
|
|
547
|
-
async shouldAdvertise(
|
|
484
|
+
async shouldAdvertise() {
|
|
548
485
|
return true;
|
|
549
486
|
}
|
|
550
|
-
shouldSyncCollection(
|
|
487
|
+
shouldSyncCollection() {
|
|
551
488
|
return true;
|
|
552
489
|
}
|
|
553
490
|
};
|
|
554
491
|
var testAutomergeReplicatorFactory = (params) => {
|
|
555
|
-
return new AutomergeReplicator({
|
|
492
|
+
return new TeleportAutomergeReplicator.AutomergeReplicator({
|
|
556
493
|
...params[0],
|
|
557
494
|
sendSyncRetryPolicy: {
|
|
558
495
|
retryBackoff: 20,
|
|
@@ -567,195 +504,15 @@ var brokenAutomergeReplicatorFactory = (params) => {
|
|
|
567
504
|
};
|
|
568
505
|
return testAutomergeReplicatorFactory(params);
|
|
569
506
|
};
|
|
570
|
-
|
|
571
|
-
// src/testing/test-schema.ts
|
|
572
|
-
var test_schema_exports = {};
|
|
573
|
-
__export(test_schema_exports, {
|
|
574
|
-
Organization: () => Organization,
|
|
575
|
-
Person: () => Person,
|
|
576
|
-
Task: () => Task,
|
|
577
|
-
WorksFor: () => WorksFor
|
|
578
|
-
});
|
|
579
|
-
import * as Schema from "effect/Schema";
|
|
580
|
-
import { Type } from "@dxos/echo";
|
|
581
|
-
var Person = Schema.Struct({
|
|
582
|
-
name: Schema.String,
|
|
583
|
-
email: Schema.optional(Schema.String),
|
|
584
|
-
age: Schema.optional(Schema.Number)
|
|
585
|
-
}).pipe(Type.Obj({
|
|
586
|
-
typename: "dxos.org/type/Person",
|
|
587
|
-
version: "0.1.0"
|
|
588
|
-
}));
|
|
589
|
-
var Organization = Schema.Struct({
|
|
590
|
-
name: Schema.String
|
|
591
|
-
}).pipe(Type.Obj({
|
|
592
|
-
typename: "dxos.org/type/Organization",
|
|
593
|
-
version: "0.1.0"
|
|
594
|
-
}));
|
|
595
|
-
var WorksFor = Schema.Struct({
|
|
596
|
-
since: Schema.String
|
|
597
|
-
}).pipe(Type.Relation({
|
|
598
|
-
typename: "dxos.org/type/WorksFor",
|
|
599
|
-
version: "0.1.0",
|
|
600
|
-
source: Person,
|
|
601
|
-
target: Organization
|
|
602
|
-
}));
|
|
603
|
-
var Task = Schema.Struct({
|
|
604
|
-
title: Schema.String,
|
|
605
|
-
createdAt: Schema.String,
|
|
606
|
-
assignee: Type.Ref(Person)
|
|
607
|
-
}).pipe(Type.Obj({
|
|
608
|
-
typename: "dxos.org/type/Task",
|
|
609
|
-
version: "0.1.0"
|
|
610
|
-
}));
|
|
611
|
-
|
|
612
|
-
// src/testing/test-data.ts
|
|
613
|
-
var test_data_exports = {};
|
|
614
|
-
__export(test_data_exports, {
|
|
615
|
-
ORGS: () => ORGS,
|
|
616
|
-
PEOPLE: () => PEOPLE,
|
|
617
|
-
TASKS: () => TASKS,
|
|
618
|
-
WORKS_FOR: () => WORKS_FOR
|
|
619
|
-
});
|
|
620
|
-
import { getSchemaDXN } from "@dxos/echo/internal";
|
|
621
|
-
import { DatabaseDirectory, ObjectStructure } from "@dxos/echo-protocol";
|
|
622
|
-
import { DXN, ObjectId, PublicKey as PublicKey2 } from "@dxos/keys";
|
|
623
|
-
var spaceKey = PublicKey2.random();
|
|
624
|
-
var PEOPLE = {
|
|
625
|
-
fred: DatabaseDirectory.make({
|
|
626
|
-
spaceKey: spaceKey.toHex(),
|
|
627
|
-
objects: {
|
|
628
|
-
[ObjectId.random()]: ObjectStructure.makeObject({
|
|
629
|
-
type: getSchemaDXN(Person).toString(),
|
|
630
|
-
data: {
|
|
631
|
-
name: "Fred"
|
|
632
|
-
}
|
|
633
|
-
})
|
|
634
|
-
}
|
|
635
|
-
}),
|
|
636
|
-
alice: DatabaseDirectory.make({
|
|
637
|
-
spaceKey: spaceKey.toHex(),
|
|
638
|
-
objects: {
|
|
639
|
-
[ObjectId.random()]: ObjectStructure.makeObject({
|
|
640
|
-
type: getSchemaDXN(Person).toString(),
|
|
641
|
-
data: {
|
|
642
|
-
name: "Alice"
|
|
643
|
-
}
|
|
644
|
-
})
|
|
645
|
-
}
|
|
646
|
-
})
|
|
647
|
-
};
|
|
648
|
-
var ORGS = {
|
|
649
|
-
cyberdyne: DatabaseDirectory.make({
|
|
650
|
-
spaceKey: spaceKey.toHex(),
|
|
651
|
-
objects: {
|
|
652
|
-
[ObjectId.random()]: ObjectStructure.makeObject({
|
|
653
|
-
type: getSchemaDXN(Organization).toString(),
|
|
654
|
-
data: {
|
|
655
|
-
name: "Cyberdyne Systems",
|
|
656
|
-
founded: "1984"
|
|
657
|
-
}
|
|
658
|
-
})
|
|
659
|
-
}
|
|
660
|
-
}),
|
|
661
|
-
aperture: DatabaseDirectory.make({
|
|
662
|
-
spaceKey: spaceKey.toHex(),
|
|
663
|
-
objects: {
|
|
664
|
-
[ObjectId.random()]: ObjectStructure.makeObject({
|
|
665
|
-
type: getSchemaDXN(Organization).toString(),
|
|
666
|
-
data: {
|
|
667
|
-
name: "Aperture Science",
|
|
668
|
-
founded: "1953"
|
|
669
|
-
}
|
|
670
|
-
})
|
|
671
|
-
}
|
|
672
|
-
})
|
|
673
|
-
};
|
|
674
|
-
var WORKS_FOR = {
|
|
675
|
-
fredWorksForCyberdyne: DatabaseDirectory.make({
|
|
676
|
-
spaceKey: spaceKey.toHex(),
|
|
677
|
-
objects: {
|
|
678
|
-
[ObjectId.random()]: ObjectStructure.makeRelation({
|
|
679
|
-
type: getSchemaDXN(WorksFor).toString(),
|
|
680
|
-
source: {
|
|
681
|
-
"/": DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
|
|
682
|
-
},
|
|
683
|
-
target: {
|
|
684
|
-
"/": DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects)[0]).toString()
|
|
685
|
-
},
|
|
686
|
-
data: {
|
|
687
|
-
since: "2020",
|
|
688
|
-
position: "Engineer"
|
|
689
|
-
}
|
|
690
|
-
})
|
|
691
|
-
}
|
|
692
|
-
}),
|
|
693
|
-
aliceWorksForAperture: DatabaseDirectory.make({
|
|
694
|
-
spaceKey: spaceKey.toHex(),
|
|
695
|
-
objects: {
|
|
696
|
-
[ObjectId.random()]: ObjectStructure.makeRelation({
|
|
697
|
-
type: getSchemaDXN(WorksFor).toString(),
|
|
698
|
-
source: {
|
|
699
|
-
"/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
|
|
700
|
-
},
|
|
701
|
-
target: {
|
|
702
|
-
"/": DXN.fromLocalObjectId(Object.keys(ORGS.aperture.objects)[0]).toString()
|
|
703
|
-
},
|
|
704
|
-
data: {
|
|
705
|
-
since: "2018",
|
|
706
|
-
position: "Research Scientist"
|
|
707
|
-
}
|
|
708
|
-
})
|
|
709
|
-
}
|
|
710
|
-
})
|
|
711
|
-
};
|
|
712
|
-
var TASKS = {
|
|
713
|
-
task1: DatabaseDirectory.make({
|
|
714
|
-
spaceKey: spaceKey.toHex(),
|
|
715
|
-
objects: {
|
|
716
|
-
[ObjectId.random()]: ObjectStructure.makeObject({
|
|
717
|
-
type: getSchemaDXN(Task).toString(),
|
|
718
|
-
data: {
|
|
719
|
-
title: "Complete project documentation",
|
|
720
|
-
description: "Write comprehensive documentation for the new system",
|
|
721
|
-
status: "in-progress",
|
|
722
|
-
dueDate: "2023-12-31",
|
|
723
|
-
assignee: {
|
|
724
|
-
"/": DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
|
-
})
|
|
728
|
-
}
|
|
729
|
-
}),
|
|
730
|
-
task2: DatabaseDirectory.make({
|
|
731
|
-
spaceKey: spaceKey.toHex(),
|
|
732
|
-
objects: {
|
|
733
|
-
[ObjectId.random()]: ObjectStructure.makeObject({
|
|
734
|
-
type: getSchemaDXN(Task).toString(),
|
|
735
|
-
data: {
|
|
736
|
-
title: "Run experiments",
|
|
737
|
-
description: "Conduct series of experiments on the portal device",
|
|
738
|
-
status: "pending",
|
|
739
|
-
dueDate: "2023-11-15",
|
|
740
|
-
assignee: {
|
|
741
|
-
"/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
})
|
|
745
|
-
}
|
|
746
|
-
})
|
|
747
|
-
};
|
|
748
507
|
export {
|
|
749
508
|
MemoryNetworkManagerProvider,
|
|
750
509
|
TestAdapter,
|
|
751
510
|
TestAgent,
|
|
752
511
|
TestAgentBuilder,
|
|
753
|
-
test_data_exports as TestData,
|
|
754
512
|
TestFeedBuilder,
|
|
755
513
|
TestReplicationNetwork,
|
|
756
514
|
TestReplicator,
|
|
757
515
|
TestReplicatorConnection,
|
|
758
|
-
test_schema_exports as TestSchema,
|
|
759
516
|
WebsocketNetworkManagerProvider,
|
|
760
517
|
brokenAutomergeReplicatorFactory,
|
|
761
518
|
changeStorageVersionInMetadata,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/testing/change-metadata.ts", "../../../../src/testing/test-agent-builder.ts", "../../../../src/testing/test-feed-builder.ts", "../../../../src/testing/test-network-adapter.ts", "../../../../src/testing/test-replicator.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols/proto';\nimport type { Storage } from '@dxos/random-access-storage';\n\nimport { MetadataStore } from '../metadata';\n\nconst EchoMetadata = schema.getCodecForType('dxos.echo.metadata.EchoMetadata');\n\n/**\n * This function will change the storage version in the metadata.\n * This will break your storage and make it unusable.\n * Use this only for testing purposes.\n */\nexport const changeStorageVersionInMetadata = async (storage: Storage, version: number) => {\n log('Changing storage version in metadata. USE ONLY FOR TESTING.');\n const metadata = new MetadataStore(storage.createDirectory('metadata'));\n await metadata.load();\n const echoMetadata = metadata.metadata;\n echoMetadata.version = version;\n const file = metadata._directory.getOrCreateFile('EchoMetadata');\n await metadata._writeFile(file, EchoMetadata, echoMetadata);\n await metadata._directory.flush();\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Context } from '@dxos/context';\nimport { CredentialGenerator } from '@dxos/credentials';\nimport { type FeedStore } from '@dxos/feed-store';\nimport { type Keyring } from '@dxos/keyring';\nimport { PublicKey } from '@dxos/keys';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { MemoryTransportFactory, SwarmNetworkManager, createRtcTransportFactory } from '@dxos/network-manager';\nimport { type FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { type SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { AdmittedFeed } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { type Storage, StorageType, createStorage } from '@dxos/random-access-storage';\nimport { Gossip, Presence } from '@dxos/teleport-extension-gossip';\nimport { BlobStore } from '@dxos/teleport-extension-object-sync';\nimport { ComplexMap } from '@dxos/util';\n\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, type Space, SpaceManager, SpaceProtocol } from '../space';\nimport { TestFeedBuilder } from './test-feed-builder';\n\nexport type NetworkManagerProvider = () => SwarmNetworkManager;\n\nexport const MemoryNetworkManagerProvider =\n (signalContext: MemorySignalManagerContext): NetworkManagerProvider =>\n () =>\n new SwarmNetworkManager({\n signalManager: new MemorySignalManager(signalContext),\n transportFactory: MemoryTransportFactory,\n });\n\nexport const WebsocketNetworkManagerProvider =\n (signalUrl: string): NetworkManagerProvider =>\n () =>\n new SwarmNetworkManager({\n signalManager: new WebsocketSignalManager([{ server: signalUrl }]),\n transportFactory: createRtcTransportFactory(),\n });\n\nexport type TestAgentBuilderOptions = {\n storage?: Storage;\n networkManagerProvider?: NetworkManagerProvider;\n};\n\n/**\n * Factory for test agents.\n */\nexport class TestAgentBuilder {\n private readonly _agents = new ComplexMap<PublicKey, TestAgent>(PublicKey.hash);\n private readonly _storage: Storage;\n private readonly _networkManagerProvider: NetworkManagerProvider;\n\n constructor({ storage, networkManagerProvider }: TestAgentBuilderOptions = {}) {\n this._storage = storage ?? createStorage({ type: StorageType.RAM });\n this._networkManagerProvider =\n networkManagerProvider ?? MemoryNetworkManagerProvider(new MemorySignalManagerContext());\n }\n\n async close() {\n return Promise.all(this.agents.map((agent) => agent.close()));\n }\n\n get agents() {\n return Array.from(this._agents.values());\n }\n\n getAgent(deviceKey: PublicKey): TestAgent | undefined {\n return this._agents.get(deviceKey);\n }\n\n async createPeer(): Promise<TestAgent> {\n // prettier-ignore\n const feedBuilder = new TestFeedBuilder()\n .setStorage(this._storage, `agent-${this._agents.size}`);\n\n const identityKey = await feedBuilder.keyring.createKey();\n const deviceKey = await feedBuilder.keyring.createKey();\n\n const agent = new TestAgent(this._networkManagerProvider, feedBuilder, identityKey, deviceKey);\n this._agents.set(deviceKey, agent);\n return agent;\n }\n}\n\n/**\n * Test agent that enables the creation and replication of multiple spaces.\n */\nexport class TestAgent {\n private readonly _spaces = new ComplexMap<PublicKey, Space>(PublicKey.hash);\n\n public readonly storage: Storage;\n public readonly keyring: Keyring;\n public readonly feedStore: FeedStore<FeedMessage>;\n\n private _metadataStore?: MetadataStore;\n get metadataStore() {\n return (this._metadataStore ??= new MetadataStore(this.storage.createDirectory('metadata')));\n }\n\n private _blobStore?: BlobStore;\n get blobStore() {\n return (this._blobStore ??= new BlobStore(this.storage.createDirectory('blobs')));\n }\n\n constructor(\n private readonly _networkManagerProvider: NetworkManagerProvider,\n private readonly _feedBuilder: TestFeedBuilder,\n public readonly identityKey: PublicKey,\n public readonly deviceKey: PublicKey,\n ) {\n this.storage = this._feedBuilder.storage;\n this.keyring = this._feedBuilder.keyring;\n this.feedStore = this._feedBuilder.createFeedStore();\n }\n\n async close() {\n return Promise.all([...this.spaces.map((space) => space.close())]);\n }\n\n get spaces() {\n return Array.from(this._spaces.values());\n }\n\n getSpace(spaceKey: PublicKey): Space | undefined {\n return this._spaces.get(spaceKey);\n }\n\n private _networkManager?: SwarmNetworkManager;\n get networkManager() {\n if (this._networkManager) {\n return this._networkManager;\n }\n\n this._networkManager = this._networkManagerProvider();\n this._networkManager.setPeerInfo({ peerKey: this.deviceKey.toHex(), identityKey: this.identityKey.toHex() });\n\n return this._networkManager;\n }\n\n private _spaceManager?: SpaceManager;\n get spaceManager() {\n return (this._spaceManager ??= new SpaceManager({\n feedStore: this.feedStore,\n networkManager: this.networkManager,\n metadataStore: this.metadataStore,\n blobStore: this.blobStore,\n }));\n }\n\n async createSpace(\n identityKey: PublicKey = this.identityKey,\n spaceKey?: PublicKey,\n genesisKey?: PublicKey,\n dataKey?: PublicKey,\n saveMetadata = false,\n ): Promise<Space> {\n if (!spaceKey) {\n saveMetadata = true;\n spaceKey = await this.keyring.createKey();\n }\n if (!genesisKey) {\n genesisKey = await this.keyring.createKey();\n }\n\n const controlFeed = await this.feedStore.openFeed(genesisKey, { writable: true });\n const dataFeed = await this.feedStore.openFeed(dataKey ?? (await this.keyring.createKey()), {\n writable: true,\n sparse: true,\n });\n\n const metadata: SpaceMetadata = {\n key: spaceKey,\n genesisFeedKey: genesisKey,\n controlFeedKey: controlFeed.key,\n dataFeedKey: dataFeed.key,\n };\n if (saveMetadata) {\n await this.metadataStore.addSpace(metadata);\n }\n\n await this.spaceManager.open();\n const space = await this.spaceManager.constructSpace({\n metadata,\n swarmIdentity: {\n identityKey: this.identityKey,\n peerKey: this.deviceKey,\n credentialProvider: MOCK_AUTH_PROVIDER,\n credentialAuthenticator: MOCK_AUTH_VERIFIER,\n },\n memberKey: identityKey,\n onAuthorizedConnection: (session) => {\n session.addExtension(\n 'dxos.mesh.teleport.gossip',\n this.createGossip().createExtension({ remotePeerId: session.remotePeerId }),\n );\n },\n onDelegatedInvitationStatusChange: async () => {},\n onMemberRolesChanged: async () => {},\n });\n await space.setControlFeed(controlFeed);\n await space.setDataFeed(dataFeed);\n\n await space.open(new Context());\n\n this._spaces.set(spaceKey, space);\n return space;\n }\n\n createSpaceProtocol(topic: PublicKey, gossip?: Gossip): SpaceProtocol {\n return new SpaceProtocol({\n topic,\n swarmIdentity: {\n identityKey: this.identityKey,\n peerKey: this.deviceKey,\n credentialProvider: MOCK_AUTH_PROVIDER,\n credentialAuthenticator: MOCK_AUTH_VERIFIER,\n },\n networkManager: this.networkManager,\n blobStore: this.blobStore,\n onSessionAuth: (session) => {\n session.addExtension(\n 'dxos.mesh.teleport.gossip',\n (gossip ?? this.createGossip()).createExtension({ remotePeerId: session.remotePeerId }),\n );\n },\n });\n }\n\n createGossip(): Gossip {\n return new Gossip({\n localPeerId: this.deviceKey,\n });\n }\n\n createPresence(gossip?: Gossip): Presence {\n return new Presence({\n announceInterval: 30,\n offlineTimeout: 200,\n identityKey: this.identityKey,\n gossip: gossip ?? this.createGossip(),\n });\n }\n\n async spaceGenesis(space: Space): Promise<void> {\n const generator = new CredentialGenerator(this.keyring, this.identityKey, this.deviceKey);\n const credentials = [\n ...(await generator.createSpaceGenesis(space.key, space.controlFeedKey!)),\n await generator.createFeedAdmission(space.key, space.dataFeedKey!, AdmittedFeed.Designation.DATA),\n await generator.createEpochCredential(space.key),\n ];\n\n for (const credential of credentials) {\n await space.controlPipeline.writer.write({\n credential: { credential },\n });\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { TestBuilder } from '@dxos/feed-store/testing';\nimport type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\n\nimport { valueEncoding } from '../common';\n\n/**\n * Builder with default encoder and generator.\n */\nexport class TestFeedBuilder extends TestBuilder<FeedMessage> {\n constructor() {\n super({\n valueEncoding,\n });\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Message, NetworkAdapter, type PeerId } from '@automerge/automerge-repo';\n\nimport { Trigger, sleep } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nexport type TestConnectionStateProvider = () => 'on' | 'off';\n\nexport class TestAdapter extends NetworkAdapter {\n static createPair(\n connectionStateProvider: TestConnectionStateProvider = () => 'on',\n onMessage?: (message: Message) => void,\n ): TestAdapter[] {\n const adapter1: TestAdapter = new TestAdapter({\n send: (message: Message) => {\n onMessage?.(message);\n if (connectionStateProvider() === 'on') {\n void sleep(10).then(() => {\n if (connectionStateProvider() === 'on' && adapter2.peerId) {\n adapter2.receive(message);\n }\n });\n }\n },\n });\n const adapter2: TestAdapter = new TestAdapter({\n send: (message: Message) => {\n onMessage?.(message);\n if (connectionStateProvider() === 'on') {\n void sleep(10).then(() => {\n if (connectionStateProvider() === 'on' && adapter1.peerId) {\n adapter1.receive(message);\n }\n });\n }\n },\n });\n\n return [adapter1, adapter2];\n }\n\n public onConnect = new Trigger();\n\n constructor(private readonly _params: { send: (message: Message) => void }) {\n super();\n }\n\n override isReady(): boolean {\n return true;\n }\n\n override whenReady(): Promise<void> {\n return Promise.resolve();\n }\n\n override connect(peerId: PeerId): void {\n this.peerId = peerId;\n this.onConnect.wake();\n }\n\n peerCandidate(peerId: PeerId): void {\n invariant(peerId, 'PeerId is required');\n this.emit('peer-candidate', { peerId, peerMetadata: {} });\n }\n\n peerDisconnected(peerId: PeerId): void {\n invariant(peerId, 'PeerId is required');\n this.emit('peer-disconnected', { peerId });\n }\n\n override send(message: Message): void {\n log('send', { from: message.senderId, to: message.targetId, type: message.type });\n this._params.send(message);\n }\n\n override disconnect(): void {\n this.peerId = undefined;\n }\n\n receive(message: Message): void {\n invariant(this.peerId, 'Peer id is not set');\n this.emit('message', message);\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { sleep, synchronized } from '@dxos/async';\nimport { type Context, LifecycleState, Resource } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport type { AutomergeProtocolMessage } from '@dxos/protocols';\nimport * as TeleportAutomergeReplicator from '@dxos/teleport-extension-automerge-replicator';\n\nimport type { AutomergeReplicator, AutomergeReplicatorConnection, AutomergeReplicatorContext } from '../automerge';\n\nexport type TestReplicatorNetworkOptions = {\n latency?: number;\n};\n\nexport class TestReplicationNetwork extends Resource {\n private readonly _replicators = new Set<TestReplicator>();\n private readonly _latency?: number = undefined;\n\n constructor(options: TestReplicatorNetworkOptions = {}) {\n super();\n this._latency = options.latency;\n }\n\n protected override async _close(_ctx: Context): Promise<void> {\n for (const replicator of this._replicators) {\n for (const connection of replicator.connections) {\n void connection.writable.abort();\n void connection.readable.cancel();\n }\n }\n }\n\n async createReplicator(): Promise<TestReplicator> {\n const replicator = new TestReplicator({\n onConnect: async () => {\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._connectReplicator(replicator);\n },\n onDisconnect: async () => {\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._disconnectReplicator(replicator);\n },\n });\n this._replicators.add(replicator);\n return replicator;\n }\n\n @synchronized\n private async _connectReplicator(replicator: TestReplicator): Promise<void> {\n for (const otherReplicator of this._replicators.values()) {\n if (otherReplicator === replicator || !otherReplicator.connected) {\n continue;\n }\n log('create connection', { from: replicator.context!.peerId, to: otherReplicator.context!.peerId });\n const [connection1, connection2] = this._createConnectionPair(\n replicator.context!.peerId,\n otherReplicator.context!.peerId,\n );\n await replicator.context!.onConnectionOpen(connection1);\n await otherReplicator.context!.onConnectionOpen(connection2);\n }\n }\n\n private async _disconnectReplicator(replicator: TestReplicator): Promise<void> {\n for (const connection of replicator.connections) {\n await replicator.context!.onConnectionClosed(connection);\n await connection.otherSide!.owningReplicator!.removeConnection(connection.otherSide!);\n }\n }\n\n private _createConnectionPair(peer1: string, peer2: string): [TestReplicatorConnection, TestReplicatorConnection] {\n const LOG = false;\n\n const forward = new TransformStream({\n transform: async (message, controller) => {\n if (LOG) {\n log('replicate', { from: peer1, to: peer2, message });\n }\n\n if (this._latency !== undefined) {\n await sleep(this._latency);\n }\n\n controller.enqueue(message);\n },\n });\n const backwards = new TransformStream({\n transform: async (message, controller) => {\n if (LOG) {\n log('replicate', { from: peer2, to: peer1, message });\n }\n\n if (this._latency !== undefined) {\n await sleep(this._latency);\n }\n\n controller.enqueue(message);\n },\n });\n\n const connection1 = new TestReplicatorConnection(peer2, backwards.readable, forward.writable);\n const connection2 = new TestReplicatorConnection(peer1, forward.readable, backwards.writable);\n connection1.otherSide = connection2;\n connection2.otherSide = connection1;\n return [connection1, connection2];\n }\n}\n\ntype TestReplicatorProps = {\n onConnect: () => Promise<void>;\n onDisconnect: () => Promise<void>;\n};\n\nexport class TestReplicator implements AutomergeReplicator {\n constructor(private readonly _params: TestReplicatorProps) {}\n\n public connected = false;\n public context: AutomergeReplicatorContext | undefined = undefined;\n public connections = new Set<TestReplicatorConnection>();\n\n async connect(_ctx: Context, context: AutomergeReplicatorContext): Promise<void> {\n log('connect', { peerId: context.peerId });\n this.context = context;\n this.connected = true;\n await this._params.onConnect();\n }\n\n async disconnect(): Promise<void> {\n log('disconnect', { peerId: this.context!.peerId });\n this.connected = false;\n await this._params.onDisconnect();\n }\n\n async addConnection(connection: TestReplicatorConnection): Promise<void> {\n connection.owningReplicator = this;\n this.connections.add(connection);\n this.context!.onConnectionOpen(connection);\n }\n\n async removeConnection(connection: TestReplicatorConnection): Promise<void> {\n connection.owningReplicator = undefined;\n this.context!.onConnectionClosed(connection);\n this.connections.delete(connection);\n }\n}\n\nexport class TestReplicatorConnection implements AutomergeReplicatorConnection {\n public otherSide: TestReplicatorConnection | undefined = undefined;\n public owningReplicator: TestReplicator | undefined = undefined;\n\n constructor(\n public readonly peerId: string,\n public readonly readable: ReadableStream<AutomergeProtocolMessage>,\n public readonly writable: WritableStream<AutomergeProtocolMessage>,\n ) {}\n\n get bundleSyncEnabled(): boolean {\n return false;\n }\n\n async shouldAdvertise(): Promise<boolean> {\n return true;\n }\n\n shouldSyncCollection(): boolean {\n return true;\n }\n}\n\nexport const testAutomergeReplicatorFactory: TeleportAutomergeReplicator.AutomergeReplicatorFactory = (params) => {\n return new TeleportAutomergeReplicator.AutomergeReplicator(\n {\n ...params[0],\n sendSyncRetryPolicy: {\n retryBackoff: 20,\n retriesBeforeBackoff: 2,\n maxRetries: 3,\n },\n },\n params[1],\n );\n};\n\nexport const brokenAutomergeReplicatorFactory: TeleportAutomergeReplicator.AutomergeReplicatorFactory = (params) => {\n params[1]!.onSyncMessage = () => {\n throw new Error();\n };\n\n return testAutomergeReplicatorFactory(params);\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["log", "schema", "EchoMetadata", "metadata", "createDirectory", "echoMetadata", "version", "file", "_directory", "_writeFile", "Context", "CredentialGenerator", "PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "MemoryTransportFactory", "SwarmNetworkManager", "createRtcTransportFactory", "AdmittedFeed", "StorageType", "createStorage", "Gossip", "Presence", "BlobStore", "ComplexMap", "TestBuilder", "TestFeedBuilder", "TestBuilder", "valueEncoding", "__dxlog_file", "MemoryNetworkManagerProvider", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "server", "signalUrl", "_storage", "_networkManagerProvider", "type", "StorageType", "close", "agents", "getAgent", "deviceKey", "createPeer", "feedBuilder", "keyring", "agent", "TestAgent", "_agents", "_spaces", "storage", "feedStore", "_metadataStore", "_blobStore", "_feedBuilder", "identityKey", "spaces", "getSpace", "spaceKey", "_networkManager", "peerKey", "toHex", "_spaceManager", "networkManager", "metadataStore", "blobStore", "saveMetadata", "genesisKey", "controlFeed", "openFeed", "dataFeed", "sparse", "metadata", "genesisFeedKey", "controlFeedKey", "dataFeedKey", "spaceManager", "swarmIdentity", "credentialProvider", "credentialAuthenticator", "memberKey", "onAuthorizedConnection", "session", "remotePeerId", "onDelegatedInvitationStatusChange", "onMemberRolesChanged", "space", "open", "Context", "createSpaceProtocol", "topic", "onSessionAuth", "addExtension", "createGossip", "localPeerId", "createPresence", "announceInterval", "offlineTimeout", "gossip", "credentials", "generator", "createFeedAdmission", "createEpochCredential", "key", "credential", "NetworkAdapter", "Trigger", "sleep", "invariant", "log", "__dxlog_file", "TestAdapter", "createPair", "connectionStateProvider", "message", "onMessage", "then", "adapter2", "receive", "adapter1", "onConnect", "_params", "isReady", "whenReady", "connect", "peerId", "peerCandidate", "peerMetadata", "peerDisconnected", "send", "to", "type", "disconnect", "LifecycleState", "invariant", "log", "TeleportAutomergeReplicator", "Resource", "_replicators", "_latency", "undefined", "replicator", "connection", "connections", "writable", "readable", "cancel", "onConnect", "_lifecycleState", "_connectReplicator", "onDisconnect", "_disconnectReplicator", "otherReplicator", "from", "context", "to", "connection1", "connection2", "_createConnectionPair", "onConnectionOpen", "onConnectionClosed", "otherSide", "removeConnection", "forward", "transform", "controller", "LOG", "peer1", "peer2", "message", "__dxlog_file", "sleep", "TestReplicatorConnection", "backwards", "TestReplicator", "_params", "connected", "_ctx", "peerId", "owningReplicator", "shouldSyncCollection", "AutomergeReplicator", "params", "sendSyncRetryPolicy", "retriesBeforeBackoff", "maxRetries", "Error"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automerge-host-subduction.test.d.ts","sourceRoot":"","sources":["../../../../src/automerge/automerge-host-subduction.test.ts"],"names":[],"mappings":""}
|