@dxos/client-services 0.10.0 → 0.11.1

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 (304) hide show
  1. package/dist/lib/chunk-client-services-layer.mjs +11425 -0
  2. package/dist/lib/chunk-client-services-layer.mjs.map +1 -0
  3. package/dist/lib/chunk-decorate.mjs +9 -0
  4. package/dist/lib/index.mjs +731 -0
  5. package/dist/lib/index.mjs.map +1 -0
  6. package/dist/lib/packlets/diagnostics/browser-diagnostics-broadcast.mjs +72 -0
  7. package/dist/lib/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +1 -0
  8. package/dist/lib/packlets/diagnostics/diagnostics-broadcast.mjs +14 -0
  9. package/dist/lib/packlets/diagnostics/diagnostics-broadcast.mjs.map +1 -0
  10. package/dist/lib/packlets/locks/browser.mjs +105 -0
  11. package/dist/lib/packlets/locks/browser.mjs.map +1 -0
  12. package/dist/lib/packlets/locks/node.mjs +53 -0
  13. package/dist/lib/packlets/locks/node.mjs.map +1 -0
  14. package/dist/lib/testing.mjs +570 -0
  15. package/dist/lib/testing.mjs.map +1 -0
  16. package/dist/types/src/index.d.ts +2 -0
  17. package/dist/types/src/index.d.ts.map +1 -1
  18. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts +21 -4
  19. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts.map +1 -1
  20. package/dist/types/src/packlets/agents/edge-agent-service.d.ts +8 -7
  21. package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -1
  22. package/dist/types/src/packlets/devices/devices-service.d.ts +7 -5
  23. package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
  24. package/dist/types/src/packlets/devtools/devtools.d.ts +30 -29
  25. package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
  26. package/dist/types/src/packlets/devtools/feeds.d.ts +1 -1
  27. package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
  28. package/dist/types/src/packlets/devtools/network.d.ts +2 -1
  29. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  30. package/dist/types/src/packlets/devtools/spaces.d.ts.map +1 -1
  31. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts +2 -2
  32. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
  33. package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts.map +1 -1
  34. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts +1 -8
  35. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
  36. package/dist/types/src/packlets/identity/authenticator.d.ts +1 -1
  37. package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
  38. package/dist/types/src/packlets/identity/contacts-service.d.ts +9 -6
  39. package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
  40. package/dist/types/src/packlets/identity/identity-manager.d.ts +32 -3
  41. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  42. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +23 -4
  43. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
  44. package/dist/types/src/packlets/identity/identity-service.d.ts +15 -20
  45. package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
  46. package/dist/types/src/packlets/identity/identity.d.ts +2 -2
  47. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  48. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
  49. package/dist/types/src/packlets/invitations/invitations-handler.d.ts +17 -0
  50. package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
  51. package/dist/types/src/packlets/invitations/invitations-manager.d.ts +25 -4
  52. package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
  53. package/dist/types/src/packlets/invitations/invitations-service.d.ts +11 -11
  54. package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
  55. package/dist/types/src/packlets/logging/logging-service.d.ts +14 -12
  56. package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
  57. package/dist/types/src/packlets/metadata/index.d.ts +3 -0
  58. package/dist/types/src/packlets/metadata/index.d.ts.map +1 -0
  59. package/dist/types/src/packlets/metadata/metadata-store.d.ts +107 -0
  60. package/dist/types/src/packlets/metadata/metadata-store.d.ts.map +1 -0
  61. package/dist/types/src/packlets/metadata/metadata-store.test.d.ts +2 -0
  62. package/dist/types/src/packlets/metadata/metadata-store.test.d.ts.map +1 -0
  63. package/dist/types/src/packlets/metadata/sqlite-metadata-store.d.ts +65 -0
  64. package/dist/types/src/packlets/metadata/sqlite-metadata-store.d.ts.map +1 -0
  65. package/dist/types/src/packlets/network/network-service.d.ts +15 -14
  66. package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
  67. package/dist/types/src/packlets/pipeline/codec.d.ts +11 -0
  68. package/dist/types/src/packlets/pipeline/codec.d.ts.map +1 -0
  69. package/dist/types/src/packlets/pipeline/feeds.d.ts +7 -0
  70. package/dist/types/src/packlets/pipeline/feeds.d.ts.map +1 -0
  71. package/dist/types/src/packlets/pipeline/index.d.ts +5 -0
  72. package/dist/types/src/packlets/pipeline/index.d.ts.map +1 -0
  73. package/dist/types/src/packlets/pipeline/message-selector.d.ts +11 -0
  74. package/dist/types/src/packlets/pipeline/message-selector.d.ts.map +1 -0
  75. package/dist/types/src/packlets/pipeline/pipeline-stress.test.d.ts +2 -0
  76. package/dist/types/src/packlets/pipeline/pipeline-stress.test.d.ts.map +1 -0
  77. package/dist/types/src/packlets/pipeline/pipeline.d.ts +131 -0
  78. package/dist/types/src/packlets/pipeline/pipeline.d.ts.map +1 -0
  79. package/dist/types/src/packlets/pipeline/pipeline.test.d.ts +2 -0
  80. package/dist/types/src/packlets/pipeline/pipeline.test.d.ts.map +1 -0
  81. package/dist/types/src/packlets/pipeline/testing/index.d.ts +2 -0
  82. package/dist/types/src/packlets/pipeline/testing/index.d.ts.map +1 -0
  83. package/dist/types/src/packlets/pipeline/testing/test-feed-builder.d.ts +9 -0
  84. package/dist/types/src/packlets/pipeline/testing/test-feed-builder.d.ts.map +1 -0
  85. package/dist/types/src/packlets/pipeline/timeframe-clock.d.ts +31 -0
  86. package/dist/types/src/packlets/pipeline/timeframe-clock.d.ts.map +1 -0
  87. package/dist/types/src/packlets/services/client-services-layer.d.ts +21 -0
  88. package/dist/types/src/packlets/services/client-services-layer.d.ts.map +1 -0
  89. package/dist/types/src/packlets/services/cross-device-space-synchronizer.d.ts +28 -0
  90. package/dist/types/src/packlets/services/cross-device-space-synchronizer.d.ts.map +1 -0
  91. package/dist/types/src/packlets/services/effect-rpc.test.d.ts +2 -0
  92. package/dist/types/src/packlets/services/effect-rpc.test.d.ts.map +1 -0
  93. package/dist/types/src/packlets/services/feed-syncer.d.ts +22 -2
  94. package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -1
  95. package/dist/types/src/packlets/services/index.d.ts +2 -2
  96. package/dist/types/src/packlets/services/index.d.ts.map +1 -1
  97. package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
  98. package/dist/types/src/packlets/services/service-context.d.ts +38 -57
  99. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  100. package/dist/types/src/packlets/services/service-host.d.ts +82 -31
  101. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  102. package/dist/types/src/packlets/services/sqlite-storage.d.ts +29 -0
  103. package/dist/types/src/packlets/services/sqlite-storage.d.ts.map +1 -1
  104. package/dist/types/src/packlets/services/sqlite-storage.test.d.ts +2 -0
  105. package/dist/types/src/packlets/services/sqlite-storage.test.d.ts.map +1 -0
  106. package/dist/types/src/packlets/space/admission-discovery-extension.d.ts +30 -0
  107. package/dist/types/src/packlets/space/admission-discovery-extension.d.ts.map +1 -0
  108. package/dist/types/src/packlets/space/auth.d.ts +24 -0
  109. package/dist/types/src/packlets/space/auth.d.ts.map +1 -0
  110. package/dist/types/src/packlets/space/control-pipeline.d.ts +46 -0
  111. package/dist/types/src/packlets/space/control-pipeline.d.ts.map +1 -0
  112. package/dist/types/src/packlets/space/control-pipeline.test.d.ts +2 -0
  113. package/dist/types/src/packlets/space/control-pipeline.test.d.ts.map +1 -0
  114. package/dist/types/src/packlets/space/index.d.ts +6 -0
  115. package/dist/types/src/packlets/space/index.d.ts.map +1 -0
  116. package/dist/types/src/packlets/space/replication.browser.test.d.ts +2 -0
  117. package/dist/types/src/packlets/space/replication.browser.test.d.ts.map +1 -0
  118. package/dist/types/src/packlets/space/space-manager.browser.test.d.ts +2 -0
  119. package/dist/types/src/packlets/space/space-manager.browser.test.d.ts.map +1 -0
  120. package/dist/types/src/packlets/space/space-manager.d.ts +72 -0
  121. package/dist/types/src/packlets/space/space-manager.d.ts.map +1 -0
  122. package/dist/types/src/packlets/space/space-protocol.browser.test.d.ts +2 -0
  123. package/dist/types/src/packlets/space/space-protocol.browser.test.d.ts.map +1 -0
  124. package/dist/types/src/packlets/space/space-protocol.d.ts +99 -0
  125. package/dist/types/src/packlets/space/space-protocol.d.ts.map +1 -0
  126. package/dist/types/src/packlets/space/space-protocol.test.d.ts +2 -0
  127. package/dist/types/src/packlets/space/space-protocol.test.d.ts.map +1 -0
  128. package/dist/types/src/packlets/space/space.d.ts +65 -0
  129. package/dist/types/src/packlets/space/space.d.ts.map +1 -0
  130. package/dist/types/src/packlets/space/space.test.d.ts +2 -0
  131. package/dist/types/src/packlets/space/space.test.d.ts.map +1 -0
  132. package/dist/types/src/packlets/space/testing/change-metadata.d.ts +8 -0
  133. package/dist/types/src/packlets/space/testing/change-metadata.d.ts.map +1 -0
  134. package/dist/types/src/packlets/space/testing/index.d.ts +4 -0
  135. package/dist/types/src/packlets/space/testing/index.d.ts.map +1 -0
  136. package/dist/types/src/packlets/space/testing/test-agent-builder.d.ts +62 -0
  137. package/dist/types/src/packlets/space/testing/test-agent-builder.d.ts.map +1 -0
  138. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts +1 -1
  139. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts.map +1 -1
  140. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts.map +1 -1
  141. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +40 -7
  142. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  143. package/dist/types/src/packlets/spaces/data-space.d.ts +3 -1
  144. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  145. package/dist/types/src/packlets/spaces/genesis.d.ts +1 -1
  146. package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -1
  147. package/dist/types/src/packlets/spaces/spaces-service.d.ts +25 -23
  148. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  149. package/dist/types/src/packlets/storage/level.d.ts.map +1 -1
  150. package/dist/types/src/packlets/system/system-service.d.ts +18 -18
  151. package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
  152. package/dist/types/src/packlets/testing/invitation-utils.d.ts +1 -1
  153. package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
  154. package/dist/types/src/packlets/testing/test-builder.d.ts +7 -6
  155. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  156. package/dist/types/src/packlets/worker/worker-runtime.d.ts +41 -58
  157. package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
  158. package/dist/types/src/packlets/worker/worker-session.d.ts +21 -8
  159. package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
  160. package/dist/types/src/testing/index.d.ts +1 -0
  161. package/dist/types/src/testing/index.d.ts.map +1 -1
  162. package/dist/types/src/version.d.ts +1 -1
  163. package/dist/types/tsconfig.tsbuildinfo +1 -1
  164. package/package.json +52 -48
  165. package/src/index.ts +2 -0
  166. package/src/packlets/agents/edge-agent-manager.ts +56 -15
  167. package/src/packlets/agents/edge-agent-service.ts +25 -15
  168. package/src/packlets/devices/devices-service.test.ts +20 -19
  169. package/src/packlets/devices/devices-service.ts +17 -17
  170. package/src/packlets/devtools/devtools.ts +133 -75
  171. package/src/packlets/devtools/feeds.ts +2 -1
  172. package/src/packlets/devtools/network.ts +42 -12
  173. package/src/packlets/devtools/spaces.ts +1 -1
  174. package/src/packlets/diagnostics/diagnostics-broadcast.ts +4 -2
  175. package/src/packlets/diagnostics/diagnostics-collector.ts +5 -18
  176. package/src/packlets/diagnostics/diagnostics.ts +0 -11
  177. package/src/packlets/identity/authenticator.ts +2 -1
  178. package/src/packlets/identity/contacts-service.ts +46 -37
  179. package/src/packlets/identity/identity-manager.test.ts +3 -1
  180. package/src/packlets/identity/identity-manager.ts +73 -5
  181. package/src/packlets/identity/identity-recovery-manager.ts +56 -7
  182. package/src/packlets/identity/identity-service.test.ts +27 -18
  183. package/src/packlets/identity/identity-service.ts +114 -71
  184. package/src/packlets/identity/identity.test.ts +4 -9
  185. package/src/packlets/identity/identity.ts +1 -2
  186. package/src/packlets/invitations/edge-invitation-handler.ts +0 -1
  187. package/src/packlets/invitations/invitations-handler.ts +39 -3
  188. package/src/packlets/invitations/invitations-manager.ts +52 -4
  189. package/src/packlets/invitations/invitations-service.ts +54 -28
  190. package/src/packlets/logging/logging-service.ts +41 -29
  191. package/src/packlets/logging/logging.test.ts +28 -15
  192. package/src/packlets/metadata/index.ts +6 -0
  193. package/src/packlets/metadata/metadata-store.test.ts +49 -0
  194. package/src/packlets/metadata/metadata-store.ts +446 -0
  195. package/src/packlets/metadata/sqlite-metadata-store.ts +409 -0
  196. package/src/packlets/network/network-service.test.ts +19 -12
  197. package/src/packlets/network/network-service.ts +96 -29
  198. package/src/packlets/pipeline/codec.ts +18 -0
  199. package/src/packlets/pipeline/feeds.ts +22 -0
  200. package/src/packlets/pipeline/index.ts +8 -0
  201. package/src/packlets/pipeline/message-selector.ts +35 -0
  202. package/src/packlets/pipeline/pipeline-stress.test.ts +230 -0
  203. package/src/packlets/pipeline/pipeline.test.ts +140 -0
  204. package/src/packlets/pipeline/pipeline.ts +439 -0
  205. package/src/packlets/pipeline/testing/index.ts +5 -0
  206. package/src/packlets/pipeline/testing/test-feed-builder.ts +19 -0
  207. package/src/packlets/pipeline/timeframe-clock.ts +81 -0
  208. package/src/packlets/services/client-services-layer.ts +186 -0
  209. package/src/packlets/services/cross-device-space-synchronizer.ts +132 -0
  210. package/src/packlets/services/effect-rpc.test.ts +314 -0
  211. package/src/packlets/services/feed-syncer.ts +57 -3
  212. package/src/packlets/services/index.ts +2 -2
  213. package/src/packlets/services/platform.ts +0 -6
  214. package/src/packlets/services/service-context.ts +219 -522
  215. package/src/packlets/services/service-host.test.ts +34 -11
  216. package/src/packlets/services/service-host.ts +693 -213
  217. package/src/packlets/services/spec.md +106 -0
  218. package/src/packlets/services/sqlite-storage.test.ts +48 -0
  219. package/src/packlets/services/sqlite-storage.ts +117 -20
  220. package/src/packlets/space/admission-discovery-extension.ts +91 -0
  221. package/src/packlets/space/auth.ts +92 -0
  222. package/src/packlets/space/control-pipeline.test.ts +165 -0
  223. package/src/packlets/space/control-pipeline.ts +229 -0
  224. package/src/packlets/space/index.ts +9 -0
  225. package/src/packlets/space/replication.browser.test.ts +58 -0
  226. package/src/packlets/space/space-manager.browser.test.ts +40 -0
  227. package/src/packlets/space/space-manager.ts +224 -0
  228. package/src/packlets/space/space-protocol.browser.test.ts +129 -0
  229. package/src/packlets/space/space-protocol.test.ts +158 -0
  230. package/src/packlets/space/space-protocol.ts +308 -0
  231. package/src/packlets/space/space.test.ts +181 -0
  232. package/src/packlets/space/space.ts +196 -0
  233. package/src/packlets/space/testing/change-metadata.ts +27 -0
  234. package/src/packlets/space/testing/index.ts +7 -0
  235. package/src/packlets/space/testing/test-agent-builder.ts +252 -0
  236. package/src/packlets/space-export/serialized-space-reader.ts +3 -1
  237. package/src/packlets/space-export/serialized-space-writer.ts +53 -30
  238. package/src/packlets/space-export/space-archive.test.ts +30 -0
  239. package/src/packlets/spaces/data-space-manager.test.ts +1 -1
  240. package/src/packlets/spaces/data-space-manager.ts +148 -33
  241. package/src/packlets/spaces/data-space.ts +29 -18
  242. package/src/packlets/spaces/edge-feed-replicator.test.ts +1 -1
  243. package/src/packlets/spaces/genesis.ts +1 -1
  244. package/src/packlets/spaces/spaces-service.test.ts +35 -22
  245. package/src/packlets/spaces/spaces-service.ts +259 -180
  246. package/src/packlets/storage/level.ts +3 -1
  247. package/src/packlets/system/system-service.test.ts +31 -13
  248. package/src/packlets/system/system-service.ts +65 -37
  249. package/src/packlets/testing/invitation-utils.ts +3 -3
  250. package/src/packlets/testing/test-builder.ts +35 -20
  251. package/src/packlets/worker/worker-runtime.ts +222 -260
  252. package/src/packlets/worker/worker-session.ts +108 -91
  253. package/src/testing/index.ts +1 -0
  254. package/src/version.ts +1 -1
  255. package/dist/lib/browser/chunk-QCWEHHJW.mjs +0 -24
  256. package/dist/lib/browser/chunk-QCWEHHJW.mjs.map +0 -7
  257. package/dist/lib/browser/chunk-XJRPB3GA.mjs +0 -22
  258. package/dist/lib/browser/chunk-XJRPB3GA.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-XU5R2BMF.mjs +0 -8837
  260. package/dist/lib/browser/chunk-XU5R2BMF.mjs.map +0 -7
  261. package/dist/lib/browser/index.mjs +0 -876
  262. package/dist/lib/browser/index.mjs.map +0 -7
  263. package/dist/lib/browser/meta.json +0 -1
  264. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs +0 -88
  265. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +0 -7
  266. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs +0 -11
  267. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs.map +0 -7
  268. package/dist/lib/browser/packlets/locks/browser.mjs +0 -86
  269. package/dist/lib/browser/packlets/locks/browser.mjs.map +0 -7
  270. package/dist/lib/browser/packlets/locks/node.mjs +0 -48
  271. package/dist/lib/browser/packlets/locks/node.mjs.map +0 -7
  272. package/dist/lib/browser/testing/index.mjs +0 -436
  273. package/dist/lib/browser/testing/index.mjs.map +0 -7
  274. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs +0 -22
  275. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +0 -24
  277. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-H5YTUD35.mjs +0 -8837
  279. package/dist/lib/node-esm/chunk-H5YTUD35.mjs.map +0 -7
  280. package/dist/lib/node-esm/index.mjs +0 -876
  281. package/dist/lib/node-esm/index.mjs.map +0 -7
  282. package/dist/lib/node-esm/meta.json +0 -1
  283. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs +0 -88
  284. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +0 -7
  285. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs +0 -11
  286. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs.map +0 -7
  287. package/dist/lib/node-esm/packlets/locks/browser.mjs +0 -86
  288. package/dist/lib/node-esm/packlets/locks/browser.mjs.map +0 -7
  289. package/dist/lib/node-esm/packlets/locks/node.mjs +0 -48
  290. package/dist/lib/node-esm/packlets/locks/node.mjs.map +0 -7
  291. package/dist/lib/node-esm/testing/index.mjs +0 -436
  292. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  293. package/dist/types/src/packlets/services/client-rpc-server.d.ts +0 -24
  294. package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +0 -1
  295. package/dist/types/src/packlets/services/service-registry.d.ts +0 -15
  296. package/dist/types/src/packlets/services/service-registry.d.ts.map +0 -1
  297. package/dist/types/src/packlets/services/service-registry.test.d.ts +0 -2
  298. package/dist/types/src/packlets/services/service-registry.test.d.ts.map +0 -1
  299. package/dist/types/src/testing/setup.d.ts +0 -3
  300. package/dist/types/src/testing/setup.d.ts.map +0 -1
  301. package/src/packlets/services/client-rpc-server.ts +0 -111
  302. package/src/packlets/services/service-registry.test.ts +0 -78
  303. package/src/packlets/services/service-registry.ts +0 -36
  304. package/src/testing/setup.ts +0 -11
