@dxos/client-services 0.1.1 → 0.1.3

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 (282) hide show
  1. package/dist/src/index.d.ts +4 -1
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +4 -1
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/packlets/deprecated/index.d.ts +5 -0
  6. package/dist/src/packlets/deprecated/index.d.ts.map +1 -0
  7. package/dist/src/packlets/{services/impl → deprecated}/index.js +1 -3
  8. package/dist/src/packlets/deprecated/index.js.map +1 -0
  9. package/dist/src/packlets/{invitations/common.d.ts → deprecated/invitations.d.ts} +14 -2
  10. package/dist/src/packlets/deprecated/invitations.d.ts.map +1 -0
  11. package/dist/src/packlets/{invitations/common.js → deprecated/invitations.js} +1 -1
  12. package/dist/src/packlets/deprecated/invitations.js.map +1 -0
  13. package/dist/src/packlets/{services/impl → deprecated}/profile.d.ts +5 -5
  14. package/dist/src/packlets/deprecated/profile.d.ts.map +1 -0
  15. package/dist/src/packlets/{services/impl → deprecated}/profile.js +10 -10
  16. package/dist/src/packlets/deprecated/profile.js.map +1 -0
  17. package/dist/src/packlets/deprecated/space.d.ts +23 -0
  18. package/dist/src/packlets/deprecated/space.d.ts.map +1 -0
  19. package/dist/src/packlets/deprecated/space.js +206 -0
  20. package/dist/src/packlets/deprecated/space.js.map +1 -0
  21. package/dist/src/packlets/{services/impl → deprecated}/system.d.ts +2 -2
  22. package/dist/src/packlets/deprecated/system.d.ts.map +1 -0
  23. package/dist/src/packlets/{services/impl → deprecated}/system.js +3 -3
  24. package/dist/src/packlets/deprecated/system.js.map +1 -0
  25. package/dist/src/packlets/deprecated/tracing.d.ts +12 -0
  26. package/dist/src/packlets/deprecated/tracing.d.ts.map +1 -0
  27. package/dist/src/packlets/{services/impl → deprecated}/tracing.js +3 -3
  28. package/dist/src/packlets/deprecated/tracing.js.map +1 -0
  29. package/dist/src/packlets/{services/impl → devtools}/devtools.d.ts +11 -7
  30. package/dist/src/packlets/devtools/devtools.d.ts.map +1 -0
  31. package/dist/src/packlets/devtools/devtools.js +86 -0
  32. package/dist/src/packlets/devtools/devtools.js.map +1 -0
  33. package/dist/src/packlets/devtools/feeds.d.ts.map +1 -1
  34. package/dist/src/packlets/devtools/feeds.js +28 -26
  35. package/dist/src/packlets/devtools/feeds.js.map +1 -1
  36. package/dist/src/packlets/devtools/index.d.ts +1 -1
  37. package/dist/src/packlets/devtools/index.d.ts.map +1 -1
  38. package/dist/src/packlets/devtools/index.js +1 -1
  39. package/dist/src/packlets/devtools/index.js.map +1 -1
  40. package/dist/src/packlets/devtools/spaces.d.ts +2 -2
  41. package/dist/src/packlets/devtools/spaces.d.ts.map +1 -1
  42. package/dist/src/packlets/devtools/spaces.js +13 -13
  43. package/dist/src/packlets/devtools/spaces.js.map +1 -1
  44. package/dist/src/packlets/identity/devices-service-impl.d.ts +10 -0
  45. package/dist/src/packlets/identity/devices-service-impl.d.ts.map +1 -0
  46. package/dist/src/packlets/identity/devices-service-impl.js +47 -0
  47. package/dist/src/packlets/identity/devices-service-impl.js.map +1 -0
  48. package/dist/src/packlets/identity/identity-manager.test.js +7 -11
  49. package/dist/src/packlets/identity/identity-manager.test.js.map +1 -1
  50. package/dist/src/packlets/identity/identity.d.ts +2 -0
  51. package/dist/src/packlets/identity/identity.d.ts.map +1 -1
  52. package/dist/src/packlets/identity/identity.js +4 -1
  53. package/dist/src/packlets/identity/identity.js.map +1 -1
  54. package/dist/src/packlets/identity/identity.test.js +2 -3
  55. package/dist/src/packlets/identity/identity.test.js.map +1 -1
  56. package/dist/src/packlets/invitations/encoder.d.ts +9 -0
  57. package/dist/src/packlets/invitations/encoder.d.ts.map +1 -0
  58. package/dist/src/packlets/invitations/encoder.js +27 -0
  59. package/dist/src/packlets/invitations/encoder.js.map +1 -0
  60. package/dist/src/packlets/invitations/encoder.test.d.ts +2 -0
  61. package/dist/src/packlets/invitations/encoder.test.d.ts.map +1 -0
  62. package/dist/src/packlets/invitations/encoder.test.js +19 -0
  63. package/dist/src/packlets/invitations/encoder.test.js.map +1 -0
  64. package/dist/src/packlets/invitations/halo-invitations.d.ts +3 -3
  65. package/dist/src/packlets/invitations/halo-invitations.d.ts.map +1 -1
  66. package/dist/src/packlets/invitations/halo-invitations.js +14 -10
  67. package/dist/src/packlets/invitations/halo-invitations.js.map +1 -1
  68. package/dist/src/packlets/invitations/halo-invitations.test.d.ts +2 -0
  69. package/dist/src/packlets/invitations/halo-invitations.test.d.ts.map +1 -0
  70. package/dist/src/packlets/{services/testing/halo.test.js → invitations/halo-invitations.test.js} +6 -6
  71. package/dist/src/packlets/invitations/halo-invitations.test.js.map +1 -0
  72. package/dist/src/packlets/invitations/index.d.ts +6 -3
  73. package/dist/src/packlets/invitations/index.d.ts.map +1 -1
  74. package/dist/src/packlets/invitations/index.js +6 -3
  75. package/dist/src/packlets/invitations/index.js.map +1 -1
  76. package/dist/src/packlets/invitations/invitations-proxy.d.ts +14 -0
  77. package/dist/src/packlets/invitations/invitations-proxy.d.ts.map +1 -0
  78. package/dist/src/packlets/invitations/invitations-proxy.js +126 -0
  79. package/dist/src/packlets/invitations/invitations-proxy.js.map +1 -0
  80. package/dist/src/packlets/invitations/invitations.d.ts +90 -0
  81. package/dist/src/packlets/invitations/invitations.d.ts.map +1 -0
  82. package/dist/src/packlets/invitations/invitations.js +55 -0
  83. package/dist/src/packlets/invitations/invitations.js.map +1 -0
  84. package/dist/src/packlets/invitations/space-invitations-handler.d.ts +24 -0
  85. package/dist/src/packlets/invitations/space-invitations-handler.d.ts.map +1 -0
  86. package/dist/src/packlets/invitations/space-invitations-handler.js +232 -0
  87. package/dist/src/packlets/invitations/space-invitations-handler.js.map +1 -0
  88. package/dist/src/packlets/invitations/space-invitations-handler.test.d.ts +2 -0
  89. package/dist/src/packlets/invitations/space-invitations-handler.test.d.ts.map +1 -0
  90. package/dist/src/packlets/invitations/space-invitations-handler.test.js +131 -0
  91. package/dist/src/packlets/invitations/space-invitations-handler.test.js.map +1 -0
  92. package/dist/src/packlets/invitations/space-invitations-proxy.d.ts +11 -0
  93. package/dist/src/packlets/invitations/space-invitations-proxy.d.ts.map +1 -0
  94. package/dist/src/packlets/invitations/space-invitations-proxy.js +17 -0
  95. package/dist/src/packlets/invitations/space-invitations-proxy.js.map +1 -0
  96. package/dist/src/packlets/invitations/space-invitations-service.d.ts +22 -0
  97. package/dist/src/packlets/invitations/space-invitations-service.d.ts.map +1 -0
  98. package/dist/src/packlets/invitations/space-invitations-service.js +189 -0
  99. package/dist/src/packlets/invitations/space-invitations-service.js.map +1 -0
  100. package/dist/src/packlets/invitations/space-invitations-service.test.d.ts +2 -0
  101. package/dist/src/packlets/invitations/space-invitations-service.test.d.ts.map +1 -0
  102. package/dist/src/packlets/invitations/space-invitations-service.test.js +100 -0
  103. package/dist/src/packlets/invitations/space-invitations-service.test.js.map +1 -0
  104. package/dist/src/packlets/services/index.d.ts +3 -2
  105. package/dist/src/packlets/services/index.d.ts.map +1 -1
  106. package/dist/src/packlets/services/index.js +3 -2
  107. package/dist/src/packlets/services/index.js.map +1 -1
  108. package/dist/src/packlets/services/service-context.d.ts +4 -7
  109. package/dist/src/packlets/services/service-context.d.ts.map +1 -1
  110. package/dist/src/packlets/services/service-context.js +9 -25
  111. package/dist/src/packlets/services/service-context.js.map +1 -1
  112. package/dist/src/packlets/services/service-definitions.d.ts +30 -0
  113. package/dist/src/packlets/services/service-definitions.d.ts.map +1 -0
  114. package/dist/src/packlets/services/{services.js → service-definitions.js} +9 -5
  115. package/dist/src/packlets/services/service-definitions.js.map +1 -0
  116. package/dist/src/packlets/services/service-host.d.ts +9 -12
  117. package/dist/src/packlets/services/service-host.d.ts.map +1 -1
  118. package/dist/src/packlets/services/service-host.js +55 -54
  119. package/dist/src/packlets/services/service-host.js.map +1 -1
  120. package/dist/src/packlets/services/service-host.test.js +7 -17
  121. package/dist/src/packlets/services/service-host.test.js.map +1 -1
  122. package/dist/src/packlets/services/service-proxy.d.ts +17 -0
  123. package/dist/src/packlets/services/service-proxy.d.ts.map +1 -0
  124. package/dist/src/packlets/services/service-proxy.js +48 -0
  125. package/dist/src/packlets/services/service-proxy.js.map +1 -0
  126. package/dist/src/packlets/services/service-registry.d.ts +12 -0
  127. package/dist/src/packlets/services/service-registry.d.ts.map +1 -0
  128. package/dist/src/packlets/services/service-registry.js +24 -0
  129. package/dist/src/packlets/services/service-registry.js.map +1 -0
  130. package/dist/src/packlets/services/service-registry.test.d.ts +2 -0
  131. package/dist/src/packlets/services/service-registry.test.d.ts.map +1 -0
  132. package/dist/src/packlets/services/service-registry.test.js +75 -0
  133. package/dist/src/packlets/services/service-registry.test.js.map +1 -0
  134. package/dist/src/packlets/services/signer.d.ts +0 -3
  135. package/dist/src/packlets/services/signer.d.ts.map +1 -1
  136. package/dist/src/packlets/spaces/index.d.ts +2 -0
  137. package/dist/src/packlets/spaces/index.d.ts.map +1 -0
  138. package/dist/src/packlets/spaces/index.js +21 -0
  139. package/dist/src/packlets/spaces/index.js.map +1 -0
  140. package/dist/src/packlets/spaces/spaces-service.d.ts +11 -0
  141. package/dist/src/packlets/spaces/spaces-service.d.ts.map +1 -0
  142. package/dist/src/packlets/spaces/spaces-service.js +22 -0
  143. package/dist/src/packlets/spaces/spaces-service.js.map +1 -0
  144. package/dist/src/packlets/storage/storage.js +1 -1
  145. package/dist/src/packlets/storage/storage.js.map +1 -1
  146. package/dist/src/packlets/testing/index.d.ts +2 -0
  147. package/dist/src/packlets/testing/index.d.ts.map +1 -0
  148. package/dist/src/packlets/testing/index.js +21 -0
  149. package/dist/src/packlets/testing/index.js.map +1 -0
  150. package/dist/src/packlets/testing/test-builder.d.ts +14 -0
  151. package/dist/src/packlets/testing/test-builder.d.ts.map +1 -0
  152. package/dist/src/packlets/testing/test-builder.js +65 -0
  153. package/dist/src/packlets/testing/test-builder.js.map +1 -0
  154. package/dist/src/packlets/vault/iframe-runtime.d.ts +19 -0
  155. package/dist/src/packlets/vault/iframe-runtime.d.ts.map +1 -0
  156. package/dist/src/packlets/vault/iframe-runtime.js +54 -0
  157. package/dist/src/packlets/vault/iframe-runtime.js.map +1 -0
  158. package/dist/src/packlets/vault/index.d.ts +4 -0
  159. package/dist/src/packlets/vault/index.d.ts.map +1 -0
  160. package/dist/src/packlets/vault/index.js +23 -0
  161. package/dist/src/packlets/vault/index.js.map +1 -0
  162. package/dist/src/packlets/vault/services.d.ts +13 -0
  163. package/dist/src/packlets/vault/services.d.ts.map +1 -0
  164. package/dist/src/packlets/vault/services.js +15 -0
  165. package/dist/src/packlets/vault/services.js.map +1 -0
  166. package/dist/src/packlets/vault/worker-runtime.d.ts +32 -0
  167. package/dist/src/packlets/vault/worker-runtime.d.ts.map +1 -0
  168. package/dist/src/packlets/vault/worker-runtime.js +94 -0
  169. package/dist/src/packlets/vault/worker-runtime.js.map +1 -0
  170. package/dist/src/packlets/vault/worker-session.d.ts +29 -0
  171. package/dist/src/packlets/vault/worker-session.d.ts.map +1 -0
  172. package/dist/src/packlets/vault/worker-session.js +84 -0
  173. package/dist/src/packlets/vault/worker-session.js.map +1 -0
  174. package/package.json +26 -26
  175. package/src/index.ts +5 -2
  176. package/src/packlets/{services/impl → deprecated}/index.ts +1 -4
  177. package/src/packlets/{invitations/common.ts → deprecated/invitations.ts} +18 -3
  178. package/src/packlets/{services/impl → deprecated}/profile.ts +13 -13
  179. package/src/packlets/deprecated/space.ts +245 -0
  180. package/src/packlets/{services/impl → deprecated}/system.ts +2 -2
  181. package/src/packlets/{services/impl → deprecated}/tracing.ts +2 -2
  182. package/src/packlets/{services/impl → devtools}/devtools.ts +33 -34
  183. package/src/packlets/devtools/feeds.ts +31 -27
  184. package/src/packlets/devtools/index.ts +1 -1
  185. package/src/packlets/devtools/spaces.ts +19 -18
  186. package/src/packlets/identity/devices-service-impl.ts +54 -0
  187. package/src/packlets/identity/identity-manager.test.ts +7 -8
  188. package/src/packlets/identity/identity.test.ts +2 -3
  189. package/src/packlets/identity/identity.ts +5 -1
  190. package/src/packlets/invitations/encoder.test.ts +22 -0
  191. package/src/packlets/invitations/encoder.ts +26 -0
  192. package/src/packlets/{services/testing/halo.test.ts → invitations/halo-invitations.test.ts} +5 -5
  193. package/src/packlets/invitations/halo-invitations.ts +12 -10
  194. package/src/packlets/invitations/index.ts +6 -3
  195. package/src/packlets/invitations/invitations-proxy.ts +157 -0
  196. package/src/packlets/invitations/invitations.ts +149 -0
  197. package/src/packlets/invitations/space-invitations-handler.test.ts +154 -0
  198. package/src/packlets/invitations/space-invitations-handler.ts +266 -0
  199. package/src/packlets/invitations/space-invitations-proxy.ts +16 -0
  200. package/src/packlets/invitations/space-invitations-service.test.ts +129 -0
  201. package/src/packlets/invitations/space-invitations-service.ts +196 -0
  202. package/src/packlets/services/index.ts +3 -2
  203. package/src/packlets/services/service-context.ts +9 -31
  204. package/src/packlets/services/service-definitions.ts +54 -0
  205. package/src/packlets/services/service-host.test.ts +12 -24
  206. package/src/packlets/services/service-host.ts +64 -64
  207. package/src/packlets/services/service-proxy.ts +54 -0
  208. package/src/packlets/services/service-registry.test.ts +95 -0
  209. package/src/packlets/services/service-registry.ts +24 -0
  210. package/src/packlets/services/signer.ts +1 -3
  211. package/src/packlets/spaces/index.ts +5 -0
  212. package/src/packlets/spaces/spaces-service.ts +28 -0
  213. package/src/packlets/storage/storage.ts +1 -1
  214. package/src/packlets/testing/index.ts +5 -0
  215. package/src/packlets/testing/test-builder.ts +79 -0
  216. package/src/packlets/vault/iframe-runtime.ts +68 -0
  217. package/src/packlets/vault/index.ts +7 -0
  218. package/src/packlets/vault/services.ts +26 -0
  219. package/src/packlets/vault/worker-runtime.ts +111 -0
  220. package/src/packlets/vault/worker-session.ts +113 -0
  221. package/dist/src/packlets/devtools/devtools-host-events.d.ts +0 -5
  222. package/dist/src/packlets/devtools/devtools-host-events.d.ts.map +0 -1
  223. package/dist/src/packlets/devtools/devtools-host-events.js +0 -14
  224. package/dist/src/packlets/devtools/devtools-host-events.js.map +0 -1
  225. package/dist/src/packlets/invitations/common.d.ts.map +0 -1
  226. package/dist/src/packlets/invitations/common.js.map +0 -1
  227. package/dist/src/packlets/invitations/invitation-wrapper.d.ts +0 -36
  228. package/dist/src/packlets/invitations/invitation-wrapper.d.ts.map +0 -1
  229. package/dist/src/packlets/invitations/invitation-wrapper.js +0 -104
  230. package/dist/src/packlets/invitations/invitation-wrapper.js.map +0 -1
  231. package/dist/src/packlets/invitations/space-invitations.d.ts +0 -25
  232. package/dist/src/packlets/invitations/space-invitations.d.ts.map +0 -1
  233. package/dist/src/packlets/invitations/space-invitations.js +0 -136
  234. package/dist/src/packlets/invitations/space-invitations.js.map +0 -1
  235. package/dist/src/packlets/services/impl/devtools.d.ts.map +0 -1
  236. package/dist/src/packlets/services/impl/devtools.js +0 -77
  237. package/dist/src/packlets/services/impl/devtools.js.map +0 -1
  238. package/dist/src/packlets/services/impl/halo.d.ts +0 -20
  239. package/dist/src/packlets/services/impl/halo.d.ts.map +0 -1
  240. package/dist/src/packlets/services/impl/halo.js +0 -93
  241. package/dist/src/packlets/services/impl/halo.js.map +0 -1
  242. package/dist/src/packlets/services/impl/index.d.ts +0 -6
  243. package/dist/src/packlets/services/impl/index.d.ts.map +0 -1
  244. package/dist/src/packlets/services/impl/index.js.map +0 -1
  245. package/dist/src/packlets/services/impl/party.d.ts +0 -25
  246. package/dist/src/packlets/services/impl/party.d.ts.map +0 -1
  247. package/dist/src/packlets/services/impl/party.js +0 -265
  248. package/dist/src/packlets/services/impl/party.js.map +0 -1
  249. package/dist/src/packlets/services/impl/profile.d.ts.map +0 -1
  250. package/dist/src/packlets/services/impl/profile.js.map +0 -1
  251. package/dist/src/packlets/services/impl/system.d.ts.map +0 -1
  252. package/dist/src/packlets/services/impl/system.js.map +0 -1
  253. package/dist/src/packlets/services/impl/tracing.d.ts +0 -12
  254. package/dist/src/packlets/services/impl/tracing.d.ts.map +0 -1
  255. package/dist/src/packlets/services/impl/tracing.js.map +0 -1
  256. package/dist/src/packlets/services/service-factory.d.ts +0 -15
  257. package/dist/src/packlets/services/service-factory.d.ts.map +0 -1
  258. package/dist/src/packlets/services/service-factory.js +0 -25
  259. package/dist/src/packlets/services/service-factory.js.map +0 -1
  260. package/dist/src/packlets/services/services.d.ts +0 -19
  261. package/dist/src/packlets/services/services.d.ts.map +0 -1
  262. package/dist/src/packlets/services/services.js.map +0 -1
  263. package/dist/src/packlets/services/testing/halo.test.d.ts +0 -2
  264. package/dist/src/packlets/services/testing/halo.test.d.ts.map +0 -1
  265. package/dist/src/packlets/services/testing/halo.test.js.map +0 -1
  266. package/dist/src/packlets/services/testing/spaces.test.d.ts +0 -2
  267. package/dist/src/packlets/services/testing/spaces.test.d.ts.map +0 -1
  268. package/dist/src/packlets/services/testing/spaces.test.js +0 -68
  269. package/dist/src/packlets/services/testing/spaces.test.js.map +0 -1
  270. package/dist/src/packlets/services/testing/testing.d.ts +0 -8
  271. package/dist/src/packlets/services/testing/testing.d.ts.map +0 -1
  272. package/dist/src/packlets/services/testing/testing.js +0 -23
  273. package/dist/src/packlets/services/testing/testing.js.map +0 -1
  274. package/src/packlets/devtools/devtools-host-events.ts +0 -8
  275. package/src/packlets/invitations/invitation-wrapper.ts +0 -140
  276. package/src/packlets/invitations/space-invitations.ts +0 -159
  277. package/src/packlets/services/impl/halo.ts +0 -107
  278. package/src/packlets/services/impl/party.ts +0 -305
  279. package/src/packlets/services/service-factory.ts +0 -35
  280. package/src/packlets/services/services.ts +0 -39
  281. package/src/packlets/services/testing/spaces.test.ts +0 -87
  282. package/src/packlets/services/testing/testing.ts +0 -28
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.syncItems = exports.createIdentity = exports.createPeers = exports.createServiceContext = exports.createServiceHost = void 0;
7
+ const chai_1 = require("chai");
8
+ const messaging_1 = require("@dxos/messaging");
9
+ const network_manager_1 = require("@dxos/network-manager");
10
+ const random_access_storage_1 = require("@dxos/random-access-storage");
11
+ const services_1 = require("../services");
12
+ //
13
+ // TODO(burdon): Replace with test builder.
14
+ //
15
+ const createServiceHost = (config, signalManagerContext) => {
16
+ const networkManager = new network_manager_1.NetworkManager({
17
+ signalManager: new messaging_1.MemorySignalManager(signalManagerContext),
18
+ transportFactory: network_manager_1.MemoryTransportFactory
19
+ });
20
+ return new services_1.ClientServicesHost({
21
+ config,
22
+ networkManager
23
+ });
24
+ };
25
+ exports.createServiceHost = createServiceHost;
26
+ const createServiceContext = ({ signalContext = new messaging_1.MemorySignalManagerContext(), storage = (0, random_access_storage_1.createStorage)({ type: random_access_storage_1.StorageType.RAM }) } = {}) => {
27
+ const networkManager = new network_manager_1.NetworkManager({
28
+ signalManager: new messaging_1.MemorySignalManager(signalContext),
29
+ transportFactory: network_manager_1.MemoryTransportFactory
30
+ });
31
+ const modelFactory = (0, services_1.createDefaultModelFactory)();
32
+ return new services_1.ServiceContext(storage, networkManager, modelFactory);
33
+ };
34
+ exports.createServiceContext = createServiceContext;
35
+ const createPeers = async (numPeers) => {
36
+ const signalContext = new messaging_1.MemorySignalManagerContext();
37
+ return await Promise.all(Array.from(Array(numPeers)).map(async () => {
38
+ const peer = (0, exports.createServiceContext)({ signalContext });
39
+ await peer.open();
40
+ return peer;
41
+ }));
42
+ };
43
+ exports.createPeers = createPeers;
44
+ const createIdentity = async (peer) => {
45
+ await peer.createIdentity();
46
+ return peer;
47
+ };
48
+ exports.createIdentity = createIdentity;
49
+ // TODO(burdon): Create builder and make configurable.
50
+ const syncItems = async (space1, space2) => {
51
+ {
52
+ // Check item replicated from 1 => 2.
53
+ const item1 = await space1.database.createItem({ type: 'type-1' });
54
+ const item2 = await space2.database.waitForItem({ type: 'type-1' });
55
+ (0, chai_1.expect)(item1.id).to.eq(item2.id);
56
+ }
57
+ {
58
+ // Check item replicated from 2 => 1.
59
+ const item1 = await space2.database.createItem({ type: 'type-2' });
60
+ const item2 = await space1.database.waitForItem({ type: 'type-2' });
61
+ (0, chai_1.expect)(item1.id).to.eq(item2.id);
62
+ }
63
+ };
64
+ exports.syncItems = syncItems;
65
+ //# sourceMappingURL=test-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-builder.js","sourceRoot":"","sources":["../../../../src/packlets/testing/test-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { PortMuxer } from '@dxos/rpc-tunnel';
2
+ export declare type IframeRuntimeParams = {
3
+ portMuxer: PortMuxer;
4
+ };
5
+ /**
6
+ * Manages the client connection to the shared worker.
7
+ */
8
+ export declare class IFrameRuntime {
9
+ private readonly _systemPort;
10
+ private readonly _windowAppPort;
11
+ private readonly _workerAppPort;
12
+ private readonly _systemRpc;
13
+ private readonly _transportService;
14
+ constructor({ portMuxer }: IframeRuntimeParams);
15
+ start(): void;
16
+ open(origin: string): Promise<void>;
17
+ close(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=iframe-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframe-runtime.d.ts","sourceRoot":"","sources":["../../../../src/packlets/vault/iframe-runtime.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,oBAAY,mBAAmB,GAAG;IAChC,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;gBAEtD,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAwB9C,KAAK;IASC,IAAI,CAAC,MAAM,EAAE,MAAM;IAKnB,KAAK;CAIZ"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IFrameRuntime = void 0;
7
+ const network_manager_1 = require("@dxos/network-manager");
8
+ const rpc_1 = require("@dxos/rpc");
9
+ const services_1 = require("./services");
10
+ /**
11
+ * Manages the client connection to the shared worker.
12
+ */
13
+ class IFrameRuntime {
14
+ constructor({ portMuxer }) {
15
+ this._transportService = new network_manager_1.WebRTCTransportService();
16
+ this._systemPort = portMuxer.createWorkerPort({ channel: 'dxos:system' });
17
+ this._workerAppPort = portMuxer.createWorkerPort({ channel: 'dxos:app' });
18
+ this._windowAppPort = portMuxer.createIFramePort({
19
+ channel: 'dxos:app',
20
+ onOrigin: (origin) => this.open(origin)
21
+ });
22
+ this._systemRpc = (0, rpc_1.createProtoRpcPeer)({
23
+ requested: services_1.workerServiceBundle,
24
+ exposed: services_1.iframeServiceBundle,
25
+ handlers: {
26
+ BridgeService: this._transportService,
27
+ IframeService: {
28
+ async heartbeat() {
29
+ // Ok.
30
+ }
31
+ }
32
+ },
33
+ port: this._systemPort,
34
+ timeout: 200
35
+ });
36
+ }
37
+ start() {
38
+ this._workerAppPort.subscribe((msg) => this._windowAppPort.send(msg));
39
+ this._windowAppPort.subscribe((msg) => this._workerAppPort.send(msg));
40
+ window.addEventListener('beforeunload', () => {
41
+ this.close().catch((err) => console.error(err));
42
+ });
43
+ }
44
+ async open(origin) {
45
+ await this._systemRpc.open();
46
+ await this._systemRpc.rpc.WorkerService.start({ origin });
47
+ }
48
+ async close() {
49
+ await this._systemRpc.rpc.WorkerService.stop();
50
+ await this._systemRpc.close();
51
+ }
52
+ }
53
+ exports.IFrameRuntime = IFrameRuntime;
54
+ //# sourceMappingURL=iframe-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframe-runtime.js","sourceRoot":"","sources":["../../../../src/packlets/vault/iframe-runtime.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,2DAA+D;AAE/D,mCAAsE;AAGtE,yCAA2F;AAM3F;;GAEG;AACH,MAAa,aAAa;IAOxB,YAAY,EAAE,SAAS,EAAuB;QAF7B,sBAAiB,GAAG,IAAI,wCAAsB,EAAE,CAAC;QAGhE,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;YAC/C,OAAO,EAAE,UAAU;YACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAA,wBAAkB,EAAC;YACnC,SAAS,EAAE,8BAAmB;YAC9B,OAAO,EAAE,8BAAmB;YAC5B,QAAQ,EAAE;gBACR,aAAa,EAAE,IAAI,CAAC,iBAAkC;gBACtD,aAAa,EAAE;oBACb,KAAK,CAAC,SAAS;wBACb,MAAM;oBACR,CAAC;iBACF;aACF;YACD,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,OAAO,EAAE,GAAG;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtE,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,GAAG,EAAE;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACF;AAjDD,sCAiDC"}
@@ -0,0 +1,4 @@
1
+ export * from './iframe-runtime';
2
+ export * from './worker-runtime';
3
+ export * from './worker-session';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/packlets/vault/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,23 @@
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("./iframe-runtime"), exports);
21
+ __exportStar(require("./worker-runtime"), exports);
22
+ __exportStar(require("./worker-session"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/packlets/vault/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,mDAAiC;AACjC,mDAAiC;AACjC,mDAAiC"}
@@ -0,0 +1,13 @@
1
+ import type { IframeService, WorkerService } from '@dxos/protocols/proto/dxos/iframe';
2
+ import type { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';
3
+ import { ServiceBundle } from '@dxos/rpc';
4
+ export declare type IframeServiceBundle = {
5
+ IframeService: IframeService;
6
+ BridgeService: BridgeService;
7
+ };
8
+ export declare const iframeServiceBundle: ServiceBundle<IframeServiceBundle>;
9
+ export declare type WorkerServiceBundle = {
10
+ WorkerService: WorkerService;
11
+ };
12
+ export declare const workerServiceBundle: ServiceBundle<WorkerServiceBundle>;
13
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../../src/packlets/vault/services.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,oBAAY,mBAAmB,GAAG;IAChC,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,mBAAmB,CAGlE,CAAC;AAEF,oBAAY,mBAAmB,GAAG;IAChC,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,mBAAmB,CAElE,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.workerServiceBundle = exports.iframeServiceBundle = void 0;
7
+ const protocols_1 = require("@dxos/protocols");
8
+ exports.iframeServiceBundle = {
9
+ IframeService: protocols_1.schema.getService('dxos.iframe.IframeService'),
10
+ BridgeService: protocols_1.schema.getService('dxos.mesh.bridge.BridgeService')
11
+ };
12
+ exports.workerServiceBundle = {
13
+ WorkerService: protocols_1.schema.getService('dxos.iframe.WorkerService')
14
+ };
15
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../../src/packlets/vault/services.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,+CAAyC;AAU5B,QAAA,mBAAmB,GAAuC;IACrE,aAAa,EAAE,kBAAM,CAAC,UAAU,CAAC,2BAA2B,CAAC;IAC7D,aAAa,EAAE,kBAAM,CAAC,UAAU,CAAC,gCAAgC,CAAC;CACnE,CAAC;AAMW,QAAA,mBAAmB,GAAuC;IACrE,aAAa,EAAE,kBAAM,CAAC,UAAU,CAAC,2BAA2B,CAAC;CAC9D,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { Config } from '@dxos/config';
2
+ import { PortMuxer } from '@dxos/rpc-tunnel';
3
+ import { MaybePromise } from '@dxos/util';
4
+ export declare type CreateSessionParams = {
5
+ portMuxer: PortMuxer;
6
+ };
7
+ /**
8
+ * Runtime for the shared worker.
9
+ * Manages connections from proxies (in tabs).
10
+ * Tabs make requests to the `ClientServicesHost`, and provide a WebRTC gateway.
11
+ */
12
+ export declare class WorkerRuntime {
13
+ private readonly _configProvider;
14
+ private readonly _transportFactory;
15
+ private readonly _ready;
16
+ private readonly sessions;
17
+ private _sessionForNetworking?;
18
+ private _clientServices;
19
+ private _config;
20
+ constructor(_configProvider: () => MaybePromise<Config>);
21
+ start(): Promise<void>;
22
+ stop(): Promise<void>;
23
+ /**
24
+ * Create a new session.
25
+ */
26
+ createSession({ portMuxer }: CreateSessionParams): Promise<void>;
27
+ /**
28
+ * Selects one of the existing session fro WebRTC networking.
29
+ */
30
+ private _reconnectWebrtc;
31
+ }
32
+ //# sourceMappingURL=worker-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-runtime.d.ts","sourceRoot":"","sources":["../../../../src/packlets/vault/worker-runtime.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1C,oBAAY,mBAAmB,GAAG;IAChC,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAUtB,OAAO,CAAC,QAAQ,CAAC,eAAe;IATlC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IACvE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,qBAAqB,CAAC,CAAgB;IAC9C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,OAAO,CAAU;gBAIN,eAAe,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC;IAGxD,KAAK;IAkBL,IAAI;IAKV;;OAEG;IACG,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAwBtD;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAmBzB"}
@@ -0,0 +1,94 @@
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.WorkerRuntime = void 0;
10
+ const node_assert_1 = __importDefault(require("node:assert"));
11
+ const async_1 = require("@dxos/async");
12
+ const messaging_1 = require("@dxos/messaging");
13
+ const network_manager_1 = require("@dxos/network-manager");
14
+ const services_1 = require("../services");
15
+ const worker_session_1 = require("./worker-session");
16
+ /**
17
+ * Runtime for the shared worker.
18
+ * Manages connections from proxies (in tabs).
19
+ * Tabs make requests to the `ClientServicesHost`, and provide a WebRTC gateway.
20
+ */
21
+ class WorkerRuntime {
22
+ // prettier-ignore
23
+ constructor(_configProvider) {
24
+ this._configProvider = _configProvider;
25
+ this._transportFactory = new network_manager_1.WebRTCTransportProxyFactory();
26
+ this._ready = new async_1.Trigger();
27
+ this.sessions = new Set();
28
+ }
29
+ async start() {
30
+ this._config = await this._configProvider();
31
+ const signalServer = this._config.get('runtime.services.signal.server');
32
+ // TODO(wittjosiah): Networking shouldn't be required.
33
+ (0, node_assert_1.default)(signalServer);
34
+ this._clientServices = new services_1.ClientServicesHost({
35
+ config: this._config,
36
+ networkManager: new network_manager_1.NetworkManager({
37
+ log: true,
38
+ signalManager: new messaging_1.WebsocketSignalManager([signalServer]),
39
+ transportFactory: this._transportFactory
40
+ })
41
+ });
42
+ await this._clientServices.open();
43
+ this._ready.wake();
44
+ }
45
+ async stop() {
46
+ // TODO(dmaretskyi): Terminate active sessions.
47
+ await this._clientServices.close();
48
+ }
49
+ /**
50
+ * Create a new session.
51
+ */
52
+ async createSession({ portMuxer }) {
53
+ const appPort = portMuxer.createWorkerPort({ channel: 'dxos:app' });
54
+ const systemPort = portMuxer.createWorkerPort({ channel: 'dxos:system' });
55
+ await this._ready.wait();
56
+ const session = new worker_session_1.WorkerSession({
57
+ clientServices: this._clientServices,
58
+ appPort,
59
+ systemPort
60
+ });
61
+ // When tab is closed.
62
+ session.onClose.set(async () => {
63
+ this.sessions.delete(session);
64
+ this._reconnectWebrtc();
65
+ });
66
+ await session.open();
67
+ this.sessions.add(session);
68
+ this._reconnectWebrtc();
69
+ }
70
+ /**
71
+ * Selects one of the existing session fro WebRTC networking.
72
+ */
73
+ _reconnectWebrtc() {
74
+ // Check if current session is already closed.
75
+ if (this._sessionForNetworking) {
76
+ if (!this.sessions.has(this._sessionForNetworking)) {
77
+ this._sessionForNetworking = undefined;
78
+ }
79
+ }
80
+ // Select existing session.
81
+ if (!this._sessionForNetworking) {
82
+ const selected = Array.from(this.sessions).find((session) => session.bridgeService);
83
+ if (selected) {
84
+ this._sessionForNetworking = selected;
85
+ this._transportFactory.setBridgeService(selected.bridgeService);
86
+ }
87
+ else {
88
+ this._transportFactory.setBridgeService(undefined);
89
+ }
90
+ }
91
+ }
92
+ }
93
+ exports.WorkerRuntime = WorkerRuntime;
94
+ //# sourceMappingURL=worker-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../../../../src/packlets/vault/worker-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';
2
+ import { RpcPort } from '@dxos/rpc';
3
+ import { Callback } from '@dxos/util';
4
+ import { ClientServicesHost } from '../services';
5
+ export declare type WorkerSessionParams = {
6
+ clientServices: ClientServicesHost;
7
+ systemPort: RpcPort;
8
+ appPort: RpcPort;
9
+ options?: {
10
+ heartbeatInterval: number;
11
+ };
12
+ };
13
+ /**
14
+ * Represents a tab connection within the worker.
15
+ */
16
+ export declare class WorkerSession {
17
+ private readonly _clientRpc;
18
+ private readonly _systemRpc;
19
+ private readonly _startTrigger;
20
+ private readonly _options;
21
+ private _heartbeatTimer?;
22
+ readonly onClose: Callback<() => Promise<void>>;
23
+ origin?: string;
24
+ bridgeService?: BridgeService;
25
+ constructor({ clientServices, systemPort, appPort, options }: WorkerSessionParams);
26
+ open(): Promise<void>;
27
+ close(): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=worker-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-session.d.ts","sourceRoot":"","sources":["../../../../src/packlets/vault/worker-session.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAoC,OAAO,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,oBAAY,mBAAmB,GAAG;IAChC,cAAc,EAAE,kBAAkB,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE;QACR,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8C;IACvE,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,SAAgB,OAAO,iBAAsB,QAAQ,IAAI,CAAC,EAAI;IAEvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,aAAa,CAAC;gBAEzB,EACV,cAAc,EACd,UAAU,EACV,OAAO,EACP,OAEC,EACF,EAAE,mBAAmB;IAqChB,IAAI;IAkBJ,KAAK;CAaZ"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WorkerSession = void 0;
7
+ const async_1 = require("@dxos/async");
8
+ const log_1 = require("@dxos/log");
9
+ const rpc_1 = require("@dxos/rpc");
10
+ const util_1 = require("@dxos/util");
11
+ const services_1 = require("./services");
12
+ /**
13
+ * Represents a tab connection within the worker.
14
+ */
15
+ class WorkerSession {
16
+ constructor({ clientServices, systemPort, appPort, options = {
17
+ heartbeatInterval: 1000
18
+ } }) {
19
+ this._startTrigger = new async_1.Trigger();
20
+ this.onClose = new util_1.Callback();
21
+ this._options = options;
22
+ this._clientRpc = (0, rpc_1.createProtoRpcPeer)({
23
+ exposed: clientServices.descriptors,
24
+ handlers: clientServices.services,
25
+ port: appPort
26
+ });
27
+ this._systemRpc = (0, rpc_1.createProtoRpcPeer)({
28
+ requested: services_1.iframeServiceBundle,
29
+ exposed: services_1.workerServiceBundle,
30
+ handlers: {
31
+ WorkerService: {
32
+ start: async (request) => {
33
+ this.origin = request.origin;
34
+ this._startTrigger.wake();
35
+ },
36
+ stop: async () => {
37
+ setTimeout(async () => {
38
+ try {
39
+ await this.close();
40
+ }
41
+ catch (err) {
42
+ log_1.log.catch(err, {}, { file: "packages/sdk/client-services/src/packlets/vault/worker-session.ts", line: 69 });
43
+ }
44
+ });
45
+ }
46
+ }
47
+ },
48
+ port: systemPort,
49
+ timeout: 200
50
+ });
51
+ this.bridgeService = this._systemRpc.rpc.BridgeService;
52
+ }
53
+ async open() {
54
+ await Promise.all([this._clientRpc.open(), this._systemRpc.open()]);
55
+ await this._startTrigger.wait(); // TODO(dmaretskyi): Timeout.
56
+ this._heartbeatTimer = setInterval(async () => {
57
+ try {
58
+ await this._systemRpc.rpc.IframeService.heartbeat();
59
+ }
60
+ catch (err) {
61
+ try {
62
+ await this.close();
63
+ }
64
+ catch (err) {
65
+ log_1.log.catch(err, {}, { file: "packages/sdk/client-services/src/packlets/vault/worker-session.ts", line: 94 });
66
+ }
67
+ }
68
+ }, this._options.heartbeatInterval);
69
+ }
70
+ async close() {
71
+ try {
72
+ await this.onClose.callIfSet();
73
+ }
74
+ catch (err) {
75
+ log_1.log.catch(err, {}, { file: "packages/sdk/client-services/src/packlets/vault/worker-session.ts", line: 104 });
76
+ }
77
+ if (this._heartbeatTimer !== undefined) {
78
+ clearInterval(this._heartbeatTimer);
79
+ }
80
+ await Promise.all([this._clientRpc.close(), this._systemRpc.close()]);
81
+ }
82
+ }
83
+ exports.WorkerSession = WorkerSession;
84
+ //# sourceMappingURL=worker-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-session.js","sourceRoot":"","sources":["../../../../src/packlets/vault/worker-session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/client-services",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "homepage": "https://dxos.org",
5
5
  "bugs": "https://github.com/dxos/dxos/issues",
6
6
  "license": "MIT",
@@ -15,39 +15,39 @@
15
15
  "src"
16
16
  ],
17
17
  "dependencies": {
18
- "@dxos/async": "0.1.1",
19
- "@dxos/codec-protobuf": "0.1.1",
20
- "@dxos/config": "0.1.1",
21
- "@dxos/credentials": "0.1.1",
22
- "@dxos/crypto": "0.1.1",
23
- "@dxos/debug": "0.1.1",
24
- "@dxos/echo-db": "0.1.1",
25
- "@dxos/feed-store": "0.1.1",
26
- "@dxos/keyring": "0.1.1",
27
- "@dxos/keys": "0.1.1",
28
- "@dxos/log": "0.1.1",
29
- "@dxos/messaging": "0.1.1",
30
- "@dxos/model-factory": "0.1.1",
31
- "@dxos/network-manager": "0.1.1",
32
- "@dxos/object-model": "0.1.1",
33
- "@dxos/protocol-plugin-rpc": "0.1.1",
34
- "@dxos/protocols": "0.1.1",
35
- "@dxos/random-access-storage": "0.1.1",
36
- "@dxos/rpc": "0.1.1",
37
- "@dxos/testutils": "0.1.1",
38
- "@dxos/timeframe": "0.1.1",
39
- "@dxos/util": "0.1.1",
18
+ "@dxos/async": "0.1.3",
19
+ "@dxos/codec-protobuf": "0.1.3",
20
+ "@dxos/config": "0.1.3",
21
+ "@dxos/credentials": "0.1.3",
22
+ "@dxos/crypto": "0.1.3",
23
+ "@dxos/debug": "0.1.3",
24
+ "@dxos/echo-db": "0.1.3",
25
+ "@dxos/feed-store": "0.1.3",
26
+ "@dxos/keyring": "0.1.3",
27
+ "@dxos/keys": "0.1.3",
28
+ "@dxos/log": "0.1.3",
29
+ "@dxos/messaging": "0.1.3",
30
+ "@dxos/model-factory": "0.1.3",
31
+ "@dxos/network-manager": "0.1.3",
32
+ "@dxos/object-model": "0.1.3",
33
+ "@dxos/protocol-plugin-rpc": "0.1.3",
34
+ "@dxos/protocols": "0.1.3",
35
+ "@dxos/random-access-storage": "0.1.3",
36
+ "@dxos/rpc": "0.1.3",
37
+ "@dxos/rpc-tunnel": "0.1.3",
38
+ "@dxos/text-model": "0.1.3",
39
+ "@dxos/timeframe": "0.1.3",
40
+ "@dxos/util": "0.1.3",
40
41
  "abstract-leveldown": "~7.0.0",
41
42
  "assert": "^2.0.0",
42
43
  "base-x": "~3.0.9",
43
- "json-stable-stringify": "^1.0.1",
44
44
  "jsondown": "dxos/jsondown#main",
45
45
  "level-js": "^5.0.2",
46
46
  "memdown": "^5.1.0"
47
47
  },
48
48
  "devDependencies": {
49
- "@dxos/signal": "0.1.1",
50
- "@types/json-stable-stringify": "^1.0.32",
49
+ "@dxos/signal": "0.1.3",
50
+ "@dxos/testutils": "0.1.3",
51
51
  "@types/level-js": "~4.0.1",
52
52
  "@types/memdown": "^3.0.0",
53
53
  "@types/readable-stream": "^2.3.9"
package/src/index.ts CHANGED
@@ -2,10 +2,13 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
+ export * from './errors';
6
+
7
+ export * from './packlets/deprecated';
5
8
  export * from './packlets/devtools';
6
9
  export * from './packlets/identity';
7
10
  export * from './packlets/invitations';
8
11
  export * from './packlets/services';
9
12
  export * from './packlets/storage';
10
-
11
- export * from './errors';
13
+ export * from './packlets/testing';
14
+ export * from './packlets/vault';
@@ -2,10 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- // TODO(burdon): Add data service here.
6
-
7
- export * from './halo';
8
- export * from './party';
5
+ export * from './space';
9
6
  export * from './profile';
10
7
  export * from './system';
11
8
  export * from './tracing';