@dxos/echo-pipeline 0.8.1 → 0.8.2-main.10c050d
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-32WDI3LB.mjs → chunk-3XSXS5EX.mjs} +15 -21
- package/dist/lib/browser/chunk-3XSXS5EX.mjs.map +7 -0
- package/dist/lib/browser/chunk-CGS2ULMK.mjs +11 -0
- package/dist/lib/browser/chunk-CGS2ULMK.mjs.map +7 -0
- package/dist/lib/browser/chunk-TQJTKNMS.mjs +126 -0
- package/dist/lib/browser/chunk-TQJTKNMS.mjs.map +7 -0
- package/dist/lib/browser/filter/index.mjs +11 -0
- package/dist/lib/browser/filter/index.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1380 -516
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +202 -22
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node/chunk-HOPOFWAL.cjs +147 -0
- package/dist/lib/node/chunk-HOPOFWAL.cjs.map +7 -0
- package/dist/lib/node/chunk-Q7SFCCGT.cjs +33 -0
- package/dist/lib/node/chunk-Q7SFCCGT.cjs.map +7 -0
- package/dist/lib/node/{chunk-TC2PRBEU.cjs → chunk-SG2PL5RH.cjs} +18 -24
- package/dist/lib/node/chunk-SG2PL5RH.cjs.map +7 -0
- package/dist/lib/node/filter/index.cjs +32 -0
- package/dist/lib/node/filter/index.cjs.map +7 -0
- package/dist/lib/node/index.cjs +1381 -525
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +207 -31
- package/dist/lib/node/testing/index.cjs.map +4 -4
- package/dist/lib/node-esm/{chunk-UKOLB3LW.mjs → chunk-3BZP75TJ.mjs} +15 -21
- package/dist/lib/node-esm/chunk-3BZP75TJ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-RVK35BS7.mjs +126 -0
- package/dist/lib/node-esm/chunk-RVK35BS7.mjs.map +7 -0
- package/dist/lib/node-esm/filter/index.mjs +11 -0
- package/dist/lib/node-esm/filter/index.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1380 -516
- 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 +202 -22
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/types/src/automerge/automerge-host.d.ts +6 -4
- 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-data-monitor.d.ts +6 -6
- package/dist/types/src/automerge/echo-data-monitor.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-network-adapter.d.ts +4 -1
- package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
- package/dist/types/src/automerge/heads-store.d.ts +2 -2
- package/dist/types/src/automerge/heads-store.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.map +1 -1
- package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
- package/dist/types/src/automerge/network-protocol.d.ts +1 -1
- package/dist/types/src/automerge/network-protocol.d.ts.map +1 -1
- package/dist/types/src/automerge/space-collection.d.ts +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-metrics.d.ts +1 -1
- package/dist/types/src/db-host/automerge-metrics.d.ts.map +1 -1
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/db-host/database-root.d.ts +7 -7
- package/dist/types/src/db-host/database-root.d.ts.map +1 -1
- package/dist/types/src/db-host/documents-iterator.d.ts +1 -1
- package/dist/types/src/db-host/documents-iterator.d.ts.map +1 -1
- package/dist/types/src/db-host/documents-synchronizer.d.ts +4 -4
- package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
- package/dist/types/src/db-host/echo-host.d.ts +13 -2
- package/dist/types/src/db-host/echo-host.d.ts.map +1 -1
- package/dist/types/src/db-host/index.d.ts +0 -1
- package/dist/types/src/db-host/index.d.ts.map +1 -1
- package/dist/types/src/db-host/query-service.d.ts +2 -0
- package/dist/types/src/db-host/query-service.d.ts.map +1 -1
- package/dist/types/src/db-host/space-state-manager.d.ts +4 -3
- package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -1
- package/dist/types/src/edge/echo-edge-replicator.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 +13 -0
- package/dist/types/src/filter/filter-match.d.ts.map +1 -0
- package/dist/types/src/filter/filter-match.test.d.ts +2 -0
- package/dist/types/src/filter/filter-match.test.d.ts.map +1 -0
- package/dist/types/src/filter/index.d.ts +2 -0
- package/dist/types/src/filter/index.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.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.map +1 -1
- package/dist/types/src/pipeline/timeframe-clock.d.ts.map +1 -1
- package/dist/types/src/query/errors.d.ts +23 -0
- package/dist/types/src/query/errors.d.ts.map +1 -0
- package/dist/types/src/query/index.d.ts +5 -0
- package/dist/types/src/query/index.d.ts.map +1 -0
- package/dist/types/src/query/plan.d.ts +132 -0
- package/dist/types/src/query/plan.d.ts.map +1 -0
- package/dist/types/src/query/query-executor.d.ts +83 -0
- package/dist/types/src/query/query-executor.d.ts.map +1 -0
- package/dist/types/src/query/query-planner.d.ts +33 -0
- package/dist/types/src/query/query-planner.d.ts.map +1 -0
- package/dist/types/src/query/query-planner.test.d.ts +2 -0
- package/dist/types/src/query/query-planner.test.d.ts.map +1 -0
- package/dist/types/src/space/admission-discovery-extension.d.ts.map +1 -1
- package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/space-manager.d.ts.map +1 -1
- package/dist/types/src/space/space-protocol.d.ts.map +1 -1
- 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 +2 -0
- 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-data.d.ts +18 -0
- package/dist/types/src/testing/test-data.d.ts.map +1 -0
- package/dist/types/src/testing/test-network-adapter.d.ts +3 -2
- package/dist/types/src/testing/test-network-adapter.d.ts.map +1 -1
- package/dist/types/src/testing/test-schema.d.ts +39 -0
- package/dist/types/src/testing/test-schema.d.ts.map +1 -0
- package/dist/types/src/util.d.ts +2 -2
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +43 -34
- package/src/automerge/automerge-host.test.ts +7 -7
- package/src/automerge/automerge-host.ts +58 -60
- package/src/automerge/automerge-repo.test.ts +65 -65
- package/src/automerge/collection-synchronizer.test.ts +1 -1
- package/src/automerge/collection-synchronizer.ts +11 -10
- package/src/automerge/echo-data-monitor.ts +21 -20
- package/src/automerge/echo-network-adapter.test.ts +1 -1
- package/src/automerge/echo-network-adapter.ts +25 -18
- package/src/automerge/heads-store.ts +4 -3
- package/src/automerge/leveldb-storage-adapter.ts +1 -1
- package/src/automerge/mesh-echo-replicator-connection.ts +6 -5
- package/src/automerge/mesh-echo-replicator.ts +2 -2
- package/src/automerge/network-protocol.ts +2 -1
- package/src/automerge/space-collection.ts +2 -1
- package/src/db-host/automerge-metrics.ts +2 -1
- package/src/db-host/data-service.ts +4 -3
- package/src/db-host/database-root.ts +17 -22
- package/src/db-host/documents-iterator.ts +9 -8
- package/src/db-host/documents-synchronizer.test.ts +2 -2
- package/src/db-host/documents-synchronizer.ts +20 -18
- package/src/db-host/echo-host.ts +44 -15
- package/src/db-host/index.ts +0 -1
- package/src/db-host/query-service.ts +43 -37
- package/src/db-host/space-state-manager.ts +14 -4
- package/src/edge/echo-edge-replicator.test.ts +3 -3
- package/src/edge/echo-edge-replicator.ts +9 -8
- package/src/edge/inflight-request-limiter.ts +4 -4
- package/src/filter/filter-match.test.ts +101 -0
- package/src/filter/filter-match.ts +174 -0
- package/src/filter/index.ts +5 -0
- package/src/index.ts +1 -0
- package/src/metadata/metadata-store.ts +13 -13
- package/src/pipeline/pipeline-stress.test.ts +9 -9
- package/src/pipeline/pipeline.ts +13 -13
- package/src/pipeline/timeframe-clock.ts +5 -5
- package/src/query/errors.ts +7 -0
- package/src/query/index.ts +8 -0
- package/src/query/plan.ts +179 -0
- package/src/query/query-executor.ts +648 -0
- package/src/query/query-planner.test.ts +613 -0
- package/src/query/query-planner.ts +470 -0
- package/src/space/admission-discovery-extension.ts +2 -2
- package/src/space/control-pipeline.ts +8 -8
- package/src/space/space-manager.ts +5 -4
- package/src/space/space-protocol.browser.test.ts +1 -0
- package/src/space/space-protocol.test.ts +1 -0
- package/src/space/space-protocol.ts +4 -4
- package/src/space/space.ts +5 -5
- package/src/testing/index.ts +2 -0
- package/src/testing/test-agent-builder.ts +6 -6
- package/src/testing/test-data.ts +127 -0
- package/src/testing/test-network-adapter.ts +15 -12
- package/src/testing/test-replicator.ts +2 -2
- package/src/testing/test-schema.ts +53 -0
- package/src/util.ts +7 -3
- package/dist/lib/browser/chunk-32WDI3LB.mjs.map +0 -7
- package/dist/lib/node/chunk-TC2PRBEU.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-UKOLB3LW.mjs.map +0 -7
- package/dist/types/src/db-host/query-state.d.ts +0 -41
- package/dist/types/src/db-host/query-state.d.ts.map +0 -1
- package/src/db-host/query-state.ts +0 -217
|
@@ -22,17 +22,20 @@ __export(testing_exports, {
|
|
|
22
22
|
TestAdapter: () => TestAdapter,
|
|
23
23
|
TestAgent: () => TestAgent,
|
|
24
24
|
TestAgentBuilder: () => TestAgentBuilder,
|
|
25
|
+
TestData: () => test_data_exports,
|
|
25
26
|
TestFeedBuilder: () => TestFeedBuilder,
|
|
26
27
|
TestReplicationNetwork: () => TestReplicationNetwork,
|
|
27
28
|
TestReplicator: () => TestReplicator,
|
|
28
29
|
TestReplicatorConnection: () => TestReplicatorConnection,
|
|
30
|
+
TestSchema: () => test_schema_exports,
|
|
29
31
|
WebsocketNetworkManagerProvider: () => WebsocketNetworkManagerProvider,
|
|
30
32
|
brokenAutomergeReplicatorFactory: () => brokenAutomergeReplicatorFactory,
|
|
31
33
|
changeStorageVersionInMetadata: () => changeStorageVersionInMetadata,
|
|
32
34
|
testAutomergeReplicatorFactory: () => testAutomergeReplicatorFactory
|
|
33
35
|
});
|
|
34
36
|
module.exports = __toCommonJS(testing_exports);
|
|
35
|
-
var
|
|
37
|
+
var import_chunk_SG2PL5RH = require("../chunk-SG2PL5RH.cjs");
|
|
38
|
+
var import_chunk_Q7SFCCGT = require("../chunk-Q7SFCCGT.cjs");
|
|
36
39
|
var import_log = require("@dxos/log");
|
|
37
40
|
var import_proto = require("@dxos/protocols/proto");
|
|
38
41
|
var import_context = require("@dxos/context");
|
|
@@ -46,8 +49,8 @@ var import_teleport_extension_gossip = require("@dxos/teleport-extension-gossip"
|
|
|
46
49
|
var import_teleport_extension_object_sync = require("@dxos/teleport-extension-object-sync");
|
|
47
50
|
var import_util = require("@dxos/util");
|
|
48
51
|
var import_testing = require("@dxos/feed-store/testing");
|
|
52
|
+
var import_automerge_repo = require("@automerge/automerge-repo");
|
|
49
53
|
var import_async = require("@dxos/async");
|
|
50
|
-
var import_automerge_repo = require("@dxos/automerge/automerge-repo");
|
|
51
54
|
var import_invariant = require("@dxos/invariant");
|
|
52
55
|
var import_log2 = require("@dxos/log");
|
|
53
56
|
var import_async2 = require("@dxos/async");
|
|
@@ -55,6 +58,11 @@ var import_context2 = require("@dxos/context");
|
|
|
55
58
|
var import_invariant2 = require("@dxos/invariant");
|
|
56
59
|
var import_log3 = require("@dxos/log");
|
|
57
60
|
var import_teleport_extension_automerge_replicator = require("@dxos/teleport-extension-automerge-replicator");
|
|
61
|
+
var import_effect = require("effect");
|
|
62
|
+
var import_echo = require("@dxos/echo");
|
|
63
|
+
var import_echo_protocol = require("@dxos/echo-protocol");
|
|
64
|
+
var import_echo_schema = require("@dxos/echo-schema");
|
|
65
|
+
var import_keys2 = require("@dxos/keys");
|
|
58
66
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/change-metadata.ts";
|
|
59
67
|
var EchoMetadata = import_proto.schema.getCodecForType("dxos.echo.metadata.EchoMetadata");
|
|
60
68
|
var changeStorageVersionInMetadata = async (storage, version) => {
|
|
@@ -64,7 +72,7 @@ var changeStorageVersionInMetadata = async (storage, version) => {
|
|
|
64
72
|
S: void 0,
|
|
65
73
|
C: (f, a) => f(...a)
|
|
66
74
|
});
|
|
67
|
-
const metadata = new
|
|
75
|
+
const metadata = new import_chunk_SG2PL5RH.MetadataStore(storage.createDirectory("metadata"));
|
|
68
76
|
await metadata.load();
|
|
69
77
|
const echoMetadata = metadata.metadata;
|
|
70
78
|
echoMetadata.version = version;
|
|
@@ -75,7 +83,7 @@ var changeStorageVersionInMetadata = async (storage, version) => {
|
|
|
75
83
|
var TestFeedBuilder = class extends import_testing.TestBuilder {
|
|
76
84
|
constructor() {
|
|
77
85
|
super({
|
|
78
|
-
valueEncoding:
|
|
86
|
+
valueEncoding: import_chunk_SG2PL5RH.valueEncoding
|
|
79
87
|
});
|
|
80
88
|
}
|
|
81
89
|
};
|
|
@@ -120,7 +128,7 @@ var TestAgentBuilder = class {
|
|
|
120
128
|
};
|
|
121
129
|
var TestAgent = class {
|
|
122
130
|
get metadataStore() {
|
|
123
|
-
return this._metadataStore ??= new
|
|
131
|
+
return this._metadataStore ??= new import_chunk_SG2PL5RH.MetadataStore(this.storage.createDirectory("metadata"));
|
|
124
132
|
}
|
|
125
133
|
get blobStore() {
|
|
126
134
|
return this._blobStore ??= new import_teleport_extension_object_sync.BlobStore(this.storage.createDirectory("blobs"));
|
|
@@ -143,8 +151,8 @@ var TestAgent = class {
|
|
|
143
151
|
get spaces() {
|
|
144
152
|
return Array.from(this._spaces.values());
|
|
145
153
|
}
|
|
146
|
-
getSpace(
|
|
147
|
-
return this._spaces.get(
|
|
154
|
+
getSpace(spaceKey2) {
|
|
155
|
+
return this._spaces.get(spaceKey2);
|
|
148
156
|
}
|
|
149
157
|
get networkManager() {
|
|
150
158
|
if (this._networkManager) {
|
|
@@ -158,17 +166,17 @@ var TestAgent = class {
|
|
|
158
166
|
return this._networkManager;
|
|
159
167
|
}
|
|
160
168
|
get spaceManager() {
|
|
161
|
-
return this._spaceManager ??= new
|
|
169
|
+
return this._spaceManager ??= new import_chunk_SG2PL5RH.SpaceManager({
|
|
162
170
|
feedStore: this.feedStore,
|
|
163
171
|
networkManager: this.networkManager,
|
|
164
172
|
metadataStore: this.metadataStore,
|
|
165
173
|
blobStore: this.blobStore
|
|
166
174
|
});
|
|
167
175
|
}
|
|
168
|
-
async createSpace(identityKey = this.identityKey,
|
|
169
|
-
if (!
|
|
176
|
+
async createSpace(identityKey = this.identityKey, spaceKey2, genesisKey, dataKey, saveMetadata = false) {
|
|
177
|
+
if (!spaceKey2) {
|
|
170
178
|
saveMetadata = true;
|
|
171
|
-
|
|
179
|
+
spaceKey2 = await this.keyring.createKey();
|
|
172
180
|
}
|
|
173
181
|
if (!genesisKey) {
|
|
174
182
|
genesisKey = await this.keyring.createKey();
|
|
@@ -181,7 +189,7 @@ var TestAgent = class {
|
|
|
181
189
|
sparse: true
|
|
182
190
|
});
|
|
183
191
|
const metadata = {
|
|
184
|
-
key:
|
|
192
|
+
key: spaceKey2,
|
|
185
193
|
genesisFeedKey: genesisKey,
|
|
186
194
|
controlFeedKey: controlFeed.key,
|
|
187
195
|
dataFeedKey: dataFeed.key
|
|
@@ -195,8 +203,8 @@ var TestAgent = class {
|
|
|
195
203
|
swarmIdentity: {
|
|
196
204
|
identityKey: this.identityKey,
|
|
197
205
|
peerKey: this.deviceKey,
|
|
198
|
-
credentialProvider:
|
|
199
|
-
credentialAuthenticator:
|
|
206
|
+
credentialProvider: import_chunk_SG2PL5RH.MOCK_AUTH_PROVIDER,
|
|
207
|
+
credentialAuthenticator: import_chunk_SG2PL5RH.MOCK_AUTH_VERIFIER
|
|
200
208
|
},
|
|
201
209
|
memberKey: identityKey,
|
|
202
210
|
onAuthorizedConnection: (session) => {
|
|
@@ -215,17 +223,17 @@ var TestAgent = class {
|
|
|
215
223
|
F: __dxlog_file2,
|
|
216
224
|
L: 205
|
|
217
225
|
}));
|
|
218
|
-
this._spaces.set(
|
|
226
|
+
this._spaces.set(spaceKey2, space);
|
|
219
227
|
return space;
|
|
220
228
|
}
|
|
221
229
|
createSpaceProtocol(topic, gossip) {
|
|
222
|
-
return new
|
|
230
|
+
return new import_chunk_SG2PL5RH.SpaceProtocol({
|
|
223
231
|
topic,
|
|
224
232
|
swarmIdentity: {
|
|
225
233
|
identityKey: this.identityKey,
|
|
226
234
|
peerKey: this.deviceKey,
|
|
227
|
-
credentialProvider:
|
|
228
|
-
credentialAuthenticator:
|
|
235
|
+
credentialProvider: import_chunk_SG2PL5RH.MOCK_AUTH_PROVIDER,
|
|
236
|
+
credentialAuthenticator: import_chunk_SG2PL5RH.MOCK_AUTH_VERIFIER
|
|
229
237
|
},
|
|
230
238
|
networkManager: this.networkManager,
|
|
231
239
|
blobStore: this.blobStore,
|
|
@@ -280,16 +288,13 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
|
|
|
280
288
|
];
|
|
281
289
|
}
|
|
282
290
|
constructor(_params) {
|
|
283
|
-
super();
|
|
284
|
-
this._params = _params;
|
|
285
|
-
this.onConnect = new import_async.Trigger();
|
|
291
|
+
super(), this._params = _params, this.onConnect = new import_async.Trigger();
|
|
286
292
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
});
|
|
293
|
+
isReady() {
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
whenReady() {
|
|
297
|
+
return Promise.resolve();
|
|
293
298
|
}
|
|
294
299
|
connect(peerId) {
|
|
295
300
|
this.peerId = peerId;
|
|
@@ -298,7 +303,7 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
|
|
|
298
303
|
peerCandidate(peerId) {
|
|
299
304
|
(0, import_invariant.invariant)(peerId, "PeerId is required", {
|
|
300
305
|
F: __dxlog_file3,
|
|
301
|
-
L:
|
|
306
|
+
L: 45,
|
|
302
307
|
S: this,
|
|
303
308
|
A: [
|
|
304
309
|
"peerId",
|
|
@@ -313,7 +318,7 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
|
|
|
313
318
|
peerDisconnected(peerId) {
|
|
314
319
|
(0, import_invariant.invariant)(peerId, "PeerId is required", {
|
|
315
320
|
F: __dxlog_file3,
|
|
316
|
-
L:
|
|
321
|
+
L: 50,
|
|
317
322
|
S: this,
|
|
318
323
|
A: [
|
|
319
324
|
"peerId",
|
|
@@ -331,7 +336,7 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
|
|
|
331
336
|
type: message.type
|
|
332
337
|
}, {
|
|
333
338
|
F: __dxlog_file3,
|
|
334
|
-
L:
|
|
339
|
+
L: 55,
|
|
335
340
|
S: this,
|
|
336
341
|
C: (f, a) => f(...a)
|
|
337
342
|
});
|
|
@@ -343,7 +348,7 @@ var TestAdapter = class _TestAdapter extends import_automerge_repo.NetworkAdapte
|
|
|
343
348
|
receive(message) {
|
|
344
349
|
(0, import_invariant.invariant)(this.peerId, "Peer id is not set", {
|
|
345
350
|
F: __dxlog_file3,
|
|
346
|
-
L:
|
|
351
|
+
L: 64,
|
|
347
352
|
S: this,
|
|
348
353
|
A: [
|
|
349
354
|
"this.peerId",
|
|
@@ -559,16 +564,187 @@ var brokenAutomergeReplicatorFactory = (params) => {
|
|
|
559
564
|
};
|
|
560
565
|
return testAutomergeReplicatorFactory(params);
|
|
561
566
|
};
|
|
567
|
+
var test_schema_exports = {};
|
|
568
|
+
(0, import_chunk_Q7SFCCGT.__export)(test_schema_exports, {
|
|
569
|
+
Organization: () => Organization,
|
|
570
|
+
Person: () => Person,
|
|
571
|
+
Task: () => Task,
|
|
572
|
+
WorksFor: () => WorksFor
|
|
573
|
+
});
|
|
574
|
+
var Person = import_effect.Schema.Struct({
|
|
575
|
+
name: import_effect.Schema.String,
|
|
576
|
+
email: import_effect.Schema.optional(import_effect.Schema.String),
|
|
577
|
+
age: import_effect.Schema.optional(import_effect.Schema.Number)
|
|
578
|
+
}).pipe(import_echo.Type.Obj({
|
|
579
|
+
typename: "dxos.org/type/Person",
|
|
580
|
+
version: "0.1.0"
|
|
581
|
+
}));
|
|
582
|
+
var Organization = import_effect.Schema.Struct({
|
|
583
|
+
name: import_effect.Schema.String
|
|
584
|
+
}).pipe(import_echo.Type.Obj({
|
|
585
|
+
typename: "dxos.org/type/Organization",
|
|
586
|
+
version: "0.1.0"
|
|
587
|
+
}));
|
|
588
|
+
var WorksFor = import_effect.Schema.Struct({
|
|
589
|
+
since: import_effect.Schema.String
|
|
590
|
+
}).pipe(import_echo.Type.Relation({
|
|
591
|
+
typename: "dxos.org/type/WorksFor",
|
|
592
|
+
version: "0.1.0",
|
|
593
|
+
source: Person,
|
|
594
|
+
target: Organization
|
|
595
|
+
}));
|
|
596
|
+
var Task = import_effect.Schema.Struct({
|
|
597
|
+
title: import_effect.Schema.String,
|
|
598
|
+
createdAt: import_effect.Schema.String,
|
|
599
|
+
assignee: import_echo.Type.Ref(Person)
|
|
600
|
+
}).pipe(import_echo.Type.Obj({
|
|
601
|
+
typename: "dxos.org/type/Task",
|
|
602
|
+
version: "0.1.0"
|
|
603
|
+
}));
|
|
604
|
+
var test_data_exports = {};
|
|
605
|
+
(0, import_chunk_Q7SFCCGT.__export)(test_data_exports, {
|
|
606
|
+
ORGS: () => ORGS,
|
|
607
|
+
PEOPLE: () => PEOPLE,
|
|
608
|
+
TASKS: () => TASKS,
|
|
609
|
+
WORKS_FOR: () => WORKS_FOR
|
|
610
|
+
});
|
|
611
|
+
var spaceKey = import_keys2.PublicKey.random();
|
|
612
|
+
var PEOPLE = {
|
|
613
|
+
fred: import_echo_protocol.DatabaseDirectory.make({
|
|
614
|
+
spaceKey: spaceKey.toHex(),
|
|
615
|
+
objects: {
|
|
616
|
+
[import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
|
|
617
|
+
type: (0, import_echo_schema.getSchemaDXN)(Person).toString(),
|
|
618
|
+
data: {
|
|
619
|
+
name: "Fred"
|
|
620
|
+
}
|
|
621
|
+
})
|
|
622
|
+
}
|
|
623
|
+
}),
|
|
624
|
+
alice: import_echo_protocol.DatabaseDirectory.make({
|
|
625
|
+
spaceKey: spaceKey.toHex(),
|
|
626
|
+
objects: {
|
|
627
|
+
[import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
|
|
628
|
+
type: (0, import_echo_schema.getSchemaDXN)(Person).toString(),
|
|
629
|
+
data: {
|
|
630
|
+
name: "Alice"
|
|
631
|
+
}
|
|
632
|
+
})
|
|
633
|
+
}
|
|
634
|
+
})
|
|
635
|
+
};
|
|
636
|
+
var ORGS = {
|
|
637
|
+
cyberdyne: import_echo_protocol.DatabaseDirectory.make({
|
|
638
|
+
spaceKey: spaceKey.toHex(),
|
|
639
|
+
objects: {
|
|
640
|
+
[import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
|
|
641
|
+
type: (0, import_echo_schema.getSchemaDXN)(Organization).toString(),
|
|
642
|
+
data: {
|
|
643
|
+
name: "Cyberdyne Systems",
|
|
644
|
+
founded: "1984"
|
|
645
|
+
}
|
|
646
|
+
})
|
|
647
|
+
}
|
|
648
|
+
}),
|
|
649
|
+
aperture: import_echo_protocol.DatabaseDirectory.make({
|
|
650
|
+
spaceKey: spaceKey.toHex(),
|
|
651
|
+
objects: {
|
|
652
|
+
[import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
|
|
653
|
+
type: (0, import_echo_schema.getSchemaDXN)(Organization).toString(),
|
|
654
|
+
data: {
|
|
655
|
+
name: "Aperture Science",
|
|
656
|
+
founded: "1953"
|
|
657
|
+
}
|
|
658
|
+
})
|
|
659
|
+
}
|
|
660
|
+
})
|
|
661
|
+
};
|
|
662
|
+
var WORKS_FOR = {
|
|
663
|
+
fredWorksForCyberdyne: import_echo_protocol.DatabaseDirectory.make({
|
|
664
|
+
spaceKey: spaceKey.toHex(),
|
|
665
|
+
objects: {
|
|
666
|
+
[import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeRelation({
|
|
667
|
+
type: (0, import_echo_schema.getSchemaDXN)(WorksFor).toString(),
|
|
668
|
+
source: {
|
|
669
|
+
"/": import_keys2.DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
|
|
670
|
+
},
|
|
671
|
+
target: {
|
|
672
|
+
"/": import_keys2.DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects)[0]).toString()
|
|
673
|
+
},
|
|
674
|
+
data: {
|
|
675
|
+
since: "2020",
|
|
676
|
+
position: "Engineer"
|
|
677
|
+
}
|
|
678
|
+
})
|
|
679
|
+
}
|
|
680
|
+
}),
|
|
681
|
+
aliceWorksForAperture: import_echo_protocol.DatabaseDirectory.make({
|
|
682
|
+
spaceKey: spaceKey.toHex(),
|
|
683
|
+
objects: {
|
|
684
|
+
[import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeRelation({
|
|
685
|
+
type: (0, import_echo_schema.getSchemaDXN)(WorksFor).toString(),
|
|
686
|
+
source: {
|
|
687
|
+
"/": import_keys2.DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
|
|
688
|
+
},
|
|
689
|
+
target: {
|
|
690
|
+
"/": import_keys2.DXN.fromLocalObjectId(Object.keys(ORGS.aperture.objects)[0]).toString()
|
|
691
|
+
},
|
|
692
|
+
data: {
|
|
693
|
+
since: "2018",
|
|
694
|
+
position: "Research Scientist"
|
|
695
|
+
}
|
|
696
|
+
})
|
|
697
|
+
}
|
|
698
|
+
})
|
|
699
|
+
};
|
|
700
|
+
var TASKS = {
|
|
701
|
+
task1: import_echo_protocol.DatabaseDirectory.make({
|
|
702
|
+
spaceKey: spaceKey.toHex(),
|
|
703
|
+
objects: {
|
|
704
|
+
[import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
|
|
705
|
+
type: (0, import_echo_schema.getSchemaDXN)(Task).toString(),
|
|
706
|
+
data: {
|
|
707
|
+
title: "Complete project documentation",
|
|
708
|
+
description: "Write comprehensive documentation for the new system",
|
|
709
|
+
status: "in-progress",
|
|
710
|
+
dueDate: "2023-12-31",
|
|
711
|
+
assignee: {
|
|
712
|
+
"/": import_keys2.DXN.fromLocalObjectId(Object.keys(PEOPLE.fred.objects)[0]).toString()
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
})
|
|
716
|
+
}
|
|
717
|
+
}),
|
|
718
|
+
task2: import_echo_protocol.DatabaseDirectory.make({
|
|
719
|
+
spaceKey: spaceKey.toHex(),
|
|
720
|
+
objects: {
|
|
721
|
+
[import_keys2.ObjectId.random()]: import_echo_protocol.ObjectStructure.makeObject({
|
|
722
|
+
type: (0, import_echo_schema.getSchemaDXN)(Task).toString(),
|
|
723
|
+
data: {
|
|
724
|
+
title: "Run experiments",
|
|
725
|
+
description: "Conduct series of experiments on the portal device",
|
|
726
|
+
status: "pending",
|
|
727
|
+
dueDate: "2023-11-15",
|
|
728
|
+
assignee: {
|
|
729
|
+
"/": import_keys2.DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
})
|
|
733
|
+
}
|
|
734
|
+
})
|
|
735
|
+
};
|
|
562
736
|
// Annotate the CommonJS export names for ESM import in node:
|
|
563
737
|
0 && (module.exports = {
|
|
564
738
|
MemoryNetworkManagerProvider,
|
|
565
739
|
TestAdapter,
|
|
566
740
|
TestAgent,
|
|
567
741
|
TestAgentBuilder,
|
|
742
|
+
TestData,
|
|
568
743
|
TestFeedBuilder,
|
|
569
744
|
TestReplicationNetwork,
|
|
570
745
|
TestReplicator,
|
|
571
746
|
TestReplicatorConnection,
|
|
747
|
+
TestSchema,
|
|
572
748
|
WebsocketNetworkManagerProvider,
|
|
573
749
|
brokenAutomergeReplicatorFactory,
|
|
574
750
|
changeStorageVersionInMetadata,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
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.info('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) {\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) {\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) {\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() {\n return new Gossip({\n localPeerId: this.deviceKey,\n });\n }\n\n createPresence(gossip?: Gossip) {\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) {\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 { Trigger, sleep } from '@dxos/async';\nimport { type Message, NetworkAdapter, type PeerId } from '@dxos/automerge/automerge-repo';\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') {\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 // NOTE: Emitting `ready` event in NetworkAdapter`s constructor causes a race condition\n // because `Repo` waits for `ready` event (which it never receives) before it starts using the adapter.\n ready() {\n this.emit('ready', { network: this });\n }\n\n override connect(peerId: PeerId) {\n this.peerId = peerId;\n this.onConnect.wake();\n }\n\n peerCandidate(peerId: PeerId) {\n invariant(peerId, 'PeerId is required');\n this.emit('peer-candidate', { peerId, peerMetadata: {} });\n }\n\n peerDisconnected(peerId: PeerId) {\n invariant(peerId, 'PeerId is required');\n this.emit('peer-disconnected', { peerId });\n }\n\n override send(message: Message) {\n log('send', { from: message.senderId, to: message.targetId, type: message.type });\n this._params.send(message);\n }\n\n override disconnect() {\n this.peerId = undefined;\n }\n\n receive(message: Message) {\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) {\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) {\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.info('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.info('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"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_credentials", "import_log", "import_async", "import_context", "import_invariant", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "info", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "TestFeedBuilder", "TestBuilder", "
|
|
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.info('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.info('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.info('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": ["import_credentials", "import_log", "import_async", "import_context", "import_invariant", "import_keys", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "info", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "TestFeedBuilder", "TestBuilder", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "SwarmNetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createRtcTransportFactory", "TestAgentBuilder", "networkManagerProvider", "_agents", "ComplexMap", "PublicKey", "hash", "_storage", "createStorage", "type", "StorageType", "RAM", "_networkManagerProvider", "MemorySignalManagerContext", "close", "Promise", "all", "agents", "map", "agent", "Array", "from", "values", "getAgent", "deviceKey", "get", "createPeer", "feedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "metadataStore", "_metadataStore", "blobStore", "_blobStore", "BlobStore", "_feedBuilder", "_spaces", "feedStore", "createFeedStore", "spaces", "space", "getSpace", "spaceKey", "networkManager", "_networkManager", "setPeerInfo", "peerKey", "toHex", "spaceManager", "_spaceManager", "SpaceManager", "createSpace", "genesisKey", "dataKey", "saveMetadata", "controlFeed", "openFeed", "writable", "dataFeed", "sparse", "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", "TestAdapter", "NetworkAdapter", "createPair", "connectionStateProvider", "adapter1", "send", "message", "sleep", "then", "adapter2", "receive", "_params", "onConnect", "Trigger", "isReady", "whenReady", "resolve", "connect", "peerId", "wake", "peerCandidate", "invariant", "emit", "peerMetadata", "peerDisconnected", "senderId", "to", "targetId", "disconnect", "undefined", "TestReplicationNetwork", "Resource", "options", "_replicators", "Set", "_latency", "latency", "_close", "ctx", "replicator", "connection", "connections", "abort", "readable", "cancel", "createReplicator", "TestReplicator", "_lifecycleState", "LifecycleState", "OPEN", "_connectReplicator", "onDisconnect", "_disconnectReplicator", "add", "otherReplicator", "connected", "context", "connection1", "connection2", "_createConnectionPair", "onConnectionOpen", "onConnectionClosed", "otherSide", "owningReplicator", "removeConnection", "peer1", "peer2", "LOG", "forward", "TransformStream", "transform", "controller", "enqueue", "backwards", "TestReplicatorConnection", "addConnection", "delete", "shouldAdvertise", "params", "shouldSyncCollection", "testAutomergeReplicatorFactory", "AutomergeReplicator", "sendSyncRetryPolicy", "retryBackoff", "retriesBeforeBackoff", "maxRetries", "brokenAutomergeReplicatorFactory", "onSyncMessage", "Error", "Person", "Schema", "Struct", "name", "String", "email", "optional", "age", "Number", "pipe", "Type", "Obj", "typename", "Organization", "WorksFor", "since", "Relation", "source", "target", "Task", "title", "createdAt", "assignee", "Ref", "random", "PEOPLE", "fred", "DatabaseDirectory", "make", "objects", "ObjectId", "ObjectStructure", "makeObject", "getSchemaDXN", "toString", "data", "alice", "ORGS", "cyberdyne", "founded", "aperture", "WORKS_FOR", "fredWorksForCyberdyne", "makeRelation", "DXN", "fromLocalObjectId", "Object", "keys", "position", "aliceWorksForAperture", "TASKS", "task1", "description", "status", "dueDate", "task2"]
|
|
7
7
|
}
|