@dxos/echo-pipeline 0.1.56-main.e47dfd1 → 0.1.56-main.e79d64a
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-7U2NXI2P.mjs → chunk-GDF4DQU2.mjs} +692 -355
- package/dist/lib/browser/chunk-GDF4DQU2.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +14 -18
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/index.cjs +699 -362
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +696 -363
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/types/src/common/feeds.d.ts.map +1 -1
- package/dist/types/src/db-host/data-service-host.d.ts.map +1 -1
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/db-host/snapshot-manager.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-stress.test.d.ts +2 -0
- package/dist/types/src/pipeline/pipeline-stress.test.d.ts.map +1 -0
- package/dist/types/src/pipeline/pipeline.d.ts +4 -3
- package/dist/types/src/pipeline/pipeline.d.ts.map +1 -1
- package/dist/types/src/space/auth.d.ts.map +1 -1
- package/dist/types/src/space/control-pipeline.d.ts +4 -0
- package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/data-pipeline.d.ts +2 -0
- package/dist/types/src/space/data-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 +2 -1
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/database-test-rig.d.ts +4 -1
- package/dist/types/src/testing/database-test-rig.d.ts.map +1 -1
- package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
- package/package.json +32 -31
- package/src/common/feeds.ts +1 -2
- package/src/db-host/data-service-host.ts +10 -4
- package/src/db-host/data-service.ts +1 -2
- package/src/db-host/snapshot-manager.ts +0 -2
- package/src/metadata/metadata-store.ts +2 -2
- package/src/pipeline/message-selector.ts +1 -2
- package/src/pipeline/pipeline-stress.test.ts +226 -0
- package/src/pipeline/pipeline.test.ts +30 -206
- package/src/pipeline/pipeline.ts +50 -24
- package/src/space/auth.ts +1 -2
- package/src/space/control-pipeline.ts +47 -22
- package/src/space/data-pipeline.ts +21 -12
- package/src/space/space-manager.ts +1 -0
- package/src/space/space-protocol.ts +3 -1
- package/src/space/space.test.ts +18 -17
- package/src/space/space.ts +7 -3
- package/src/testing/database-test-rig.ts +27 -2
- package/src/testing/test-agent-builder.ts +2 -1
- package/src/tests/database-unit.test.ts +39 -0
- package/dist/lib/browser/chunk-7U2NXI2P.mjs.map +0 -7
|
@@ -10,9 +10,10 @@ import {
|
|
|
10
10
|
SpaceManager,
|
|
11
11
|
SpaceProtocol,
|
|
12
12
|
valueEncoding
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-GDF4DQU2.mjs";
|
|
14
14
|
|
|
15
15
|
// packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts
|
|
16
|
+
import { Context } from "@dxos/context";
|
|
16
17
|
import { CredentialGenerator } from "@dxos/credentials";
|
|
17
18
|
import { DocumentModel } from "@dxos/document-model";
|
|
18
19
|
import { PublicKey } from "@dxos/keys";
|
|
@@ -51,10 +52,10 @@ var WebsocketNetworkManagerProvider = (signalUrl) => () => new NetworkManager({
|
|
|
51
52
|
var TestAgentBuilder = class {
|
|
52
53
|
constructor({ storage, networkManagerProvider } = {}) {
|
|
53
54
|
this._agents = new ComplexMap(PublicKey.hash);
|
|
54
|
-
this._storage = storage
|
|
55
|
+
this._storage = storage ?? createStorage({
|
|
55
56
|
type: StorageType.RAM
|
|
56
57
|
});
|
|
57
|
-
this._networkManagerProvider = networkManagerProvider
|
|
58
|
+
this._networkManagerProvider = networkManagerProvider ?? MemoryNetworkManagerProvider(new MemorySignalManagerContext());
|
|
58
59
|
}
|
|
59
60
|
async close() {
|
|
60
61
|
return Promise.all(this.agents.map((agent) => agent.close()));
|
|
@@ -76,16 +77,13 @@ var TestAgentBuilder = class {
|
|
|
76
77
|
};
|
|
77
78
|
var TestAgent = class {
|
|
78
79
|
get metadataStore() {
|
|
79
|
-
|
|
80
|
-
return (_a = this._metadataStore) != null ? _a : this._metadataStore = new MetadataStore(this.storage.createDirectory("metadata"));
|
|
80
|
+
return this._metadataStore ??= new MetadataStore(this.storage.createDirectory("metadata"));
|
|
81
81
|
}
|
|
82
82
|
get snapshotStore() {
|
|
83
|
-
|
|
84
|
-
return (_a = this._snapshotStore) != null ? _a : this._snapshotStore = new SnapshotStore(this.storage.createDirectory("snapshots"));
|
|
83
|
+
return this._snapshotStore ??= new SnapshotStore(this.storage.createDirectory("snapshots"));
|
|
85
84
|
}
|
|
86
85
|
get blobStore() {
|
|
87
|
-
|
|
88
|
-
return (_a = this._blobStore) != null ? _a : this._blobStore = new BlobStore(this.storage.createDirectory("blobs"));
|
|
86
|
+
return this._blobStore ??= new BlobStore(this.storage.createDirectory("blobs"));
|
|
89
87
|
}
|
|
90
88
|
constructor(_networkManagerProvider, _feedBuilder, identityKey, deviceKey) {
|
|
91
89
|
this._networkManagerProvider = _networkManagerProvider;
|
|
@@ -110,8 +108,7 @@ var TestAgent = class {
|
|
|
110
108
|
return this._spaces.get(spaceKey);
|
|
111
109
|
}
|
|
112
110
|
get spaceManager() {
|
|
113
|
-
|
|
114
|
-
return (_a = this._spaceManager) != null ? _a : this._spaceManager = new SpaceManager({
|
|
111
|
+
return this._spaceManager ??= new SpaceManager({
|
|
115
112
|
feedStore: this.feedStore,
|
|
116
113
|
networkManager: this._networkManagerProvider(),
|
|
117
114
|
modelFactory: this.modelFactory,
|
|
@@ -131,7 +128,7 @@ var TestAgent = class {
|
|
|
131
128
|
const controlFeed = await this.feedStore.openFeed(genesisKey, {
|
|
132
129
|
writable: true
|
|
133
130
|
});
|
|
134
|
-
const dataFeed = await this.feedStore.openFeed(dataKey
|
|
131
|
+
const dataFeed = await this.feedStore.openFeed(dataKey ?? await this.keyring.createKey(), {
|
|
135
132
|
writable: true,
|
|
136
133
|
sparse: true
|
|
137
134
|
});
|
|
@@ -161,7 +158,7 @@ var TestAgent = class {
|
|
|
161
158
|
});
|
|
162
159
|
space.setControlFeed(controlFeed);
|
|
163
160
|
space.setDataFeed(dataFeed);
|
|
164
|
-
await space.open();
|
|
161
|
+
await space.open(new Context());
|
|
165
162
|
this._spaces.set(spaceKey, space);
|
|
166
163
|
return space;
|
|
167
164
|
}
|
|
@@ -176,7 +173,7 @@ var TestAgent = class {
|
|
|
176
173
|
networkManager: this._networkManagerProvider(),
|
|
177
174
|
blobStore: this.blobStore,
|
|
178
175
|
onSessionAuth: (session) => {
|
|
179
|
-
session.addExtension("dxos.mesh.teleport.gossip", (gossip
|
|
176
|
+
session.addExtension("dxos.mesh.teleport.gossip", (gossip ?? this.createGossip()).createExtension({
|
|
180
177
|
remotePeerId: session.remotePeerId
|
|
181
178
|
}));
|
|
182
179
|
}
|
|
@@ -192,7 +189,7 @@ var TestAgent = class {
|
|
|
192
189
|
announceInterval: 30,
|
|
193
190
|
offlineTimeout: 200,
|
|
194
191
|
identityKey: this.identityKey,
|
|
195
|
-
gossip: gossip
|
|
192
|
+
gossip: gossip ?? this.createGossip()
|
|
196
193
|
});
|
|
197
194
|
}
|
|
198
195
|
async spaceGenesis(space) {
|
|
@@ -257,9 +254,8 @@ var createRemoteDatabaseFromDataServiceHost = async (modelFactory, dataServiceHo
|
|
|
257
254
|
};
|
|
258
255
|
};
|
|
259
256
|
var testLocalDatabase = async (create, check = create) => {
|
|
260
|
-
var _a;
|
|
261
257
|
const objectId = PublicKey2.random().toHex();
|
|
262
|
-
await
|
|
258
|
+
await create.databaseHost.getWriteStream()?.write({
|
|
263
259
|
batch: {
|
|
264
260
|
objects: [
|
|
265
261
|
{
|
|
@@ -270,7 +266,7 @@ var testLocalDatabase = async (create, check = create) => {
|
|
|
270
266
|
}
|
|
271
267
|
]
|
|
272
268
|
}
|
|
273
|
-
})
|
|
269
|
+
});
|
|
274
270
|
await asyncTimeout(check.databaseHost._itemDemuxer.mutation.waitForCondition(() => check.itemManager.entities.has(objectId)), 2e3);
|
|
275
271
|
};
|
|
276
272
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/testing/test-agent-builder.ts", "../../../../src/testing/test-feed-builder.ts", "../../../../src/testing/util.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { CredentialGenerator } from '@dxos/credentials';\nimport { DocumentModel } from '@dxos/document-model';\nimport { FeedStore } from '@dxos/feed-store';\nimport { Keyring } from '@dxos/keyring';\nimport { PublicKey } from '@dxos/keys';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { ModelFactory } from '@dxos/model-factory';\nimport { createWebRTCTransportFactory, MemoryTransportFactory, NetworkManager } from '@dxos/network-manager';\nimport type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { AdmittedFeed } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { createStorage, Storage, StorageType } 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 { SnapshotStore } from '../db-host';\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, Space, SpaceManager, SpaceProtocol } from '../space';\nimport { TestFeedBuilder } from './test-feed-builder';\n\nexport type NetworkManagerProvider = () => NetworkManager;\n\nexport const MemoryNetworkManagerProvider =\n (signalContext: MemorySignalManagerContext): NetworkManagerProvider =>\n () =>\n new NetworkManager({\n signalManager: new MemorySignalManager(signalContext),\n transportFactory: MemoryTransportFactory,\n });\n\nexport const WebsocketNetworkManagerProvider =\n (signalUrl: string): NetworkManagerProvider =>\n () =>\n new NetworkManager({\n signalManager: new WebsocketSignalManager([{ server: signalUrl }]),\n transportFactory: createWebRTCTransportFactory(),\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 _snapshotStore?: SnapshotStore;\n get snapshotStore() {\n return (this._snapshotStore ??= new SnapshotStore(this.storage.createDirectory('snapshots')));\n }\n\n private _blobStore?: BlobStore;\n get blobStore() {\n return (this._blobStore ??= new BlobStore(this.storage.createDirectory('blobs')));\n }\n\n public modelFactory = new ModelFactory().registerModel(DocumentModel);\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 _spaceManager?: SpaceManager;\n get spaceManager() {\n return (this._spaceManager ??= new SpaceManager({\n feedStore: this.feedStore,\n networkManager: this._networkManagerProvider(),\n modelFactory: this.modelFactory,\n metadataStore: this.metadataStore,\n snapshotStore: this.snapshotStore,\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 peerKey: this.deviceKey,\n credentialProvider: MOCK_AUTH_PROVIDER,\n credentialAuthenticator: MOCK_AUTH_VERIFIER,\n },\n memberKey: identityKey,\n onNetworkConnection: (session) => {\n session.addExtension(\n 'dxos.mesh.teleport.gossip',\n this.createGossip().createExtension({ remotePeerId: session.remotePeerId }),\n );\n },\n });\n space.setControlFeed(controlFeed);\n space.setDataFeed(dataFeed);\n\n await space.open();\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 peerKey: this.deviceKey,\n credentialProvider: MOCK_AUTH_PROVIDER,\n credentialAuthenticator: MOCK_AUTH_VERIFIER,\n },\n networkManager: this._networkManagerProvider(),\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 2021 DXOS.org\n//\n\nimport { asyncTimeout } from '@dxos/async';\nimport { DocumentModel } from '@dxos/document-model';\nimport { DatabaseProxy, ItemManager } from '@dxos/echo-db';\nimport { MockFeedWriter } from '@dxos/feed-store/testing';\nimport { PublicKey } from '@dxos/keys';\nimport { ModelFactory } from '@dxos/model-factory';\nimport { DataMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { Timeframe } from '@dxos/timeframe';\n\nimport { DatabaseHost, DataServiceHost, DataServiceImpl, DataServiceSubscriptions } from '../db-host';\nimport { DataPipeline } from '../space';\n\nexport const createMemoryDatabase = async (modelFactory: ModelFactory) => {\n const feed = new MockFeedWriter<DataMessage>();\n const backend = new DatabaseHost(feed);\n\n feed.written.on(([data, meta]) =>\n backend.echoProcessor({\n batch: data.batch,\n meta: {\n ...meta,\n memberKey: PublicKey.random(),\n timeframe: new Timeframe([[meta.feedKey, meta.seq]]),\n },\n }),\n );\n\n const itemManager = new ItemManager(modelFactory);\n await backend.open(itemManager, new ModelFactory().registerModel(DocumentModel));\n return {\n backend,\n itemManager,\n };\n};\n\nexport const createRemoteDatabaseFromDataServiceHost = async (\n modelFactory: ModelFactory,\n dataServiceHost: DataServiceHost,\n) => {\n const dataServiceSubscriptions = new DataServiceSubscriptions();\n const dataService = new DataServiceImpl(dataServiceSubscriptions);\n\n const spaceKey = PublicKey.random();\n await dataServiceSubscriptions.registerSpace(spaceKey, dataServiceHost);\n\n const itemManager = new ItemManager(modelFactory);\n const backend = new DatabaseProxy(dataService, itemManager, spaceKey);\n await backend.open(new ModelFactory().registerModel(DocumentModel));\n return {\n itemManager,\n backend,\n };\n};\n\nexport const testLocalDatabase = async (create: DataPipeline, check: DataPipeline = create) => {\n const objectId = PublicKey.random().toHex();\n await create.databaseHost!.getWriteStream()?.write({\n batch: {\n objects: [\n {\n objectId,\n genesis: {\n modelType: DocumentModel.meta.type,\n },\n },\n ],\n },\n });\n\n await asyncTimeout(\n check.databaseHost!._itemDemuxer.mutation.waitForCondition(() => check.itemManager.entities.has(objectId)),\n 2000,\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;AAIA,SAASA,2BAA2B;AACpC,SAASC,qBAAqB;AAG9B,SAASC,iBAAiB;AAC1B,SAASC,qBAAqBC,4BAA4BC,8BAA8B;AACxF,SAASC,oBAAoB;AAC7B,SAASC,8BAA8BC,wBAAwBC,sBAAsB;AAGrF,SAASC,oBAAoB;AAC7B,SAASC,eAAwBC,mBAAmB;AACpD,SAASC,QAAQC,gBAAgB;AACjC,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;;;
|
|
6
|
-
"names": ["CredentialGenerator", "DocumentModel", "PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "ModelFactory", "createWebRTCTransportFactory", "MemoryTransportFactory", "NetworkManager", "AdmittedFeed", "createStorage", "StorageType", "Gossip", "Presence", "BlobStore", "ComplexMap", "TestBuilder", "TestFeedBuilder", "TestBuilder", "constructor", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "NetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createWebRTCTransportFactory", "TestAgentBuilder", "constructor", "storage", "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", "TestFeedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "metadataStore", "_metadataStore", "MetadataStore", "createDirectory", "snapshotStore", "_snapshotStore", "SnapshotStore", "blobStore", "_blobStore", "BlobStore", "_feedBuilder", "_spaces", "modelFactory", "ModelFactory", "registerModel", "DocumentModel", "feedStore", "createFeedStore", "spaces", "space", "getSpace", "spaceKey", "spaceManager", "_spaceManager", "SpaceManager", "networkManager", "createSpace", "genesisKey", "dataKey", "saveMetadata", "controlFeed", "openFeed", "writable", "dataFeed", "sparse", "metadata", "key", "genesisFeedKey", "controlFeedKey", "dataFeedKey", "addSpace", "open", "constructSpace", "swarmIdentity", "peerKey", "credentialProvider", "MOCK_AUTH_PROVIDER", "credentialAuthenticator", "MOCK_AUTH_VERIFIER", "memberKey", "onNetworkConnection", "session", "addExtension", "createGossip", "createExtension", "remotePeerId", "setControlFeed", "setDataFeed", "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", "asyncTimeout", "DocumentModel", "DatabaseProxy", "ItemManager", "MockFeedWriter", "PublicKey", "ModelFactory", "Timeframe", "createMemoryDatabase", "modelFactory", "feed", "MockFeedWriter", "backend", "DatabaseHost", "written", "on", "data", "meta", "echoProcessor", "batch", "memberKey", "PublicKey", "random", "timeframe", "Timeframe", "feedKey", "seq", "itemManager", "ItemManager", "open", "ModelFactory", "registerModel", "DocumentModel", "createRemoteDatabaseFromDataServiceHost", "dataServiceHost", "dataServiceSubscriptions", "DataServiceSubscriptions", "dataService", "DataServiceImpl", "spaceKey", "registerSpace", "DatabaseProxy", "testLocalDatabase", "create", "check", "objectId", "toHex", "databaseHost", "getWriteStream", "write", "objects", "genesis", "modelType", "type", "asyncTimeout", "_itemDemuxer", "mutation", "waitForCondition", "entities", "has"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { Context } from '@dxos/context';\nimport { CredentialGenerator } from '@dxos/credentials';\nimport { DocumentModel } from '@dxos/document-model';\nimport { FeedStore } from '@dxos/feed-store';\nimport { Keyring } from '@dxos/keyring';\nimport { PublicKey } from '@dxos/keys';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { ModelFactory } from '@dxos/model-factory';\nimport { createWebRTCTransportFactory, MemoryTransportFactory, NetworkManager } from '@dxos/network-manager';\nimport type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { AdmittedFeed } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { createStorage, Storage, StorageType } 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 { SnapshotStore } from '../db-host';\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, Space, SpaceManager, SpaceProtocol } from '../space';\nimport { TestFeedBuilder } from './test-feed-builder';\n\nexport type NetworkManagerProvider = () => NetworkManager;\n\nexport const MemoryNetworkManagerProvider =\n (signalContext: MemorySignalManagerContext): NetworkManagerProvider =>\n () =>\n new NetworkManager({\n signalManager: new MemorySignalManager(signalContext),\n transportFactory: MemoryTransportFactory,\n });\n\nexport const WebsocketNetworkManagerProvider =\n (signalUrl: string): NetworkManagerProvider =>\n () =>\n new NetworkManager({\n signalManager: new WebsocketSignalManager([{ server: signalUrl }]),\n transportFactory: createWebRTCTransportFactory(),\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 _snapshotStore?: SnapshotStore;\n get snapshotStore() {\n return (this._snapshotStore ??= new SnapshotStore(this.storage.createDirectory('snapshots')));\n }\n\n private _blobStore?: BlobStore;\n get blobStore() {\n return (this._blobStore ??= new BlobStore(this.storage.createDirectory('blobs')));\n }\n\n public modelFactory = new ModelFactory().registerModel(DocumentModel);\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 _spaceManager?: SpaceManager;\n get spaceManager() {\n return (this._spaceManager ??= new SpaceManager({\n feedStore: this.feedStore,\n networkManager: this._networkManagerProvider(),\n modelFactory: this.modelFactory,\n metadataStore: this.metadataStore,\n snapshotStore: this.snapshotStore,\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 peerKey: this.deviceKey,\n credentialProvider: MOCK_AUTH_PROVIDER,\n credentialAuthenticator: MOCK_AUTH_VERIFIER,\n },\n memberKey: identityKey,\n onNetworkConnection: (session) => {\n session.addExtension(\n 'dxos.mesh.teleport.gossip',\n this.createGossip().createExtension({ remotePeerId: session.remotePeerId }),\n );\n },\n });\n space.setControlFeed(controlFeed);\n 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 peerKey: this.deviceKey,\n credentialProvider: MOCK_AUTH_PROVIDER,\n credentialAuthenticator: MOCK_AUTH_VERIFIER,\n },\n networkManager: this._networkManagerProvider(),\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 2021 DXOS.org\n//\n\nimport { asyncTimeout } from '@dxos/async';\nimport { DocumentModel } from '@dxos/document-model';\nimport { DatabaseProxy, ItemManager } from '@dxos/echo-db';\nimport { MockFeedWriter } from '@dxos/feed-store/testing';\nimport { PublicKey } from '@dxos/keys';\nimport { ModelFactory } from '@dxos/model-factory';\nimport { DataMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { Timeframe } from '@dxos/timeframe';\n\nimport { DatabaseHost, DataServiceHost, DataServiceImpl, DataServiceSubscriptions } from '../db-host';\nimport { DataPipeline } from '../space';\n\nexport const createMemoryDatabase = async (modelFactory: ModelFactory) => {\n const feed = new MockFeedWriter<DataMessage>();\n const backend = new DatabaseHost(feed);\n\n feed.written.on(([data, meta]) =>\n backend.echoProcessor({\n batch: data.batch,\n meta: {\n ...meta,\n memberKey: PublicKey.random(),\n timeframe: new Timeframe([[meta.feedKey, meta.seq]]),\n },\n }),\n );\n\n const itemManager = new ItemManager(modelFactory);\n await backend.open(itemManager, new ModelFactory().registerModel(DocumentModel));\n return {\n backend,\n itemManager,\n };\n};\n\nexport const createRemoteDatabaseFromDataServiceHost = async (\n modelFactory: ModelFactory,\n dataServiceHost: DataServiceHost,\n) => {\n const dataServiceSubscriptions = new DataServiceSubscriptions();\n const dataService = new DataServiceImpl(dataServiceSubscriptions);\n\n const spaceKey = PublicKey.random();\n await dataServiceSubscriptions.registerSpace(spaceKey, dataServiceHost);\n\n const itemManager = new ItemManager(modelFactory);\n const backend = new DatabaseProxy(dataService, itemManager, spaceKey);\n await backend.open(new ModelFactory().registerModel(DocumentModel));\n return {\n itemManager,\n backend,\n };\n};\n\nexport const testLocalDatabase = async (create: DataPipeline, check: DataPipeline = create) => {\n const objectId = PublicKey.random().toHex();\n await create.databaseHost!.getWriteStream()?.write({\n batch: {\n objects: [\n {\n objectId,\n genesis: {\n modelType: DocumentModel.meta.type,\n },\n },\n ],\n },\n });\n\n await asyncTimeout(\n check.databaseHost!._itemDemuxer.mutation.waitForCondition(() => check.itemManager.entities.has(objectId)),\n 2000,\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Context", "CredentialGenerator", "DocumentModel", "PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "ModelFactory", "createWebRTCTransportFactory", "MemoryTransportFactory", "NetworkManager", "AdmittedFeed", "createStorage", "StorageType", "Gossip", "Presence", "BlobStore", "ComplexMap", "TestBuilder", "TestFeedBuilder", "TestBuilder", "constructor", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "NetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createWebRTCTransportFactory", "TestAgentBuilder", "constructor", "storage", "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", "TestFeedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "metadataStore", "_metadataStore", "MetadataStore", "createDirectory", "snapshotStore", "_snapshotStore", "SnapshotStore", "blobStore", "_blobStore", "BlobStore", "_feedBuilder", "_spaces", "modelFactory", "ModelFactory", "registerModel", "DocumentModel", "feedStore", "createFeedStore", "spaces", "space", "getSpace", "spaceKey", "spaceManager", "_spaceManager", "SpaceManager", "networkManager", "createSpace", "genesisKey", "dataKey", "saveMetadata", "controlFeed", "openFeed", "writable", "dataFeed", "sparse", "metadata", "key", "genesisFeedKey", "controlFeedKey", "dataFeedKey", "addSpace", "open", "constructSpace", "swarmIdentity", "peerKey", "credentialProvider", "MOCK_AUTH_PROVIDER", "credentialAuthenticator", "MOCK_AUTH_VERIFIER", "memberKey", "onNetworkConnection", "session", "addExtension", "createGossip", "createExtension", "remotePeerId", "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", "asyncTimeout", "DocumentModel", "DatabaseProxy", "ItemManager", "MockFeedWriter", "PublicKey", "ModelFactory", "Timeframe", "createMemoryDatabase", "modelFactory", "feed", "MockFeedWriter", "backend", "DatabaseHost", "written", "on", "data", "meta", "echoProcessor", "batch", "memberKey", "PublicKey", "random", "timeframe", "Timeframe", "feedKey", "seq", "itemManager", "ItemManager", "open", "ModelFactory", "registerModel", "DocumentModel", "createRemoteDatabaseFromDataServiceHost", "dataServiceHost", "dataServiceSubscriptions", "DataServiceSubscriptions", "dataService", "DataServiceImpl", "spaceKey", "registerSpace", "DatabaseProxy", "testLocalDatabase", "create", "check", "objectId", "toHex", "databaseHost", "getWriteStream", "write", "objects", "genesis", "modelType", "type", "asyncTimeout", "_itemDemuxer", "mutation", "waitForCondition", "entities", "has"]
|
|
7
7
|
}
|