@dxos/client-services 0.1.41 → 0.1.45-next.45667d4

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 (164) hide show
  1. package/dist/lib/browser/{chunk-T73F4MV4.mjs → chunk-IHSMRQ3L.mjs} +985 -867
  2. package/dist/lib/browser/chunk-IHSMRQ3L.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +7 -3
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/packlets/testing/index.mjs +121 -297
  6. package/dist/lib/browser/packlets/testing/index.mjs.map +4 -4
  7. package/dist/lib/node/index.cjs +589 -469
  8. package/dist/lib/node/index.cjs.map +4 -4
  9. package/dist/lib/node/meta.json +1 -1
  10. package/dist/lib/node/packlets/testing/index.cjs +688 -740
  11. package/dist/lib/node/packlets/testing/index.cjs.map +4 -4
  12. package/dist/types/src/index.d.ts +1 -0
  13. package/dist/types/src/index.d.ts.map +1 -1
  14. package/dist/types/src/packlets/devices/devices-service.d.ts +1 -1
  15. package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
  16. package/dist/types/src/packlets/devtools/devtools.d.ts +4 -2
  17. package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
  18. package/dist/types/src/packlets/devtools/keys.d.ts.map +1 -1
  19. package/dist/types/src/packlets/devtools/network.d.ts +5 -4
  20. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  21. package/dist/types/src/packlets/identity/authenticator.d.ts +1 -1
  22. package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
  23. package/dist/types/src/packlets/identity/identity-manager.d.ts +2 -4
  24. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  25. package/dist/types/src/packlets/identity/identity.d.ts +1 -1
  26. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  27. package/dist/types/src/packlets/invitations/invitation-extension.d.ts +2 -3
  28. package/dist/types/src/packlets/invitations/invitation-extension.d.ts.map +1 -1
  29. package/dist/types/src/packlets/invitations/invitations-handler.d.ts +1 -3
  30. package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
  31. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +1 -2
  32. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
  33. package/dist/types/src/packlets/network/network-service.d.ts +6 -4
  34. package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
  35. package/dist/types/src/packlets/services/client-rpc-server.d.ts +2 -2
  36. package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +1 -1
  37. package/dist/types/src/packlets/services/index.d.ts +0 -1
  38. package/dist/types/src/packlets/services/index.d.ts.map +1 -1
  39. package/dist/types/src/packlets/services/local-client-services.d.ts +1 -1
  40. package/dist/types/src/packlets/services/local-client-services.d.ts.map +1 -1
  41. package/dist/types/src/packlets/services/service-context.d.ts +4 -2
  42. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  43. package/dist/types/src/packlets/services/service-host.d.ts +16 -9
  44. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  45. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +12 -7
  46. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  47. package/dist/types/src/packlets/spaces/data-space.d.ts +15 -10
  48. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  49. package/dist/types/src/packlets/spaces/genesis.d.ts +5 -0
  50. package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -0
  51. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +4 -4
  52. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
  53. package/dist/types/src/packlets/spaces/spaces-service.d.ts +2 -1
  54. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  55. package/dist/types/src/packlets/system/system-service.d.ts +1 -1
  56. package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
  57. package/dist/types/src/packlets/testing/credential-utils.d.ts +1 -1
  58. package/dist/types/src/packlets/testing/index.d.ts +0 -1
  59. package/dist/types/src/packlets/testing/index.d.ts.map +1 -1
  60. package/dist/types/src/packlets/testing/invitation-utils.d.ts +13 -7
  61. package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
  62. package/dist/types/src/packlets/testing/test-builder.d.ts +35 -32
  63. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  64. package/dist/types/src/packlets/vault/iframe-host-runtime.d.ts +1 -1
  65. package/dist/types/src/packlets/vault/iframe-host-runtime.d.ts.map +1 -1
  66. package/dist/types/src/packlets/vault/iframe-proxy-runtime.d.ts +5 -2
  67. package/dist/types/src/packlets/vault/iframe-proxy-runtime.d.ts.map +1 -1
  68. package/dist/types/src/packlets/vault/vault-resource-lock.d.ts +1 -1
  69. package/dist/types/src/packlets/vault/vault-resource-lock.d.ts.map +1 -1
  70. package/dist/types/src/packlets/vault/worker-runtime.d.ts +1 -1
  71. package/dist/types/src/packlets/vault/worker-runtime.d.ts.map +1 -1
  72. package/dist/types/src/packlets/vault/worker-session.d.ts +4 -7
  73. package/dist/types/src/packlets/vault/worker-session.d.ts.map +1 -1
  74. package/package.json +30 -31
  75. package/src/index.ts +1 -0
  76. package/src/packlets/devices/devices-service.ts +5 -5
  77. package/src/packlets/devtools/devtools.ts +25 -4
  78. package/src/packlets/devtools/feeds.ts +10 -10
  79. package/src/packlets/devtools/keys.ts +6 -6
  80. package/src/packlets/devtools/network.ts +14 -13
  81. package/src/packlets/devtools/spaces.ts +4 -4
  82. package/src/packlets/identity/authenticator.test.ts +1 -1
  83. package/src/packlets/identity/authenticator.ts +2 -2
  84. package/src/packlets/identity/identity-manager.test.ts +17 -13
  85. package/src/packlets/identity/identity-manager.ts +21 -22
  86. package/src/packlets/identity/identity-service.ts +3 -3
  87. package/src/packlets/identity/identity.test.ts +65 -36
  88. package/src/packlets/identity/identity.ts +17 -17
  89. package/src/packlets/invitations/device-invitation-protocol.test.ts +1 -1
  90. package/src/packlets/invitations/device-invitation-protocol.ts +7 -7
  91. package/src/packlets/invitations/invitation-extension.ts +16 -27
  92. package/src/packlets/invitations/invitations-handler.ts +17 -25
  93. package/src/packlets/invitations/invitations-service.ts +11 -11
  94. package/src/packlets/invitations/space-invitation-protocol.test.ts +9 -9
  95. package/src/packlets/invitations/space-invitation-protocol.ts +11 -12
  96. package/src/packlets/logging/logging-service.ts +8 -3
  97. package/src/packlets/network/network-service.test.ts +8 -8
  98. package/src/packlets/network/network-service.ts +20 -8
  99. package/src/packlets/services/client-rpc-server.ts +5 -5
  100. package/src/packlets/services/index.ts +0 -1
  101. package/src/packlets/services/local-client-services.ts +1 -1
  102. package/src/packlets/services/service-context.test.ts +3 -3
  103. package/src/packlets/services/service-context.ts +26 -24
  104. package/src/packlets/services/service-host.test.ts +6 -6
  105. package/src/packlets/services/service-host.ts +57 -31
  106. package/src/packlets/services/service-registry.test.ts +20 -38
  107. package/src/packlets/spaces/data-space-manager.test.ts +17 -29
  108. package/src/packlets/spaces/data-space-manager.ts +29 -35
  109. package/src/packlets/spaces/data-space.ts +73 -47
  110. package/src/packlets/spaces/genesis.ts +81 -0
  111. package/src/packlets/spaces/notarization-plugin.test.ts +2 -2
  112. package/src/packlets/spaces/notarization-plugin.ts +12 -12
  113. package/src/packlets/spaces/spaces-service.test.ts +2 -2
  114. package/src/packlets/spaces/spaces-service.ts +21 -10
  115. package/src/packlets/storage/storage.ts +3 -3
  116. package/src/packlets/system/system-service.test.ts +1 -1
  117. package/src/packlets/system/system-service.ts +1 -1
  118. package/src/packlets/testing/credential-utils.ts +4 -4
  119. package/src/packlets/testing/index.ts +0 -1
  120. package/src/packlets/testing/invitation-utils.ts +28 -33
  121. package/src/packlets/testing/test-builder.ts +132 -168
  122. package/src/packlets/vault/iframe-host-runtime.ts +8 -11
  123. package/src/packlets/vault/iframe-proxy-runtime.ts +25 -9
  124. package/src/packlets/vault/shell-runtime.ts +4 -4
  125. package/src/packlets/vault/vault-resource-lock.ts +2 -2
  126. package/src/packlets/vault/worker-runtime.ts +7 -9
  127. package/src/packlets/vault/worker-session.ts +24 -45
  128. package/dist/lib/browser/chunk-T73F4MV4.mjs.map +0 -7
  129. package/dist/types/src/packlets/services/utils.d.ts +0 -7
  130. package/dist/types/src/packlets/services/utils.d.ts.map +0 -1
  131. package/dist/types/src/packlets/testing/host-test-builder.d.ts +0 -43
  132. package/dist/types/src/packlets/testing/host-test-builder.d.ts.map +0 -1
  133. package/dist/types/src/packlets/tests/client-services.test.d.ts +0 -2
  134. package/dist/types/src/packlets/tests/client-services.test.d.ts.map +0 -1
  135. package/dist/types/src/packlets/tests/client.test.d.ts +0 -2
  136. package/dist/types/src/packlets/tests/client.test.d.ts.map +0 -1
  137. package/dist/types/src/packlets/tests/halo-credentials.test.d.ts +0 -2
  138. package/dist/types/src/packlets/tests/halo-credentials.test.d.ts.map +0 -1
  139. package/dist/types/src/packlets/tests/halo-persistent.test.d.ts +0 -2
  140. package/dist/types/src/packlets/tests/halo-persistent.test.d.ts.map +0 -1
  141. package/dist/types/src/packlets/tests/halo-profile.test.d.ts +0 -2
  142. package/dist/types/src/packlets/tests/halo-profile.test.d.ts.map +0 -1
  143. package/dist/types/src/packlets/tests/invitations.test.d.ts +0 -2
  144. package/dist/types/src/packlets/tests/invitations.test.d.ts.map +0 -1
  145. package/dist/types/src/packlets/tests/shared-worker.test.d.ts +0 -2
  146. package/dist/types/src/packlets/tests/shared-worker.test.d.ts.map +0 -1
  147. package/dist/types/src/packlets/tests/spaces-invitations.test.d.ts +0 -2
  148. package/dist/types/src/packlets/tests/spaces-invitations.test.d.ts.map +0 -1
  149. package/dist/types/src/packlets/tests/spaces.test.d.ts +0 -2
  150. package/dist/types/src/packlets/tests/spaces.test.d.ts.map +0 -1
  151. package/dist/types/src/packlets/tests/text.test.d.ts +0 -2
  152. package/dist/types/src/packlets/tests/text.test.d.ts.map +0 -1
  153. package/src/packlets/services/utils.ts +0 -53
  154. package/src/packlets/testing/host-test-builder.ts +0 -163
  155. package/src/packlets/tests/client-services.test.ts +0 -222
  156. package/src/packlets/tests/client.test.ts +0 -140
  157. package/src/packlets/tests/halo-credentials.test.ts +0 -94
  158. package/src/packlets/tests/halo-persistent.test.ts +0 -53
  159. package/src/packlets/tests/halo-profile.test.ts +0 -48
  160. package/src/packlets/tests/invitations.test.ts +0 -389
  161. package/src/packlets/tests/shared-worker.test.ts +0 -92
  162. package/src/packlets/tests/spaces-invitations.test.ts +0 -46
  163. package/src/packlets/tests/spaces.test.ts +0 -147
  164. package/src/packlets/tests/text.test.ts +0 -206
