@dxos/echo-pipeline 0.8.3 → 0.8.4-main.1da679c
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/dist/lib/browser/{chunk-TQJTKNMS.mjs → chunk-KQYT6ADL.mjs} +109 -3
- package/dist/lib/browser/chunk-KQYT6ADL.mjs.map +7 -0
- package/dist/lib/browser/{chunk-35I6ERLG.mjs → chunk-XGG76KKU.mjs} +513 -350
- package/dist/lib/browser/chunk-XGG76KKU.mjs.map +7 -0
- package/dist/lib/browser/filter/index.mjs +3 -1
- package/dist/lib/browser/index.mjs +1371 -601
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +119 -56
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/{chunk-5BHLPT24.mjs → chunk-CHMJJ4DG.mjs} +513 -350
- package/dist/lib/node-esm/chunk-CHMJJ4DG.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-RVK35BS7.mjs → chunk-W4ACY3YC.mjs} +109 -3
- package/dist/lib/node-esm/chunk-W4ACY3YC.mjs.map +7 -0
- package/dist/lib/node-esm/filter/index.mjs +3 -1
- package/dist/lib/node-esm/index.mjs +1371 -601
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +119 -56
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/automerge/automerge-host.d.ts +15 -28
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
- package/dist/types/src/automerge/collection-synchronizer.d.ts +1 -1
- package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-network-adapter.d.ts +8 -1
- package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-replicator.d.ts +21 -2
- package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
- package/dist/types/src/automerge/index.d.ts +1 -1
- package/dist/types/src/automerge/index.d.ts.map +1 -1
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +1 -1
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts.map +1 -1
- package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts +1 -0
- package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts.map +1 -1
- package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
- package/dist/types/src/common/codec.d.ts +1 -1
- package/dist/types/src/common/codec.d.ts.map +1 -1
- package/dist/types/src/db-host/data-service.d.ts +2 -2
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/db-host/database-root.d.ts.map +1 -1
- package/dist/types/src/db-host/documents-synchronizer.d.ts +2 -2
- package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
- package/dist/types/src/db-host/echo-host.d.ts +2 -2
- package/dist/types/src/db-host/echo-host.d.ts.map +1 -1
- package/dist/types/src/db-host/query-service.d.ts +1 -1
- package/dist/types/src/db-host/query-service.d.ts.map +1 -1
- package/dist/types/src/db-host/space-state-manager.d.ts +1 -1
- package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -1
- package/dist/types/src/edge/echo-edge-replicator.d.ts +4 -2
- package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -1
- package/dist/types/src/filter/filter-match.d.ts +4 -1
- package/dist/types/src/filter/filter-match.d.ts.map +1 -1
- package/dist/types/src/metadata/metadata-store.d.ts +1 -1
- package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
- package/dist/types/src/pipeline/pipeline.d.ts +1 -1
- package/dist/types/src/pipeline/pipeline.d.ts.map +1 -1
- package/dist/types/src/query/errors.d.ts +24 -8
- package/dist/types/src/query/errors.d.ts.map +1 -1
- package/dist/types/src/query/plan.d.ts +8 -1
- package/dist/types/src/query/plan.d.ts.map +1 -1
- package/dist/types/src/query/query-executor.d.ts +4 -1
- package/dist/types/src/query/query-executor.d.ts.map +1 -1
- package/dist/types/src/query/query-planner.d.ts +2 -0
- 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/control-pipeline.d.ts +1 -1
- package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/space-manager.d.ts +1 -1
- package/dist/types/src/space/space-manager.d.ts.map +1 -1
- package/dist/types/src/space/space-protocol.d.ts +1 -1
- package/dist/types/src/space/space-protocol.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +1 -1
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/test-agent-builder.d.ts +2 -2
- package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-replicator.d.ts +1 -0
- package/dist/types/src/testing/test-replicator.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +42 -38
- package/src/automerge/automerge-host.test.ts +18 -8
- package/src/automerge/automerge-host.ts +251 -65
- package/src/automerge/automerge-repo.test.ts +67 -16
- package/src/automerge/collection-synchronizer.test.ts +2 -2
- package/src/automerge/collection-synchronizer.ts +4 -4
- package/src/automerge/echo-data-monitor.ts +1 -1
- package/src/automerge/echo-network-adapter.test.ts +3 -3
- package/src/automerge/echo-network-adapter.ts +40 -7
- package/src/automerge/echo-replicator.ts +23 -2
- package/src/automerge/index.ts +1 -1
- package/src/automerge/leveldb-storage-adapter.ts +7 -7
- package/src/automerge/mesh-echo-replicator-connection.ts +4 -0
- package/src/automerge/mesh-echo-replicator.ts +2 -1
- package/src/automerge/storage-adapter.test.ts +1 -1
- package/src/common/space-id.ts +1 -1
- package/src/db-host/data-service.ts +9 -17
- package/src/db-host/database-root.ts +2 -2
- package/src/db-host/documents-synchronizer.test.ts +1 -1
- package/src/db-host/documents-synchronizer.ts +39 -26
- package/src/db-host/echo-host.ts +13 -14
- package/src/db-host/query-service.ts +8 -1
- package/src/db-host/space-state-manager.ts +2 -2
- package/src/edge/echo-edge-replicator.test.ts +5 -3
- package/src/edge/echo-edge-replicator.ts +75 -18
- package/src/filter/filter-match.test.ts +23 -3
- package/src/filter/filter-match.ts +148 -3
- package/src/metadata/metadata-store.ts +3 -3
- package/src/pipeline/pipeline-stress.test.ts +4 -2
- package/src/pipeline/pipeline.test.ts +3 -2
- package/src/pipeline/pipeline.ts +8 -5
- package/src/query/errors.ts +2 -0
- package/src/query/plan.ts +12 -1
- package/src/query/query-executor.ts +66 -11
- package/src/query/query-planner.test.ts +146 -2
- package/src/query/query-planner.ts +52 -8
- package/src/space/admission-discovery-extension.ts +2 -2
- package/src/space/control-pipeline.test.ts +4 -3
- package/src/space/control-pipeline.ts +9 -6
- package/src/space/space-manager.browser.test.ts +1 -1
- package/src/space/space-manager.ts +5 -4
- package/src/space/space-protocol.browser.test.ts +2 -2
- package/src/space/space-protocol.test.ts +3 -2
- package/src/space/space-protocol.ts +6 -3
- package/src/space/space.test.ts +1 -1
- package/src/space/space.ts +3 -2
- package/src/testing/test-agent-builder.ts +4 -3
- package/src/testing/test-replicator.ts +4 -0
- package/src/util.ts +1 -1
- package/dist/lib/browser/chunk-35I6ERLG.mjs.map +0 -7
- package/dist/lib/browser/chunk-TQJTKNMS.mjs.map +0 -7
- package/dist/lib/node/chunk-HOPOFWAL.cjs +0 -147
- package/dist/lib/node/chunk-HOPOFWAL.cjs.map +0 -7
- package/dist/lib/node/chunk-JXX6LF5U.cjs +0 -2084
- package/dist/lib/node/chunk-JXX6LF5U.cjs.map +0 -7
- package/dist/lib/node/chunk-Q7SFCCGT.cjs +0 -33
- package/dist/lib/node/chunk-Q7SFCCGT.cjs.map +0 -7
- package/dist/lib/node/filter/index.cjs +0 -32
- package/dist/lib/node/filter/index.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -4699
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/testing/index.cjs +0 -753
- package/dist/lib/node/testing/index.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-5BHLPT24.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RVK35BS7.mjs.map +0 -7
|
@@ -6,15 +6,15 @@ import {
|
|
|
6
6
|
SpaceManager,
|
|
7
7
|
SpaceProtocol,
|
|
8
8
|
valueEncoding
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-XGG76KKU.mjs";
|
|
10
10
|
import {
|
|
11
11
|
__export
|
|
12
12
|
} from "../chunk-CGS2ULMK.mjs";
|
|
13
13
|
|
|
14
|
-
//
|
|
14
|
+
// src/testing/change-metadata.ts
|
|
15
15
|
import { log } from "@dxos/log";
|
|
16
16
|
import { schema } from "@dxos/protocols/proto";
|
|
17
|
-
var __dxlog_file = "/
|
|
17
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/change-metadata.ts";
|
|
18
18
|
var EchoMetadata = schema.getCodecForType("dxos.echo.metadata.EchoMetadata");
|
|
19
19
|
var changeStorageVersionInMetadata = async (storage, version) => {
|
|
20
20
|
log("Changing storage version in metadata. USE ONLY FOR TESTING.", void 0, {
|
|
@@ -32,7 +32,7 @@ var changeStorageVersionInMetadata = async (storage, version) => {
|
|
|
32
32
|
await metadata._directory.flush();
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
//
|
|
35
|
+
// src/testing/test-agent-builder.ts
|
|
36
36
|
import { Context } from "@dxos/context";
|
|
37
37
|
import { CredentialGenerator } from "@dxos/credentials";
|
|
38
38
|
import { PublicKey } from "@dxos/keys";
|
|
@@ -44,7 +44,7 @@ import { Gossip, Presence } from "@dxos/teleport-extension-gossip";
|
|
|
44
44
|
import { BlobStore } from "@dxos/teleport-extension-object-sync";
|
|
45
45
|
import { ComplexMap } from "@dxos/util";
|
|
46
46
|
|
|
47
|
-
//
|
|
47
|
+
// src/testing/test-feed-builder.ts
|
|
48
48
|
import { TestBuilder } from "@dxos/feed-store/testing";
|
|
49
49
|
var TestFeedBuilder = class extends TestBuilder {
|
|
50
50
|
constructor() {
|
|
@@ -54,8 +54,21 @@ var TestFeedBuilder = class extends TestBuilder {
|
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
//
|
|
58
|
-
|
|
57
|
+
// src/testing/test-agent-builder.ts
|
|
58
|
+
function _define_property(obj, key, value) {
|
|
59
|
+
if (key in obj) {
|
|
60
|
+
Object.defineProperty(obj, key, {
|
|
61
|
+
value,
|
|
62
|
+
enumerable: true,
|
|
63
|
+
configurable: true,
|
|
64
|
+
writable: true
|
|
65
|
+
});
|
|
66
|
+
} else {
|
|
67
|
+
obj[key] = value;
|
|
68
|
+
}
|
|
69
|
+
return obj;
|
|
70
|
+
}
|
|
71
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts";
|
|
59
72
|
var MemoryNetworkManagerProvider = (signalContext) => () => new SwarmNetworkManager({
|
|
60
73
|
signalManager: new MemorySignalManager(signalContext),
|
|
61
74
|
transportFactory: MemoryTransportFactory
|
|
@@ -69,13 +82,6 @@ var WebsocketNetworkManagerProvider = (signalUrl) => () => new SwarmNetworkManag
|
|
|
69
82
|
transportFactory: createRtcTransportFactory()
|
|
70
83
|
});
|
|
71
84
|
var TestAgentBuilder = class {
|
|
72
|
-
constructor({ storage, networkManagerProvider } = {}) {
|
|
73
|
-
this._agents = new ComplexMap(PublicKey.hash);
|
|
74
|
-
this._storage = storage ?? createStorage({
|
|
75
|
-
type: StorageType.RAM
|
|
76
|
-
});
|
|
77
|
-
this._networkManagerProvider = networkManagerProvider ?? MemoryNetworkManagerProvider(new MemorySignalManagerContext());
|
|
78
|
-
}
|
|
79
85
|
async close() {
|
|
80
86
|
return Promise.all(this.agents.map((agent) => agent.close()));
|
|
81
87
|
}
|
|
@@ -93,23 +99,22 @@ var TestAgentBuilder = class {
|
|
|
93
99
|
this._agents.set(deviceKey, agent);
|
|
94
100
|
return agent;
|
|
95
101
|
}
|
|
102
|
+
constructor({ storage, networkManagerProvider } = {}) {
|
|
103
|
+
_define_property(this, "_agents", new ComplexMap(PublicKey.hash));
|
|
104
|
+
_define_property(this, "_storage", void 0);
|
|
105
|
+
_define_property(this, "_networkManagerProvider", void 0);
|
|
106
|
+
this._storage = storage ?? createStorage({
|
|
107
|
+
type: StorageType.RAM
|
|
108
|
+
});
|
|
109
|
+
this._networkManagerProvider = networkManagerProvider ?? MemoryNetworkManagerProvider(new MemorySignalManagerContext());
|
|
110
|
+
}
|
|
96
111
|
};
|
|
97
112
|
var TestAgent = class {
|
|
98
113
|
get metadataStore() {
|
|
99
|
-
return this._metadataStore
|
|
114
|
+
return this._metadataStore ?? (this._metadataStore = new MetadataStore(this.storage.createDirectory("metadata")));
|
|
100
115
|
}
|
|
101
116
|
get blobStore() {
|
|
102
|
-
return this._blobStore
|
|
103
|
-
}
|
|
104
|
-
constructor(_networkManagerProvider, _feedBuilder, identityKey, deviceKey) {
|
|
105
|
-
this._networkManagerProvider = _networkManagerProvider;
|
|
106
|
-
this._feedBuilder = _feedBuilder;
|
|
107
|
-
this.identityKey = identityKey;
|
|
108
|
-
this.deviceKey = deviceKey;
|
|
109
|
-
this._spaces = new ComplexMap(PublicKey.hash);
|
|
110
|
-
this.storage = this._feedBuilder.storage;
|
|
111
|
-
this.keyring = this._feedBuilder.keyring;
|
|
112
|
-
this.feedStore = this._feedBuilder.createFeedStore();
|
|
117
|
+
return this._blobStore ?? (this._blobStore = new BlobStore(this.storage.createDirectory("blobs")));
|
|
113
118
|
}
|
|
114
119
|
async close() {
|
|
115
120
|
return Promise.all([
|
|
@@ -134,12 +139,12 @@ var TestAgent = class {
|
|
|
134
139
|
return this._networkManager;
|
|
135
140
|
}
|
|
136
141
|
get spaceManager() {
|
|
137
|
-
return this._spaceManager
|
|
142
|
+
return this._spaceManager ?? (this._spaceManager = new SpaceManager({
|
|
138
143
|
feedStore: this.feedStore,
|
|
139
144
|
networkManager: this.networkManager,
|
|
140
145
|
metadataStore: this.metadataStore,
|
|
141
146
|
blobStore: this.blobStore
|
|
142
|
-
});
|
|
147
|
+
}));
|
|
143
148
|
}
|
|
144
149
|
async createSpace(identityKey = this.identityKey, spaceKey2, genesisKey, dataKey, saveMetadata = false) {
|
|
145
150
|
if (!spaceKey2) {
|
|
@@ -189,7 +194,7 @@ var TestAgent = class {
|
|
|
189
194
|
await space.setDataFeed(dataFeed);
|
|
190
195
|
await space.open(new Context(void 0, {
|
|
191
196
|
F: __dxlog_file2,
|
|
192
|
-
L:
|
|
197
|
+
L: 206
|
|
193
198
|
}));
|
|
194
199
|
this._spaces.set(spaceKey2, space);
|
|
195
200
|
return space;
|
|
@@ -240,14 +245,49 @@ var TestAgent = class {
|
|
|
240
245
|
});
|
|
241
246
|
}
|
|
242
247
|
}
|
|
248
|
+
constructor(_networkManagerProvider, _feedBuilder, identityKey, deviceKey) {
|
|
249
|
+
_define_property(this, "_networkManagerProvider", void 0);
|
|
250
|
+
_define_property(this, "_feedBuilder", void 0);
|
|
251
|
+
_define_property(this, "identityKey", void 0);
|
|
252
|
+
_define_property(this, "deviceKey", void 0);
|
|
253
|
+
_define_property(this, "_spaces", void 0);
|
|
254
|
+
_define_property(this, "storage", void 0);
|
|
255
|
+
_define_property(this, "keyring", void 0);
|
|
256
|
+
_define_property(this, "feedStore", void 0);
|
|
257
|
+
_define_property(this, "_metadataStore", void 0);
|
|
258
|
+
_define_property(this, "_blobStore", void 0);
|
|
259
|
+
_define_property(this, "_networkManager", void 0);
|
|
260
|
+
_define_property(this, "_spaceManager", void 0);
|
|
261
|
+
this._networkManagerProvider = _networkManagerProvider;
|
|
262
|
+
this._feedBuilder = _feedBuilder;
|
|
263
|
+
this.identityKey = identityKey;
|
|
264
|
+
this.deviceKey = deviceKey;
|
|
265
|
+
this._spaces = new ComplexMap(PublicKey.hash);
|
|
266
|
+
this.storage = this._feedBuilder.storage;
|
|
267
|
+
this.keyring = this._feedBuilder.keyring;
|
|
268
|
+
this.feedStore = this._feedBuilder.createFeedStore();
|
|
269
|
+
}
|
|
243
270
|
};
|
|
244
271
|
|
|
245
|
-
//
|
|
272
|
+
// src/testing/test-network-adapter.ts
|
|
246
273
|
import { NetworkAdapter } from "@automerge/automerge-repo";
|
|
247
274
|
import { Trigger, sleep } from "@dxos/async";
|
|
248
275
|
import { invariant } from "@dxos/invariant";
|
|
249
276
|
import { log as log2 } from "@dxos/log";
|
|
250
|
-
|
|
277
|
+
function _define_property2(obj, key, value) {
|
|
278
|
+
if (key in obj) {
|
|
279
|
+
Object.defineProperty(obj, key, {
|
|
280
|
+
value,
|
|
281
|
+
enumerable: true,
|
|
282
|
+
configurable: true,
|
|
283
|
+
writable: true
|
|
284
|
+
});
|
|
285
|
+
} else {
|
|
286
|
+
obj[key] = value;
|
|
287
|
+
}
|
|
288
|
+
return obj;
|
|
289
|
+
}
|
|
290
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts";
|
|
251
291
|
var TestAdapter = class _TestAdapter extends NetworkAdapter {
|
|
252
292
|
static createPair(connectionStateProvider = () => "on") {
|
|
253
293
|
const adapter1 = new _TestAdapter({
|
|
@@ -261,9 +301,6 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
|
|
|
261
301
|
adapter2
|
|
262
302
|
];
|
|
263
303
|
}
|
|
264
|
-
constructor(_params) {
|
|
265
|
-
super(), this._params = _params, this.onConnect = new Trigger();
|
|
266
|
-
}
|
|
267
304
|
isReady() {
|
|
268
305
|
return true;
|
|
269
306
|
}
|
|
@@ -331,28 +368,38 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
|
|
|
331
368
|
});
|
|
332
369
|
this.emit("message", message);
|
|
333
370
|
}
|
|
371
|
+
constructor(_params) {
|
|
372
|
+
super(), _define_property2(this, "_params", void 0), _define_property2(this, "onConnect", void 0), this._params = _params, this.onConnect = new Trigger();
|
|
373
|
+
}
|
|
334
374
|
};
|
|
335
375
|
|
|
336
|
-
//
|
|
376
|
+
// src/testing/test-replicator.ts
|
|
337
377
|
import { sleep as sleep2, synchronized } from "@dxos/async";
|
|
338
378
|
import { LifecycleState, Resource } from "@dxos/context";
|
|
339
379
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
340
380
|
import { log as log3 } from "@dxos/log";
|
|
341
381
|
import { AutomergeReplicator } from "@dxos/teleport-extension-automerge-replicator";
|
|
382
|
+
function _define_property3(obj, key, value) {
|
|
383
|
+
if (key in obj) {
|
|
384
|
+
Object.defineProperty(obj, key, {
|
|
385
|
+
value,
|
|
386
|
+
enumerable: true,
|
|
387
|
+
configurable: true,
|
|
388
|
+
writable: true
|
|
389
|
+
});
|
|
390
|
+
} else {
|
|
391
|
+
obj[key] = value;
|
|
392
|
+
}
|
|
393
|
+
return obj;
|
|
394
|
+
}
|
|
342
395
|
function _ts_decorate(decorators, target, key, desc) {
|
|
343
396
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
344
397
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
345
398
|
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;
|
|
346
399
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
347
400
|
}
|
|
348
|
-
var __dxlog_file4 = "/
|
|
401
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-replicator.ts";
|
|
349
402
|
var TestReplicationNetwork = class extends Resource {
|
|
350
|
-
constructor(options = {}) {
|
|
351
|
-
super();
|
|
352
|
-
this._replicators = /* @__PURE__ */ new Set();
|
|
353
|
-
this._latency = void 0;
|
|
354
|
-
this._latency = options.latency;
|
|
355
|
-
}
|
|
356
403
|
async _close(ctx) {
|
|
357
404
|
for (const replicator of this._replicators) {
|
|
358
405
|
for (const connection of replicator.connections) {
|
|
@@ -467,17 +514,15 @@ var TestReplicationNetwork = class extends Resource {
|
|
|
467
514
|
connection2
|
|
468
515
|
];
|
|
469
516
|
}
|
|
517
|
+
constructor(options = {}) {
|
|
518
|
+
super(), _define_property3(this, "_replicators", /* @__PURE__ */ new Set()), _define_property3(this, "_latency", void 0);
|
|
519
|
+
this._latency = options.latency;
|
|
520
|
+
}
|
|
470
521
|
};
|
|
471
522
|
_ts_decorate([
|
|
472
523
|
synchronized
|
|
473
524
|
], TestReplicationNetwork.prototype, "_connectReplicator", null);
|
|
474
525
|
var TestReplicator = class {
|
|
475
|
-
constructor(_params) {
|
|
476
|
-
this._params = _params;
|
|
477
|
-
this.connected = false;
|
|
478
|
-
this.context = void 0;
|
|
479
|
-
this.connections = /* @__PURE__ */ new Set();
|
|
480
|
-
}
|
|
481
526
|
async connect(context) {
|
|
482
527
|
log3("connect", {
|
|
483
528
|
peerId: context.peerId
|
|
@@ -513,14 +558,20 @@ var TestReplicator = class {
|
|
|
513
558
|
this.context.onConnectionClosed(connection);
|
|
514
559
|
this.connections.delete(connection);
|
|
515
560
|
}
|
|
561
|
+
constructor(_params) {
|
|
562
|
+
_define_property3(this, "_params", void 0);
|
|
563
|
+
_define_property3(this, "connected", void 0);
|
|
564
|
+
_define_property3(this, "context", void 0);
|
|
565
|
+
_define_property3(this, "connections", void 0);
|
|
566
|
+
this._params = _params;
|
|
567
|
+
this.connected = false;
|
|
568
|
+
this.context = void 0;
|
|
569
|
+
this.connections = /* @__PURE__ */ new Set();
|
|
570
|
+
}
|
|
516
571
|
};
|
|
517
572
|
var TestReplicatorConnection = class {
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
this.readable = readable;
|
|
521
|
-
this.writable = writable;
|
|
522
|
-
this.otherSide = void 0;
|
|
523
|
-
this.owningReplicator = void 0;
|
|
573
|
+
get bundleSyncEnabled() {
|
|
574
|
+
return false;
|
|
524
575
|
}
|
|
525
576
|
async shouldAdvertise(params) {
|
|
526
577
|
return true;
|
|
@@ -528,6 +579,18 @@ var TestReplicatorConnection = class {
|
|
|
528
579
|
shouldSyncCollection(params) {
|
|
529
580
|
return true;
|
|
530
581
|
}
|
|
582
|
+
constructor(peerId, readable, writable) {
|
|
583
|
+
_define_property3(this, "peerId", void 0);
|
|
584
|
+
_define_property3(this, "readable", void 0);
|
|
585
|
+
_define_property3(this, "writable", void 0);
|
|
586
|
+
_define_property3(this, "otherSide", void 0);
|
|
587
|
+
_define_property3(this, "owningReplicator", void 0);
|
|
588
|
+
this.peerId = peerId;
|
|
589
|
+
this.readable = readable;
|
|
590
|
+
this.writable = writable;
|
|
591
|
+
this.otherSide = void 0;
|
|
592
|
+
this.owningReplicator = void 0;
|
|
593
|
+
}
|
|
531
594
|
};
|
|
532
595
|
var testAutomergeReplicatorFactory = (params) => {
|
|
533
596
|
return new AutomergeReplicator({
|
|
@@ -546,7 +609,7 @@ var brokenAutomergeReplicatorFactory = (params) => {
|
|
|
546
609
|
return testAutomergeReplicatorFactory(params);
|
|
547
610
|
};
|
|
548
611
|
|
|
549
|
-
//
|
|
612
|
+
// src/testing/test-schema.ts
|
|
550
613
|
var test_schema_exports = {};
|
|
551
614
|
__export(test_schema_exports, {
|
|
552
615
|
Organization: () => Organization,
|
|
@@ -587,7 +650,7 @@ var Task = Schema.Struct({
|
|
|
587
650
|
version: "0.1.0"
|
|
588
651
|
}));
|
|
589
652
|
|
|
590
|
-
//
|
|
653
|
+
// src/testing/test-data.ts
|
|
591
654
|
var test_data_exports = {};
|
|
592
655
|
__export(test_data_exports, {
|
|
593
656
|
ORGS: () => ORGS,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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", "../../../../src/testing/test-schema.ts", "../../../../src/testing/test-data.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 { StorageType, createStorage, type Storage } 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 { TestFeedBuilder } from './test-feed-builder';\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, SpaceManager, SpaceProtocol, type Space } from '../space';\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(connectionStateProvider: TestConnectionStateProvider = () => 'on'): TestAdapter[] {\n const adapter1: TestAdapter = new TestAdapter({\n send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter2.receive(message)),\n });\n const adapter2: TestAdapter = new TestAdapter({\n send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter1.receive(message)),\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 { AutomergeReplicator, type AutomergeReplicatorFactory } from '@dxos/teleport-extension-automerge-replicator';\n\nimport type {\n EchoReplicator,\n EchoReplicatorContext,\n ReplicatorConnection,\n ShouldAdvertiseParams,\n ShouldSyncCollectionParams,\n} 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 TestReplicatorParams = {\n onConnect: () => Promise<void>;\n onDisconnect: () => Promise<void>;\n};\n\nexport class TestReplicator implements EchoReplicator {\n constructor(private readonly _params: TestReplicatorParams) {}\n\n public connected = false;\n public context: EchoReplicatorContext | undefined = undefined;\n public connections = new Set<TestReplicatorConnection>();\n\n async connect(context: EchoReplicatorContext): 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 ReplicatorConnection {\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 async shouldAdvertise(params: ShouldAdvertiseParams): Promise<boolean> {\n return true;\n }\n\n shouldSyncCollection(params: ShouldSyncCollectionParams): boolean {\n return true;\n }\n}\n\nexport const testAutomergeReplicatorFactory: AutomergeReplicatorFactory = (params) => {\n return new 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: AutomergeReplicatorFactory = (params) => {\n params[1]!.onSyncMessage = () => {\n throw new Error();\n };\n return testAutomergeReplicatorFactory(params);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\n\n//\n// Example schema\n//\n\n// TODO(dmaretskyi): Need common set of test types.\nexport const Person = Schema.Struct({\n name: Schema.String,\n email: Schema.optional(Schema.String),\n age: Schema.optional(Schema.Number),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Person',\n version: '0.1.0',\n }),\n);\nexport interface Person extends Schema.Schema.Type<typeof Person> {}\n\nexport const Organization = Schema.Struct({\n name: Schema.String,\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Organization',\n version: '0.1.0',\n }),\n);\nexport interface Organization extends Schema.Schema.Type<typeof Organization> {}\n\nexport const WorksFor = Schema.Struct({\n since: Schema.String,\n}).pipe(\n Type.Relation({\n typename: 'dxos.org/type/WorksFor',\n version: '0.1.0',\n source: Person,\n target: Organization,\n }),\n);\nexport interface WorksFor extends Schema.Schema.Type<typeof WorksFor> {}\n\nexport const Task = Schema.Struct({\n title: Schema.String,\n createdAt: Schema.String,\n assignee: Type.Ref(Person),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Task', version: '0.1.0' }));\nexport interface Task extends Schema.Schema.Type<typeof Task> {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DatabaseDirectory, ObjectStructure } from '@dxos/echo-protocol';\nimport { getSchemaDXN } from '@dxos/echo-schema';\nimport { DXN, ObjectId, PublicKey } from '@dxos/keys';\n\nimport * as TestSchema from './test-schema';\n\nconst spaceKey = PublicKey.random();\n\nexport const PEOPLE = {\n fred: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Fred',\n },\n }),\n },\n }),\n alice: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Alice',\n },\n }),\n },\n }),\n};\n\nexport const ORGS = {\n cyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Cyberdyne Systems',\n founded: '1984',\n },\n }),\n },\n }),\n aperture: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Aperture Science',\n founded: '1953',\n },\n }),\n },\n }),\n};\n\nexport const WORKS_FOR = {\n fredWorksForCyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: getSchemaDXN(TestSchema.WorksFor)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects!)[0]).toString() },\n data: {\n since: '2020',\n position: 'Engineer',\n },\n }),\n },\n }),\n aliceWorksForAperture: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: getSchemaDXN(TestSchema.WorksFor)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.aperture.objects!)[0]).toString() },\n data: {\n since: '2018',\n position: 'Research Scientist',\n },\n }),\n },\n }),\n};\n\nexport const TASKS = {\n task1: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Complete project documentation',\n description: 'Write comprehensive documentation for the new system',\n status: 'in-progress',\n dueDate: '2023-12-31',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects!)[0]).toString() },\n },\n }),\n },\n }),\n task2: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Run experiments',\n description: 'Conduct series of experiments on the portal device',\n status: 'pending',\n dueDate: '2023-11-15',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n },\n }),\n },\n }),\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["log", "schema", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "Context", "CredentialGenerator", "PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "MemoryTransportFactory", "SwarmNetworkManager", "createRtcTransportFactory", "AdmittedFeed", "StorageType", "createStorage", "Gossip", "Presence", "BlobStore", "ComplexMap", "TestBuilder", "TestFeedBuilder", "TestBuilder", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "SwarmNetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createRtcTransportFactory", "TestAgentBuilder", "
|
|
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';\n\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(connectionStateProvider: TestConnectionStateProvider = () => 'on'): TestAdapter[] {\n const adapter1: TestAdapter = new TestAdapter({\n send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter2.receive(message)),\n });\n const adapter2: TestAdapter = new TestAdapter({\n send: (message: Message) => connectionStateProvider() === 'on' && sleep(10).then(() => adapter1.receive(message)),\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 { AutomergeReplicator, type AutomergeReplicatorFactory } from '@dxos/teleport-extension-automerge-replicator';\n\nimport type {\n EchoReplicator,\n EchoReplicatorContext,\n ReplicatorConnection,\n ShouldAdvertiseParams,\n ShouldSyncCollectionParams,\n} 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 TestReplicatorParams = {\n onConnect: () => Promise<void>;\n onDisconnect: () => Promise<void>;\n};\n\nexport class TestReplicator implements EchoReplicator {\n constructor(private readonly _params: TestReplicatorParams) {}\n\n public connected = false;\n public context: EchoReplicatorContext | undefined = undefined;\n public connections = new Set<TestReplicatorConnection>();\n\n async connect(context: EchoReplicatorContext): 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 ReplicatorConnection {\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(params: ShouldAdvertiseParams): Promise<boolean> {\n return true;\n }\n\n shouldSyncCollection(params: ShouldSyncCollectionParams): boolean {\n return true;\n }\n}\n\nexport const testAutomergeReplicatorFactory: AutomergeReplicatorFactory = (params) => {\n return new 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: AutomergeReplicatorFactory = (params) => {\n params[1]!.onSyncMessage = () => {\n throw new Error();\n };\n return testAutomergeReplicatorFactory(params);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\n\n//\n// Example schema\n//\n\n// TODO(dmaretskyi): Need common set of test types.\nexport const Person = Schema.Struct({\n name: Schema.String,\n email: Schema.optional(Schema.String),\n age: Schema.optional(Schema.Number),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Person',\n version: '0.1.0',\n }),\n);\nexport interface Person extends Schema.Schema.Type<typeof Person> {}\n\nexport const Organization = Schema.Struct({\n name: Schema.String,\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Organization',\n version: '0.1.0',\n }),\n);\nexport interface Organization extends Schema.Schema.Type<typeof Organization> {}\n\nexport const WorksFor = Schema.Struct({\n since: Schema.String,\n}).pipe(\n Type.Relation({\n typename: 'dxos.org/type/WorksFor',\n version: '0.1.0',\n source: Person,\n target: Organization,\n }),\n);\nexport interface WorksFor extends Schema.Schema.Type<typeof WorksFor> {}\n\nexport const Task = Schema.Struct({\n title: Schema.String,\n createdAt: Schema.String,\n assignee: Type.Ref(Person),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Task', version: '0.1.0' }));\nexport interface Task extends Schema.Schema.Type<typeof Task> {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DatabaseDirectory, ObjectStructure } from '@dxos/echo-protocol';\nimport { getSchemaDXN } from '@dxos/echo-schema';\nimport { DXN, ObjectId, PublicKey } from '@dxos/keys';\n\nimport * as TestSchema from './test-schema';\n\nconst spaceKey = PublicKey.random();\n\nexport const PEOPLE = {\n fred: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Fred',\n },\n }),\n },\n }),\n alice: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Alice',\n },\n }),\n },\n }),\n};\n\nexport const ORGS = {\n cyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Cyberdyne Systems',\n founded: '1984',\n },\n }),\n },\n }),\n aperture: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Aperture Science',\n founded: '1953',\n },\n }),\n },\n }),\n};\n\nexport const WORKS_FOR = {\n fredWorksForCyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: getSchemaDXN(TestSchema.WorksFor)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects!)[0]).toString() },\n data: {\n since: '2020',\n position: 'Engineer',\n },\n }),\n },\n }),\n aliceWorksForAperture: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: getSchemaDXN(TestSchema.WorksFor)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.aperture.objects!)[0]).toString() },\n data: {\n since: '2018',\n position: 'Research Scientist',\n },\n }),\n },\n }),\n};\n\nexport const TASKS = {\n task1: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Complete project documentation',\n description: 'Write comprehensive documentation for the new system',\n status: 'in-progress',\n dueDate: '2023-12-31',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects!)[0]).toString() },\n },\n }),\n },\n }),\n task2: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: getSchemaDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Run experiments',\n description: 'Conduct series of experiments on the portal device',\n status: 'pending',\n dueDate: '2023-11-15',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n },\n }),\n },\n }),\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["log", "schema", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "Context", "CredentialGenerator", "PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "MemoryTransportFactory", "SwarmNetworkManager", "createRtcTransportFactory", "AdmittedFeed", "StorageType", "createStorage", "Gossip", "Presence", "BlobStore", "ComplexMap", "TestBuilder", "TestFeedBuilder", "TestBuilder", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "SwarmNetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createRtcTransportFactory", "TestAgentBuilder", "close", "Promise", "all", "agents", "map", "agent", "Array", "from", "_agents", "values", "getAgent", "deviceKey", "get", "createPeer", "feedBuilder", "TestFeedBuilder", "setStorage", "_storage", "size", "identityKey", "keyring", "createKey", "TestAgent", "_networkManagerProvider", "set", "storage", "networkManagerProvider", "ComplexMap", "PublicKey", "hash", "createStorage", "type", "StorageType", "RAM", "MemorySignalManagerContext", "metadataStore", "_metadataStore", "MetadataStore", "createDirectory", "blobStore", "_blobStore", "BlobStore", "spaces", "space", "_spaces", "getSpace", "spaceKey", "networkManager", "_networkManager", "setPeerInfo", "peerKey", "toHex", "spaceManager", "_spaceManager", "SpaceManager", "feedStore", "createSpace", "genesisKey", "dataKey", "saveMetadata", "controlFeed", "openFeed", "writable", "dataFeed", "sparse", "metadata", "key", "genesisFeedKey", "controlFeedKey", "dataFeedKey", "addSpace", "open", "constructSpace", "swarmIdentity", "credentialProvider", "MOCK_AUTH_PROVIDER", "credentialAuthenticator", "MOCK_AUTH_VERIFIER", "memberKey", "onAuthorizedConnection", "session", "addExtension", "createGossip", "createExtension", "remotePeerId", "onDelegatedInvitationStatusChange", "onMemberRolesChanged", "setControlFeed", "setDataFeed", "Context", "createSpaceProtocol", "topic", "gossip", "SpaceProtocol", "onSessionAuth", "Gossip", "localPeerId", "createPresence", "Presence", "announceInterval", "offlineTimeout", "spaceGenesis", "generator", "CredentialGenerator", "credentials", "createSpaceGenesis", "createFeedAdmission", "AdmittedFeed", "Designation", "DATA", "createEpochCredential", "credential", "controlPipeline", "writer", "write", "_feedBuilder", "createFeedStore", "NetworkAdapter", "Trigger", "sleep", "invariant", "log", "TestAdapter", "createPair", "connectionStateProvider", "adapter1", "send", "message", "then", "adapter2", "receive", "isReady", "whenReady", "Promise", "resolve", "connect", "peerId", "onConnect", "wake", "peerCandidate", "emit", "peerMetadata", "peerDisconnected", "from", "senderId", "to", "targetId", "type", "_params", "disconnect", "undefined", "_define_property", "sleep", "synchronized", "LifecycleState", "Resource", "invariant", "log", "AutomergeReplicator", "TestReplicationNetwork", "_close", "ctx", "replicator", "_replicators", "connection", "connections", "writable", "abort", "readable", "cancel", "createReplicator", "TestReplicator", "onConnect", "_lifecycleState", "OPEN", "_connectReplicator", "onDisconnect", "_disconnectReplicator", "add", "otherReplicator", "values", "connected", "from", "context", "peerId", "to", "connection1", "connection2", "_createConnectionPair", "onConnectionOpen", "onConnectionClosed", "otherSide", "owningReplicator", "removeConnection", "peer1", "peer2", "LOG", "forward", "TransformStream", "transform", "message", "controller", "_latency", "undefined", "enqueue", "backwards", "TestReplicatorConnection", "options", "_define_property", "Set", "latency", "connect", "_params", "disconnect", "addConnection", "delete", "bundleSyncEnabled", "shouldAdvertise", "params", "shouldSyncCollection", "testAutomergeReplicatorFactory", "sendSyncRetryPolicy", "retryBackoff", "retriesBeforeBackoff", "maxRetries", "brokenAutomergeReplicatorFactory", "onSyncMessage", "Error", "Schema", "Type", "Person", "Schema", "Struct", "name", "String", "email", "optional", "age", "Number", "pipe", "Type", "Obj", "typename", "version", "Organization", "WorksFor", "since", "Relation", "source", "target", "Task", "title", "createdAt", "assignee", "Ref", "DatabaseDirectory", "ObjectStructure", "getSchemaDXN", "DXN", "ObjectId", "PublicKey", "spaceKey", "PublicKey", "random", "PEOPLE", "fred", "DatabaseDirectory", "make", "toHex", "objects", "ObjectId", "ObjectStructure", "makeObject", "type", "getSchemaDXN", "Person", "toString", "data", "name", "alice", "ORGS", "cyberdyne", "Organization", "founded", "aperture", "WORKS_FOR", "fredWorksForCyberdyne", "makeRelation", "WorksFor", "source", "DXN", "fromLocalObjectId", "Object", "keys", "target", "since", "position", "aliceWorksForAperture", "TASKS", "task1", "Task", "title", "description", "status", "dueDate", "assignee", "task2"]
|
|
7
7
|
}
|