@dxos/echo-pipeline 0.4.10-main.3e35a2f → 0.4.10-main.3f5e2d2

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.
Files changed (58) hide show
  1. package/dist/lib/browser/{chunk-SYE4EK33.mjs → chunk-KMWJLYEQ.mjs} +52 -27
  2. package/dist/lib/browser/{chunk-SYE4EK33.mjs.map → chunk-KMWJLYEQ.mjs.map} +3 -3
  3. package/dist/lib/browser/index.mjs +192 -171
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +4 -2
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node/{chunk-WCTX6RNS.cjs → chunk-YZA42CKA.cjs} +55 -30
  9. package/dist/lib/node/chunk-YZA42CKA.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +221 -198
  11. package/dist/lib/node/index.cjs.map +3 -3
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/testing/index.cjs +14 -12
  14. package/dist/lib/node/testing/index.cjs.map +3 -3
  15. package/dist/types/src/automerge/automerge-doc-loader.d.ts.map +1 -1
  16. package/dist/types/src/automerge/automerge-host.d.ts +7 -14
  17. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
  18. package/dist/types/src/automerge/automerge-repo.test.d.ts +2 -0
  19. package/dist/types/src/automerge/automerge-repo.test.d.ts.map +1 -0
  20. package/dist/types/src/automerge/index.d.ts +1 -0
  21. package/dist/types/src/automerge/index.d.ts.map +1 -1
  22. package/dist/types/src/automerge/leveldb-storage-adapter.d.ts +11 -8
  23. package/dist/types/src/automerge/leveldb-storage-adapter.d.ts.map +1 -1
  24. package/dist/types/src/automerge/local-host-network-adapter.d.ts +8 -1
  25. package/dist/types/src/automerge/local-host-network-adapter.d.ts.map +1 -1
  26. package/dist/types/src/automerge/migrations.d.ts +2 -2
  27. package/dist/types/src/automerge/reference.d.ts +1 -1
  28. package/dist/types/src/automerge/reference.d.ts.map +1 -1
  29. package/dist/types/src/automerge/types.d.ts +4 -3
  30. package/dist/types/src/automerge/types.d.ts.map +1 -1
  31. package/dist/types/src/space/control-pipeline.d.ts +3 -1
  32. package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
  33. package/dist/types/src/space/space-manager.d.ts +3 -1
  34. package/dist/types/src/space/space-manager.d.ts.map +1 -1
  35. package/dist/types/src/space/space.d.ts +2 -1
  36. package/dist/types/src/space/space.d.ts.map +1 -1
  37. package/dist/types/src/testing/level.d.ts +2 -2
  38. package/dist/types/src/testing/level.d.ts.map +1 -1
  39. package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
  40. package/package.json +30 -30
  41. package/src/automerge/automerge-doc-loader.ts +3 -0
  42. package/src/automerge/automerge-host.test.ts +26 -17
  43. package/src/automerge/automerge-host.ts +59 -98
  44. package/src/automerge/automerge-repo.test.ts +61 -0
  45. package/src/automerge/index.ts +1 -0
  46. package/src/automerge/level.test.ts +41 -2
  47. package/src/automerge/leveldb-storage-adapter.ts +36 -24
  48. package/src/automerge/local-host-network-adapter.ts +19 -13
  49. package/src/automerge/migrations.ts +2 -2
  50. package/src/automerge/reference.ts +1 -1
  51. package/src/automerge/storage-adapter.test.ts +4 -4
  52. package/src/automerge/types.ts +4 -3
  53. package/src/space/control-pipeline.ts +11 -1
  54. package/src/space/space-manager.ts +4 -0
  55. package/src/space/space.ts +11 -1
  56. package/src/testing/level.ts +3 -2
  57. package/src/testing/test-agent-builder.ts +1 -0
  58. package/dist/lib/node/chunk-WCTX6RNS.cjs.map +0 -7