@@ -1,9 +1,8 @@
1
1
  import "@dxos/node-std/globals"
2
2
  import {
3
3
  ClientServicesHost,
4
- LocalClientServices,
5
4
  ServiceContext
6
- } from "../../chunk-T73F4MV4.mjs";
5
+ } from "../../chunk-IHSMRQ3L.mjs";
7
6
 
8
7
  // packages/sdk/client-services/src/packlets/testing/credential-utils.ts
9
8
  import { createCredential } from "@dxos/credentials";
@@ -21,131 +20,9 @@ var createMockCredential = async ({ signer, issuer }) => createCredential({
21
20
  }
22
21
  });
23
22
 
24
- // packages/sdk/client-services/src/packlets/testing/host-test-builder.ts
25
- import { createDefaultModelFactory } from "@dxos/client";
26
- import { createCredentialSignerWithChain, CredentialGenerator } from "@dxos/credentials";
27
- import { SnapshotStore, MetadataStore, SpaceManager, valueEncoding } from "@dxos/echo-pipeline";
28
- import { testLocalDatabase } from "@dxos/echo-pipeline/testing";
29
- import { FeedFactory, FeedStore } from "@dxos/feed-store";
30
- import { Keyring } from "@dxos/keyring";
31
- import { MemorySignalManager, MemorySignalManagerContext } from "@dxos/messaging";
32
- import { MemoryTransportFactory, NetworkManager } from "@dxos/network-manager";
33
- import { createStorage, StorageType } from "@dxos/random-access-storage";
34
- var createServiceHost = (config, signalManagerContext) => {
35
- const networkManager = new NetworkManager({
36
- signalManager: new MemorySignalManager(signalManagerContext),
37
- transportFactory: MemoryTransportFactory
38
- });
39
- return new ClientServicesHost({
40
- config,
41
- networkManager
42
- });
43
- };
44
- var createServiceContext = ({ signalContext = new MemorySignalManagerContext(), storage = createStorage({
45
- type: StorageType.RAM
46
- }) } = {}) => {
47
- const networkManager = new NetworkManager({
48
- signalManager: new MemorySignalManager(signalContext),
49
- transportFactory: MemoryTransportFactory
50
- });
51
- const modelFactory = createDefaultModelFactory();
52
- return new ServiceContext(storage, networkManager, modelFactory);
53
- };
54
- var createPeers = async (numPeers) => {
55
- const signalContext = new MemorySignalManagerContext();
56
- return await Promise.all(Array.from(Array(numPeers)).map(async () => {
57
- const peer = createServiceContext({
58
- signalContext
59
- });
60
- await peer.open();
61
- return peer;
62
- }));
63
- };
64
- var createIdentity = async (peer) => {
65
- await peer.createIdentity();
66
- return peer;
67
- };
68
- var syncItemsLocal = async (db1, db2) => {
69
- await testLocalDatabase(db1, db2);
70
- await testLocalDatabase(db2, db1);
71
- };
72
- var HostTestBuilder = class {
73
- constructor() {
74
- this.signalContext = new MemorySignalManagerContext();
75
- }
76
- createPeer() {
77
- return new TestPeer(this.signalContext);
78
- }
79
- };
80
- var TestPeer = class {
81
- constructor(signalContext) {
82
- this.signalContext = signalContext;
83
- this._props = {};
84
- }
85
- get storage() {
86
- var _a, _b;
87
- return (_b = (_a = this._props).storage) != null ? _b : _a.storage = createStorage({
88
- type: StorageType.RAM
89
- });
90
- }
91
- get keyring() {
92
- var _a, _b;
93
- return (_b = (_a = this._props).keyring) != null ? _b : _a.keyring = new Keyring(this.storage.createDirectory("keyring"));
94
- }
95
- get feedStore() {
96
- var _a, _b;
97
- return (_b = (_a = this._props).feedStore) != null ? _b : _a.feedStore = new FeedStore({
98
- factory: new FeedFactory({
99
- root: this.storage.createDirectory("feeds"),
100
- signer: this.keyring,
101
- hypercore: {
102
- valueEncoding
103
- }
104
- })
105
- });
106
- }
107
- get metadataStore() {
108
- var _a, _b;
109
- return (_b = (_a = this._props).metadataStore) != null ? _b : _a.metadataStore = new MetadataStore(this.storage.createDirectory("metadata"));
110
- }
111
- get snapshotStore() {
112
- var _a, _b;
113
- return (_b = (_a = this._props).snapshotStore) != null ? _b : _a.snapshotStore = new SnapshotStore(this.storage.createDirectory("snapshots"));
114
- }
115
- get networkManager() {
116
- var _a, _b;
117
- return (_b = (_a = this._props).networkManager) != null ? _b : _a.networkManager = new NetworkManager({
118
- signalManager: new MemorySignalManager(this.signalContext),
119
- transportFactory: MemoryTransportFactory
120
- });
121
- }
122
- get spaceManager() {
123
- var _a, _b;
124
- return (_b = (_a = this._props).spaceManager) != null ? _b : _a.spaceManager = new SpaceManager({
125
- feedStore: this.feedStore,
126
- networkManager: this.networkManager
127
- });
128
- }
129
- };
130
- var createSigningContext = async (keyring) => {
131
- const identityKey = await keyring.createKey();
132
- const deviceKey = await keyring.createKey();
133
- return {
134
- identityKey,
135
- deviceKey,
136
- credentialSigner: createCredentialSignerWithChain(keyring, {
137
- credential: await new CredentialGenerator(keyring, identityKey, deviceKey).createDeviceAuthorization(deviceKey)
138
- }, deviceKey),
139
- recordCredential: async () => {
140
- }
141
- // No-op.
142
- };
143
- };
144
-
145
23
  // packages/sdk/client-services/src/packlets/testing/invitation-utils.ts
146
24
  import assert from "@dxos/node-std/assert";
147
25
  import { Trigger } from "@dxos/async";
