@dxos/echo-pipeline 0.4.8-next.fff1521 → 0.4.9-main.1057b49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{chunk-3FVT6KX6.mjs → chunk-RTEEJ723.mjs} +289 -1807
- package/dist/lib/browser/chunk-RTEEJ723.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +633 -14
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +4 -332
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node/chunk-7VZVCCNF.cjs +1948 -0
- package/dist/lib/node/chunk-7VZVCCNF.cjs.map +7 -0
- package/dist/lib/node/index.cjs +643 -34
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +13 -338
- package/dist/lib/node/testing/index.cjs.map +4 -4
- package/dist/types/src/db-host/data-service.d.ts +3 -13
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/db-host/index.d.ts +0 -2
- package/dist/types/src/db-host/index.d.ts.map +1 -1
- package/dist/types/src/space/control-pipeline.d.ts.map +1 -1
- package/dist/types/src/space/index.d.ts +0 -1
- package/dist/types/src/space/index.d.ts.map +1 -1
- package/dist/types/src/space/space-manager.d.ts +1 -4
- package/dist/types/src/space/space-manager.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +1 -7
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +0 -2
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-agent-builder.d.ts +1 -3
- package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
- package/package.json +30 -33
- package/src/automerge/automerge-host.ts +1 -1
- package/src/db-host/data-service.ts +10 -56
- package/src/db-host/index.ts +0 -2
- package/src/space/control-pipeline.ts +3 -1
- package/src/space/index.ts +0 -1
- package/src/space/space-manager.ts +1 -13
- package/src/space/space.test.ts +2 -112
- package/src/space/space.ts +2 -60
- package/src/testing/index.ts +0 -2
- package/src/testing/test-agent-builder.ts +3 -8
- package/dist/lib/browser/chunk-3FVT6KX6.mjs.map +0 -7
- package/dist/lib/node/chunk-WZ4WTAN6.cjs +0 -3454
- package/dist/lib/node/chunk-WZ4WTAN6.cjs.map +0 -7
- package/dist/types/src/db-host/data-service-host.d.ts +0 -38
- package/dist/types/src/db-host/data-service-host.d.ts.map +0 -1
- package/dist/types/src/db-host/database-host.d.ts +0 -27
- package/dist/types/src/db-host/database-host.d.ts.map +0 -1
- package/dist/types/src/space/data-pipeline.d.ts +0 -80
- package/dist/types/src/space/data-pipeline.d.ts.map +0 -1
- package/dist/types/src/space/data-pipeline.test.d.ts +0 -1
- package/dist/types/src/space/data-pipeline.test.d.ts.map +0 -1
- package/dist/types/src/testing/database-test-rig.d.ts +0 -67
- package/dist/types/src/testing/database-test-rig.d.ts.map +0 -1
- package/dist/types/src/testing/util.d.ts +0 -14
- package/dist/types/src/testing/util.d.ts.map +0 -1
- package/dist/types/src/tests/database.test.d.ts +0 -2
- package/dist/types/src/tests/database.test.d.ts.map +0 -1
- package/src/db-host/data-service-host.ts +0 -233
- package/src/db-host/database-host.ts +0 -63
- package/src/space/data-pipeline.test.ts +0 -3
- package/src/space/data-pipeline.ts +0 -468
- package/src/testing/database-test-rig.ts +0 -289
- package/src/testing/util.ts +0 -85
- package/src/tests/database.test.ts +0 -100
package/src/space/space.ts
CHANGED
|
@@ -2,22 +2,20 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { Event, synchronized, trackLeaks
|
|
5
|
+
import { Event, Mutex, synchronized, trackLeaks } from '@dxos/async';
|
|
6
6
|
import { type Context } from '@dxos/context';
|
|
7
7
|
import { type FeedInfo } from '@dxos/credentials';
|
|
8
8
|
import { type FeedOptions, type FeedWrapper } from '@dxos/feed-store';
|
|
9
9
|
import { invariant } from '@dxos/invariant';
|
|
10
10
|
import { type PublicKey } from '@dxos/keys';
|
|
11
11
|
import { log, logInfo } from '@dxos/log';
|
|
12
|
-
import { type ModelFactory } from '@dxos/model-factory';
|
|
13
12
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
14
13
|
import { AdmittedFeed, type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
15
14
|
import { type Timeframe } from '@dxos/timeframe';
|
|
16
15
|
import { trace } from '@dxos/tracing';
|
|
17
|
-
import { type AsyncCallback
|
|
16
|
+
import { Callback, type AsyncCallback } from '@dxos/util';
|
|
18
17
|
|
|
19
18
|
import { ControlPipeline } from './control-pipeline';
|
|
20
|
-
import { DataPipeline } from './data-pipeline';
|
|
21
19
|
import { type SpaceProtocol } from './space-protocol';
|
|
22
20
|
import { type SnapshotManager } from '../db-host';
|
|
23
21
|
import { type MetadataStore } from '../metadata';
|
|
@@ -31,7 +29,6 @@ export type SpaceParams = {
|
|
|
31
29
|
protocol: SpaceProtocol;
|
|
32
30
|
genesisFeed: FeedWrapper<FeedMessage>;
|
|
33
31
|
feedProvider: FeedProvider;
|
|
34
|
-
modelFactory: ModelFactory;
|
|
35
32
|
metadataStore: MetadataStore;
|
|
36
33
|
snapshotManager: SnapshotManager;
|
|
37
34
|
memberKey: PublicKey;
|
|
@@ -65,9 +62,6 @@ export class Space {
|
|
|
65
62
|
@trace.info()
|
|
66
63
|
private readonly _controlPipeline: ControlPipeline;
|
|
67
64
|
|
|
68
|
-
@trace.info()
|
|
69
|
-
private readonly _dataPipeline: DataPipeline;
|
|
70
|
-
|
|
71
65
|
private readonly _snapshotManager: SnapshotManager;
|
|
72
66
|
|
|
73
67
|
private _isOpen = false;
|
|
@@ -93,17 +87,6 @@ export class Space {
|
|
|
93
87
|
// Enable sparse replication to not download mutations covered by prior epochs.
|
|
94
88
|
const sparse = info.assertion.designation === AdmittedFeed.Designation.DATA;
|
|
95
89
|
|
|
96
|
-
if (info.assertion.designation === AdmittedFeed.Designation.DATA) {
|
|
97
|
-
// We will add all existing data feeds when the data pipeline is initialized.
|
|
98
|
-
queueMicrotask(async () => {
|
|
99
|
-
if (this._dataPipeline.pipeline) {
|
|
100
|
-
if (!this._dataPipeline.pipeline.hasFeed(info.key)) {
|
|
101
|
-
return this._dataPipeline.pipeline.addFeed(await this._feedProvider(info.key, { sparse }));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
|
|
107
90
|
if (!info.key.equals(params.genesisFeed.key)) {
|
|
108
91
|
queueMicrotask(async () => {
|
|
109
92
|
this.protocol.addFeed(await params.feedProvider(info.key, { sparse }));
|
|
@@ -120,30 +103,6 @@ export class Space {
|
|
|
120
103
|
// Start replicating the genesis feed.
|
|
121
104
|
this.protocol = params.protocol;
|
|
122
105
|
this.protocol.addFeed(params.genesisFeed);
|
|
123
|
-
|
|
124
|
-
this._dataPipeline = new DataPipeline({
|
|
125
|
-
modelFactory: params.modelFactory,
|
|
126
|
-
metadataStore: params.metadataStore,
|
|
127
|
-
snapshotManager: params.snapshotManager,
|
|
128
|
-
memberKey: params.memberKey,
|
|
129
|
-
spaceKey: this._key,
|
|
130
|
-
feedInfoProvider: (feedKey) => this._controlPipeline.spaceState.feeds.get(feedKey),
|
|
131
|
-
snapshotId: params.snapshotId,
|
|
132
|
-
onPipelineCreated: async (pipeline) => {
|
|
133
|
-
if (this._dataFeed) {
|
|
134
|
-
pipeline.setWriteFeed(this._dataFeed);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// Add existing feeds.
|
|
138
|
-
await this._addFeedMutex.executeSynchronized(async () => {
|
|
139
|
-
for (const feed of this._controlPipeline.spaceState.feeds.values()) {
|
|
140
|
-
if (feed.assertion.designation === AdmittedFeed.Designation.DATA && !pipeline.hasFeed(feed.key)) {
|
|
141
|
-
await pipeline.addFeed(await this._feedProvider(feed.key, { sparse: true }));
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
106
|
}
|
|
148
107
|
|
|
149
108
|
@logInfo
|
|
@@ -179,10 +138,6 @@ export class Space {
|
|
|
179
138
|
return this._controlPipeline.pipeline;
|
|
180
139
|
}
|
|
181
140
|
|
|
182
|
-
get dataPipeline(): DataPipeline {
|
|
183
|
-
return this._dataPipeline;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
141
|
get snapshotManager(): SnapshotManager {
|
|
187
142
|
return this._snapshotManager;
|
|
188
143
|
}
|
|
@@ -197,8 +152,6 @@ export class Space {
|
|
|
197
152
|
async setDataFeed(feed: FeedWrapper<FeedMessage>) {
|
|
198
153
|
invariant(!this._dataFeed, 'Data feed already set.');
|
|
199
154
|
this._dataFeed = feed;
|
|
200
|
-
await this._dataPipeline.pipeline?.addFeed(feed);
|
|
201
|
-
this._dataPipeline.pipeline?.setWriteFeed(feed);
|
|
202
155
|
return this;
|
|
203
156
|
}
|
|
204
157
|
|
|
@@ -226,7 +179,6 @@ export class Space {
|
|
|
226
179
|
// Order is important.
|
|
227
180
|
await this._controlPipeline.start();
|
|
228
181
|
await this.protocol.start();
|
|
229
|
-
await this._controlPipeline.spaceState.addCredentialProcessor(this._dataPipeline);
|
|
230
182
|
|
|
231
183
|
this._isOpen = true;
|
|
232
184
|
log('opened');
|
|
@@ -238,9 +190,6 @@ export class Space {
|
|
|
238
190
|
if (!this._isOpen) {
|
|
239
191
|
return;
|
|
240
192
|
}
|
|
241
|
-
await this._controlPipeline.spaceState.removeCredentialProcessor(this._dataPipeline);
|
|
242
|
-
|
|
243
|
-
await this._dataPipeline.close();
|
|
244
193
|
|
|
245
194
|
// Closes in reverse order to open.
|
|
246
195
|
await this.protocol.stop();
|
|
@@ -249,11 +198,4 @@ export class Space {
|
|
|
249
198
|
this._isOpen = false;
|
|
250
199
|
log('closed');
|
|
251
200
|
}
|
|
252
|
-
|
|
253
|
-
@synchronized
|
|
254
|
-
async initializeDataPipeline() {
|
|
255
|
-
log('initializeDataPipeline');
|
|
256
|
-
invariant(this._isOpen, 'Space must be open to initialize data pipeline.');
|
|
257
|
-
await this._dataPipeline.open();
|
|
258
|
-
}
|
|
259
201
|
}
|
package/src/testing/index.ts
CHANGED
|
@@ -4,17 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
import { Context } from '@dxos/context';
|
|
6
6
|
import { CredentialGenerator } from '@dxos/credentials';
|
|
7
|
-
import { DocumentModel } from '@dxos/document-model';
|
|
8
7
|
import { type FeedStore } from '@dxos/feed-store';
|
|
9
8
|
import { type Keyring } from '@dxos/keyring';
|
|
10
9
|
import { PublicKey } from '@dxos/keys';
|
|
11
10
|
import { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';
|
|
12
|
-
import {
|
|
13
|
-
import { createSimplePeerTransportFactory, MemoryTransportFactory, NetworkManager } from '@dxos/network-manager';
|
|
11
|
+
import { MemoryTransportFactory, NetworkManager, createSimplePeerTransportFactory } from '@dxos/network-manager';
|
|
14
12
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
15
13
|
import { type SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
16
14
|
import { AdmittedFeed } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
17
|
-
import { createStorage, type Storage
|
|
15
|
+
import { StorageType, createStorage, type Storage } from '@dxos/random-access-storage';
|
|
18
16
|
import { Gossip, Presence } from '@dxos/teleport-extension-gossip';
|
|
19
17
|
import { BlobStore } from '@dxos/teleport-extension-object-sync';
|
|
20
18
|
import { ComplexMap } from '@dxos/util';
|
|
@@ -22,7 +20,7 @@ import { ComplexMap } from '@dxos/util';
|
|
|
22
20
|
import { TestFeedBuilder } from './test-feed-builder';
|
|
23
21
|
import { SnapshotStore } from '../db-host';
|
|
24
22
|
import { MetadataStore } from '../metadata';
|
|
25
|
-
import { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER,
|
|
23
|
+
import { MOCK_AUTH_PROVIDER, MOCK_AUTH_VERIFIER, SpaceManager, SpaceProtocol, type Space } from '../space';
|
|
26
24
|
|
|
27
25
|
export type NetworkManagerProvider = () => NetworkManager;
|
|
28
26
|
|
|
@@ -112,8 +110,6 @@ export class TestAgent {
|
|
|
112
110
|
return (this._blobStore ??= new BlobStore(this.storage.createDirectory('blobs')));
|
|
113
111
|
}
|
|
114
112
|
|
|
115
|
-
public modelFactory = new ModelFactory().registerModel(DocumentModel);
|
|
116
|
-
|
|
117
113
|
constructor(
|
|
118
114
|
private readonly _networkManagerProvider: NetworkManagerProvider,
|
|
119
115
|
private readonly _feedBuilder: TestFeedBuilder,
|
|
@@ -142,7 +138,6 @@ export class TestAgent {
|
|
|
142
138
|
return (this._spaceManager ??= new SpaceManager({
|
|
143
139
|
feedStore: this.feedStore,
|
|
144
140
|
networkManager: this._networkManagerProvider(),
|
|
145
|
-
modelFactory: this.modelFactory,
|
|
146
141
|
metadataStore: this.metadataStore,
|
|
147
142
|
snapshotStore: this.snapshotStore,
|
|
148
143
|
blobStore: this.blobStore,
|