@dxos/client-services 0.1.0
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/LICENSE +21 -0
- package/README.md +20 -0
- package/dist/src/errors.d.ts +8 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +21 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +26 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/packlets/devtools/devtools-host-events.d.ts +5 -0
- package/dist/src/packlets/devtools/devtools-host-events.d.ts.map +1 -0
- package/dist/src/packlets/devtools/devtools-host-events.js +14 -0
- package/dist/src/packlets/devtools/devtools-host-events.js.map +1 -0
- package/dist/src/packlets/devtools/feeds.d.ts +11 -0
- package/dist/src/packlets/devtools/feeds.d.ts.map +1 -0
- package/dist/src/packlets/devtools/feeds.js +72 -0
- package/dist/src/packlets/devtools/feeds.js.map +1 -0
- package/dist/src/packlets/devtools/index.d.ts +5 -0
- package/dist/src/packlets/devtools/index.d.ts.map +1 -0
- package/dist/src/packlets/devtools/index.js +24 -0
- package/dist/src/packlets/devtools/index.js.map +1 -0
- package/dist/src/packlets/devtools/network.d.ts +19 -0
- package/dist/src/packlets/devtools/network.d.ts.map +1 -0
- package/dist/src/packlets/devtools/network.js +79 -0
- package/dist/src/packlets/devtools/network.js.map +1 -0
- package/dist/src/packlets/devtools/spaces.d.ts +5 -0
- package/dist/src/packlets/devtools/spaces.d.ts.map +1 -0
- package/dist/src/packlets/devtools/spaces.js +38 -0
- package/dist/src/packlets/devtools/spaces.js.map +1 -0
- package/dist/src/packlets/identity/authenticator.d.ts +7 -0
- package/dist/src/packlets/identity/authenticator.d.ts.map +1 -0
- package/dist/src/packlets/identity/authenticator.js +40 -0
- package/dist/src/packlets/identity/authenticator.js.map +1 -0
- package/dist/src/packlets/identity/authenticator.test.d.ts +2 -0
- package/dist/src/packlets/identity/authenticator.test.d.ts.map +1 -0
- package/dist/src/packlets/identity/authenticator.test.js +32 -0
- package/dist/src/packlets/identity/authenticator.test.js.map +1 -0
- package/dist/src/packlets/identity/identity-manager.d.ts +35 -0
- package/dist/src/packlets/identity/identity-manager.d.ts.map +1 -0
- package/dist/src/packlets/identity/identity-manager.js +151 -0
- package/dist/src/packlets/identity/identity-manager.js.map +1 -0
- package/dist/src/packlets/identity/identity-manager.test.d.ts +2 -0
- package/dist/src/packlets/identity/identity-manager.test.d.ts.map +1 -0
- package/dist/src/packlets/identity/identity-manager.test.js +92 -0
- package/dist/src/packlets/identity/identity-manager.test.js.map +1 -0
- package/dist/src/packlets/identity/identity.d.ts +43 -0
- package/dist/src/packlets/identity/identity.d.ts.map +1 -0
- package/dist/src/packlets/identity/identity.js +74 -0
- package/dist/src/packlets/identity/identity.js.map +1 -0
- package/dist/src/packlets/identity/identity.test.d.ts +2 -0
- package/dist/src/packlets/identity/identity.test.d.ts.map +1 -0
- package/dist/src/packlets/identity/identity.test.js +258 -0
- package/dist/src/packlets/identity/identity.test.js.map +1 -0
- package/dist/src/packlets/identity/index.d.ts +4 -0
- package/dist/src/packlets/identity/index.d.ts.map +1 -0
- package/dist/src/packlets/identity/index.js +23 -0
- package/dist/src/packlets/identity/index.js.map +1 -0
- package/dist/src/packlets/invitations/common.d.ts +35 -0
- package/dist/src/packlets/invitations/common.d.ts.map +1 -0
- package/dist/src/packlets/invitations/common.js +12 -0
- package/dist/src/packlets/invitations/common.js.map +1 -0
- package/dist/src/packlets/invitations/halo-invitations.d.ts +23 -0
- package/dist/src/packlets/invitations/halo-invitations.d.ts.map +1 -0
- package/dist/src/packlets/invitations/halo-invitations.js +150 -0
- package/dist/src/packlets/invitations/halo-invitations.js.map +1 -0
- package/dist/src/packlets/invitations/index.d.ts +5 -0
- package/dist/src/packlets/invitations/index.d.ts.map +1 -0
- package/dist/src/packlets/invitations/index.js +24 -0
- package/dist/src/packlets/invitations/index.js.map +1 -0
- package/dist/src/packlets/invitations/invitation-wrapper.d.ts +36 -0
- package/dist/src/packlets/invitations/invitation-wrapper.d.ts.map +1 -0
- package/dist/src/packlets/invitations/invitation-wrapper.js +104 -0
- package/dist/src/packlets/invitations/invitation-wrapper.js.map +1 -0
- package/dist/src/packlets/invitations/observable.test.d.ts +2 -0
- package/dist/src/packlets/invitations/observable.test.d.ts.map +1 -0
- package/dist/src/packlets/invitations/observable.test.js +43 -0
- package/dist/src/packlets/invitations/observable.test.js.map +1 -0
- package/dist/src/packlets/invitations/space-invitations.d.ts +25 -0
- package/dist/src/packlets/invitations/space-invitations.d.ts.map +1 -0
- package/dist/src/packlets/invitations/space-invitations.js +136 -0
- package/dist/src/packlets/invitations/space-invitations.js.map +1 -0
- package/dist/src/packlets/services/impl/devtools.d.ts +34 -0
- package/dist/src/packlets/services/impl/devtools.d.ts.map +1 -0
- package/dist/src/packlets/services/impl/devtools.js +77 -0
- package/dist/src/packlets/services/impl/devtools.js.map +1 -0
- package/dist/src/packlets/services/impl/halo.d.ts +20 -0
- package/dist/src/packlets/services/impl/halo.d.ts.map +1 -0
- package/dist/src/packlets/services/impl/halo.js +93 -0
- package/dist/src/packlets/services/impl/halo.js.map +1 -0
- package/dist/src/packlets/services/impl/index.d.ts +6 -0
- package/dist/src/packlets/services/impl/index.d.ts.map +1 -0
- package/dist/src/packlets/services/impl/index.js +26 -0
- package/dist/src/packlets/services/impl/index.js.map +1 -0
- package/dist/src/packlets/services/impl/party.d.ts +25 -0
- package/dist/src/packlets/services/impl/party.d.ts.map +1 -0
- package/dist/src/packlets/services/impl/party.js +265 -0
- package/dist/src/packlets/services/impl/party.js.map +1 -0
- package/dist/src/packlets/services/impl/profile.d.ts +19 -0
- package/dist/src/packlets/services/impl/profile.d.ts.map +1 -0
- package/dist/src/packlets/services/impl/profile.js +120 -0
- package/dist/src/packlets/services/impl/profile.js.map +1 -0
- package/dist/src/packlets/services/impl/system.d.ts +9 -0
- package/dist/src/packlets/services/impl/system.d.ts.map +1 -0
- package/dist/src/packlets/services/impl/system.js +20 -0
- package/dist/src/packlets/services/impl/system.js.map +1 -0
- package/dist/src/packlets/services/impl/tracing.d.ts +12 -0
- package/dist/src/packlets/services/impl/tracing.d.ts.map +1 -0
- package/dist/src/packlets/services/impl/tracing.js +22 -0
- package/dist/src/packlets/services/impl/tracing.js.map +1 -0
- package/dist/src/packlets/services/index.d.ts +6 -0
- package/dist/src/packlets/services/index.d.ts.map +1 -0
- package/dist/src/packlets/services/index.js +25 -0
- package/dist/src/packlets/services/index.js.map +1 -0
- package/dist/src/packlets/services/service-context.d.ts +36 -0
- package/dist/src/packlets/services/service-context.d.ts.map +1 -0
- package/dist/src/packlets/services/service-context.js +112 -0
- package/dist/src/packlets/services/service-context.js.map +1 -0
- package/dist/src/packlets/services/service-factory.d.ts +15 -0
- package/dist/src/packlets/services/service-factory.d.ts.map +1 -0
- package/dist/src/packlets/services/service-factory.js +25 -0
- package/dist/src/packlets/services/service-factory.js.map +1 -0
- package/dist/src/packlets/services/service-host.d.ts +27 -0
- package/dist/src/packlets/services/service-host.d.ts.map +1 -0
- package/dist/src/packlets/services/service-host.js +78 -0
- package/dist/src/packlets/services/service-host.js.map +1 -0
- package/dist/src/packlets/services/service-host.test.d.ts +2 -0
- package/dist/src/packlets/services/service-host.test.d.ts.map +1 -0
- package/dist/src/packlets/services/service-host.test.js +78 -0
- package/dist/src/packlets/services/service-host.test.js.map +1 -0
- package/dist/src/packlets/services/services.d.ts +19 -0
- package/dist/src/packlets/services/services.d.ts.map +1 -0
- package/dist/src/packlets/services/services.js +19 -0
- package/dist/src/packlets/services/services.js.map +1 -0
- package/dist/src/packlets/services/signer.d.ts +9 -0
- package/dist/src/packlets/services/signer.d.ts.map +1 -0
- package/dist/src/packlets/services/signer.js +6 -0
- package/dist/src/packlets/services/signer.js.map +1 -0
- package/dist/src/packlets/services/testing/halo.test.d.ts +2 -0
- package/dist/src/packlets/services/testing/halo.test.d.ts.map +1 -0
- package/dist/src/packlets/services/testing/halo.test.js +34 -0
- package/dist/src/packlets/services/testing/halo.test.js.map +1 -0
- package/dist/src/packlets/services/testing/spaces.test.d.ts +2 -0
- package/dist/src/packlets/services/testing/spaces.test.d.ts.map +1 -0
- package/dist/src/packlets/services/testing/spaces.test.js +68 -0
- package/dist/src/packlets/services/testing/spaces.test.js.map +1 -0
- package/dist/src/packlets/services/testing/testing.d.ts +8 -0
- package/dist/src/packlets/services/testing/testing.d.ts.map +1 -0
- package/dist/src/packlets/services/testing/testing.js +23 -0
- package/dist/src/packlets/services/testing/testing.js.map +1 -0
- package/dist/src/packlets/storage/index.d.ts +2 -0
- package/dist/src/packlets/storage/index.d.ts.map +1 -0
- package/dist/src/packlets/storage/index.js +21 -0
- package/dist/src/packlets/storage/index.js.map +1 -0
- package/dist/src/packlets/storage/storage.d.ts +7 -0
- package/dist/src/packlets/storage/storage.d.ts.map +1 -0
- package/dist/src/packlets/storage/storage.js +89 -0
- package/dist/src/packlets/storage/storage.js.map +1 -0
- package/package.json +61 -0
- package/src/errors.ts +19 -0
- package/src/index.ts +11 -0
- package/src/packlets/devtools/devtools-host-events.ts +8 -0
- package/src/packlets/devtools/feeds.ts +91 -0
- package/src/packlets/devtools/index.ts +8 -0
- package/src/packlets/devtools/network.ts +89 -0
- package/src/packlets/devtools/spaces.ts +50 -0
- package/src/packlets/identity/authenticator.test.ts +32 -0
- package/src/packlets/identity/authenticator.ts +49 -0
- package/src/packlets/identity/identity-manager.test.ts +121 -0
- package/src/packlets/identity/identity-manager.ts +207 -0
- package/src/packlets/identity/identity.test.ts +295 -0
- package/src/packlets/identity/identity.ts +109 -0
- package/src/packlets/identity/index.ts +7 -0
- package/src/packlets/invitations/common.ts +48 -0
- package/src/packlets/invitations/halo-invitations.ts +162 -0
- package/src/packlets/invitations/index.ts +8 -0
- package/src/packlets/invitations/invitation-wrapper.ts +140 -0
- package/src/packlets/invitations/observable.test.ts +67 -0
- package/src/packlets/invitations/space-invitations.ts +159 -0
- package/src/packlets/services/impl/devtools.ts +141 -0
- package/src/packlets/services/impl/halo.ts +107 -0
- package/src/packlets/services/impl/index.ts +11 -0
- package/src/packlets/services/impl/party.ts +305 -0
- package/src/packlets/services/impl/profile.ts +141 -0
- package/src/packlets/services/impl/system.ts +19 -0
- package/src/packlets/services/impl/tracing.ts +21 -0
- package/src/packlets/services/index.ts +9 -0
- package/src/packlets/services/service-context.ts +151 -0
- package/src/packlets/services/service-factory.ts +35 -0
- package/src/packlets/services/service-host.test.ts +88 -0
- package/src/packlets/services/service-host.ts +101 -0
- package/src/packlets/services/services.ts +39 -0
- package/src/packlets/services/signer.ts +13 -0
- package/src/packlets/services/testing/halo.test.ts +40 -0
- package/src/packlets/services/testing/spaces.test.ts +87 -0
- package/src/packlets/services/testing/testing.ts +28 -0
- package/src/packlets/storage/index.ts +5 -0
- package/src/packlets/storage/storage.ts +97 -0
- package/src/typings.d.ts +5 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2022 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ServiceContext = void 0;
|
|
10
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
11
|
+
const async_1 = require("@dxos/async");
|
|
12
|
+
const debug_1 = require("@dxos/debug");
|
|
13
|
+
const echo_db_1 = require("@dxos/echo-db");
|
|
14
|
+
const feed_store_1 = require("@dxos/feed-store");
|
|
15
|
+
const keyring_1 = require("@dxos/keyring");
|
|
16
|
+
const log_1 = require("@dxos/log");
|
|
17
|
+
const identity_1 = require("../identity");
|
|
18
|
+
const invitations_1 = require("../invitations");
|
|
19
|
+
/**
|
|
20
|
+
* Shared backend for all client services.
|
|
21
|
+
*/
|
|
22
|
+
// TODO(burdon): Rename/break-up into smaller components. And/or make members private.
|
|
23
|
+
class ServiceContext {
|
|
24
|
+
// prettier-ignore
|
|
25
|
+
constructor(storage, networkManager, modelFactory) {
|
|
26
|
+
this.storage = storage;
|
|
27
|
+
this.networkManager = networkManager;
|
|
28
|
+
this.modelFactory = modelFactory;
|
|
29
|
+
this.initialized = new async_1.Trigger();
|
|
30
|
+
// TODO(burdon): Factor out with other services.
|
|
31
|
+
this.dataService = new echo_db_1.DataService();
|
|
32
|
+
// TODO(burdon): Move strings to constants.
|
|
33
|
+
this.metadataStore = new echo_db_1.MetadataStore(storage.createDirectory('metadata'));
|
|
34
|
+
this.keyring = new keyring_1.Keyring(storage.createDirectory('keyring'));
|
|
35
|
+
this.feedStore = new feed_store_1.FeedStore({
|
|
36
|
+
factory: new feed_store_1.FeedFactory({
|
|
37
|
+
root: storage.createDirectory('feeds'),
|
|
38
|
+
signer: this.keyring,
|
|
39
|
+
hypercore: {
|
|
40
|
+
valueEncoding: echo_db_1.valueEncoding
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
this.identityManager = new identity_1.IdentityManager(this.metadataStore, this.feedStore, this.keyring, networkManager, modelFactory);
|
|
45
|
+
// TODO(burdon): _initialize called in multiple places.
|
|
46
|
+
this.haloInvitations = new invitations_1.HaloInvitations(this.identityManager, this.networkManager, async () => {
|
|
47
|
+
await this._initialize();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async open() {
|
|
51
|
+
(0, log_1.log)('opening...', {}, { file: "packages/sdk/client-services/src/packlets/services/service-context.ts", line: 84 });
|
|
52
|
+
await this.identityManager.open();
|
|
53
|
+
if (this.identityManager.identity) {
|
|
54
|
+
await this._initialize();
|
|
55
|
+
}
|
|
56
|
+
(0, log_1.log)('opened', {}, { file: "packages/sdk/client-services/src/packlets/services/service-context.ts", line: 89 });
|
|
57
|
+
}
|
|
58
|
+
async close() {
|
|
59
|
+
var _a;
|
|
60
|
+
(0, log_1.log)('closing...', {}, { file: "packages/sdk/client-services/src/packlets/services/service-context.ts", line: 93 });
|
|
61
|
+
await this.identityManager.close();
|
|
62
|
+
await ((_a = this.spaceManager) === null || _a === void 0 ? void 0 : _a.close());
|
|
63
|
+
await this.feedStore.close();
|
|
64
|
+
await this.networkManager.destroy(); // TODO(burdon): Close.
|
|
65
|
+
(0, log_1.log)('closed', {}, { file: "packages/sdk/client-services/src/packlets/services/service-context.ts", line: 98 });
|
|
66
|
+
}
|
|
67
|
+
async createIdentity() {
|
|
68
|
+
const identity = await this.identityManager.createIdentity();
|
|
69
|
+
this.dataService.trackParty(identity.haloSpaceKey, identity.haloDatabase.createDataServiceHost());
|
|
70
|
+
await this._initialize();
|
|
71
|
+
return identity;
|
|
72
|
+
}
|
|
73
|
+
async createInvitation(spaceKey, onFinish) {
|
|
74
|
+
var _a;
|
|
75
|
+
(0, node_assert_1.default)(this.spaceManager);
|
|
76
|
+
(0, node_assert_1.default)(this.spaceInvitations);
|
|
77
|
+
const space = (_a = this.spaceManager.spaces.get(spaceKey)) !== null && _a !== void 0 ? _a : (0, debug_1.raise)(new Error('Space not found.'));
|
|
78
|
+
const invitation = await this.spaceInvitations.createInvitation(space, { onFinish });
|
|
79
|
+
return invitations_1.InvitationWrapper.fromProto(invitation);
|
|
80
|
+
}
|
|
81
|
+
async acceptInvitation(invitationDescriptor) {
|
|
82
|
+
(0, node_assert_1.default)(this.spaceInvitations);
|
|
83
|
+
return this.spaceInvitations.acceptInvitation(invitationDescriptor.toProto());
|
|
84
|
+
}
|
|
85
|
+
async _initialize() {
|
|
86
|
+
var _a;
|
|
87
|
+
const identity = (_a = this.identityManager.identity) !== null && _a !== void 0 ? _a : (0, debug_1.failUndefined)();
|
|
88
|
+
const signingContext = {
|
|
89
|
+
credentialProvider: echo_db_1.MOCK_AUTH_PROVIDER,
|
|
90
|
+
credentialAuthenticator: echo_db_1.MOCK_AUTH_VERIFIER,
|
|
91
|
+
credentialSigner: identity.getIdentityCredentialSigner(),
|
|
92
|
+
identityKey: identity.identityKey,
|
|
93
|
+
deviceKey: identity.deviceKey
|
|
94
|
+
};
|
|
95
|
+
// Create in constructor (avoid all of these private variables).
|
|
96
|
+
const spaceManager = new echo_db_1.SpaceManager({
|
|
97
|
+
metadataStore: this.metadataStore,
|
|
98
|
+
feedStore: this.feedStore,
|
|
99
|
+
networkManager: this.networkManager,
|
|
100
|
+
keyring: this.keyring,
|
|
101
|
+
dataService: this.dataService,
|
|
102
|
+
modelFactory: this.modelFactory,
|
|
103
|
+
signingContext
|
|
104
|
+
});
|
|
105
|
+
await spaceManager.open();
|
|
106
|
+
this.spaceManager = spaceManager;
|
|
107
|
+
this.spaceInvitations = new invitations_1.SpaceInvitations(this.spaceManager, this.networkManager, signingContext);
|
|
108
|
+
this.initialized.wake();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.ServiceContext = ServiceContext;
|
|
112
|
+
//# sourceMappingURL=service-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-context.js","sourceRoot":"","sources":["../../../../src/packlets/services/service-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Config } from '@dxos/config';
|
|
2
|
+
import { NetworkManager } from '@dxos/network-manager';
|
|
3
|
+
import { ServiceContext } from './service-context';
|
|
4
|
+
import { ClientServices } from './services';
|
|
5
|
+
import { HaloSigner } from './signer';
|
|
6
|
+
/**
|
|
7
|
+
* Service factory.
|
|
8
|
+
*/
|
|
9
|
+
export declare const createServices: ({ config, context, signer }: {
|
|
10
|
+
config: Config;
|
|
11
|
+
context: ServiceContext;
|
|
12
|
+
networkManager: NetworkManager;
|
|
13
|
+
signer?: HaloSigner | undefined;
|
|
14
|
+
}) => ClientServices;
|
|
15
|
+
//# sourceMappingURL=service-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-factory.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/service-factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,cAAc;YAKjB,MAAM;aACL,cAAc;oBACP,cAAc;;MAE5B,cAQF,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2022 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createServices = void 0;
|
|
7
|
+
const devtools_1 = require("../devtools");
|
|
8
|
+
const impl_1 = require("./impl");
|
|
9
|
+
const devtools_2 = require("./impl/devtools");
|
|
10
|
+
/**
|
|
11
|
+
* Service factory.
|
|
12
|
+
*/
|
|
13
|
+
const createServices = ({ config, context, // TODO(burdon): Too big to pass into services.?
|
|
14
|
+
signer // TODO(burdon): Remove (legacy?)
|
|
15
|
+
}) => ({
|
|
16
|
+
DataService: context.dataService,
|
|
17
|
+
HaloService: new impl_1.HaloService(null, signer),
|
|
18
|
+
PartyService: new impl_1.PartyService(context),
|
|
19
|
+
ProfileService: new impl_1.ProfileService(context),
|
|
20
|
+
SystemService: new impl_1.SystemService(config),
|
|
21
|
+
TracingService: new impl_1.TracingService(config),
|
|
22
|
+
DevtoolsHost: new devtools_2.DevtoolsService({ events: new devtools_1.DevtoolsHostEvents(), config, context })
|
|
23
|
+
});
|
|
24
|
+
exports.createServices = createServices;
|
|
25
|
+
//# sourceMappingURL=service-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-factory.js","sourceRoot":"","sources":["../../../../src/packlets/services/service-factory.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAKF,0CAAiD;AACjD,iCAAkG;AAClG,8CAAkD;AAKlD;;GAEG;AACI,MAAM,cAAc,GAAG,CAAC,EAC7B,MAAM,EACN,OAAO,EAAE,gDAAgD;AACzD,MAAM,CAAC,iCAAiC;EAMzC,EAAkB,EAAE,CAAC,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC,WAAW;IAChC,WAAW,EAAE,IAAI,kBAAW,CAAC,IAAI,EAAE,MAAM,CAAC;IAC1C,YAAY,EAAE,IAAI,mBAAY,CAAC,OAAO,CAAC;IACvC,cAAc,EAAE,IAAI,qBAAc,CAAC,OAAO,CAAC;IAC3C,aAAa,EAAE,IAAI,oBAAa,CAAC,MAAM,CAAC;IACxC,cAAc,EAAE,IAAI,qBAAc,CAAC,MAAM,CAAC;IAC1C,YAAY,EAAE,IAAI,0BAAe,CAAC,EAAE,MAAM,EAAE,IAAI,6BAAkB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;CACzF,CAAC,CAAC;AAjBU,QAAA,cAAc,kBAiBxB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Config } from '@dxos/config';
|
|
2
|
+
import { ModelFactory } from '@dxos/model-factory';
|
|
3
|
+
import { NetworkManager } from '@dxos/network-manager';
|
|
4
|
+
import { ClientServiceProvider, ClientServices } from './services';
|
|
5
|
+
import { HaloSigner } from './signer';
|
|
6
|
+
export declare const createNetworkManager: (config: Config) => NetworkManager;
|
|
7
|
+
declare type ClientServiceHostParams = {
|
|
8
|
+
config: Config;
|
|
9
|
+
signer?: HaloSigner;
|
|
10
|
+
modelFactory?: ModelFactory;
|
|
11
|
+
networkManager: NetworkManager;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Remote service implementation.
|
|
15
|
+
*/
|
|
16
|
+
export declare class ClientServiceHost implements ClientServiceProvider {
|
|
17
|
+
private readonly _config;
|
|
18
|
+
private readonly _signer?;
|
|
19
|
+
private readonly _context;
|
|
20
|
+
private readonly _services;
|
|
21
|
+
constructor({ config, modelFactory, signer, networkManager }: ClientServiceHostParams);
|
|
22
|
+
get services(): ClientServices;
|
|
23
|
+
open(onProgressCallback?: ((progress: any) => void) | undefined): Promise<void>;
|
|
24
|
+
close(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=service-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-host.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/service-host.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAwD,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM7G,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAOtC,eAAO,MAAM,oBAAoB,WAAY,MAAM,KAAG,cAoBrD,CAAC;AAEF,aAAK,uBAAuB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,qBAAa,iBAAkB,YAAW,qBAAqB;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;gBAE/B,EACV,MAAM,EACN,YAA4D,EAC5D,MAAM,EACN,cAAc,EACf,EAAE,uBAAuB;IAgB1B,IAAI,QAAQ,mBAEX;IAGK,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,SAAS;IAO/D,KAAK;CAKZ"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2021 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ClientServiceHost = exports.createNetworkManager = void 0;
|
|
10
|
+
const assert_1 = __importDefault(require("assert"));
|
|
11
|
+
const log_1 = require("@dxos/log");
|
|
12
|
+
const messaging_1 = require("@dxos/messaging");
|
|
13
|
+
const model_factory_1 = require("@dxos/model-factory");
|
|
14
|
+
const network_manager_1 = require("@dxos/network-manager");
|
|
15
|
+
const object_model_1 = require("@dxos/object-model");
|
|
16
|
+
const storage_1 = require("../storage");
|
|
17
|
+
const service_context_1 = require("./service-context");
|
|
18
|
+
const service_factory_1 = require("./service-factory");
|
|
19
|
+
// import { DevtoolsHostEvents } from '../devtools';
|
|
20
|
+
// TODO(burdon): Remove (no memory defaults).
|
|
21
|
+
const memorySignalManagerContext = new messaging_1.MemorySignalManagerContext();
|
|
22
|
+
// TODO(burdon): Factor out.
|
|
23
|
+
const createNetworkManager = (config) => {
|
|
24
|
+
const signalServer = config.get('runtime.services.signal.server');
|
|
25
|
+
// TODO(burdon): Remove.
|
|
26
|
+
if (!signalServer) {
|
|
27
|
+
log_1.log.warn('DEPRECATED: falling back to MemorySignalManager', {}, { file: "packages/sdk/client-services/src/packlets/services/service-host.ts", line: 29 });
|
|
28
|
+
return new network_manager_1.NetworkManager({
|
|
29
|
+
log: true,
|
|
30
|
+
signalManager: new messaging_1.MemorySignalManager(memorySignalManagerContext),
|
|
31
|
+
transportFactory: network_manager_1.MemoryTransportFactory
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
(0, assert_1.default)(signalServer);
|
|
35
|
+
return new network_manager_1.NetworkManager({
|
|
36
|
+
log: true,
|
|
37
|
+
signalManager: new messaging_1.WebsocketSignalManager([signalServer]),
|
|
38
|
+
transportFactory: (0, network_manager_1.createWebRTCTransportFactory)({
|
|
39
|
+
iceServers: config.get('runtime.services.ice')
|
|
40
|
+
})
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.createNetworkManager = createNetworkManager;
|
|
44
|
+
/**
|
|
45
|
+
* Remote service implementation.
|
|
46
|
+
*/
|
|
47
|
+
class ClientServiceHost {
|
|
48
|
+
constructor({ config, modelFactory = new model_factory_1.ModelFactory().registerModel(object_model_1.ObjectModel), signer, networkManager }) {
|
|
49
|
+
this._config = config;
|
|
50
|
+
this._signer = signer;
|
|
51
|
+
// TODO(dmaretskyi): Remove keyStorage.
|
|
52
|
+
const { storage } = (0, storage_1.createStorageObjects)(this._config.get('runtime.client.storage', {}));
|
|
53
|
+
this._context = new service_context_1.ServiceContext(storage, networkManager, modelFactory);
|
|
54
|
+
this._services = (0, service_factory_1.createServices)({
|
|
55
|
+
config: this._config,
|
|
56
|
+
context: this._context,
|
|
57
|
+
signer: this._signer,
|
|
58
|
+
networkManager
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
get services() {
|
|
62
|
+
return this._services;
|
|
63
|
+
}
|
|
64
|
+
// TODO(dmaretskyi): progress.
|
|
65
|
+
async open(onProgressCallback) {
|
|
66
|
+
(0, log_1.log)('opening...', {}, { file: "packages/sdk/client-services/src/packlets/services/service-host.ts", line: 90 });
|
|
67
|
+
await this._context.open();
|
|
68
|
+
// this._devtoolsEvents.ready.emit();
|
|
69
|
+
(0, log_1.log)('opened', {}, { file: "packages/sdk/client-services/src/packlets/services/service-host.ts", line: 93 });
|
|
70
|
+
}
|
|
71
|
+
async close() {
|
|
72
|
+
(0, log_1.log)('closing...', {}, { file: "packages/sdk/client-services/src/packlets/services/service-host.ts", line: 97 });
|
|
73
|
+
await this._context.close();
|
|
74
|
+
(0, log_1.log)('closed', {}, { file: "packages/sdk/client-services/src/packlets/services/service-host.ts", line: 99 });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.ClientServiceHost = ClientServiceHost;
|
|
78
|
+
//# sourceMappingURL=service-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-host.js","sourceRoot":"","sources":["../../../../src/packlets/services/service-host.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,oDAA4B;AAG5B,mCAAgC;AAChC,+CAA0G;AAC1G,uDAAmD;AACnD,2DAA6G;AAC7G,qDAAiD;AAEjD,wCAAkD;AAClD,uDAAmD;AACnD,uDAAmD;AAGnD,oDAAoD;AAEpD,6CAA6C;AAC7C,MAAM,0BAA0B,GAAG,IAAI,sCAA0B,EAAE,CAAC;AAEpE,4BAA4B;AACrB,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAkB,EAAE;IACrE,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAClE,wBAAwB;IACxB,IAAI,CAAC,YAAY,EAAE;QACjB,SAAG,CAAC,IAAI,CAAC,iDAAiD,+FAAC,CAAC;QAC5D,OAAO,IAAI,gCAAc,CAAC;YACxB,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,IAAI,+BAAmB,CAAC,0BAA0B,CAAC;YAClE,gBAAgB,EAAE,wCAAsB;SACzC,CAAC,CAAC;KACJ;IACD,IAAA,gBAAM,EAAC,YAAY,CAAC,CAAC;IAErB,OAAO,IAAI,gCAAc,CAAC;QACxB,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,IAAI,kCAAsB,CAAC,CAAC,YAAY,CAAC,CAAC;QACzD,gBAAgB,EAAE,IAAA,8CAA4B,EAAC;YAC7C,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;SAC/C,CAAC;KACH,CAAC,CAAC;AACL,CAAC,CAAC;AApBW,QAAA,oBAAoB,wBAoB/B;AASF;;GAEG;AACH,MAAa,iBAAiB;IAM5B,YAAY,EACV,MAAM,EACN,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC,aAAa,CAAC,0BAAW,CAAC,EAC5D,MAAM,EACN,cAAc,EACU;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,uCAAuC;QACvC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,8BAAoB,EAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,CAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ,GAAG,IAAI,gCAAc,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;QAE1E,IAAI,CAAC,SAAS,GAAG,IAAA,gCAAc,EAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,IAAI,CAAC,kBAA0D;QACnE,IAAA,SAAG,EAAC,YAAY,+FAAC,CAAC;QAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3B,qCAAqC;QACrC,IAAA,SAAG,EAAC,QAAQ,+FAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAA,SAAG,EAAC,YAAY,+FAAC,CAAC;QAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAA,SAAG,EAAC,QAAQ,+FAAC,CAAC;IAChB,CAAC;CACF;AA5CD,8CA4CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-host.test.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/service-host.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2022 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chai_1 = require("chai");
|
|
7
|
+
const async_1 = require("@dxos/async");
|
|
8
|
+
const config_1 = require("@dxos/config");
|
|
9
|
+
const messaging_1 = require("@dxos/messaging");
|
|
10
|
+
const network_manager_1 = require("@dxos/network-manager");
|
|
11
|
+
const client_1 = require("@dxos/protocols/proto/dxos/client");
|
|
12
|
+
const testutils_1 = require("@dxos/testutils");
|
|
13
|
+
const service_host_1 = require("./service-host");
|
|
14
|
+
const defaultTestingConfig = {
|
|
15
|
+
version: 1
|
|
16
|
+
// runtime: {
|
|
17
|
+
// services: {
|
|
18
|
+
// signal: {
|
|
19
|
+
// server: 'ws://localhost:4000/.well-known/dx/signal'
|
|
20
|
+
// }
|
|
21
|
+
// }
|
|
22
|
+
// }
|
|
23
|
+
};
|
|
24
|
+
describe('services/service-host', function () {
|
|
25
|
+
// TODO(burdon): Factor out.
|
|
26
|
+
const createPeer = (signalManagerContext) => {
|
|
27
|
+
const networkManager = new network_manager_1.NetworkManager({
|
|
28
|
+
signalManager: new messaging_1.MemorySignalManager(signalManagerContext),
|
|
29
|
+
transportFactory: network_manager_1.MemoryTransportFactory
|
|
30
|
+
});
|
|
31
|
+
return new service_host_1.ClientServiceHost({
|
|
32
|
+
config: new config_1.Config(defaultTestingConfig),
|
|
33
|
+
networkManager
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
it('process device invitation', async function () {
|
|
37
|
+
const signalManagerContext = new messaging_1.MemorySignalManagerContext();
|
|
38
|
+
const peer1 = createPeer(signalManagerContext);
|
|
39
|
+
const peer2 = createPeer(signalManagerContext);
|
|
40
|
+
await peer1.open();
|
|
41
|
+
await peer2.open();
|
|
42
|
+
(0, testutils_1.afterTest)(() => peer1.close());
|
|
43
|
+
(0, testutils_1.afterTest)(() => peer2.close());
|
|
44
|
+
const invitationTrigger = new async_1.Trigger();
|
|
45
|
+
{
|
|
46
|
+
await peer1.services.ProfileService.createProfile({});
|
|
47
|
+
const stream = peer1.services.ProfileService.createInvitation();
|
|
48
|
+
stream.subscribe((msg) => {
|
|
49
|
+
switch (msg.state) {
|
|
50
|
+
case client_1.InvitationState.WAITING_FOR_CONNECTION: {
|
|
51
|
+
invitationTrigger.wake(msg.descriptor);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const [done, setAck] = (0, async_1.latch)({ count: 2 });
|
|
58
|
+
{
|
|
59
|
+
const invitation = await invitationTrigger.wait();
|
|
60
|
+
const stream = peer2.services.ProfileService.acceptInvitation(invitation);
|
|
61
|
+
stream.subscribe((msg) => {
|
|
62
|
+
switch (msg.state) {
|
|
63
|
+
case client_1.InvitationState.CONNECTED: {
|
|
64
|
+
setAck();
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
case client_1.InvitationState.SUCCESS: {
|
|
68
|
+
(0, chai_1.expect)(msg.partyKey).not.to.be.undefined;
|
|
69
|
+
setAck();
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
await done();
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=service-host.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-host.test.js","sourceRoot":"","sources":["../../../../src/packlets/services/service-host.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PartyService, ProfileService, SystemService, HaloService } from '@dxos/protocols/proto/dxos/client';
|
|
2
|
+
import { DevtoolsHost, TracingService } from '@dxos/protocols/proto/dxos/devtools/host';
|
|
3
|
+
import { DataService } from '@dxos/protocols/proto/dxos/echo/service';
|
|
4
|
+
export declare type ClientServices = {
|
|
5
|
+
DataService: DataService;
|
|
6
|
+
HaloService: HaloService;
|
|
7
|
+
PartyService: PartyService;
|
|
8
|
+
ProfileService: ProfileService;
|
|
9
|
+
SystemService: SystemService;
|
|
10
|
+
DevtoolsHost: DevtoolsHost;
|
|
11
|
+
TracingService: TracingService;
|
|
12
|
+
};
|
|
13
|
+
export declare const clientServiceBundle: import("@dxos/rpc").ServiceBundle<ClientServices>;
|
|
14
|
+
export interface ClientServiceProvider {
|
|
15
|
+
services: ClientServices;
|
|
16
|
+
open(onProgressCallback?: ((progress: any) => void) | undefined): Promise<void>;
|
|
17
|
+
close(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/services.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAItE,oBAAY,cAAc,GAAG;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAE7B,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAGF,eAAO,MAAM,mBAAmB,mDAS9B,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2020 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.clientServiceBundle = void 0;
|
|
7
|
+
const protocols_1 = require("@dxos/protocols");
|
|
8
|
+
const rpc_1 = require("@dxos/rpc");
|
|
9
|
+
// TODO(burdon): Rethink name/factory.
|
|
10
|
+
exports.clientServiceBundle = (0, rpc_1.createServiceBundle)({
|
|
11
|
+
DataService: protocols_1.schema.getService('dxos.echo.service.DataService'),
|
|
12
|
+
HaloService: protocols_1.schema.getService('dxos.client.HaloService'),
|
|
13
|
+
PartyService: protocols_1.schema.getService('dxos.client.PartyService'),
|
|
14
|
+
ProfileService: protocols_1.schema.getService('dxos.client.ProfileService'),
|
|
15
|
+
SystemService: protocols_1.schema.getService('dxos.client.SystemService'),
|
|
16
|
+
DevtoolsHost: protocols_1.schema.getService('dxos.devtools.host.DevtoolsHost'),
|
|
17
|
+
TracingService: protocols_1.schema.getService('dxos.devtools.host.TracingService')
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../../../src/packlets/services/services.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,+CAAyC;AAIzC,mCAAgD;AAchD,sCAAsC;AACzB,QAAA,mBAAmB,GAAG,IAAA,yBAAmB,EAAiB;IACrE,WAAW,EAAE,kBAAM,CAAC,UAAU,CAAC,+BAA+B,CAAC;IAC/D,WAAW,EAAE,kBAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC;IACzD,YAAY,EAAE,kBAAM,CAAC,UAAU,CAAC,0BAA0B,CAAC;IAC3D,cAAc,EAAE,kBAAM,CAAC,UAAU,CAAC,4BAA4B,CAAC;IAC/D,aAAa,EAAE,kBAAM,CAAC,UAAU,CAAC,2BAA2B,CAAC;IAE7D,YAAY,EAAE,kBAAM,CAAC,UAAU,CAAC,iCAAiC,CAAC;IAClE,cAAc,EAAE,kBAAM,CAAC,UAAU,CAAC,mCAAmC,CAAC;CACvE,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SignRequest, SignResponse } from '@dxos/protocols/proto/dxos/client';
|
|
2
|
+
import { KeyRecord } from '@dxos/protocols/proto/dxos/halo/keys';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
export interface HaloSigner {
|
|
7
|
+
sign: (request: SignRequest, key: KeyRecord) => Promise<SignResponse>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=signer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/signer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACvE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../../src/packlets/services/signer.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"halo.test.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/testing/halo.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2022 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chai_1 = require("chai");
|
|
7
|
+
const messaging_1 = require("@dxos/messaging");
|
|
8
|
+
const testutils_1 = require("@dxos/testutils");
|
|
9
|
+
const testing_1 = require("./testing");
|
|
10
|
+
describe('services/halo', function () {
|
|
11
|
+
it('creates identity', async function () {
|
|
12
|
+
const peer = await (0, testing_1.createServiceContext)();
|
|
13
|
+
await peer.open();
|
|
14
|
+
(0, testutils_1.afterTest)(() => peer.close());
|
|
15
|
+
const identity = await peer.createIdentity();
|
|
16
|
+
(0, chai_1.expect)(identity).not.to.be.undefined;
|
|
17
|
+
});
|
|
18
|
+
it('device invitations', async function () {
|
|
19
|
+
const signalContext = new messaging_1.MemorySignalManagerContext();
|
|
20
|
+
const peer1 = await (0, testing_1.createServiceContext)({ signalContext });
|
|
21
|
+
const peer2 = await (0, testing_1.createServiceContext)({ signalContext });
|
|
22
|
+
await peer1.open();
|
|
23
|
+
await peer2.open();
|
|
24
|
+
(0, testutils_1.afterTest)(() => peer1.close());
|
|
25
|
+
(0, testutils_1.afterTest)(() => peer2.close());
|
|
26
|
+
const identity1 = await peer1.createIdentity();
|
|
27
|
+
(0, chai_1.expect)(peer1.identityManager.identity).to.eq(identity1);
|
|
28
|
+
(0, chai_1.expect)(peer2.identityManager.identity).to.be.undefined;
|
|
29
|
+
const invitation = await peer1.haloInvitations.createInvitation();
|
|
30
|
+
const identity2 = await peer2.haloInvitations.acceptInvitation(invitation);
|
|
31
|
+
(0, chai_1.expect)(identity2.identityKey).to.deep.eq(identity1.identityKey);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=halo.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"halo.test.js","sourceRoot":"","sources":["../../../../../src/packlets/services/testing/halo.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;AAEF,+BAA8B;AAE9B,+CAA6D;AAC7D,+CAA4C;AAE5C,uCAAiD;AAEjD,QAAQ,CAAC,eAAe,EAAE;IACxB,EAAE,CAAC,kBAAkB,EAAE,KAAK;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAoB,GAAE,CAAC;QAC1C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK;QAC5B,MAAM,aAAa,GAAG,IAAI,sCAA0B,EAAE,CAAC;QAEvD,MAAM,KAAK,GAAG,MAAM,IAAA,8BAAoB,EAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,IAAA,8BAAoB,EAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/B,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAE/B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAA,aAAM,EAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACxD,IAAA,aAAM,EAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAEvD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAA,aAAM,EAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spaces.test.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/testing/spaces.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2022 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chai_1 = require("chai");
|
|
7
|
+
const messaging_1 = require("@dxos/messaging");
|
|
8
|
+
const testutils_1 = require("@dxos/testutils");
|
|
9
|
+
const testing_1 = require("./testing");
|
|
10
|
+
describe('services/spaces', function () {
|
|
11
|
+
it('space genesis', async function () {
|
|
12
|
+
const peer = await (0, testing_1.createServiceContext)();
|
|
13
|
+
await peer.open();
|
|
14
|
+
(0, testutils_1.afterTest)(() => peer.close());
|
|
15
|
+
await peer.createIdentity();
|
|
16
|
+
const space = await peer.spaceManager.createSpace();
|
|
17
|
+
(0, chai_1.expect)(space.database).not.to.be.undefined;
|
|
18
|
+
(0, chai_1.expect)(peer.spaceManager.spaces.has(space.key)).to.be.true;
|
|
19
|
+
await space.close();
|
|
20
|
+
});
|
|
21
|
+
it('space genesis with database', async function () {
|
|
22
|
+
const peer = await (0, testing_1.createServiceContext)();
|
|
23
|
+
await peer.open();
|
|
24
|
+
(0, testutils_1.afterTest)(() => peer.close());
|
|
25
|
+
await peer.createIdentity();
|
|
26
|
+
const space = await peer.spaceManager.createSpace();
|
|
27
|
+
{
|
|
28
|
+
const item = await space.database.createItem({ type: 'test' });
|
|
29
|
+
void item.model.set('name', 'test');
|
|
30
|
+
}
|
|
31
|
+
{
|
|
32
|
+
const [item] = space.database.select({ type: 'test' }).exec().entities;
|
|
33
|
+
(0, chai_1.expect)(item.model.get('name')).to.eq('test');
|
|
34
|
+
}
|
|
35
|
+
await space.close();
|
|
36
|
+
});
|
|
37
|
+
it('create and accepts space invitations', async function () {
|
|
38
|
+
const signalContext = new messaging_1.MemorySignalManagerContext();
|
|
39
|
+
const peer1 = await (0, testing_1.createServiceContext)({ signalContext });
|
|
40
|
+
const peer2 = await (0, testing_1.createServiceContext)({ signalContext });
|
|
41
|
+
await peer1.open();
|
|
42
|
+
await peer2.open();
|
|
43
|
+
(0, testutils_1.afterTest)(() => peer1.close());
|
|
44
|
+
(0, testutils_1.afterTest)(() => peer2.close());
|
|
45
|
+
await peer1.createIdentity();
|
|
46
|
+
await peer2.createIdentity();
|
|
47
|
+
const space1 = await peer1.spaceManager.createSpace();
|
|
48
|
+
const invitation = await peer1.createInvitation(space1.key);
|
|
49
|
+
const space2 = await peer2.acceptInvitation(invitation);
|
|
50
|
+
(0, chai_1.expect)(space1.key).to.deep.eq(space2.key);
|
|
51
|
+
// TODO(burdon): Write multiple items.
|
|
52
|
+
{
|
|
53
|
+
// Check item replicated from 1 => 2.
|
|
54
|
+
const item1 = await space1.database.createItem({ type: 'dxos.example.1' });
|
|
55
|
+
const item2 = await space2.database.waitForItem({ type: 'dxos.example.1' });
|
|
56
|
+
(0, chai_1.expect)(item1.id).to.eq(item2.id);
|
|
57
|
+
}
|
|
58
|
+
{
|
|
59
|
+
// Check item replicated from 2 => 1.
|
|
60
|
+
const item1 = await space2.database.createItem({ type: 'dxos.example.2' });
|
|
61
|
+
const item2 = await space1.database.waitForItem({ type: 'dxos.example.2' });
|
|
62
|
+
(0, chai_1.expect)(item1.id).to.eq(item2.id);
|
|
63
|
+
}
|
|
64
|
+
await space1.close();
|
|
65
|
+
await space2.close();
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=spaces.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spaces.test.js","sourceRoot":"","sources":["../../../../../src/packlets/services/testing/spaces.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MemorySignalManagerContext } from '@dxos/messaging';
|
|
2
|
+
import { Storage } from '@dxos/random-access-storage';
|
|
3
|
+
import { ServiceContext } from '../service-context';
|
|
4
|
+
export declare const createServiceContext: ({ signalContext, storage }?: {
|
|
5
|
+
signalContext?: MemorySignalManagerContext | undefined;
|
|
6
|
+
storage?: Storage | undefined;
|
|
7
|
+
}) => Promise<ServiceContext>;
|
|
8
|
+
//# sourceMappingURL=testing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/testing/testing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAIlF,OAAO,EAAiB,OAAO,EAAe,MAAM,6BAA6B,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,eAAO,MAAM,oBAAoB;;;6BAchC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2022 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createServiceContext = void 0;
|
|
7
|
+
const messaging_1 = require("@dxos/messaging");
|
|
8
|
+
const model_factory_1 = require("@dxos/model-factory");
|
|
9
|
+
const network_manager_1 = require("@dxos/network-manager");
|
|
10
|
+
const object_model_1 = require("@dxos/object-model");
|
|
11
|
+
const random_access_storage_1 = require("@dxos/random-access-storage");
|
|
12
|
+
const service_context_1 = require("../service-context");
|
|
13
|
+
// TODO(burdon): Create test builder.
|
|
14
|
+
const createServiceContext = async ({ signalContext = new messaging_1.MemorySignalManagerContext(), storage = (0, random_access_storage_1.createStorage)({ type: random_access_storage_1.StorageType.RAM }) } = {}) => {
|
|
15
|
+
const networkManager = new network_manager_1.NetworkManager({
|
|
16
|
+
signalManager: new messaging_1.MemorySignalManager(signalContext),
|
|
17
|
+
transportFactory: network_manager_1.MemoryTransportFactory
|
|
18
|
+
});
|
|
19
|
+
const modelFactory = new model_factory_1.ModelFactory().registerModel(object_model_1.ObjectModel);
|
|
20
|
+
return new service_context_1.ServiceContext(storage, networkManager, modelFactory);
|
|
21
|
+
};
|
|
22
|
+
exports.createServiceContext = createServiceContext;
|
|
23
|
+
//# sourceMappingURL=testing.js.map
|