@dxos/echo-pipeline 0.3.11-main.d7d4c52 → 0.3.11-main.d8b8a39
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-W3SSYW3X.mjs → chunk-MPBRK5OV.mjs} +39 -30
- package/dist/lib/browser/chunk-MPBRK5OV.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +29 -7
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node/{chunk-KTFCZMAY.cjs → chunk-GJQNRSA3.cjs} +42 -33
- package/dist/lib/node/chunk-GJQNRSA3.cjs.map +7 -0
- package/dist/lib/node/index.cjs +26 -26
- package/dist/lib/node/index.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +42 -21
- package/dist/lib/node/testing/index.cjs.map +4 -4
- package/dist/types/src/automerge/automerge-host.d.ts +26 -1
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
- package/dist/types/src/automerge/index.d.ts +1 -1
- package/dist/types/src/automerge/index.d.ts.map +1 -1
- package/dist/types/src/metadata/metadata-store.d.ts +1 -3
- package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
- package/dist/types/src/testing/change-metadata.d.ts +8 -0
- package/dist/types/src/testing/change-metadata.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/package.json +33 -33
- package/src/automerge/automerge-host.test.ts +212 -36
- package/src/automerge/automerge-host.ts +21 -12
- package/src/automerge/index.ts +1 -1
- package/src/metadata/metadata-store.ts +12 -2
- package/src/testing/change-metadata.ts +27 -0
- package/src/testing/index.ts +1 -0
- package/dist/lib/browser/chunk-W3SSYW3X.mjs.map +0 -7
- package/dist/lib/node/chunk-KTFCZMAY.cjs.map +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/testing/test-agent-builder.ts", "../../../../src/testing/test-feed-builder.ts", "../../../../src/testing/util.ts", "../../../../src/testing/database-test-rig.ts"],
|
|
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 { 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 { ModelFactory } from '@dxos/model-factory';\nimport { createSimplePeerTransportFactory, MemoryTransportFactory, NetworkManager } 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 { createStorage, type 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 { TestFeedBuilder } from './test-feed-builder';\nimport { SnapshotStore } from '../db-host';\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, type Space, SpaceManager, SpaceProtocol } from '../space';\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: createSimplePeerTransportFactory(),\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 { type DataMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { StorageType, createStorage } from '@dxos/random-access-storage';\nimport { Timeframe } from '@dxos/timeframe';\n\nimport { AutomergeHost } from '../automerge';\nimport { DatabaseHost, type DataServiceHost, DataServiceImpl, DataServiceSubscriptions } from '../db-host';\nimport { type DataPipeline } from '../space';\n\nexport const createMemoryDatabase = async (modelFactory: ModelFactory) => {\n const feed = new MockFeedWriter<DataMessage>();\n const backend = new DatabaseHost(feed, async () => {\n // No-op.\n });\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 automergeHost = new AutomergeHost(createStorage({ type: StorageType.RAM }).createDirectory());\n const dataService = new DataServiceImpl(dataServiceSubscriptions, automergeHost);\n\n const spaceKey = PublicKey.random();\n await dataServiceSubscriptions.registerSpace(spaceKey, dataServiceHost);\n\n const itemManager = new ItemManager(modelFactory);\n const backend = new DatabaseProxy({ service: 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", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Event, Trigger } from '@dxos/async';\nimport { DocumentModel } from '@dxos/document-model';\nimport { DatabaseProxy, ItemManager, createModelMutation, encodeModelMutation } from '@dxos/echo-db';\nimport { type WriteOptions, type WriteReceipt } from '@dxos/feed-store';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { ModelFactory } from '@dxos/model-factory';\nimport { type FeedMessageBlock, schema } from '@dxos/protocols';\nimport { type FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { type EchoSnapshot, type SpaceSnapshot } from '@dxos/protocols/proto/dxos/echo/snapshot';\nimport { type Epoch } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { TextModel } from '@dxos/text-model';\nimport { Timeframe } from '@dxos/timeframe';\nimport { ComplexMap, isNotNullOrUndefined } from '@dxos/util';\n\nimport { DatabaseHost } from '../db-host';\n\nconst SPACE_KEY = PublicKey.random();\n\nexport class DatabaseTestBuilder {\n public readonly peers = new ComplexMap<PublicKey, DatabaseTestPeer>(PublicKey.hash);\n\n async createPeer(spaceKey = SPACE_KEY): Promise<DatabaseTestPeer> {\n const peer = new DatabaseTestPeer(this, spaceKey);\n this.peers.set(peer.key, peer);\n await peer.open();\n return peer;\n }\n}\n\ntype WriteRequest = {\n receipt: WriteReceipt;\n options: WriteOptions;\n trigger: Trigger;\n};\n\nexport class DatabaseTestPeer {\n public readonly modelFactory = new ModelFactory().registerModel(DocumentModel).registerModel(TextModel);\n\n public items!: ItemManager;\n public proxy!: DatabaseProxy;\n\n public host!: DatabaseHost;\n public hostItems!: ItemManager;\n\n //\n // Test state.\n //\n\n public readonly key = PublicKey.random();\n\n public feedMessages: FeedMessage[] = [];\n\n public readonly snapshots = new Map<string, SpaceSnapshot>();\n private currentEpoch?: Epoch;\n\n /**\n * Sequence number of the last mutation confirmed to be written to the feed store.\n */\n public confirmed = -1;\n\n /**\n * Current position of the peer's pipeline.\n */\n public timeframe = new Timeframe();\n\n public snapshot: SpaceSnapshot | undefined;\n\n private readonly _onConfirm = new Event();\n\n private readonly _writes = new Set<WriteRequest>();\n\n constructor(public readonly rig: DatabaseTestBuilder, public readonly spaceKey: PublicKey) {}\n\n async open() {\n this.hostItems = new ItemManager(this.modelFactory);\n this.host = new DatabaseHost(\n {\n write: async (message, { afterWrite }: WriteOptions) => {\n const seq =\n this.feedMessages.push({\n timeframe: this.timeframe,\n payload: {\n data: message,\n },\n }) - 1;\n\n const request: WriteRequest = {\n receipt: {\n seq,\n feedKey: this.key,\n },\n options: { afterWrite },\n trigger: new Trigger(),\n };\n this._writes.add(request);\n await request.trigger.wait();\n return request.receipt;\n },\n },\n async () => {\n // No-op.\n },\n );\n\n await this.host.open(this.hostItems, this.modelFactory);\n if (this.snapshot) {\n this.host._itemDemuxer.restoreFromSnapshot(this.snapshot.database);\n }\n\n this.items = new ItemManager(this.modelFactory);\n this.proxy = new DatabaseProxy({\n service: this.host.createDataServiceHost({ deferEvents: false }),\n itemManager: this.items,\n spaceKey: this.spaceKey,\n });\n await this.proxy.open(this.modelFactory);\n }\n\n /**\n * Confirm mutations written to the local feed.\n * @param seq Sequence number of the mutation to confirm. If not specified, all mutations will be confirmed.\n */\n async confirm(seq?: number) {\n this.confirmed = seq ?? this.feedMessages.length - 1;\n this._onConfirm.emit();\n\n for (const request of [...this._writes]) {\n if (this.confirmed >= request.receipt.seq) {\n this._writes.delete(request);\n await request.options.afterWrite?.(request.receipt);\n request.trigger.wake();\n }\n }\n\n this._processMessages(Timeframe.merge(this.timeframe, new Timeframe([[this.key, this.confirmed]])));\n }\n\n /**\n * Replicate the database to the specified timeframe.\n * @param to Timeframe to replicate to. If not specified, the database will be replicated to the latest timeframe (based on all other peers).\n */\n replicate(to?: Timeframe) {\n const toTimeframe = Timeframe.merge(\n to ?? new Timeframe(Array.from(this.rig.peers.values()).map((peer) => [peer.key, peer.confirmed])),\n this.timeframe,\n );\n toTimeframe.set(this.key, this.confirmed);\n\n this._processMessages(toTimeframe);\n }\n\n /**\n * Reload data from the feed. Wipes unconfirmed mutations.\n */\n async reload() {\n await this.open();\n const timeframe = this.timeframe;\n this.timeframe = this.snapshot?.timeframe ?? new Timeframe();\n this._processMessages(timeframe);\n }\n\n /**\n * Create snapshot and use it for the next reload.\n */\n makeSnapshot(): SpaceSnapshot {\n this.snapshot = {\n spaceKey: SPACE_KEY.asUint8Array(),\n database: this.host.createSnapshot(),\n timeframe: this.timeframe,\n };\n return this.snapshot;\n }\n\n createEpoch(mockSnapshot?: EchoSnapshot) {\n const snapshot = this.makeSnapshot();\n // Substitute snapshot with the mock one for test purposes (e.g. to test with empty snapshot).\n mockSnapshot && (snapshot.database = mockSnapshot);\n const snapshotCid = PublicKey.from(\n schema.getCodecForType('dxos.echo.snapshot.SpaceSnapshot').encode(snapshot),\n ).toHex();\n this.snapshots.set(snapshotCid, snapshot);\n\n const epoch: Epoch = {\n previousId: PublicKey.random(),\n timeframe: this.timeframe,\n number: this.currentEpoch ? this.currentEpoch.number + 1 : 0,\n snapshotCid,\n };\n\n this.currentEpoch = epoch;\n\n this.host._itemDemuxer.restoreFromSnapshot(snapshot.database);\n }\n\n /**\n * Gets all candidate messages according to the current timeframe.\n * Does not take into account the current snapshot, timeframe dependencies, or the confirmed, or replicated state.\n */\n private _getHeads(): FeedMessageBlock[] {\n return Array.from(this.rig.peers.values())\n .map((peer): FeedMessageBlock => {\n const seq = this.timeframe.get(peer.key) ?? -1;\n const message = peer.feedMessages[seq + 1];\n return (\n message && {\n feedKey: peer.key,\n seq: seq + 1,\n data: message,\n }\n );\n })\n .filter(isNotNullOrUndefined);\n }\n\n private _processMessages(to: Timeframe) {\n let run = true;\n while (run) {\n run = false;\n\n const heads = this._getHeads();\n for (const candidate of heads) {\n const toSeq = to.get(candidate.feedKey) ?? -1;\n if (toSeq < candidate.seq) {\n continue;\n }\n\n const snapshotSeq = this.snapshot?.timeframe?.get(candidate.feedKey) ?? -1;\n if (candidate.seq <= snapshotSeq) {\n continue;\n }\n\n if (!Timeframe.dependencies(candidate.data.timeframe, this.timeframe).isEmpty()) {\n continue;\n }\n\n run = true;\n this.host.echoProcessor({\n batch: candidate.data.payload.data!.batch,\n meta: {\n feedKey: candidate.feedKey,\n seq: candidate.seq,\n memberKey: candidate.feedKey,\n timeframe: candidate.data.timeframe,\n },\n });\n this.timeframe = Timeframe.merge(this.timeframe, new Timeframe([[candidate.feedKey, candidate.seq]]));\n }\n }\n }\n\n getModel(id: string): DocumentModel | TextModel | undefined {\n const item = this.items.getItem(id);\n if (!item) {\n return;\n }\n\n invariant(item.modelMeta);\n const ModelConstructor = this.modelFactory.getModel(item.modelMeta.type)?.constructor;\n invariant(ModelConstructor);\n\n const model = new ModelConstructor(\n item.modelMeta,\n item.id,\n () => item.state,\n async (mutation) => {\n invariant(item.modelMeta);\n this.proxy.mutate(createModelMutation(id, encodeModelMutation(item.modelMeta, mutation)));\n return {\n feedKey: PublicKey.from('00'),\n seq: 0,\n waitToBeProcessed: () => Promise.resolve(),\n };\n },\n );\n model.initialize();\n\n return model;\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_credentials", "import_document_model", "import_testing", "import_keys", "import_model_factory", "import_random_access_storage", "import_async", "import_echo_db", "import_timeframe", "import_util", "TestFeedBuilder", "TestBuilder", "constructor", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "NetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createSimplePeerTransportFactory", "TestAgentBuilder", "
|
|
3
|
+
"sources": ["../../../../src/testing/change-metadata.ts", "../../../../src/testing/test-agent-builder.ts", "../../../../src/testing/test-feed-builder.ts", "../../../../src/testing/util.ts", "../../../../src/testing/database-test-rig.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport type { Storage } from '@dxos/random-access-storage';\n\nimport { MetadataStore } from '../metadata';\n\nconst EchoMetadata = schema.getCodecForType('dxos.echo.metadata.EchoMetadata');\n\n/**\n * This function will change the storage version in the metadata.\n * This will break your storage and make it unusable.\n * Use this only for testing purposes.\n */\nexport const changeStorageVersionInMetadata = async (storage: Storage, version: number) => {\n log.info('Changing storage version in metadata. USE ONLY FOR TESTING.');\n const metadata = new MetadataStore(storage.createDirectory('metadata'));\n await metadata.load();\n const echoMetadata = metadata.metadata;\n echoMetadata.version = version;\n const file = metadata._directory.getOrCreateFile('EchoMetadata');\n await metadata._writeFile(file, EchoMetadata, echoMetadata);\n await metadata._directory.flush();\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Context } from '@dxos/context';\nimport { CredentialGenerator } from '@dxos/credentials';\nimport { DocumentModel } from '@dxos/document-model';\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 { ModelFactory } from '@dxos/model-factory';\nimport { createSimplePeerTransportFactory, MemoryTransportFactory, NetworkManager } 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 { createStorage, type 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 { TestFeedBuilder } from './test-feed-builder';\nimport { SnapshotStore } from '../db-host';\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, type Space, SpaceManager, SpaceProtocol } from '../space';\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: createSimplePeerTransportFactory(),\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 { type DataMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { StorageType, createStorage } from '@dxos/random-access-storage';\nimport { Timeframe } from '@dxos/timeframe';\n\nimport { AutomergeHost } from '../automerge';\nimport { DatabaseHost, type DataServiceHost, DataServiceImpl, DataServiceSubscriptions } from '../db-host';\nimport { type DataPipeline } from '../space';\n\nexport const createMemoryDatabase = async (modelFactory: ModelFactory) => {\n const feed = new MockFeedWriter<DataMessage>();\n const backend = new DatabaseHost(feed, async () => {\n // No-op.\n });\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 automergeHost = new AutomergeHost(createStorage({ type: StorageType.RAM }).createDirectory());\n const dataService = new DataServiceImpl(dataServiceSubscriptions, automergeHost);\n\n const spaceKey = PublicKey.random();\n await dataServiceSubscriptions.registerSpace(spaceKey, dataServiceHost);\n\n const itemManager = new ItemManager(modelFactory);\n const backend = new DatabaseProxy({ service: 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", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Event, Trigger } from '@dxos/async';\nimport { DocumentModel } from '@dxos/document-model';\nimport { DatabaseProxy, ItemManager, createModelMutation, encodeModelMutation } from '@dxos/echo-db';\nimport { type WriteOptions, type WriteReceipt } from '@dxos/feed-store';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { ModelFactory } from '@dxos/model-factory';\nimport { type FeedMessageBlock, schema } from '@dxos/protocols';\nimport { type FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { type EchoSnapshot, type SpaceSnapshot } from '@dxos/protocols/proto/dxos/echo/snapshot';\nimport { type Epoch } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { TextModel } from '@dxos/text-model';\nimport { Timeframe } from '@dxos/timeframe';\nimport { ComplexMap, isNotNullOrUndefined } from '@dxos/util';\n\nimport { DatabaseHost } from '../db-host';\n\nconst SPACE_KEY = PublicKey.random();\n\nexport class DatabaseTestBuilder {\n public readonly peers = new ComplexMap<PublicKey, DatabaseTestPeer>(PublicKey.hash);\n\n async createPeer(spaceKey = SPACE_KEY): Promise<DatabaseTestPeer> {\n const peer = new DatabaseTestPeer(this, spaceKey);\n this.peers.set(peer.key, peer);\n await peer.open();\n return peer;\n }\n}\n\ntype WriteRequest = {\n receipt: WriteReceipt;\n options: WriteOptions;\n trigger: Trigger;\n};\n\nexport class DatabaseTestPeer {\n public readonly modelFactory = new ModelFactory().registerModel(DocumentModel).registerModel(TextModel);\n\n public items!: ItemManager;\n public proxy!: DatabaseProxy;\n\n public host!: DatabaseHost;\n public hostItems!: ItemManager;\n\n //\n // Test state.\n //\n\n public readonly key = PublicKey.random();\n\n public feedMessages: FeedMessage[] = [];\n\n public readonly snapshots = new Map<string, SpaceSnapshot>();\n private currentEpoch?: Epoch;\n\n /**\n * Sequence number of the last mutation confirmed to be written to the feed store.\n */\n public confirmed = -1;\n\n /**\n * Current position of the peer's pipeline.\n */\n public timeframe = new Timeframe();\n\n public snapshot: SpaceSnapshot | undefined;\n\n private readonly _onConfirm = new Event();\n\n private readonly _writes = new Set<WriteRequest>();\n\n constructor(public readonly rig: DatabaseTestBuilder, public readonly spaceKey: PublicKey) {}\n\n async open() {\n this.hostItems = new ItemManager(this.modelFactory);\n this.host = new DatabaseHost(\n {\n write: async (message, { afterWrite }: WriteOptions) => {\n const seq =\n this.feedMessages.push({\n timeframe: this.timeframe,\n payload: {\n data: message,\n },\n }) - 1;\n\n const request: WriteRequest = {\n receipt: {\n seq,\n feedKey: this.key,\n },\n options: { afterWrite },\n trigger: new Trigger(),\n };\n this._writes.add(request);\n await request.trigger.wait();\n return request.receipt;\n },\n },\n async () => {\n // No-op.\n },\n );\n\n await this.host.open(this.hostItems, this.modelFactory);\n if (this.snapshot) {\n this.host._itemDemuxer.restoreFromSnapshot(this.snapshot.database);\n }\n\n this.items = new ItemManager(this.modelFactory);\n this.proxy = new DatabaseProxy({\n service: this.host.createDataServiceHost({ deferEvents: false }),\n itemManager: this.items,\n spaceKey: this.spaceKey,\n });\n await this.proxy.open(this.modelFactory);\n }\n\n /**\n * Confirm mutations written to the local feed.\n * @param seq Sequence number of the mutation to confirm. If not specified, all mutations will be confirmed.\n */\n async confirm(seq?: number) {\n this.confirmed = seq ?? this.feedMessages.length - 1;\n this._onConfirm.emit();\n\n for (const request of [...this._writes]) {\n if (this.confirmed >= request.receipt.seq) {\n this._writes.delete(request);\n await request.options.afterWrite?.(request.receipt);\n request.trigger.wake();\n }\n }\n\n this._processMessages(Timeframe.merge(this.timeframe, new Timeframe([[this.key, this.confirmed]])));\n }\n\n /**\n * Replicate the database to the specified timeframe.\n * @param to Timeframe to replicate to. If not specified, the database will be replicated to the latest timeframe (based on all other peers).\n */\n replicate(to?: Timeframe) {\n const toTimeframe = Timeframe.merge(\n to ?? new Timeframe(Array.from(this.rig.peers.values()).map((peer) => [peer.key, peer.confirmed])),\n this.timeframe,\n );\n toTimeframe.set(this.key, this.confirmed);\n\n this._processMessages(toTimeframe);\n }\n\n /**\n * Reload data from the feed. Wipes unconfirmed mutations.\n */\n async reload() {\n await this.open();\n const timeframe = this.timeframe;\n this.timeframe = this.snapshot?.timeframe ?? new Timeframe();\n this._processMessages(timeframe);\n }\n\n /**\n * Create snapshot and use it for the next reload.\n */\n makeSnapshot(): SpaceSnapshot {\n this.snapshot = {\n spaceKey: SPACE_KEY.asUint8Array(),\n database: this.host.createSnapshot(),\n timeframe: this.timeframe,\n };\n return this.snapshot;\n }\n\n createEpoch(mockSnapshot?: EchoSnapshot) {\n const snapshot = this.makeSnapshot();\n // Substitute snapshot with the mock one for test purposes (e.g. to test with empty snapshot).\n mockSnapshot && (snapshot.database = mockSnapshot);\n const snapshotCid = PublicKey.from(\n schema.getCodecForType('dxos.echo.snapshot.SpaceSnapshot').encode(snapshot),\n ).toHex();\n this.snapshots.set(snapshotCid, snapshot);\n\n const epoch: Epoch = {\n previousId: PublicKey.random(),\n timeframe: this.timeframe,\n number: this.currentEpoch ? this.currentEpoch.number + 1 : 0,\n snapshotCid,\n };\n\n this.currentEpoch = epoch;\n\n this.host._itemDemuxer.restoreFromSnapshot(snapshot.database);\n }\n\n /**\n * Gets all candidate messages according to the current timeframe.\n * Does not take into account the current snapshot, timeframe dependencies, or the confirmed, or replicated state.\n */\n private _getHeads(): FeedMessageBlock[] {\n return Array.from(this.rig.peers.values())\n .map((peer): FeedMessageBlock => {\n const seq = this.timeframe.get(peer.key) ?? -1;\n const message = peer.feedMessages[seq + 1];\n return (\n message && {\n feedKey: peer.key,\n seq: seq + 1,\n data: message,\n }\n );\n })\n .filter(isNotNullOrUndefined);\n }\n\n private _processMessages(to: Timeframe) {\n let run = true;\n while (run) {\n run = false;\n\n const heads = this._getHeads();\n for (const candidate of heads) {\n const toSeq = to.get(candidate.feedKey) ?? -1;\n if (toSeq < candidate.seq) {\n continue;\n }\n\n const snapshotSeq = this.snapshot?.timeframe?.get(candidate.feedKey) ?? -1;\n if (candidate.seq <= snapshotSeq) {\n continue;\n }\n\n if (!Timeframe.dependencies(candidate.data.timeframe, this.timeframe).isEmpty()) {\n continue;\n }\n\n run = true;\n this.host.echoProcessor({\n batch: candidate.data.payload.data!.batch,\n meta: {\n feedKey: candidate.feedKey,\n seq: candidate.seq,\n memberKey: candidate.feedKey,\n timeframe: candidate.data.timeframe,\n },\n });\n this.timeframe = Timeframe.merge(this.timeframe, new Timeframe([[candidate.feedKey, candidate.seq]]));\n }\n }\n }\n\n getModel(id: string): DocumentModel | TextModel | undefined {\n const item = this.items.getItem(id);\n if (!item) {\n return;\n }\n\n invariant(item.modelMeta);\n const ModelConstructor = this.modelFactory.getModel(item.modelMeta.type)?.constructor;\n invariant(ModelConstructor);\n\n const model = new ModelConstructor(\n item.modelMeta,\n item.id,\n () => item.state,\n async (mutation) => {\n invariant(item.modelMeta);\n this.proxy.mutate(createModelMutation(id, encodeModelMutation(item.modelMeta, mutation)));\n return {\n feedKey: PublicKey.from('00'),\n seq: 0,\n waitToBeProcessed: () => Promise.resolve(),\n };\n },\n );\n model.initialize();\n\n return model;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_credentials", "import_document_model", "import_testing", "import_keys", "import_model_factory", "import_random_access_storage", "import_async", "import_echo_db", "import_protocols", "import_timeframe", "import_util", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "info", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "TestFeedBuilder", "TestBuilder", "constructor", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "NetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createSimplePeerTransportFactory", "TestAgentBuilder", "networkManagerProvider", "_agents", "ComplexMap", "PublicKey", "hash", "_storage", "createStorage", "type", "StorageType", "RAM", "_networkManagerProvider", "MemorySignalManagerContext", "close", "Promise", "all", "agents", "map", "agent", "Array", "from", "values", "getAgent", "deviceKey", "get", "createPeer", "feedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "metadataStore", "_metadataStore", "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", "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", "createMemoryDatabase", "feed", "MockFeedWriter", "backend", "DatabaseHost", "written", "on", "data", "meta", "echoProcessor", "batch", "random", "timeframe", "Timeframe", "feedKey", "seq", "itemManager", "ItemManager", "createRemoteDatabaseFromDataServiceHost", "dataServiceHost", "dataServiceSubscriptions", "DataServiceSubscriptions", "automergeHost", "AutomergeHost", "dataService", "DataServiceImpl", "registerSpace", "DatabaseProxy", "service", "testLocalDatabase", "create", "check", "objectId", "toHex", "databaseHost", "getWriteStream", "objects", "genesis", "modelType", "asyncTimeout", "_itemDemuxer", "mutation", "waitForCondition", "entities", "has", "SPACE_KEY", "DatabaseTestBuilder", "peers", "peer", "DatabaseTestPeer", "rig", "TextModel", "feedMessages", "snapshots", "Map", "confirmed", "_onConfirm", "Event", "_writes", "Set", "hostItems", "host", "message", "afterWrite", "push", "payload", "request", "receipt", "options", "trigger", "Trigger", "add", "wait", "snapshot", "restoreFromSnapshot", "database", "items", "proxy", "createDataServiceHost", "deferEvents", "confirm", "length", "emit", "delete", "wake", "_processMessages", "merge", "replicate", "to", "toTimeframe", "reload", "makeSnapshot", "asUint8Array", "createSnapshot", "createEpoch", "mockSnapshot", "snapshotCid", "encode", "epoch", "previousId", "number", "currentEpoch", "_getHeads", "filter", "isNotNullOrUndefined", "run", "heads", "candidate", "toSeq", "snapshotSeq", "dependencies", "isEmpty", "getModel", "id", "item", "getItem", "invariant", "modelMeta", "ModelConstructor", "model", "state", "mutate", "createModelMutation", "encodeModelMutation", "waitToBeProcessed", "resolve", "initialize"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Repo } from '@dxos/automerge/automerge-repo';
|
|
1
|
+
import { Repo, NetworkAdapter, StorageAdapter, type Message, type PeerId, type Chunk, type StorageKey } from '@dxos/automerge/automerge-repo';
|
|
2
2
|
import { Stream } from '@dxos/codec-protobuf';
|
|
3
3
|
import { type HostInfo, type SyncRepoRequest, type SyncRepoResponse } from '@dxos/protocols/proto/dxos/echo/service';
|
|
4
4
|
import { type Directory } from '@dxos/random-access-storage';
|
|
@@ -16,4 +16,29 @@ export declare class AutomergeHost {
|
|
|
16
16
|
getHostInfo(): HostInfo;
|
|
17
17
|
createExtension(): AutomergeReplicator;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Used to replicate with other peers over the network.
|
|
21
|
+
*/
|
|
22
|
+
export declare class MeshNetworkAdapter extends NetworkAdapter {
|
|
23
|
+
private readonly _extensions;
|
|
24
|
+
/**
|
|
25
|
+
* Emits `ready` event. That signals to `Repo` that it can start using the adapter.
|
|
26
|
+
*/
|
|
27
|
+
ready(): void;
|
|
28
|
+
connect(peerId: PeerId): void;
|
|
29
|
+
send(message: Message): void;
|
|
30
|
+
disconnect(): void;
|
|
31
|
+
createExtension(): AutomergeReplicator;
|
|
32
|
+
}
|
|
33
|
+
export declare class AutomergeStorageAdapter extends StorageAdapter {
|
|
34
|
+
private readonly _directory;
|
|
35
|
+
constructor(_directory: Directory);
|
|
36
|
+
load(key: StorageKey): Promise<Uint8Array | undefined>;
|
|
37
|
+
save(key: StorageKey, data: Uint8Array): Promise<void>;
|
|
38
|
+
remove(key: StorageKey): Promise<void>;
|
|
39
|
+
loadRange(keyPrefix: StorageKey): Promise<Chunk[]>;
|
|
40
|
+
removeRange(keyPrefix: StorageKey): Promise<void>;
|
|
41
|
+
private _getFilename;
|
|
42
|
+
private _getKeyFromFilename;
|
|
43
|
+
}
|
|
19
44
|
//# sourceMappingURL=automerge-host.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automerge-host.d.ts","sourceRoot":"","sources":["../../../../src/automerge/automerge-host.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,IAAI,
|
|
1
|
+
{"version":3,"file":"automerge-host.d.ts","sourceRoot":"","sources":["../../../../src/automerge/automerge-host.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,IAAI,EACJ,cAAc,EACd,cAAc,EACd,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,UAAU,EAEhB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAErH,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAGpF,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;gBAE9B,gBAAgB,EAAE,SAAS;IAoBvC,IAAI,IAAI,IAAI,IAAI,CAEf;IAEK,KAAK;IAQX,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,WAAW,IAAI,QAAQ;IAQvB,eAAe,IAAI,mBAAmB;CAGvC;AA0FD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+C;IAE3E;;OAEG;IACH,KAAK;IAQI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI7B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAO5B,UAAU,IAAI,IAAI;IAI3B,eAAe,IAAI,mBAAmB;CA4CvC;AAED,qBAAa,uBAAwB,SAAQ,cAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,SAAS;IAInC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAWtD,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,SAAS,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAkBlD,WAAW,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,mBAAmB;CAG5B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { AutomergeHost } from './automerge-host';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/automerge/index.ts"],"names":[],"mappings":"AAIA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/automerge/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -10,12 +10,11 @@ export interface AddSpaceOptions {
|
|
|
10
10
|
}
|
|
11
11
|
declare const EchoMetadata: import("@dxos/codec-protobuf").ProtoCodec<EchoMetadata>;
|
|
12
12
|
export declare class MetadataStore {
|
|
13
|
-
private readonly _directory;
|
|
14
13
|
private _metadata;
|
|
15
14
|
private _spaceLargeMetadata;
|
|
16
15
|
private _metadataFile?;
|
|
17
16
|
readonly update: Event<EchoMetadata>;
|
|
18
|
-
constructor(
|
|
17
|
+
constructor(directory: Directory);
|
|
19
18
|
get metadata(): EchoMetadata;
|
|
20
19
|
get version(): number;
|
|
21
20
|
/**
|
|
@@ -24,7 +23,6 @@ export declare class MetadataStore {
|
|
|
24
23
|
*/
|
|
25
24
|
get spaces(): SpaceMetadata[];
|
|
26
25
|
private _readFile;
|
|
27
|
-
private _writeFile;
|
|
28
26
|
close(): Promise<void>;
|
|
29
27
|
/**
|
|
30
28
|
* Loads metadata from persistent storage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../../src/metadata/metadata-store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EACL,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAE7B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,SAAS,CAAC;CACxB;AAWD,QAAA,MAAM,YAAY,yDAA4D,CAAC;AAG/E,qBAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../../src/metadata/metadata-store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EACL,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAE7B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,SAAS,CAAC;CACxB;AAWD,QAAA,MAAM,YAAY,yDAA4D,CAAC;AAG/E,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,mBAAmB,CAAiE;IAE5F,OAAO,CAAC,aAAa,CAAC,CAAmB;IAEzC,SAAgB,MAAM,sBAA6B;gBAOvC,SAAS,EAAE,SAAS;IAIhC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,aAAa,EAAE,CAE5B;YAEa,SAAS;IA+CjB,KAAK;IAQX;;OAEG;IAEG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAmCb,KAAK;YAcL,uBAAuB;YAavB,uBAAuB;IAM/B,KAAK;IAIX,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,aAAa;IAW7C,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,iBAAiB,IAAI,cAAc,GAAG,SAAS;IAIzC,iBAAiB,CAAC,MAAM,EAAE,cAAc;IAQxC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAW9B,2BAA2B,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAKrE,8BAA8B,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAMxE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU;IAK/C,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;IAQ1F,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU;IAM1D,+BAA+B,CAAC,QAAQ,EAAE,SAAS,GAAG,uBAAuB,GAAG,SAAS;IAInF,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,uBAAuB;CAK7F"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Storage } from '@dxos/random-access-storage';
|
|
2
|
+
/**
|
|
3
|
+
* This function will change the storage version in the metadata.
|
|
4
|
+
* This will break your storage and make it unusable.
|
|
5
|
+
* Use this only for testing purposes.
|
|
6
|
+
*/
|
|
7
|
+
export declare const changeStorageVersionInMetadata: (storage: Storage, version: number) => Promise<void>;
|
|
8
|
+
//# sourceMappingURL=change-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-metadata.d.ts","sourceRoot":"","sources":["../../../../src/testing/change-metadata.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAM3D;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,YAAmB,OAAO,WAAW,MAAM,kBASrF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/testing/index.ts"],"names":[],"mappings":"AAIA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/testing/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/echo-pipeline",
|
|
3
|
-
"version": "0.3.11-main.
|
|
3
|
+
"version": "0.3.11-main.d8b8a39",
|
|
4
4
|
"description": "ECHO database.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -36,38 +36,38 @@
|
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"crc-32": "^1.2.2",
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/crypto": "0.3.11-main.
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/feed-store": "0.3.11-main.
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/network-manager": "0.3.11-main.
|
|
55
|
-
"@dxos/model-factory": "0.3.11-main.
|
|
56
|
-
"@dxos/messaging": "0.3.11-main.
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/random-access-storage": "0.3.11-main.
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/teleport-extension-automerge-replicator": "0.3.11-main.
|
|
63
|
-
"@dxos/teleport-extension-
|
|
64
|
-
"@dxos/teleport-extension-
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/tracing": "0.3.11-main.
|
|
69
|
-
"@dxos/
|
|
70
|
-
"@dxos/
|
|
39
|
+
"@dxos/async": "0.3.11-main.d8b8a39",
|
|
40
|
+
"@dxos/automerge": "0.3.11-main.d8b8a39",
|
|
41
|
+
"@dxos/codec-protobuf": "0.3.11-main.d8b8a39",
|
|
42
|
+
"@dxos/context": "0.3.11-main.d8b8a39",
|
|
43
|
+
"@dxos/debug": "0.3.11-main.d8b8a39",
|
|
44
|
+
"@dxos/crypto": "0.3.11-main.d8b8a39",
|
|
45
|
+
"@dxos/credentials": "0.3.11-main.d8b8a39",
|
|
46
|
+
"@dxos/document-model": "0.3.11-main.d8b8a39",
|
|
47
|
+
"@dxos/echo-db": "0.3.11-main.d8b8a39",
|
|
48
|
+
"@dxos/feed-store": "0.3.11-main.d8b8a39",
|
|
49
|
+
"@dxos/keyring": "0.3.11-main.d8b8a39",
|
|
50
|
+
"@dxos/hypercore": "0.3.11-main.d8b8a39",
|
|
51
|
+
"@dxos/invariant": "0.3.11-main.d8b8a39",
|
|
52
|
+
"@dxos/log": "0.3.11-main.d8b8a39",
|
|
53
|
+
"@dxos/keys": "0.3.11-main.d8b8a39",
|
|
54
|
+
"@dxos/network-manager": "0.3.11-main.d8b8a39",
|
|
55
|
+
"@dxos/model-factory": "0.3.11-main.d8b8a39",
|
|
56
|
+
"@dxos/messaging": "0.3.11-main.d8b8a39",
|
|
57
|
+
"@dxos/node-std": "0.3.11-main.d8b8a39",
|
|
58
|
+
"@dxos/random-access-storage": "0.3.11-main.d8b8a39",
|
|
59
|
+
"@dxos/protocols": "0.3.11-main.d8b8a39",
|
|
60
|
+
"@dxos/rpc": "0.3.11-main.d8b8a39",
|
|
61
|
+
"@dxos/teleport": "0.3.11-main.d8b8a39",
|
|
62
|
+
"@dxos/teleport-extension-automerge-replicator": "0.3.11-main.d8b8a39",
|
|
63
|
+
"@dxos/teleport-extension-replicator": "0.3.11-main.d8b8a39",
|
|
64
|
+
"@dxos/teleport-extension-object-sync": "0.3.11-main.d8b8a39",
|
|
65
|
+
"@dxos/teleport-extension-gossip": "0.3.11-main.d8b8a39",
|
|
66
|
+
"@dxos/text-model": "0.3.11-main.d8b8a39",
|
|
67
|
+
"@dxos/timeframe": "0.3.11-main.d8b8a39",
|
|
68
|
+
"@dxos/tracing": "0.3.11-main.d8b8a39",
|
|
69
|
+
"@dxos/util": "0.3.11-main.d8b8a39",
|
|
70
|
+
"@dxos/typings": "0.3.11-main.d8b8a39"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"fast-check": "~3.3.0",
|