@dxos/echo-pipeline 0.6.2 → 0.6.3-main.0308ae2

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 (66) hide show
  1. package/dist/lib/browser/{chunk-UJQ5VS5V.mjs → chunk-6MJEONOX.mjs} +2569 -1066
  2. package/dist/lib/browser/chunk-6MJEONOX.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +12 -1049
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +224 -2
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node/{chunk-RH6TDRML.cjs → chunk-PT5LWMPA.cjs} +3185 -1710
  9. package/dist/lib/node/chunk-PT5LWMPA.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +37 -1056
  11. package/dist/lib/node/index.cjs.map +4 -4
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/testing/index.cjs +238 -13
  14. package/dist/lib/node/testing/index.cjs.map +4 -4
  15. package/dist/types/src/automerge/automerge-host.d.ts +29 -2
  16. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
  17. package/dist/types/src/automerge/collection-synchronizer.d.ts +61 -0
  18. package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -0
  19. package/dist/types/src/automerge/collection-synchronizer.test.d.ts +2 -0
  20. package/dist/types/src/automerge/collection-synchronizer.test.d.ts.map +1 -0
  21. package/dist/types/src/automerge/echo-network-adapter.d.ts +9 -2
  22. package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
  23. package/dist/types/src/automerge/echo-replicator.d.ts +7 -0
  24. package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
  25. package/dist/types/src/automerge/heads-store.d.ts +1 -1
  26. package/dist/types/src/automerge/heads-store.d.ts.map +1 -1
  27. package/dist/types/src/automerge/index.d.ts +2 -0
  28. package/dist/types/src/automerge/index.d.ts.map +1 -1
  29. package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts +3 -1
  30. package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts.map +1 -1
  31. package/dist/types/src/automerge/mesh-echo-replicator.d.ts +2 -2
  32. package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
  33. package/dist/types/src/automerge/network-protocol.d.ts +31 -0
  34. package/dist/types/src/automerge/network-protocol.d.ts.map +1 -0
  35. package/dist/types/src/automerge/space-collection.d.ts +4 -0
  36. package/dist/types/src/automerge/space-collection.d.ts.map +1 -0
  37. package/dist/types/src/db-host/data-service.d.ts +2 -1
  38. package/dist/types/src/db-host/data-service.d.ts.map +1 -1
  39. package/dist/types/src/db-host/documents-synchronizer.d.ts +1 -1
  40. package/dist/types/src/db-host/documents-synchronizer.d.ts.map +1 -1
  41. package/dist/types/src/testing/index.d.ts +1 -0
  42. package/dist/types/src/testing/index.d.ts.map +1 -1
  43. package/dist/types/src/testing/test-replicator.d.ts +46 -0
  44. package/dist/types/src/testing/test-replicator.d.ts.map +1 -0
  45. package/package.json +33 -33
  46. package/src/automerge/automerge-host.test.ts +76 -14
  47. package/src/automerge/automerge-host.ts +219 -32
  48. package/src/automerge/automerge-repo.test.ts +2 -1
  49. package/src/automerge/collection-synchronizer.test.ts +91 -0
  50. package/src/automerge/collection-synchronizer.ts +204 -0
  51. package/src/automerge/echo-network-adapter.test.ts +5 -1
  52. package/src/automerge/echo-network-adapter.ts +69 -4
  53. package/src/automerge/echo-replicator.ts +9 -0
  54. package/src/automerge/heads-store.ts +6 -9
  55. package/src/automerge/index.ts +2 -0
  56. package/src/automerge/mesh-echo-replicator-connection.ts +6 -1
  57. package/src/automerge/mesh-echo-replicator.ts +28 -7
  58. package/src/automerge/network-protocol.ts +45 -0
  59. package/src/automerge/space-collection.ts +14 -0
  60. package/src/db-host/data-service.ts +26 -12
  61. package/src/db-host/documents-synchronizer.ts +17 -5
  62. package/src/metadata/metadata-store.ts +1 -1
  63. package/src/testing/index.ts +1 -0
  64. package/src/testing/test-replicator.ts +194 -0
  65. package/dist/lib/browser/chunk-UJQ5VS5V.mjs.map +0 -7
  66. package/dist/lib/node/chunk-RH6TDRML.cjs.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/automerge/automerge-host.ts", "../../../src/automerge/echo-network-adapter.ts", "../../../src/automerge/heads-store.ts", "../../../src/automerge/leveldb-storage-adapter.ts", "../../../src/automerge/mesh-echo-replicator.ts", "../../../src/automerge/mesh-echo-replicator-connection.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Event, asyncTimeout } from '@dxos/async';\nimport {\n next as automerge,\n getBackend,\n getHeads,\n isAutomerge,\n equals as headsEquals,\n save,\n type Doc,\n type Heads,\n} from '@dxos/automerge/automerge';\nimport {\n type DocHandleChangePayload,\n Repo,\n type AnyDocumentId,\n type DocHandle,\n type DocumentId,\n type PeerId,\n type StorageAdapterInterface,\n} from '@dxos/automerge/automerge-repo';\nimport { Context, Resource, cancelWithContext, type Lifecycle } from '@dxos/context';\nimport { type SpaceDoc } from '@dxos/echo-protocol';\nimport { type IndexMetadataStore } from '@dxos/indexing';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { type LevelDB } from '@dxos/kv-store';\nimport { log } from '@dxos/log';\nimport { objectPointerCodec } from '@dxos/protocols';\nimport { type DocHeadsList, type FlushRequest } from '@dxos/protocols/proto/dxos/echo/service';\nimport { trace } from '@dxos/tracing';\nimport { mapValues } from '@dxos/util';\n\nimport { EchoNetworkAdapter, isEchoPeerMetadata } from './echo-network-adapter';\nimport { type EchoReplicator } from './echo-replicator';\nimport { HeadsStore } from './heads-store';\nimport { LevelDBStorageAdapter, type BeforeSaveParams } from './leveldb-storage-adapter';\n\nexport type AutomergeHostParams = {\n db: LevelDB;\n\n indexMetadataStore: IndexMetadataStore;\n};\n\nexport type LoadDocOptions = {\n timeout?: number;\n};\n\nexport type CreateDocOptions = {\n /**\n * Import the document together with its history.\n */\n preserveHistory?: boolean;\n};\n\n/**\n * Abstracts over the AutomergeRepo.\n */\n@trace.resource()\nexport class AutomergeHost extends Resource {\n private readonly _db: LevelDB;\n private readonly _indexMetadataStore: IndexMetadataStore;\n private readonly _echoNetworkAdapter = new EchoNetworkAdapter({\n getContainingSpaceForDocument: this._getContainingSpaceForDocument.bind(this),\n });\n\n private _repo!: Repo;\n private _storage!: StorageAdapterInterface & Lifecycle;\n private readonly _headsStore: HeadsStore;\n\n @trace.info()\n private _peerId!: string;\n\n constructor({ db, indexMetadataStore }: AutomergeHostParams) {\n super();\n this._db = db;\n this._storage = new LevelDBStorageAdapter({\n db: db.sublevel('automerge'),\n callbacks: {\n beforeSave: async (params) => this._beforeSave(params),\n afterSave: async () => this._afterSave(),\n },\n });\n this._headsStore = new HeadsStore({ db: db.sublevel('heads') });\n this._indexMetadataStore = indexMetadataStore;\n }\n\n protected override async _open() {\n // TODO(burdon): Should this be stable?\n this._peerId = `host-${PublicKey.random().toHex()}` as PeerId;\n\n await this._storage.open?.();\n\n // Construct the automerge repo.\n this._repo = new Repo({\n peerId: this._peerId as PeerId,\n sharePolicy: this._sharePolicy.bind(this),\n storage: this._storage,\n network: [\n // Upstream swarm.\n this._echoNetworkAdapter,\n ],\n });\n\n await this._echoNetworkAdapter.open();\n await this._echoNetworkAdapter.whenConnected();\n }\n\n protected override async _close() {\n await this._storage.close?.();\n await this._echoNetworkAdapter.close();\n await this._ctx.dispose();\n }\n\n /**\n * @deprecated To be abstracted away.\n */\n get repo(): Repo {\n return this._repo;\n }\n\n get loadedDocsCount(): number {\n return Object.keys(this._repo.handles).length;\n }\n\n async addReplicator(replicator: EchoReplicator) {\n await this._echoNetworkAdapter.addReplicator(replicator);\n }\n\n async removeReplicator(replicator: EchoReplicator) {\n await this._echoNetworkAdapter.removeReplicator(replicator);\n }\n\n /**\n * Loads the document handle from the repo and waits for it to be ready.\n */\n async loadDoc<T>(ctx: Context, documentId: AnyDocumentId, opts?: LoadDocOptions): Promise<DocHandle<T>> {\n let handle: DocHandle<T> | undefined;\n if (typeof documentId === 'string') {\n // NOTE: documentId might also be a URL, in which case this lookup will fail.\n handle = this._repo.handles[documentId as DocumentId];\n }\n if (!handle) {\n handle = this._repo.find(documentId as DocumentId);\n }\n\n // `whenReady` creates a timeout so we guard it with an if to skip it if the handle is already ready.\n if (!handle.isReady()) {\n if (!opts?.timeout) {\n await cancelWithContext(ctx, handle.whenReady());\n } else {\n await cancelWithContext(ctx, asyncTimeout(handle.whenReady(), opts.timeout));\n }\n }\n\n return handle;\n }\n\n /**\n * Create new persisted document.\n */\n createDoc<T>(initialValue?: T | Doc<T>, opts?: CreateDocOptions): DocHandle<T> {\n if (opts?.preserveHistory) {\n if (!isAutomerge(initialValue)) {\n throw new TypeError('Initial value must be an Automerge document');\n }\n // TODO(dmaretskyi): There's a more efficient way.\n return this._repo.import(save(initialValue as Doc<T>));\n } else {\n return this._repo.create(initialValue);\n }\n }\n\n async waitUntilHeadsReplicated(heads: DocHeadsList): Promise<void> {\n await Promise.all(\n heads.entries?.map(async ({ documentId, heads }) => {\n if (!heads || heads.length === 0) {\n return;\n }\n\n const currentHeads = this.getHeads(documentId as DocumentId);\n if (currentHeads !== null && headsEquals(currentHeads, heads)) {\n return;\n }\n\n const handle = await this.loadDoc(Context.default(), documentId as DocumentId);\n await waitForHeads(handle, heads);\n }) ?? [],\n );\n\n // Flush to disk also so that the indexer can pick up the changes.\n await this._repo.flush((heads.entries?.map((entry) => entry.documentId) ?? []) as DocumentId[]);\n }\n\n async reIndexHeads(documentIds: DocumentId[]) {\n for (const documentId of documentIds) {\n log.info('re-indexing heads for document', { documentId });\n const handle = this._repo.find(documentId);\n await handle.whenReady(['ready', 'requesting']);\n if (handle.inState(['requesting'])) {\n log.warn('document is not available locally, skipping', { documentId });\n continue; // Handle not available locally.\n }\n\n const doc = handle.docSync();\n invariant(doc);\n\n const heads = getHeads(doc);\n const batch = this._db.batch();\n this._headsStore.setHeads(documentId, heads, batch);\n await batch.write();\n }\n log.info('done re-indexing heads');\n }\n\n // TODO(dmaretskyi): Share based on HALO permissions and space affinity.\n // Hosts, running in the worker, don't share documents unless requested by other peers.\n // NOTE: If both peers return sharePolicy=false the replication will not happen\n // https://github.com/automerge/automerge-repo/pull/292\n private async _sharePolicy(peerId: PeerId, documentId?: DocumentId): Promise<boolean> {\n if (peerId.startsWith('client-')) {\n return false; // Only send docs to clients if they are requested.\n }\n\n if (!documentId) {\n return false;\n }\n\n const peerMetadata = this.repo.peerMetadataByPeerId[peerId];\n if (isEchoPeerMetadata(peerMetadata)) {\n return this._echoNetworkAdapter.shouldAdvertise(peerId, { documentId });\n }\n\n return false;\n }\n\n private async _beforeSave({ path, batch }: BeforeSaveParams) {\n const handle = this._repo.handles[path[0] as DocumentId];\n if (!handle) {\n return;\n }\n const doc = handle.docSync();\n if (!doc) {\n return;\n }\n\n const spaceKey = getSpaceKeyFromDoc(doc) ?? undefined;\n\n const heads = getHeads(doc);\n\n this._headsStore.setHeads(handle.documentId, heads, batch);\n\n const objectIds = Object.keys(doc.objects ?? {});\n const encodedIds = objectIds.map((objectId) =>\n objectPointerCodec.encode({ documentId: handle.documentId, objectId, spaceKey }),\n );\n const idToLastHash = new Map(encodedIds.map((id) => [id, heads]));\n this._indexMetadataStore.markDirty(idToLastHash, batch);\n }\n\n /**\n * Called by AutomergeStorageAdapter after levelDB batch commit.\n */\n private async _afterSave() {\n this._indexMetadataStore.notifyMarkedDirty();\n }\n\n @trace.info({ depth: null })\n private _automergeDocs() {\n return mapValues(this._repo.handles, (handle) => ({\n state: handle.state,\n hasDoc: !!handle.docSync(),\n heads: handle.docSync() ? automerge.getHeads(handle.docSync()) : null,\n data:\n handle.docSync() &&\n mapValues(handle.docSync(), (value, key) => {\n try {\n switch (key) {\n case 'access':\n case 'links':\n return value;\n case 'objects':\n return Object.keys(value as any);\n default:\n return `${value}`;\n }\n } catch (err) {\n return `${err}`;\n }\n }),\n }));\n }\n\n @trace.info({ depth: null })\n private _automergePeers() {\n return this._repo.peers;\n }\n\n private async _getContainingSpaceForDocument(documentId: string): Promise<PublicKey | null> {\n const doc = this._repo.handles[documentId as any]?.docSync();\n if (!doc) {\n return null;\n }\n\n const spaceKeyHex = getSpaceKeyFromDoc(doc);\n if (!spaceKeyHex) {\n return null;\n }\n\n return PublicKey.from(spaceKeyHex);\n }\n\n /**\n * Flush documents to disk.\n */\n @trace.span({ showInBrowserTimeline: true })\n async flush({ documentIds }: FlushRequest = {}): Promise<void> {\n // Note: Sync protocol for client and services ensures that all handles should have all changes.\n\n await this._repo.flush(documentIds as DocumentId[] | undefined);\n }\n\n async getHeads(documentId: DocumentId): Promise<Heads | undefined> {\n const handle = this._repo.handles[documentId];\n if (handle) {\n const doc = handle.docSync();\n if (!doc) {\n return undefined;\n }\n return getHeads(doc);\n } else {\n return this._headsStore.getHeads(documentId);\n }\n }\n}\n\nexport const getSpaceKeyFromDoc = (doc: Doc<SpaceDoc>): string | null => {\n // experimental_spaceKey is set on old documents, new ones are created with doc.access.spaceKey\n const rawSpaceKey = doc.access?.spaceKey ?? (doc as any).experimental_spaceKey;\n if (rawSpaceKey == null) {\n return null;\n }\n\n return String(rawSpaceKey);\n};\n\nconst waitForHeads = async (handle: DocHandle<SpaceDoc>, heads: Heads) => {\n const unavailableHeads = new Set(heads);\n\n await handle.whenReady();\n await Event.wrap<DocHandleChangePayload<SpaceDoc>>(handle, 'change').waitForCondition(() => {\n // Check if unavailable heads became available.\n for (const changeHash of unavailableHeads.values()) {\n if (changeIsPresentInDoc(handle.docSync(), changeHash)) {\n unavailableHeads.delete(changeHash);\n }\n }\n\n return unavailableHeads.size === 0;\n });\n};\n\nconst changeIsPresentInDoc = (doc: Doc<any>, changeHash: string): boolean => {\n return !!getBackend(doc).getChangeByHash(changeHash);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { synchronized, Trigger } from '@dxos/async';\nimport { type Message, NetworkAdapter, type PeerId, type PeerMetadata } from '@dxos/automerge/automerge-repo';\nimport { LifecycleState } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { type EchoReplicator, type ReplicatorConnection, type ShouldAdvertiseParams } from './echo-replicator';\n\nexport type EchoNetworkAdapterParams = {\n getContainingSpaceForDocument: (documentId: string) => Promise<PublicKey | null>;\n};\n\n/**\n * Manages a set of {@link EchoReplicator} instances.\n */\nexport class EchoNetworkAdapter extends NetworkAdapter {\n private readonly _replicators = new Set<EchoReplicator>();\n /**\n * Remote peer id -> connection.\n */\n private readonly _connections = new Map<PeerId, ConnectionEntry>();\n private _lifecycleState: LifecycleState = LifecycleState.CLOSED;\n private readonly _connected = new Trigger();\n\n constructor(private readonly _params: EchoNetworkAdapterParams) {\n super();\n }\n\n override connect(peerId: PeerId, peerMetadata?: PeerMetadata | undefined): void {\n this.peerId = peerId;\n this.peerMetadata = peerMetadata;\n this._connected.wake();\n }\n\n override send(message: Message): void {\n const connectionEntry = this._connections.get(message.targetId);\n if (!connectionEntry) {\n throw new Error('Connection not found.');\n }\n\n // TODO(dmaretskyi): Find a way to enforce backpressure on AM-repo.\n connectionEntry.writer.write(message).catch((err) => {\n if (connectionEntry.isOpen) {\n log.catch(err);\n }\n });\n }\n\n override disconnect(): void {\n // No-op\n }\n\n @synchronized\n async open() {\n if (this._lifecycleState === LifecycleState.OPEN) {\n return;\n }\n this._lifecycleState = LifecycleState.OPEN;\n\n log('emit ready');\n this.emit('ready', {\n network: this,\n });\n }\n\n @synchronized\n async close() {\n if (this._lifecycleState === LifecycleState.CLOSED) {\n return this;\n }\n\n for (const replicator of this._replicators) {\n await replicator.disconnect();\n }\n this._replicators.clear();\n\n this._lifecycleState = LifecycleState.CLOSED;\n }\n\n async whenConnected() {\n await this._connected.wait({ timeout: 10_000 });\n }\n\n @synchronized\n async addReplicator(replicator: EchoReplicator) {\n invariant(this._lifecycleState === LifecycleState.OPEN);\n invariant(this.peerId);\n invariant(!this._replicators.has(replicator));\n\n this._replicators.add(replicator);\n await replicator.connect({\n peerId: this.peerId,\n onConnectionOpen: this._onConnectionOpen.bind(this),\n onConnectionClosed: this._onConnectionClosed.bind(this),\n onConnectionAuthScopeChanged: this._onConnectionAuthScopeChanged.bind(this),\n getContainingSpaceForDocument: this._params.getContainingSpaceForDocument,\n });\n }\n\n @synchronized\n async removeReplicator(replicator: EchoReplicator) {\n invariant(this._lifecycleState === LifecycleState.OPEN);\n invariant(this._replicators.has(replicator));\n await replicator.disconnect();\n this._replicators.delete(replicator);\n }\n\n async shouldAdvertise(peerId: PeerId, params: ShouldAdvertiseParams): Promise<boolean> {\n const connection = this._connections.get(peerId);\n if (!connection) {\n return false;\n }\n\n return connection.connection.shouldAdvertise(params);\n }\n\n private _onConnectionOpen(connection: ReplicatorConnection) {\n log('Connection opened', { peerId: connection.peerId });\n invariant(!this._connections.has(connection.peerId as PeerId));\n const reader = connection.readable.getReader();\n const writer = connection.writable.getWriter();\n const connectionEntry: ConnectionEntry = { connection, reader, writer, isOpen: true };\n this._connections.set(connection.peerId as PeerId, connectionEntry);\n\n queueMicrotask(async () => {\n try {\n while (true) {\n // TODO(dmaretskyi): Find a way to enforce backpressure on AM-repo.\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n this.emit('message', value);\n }\n } catch (err) {\n if (connectionEntry.isOpen) {\n log.catch(err);\n }\n }\n });\n\n log('emit peer-candidate', { peerId: connection.peerId });\n this._emitPeerCandidate(connection);\n }\n\n /**\n * Trigger doc-synchronizer shared documents set recalculation. Happens on peer-candidate.\n * TODO(y): replace with a proper API call when sharePolicy update becomes supported by automerge-repo\n */\n private _onConnectionAuthScopeChanged(connection: ReplicatorConnection) {\n log('Connection auth scope changed', { peerId: connection.peerId });\n const entry = this._connections.get(connection.peerId as PeerId);\n invariant(entry);\n this.emit('peer-disconnected', { peerId: connection.peerId as PeerId });\n this._emitPeerCandidate(connection);\n }\n\n private _onConnectionClosed(connection: ReplicatorConnection) {\n log('Connection closed', { peerId: connection.peerId });\n const entry = this._connections.get(connection.peerId as PeerId);\n invariant(entry);\n\n entry.isOpen = false;\n this.emit('peer-disconnected', { peerId: connection.peerId as PeerId });\n\n void entry.reader.cancel().catch((err) => log.catch(err));\n void entry.writer.abort().catch((err) => log.catch(err));\n\n this._connections.delete(connection.peerId as PeerId);\n }\n\n private _emitPeerCandidate(connection: ReplicatorConnection) {\n this.emit('peer-candidate', {\n peerId: connection.peerId as PeerId,\n peerMetadata: createEchoPeerMetadata(),\n });\n }\n}\n\ntype ConnectionEntry = {\n connection: ReplicatorConnection;\n reader: ReadableStreamDefaultReader<Message>;\n writer: WritableStreamDefaultWriter<Message>;\n isOpen: boolean;\n};\n\nexport const createEchoPeerMetadata = (): PeerMetadata =>\n ({\n // TODO(dmaretskyi): Refactor this.\n dxos_peerSource: 'EchoNetworkAdapter',\n }) as any;\n\nexport const isEchoPeerMetadata = (metadata: PeerMetadata): boolean =>\n (metadata as any)?.dxos_peerSource === 'EchoNetworkAdapter';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Heads } from '@dxos/automerge/automerge';\nimport type { DocumentId } from '@dxos/automerge/automerge-repo';\nimport { headsEncoding } from '@dxos/indexing';\nimport type { BatchLevel, SublevelDB } from '@dxos/kv-store';\n\nexport type HeadsStoreParams = {\n db: SublevelDB;\n};\n\nexport class HeadsStore {\n private readonly _db: SublevelDB;\n\n constructor({ db }: HeadsStoreParams) {\n this._db = db;\n }\n\n setHeads(documentId: DocumentId, heads: Heads, batch: BatchLevel) {\n batch.put<DocumentId, Heads>(documentId, heads, {\n sublevel: this._db,\n keyEncoding: 'utf8',\n valueEncoding: headsEncoding,\n });\n }\n\n async getHeads(documentId: DocumentId): Promise<Heads | undefined> {\n try {\n return await this._db.get<DocumentId, Heads>(documentId, { keyEncoding: 'utf8', valueEncoding: headsEncoding });\n } catch (err: any) {\n if (err.notFound) {\n return undefined;\n }\n throw err;\n }\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n// s\n\nimport { type MixedEncoding } from 'level-transcoder';\n\nimport { type StorageAdapterInterface, type Chunk, type StorageKey } from '@dxos/automerge/automerge-repo';\nimport { LifecycleState, Resource } from '@dxos/context';\nimport { type BatchLevel, type SublevelDB } from '@dxos/kv-store';\nimport { type MaybePromise } from '@dxos/util';\n\nexport type LevelDBStorageAdapterParams = {\n db: SublevelDB;\n callbacks?: StorageCallbacks;\n};\n\nexport type BeforeSaveParams = { path: StorageKey; batch: BatchLevel };\n\nexport interface StorageCallbacks {\n beforeSave(params: BeforeSaveParams): MaybePromise<void>;\n afterSave(path: StorageKey): MaybePromise<void>;\n}\n\nexport class LevelDBStorageAdapter extends Resource implements StorageAdapterInterface {\n constructor(private readonly _params: LevelDBStorageAdapterParams) {\n super();\n }\n\n async load(keyArray: StorageKey): Promise<Uint8Array | undefined> {\n try {\n if (this._lifecycleState !== LifecycleState.OPEN) {\n // TODO(mykola): this should be an error.\n return undefined;\n }\n return await this._params.db.get<StorageKey, Uint8Array>(keyArray, { ...encodingOptions });\n } catch (err: any) {\n if (isLevelDbNotFoundError(err)) {\n return undefined;\n }\n throw err;\n }\n }\n\n async save(keyArray: StorageKey, binary: Uint8Array): Promise<void> {\n if (this._lifecycleState !== LifecycleState.OPEN) {\n return undefined;\n }\n const batch = this._params.db.batch();\n\n await this._params.callbacks?.beforeSave?.({ path: keyArray, batch });\n batch.put<StorageKey, Uint8Array>(keyArray, Buffer.from(binary), {\n ...encodingOptions,\n });\n await batch.write();\n\n await this._params.callbacks?.afterSave?.(keyArray);\n }\n\n async remove(keyArray: StorageKey): Promise<void> {\n if (this._lifecycleState !== LifecycleState.OPEN) {\n return undefined;\n }\n await this._params.db.del<StorageKey>(keyArray, { ...encodingOptions });\n }\n\n async loadRange(keyPrefix: StorageKey): Promise<Chunk[]> {\n if (this._lifecycleState !== LifecycleState.OPEN) {\n return [];\n }\n const result: Chunk[] = [];\n for await (const [key, value] of this._params.db.iterator<StorageKey, Uint8Array>({\n gte: keyPrefix,\n lte: [...keyPrefix, '\\uffff'],\n ...encodingOptions,\n })) {\n result.push({\n key,\n data: value,\n });\n }\n return result;\n }\n\n async removeRange(keyPrefix: StorageKey): Promise<void> {\n if (this._lifecycleState !== LifecycleState.OPEN) {\n return undefined;\n }\n const batch = this._params.db.batch();\n\n for await (const [key] of this._params.db.iterator<StorageKey, Uint8Array>({\n gte: keyPrefix,\n lte: [...keyPrefix, '\\uffff'],\n ...encodingOptions,\n })) {\n batch.del<StorageKey>(key, { ...encodingOptions });\n }\n await batch.write();\n }\n}\n\nconst keyEncoder: MixedEncoding<StorageKey, Uint8Array, StorageKey> = {\n encode: (key: StorageKey): Uint8Array =>\n Buffer.from(key.map((k) => k.replaceAll('%', '%25').replaceAll('-', '%2D')).join('-')),\n decode: (key: Uint8Array): StorageKey =>\n Buffer.from(key)\n .toString()\n .split('-')\n .map((k) => k.replaceAll('%2D', '-').replaceAll('%25', '%')),\n format: 'buffer',\n};\n\nexport const encodingOptions = {\n keyEncoding: keyEncoder,\n valueEncoding: 'buffer',\n};\n\nconst isLevelDbNotFoundError = (err: any): boolean => err.code === 'LEVEL_NOT_FOUND';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport {\n type AutomergeReplicator,\n type AutomergeReplicatorFactory,\n} from '@dxos/teleport-extension-automerge-replicator';\nimport { ComplexMap, ComplexSet, defaultMap } from '@dxos/util';\n\nimport { type EchoReplicator, type EchoReplicatorContext, type ShouldAdvertiseParams } from './echo-replicator';\nimport { MeshReplicatorConnection } from './mesh-echo-replicator-connection';\n\n// TODO(dmaretskyi): Move out of @dxos/echo-pipeline.\n\n/**\n * Used to replicate with other peers over the network.\n */\nexport class MeshEchoReplicator implements EchoReplicator {\n private readonly _connections = new Set<MeshReplicatorConnection>();\n /**\n * Using automerge peerId as a key.\n */\n private readonly _connectionsPerPeer = new Map<string, MeshReplicatorConnection>();\n\n /**\n * spaceKey -> deviceKey[]\n */\n private readonly _authorizedDevices = new ComplexMap<PublicKey, ComplexSet<PublicKey>>(PublicKey.hash);\n\n private _context: EchoReplicatorContext | null = null;\n\n async connect(context: EchoReplicatorContext): Promise<void> {\n this._context = context;\n }\n\n async disconnect() {\n for (const connection of this._connectionsPerPeer.values()) {\n this._context?.onConnectionClosed(connection);\n }\n for (const connection of this._connections) {\n await connection.close();\n }\n this._connections.clear();\n this._connectionsPerPeer.clear();\n\n this._context = null;\n }\n\n createExtension(extensionFactory?: AutomergeReplicatorFactory): AutomergeReplicator {\n invariant(this._context);\n\n const connection: MeshReplicatorConnection = new MeshReplicatorConnection({\n ownPeerId: this._context.peerId,\n replicatorFactory: extensionFactory,\n onRemoteConnected: async () => {\n log('onRemoteConnected', { peerId: connection.peerId });\n invariant(this._context);\n\n if (this._connectionsPerPeer.has(connection.peerId)) {\n this._context.onConnectionAuthScopeChanged(connection);\n } else {\n this._connectionsPerPeer.set(connection.peerId, connection);\n this._context.onConnectionOpen(connection);\n connection.enable();\n }\n },\n onRemoteDisconnected: async () => {\n log('onRemoteDisconnected', { peerId: connection.peerId });\n this._context?.onConnectionClosed(connection);\n this._connectionsPerPeer.delete(connection.peerId);\n connection.disable();\n this._connections.delete(connection);\n },\n shouldAdvertise: async (params: ShouldAdvertiseParams) => {\n log('shouldAdvertise', { peerId: connection.peerId, documentId: params.documentId });\n invariant(this._context);\n try {\n const spaceKey = await this._context.getContainingSpaceForDocument(params.documentId);\n if (!spaceKey) {\n log('space key not found for share policy check', {\n peerId: connection.peerId,\n documentId: params.documentId,\n });\n return false;\n }\n\n const authorizedDevices = this._authorizedDevices.get(spaceKey);\n\n if (!connection.remoteDeviceKey) {\n log('device key not found for share policy check', {\n peerId: connection.peerId,\n documentId: params.documentId,\n });\n return false;\n }\n\n const isAuthorized = authorizedDevices?.has(connection.remoteDeviceKey) ?? false;\n log('share policy check', {\n localPeer: this._context.peerId,\n remotePeer: connection.peerId,\n documentId: params.documentId,\n deviceKey: connection.remoteDeviceKey,\n spaceKey,\n isAuthorized,\n });\n return isAuthorized;\n } catch (err) {\n log.catch(err);\n return false;\n }\n },\n });\n this._connections.add(connection);\n\n return connection.replicatorExtension;\n }\n\n authorizeDevice(spaceKey: PublicKey, deviceKey: PublicKey) {\n log('authorizeDevice', { spaceKey, deviceKey });\n defaultMap(this._authorizedDevices, spaceKey, () => new ComplexSet(PublicKey.hash)).add(deviceKey);\n for (const connection of this._connections) {\n if (connection.remoteDeviceKey && connection.remoteDeviceKey.equals(deviceKey)) {\n if (this._connectionsPerPeer.has(connection.peerId)) {\n this._context?.onConnectionAuthScopeChanged(connection);\n }\n }\n }\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { cbor, type Message } from '@dxos/automerge/automerge-repo';\nimport { Resource } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { AutomergeReplicator, type AutomergeReplicatorFactory } from '@dxos/teleport-extension-automerge-replicator';\n\nimport type { ReplicatorConnection, ShouldAdvertiseParams } from './echo-replicator';\n\nconst DEFAULT_FACTORY: AutomergeReplicatorFactory = (params) => new AutomergeReplicator(...params);\n\nexport type MeshReplicatorConnectionParams = {\n ownPeerId: string;\n onRemoteConnected: () => void;\n onRemoteDisconnected: () => void;\n shouldAdvertise: (params: ShouldAdvertiseParams) => Promise<boolean>;\n replicatorFactory?: AutomergeReplicatorFactory;\n};\n\nexport class MeshReplicatorConnection extends Resource implements ReplicatorConnection {\n public readable: ReadableStream<Message>;\n public writable: WritableStream<Message>;\n public remoteDeviceKey: PublicKey | null = null;\n\n public readonly replicatorExtension: AutomergeReplicator;\n\n private _remotePeerId: string | null = null;\n private _isEnabled = false;\n\n constructor(private readonly _params: MeshReplicatorConnectionParams) {\n super();\n\n let readableStreamController!: ReadableStreamDefaultController<Message>;\n this.readable = new ReadableStream<Message>({\n start: (controller) => {\n readableStreamController = controller;\n this._ctx.onDispose(() => controller.close());\n },\n });\n\n this.writable = new WritableStream<Message>({\n write: async (message: Message, controller) => {\n invariant(this._isEnabled, 'Writing to a disabled connection');\n try {\n await this.replicatorExtension.sendSyncMessage({ payload: cbor.encode(message) });\n } catch (err) {\n controller.error(err);\n this._disconnectIfEnabled();\n }\n },\n });\n\n const createAutomergeReplicator = this._params.replicatorFactory ?? DEFAULT_FACTORY;\n this.replicatorExtension = createAutomergeReplicator([\n {\n peerId: this._params.ownPeerId,\n },\n {\n onStartReplication: async (info, remotePeerId /** Teleport ID */) => {\n // Note: We store only one extension per peer.\n // There can be a case where two connected peers have more than one teleport connection between them\n // and each of them uses different teleport connections to send messages.\n // It works because we receive messages from all teleport connections and Automerge Repo dedup them.\n // TODO(mykola): Use only one teleport connection per peer.\n\n // TODO(dmaretskyi): Critical bug.\n // - two peers get connected via swarm 1\n // - they get connected via swarm 2\n // - swarm 1 gets disconnected\n // - automerge repo thinks that peer 2 got disconnected even though swarm 2 is still active\n\n this.remoteDeviceKey = remotePeerId;\n\n // Set automerge id.\n this._remotePeerId = info.id;\n\n log('onStartReplication', { id: info.id, thisPeerId: this.peerId, remotePeerId: remotePeerId.toHex() });\n\n this._params.onRemoteConnected();\n },\n onSyncMessage: async ({ payload }) => {\n if (!this._isEnabled) {\n return;\n }\n const message = cbor.decode(payload) as Message;\n // Note: automerge Repo dedup messages.\n readableStreamController.enqueue(message);\n },\n onClose: async () => {\n this._disconnectIfEnabled();\n },\n },\n ]);\n }\n\n private _disconnectIfEnabled() {\n if (this._isEnabled) {\n this._params.onRemoteDisconnected();\n }\n }\n\n get peerId(): string {\n invariant(this._remotePeerId != null, 'Remote peer has not connected yet.');\n return this._remotePeerId;\n }\n\n async shouldAdvertise(params: ShouldAdvertiseParams): Promise<boolean> {\n return this._params.shouldAdvertise(params);\n }\n\n /**\n * Start exchanging messages with the remote peer.\n * Call after the remote peer has connected.\n */\n enable() {\n invariant(this._remotePeerId != null, 'Remote peer has not connected yet.');\n this._isEnabled = true;\n }\n\n /**\n * Stop exchanging messages with the remote peer.\n */\n disable() {\n this._isEnabled = false;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_async", "import_automerge_repo", "import_context", "import_invariant", "import_log", "import_keys", "import_util", "EchoNetworkAdapter", "NetworkAdapter", "constructor", "_params", "_replicators", "Set", "_connections", "Map", "_lifecycleState", "LifecycleState", "CLOSED", "_connected", "Trigger", "connect", "peerId", "peerMetadata", "wake", "send", "message", "connectionEntry", "get", "targetId", "Error", "writer", "write", "catch", "err", "isOpen", "log", "disconnect", "open", "OPEN", "emit", "network", "close", "replicator", "clear", "whenConnected", "wait", "timeout", "addReplicator", "invariant", "has", "add", "onConnectionOpen", "_onConnectionOpen", "bind", "onConnectionClosed", "_onConnectionClosed", "onConnectionAuthScopeChanged", "_onConnectionAuthScopeChanged", "getContainingSpaceForDocument", "removeReplicator", "delete", "shouldAdvertise", "params", "connection", "reader", "readable", "getReader", "writable", "getWriter", "set", "queueMicrotask", "done", "value", "read", "_emitPeerCandidate", "entry", "cancel", "abort", "createEchoPeerMetadata", "synchronized", "dxos_peerSource", "isEchoPeerMetadata", "metadata", "HeadsStore", "db", "_db", "setHeads", "documentId", "heads", "batch", "put", "sublevel", "keyEncoding", "valueEncoding", "headsEncoding", "getHeads", "notFound", "undefined", "LevelDBStorageAdapter", "Resource", "load", "keyArray", "encodingOptions", "isLevelDbNotFoundError", "save", "binary", "callbacks", "beforeSave", "path", "Buffer", "from", "afterSave", "remove", "del", "loadRange", "keyPrefix", "result", "key", "iterator", "gte", "lte", "push", "data", "removeRange", "keyEncoder", "encode", "map", "k", "replaceAll", "join", "decode", "toString", "split", "format", "code", "AutomergeHost", "indexMetadataStore", "_echoNetworkAdapter", "_getContainingSpaceForDocument", "_storage", "_beforeSave", "_afterSave", "_headsStore", "_indexMetadataStore", "_open", "_peerId", "PublicKey", "random", "toHex", "_repo", "Repo", "sharePolicy", "_sharePolicy", "storage", "_close", "_ctx", "dispose", "repo", "loadedDocsCount", "Object", "keys", "handles", "length", "loadDoc", "ctx", "opts", "handle", "find", "isReady", "cancelWithContext", "whenReady", "asyncTimeout", "createDoc", "initialValue", "preserveHistory", "isAutomerge", "TypeError", "import", "create", "waitUntilHeadsReplicated", "Promise", "all", "entries", "currentHeads", "headsEquals", "Context", "default", "waitForHeads", "flush", "reIndexHeads", "documentIds", "info", "inState", "warn", "doc", "docSync", "startsWith", "peerMetadataByPeerId", "spaceKey", "getSpaceKeyFromDoc", "objectIds", "objects", "encodedIds", "objectId", "objectPointerCodec", "idToLastHash", "id", "markDirty", "notifyMarkedDirty", "_automergeDocs", "mapValues", "state", "hasDoc", "automerge", "_automergePeers", "peers", "spaceKeyHex", "trace", "depth", "span", "showInBrowserTimeline", "resource", "rawSpaceKey", "access", "experimental_spaceKey", "String", "unavailableHeads", "Event", "wrap", "waitForCondition", "changeHash", "values", "changeIsPresentInDoc", "size", "getBackend", "getChangeByHash", "DEFAULT_FACTORY", "AutomergeReplicator", "MeshReplicatorConnection", "remoteDeviceKey", "_remotePeerId", "_isEnabled", "readableStreamController", "ReadableStream", "start", "controller", "onDispose", "WritableStream", "replicatorExtension", "sendSyncMessage", "payload", "cbor", "error", "_disconnectIfEnabled", "createAutomergeReplicator", "replicatorFactory", "ownPeerId", "onStartReplication", "remotePeerId", "thisPeerId", "onRemoteConnected", "onSyncMessage", "enqueue", "onClose", "onRemoteDisconnected", "enable", "disable", "MeshEchoReplicator", "ComplexMap", "hash", "_context", "context", "_connectionsPerPeer", "createExtension", "extensionFactory", "authorizedDevices", "_authorizedDevices", "isAuthorized", "localPeer", "remotePeer", "deviceKey", "authorizeDevice", "defaultMap", "ComplexSet", "equals"]
3
+ "sources": ["index.cjs"],
4
+ "sourcesContent": ["import {\n AuthExtension,\n AuthStatus,\n AutomergeHost,\n CredentialRetrieverExtension,\n CredentialServerExtension,\n DataServiceImpl,\n DocumentsSynchronizer,\n LevelDBStorageAdapter,\n MOCK_AUTH_PROVIDER,\n MOCK_AUTH_VERIFIER,\n MeshEchoReplicator,\n MetadataStore,\n Pipeline,\n SnapshotManager,\n SnapshotStore,\n Space,\n SpaceManager,\n SpaceProtocol,\n SpaceProtocolSession,\n TimeframeClock,\n codec,\n createIdFromSpaceKey,\n createMappedFeedWriter,\n deriveCollectionIdFromSpaceId,\n diffCollectionState,\n encodingOptions,\n getSpaceIdFromCollectionId,\n getSpaceKeyFromDoc,\n hasInvitationExpired,\n mapFeedIndexesToTimeframe,\n mapTimeframeToFeedIndexes,\n startAfter,\n valueEncoding\n} from \"./chunk-PT5LWMPA.cjs\";\nexport {\n AuthExtension,\n AuthStatus,\n AutomergeHost,\n CredentialRetrieverExtension,\n CredentialServerExtension,\n DataServiceImpl,\n DocumentsSynchronizer,\n LevelDBStorageAdapter,\n MOCK_AUTH_PROVIDER,\n MOCK_AUTH_VERIFIER,\n MeshEchoReplicator,\n MetadataStore,\n Pipeline,\n SnapshotManager,\n SnapshotStore,\n Space,\n SpaceManager,\n SpaceProtocol,\n SpaceProtocolSession,\n TimeframeClock,\n codec,\n createIdFromSpaceKey,\n createMappedFeedWriter,\n deriveCollectionIdFromSpaceId,\n diffCollectionState,\n encodingOptions,\n getSpaceIdFromCollectionId,\n getSpaceKeyFromDoc,\n hasInvitationExpired,\n mapFeedIndexesToTimeframe,\n mapTimeframeToFeedIndexes,\n startAfter,\n valueEncoding\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAkCO;",
6
+ "names": []
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/echo/echo-pipeline/src/common/codec.ts":{"bytes":1690,"imports":[{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/common/feeds.ts":{"bytes":2202,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/common/index.ts":{"bytes":585,"imports":[{"path":"packages/core/echo/echo-pipeline/src/common/codec.ts","kind":"import-statement","original":"./codec"},{"path":"packages/core/echo/echo-pipeline/src/common/feeds.ts","kind":"import-statement","original":"./feeds"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/snapshot-manager.ts":{"bytes":6468,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/snapshot-store.ts":{"bytes":6171,"imports":[{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts":{"bytes":17475,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/data-service.ts":{"bytes":11977,"imports":[{"path":"@dxos/codec-protobuf","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts","kind":"import-statement","original":"./documents-synchronizer"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/index.ts":{"bytes":864,"imports":[{"path":"packages/core/echo/echo-pipeline/src/db-host/snapshot-manager.ts","kind":"import-statement","original":"./snapshot-manager"},{"path":"packages/core/echo/echo-pipeline/src/db-host/snapshot-store.ts","kind":"import-statement","original":"./snapshot-store"},{"path":"packages/core/echo/echo-pipeline/src/db-host/data-service.ts","kind":"import-statement","original":"./data-service"},{"path":"packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts","kind":"import-statement","original":"./documents-synchronizer"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts":{"bytes":40132,"imports":[{"path":"crc-32","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/metadata/index.ts":{"bytes":531,"imports":[{"path":"packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts","kind":"import-statement","original":"./metadata-store"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts":{"bytes":3861,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts":{"bytes":9762,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts":{"bytes":47570,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/feed-store","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts","kind":"import-statement","original":"./message-selector"},{"path":"packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts","kind":"import-statement","original":"./timeframe-clock"},{"path":"packages/core/echo/echo-pipeline/src/common/index.ts","kind":"import-statement","original":"../common"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/pipeline/index.ts":{"bytes":707,"imports":[{"path":"packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts","kind":"import-statement","original":"./pipeline"},{"path":"packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts","kind":"import-statement","original":"./timeframe-clock"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/auth.ts":{"bytes":10731,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/control-pipeline.ts":{"bytes":29988,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/pipeline/index.ts","kind":"import-statement","original":"../pipeline"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/space.ts":{"bytes":26184,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/space/control-pipeline.ts","kind":"import-statement","original":"./control-pipeline"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts":{"bytes":8672,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/space-protocol.ts":{"bytes":27067,"imports":[{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-object-sync","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-replicator","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/space/auth.ts","kind":"import-statement","original":"./auth"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/space-manager.ts":{"bytes":20165,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts","kind":"import-statement","original":"./admission-discovery-extension"},{"path":"packages/core/echo/echo-pipeline/src/space/space.ts","kind":"import-statement","original":"./space"},{"path":"packages/core/echo/echo-pipeline/src/space/space-protocol.ts","kind":"import-statement","original":"./space-protocol"},{"path":"packages/core/echo/echo-pipeline/src/db-host/index.ts","kind":"import-statement","original":"../db-host"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/index.ts":{"bytes":935,"imports":[{"path":"packages/core/echo/echo-pipeline/src/space/auth.ts","kind":"import-statement","original":"./auth"},{"path":"packages/core/echo/echo-pipeline/src/space/space.ts","kind":"import-statement","original":"./space"},{"path":"packages/core/echo/echo-pipeline/src/space/space-manager.ts","kind":"import-statement","original":"./space-manager"},{"path":"packages/core/echo/echo-pipeline/src/space/space-protocol.ts","kind":"import-statement","original":"./space-protocol"},{"path":"packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts","kind":"import-statement","original":"./admission-discovery-extension"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/echo-network-adapter.ts":{"bytes":25568,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/heads-store.ts":{"bytes":3379,"imports":[{"path":"@dxos/indexing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/leveldb-storage-adapter.ts":{"bytes":11789,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts":{"bytes":39615,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/automerge/echo-network-adapter.ts","kind":"import-statement","original":"./echo-network-adapter"},{"path":"packages/core/echo/echo-pipeline/src/automerge/heads-store.ts","kind":"import-statement","original":"./heads-store"},{"path":"packages/core/echo/echo-pipeline/src/automerge/leveldb-storage-adapter.ts","kind":"import-statement","original":"./leveldb-storage-adapter"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator-connection.ts":{"bytes":15535,"imports":[{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-automerge-replicator","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts":{"bytes":18357,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator-connection.ts","kind":"import-statement","original":"./mesh-echo-replicator-connection"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/echo-replicator.ts":{"bytes":2356,"imports":[],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/index.ts":{"bytes":886,"imports":[{"path":"packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts","kind":"import-statement","original":"./automerge-host"},{"path":"packages/core/echo/echo-pipeline/src/automerge/leveldb-storage-adapter.ts","kind":"import-statement","original":"./leveldb-storage-adapter"},{"path":"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts","kind":"import-statement","original":"./mesh-echo-replicator"},{"path":"packages/core/echo/echo-pipeline/src/automerge/echo-replicator.ts","kind":"import-statement","original":"./echo-replicator"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/index.ts":{"bytes":939,"imports":[{"path":"packages/core/echo/echo-pipeline/src/common/index.ts","kind":"import-statement","original":"./common"},{"path":"packages/core/echo/echo-pipeline/src/db-host/index.ts","kind":"import-statement","original":"./db-host"},{"path":"packages/core/echo/echo-pipeline/src/metadata/index.ts","kind":"import-statement","original":"./metadata"},{"path":"packages/core/echo/echo-pipeline/src/pipeline/index.ts","kind":"import-statement","original":"./pipeline"},{"path":"packages/core/echo/echo-pipeline/src/space/index.ts","kind":"import-statement","original":"./space"},{"path":"packages/core/echo/echo-pipeline/src/automerge/index.ts","kind":"import-statement","original":"./automerge"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/change-metadata.ts":{"bytes":3654,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/metadata/index.ts","kind":"import-statement","original":"../metadata"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/test-feed-builder.ts":{"bytes":1518,"imports":[{"path":"@dxos/feed-store/testing","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/common/index.ts","kind":"import-statement","original":"../common"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts":{"bytes":29258,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-gossip","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-object-sync","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/testing/test-feed-builder.ts","kind":"import-statement","original":"./test-feed-builder"},{"path":"packages/core/echo/echo-pipeline/src/db-host/index.ts","kind":"import-statement","original":"../db-host"},{"path":"packages/core/echo/echo-pipeline/src/metadata/index.ts","kind":"import-statement","original":"../metadata"},{"path":"packages/core/echo/echo-pipeline/src/space/index.ts","kind":"import-statement","original":"../space"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts":{"bytes":7559,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/index.ts":{"bytes":878,"imports":[{"path":"packages/core/echo/echo-pipeline/src/testing/change-metadata.ts","kind":"import-statement","original":"./change-metadata"},{"path":"packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts","kind":"import-statement","original":"./test-agent-builder"},{"path":"packages/core/echo/echo-pipeline/src/testing/test-feed-builder.ts","kind":"import-statement","original":"./test-feed-builder"},{"path":"packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts","kind":"import-statement","original":"./test-network-adapter"}],"format":"esm"}},"outputs":{"packages/core/echo/echo-pipeline/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":53612},"packages/core/echo/echo-pipeline/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/echo/echo-pipeline/dist/lib/node/chunk-RH6TDRML.cjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/indexing","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-automerge-replicator","kind":"import-statement","external":true}],"exports":["AuthExtension","AuthStatus","AutomergeHost","CredentialRetrieverExtension","CredentialServerExtension","DataServiceImpl","DocumentsSynchronizer","LevelDBStorageAdapter","MOCK_AUTH_PROVIDER","MOCK_AUTH_VERIFIER","MeshEchoReplicator","MetadataStore","Pipeline","SnapshotManager","SnapshotStore","Space","SpaceManager","SpaceProtocol","SpaceProtocolSession","TimeframeClock","codec","createIdFromSpaceKey","createMappedFeedWriter","encodingOptions","getSpaceKeyFromDoc","hasInvitationExpired","mapFeedIndexesToTimeframe","mapTimeframeToFeedIndexes","startAfter","valueEncoding"],"entryPoint":"packages/core/echo/echo-pipeline/src/index.ts","inputs":{"packages/core/echo/echo-pipeline/src/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts":{"bytesInOutput":9698},"packages/core/echo/echo-pipeline/src/automerge/echo-network-adapter.ts":{"bytesInOutput":7884},"packages/core/echo/echo-pipeline/src/automerge/heads-store.ts":{"bytesInOutput":564},"packages/core/echo/echo-pipeline/src/automerge/leveldb-storage-adapter.ts":{"bytesInOutput":2397},"packages/core/echo/echo-pipeline/src/automerge/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts":{"bytesInOutput":5427},"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator-connection.ts":{"bytesInOutput":3561}},"bytes":31316},"packages/core/echo/echo-pipeline/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":20640},"packages/core/echo/echo-pipeline/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/echo/echo-pipeline/dist/lib/node/chunk-RH6TDRML.cjs","kind":"import-statement"},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-gossip","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-object-sync","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/feed-store/testing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["MemoryNetworkManagerProvider","TestAdapter","TestAgent","TestAgentBuilder","TestFeedBuilder","WebsocketNetworkManagerProvider","changeStorageVersionInMetadata"],"entryPoint":"packages/core/echo/echo-pipeline/src/testing/index.ts","inputs":{"packages/core/echo/echo-pipeline/src/testing/change-metadata.ts":{"bytesInOutput":843},"packages/core/echo/echo-pipeline/src/testing/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts":{"bytesInOutput":6630},"packages/core/echo/echo-pipeline/src/testing/test-feed-builder.ts":{"bytesInOutput":171},"packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts":{"bytesInOutput":2248}},"bytes":10627},"packages/core/echo/echo-pipeline/dist/lib/node/chunk-RH6TDRML.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":128832},"packages/core/echo/echo-pipeline/dist/lib/node/chunk-RH6TDRML.cjs":{"imports":[{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"crc-32","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/feed-store","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-object-sync","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-replicator","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["AuthExtension","AuthStatus","CredentialRetrieverExtension","CredentialServerExtension","DataServiceImpl","DocumentsSynchronizer","MOCK_AUTH_PROVIDER","MOCK_AUTH_VERIFIER","MetadataStore","Pipeline","SnapshotManager","SnapshotStore","Space","SpaceManager","SpaceProtocol","SpaceProtocolSession","TimeframeClock","codec","createIdFromSpaceKey","createMappedFeedWriter","hasInvitationExpired","mapFeedIndexesToTimeframe","mapTimeframeToFeedIndexes","startAfter","valueEncoding"],"inputs":{"packages/core/echo/echo-pipeline/src/common/codec.ts":{"bytesInOutput":211},"packages/core/echo/echo-pipeline/src/common/feeds.ts":{"bytesInOutput":548},"packages/core/echo/echo-pipeline/src/common/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/db-host/snapshot-manager.ts":{"bytesInOutput":1298},"packages/core/echo/echo-pipeline/src/db-host/snapshot-store.ts":{"bytesInOutput":1292},"packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts":{"bytesInOutput":4207},"packages/core/echo/echo-pipeline/src/db-host/data-service.ts":{"bytesInOutput":2715},"packages/core/echo/echo-pipeline/src/db-host/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts":{"bytesInOutput":10925},"packages/core/echo/echo-pipeline/src/metadata/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts":{"bytesInOutput":2919},"packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts":{"bytesInOutput":12750},"packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts":{"bytesInOutput":769},"packages/core/echo/echo-pipeline/src/pipeline/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/space/auth.ts":{"bytesInOutput":3046},"packages/core/echo/echo-pipeline/src/space/space.ts":{"bytesInOutput":7015},"packages/core/echo/echo-pipeline/src/space/control-pipeline.ts":{"bytesInOutput":8366},"packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts":{"bytesInOutput":1992},"packages/core/echo/echo-pipeline/src/space/space-protocol.ts":{"bytesInOutput":7000},"packages/core/echo/echo-pipeline/src/space/space-manager.ts":{"bytesInOutput":5244},"packages/core/echo/echo-pipeline/src/space/index.ts":{"bytesInOutput":0}},"bytes":72017}}}
1
+ {"inputs":{"packages/core/echo/echo-pipeline/src/common/codec.ts":{"bytes":1690,"imports":[{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/common/feeds.ts":{"bytes":2202,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/common/index.ts":{"bytes":585,"imports":[{"path":"packages/core/echo/echo-pipeline/src/common/codec.ts","kind":"import-statement","original":"./codec"},{"path":"packages/core/echo/echo-pipeline/src/common/feeds.ts","kind":"import-statement","original":"./feeds"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/snapshot-manager.ts":{"bytes":6468,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/snapshot-store.ts":{"bytes":6171,"imports":[{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts":{"bytes":19212,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/collection-synchronizer.ts":{"bytes":21240,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/network-protocol.ts":{"bytes":2737,"imports":[],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/echo-network-adapter.ts":{"bytes":31859,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/automerge/network-protocol.ts","kind":"import-statement","original":"./network-protocol"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/heads-store.ts":{"bytes":3035,"imports":[{"path":"@dxos/indexing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/leveldb-storage-adapter.ts":{"bytes":11789,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts":{"bytes":63235,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/automerge/collection-synchronizer.ts","kind":"import-statement","original":"./collection-synchronizer"},{"path":"packages/core/echo/echo-pipeline/src/automerge/echo-network-adapter.ts","kind":"import-statement","original":"./echo-network-adapter"},{"path":"packages/core/echo/echo-pipeline/src/automerge/heads-store.ts","kind":"import-statement","original":"./heads-store"},{"path":"packages/core/echo/echo-pipeline/src/automerge/leveldb-storage-adapter.ts","kind":"import-statement","original":"./leveldb-storage-adapter"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator-connection.ts":{"bytes":16090,"imports":[{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-automerge-replicator","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/space-collection.ts":{"bytes":1981,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/auth.ts":{"bytes":10731,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts":{"bytes":3861,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts":{"bytes":9762,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts":{"bytes":47570,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/feed-store","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts","kind":"import-statement","original":"./message-selector"},{"path":"packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts","kind":"import-statement","original":"./timeframe-clock"},{"path":"packages/core/echo/echo-pipeline/src/common/index.ts","kind":"import-statement","original":"../common"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/pipeline/index.ts":{"bytes":707,"imports":[{"path":"packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts","kind":"import-statement","original":"./pipeline"},{"path":"packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts","kind":"import-statement","original":"./timeframe-clock"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/control-pipeline.ts":{"bytes":29988,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/pipeline/index.ts","kind":"import-statement","original":"../pipeline"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/space.ts":{"bytes":26184,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/space/control-pipeline.ts","kind":"import-statement","original":"./control-pipeline"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts":{"bytes":8672,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/space-protocol.ts":{"bytes":27067,"imports":[{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-object-sync","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-replicator","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/space/auth.ts","kind":"import-statement","original":"./auth"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/space-manager.ts":{"bytes":20165,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts","kind":"import-statement","original":"./admission-discovery-extension"},{"path":"packages/core/echo/echo-pipeline/src/space/space.ts","kind":"import-statement","original":"./space"},{"path":"packages/core/echo/echo-pipeline/src/space/space-protocol.ts","kind":"import-statement","original":"./space-protocol"},{"path":"packages/core/echo/echo-pipeline/src/db-host/index.ts","kind":"import-statement","original":"../db-host"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/space/index.ts":{"bytes":935,"imports":[{"path":"packages/core/echo/echo-pipeline/src/space/auth.ts","kind":"import-statement","original":"./auth"},{"path":"packages/core/echo/echo-pipeline/src/space/space.ts","kind":"import-statement","original":"./space"},{"path":"packages/core/echo/echo-pipeline/src/space/space-manager.ts","kind":"import-statement","original":"./space-manager"},{"path":"packages/core/echo/echo-pipeline/src/space/space-protocol.ts","kind":"import-statement","original":"./space-protocol"},{"path":"packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts","kind":"import-statement","original":"./admission-discovery-extension"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts":{"bytes":21142,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator-connection.ts","kind":"import-statement","original":"./mesh-echo-replicator-connection"},{"path":"packages/core/echo/echo-pipeline/src/automerge/space-collection.ts","kind":"import-statement","original":"./space-collection"},{"path":"packages/core/echo/echo-pipeline/src/space/index.ts","kind":"import-statement","original":"../space"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/echo-replicator.ts":{"bytes":2660,"imports":[],"format":"esm"},"packages/core/echo/echo-pipeline/src/automerge/index.ts":{"bytes":1219,"imports":[{"path":"packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts","kind":"import-statement","original":"./automerge-host"},{"path":"packages/core/echo/echo-pipeline/src/automerge/leveldb-storage-adapter.ts","kind":"import-statement","original":"./leveldb-storage-adapter"},{"path":"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts","kind":"import-statement","original":"./mesh-echo-replicator"},{"path":"packages/core/echo/echo-pipeline/src/automerge/echo-replicator.ts","kind":"import-statement","original":"./echo-replicator"},{"path":"packages/core/echo/echo-pipeline/src/automerge/collection-synchronizer.ts","kind":"import-statement","original":"./collection-synchronizer"},{"path":"packages/core/echo/echo-pipeline/src/automerge/space-collection.ts","kind":"import-statement","original":"./space-collection"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/data-service.ts":{"bytes":14606,"imports":[{"path":"@dxos/codec-protobuf","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts","kind":"import-statement","original":"./documents-synchronizer"},{"path":"packages/core/echo/echo-pipeline/src/automerge/index.ts","kind":"import-statement","original":"../automerge"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/db-host/index.ts":{"bytes":864,"imports":[{"path":"packages/core/echo/echo-pipeline/src/db-host/snapshot-manager.ts","kind":"import-statement","original":"./snapshot-manager"},{"path":"packages/core/echo/echo-pipeline/src/db-host/snapshot-store.ts","kind":"import-statement","original":"./snapshot-store"},{"path":"packages/core/echo/echo-pipeline/src/db-host/data-service.ts","kind":"import-statement","original":"./data-service"},{"path":"packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts","kind":"import-statement","original":"./documents-synchronizer"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts":{"bytes":40154,"imports":[{"path":"crc-32","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/metadata/index.ts":{"bytes":531,"imports":[{"path":"packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts","kind":"import-statement","original":"./metadata-store"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/index.ts":{"bytes":939,"imports":[{"path":"packages/core/echo/echo-pipeline/src/common/index.ts","kind":"import-statement","original":"./common"},{"path":"packages/core/echo/echo-pipeline/src/db-host/index.ts","kind":"import-statement","original":"./db-host"},{"path":"packages/core/echo/echo-pipeline/src/metadata/index.ts","kind":"import-statement","original":"./metadata"},{"path":"packages/core/echo/echo-pipeline/src/pipeline/index.ts","kind":"import-statement","original":"./pipeline"},{"path":"packages/core/echo/echo-pipeline/src/space/index.ts","kind":"import-statement","original":"./space"},{"path":"packages/core/echo/echo-pipeline/src/automerge/index.ts","kind":"import-statement","original":"./automerge"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/change-metadata.ts":{"bytes":3654,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/metadata/index.ts","kind":"import-statement","original":"../metadata"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/test-feed-builder.ts":{"bytes":1518,"imports":[{"path":"@dxos/feed-store/testing","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/common/index.ts","kind":"import-statement","original":"../common"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts":{"bytes":29258,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-gossip","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-object-sync","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-pipeline/src/testing/test-feed-builder.ts","kind":"import-statement","original":"./test-feed-builder"},{"path":"packages/core/echo/echo-pipeline/src/db-host/index.ts","kind":"import-statement","original":"../db-host"},{"path":"packages/core/echo/echo-pipeline/src/metadata/index.ts","kind":"import-statement","original":"../metadata"},{"path":"packages/core/echo/echo-pipeline/src/space/index.ts","kind":"import-statement","original":"../space"}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts":{"bytes":7559,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/test-replicator.ts":{"bytes":22923,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-automerge-replicator","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-pipeline/src/testing/index.ts":{"bytes":989,"imports":[{"path":"packages/core/echo/echo-pipeline/src/testing/change-metadata.ts","kind":"import-statement","original":"./change-metadata"},{"path":"packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts","kind":"import-statement","original":"./test-agent-builder"},{"path":"packages/core/echo/echo-pipeline/src/testing/test-feed-builder.ts","kind":"import-statement","original":"./test-feed-builder"},{"path":"packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts","kind":"import-statement","original":"./test-network-adapter"},{"path":"packages/core/echo/echo-pipeline/src/testing/test-replicator.ts","kind":"import-statement","original":"./test-replicator"}],"format":"esm"}},"outputs":{"packages/core/echo/echo-pipeline/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/echo/echo-pipeline/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/echo/echo-pipeline/dist/lib/node/chunk-PT5LWMPA.cjs","kind":"import-statement"}],"exports":["AuthExtension","AuthStatus","AutomergeHost","CredentialRetrieverExtension","CredentialServerExtension","DataServiceImpl","DocumentsSynchronizer","LevelDBStorageAdapter","MOCK_AUTH_PROVIDER","MOCK_AUTH_VERIFIER","MeshEchoReplicator","MetadataStore","Pipeline","SnapshotManager","SnapshotStore","Space","SpaceManager","SpaceProtocol","SpaceProtocolSession","TimeframeClock","codec","createIdFromSpaceKey","createMappedFeedWriter","deriveCollectionIdFromSpaceId","diffCollectionState","encodingOptions","getSpaceIdFromCollectionId","getSpaceKeyFromDoc","hasInvitationExpired","mapFeedIndexesToTimeframe","mapTimeframeToFeedIndexes","startAfter","valueEncoding"],"entryPoint":"packages/core/echo/echo-pipeline/src/index.ts","inputs":{"packages/core/echo/echo-pipeline/src/index.ts":{"bytesInOutput":0}},"bytes":1469},"packages/core/echo/echo-pipeline/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":31349},"packages/core/echo/echo-pipeline/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/echo/echo-pipeline/dist/lib/node/chunk-PT5LWMPA.cjs","kind":"import-statement"},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-gossip","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-object-sync","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/feed-store/testing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-automerge-replicator","kind":"import-statement","external":true}],"exports":["MemoryNetworkManagerProvider","TestAdapter","TestAgent","TestAgentBuilder","TestFeedBuilder","TestReplicationNetwork","TestReplicator","TestReplicatorConnection","WebsocketNetworkManagerProvider","brokenAutomergeReplicatorFactory","changeStorageVersionInMetadata","testAutomergeReplicatorFactory"],"entryPoint":"packages/core/echo/echo-pipeline/src/testing/index.ts","inputs":{"packages/core/echo/echo-pipeline/src/testing/change-metadata.ts":{"bytesInOutput":843},"packages/core/echo/echo-pipeline/src/testing/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/testing/test-agent-builder.ts":{"bytesInOutput":6630},"packages/core/echo/echo-pipeline/src/testing/test-feed-builder.ts":{"bytesInOutput":171},"packages/core/echo/echo-pipeline/src/testing/test-network-adapter.ts":{"bytesInOutput":2248},"packages/core/echo/echo-pipeline/src/testing/test-replicator.ts":{"bytesInOutput":6525}},"bytes":17362},"packages/core/echo/echo-pipeline/dist/lib/node/chunk-PT5LWMPA.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":214416},"packages/core/echo/echo-pipeline/dist/lib/node/chunk-PT5LWMPA.cjs":{"imports":[{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/indexing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/feed-store","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/halo/credentials","kind":"import-statement","external":true},{"path":"@dxos/timeframe","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-object-sync","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-replicator","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge-repo","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport-extension-automerge-replicator","kind":"import-statement","external":true},{"path":"crc-32","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["AuthExtension","AuthStatus","AutomergeHost","CredentialRetrieverExtension","CredentialServerExtension","DataServiceImpl","DocumentsSynchronizer","LevelDBStorageAdapter","MOCK_AUTH_PROVIDER","MOCK_AUTH_VERIFIER","MeshEchoReplicator","MetadataStore","Pipeline","SnapshotManager","SnapshotStore","Space","SpaceManager","SpaceProtocol","SpaceProtocolSession","TimeframeClock","codec","createIdFromSpaceKey","createMappedFeedWriter","deriveCollectionIdFromSpaceId","diffCollectionState","encodingOptions","getSpaceIdFromCollectionId","getSpaceKeyFromDoc","hasInvitationExpired","mapFeedIndexesToTimeframe","mapTimeframeToFeedIndexes","startAfter","valueEncoding"],"inputs":{"packages/core/echo/echo-pipeline/src/common/codec.ts":{"bytesInOutput":211},"packages/core/echo/echo-pipeline/src/common/feeds.ts":{"bytesInOutput":548},"packages/core/echo/echo-pipeline/src/common/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/db-host/snapshot-manager.ts":{"bytesInOutput":1298},"packages/core/echo/echo-pipeline/src/db-host/snapshot-store.ts":{"bytesInOutput":1292},"packages/core/echo/echo-pipeline/src/db-host/documents-synchronizer.ts":{"bytesInOutput":4808},"packages/core/echo/echo-pipeline/src/automerge/collection-synchronizer.ts":{"bytesInOutput":4947},"packages/core/echo/echo-pipeline/src/automerge/leveldb-storage-adapter.ts":{"bytesInOutput":2387},"packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts":{"bytesInOutput":15684},"packages/core/echo/echo-pipeline/src/automerge/echo-network-adapter.ts":{"bytesInOutput":9319},"packages/core/echo/echo-pipeline/src/automerge/network-protocol.ts":{"bytesInOutput":296},"packages/core/echo/echo-pipeline/src/automerge/heads-store.ts":{"bytesInOutput":483},"packages/core/echo/echo-pipeline/src/automerge/space-collection.ts":{"bytesInOutput":574},"packages/core/echo/echo-pipeline/src/space/auth.ts":{"bytesInOutput":3064},"packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts":{"bytesInOutput":2919},"packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts":{"bytesInOutput":12747},"packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts":{"bytesInOutput":769},"packages/core/echo/echo-pipeline/src/pipeline/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/space/space.ts":{"bytesInOutput":7049},"packages/core/echo/echo-pipeline/src/space/control-pipeline.ts":{"bytesInOutput":8398},"packages/core/echo/echo-pipeline/src/space/admission-discovery-extension.ts":{"bytesInOutput":1992},"packages/core/echo/echo-pipeline/src/space/space-protocol.ts":{"bytesInOutput":7000},"packages/core/echo/echo-pipeline/src/space/space-manager.ts":{"bytesInOutput":5244},"packages/core/echo/echo-pipeline/src/db-host/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/db-host/data-service.ts":{"bytesInOutput":3425},"packages/core/echo/echo-pipeline/src/automerge/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator.ts":{"bytesInOutput":6236},"packages/core/echo/echo-pipeline/src/automerge/mesh-echo-replicator-connection.ts":{"bytesInOutput":3663},"packages/core/echo/echo-pipeline/src/space/index.ts":{"bytesInOutput":0},"packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts":{"bytesInOutput":11043},"packages/core/echo/echo-pipeline/src/metadata/index.ts":{"bytesInOutput":0}},"bytes":118324}}}