@dxos/echo-pipeline 0.4.10-main.fd4f2a3 → 0.4.10-main.fd8ea31
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-RA6MLCZM.mjs → chunk-KMWJLYEQ.mjs} +68 -35
- package/dist/lib/browser/chunk-KMWJLYEQ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +305 -231
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +10 -2
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node/{chunk-KGIYLJBT.cjs → chunk-YZA42CKA.cjs} +70 -37
- package/dist/lib/node/chunk-YZA42CKA.cjs.map +7 -0
- package/dist/lib/node/index.cjs +327 -256
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +20 -13
- package/dist/lib/node/testing/index.cjs.map +4 -4
- package/dist/types/src/automerge/automerge-host.d.ts +19 -17
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
- package/dist/types/src/automerge/automerge-repo.test.d.ts +2 -0
- package/dist/types/src/automerge/automerge-repo.test.d.ts.map +1 -0
- 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 +30 -0
- package/dist/types/src/automerge/leveldb-storage-adapter.d.ts.map +1 -0
- package/dist/types/src/automerge/local-host-network-adapter.d.ts +8 -1
- package/dist/types/src/automerge/local-host-network-adapter.d.ts.map +1 -1
- 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 +1 -1
- package/dist/types/src/automerge/reference.d.ts.map +1 -1
- 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 +6 -0
- 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/control-pipeline.d.ts +3 -1
- package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/space-manager.d.ts +3 -1
- package/dist/types/src/space/space-manager.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +2 -1
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/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.map +1 -1
- package/package.json +33 -30
- package/src/automerge/automerge-host.test.ts +22 -8
- package/src/automerge/automerge-host.ts +53 -114
- package/src/automerge/automerge-repo.test.ts +29 -0
- package/src/automerge/index.ts +1 -0
- package/src/automerge/level.test.ts +82 -0
- package/src/automerge/leveldb-storage-adapter.ts +117 -0
- package/src/automerge/local-host-network-adapter.ts +19 -13
- package/src/automerge/migrations.ts +41 -0
- package/src/automerge/reference.ts +1 -1
- package/src/automerge/storage-adapter.test.ts +90 -0
- package/src/automerge/types.ts +6 -3
- package/src/metadata/metadata-store.ts +17 -8
- package/src/space/control-pipeline.ts +11 -1
- package/src/space/space-manager.ts +4 -0
- package/src/space/space.ts +11 -1
- package/src/testing/index.ts +1 -0
- package/src/testing/level.ts +11 -0
- package/src/testing/test-agent-builder.ts +1 -0
- package/dist/lib/browser/chunk-RA6MLCZM.mjs.map +0 -7
- package/dist/lib/node/chunk-KGIYLJBT.cjs.map +0 -7
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
SpaceManager,
|
|
8
8
|
SpaceProtocol,
|
|
9
9
|
valueEncoding
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-KMWJLYEQ.mjs";
|
|
11
11
|
|
|
12
12
|
// packages/core/echo/echo-pipeline/src/testing/change-metadata.ts
|
|
13
13
|
import { log } from "@dxos/log";
|
|
@@ -168,6 +168,8 @@ var TestAgent = class {
|
|
|
168
168
|
session.addExtension("dxos.mesh.teleport.gossip", this.createGossip().createExtension({
|
|
169
169
|
remotePeerId: session.remotePeerId
|
|
170
170
|
}));
|
|
171
|
+
},
|
|
172
|
+
onDelegatedInvitationStatusChange: async () => {
|
|
171
173
|
}
|
|
172
174
|
});
|
|
173
175
|
await space.setControlFeed(controlFeed);
|
|
@@ -222,12 +224,18 @@ var TestAgent = class {
|
|
|
222
224
|
}
|
|
223
225
|
}
|
|
224
226
|
};
|
|
227
|
+
|
|
228
|
+
// packages/core/echo/echo-pipeline/src/testing/level.ts
|
|
229
|
+
import { Level } from "level";
|
|
230
|
+
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
231
|
+
var createTestLevel = () => new Level(`/tmp/dxos-${PublicKey2.random().toHex()}`);
|
|
225
232
|
export {
|
|
226
233
|
MemoryNetworkManagerProvider,
|
|
227
234
|
TestAgent,
|
|
228
235
|
TestAgentBuilder,
|
|
229
236
|
TestFeedBuilder,
|
|
230
237
|
WebsocketNetworkManagerProvider,
|
|
231
|
-
changeStorageVersionInMetadata
|
|
238
|
+
changeStorageVersionInMetadata,
|
|
239
|
+
createTestLevel
|
|
232
240
|
};
|
|
233
241
|
//# sourceMappingURL=index.mjs.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": "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
|
|
6
|
-
"names": ["log", "schema", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "info", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "Context", "CredentialGenerator", "PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "MemoryTransportFactory", "NetworkManager", "createSimplePeerTransportFactory", "AdmittedFeed", "StorageType", "createStorage", "Gossip", "Presence", "BlobStore", "ComplexMap", "TestBuilder", "TestFeedBuilder", "TestBuilder", "constructor", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "NetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createSimplePeerTransportFactory", "TestAgentBuilder", "constructor", "storage", "networkManagerProvider", "_agents", "ComplexMap", "PublicKey", "hash", "_storage", "createStorage", "type", "StorageType", "RAM", "_networkManagerProvider", "MemorySignalManagerContext", "close", "Promise", "all", "agents", "map", "agent", "Array", "from", "values", "getAgent", "deviceKey", "get", "createPeer", "feedBuilder", "TestFeedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "metadataStore", "_metadataStore", "MetadataStore", "createDirectory", "snapshotStore", "_snapshotStore", "SnapshotStore", "blobStore", "_blobStore", "BlobStore", "_feedBuilder", "_spaces", "feedStore", "createFeedStore", "spaces", "space", "getSpace", "spaceKey", "spaceManager", "_spaceManager", "SpaceManager", "networkManager", "createSpace", "genesisKey", "dataKey", "saveMetadata", "controlFeed", "openFeed", "writable", "dataFeed", "sparse", "metadata", "key", "genesisFeedKey", "controlFeedKey", "dataFeedKey", "addSpace", "open", "constructSpace", "swarmIdentity", "peerKey", "credentialProvider", "MOCK_AUTH_PROVIDER", "credentialAuthenticator", "MOCK_AUTH_VERIFIER", "memberKey", "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 onDelegatedInvitationStatusChange: async () => {},\n });\n await space.setControlFeed(controlFeed);\n await space.setDataFeed(dataFeed);\n\n await space.open(new Context());\n\n this._spaces.set(spaceKey, space);\n return space;\n }\n\n createSpaceProtocol(topic: PublicKey, gossip?: Gossip) {\n return new SpaceProtocol({\n topic,\n swarmIdentity: {\n 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 LevelDB } from '../automerge/types';\n\nexport const createTestLevel = (): LevelDB => new Level<string, string>(`/tmp/dxos-${PublicKey.random().toHex()}`);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;AAIA,SAASA,WAAW;AACpB,SAASC,cAAc;;AAKvB,IAAMC,eAAeC,OAAOC,gBAAgB,iCAAA;AAOrC,IAAMC,iCAAiC,OAAOC,SAAkBC,YAAAA;AACrEC,MAAIC,KAAK,+DAAA,QAAA;;;;;;AACT,QAAMC,WAAW,IAAIC,cAAcL,QAAQM,gBAAgB,UAAA,CAAA;AAC3D,QAAMF,SAASG,KAAI;AACnB,QAAMC,eAAeJ,SAASA;AAC9BI,eAAaP,UAAUA;AACvB,QAAMQ,OAAOL,SAASM,WAAWC,gBAAgB,cAAA;AACjD,QAAMP,SAASQ,WAAWH,MAAMb,cAAcY,YAAAA;AAC9C,QAAMJ,SAASM,WAAWG,MAAK;AACjC;;;ACtBA,SAASC,eAAe;AACxB,SAASC,2BAA2B;AAGpC,SAASC,iBAAiB;AAC1B,SAASC,qBAAqBC,4BAA4BC,8BAA8B;AACxF,SAASC,wBAAwBC,gBAAgBC,wCAAwC;AAGzF,SAASC,oBAAoB;AAC7B,SAASC,aAAaC,qBAAmC;AACzD,SAASC,QAAQC,gBAAgB;AACjC,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;;;ACb3B,SAASC,mBAAmB;AAQrB,IAAMC,kBAAN,cAA8BC,YAAAA;EACnCC,cAAc;AACZ,UAAM;MACJC;IACF,CAAA;EACF;AACF;;;ADQO,IAAMC,+BACX,CAACC,kBACD,MACE,IAAIC,eAAe;EACjBC,eAAe,IAAIC,oBAAoBH,aAAAA;EACvCI,kBAAkBC;AACpB,CAAA;AAEG,IAAMC,kCACX,CAACC,cACD,MACE,IAAIN,eAAe;EACjBC,eAAe,IAAIM,uBAAuB;IAAC;MAAEC,QAAQF;IAAU;GAAE;EACjEH,kBAAkBM,iCAAAA;AACpB,CAAA;AAUG,IAAMC,mBAAN,MAAMA;EAKXC,YAAY,EAAEC,SAASC,uBAAsB,IAA8B,CAAC,GAAG;AAJ9DC,mBAAU,IAAIC,WAAiCC,UAAUC,IAAI;AAK5E,SAAKC,WAAWN,WAAWO,cAAc;MAAEC,MAAMC,YAAYC;IAAI,CAAA;AACjE,SAAKC,0BACHV,0BAA0Bf,6BAA6B,IAAI0B,2BAAAA,CAAAA;EAC/D;EAEA,MAAMC,QAAQ;AACZ,WAAOC,QAAQC,IAAI,KAAKC,OAAOC,IAAI,CAACC,UAAUA,MAAML,MAAK,CAAA,CAAA;EAC3D;EAEA,IAAIG,SAAS;AACX,WAAOG,MAAMC,KAAK,KAAKlB,QAAQmB,OAAM,CAAA;EACvC;EAEAC,SAASC,WAAsB;AAC7B,WAAO,KAAKrB,QAAQsB,IAAID,SAAAA;EAC1B;EAEA,MAAME,aAAiC;AAErC,UAAMC,cAAc,IAAIC,gBAAAA,EACrBC,WAAW,KAAKtB,UAAU,SAAS,KAAKJ,QAAQ2B,IAAI,EAAE;AAEzD,UAAMC,cAAc,MAAMJ,YAAYK,QAAQC,UAAS;AACvD,UAAMT,YAAY,MAAMG,YAAYK,QAAQC,UAAS;AAErD,UAAMd,QAAQ,IAAIe,UAAU,KAAKtB,yBAAyBe,aAAaI,aAAaP,SAAAA;AACpF,SAAKrB,QAAQgC,IAAIX,WAAWL,KAAAA;AAC5B,WAAOA;EACT;AACF;AAKO,IAAMe,YAAN,MAAMA;EAQX,IAAIE,gBAAgB;AAClB,WAAQ,KAAKC,mBAAmB,IAAIC,cAAc,KAAKrC,QAAQsC,gBAAgB,UAAA,CAAA;EACjF;EAGA,IAAIC,gBAAgB;AAClB,WAAQ,KAAKC,mBAAmB,IAAIC,cAAc,KAAKzC,QAAQsC,gBAAgB,WAAA,CAAA;EACjF;EAGA,IAAII,YAAY;AACd,WAAQ,KAAKC,eAAe,IAAIC,UAAU,KAAK5C,QAAQsC,gBAAgB,OAAA,CAAA;EACzE;EAEAvC,YACmBY,yBACAkC,cACDf,aACAP,WAChB;SAJiBZ,0BAAAA;SACAkC,eAAAA;SACDf,cAAAA;SACAP,YAAAA;SAzBDuB,UAAU,IAAI3C,WAA6BC,UAAUC,IAAI;AA2BxE,SAAKL,UAAU,KAAK6C,aAAa7C;AACjC,SAAK+B,UAAU,KAAKc,aAAad;AACjC,SAAKgB,YAAY,KAAKF,aAAaG,gBAAe;EACpD;EAEA,MAAMnC,QAAQ;AACZ,WAAOC,QAAQC,IAAI;SAAI,KAAKkC,OAAOhC,IAAI,CAACiC,UAAUA,MAAMrC,MAAK,CAAA;KAAI;EACnE;EAEA,IAAIoC,SAAS;AACX,WAAO9B,MAAMC,KAAK,KAAK0B,QAAQzB,OAAM,CAAA;EACvC;EAEA8B,SAASC,UAAqB;AAC5B,WAAO,KAAKN,QAAQtB,IAAI4B,QAAAA;EAC1B;EAGA,IAAIC,eAAe;AACjB,WAAQ,KAAKC,kBAAkB,IAAIC,aAAa;MAC9CR,WAAW,KAAKA;MAChBS,gBAAgB,KAAK7C,wBAAuB;MAC5CwB,eAAe,KAAKA;MACpBI,eAAe,KAAKA;MACpBG,WAAW,KAAKA;IAClB,CAAA;EACF;EAEA,MAAMe,YACJ3B,cAAyB,KAAKA,aAC9BsB,UACAM,YACAC,SACAC,eAAe,OACC;AAChB,QAAI,CAACR,UAAU;AACbQ,qBAAe;AACfR,iBAAW,MAAM,KAAKrB,QAAQC,UAAS;IACzC;AACA,QAAI,CAAC0B,YAAY;AACfA,mBAAa,MAAM,KAAK3B,QAAQC,UAAS;IAC3C;AAEA,UAAM6B,cAAc,MAAM,KAAKd,UAAUe,SAASJ,YAAY;MAAEK,UAAU;IAAK,CAAA;AAC/E,UAAMC,WAAW,MAAM,KAAKjB,UAAUe,SAASH,WAAY,MAAM,KAAK5B,QAAQC,UAAS,GAAK;MAC1F+B,UAAU;MACVE,QAAQ;IACV,CAAA;AAEA,UAAMC,WAA0B;MAC9BC,KAAKf;MACLgB,gBAAgBV;MAChBW,gBAAgBR,YAAYM;MAC5BG,aAAaN,SAASG;IACxB;AACA,QAAIP,cAAc;AAChB,YAAM,KAAKzB,cAAcoC,SAASL,QAAAA;IACpC;AAEA,UAAM,KAAKb,aAAamB,KAAI;AAC5B,UAAMtB,QAAQ,MAAM,KAAKG,aAAaoB,eAAe;MACnDP;MACAQ,eAAe;QACbC,SAAS,KAAKpD;QACdqD,oBAAoBC;QACpBC,yBAAyBC;MAC3B;MACAC,WAAWlD;MACXmD,wBAAwB,CAACC,YAAAA;AACvBA,gBAAQC,aACN,6BACA,KAAKC,aAAY,EAAGC,gBAAgB;UAAEC,cAAcJ,QAAQI;QAAa,CAAA,CAAA;MAE7E;MACAC,mCAAmC,YAAA;MAAa;IAClD,CAAA;AACA,UAAMrC,MAAMsC,eAAe3B,WAAAA;AAC3B,UAAMX,MAAMuC,YAAYzB,QAAAA;AAExB,UAAMd,MAAMsB,KAAK,IAAIkB,QAAAA,CAAAA;AAErB,SAAK5C,QAAQZ,IAAIkB,UAAUF,KAAAA;AAC3B,WAAOA;EACT;EAEAyC,oBAAoBC,OAAkBC,QAAiB;AACrD,WAAO,IAAIC,cAAc;MACvBF;MACAlB,eAAe;QACbC,SAAS,KAAKpD;QACdqD,oBAAoBC;QACpBC,yBAAyBC;MAC3B;MACAvB,gBAAgB,KAAK7C,wBAAuB;MAC5C+B,WAAW,KAAKA;MAChBqD,eAAe,CAACb,YAAAA;AACdA,gBAAQC,aACN,8BACCU,UAAU,KAAKT,aAAY,GAAIC,gBAAgB;UAAEC,cAAcJ,QAAQI;QAAa,CAAA,CAAA;MAEzF;IACF,CAAA;EACF;EAEAF,eAAe;AACb,WAAO,IAAIY,OAAO;MAChBC,aAAa,KAAK1E;IACpB,CAAA;EACF;EAEA2E,eAAeL,QAAiB;AAC9B,WAAO,IAAIM,SAAS;MAClBC,kBAAkB;MAClBC,gBAAgB;MAChBvE,aAAa,KAAKA;MAClB+D,QAAQA,UAAU,KAAKT,aAAY;IACrC,CAAA;EACF;EAEA,MAAMkB,aAAapD,OAAc;AAC/B,UAAMqD,YAAY,IAAIC,oBAAoB,KAAKzE,SAAS,KAAKD,aAAa,KAAKP,SAAS;AACxF,UAAMkF,cAAc;SACd,MAAMF,UAAUG,mBAAmBxD,MAAMiB,KAAKjB,MAAMmB,cAAc;MACtE,MAAMkC,UAAUI,oBAAoBzD,MAAMiB,KAAKjB,MAAMoB,aAAcsC,aAAaC,YAAYC,IAAI;MAChG,MAAMP,UAAUQ,sBAAsB7D,MAAMiB,GAAG;;AAGjD,eAAW6C,cAAcP,aAAa;AACpC,YAAMvD,MAAM+D,gBAAgBC,OAAOC,MAAM;QACvCH,YAAY;UAAEA;QAAW;MAC3B,CAAA;IACF;EACF;AACF;;;AEvPA,SAASI,aAAa;AAEtB,SAASC,aAAAA,kBAAiB;AAInB,IAAMC,kBAAkB,MAAe,IAAIC,MAAsB,aAAaC,WAAUC,OAAM,EAAGC,MAAK,CAAA,EAAI;",
|
|
6
|
+
"names": ["log", "schema", "EchoMetadata", "schema", "getCodecForType", "changeStorageVersionInMetadata", "storage", "version", "log", "info", "metadata", "MetadataStore", "createDirectory", "load", "echoMetadata", "file", "_directory", "getOrCreateFile", "_writeFile", "flush", "Context", "CredentialGenerator", "PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "MemoryTransportFactory", "NetworkManager", "createSimplePeerTransportFactory", "AdmittedFeed", "StorageType", "createStorage", "Gossip", "Presence", "BlobStore", "ComplexMap", "TestBuilder", "TestFeedBuilder", "TestBuilder", "constructor", "valueEncoding", "MemoryNetworkManagerProvider", "signalContext", "NetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "WebsocketNetworkManagerProvider", "signalUrl", "WebsocketSignalManager", "server", "createSimplePeerTransportFactory", "TestAgentBuilder", "constructor", "storage", "networkManagerProvider", "_agents", "ComplexMap", "PublicKey", "hash", "_storage", "createStorage", "type", "StorageType", "RAM", "_networkManagerProvider", "MemorySignalManagerContext", "close", "Promise", "all", "agents", "map", "agent", "Array", "from", "values", "getAgent", "deviceKey", "get", "createPeer", "feedBuilder", "TestFeedBuilder", "setStorage", "size", "identityKey", "keyring", "createKey", "TestAgent", "set", "metadataStore", "_metadataStore", "MetadataStore", "createDirectory", "snapshotStore", "_snapshotStore", "SnapshotStore", "blobStore", "_blobStore", "BlobStore", "_feedBuilder", "_spaces", "feedStore", "createFeedStore", "spaces", "space", "getSpace", "spaceKey", "spaceManager", "_spaceManager", "SpaceManager", "networkManager", "createSpace", "genesisKey", "dataKey", "saveMetadata", "controlFeed", "openFeed", "writable", "dataFeed", "sparse", "metadata", "key", "genesisFeedKey", "controlFeedKey", "dataFeedKey", "addSpace", "open", "constructSpace", "swarmIdentity", "peerKey", "credentialProvider", "MOCK_AUTH_PROVIDER", "credentialAuthenticator", "MOCK_AUTH_VERIFIER", "memberKey", "onAuthorizedConnection", "session", "addExtension", "createGossip", "createExtension", "remotePeerId", "onDelegatedInvitationStatusChange", "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", "Level", "PublicKey", "createTestLevel", "Level", "PublicKey", "random", "toHex"]
|
|
7
7
|
}
|
|
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_YZA42CKA_exports = {};
|
|
30
|
+
__export(chunk_YZA42CKA_exports, {
|
|
31
31
|
AuthExtension: () => AuthExtension,
|
|
32
32
|
AuthStatus: () => AuthStatus,
|
|
33
33
|
DataServiceImpl: () => DataServiceImpl,
|
|
@@ -44,12 +44,13 @@ __export(chunk_KGIYLJBT_exports, {
|
|
|
44
44
|
TimeframeClock: () => TimeframeClock,
|
|
45
45
|
codec: () => codec,
|
|
46
46
|
createMappedFeedWriter: () => createMappedFeedWriter,
|
|
47
|
+
hasInvitationExpired: () => hasInvitationExpired,
|
|
47
48
|
mapFeedIndexesToTimeframe: () => mapFeedIndexesToTimeframe,
|
|
48
49
|
mapTimeframeToFeedIndexes: () => mapTimeframeToFeedIndexes,
|
|
49
50
|
startAfter: () => startAfter,
|
|
50
51
|
valueEncoding: () => valueEncoding
|
|
51
52
|
});
|
|
52
|
-
module.exports = __toCommonJS(
|
|
53
|
+
module.exports = __toCommonJS(chunk_YZA42CKA_exports);
|
|
53
54
|
var import_hypercore = require("@dxos/hypercore");
|
|
54
55
|
var import_protocols = require("@dxos/protocols");
|
|
55
56
|
var import_invariant = require("@dxos/invariant");
|
|
@@ -392,8 +393,8 @@ var MetadataStore = class {
|
|
|
392
393
|
}
|
|
393
394
|
});
|
|
394
395
|
(0, import_async.scheduleTaskInterval)(this._invitationCleanupCtx, async () => {
|
|
395
|
-
for (const invitation of this.
|
|
396
|
-
if (invitation
|
|
396
|
+
for (const invitation of this._metadata.invitations ?? []) {
|
|
397
|
+
if (hasInvitationExpired(invitation) || isLegacyInvitationFormat(invitation)) {
|
|
397
398
|
await this.removeInvitation(invitation.invitationId);
|
|
398
399
|
}
|
|
399
400
|
}
|
|
@@ -422,7 +423,7 @@ var MetadataStore = class {
|
|
|
422
423
|
err
|
|
423
424
|
}, {
|
|
424
425
|
F: __dxlog_file2,
|
|
425
|
-
L:
|
|
426
|
+
L: 210,
|
|
426
427
|
S: this,
|
|
427
428
|
C: (f, a) => f(...a)
|
|
428
429
|
});
|
|
@@ -443,7 +444,7 @@ var MetadataStore = class {
|
|
|
443
444
|
const space = this.spaces.find((space2) => space2.key === spaceKey);
|
|
444
445
|
(0, import_invariant2.invariant)(space, "Space not found", {
|
|
445
446
|
F: __dxlog_file2,
|
|
446
|
-
L:
|
|
447
|
+
L: 232,
|
|
447
448
|
S: this,
|
|
448
449
|
A: [
|
|
449
450
|
"space",
|
|
@@ -467,7 +468,7 @@ var MetadataStore = class {
|
|
|
467
468
|
async clear() {
|
|
468
469
|
(0, import_log.log)("clearing all metadata", void 0, {
|
|
469
470
|
F: __dxlog_file2,
|
|
470
|
-
L:
|
|
471
|
+
L: 251,
|
|
471
472
|
S: this,
|
|
472
473
|
C: (f, a) => f(...a)
|
|
473
474
|
});
|
|
@@ -480,7 +481,7 @@ var MetadataStore = class {
|
|
|
480
481
|
async setIdentityRecord(record) {
|
|
481
482
|
(0, import_invariant2.invariant)(!this._metadata.identity, "Cannot overwrite existing identity in metadata", {
|
|
482
483
|
F: __dxlog_file2,
|
|
483
|
-
L:
|
|
484
|
+
L: 261,
|
|
484
485
|
S: this,
|
|
485
486
|
A: [
|
|
486
487
|
"!this._metadata.identity",
|
|
@@ -510,7 +511,7 @@ var MetadataStore = class {
|
|
|
510
511
|
async addSpace(record) {
|
|
511
512
|
(0, import_invariant2.invariant)(!(this._metadata.spaces ?? []).find((space) => space.key === record.key), "Cannot overwrite existing space in metadata", {
|
|
512
513
|
F: __dxlog_file2,
|
|
513
|
-
L:
|
|
514
|
+
L: 289,
|
|
514
515
|
S: this,
|
|
515
516
|
A: [
|
|
516
517
|
"!(this._metadata.spaces ?? []).find((space) => space.key === record.key)",
|
|
@@ -565,6 +566,12 @@ _ts_decorate([
|
|
|
565
566
|
import_async.synchronized
|
|
566
567
|
], MetadataStore.prototype, "_saveSpaceLargeMetadata", null);
|
|
567
568
|
var fromBytesInt32 = (buf) => buf.readInt32LE(0);
|
|
569
|
+
var hasInvitationExpired = (invitation) => {
|
|
570
|
+
return Boolean(invitation.created && invitation.lifetime && invitation.lifetime !== 0 && invitation.created.getTime() + invitation.lifetime * 1e3 < Date.now());
|
|
571
|
+
};
|
|
572
|
+
var isLegacyInvitationFormat = (invitation) => {
|
|
573
|
+
return invitation.type === import_services.Invitation.Type.MULTIUSE;
|
|
574
|
+
};
|
|
568
575
|
function _ts_decorate2(decorators, target, key, desc) {
|
|
569
576
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
570
577
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
@@ -1225,7 +1232,7 @@ var ControlPipeline = class {
|
|
|
1225
1232
|
key: info.key
|
|
1226
1233
|
}, {
|
|
1227
1234
|
F: __dxlog_file7,
|
|
1228
|
-
L:
|
|
1235
|
+
L: 82,
|
|
1229
1236
|
S: this,
|
|
1230
1237
|
C: (f, a) => f(...a)
|
|
1231
1238
|
});
|
|
@@ -1239,7 +1246,7 @@ var ControlPipeline = class {
|
|
|
1239
1246
|
} catch (err) {
|
|
1240
1247
|
import_log7.log.catch(err, void 0, {
|
|
1241
1248
|
F: __dxlog_file7,
|
|
1242
|
-
L:
|
|
1249
|
+
L: 93,
|
|
1243
1250
|
S: this,
|
|
1244
1251
|
C: (f, a) => f(...a)
|
|
1245
1252
|
});
|
|
@@ -1250,6 +1257,8 @@ var ControlPipeline = class {
|
|
|
1250
1257
|
});
|
|
1251
1258
|
this.onMemberAdmitted = this._spaceStateMachine.onMemberAdmitted;
|
|
1252
1259
|
this.onCredentialProcessed = this._spaceStateMachine.onCredentialProcessed;
|
|
1260
|
+
this.onDelegatedInvitation = this._spaceStateMachine.onDelegatedInvitation;
|
|
1261
|
+
this.onDelegatedInvitationRemoved = this._spaceStateMachine.onDelegatedInvitationRemoved;
|
|
1253
1262
|
}
|
|
1254
1263
|
get spaceState() {
|
|
1255
1264
|
return this._spaceStateMachine;
|
|
@@ -1269,7 +1278,7 @@ var ControlPipeline = class {
|
|
|
1269
1278
|
tf: snapshot?.timeframe
|
|
1270
1279
|
}, {
|
|
1271
1280
|
F: __dxlog_file7,
|
|
1272
|
-
L:
|
|
1281
|
+
L: 123,
|
|
1273
1282
|
S: this,
|
|
1274
1283
|
C: (f, a) => f(...a)
|
|
1275
1284
|
});
|
|
@@ -1278,7 +1287,7 @@ var ControlPipeline = class {
|
|
|
1278
1287
|
}
|
|
1279
1288
|
(0, import_log7.log)("starting...", void 0, {
|
|
1280
1289
|
F: __dxlog_file7,
|
|
1281
|
-
L:
|
|
1290
|
+
L: 128,
|
|
1282
1291
|
S: this,
|
|
1283
1292
|
C: (f, a) => f(...a)
|
|
1284
1293
|
});
|
|
@@ -1288,7 +1297,7 @@ var ControlPipeline = class {
|
|
|
1288
1297
|
await this._pipeline.start();
|
|
1289
1298
|
(0, import_log7.log)("started", void 0, {
|
|
1290
1299
|
F: __dxlog_file7,
|
|
1291
|
-
L:
|
|
1300
|
+
L: 134,
|
|
1292
1301
|
S: this,
|
|
1293
1302
|
C: (f, a) => f(...a)
|
|
1294
1303
|
});
|
|
@@ -1305,7 +1314,7 @@ var ControlPipeline = class {
|
|
|
1305
1314
|
message
|
|
1306
1315
|
}, {
|
|
1307
1316
|
F: __dxlog_file7,
|
|
1308
|
-
L:
|
|
1317
|
+
L: 147,
|
|
1309
1318
|
S: this,
|
|
1310
1319
|
C: (f, a) => f(...a)
|
|
1311
1320
|
});
|
|
@@ -1327,7 +1336,7 @@ var ControlPipeline = class {
|
|
|
1327
1336
|
snapshot
|
|
1328
1337
|
}, {
|
|
1329
1338
|
F: __dxlog_file7,
|
|
1330
|
-
L:
|
|
1339
|
+
L: 163,
|
|
1331
1340
|
S: this,
|
|
1332
1341
|
C: (f, a) => f(...a)
|
|
1333
1342
|
});
|
|
@@ -1342,7 +1351,7 @@ var ControlPipeline = class {
|
|
|
1342
1351
|
} catch (err) {
|
|
1343
1352
|
import_log7.log.catch(err, void 0, {
|
|
1344
1353
|
F: __dxlog_file7,
|
|
1345
|
-
L:
|
|
1354
|
+
L: 176,
|
|
1346
1355
|
S: this,
|
|
1347
1356
|
C: (f, a) => f(...a)
|
|
1348
1357
|
});
|
|
@@ -1356,7 +1365,7 @@ var ControlPipeline = class {
|
|
|
1356
1365
|
seq: msg.seq
|
|
1357
1366
|
}, {
|
|
1358
1367
|
F: __dxlog_file7,
|
|
1359
|
-
L:
|
|
1368
|
+
L: 186,
|
|
1360
1369
|
S: this,
|
|
1361
1370
|
C: (f, a) => f(...a)
|
|
1362
1371
|
});
|
|
@@ -1371,7 +1380,7 @@ var ControlPipeline = class {
|
|
|
1371
1380
|
msg
|
|
1372
1381
|
}, {
|
|
1373
1382
|
F: __dxlog_file7,
|
|
1374
|
-
L:
|
|
1383
|
+
L: 195,
|
|
1375
1384
|
S: this,
|
|
1376
1385
|
C: (f, a) => f(...a)
|
|
1377
1386
|
});
|
|
@@ -1390,7 +1399,7 @@ var ControlPipeline = class {
|
|
|
1390
1399
|
async stop() {
|
|
1391
1400
|
(0, import_log7.log)("stopping...", void 0, {
|
|
1392
1401
|
F: __dxlog_file7,
|
|
1393
|
-
L:
|
|
1402
|
+
L: 215,
|
|
1394
1403
|
S: this,
|
|
1395
1404
|
C: (f, a) => f(...a)
|
|
1396
1405
|
});
|
|
@@ -1399,7 +1408,7 @@ var ControlPipeline = class {
|
|
|
1399
1408
|
await this._saveTargetTimeframe(this._pipeline.state.timeframe);
|
|
1400
1409
|
(0, import_log7.log)("stopped", void 0, {
|
|
1401
1410
|
F: __dxlog_file7,
|
|
1402
|
-
L:
|
|
1411
|
+
L: 219,
|
|
1403
1412
|
S: this,
|
|
1404
1413
|
C: (f, a) => f(...a)
|
|
1405
1414
|
});
|
|
@@ -1412,7 +1421,7 @@ var ControlPipeline = class {
|
|
|
1412
1421
|
} catch (err) {
|
|
1413
1422
|
(0, import_log7.log)(err, void 0, {
|
|
1414
1423
|
F: __dxlog_file7,
|
|
1415
|
-
L:
|
|
1424
|
+
L: 228,
|
|
1416
1425
|
S: this,
|
|
1417
1426
|
C: (f, a) => f(...a)
|
|
1418
1427
|
});
|
|
@@ -1459,7 +1468,7 @@ var Space = class extends import_context5.Resource {
|
|
|
1459
1468
|
this.stateUpdate = new import_async5.Event();
|
|
1460
1469
|
(0, import_invariant6.invariant)(params.spaceKey && params.feedProvider, void 0, {
|
|
1461
1470
|
F: __dxlog_file8,
|
|
1462
|
-
L:
|
|
1471
|
+
L: 74,
|
|
1463
1472
|
S: this,
|
|
1464
1473
|
A: [
|
|
1465
1474
|
"params.spaceKey && params.feedProvider",
|
|
@@ -1492,12 +1501,34 @@ var Space = class extends import_context5.Resource {
|
|
|
1492
1501
|
credential
|
|
1493
1502
|
}, {
|
|
1494
1503
|
F: __dxlog_file8,
|
|
1495
|
-
L:
|
|
1504
|
+
L: 101,
|
|
1496
1505
|
S: this,
|
|
1497
1506
|
C: (f, a) => f(...a)
|
|
1498
1507
|
});
|
|
1499
1508
|
this.stateUpdate.emit();
|
|
1500
1509
|
});
|
|
1510
|
+
this._controlPipeline.onDelegatedInvitation.set(async (invitation) => {
|
|
1511
|
+
(0, import_log6.log)("onDelegatedInvitation", {
|
|
1512
|
+
invitation
|
|
1513
|
+
}, {
|
|
1514
|
+
F: __dxlog_file8,
|
|
1515
|
+
L: 105,
|
|
1516
|
+
S: this,
|
|
1517
|
+
C: (f, a) => f(...a)
|
|
1518
|
+
});
|
|
1519
|
+
await params.onDelegatedInvitationStatusChange(invitation, true);
|
|
1520
|
+
});
|
|
1521
|
+
this._controlPipeline.onDelegatedInvitationRemoved.set(async (invitation) => {
|
|
1522
|
+
(0, import_log6.log)("onDelegatedInvitationRemoved", {
|
|
1523
|
+
invitation
|
|
1524
|
+
}, {
|
|
1525
|
+
F: __dxlog_file8,
|
|
1526
|
+
L: 109,
|
|
1527
|
+
S: this,
|
|
1528
|
+
C: (f, a) => f(...a)
|
|
1529
|
+
});
|
|
1530
|
+
await params.onDelegatedInvitationStatusChange(invitation, false);
|
|
1531
|
+
});
|
|
1501
1532
|
this.protocol = params.protocol;
|
|
1502
1533
|
this.protocol.addFeed(params.genesisFeed);
|
|
1503
1534
|
}
|
|
@@ -1531,7 +1562,7 @@ var Space = class extends import_context5.Resource {
|
|
|
1531
1562
|
async setControlFeed(feed) {
|
|
1532
1563
|
(0, import_invariant6.invariant)(!this._controlFeed, "Control feed already set.", {
|
|
1533
1564
|
F: __dxlog_file8,
|
|
1534
|
-
L:
|
|
1565
|
+
L: 156,
|
|
1535
1566
|
S: this,
|
|
1536
1567
|
A: [
|
|
1537
1568
|
"!this._controlFeed",
|
|
@@ -1545,7 +1576,7 @@ var Space = class extends import_context5.Resource {
|
|
|
1545
1576
|
async setDataFeed(feed) {
|
|
1546
1577
|
(0, import_invariant6.invariant)(!this._dataFeed, "Data feed already set.", {
|
|
1547
1578
|
F: __dxlog_file8,
|
|
1548
|
-
L:
|
|
1579
|
+
L: 163,
|
|
1549
1580
|
S: this,
|
|
1550
1581
|
A: [
|
|
1551
1582
|
"!this._dataFeed",
|
|
@@ -1564,7 +1595,7 @@ var Space = class extends import_context5.Resource {
|
|
|
1564
1595
|
async _open(ctx) {
|
|
1565
1596
|
(0, import_log6.log)("opening...", void 0, {
|
|
1566
1597
|
F: __dxlog_file8,
|
|
1567
|
-
L:
|
|
1598
|
+
L: 177,
|
|
1568
1599
|
S: this,
|
|
1569
1600
|
C: (f, a) => f(...a)
|
|
1570
1601
|
});
|
|
@@ -1572,7 +1603,7 @@ var Space = class extends import_context5.Resource {
|
|
|
1572
1603
|
await this.protocol.start();
|
|
1573
1604
|
(0, import_log6.log)("opened", void 0, {
|
|
1574
1605
|
F: __dxlog_file8,
|
|
1575
|
-
L:
|
|
1606
|
+
L: 183,
|
|
1576
1607
|
S: this,
|
|
1577
1608
|
C: (f, a) => f(...a)
|
|
1578
1609
|
});
|
|
@@ -1582,7 +1613,7 @@ var Space = class extends import_context5.Resource {
|
|
|
1582
1613
|
key: this._key
|
|
1583
1614
|
}, {
|
|
1584
1615
|
F: __dxlog_file8,
|
|
1585
|
-
L:
|
|
1616
|
+
L: 188,
|
|
1586
1617
|
S: this,
|
|
1587
1618
|
C: (f, a) => f(...a)
|
|
1588
1619
|
});
|
|
@@ -1590,7 +1621,7 @@ var Space = class extends import_context5.Resource {
|
|
|
1590
1621
|
await this._controlPipeline.stop();
|
|
1591
1622
|
(0, import_log6.log)("closed", void 0, {
|
|
1592
1623
|
F: __dxlog_file8,
|
|
1593
|
-
L:
|
|
1624
|
+
L: 194,
|
|
1594
1625
|
S: this,
|
|
1595
1626
|
C: (f, a) => f(...a)
|
|
1596
1627
|
});
|
|
@@ -1851,12 +1882,12 @@ var SpaceManager = class {
|
|
|
1851
1882
|
...this._spaces.values()
|
|
1852
1883
|
].map((space) => space.close()));
|
|
1853
1884
|
}
|
|
1854
|
-
async constructSpace({ metadata, swarmIdentity, onAuthorizedConnection, onAuthFailure, memberKey }) {
|
|
1885
|
+
async constructSpace({ metadata, swarmIdentity, onAuthorizedConnection, onAuthFailure, onDelegatedInvitationStatusChange, memberKey }) {
|
|
1855
1886
|
import_log9.log.trace("dxos.echo.space-manager.construct-space", import_protocols6.trace.begin({
|
|
1856
1887
|
id: this._instanceId
|
|
1857
1888
|
}), {
|
|
1858
1889
|
F: __dxlog_file10,
|
|
1859
|
-
L:
|
|
1890
|
+
L: 92,
|
|
1860
1891
|
S: this,
|
|
1861
1892
|
C: (f, a) => f(...a)
|
|
1862
1893
|
});
|
|
@@ -1864,7 +1895,7 @@ var SpaceManager = class {
|
|
|
1864
1895
|
spaceKey: metadata.genesisFeedKey
|
|
1865
1896
|
}, {
|
|
1866
1897
|
F: __dxlog_file10,
|
|
1867
|
-
L:
|
|
1898
|
+
L: 93,
|
|
1868
1899
|
S: this,
|
|
1869
1900
|
C: (f, a) => f(...a)
|
|
1870
1901
|
});
|
|
@@ -1886,14 +1917,15 @@ var SpaceManager = class {
|
|
|
1886
1917
|
feedProvider: (feedKey, opts) => this._feedStore.openFeed(feedKey, opts),
|
|
1887
1918
|
metadataStore: this._metadataStore,
|
|
1888
1919
|
snapshotManager,
|
|
1889
|
-
memberKey
|
|
1920
|
+
memberKey,
|
|
1921
|
+
onDelegatedInvitationStatusChange
|
|
1890
1922
|
});
|
|
1891
1923
|
this._spaces.set(space.key, space);
|
|
1892
1924
|
import_log9.log.trace("dxos.echo.space-manager.construct-space", import_protocols6.trace.end({
|
|
1893
1925
|
id: this._instanceId
|
|
1894
1926
|
}), {
|
|
1895
1927
|
F: __dxlog_file10,
|
|
1896
|
-
L:
|
|
1928
|
+
L: 121,
|
|
1897
1929
|
S: this,
|
|
1898
1930
|
C: (f, a) => f(...a)
|
|
1899
1931
|
});
|
|
@@ -1927,9 +1959,10 @@ SpaceManager = _ts_decorate7([
|
|
|
1927
1959
|
TimeframeClock,
|
|
1928
1960
|
codec,
|
|
1929
1961
|
createMappedFeedWriter,
|
|
1962
|
+
hasInvitationExpired,
|
|
1930
1963
|
mapFeedIndexesToTimeframe,
|
|
1931
1964
|
mapTimeframeToFeedIndexes,
|
|
1932
1965
|
startAfter,
|
|
1933
1966
|
valueEncoding
|
|
1934
1967
|
});
|
|
1935
|
-
//# sourceMappingURL=chunk-
|
|
1968
|
+
//# sourceMappingURL=chunk-YZA42CKA.cjs.map
|