@dxos/client-services 0.1.31 → 0.1.32-next.77d513e
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-DFO3FW2W.mjs → chunk-E3FD43YN.mjs} +423 -209
- package/dist/lib/browser/chunk-E3FD43YN.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/packlets/testing/index.mjs +3 -3
- package/dist/lib/browser/packlets/testing/index.mjs.map +3 -3
- package/dist/lib/node/index.cjs +424 -210
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/packlets/testing/index.cjs +432 -218
- package/dist/lib/node/packlets/testing/index.cjs.map +3 -3
- package/dist/types/src/packlets/identity/identity-manager.d.ts +6 -0
- package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/device-invitations-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/space-invitations-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +1 -0
- package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts +19 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +24 -4
- package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +29 -1
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/host-test-builder.d.ts +2 -2
- package/dist/types/src/packlets/testing/host-test-builder.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/vault-resource-lock.d.ts +1 -0
- package/dist/types/src/packlets/vault/vault-resource-lock.d.ts.map +1 -1
- package/package.json +30 -30
- package/src/packlets/identity/identity-manager.ts +32 -17
- package/src/packlets/invitations/device-invitations-handler.ts +5 -3
- package/src/packlets/invitations/space-invitations-handler.test.ts +20 -3
- package/src/packlets/invitations/space-invitations-handler.ts +15 -8
- package/src/packlets/services/service-context.test.ts +6 -5
- package/src/packlets/services/service-host.ts +7 -2
- package/src/packlets/spaces/data-space-manager.test.ts +17 -2
- package/src/packlets/spaces/data-space-manager.ts +76 -30
- package/src/packlets/spaces/data-space.ts +90 -15
- package/src/packlets/spaces/notarization-plugin.test.ts +3 -1
- package/src/packlets/spaces/notarization-plugin.ts +64 -23
- package/src/packlets/spaces/spaces-service.test.ts +1 -1
- package/src/packlets/spaces/spaces-service.ts +28 -17
- package/src/packlets/testing/host-test-builder.ts +2 -2
- package/src/packlets/testing/test-builder.ts +2 -2
- package/src/packlets/tests/client-services.test.ts +24 -11
- package/src/packlets/tests/client.test.ts +3 -6
- package/src/packlets/tests/halo-profile.test.ts +5 -5
- package/src/packlets/tests/spaces-invitations.test.ts +4 -4
- package/src/packlets/tests/spaces.test.ts +20 -11
- package/src/packlets/tests/text.test.ts +6 -6
- package/src/packlets/vault/vault-resource-lock.ts +10 -1
- package/dist/lib/browser/chunk-DFO3FW2W.mjs.map +0 -7
|
@@ -4,6 +4,7 @@ import { FeedStore } from '@dxos/feed-store';
|
|
|
4
4
|
import { Keyring } from '@dxos/keyring';
|
|
5
5
|
import { PublicKey } from '@dxos/keys';
|
|
6
6
|
import { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
7
|
+
import { Timeframe } from '@dxos/timeframe';
|
|
7
8
|
import { Identity } from './identity';
|
|
8
9
|
export declare type JoinIdentityParams = {
|
|
9
10
|
identityKey: PublicKey;
|
|
@@ -12,6 +13,11 @@ export declare type JoinIdentityParams = {
|
|
|
12
13
|
haloGenesisFeedKey: PublicKey;
|
|
13
14
|
controlFeedKey: PublicKey;
|
|
14
15
|
dataFeedKey: PublicKey;
|
|
16
|
+
/**
|
|
17
|
+
* Latest known timeframe for the control pipeline.
|
|
18
|
+
* We will try to catch up to this timeframe before starting the data pipeline.
|
|
19
|
+
*/
|
|
20
|
+
controlTimeframe?: Timeframe;
|
|
15
21
|
};
|
|
16
22
|
export declare type CreateIdentityOptions = {
|
|
17
23
|
displayName?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/identity/identity-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"identity-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/identity/identity-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,oBAAY,kBAAkB,GAAG;IAC/B,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,kBAAkB,EAAE,SAAS,CAAC;IAC9B,cAAc,EAAE,SAAS,CAAC;IAC1B,WAAW,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEF,oBAAY,qBAAqB,GAAG;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAGF,qBAAa,eAAe;IAQxB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAVhC,QAAQ,CAAC,WAAW,cAAe;IAEnC,OAAO,CAAC,SAAS,CAAC,CAAW;gBAKV,cAAc,EAAE,aAAa,EAC7B,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC,EAClC,aAAa,EAAE,YAAY;IAG9C,IAAI,QAAQ,yBAEX;IAEK,IAAI;IAaJ,KAAK;IAIL,cAAc,CAAC,EAAE,WAAW,EAAE,GAAE,qBAA0B;IA+DhE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,kBAAkB;YA0BjC,kBAAkB;YAwClB,eAAe;CAU9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-invitations-handler.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/device-invitations-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAEhC,+BAA+B,EAE/B,kBAAkB,EAGnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAiC,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEpG,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAUxE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE3D,aAAK,8BAA8B,GAAG;IACpC,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IAEjB,WAAW,EAAE,MAAM,QAAQ,CAAC;IAC5B,cAAc,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACrE,CAAC;AAEF;;GAEG;AAEH,qBAAa,wBAAyB,SAAQ,0BAA0B;IAGpE,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,8BAA8B;IAK1D;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,+BAA+B;
|
|
1
|
+
{"version":3,"file":"device-invitations-handler.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/device-invitations-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAEhC,+BAA+B,EAE/B,kBAAkB,EAGnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAiC,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEpG,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAUxE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE3D,aAAK,8BAA8B,GAAG;IACpC,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IAEjB,WAAW,EAAE,MAAM,QAAQ,CAAC;IAC5B,cAAc,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACrE,CAAC;AAEF;;GAEG;AAEH,qBAAa,wBAAyB,SAAQ,0BAA0B;IAGpE,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,8BAA8B;IAK1D;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,+BAA+B;IAoH9F;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,gCAAgC;CAmHzG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space-invitations-handler.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/space-invitations-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,gCAAgC,EAEhC,+BAA+B,EAI/B,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAiC,cAAc,EAAiC,MAAM,uBAAuB,CAAC;AAErH,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAexE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAIxD;;GAEG;AAEH,qBAAa,uBAAwB,SAAQ,0BAA0B,CAAC,SAAS,CAAC;IAG9E,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,cAAc,EAAE,cAAc,EACb,aAAa,EAAE,gBAAgB,EAC/B,eAAe,EAAE,cAAc,EAC/B,QAAQ,EAAE,OAAO;IAKpC;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,+BAA+B;
|
|
1
|
+
{"version":3,"file":"space-invitations-handler.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/space-invitations-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,gCAAgC,EAEhC,+BAA+B,EAI/B,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAiC,cAAc,EAAiC,MAAM,uBAAuB,CAAC;AAErH,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAexE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAIxD;;GAEG;AAEH,qBAAa,uBAAwB,SAAQ,0BAA0B,CAAC,SAAS,CAAC;IAG9E,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,cAAc,EAAE,cAAc,EACb,aAAa,EAAE,gBAAgB,EAC/B,eAAe,EAAE,cAAc,EAC/B,QAAQ,EAAE,OAAO;IAKpC;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,+BAA+B;IA4KjG;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,gCAAgC;CAgJzG"}
|
|
@@ -30,6 +30,7 @@ export declare class ClientServicesHost {
|
|
|
30
30
|
private readonly _modelFactory;
|
|
31
31
|
private _networkManager?;
|
|
32
32
|
private _storage?;
|
|
33
|
+
private _opening;
|
|
33
34
|
private _open;
|
|
34
35
|
constructor({ config, modelFactory, networkManager, storage, lockKey }?: ClientServicesHostParams);
|
|
35
36
|
get isOpen(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-host.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/service-host.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,cAAc,EAA6B,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAatD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,oBAAY,wBAAwB,GAAG;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IAEnD,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAU;IAM3B,OAAO,CAAC,KAAK,CAAS;gBAEV,EACV,MAAM,EACN,YAA0C,EAE1C,cAAc,EACd,OAAO,EAEP,OAAO,EACR,GAAE,wBAA6B;
|
|
1
|
+
{"version":3,"file":"service-host.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/service-host.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,cAAc,EAA6B,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAatD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,oBAAY,wBAAwB,GAAG;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IAEnD,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAU;IAM3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEV,EACV,MAAM,EACN,YAA0C,EAE1C,cAAc,EACd,OAAO,EAEP,OAAO,EACR,GAAE,wBAA6B;IA6ChC,IAAI,MAAM,YAET;IAED,IAAI,eAAe,oCAElB;IAED,IAAI,WAAW,sDAEd;IAED,IAAI,QAAQ,4BAEX;IAED;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,iBAAiB;IAkBlD,IAAI;IAmEJ,KAAK;CAaZ"}
|
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
|
-
import { MetadataStore, SigningContext,
|
|
2
|
+
import { DataServiceSubscriptions, MetadataStore, SigningContext, SnapshotStore, SpaceManager } from '@dxos/echo-pipeline';
|
|
3
3
|
import { FeedStore } from '@dxos/feed-store';
|
|
4
4
|
import { Keyring } from '@dxos/keyring';
|
|
5
5
|
import { PublicKey } from '@dxos/keys';
|
|
6
6
|
import { ModelFactory } from '@dxos/model-factory';
|
|
7
7
|
import { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
8
|
+
import { Timeframe } from '@dxos/timeframe';
|
|
8
9
|
import { ComplexMap } from '@dxos/util';
|
|
9
10
|
import { DataSpace } from './data-space';
|
|
10
11
|
export declare type AcceptSpaceOptions = {
|
|
11
12
|
spaceKey: PublicKey;
|
|
12
13
|
genesisFeedKey: PublicKey;
|
|
14
|
+
/**
|
|
15
|
+
* Latest known timeframe for the control pipeline.
|
|
16
|
+
* We will try to catch up to this timeframe before starting the data pipeline.
|
|
17
|
+
*/
|
|
18
|
+
controlTimeframe?: Timeframe;
|
|
19
|
+
/**
|
|
20
|
+
* Latest known timeframe for the data pipeline.
|
|
21
|
+
* We will try to catch up to this timeframe before initializing the database.
|
|
22
|
+
*/
|
|
23
|
+
dataTimeframe?: Timeframe;
|
|
13
24
|
};
|
|
14
25
|
export declare class DataSpaceManager {
|
|
15
26
|
private readonly _spaceManager;
|
|
@@ -23,6 +34,7 @@ export declare class DataSpaceManager {
|
|
|
23
34
|
private readonly _ctx;
|
|
24
35
|
readonly updated: Event<void>;
|
|
25
36
|
private readonly _spaces;
|
|
37
|
+
private _isOpen;
|
|
26
38
|
constructor(_spaceManager: SpaceManager, _metadataStore: MetadataStore, _dataServiceSubscriptions: DataServiceSubscriptions, _keyring: Keyring, _signingContext: SigningContext, _modelFactory: ModelFactory, _feedStore: FeedStore<FeedMessage>, _snapshotStore: SnapshotStore);
|
|
27
39
|
get spaces(): ComplexMap<PublicKey, DataSpace>;
|
|
28
40
|
open(): Promise<void>;
|
|
@@ -32,6 +44,12 @@ export declare class DataSpaceManager {
|
|
|
32
44
|
*/
|
|
33
45
|
createSpace(): Promise<DataSpace>;
|
|
34
46
|
acceptSpace(opts: AcceptSpaceOptions): Promise<DataSpace>;
|
|
47
|
+
/**
|
|
48
|
+
* Wait until the space data pipeline is fully initialized.
|
|
49
|
+
* Used by invitation handler.
|
|
50
|
+
* TODO(dmaretskyi): Consider removing.
|
|
51
|
+
*/
|
|
52
|
+
waitUntilSpaceReady(spaceKey: PublicKey): Promise<void>;
|
|
35
53
|
private _constructSpace;
|
|
36
54
|
}
|
|
37
55
|
//# sourceMappingURL=data-space-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-space-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAA4B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"data-space-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAA4B,MAAM,aAAa,CAAC;AAI9D,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,cAAc,EAEd,aAAa,EAGb,YAAY,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,oBAAY,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,EAAE,SAAS,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAE7B;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B,CAAC;AAEF,qBACa,gBAAgB;IAUzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAhBjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,SAAgB,OAAO,cAAe;IAEtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAEhF,OAAO,CAAC,OAAO,CAAS;gBAGL,aAAa,EAAE,YAAY,EAC3B,cAAc,EAAE,aAAa,EAC7B,yBAAyB,EAAE,wBAAwB,EACnD,QAAQ,EAAE,OAAO,EACjB,eAAe,EAAE,cAAc,EAC/B,aAAa,EAAE,YAAY,EAC3B,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC,EAClC,cAAc,EAAE,aAAa;IAIhD,IAAI,MAAM,qCAET;IAGK,IAAI;IAgBJ,KAAK;IASX;;OAEG;IAEG,WAAW;IA8BX,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IAqB/D;;;;OAIG;IACG,mBAAmB,CAAC,QAAQ,EAAE,SAAS;YAU/B,eAAe;CA6E9B"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Event } from '@dxos/async';
|
|
2
|
+
import { SpaceState } from '@dxos/client';
|
|
3
|
+
import { MetadataStore, Space, SigningContext, SnapshotManager, DataPipeline } from '@dxos/echo-pipeline';
|
|
2
4
|
import { FeedStore } from '@dxos/feed-store';
|
|
3
5
|
import { Keyring } from '@dxos/keyring';
|
|
4
6
|
import { PublicKey } from '@dxos/keys';
|
|
@@ -8,6 +10,16 @@ import { GossipMessage } from '@dxos/protocols/proto/dxos/mesh/teleport/gossip';
|
|
|
8
10
|
import { Gossip, Presence } from '@dxos/teleport-extension-gossip';
|
|
9
11
|
import { TrustedKeySetAuthVerifier } from '../identity';
|
|
10
12
|
import { NotarizationPlugin } from './notarization-plugin';
|
|
13
|
+
export declare type DataSpaceCallbacks = {
|
|
14
|
+
/**
|
|
15
|
+
* Called before transitioning to the ready state.
|
|
16
|
+
*/
|
|
17
|
+
beforeReady?: () => Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Called after transitioning to the ready state.
|
|
20
|
+
*/
|
|
21
|
+
afterReady?: () => Promise<void>;
|
|
22
|
+
};
|
|
11
23
|
export declare type DataSpaceParams = {
|
|
12
24
|
inner: Space;
|
|
13
25
|
modelFactory: ModelFactory;
|
|
@@ -20,10 +32,11 @@ export declare type DataSpaceParams = {
|
|
|
20
32
|
signingContext: SigningContext;
|
|
21
33
|
memberKey: PublicKey;
|
|
22
34
|
snapshotId?: string | undefined;
|
|
35
|
+
callbacks?: DataSpaceCallbacks;
|
|
23
36
|
};
|
|
24
37
|
export declare class DataSpace {
|
|
25
38
|
private readonly _ctx;
|
|
26
|
-
private readonly
|
|
39
|
+
private readonly _dataPipeline;
|
|
27
40
|
private readonly _inner;
|
|
28
41
|
private readonly _gossip;
|
|
29
42
|
private readonly _presence;
|
|
@@ -32,13 +45,16 @@ export declare class DataSpace {
|
|
|
32
45
|
private readonly _metadataStore;
|
|
33
46
|
private readonly _signingContext;
|
|
34
47
|
private readonly _notarizationPluginConsumer;
|
|
48
|
+
private readonly _callbacks;
|
|
49
|
+
private _state;
|
|
35
50
|
readonly authVerifier: TrustedKeySetAuthVerifier;
|
|
51
|
+
readonly stateUpdate: Event<void>;
|
|
36
52
|
constructor(params: DataSpaceParams);
|
|
37
53
|
get key(): PublicKey;
|
|
38
54
|
get isOpen(): boolean;
|
|
55
|
+
get state(): SpaceState;
|
|
39
56
|
get inner(): Space;
|
|
40
|
-
get
|
|
41
|
-
get stateUpdate(): import("@dxos/async").Event<void>;
|
|
57
|
+
get dataPipeline(): DataPipeline;
|
|
42
58
|
get presence(): Presence;
|
|
43
59
|
get notarizationPlugin(): NotarizationPlugin;
|
|
44
60
|
open(): Promise<void>;
|
|
@@ -47,6 +63,10 @@ export declare class DataSpace {
|
|
|
47
63
|
listen(channel: string, callback: (message: GossipMessage) => void): {
|
|
48
64
|
unsubscribe: () => void;
|
|
49
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* Initialize the data pipeline in a separate task.
|
|
68
|
+
*/
|
|
69
|
+
initializeDataPipelineAsync(): void;
|
|
50
70
|
initializeDataPipeline(): Promise<void>;
|
|
51
71
|
private _createWritableFeeds;
|
|
52
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-space.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-space.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAA4B,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EACL,aAAa,EACb,KAAK,EACL,cAAc,EAEd,eAAe,EACf,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D,oBAAY,kBAAkB,GAAG;IAC/B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF,qBACa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAyC;IACrF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,OAAO,CAAC,MAAM,CAAqB;IAEnC,SAAgB,YAAY,EAAE,yBAAyB,CAAC;IACxD,SAAgB,WAAW,cAAe;gBAE9B,MAAM,EAAE,eAAe;IA8BnC,IAAI,GAAG,cAEN;IAED,IAAI,MAAM,YAET;IAED,IAAI,KAAK,IAAI,UAAU,CAEtB;IAGD,IAAI,KAAK,UAER;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,QAAQ,aAEX;IAED,IAAI,kBAAkB,uBAErB;IAEK,IAAI;IAOJ,KAAK;IAcL,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAI/C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI;;;IAIlE;;OAEG;IACH,2BAA2B;IAerB,sBAAsB;YAkDd,oBAAoB;CA6CnC"}
|
|
@@ -1,8 +1,36 @@
|
|
|
1
|
+
import { Context } from '@dxos/context';
|
|
1
2
|
import { CredentialProcessor } from '@dxos/credentials';
|
|
2
3
|
import { FeedWriter } from '@dxos/feed-store';
|
|
3
4
|
import { Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
4
5
|
import { NotarizationService, NotarizeRequest } from '@dxos/protocols/proto/dxos/mesh/teleport/notarization';
|
|
5
6
|
import { ExtensionContext, RpcExtension } from '@dxos/teleport';
|
|
7
|
+
export declare type NotarizeParams = {
|
|
8
|
+
/**
|
|
9
|
+
* For cancellation.
|
|
10
|
+
*/
|
|
11
|
+
ctx?: Context;
|
|
12
|
+
/**
|
|
13
|
+
* Credentials to notarize.
|
|
14
|
+
*/
|
|
15
|
+
credentials: Credential[];
|
|
16
|
+
/**
|
|
17
|
+
* Timeout for the whole notarization process.
|
|
18
|
+
* Set to 0 to disable.
|
|
19
|
+
* @default {@link DEFAULT_NOTARIZE_TIMEOUT}
|
|
20
|
+
*/
|
|
21
|
+
timeout?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Retry timeout.
|
|
24
|
+
* @default {@link DEFAULT_RETRY_TIMEOUT}
|
|
25
|
+
*/
|
|
26
|
+
retryTimeout?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Minimum wait time after a peer confirms successful notarization before attempting with a new peer.
|
|
29
|
+
* This is to avoid spamming peers with notarization requests.
|
|
30
|
+
* @default {@link DEFAULT_SUCCESS_DELAY}
|
|
31
|
+
*/
|
|
32
|
+
successDelay?: number;
|
|
33
|
+
};
|
|
6
34
|
/**
|
|
7
35
|
* See NotarizationService proto.
|
|
8
36
|
*/
|
|
@@ -18,7 +46,7 @@ export declare class NotarizationPlugin implements CredentialProcessor {
|
|
|
18
46
|
/**
|
|
19
47
|
* Request credentials to be notarized.
|
|
20
48
|
*/
|
|
21
|
-
notarize(credentials:
|
|
49
|
+
notarize({ ctx: opCtx, credentials, timeout, retryTimeout, successDelay }: NotarizeParams): Promise<void>;
|
|
22
50
|
/**
|
|
23
51
|
* Called with credentials arriving from the control pipeline.
|
|
24
52
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notarization-plugin.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/notarization-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notarization-plugin.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/notarization-plugin.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAmB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAShE,oBAAY,cAAc,GAAG;IAC3B;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;IAEhD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA6C;IACnF,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAsD;IAE5F,IAAI;IAEJ,KAAK;IAIX;;OAEG;IACG,QAAQ,CAAC,EACb,GAAG,EAAE,KAAK,EACV,WAAW,EACX,OAAkC,EAClC,YAAoC,EACpC,YAAoC,EACrC,EAAE,cAAc;IA6EjB;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,UAAU;IASpC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC;YAK1B,mBAAmB;IAOjC;;OAEG;YACW,WAAW;IAazB,eAAe;CAehB;AAED,oBAAY,mCAAmC,GAAG;IAChD,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,CAAC;AAEF,qBAAa,6BAA8B,SAAQ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,mCAAmC;cAWzD,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAUjC,MAAM,CAAC,GAAG,EAAE,gBAAgB;IAK5B,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS;CAI/C;AAED,aAAK,QAAQ,GAAG;IACd,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaces-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/spaces-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAEjG,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EAEL,aAAa,
|
|
1
|
+
{"version":3,"file":"spaces-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/spaces-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAEjG,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EAEL,aAAa,EACb,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAHpB,gBAAgB,EAAE,eAAe,EACjC,aAAa,EAAE,YAAY,EAC3B,yBAAyB,EAAE,wBAAwB,EACnD,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGtE,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAS7B,WAAW,CAAC,OAAO,EAAE,kBAAkB;IAI7C,WAAW,IAAI,MAAM,CAAC,mBAAmB,CAAC;IAoDpC,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB;IAMpE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,wBAAwB;IAajE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC;IAcrE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,uBAAuB;IAOzE,OAAO,CAAC,eAAe;CAyBxB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Config } from '@dxos/config';
|
|
2
|
-
import { SnapshotStore,
|
|
2
|
+
import { SnapshotStore, DataPipeline, MetadataStore, SigningContext, SpaceManager } from '@dxos/echo-pipeline';
|
|
3
3
|
import { FeedStore } from '@dxos/feed-store';
|
|
4
4
|
import { Keyring } from '@dxos/keyring';
|
|
5
5
|
import { MemorySignalManagerContext } from '@dxos/messaging';
|
|
@@ -13,7 +13,7 @@ export declare const createServiceContext: ({ signalContext, storage }?: {
|
|
|
13
13
|
}) => ServiceContext;
|
|
14
14
|
export declare const createPeers: (numPeers: number) => Promise<ServiceContext[]>;
|
|
15
15
|
export declare const createIdentity: (peer: ServiceContext) => Promise<ServiceContext>;
|
|
16
|
-
export declare const syncItemsLocal: (db1:
|
|
16
|
+
export declare const syncItemsLocal: (db1: DataPipeline, db2: DataPipeline) => Promise<void>;
|
|
17
17
|
export declare class HostTestBuilder {
|
|
18
18
|
readonly signalContext: MemorySignalManagerContext;
|
|
19
19
|
createPeer(): TestPeer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-test-builder.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/testing/host-test-builder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EACL,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"host-test-builder.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/testing/host-test-builder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EAEb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAuB,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAA0B,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAiB,OAAO,EAAe,MAAM,6BAA6B,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMjE,eAAO,MAAM,iBAAiB,WAAY,MAAM,wBAAwB,0BAA0B,uBAUjG,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;oBAchC,CAAC;AAEF,eAAO,MAAM,WAAW,aAAoB,MAAM,8BAUjD,CAAC;AAEF,eAAO,MAAM,cAAc,SAAgB,cAAc,4BAGxD,CAAC;AAIF,eAAO,MAAM,cAAc,QAAe,YAAY,OAAO,YAAY,kBAGxE,CAAC;AAEF,qBAAa,eAAe;IAC1B,SAAgB,aAAa,6BAAoC;IAEjE,UAAU,IAAI,QAAQ;CAGvB;AAED,oBAAY,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAEF,qBAAa,QAAQ;IAGP,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,MAAM,CAAqB;gBAEN,aAAa,EAAE,0BAA0B;IAEtE,IAAI,OAAO,YAEV;IAED,IAAI,OAAO,YAEV;IAED,IAAI,SAAS,mBAUZ;IAED,IAAI,aAAa,kBAEhB;IAED,IAAI,aAAa,kBAEhB;IAED,IAAI,cAAc,mBAKjB;IAED,IAAI,YAAY,iBAKf;CACF;AAED,eAAO,MAAM,oBAAoB,YAAmB,OAAO,KAAG,QAAQ,cAAc,CAgBnF,CAAC"}
|
|
@@ -11,6 +11,7 @@ export declare class VaultResourceLock {
|
|
|
11
11
|
private readonly _onRelease;
|
|
12
12
|
private _releaseTrigger;
|
|
13
13
|
constructor({ lockKey, onAcquire, onRelease }: VaultResourceLockOptions);
|
|
14
|
+
get lockKey(): string;
|
|
14
15
|
acquire(): Promise<void>;
|
|
15
16
|
release(): Promise<void>;
|
|
16
17
|
private _onMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-resource-lock.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/vault/vault-resource-lock.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM1C,oBAAY,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;CACtC,CAAC;AAEF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+C;IACjF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,eAAe,CAAiB;gBAE5B,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"vault-resource-lock.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/vault/vault-resource-lock.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM1C,oBAAY,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;CACtC,CAAC;AAEF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+C;IACjF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,eAAe,CAAiB;gBAE5B,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,wBAAwB;IAOvE,IACI,OAAO,WAEV;IAEK,OAAO;IAgBP,OAAO;IAIb,OAAO,CAAC,UAAU;YAMJ,YAAY;CAqB3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/client-services",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.32-next.77d513e",
|
|
4
4
|
"description": "DXOS client services implementation",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -20,39 +20,39 @@
|
|
|
20
20
|
"src"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@dxos/async": "0.1.
|
|
24
|
-
"@dxos/client": "0.1.
|
|
25
|
-
"@dxos/codec-protobuf": "0.1.
|
|
26
|
-
"@dxos/config": "0.1.
|
|
27
|
-
"@dxos/context": "0.1.
|
|
28
|
-
"@dxos/credentials": "0.1.
|
|
29
|
-
"@dxos/crypto": "0.1.
|
|
30
|
-
"@dxos/debug": "0.1.
|
|
31
|
-
"@dxos/document-model": "0.1.
|
|
32
|
-
"@dxos/echo-db": "0.1.
|
|
33
|
-
"@dxos/echo-pipeline": "0.1.
|
|
34
|
-
"@dxos/errors": "0.1.
|
|
35
|
-
"@dxos/feed-store": "0.1.
|
|
36
|
-
"@dxos/keyring": "0.1.
|
|
37
|
-
"@dxos/keys": "0.1.
|
|
38
|
-
"@dxos/log": "0.1.
|
|
39
|
-
"@dxos/messaging": "0.1.
|
|
40
|
-
"@dxos/model-factory": "0.1.
|
|
41
|
-
"@dxos/network-manager": "0.1.
|
|
42
|
-
"@dxos/node-std": "0.1.
|
|
43
|
-
"@dxos/protocols": "0.1.
|
|
44
|
-
"@dxos/random-access-storage": "0.1.
|
|
45
|
-
"@dxos/rpc": "0.1.
|
|
46
|
-
"@dxos/teleport": "0.1.
|
|
47
|
-
"@dxos/teleport-extension-gossip": "0.1.
|
|
48
|
-
"@dxos/text-model": "0.1.
|
|
49
|
-
"@dxos/timeframe": "0.1.
|
|
50
|
-
"@dxos/util": "0.1.
|
|
23
|
+
"@dxos/async": "0.1.32-next.77d513e",
|
|
24
|
+
"@dxos/client": "0.1.32-next.77d513e",
|
|
25
|
+
"@dxos/codec-protobuf": "0.1.32-next.77d513e",
|
|
26
|
+
"@dxos/config": "0.1.32-next.77d513e",
|
|
27
|
+
"@dxos/context": "0.1.32-next.77d513e",
|
|
28
|
+
"@dxos/credentials": "0.1.32-next.77d513e",
|
|
29
|
+
"@dxos/crypto": "0.1.32-next.77d513e",
|
|
30
|
+
"@dxos/debug": "0.1.32-next.77d513e",
|
|
31
|
+
"@dxos/document-model": "0.1.32-next.77d513e",
|
|
32
|
+
"@dxos/echo-db": "0.1.32-next.77d513e",
|
|
33
|
+
"@dxos/echo-pipeline": "0.1.32-next.77d513e",
|
|
34
|
+
"@dxos/errors": "0.1.32-next.77d513e",
|
|
35
|
+
"@dxos/feed-store": "0.1.32-next.77d513e",
|
|
36
|
+
"@dxos/keyring": "0.1.32-next.77d513e",
|
|
37
|
+
"@dxos/keys": "0.1.32-next.77d513e",
|
|
38
|
+
"@dxos/log": "0.1.32-next.77d513e",
|
|
39
|
+
"@dxos/messaging": "0.1.32-next.77d513e",
|
|
40
|
+
"@dxos/model-factory": "0.1.32-next.77d513e",
|
|
41
|
+
"@dxos/network-manager": "0.1.32-next.77d513e",
|
|
42
|
+
"@dxos/node-std": "0.1.32-next.77d513e",
|
|
43
|
+
"@dxos/protocols": "0.1.32-next.77d513e",
|
|
44
|
+
"@dxos/random-access-storage": "0.1.32-next.77d513e",
|
|
45
|
+
"@dxos/rpc": "0.1.32-next.77d513e",
|
|
46
|
+
"@dxos/teleport": "0.1.32-next.77d513e",
|
|
47
|
+
"@dxos/teleport-extension-gossip": "0.1.32-next.77d513e",
|
|
48
|
+
"@dxos/text-model": "0.1.32-next.77d513e",
|
|
49
|
+
"@dxos/timeframe": "0.1.32-next.77d513e",
|
|
50
|
+
"@dxos/util": "0.1.32-next.77d513e"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/readable-stream": "^2.3.9",
|
|
54
54
|
"fast-check": "~3.3.0",
|
|
55
|
-
"@dxos/signal": "0.1.
|
|
55
|
+
"@dxos/signal": "0.1.32-next.77d513e"
|
|
56
56
|
},
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public"
|
|
@@ -12,14 +12,16 @@ import { Keyring } from '@dxos/keyring';
|
|
|
12
12
|
import { PublicKey } from '@dxos/keys';
|
|
13
13
|
import { log } from '@dxos/log';
|
|
14
14
|
import { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
15
|
-
import {
|
|
15
|
+
import { IdentityRecord, SpaceMetadata } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
16
|
+
import { AdmittedFeed } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
17
|
+
import { Timeframe } from '@dxos/timeframe';
|
|
16
18
|
import { deferFunction } from '@dxos/util';
|
|
17
19
|
|
|
18
20
|
import { createAuthProvider } from './authenticator';
|
|
19
21
|
import { Identity } from './identity';
|
|
20
22
|
|
|
21
23
|
interface ConstructSpaceParams {
|
|
22
|
-
spaceRecord:
|
|
24
|
+
spaceRecord: SpaceMetadata;
|
|
23
25
|
swarmIdentity: SwarmIdentity;
|
|
24
26
|
identityKey: PublicKey;
|
|
25
27
|
}
|
|
@@ -31,6 +33,12 @@ export type JoinIdentityParams = {
|
|
|
31
33
|
haloGenesisFeedKey: PublicKey;
|
|
32
34
|
controlFeedKey: PublicKey;
|
|
33
35
|
dataFeedKey: PublicKey;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Latest known timeframe for the control pipeline.
|
|
39
|
+
* We will try to catch up to this timeframe before starting the data pipeline.
|
|
40
|
+
*/
|
|
41
|
+
controlTimeframe?: Timeframe;
|
|
34
42
|
};
|
|
35
43
|
|
|
36
44
|
export type CreateIdentityOptions = {
|
|
@@ -82,10 +90,10 @@ export class IdentityManager {
|
|
|
82
90
|
identityKey: await this._keyring.createKey(),
|
|
83
91
|
deviceKey: await this._keyring.createKey(),
|
|
84
92
|
haloSpace: {
|
|
85
|
-
|
|
93
|
+
key: await this._keyring.createKey(),
|
|
86
94
|
genesisFeedKey: controlFeedKey,
|
|
87
|
-
|
|
88
|
-
|
|
95
|
+
controlFeedKey,
|
|
96
|
+
dataFeedKey: await this._keyring.createKey()
|
|
89
97
|
}
|
|
90
98
|
};
|
|
91
99
|
|
|
@@ -94,17 +102,16 @@ export class IdentityManager {
|
|
|
94
102
|
|
|
95
103
|
{
|
|
96
104
|
const generator = new CredentialGenerator(this._keyring, identityRecord.identityKey, identityRecord.deviceKey);
|
|
105
|
+
assert(identityRecord.haloSpace.genesisFeedKey, 'Genesis feed key is required.');
|
|
106
|
+
assert(identityRecord.haloSpace.dataFeedKey, 'Data feed key is required.');
|
|
97
107
|
const credentials = [
|
|
98
108
|
// Space genesis.
|
|
99
|
-
...(await generator.createSpaceGenesis(
|
|
100
|
-
identityRecord.haloSpace.spaceKey,
|
|
101
|
-
identityRecord.haloSpace.genesisFeedKey
|
|
102
|
-
)),
|
|
109
|
+
...(await generator.createSpaceGenesis(identityRecord.haloSpace.key, identityRecord.haloSpace.genesisFeedKey)),
|
|
103
110
|
|
|
104
111
|
// Feed admission.
|
|
105
112
|
await generator.createFeedAdmission(
|
|
106
|
-
identityRecord.haloSpace.
|
|
107
|
-
identityRecord.haloSpace.
|
|
113
|
+
identityRecord.haloSpace.key,
|
|
114
|
+
identityRecord.haloSpace.dataFeedKey,
|
|
108
115
|
AdmittedFeed.Designation.DATA
|
|
109
116
|
)
|
|
110
117
|
];
|
|
@@ -148,10 +155,11 @@ export class IdentityManager {
|
|
|
148
155
|
identityKey: params.identityKey,
|
|
149
156
|
deviceKey: params.deviceKey,
|
|
150
157
|
haloSpace: {
|
|
151
|
-
|
|
158
|
+
key: params.haloSpaceKey,
|
|
152
159
|
genesisFeedKey: params.haloGenesisFeedKey,
|
|
153
|
-
|
|
154
|
-
|
|
160
|
+
controlFeedKey: params.controlFeedKey,
|
|
161
|
+
dataFeedKey: params.dataFeedKey,
|
|
162
|
+
controlTimeframe: params.controlTimeframe
|
|
155
163
|
}
|
|
156
164
|
};
|
|
157
165
|
const identity = await this._constructIdentity(identityRecord);
|
|
@@ -170,10 +178,12 @@ export class IdentityManager {
|
|
|
170
178
|
log('constructing identity', { identityRecord });
|
|
171
179
|
|
|
172
180
|
// Must be created before the space so the feeds are writable.
|
|
173
|
-
|
|
181
|
+
assert(identityRecord.haloSpace.controlFeedKey);
|
|
182
|
+
const controlFeed = await this._feedStore.openFeed(identityRecord.haloSpace.controlFeedKey, {
|
|
174
183
|
writable: true
|
|
175
184
|
});
|
|
176
|
-
|
|
185
|
+
assert(identityRecord.haloSpace.dataFeedKey);
|
|
186
|
+
const dataFeed = await this._feedStore.openFeed(identityRecord.haloSpace.dataFeedKey, { writable: true });
|
|
177
187
|
|
|
178
188
|
const space = await this._constructSpace({
|
|
179
189
|
spaceRecord: identityRecord.haloSpace,
|
|
@@ -195,13 +205,18 @@ export class IdentityManager {
|
|
|
195
205
|
});
|
|
196
206
|
log('done', { identityKey: identityRecord.identityKey });
|
|
197
207
|
|
|
208
|
+
// TODO(mykola): Set new timeframe on a write to a feed.
|
|
209
|
+
if (identityRecord.haloSpace.controlTimeframe) {
|
|
210
|
+
identity.controlPipeline.state.setTargetTimeframe(identityRecord.haloSpace.controlTimeframe);
|
|
211
|
+
}
|
|
212
|
+
|
|
198
213
|
return identity;
|
|
199
214
|
}
|
|
200
215
|
|
|
201
216
|
private async _constructSpace({ spaceRecord, swarmIdentity, identityKey }: ConstructSpaceParams) {
|
|
202
217
|
return this._spaceManager.constructSpace({
|
|
203
218
|
metadata: {
|
|
204
|
-
key: spaceRecord.
|
|
219
|
+
key: spaceRecord.key,
|
|
205
220
|
genesisFeedKey: spaceRecord.genesisFeedKey
|
|
206
221
|
},
|
|
207
222
|
swarmIdentity,
|
|
@@ -98,7 +98,8 @@ export class DeviceInvitationsHandler extends AbstractInvitationsHandler {
|
|
|
98
98
|
return {
|
|
99
99
|
identityKey: identity.identityKey,
|
|
100
100
|
haloSpaceKey: identity.haloSpaceKey,
|
|
101
|
-
genesisFeedKey: identity.haloGenesisFeedKey
|
|
101
|
+
genesisFeedKey: identity.haloGenesisFeedKey,
|
|
102
|
+
controlTimeframe: identity.controlPipeline.state.timeframe
|
|
102
103
|
};
|
|
103
104
|
},
|
|
104
105
|
|
|
@@ -217,7 +218,7 @@ export class DeviceInvitationsHandler extends AbstractInvitationsHandler {
|
|
|
217
218
|
|
|
218
219
|
// 1. Send request.
|
|
219
220
|
log('sending admission request');
|
|
220
|
-
const { identityKey, haloSpaceKey, genesisFeedKey } =
|
|
221
|
+
const { identityKey, haloSpaceKey, genesisFeedKey, controlTimeframe } =
|
|
221
222
|
await extension.rpc.HaloHostService.requestAdmission();
|
|
222
223
|
|
|
223
224
|
// 2. Get authentication code.
|
|
@@ -250,7 +251,8 @@ export class DeviceInvitationsHandler extends AbstractInvitationsHandler {
|
|
|
250
251
|
haloSpaceKey,
|
|
251
252
|
haloGenesisFeedKey: genesisFeedKey,
|
|
252
253
|
controlFeedKey,
|
|
253
|
-
dataFeedKey
|
|
254
|
+
dataFeedKey,
|
|
255
|
+
controlTimeframe
|
|
254
256
|
});
|
|
255
257
|
|
|
256
258
|
// 5. Success.
|
|
@@ -28,6 +28,17 @@ describe('services/space-invitations-handler', () => {
|
|
|
28
28
|
|
|
29
29
|
const space = await peer.dataSpaceManager!.createSpace();
|
|
30
30
|
expect(peer.dataSpaceManager!.spaces.has(space.key)).to.be.true;
|
|
31
|
+
|
|
32
|
+
await space.close();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('genesis & ready', async () => {
|
|
36
|
+
const [peer] = await asyncChain<ServiceContext>([createIdentity, closeAfterTest])(createPeers(1));
|
|
37
|
+
|
|
38
|
+
const space = await peer.dataSpaceManager!.createSpace();
|
|
39
|
+
expect(peer.dataSpaceManager!.spaces.has(space.key)).to.be.true;
|
|
40
|
+
|
|
41
|
+
await peer.dataSpaceManager?.waitUntilSpaceReady(space.key);
|
|
31
42
|
await space.close();
|
|
32
43
|
});
|
|
33
44
|
|
|
@@ -36,7 +47,7 @@ describe('services/space-invitations-handler', () => {
|
|
|
36
47
|
const space = await peer.dataSpaceManager!.createSpace();
|
|
37
48
|
afterTest(() => space.close());
|
|
38
49
|
|
|
39
|
-
await testLocalDatabase(space.
|
|
50
|
+
await testLocalDatabase(space.dataPipeline);
|
|
40
51
|
});
|
|
41
52
|
|
|
42
53
|
test('invitation with no auth', async () => {
|
|
@@ -53,7 +64,10 @@ describe('services/space-invitations-handler', () => {
|
|
|
53
64
|
expect(space1).not.to.be.undefined;
|
|
54
65
|
expect(space2).not.to.be.undefined;
|
|
55
66
|
|
|
56
|
-
await
|
|
67
|
+
await host.dataSpaceManager?.waitUntilSpaceReady(space1.key);
|
|
68
|
+
await guest.dataSpaceManager?.waitUntilSpaceReady(space2.key);
|
|
69
|
+
|
|
70
|
+
await syncItemsLocal(space1.dataPipeline, space2.dataPipeline);
|
|
57
71
|
|
|
58
72
|
await space1.close();
|
|
59
73
|
await space2.close();
|
|
@@ -116,7 +130,10 @@ describe('services/space-invitations-handler', () => {
|
|
|
116
130
|
expect(space1).not.to.be.undefined;
|
|
117
131
|
expect(space2).not.to.be.undefined;
|
|
118
132
|
|
|
119
|
-
await
|
|
133
|
+
await host.dataSpaceManager?.waitUntilSpaceReady(space1.key);
|
|
134
|
+
await guest.dataSpaceManager?.waitUntilSpaceReady(space2.key);
|
|
135
|
+
|
|
136
|
+
await syncItemsLocal(space1.dataPipeline, space2.dataPipeline);
|
|
120
137
|
|
|
121
138
|
await space1.close();
|
|
122
139
|
await space2.close();
|
|
@@ -177,7 +177,11 @@ export class SpaceInvitationsHandler extends AbstractInvitationsHandler<DataSpac
|
|
|
177
177
|
// Updating credentials complete.
|
|
178
178
|
complete.wake(deviceKey);
|
|
179
179
|
|
|
180
|
-
return {
|
|
180
|
+
return {
|
|
181
|
+
credential: spaceMemberCredential,
|
|
182
|
+
controlTimeframe: space.inner.controlPipeline.state.timeframe,
|
|
183
|
+
dataTimeframe: space.dataPipeline.pipelineState?.timeframe
|
|
184
|
+
};
|
|
181
185
|
} catch (err) {
|
|
182
186
|
// TODO(burdon): Generic RPC callback to report error to client.
|
|
183
187
|
observable.callback.onError(err);
|
|
@@ -316,12 +320,13 @@ export class SpaceInvitationsHandler extends AbstractInvitationsHandler<DataSpac
|
|
|
316
320
|
|
|
317
321
|
// 4. Send admission credentials to host (with local space keys).
|
|
318
322
|
log('request admission', { guest: this._signingContext.deviceKey });
|
|
319
|
-
const { credential } =
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
323
|
+
const { credential, controlTimeframe, dataTimeframe } =
|
|
324
|
+
await extension.rpc.SpaceHostService.requestAdmission({
|
|
325
|
+
identityKey: this._signingContext.identityKey,
|
|
326
|
+
deviceKey: this._signingContext.deviceKey,
|
|
327
|
+
controlFeedKey,
|
|
328
|
+
dataFeedKey
|
|
329
|
+
});
|
|
325
330
|
|
|
326
331
|
// 4. Create local space.
|
|
327
332
|
const assertion = getCredentialAssertion(credential);
|
|
@@ -330,7 +335,9 @@ export class SpaceInvitationsHandler extends AbstractInvitationsHandler<DataSpac
|
|
|
330
335
|
|
|
331
336
|
const space = await this._spaceManager.acceptSpace({
|
|
332
337
|
spaceKey: assertion.spaceKey,
|
|
333
|
-
genesisFeedKey: assertion.genesisFeedKey
|
|
338
|
+
genesisFeedKey: assertion.genesisFeedKey,
|
|
339
|
+
controlTimeframe,
|
|
340
|
+
dataTimeframe
|
|
334
341
|
});
|
|
335
342
|
|
|
336
343
|
// Record credential in our HALO.
|