@dxos/echo-db 2.33.5-dev.cf9f6681 → 2.33.5-dev.fa6b779b
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/src/echo.d.ts.map +1 -1
- package/dist/src/echo.js +1 -1
- package/dist/src/echo.js.map +1 -1
- package/dist/src/echo.test.js +0 -4
- package/dist/src/echo.test.js.map +1 -1
- package/dist/src/halo/halo-factory.d.ts +4 -4
- package/dist/src/halo/halo-factory.d.ts.map +1 -1
- package/dist/src/halo/halo-factory.js +3 -2
- package/dist/src/halo/halo-factory.js.map +1 -1
- package/dist/src/halo/halo-party.d.ts +4 -3
- package/dist/src/halo/halo-party.d.ts.map +1 -1
- package/dist/src/halo/halo-party.js +8 -4
- package/dist/src/halo/halo-party.js.map +1 -1
- package/dist/src/halo/halo.d.ts +2 -2
- package/dist/src/halo/halo.d.ts.map +1 -1
- package/dist/src/halo/party-opener.d.ts.map +1 -1
- package/dist/src/halo/party-opener.js +3 -1
- package/dist/src/halo/party-opener.js.map +1 -1
- package/dist/src/invitations/greeting-initiator.d.ts +2 -2
- package/dist/src/invitations/greeting-initiator.d.ts.map +1 -1
- package/dist/src/invitations/greeting-initiator.js +2 -1
- package/dist/src/invitations/greeting-initiator.js.map +1 -1
- package/dist/src/packlets/database/data-mirror.test.js +2 -2
- package/dist/src/packlets/database/data-mirror.test.js.map +1 -1
- package/dist/src/packlets/database/database-backend.d.ts +4 -5
- package/dist/src/packlets/database/database-backend.d.ts.map +1 -1
- package/dist/src/packlets/database/database-backend.js +5 -6
- package/dist/src/packlets/database/database-backend.js.map +1 -1
- package/dist/src/packlets/database/item-demuxer.d.ts +2 -2
- package/dist/src/packlets/database/item-demuxer.d.ts.map +1 -1
- package/dist/src/packlets/database/item-demuxer.js +2 -3
- package/dist/src/packlets/database/item-demuxer.js.map +1 -1
- package/dist/src/packlets/database/item-demuxer.test.js +13 -9
- package/dist/src/packlets/database/item-demuxer.test.js.map +1 -1
- package/dist/src/packlets/database/testing.d.ts.map +1 -1
- package/dist/src/packlets/database/testing.js +3 -4
- package/dist/src/packlets/database/testing.js.map +1 -1
- package/dist/src/packlets/database/timeframe-clock.d.ts +1 -0
- package/dist/src/packlets/database/timeframe-clock.d.ts.map +1 -1
- package/dist/src/packlets/database/timeframe-clock.js +3 -0
- package/dist/src/packlets/database/timeframe-clock.js.map +1 -1
- package/dist/src/parties/data-party.d.ts +6 -5
- package/dist/src/parties/data-party.d.ts.map +1 -1
- package/dist/src/parties/data-party.js +26 -5
- package/dist/src/parties/data-party.js.map +1 -1
- package/dist/src/parties/data-party.test.js +24 -5
- package/dist/src/parties/data-party.test.js.map +1 -1
- package/dist/src/parties/party-factory.d.ts +5 -4
- package/dist/src/parties/party-factory.d.ts.map +1 -1
- package/dist/src/parties/party-factory.js +13 -9
- package/dist/src/parties/party-factory.js.map +1 -1
- package/dist/src/parties/party-manager.d.ts +3 -4
- package/dist/src/parties/party-manager.d.ts.map +1 -1
- package/dist/src/parties/party-manager.js +8 -7
- package/dist/src/parties/party-manager.js.map +1 -1
- package/dist/src/parties/party-manager.test.js +3 -6
- package/dist/src/parties/party-manager.test.js.map +1 -1
- package/dist/src/pipeline/{pipeline.d.ts → feed-muxer.d.ts} +8 -11
- package/dist/src/pipeline/feed-muxer.d.ts.map +1 -0
- package/dist/src/pipeline/{pipeline.js → feed-muxer.js} +33 -40
- package/dist/src/pipeline/feed-muxer.js.map +1 -0
- package/dist/src/pipeline/feed-muxer.test.d.ts +2 -0
- package/dist/src/pipeline/feed-muxer.test.d.ts.map +1 -0
- package/dist/src/pipeline/{pipeline.test.js → feed-muxer.test.js} +16 -13
- package/dist/src/pipeline/feed-muxer.test.js.map +1 -0
- package/dist/src/pipeline/index.d.ts +2 -2
- package/dist/src/pipeline/index.d.ts.map +1 -1
- package/dist/src/pipeline/index.js +2 -2
- package/dist/src/pipeline/index.js.map +1 -1
- package/dist/src/pipeline/metadata-store.d.ts +2 -1
- package/dist/src/pipeline/metadata-store.d.ts.map +1 -1
- package/dist/src/pipeline/metadata-store.js +6 -0
- package/dist/src/pipeline/metadata-store.js.map +1 -1
- package/dist/src/pipeline/party-feed-provider.d.ts +2 -3
- package/dist/src/pipeline/party-feed-provider.d.ts.map +1 -1
- package/dist/src/pipeline/party-feed-provider.js +2 -17
- package/dist/src/pipeline/party-feed-provider.js.map +1 -1
- package/dist/src/pipeline/{party-core.d.ts → party-pipeline.d.ts} +23 -9
- package/dist/src/pipeline/party-pipeline.d.ts.map +1 -0
- package/dist/src/pipeline/{party-core.js → party-pipeline.js} +26 -25
- package/dist/src/pipeline/party-pipeline.js.map +1 -0
- package/dist/src/pipeline/party-pipeline.test.d.ts +2 -0
- package/dist/src/pipeline/party-pipeline.test.d.ts.map +1 -0
- package/dist/src/pipeline/{party-core.test.js → party-pipeline.test.js} +37 -21
- package/dist/src/pipeline/party-pipeline.test.js.map +1 -0
- package/dist/src/snapshots/snapshot-generator.d.ts +2 -2
- package/dist/src/snapshots/snapshot-generator.d.ts.map +1 -1
- package/dist/src/snapshots/snapshot-generator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -17
- package/src/echo.test.ts +0 -4
- package/src/echo.ts +1 -0
- package/src/halo/halo-factory.ts +6 -6
- package/src/halo/halo-party.ts +10 -8
- package/src/halo/halo.ts +2 -2
- package/src/halo/party-opener.ts +3 -1
- package/src/invitations/greeting-initiator.ts +5 -4
- package/src/packlets/database/data-mirror.test.ts +2 -2
- package/src/packlets/database/database-backend.ts +7 -6
- package/src/packlets/database/item-demuxer.test.ts +20 -18
- package/src/packlets/database/item-demuxer.ts +5 -4
- package/src/packlets/database/testing.ts +3 -6
- package/src/packlets/database/timeframe-clock.ts +4 -0
- package/src/parties/data-party.test.ts +39 -8
- package/src/parties/data-party.ts +31 -9
- package/src/parties/party-factory.ts +17 -15
- package/src/parties/party-manager.test.ts +4 -5
- package/src/parties/party-manager.ts +9 -6
- package/src/pipeline/{pipeline.test.ts → feed-muxer.test.ts} +19 -14
- package/src/pipeline/{pipeline.ts → feed-muxer.ts} +38 -51
- package/src/pipeline/index.ts +2 -2
- package/src/pipeline/metadata-store.ts +7 -1
- package/src/pipeline/party-feed-provider.ts +3 -16
- package/src/pipeline/{party-core.test.ts → party-pipeline.test.ts} +35 -14
- package/src/pipeline/{party-core.ts → party-pipeline.ts} +53 -24
- package/src/snapshots/snapshot-generator.ts +2 -2
- package/dist/src/pipeline/party-core.d.ts.map +0 -1
- package/dist/src/pipeline/party-core.js.map +0 -1
- package/dist/src/pipeline/party-core.test.d.ts +0 -2
- package/dist/src/pipeline/party-core.test.d.ts.map +0 -1
- package/dist/src/pipeline/party-core.test.js.map +0 -1
- package/dist/src/pipeline/pipeline.d.ts.map +0 -1
- package/dist/src/pipeline/pipeline.js.map +0 -1
- package/dist/src/pipeline/pipeline.test.d.ts +0 -2
- package/dist/src/pipeline/pipeline.test.d.ts.map +0 -1
- package/dist/src/pipeline/pipeline.test.js.map +0 -1
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { DatabaseSnapshot, DataService, EchoEnvelope, FeedWriter, PartyKey } from '@dxos/echo-protocol';
|
|
3
2
|
import { ModelFactory } from '@dxos/model-factory';
|
|
4
3
|
import { DataServiceHost } from './data-service-host';
|
|
5
|
-
import { ItemDemuxerOptions } from './item-demuxer';
|
|
4
|
+
import { EchoProcessor, ItemDemuxerOptions } from './item-demuxer';
|
|
6
5
|
import { ItemManager } from './item-manager';
|
|
7
6
|
/**
|
|
8
7
|
* Generic interface to represent a backend for the database.
|
|
@@ -26,15 +25,15 @@ export interface DatabaseBackend {
|
|
|
26
25
|
* Write operations result in mutations being written to the outgoing stream.
|
|
27
26
|
*/
|
|
28
27
|
export declare class FeedDatabaseBackend implements DatabaseBackend {
|
|
29
|
-
private readonly _inboundStream;
|
|
30
28
|
private readonly _outboundStream;
|
|
31
29
|
private readonly _snapshot?;
|
|
32
30
|
private readonly _options;
|
|
33
|
-
private
|
|
31
|
+
private _echoProcessor;
|
|
34
32
|
private _itemManager;
|
|
35
33
|
private _itemDemuxer;
|
|
36
|
-
constructor(
|
|
34
|
+
constructor(_outboundStream: FeedWriter<EchoEnvelope> | undefined, _snapshot?: DatabaseSnapshot | undefined, _options?: ItemDemuxerOptions);
|
|
37
35
|
open(itemManager: ItemManager, modelFactory: ModelFactory): Promise<void>;
|
|
36
|
+
get echoProcessor(): EchoProcessor;
|
|
38
37
|
close(): Promise<void>;
|
|
39
38
|
get isReadOnly(): boolean;
|
|
40
39
|
getWriteStream(): FeedWriter<EchoEnvelope> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-backend.d.ts","sourceRoot":"","sources":["../../../../src/packlets/database/database-backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database-backend.d.ts","sourceRoot":"","sources":["../../../../src/packlets/database/database-backend.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAe,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtB,UAAU,EAAE,OAAO,CAAA;IAEnB,cAAc,IAAI,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;IAEtD,cAAc,IAAI,gBAAgB,CAAA;IAElC,qBAAqB,IAAI,eAAe,CAAA;CACzC;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IAMvD,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;gBAGhB,eAAe,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS,EACrD,SAAS,CAAC,8BAAkB,EAC5B,QAAQ,GAAE,kBAAuB;IAG9C,IAAI,CAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY;IAUhE,IAAI,aAAa,kBAEhB;IAEK,KAAK;IAGX,IAAI,UAAU,IAAK,OAAO,CAEzB;IAED,cAAc,IAAK,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS;IAIvD,cAAc;IAId,qBAAqB;CAOtB;AAED;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAIzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,OAAO,CAAC,YAAY,CAAe;gBAGhB,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,QAAQ;IAGhC,IAAI,CAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1E,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAI7B,IAAI,UAAU,IAAK,OAAO,CAEzB;IAED,cAAc,IAAK,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS;IAevD,cAAc,IAAK,gBAAgB;IAInC,qBAAqB,IAAK,eAAe;CAG1C"}
|
|
@@ -20,8 +20,7 @@ const log = (0, debug_1.default)('dxos:echo-db:database-backend');
|
|
|
20
20
|
* Write operations result in mutations being written to the outgoing stream.
|
|
21
21
|
*/
|
|
22
22
|
class FeedDatabaseBackend {
|
|
23
|
-
constructor(
|
|
24
|
-
this._inboundStream = _inboundStream;
|
|
23
|
+
constructor(_outboundStream, _snapshot, _options = {}) {
|
|
25
24
|
this._outboundStream = _outboundStream;
|
|
26
25
|
this._snapshot = _snapshot;
|
|
27
26
|
this._options = _options;
|
|
@@ -29,15 +28,15 @@ class FeedDatabaseBackend {
|
|
|
29
28
|
async open(itemManager, modelFactory) {
|
|
30
29
|
this._itemManager = itemManager;
|
|
31
30
|
this._itemDemuxer = new item_demuxer_1.ItemDemuxer(itemManager, modelFactory, this._options);
|
|
32
|
-
this.
|
|
33
|
-
this._inboundStream.pipe(this._itemDemuxerInboundStream);
|
|
31
|
+
this._echoProcessor = this._itemDemuxer.open();
|
|
34
32
|
if (this._snapshot) {
|
|
35
33
|
await this._itemDemuxer.restoreFromSnapshot(this._snapshot);
|
|
36
34
|
}
|
|
37
35
|
}
|
|
36
|
+
get echoProcessor() {
|
|
37
|
+
return this._echoProcessor;
|
|
38
|
+
}
|
|
38
39
|
async close() {
|
|
39
|
-
var _a;
|
|
40
|
-
(_a = this._inboundStream) === null || _a === void 0 ? void 0 : _a.unpipe(this._itemDemuxerInboundStream);
|
|
41
40
|
}
|
|
42
41
|
get isReadOnly() {
|
|
43
42
|
return !!this._outboundStream;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-backend.js","sourceRoot":"","sources":["../../../../src/packlets/database/database-backend.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,oDAA4B;AAC5B,kDAA0B;AAK1B,+CAA2C;AAC3C,2DAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"database-backend.js","sourceRoot":"","sources":["../../../../src/packlets/database/database-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Event } from '@dxos/async';
|
|
3
2
|
import { DatabaseSnapshot, IEchoStream, ItemSnapshot, LinkSnapshot } from '@dxos/echo-protocol';
|
|
4
3
|
import { Model, ModelFactory } from '@dxos/model-factory';
|
|
@@ -8,6 +7,7 @@ import { Link } from './link';
|
|
|
8
7
|
export interface ItemDemuxerOptions {
|
|
9
8
|
snapshots?: boolean;
|
|
10
9
|
}
|
|
10
|
+
export declare type EchoProcessor = (message: IEchoStream) => Promise<void>;
|
|
11
11
|
/**
|
|
12
12
|
* Creates a stream that consumes `IEchoStream` messages and routes them to the associated items.
|
|
13
13
|
* @param itemManager
|
|
@@ -18,7 +18,7 @@ export declare class ItemDemuxer {
|
|
|
18
18
|
private readonly _options;
|
|
19
19
|
readonly mutation: Event<IEchoStream>;
|
|
20
20
|
constructor(_itemManager: ItemManager, _modelFactory: ModelFactory, _options?: ItemDemuxerOptions);
|
|
21
|
-
open():
|
|
21
|
+
open(): EchoProcessor;
|
|
22
22
|
createSnapshot(): DatabaseSnapshot;
|
|
23
23
|
createItemSnapshot(item: Item<Model<any>>): ItemSnapshot;
|
|
24
24
|
createLinkSnapshot(link: Link<Model<any>>): LinkSnapshot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-demuxer.d.ts","sourceRoot":"","sources":["../../../../src/packlets/database/item-demuxer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"item-demuxer.d.ts","sourceRoot":"","sources":["../../../../src/packlets/database/item-demuxer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAU,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AAGxE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAA4B,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI9B,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,oBAAY,aAAa,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEnE;;;GAGG;AACH,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,QAAQ,CAAC,QAAQ,qBAA4B;gBAG1B,YAAY,EAAE,WAAW,EACzB,aAAa,EAAE,YAAY,EAC3B,QAAQ,GAAE,kBAAuB;IAGpD,IAAI,IAAK,aAAa;IA+EtB,cAAc,IAAK,gBAAgB;IAQnC,kBAAkB,CAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY;IAYzD,kBAAkB,CAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY;IAanD,mBAAmB,CAAE,QAAQ,EAAE,gBAAgB;CAkCtD;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,UAAW,YAAY,EAAE,KAAG,YAAY,EAmB1E,CAAC"}
|
|
@@ -11,7 +11,6 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
11
11
|
const debug_1 = __importDefault(require("debug"));
|
|
12
12
|
const async_1 = require("@dxos/async");
|
|
13
13
|
const debug_2 = require("@dxos/debug");
|
|
14
|
-
const feed_store_1 = require("@dxos/feed-store");
|
|
15
14
|
const log = (0, debug_1.default)('dxos:echo-db:item-demuxer');
|
|
16
15
|
/**
|
|
17
16
|
* Creates a stream that consumes `IEchoStream` messages and routes them to the associated items.
|
|
@@ -34,7 +33,7 @@ class ItemDemuxer {
|
|
|
34
33
|
});
|
|
35
34
|
// TODO(burdon): Factor out.
|
|
36
35
|
// TODO(burdon): Should this implement some "back-pressure" (hints) to the PartyProcessor?
|
|
37
|
-
return
|
|
36
|
+
return async (message) => {
|
|
38
37
|
var _a, _b, _c;
|
|
39
38
|
const { data: { itemId, genesis, itemMutation, mutation, snapshot }, meta } = message;
|
|
40
39
|
(0, assert_1.default)(itemId);
|
|
@@ -91,7 +90,7 @@ class ItemDemuxer {
|
|
|
91
90
|
entity._stateManager.resetToSnapshot(snapshot);
|
|
92
91
|
}
|
|
93
92
|
this.mutation.emit(message);
|
|
94
|
-
}
|
|
93
|
+
};
|
|
95
94
|
}
|
|
96
95
|
createSnapshot() {
|
|
97
96
|
(0, assert_1.default)(this._options.snapshots, 'Snapshots are disabled');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-demuxer.js","sourceRoot":"","sources":["../../../../src/packlets/database/item-demuxer.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,oDAA4B;AAC5B,kDAA0B;AAE1B,uCAAoC;AACpC,uCAA4C;
|
|
1
|
+
{"version":3,"file":"item-demuxer.js","sourceRoot":"","sources":["../../../../src/packlets/database/item-demuxer.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,6 @@ const async_1 = require("@dxos/async");
|
|
|
13
13
|
const crypto_1 = require("@dxos/crypto");
|
|
14
14
|
const debug_2 = require("@dxos/debug");
|
|
15
15
|
const echo_protocol_1 = require("@dxos/echo-protocol");
|
|
16
|
-
const feed_store_1 = require("@dxos/feed-store");
|
|
17
16
|
const model_factory_1 = require("@dxos/model-factory");
|
|
18
17
|
const object_model_1 = require("@dxos/object-model");
|
|
19
18
|
const item_1 = require("./item");
|
|
@@ -29,7 +28,7 @@ describe('Item demuxer', () => {
|
|
|
29
28
|
const itemManager = new item_manager_1.ItemManager(modelFactory, crypto_1.PublicKey.random(), feedWriter);
|
|
30
29
|
const itemDemuxer = new item_demuxer_1.ItemDemuxer(itemManager, modelFactory);
|
|
31
30
|
const inboundStream = itemDemuxer.open();
|
|
32
|
-
feedWriter.written.on(([msg, meta]) => inboundStream
|
|
31
|
+
feedWriter.written.on(([msg, meta]) => inboundStream({
|
|
33
32
|
data: msg,
|
|
34
33
|
meta: { ...meta, memberKey }
|
|
35
34
|
}));
|
|
@@ -79,7 +78,15 @@ describe('Item demuxer', () => {
|
|
|
79
78
|
it('models can be registered after item was already created', async () => {
|
|
80
79
|
const modelFactory = new model_factory_1.ModelFactory()
|
|
81
80
|
.registerModel(object_model_1.ObjectModel);
|
|
82
|
-
const
|
|
81
|
+
const itemManager = new item_manager_1.ItemManager(modelFactory, crypto_1.PublicKey.random(), {
|
|
82
|
+
write: async (message) => {
|
|
83
|
+
void processEchoMessage(message);
|
|
84
|
+
return { feedKey: crypto_1.PublicKey.random(), seq: 0 };
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
const itemDemuxer = new item_demuxer_1.ItemDemuxer(itemManager, modelFactory);
|
|
88
|
+
const processor = itemDemuxer.open();
|
|
89
|
+
const processEchoMessage = (message) => processor({
|
|
83
90
|
meta: {
|
|
84
91
|
feedKey: crypto_1.PublicKey.random(),
|
|
85
92
|
memberKey: crypto_1.PublicKey.random(),
|
|
@@ -87,17 +94,14 @@ describe('Item demuxer', () => {
|
|
|
87
94
|
timeframe: new echo_protocol_1.Timeframe()
|
|
88
95
|
},
|
|
89
96
|
data: message
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
const itemDemuxer = new item_demuxer_1.ItemDemuxer(itemManager, modelFactory);
|
|
93
|
-
writeStream.pipe(itemDemuxer.open());
|
|
94
|
-
writeStream.write((0, debug_2.checkType)({
|
|
97
|
+
});
|
|
98
|
+
void processEchoMessage((0, debug_2.checkType)({
|
|
95
99
|
itemId: 'foo',
|
|
96
100
|
genesis: {
|
|
97
101
|
modelType: model_factory_1.TestModel.meta.type
|
|
98
102
|
}
|
|
99
103
|
}));
|
|
100
|
-
|
|
104
|
+
void processEchoMessage((0, debug_2.checkType)({
|
|
101
105
|
itemId: 'bar',
|
|
102
106
|
genesis: {
|
|
103
107
|
modelType: object_model_1.ObjectModel.meta.type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-demuxer.test.js","sourceRoot":"","sources":["../../../../src/packlets/database/item-demuxer.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;AAEF,kDAA0B;AAC1B,oDAA4B;AAC5B,iCAAmC;AAEnC,uCAAoC;AACpC,yCAAmD;AACnD,uCAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"item-demuxer.test.js","sourceRoot":"","sources":["../../../../src/packlets/database/item-demuxer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../../src/packlets/database/testing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../../src/packlets/database/testing.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,eAAO,MAAM,sBAAsB,iBAAwB,YAAY,sBAYtE,CAAC;AAEF,eAAO,MAAM,uCAAuC,iBACpC,YAAY,mBACT,eAAe,sBAajC,CAAC"}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
//
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createRemoteDatabaseFromDataServiceHost = exports.createInMemoryDatabase = void 0;
|
|
7
|
-
const stream_1 = require("stream");
|
|
8
7
|
const crypto_1 = require("@dxos/crypto");
|
|
9
8
|
const echo_protocol_1 = require("@dxos/echo-protocol");
|
|
10
9
|
const data_service_router_1 = require("./data-service-router");
|
|
@@ -12,9 +11,9 @@ const database_1 = require("./database");
|
|
|
12
11
|
const database_backend_1 = require("./database-backend");
|
|
13
12
|
const createInMemoryDatabase = async (modelFactory) => {
|
|
14
13
|
const feed = new echo_protocol_1.MockFeedWriter();
|
|
15
|
-
const
|
|
16
|
-
feed.written.on(([data, meta]) =>
|
|
17
|
-
const database = new database_1.Database(modelFactory,
|
|
14
|
+
const backend = new database_backend_1.FeedDatabaseBackend(feed, undefined, { snapshots: true });
|
|
15
|
+
feed.written.on(([data, meta]) => backend.echoProcessor({ data, meta: { ...meta, memberKey: crypto_1.PublicKey.random(), timeframe: new echo_protocol_1.Timeframe([[meta.feedKey, meta.seq]]) } }));
|
|
16
|
+
const database = new database_1.Database(modelFactory, backend, crypto_1.PublicKey.random());
|
|
18
17
|
await database.initialize();
|
|
19
18
|
return database;
|
|
20
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../../src/packlets/database/testing.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../../src/packlets/database/testing.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,yCAAyC;AACzC,uDAA8E;AAI9E,+DAA0D;AAC1D,yCAAsC;AACtC,yDAAgF;AAEzE,MAAM,sBAAsB,GAAG,KAAK,EAAE,YAA0B,EAAE,EAAE;IACzE,MAAM,IAAI,GAAG,IAAI,8BAAc,EAAgB,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,sCAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,kBAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,yBAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3K,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAC3B,YAAY,EACZ,OAAO,EACP,kBAAS,CAAC,MAAM,EAAE,CACnB,CAAC;IAEF,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC5B,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAZW,QAAA,sBAAsB,0BAYjC;AAEK,MAAM,uCAAuC,GAAG,KAAK,EAC1D,YAA0B,EAC1B,eAAgC,EAChC,EAAE;IACF,MAAM,QAAQ,GAAG,kBAAS,CAAC,MAAM,EAAE,CAAC;IACpC,MAAM,iBAAiB,GAAG,IAAI,uCAAiB,EAAE,CAAC;IAClD,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAC3B,YAAY,EACZ,IAAI,wCAAqB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EACtD,kBAAS,CAAC,MAAM,EAAE,CACnB,CAAC;IACF,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC5B,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAfW,QAAA,uCAAuC,2CAelD"}
|
|
@@ -10,5 +10,6 @@ export declare class TimeframeClock {
|
|
|
10
10
|
get timeframe(): Timeframe;
|
|
11
11
|
updateTimeframe(key: FeedKey, seq: number): void;
|
|
12
12
|
hasGaps(timeframe: Timeframe): boolean;
|
|
13
|
+
waitUntilReached(target: Timeframe): Promise<void>;
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=timeframe-clock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeframe-clock.d.ts","sourceRoot":"","sources":["../../../../src/packlets/database/timeframe-clock.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,UAAU;IAHpB,QAAQ,CAAC,MAAM,mBAA0B;gBAG/B,UAAU,YAAkB;IAGtC,IAAI,SAAS,cAEZ;IAED,eAAe,CAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM;IAK1C,OAAO,CAAE,SAAS,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"timeframe-clock.d.ts","sourceRoot":"","sources":["../../../../src/packlets/database/timeframe-clock.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,UAAU;IAHpB,QAAQ,CAAC,MAAM,mBAA0B;gBAG/B,UAAU,YAAkB;IAGtC,IAAI,SAAS,cAEZ;IAED,eAAe,CAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM;IAK1C,OAAO,CAAE,SAAS,EAAE,SAAS;IAKvB,gBAAgB,CAAE,MAAM,EAAE,SAAS;CAG1C"}
|
|
@@ -25,6 +25,9 @@ class TimeframeClock {
|
|
|
25
25
|
const gaps = echo_protocol_1.Timeframe.dependencies(timeframe, this._timeframe);
|
|
26
26
|
return !gaps.isEmpty();
|
|
27
27
|
}
|
|
28
|
+
async waitUntilReached(target) {
|
|
29
|
+
await this.update.waitForCondition(() => echo_protocol_1.Timeframe.dependencies(target, this._timeframe).isEmpty());
|
|
30
|
+
}
|
|
28
31
|
}
|
|
29
32
|
exports.TimeframeClock = TimeframeClock;
|
|
30
33
|
//# sourceMappingURL=timeframe-clock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeframe-clock.js","sourceRoot":"","sources":["../../../../src/packlets/database/timeframe-clock.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,uCAAoC;AACpC,uDAAyD;AAEzD;;GAEG;AACH,MAAa,cAAc;IAGzB,YACU,aAAa,IAAI,yBAAS,EAAE;QAA5B,eAAU,GAAV,UAAU,CAAkB;QAH7B,WAAM,GAAG,IAAI,aAAK,EAAa,CAAC;IAItC,CAAC;IAEJ,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,eAAe,CAAE,GAAY,EAAE,GAAW;QACxC,IAAI,CAAC,UAAU,GAAG,yBAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,yBAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAE,SAAoB;QAC3B,MAAM,IAAI,GAAG,yBAAS,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"timeframe-clock.js","sourceRoot":"","sources":["../../../../src/packlets/database/timeframe-clock.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,uCAAoC;AACpC,uDAAyD;AAEzD;;GAEG;AACH,MAAa,cAAc;IAGzB,YACU,aAAa,IAAI,yBAAS,EAAE;QAA5B,eAAU,GAAV,UAAU,CAAkB;QAH7B,WAAM,GAAG,IAAI,aAAK,EAAa,CAAC;IAItC,CAAC;IAEJ,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,eAAe,CAAE,GAAY,EAAE,GAAW;QACxC,IAAI,CAAC,UAAU,GAAG,yBAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,yBAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAE,SAAoB;QAC3B,MAAM,IAAI,GAAG,yBAAS,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAE,MAAiB;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,yBAAS,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACtG,CAAC;CACF;AAxBD,wCAwBC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
|
-
import { KeyHint } from '@dxos/credentials';
|
|
3
2
|
import { PublicKey } from '@dxos/crypto';
|
|
4
3
|
import { PartyKey, PartySnapshot, Timeframe } from '@dxos/echo-protocol';
|
|
5
4
|
import { FeedDescriptor } from '@dxos/feed-store';
|
|
@@ -10,7 +9,7 @@ import { ResultSet } from '../api';
|
|
|
10
9
|
import { ActivationOptions, Preferences } from '../halo';
|
|
11
10
|
import { InvitationFactory } from '../invitations';
|
|
12
11
|
import { Database, Item } from '../packlets/database';
|
|
13
|
-
import { PartyFeedProvider,
|
|
12
|
+
import { PartyFeedProvider, PipelineOptions, MetadataStore } from '../pipeline';
|
|
14
13
|
import { CredentialsSigner } from '../protocol/credentials-signer';
|
|
15
14
|
import { SnapshotStore } from '../snapshots';
|
|
16
15
|
export declare const PARTY_ITEM_TYPE = "dxos:item/party";
|
|
@@ -26,16 +25,18 @@ export interface PartyMember {
|
|
|
26
25
|
*/
|
|
27
26
|
export declare class DataParty {
|
|
28
27
|
private readonly _feedProvider;
|
|
28
|
+
private readonly _metadataStore;
|
|
29
29
|
private readonly _credentialsSigner;
|
|
30
30
|
private readonly _profilePreferences;
|
|
31
31
|
private readonly _networkManager;
|
|
32
|
-
private readonly
|
|
32
|
+
private readonly _initialTimeframe?;
|
|
33
33
|
readonly update: Event<void>;
|
|
34
34
|
private readonly _partyCore;
|
|
35
35
|
private readonly _preferences?;
|
|
36
36
|
private _invitationManager?;
|
|
37
37
|
private _protocol?;
|
|
38
|
-
|
|
38
|
+
private _feedHints;
|
|
39
|
+
constructor(partyKey: PartyKey, modelFactory: ModelFactory, snapshotStore: SnapshotStore, _feedProvider: PartyFeedProvider, _metadataStore: MetadataStore, _credentialsSigner: CredentialsSigner, _profilePreferences: Preferences | undefined, _networkManager: NetworkManager, _initialTimeframe?: Timeframe | undefined, _options?: PipelineOptions);
|
|
39
40
|
get partyInfo(): {
|
|
40
41
|
key: string;
|
|
41
42
|
isOpen: boolean;
|
|
@@ -48,7 +49,7 @@ export declare class DataParty {
|
|
|
48
49
|
get isOpen(): boolean;
|
|
49
50
|
get database(): Database;
|
|
50
51
|
get processor(): import("../pipeline").PartyProcessor;
|
|
51
|
-
get pipeline(): import("../pipeline").
|
|
52
|
+
get pipeline(): import("../pipeline").FeedMuxer;
|
|
52
53
|
get timeframe(): Timeframe;
|
|
53
54
|
get timeframeUpdate(): Event<Timeframe>;
|
|
54
55
|
get invitationManager(): InvitationFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-party.d.ts","sourceRoot":"","sources":["../../../src/parties/data-party.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"data-party.d.ts","sourceRoot":"","sources":["../../../src/parties/data-party.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,16 +31,18 @@ exports.PARTY_TITLE_PROPERTY = 'title'; // TODO(burdon): Remove (should not be s
|
|
|
31
31
|
* This class handles data-storage, replication, snapshots, access-control, and invitations.
|
|
32
32
|
*/
|
|
33
33
|
class DataParty {
|
|
34
|
-
constructor(partyKey, modelFactory, snapshotStore, _feedProvider, _credentialsSigner,
|
|
34
|
+
constructor(partyKey, modelFactory, snapshotStore, _feedProvider, _metadataStore, _credentialsSigner,
|
|
35
35
|
// TODO(dmaretskyi): Pull this out to a higher level. Should preferences be part of client API instead?
|
|
36
|
-
_profilePreferences, _networkManager,
|
|
36
|
+
_profilePreferences, _networkManager, _initialTimeframe, _options = {}) {
|
|
37
37
|
this._feedProvider = _feedProvider;
|
|
38
|
+
this._metadataStore = _metadataStore;
|
|
38
39
|
this._credentialsSigner = _credentialsSigner;
|
|
39
40
|
this._profilePreferences = _profilePreferences;
|
|
40
41
|
this._networkManager = _networkManager;
|
|
41
|
-
this.
|
|
42
|
+
this._initialTimeframe = _initialTimeframe;
|
|
42
43
|
this.update = new async_1.Event();
|
|
43
|
-
this.
|
|
44
|
+
this._feedHints = [];
|
|
45
|
+
this._partyCore = new pipeline_1.PartyPipeline(partyKey, _feedProvider, modelFactory, snapshotStore, this._credentialsSigner.getIdentityKey().publicKey, _options);
|
|
44
46
|
// TODO(dmaretskyi): Pull this out to a higher level. Should preferences be part of client API instead?
|
|
45
47
|
if (this._profilePreferences) {
|
|
46
48
|
this._preferences = new halo_1.PartyPreferences(this._profilePreferences, this);
|
|
@@ -100,6 +102,12 @@ class DataParty {
|
|
|
100
102
|
await item.model.set(exports.PARTY_TITLE_PROPERTY, title);
|
|
101
103
|
await ((_a = this._preferences) === null || _a === void 0 ? void 0 : _a.setLastKnownTitle(title));
|
|
102
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* @internal
|
|
107
|
+
*/
|
|
108
|
+
_setFeedHints(feedHints) {
|
|
109
|
+
this._feedHints = feedHints;
|
|
110
|
+
}
|
|
103
111
|
/**
|
|
104
112
|
* Opens the pipeline and connects the streams.
|
|
105
113
|
*/
|
|
@@ -107,7 +115,18 @@ class DataParty {
|
|
|
107
115
|
if (this.isOpen) {
|
|
108
116
|
return this;
|
|
109
117
|
}
|
|
110
|
-
|
|
118
|
+
// TODO(dmaretskyi): May be undefined in some tests.
|
|
119
|
+
const party = this._metadataStore.getParty(this._partyCore.key);
|
|
120
|
+
await this._partyCore.open({
|
|
121
|
+
feedHints: this._feedHints,
|
|
122
|
+
initialTimeframe: this._initialTimeframe,
|
|
123
|
+
targetTimeframe: party === null || party === void 0 ? void 0 : party.latestTimeframe
|
|
124
|
+
});
|
|
125
|
+
// Keep updating latest reached timeframe in the metadata.
|
|
126
|
+
// This timeframe will be waited for when opening the party next time.
|
|
127
|
+
this._partyCore.timeframeUpdate.on(timeframe => {
|
|
128
|
+
void this._metadataStore.setTimeframe(this._partyCore.key, timeframe);
|
|
129
|
+
});
|
|
111
130
|
this._invitationManager = new invitations_1.InvitationFactory(this._partyCore.processor, this._credentialsSigner, this._partyCore.credentialsWriter, this._networkManager);
|
|
112
131
|
//
|
|
113
132
|
// Network/swarm.
|
|
@@ -134,6 +153,8 @@ class DataParty {
|
|
|
134
153
|
if (!this.isOpen) {
|
|
135
154
|
return this;
|
|
136
155
|
}
|
|
156
|
+
// Save the latest reached timeframe.
|
|
157
|
+
await this._metadataStore.setTimeframe(this._partyCore.key, this._partyCore.timeframe);
|
|
137
158
|
await this._partyCore.close();
|
|
138
159
|
await ((_a = this._protocol) === null || _a === void 0 ? void 0 : _a.stop());
|
|
139
160
|
this._protocol = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-party.js","sourceRoot":"","sources":["../../../src/parties/data-party.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;AAEF,oDAA4B;AAE5B,uCAAkD;
|
|
1
|
+
{"version":3,"file":"data-party.js","sourceRoot":"","sources":["../../../src/parties/data-party.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ const identity_credentials_1 = require("../protocol/identity-credentials");
|
|
|
22
22
|
const snapshots_1 = require("../snapshots");
|
|
23
23
|
const data_party_1 = require("./data-party");
|
|
24
24
|
describe('DataParty', () => {
|
|
25
|
-
const createParty = async (identity, partyKey,
|
|
25
|
+
const createParty = async (identity, partyKey, feedHints) => {
|
|
26
26
|
const storage = (0, random_access_multi_storage_1.createStorage)('', random_access_multi_storage_1.StorageType.RAM);
|
|
27
27
|
const snapshotStore = new snapshots_1.SnapshotStore(storage.directory('snapshots'));
|
|
28
28
|
const metadataStore = new pipeline_1.MetadataStore(storage.directory('metadata'));
|
|
@@ -30,7 +30,10 @@ describe('DataParty', () => {
|
|
|
30
30
|
const modelFactory = new model_factory_1.ModelFactory().registerModel(object_model_1.ObjectModel);
|
|
31
31
|
const networkManager = new network_manager_1.NetworkManager();
|
|
32
32
|
const partyFeedProvider = new pipeline_1.PartyFeedProvider(metadataStore, identity.keyring, feedStore, partyKey);
|
|
33
|
-
|
|
33
|
+
const writableFeed = await partyFeedProvider.createOrOpenWritableFeed();
|
|
34
|
+
const party = new data_party_1.DataParty(partyKey, modelFactory, snapshotStore, partyFeedProvider, metadataStore, identity.createCredentialsSigner(), identity.preferences, networkManager);
|
|
35
|
+
party._setFeedHints([...feedHints, writableFeed.key]);
|
|
36
|
+
return party;
|
|
34
37
|
};
|
|
35
38
|
(0, mocha_1.it)('open & close', async () => {
|
|
36
39
|
const keyring = new credentials_1.Keyring();
|
|
@@ -51,6 +54,22 @@ describe('DataParty', () => {
|
|
|
51
54
|
await party.database.createItem({ type: 'test:item' });
|
|
52
55
|
await party.close();
|
|
53
56
|
});
|
|
57
|
+
(0, mocha_1.it)('data is immediately available after re-opening', async () => {
|
|
58
|
+
const keyring = new credentials_1.Keyring();
|
|
59
|
+
const identity = await (0, identity_credentials_1.createTestIdentityCredentials)(keyring);
|
|
60
|
+
const partyKey = await keyring.createKeyRecord({ type: credentials_1.KeyType.PARTY });
|
|
61
|
+
const party = await createParty(identity, partyKey.publicKey, []);
|
|
62
|
+
await party.open();
|
|
63
|
+
const feed = await party.getWriteFeed();
|
|
64
|
+
await party.credentialsWriter.write((0, credentials_1.createPartyGenesisMessage)(keyring, partyKey, feed.key, partyKey));
|
|
65
|
+
for (let i = 0; i < 10; i++) {
|
|
66
|
+
await party.database.createItem({ type: 'test:item' });
|
|
67
|
+
}
|
|
68
|
+
await party.close();
|
|
69
|
+
await party.open();
|
|
70
|
+
(0, expect_1.default)(party.database.select({ type: 'test:item' }).exec().entities).toHaveLength(10);
|
|
71
|
+
await party.close();
|
|
72
|
+
});
|
|
54
73
|
(0, mocha_1.it)('authenticates its own credentials', async () => {
|
|
55
74
|
const keyring = new credentials_1.Keyring();
|
|
56
75
|
const identity = await (0, identity_credentials_1.createTestIdentityCredentials)(keyring);
|
|
@@ -59,6 +78,7 @@ describe('DataParty', () => {
|
|
|
59
78
|
await party.open();
|
|
60
79
|
const feed = await party.getWriteFeed();
|
|
61
80
|
await party.credentialsWriter.write((0, credentials_1.createPartyGenesisMessage)(keyring, partyKey, feed.key, partyKey));
|
|
81
|
+
await party.processor.feedAdded.waitForCount(1);
|
|
62
82
|
const authenticator = (0, protocol_1.createAuthenticator)(party.processor, identity.createCredentialsSigner(), party.credentialsWriter);
|
|
63
83
|
const credentialsProvider = (0, protocol_1.createCredentialsProvider)(identity.createCredentialsSigner(), party.key, feed.key);
|
|
64
84
|
const wrappedCredentials = credentials_1.codec.decode(credentialsProvider.get());
|
|
@@ -73,6 +93,7 @@ describe('DataParty', () => {
|
|
|
73
93
|
await party.open();
|
|
74
94
|
const feed = await party.getWriteFeed();
|
|
75
95
|
await party.credentialsWriter.write((0, credentials_1.createPartyGenesisMessage)(keyring, partyKey, feed.key, partyKey));
|
|
96
|
+
await party.processor.feedAdded.waitForCount(1);
|
|
76
97
|
const authenticator = (0, protocol_1.createAuthenticator)(party.processor, identityA.createCredentialsSigner(), party.credentialsWriter);
|
|
77
98
|
const identityB = await (0, identity_credentials_1.deriveTestDeviceCredentials)(identityA);
|
|
78
99
|
const credentialsProvider = (0, protocol_1.createCredentialsProvider)(identityB.createCredentialsSigner(), party.key, feed.key);
|
|
@@ -90,9 +111,7 @@ describe('DataParty', () => {
|
|
|
90
111
|
await partyA.credentialsWriter.write((0, credentials_1.createPartyGenesisMessage)(keyring, partyKey, feedA.key, partyKey));
|
|
91
112
|
await partyA.credentialsWriter.write((0, credentials_1.createKeyAdmitMessage)(keyring, partyKey.publicKey, identityA.identityKey, [partyKey]));
|
|
92
113
|
const identityB = await (0, identity_credentials_1.deriveTestDeviceCredentials)(identityA);
|
|
93
|
-
const partyB = await createParty(identityB, partyKey.publicKey, [
|
|
94
|
-
{ type: credentials_1.KeyType.FEED, publicKey: feedA.key }
|
|
95
|
-
]);
|
|
114
|
+
const partyB = await createParty(identityB, partyKey.publicKey, [feedA.key]);
|
|
96
115
|
await partyB.open();
|
|
97
116
|
await partyA.database.createItem({ type: 'test:item-a' });
|
|
98
117
|
await partyB.database.waitForItem({ type: 'test:item-a' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-party.test.js","sourceRoot":"","sources":["../../../src/parties/data-party.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;AAEF,oDAA4B;AAC5B,iCAAmC;AAEnC,
|
|
1
|
+
{"version":3,"file":"data-party.test.js","sourceRoot":"","sources":["../../../src/parties/data-party.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;AAEF,oDAA4B;AAC5B,iCAAmC;AAEnC,mDAAkJ;AAElJ,uDAA4C;AAC5C,iDAA6C;AAC7C,uDAAmD;AACnD,2DAAuD;AACvD,qDAAiD;AACjD,mFAA+E;AAE/E,gDAAqH;AACrH,0CAA+D;AAC/D,0CAA6E;AAC7E,2EAAmI;AACnI,4CAA6C;AAC7C,6CAAyC;AAEzC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,MAAM,WAAW,GAAG,KAAK,EAAE,QAA6B,EAAE,QAAmB,EAAE,SAAsB,EAAE,EAAE;QAEvG,MAAM,OAAO,GAAG,IAAA,2CAAa,EAAC,EAAE,EAAE,yCAAW,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,IAAI,yBAAa,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,IAAI,wBAAa,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,IAAI,sBAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,qBAAK,EAAE,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC,aAAa,CAAC,0BAAW,CAAC,CAAC;QACnE,MAAM,cAAc,GAAG,IAAI,gCAAc,EAAE,CAAC;QAC5C,MAAM,iBAAiB,GAAG,IAAI,4BAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtG,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,wBAAwB,EAAE,CAAC;QAExE,MAAM,KAAK,GAAG,IAAI,sBAAS,CACzB,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,QAAQ,CAAC,uBAAuB,EAAE,EAClC,QAAQ,CAAC,WAAW,EACpB,cAAc,CACf,CAAC;QACF,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,IAAA,UAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,OAAO,GAAG,IAAI,qBAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAA,oDAA6B,EAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,qBAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAElE,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAA,UAAI,EAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,OAAO,GAAG,IAAI,qBAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAA,oDAA6B,EAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,qBAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAEnB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAA,uCAAyB,EAC3D,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,GAAG,EACR,QAAQ,CACT,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAEvD,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAA,UAAI,EAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAAG,IAAI,qBAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAA,oDAA6B,EAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,qBAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAEnB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAA,uCAAyB,EAC3D,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,GAAG,EACR,QAAQ,CACT,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;SACxD;QAED,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAEnB,IAAA,gBAAM,EAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAEtF,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAA,UAAI,EAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAG,IAAI,qBAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAA,oDAA6B,EAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,qBAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAExE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAA,uCAAyB,EAC3D,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,GAAG,EACR,QAAQ,CACT,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEhD,MAAM,aAAa,GAAG,IAAA,8BAAmB,EAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,uBAAuB,EAAE,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACxH,MAAM,mBAAmB,GAAG,IAAA,oCAAyB,EAAC,QAAQ,CAAC,uBAAuB,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/G,MAAM,kBAAkB,GAAG,mBAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;QACvE,IAAA,gBAAM,EAAC,MAAM,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnF,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAA,UAAI,EAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,qBAAO,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,MAAM,IAAA,oDAA6B,EAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,qBAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAExE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAA,uCAAyB,EAC3D,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,GAAG,EACR,QAAQ,CACT,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEhD,MAAM,aAAa,GAAG,IAAA,8BAAmB,EAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,uBAAuB,EAAE,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEzH,MAAM,SAAS,GAAG,MAAM,IAAA,kDAA2B,EAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,mBAAmB,GAAG,IAAA,oCAAyB,EAAC,SAAS,CAAC,uBAAuB,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhH,MAAM,kBAAkB,GAAG,mBAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;QACvE,IAAA,gBAAM,EAAC,MAAM,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnF,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAA,UAAI,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAI,qBAAO,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,MAAM,IAAA,oDAA6B,EAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,qBAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAA,uCAAyB,EAC5D,OAAO,EACP,QAAQ,EACR,KAAK,CAAC,GAAG,EACT,QAAQ,CACT,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAA,mCAAqB,EACxD,OAAO,EACP,QAAQ,CAAC,SAAS,EAClB,SAAS,CAAC,WAAW,EACrB,CAAC,QAAQ,CAAC,CACX,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,IAAA,kDAA2B,EAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpB,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAE3D,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAE3D,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,IAAA,UAAI,EAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,SAAS,GAAG,MAAM,IAAA,oDAA6B,EAAC,IAAI,qBAAO,EAAE,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,qBAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAA,uCAAyB,EAC5D,SAAS,CAAC,OAAO,EACjB,SAAS,EACT,KAAK,CAAC,GAAG,EACT,SAAS,CACV,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAA,mCAAqB,EACxD,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,WAAW,EACrB,CAAC,SAAS,CAAC,CACZ,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,4CAA8B,CAAC,CAAC;QAEnG,MAAM,SAAS,GAAG,MAAM,IAAA,oDAA6B,EAAC,IAAI,qBAAO,EAAE,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,+BAAiB,CACrC,IAAI,gCAAc,EAAE,EACpB,UAAU,EACV,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAA,8CAAgC,EAC1D,SAAS,CAAC,uBAAuB,EAAE,EACnC,QAAQ,EACR,SAAS,CAAC,eAAe,EACzB,KAAK,CACN,CAAC,CACH,CAAC;QAEF,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,mCAAqB,CAAC,CAAC;QACvG,IAAA,gBAAM,EAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAE1B,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAE3D,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAE3D,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|