148
- import { Client, EchoProxy, HaloProxy, InvitationsProxy, SpaceProxy } from "@dxos/client";
149
26
  import { Invitation } from "@dxos/protocols/proto/dxos/client/services";
150
27
  var sanitizeInvitation = (invitation) => {
151
28
  return {
@@ -298,196 +175,147 @@ var createInvitation = (host, options) => {
298
175
  authMethod: Invitation.AuthMethod.NONE,
299
176
  ...options != null ? options : {}
300
177
  };
301
- if (host instanceof InvitationsProxy || host instanceof HaloProxy || host instanceof SpaceProxy) {
302
- return host.createInvitation(options);
178
+ if (host instanceof ServiceContext) {
179
+ const hostHandler = host.getInvitationHandler({
180
+ kind: Invitation.Kind.SPACE,
181
+ ...options
182
+ });
183
+ return host.invitations.createInvitation(hostHandler, options);
303
184
  }
304
- const hostHandler = host.getInvitationHandler({
305
- kind: Invitation.Kind.SPACE,
306
- ...options
307
- });
308
- return host.invitations.createInvitation(hostHandler, options);
185
+ return host.createInvitation(options);
309
186
  };
310
187
  var acceptInvitation = (guest, invitation) => {
311
188
  invitation = sanitizeInvitation(invitation);
312
- if (guest instanceof InvitationsProxy || guest instanceof HaloProxy || guest instanceof EchoProxy || guest instanceof Client) {
313
- return guest.acceptInvitation(invitation);
189
+ if (guest instanceof ServiceContext) {
190
+ const guestHandler = guest.getInvitationHandler({
191
+ kind: invitation.kind
192
+ });
193
+ return guest.invitations.acceptInvitation(guestHandler, invitation);
314
194
  }
315
- const guestHandler = guest.getInvitationHandler({
316
- kind: invitation.kind
317
- });
318
- return guest.invitations.acceptInvitation(guestHandler, invitation);
195
+ return guest.acceptInvitation(invitation);
319
196
  };
320
197
 
321
198
  // packages/sdk/client-services/src/packlets/testing/test-builder.ts
322
- import assert2 from "@dxos/node-std/assert";
323
- import { asyncTimeout, Trigger as Trigger2 } from "@dxos/async";
324
- import { Client as Client2, ClientServicesProxy, createDefaultModelFactory as createDefaultModelFactory2, Invitation as Invitation2 } from "@dxos/client";
325
- import { Config } from "@dxos/config";
326
- import { raise } from "@dxos/debug";
327
- import { DocumentModel } from "@dxos/document-model";
328
- import { genesisMutation } from "@dxos/echo-db";
329
- import { PublicKey as PublicKey2 } from "@dxos/keys";
330
- import { log } from "@dxos/log";
331
- import { MemorySignalManager as MemorySignalManager2, MemorySignalManagerContext as MemorySignalManagerContext2, WebsocketSignalManager } from "@dxos/messaging";
332
- import { createWebRTCTransportFactory, MemoryTransportFactory as MemoryTransportFactory2, NetworkManager as NetworkManager2 } from "@dxos/network-manager";
333
- import { createLinkedPorts, createProtoRpcPeer } from "@dxos/rpc";
334
- var testConfigWithLocalSignal = new Config({
335
- version: 1,
336
- runtime: {
337
- services: {
338
- signaling: [
339
- {
340
- // TODO(burdon): Port numbers and global consts?
341
- server: "ws://localhost:4000/.well-known/dx/signal"
342
- }
343
- ]
344
- }
345
- }
346
- });
199
+ import { createDefaultModelFactory } from "@dxos/client-protocol";
200
+ import { createCredentialSignerWithChain, CredentialGenerator } from "@dxos/credentials";
201
+ import { SnapshotStore, MetadataStore, SpaceManager, valueEncoding } from "@dxos/echo-pipeline";
202
+ import { testLocalDatabase } from "@dxos/echo-pipeline/testing";
203
+ import { FeedFactory, FeedStore } from "@dxos/feed-store";
204
+ import { Keyring } from "@dxos/keyring";
205
+ import { MemorySignalManager, MemorySignalManagerContext } from "@dxos/messaging";
206
+ import { MemoryTransportFactory, NetworkManager } from "@dxos/network-manager";
207
+ import { createStorage, StorageType } from "@dxos/random-access-storage";
208
+ var createServiceHost = (config, signalManagerContext) => {
209
+ return new ClientServicesHost({
210
+ config,
211
+ signalManager: new MemorySignalManager(signalManagerContext),
212
+ transportFactory: MemoryTransportFactory
213
+ });
214
+ };
215
+ var createServiceContext = ({ signalContext = new MemorySignalManagerContext(), storage = createStorage({
216
+ type: StorageType.RAM
217
+ }) } = {}) => {
218
+ const signalManager = new MemorySignalManager(signalContext);
219
+ const networkManager = new NetworkManager({
220
+ signalManager,
221
+ transportFactory: MemoryTransportFactory
222
+ });
223
+ const modelFactory = createDefaultModelFactory();
224
+ return new ServiceContext(storage, networkManager, signalManager, modelFactory);
225
+ };
226
+ var createPeers = async (numPeers) => {
227
+ const signalContext = new MemorySignalManagerContext();
228
+ return await Promise.all(Array.from(Array(numPeers)).map(async () => {
229
+ const peer = createServiceContext({
230
+ signalContext
231
+ });
232
+ await peer.open();
233
+ return peer;
234
+ }));
235
+ };
236
+ var createIdentity = async (peer) => {
237
+ await peer.createIdentity();
238
+ return peer;
239
+ };
240
+ var syncItemsLocal = async (db1, db2) => {
241
+ await testLocalDatabase(db1, db2);
242
+ await testLocalDatabase(db2, db1);
243
+ };
347
244
  var TestBuilder = class {
348
- // prettier-ignore
349
- constructor(config, _modelFactory = createDefaultModelFactory2(), _signalManagerContext = new MemorySignalManagerContext2()) {
350
- this._modelFactory = _modelFactory;
351
- this._signalManagerContext = _signalManagerContext;
352
- this._config = config != null ? config : new Config();
245
+ constructor() {
246
+ this.signalContext = new MemorySignalManagerContext();
353
247
  }
354
- get config() {
355
- return this._config;
248
+ createPeer() {
249
+ return new TestPeer(this.signalContext);
356
250
  }
357
- /**
358
- * Get network manager using local shared memory or remote signal manager.
359
- */
360
- get networkManager() {
361
- const signals = this._config.get("runtime.services.signaling");
362
- if (signals) {
363
- return new NetworkManager2({
364
- log: true,
365
- signalManager: new WebsocketSignalManager(signals),
366
- transportFactory: createWebRTCTransportFactory({
367
- iceServers: this._config.get("runtime.services.ice")
368
- })
369
- });
370
- }
371
- return new NetworkManager2({
372
- log: true,
373
- signalManager: new MemorySignalManager2(this._signalManagerContext),
374
- transportFactory: MemoryTransportFactory2
375
- });
251
+ };
252
+ var TestPeer = class {
253
+ constructor(signalContext) {
254
+ this.signalContext = signalContext;
255
+ this._props = {};
376
256
  }
377
- /**
378
- * Create backend service handlers.
379
- */
380
- createClientServicesHost() {
381
- return new ClientServicesHost({
382
- config: this._config,
383
- modelFactory: this._modelFactory,
384
- networkManager: this.networkManager,
385
- storage: this.storage
257
+ get storage() {
258
+ var _a, _b;
259
+ return (_b = (_a = this._props).storage) != null ? _b : _a.storage = createStorage({
260
+ type: StorageType.RAM
386
261
  });
387
262
  }
388
- /**
389
- * Create local services host.
390
- */
391
- createLocal() {
392
- return new LocalClientServices({
393
- config: this._config,
394
- modelFactory: this._modelFactory,
395
- networkManager: this.networkManager,
396
- storage: this.storage
263
+ get keyring() {
264
+ var _a, _b;
265
+ return (_b = (_a = this._props).keyring) != null ? _b : _a.keyring = new Keyring(this.storage.createDirectory("keyring"));
266
+ }
267
+ get feedStore() {
268
+ var _a, _b;
269
+ return (_b = (_a = this._props).feedStore) != null ? _b : _a.feedStore = new FeedStore({
270
+ factory: new FeedFactory({
271
+ root: this.storage.createDirectory("feeds"),
272
+ signer: this.keyring,
273
+ hypercore: {
274
+ valueEncoding
275
+ }
276
+ })
397
277
  });
398
278
  }
399
- /**
400
- * Create client/server.
401
- */
402
- createClientServer(host = this.createClientServicesHost()) {
403
- const [proxyPort, hostPort] = createLinkedPorts();
404
- const server = createProtoRpcPeer({
405
- exposed: host.descriptors,
406
- handlers: host.services,
407
- port: hostPort
279
+ get metadataStore() {
280
+ var _a, _b;
281
+ return (_b = (_a = this._props).metadataStore) != null ? _b : _a.metadataStore = new MetadataStore(this.storage.createDirectory("metadata"));
282
+ }
283
+ get snapshotStore() {
284
+ var _a, _b;
285
+ return (_b = (_a = this._props).snapshotStore) != null ? _b : _a.snapshotStore = new SnapshotStore(this.storage.createDirectory("snapshots"));
286
+ }
287
+ get networkManager() {
288
+ var _a, _b;
289
+ return (_b = (_a = this._props).networkManager) != null ? _b : _a.networkManager = new NetworkManager({
290
+ signalManager: new MemorySignalManager(this.signalContext),
291
+ transportFactory: MemoryTransportFactory
408
292
  });
409
- const client = new Client2({
410
- services: new ClientServicesProxy(proxyPort)
293
+ }
294
+ get spaceManager() {
295
+ var _a, _b;
296
+ return (_b = (_a = this._props).spaceManager) != null ? _b : _a.spaceManager = new SpaceManager({
297
+ feedStore: this.feedStore,
298
+ networkManager: this.networkManager,
299
+ metadataStore: this.metadataStore,
300
+ modelFactory: createDefaultModelFactory(),
301
+ snapshotStore: this.snapshotStore
411
302
  });
412
- return [
413
- client,
414
- server
415
- ];
416
303
  }
417
304
  };
418
- var testSpace = async (create, check = create) => {
419
- const objectId = PublicKey2.random().toHex();
420
- const result = create.mutate(genesisMutation(objectId, DocumentModel.meta.type));
421
- await result.batch.getReceipt();
422
- assert2(create._itemManager.entities.has(result.objectsUpdated[0].id));
423
- await asyncTimeout(check.itemUpdate.waitForCondition(() => check._itemManager.entities.has(objectId)), 1e3);
424
- return result;
425
- };
426
- var syncItems = async (db1, db2) => {
427
- await testSpace(db1, db2);
428
- await testSpace(db2, db1);
429
- };
430
- var joinCommonSpace = async ([initialPeer, ...peers], spaceKey) => {
431
- const rootSpace = spaceKey ? initialPeer.getSpace(spaceKey) : await initialPeer.createSpace();
432
- assert2(rootSpace, "Space not found.");
433
- await Promise.all(peers.map(async (peer) => {
434
- const hostDone = new Trigger2();
435
- const guestDone = new Trigger2();
436
- const hostObservable = rootSpace.createInvitation({
437
- authMethod: Invitation2.AuthMethod.NONE
438
- });
439
- log("invitation created", {}, {
440
- file: "test-builder.ts",
441
- line: 156,
442
- scope: void 0,
443
- callSite: (f, a) => f(...a)
444
- });
445
- hostObservable.subscribe((hostInvitation) => {
446
- switch (hostInvitation.state) {
447
- case Invitation2.State.CONNECTING: {
448
- const guestObservable = peer.acceptInvitation(hostInvitation);
449
- log("invitation accepted", {}, {
450
- file: "test-builder.ts",
451
- line: 162,
452
- scope: void 0,
453
- callSite: (f, a) => f(...a)
454
- });
455
- guestObservable.subscribe((guestInvitation) => {
456
- switch (guestInvitation.state) {
457
- case Invitation2.State.SUCCESS: {
458
- guestDone.wake(guestInvitation);
459
- log("invitation guestDone", {}, {
460
- file: "test-builder.ts",
461
- line: 169,
462
- scope: void 0,
463
- callSite: (f, a) => f(...a)
464
- });
465
- break;
466
- }
467
- }
468
- }, (err) => raise(err));
469
- break;
470
- }
471
- case Invitation2.State.SUCCESS: {
472
- hostDone.wake(hostInvitation);
473
- log("invitation hostDone", {}, {
474
- file: "test-builder.ts",
475
- line: 181,
476
- scope: void 0,
477
- callSite: (f, a) => f(...a)
478
- });
479
- }
480
- }
481
- }, (err) => raise(err));
482
- await Promise.all([
483
- hostDone.wait(),
484
- guestDone.wait()
485
- ]);
486
- }));
487
- return rootSpace.key;
305
+ var createSigningContext = async (keyring) => {
306
+ const identityKey = await keyring.createKey();
307
+ const deviceKey = await keyring.createKey();
308
+ return {
309
+ identityKey,
310
+ deviceKey,
311
+ credentialSigner: createCredentialSignerWithChain(keyring, {
312
+ credential: await new CredentialGenerator(keyring, identityKey, deviceKey).createDeviceAuthorization(deviceKey)
313
+ }, deviceKey),
314
+ recordCredential: async () => {
315
+ }
316
+ };
488
317
  };
489
318
  export {
490
- HostTestBuilder,
491
319
  TestBuilder,
492
320
  TestPeer,
493
321
  createIdentity,
@@ -496,12 +324,8 @@ export {
496
324
  createServiceContext,
497
325
  createServiceHost,
498
326
  createSigningContext,
499
- joinCommonSpace,
500
327
  performInvitation,
501
328
  sanitizeInvitation,
502
- syncItems,
503
- syncItemsLocal,
504
- testConfigWithLocalSignal,
505
- testSpace
329
+ syncItemsLocal
506
330
  };
507
331
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../src/packlets/testing/credential-utils.ts", "../../../../../src/packlets/testing/host-test-builder.ts", "../../../../../src/packlets/testing/invitation-utils.ts", "../../../../../src/packlets/testing/test-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { createCredential } from '@dxos/credentials';\nimport { Signer } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\nimport { Credential } from '@dxos/protocols/proto/dxos/halo/credentials';\n\nexport const createMockCredential = async ({\n signer,\n issuer\n}: {\n signer: Signer;\n issuer: PublicKey;\n}): Promise<Credential> =>\n createCredential({\n signer,\n issuer,\n subject: new PublicKey(Buffer.from('test')),\n assertion: {\n '@type': 'example.testing.rpc.MessageWithAny',\n payload: {\n '@type': 'google.protobuf.Any',\n value: Buffer.from('test')\n }\n }\n });\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { createDefaultModelFactory } from '@dxos/client';\nimport { Config } from '@dxos/config';\nimport { createCredentialSignerWithChain, CredentialGenerator } from '@dxos/credentials';\nimport {\n SnapshotStore,\n DataPipeline,\n MetadataStore,\n SigningContext,\n SpaceManager,\n valueEncoding\n} from '@dxos/echo-pipeline';\nimport { testLocalDatabase } from '@dxos/echo-pipeline/testing';\nimport { FeedFactory, FeedStore } from '@dxos/feed-store';\nimport { Keyring } from '@dxos/keyring';\nimport { MemorySignalManager, MemorySignalManagerContext } from '@dxos/messaging';\nimport { MemoryTransportFactory, NetworkManager } from '@dxos/network-manager';\nimport { createStorage, Storage, StorageType } from '@dxos/random-access-storage';\n\nimport { ClientServicesHost, ServiceContext } from '../services';\n\n//\n// TODO(burdon): Replace with test builder.\n//\n\nexport const createServiceHost = (config: Config, signalManagerContext: MemorySignalManagerContext) => {\n const networkManager = new NetworkManager({\n signalManager: new MemorySignalManager(signalManagerContext),\n transportFactory: MemoryTransportFactory\n });\n\n return new ClientServicesHost({\n config,\n networkManager\n });\n};\n\nexport const createServiceContext = ({\n signalContext = new MemorySignalManagerContext(),\n storage = createStorage({ type: StorageType.RAM })\n}: {\n signalContext?: MemorySignalManagerContext;\n storage?: Storage;\n} = {}) => {\n const networkManager = new NetworkManager({\n signalManager: new MemorySignalManager(signalContext),\n transportFactory: MemoryTransportFactory\n });\n\n const modelFactory = createDefaultModelFactory();\n return new ServiceContext(storage, networkManager, modelFactory);\n};\n\nexport const createPeers = async (numPeers: number) => {\n const signalContext = new MemorySignalManagerContext();\n\n return await Promise.all(\n Array.from(Array(numPeers)).map(async () => {\n const peer = createServiceContext({ signalContext });\n await peer.open();\n return peer;\n })\n );\n};\n\nexport const createIdentity = async (peer: ServiceContext) => {\n await peer.createIdentity();\n return peer;\n};\n\n// TODO(burdon): Remove @dxos/client-testing.\n// TODO(burdon): Create builder and make configurable.\nexport const syncItemsLocal = async (db1: DataPipeline, db2: DataPipeline) => {\n await testLocalDatabase(db1, db2);\n await testLocalDatabase(db2, db1);\n};\n\nexport class HostTestBuilder {\n public readonly signalContext = new MemorySignalManagerContext();\n\n createPeer(): TestPeer {\n return new TestPeer(this.signalContext);\n }\n}\n\nexport type TestPeerProps = {\n storage?: Storage;\n feedStore?: FeedStore<any>;\n metadataStore?: MetadataStore;\n keyring?: Keyring;\n networkManager?: NetworkManager;\n spaceManager?: SpaceManager;\n snapshotStore?: SnapshotStore;\n};\n\nexport class TestPeer {\n private _props: TestPeerProps = {};\n\n constructor(private readonly signalContext: MemorySignalManagerContext) {}\n\n get storage() {\n return (this._props.storage ??= createStorage({ type: StorageType.RAM }));\n }\n\n get keyring() {\n return (this._props.keyring ??= new Keyring(this.storage.createDirectory('keyring')));\n }\n\n get feedStore() {\n return (this._props.feedStore ??= new FeedStore({\n factory: new FeedFactory({\n root: this.storage.createDirectory('feeds'),\n signer: this.keyring,\n hypercore: {\n valueEncoding\n }\n })\n }));\n }\n\n get metadataStore() {\n return (this._props.metadataStore ??= new MetadataStore(this.storage.createDirectory('metadata')));\n }\n\n get snapshotStore() {\n return (this._props.snapshotStore ??= new SnapshotStore(this.storage.createDirectory('snapshots')));\n }\n\n get networkManager() {\n return (this._props.networkManager ??= new NetworkManager({\n signalManager: new MemorySignalManager(this.signalContext),\n transportFactory: MemoryTransportFactory\n }));\n }\n\n get spaceManager() {\n return (this._props.spaceManager ??= new SpaceManager({\n feedStore: this.feedStore,\n networkManager: this.networkManager\n }));\n }\n}\n\nexport const createSigningContext = async (keyring: Keyring): Promise<SigningContext> => {\n const identityKey = await keyring.createKey();\n const deviceKey = await keyring.createKey();\n\n return {\n identityKey,\n deviceKey,\n credentialSigner: createCredentialSignerWithChain(\n keyring,\n {\n credential: await new CredentialGenerator(keyring, identityKey, deviceKey).createDeviceAuthorization(deviceKey)\n },\n deviceKey\n ),\n recordCredential: async () => {} // No-op.\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Trigger } from '@dxos/async';\nimport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n Client,\n EchoProxy,\n HaloProxy,\n InvitationsProxy,\n SpaceProxy\n} from '@dxos/client';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\nimport { ServiceContext } from '../services';\n\n/**\n * Strip secrets from invitation before giving it to the peer.\n */\nexport const sanitizeInvitation = (invitation: Invitation): Invitation => {\n return {\n invitationId: invitation.invitationId,\n type: invitation.type,\n kind: invitation.kind,\n authMethod: invitation.authMethod,\n swarmKey: invitation.swarmKey,\n state: invitation.state,\n timeout: invitation.timeout\n };\n};\n\nexport type PerformInvitationCallbacks<T> = {\n onConnecting?: (value: T) => boolean | void;\n onConnected?: (value: T) => boolean | void;\n onReady?: (value: T) => boolean | void;\n onAuthenticating?: (value: T) => boolean | void;\n onSuccess?: (value: T) => boolean | void;\n onCancelled?: (value: T) => boolean | void;\n onTimeout?: (value: T) => boolean | void;\n onError?: (value: T) => boolean | void;\n};\n\nexport type PerformInvitationParams = {\n host: ServiceContext | InvitationsProxy | HaloProxy | SpaceProxy;\n guest: ServiceContext | InvitationsProxy | HaloProxy | EchoProxy | Client;\n options?: Partial<Invitation>;\n hooks?: {\n host?: PerformInvitationCallbacks<CancellableInvitationObservable>;\n guest?: PerformInvitationCallbacks<AuthenticatingInvitationObservable>;\n };\n};\n\nexport type Result = { invitation?: Invitation; error?: Error };\n\nexport const performInvitation = ({\n host,\n guest,\n options,\n hooks\n}: PerformInvitationParams): [Promise<Result>, Promise<Result>] => {\n const hostComplete = new Trigger<Result>();\n const guestComplete = new Trigger<Result>();\n const authCode = new Trigger<string>();\n\n const hostObservable = createInvitation(host, options);\n hostObservable.subscribe(\n async (hostInvitation: Invitation) => {\n switch (hostInvitation.state) {\n case Invitation.State.CONNECTING: {\n if (hooks?.host?.onConnecting?.(hostObservable)) {\n break;\n }\n const guestObservable = acceptInvitation(guest, hostInvitation);\n guestObservable.subscribe(\n async (guestInvitation: Invitation) => {\n switch (guestInvitation.state) {\n case Invitation.State.CONNECTING: {\n if (hooks?.guest?.onConnecting?.(guestObservable)) {\n break;\n }\n assert(hostInvitation.swarmKey!.equals(guestInvitation.swarmKey!));\n break;\n }\n\n case Invitation.State.CONNECTED: {\n hooks?.guest?.onConnected?.(guestObservable);\n break;\n }\n\n case Invitation.State.READY_FOR_AUTHENTICATION: {\n if (hooks?.guest?.onReady?.(guestObservable)) {\n break;\n }\n await guestObservable.authenticate(await authCode.wait());\n break;\n }\n\n case Invitation.State.AUTHENTICATING: {\n hooks?.guest?.onAuthenticating?.(guestObservable);\n break;\n }\n\n case Invitation.State.SUCCESS: {\n if (hooks?.guest?.onSuccess?.(guestObservable)) {\n break;\n }\n guestComplete.wake({ invitation: guestInvitation });\n break;\n }\n\n case Invitation.State.CANCELLED: {\n if (hooks?.guest?.onCancelled?.(guestObservable)) {\n break;\n }\n guestComplete.wake({ invitation: guestInvitation });\n break;\n }\n\n case Invitation.State.TIMEOUT: {\n if (hooks?.guest?.onTimeout?.(guestObservable)) {\n return;\n }\n guestComplete.wake({ invitation: guestInvitation });\n }\n }\n },\n (error: Error) => {\n if (hooks?.guest?.onError?.(guestObservable)) {\n return;\n }\n guestComplete.wake({ error });\n }\n );\n break;\n }\n\n case Invitation.State.CONNECTED: {\n hooks?.host?.onConnected?.(hostObservable);\n break;\n }\n\n case Invitation.State.READY_FOR_AUTHENTICATION: {\n if (hooks?.host?.onReady?.(hostObservable)) {\n break;\n }\n if (hostInvitation.authCode) {\n authCode.wake(hostInvitation.authCode);\n }\n break;\n }\n\n case Invitation.State.AUTHENTICATING: {\n hooks?.host?.onAuthenticating?.(hostObservable);\n break;\n }\n\n case Invitation.State.SUCCESS: {\n if (hooks?.host?.onSuccess?.(hostObservable)) {\n break;\n }\n hostComplete.wake({ invitation: hostInvitation });\n break;\n }\n\n case Invitation.State.CANCELLED: {\n if (hooks?.host?.onCancelled?.(hostObservable)) {\n break;\n }\n hostComplete.wake({ invitation: hostInvitation });\n break;\n }\n\n case Invitation.State.TIMEOUT: {\n if (hooks?.host?.onTimeout?.(hostObservable)) {\n break;\n }\n hostComplete.wake({ invitation: hostInvitation });\n break;\n }\n }\n },\n (error: Error) => {\n if (hooks?.host?.onError?.(hostObservable)) {\n return;\n }\n hostComplete.wake({ error });\n }\n );\n\n return [hostComplete.wait(), guestComplete.wait()];\n};\n\nconst createInvitation = (\n host: ServiceContext | InvitationsProxy | HaloProxy | SpaceProxy,\n options?: Partial<Invitation>\n): CancellableInvitationObservable => {\n options ??= {\n authMethod: Invitation.AuthMethod.NONE,\n ...(options ?? {})\n };\n\n if (host instanceof InvitationsProxy || host instanceof HaloProxy || host instanceof SpaceProxy) {\n return host.createInvitation(options);\n }\n\n const hostHandler = host.getInvitationHandler({ kind: Invitation.Kind.SPACE, ...options });\n return host.invitations.createInvitation(hostHandler, options);\n};\n\nconst acceptInvitation = (\n guest: ServiceContext | InvitationsProxy | HaloProxy | EchoProxy | Client,\n invitation: Invitation\n): AuthenticatingInvitationObservable => {\n invitation = sanitizeInvitation(invitation);\n\n if (\n guest instanceof InvitationsProxy ||\n guest instanceof HaloProxy ||\n guest instanceof EchoProxy ||\n guest instanceof Client\n ) {\n return guest.acceptInvitation(invitation);\n }\n\n const guestHandler = guest.getInvitationHandler({ kind: invitation.kind });\n return guest.invitations.acceptInvitation(guestHandler, invitation);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport { Client, ClientServices, ClientServicesProxy, createDefaultModelFactory, Invitation } from '@dxos/client';\nimport { Config } from '@dxos/config';\nimport { raise } from '@dxos/debug';\nimport { DocumentModel } from '@dxos/document-model';\nimport { DatabaseProxy, genesisMutation } from '@dxos/echo-db';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { createWebRTCTransportFactory, MemoryTransportFactory, NetworkManager } from '@dxos/network-manager';\nimport { Storage } from '@dxos/random-access-storage';\nimport { createLinkedPorts, createProtoRpcPeer, ProtoRpcPeer } from '@dxos/rpc';\n\nimport { ClientServicesHost, LocalClientServices } from '../services';\n\nexport const testConfigWithLocalSignal = new Config({\n version: 1,\n runtime: {\n services: {\n signaling: [\n {\n // TODO(burdon): Port numbers and global consts?\n server: 'ws://localhost:4000/.well-known/dx/signal'\n }\n ]\n }\n }\n});\n\n/**\n * Client builder supports different configurations, incl. signaling, transports, storage.\n */\nexport class TestBuilder {\n private readonly _config: Config;\n\n public storage?: Storage;\n\n // prettier-ignore\n constructor (\n config?: Config,\n private readonly _modelFactory = createDefaultModelFactory(),\n private readonly _signalManagerContext = new MemorySignalManagerContext()\n ) {\n this._config = config ?? new Config();\n }\n\n get config(): Config {\n return this._config;\n }\n\n /**\n * Get network manager using local shared memory or remote signal manager.\n */\n get networkManager() {\n const signals = this._config.get('runtime.services.signaling');\n if (signals) {\n return new NetworkManager({\n log: true,\n signalManager: new WebsocketSignalManager(signals),\n transportFactory: createWebRTCTransportFactory({\n iceServers: this._config.get('runtime.services.ice')\n })\n });\n }\n\n // Memory transport with shared context.\n return new NetworkManager({\n log: true,\n signalManager: new MemorySignalManager(this._signalManagerContext),\n transportFactory: MemoryTransportFactory\n });\n }\n\n /**\n * Create backend service handlers.\n */\n createClientServicesHost() {\n return new ClientServicesHost({\n config: this._config,\n modelFactory: this._modelFactory,\n networkManager: this.networkManager,\n storage: this.storage\n });\n }\n\n /**\n * Create local services host.\n */\n createLocal() {\n return new LocalClientServices({\n config: this._config,\n modelFactory: this._modelFactory,\n networkManager: this.networkManager,\n storage: this.storage\n });\n }\n\n /**\n * Create client/server.\n */\n createClientServer(host: ClientServicesHost = this.createClientServicesHost()): [Client, ProtoRpcPeer<{}>] {\n const [proxyPort, hostPort] = createLinkedPorts();\n const server = createProtoRpcPeer({\n exposed: host.descriptors,\n handlers: host.services as ClientServices,\n port: hostPort\n });\n // TODO(dmaretskyi): Refactor.\n\n const client = new Client({ services: new ClientServicesProxy(proxyPort) });\n return [client, server];\n }\n}\n\nexport const testSpace = async (create: DatabaseProxy, check: DatabaseProxy = create) => {\n const objectId = PublicKey.random().toHex();\n\n const result = create.mutate(genesisMutation(objectId, DocumentModel.meta.type));\n\n await result.batch.getReceipt();\n // TODO(dmaretskiy): await result.waitToBeProcessed()\n assert(create._itemManager.entities.has(result.objectsUpdated[0].id));\n\n await asyncTimeout(\n check.itemUpdate.waitForCondition(() => check._itemManager.entities.has(objectId)),\n 1000\n );\n\n return result;\n};\n\nexport const syncItems = async (db1: DatabaseProxy, db2: DatabaseProxy) => {\n // Check item replicated from 1 => 2.\n await testSpace(db1, db2);\n\n // Check item replicated from 2 => 1.\n await testSpace(db2, db1);\n};\n\nexport const joinCommonSpace = async ([initialPeer, ...peers]: Client[], spaceKey?: PublicKey): Promise<PublicKey> => {\n const rootSpace = spaceKey ? initialPeer.getSpace(spaceKey) : await initialPeer.createSpace();\n assert(rootSpace, 'Space not found.');\n\n await Promise.all(\n peers.map(async (peer) => {\n const hostDone = new Trigger<Invitation>();\n const guestDone = new Trigger<Invitation>();\n\n const hostObservable = rootSpace.createInvitation({ authMethod: Invitation.AuthMethod.NONE });\n log('invitation created');\n hostObservable.subscribe(\n (hostInvitation) => {\n switch (hostInvitation.state) {\n case Invitation.State.CONNECTING: {\n const guestObservable = peer.acceptInvitation(hostInvitation);\n log('invitation accepted');\n\n guestObservable.subscribe(\n (guestInvitation) => {\n switch (guestInvitation.state) {\n case Invitation.State.SUCCESS: {\n guestDone.wake(guestInvitation);\n log('invitation guestDone');\n break;\n }\n }\n },\n (err) => raise(err)\n );\n break;\n }\n\n case Invitation.State.SUCCESS: {\n hostDone.wake(hostInvitation);\n log('invitation hostDone');\n }\n }\n },\n (err) => raise(err)\n );\n\n await Promise.all([hostDone.wait(), guestDone.wait()]);\n })\n );\n\n return rootSpace.key;\n};\n"],
5
- "mappings": "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",
6
- "names": ["createCredential", "PublicKey", "createMockCredential", "signer", "issuer", "subject", "Buffer", "from", "assertion", "payload", "value", "createDefaultModelFactory", "createCredentialSignerWithChain", "CredentialGenerator", "SnapshotStore", "MetadataStore", "SpaceManager", "valueEncoding", "testLocalDatabase", "FeedFactory", "FeedStore", "Keyring", "MemorySignalManager", "MemorySignalManagerContext", "MemoryTransportFactory", "NetworkManager", "createStorage", "StorageType", "createServiceHost", "config", "signalManagerContext", "networkManager", "NetworkManager", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "ClientServicesHost", "createServiceContext", "signalContext", "MemorySignalManagerContext", "storage", "createStorage", "type", "StorageType", "RAM", "modelFactory", "createDefaultModelFactory", "ServiceContext", "createPeers", "numPeers", "Promise", "all", "Array", "from", "map", "peer", "open", "createIdentity", "syncItemsLocal", "db1", "db2", "testLocalDatabase", "HostTestBuilder", "createPeer", "TestPeer", "constructor", "_props", "keyring", "Keyring", "createDirectory", "feedStore", "FeedStore", "factory", "FeedFactory", "root", "signer", "hypercore", "valueEncoding", "metadataStore", "MetadataStore", "snapshotStore", "SnapshotStore", "spaceManager", "SpaceManager", "createSigningContext", "identityKey", "createKey", "deviceKey", "credentialSigner", "createCredentialSignerWithChain", "credential", "CredentialGenerator", "createDeviceAuthorization", "recordCredential", "assert", "Trigger", "Client", "EchoProxy", "HaloProxy", "InvitationsProxy", "SpaceProxy", "Invitation", "sanitizeInvitation", "invitation", "invitationId", "type", "kind", "authMethod", "swarmKey", "state", "timeout", "performInvitation", "host", "guest", "options", "hooks", "hostComplete", "guestComplete", "authCode", "hostObservable", "createInvitation", "subscribe", "hostInvitation", "State", "CONNECTING", "onConnecting", "guestObservable", "acceptInvitation", "guestInvitation", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "_l", "_m", "_n", "equals", "CONNECTED", "onConnected", "READY_FOR_AUTHENTICATION", "onReady", "authenticate", "wait", "AUTHENTICATING", "onAuthenticating", "SUCCESS", "onSuccess", "wake", "CANCELLED", "onCancelled", "TIMEOUT", "onTimeout", "error", "onError", "AuthMethod", "NONE", "hostHandler", "getInvitationHandler", "Kind", "SPACE", "invitations", "guestHandler", "assert", "asyncTimeout", "Trigger", "Client", "ClientServicesProxy", "createDefaultModelFactory", "Invitation", "Config", "raise", "DocumentModel", "genesisMutation", "PublicKey", "log", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "createWebRTCTransportFactory", "MemoryTransportFactory", "NetworkManager", "createLinkedPorts", "createProtoRpcPeer", "testConfigWithLocalSignal", "Config", "version", "runtime", "services", "signaling", "server", "TestBuilder", "constructor", "config", "_modelFactory", "createDefaultModelFactory", "_signalManagerContext", "MemorySignalManagerContext", "_config", "networkManager", "signals", "get", "NetworkManager", "log", "signalManager", "WebsocketSignalManager", "transportFactory", "createWebRTCTransportFactory", "iceServers", "MemorySignalManager", "MemoryTransportFactory", "createClientServicesHost", "ClientServicesHost", "modelFactory", "storage", "createLocal", "LocalClientServices", "createClientServer", "host", "proxyPort", "hostPort", "createLinkedPorts", "createProtoRpcPeer", "exposed", "descriptors", "handlers", "port", "client", "Client", "ClientServicesProxy", "testSpace", "create", "check", "objectId", "PublicKey", "random", "toHex", "result", "mutate", "genesisMutation", "DocumentModel", "meta", "type", "batch", "getReceipt", "assert", "_itemManager", "entities", "has", "objectsUpdated", "id", "asyncTimeout", "itemUpdate", "waitForCondition", "syncItems", "db1", "db2", "joinCommonSpace", "initialPeer", "peers", "spaceKey", "rootSpace", "getSpace", "createSpace", "Promise", "all", "map", "peer", "hostDone", "Trigger", "guestDone", "hostObservable", "createInvitation", "authMethod", "Invitation", "AuthMethod", "NONE", "subscribe", "hostInvitation", "state", "State", "CONNECTING", "guestObservable", "acceptInvitation", "guestInvitation", "SUCCESS", "wake", "err", "raise", "wait", "key"]
3
+ "sources": ["../../../../../src/packlets/testing/credential-utils.ts", "../../../../../src/packlets/testing/invitation-utils.ts", "../../../../../src/packlets/testing/test-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { createCredential } from '@dxos/credentials';\nimport { Signer } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\nimport { Credential } from '@dxos/protocols/proto/dxos/halo/credentials';\n\nexport const createMockCredential = async ({\n signer,\n issuer,\n}: {\n signer: Signer;\n issuer: PublicKey;\n}): Promise<Credential> =>\n createCredential({\n signer,\n issuer,\n subject: new PublicKey(Buffer.from('test')),\n assertion: {\n '@type': 'example.testing.rpc.MessageWithAny',\n payload: {\n '@type': 'google.protobuf.Any',\n value: Buffer.from('test'),\n },\n },\n });\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Trigger } from '@dxos/async';\nimport { AuthenticatingInvitationObservable, CancellableInvitationObservable } from '@dxos/client-protocol';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\nimport { ServiceContext } from '../services';\n\n/**\n * Strip secrets from invitation before giving it to the peer.\n */\nexport const sanitizeInvitation = (invitation: Invitation): Invitation => {\n return {\n invitationId: invitation.invitationId,\n type: invitation.type,\n kind: invitation.kind,\n authMethod: invitation.authMethod,\n swarmKey: invitation.swarmKey,\n state: invitation.state,\n timeout: invitation.timeout,\n };\n};\n\nexport type InvitationHost = {\n createInvitation(options?: Partial<Invitation>): CancellableInvitationObservable;\n};\n\nexport type InvitationGuest = {\n acceptInvitation(invitation: Invitation): AuthenticatingInvitationObservable;\n};\n\nexport type PerformInvitationCallbacks<T> = {\n onConnecting?: (value: T) => boolean | void;\n onConnected?: (value: T) => boolean | void;\n onReady?: (value: T) => boolean | void;\n onAuthenticating?: (value: T) => boolean | void;\n onSuccess?: (value: T) => boolean | void;\n onCancelled?: (value: T) => boolean | void;\n onTimeout?: (value: T) => boolean | void;\n onError?: (value: T) => boolean | void;\n};\n\nexport type PerformInvitationParams = {\n host: ServiceContext | InvitationHost;\n guest: ServiceContext | InvitationGuest;\n options?: Partial<Invitation>;\n hooks?: {\n host?: PerformInvitationCallbacks<CancellableInvitationObservable>;\n guest?: PerformInvitationCallbacks<AuthenticatingInvitationObservable>;\n };\n};\n\nexport type Result = { invitation?: Invitation; error?: Error };\n\nexport const performInvitation = ({\n host,\n guest,\n options,\n hooks,\n}: PerformInvitationParams): [Promise<Result>, Promise<Result>] => {\n const hostComplete = new Trigger<Result>();\n const guestComplete = new Trigger<Result>();\n const authCode = new Trigger<string>();\n\n const hostObservable = createInvitation(host, options);\n hostObservable.subscribe(\n async (hostInvitation: Invitation) => {\n switch (hostInvitation.state) {\n case Invitation.State.CONNECTING: {\n if (hooks?.host?.onConnecting?.(hostObservable)) {\n break;\n }\n const guestObservable = acceptInvitation(guest, hostInvitation);\n guestObservable.subscribe(\n async (guestInvitation: Invitation) => {\n switch (guestInvitation.state) {\n case Invitation.State.CONNECTING: {\n if (hooks?.guest?.onConnecting?.(guestObservable)) {\n break;\n }\n assert(hostInvitation.swarmKey!.equals(guestInvitation.swarmKey!));\n break;\n }\n\n case Invitation.State.CONNECTED: {\n hooks?.guest?.onConnected?.(guestObservable);\n break;\n }\n\n case Invitation.State.READY_FOR_AUTHENTICATION: {\n if (hooks?.guest?.onReady?.(guestObservable)) {\n break;\n }\n await guestObservable.authenticate(await authCode.wait());\n break;\n }\n\n case Invitation.State.AUTHENTICATING: {\n hooks?.guest?.onAuthenticating?.(guestObservable);\n break;\n }\n\n case Invitation.State.SUCCESS: {\n if (hooks?.guest?.onSuccess?.(guestObservable)) {\n break;\n }\n guestComplete.wake({ invitation: guestInvitation });\n break;\n }\n\n case Invitation.State.CANCELLED: {\n if (hooks?.guest?.onCancelled?.(guestObservable)) {\n break;\n }\n guestComplete.wake({ invitation: guestInvitation });\n break;\n }\n\n case Invitation.State.TIMEOUT: {\n if (hooks?.guest?.onTimeout?.(guestObservable)) {\n return;\n }\n guestComplete.wake({ invitation: guestInvitation });\n }\n }\n },\n (error: Error) => {\n if (hooks?.guest?.onError?.(guestObservable)) {\n return;\n }\n guestComplete.wake({ error });\n },\n );\n break;\n }\n\n case Invitation.State.CONNECTED: {\n hooks?.host?.onConnected?.(hostObservable);\n break;\n }\n\n case Invitation.State.READY_FOR_AUTHENTICATION: {\n if (hooks?.host?.onReady?.(hostObservable)) {\n break;\n }\n if (hostInvitation.authCode) {\n authCode.wake(hostInvitation.authCode);\n }\n break;\n }\n\n case Invitation.State.AUTHENTICATING: {\n hooks?.host?.onAuthenticating?.(hostObservable);\n break;\n }\n\n case Invitation.State.SUCCESS: {\n if (hooks?.host?.onSuccess?.(hostObservable)) {\n break;\n }\n hostComplete.wake({ invitation: hostInvitation });\n break;\n }\n\n case Invitation.State.CANCELLED: {\n if (hooks?.host?.onCancelled?.(hostObservable)) {\n break;\n }\n hostComplete.wake({ invitation: hostInvitation });\n break;\n }\n\n case Invitation.State.TIMEOUT: {\n if (hooks?.host?.onTimeout?.(hostObservable)) {\n break;\n }\n hostComplete.wake({ invitation: hostInvitation });\n break;\n }\n }\n },\n (error: Error) => {\n if (hooks?.host?.onError?.(hostObservable)) {\n return;\n }\n hostComplete.wake({ error });\n },\n );\n\n return [hostComplete.wait(), guestComplete.wait()];\n};\n\nconst createInvitation = (\n host: ServiceContext | InvitationHost,\n options?: Partial<Invitation>,\n): CancellableInvitationObservable => {\n options ??= {\n authMethod: Invitation.AuthMethod.NONE,\n ...(options ?? {}),\n };\n\n if (host instanceof ServiceContext) {\n const hostHandler = host.getInvitationHandler({ kind: Invitation.Kind.SPACE, ...options });\n return host.invitations.createInvitation(hostHandler, options);\n }\n\n return host.createInvitation(options);\n};\n\nconst acceptInvitation = (\n guest: ServiceContext | InvitationGuest,\n invitation: Invitation,\n): AuthenticatingInvitationObservable => {\n invitation = sanitizeInvitation(invitation);\n\n if (guest instanceof ServiceContext) {\n const guestHandler = guest.getInvitationHandler({ kind: invitation.kind });\n return guest.invitations.acceptInvitation(guestHandler, invitation);\n }\n\n return guest.acceptInvitation(invitation);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { createDefaultModelFactory } from '@dxos/client-protocol';\nimport { Config } from '@dxos/config';\nimport { createCredentialSignerWithChain, CredentialGenerator } from '@dxos/credentials';\nimport { SnapshotStore, DataPipeline, MetadataStore, SpaceManager, valueEncoding } from '@dxos/echo-pipeline';\nimport { testLocalDatabase } from '@dxos/echo-pipeline/testing';\nimport { FeedFactory, FeedStore } from '@dxos/feed-store';\nimport { Keyring } from '@dxos/keyring';\nimport { MemorySignalManager, MemorySignalManagerContext } from '@dxos/messaging';\nimport { MemoryTransportFactory, NetworkManager } from '@dxos/network-manager';\nimport { createStorage, Storage, StorageType } from '@dxos/random-access-storage';\n\nimport { ClientServicesHost, ServiceContext } from '../services';\nimport { SigningContext } from '../spaces';\n\n//\n// TODO(burdon): Replace with test builder.\n//\n\nexport const createServiceHost = (config: Config, signalManagerContext: MemorySignalManagerContext) => {\n return new ClientServicesHost({\n config,\n signalManager: new MemorySignalManager(signalManagerContext),\n transportFactory: MemoryTransportFactory,\n });\n};\n\nexport const createServiceContext = ({\n signalContext = new MemorySignalManagerContext(),\n storage = createStorage({ type: StorageType.RAM }),\n}: {\n signalContext?: MemorySignalManagerContext;\n storage?: Storage;\n} = {}) => {\n const signalManager = new MemorySignalManager(signalContext);\n const networkManager = new NetworkManager({\n signalManager,\n transportFactory: MemoryTransportFactory,\n });\n\n const modelFactory = createDefaultModelFactory();\n return new ServiceContext(storage, networkManager, signalManager, modelFactory);\n};\n\nexport const createPeers = async (numPeers: number) => {\n const signalContext = new MemorySignalManagerContext();\n\n return await Promise.all(\n Array.from(Array(numPeers)).map(async () => {\n const peer = createServiceContext({ signalContext });\n await peer.open();\n return peer;\n }),\n );\n};\n\nexport const createIdentity = async (peer: ServiceContext) => {\n await peer.createIdentity();\n return peer;\n};\n\n// TODO(burdon): Remove @dxos/client-testing.\n// TODO(burdon): Create builder and make configurable.\nexport const syncItemsLocal = async (db1: DataPipeline, db2: DataPipeline) => {\n await testLocalDatabase(db1, db2);\n await testLocalDatabase(db2, db1);\n};\n\nexport class TestBuilder {\n public readonly signalContext = new MemorySignalManagerContext();\n\n createPeer(): TestPeer {\n return new TestPeer(this.signalContext);\n }\n}\n\nexport type TestPeerProps = {\n storage?: Storage;\n feedStore?: FeedStore<any>;\n metadataStore?: MetadataStore;\n keyring?: Keyring;\n networkManager?: NetworkManager;\n spaceManager?: SpaceManager;\n snapshotStore?: SnapshotStore;\n};\n\nexport class TestPeer {\n private _props: TestPeerProps = {};\n\n constructor(private readonly signalContext: MemorySignalManagerContext) {}\n\n get storage() {\n return (this._props.storage ??= createStorage({ type: StorageType.RAM }));\n }\n\n get keyring() {\n return (this._props.keyring ??= new Keyring(this.storage.createDirectory('keyring')));\n }\n\n get feedStore() {\n return (this._props.feedStore ??= new FeedStore({\n factory: new FeedFactory({\n root: this.storage.createDirectory('feeds'),\n signer: this.keyring,\n hypercore: {\n valueEncoding,\n },\n }),\n }));\n }\n\n get metadataStore() {\n return (this._props.metadataStore ??= new MetadataStore(this.storage.createDirectory('metadata')));\n }\n\n get snapshotStore() {\n return (this._props.snapshotStore ??= new SnapshotStore(this.storage.createDirectory('snapshots')));\n }\n\n get networkManager() {\n return (this._props.networkManager ??= new NetworkManager({\n signalManager: new MemorySignalManager(this.signalContext),\n transportFactory: MemoryTransportFactory,\n }));\n }\n\n get spaceManager() {\n return (this._props.spaceManager ??= new SpaceManager({\n feedStore: this.feedStore,\n networkManager: this.networkManager,\n metadataStore: this.metadataStore,\n modelFactory: createDefaultModelFactory(),\n snapshotStore: this.snapshotStore,\n }));\n }\n}\n\nexport const createSigningContext = async (keyring: Keyring): Promise<SigningContext> => {\n const identityKey = await keyring.createKey();\n const deviceKey = await keyring.createKey();\n\n return {\n identityKey,\n deviceKey,\n credentialSigner: createCredentialSignerWithChain(\n keyring,\n {\n credential: await new CredentialGenerator(keyring, identityKey, deviceKey).createDeviceAuthorization(deviceKey),\n },\n deviceKey,\n ),\n recordCredential: async () => {}, // No-op.\n };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["createCredential", "PublicKey", "createMockCredential", "signer", "issuer", "subject", "Buffer", "from", "assertion", "payload", "value", "assert", "Trigger", "Invitation", "sanitizeInvitation", "invitation", "invitationId", "type", "kind", "authMethod", "swarmKey", "state", "timeout", "performInvitation", "host", "guest", "options", "hooks", "hostComplete", "Trigger", "guestComplete", "authCode", "hostObservable", "createInvitation", "subscribe", "hostInvitation", "Invitation", "State", "CONNECTING", "onConnecting", "guestObservable", "acceptInvitation", "guestInvitation", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "_l", "_m", "_n", "assert", "equals", "CONNECTED", "onConnected", "READY_FOR_AUTHENTICATION", "onReady", "authenticate", "wait", "AUTHENTICATING", "onAuthenticating", "SUCCESS", "onSuccess", "wake", "CANCELLED", "onCancelled", "TIMEOUT", "onTimeout", "error", "onError", "AuthMethod", "NONE", "ServiceContext", "hostHandler", "getInvitationHandler", "Kind", "SPACE", "invitations", "guestHandler", "createDefaultModelFactory", "createCredentialSignerWithChain", "CredentialGenerator", "SnapshotStore", "MetadataStore", "SpaceManager", "valueEncoding", "testLocalDatabase", "FeedFactory", "FeedStore", "Keyring", "MemorySignalManager", "MemorySignalManagerContext", "MemoryTransportFactory", "NetworkManager", "createStorage", "StorageType", "createServiceHost", "config", "signalManagerContext", "ClientServicesHost", "signalManager", "MemorySignalManager", "transportFactory", "MemoryTransportFactory", "createServiceContext", "signalContext", "MemorySignalManagerContext", "storage", "createStorage", "type", "StorageType", "RAM", "networkManager", "NetworkManager", "modelFactory", "createDefaultModelFactory", "ServiceContext", "createPeers", "numPeers", "Promise", "all", "Array", "from", "map", "peer", "open", "createIdentity", "syncItemsLocal", "db1", "db2", "testLocalDatabase", "TestBuilder", "createPeer", "TestPeer", "constructor", "_props", "keyring", "Keyring", "createDirectory", "feedStore", "FeedStore", "factory", "FeedFactory", "root", "signer", "hypercore", "valueEncoding", "metadataStore", "MetadataStore", "snapshotStore", "SnapshotStore", "spaceManager", "SpaceManager", "createSigningContext", "identityKey", "createKey", "deviceKey", "credentialSigner", "createCredentialSignerWithChain", "credential", "CredentialGenerator", "createDeviceAuthorization", "recordCredential"]
7
7
  }