@@ -1,11 +0,0 @@
1
- import "@dxos/node-std/globals";
2
- import {
3
- createCollectDiagnosticsBroadcastHandler,
4
- createCollectDiagnosticsBroadcastSender
5
- } from "../../chunk-XJRPB3GA.mjs";
6
- import "../../chunk-QCWEHHJW.mjs";
7
- export {
8
- createCollectDiagnosticsBroadcastHandler,
9
- createCollectDiagnosticsBroadcastSender
10
- };
11
- //# sourceMappingURL=diagnostics-broadcast.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,86 +0,0 @@
1
- import "@dxos/node-std/globals";
2
- import "../../chunk-QCWEHHJW.mjs";
3
-
4
- // src/packlets/locks/browser.ts
5
- import { Trigger, asyncTimeout } from "@dxos/async";
6
- import { RESOURCE_LOCK_TIMEOUT } from "@dxos/client-protocol";
7
- import { log, logInfo } from "@dxos/log";
8
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/locks/browser.ts";
9
- function _ts_decorate(decorators, target, key, desc) {
10
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13
- return c > 3 && r && Object.defineProperty(target, key, r), r;
14
- }
15
- var Lock = class {
16
- _broadcastChannel = new BroadcastChannel("vault-resource-lock");
17
- _lockKey;
18
- _onAcquire;
19
- _onRelease;
20
- _releaseTrigger = new Trigger();
21
- constructor({ lockKey, onAcquire, onRelease }) {
22
- this._lockKey = lockKey;
23
- this._onAcquire = onAcquire;
24
- this._onRelease = onRelease;
25
- this._broadcastChannel.onmessage = this._onMessage.bind(this);
26
- }
27
- get lockKey() {
28
- return this._lockKey;
29
- }
30
- async acquire() {
31
- this._broadcastChannel.postMessage({
32
- message: "acquiring"
33
- });
34
- try {
35
- log("aquiring lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 39, S: this });
36
- await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);
37
- log("acquired lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 41, S: this });
38
- } catch {
39
- log("stealing lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 43, S: this });
40
- await this._requestLock(true);
41
- log("stolen lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 45, S: this });
42
- }
43
- }
44
- async release() {
45
- this._releaseTrigger.wake();
46
- }
47
- _onMessage(event) {
48
- if (event.data.message === "acquiring") {
49
- this._releaseTrigger.wake();
50
- }
51
- }
52
- async _requestLock(steal = false) {
53
- log("requesting lock...", {
54
- steal
55
- }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 57, S: this });
56
- const acquired = new Trigger();
57
- void navigator.locks.request(this._lockKey, {
58
- steal
59
- }, async () => {
60
- await this._onAcquire?.();
61
- acquired.wake();
62
- this._releaseTrigger = new Trigger();
63
- await this._releaseTrigger.wait();
64
- log("releasing lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 68, S: this });
65
- await this._onRelease?.();
66
- log("released lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 70, S: this });
67
- }).catch(async () => {
68
- await this._onRelease?.();
69
- });
70
- await acquired.wait();
71
- log("recieved lock", {
72
- steal
73
- }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 75, S: this });
74
- }
75
- };
76
- _ts_decorate([
77
- logInfo
78
- ], Lock.prototype, "lockKey", null);
79
- var isLocked = (lockPath) => {
80
- throw new Error("Not implemented");
81
- };
82
- export {
83
- Lock,
84
- isLocked
85
- };
86
- //# sourceMappingURL=browser.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/packlets/locks/browser.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Trigger, asyncTimeout } from '@dxos/async';\nimport { RESOURCE_LOCK_TIMEOUT } from '@dxos/client-protocol';\nimport { log, logInfo } from '@dxos/log';\n\nimport { type ResourceLock, type ResourceLockOptions } from './resource-lock';\n\nenum Message {\n ACQUIRING = 'acquiring',\n}\n\n// TODO(mykola): Factor out.\n// TODO(burdon): Extend to support locking for web and NodeJS (use npm lockfile). Use to lock agents.\nexport class Lock implements ResourceLock {\n private readonly _broadcastChannel = new BroadcastChannel('vault-resource-lock');\n private readonly _lockKey: string;\n private readonly _onAcquire: ResourceLockOptions['onAcquire'];\n private readonly _onRelease: ResourceLockOptions['onRelease'];\n private _releaseTrigger = new Trigger();\n\n constructor({ lockKey, onAcquire, onRelease }: ResourceLockOptions) {\n this._lockKey = lockKey;\n this._onAcquire = onAcquire;\n this._onRelease = onRelease;\n this._broadcastChannel.onmessage = this._onMessage.bind(this);\n }\n\n @logInfo\n get lockKey() {\n return this._lockKey;\n }\n\n async acquire(): Promise<void> {\n this._broadcastChannel.postMessage({\n message: Message.ACQUIRING,\n });\n\n try {\n log('aquiring lock...');\n await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);\n log('acquired lock');\n } catch {\n log('stealing lock...');\n await this._requestLock(true);\n log('stolen lock');\n }\n }\n\n async release(): Promise<void> {\n this._releaseTrigger.wake();\n }\n\n private _onMessage(event: MessageEvent<any>): void {\n if (event.data.message === Message.ACQUIRING) {\n this._releaseTrigger.wake();\n }\n }\n\n private async _requestLock(steal = false): Promise<void> {\n log('requesting lock...', { steal });\n const acquired = new Trigger();\n\n void navigator.locks\n .request(this._lockKey, { steal }, async () => {\n await this._onAcquire?.();\n acquired.wake();\n this._releaseTrigger = new Trigger();\n await this._releaseTrigger.wait();\n log('releasing lock...');\n await this._onRelease?.();\n log('released lock');\n })\n .catch(async () => {\n await this._onRelease?.();\n });\n\n await acquired.wait();\n log('recieved lock', { steal });\n }\n}\n\n// TODO(mykola): Implement.\nexport const isLocked = (lockPath: string) => {\n throw new Error('Not implemented');\n};\n"],
5
- "mappings": ";;;;AAKA,SAASA,SAAAA,oBAA6B;AACtC,SAASC,6BAAoB;AAI7B,SAAKC,KAAAA,eAAAA;;;;;;;AAVL;AAiBmBC,IAAAA,OAAAA,MAAAA;EACAC,oBAAiB,IAAA,iBAAA,qBAAA;EACjBC;EACAC;EACTC;EAER,kBAAcC,IAAO,QAAEC;cAChBL,EAAAA,SAAWI,WAAAA,UAAAA,GAAAA;AAChB,SAAKH,WAAU;AACf,SAAKC,aAAaI;AAClB,SAAKP,aAAAA;AACP,SAAA,kBAAA,YAAA,KAAA,WAAA,KAAA,IAAA;EAEA;MAEE,UAAO;AACT,WAAA,KAAA;EAEA;QACE,UAAKA;SACHQ,kBAAO,YAAA;MACT,SAAA;IAEA,CAAA;QACEC;AACA,UAAA,oBAAuB,QAACC,EAAAA,YAAgBC,YAAAA,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;AACxCF,YAAI,aAAA,KAAA,aAAA,GAAA,qBAAA;AACJ,UAAA,iBAAM,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;YACF;AACJ,UAAA,oBAAuB,QAAC,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACxBA,YAAI,KAAA,aAAA,IAAA;AACN,UAAA,eAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;IACF;EAEA;QACE,UAAKL;AACP,SAAA,gBAAA,KAAA;EAEQQ;aACFC,OAAU;QACZ,MAAKT,KAAAA,YAAgBU,aAAI;AAC3B,WAAA,gBAAA,KAAA;IACF;EAEA;QACEL,aAAI,QAAA,OAAsB;QAAEM,sBAAAA;MAAM;IAClC,GAAA,EAAA,YAAMC,YAAeC,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;AAErB,UAAKC,WAAUC,IACZC,QAAQ;SAAiBL,UAAAA,MAAAA,QAAAA,KAAAA,UAAAA;MAAS;mBAC3B;AACNC,YAAAA,KAASF,aAAI;AACb,eAAKV,KAAAA;AACL,WAAA,kBAAWA,IAAgBiB,QAAI;AAC/BZ,YAAI,KAAA,gBAAA,KAAA;AACJ,UAAA,qBAAqB,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACrBA,YAAI,KAAA,aAAA;AAELa,UAAK,iBAAC,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;aACL,YAAWnB;AACb,YAAA,KAAA,aAAA;IAEF,CAAA;AACAM,UAAI,SAAA,KAAA;QAAmBM,iBAAAA;MAAM;IAC/B,GAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;EACF;;;;AAEA,GAAA,KAAA,WAAA,WAA2B,IAAA;AAEzB,IAAM,WAAU,CAAA,aAAA;AAChB,QAAA,IAAA,MAAA,iBAAA;;",
6
- "names": ["RESOURCE_LOCK_TIMEOUT", "log", "Message", "_broadcastChannel", "_lockKey", "_onAcquire", "_onRelease", "_releaseTrigger", "lockKey", "onAcquire", "onRelease", "message", "log", "_requestLock", "RESOURCE_LOCK_TIMEOUT", "_onMessage", "event", "wake", "steal", "acquired", "Trigger", "navigator", "locks", "request", "wait", "catch"]
7
- }
@@ -1,48 +0,0 @@
1
- import "@dxos/node-std/globals";
2
- import "../../chunk-QCWEHHJW.mjs";
3
-
4
- // src/packlets/locks/node.ts
5
- import { invariant } from "@dxos/invariant";
6
- import { LockFile } from "@dxos/lock-file";
7
- import { log, logInfo } from "@dxos/log";
8
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/locks/node.ts";
9
- function _ts_decorate(decorators, target, key, desc) {
10
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13
- return c > 3 && r && Object.defineProperty(target, key, r), r;
14
- }
15
- var Lock = class {
16
- _lockPath;
17
- _onAcquire;
18
- _onRelease;
19
- _fileHandle;
20
- constructor({ lockKey: lockPath, onAcquire, onRelease }) {
21
- this._lockPath = lockPath;
22
- this._onAcquire = onAcquire;
23
- this._onRelease = onRelease;
24
- }
25
- get lockKey() {
26
- return this._lockPath;
27
- }
28
- async acquire() {
29
- log("acquiring lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 28, S: this });
30
- this._fileHandle = await LockFile.acquire(this._lockPath);
31
- await this._onAcquire?.();
32
- log("acquired lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 31, S: this });
33
- }
34
- async release() {
35
- await this._onRelease?.();
36
- invariant(this._fileHandle, "Lock is not acquired", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 35, S: this, A: ["this._fileHandle", "'Lock is not acquired'"] });
37
- await LockFile.release(this._fileHandle);
38
- }
39
- };
40
- _ts_decorate([
41
- logInfo
42
- ], Lock.prototype, "lockKey", null);
43
- var isLocked = (lockPath) => LockFile.isLocked(lockPath);
44
- export {
45
- Lock,
46
- isLocked
47
- };
48
- //# sourceMappingURL=node.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/packlets/locks/node.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type FileHandle } from 'node:fs/promises';\n\nimport { invariant } from '@dxos/invariant';\nimport { LockFile } from '@dxos/lock-file';\nimport { log, logInfo } from '@dxos/log';\n\nimport { type ResourceLock, type ResourceLockOptions } from './resource-lock';\n\n// TODO(mykola): Factor out.\nexport class Lock implements ResourceLock {\n private readonly _lockPath: string;\n private readonly _onAcquire: ResourceLockOptions['onAcquire'];\n private readonly _onRelease: ResourceLockOptions['onRelease'];\n private _fileHandle?: FileHandle;\n\n constructor({ lockKey: lockPath, onAcquire, onRelease }: ResourceLockOptions) {\n this._lockPath = lockPath;\n this._onAcquire = onAcquire;\n this._onRelease = onRelease;\n }\n\n @logInfo\n get lockKey() {\n return this._lockPath;\n }\n\n async acquire(): Promise<void> {\n log('acquiring lock...');\n this._fileHandle = await LockFile.acquire(this._lockPath);\n\n await this._onAcquire?.();\n\n log('acquired lock');\n }\n\n async release(): Promise<void> {\n await this._onRelease?.();\n invariant(this._fileHandle, 'Lock is not acquired');\n await LockFile.release(this._fileHandle);\n }\n}\n\nexport const isLocked = (lockPath: string) => LockFile.isLocked(lockPath);\n"],
5
- "mappings": ";;;;AAOA,SAASA,iBAAgB;AACzB,SAASC,gBAAY;AAIrB,SAAA,KAAA,eAA4B;AAZ5B,IAAE,eAAA;;;;;;AAMF;AAQmBC,IAAAA,OAAAA,MAAkB;EAClBC;EACAC;EACTC;EAER;cACOH,EAAAA,SAAYI,UAAAA,WAAAA,UAAAA,GAAAA;AACjB,SAAKH,YAAU;AACf,SAAKC,aAAaG;AACpB,SAAA,aAAA;EAEA;MAEE,UAAO;AACT,WAAA,KAAA;EAEA;QACEN,UAAI;AACJ,QAAI,qBAAe,QAAMD,EAAAA,YAAiB,YAAKE,GAAS,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AAExD,SAAA,cAAWC,MAAU,SAAA,QAAA,KAAA,SAAA;AAErBF,UAAI,KAAA,aAAA;AACN,QAAA,iBAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;EAEA;QACE,UAAWG;AACXI,UAAAA,KAAU,aAAKH;AACf,cAAML,KAASS,aAAaJ,wBAAW,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,oBAAA,wBAAA,EAAA,CAAA;AACzC,UAAA,SAAA,QAAA,KAAA,WAAA;EACF;;;;AAEA,GAAA,KAAO,WAAMK,WAAYJ,IAAAA;;",
6
- "names": ["LockFile", "log", "_lockPath", "_onAcquire", "_onRelease", "_fileHandle", "lockPath", "onRelease", "invariant", "release", "isLocked"]
7
- }
@@ -1,436 +0,0 @@
1
- import "@dxos/node-std/globals";
2
- import {
3
- ClientServicesHost,
4
- DataSpaceManager,
5
- InvitationsHandler,
6
- InvitationsManager,
7
- ServiceContext,
8
- SpaceInvitationProtocol,
9
- SqliteStorage
10
- } from "../chunk-XU5R2BMF.mjs";
11
- import "../chunk-XJRPB3GA.mjs";
12
- import "../chunk-QCWEHHJW.mjs";
13
-
14
- // src/packlets/testing/credential-utils.ts
15
- import { createCredential } from "@dxos/credentials";
16
- import { PublicKey } from "@dxos/keys";
17
- var createMockCredential = async ({ signer, issuer }) => createCredential({
18
- signer,
19
- issuer,
20
- subject: new PublicKey(Buffer.from("test")),
21
- assertion: {
22
- "@type": "example.testing.rpc.MessageWithAny",
23
- "payload": {
24
- "@type": "google.protobuf.Any",
25
- "value": Buffer.from("test")
26
- }
27
- }
28
- });
29
-
30
- // src/packlets/testing/invitation-utils.ts
31
- import { Trigger } from "@dxos/async";
32
- import { InvitationEncoder } from "@dxos/client-protocol";
33
- import { Context } from "@dxos/context";
34
- import { invariant } from "@dxos/invariant";
35
- import { Invitation } from "@dxos/protocols/proto/dxos/client/services";
36
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/invitation-utils.ts";
37
- var sanitizeInvitation = (invitation) => {
38
- return InvitationEncoder.decode(InvitationEncoder.encode(invitation));
39
- };
40
- var performInvitation = ({ host, guest, guestDeviceProfile, options, hooks, codeInputDelay }) => {
41
- let guestError = false;
42
- let guestConnected = false;
43
- let wereConnected = false;
44
- const hostComplete = new Trigger();
45
- const guestComplete = new Trigger();
46
- const authCode = new Trigger();
47
- void createInvitation(host, options).then((hostObservable) => {
48
- hostObservable.subscribe(async (hostInvitation) => {
49
- switch (hostInvitation.state) {
50
- case Invitation.State.CONNECTING: {
51
- if (guestConnected) {
52
- if (wereConnected) {
53
- hostComplete.wake({
54
- invitation: hostInvitation
55
- });
56
- }
57
- break;
58
- }
59
- guestConnected = true;
60
- if (hooks?.host?.onConnecting?.(hostObservable)) {
61
- break;
62
- }
63
- const guestObservable = acceptInvitation(guest, hostInvitation, guestDeviceProfile);
64
- guestObservable.subscribe(async (guestInvitation) => {
65
- switch (guestInvitation.state) {
66
- case Invitation.State.CONNECTING: {
67
- if (hooks?.guest?.onConnecting?.(guestObservable)) {
68
- break;
69
- }
70
- invariant(hostInvitation.swarmKey.equals(guestInvitation.swarmKey), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 51, S: void 0, A: ["hostInvitation.swarmKey.equals(guestInvitation.swarmKey)", ""] });
71
- break;
72
- }
73
- case Invitation.State.CONNECTED: {
74
- hooks?.guest?.onConnected?.(guestObservable);
75
- break;
76
- }
77
- case Invitation.State.READY_FOR_AUTHENTICATION: {
78
- if (hooks?.guest?.onReady?.(guestObservable)) {
79
- break;
80
- }
81
- const code = await authCode.wait();
82
- if (codeInputDelay == null) {
83
- await guestObservable.authenticate(code);
84
- } else {
85
- setTimeout(async () => {
86
- if (!guestError) {
87
- await guestObservable.authenticate(code);
88
- }
89
- }, codeInputDelay);
90
- }
91
- break;
92
- }
93
- case Invitation.State.AUTHENTICATING: {
94
- hooks?.guest?.onAuthenticating?.(guestObservable);
95
- break;
96
- }
97
- case Invitation.State.SUCCESS: {
98
- if (hooks?.guest?.onSuccess?.(guestObservable)) {
99
- break;
100
- }
101
- guestComplete.wake({
102
- invitation: guestInvitation
103
- });
104
- break;
105
- }
106
- case Invitation.State.CANCELLED: {
107
- if (hooks?.guest?.onCancelled?.(guestObservable)) {
108
- break;
109
- }
110
- guestComplete.wake({
111
- invitation: guestInvitation
112
- });
113
- break;
114
- }
115
- case Invitation.State.TIMEOUT: {
116
- if (hooks?.guest?.onTimeout?.(guestObservable)) {
117
- return;
118
- }
119
- guestComplete.wake({
120
- invitation: guestInvitation
121
- });
122
- }
123
- }
124
- }, (error) => {
125
- guestError = true;
126
- if (hooks?.guest?.onError?.(guestObservable)) {
127
- return;
128
- }
129
- guestComplete.wake({
130
- error
131
- });
132
- });
133
- break;
134
- }
135
- case Invitation.State.CONNECTED: {
136
- wereConnected = true;
137
- hooks?.host?.onConnected?.(hostObservable);
138
- break;
139
- }
140
- case Invitation.State.READY_FOR_AUTHENTICATION: {
141
- if (hooks?.host?.onReady?.(hostObservable)) {
142
- break;
143
- }
144
- if (hostInvitation.authCode) {
145
- authCode.wake(hostInvitation.authCode);
146
- }
147
- break;
148
- }
149
- case Invitation.State.AUTHENTICATING: {
150
- hooks?.host?.onAuthenticating?.(hostObservable);
151
- break;
152
- }
153
- case Invitation.State.SUCCESS: {
154
- if (hooks?.host?.onSuccess?.(hostObservable)) {
155
- break;
156
- }
157
- hostComplete.wake({
158
- invitation: hostInvitation
159
- });
160
- break;
161
- }
162
- case Invitation.State.CANCELLED: {
163
- if (hooks?.host?.onCancelled?.(hostObservable)) {
164
- break;
165
- }
166
- hostComplete.wake({
167
- invitation: hostInvitation
168
- });
169
- break;
170
- }
171
- case Invitation.State.TIMEOUT: {
172
- if (hooks?.host?.onTimeout?.(hostObservable)) {
173
- break;
174
- }
175
- hostComplete.wake({
176
- invitation: hostInvitation
177
- });
178
- break;
179
- }
180
- }
181
- }, (error) => {
182
- if (hooks?.host?.onError?.(hostObservable)) {
183
- return;
184
- }
185
- hostComplete.wake({
186
- error
187
- });
188
- });
189
- });
190
- return [
191
- hostComplete.wait(),
192
- guestComplete.wait()
193
- ];
194
- };
195
- var createInvitation = async (host, options) => {
196
- options ??= {
197
- authMethod: Invitation.AuthMethod.NONE,
198
- ...options ?? {}
199
- };
200
- if (host instanceof ServiceContext) {
201
- return host.invitationsManager.createInvitation(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 194 }), {
202
- kind: Invitation.Kind.SPACE,
203
- ...options
204
- });
205
- }
206
- return host.share(options);
207
- };
208
- var acceptInvitation = (guest, invitation, guestDeviceProfile) => {
209
- invitation = sanitizeInvitation(invitation);
210
- if (guest instanceof ServiceContext) {
211
- return guest.invitationsManager.acceptInvitation(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 204 }), {
212
- invitation,
213
- deviceProfile: guestDeviceProfile
214
- });
215
- }
216
- return guest.join(invitation, guestDeviceProfile);
217
- };
218
-
219
- // src/packlets/testing/test-builder.ts
220
- import * as Reactivity from "@effect/experimental/Reactivity";
221
- import * as Effect from "effect/Effect";
222
- import * as Layer from "effect/Layer";
223
- import * as ManagedRuntime from "effect/ManagedRuntime";
224
- import { Context as Context2 } from "@dxos/context";
225
- import { CredentialGenerator, createCredentialSignerWithChain } from "@dxos/credentials";
226
- import { failUndefined } from "@dxos/debug";
227
- import { EchoHost, MeshEchoReplicator, SpaceManager, valueEncoding } from "@dxos/echo-host";
228
- import { SqliteMetadataStore } from "@dxos/echo-host";
229
- import { RuntimeProvider } from "@dxos/effect";
230
- import { FeedFactory, FeedStore } from "@dxos/feed-store";
231
- import { SqliteKeyring } from "@dxos/keyring";
232
- import { MemorySignalManager, MemorySignalManagerContext } from "@dxos/messaging";
233
- import { MemoryTransportFactory, SwarmNetworkManager } from "@dxos/network-manager";
234
- import { Invitation as Invitation2 } from "@dxos/protocols/proto/dxos/client/services";
235
- import { StorageType } from "@dxos/random-access-storage";
236
- import { layerMemory as sqliteLayerMemory } from "@dxos/sql-sqlite/platform";
237
- import * as SqlTransaction from "@dxos/sql-sqlite/SqlTransaction";
238
- import { SqliteBlobStore } from "@dxos/teleport-extension-object-sync";
239
- var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/test-builder.ts";
240
- var createServiceHost = (config, signalManagerContext) => {
241
- return new ClientServicesHost({
242
- config,
243
- signalManager: new MemorySignalManager(signalManagerContext),
244
- transportFactory: MemoryTransportFactory,
245
- runtime: ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect
246
- });
247
- };
248
- var createServiceContext = async ({ signalManagerFactory = async () => {
249
- const signalContext = new MemorySignalManagerContext();
250
- return new MemorySignalManager(signalContext);
251
- }, runtimeProps } = {}) => {
252
- const signalManager = await signalManagerFactory();
253
- const networkManager = new SwarmNetworkManager({
254
- signalManager,
255
- transportFactory: MemoryTransportFactory
256
- });
257
- const runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect;
258
- return new ServiceContext(networkManager, signalManager, void 0, void 0, runtime, {
259
- invitationConnectionDefaultProps: {
260
- teleport: {
261
- controlHeartbeatInterval: 200
262
- }
263
- },
264
- ...runtimeProps
265
- });
266
- };
267
- var createPeers = async (numPeers, signalManagerFactory) => {
268
- if (!signalManagerFactory) {
269
- const signalContext = new MemorySignalManagerContext();
270
- signalManagerFactory = async () => new MemorySignalManager(signalContext);
271
- }
272
- return await Promise.all(Array.from(Array(numPeers)).map(async () => {
273
- const peer = await createServiceContext({
274
- signalManagerFactory
275
- });
276
- await peer.open(new Context2(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 66 }));
277
- return peer;
278
- }));
279
- };
280
- var createIdentity = async (peer) => {
281
- await peer.createIdentity();
282
- return peer;
283
- };
284
- var TestBuilder = class {
285
- signalContext = new MemorySignalManagerContext();
286
- _ctx = new Context2(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 76 });
287
- createPeer(peerOptions) {
288
- const peer = new TestPeer(this.signalContext, peerOptions);
289
- this._ctx.onDispose(async () => peer.destroy());
290
- return peer;
291
- }
292
- async destroy() {
293
- await this._ctx.dispose();
294
- }
295
- };
296
- var TestPeer = class {
297
- _signalContext;
298
- _opts;
299
- _props = {};
300
- _runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
301
- _feedStorage = new SqliteStorage({
302
- runtime: this._runtime.runtimeEffect
303
- });
304
- constructor(_signalContext, _opts = {
305
- dataStore: StorageType.RAM
306
- }) {
307
- this._signalContext = _signalContext;
308
- this._opts = _opts;
309
- }
310
- get props() {
311
- return this._props;
312
- }
313
- get keyring() {
314
- return this._props.keyring ??= new SqliteKeyring({
315
- runtime: this._runtime.runtimeEffect
316
- });
317
- }
318
- get feedStore() {
319
- return this._props.feedStore ??= new FeedStore({
320
- factory: new FeedFactory({
321
- root: this._feedStorage.createDirectory("feeds"),
322
- signer: this.keyring,
323
- hypercore: {
324
- valueEncoding
325
- }
326
- })
327
- });
328
- }
329
- get metadataStore() {
330
- return this._props.metadataStore ??= new SqliteMetadataStore({
331
- runtime: this._runtime.runtimeEffect
332
- });
333
- }
334
- get blobStore() {
335
- return this._props.blobStore ??= new SqliteBlobStore({
336
- runtime: this._runtime.runtimeEffect
337
- });
338
- }
339
- get networkManager() {
340
- return this._props.networkManager ??= new SwarmNetworkManager({
341
- signalManager: new MemorySignalManager(this._signalContext),
342
- transportFactory: MemoryTransportFactory
343
- });
344
- }
345
- get spaceManager() {
346
- return this._props.spaceManager ??= new SpaceManager({
347
- feedStore: this.feedStore,
348
- networkManager: this.networkManager,
349
- metadataStore: this.metadataStore,
350
- blobStore: this.blobStore
351
- });
352
- }
353
- get identity() {
354
- return this._props.signingContext ?? failUndefined();
355
- }
356
- get echoHost() {
357
- return this._props.echoHost ??= new EchoHost({
358
- runtime: this._runtime.runtimeEffect
359
- });
360
- }
361
- get meshEchoReplicator() {
362
- return this._props.meshEchoReplicator ??= new MeshEchoReplicator();
363
- }
364
- get dataSpaceManager() {
365
- return this._props.dataSpaceManager ??= new DataSpaceManager({
366
- spaceManager: this.spaceManager,
367
- metadataStore: this.metadataStore,
368
- keyring: this.keyring,
369
- signingContext: this.identity,
370
- feedStore: this.feedStore,
371
- echoHost: this.echoHost,
372
- invitationsManager: this.invitationsManager,
373
- edgeConnection: void 0,
374
- meshReplicator: this.meshEchoReplicator,
375
- echoEdgeReplicator: void 0,
376
- runtimeProps: this._opts.dataSpaceProps
377
- });
378
- }
379
- get invitationsManager() {
380
- return this._props.invitationsManager ??= new InvitationsManager(new InvitationsHandler(this.networkManager), (invitation) => {
381
- if (invitation.kind === Invitation2.Kind.SPACE) {
382
- return new SpaceInvitationProtocol(this.dataSpaceManager, this.identity, this.keyring, invitation.spaceKey);
383
- } else {
384
- throw new Error("not implemented");
385
- }
386
- }, this.metadataStore);
387
- }
388
- async createIdentity() {
389
- await this.migrate();
390
- this._props.signingContext ??= await createSigningContext(this.keyring);
391
- this.networkManager.setPeerInfo({
392
- identityKey: this._props.signingContext.identityKey.toHex(),
393
- peerKey: this._props.signingContext.deviceKey.toHex()
394
- });
395
- }
396
- async migrate() {
397
- await RuntimeProvider.runPromise(this._runtime.runtimeEffect)(Effect.all([
398
- this.metadataStore.migrate,
399
- this.blobStore.migrate,
400
- this.keyring.migrate,
401
- this._feedStorage.migrate
402
- ]));
403
- }
404
- async destroy() {
405
- await this._runtime.dispose();
406
- }
407
- };
408
- var createSigningContext = async (keyring) => {
409
- const identityKey = await keyring.createKey();
410
- const deviceKey = await keyring.createKey();
411
- return {
412
- identityKey,
413
- deviceKey,
414
- credentialSigner: createCredentialSignerWithChain(keyring, {
415
- credential: await new CredentialGenerator(keyring, identityKey, deviceKey).createDeviceAuthorization(deviceKey)
416
- }, deviceKey),
417
- recordCredential: async () => {
418
- },
419
- getProfile: () => void 0
420
- };
421
- };
422
- export {
423
- TestBuilder,
424
- TestPeer,
425
- acceptInvitation,
426
- createIdentity,
427
- createInvitation,
428
- createMockCredential,
429
- createPeers,
430
- createServiceContext,
431
- createServiceHost,
432
- createSigningContext,
433
- performInvitation,
434
- sanitizeInvitation
435
- };
436
- //# sourceMappingURL=index.mjs.map