@@ -7,7 +7,7 @@ import {
7
7
  SpaceManager,
8
8
  SpaceProtocol,
9
9
  valueEncoding
10
- } from "../chunk-SYE4EK33.mjs";
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);
@@ -226,7 +228,7 @@ var TestAgent = class {
226
228
  // packages/core/echo/echo-pipeline/src/testing/level.ts
227
229
  import { Level } from "level";
228
230
  import { PublicKey as PublicKey2 } from "@dxos/keys";
229
- var createTestLevel = () => new Level(`/tmp/dxos-${PublicKey2.random().toHex()}`);
231
+ var createTestLevel = (path = `/tmp/dxos-${PublicKey2.random().toHex()}`) => new Level(path);
230
232
  export {
231
233
  MemoryNetworkManagerProvider,
232
234
  TestAgent,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/testing/change-metadata.ts", "../../../../src/testing/test-agent-builder.ts", "../../../../src/testing/test-feed-builder.ts", "../../../../src/testing/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": ";;;;;;;;;;;;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;IACF,CAAA;AACA,UAAMpC,MAAMqC,eAAe1B,WAAAA;AAC3B,UAAMX,MAAMsC,YAAYxB,QAAAA;AAExB,UAAMd,MAAMsB,KAAK,IAAIiB,QAAAA,CAAAA;AAErB,SAAK3C,QAAQZ,IAAIkB,UAAUF,KAAAA;AAC3B,WAAOA;EACT;EAEAwC,oBAAoBC,OAAkBC,QAAiB;AACrD,WAAO,IAAIC,cAAc;MACvBF;MACAjB,eAAe;QACbC,SAAS,KAAKpD;QACdqD,oBAAoBC;QACpBC,yBAAyBC;MAC3B;MACAvB,gBAAgB,KAAK7C,wBAAuB;MAC5C+B,WAAW,KAAKA;MAChBoD,eAAe,CAACZ,YAAAA;AACdA,gBAAQC,aACN,8BACCS,UAAU,KAAKR,aAAY,GAAIC,gBAAgB;UAAEC,cAAcJ,QAAQI;QAAa,CAAA,CAAA;MAEzF;IACF,CAAA;EACF;EAEAF,eAAe;AACb,WAAO,IAAIW,OAAO;MAChBC,aAAa,KAAKzE;IACpB,CAAA;EACF;EAEA0E,eAAeL,QAAiB;AAC9B,WAAO,IAAIM,SAAS;MAClBC,kBAAkB;MAClBC,gBAAgB;MAChBtE,aAAa,KAAKA;MAClB8D,QAAQA,UAAU,KAAKR,aAAY;IACrC,CAAA;EACF;EAEA,MAAMiB,aAAanD,OAAc;AAC/B,UAAMoD,YAAY,IAAIC,oBAAoB,KAAKxE,SAAS,KAAKD,aAAa,KAAKP,SAAS;AACxF,UAAMiF,cAAc;SACd,MAAMF,UAAUG,mBAAmBvD,MAAMiB,KAAKjB,MAAMmB,cAAc;MACtE,MAAMiC,UAAUI,oBAAoBxD,MAAMiB,KAAKjB,MAAMoB,aAAcqC,aAAaC,YAAYC,IAAI;MAChG,MAAMP,UAAUQ,sBAAsB5D,MAAMiB,GAAG;;AAGjD,eAAW4C,cAAcP,aAAa;AACpC,YAAMtD,MAAM8D,gBAAgBC,OAAOC,MAAM;QACvCH,YAAY;UAAEA;QAAW;MAC3B,CAAA;IACF;EACF;AACF;;;AEtPA,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", "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"]
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 = (path = `/tmp/dxos-${PublicKey.random().toHex()}`): LevelDB =>\n new Level<string, string>(path);\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", "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", "path", "PublicKey", "random", "toHex", "Level"]
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 chunk_WCTX6RNS_exports = {};
30
- __export(chunk_WCTX6RNS_exports, {
29
+ var chunk_YZA42CKA_exports = {};
30
+ __export(chunk_YZA42CKA_exports, {
31
31
  AuthExtension: () => AuthExtension,
32
32
  AuthStatus: () => AuthStatus,
33
33
  DataServiceImpl: () => DataServiceImpl,
@@ -50,7 +50,7 @@ __export(chunk_WCTX6RNS_exports, {
50
50
  startAfter: () => startAfter,
51
51
  valueEncoding: () => valueEncoding
52
52
  });
53
- module.exports = __toCommonJS(chunk_WCTX6RNS_exports);
53
+ module.exports = __toCommonJS(chunk_YZA42CKA_exports);
54
54
  var import_hypercore = require("@dxos/hypercore");
55
55
  var import_protocols = require("@dxos/protocols");
56
56
  var import_invariant = require("@dxos/invariant");
@@ -1232,7 +1232,7 @@ var ControlPipeline = class {
1232
1232
  key: info.key
1233
1233
  }, {
1234
1234
  F: __dxlog_file7,
1235
- L: 74,
1235
+ L: 82,
1236
1236
  S: this,
1237
1237
  C: (f, a) => f(...a)
1238
1238
  });
@@ -1246,7 +1246,7 @@ var ControlPipeline = class {
1246
1246
  } catch (err) {
1247
1247
  import_log7.log.catch(err, void 0, {
1248
1248
  F: __dxlog_file7,
1249
- L: 85,
1249
+ L: 93,
1250
1250
  S: this,
1251
1251
  C: (f, a) => f(...a)
1252
1252
  });
@@ -1257,6 +1257,8 @@ var ControlPipeline = class {
1257
1257
  });
1258
1258
  this.onMemberAdmitted = this._spaceStateMachine.onMemberAdmitted;
1259
1259
  this.onCredentialProcessed = this._spaceStateMachine.onCredentialProcessed;
1260
+ this.onDelegatedInvitation = this._spaceStateMachine.onDelegatedInvitation;
1261
+ this.onDelegatedInvitationRemoved = this._spaceStateMachine.onDelegatedInvitationRemoved;
1260
1262
  }
1261
1263
  get spaceState() {
1262
1264
  return this._spaceStateMachine;
@@ -1276,7 +1278,7 @@ var ControlPipeline = class {
1276
1278
  tf: snapshot?.timeframe
1277
1279
  }, {
1278
1280
  F: __dxlog_file7,
1279
- L: 113,
1281
+ L: 123,
1280
1282
  S: this,
1281
1283
  C: (f, a) => f(...a)
1282
1284
  });
@@ -1285,7 +1287,7 @@ var ControlPipeline = class {
1285
1287
  }
1286
1288
  (0, import_log7.log)("starting...", void 0, {
1287
1289
  F: __dxlog_file7,
1288
- L: 118,
1290
+ L: 128,
1289
1291
  S: this,
1290
1292
  C: (f, a) => f(...a)
1291
1293
  });
@@ -1295,7 +1297,7 @@ var ControlPipeline = class {
1295
1297
  await this._pipeline.start();
1296
1298
  (0, import_log7.log)("started", void 0, {
1297
1299
  F: __dxlog_file7,
1298
- L: 124,
1300
+ L: 134,
1299
1301
  S: this,
1300
1302
  C: (f, a) => f(...a)
1301
1303
  });
@@ -1312,7 +1314,7 @@ var ControlPipeline = class {
1312
1314
  message
1313
1315
  }, {
1314
1316
  F: __dxlog_file7,
1315
- L: 137,
1317
+ L: 147,
1316
1318
  S: this,
1317
1319
  C: (f, a) => f(...a)
1318
1320
  });
@@ -1334,7 +1336,7 @@ var ControlPipeline = class {
1334
1336
  snapshot
1335
1337
  }, {
1336
1338
  F: __dxlog_file7,
1337
- L: 153,
1339
+ L: 163,
1338
1340
  S: this,
1339
1341
  C: (f, a) => f(...a)
1340
1342
  });
@@ -1349,7 +1351,7 @@ var ControlPipeline = class {
1349
1351
  } catch (err) {
1350
1352
  import_log7.log.catch(err, void 0, {
1351
1353
  F: __dxlog_file7,
1352
- L: 166,
1354
+ L: 176,
1353
1355
  S: this,
1354
1356
  C: (f, a) => f(...a)
1355
1357
  });
@@ -1363,7 +1365,7 @@ var ControlPipeline = class {
1363
1365
  seq: msg.seq
1364
1366
  }, {
1365
1367
  F: __dxlog_file7,
1366
- L: 176,
1368
+ L: 186,
1367
1369
  S: this,
1368
1370
  C: (f, a) => f(...a)
1369
1371
  });
@@ -1378,7 +1380,7 @@ var ControlPipeline = class {
1378
1380
  msg
1379
1381
  }, {
1380
1382
  F: __dxlog_file7,
1381
- L: 185,
1383
+ L: 195,
1382
1384
  S: this,
1383
1385
  C: (f, a) => f(...a)
1384
1386
  });
@@ -1397,7 +1399,7 @@ var ControlPipeline = class {
1397
1399
  async stop() {
1398
1400
  (0, import_log7.log)("stopping...", void 0, {
1399
1401
  F: __dxlog_file7,
1400
- L: 205,
1402
+ L: 215,
1401
1403
  S: this,
1402
1404
  C: (f, a) => f(...a)
1403
1405
  });
@@ -1406,7 +1408,7 @@ var ControlPipeline = class {
1406
1408
  await this._saveTargetTimeframe(this._pipeline.state.timeframe);
1407
1409
  (0, import_log7.log)("stopped", void 0, {
1408
1410
  F: __dxlog_file7,
1409
- L: 209,
1411
+ L: 219,
1410
1412
  S: this,
1411
1413
  C: (f, a) => f(...a)
1412
1414
  });
@@ -1419,7 +1421,7 @@ var ControlPipeline = class {
1419
1421
  } catch (err) {
1420
1422
  (0, import_log7.log)(err, void 0, {
1421
1423
  F: __dxlog_file7,
1422
- L: 218,
1424
+ L: 228,
1423
1425
  S: this,
1424
1426
  C: (f, a) => f(...a)
1425
1427
  });
@@ -1466,7 +1468,7 @@ var Space = class extends import_context5.Resource {
1466
1468
  this.stateUpdate = new import_async5.Event();
1467
1469
  (0, import_invariant6.invariant)(params.spaceKey && params.feedProvider, void 0, {
1468
1470
  F: __dxlog_file8,
1469
- L: 72,
1471
+ L: 74,
1470
1472
  S: this,
1471
1473
  A: [
1472
1474
  "params.spaceKey && params.feedProvider",
@@ -1499,12 +1501,34 @@ var Space = class extends import_context5.Resource {
1499
1501
  credential
1500
1502
  }, {
1501
1503
  F: __dxlog_file8,
1502
- L: 99,
1504
+ L: 101,
1503
1505
  S: this,
1504
1506
  C: (f, a) => f(...a)
1505
1507
  });
1506
1508
  this.stateUpdate.emit();
1507
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
+ });
1508
1532
  this.protocol = params.protocol;
1509
1533
  this.protocol.addFeed(params.genesisFeed);
1510
1534
  }
@@ -1538,7 +1562,7 @@ var Space = class extends import_context5.Resource {
1538
1562
  async setControlFeed(feed) {
1539
1563
  (0, import_invariant6.invariant)(!this._controlFeed, "Control feed already set.", {
1540
1564
  F: __dxlog_file8,
1541
- L: 146,
1565
+ L: 156,
1542
1566
  S: this,
1543
1567
  A: [
1544
1568
  "!this._controlFeed",
@@ -1552,7 +1576,7 @@ var Space = class extends import_context5.Resource {
1552
1576
  async setDataFeed(feed) {
1553
1577
  (0, import_invariant6.invariant)(!this._dataFeed, "Data feed already set.", {
1554
1578
  F: __dxlog_file8,
1555
- L: 153,
1579
+ L: 163,
1556
1580
  S: this,
1557
1581
  A: [
1558
1582
  "!this._dataFeed",
@@ -1571,7 +1595,7 @@ var Space = class extends import_context5.Resource {
1571
1595
  async _open(ctx) {
1572
1596
  (0, import_log6.log)("opening...", void 0, {
1573
1597
  F: __dxlog_file8,
1574
- L: 167,
1598
+ L: 177,
1575
1599
  S: this,
1576
1600
  C: (f, a) => f(...a)
1577
1601
  });
@@ -1579,7 +1603,7 @@ var Space = class extends import_context5.Resource {
1579
1603
  await this.protocol.start();
1580
1604
  (0, import_log6.log)("opened", void 0, {
1581
1605
  F: __dxlog_file8,
1582
- L: 173,
1606
+ L: 183,
1583
1607
  S: this,
1584
1608
  C: (f, a) => f(...a)
1585
1609
  });
@@ -1589,7 +1613,7 @@ var Space = class extends import_context5.Resource {
1589
1613
  key: this._key
1590
1614
  }, {
1591
1615
  F: __dxlog_file8,
1592
- L: 178,
1616
+ L: 188,
1593
1617
  S: this,
1594
1618
  C: (f, a) => f(...a)
1595
1619
  });
@@ -1597,7 +1621,7 @@ var Space = class extends import_context5.Resource {
1597
1621
  await this._controlPipeline.stop();
1598
1622
  (0, import_log6.log)("closed", void 0, {
1599
1623
  F: __dxlog_file8,
1600
- L: 184,
1624
+ L: 194,
1601
1625
  S: this,
1602
1626
  C: (f, a) => f(...a)
1603
1627
  });
@@ -1858,12 +1882,12 @@ var SpaceManager = class {
1858
1882
  ...this._spaces.values()
1859
1883
  ].map((space) => space.close()));
1860
1884
  }
1861
- async constructSpace({ metadata, swarmIdentity, onAuthorizedConnection, onAuthFailure, memberKey }) {
1885
+ async constructSpace({ metadata, swarmIdentity, onAuthorizedConnection, onAuthFailure, onDelegatedInvitationStatusChange, memberKey }) {
1862
1886
  import_log9.log.trace("dxos.echo.space-manager.construct-space", import_protocols6.trace.begin({
1863
1887
  id: this._instanceId
1864
1888
  }), {
1865
1889
  F: __dxlog_file10,
1866
- L: 89,
1890
+ L: 92,
1867
1891
  S: this,
1868
1892
  C: (f, a) => f(...a)
1869
1893
  });
@@ -1871,7 +1895,7 @@ var SpaceManager = class {
1871
1895
  spaceKey: metadata.genesisFeedKey
1872
1896
  }, {
1873
1897
  F: __dxlog_file10,
1874
- L: 90,
1898
+ L: 93,
1875
1899
  S: this,
1876
1900
  C: (f, a) => f(...a)
1877
1901
  });
@@ -1893,14 +1917,15 @@ var SpaceManager = class {
1893
1917
  feedProvider: (feedKey, opts) => this._feedStore.openFeed(feedKey, opts),
1894
1918
  metadataStore: this._metadataStore,
1895
1919
  snapshotManager,
1896
- memberKey
1920
+ memberKey,
1921
+ onDelegatedInvitationStatusChange
1897
1922
  });
1898
1923
  this._spaces.set(space.key, space);
1899
1924
  import_log9.log.trace("dxos.echo.space-manager.construct-space", import_protocols6.trace.end({
1900
1925
  id: this._instanceId
1901
1926
  }), {
1902
1927
  F: __dxlog_file10,
1903
- L: 117,
1928
+ L: 121,
1904
1929
  S: this,
1905
1930
  C: (f, a) => f(...a)
1906
1931
  });
@@ -1940,4 +1965,4 @@ SpaceManager = _ts_decorate7([
1940
1965
  startAfter,
1941
1966
  valueEncoding
1942
1967
  });
1943
- //# sourceMappingURL=chunk-WCTX6RNS.cjs.map
1968
+ //# sourceMappingURL=chunk-YZA42CKA.cjs.map