@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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/packlets/services/impl/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,uCAAuC;AAEvC,yCAAuB;AACvB,0CAAwB;AACxB,4CAA0B;AAC1B,2CAAyB;AACzB,4CAA0B"}
@@ -0,0 +1,25 @@
1
+ import { Stream } from '@dxos/codec-protobuf';
2
+ import { AuthenticateInvitationRequest, CreateInvitationRequest, CreateSnapshotRequest, GetPartyDetailsRequest, InvitationRequest, Party, PartyDetails, PartyService as PartyServiceRpc, RedeemedInvitation, SetPartyStateRequest, SubscribeMembersRequest, SubscribeMembersResponse, SubscribePartiesResponse, SubscribePartyRequest, SubscribePartyResponse } from '@dxos/protocols/proto/dxos/client';
3
+ import { PartySnapshot } from '@dxos/protocols/proto/dxos/echo/snapshot';
4
+ import { InvitationDescriptor } from '@dxos/protocols/proto/dxos/halo/invitations';
5
+ import { ServiceContext } from '../service-context';
6
+ /**
7
+ * Party service implementation.
8
+ */
9
+ export declare class PartyService implements PartyServiceRpc {
10
+ private readonly serviceContext;
11
+ private inviteeInvitations;
12
+ constructor(serviceContext: ServiceContext);
13
+ subscribeToParty(request: SubscribePartyRequest): Stream<SubscribePartyResponse>;
14
+ subscribeParties(): Stream<SubscribePartiesResponse>;
15
+ getPartyDetails(request: GetPartyDetailsRequest): Promise<PartyDetails>;
16
+ createParty(): Promise<Party>;
17
+ cloneParty(snapshot: PartySnapshot): Promise<Party>;
18
+ setPartyState(request: SetPartyStateRequest): Promise<never>;
19
+ createInvitation(request: CreateInvitationRequest): Stream<InvitationRequest>;
20
+ acceptInvitation(request: InvitationDescriptor): Stream<RedeemedInvitation>;
21
+ authenticateInvitation(request: AuthenticateInvitationRequest): Promise<void>;
22
+ subscribeMembers(request: SubscribeMembersRequest): Stream<SubscribeMembersResponse>;
23
+ createSnapshot(request: CreateSnapshotRequest): Promise<PartySnapshot>;
24
+ }
25
+ //# sourceMappingURL=party.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"party.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/impl/party.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EAEjB,KAAK,EACL,YAAY,EACZ,YAAY,IAAI,eAAe,EAC/B,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAGnF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AAEH,qBAAa,YAAa,YAAW,eAAe;IAGtC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAF3C,OAAO,CAAC,kBAAkB,CAAiC;gBAE9B,cAAc,EAAE,cAAc;IAE3D,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAAC,sBAAsB,CAAC;IAsDhF,gBAAgB;IAyBV,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC;IAQvE,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAU7B,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IAUnD,aAAa,CAAC,OAAO,EAAE,oBAAoB;IA+BjD,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAwC7E,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAqCrE,sBAAsB,CAAC,OAAO,EAAE,6BAA6B;IAWnE,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAAC,wBAAwB,CAAC;IA6B9E,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;CAM7E"}
@@ -0,0 +1,265 @@
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.PartyService = void 0;
10
+ const node_assert_1 = __importDefault(require("node:assert"));
11
+ const uuid_1 = require("uuid");
12
+ const async_1 = require("@dxos/async");
13
+ const codec_protobuf_1 = require("@dxos/codec-protobuf");
14
+ const debug_1 = require("@dxos/debug");
15
+ const client_1 = require("@dxos/protocols/proto/dxos/client");
16
+ const invitations_1 = require("@dxos/protocols/proto/dxos/halo/invitations");
17
+ const invitations_2 = require("../../invitations");
18
+ /**
19
+ * Party service implementation.
20
+ */
21
+ // TODO(burdon): Rename Space.
22
+ class PartyService {
23
+ constructor(serviceContext) {
24
+ this.serviceContext = serviceContext;
25
+ this.inviteeInvitations = new Map();
26
+ }
27
+ subscribeToParty(request) {
28
+ return new codec_protobuf_1.Stream(({ next }) => {
29
+ next({
30
+ party: {
31
+ publicKey: request.partyKey,
32
+ isOpen: true,
33
+ isActive: true,
34
+ members: []
35
+ }
36
+ });
37
+ });
38
+ // const update = (next: (message: SubscribePartyResponse) => void) => {
39
+ // try {
40
+ // const party = this.echo.getParty(request.party_key);
41
+ // next({
42
+ // party: party && {
43
+ // public_key: party.key,
44
+ // is_open: party.is_open,
45
+ // is_active: party.is_active,
46
+ // members: party.queryMembers().value
47
+ // }
48
+ // });
49
+ // } catch (err) {
50
+ // if (err instanceof InvalidStateError) {
51
+ // // Do nothing.
52
+ // } else {
53
+ // throw err;
54
+ // }
55
+ // }
56
+ // };
57
+ // const party = this.serviceContext.brane.getParty(request.party_key);
58
+ // if (party) {
59
+ // return new Stream(({ next }) => party.update.on(() => update(next)));
60
+ // } else {
61
+ // return new Stream(({ next }) => {
62
+ // let unsubscribeParty: () => void;
63
+ // const unsubscribeParties = this.echo.queryParties().subscribe((parties) => {
64
+ // const party = parties.find((party) => party.key.equals(request.party_key));
65
+ // if (party && !unsubscribeParty) {
66
+ // unsubscribeParty = party.update.on(() => update(next));
67
+ // }
68
+ // });
69
+ // update(next);
70
+ // return () => {
71
+ // unsubscribeParties();
72
+ // unsubscribeParty?.();
73
+ // };
74
+ // });
75
+ // }
76
+ }
77
+ subscribeParties() {
78
+ return new codec_protobuf_1.Stream(({ next }) => {
79
+ const update = () => {
80
+ next({
81
+ parties: Array.from(this.serviceContext.spaceManager.spaces.values()).map((space) => ({
82
+ publicKey: space.key,
83
+ isOpen: true,
84
+ isActive: true
85
+ }))
86
+ });
87
+ };
88
+ setTimeout(async () => {
89
+ if (!this.serviceContext.spaceManager) {
90
+ next({ parties: [] });
91
+ }
92
+ await this.serviceContext.initialized.wait();
93
+ update();
94
+ return this.serviceContext.spaceManager.update.on(update);
95
+ });
96
+ });
97
+ }
98
+ async getPartyDetails(request) {
99
+ return (0, debug_1.todo)();
100
+ // const party = this.echo.getParty(request.party_key) ?? raise(new SpaceNotFoundError(request.party_key));
101
+ // return {
102
+ // processedTimeframe: party.timeframe
103
+ // };
104
+ }
105
+ async createParty() {
106
+ await this.serviceContext.initialized.wait();
107
+ const space = await this.serviceContext.spaceManager.createSpace();
108
+ return {
109
+ publicKey: space.key,
110
+ isOpen: true,
111
+ isActive: true
112
+ };
113
+ }
114
+ async cloneParty(snapshot) {
115
+ return (0, debug_1.todo)();
116
+ // const party = await this.echo.cloneParty(snapshot);
117
+ // return {
118
+ // public_key: party.key,
119
+ // is_open: party.is_open,
120
+ // is_active: party.is_active
121
+ // };
122
+ }
123
+ async setPartyState(request) {
124
+ return (0, debug_1.todo)();
125
+ // const party = this.echo.getParty(request.party_key);
126
+ // if (!party) {
127
+ // throw new Error('Party not found');
128
+ // }
129
+ // if (request.open === true) {
130
+ // await party.open();
131
+ // } else if (request.open === false) {
132
+ // await party.close();
133
+ // } // Undefined preserves previous state.
134
+ // if (request.active_global === true) {
135
+ // await party.activate({ global: true });
136
+ // } else if (request.active_global === false) {
137
+ // await party.deactivate({ global: true });
138
+ // } // Undefined preserves previous state.
139
+ // if (request.active_device === true) {
140
+ // await party.activate({ device: true });
141
+ // } else if (request.active_device === false) {
142
+ // await party.deactivate({ device: true });
143
+ // } // Undefined preserves previous state.
144
+ // return {
145
+ // public_key: party.key,
146
+ // is_open: party.is_open,
147
+ // is_active: party.is_active
148
+ // };
149
+ }
150
+ createInvitation(request) {
151
+ return new codec_protobuf_1.Stream(({ next, close }) => {
152
+ setTimeout(async () => {
153
+ try {
154
+ let invitation;
155
+ if (!request.inviteeKey) {
156
+ // const secret = Buffer.from(generatePasscode());
157
+ // const secretProvider = async () => {
158
+ // next({ state: InvitationState.CONNECTED });
159
+ // return Buffer.from(secret);
160
+ // };
161
+ invitation = await this.serviceContext.createInvitation(request.partyKey, () => {
162
+ next({ state: client_1.InvitationState.SUCCESS });
163
+ close();
164
+ });
165
+ (0, node_assert_1.default)(invitation.type === invitations_1.InvitationDescriptor.Type.INTERACTIVE);
166
+ // invitation.secret = Buffer.from(secret);
167
+ }
168
+ else {
169
+ (0, debug_1.todo)();
170
+ // invitation = await party.invitationManager.createOfflineInvitation(request.invitee_key);
171
+ }
172
+ // TODO(burdon): Change stream type.
173
+ next({
174
+ state: client_1.InvitationState.WAITING_FOR_CONNECTION,
175
+ descriptor: invitation.toProto()
176
+ });
177
+ // if (invitation.type === InvitationDescriptor.Type.OFFLINE) {
178
+ // close();
179
+ // }
180
+ }
181
+ catch (err) {
182
+ next({ state: client_1.InvitationState.ERROR, error: err.message });
183
+ close();
184
+ }
185
+ });
186
+ });
187
+ }
188
+ acceptInvitation(request) {
189
+ return new codec_protobuf_1.Stream(({ next, close }) => {
190
+ const id = (0, uuid_1.v4)();
191
+ const [, secretTrigger] = (0, async_1.latch)();
192
+ const inviteeInvitation = { secretTrigger };
193
+ // Secret will be provided separately (in AuthenticateInvitation).
194
+ // Process will continue when `secretLatch` resolves, triggered by `secretTrigger`.
195
+ // const secretProvider: SecretProvider = async () => {
196
+ // await secretLatch;
197
+ // const secret = inviteeInvitation.secret;
198
+ // if (!secret) {
199
+ // throw new Error('Secret not provided.');
200
+ // }
201
+ // return Buffer.from(secret);
202
+ // };
203
+ // Joining process is kicked off, and will await authentication with a secret.
204
+ const partyPromise = this.serviceContext.acceptInvitation(invitations_2.InvitationWrapper.fromProto(request));
205
+ this.inviteeInvitations.set(id, inviteeInvitation);
206
+ next({ id, state: client_1.InvitationState.CONNECTED });
207
+ partyPromise
208
+ .then((party) => {
209
+ next({ id, state: client_1.InvitationState.SUCCESS, partyKey: party.key });
210
+ })
211
+ .catch((err) => {
212
+ console.error(err);
213
+ next({ id, state: client_1.InvitationState.ERROR, error: String(err) });
214
+ })
215
+ .finally(() => {
216
+ close();
217
+ });
218
+ });
219
+ }
220
+ async authenticateInvitation(request) {
221
+ var _a;
222
+ (0, node_assert_1.default)(request.processId, 'Process ID is missing.');
223
+ const invitation = this.inviteeInvitations.get(request.processId);
224
+ (0, node_assert_1.default)(invitation, 'Invitation not found.');
225
+ (0, node_assert_1.default)(request.secret, 'Secret not provided.');
226
+ // Supply the secret, and move the internal invitation process by triggering the secretTrigger.
227
+ invitation.secret = request.secret;
228
+ (_a = invitation.secretTrigger) === null || _a === void 0 ? void 0 : _a.call(invitation);
229
+ }
230
+ subscribeMembers(request) {
231
+ return new codec_protobuf_1.Stream(({ next }) => {
232
+ next({
233
+ members: []
234
+ });
235
+ });
236
+ // const party = this.echo.getParty(request.party_key);
237
+ // if (party) {
238
+ // return resultSetToStream(party.queryMembers(), (members): SubscribeMembersResponse => ({ members }));
239
+ // } else {
240
+ // return new Stream(({ next }) => {
241
+ // let unsubscribeMembers: () => void;
242
+ // const unsubscribeParties = this.echo.queryParties().subscribe((parties) => {
243
+ // const party = parties.find((party) => party.key.equals(request.party_key));
244
+ // if (!unsubscribeMembers && party) {
245
+ // const resultSet = party.queryMembers();
246
+ // next({ members: resultSet.value });
247
+ // unsubscribeMembers = resultSet.update.on(() => next({ members: resultSet.value }));
248
+ // }
249
+ // });
250
+ // return () => {
251
+ // unsubscribeParties();
252
+ // unsubscribeMembers();
253
+ // };
254
+ // });
255
+ // }
256
+ }
257
+ async createSnapshot(request) {
258
+ return (0, debug_1.todo)();
259
+ // assert(request.party_key);
260
+ // const party = this.echo.getParty(request.party_key) ?? raise(new SpaceNotFoundError(request.party_key));
261
+ // return party.createSnapshot();
262
+ }
263
+ }
264
+ exports.PartyService = PartyService;
265
+ //# sourceMappingURL=party.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"party.js","sourceRoot":"","sources":["../../../../../src/packlets/services/impl/party.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,8DAAiC;AACjC,+BAA0B;AAE1B,uCAAoC;AACpC,yDAA8C;AAC9C,uCAAmC;AACnC,8DAiB2C;AAE3C,6EAAmF;AAEnF,mDAA6F;AAG7F;;GAEG;AACH,8BAA8B;AAC9B,MAAa,YAAY;IAGvB,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAFnD,uBAAkB,GAAuB,IAAI,GAAG,EAAE,CAAC;IAEG,CAAC;IAE/D,gBAAgB,CAAC,OAA8B;QAC7C,OAAO,IAAI,uBAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,KAAK,EAAE;oBACL,SAAS,EAAE,OAAO,CAAC,QAAQ;oBAC3B,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,wEAAwE;QACxE,UAAU;QACV,2DAA2D;QAC3D,aAAa;QACb,0BAA0B;QAC1B,iCAAiC;QACjC,kCAAkC;QAClC,sCAAsC;QACtC,8CAA8C;QAC9C,UAAU;QACV,UAAU;QACV,oBAAoB;QACpB,8CAA8C;QAC9C,uBAAuB;QACvB,eAAe;QACf,mBAAmB;QACnB,QAAQ;QACR,MAAM;QACN,KAAK;QAEL,uEAAuE;QACvE,eAAe;QACf,0EAA0E;QAC1E,WAAW;QACX,sCAAsC;QACtC,wCAAwC;QACxC,mFAAmF;QACnF,oFAAoF;QACpF,0CAA0C;QAC1C,kEAAkE;QAClE,UAAU;QACV,UAAU;QAEV,oBAAoB;QAEpB,qBAAqB;QACrB,8BAA8B;QAC9B,8BAA8B;QAC9B,SAAS;QACT,QAAQ;QACR,IAAI;IACN,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,uBAAM,CAA2B,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACvD,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,IAAI,CAAC;oBACH,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACrF,SAAS,EAAE,KAAK,CAAC,GAAG;wBACpB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,IAAI;qBACf,CAAC,CAAC;iBACJ,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,UAAU,CAAC,KAAK,IAAI,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;oBACrC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;iBACvB;gBAED,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBAE7C,MAAM,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC,cAAc,CAAC,YAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAA+B;QACnD,OAAO,IAAA,YAAI,GAAE,CAAC;QACd,2GAA2G;QAC3G,WAAW;QACX,wCAAwC;QACxC,KAAK;IACP,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAa,CAAC,WAAW,EAAE,CAAC;QACpE,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,GAAG;YACpB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAuB;QACtC,OAAO,IAAA,YAAI,GAAE,CAAC;QACd,sDAAsD;QACtD,WAAW;QACX,2BAA2B;QAC3B,4BAA4B;QAC5B,+BAA+B;QAC/B,KAAK;IACP,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA6B;QAC/C,OAAO,IAAA,YAAI,GAAE,CAAC;QACd,uDAAuD;QACvD,gBAAgB;QAChB,wCAAwC;QACxC,IAAI;QAEJ,+BAA+B;QAC/B,wBAAwB;QACxB,uCAAuC;QACvC,yBAAyB;QACzB,2CAA2C;QAE3C,wCAAwC;QACxC,4CAA4C;QAC5C,gDAAgD;QAChD,8CAA8C;QAC9C,2CAA2C;QAE3C,wCAAwC;QACxC,4CAA4C;QAC5C,gDAAgD;QAChD,8CAA8C;QAC9C,2CAA2C;QAC3C,WAAW;QACX,2BAA2B;QAC3B,4BAA4B;QAC5B,+BAA+B;QAC/B,KAAK;IACP,CAAC;IAED,gBAAgB,CAAC,OAAgC;QAC/C,OAAO,IAAI,uBAAM,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACpC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACpB,IAAI;oBACF,IAAI,UAA6B,CAAC;oBAClC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;wBACvB,kDAAkD;wBAClD,uCAAuC;wBACvC,gDAAgD;wBAChD,gCAAgC;wBAChC,KAAK;wBACL,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE;4BAC7E,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAe,CAAC,OAAO,EAAE,CAAC,CAAC;4BACzC,KAAK,EAAE,CAAC;wBACV,CAAC,CAAC,CAAC;wBAEH,IAAA,qBAAM,EAAC,UAAU,CAAC,IAAI,KAAK,kCAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAClE,2CAA2C;qBAC5C;yBAAM;wBACL,IAAA,YAAI,GAAE,CAAC;wBACP,2FAA2F;qBAC5F;oBAED,oCAAoC;oBACpC,IAAI,CAAC;wBACH,KAAK,EAAE,wBAAe,CAAC,sBAAsB;wBAC7C,UAAU,EAAE,UAAW,CAAC,OAAO,EAAE;qBAClC,CAAC,CAAC;oBAEH,+DAA+D;oBAC/D,aAAa;oBACb,IAAI;iBACL;gBAAC,OAAO,GAAQ,EAAE;oBACjB,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3D,KAAK,EAAE,CAAC;iBACT;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,OAA6B;QAC5C,OAAO,IAAI,uBAAM,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACpC,MAAM,EAAE,GAAG,IAAA,SAAE,GAAE,CAAC;YAChB,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,IAAA,aAAK,GAAE,CAAC;YAClC,MAAM,iBAAiB,GAAsB,EAAE,aAAa,EAAE,CAAC;YAE/D,kEAAkE;YAClE,mFAAmF;YACnF,uDAAuD;YACvD,uBAAuB;YACvB,6CAA6C;YAC7C,mBAAmB;YACnB,+CAA+C;YAC/C,MAAM;YAEN,gCAAgC;YAChC,KAAK;YAEL,8EAA8E;YAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,+BAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAChG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,wBAAe,CAAC,SAAS,EAAE,CAAC,CAAC;YAE/C,YAAY;iBACT,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACd,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,wBAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,wBAAe,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,KAAK,EAAE,CAAC;YACV,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,OAAsC;;QACjE,IAAA,qBAAM,EAAC,OAAO,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClE,IAAA,qBAAM,EAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QAC5C,IAAA,qBAAM,EAAC,OAAO,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAE/C,+FAA+F;QAC/F,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACnC,MAAA,UAAU,CAAC,aAAa,0DAAI,CAAC;IAC/B,CAAC;IAED,gBAAgB,CAAC,OAAgC;QAC/C,OAAO,IAAI,uBAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,OAAO,EAAE,EAAE;aACZ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,uDAAuD;QACvD,eAAe;QACf,0GAA0G;QAC1G,WAAW;QACX,sCAAsC;QACtC,0CAA0C;QAC1C,mFAAmF;QACnF,oFAAoF;QACpF,4CAA4C;QAC5C,kDAAkD;QAClD,8CAA8C;QAC9C,8FAA8F;QAC9F,UAAU;QACV,UAAU;QAEV,qBAAqB;QACrB,8BAA8B;QAC9B,8BAA8B;QAC9B,SAAS;QACT,QAAQ;QACR,IAAI;IACN,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA8B;QACjD,OAAO,IAAA,YAAI,GAAE,CAAC;QACd,6BAA6B;QAC7B,2GAA2G;QAC3G,iCAAiC;IACnC,CAAC;CACF;AA1QD,oCA0QC"}
@@ -0,0 +1,19 @@
1
+ import { Stream } from '@dxos/codec-protobuf';
2
+ import { AuthenticateInvitationRequest, CreateProfileRequest, InvitationRequest, Profile, ProfileService as ProfileServiceRpc, RecoverProfileRequest, RedeemedInvitation, SubscribeProfileResponse } from '@dxos/protocols/proto/dxos/client';
3
+ import { InvitationDescriptor } from '@dxos/protocols/proto/dxos/halo/invitations';
4
+ import { ServiceContext } from '../service-context';
5
+ /**
6
+ * Profile service implementation.
7
+ */
8
+ export declare class ProfileService implements ProfileServiceRpc {
9
+ private readonly context;
10
+ private inviteeInvitations;
11
+ constructor(context: ServiceContext);
12
+ subscribeProfile(): Stream<SubscribeProfileResponse>;
13
+ createProfile(request: CreateProfileRequest): Promise<Profile>;
14
+ recoverProfile(request: RecoverProfileRequest): Promise<Profile>;
15
+ createInvitation(): Stream<InvitationRequest>;
16
+ acceptInvitation(invitation: InvitationDescriptor): Stream<RedeemedInvitation>;
17
+ authenticateInvitation(request: AuthenticateInvitationRequest): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/impl/profile.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,iBAAiB,EAEjB,OAAO,EACP,cAAc,IAAI,iBAAiB,EACnC,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAGnF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IAG1C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,kBAAkB,CAAiC;gBAE9B,OAAO,EAAE,cAAc;IAEpD,gBAAgB,IAAI,MAAM,CAAC,wBAAwB,CAAC;IAgB9C,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9D,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IAYtE,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,CAAC;IA0B7C,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAoCxE,sBAAsB,CAAC,OAAO,EAAE,6BAA6B;CAUpE"}
@@ -0,0 +1,120 @@
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.ProfileService = void 0;
10
+ const node_assert_1 = __importDefault(require("node:assert"));
11
+ const uuid_1 = require("uuid");
12
+ const async_1 = require("@dxos/async");
13
+ const codec_protobuf_1 = require("@dxos/codec-protobuf");
14
+ const credentials_1 = require("@dxos/credentials");
15
+ const debug_1 = require("@dxos/debug");
16
+ const client_1 = require("@dxos/protocols/proto/dxos/client");
17
+ /**
18
+ * Profile service implementation.
19
+ */
20
+ class ProfileService {
21
+ constructor(context) {
22
+ this.context = context;
23
+ this.inviteeInvitations = new Map();
24
+ }
25
+ subscribeProfile() {
26
+ return new codec_protobuf_1.Stream(({ next }) => {
27
+ const emitNext = () => next({
28
+ profile: this.context.identityManager.identity
29
+ ? {
30
+ publicKey: this.context.identityManager.identity.identityKey
31
+ }
32
+ : undefined
33
+ });
34
+ emitNext();
35
+ return this.context.identityManager.stateUpdate.on(emitNext);
36
+ });
37
+ }
38
+ async createProfile(request) {
39
+ await this.context.createIdentity();
40
+ return { publicKey: this.context.identityManager.identity.identityKey };
41
+ }
42
+ async recoverProfile(request) {
43
+ return (0, debug_1.todo)();
44
+ if (!request.seedPhrase) {
45
+ throw new Error('Recovery SeedPhrase not provided.');
46
+ }
47
+ // await this.echo.open();
48
+ // await this.echo.halo.recover(request.seed_phrase);
49
+ // const profile = this.echo.halo.getProfile();
50
+ // assert(profile, 'Recovering profile failed.');
51
+ // return profile;
52
+ }
53
+ createInvitation() {
54
+ return new codec_protobuf_1.Stream(({ next, close }) => {
55
+ setTimeout(async () => {
56
+ const secret = Buffer.from((0, credentials_1.generatePasscode)());
57
+ // TODO(burdon): Not used.
58
+ // const secretProvider = async () => {
59
+ // next({ descriptor: invitation.toProto(), state: InvitationState.CONNECTED });
60
+ // return Buffer.from(secret);
61
+ // };
62
+ const invitation = await this.context.haloInvitations.createInvitation({
63
+ onFinish: () => {
64
+ next({ state: client_1.InvitationState.SUCCESS });
65
+ close();
66
+ }
67
+ });
68
+ invitation.secret = secret;
69
+ next({
70
+ state: client_1.InvitationState.WAITING_FOR_CONNECTION,
71
+ descriptor: invitation
72
+ });
73
+ });
74
+ });
75
+ }
76
+ acceptInvitation(invitation) {
77
+ return new codec_protobuf_1.Stream(({ next, close }) => {
78
+ const id = (0, uuid_1.v4)();
79
+ const [, secretTrigger] = (0, async_1.latch)();
80
+ const inviteeInvitation = { secretTrigger };
81
+ // Secret will be provided separately (in AuthenticateInvitation).
82
+ // Process will continue when `secretLatch` resolves, triggered by `secretTrigger`.
83
+ // const secretProvider: SecretProvider = async () => {
84
+ // await secretLatch;
85
+ // const secret = inviteeInvitation.secret;
86
+ // if (!secret) {
87
+ // throw new Error('Secret not provided.');
88
+ // }
89
+ // return Buffer.from(secret);
90
+ // };
91
+ // Joining process is kicked off, and will await authentication with a secret.
92
+ const haloPartyPromise = this.context.haloInvitations.acceptInvitation(invitation);
93
+ this.inviteeInvitations.set(id, inviteeInvitation);
94
+ next({ id, state: client_1.InvitationState.CONNECTED });
95
+ haloPartyPromise
96
+ .then((identity) => {
97
+ next({
98
+ id,
99
+ state: client_1.InvitationState.SUCCESS,
100
+ partyKey: identity.identityKey
101
+ });
102
+ })
103
+ .catch((err) => {
104
+ next({ id, state: client_1.InvitationState.ERROR, error: String(err) });
105
+ });
106
+ });
107
+ }
108
+ async authenticateInvitation(request) {
109
+ var _a;
110
+ (0, node_assert_1.default)(request.processId, 'Process ID is missing.');
111
+ const invitation = this.inviteeInvitations.get(request.processId);
112
+ (0, node_assert_1.default)(invitation, 'Invitation not found.');
113
+ (0, node_assert_1.default)(request.secret, 'Secret not provided.');
114
+ // Supply the secret, and move the internal invitation process by triggering the secretTrigger.
115
+ invitation.secret = request.secret;
116
+ (_a = invitation.secretTrigger) === null || _a === void 0 ? void 0 : _a.call(invitation);
117
+ }
118
+ }
119
+ exports.ProfileService = ProfileService;
120
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../../../src/packlets/services/impl/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Config } from '@dxos/config';
2
+ import { SystemService as SystemServiceRpc } from '@dxos/protocols/proto/dxos/client';
3
+ export declare class SystemService implements SystemServiceRpc {
4
+ private readonly _config;
5
+ constructor(_config: Config);
6
+ getConfig(request: void): Promise<import("@dxos/config").ConfigProto>;
7
+ reset(request: any): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/impl/system.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAEtF,qBAAa,aAAc,YAAW,gBAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAEtC,SAAS,CAAC,OAAO,EAAE,IAAI;IAIvB,KAAK,CAAC,OAAO,EAAE,GAAG;CAGzB"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SystemService = void 0;
7
+ const debug_1 = require("@dxos/debug");
8
+ class SystemService {
9
+ constructor(_config) {
10
+ this._config = _config;
11
+ }
12
+ async getConfig(request) {
13
+ return this._config.values;
14
+ }
15
+ async reset(request) {
16
+ (0, debug_1.todo)();
17
+ }
18
+ }
19
+ exports.SystemService = SystemService;
20
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../../../src/packlets/services/impl/system.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAGF,uCAAmC;AAGnC,MAAa,aAAa;IACxB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEhD,KAAK,CAAC,SAAS,CAAC,OAAa;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAY;QACtB,IAAA,YAAI,GAAE,CAAC;IACT,CAAC;CACF;AAVD,sCAUC"}
@@ -0,0 +1,12 @@
1
+ import { Config } from '@dxos/config';
2
+ import { TracingService as TracingServiceRpc } from '@dxos/protocols/proto/dxos/devtools/host';
3
+ /**
4
+ *
5
+ */
6
+ export declare class TracingService implements TracingServiceRpc {
7
+ private readonly _config;
8
+ constructor(_config: Config);
9
+ setTracingOptions(): Promise<void>;
10
+ subscribeToRpcTrace(): any;
11
+ }
12
+ //# sourceMappingURL=tracing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/impl/tracing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE/F;;GAEG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAEtC,iBAAiB;IAIvB,mBAAmB,IAAI,GAAG;CAG3B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TracingService = void 0;
7
+ /**
8
+ *
9
+ */
10
+ class TracingService {
11
+ constructor(_config) {
12
+ this._config = _config;
13
+ }
14
+ async setTracingOptions() {
15
+ throw new Error('Tracing not available.');
16
+ }
17
+ subscribeToRpcTrace() {
18
+ throw new Error('Tracing not available.');
19
+ }
20
+ }
21
+ exports.TracingService = TracingService;
22
+ //# sourceMappingURL=tracing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../../../src/packlets/services/impl/tracing.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAKF;;GAEG;AACH,MAAa,cAAc;IACzB,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEhD,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,mBAAmB;QACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;CACF;AAVD,wCAUC"}
@@ -0,0 +1,6 @@
1
+ export * from './service-context';
2
+ export * from './service-factory';
3
+ export * from './service-host';
4
+ export * from './services';
5
+ export * from './signer';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./service-context"), exports);
21
+ __exportStar(require("./service-factory"), exports);
22
+ __exportStar(require("./service-host"), exports);
23
+ __exportStar(require("./services"), exports);
24
+ __exportStar(require("./signer"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/packlets/services/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,oDAAkC;AAClC,oDAAkC;AAClC,iDAA+B;AAC/B,6CAA2B;AAC3B,2CAAyB"}
@@ -0,0 +1,36 @@
1
+ import { Trigger } from '@dxos/async';
2
+ import { DataService, MetadataStore, SpaceManager } from '@dxos/echo-db';
3
+ import { FeedStore } from '@dxos/feed-store';
4
+ import { Keyring } from '@dxos/keyring';
5
+ import { PublicKey } from '@dxos/keys';
6
+ import { ModelFactory } from '@dxos/model-factory';
7
+ import { NetworkManager } from '@dxos/network-manager';
8
+ import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
9
+ import { Storage } from '@dxos/random-access-storage';
10
+ import { IdentityManager } from '../identity';
11
+ import { HaloInvitations, InvitationWrapper, SpaceInvitations } from '../invitations';
12
+ /**
13
+ * Shared backend for all client services.
14
+ */
15
+ export declare class ServiceContext {
16
+ readonly storage: Storage;
17
+ readonly networkManager: NetworkManager;
18
+ readonly modelFactory: ModelFactory;
19
+ readonly initialized: Trigger<void>;
20
+ readonly dataService: DataService;
21
+ readonly metadataStore: MetadataStore;
22
+ readonly feedStore: FeedStore<FeedMessage>;
23
+ readonly keyring: Keyring;
24
+ readonly identityManager: IdentityManager;
25
+ readonly haloInvitations: HaloInvitations;
26
+ spaceManager?: SpaceManager;
27
+ spaceInvitations?: SpaceInvitations;
28
+ constructor(storage: Storage, networkManager: NetworkManager, modelFactory: ModelFactory);
29
+ open(): Promise<void>;
30
+ close(): Promise<void>;
31
+ createIdentity(): Promise<import("../identity").Identity>;
32
+ createInvitation(spaceKey: PublicKey, onFinish?: () => void): Promise<InvitationWrapper>;
33
+ acceptInvitation(invitationDescriptor: InvitationWrapper): Promise<import("@dxos/echo-db").Space>;
34
+ private _initialize;
35
+ }
36
+ //# sourceMappingURL=service-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-context.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/service-context.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAIL,WAAW,EACX,aAAa,EACb,YAAY,EAEb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEtF;;GAEG;AAEH,qBAAa,cAAc;aAkBP,OAAO,EAAE,OAAO;aAChB,cAAc,EAAE,cAAc;aAC9B,YAAY,EAAE,YAAY;IAnB5C,SAAgB,WAAW,gBAAiB;IAG5C,SAAgB,WAAW,cAAqB;IAEhD,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClD,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,eAAe,EAAE,eAAe,CAAC;IACjD,SAAgB,eAAe,EAAE,eAAe,CAAC;IAG1C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;gBAIzB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY;IA6BtC,IAAI;IASJ,KAAK;IASL,cAAc;IAOd,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IASxF,gBAAgB,CAAC,oBAAoB,EAAE,iBAAiB;YAMhD,WAAW;CA4B1B"}