@dxos/echo-pipeline 0.8.4-main.a4bbb77 → 0.8.4-main.ae835ea
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-XGG76KKU.mjs → chunk-FR6GJ4S4.mjs} +339 -425
- package/dist/lib/{node-esm/chunk-CHMJJ4DG.mjs.map → browser/chunk-FR6GJ4S4.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-BVR7OOZK.mjs → chunk-WJJXJTNS.mjs} +7 -18
- package/dist/lib/browser/chunk-WJJXJTNS.mjs.map +7 -0
- package/dist/lib/browser/filter/index.mjs +1 -1
- package/dist/lib/browser/index.mjs +682 -750
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +65 -106
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/{chunk-CHMJJ4DG.mjs → chunk-JQCCVDLT.mjs} +339 -425
- package/dist/lib/{browser/chunk-XGG76KKU.mjs.map → node-esm/chunk-JQCCVDLT.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-L3ZEKVDR.mjs → chunk-LEQ77KAT.mjs} +7 -18
- package/dist/lib/node-esm/chunk-LEQ77KAT.mjs.map +7 -0
- package/dist/lib/node-esm/filter/index.mjs +1 -1
- package/dist/lib/node-esm/index.mjs +682 -750
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +65 -106
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
- package/dist/types/src/automerge/collection-synchronizer.d.ts +2 -1
- package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
- package/dist/types/src/db-host/query-service.d.ts.map +1 -1
- package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -1
- package/dist/types/src/filter/filter-match.d.ts +2 -2
- package/dist/types/src/filter/filter-match.d.ts.map +1 -1
- package/dist/types/src/query/query-executor.d.ts +9 -0
- package/dist/types/src/query/query-executor.d.ts.map +1 -1
- package/dist/types/src/testing/test-data.d.ts.map +1 -1
- package/dist/types/src/testing/test-schema.d.ts +1 -1
- package/dist/types/src/testing/test-schema.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +35 -36
- package/src/automerge/automerge-host.ts +8 -5
- package/src/automerge/collection-synchronizer.test.ts +4 -3
- package/src/automerge/collection-synchronizer.ts +14 -9
- package/src/db-host/query-service.ts +2 -1
- package/src/edge/echo-edge-replicator.ts +30 -9
- package/src/filter/filter-match.test.ts +1 -1
- package/src/filter/filter-match.ts +6 -19
- package/src/query/query-executor.ts +116 -36
- package/src/testing/test-data.ts +1 -1
- package/src/testing/test-schema.ts +1 -1
- package/dist/lib/browser/chunk-BVR7OOZK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-L3ZEKVDR.mjs.map +0 -7
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
SpaceManager,
|
|
7
7
|
SpaceProtocol,
|
|
8
8
|
valueEncoding
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-FR6GJ4S4.mjs";
|
|
10
10
|
import {
|
|
11
11
|
__export
|
|
12
12
|
} from "../chunk-CGS2ULMK.mjs";
|
|
@@ -55,19 +55,6 @@ var TestFeedBuilder = class extends TestBuilder {
|
|
|
55
55
|
};
|
|
56
56
|
|
|
57
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
58
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts";
|
|
72
59
|
var MemoryNetworkManagerProvider = (signalContext) => () => new SwarmNetworkManager({
|
|
73
60
|
signalManager: new MemorySignalManager(signalContext),
|
|
@@ -82,6 +69,15 @@ var WebsocketNetworkManagerProvider = (signalUrl) => () => new SwarmNetworkManag
|
|
|
82
69
|
transportFactory: createRtcTransportFactory()
|
|
83
70
|
});
|
|
84
71
|
var TestAgentBuilder = class {
|
|
72
|
+
_agents = new ComplexMap(PublicKey.hash);
|
|
73
|
+
_storage;
|
|
74
|
+
_networkManagerProvider;
|
|
75
|
+
constructor({ storage, networkManagerProvider } = {}) {
|
|
76
|
+
this._storage = storage ?? createStorage({
|
|
77
|
+
type: StorageType.RAM
|
|
78
|
+
});
|
|
79
|
+
this._networkManagerProvider = networkManagerProvider ?? MemoryNetworkManagerProvider(new MemorySignalManagerContext());
|
|
80
|
+
}
|
|
85
81
|
async close() {
|
|
86
82
|
return Promise.all(this.agents.map((agent) => agent.close()));
|
|
87
83
|
}
|
|
@@ -99,22 +95,32 @@ var TestAgentBuilder = class {
|
|
|
99
95
|
this._agents.set(deviceKey, agent);
|
|
100
96
|
return agent;
|
|
101
97
|
}
|
|
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
|
-
}
|
|
111
98
|
};
|
|
112
99
|
var TestAgent = class {
|
|
100
|
+
_networkManagerProvider;
|
|
101
|
+
_feedBuilder;
|
|
102
|
+
identityKey;
|
|
103
|
+
deviceKey;
|
|
104
|
+
_spaces = new ComplexMap(PublicKey.hash);
|
|
105
|
+
storage;
|
|
106
|
+
keyring;
|
|
107
|
+
feedStore;
|
|
108
|
+
_metadataStore;
|
|
113
109
|
get metadataStore() {
|
|
114
|
-
return this._metadataStore
|
|
110
|
+
return this._metadataStore ??= new MetadataStore(this.storage.createDirectory("metadata"));
|
|
115
111
|
}
|
|
112
|
+
_blobStore;
|
|
116
113
|
get blobStore() {
|
|
117
|
-
return this._blobStore
|
|
114
|
+
return this._blobStore ??= new BlobStore(this.storage.createDirectory("blobs"));
|
|
115
|
+
}
|
|
116
|
+
constructor(_networkManagerProvider, _feedBuilder, identityKey, deviceKey) {
|
|
117
|
+
this._networkManagerProvider = _networkManagerProvider;
|
|
118
|
+
this._feedBuilder = _feedBuilder;
|
|
119
|
+
this.identityKey = identityKey;
|
|
120
|
+
this.deviceKey = deviceKey;
|
|
121
|
+
this.storage = this._feedBuilder.storage;
|
|
122
|
+
this.keyring = this._feedBuilder.keyring;
|
|
123
|
+
this.feedStore = this._feedBuilder.createFeedStore();
|
|
118
124
|
}
|
|
119
125
|
async close() {
|
|
120
126
|
return Promise.all([
|
|
@@ -127,6 +133,7 @@ var TestAgent = class {
|
|
|
127
133
|
getSpace(spaceKey2) {
|
|
128
134
|
return this._spaces.get(spaceKey2);
|
|
129
135
|
}
|
|
136
|
+
_networkManager;
|
|
130
137
|
get networkManager() {
|
|
131
138
|
if (this._networkManager) {
|
|
132
139
|
return this._networkManager;
|
|
@@ -138,13 +145,14 @@ var TestAgent = class {
|
|
|
138
145
|
});
|
|
139
146
|
return this._networkManager;
|
|
140
147
|
}
|
|
148
|
+
_spaceManager;
|
|
141
149
|
get spaceManager() {
|
|
142
|
-
return this._spaceManager
|
|
150
|
+
return this._spaceManager ??= new SpaceManager({
|
|
143
151
|
feedStore: this.feedStore,
|
|
144
152
|
networkManager: this.networkManager,
|
|
145
153
|
metadataStore: this.metadataStore,
|
|
146
154
|
blobStore: this.blobStore
|
|
147
|
-
})
|
|
155
|
+
});
|
|
148
156
|
}
|
|
149
157
|
async createSpace(identityKey = this.identityKey, spaceKey2, genesisKey, dataKey, saveMetadata = false) {
|
|
150
158
|
if (!spaceKey2) {
|
|
@@ -245,28 +253,6 @@ var TestAgent = class {
|
|
|
245
253
|
});
|
|
246
254
|
}
|
|
247
255
|
}
|
|
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
|
-
}
|
|
270
256
|
};
|
|
271
257
|
|
|
272
258
|
// src/testing/test-network-adapter.ts
|
|
@@ -274,21 +260,9 @@ import { NetworkAdapter } from "@automerge/automerge-repo";
|
|
|
274
260
|
import { Trigger, sleep } from "@dxos/async";
|
|
275
261
|
import { invariant } from "@dxos/invariant";
|
|
276
262
|
import { log as log2 } from "@dxos/log";
|
|
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
263
|
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts";
|
|
291
264
|
var TestAdapter = class _TestAdapter extends NetworkAdapter {
|
|
265
|
+
_params;
|
|
292
266
|
static createPair(connectionStateProvider = () => "on") {
|
|
293
267
|
const adapter1 = new _TestAdapter({
|
|
294
268
|
send: (message) => connectionStateProvider() === "on" && sleep(10).then(() => adapter2.receive(message))
|
|
@@ -301,6 +275,10 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
|
|
|
301
275
|
adapter2
|
|
302
276
|
];
|
|
303
277
|
}
|
|
278
|
+
onConnect = new Trigger();
|
|
279
|
+
constructor(_params) {
|
|
280
|
+
super(), this._params = _params;
|
|
281
|
+
}
|
|
304
282
|
isReady() {
|
|
305
283
|
return true;
|
|
306
284
|
}
|
|
@@ -368,9 +346,6 @@ var TestAdapter = class _TestAdapter extends NetworkAdapter {
|
|
|
368
346
|
});
|
|
369
347
|
this.emit("message", message);
|
|
370
348
|
}
|
|
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
|
-
}
|
|
374
349
|
};
|
|
375
350
|
|
|
376
351
|
// src/testing/test-replicator.ts
|
|
@@ -379,19 +354,6 @@ import { LifecycleState, Resource } from "@dxos/context";
|
|
|
379
354
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
380
355
|
import { log as log3 } from "@dxos/log";
|
|
381
356
|
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
|
-
}
|
|
395
357
|
function _ts_decorate(decorators, target, key, desc) {
|
|
396
358
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
397
359
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -400,6 +362,12 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
400
362
|
}
|
|
401
363
|
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/test-replicator.ts";
|
|
402
364
|
var TestReplicationNetwork = class extends Resource {
|
|
365
|
+
_replicators = /* @__PURE__ */ new Set();
|
|
366
|
+
_latency = void 0;
|
|
367
|
+
constructor(options = {}) {
|
|
368
|
+
super();
|
|
369
|
+
this._latency = options.latency;
|
|
370
|
+
}
|
|
403
371
|
async _close(ctx) {
|
|
404
372
|
for (const replicator of this._replicators) {
|
|
405
373
|
for (const connection of replicator.connections) {
|
|
@@ -514,15 +482,18 @@ var TestReplicationNetwork = class extends Resource {
|
|
|
514
482
|
connection2
|
|
515
483
|
];
|
|
516
484
|
}
|
|
517
|
-
constructor(options = {}) {
|
|
518
|
-
super(), _define_property3(this, "_replicators", /* @__PURE__ */ new Set()), _define_property3(this, "_latency", void 0);
|
|
519
|
-
this._latency = options.latency;
|
|
520
|
-
}
|
|
521
485
|
};
|
|
522
486
|
_ts_decorate([
|
|
523
487
|
synchronized
|
|
524
488
|
], TestReplicationNetwork.prototype, "_connectReplicator", null);
|
|
525
489
|
var TestReplicator = class {
|
|
490
|
+
_params;
|
|
491
|
+
constructor(_params) {
|
|
492
|
+
this._params = _params;
|
|
493
|
+
}
|
|
494
|
+
connected = false;
|
|
495
|
+
context = void 0;
|
|
496
|
+
connections = /* @__PURE__ */ new Set();
|
|
526
497
|
async connect(context) {
|
|
527
498
|
log3("connect", {
|
|
528
499
|
peerId: context.peerId
|
|
@@ -558,18 +529,18 @@ var TestReplicator = class {
|
|
|
558
529
|
this.context.onConnectionClosed(connection);
|
|
559
530
|
this.connections.delete(connection);
|
|
560
531
|
}
|
|
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
|
-
}
|
|
571
532
|
};
|
|
572
533
|
var TestReplicatorConnection = class {
|
|
534
|
+
peerId;
|
|
535
|
+
readable;
|
|
536
|
+
writable;
|
|
537
|
+
otherSide = void 0;
|
|
538
|
+
owningReplicator = void 0;
|
|
539
|
+
constructor(peerId, readable, writable) {
|
|
540
|
+
this.peerId = peerId;
|
|
541
|
+
this.readable = readable;
|
|
542
|
+
this.writable = writable;
|
|
543
|
+
}
|
|
573
544
|
get bundleSyncEnabled() {
|
|
574
545
|
return false;
|
|
575
546
|
}
|
|
@@ -579,18 +550,6 @@ var TestReplicatorConnection = class {
|
|
|
579
550
|
shouldSyncCollection(params) {
|
|
580
551
|
return true;
|
|
581
552
|
}
|
|
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
|
-
}
|
|
594
553
|
};
|
|
595
554
|
var testAutomergeReplicatorFactory = (params) => {
|
|
596
555
|
return new AutomergeReplicator({
|
|
@@ -617,7 +576,7 @@ __export(test_schema_exports, {
|
|
|
617
576
|
Task: () => Task,
|
|
618
577
|
WorksFor: () => WorksFor
|
|
619
578
|
});
|
|
620
|
-
import
|
|
579
|
+
import * as Schema from "effect/Schema";
|
|
621
580
|
import { Type } from "@dxos/echo";
|
|
622
581
|
var Person = Schema.Struct({
|
|
623
582
|
name: Schema.String,
|
|
@@ -658,8 +617,8 @@ __export(test_data_exports, {
|
|
|
658
617
|
TASKS: () => TASKS,
|
|
659
618
|
WORKS_FOR: () => WORKS_FOR
|
|
660
619
|
});
|
|
620
|
+
import { getSchemaDXN } from "@dxos/echo/internal";
|
|
661
621
|
import { DatabaseDirectory, ObjectStructure } from "@dxos/echo-protocol";
|
|
662
|
-
import { getSchemaDXN } from "@dxos/echo-schema";
|
|
663
622
|
import { DXN, ObjectId, PublicKey as PublicKey2 } from "@dxos/keys";
|
|
664
623
|
var spaceKey = PublicKey2.random();
|
|
665
624
|
var PEOPLE = {
|
|
@@ -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 { 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": ";;;;;;;;;;;;;;AAIA,SAASA,WAAW;AACpB,SAASC,cAAc;;AAKvB,IAAMC,eAAeC,OAAOC,gBAAgB,iCAAA;AAOrC,IAAMC,iCAAiC,OAAOC,SAAkBC,YAAAA;AACrEC,MAAI,+DAAA,QAAA;;;;;;AACJ,QAAMC,WAAW,IAAIC,cAAcJ,QAAQK,gBAAgB,UAAA,CAAA;AAC3D,QAAMF,SAASG,KAAI;AACnB,QAAMC,eAAeJ,SAASA;AAC9BI,eAAaN,UAAUA;AACvB,QAAMO,OAAOL,SAASM,WAAWC,gBAAgB,cAAA;AACjD,QAAMP,SAASQ,WAAWH,MAAMZ,cAAcW,YAAAA;AAC9C,QAAMJ,SAASM,WAAWG,MAAK;AACjC;;;ACtBA,SAASC,eAAe;AACxB,SAASC,2BAA2B;AAGpC,SAASC,iBAAiB;AAC1B,SAASC,qBAAqBC,4BAA4BC,8BAA8B;AACxF,SAASC,wBAAwBC,qBAAqBC,iCAAiC;AAGvF,SAASC,oBAAoB;AAC7B,SAAuBC,aAAaC,qBAAqB;AACzD,SAASC,QAAQC,gBAAgB;AACjC,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;;;ACb3B,SAASC,mBAAmB;AAQrB,IAAMC,kBAAN,cAA8BC,YAAAA;EACnC,cAAc;AACZ,UAAM;MACJC;IACF,CAAA;EACF;AACF;;;;;;;;;;;;;;;;;ADQO,IAAMC,+BACX,CAACC,kBACD,MACE,IAAIC,oBAAoB;EACtBC,eAAe,IAAIC,oBAAoBH,aAAAA;EACvCI,kBAAkBC;AACpB,CAAA;AAEG,IAAMC,kCACX,CAACC,cACD,MACE,IAAIN,oBAAoB;EACtBC,eAAe,IAAIM,uBAAuB;IAAC;MAAEC,QAAQF;IAAU;GAAE;EACjEH,kBAAkBM,0BAAAA;AACpB,CAAA;AAUG,IAAMC,mBAAN,MAAMA;EAWX,MAAMC,QAAQ;AACZ,WAAOC,QAAQC,IAAI,KAAKC,OAAOC,IAAI,CAACC,UAAUA,MAAML,MAAK,CAAA,CAAA;EAC3D;EAEA,IAAIG,SAAS;AACX,WAAOG,MAAMC,KAAK,KAAKC,QAAQC,OAAM,CAAA;EACvC;EAEAC,SAASC,WAA6C;AACpD,WAAO,KAAKH,QAAQI,IAAID,SAAAA;EAC1B;EAEA,MAAME,aAAiC;AAErC,UAAMC,cAAc,IAAIC,gBAAAA,EACrBC,WAAW,KAAKC,UAAU,SAAS,KAAKT,QAAQU,IAAI,EAAE;AAEzD,UAAMC,cAAc,MAAML,YAAYM,QAAQC,UAAS;AACvD,UAAMV,YAAY,MAAMG,YAAYM,QAAQC,UAAS;AAErD,UAAMhB,QAAQ,IAAIiB,UAAU,KAAKC,yBAAyBT,aAAaK,aAAaR,SAAAA;AACpF,SAAKH,QAAQgB,IAAIb,WAAWN,KAAAA;AAC5B,WAAOA;EACT;EA7BA,YAAY,EAAEoB,SAASC,uBAAsB,IAA8B,CAAC,GAAG;AAJ/E,qBAAA,MAAiBlB,WAAU,IAAImB,WAAiCC,UAAUC,IAAI,CAAA;AAC9E,qBAAA,MAAiBZ,YAAjB,MAAA;AACA,qBAAA,MAAiBM,2BAAjB,MAAA;AAGE,SAAKN,WAAWQ,WAAWK,cAAc;MAAEC,MAAMC,YAAYC;IAAI,CAAA;AACjE,SAAKV,0BACHG,0BAA0BvC,6BAA6B,IAAI+C,2BAAAA,CAAAA;EAC/D;AA0BF;AAKO,IAAMZ,YAAN,MAAMA;EAQX,IAAIa,gBAAgB;AAClB,WAAQ,KAAKC,mBAAL,KAAKA,iBAAmB,IAAIC,cAAc,KAAKZ,QAAQa,gBAAgB,UAAA,CAAA;EACjF;EAGA,IAAIC,YAAY;AACd,WAAQ,KAAKC,eAAL,KAAKA,aAAe,IAAIC,UAAU,KAAKhB,QAAQa,gBAAgB,OAAA,CAAA;EACzE;EAaA,MAAMtC,QAAQ;AACZ,WAAOC,QAAQC,IAAI;SAAI,KAAKwC,OAAOtC,IAAI,CAACuC,UAAUA,MAAM3C,MAAK,CAAA;KAAI;EACnE;EAEA,IAAI0C,SAAS;AACX,WAAOpC,MAAMC,KAAK,KAAKqC,QAAQnC,OAAM,CAAA;EACvC;EAEAoC,SAASC,WAAwC;AAC/C,WAAO,KAAKF,QAAQhC,IAAIkC,SAAAA;EAC1B;EAGA,IAAIC,iBAAiB;AACnB,QAAI,KAAKC,iBAAiB;AACxB,aAAO,KAAKA;IACd;AAEA,SAAKA,kBAAkB,KAAKzB,wBAAuB;AACnD,SAAKyB,gBAAgBC,YAAY;MAAEC,SAAS,KAAKvC,UAAUwC,MAAK;MAAIhC,aAAa,KAAKA,YAAYgC,MAAK;IAAG,CAAA;AAE1G,WAAO,KAAKH;EACd;EAGA,IAAII,eAAe;AACjB,WAAQ,KAAKC,kBAAL,KAAKA,gBAAkB,IAAIC,aAAa;MAC9CC,WAAW,KAAKA;MAChBR,gBAAgB,KAAKA;MACrBZ,eAAe,KAAKA;MACpBI,WAAW,KAAKA;IAClB,CAAA;EACF;EAEA,MAAMiB,YACJrC,cAAyB,KAAKA,aAC9B2B,WACAW,YACAC,SACAC,eAAe,OACC;AAChB,QAAI,CAACb,WAAU;AACba,qBAAe;AACfb,MAAAA,YAAW,MAAM,KAAK1B,QAAQC,UAAS;IACzC;AACA,QAAI,CAACoC,YAAY;AACfA,mBAAa,MAAM,KAAKrC,QAAQC,UAAS;IAC3C;AAEA,UAAMuC,cAAc,MAAM,KAAKL,UAAUM,SAASJ,YAAY;MAAEK,UAAU;IAAK,CAAA;AAC/E,UAAMC,WAAW,MAAM,KAAKR,UAAUM,SAASH,WAAY,MAAM,KAAKtC,QAAQC,UAAS,GAAK;MAC1FyC,UAAU;MACVE,QAAQ;IACV,CAAA;AAEA,UAAMC,WAA0B;MAC9BC,KAAKpB;MACLqB,gBAAgBV;MAChBW,gBAAgBR,YAAYM;MAC5BG,aAAaN,SAASG;IACxB;AACA,QAAIP,cAAc;AAChB,YAAM,KAAKxB,cAAcmC,SAASL,QAAAA;IACpC;AAEA,UAAM,KAAKb,aAAamB,KAAI;AAC5B,UAAM5B,QAAQ,MAAM,KAAKS,aAAaoB,eAAe;MACnDP;MACAQ,eAAe;QACbtD,aAAa,KAAKA;QAClB+B,SAAS,KAAKvC;QACd+D,oBAAoBC;QACpBC,yBAAyBC;MAC3B;MACAC,WAAW3D;MACX4D,wBAAwB,CAACC,YAAAA;AACvBA,gBAAQC,aACN,6BACA,KAAKC,aAAY,EAAGC,gBAAgB;UAAEC,cAAcJ,QAAQI;QAAa,CAAA,CAAA;MAE7E;MACAC,mCAAmC,YAAA;MAAa;MAChDC,sBAAsB,YAAA;MAAa;IACrC,CAAA;AACA,UAAM3C,MAAM4C,eAAe3B,WAAAA;AAC3B,UAAMjB,MAAM6C,YAAYzB,QAAAA;AAExB,UAAMpB,MAAM4B,KAAK,IAAIkB,QAAAA,QAAAA;;;;AAErB,SAAK7C,QAAQpB,IAAIsB,WAAUH,KAAAA;AAC3B,WAAOA;EACT;EAEA+C,oBAAoBC,OAAkBC,QAAgC;AACpE,WAAO,IAAIC,cAAc;MACvBF;MACAlB,eAAe;QACbtD,aAAa,KAAKA;QAClB+B,SAAS,KAAKvC;QACd+D,oBAAoBC;QACpBC,yBAAyBC;MAC3B;MACA9B,gBAAgB,KAAKA;MACrBR,WAAW,KAAKA;MAChBuD,eAAe,CAACd,YAAAA;AACdA,gBAAQC,aACN,8BACCW,UAAU,KAAKV,aAAY,GAAIC,gBAAgB;UAAEC,cAAcJ,QAAQI;QAAa,CAAA,CAAA;MAEzF;IACF,CAAA;EACF;EAEAF,eAAuB;AACrB,WAAO,IAAIa,OAAO;MAChBC,aAAa,KAAKrF;IACpB,CAAA;EACF;EAEAsF,eAAeL,QAA2B;AACxC,WAAO,IAAIM,SAAS;MAClBC,kBAAkB;MAClBC,gBAAgB;MAChBjF,aAAa,KAAKA;MAClByE,QAAQA,UAAU,KAAKV,aAAY;IACrC,CAAA;EACF;EAEA,MAAMmB,aAAa1D,OAA6B;AAC9C,UAAM2D,YAAY,IAAIC,oBAAoB,KAAKnF,SAAS,KAAKD,aAAa,KAAKR,SAAS;AACxF,UAAM6F,cAAc;SACd,MAAMF,UAAUG,mBAAmB9D,MAAMuB,KAAKvB,MAAMyB,cAAc;MACtE,MAAMkC,UAAUI,oBAAoB/D,MAAMuB,KAAKvB,MAAM0B,aAAcsC,aAAaC,YAAYC,IAAI;MAChG,MAAMP,UAAUQ,sBAAsBnE,MAAMuB,GAAG;;AAGjD,eAAW6C,cAAcP,aAAa;AACpC,YAAM7D,MAAMqE,gBAAgBC,OAAOC,MAAM;QACvCH,YAAY;UAAEA;QAAW;MAC3B,CAAA;IACF;EACF;EAxJA,YACmBxF,yBACA4F,cACDhG,aACAR,WAChB;;;;;AArBF,qBAAA,MAAiBiC,WAAjB,MAAA;AAEA,qBAAA,MAAgBnB,WAAhB,MAAA;AACA,qBAAA,MAAgBL,WAAhB,MAAA;AACA,qBAAA,MAAgBmC,aAAhB,MAAA;AAEA,qBAAA,MAAQnB,kBAAR,MAAA;AAKA,qBAAA,MAAQI,cAAR,MAAA;AA4BA,qBAAA,MAAQQ,mBAAR,MAAA;AAYA,qBAAA,MAAQK,iBAAR,MAAA;SAlCmB9B,0BAAAA;SACA4F,eAAAA;SACDhG,cAAAA;SACAR,YAAAA;SApBDiC,UAAU,IAAIjB,WAA6BC,UAAUC,IAAI;AAsBxE,SAAKJ,UAAU,KAAK0F,aAAa1F;AACjC,SAAKL,UAAU,KAAK+F,aAAa/F;AACjC,SAAKmC,YAAY,KAAK4D,aAAaC,gBAAe;EACpD;AAgJF;;;AEhQA,SAAuBC,sBAAmC;AAE1D,SAASC,SAASC,aAAa;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,OAAAA,YAAW;;;;;;;;;;;;;;;AAIb,IAAMC,cAAN,MAAMA,qBAAoBL,eAAAA;EAC/B,OAAOM,WAAWC,0BAAuD,MAAM,MAAqB;AAClG,UAAMC,WAAwB,IAAIH,aAAY;MAC5CI,MAAM,CAACC,YAAqBH,wBAAAA,MAA8B,QAAQL,MAAM,EAAA,EAAIS,KAAK,MAAMC,SAASC,QAAQH,OAAAA,CAAAA;IAC1G,CAAA;AACA,UAAME,WAAwB,IAAIP,aAAY;MAC5CI,MAAM,CAACC,YAAqBH,wBAAAA,MAA8B,QAAQL,MAAM,EAAA,EAAIS,KAAK,MAAMH,SAASK,QAAQH,OAAAA,CAAAA;IAC1G,CAAA;AAEA,WAAO;MAACF;MAAUI;;EACpB;EAQSE,UAAmB;AAC1B,WAAO;EACT;EAESC,YAA2B;AAClC,WAAOC,QAAQC,QAAO;EACxB;EAESC,QAAQC,QAAsB;AACrC,SAAKA,SAASA;AACd,SAAKC,UAAUC,KAAI;EACrB;EAEAC,cAAcH,QAAsB;AAClChB,cAAUgB,QAAQ,sBAAA;;;;;;;;;AAClB,SAAKI,KAAK,kBAAkB;MAAEJ;MAAQK,cAAc,CAAC;IAAE,CAAA;EACzD;EAEAC,iBAAiBN,QAAsB;AACrChB,cAAUgB,QAAQ,sBAAA;;;;;;;;;AAClB,SAAKI,KAAK,qBAAqB;MAAEJ;IAAO,CAAA;EAC1C;EAESV,KAAKC,SAAwB;AACpCN,IAAAA,KAAI,QAAQ;MAAEsB,MAAMhB,QAAQiB;MAAUC,IAAIlB,QAAQmB;MAAUC,MAAMpB,QAAQoB;IAAK,GAAA;;;;;;AAC/E,SAAKC,QAAQtB,KAAKC,OAAAA;EACpB;EAESsB,aAAmB;AAC1B,SAAKb,SAASc;EAChB;EAEApB,QAAQH,SAAwB;AAC9BP,cAAU,KAAKgB,QAAQ,sBAAA;;;;;;;;;AACvB,SAAKI,KAAK,WAAWb,OAAAA;EACvB;EAvCA,YAA6BqB,SAA+C;AAC1E,UAAK,GAAAG,kBAAA,MAAA,WAAA,MAAA,GAHPA,kBAAA,MAAOd,aAAP,MAAA,GAAA,KAE6BW,UAAAA,SAAAA,KAFtBX,YAAY,IAAInB,QAAAA;EAIvB;AAsCF;;;AC9DA,SAASkC,SAAAA,QAAOC,oBAAoB;AACpC,SAAuBC,gBAAgBC,gBAAgB;AACvD,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AAEpB,SAASC,2BAA4D;;;;;;;;;;;;;;;;;;;;;AAc9D,IAAMC,yBAAN,cAAqCJ,SAAAA;EAS1C,MAAyBK,OAAOC,KAA6B;AAC3D,eAAWC,cAAc,KAAKC,cAAc;AAC1C,iBAAWC,cAAcF,WAAWG,aAAa;AAC/C,aAAKD,WAAWE,SAASC,MAAK;AAC9B,aAAKH,WAAWI,SAASC,OAAM;MACjC;IACF;EACF;EAEA,MAAMC,mBAA4C;AAChD,UAAMR,aAAa,IAAIS,eAAe;MACpCC,WAAW,YAAA;AACThB,QAAAA,WAAU,KAAKiB,oBAAoBnB,eAAeoB,MAAI,QAAA;;;;;;;;;AACtD,cAAM,KAAKC,mBAAmBb,UAAAA;MAChC;MACAc,cAAc,YAAA;AACZpB,QAAAA,WAAU,KAAKiB,oBAAoBnB,eAAeoB,MAAI,QAAA;;;;;;;;;AACtD,cAAM,KAAKG,sBAAsBf,UAAAA;MACnC;IACF,CAAA;AACA,SAAKC,aAAae,IAAIhB,UAAAA;AACtB,WAAOA;EACT;EAEA,MACca,mBAAmBb,YAA2C;AAC1E,eAAWiB,mBAAmB,KAAKhB,aAAaiB,OAAM,GAAI;AACxD,UAAID,oBAAoBjB,cAAc,CAACiB,gBAAgBE,WAAW;AAChE;MACF;AACAxB,MAAAA,KAAI,qBAAqB;QAAEyB,MAAMpB,WAAWqB,QAASC;QAAQC,IAAIN,gBAAgBI,QAASC;MAAO,GAAA;;;;;;AACjG,YAAM,CAACE,aAAaC,WAAAA,IAAe,KAAKC,sBACtC1B,WAAWqB,QAASC,QACpBL,gBAAgBI,QAASC,MAAM;AAEjC,YAAMtB,WAAWqB,QAASM,iBAAiBH,WAAAA;AAC3C,YAAMP,gBAAgBI,QAASM,iBAAiBF,WAAAA;IAClD;EACF;EAEA,MAAcV,sBAAsBf,YAA2C;AAC7E,eAAWE,cAAcF,WAAWG,aAAa;AAC/C,YAAMH,WAAWqB,QAASO,mBAAmB1B,UAAAA;AAC7C,YAAMA,WAAW2B,UAAWC,iBAAkBC,iBAAiB7B,WAAW2B,SAAS;IACrF;EACF;EAEQH,sBAAsBM,OAAeC,OAAqE;AAChH,UAAMC,MAAM;AAEZ,UAAMC,UAAU,IAAIC,gBAAgB;MAClCC,WAAW,OAAOC,SAASC,eAAAA;AACzB,YAAIL,KAAK;AACPvC,UAAAA,KAAI,aAAa;YAAEyB,MAAMY;YAAOT,IAAIU;YAAOK;UAAQ,GAAA;;;;;;QACrD;AAEA,YAAI,KAAKE,aAAaC,QAAW;AAC/B,gBAAMnD,OAAM,KAAKkD,QAAQ;QAC3B;AAEAD,mBAAWG,QAAQJ,OAAAA;MACrB;IACF,CAAA;AACA,UAAMK,YAAY,IAAIP,gBAAgB;MACpCC,WAAW,OAAOC,SAASC,eAAAA;AACzB,YAAIL,KAAK;AACPvC,UAAAA,KAAI,aAAa;YAAEyB,MAAMa;YAAOV,IAAIS;YAAOM;UAAQ,GAAA;;;;;;QACrD;AAEA,YAAI,KAAKE,aAAaC,QAAW;AAC/B,gBAAMnD,OAAM,KAAKkD,QAAQ;QAC3B;AAEAD,mBAAWG,QAAQJ,OAAAA;MACrB;IACF,CAAA;AAEA,UAAMd,cAAc,IAAIoB,yBAAyBX,OAAOU,UAAUrC,UAAU6B,QAAQ/B,QAAQ;AAC5F,UAAMqB,cAAc,IAAImB,yBAAyBZ,OAAOG,QAAQ7B,UAAUqC,UAAUvC,QAAQ;AAC5FoB,gBAAYK,YAAYJ;AACxBA,gBAAYI,YAAYL;AACxB,WAAO;MAACA;MAAaC;;EACvB;EAvFA,YAAYoB,UAAwC,CAAC,GAAG;AACtD,UAAK,GAJPC,kBAAA,MAAiB7C,gBAAe,oBAAI8C,IAAAA,CAAAA,GACpCD,kBAAA,MAAiBN,YAAoBC,MAAAA;AAInC,SAAKD,WAAWK,QAAQG;EAC1B;AAqFF;;;;AAOO,IAAMvC,iBAAN,MAAMA;EAOX,MAAMwC,QAAQ5B,SAA+C;AAC3D1B,IAAAA,KAAI,WAAW;MAAE2B,QAAQD,QAAQC;IAAO,GAAA;;;;;;AACxC,SAAKD,UAAUA;AACf,SAAKF,YAAY;AACjB,UAAM,KAAK+B,QAAQxC,UAAS;EAC9B;EAEA,MAAMyC,aAA4B;AAChCxD,IAAAA,KAAI,cAAc;MAAE2B,QAAQ,KAAKD,QAASC;IAAO,GAAA;;;;;;AACjD,SAAKH,YAAY;AACjB,UAAM,KAAK+B,QAAQpC,aAAY;EACjC;EAEA,MAAMsC,cAAclD,YAAqD;AACvEA,eAAW4B,mBAAmB;AAC9B,SAAK3B,YAAYa,IAAId,UAAAA;AACrB,SAAKmB,QAASM,iBAAiBzB,UAAAA;EACjC;EAEA,MAAM6B,iBAAiB7B,YAAqD;AAC1EA,eAAW4B,mBAAmBW;AAC9B,SAAKpB,QAASO,mBAAmB1B,UAAAA;AACjC,SAAKC,YAAYkD,OAAOnD,UAAAA;EAC1B;EA7BA,YAA6BgD,SAA+B;;AAE5D,IAAAJ,kBAAA,MAAO3B,aAAP,MAAA;AACA,IAAA2B,kBAAA,MAAOzB,WAAP,MAAA;AACA,IAAAyB,kBAAA,MAAO3C,eAAP,MAAA;SAJ6B+C,UAAAA;SAEtB/B,YAAY;SACZE,UAA6CoB;SAC7CtC,cAAc,oBAAI4C,IAAAA;EAJoC;AA8B/D;AAEO,IAAMH,2BAAN,MAAMA;EAUX,IAAIU,oBAA6B;AAC/B,WAAO;EACT;EAEA,MAAMC,gBAAgBC,QAAiD;AACrE,WAAO;EACT;EAEAC,qBAAqBD,QAA6C;AAChE,WAAO;EACT;EAhBA,YACkBlC,QACAhB,UACAF,UAChB;;;;AAPF,IAAA0C,kBAAA,MAAOjB,aAAP,MAAA;AACA,IAAAiB,kBAAA,MAAOhB,oBAAP,MAAA;SAGkBR,SAAAA;SACAhB,WAAAA;SACAF,WAAAA;SANXyB,YAAkDY;SAClDX,mBAA+CW;EAMnD;AAaL;AAEO,IAAMiB,iCAA6D,CAACF,WAAAA;AACzE,SAAO,IAAI5D,oBACT;IACE,GAAG4D,OAAO,CAAA;IACVG,qBAAqB;MACnBC,cAAc;MACdC,sBAAsB;MACtBC,YAAY;IACd;EACF,GACAN,OAAO,CAAA,CAAE;AAEb;AAEO,IAAMO,mCAA+D,CAACP,WAAAA;AAC3EA,SAAO,CAAA,EAAIQ,gBAAgB,MAAA;AACzB,UAAM,IAAIC,MAAAA;EACZ;AACA,SAAOP,+BAA+BF,MAAAA;AACxC;;;ACrMA;;;;;;;AAIA,SAASU,cAAc;AAEvB,SAASC,YAAY;AAOd,IAAMC,SAASC,OAAOC,OAAO;EAClCC,MAAMF,OAAOG;EACbC,OAAOJ,OAAOK,SAASL,OAAOG,MAAM;EACpCG,KAAKN,OAAOK,SAASL,OAAOO,MAAM;AACpC,CAAA,EAAGC,KACDC,KAAKC,IAAI;EACPC,UAAU;EACVC,SAAS;AACX,CAAA,CAAA;AAIK,IAAMC,eAAeb,OAAOC,OAAO;EACxCC,MAAMF,OAAOG;AACf,CAAA,EAAGK,KACDC,KAAKC,IAAI;EACPC,UAAU;EACVC,SAAS;AACX,CAAA,CAAA;AAIK,IAAME,WAAWd,OAAOC,OAAO;EACpCc,OAAOf,OAAOG;AAChB,CAAA,EAAGK,KACDC,KAAKO,SAAS;EACZL,UAAU;EACVC,SAAS;EACTK,QAAQlB;EACRmB,QAAQL;AACV,CAAA,CAAA;AAIK,IAAMM,OAAOnB,OAAOC,OAAO;EAChCmB,OAAOpB,OAAOG;EACdkB,WAAWrB,OAAOG;EAClBmB,UAAUb,KAAKc,IAAIxB,MAAAA;AACrB,CAAA,EAAGS,KAAKC,KAAKC,IAAI;EAAEC,UAAU;EAAsBC,SAAS;AAAQ,CAAA,CAAA;;;ACnDpE;;;;;;;AAIA,SAASY,mBAAmBC,uBAAuB;AACnD,SAASC,oBAAoB;AAC7B,SAASC,KAAKC,UAAUC,aAAAA,kBAAiB;AAIzC,IAAMC,WAAWC,WAAUC,OAAM;AAE1B,IAAMC,SAAS;EACpBC,MAAMC,kBAAkBC,KAAK;IAC3BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAwBC,MAAM,EAAGC,SAAQ;QAC/CC,MAAM;UACJC,MAAM;QACR;MACF,CAAA;IACF;EACF,CAAA;EACAC,OAAOb,kBAAkBC,KAAK;IAC5BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAwBC,MAAM,EAAGC,SAAQ;QAC/CC,MAAM;UACJC,MAAM;QACR;MACF,CAAA;IACF;EACF,CAAA;AACF;AAEO,IAAME,OAAO;EAClBC,WAAWf,kBAAkBC,KAAK;IAChCN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAwBQ,YAAY,EAAGN,SAAQ;QACrDC,MAAM;UACJC,MAAM;UACNK,SAAS;QACX;MACF,CAAA;IACF;EACF,CAAA;EACAC,UAAUlB,kBAAkBC,KAAK;IAC/BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAwBQ,YAAY,EAAGN,SAAQ;QACrDC,MAAM;UACJC,MAAM;UACNK,SAAS;QACX;MACF,CAAA;IACF;EACF,CAAA;AACF;AAEO,IAAME,YAAY;EACvBC,uBAAuBpB,kBAAkBC,KAAK;IAC5CN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBgB,aAAa;QAChDd,MAAMC,aAAwBc,QAAQ,EAAGZ,SAAQ;QACjDa,QAAQ;UAAE,KAAKC,IAAIC,kBAAkBC,OAAOC,KAAK7B,OAAOC,KAAKI,OAAO,EAAG,CAAA,CAAE,EAAEO,SAAQ;QAAG;QACtFkB,QAAQ;UAAE,KAAKJ,IAAIC,kBAAkBC,OAAOC,KAAKb,KAAKC,UAAUZ,OAAO,EAAG,CAAA,CAAE,EAAEO,SAAQ;QAAG;QACzFC,MAAM;UACJkB,OAAO;UACPC,UAAU;QACZ;MACF,CAAA;IACF;EACF,CAAA;EACAC,uBAAuB/B,kBAAkBC,KAAK;IAC5CN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBgB,aAAa;QAChDd,MAAMC,aAAwBc,QAAQ,EAAGZ,SAAQ;QACjDa,QAAQ;UAAE,KAAKC,IAAIC,kBAAkBC,OAAOC,KAAK7B,OAAOe,MAAMV,OAAO,EAAG,CAAA,CAAE,EAAEO,SAAQ;QAAG;QACvFkB,QAAQ;UAAE,KAAKJ,IAAIC,kBAAkBC,OAAOC,KAAKb,KAAKI,SAASf,OAAO,EAAG,CAAA,CAAE,EAAEO,SAAQ;QAAG;QACxFC,MAAM;UACJkB,OAAO;UACPC,UAAU;QACZ;MACF,CAAA;IACF;EACF,CAAA;AACF;AAEO,IAAME,QAAQ;EACnBC,OAAOjC,kBAAkBC,KAAK;IAC5BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAwB0B,IAAI,EAAGxB,SAAQ;QAC7CC,MAAM;UACJwB,OAAO;UACPC,aAAa;UACbC,QAAQ;UACRC,SAAS;UACTC,UAAU;YAAE,KAAKf,IAAIC,kBAAkBC,OAAOC,KAAK7B,OAAOC,KAAKI,OAAO,EAAG,CAAA,CAAE,EAAEO,SAAQ;UAAG;QAC1F;MACF,CAAA;IACF;EACF,CAAA;EACA8B,OAAOxC,kBAAkBC,KAAK;IAC5BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAwB0B,IAAI,EAAGxB,SAAQ;QAC7CC,MAAM;UACJwB,OAAO;UACPC,aAAa;UACbC,QAAQ;UACRC,SAAS;UACTC,UAAU;YAAE,KAAKf,IAAIC,kBAAkBC,OAAOC,KAAK7B,OAAOe,MAAMV,OAAO,EAAG,CAAA,CAAE,EAAEO,SAAQ;UAAG;QAC3F;MACF,CAAA;IACF;EACF,CAAA;AACF;",
|
|
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 * as Schema from 'effect/Schema';\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 { getSchemaDXN } from '@dxos/echo/internal';\nimport { DatabaseDirectory, ObjectStructure } from '@dxos/echo-protocol';\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", "_agents", "ComplexMap", "PublicKey", "hash", "_storage", "_networkManagerProvider", "storage", "networkManagerProvider", "createStorage", "type", "StorageType", "RAM", "MemorySignalManagerContext", "close", "Promise", "all", "agents", "map", "agent", "Array", "from", "values", "getAgent", "deviceKey", "get", "createPeer", "feedBuilder", "TestFeedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "_spaces", "feedStore", "_metadataStore", "metadataStore", "MetadataStore", "createDirectory", "_blobStore", "blobStore", "BlobStore", "_feedBuilder", "createFeedStore", "spaces", "space", "getSpace", "spaceKey", "_networkManager", "networkManager", "setPeerInfo", "peerKey", "toHex", "_spaceManager", "spaceManager", "SpaceManager", "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", "NetworkAdapter", "Trigger", "sleep", "invariant", "log", "TestAdapter", "createPair", "connectionStateProvider", "adapter1", "send", "message", "then", "adapter2", "receive", "onConnect", "_params", "isReady", "whenReady", "Promise", "resolve", "connect", "peerId", "wake", "peerCandidate", "emit", "peerMetadata", "peerDisconnected", "from", "senderId", "to", "targetId", "type", "disconnect", "undefined", "sleep", "synchronized", "LifecycleState", "Resource", "invariant", "log", "AutomergeReplicator", "TestReplicationNetwork", "_replicators", "Set", "_latency", "undefined", "options", "latency", "_close", "ctx", "replicator", "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", "enqueue", "backwards", "TestReplicatorConnection", "_params", "connect", "disconnect", "addConnection", "delete", "bundleSyncEnabled", "shouldAdvertise", "params", "shouldSyncCollection", "testAutomergeReplicatorFactory", "sendSyncRetryPolicy", "retryBackoff", "retriesBeforeBackoff", "maxRetries", "brokenAutomergeReplicatorFactory", "onSyncMessage", "Error", "Schema", "Type", "Person", "Struct", "name", "String", "email", "optional", "age", "Number", "pipe", "Type", "Obj", "typename", "version", "Organization", "WorksFor", "since", "Relation", "source", "target", "Task", "title", "createdAt", "assignee", "Ref", "getSchemaDXN", "DatabaseDirectory", "ObjectStructure", "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
|
}
|