@dxos/echo-pipeline 0.4.10-main.d4e372f → 0.4.10-main.d51f2c2
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-RTEEJ723.mjs → chunk-SYE4EK33.mjs} +30 -35
- package/dist/lib/browser/chunk-SYE4EK33.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +279 -159
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +8 -2
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node/{chunk-7VZVCCNF.cjs → chunk-WCTX6RNS.cjs} +35 -40
- package/dist/lib/node/chunk-WCTX6RNS.cjs.map +7 -0
- package/dist/lib/node/index.cjs +285 -168
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +18 -13
- package/dist/lib/node/testing/index.cjs.map +4 -4
- package/dist/types/src/automerge/automerge-doc-loader.d.ts +2 -0
- package/dist/types/src/automerge/automerge-doc-loader.d.ts.map +1 -1
- package/dist/types/src/automerge/automerge-host.d.ts +20 -10
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
- package/dist/types/src/automerge/index.d.ts +1 -0
- package/dist/types/src/automerge/index.d.ts.map +1 -1
- package/dist/types/src/automerge/level.test.d.ts +2 -0
- package/dist/types/src/automerge/level.test.d.ts.map +1 -0
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +27 -0
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts.map +1 -0
- package/dist/types/src/automerge/migrations.d.ts +7 -0
- package/dist/types/src/automerge/migrations.d.ts.map +1 -0
- package/dist/types/src/automerge/reference.d.ts +15 -0
- package/dist/types/src/automerge/reference.d.ts.map +1 -0
- package/dist/types/src/automerge/storage-adapter.test.d.ts +2 -0
- package/dist/types/src/automerge/storage-adapter.test.d.ts.map +1 -0
- package/dist/types/src/automerge/types.d.ts +7 -2
- package/dist/types/src/automerge/types.d.ts.map +1 -1
- package/dist/types/src/metadata/metadata-store.d.ts +2 -1
- package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +4 -8
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/level.d.ts +3 -0
- package/dist/types/src/testing/level.d.ts.map +1 -0
- package/dist/types/src/testing/test-agent-builder.d.ts +2 -2
- package/package.json +33 -30
- package/src/automerge/automerge-doc-loader.ts +6 -0
- package/src/automerge/automerge-host.test.ts +19 -5
- package/src/automerge/automerge-host.ts +52 -33
- package/src/automerge/index.ts +1 -0
- package/src/automerge/level.test.ts +43 -0
- package/src/automerge/leveldb-storage-adapter.ts +105 -0
- package/src/automerge/migrations.ts +41 -0
- package/src/automerge/reference.ts +31 -0
- package/src/automerge/storage-adapter.test.ts +90 -0
- package/src/automerge/types.ts +7 -5
- package/src/db-host/data-service.ts +1 -1
- package/src/metadata/metadata-store.ts +17 -8
- package/src/space/space.test.ts +7 -7
- package/src/space/space.ts +6 -21
- package/src/testing/index.ts +1 -0
- package/src/testing/level.ts +11 -0
- package/dist/lib/browser/chunk-RTEEJ723.mjs.map +0 -7
- package/dist/lib/node/chunk-7VZVCCNF.cjs.map +0 -7
|
@@ -23,10 +23,11 @@ __export(testing_exports, {
|
|
|
23
23
|
TestAgentBuilder: () => TestAgentBuilder,
|
|
24
24
|
TestFeedBuilder: () => TestFeedBuilder,
|
|
25
25
|
WebsocketNetworkManagerProvider: () => WebsocketNetworkManagerProvider,
|
|
26
|
-
changeStorageVersionInMetadata: () => changeStorageVersionInMetadata
|
|
26
|
+
changeStorageVersionInMetadata: () => changeStorageVersionInMetadata,
|
|
27
|
+
createTestLevel: () => createTestLevel
|
|
27
28
|
});
|
|
28
29
|
module.exports = __toCommonJS(testing_exports);
|
|
29
|
-
var
|
|
30
|
+
var import_chunk_WCTX6RNS = require("../chunk-WCTX6RNS.cjs");
|
|
30
31
|
var import_log = require("@dxos/log");
|
|
31
32
|
var import_protocols = require("@dxos/protocols");
|
|
32
33
|
var import_context = require("@dxos/context");
|
|
@@ -40,6 +41,8 @@ var import_teleport_extension_gossip = require("@dxos/teleport-extension-gossip"
|
|
|
40
41
|
var import_teleport_extension_object_sync = require("@dxos/teleport-extension-object-sync");
|
|
41
42
|
var import_util = require("@dxos/util");
|
|
42
43
|
var import_testing = require("@dxos/feed-store/testing");
|
|
44
|
+
var import_level = require("level");
|
|
45
|
+
var import_keys2 = require("@dxos/keys");
|
|
43
46
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/testing/change-metadata.ts";
|
|
44
47
|
var EchoMetadata = import_protocols.schema.getCodecForType("dxos.echo.metadata.EchoMetadata");
|
|
45
48
|
var changeStorageVersionInMetadata = async (storage, version) => {
|
|
@@ -49,7 +52,7 @@ var changeStorageVersionInMetadata = async (storage, version) => {
|
|
|
49
52
|
S: void 0,
|
|
50
53
|
C: (f, a) => f(...a)
|
|
51
54
|
});
|
|
52
|
-
const metadata = new
|
|
55
|
+
const metadata = new import_chunk_WCTX6RNS.MetadataStore(storage.createDirectory("metadata"));
|
|
53
56
|
await metadata.load();
|
|
54
57
|
const echoMetadata = metadata.metadata;
|
|
55
58
|
echoMetadata.version = version;
|
|
@@ -60,7 +63,7 @@ var changeStorageVersionInMetadata = async (storage, version) => {
|
|
|
60
63
|
var TestFeedBuilder = class extends import_testing.TestBuilder {
|
|
61
64
|
constructor() {
|
|
62
65
|
super({
|
|
63
|
-
valueEncoding:
|
|
66
|
+
valueEncoding: import_chunk_WCTX6RNS.valueEncoding
|
|
64
67
|
});
|
|
65
68
|
}
|
|
66
69
|
};
|
|
@@ -104,10 +107,10 @@ var TestAgentBuilder = class {
|
|
|
104
107
|
};
|
|
105
108
|
var TestAgent = class {
|
|
106
109
|
get metadataStore() {
|
|
107
|
-
return this._metadataStore ??= new
|
|
110
|
+
return this._metadataStore ??= new import_chunk_WCTX6RNS.MetadataStore(this.storage.createDirectory("metadata"));
|
|
108
111
|
}
|
|
109
112
|
get snapshotStore() {
|
|
110
|
-
return this._snapshotStore ??= new
|
|
113
|
+
return this._snapshotStore ??= new import_chunk_WCTX6RNS.SnapshotStore(this.storage.createDirectory("snapshots"));
|
|
111
114
|
}
|
|
112
115
|
get blobStore() {
|
|
113
116
|
return this._blobStore ??= new import_teleport_extension_object_sync.BlobStore(this.storage.createDirectory("blobs"));
|
|
@@ -134,7 +137,7 @@ var TestAgent = class {
|
|
|
134
137
|
return this._spaces.get(spaceKey);
|
|
135
138
|
}
|
|
136
139
|
get spaceManager() {
|
|
137
|
-
return this._spaceManager ??= new
|
|
140
|
+
return this._spaceManager ??= new import_chunk_WCTX6RNS.SpaceManager({
|
|
138
141
|
feedStore: this.feedStore,
|
|
139
142
|
networkManager: this._networkManagerProvider(),
|
|
140
143
|
metadataStore: this.metadataStore,
|
|
@@ -171,8 +174,8 @@ var TestAgent = class {
|
|
|
171
174
|
metadata,
|
|
172
175
|
swarmIdentity: {
|
|
173
176
|
peerKey: this.deviceKey,
|
|
174
|
-
credentialProvider:
|
|
175
|
-
credentialAuthenticator:
|
|
177
|
+
credentialProvider: import_chunk_WCTX6RNS.MOCK_AUTH_PROVIDER,
|
|
178
|
+
credentialAuthenticator: import_chunk_WCTX6RNS.MOCK_AUTH_VERIFIER
|
|
176
179
|
},
|
|
177
180
|
memberKey: identityKey,
|
|
178
181
|
onAuthorizedConnection: (session) => {
|
|
@@ -188,12 +191,12 @@ var TestAgent = class {
|
|
|
188
191
|
return space;
|
|
189
192
|
}
|
|
190
193
|
createSpaceProtocol(topic, gossip) {
|
|
191
|
-
return new
|
|
194
|
+
return new import_chunk_WCTX6RNS.SpaceProtocol({
|
|
192
195
|
topic,
|
|
193
196
|
swarmIdentity: {
|
|
194
197
|
peerKey: this.deviceKey,
|
|
195
|
-
credentialProvider:
|
|
196
|
-
credentialAuthenticator:
|
|
198
|
+
credentialProvider: import_chunk_WCTX6RNS.MOCK_AUTH_PROVIDER,
|
|
199
|
+
credentialAuthenticator: import_chunk_WCTX6RNS.MOCK_AUTH_VERIFIER
|
|
197
200
|
},
|
|
198
201
|
networkManager: this._networkManagerProvider(),
|
|
199
202
|
blobStore: this.blobStore,
|
|
@@ -233,6 +236,7 @@ var TestAgent = class {
|
|
|
233
236
|
}
|
|
234
237
|
}
|
|
235
238
|
};
|
|
239
|
+
var createTestLevel = () => new import_level.Level(`/tmp/dxos-${import_keys2.PublicKey.random().toHex()}`);
|
|
236
240
|
// Annotate the CommonJS export names for ESM import in node:
|
|
237
241
|
0 && (module.exports = {
|
|
238
242
|
MemoryNetworkManagerProvider,
|
|
@@ -240,6 +244,7 @@ var TestAgent = class {
|
|
|
240
244
|
TestAgentBuilder,
|
|
241
245
|
TestFeedBuilder,
|
|
242
246
|
WebsocketNetworkManagerProvider,
|
|
243
|
-
changeStorageVersionInMetadata
|
|
247
|
+
changeStorageVersionInMetadata,
|
|
248
|
+
createTestLevel
|
|
244
249
|
});
|
|
245
250
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/testing/change-metadata.ts", "../../../../src/testing/test-agent-builder.ts", "../../../../src/testing/test-feed-builder.ts"],
|
|
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 { type FeedStore } from '@dxos/feed-store';\nimport { type Keyring } from '@dxos/keyring';\nimport { PublicKey } from '@dxos/keys';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { MemoryTransportFactory, NetworkManager, createSimplePeerTransportFactory } from '@dxos/network-manager';\nimport type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { type SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { AdmittedFeed } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { StorageType, createStorage, type Storage } from '@dxos/random-access-storage';\nimport { Gossip, Presence } from '@dxos/teleport-extension-gossip';\nimport { BlobStore } from '@dxos/teleport-extension-object-sync';\nimport { ComplexMap } from '@dxos/util';\n\nimport { TestFeedBuilder } from './test-feed-builder';\nimport { SnapshotStore } from '../db-host';\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, SpaceManager, SpaceProtocol, type Space } 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 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 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 onAuthorizedConnection: (session) => {\n session.addExtension(\n 'dxos.mesh.teleport.gossip',\n this.createGossip().createExtension({ remotePeerId: session.remotePeerId }),\n );\n },\n });\n await space.setControlFeed(controlFeed);\n await space.setDataFeed(dataFeed);\n\n await space.open(new Context());\n\n this._spaces.set(spaceKey, space);\n return space;\n }\n\n createSpaceProtocol(topic: PublicKey, gossip?: Gossip) {\n return new SpaceProtocol({\n topic,\n swarmIdentity: {\n 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"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["import_credentials", "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", "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", "onAuthorizedConnection", "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"]
|
|
3
|
+
"sources": ["../../../../src/testing/change-metadata.ts", "../../../../src/testing/test-agent-builder.ts", "../../../../src/testing/test-feed-builder.ts", "../../../../src/testing/level.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 { type FeedStore } from '@dxos/feed-store';\nimport { type Keyring } from '@dxos/keyring';\nimport { PublicKey } from '@dxos/keys';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { MemoryTransportFactory, NetworkManager, createSimplePeerTransportFactory } from '@dxos/network-manager';\nimport type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';\nimport { type SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { AdmittedFeed } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { StorageType, createStorage, type Storage } from '@dxos/random-access-storage';\nimport { Gossip, Presence } from '@dxos/teleport-extension-gossip';\nimport { BlobStore } from '@dxos/teleport-extension-object-sync';\nimport { ComplexMap } from '@dxos/util';\n\nimport { TestFeedBuilder } from './test-feed-builder';\nimport { SnapshotStore } from '../db-host';\nimport { MetadataStore } from '../metadata';\nimport { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, SpaceManager, SpaceProtocol, type Space } 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 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 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 onAuthorizedConnection: (session) => {\n session.addExtension(\n 'dxos.mesh.teleport.gossip',\n this.createGossip().createExtension({ remotePeerId: session.remotePeerId }),\n );\n },\n });\n await space.setControlFeed(controlFeed);\n await space.setDataFeed(dataFeed);\n\n await space.open(new Context());\n\n this._spaces.set(spaceKey, space);\n return space;\n }\n\n createSpaceProtocol(topic: PublicKey, gossip?: Gossip) {\n return new SpaceProtocol({\n topic,\n swarmIdentity: {\n 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 2024 DXOS.org\n//\n\nimport { Level } from 'level';\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { type MyLevel } from '../automerge/types';\n\nexport const createTestLevel = (): MyLevel => new Level<string, string>(`/tmp/dxos-${PublicKey.random().toHex()}`);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_credentials", "import_keys", "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", "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", "onAuthorizedConnection", "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", "createTestLevel", "Level", "random", "toHex"]
|
|
7
7
|
}
|
|
@@ -6,6 +6,7 @@ import { type SpaceState, type SpaceDoc } from './types';
|
|
|
6
6
|
type SpaceDocumentLinks = SpaceDoc['links'];
|
|
7
7
|
export interface AutomergeDocumentLoader {
|
|
8
8
|
onObjectDocumentLoaded: Event<ObjectDocumentLoaded>;
|
|
9
|
+
getAllHandles(): DocHandle<SpaceDoc>[];
|
|
9
10
|
loadSpaceRootDocHandle(ctx: Context, spaceState: SpaceState): Promise<void>;
|
|
10
11
|
loadObjectDocument(objectId: string): void;
|
|
11
12
|
getSpaceRootDocHandle(): DocHandle<SpaceDoc>;
|
|
@@ -35,6 +36,7 @@ export declare class AutomergeDocumentLoaderImpl implements AutomergeDocumentLoa
|
|
|
35
36
|
private readonly _objectsPendingDocumentLoad;
|
|
36
37
|
readonly onObjectDocumentLoaded: Event<ObjectDocumentLoaded>;
|
|
37
38
|
constructor(_spaceKey: PublicKey, _repo: Repo);
|
|
39
|
+
getAllHandles(): DocHandle<SpaceDoc>[];
|
|
38
40
|
loadSpaceRootDocHandle(ctx: Context, spaceState: SpaceState): Promise<void>;
|
|
39
41
|
loadObjectDocument(objectId: string): void;
|
|
40
42
|
onObjectLinksUpdated(links: SpaceDocumentLinks): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automerge-doc-loader.d.ts","sourceRoot":"","sources":["../../../../src/automerge/automerge-doc-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAmB,KAAK,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC/G,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEzD,KAAK,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAE5C,MAAM,WAAW,uBAAuB;IACtC,sBAAsB,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEpD,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,qBAAqB,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7C,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/D,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtD,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7E;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,2BAA4B,YAAW,uBAAuB;IAevE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAfxB,OAAO,CAAC,mBAAmB,CAAoC;IAC/D;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA0C;IACjF;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAqB;IAEjE,SAAgB,sBAAsB,8BAAqC;gBAGxD,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"automerge-doc-loader.d.ts","sourceRoot":"","sources":["../../../../src/automerge/automerge-doc-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAmB,KAAK,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC/G,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEzD,KAAK,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAE5C,MAAM,WAAW,uBAAuB;IACtC,sBAAsB,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEpD,aAAa,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEvC,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,qBAAqB,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7C,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/D,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtD,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7E;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,2BAA4B,YAAW,uBAAuB;IAevE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAfxB,OAAO,CAAC,mBAAmB,CAAoC;IAC/D;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA0C;IACjF;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAqB;IAEjE,SAAgB,sBAAsB,8BAAqC;gBAGxD,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,IAAI;IAG9B,aAAa,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;IAIzB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjF,kBAAkB,CAAC,QAAQ,EAAE,MAAM;IAgBnC,oBAAoB,CAAC,KAAK,EAAE,kBAAkB;IAW9C,qBAAqB,IAAI,SAAS,CAAC,QAAQ,CAAC;IAK5C,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;IAY9D,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM;IAIrE,qBAAqB,IAAI,MAAM,EAAE;IAOxC,OAAO,CAAC,kBAAkB;YAyBZ,cAAc;IAyB5B,OAAO,CAAC,oCAAoC;IAS5C,OAAO,CAAC,cAAc;YAOR,2BAA2B;CA2B1C;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE;QACf,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;KAChC,CAAC;CACH"}
|
|
@@ -1,39 +1,49 @@
|
|
|
1
1
|
import { Repo, type DocumentId } from '@dxos/automerge/automerge-repo';
|
|
2
2
|
import { type Stream } from '@dxos/codec-protobuf';
|
|
3
3
|
import { PublicKey } from '@dxos/keys';
|
|
4
|
-
import { type HostInfo, type SyncRepoRequest, type SyncRepoResponse } from '@dxos/protocols/proto/dxos/echo/service';
|
|
4
|
+
import { type FlushRequest, type HostInfo, type SyncRepoRequest, type SyncRepoResponse } from '@dxos/protocols/proto/dxos/echo/service';
|
|
5
5
|
import { type Directory } from '@dxos/random-access-storage';
|
|
6
6
|
import { type AutomergeReplicator } from '@dxos/teleport-extension-automerge-replicator';
|
|
7
|
+
import { type MaybePromise } from '@dxos/util';
|
|
8
|
+
import { type MySublevel } from './types';
|
|
7
9
|
export type { DocumentId };
|
|
8
10
|
export interface MetadataMethods {
|
|
9
11
|
markDirty(idToLastHash: Map<string, string>): Promise<void>;
|
|
10
12
|
}
|
|
11
13
|
export type AutomergeHostParams = {
|
|
12
|
-
|
|
14
|
+
db: MaybePromise<MySublevel>;
|
|
15
|
+
/**
|
|
16
|
+
* For migration purposes.
|
|
17
|
+
*/
|
|
18
|
+
directory?: Directory;
|
|
13
19
|
metadata?: MetadataMethods;
|
|
14
20
|
};
|
|
15
21
|
export declare class AutomergeHost {
|
|
16
22
|
private readonly _ctx;
|
|
17
|
-
private readonly
|
|
18
|
-
private readonly
|
|
19
|
-
private readonly
|
|
20
|
-
private
|
|
21
|
-
private
|
|
23
|
+
private readonly _directory?;
|
|
24
|
+
private readonly _db;
|
|
25
|
+
private readonly _metadata?;
|
|
26
|
+
private _repo;
|
|
27
|
+
private _meshNetwork;
|
|
28
|
+
private _clientNetwork;
|
|
29
|
+
private _storage;
|
|
30
|
+
private _peerId;
|
|
22
31
|
/**
|
|
23
32
|
* spaceKey -> deviceKey[]
|
|
24
33
|
*/
|
|
25
34
|
private readonly _authorizedDevices;
|
|
26
35
|
private readonly _updatingMetadata;
|
|
27
|
-
private readonly _metadata?;
|
|
28
36
|
_requestedDocs: Set<string>;
|
|
29
|
-
constructor({ directory, metadata }: AutomergeHostParams);
|
|
37
|
+
constructor({ directory, db, metadata }: AutomergeHostParams);
|
|
38
|
+
open(): Promise<void>;
|
|
39
|
+
close(): Promise<void>;
|
|
30
40
|
get repo(): Repo;
|
|
31
41
|
private _beforeSave;
|
|
32
42
|
private _onDocument;
|
|
33
43
|
private _onUpdate;
|
|
34
44
|
private _automergeDocs;
|
|
35
45
|
private _automergePeers;
|
|
36
|
-
|
|
46
|
+
flush({ documentIds }: FlushRequest): Promise<void>;
|
|
37
47
|
syncRepo(request: SyncRepoRequest): Stream<SyncRepoResponse>;
|
|
38
48
|
sendSyncMessage(request: SyncRepoRequest): Promise<void>;
|
|
39
49
|
getHostInfo(): Promise<HostInfo>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automerge-host.d.ts","sourceRoot":"","sources":["../../../../src/automerge/automerge-host.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,IAAI,EAEJ,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"automerge-host.d.ts","sourceRoot":"","sources":["../../../../src/automerge/automerge-host.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,IAAI,EAEJ,KAAK,UAAU,EAKhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAEzF,OAAO,EAA0B,KAAK,YAAY,EAAyB,MAAM,YAAY,CAAC;AAM9F,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF,qBACa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAY;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAkB;IAE7C,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAoD;IAGpE,OAAO,CAAC,OAAO,CAAU;IAEzB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoE;IAEvG,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoC;IAE/D,cAAc,cAAqB;gBAE9B,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,mBAAmB;IAMtD,IAAI;IA+EJ,KAAK;IAMX,IAAI,IAAI,IAAI,IAAI,CAEf;YAEa,WAAW;IAOzB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,SAAS;IA8BjB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,eAAe;IAQjB,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAQtC,eAAe,IAAI,mBAAmB;IAItC,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;CAI1D;AAoBD,eAAO,MAAM,kBAAkB,QAAS,GAAG,KAAG,MAAM,GAAG,IAQtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/automerge/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/automerge/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level.test.d.ts","sourceRoot":"","sources":["../../../../src/automerge/level.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type StorageAdapterInterface, type Chunk, type StorageKey } from '@dxos/automerge/automerge-repo';
|
|
2
|
+
import { type MaybePromise } from '@dxos/util';
|
|
3
|
+
import { type MySublevel } from './types';
|
|
4
|
+
export type LevelDBStorageAdapterParams = {
|
|
5
|
+
db: MySublevel;
|
|
6
|
+
callbacks?: StorageCallbacks;
|
|
7
|
+
};
|
|
8
|
+
export type StorageCallbacks = {
|
|
9
|
+
beforeSave?: (path: StorageKey) => MaybePromise<void>;
|
|
10
|
+
afterSave?: (path: StorageKey) => MaybePromise<void>;
|
|
11
|
+
};
|
|
12
|
+
export declare class LevelDBStorageAdapter implements StorageAdapterInterface {
|
|
13
|
+
private readonly _params;
|
|
14
|
+
private _state;
|
|
15
|
+
constructor(_params: LevelDBStorageAdapterParams);
|
|
16
|
+
load(keyArray: StorageKey): Promise<Uint8Array | undefined>;
|
|
17
|
+
save(keyArray: StorageKey, binary: Uint8Array): Promise<void>;
|
|
18
|
+
remove(keyArray: StorageKey): Promise<void>;
|
|
19
|
+
loadRange(keyPrefix: StorageKey): Promise<Chunk[]>;
|
|
20
|
+
removeRange(keyPrefix: StorageKey): Promise<void>;
|
|
21
|
+
close(): void;
|
|
22
|
+
}
|
|
23
|
+
export declare const encodingOptions: {
|
|
24
|
+
keyEncoding: import("level-transcoder").IExternalEncoding<StorageKey, Uint8Array, StorageKey>;
|
|
25
|
+
valueEncoding: string;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=leveldb-storage-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leveldb-storage-adapter.d.ts","sourceRoot":"","sources":["../../../../src/automerge/leveldb-storage-adapter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,uBAAuB,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC3G,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,2BAA2B,GAAG;IACxC,EAAE,EAAE,UAAU,CAAC;IACf,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACtD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACtD,CAAC;AAEF,qBAAa,qBAAsB,YAAW,uBAAuB;IAEvD,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,OAAO,CAAC,MAAM,CAAiC;gBAClB,OAAO,EAAE,2BAA2B;IAE3D,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAS3D,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7D,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3C,SAAS,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAkBlD,WAAW,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvD,KAAK;CAGN;AAYD,eAAO,MAAM,eAAe;;;CAG3B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Directory } from '@dxos/random-access-storage';
|
|
2
|
+
import { type MySublevel } from './types';
|
|
3
|
+
export declare const levelMigration: ({ db, directory }: {
|
|
4
|
+
db: MySublevel;
|
|
5
|
+
directory: Directory;
|
|
6
|
+
}) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../../src/automerge/migrations.ts"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAI1E,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,eAAO,MAAM,cAAc;;eAA0D,SAAS;mBA2B7F,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Reference } from '@dxos/echo-db';
|
|
2
|
+
export declare const REFERENCE_TYPE_TAG = "dxos.echo.model.document.Reference";
|
|
3
|
+
/**
|
|
4
|
+
* Reference as it is stored in Automerge document.
|
|
5
|
+
*/
|
|
6
|
+
export type EncodedReferenceObject = {
|
|
7
|
+
'@type': typeof REFERENCE_TYPE_TAG;
|
|
8
|
+
itemId: string | null;
|
|
9
|
+
protocol: string | null;
|
|
10
|
+
host: string | null;
|
|
11
|
+
};
|
|
12
|
+
export declare const encodeReference: (reference: Reference) => EncodedReferenceObject;
|
|
13
|
+
export declare const decodeReference: (value: any) => Reference;
|
|
14
|
+
export declare const isEncodedReferenceObject: (value: any) => value is EncodedReferenceObject;
|
|
15
|
+
//# sourceMappingURL=reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../../../src/automerge/reference.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,eAAO,MAAM,kBAAkB,uCAAuC,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,OAAO,kBAAkB,CAAC;IACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,eAAe,cAAe,SAAS,KAAG,sBAMrD,CAAC;AAEH,eAAO,MAAM,eAAe,UAAW,GAAG,cACyC,CAAC;AAEpF,eAAO,MAAM,wBAAwB,UAAW,GAAG,oCACmC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-adapter.test.d.ts","sourceRoot":"","sources":["../../../../src/automerge/storage-adapter.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { type AbstractSublevel } from 'abstract-level';
|
|
3
|
+
import { type Level } from 'level';
|
|
4
|
+
import { type EncodedReferenceObject } from './reference';
|
|
2
5
|
export type SpaceState = {
|
|
3
6
|
rootUrl?: string;
|
|
4
7
|
};
|
|
@@ -62,6 +65,8 @@ export type ObjectSystem = {
|
|
|
62
65
|
/**
|
|
63
66
|
* Object reference ('protobuf' protocol) type.
|
|
64
67
|
*/
|
|
65
|
-
type?:
|
|
68
|
+
type?: EncodedReferenceObject;
|
|
66
69
|
};
|
|
70
|
+
export type MyLevel = Level<string, string>;
|
|
71
|
+
export type MySublevel = AbstractSublevel<any, string | Buffer | Uint8Array, string, string>;
|
|
67
72
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/automerge/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/automerge/types.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG;IAEvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;KAChC,CAAC;IACF;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;KAC1B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,IAAI,EAAE,UAAU,EAAE,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
2
|
import { PublicKey } from '@dxos/keys';
|
|
3
|
-
import {
|
|
3
|
+
import { Invitation, SpaceState } from '@dxos/protocols/proto/dxos/client/services';
|
|
4
4
|
import { type ControlPipelineSnapshot, EchoMetadata, type SpaceMetadata, type IdentityRecord, type SpaceCache } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
5
5
|
import { type Directory } from '@dxos/random-access-storage';
|
|
6
6
|
import { type Timeframe } from '@dxos/timeframe';
|
|
@@ -53,5 +53,6 @@ export declare class MetadataStore {
|
|
|
53
53
|
getSpaceControlPipelineSnapshot(spaceKey: PublicKey): ControlPipelineSnapshot | undefined;
|
|
54
54
|
setSpaceControlPipelineSnapshot(spaceKey: PublicKey, snapshot: ControlPipelineSnapshot): Promise<void>;
|
|
55
55
|
}
|
|
56
|
+
export declare const hasInvitationExpired: (invitation: Invitation) => boolean;
|
|
56
57
|
export {};
|
|
57
58
|
//# sourceMappingURL=metadata-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../../src/metadata/metadata-store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAsC,MAAM,aAAa,CAAC;AAIxE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../../src/metadata/metadata-store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAsC,MAAM,aAAa,CAAC;AAIxE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EACL,KAAK,uBAAuB,EAC5B,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,UAAU,EAEhB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKjD,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;IACnD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAiB;gBAO3C,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;IASX;;OAEG;IAEG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAgDb,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;IAQ9C,cAAc,IAAI,UAAU,EAAE;IAIxB,aAAa,CAAC,UAAU,EAAE,UAAU;IAUpC,gBAAgB,CAAC,YAAY,EAAE,MAAM;IAMrC,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;AAID,eAAO,MAAM,oBAAoB,eAAgB,UAAU,KAAG,OAO7D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
|
-
import { type Context } from '@dxos/context';
|
|
2
|
+
import { Resource, type Context } from '@dxos/context';
|
|
3
3
|
import { type FeedInfo } from '@dxos/credentials';
|
|
4
4
|
import { type FeedOptions, type FeedWrapper } from '@dxos/feed-store';
|
|
5
5
|
import { type PublicKey } from '@dxos/keys';
|
|
@@ -28,7 +28,7 @@ export type CreatePipelineParams = {
|
|
|
28
28
|
/**
|
|
29
29
|
* Spaces are globally addressable databases with access control.
|
|
30
30
|
*/
|
|
31
|
-
export declare class Space {
|
|
31
|
+
export declare class Space extends Resource {
|
|
32
32
|
private readonly _addFeedMutex;
|
|
33
33
|
readonly onCredentialProcessed: Callback<AsyncCallback<Credential>>;
|
|
34
34
|
readonly stateUpdate: Event<void>;
|
|
@@ -38,7 +38,6 @@ export declare class Space {
|
|
|
38
38
|
private readonly _feedProvider;
|
|
39
39
|
private readonly _controlPipeline;
|
|
40
40
|
private readonly _snapshotManager;
|
|
41
|
-
private _isOpen;
|
|
42
41
|
private _controlFeed?;
|
|
43
42
|
private _dataFeed?;
|
|
44
43
|
constructor(params: SpaceParams);
|
|
@@ -59,11 +58,8 @@ export declare class Space {
|
|
|
59
58
|
* Use for diagnostics.
|
|
60
59
|
*/
|
|
61
60
|
getControlFeeds(): FeedInfo[];
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
*/
|
|
65
|
-
open(ctx: Context): Promise<void>;
|
|
66
|
-
close(): Promise<void>;
|
|
61
|
+
protected _open(ctx: Context): Promise<void>;
|
|
62
|
+
protected _close(): Promise<void>;
|
|
67
63
|
}
|
|
68
64
|
export {};
|
|
69
65
|
//# sourceMappingURL=space.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../../src/space/space.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAmC,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../../src/space/space.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAmC,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAkB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,SAAS,CAAC;IAGrB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,SAAS,CAAC;CAElB,CAAC;AAEF;;GAEG;AAEH,qBAEa,KAAM,SAAQ,QAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,SAAgB,qBAAqB,sCAA6C;IAClF,SAAgB,WAAW,cAAe;IAC1C,SACgB,QAAQ,EAAE,aAAa,CAAC;IAExC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAY;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAEnD,OAAO,CAAC,YAAY,CAAC,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAC,CAA2B;gBAEjC,MAAM,EAAE,WAAW;IAsC/B,IAEI,GAAG,cAEN;IAED,IAAI,MAAM,YAET;IAED,IAAI,cAAc,IAAI,SAAS,CAE9B;IAED,IAAI,cAAc,0BAEjB;IAED,IAAI,WAAW,0BAEd;IAED,IAAI,UAAU,2CAEb;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,gBAAgB,CAEtC;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAEK,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAO7C,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAMhD;;OAEG;IACH,eAAe,IAAI,QAAQ,EAAE;cAKJ,KAAK,CAAC,GAAG,EAAE,OAAO;cAWlB,MAAM;CAShC"}
|
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../../../src/testing/level.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,eAAO,MAAM,eAAe,QAAO,OAA+E,CAAC"}
|
|
@@ -26,7 +26,7 @@ export declare class TestAgentBuilder {
|
|
|
26
26
|
private readonly _storage;
|
|
27
27
|
private readonly _networkManagerProvider;
|
|
28
28
|
constructor({ storage, networkManagerProvider }?: TestAgentBuilderOptions);
|
|
29
|
-
close(): Promise<
|
|
29
|
+
close(): Promise<Space[][]>;
|
|
30
30
|
get agents(): TestAgent[];
|
|
31
31
|
getAgent(deviceKey: PublicKey): TestAgent | undefined;
|
|
32
32
|
createPeer(): Promise<TestAgent>;
|
|
@@ -50,7 +50,7 @@ export declare class TestAgent {
|
|
|
50
50
|
private _blobStore?;
|
|
51
51
|
get blobStore(): BlobStore;
|
|
52
52
|
constructor(_networkManagerProvider: NetworkManagerProvider, _feedBuilder: TestFeedBuilder, identityKey: PublicKey, deviceKey: PublicKey);
|
|
53
|
-
close(): Promise<
|
|
53
|
+
close(): Promise<Space[]>;
|
|
54
54
|
get spaces(): Space[];
|
|
55
55
|
getSpace(spaceKey: PublicKey): Space | undefined;
|
|
56
56
|
private _spaceManager?;
|