@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.
Files changed (199) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/dist/src/errors.d.ts +8 -0
  4. package/dist/src/errors.d.ts.map +1 -0
  5. package/dist/src/errors.js +21 -0
  6. package/dist/src/errors.js.map +1 -0
  7. package/dist/src/index.d.ts +7 -0
  8. package/dist/src/index.d.ts.map +1 -0
  9. package/dist/src/index.js +26 -0
  10. package/dist/src/index.js.map +1 -0
  11. package/dist/src/packlets/devtools/devtools-host-events.d.ts +5 -0
  12. package/dist/src/packlets/devtools/devtools-host-events.d.ts.map +1 -0
  13. package/dist/src/packlets/devtools/devtools-host-events.js +14 -0
  14. package/dist/src/packlets/devtools/devtools-host-events.js.map +1 -0
  15. package/dist/src/packlets/devtools/feeds.d.ts +11 -0
  16. package/dist/src/packlets/devtools/feeds.d.ts.map +1 -0
  17. package/dist/src/packlets/devtools/feeds.js +72 -0
  18. package/dist/src/packlets/devtools/feeds.js.map +1 -0
  19. package/dist/src/packlets/devtools/index.d.ts +5 -0
  20. package/dist/src/packlets/devtools/index.d.ts.map +1 -0
  21. package/dist/src/packlets/devtools/index.js +24 -0
  22. package/dist/src/packlets/devtools/index.js.map +1 -0
  23. package/dist/src/packlets/devtools/network.d.ts +19 -0
  24. package/dist/src/packlets/devtools/network.d.ts.map +1 -0
  25. package/dist/src/packlets/devtools/network.js +79 -0
  26. package/dist/src/packlets/devtools/network.js.map +1 -0
  27. package/dist/src/packlets/devtools/spaces.d.ts +5 -0
  28. package/dist/src/packlets/devtools/spaces.d.ts.map +1 -0
  29. package/dist/src/packlets/devtools/spaces.js +38 -0
  30. package/dist/src/packlets/devtools/spaces.js.map +1 -0
  31. package/dist/src/packlets/identity/authenticator.d.ts +7 -0
  32. package/dist/src/packlets/identity/authenticator.d.ts.map +1 -0
  33. package/dist/src/packlets/identity/authenticator.js +40 -0
  34. package/dist/src/packlets/identity/authenticator.js.map +1 -0
  35. package/dist/src/packlets/identity/authenticator.test.d.ts +2 -0
  36. package/dist/src/packlets/identity/authenticator.test.d.ts.map +1 -0
  37. package/dist/src/packlets/identity/authenticator.test.js +32 -0
  38. package/dist/src/packlets/identity/authenticator.test.js.map +1 -0
  39. package/dist/src/packlets/identity/identity-manager.d.ts +35 -0
  40. package/dist/src/packlets/identity/identity-manager.d.ts.map +1 -0
  41. package/dist/src/packlets/identity/identity-manager.js +151 -0
  42. package/dist/src/packlets/identity/identity-manager.js.map +1 -0
  43. package/dist/src/packlets/identity/identity-manager.test.d.ts +2 -0
  44. package/dist/src/packlets/identity/identity-manager.test.d.ts.map +1 -0
  45. package/dist/src/packlets/identity/identity-manager.test.js +92 -0
  46. package/dist/src/packlets/identity/identity-manager.test.js.map +1 -0
  47. package/dist/src/packlets/identity/identity.d.ts +43 -0
  48. package/dist/src/packlets/identity/identity.d.ts.map +1 -0
  49. package/dist/src/packlets/identity/identity.js +74 -0
  50. package/dist/src/packlets/identity/identity.js.map +1 -0
  51. package/dist/src/packlets/identity/identity.test.d.ts +2 -0
  52. package/dist/src/packlets/identity/identity.test.d.ts.map +1 -0
  53. package/dist/src/packlets/identity/identity.test.js +258 -0
  54. package/dist/src/packlets/identity/identity.test.js.map +1 -0
  55. package/dist/src/packlets/identity/index.d.ts +4 -0
  56. package/dist/src/packlets/identity/index.d.ts.map +1 -0
  57. package/dist/src/packlets/identity/index.js +23 -0
  58. package/dist/src/packlets/identity/index.js.map +1 -0
  59. package/dist/src/packlets/invitations/common.d.ts +35 -0
  60. package/dist/src/packlets/invitations/common.d.ts.map +1 -0
  61. package/dist/src/packlets/invitations/common.js +12 -0
  62. package/dist/src/packlets/invitations/common.js.map +1 -0
  63. package/dist/src/packlets/invitations/halo-invitations.d.ts +23 -0
  64. package/dist/src/packlets/invitations/halo-invitations.d.ts.map +1 -0
  65. package/dist/src/packlets/invitations/halo-invitations.js +150 -0
  66. package/dist/src/packlets/invitations/halo-invitations.js.map +1 -0
  67. package/dist/src/packlets/invitations/index.d.ts +5 -0
  68. package/dist/src/packlets/invitations/index.d.ts.map +1 -0
  69. package/dist/src/packlets/invitations/index.js +24 -0
  70. package/dist/src/packlets/invitations/index.js.map +1 -0
  71. package/dist/src/packlets/invitations/invitation-wrapper.d.ts +36 -0
  72. package/dist/src/packlets/invitations/invitation-wrapper.d.ts.map +1 -0
  73. package/dist/src/packlets/invitations/invitation-wrapper.js +104 -0
  74. package/dist/src/packlets/invitations/invitation-wrapper.js.map +1 -0
  75. package/dist/src/packlets/invitations/observable.test.d.ts +2 -0
  76. package/dist/src/packlets/invitations/observable.test.d.ts.map +1 -0
  77. package/dist/src/packlets/invitations/observable.test.js +43 -0
  78. package/dist/src/packlets/invitations/observable.test.js.map +1 -0
  79. package/dist/src/packlets/invitations/space-invitations.d.ts +25 -0
  80. package/dist/src/packlets/invitations/space-invitations.d.ts.map +1 -0
  81. package/dist/src/packlets/invitations/space-invitations.js +136 -0
  82. package/dist/src/packlets/invitations/space-invitations.js.map +1 -0
  83. package/dist/src/packlets/services/impl/devtools.d.ts +34 -0
  84. package/dist/src/packlets/services/impl/devtools.d.ts.map +1 -0
  85. package/dist/src/packlets/services/impl/devtools.js +77 -0
  86. package/dist/src/packlets/services/impl/devtools.js.map +1 -0
  87. package/dist/src/packlets/services/impl/halo.d.ts +20 -0
  88. package/dist/src/packlets/services/impl/halo.d.ts.map +1 -0
  89. package/dist/src/packlets/services/impl/halo.js +93 -0
  90. package/dist/src/packlets/services/impl/halo.js.map +1 -0
  91. package/dist/src/packlets/services/impl/index.d.ts +6 -0
  92. package/dist/src/packlets/services/impl/index.d.ts.map +1 -0
  93. package/dist/src/packlets/services/impl/index.js +26 -0
  94. package/dist/src/packlets/services/impl/index.js.map +1 -0
  95. package/dist/src/packlets/services/impl/party.d.ts +25 -0
  96. package/dist/src/packlets/services/impl/party.d.ts.map +1 -0
  97. package/dist/src/packlets/services/impl/party.js +265 -0
  98. package/dist/src/packlets/services/impl/party.js.map +1 -0
  99. package/dist/src/packlets/services/impl/profile.d.ts +19 -0
  100. package/dist/src/packlets/services/impl/profile.d.ts.map +1 -0
  101. package/dist/src/packlets/services/impl/profile.js +120 -0
  102. package/dist/src/packlets/services/impl/profile.js.map +1 -0
  103. package/dist/src/packlets/services/impl/system.d.ts +9 -0
  104. package/dist/src/packlets/services/impl/system.d.ts.map +1 -0
  105. package/dist/src/packlets/services/impl/system.js +20 -0
  106. package/dist/src/packlets/services/impl/system.js.map +1 -0
  107. package/dist/src/packlets/services/impl/tracing.d.ts +12 -0
  108. package/dist/src/packlets/services/impl/tracing.d.ts.map +1 -0
  109. package/dist/src/packlets/services/impl/tracing.js +22 -0
  110. package/dist/src/packlets/services/impl/tracing.js.map +1 -0
  111. package/dist/src/packlets/services/index.d.ts +6 -0
  112. package/dist/src/packlets/services/index.d.ts.map +1 -0
  113. package/dist/src/packlets/services/index.js +25 -0
  114. package/dist/src/packlets/services/index.js.map +1 -0
  115. package/dist/src/packlets/services/service-context.d.ts +36 -0
  116. package/dist/src/packlets/services/service-context.d.ts.map +1 -0
  117. package/dist/src/packlets/services/service-context.js +112 -0
  118. package/dist/src/packlets/services/service-context.js.map +1 -0
  119. package/dist/src/packlets/services/service-factory.d.ts +15 -0
  120. package/dist/src/packlets/services/service-factory.d.ts.map +1 -0
  121. package/dist/src/packlets/services/service-factory.js +25 -0
  122. package/dist/src/packlets/services/service-factory.js.map +1 -0
  123. package/dist/src/packlets/services/service-host.d.ts +27 -0
  124. package/dist/src/packlets/services/service-host.d.ts.map +1 -0
  125. package/dist/src/packlets/services/service-host.js +78 -0
  126. package/dist/src/packlets/services/service-host.js.map +1 -0
  127. package/dist/src/packlets/services/service-host.test.d.ts +2 -0
  128. package/dist/src/packlets/services/service-host.test.d.ts.map +1 -0
  129. package/dist/src/packlets/services/service-host.test.js +78 -0
  130. package/dist/src/packlets/services/service-host.test.js.map +1 -0
  131. package/dist/src/packlets/services/services.d.ts +19 -0
  132. package/dist/src/packlets/services/services.d.ts.map +1 -0
  133. package/dist/src/packlets/services/services.js +19 -0
  134. package/dist/src/packlets/services/services.js.map +1 -0
  135. package/dist/src/packlets/services/signer.d.ts +9 -0
  136. package/dist/src/packlets/services/signer.d.ts.map +1 -0
  137. package/dist/src/packlets/services/signer.js +6 -0
  138. package/dist/src/packlets/services/signer.js.map +1 -0
  139. package/dist/src/packlets/services/testing/halo.test.d.ts +2 -0
  140. package/dist/src/packlets/services/testing/halo.test.d.ts.map +1 -0
  141. package/dist/src/packlets/services/testing/halo.test.js +34 -0
  142. package/dist/src/packlets/services/testing/halo.test.js.map +1 -0
  143. package/dist/src/packlets/services/testing/spaces.test.d.ts +2 -0
  144. package/dist/src/packlets/services/testing/spaces.test.d.ts.map +1 -0
  145. package/dist/src/packlets/services/testing/spaces.test.js +68 -0
  146. package/dist/src/packlets/services/testing/spaces.test.js.map +1 -0
  147. package/dist/src/packlets/services/testing/testing.d.ts +8 -0
  148. package/dist/src/packlets/services/testing/testing.d.ts.map +1 -0
  149. package/dist/src/packlets/services/testing/testing.js +23 -0
  150. package/dist/src/packlets/services/testing/testing.js.map +1 -0
  151. package/dist/src/packlets/storage/index.d.ts +2 -0
  152. package/dist/src/packlets/storage/index.d.ts.map +1 -0
  153. package/dist/src/packlets/storage/index.js +21 -0
  154. package/dist/src/packlets/storage/index.js.map +1 -0
  155. package/dist/src/packlets/storage/storage.d.ts +7 -0
  156. package/dist/src/packlets/storage/storage.d.ts.map +1 -0
  157. package/dist/src/packlets/storage/storage.js +89 -0
  158. package/dist/src/packlets/storage/storage.js.map +1 -0
  159. package/package.json +61 -0
  160. package/src/errors.ts +19 -0
  161. package/src/index.ts +11 -0
  162. package/src/packlets/devtools/devtools-host-events.ts +8 -0
  163. package/src/packlets/devtools/feeds.ts +91 -0
  164. package/src/packlets/devtools/index.ts +8 -0
  165. package/src/packlets/devtools/network.ts +89 -0
  166. package/src/packlets/devtools/spaces.ts +50 -0
  167. package/src/packlets/identity/authenticator.test.ts +32 -0
  168. package/src/packlets/identity/authenticator.ts +49 -0
  169. package/src/packlets/identity/identity-manager.test.ts +121 -0
  170. package/src/packlets/identity/identity-manager.ts +207 -0
  171. package/src/packlets/identity/identity.test.ts +295 -0
  172. package/src/packlets/identity/identity.ts +109 -0
  173. package/src/packlets/identity/index.ts +7 -0
  174. package/src/packlets/invitations/common.ts +48 -0
  175. package/src/packlets/invitations/halo-invitations.ts +162 -0
  176. package/src/packlets/invitations/index.ts +8 -0
  177. package/src/packlets/invitations/invitation-wrapper.ts +140 -0
  178. package/src/packlets/invitations/observable.test.ts +67 -0
  179. package/src/packlets/invitations/space-invitations.ts +159 -0
  180. package/src/packlets/services/impl/devtools.ts +141 -0
  181. package/src/packlets/services/impl/halo.ts +107 -0
  182. package/src/packlets/services/impl/index.ts +11 -0
  183. package/src/packlets/services/impl/party.ts +305 -0
  184. package/src/packlets/services/impl/profile.ts +141 -0
  185. package/src/packlets/services/impl/system.ts +19 -0
  186. package/src/packlets/services/impl/tracing.ts +21 -0
  187. package/src/packlets/services/index.ts +9 -0
  188. package/src/packlets/services/service-context.ts +151 -0
  189. package/src/packlets/services/service-factory.ts +35 -0
  190. package/src/packlets/services/service-host.test.ts +88 -0
  191. package/src/packlets/services/service-host.ts +101 -0
  192. package/src/packlets/services/services.ts +39 -0
  193. package/src/packlets/services/signer.ts +13 -0
  194. package/src/packlets/services/testing/halo.test.ts +40 -0
  195. package/src/packlets/services/testing/spaces.test.ts +87 -0
  196. package/src/packlets/services/testing/testing.ts +28 -0
  197. package/src/packlets/storage/index.ts +5 -0
  198. package/src/packlets/storage/storage.ts +97 -0
  199. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=service-host.test.d.ts.map
@@ -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,6 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=signer.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=halo.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=spaces.test.d.ts.map
@@ -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