@dxos/client-services 0.8.4-main.a4bbb77 → 0.8.4-main.abd8ff62ef

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 (229) hide show
  1. package/dist/lib/browser/{chunk-FZDVFED2.mjs → chunk-KW4WMU5R.mjs} +2698 -4599
  2. package/dist/lib/browser/chunk-KW4WMU5R.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-QCWEHHJW.mjs +24 -0
  4. package/dist/lib/browser/chunk-QCWEHHJW.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-XJRPB3GA.mjs +22 -0
  6. package/dist/lib/browser/chunk-XJRPB3GA.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +490 -228
  8. package/dist/lib/browser/index.mjs.map +4 -4
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
  11. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
  12. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
  13. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
  14. package/dist/lib/browser/packlets/locks/browser.mjs +86 -0
  15. package/dist/lib/browser/packlets/locks/browser.mjs.map +7 -0
  16. package/dist/lib/browser/packlets/locks/node.mjs +48 -0
  17. package/dist/lib/browser/packlets/locks/node.mjs.map +7 -0
  18. package/dist/lib/browser/testing/index.mjs +60 -90
  19. package/dist/lib/browser/testing/index.mjs.map +3 -3
  20. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs +22 -0
  21. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs.map +7 -0
  22. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +24 -0
  23. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +7 -0
  24. package/dist/lib/node-esm/{chunk-JDTIU3EP.mjs → chunk-NDMKP2CH.mjs} +2621 -4391
  25. package/dist/lib/node-esm/chunk-NDMKP2CH.mjs.map +7 -0
  26. package/dist/lib/node-esm/index.mjs +490 -228
  27. package/dist/lib/node-esm/index.mjs.map +4 -4
  28. package/dist/lib/node-esm/meta.json +1 -1
  29. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
  30. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
  31. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
  32. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
  33. package/dist/lib/node-esm/packlets/locks/browser.mjs +86 -0
  34. package/dist/lib/node-esm/packlets/locks/browser.mjs.map +7 -0
  35. package/dist/lib/node-esm/packlets/locks/node.mjs +48 -0
  36. package/dist/lib/node-esm/packlets/locks/node.mjs.map +7 -0
  37. package/dist/lib/node-esm/testing/index.mjs +60 -90
  38. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  39. package/dist/types/src/index.d.ts +1 -0
  40. package/dist/types/src/index.d.ts.map +1 -1
  41. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts +3 -2
  42. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts.map +1 -1
  43. package/dist/types/src/packlets/agents/edge-agent-service.d.ts +2 -1
  44. package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -1
  45. package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
  46. package/dist/types/src/packlets/devtools/devtools.d.ts +2 -2
  47. package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
  48. package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
  49. package/dist/types/src/packlets/devtools/keys.d.ts.map +1 -1
  50. package/dist/types/src/packlets/devtools/metadata.d.ts.map +1 -1
  51. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  52. package/dist/types/src/packlets/devtools/spaces.d.ts.map +1 -1
  53. package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts.map +1 -1
  54. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
  55. package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts.map +1 -1
  56. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts +2 -3
  57. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
  58. package/dist/types/src/packlets/diagnostics/index.d.ts +1 -1
  59. package/dist/types/src/packlets/diagnostics/index.d.ts.map +1 -1
  60. package/dist/types/src/packlets/identity/authenticator.d.ts +2 -2
  61. package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
  62. package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
  63. package/dist/types/src/packlets/identity/identity-manager.d.ts +6 -6
  64. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  65. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +8 -7
  66. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
  67. package/dist/types/src/packlets/identity/identity-service.d.ts +6 -10
  68. package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
  69. package/dist/types/src/packlets/identity/identity.d.ts +8 -11
  70. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  71. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts +6 -5
  72. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts.map +1 -1
  73. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts +1 -1
  74. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
  75. package/dist/types/src/packlets/invitations/invitation-guest-extenstion.d.ts.map +1 -1
  76. package/dist/types/src/packlets/invitations/invitation-host-extension.d.ts.map +1 -1
  77. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts +7 -4
  78. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts.map +1 -1
  79. package/dist/types/src/packlets/invitations/invitation-state.d.ts.map +1 -1
  80. package/dist/types/src/packlets/invitations/invitation-topology.d.ts.map +1 -1
  81. package/dist/types/src/packlets/invitations/invitations-handler.d.ts +4 -4
  82. package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
  83. package/dist/types/src/packlets/invitations/invitations-manager.d.ts +3 -3
  84. package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
  85. package/dist/types/src/packlets/invitations/invitations-service.d.ts +3 -3
  86. package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
  87. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +4 -3
  88. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
  89. package/dist/types/src/packlets/invitations/utils.d.ts.map +1 -1
  90. package/dist/types/src/packlets/locks/browser.d.ts.map +1 -1
  91. package/dist/types/src/packlets/locks/index.d.ts +1 -1
  92. package/dist/types/src/packlets/locks/index.d.ts.map +1 -1
  93. package/dist/types/src/packlets/locks/node.d.ts.map +1 -1
  94. package/dist/types/src/packlets/logging/logging-service.d.ts +4 -0
  95. package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
  96. package/dist/types/src/packlets/network/network-service.d.ts +5 -4
  97. package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
  98. package/dist/types/src/packlets/services/client-rpc-server.d.ts +5 -5
  99. package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +1 -1
  100. package/dist/types/src/packlets/services/feed-syncer.d.ts +59 -0
  101. package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -0
  102. package/dist/types/src/packlets/services/feed-syncer.test.d.ts +2 -0
  103. package/dist/types/src/packlets/services/feed-syncer.test.d.ts.map +1 -0
  104. package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
  105. package/dist/types/src/packlets/services/service-context.d.ts +13 -9
  106. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  107. package/dist/types/src/packlets/services/service-host.d.ts +20 -7
  108. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  109. package/dist/types/src/packlets/services/service-registry.d.ts.map +1 -1
  110. package/dist/types/src/packlets/services/util.d.ts.map +1 -1
  111. package/dist/types/src/packlets/space-export/archive-format.d.ts +9 -0
  112. package/dist/types/src/packlets/space-export/archive-format.d.ts.map +1 -0
  113. package/dist/types/src/packlets/space-export/index.d.ts +4 -1
  114. package/dist/types/src/packlets/space-export/index.d.ts.map +1 -1
  115. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts +23 -0
  116. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts.map +1 -0
  117. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts +36 -0
  118. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts.map +1 -0
  119. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts +9 -1
  120. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts.map +1 -1
  121. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts +7 -1
  122. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -1
  123. package/dist/types/src/packlets/space-export/space-archive.test.d.ts +2 -0
  124. package/dist/types/src/packlets/space-export/space-archive.test.d.ts.map +1 -0
  125. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts.map +1 -1
  126. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +28 -17
  127. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  128. package/dist/types/src/packlets/spaces/data-space.d.ts +26 -9
  129. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  130. package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts +2 -2
  131. package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts.map +1 -1
  132. package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -1
  133. package/dist/types/src/packlets/spaces/genesis.d.ts +2 -1
  134. package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -1
  135. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +6 -9
  136. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
  137. package/dist/types/src/packlets/spaces/spaces-service.d.ts +10 -7
  138. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  139. package/dist/types/src/packlets/storage/level.d.ts.map +1 -1
  140. package/dist/types/src/packlets/storage/profile-archive.d.ts.map +1 -1
  141. package/dist/types/src/packlets/storage/storage.d.ts.map +1 -1
  142. package/dist/types/src/packlets/storage/util.d.ts.map +1 -1
  143. package/dist/types/src/packlets/system/system-service.d.ts +1 -1
  144. package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
  145. package/dist/types/src/packlets/testing/credential-utils.d.ts.map +1 -1
  146. package/dist/types/src/packlets/testing/invitation-utils.d.ts +6 -3
  147. package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
  148. package/dist/types/src/packlets/testing/test-builder.d.ts +6 -5
  149. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  150. package/dist/types/src/packlets/worker/worker-runtime.d.ts +41 -4
  151. package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
  152. package/dist/types/src/packlets/worker/worker-session.d.ts +2 -4
  153. package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
  154. package/dist/types/src/testing/setup.d.ts.map +1 -1
  155. package/dist/types/src/version.d.ts +1 -1
  156. package/dist/types/src/version.d.ts.map +1 -1
  157. package/dist/types/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +70 -55
  159. package/src/index.ts +1 -0
  160. package/src/packlets/agents/edge-agent-manager.ts +8 -5
  161. package/src/packlets/agents/edge-agent-service.ts +15 -3
  162. package/src/packlets/devices/devices-service.test.ts +0 -1
  163. package/src/packlets/devices/devices-service.ts +1 -1
  164. package/src/packlets/devtools/devtools.ts +2 -3
  165. package/src/packlets/diagnostics/diagnostics.ts +1 -2
  166. package/src/packlets/diagnostics/index.ts +1 -1
  167. package/src/packlets/identity/authenticator.ts +2 -2
  168. package/src/packlets/identity/contacts-service.ts +0 -1
  169. package/src/packlets/identity/identity-manager.test.ts +5 -5
  170. package/src/packlets/identity/identity-manager.ts +23 -22
  171. package/src/packlets/identity/identity-recovery-manager.ts +22 -18
  172. package/src/packlets/identity/identity-service.test.ts +6 -27
  173. package/src/packlets/identity/identity-service.ts +13 -81
  174. package/src/packlets/identity/identity.test.ts +6 -6
  175. package/src/packlets/identity/identity.ts +11 -34
  176. package/src/packlets/invitations/device-invitation-protocol.ts +8 -7
  177. package/src/packlets/invitations/edge-invitation-handler.ts +9 -5
  178. package/src/packlets/invitations/invitation-guest-extenstion.ts +6 -4
  179. package/src/packlets/invitations/invitation-host-extension.ts +13 -14
  180. package/src/packlets/invitations/invitation-protocol.ts +7 -4
  181. package/src/packlets/invitations/invitation-state.ts +1 -15
  182. package/src/packlets/invitations/invitations-handler.test.ts +4 -5
  183. package/src/packlets/invitations/invitations-handler.ts +74 -22
  184. package/src/packlets/invitations/invitations-manager.ts +40 -15
  185. package/src/packlets/invitations/invitations-service.ts +9 -9
  186. package/src/packlets/invitations/space-invitation-protocol.test.ts +17 -16
  187. package/src/packlets/invitations/space-invitation-protocol.ts +11 -16
  188. package/src/packlets/locks/index.ts +1 -1
  189. package/src/packlets/logging/logging-service.ts +20 -16
  190. package/src/packlets/network/network-service.test.ts +0 -1
  191. package/src/packlets/network/network-service.ts +10 -8
  192. package/src/packlets/services/client-rpc-server.ts +19 -16
  193. package/src/packlets/services/feed-syncer.test.ts +340 -0
  194. package/src/packlets/services/feed-syncer.ts +337 -0
  195. package/src/packlets/services/platform.ts +7 -1
  196. package/src/packlets/services/service-context.test.ts +3 -2
  197. package/src/packlets/services/service-context.ts +138 -56
  198. package/src/packlets/services/service-host.test.ts +8 -8
  199. package/src/packlets/services/service-host.ts +70 -40
  200. package/src/packlets/services/service-registry.test.ts +0 -1
  201. package/src/packlets/space-export/archive-format.ts +42 -0
  202. package/src/packlets/space-export/index.ts +4 -1
  203. package/src/packlets/space-export/serialized-space-reader.ts +111 -0
  204. package/src/packlets/space-export/serialized-space-writer.ts +253 -0
  205. package/src/packlets/space-export/space-archive-reader.ts +64 -3
  206. package/src/packlets/space-export/space-archive-writer.ts +41 -3
  207. package/src/packlets/space-export/space-archive.test.ts +461 -0
  208. package/src/packlets/spaces/data-space-manager.test.ts +79 -13
  209. package/src/packlets/spaces/data-space-manager.ts +115 -115
  210. package/src/packlets/spaces/data-space.ts +58 -33
  211. package/src/packlets/spaces/edge-feed-replicator.test.ts +2 -2
  212. package/src/packlets/spaces/edge-feed-replicator.ts +12 -10
  213. package/src/packlets/spaces/epoch-migrations.ts +5 -5
  214. package/src/packlets/spaces/genesis.ts +6 -1
  215. package/src/packlets/spaces/notarization-plugin.test.ts +2 -2
  216. package/src/packlets/spaces/notarization-plugin.ts +10 -9
  217. package/src/packlets/spaces/spaces-service.test.ts +18 -11
  218. package/src/packlets/spaces/spaces-service.ts +123 -24
  219. package/src/packlets/storage/storage.ts +4 -4
  220. package/src/packlets/testing/invitation-utils.ts +10 -6
  221. package/src/packlets/testing/test-builder.ts +36 -10
  222. package/src/packlets/worker/worker-runtime.ts +188 -17
  223. package/src/packlets/worker/worker-session.ts +12 -18
  224. package/src/version.ts +1 -1
  225. package/dist/lib/browser/chunk-FZDVFED2.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-JDTIU3EP.mjs.map +0 -7
  227. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts +0 -19
  228. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts.map +0 -1
  229. package/src/packlets/identity/default-space-state-machine.ts +0 -44
@@ -0,0 +1,88 @@
1
+ import "@dxos/node-std/globals";
2
+ import "../../chunk-QCWEHHJW.mjs";
3
+
4
+ // src/packlets/diagnostics/browser-diagnostics-broadcast.ts
5
+ import { Trigger } from "@dxos/async";
6
+ import { log } from "@dxos/log";
7
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/diagnostics/browser-diagnostics-broadcast.ts";
8
+ var CHANNEL_NAME = "dxos.diagnostics.broadcast";
9
+ var createCollectDiagnosticsBroadcastSender = () => {
10
+ return {
11
+ broadcastDiagnosticsRequest: async () => {
12
+ let expectedResponse = "probe-ack";
13
+ let channel;
14
+ try {
15
+ const trigger = new Trigger();
16
+ channel = new BroadcastChannel(CHANNEL_NAME);
17
+ channel.onmessage = (msg) => {
18
+ if (expectedResponse === msg.data.type) {
19
+ trigger.wake(msg.data);
20
+ }
21
+ };
22
+ channel.postMessage({
23
+ type: "probe"
24
+ });
25
+ await trigger.wait({
26
+ timeout: 200
27
+ });
28
+ expectedResponse = "receive-diagnostics";
29
+ trigger.reset();
30
+ channel.postMessage({
31
+ type: "request-diagnostics"
32
+ });
33
+ const diagnostics = await trigger.wait({
34
+ timeout: 5e3
35
+ });
36
+ return diagnostics.payload;
37
+ } catch (e) {
38
+ const errorDescription = e instanceof Error ? e.message : JSON.stringify(e);
39
+ return {
40
+ expectedResponse,
41
+ errorDescription
42
+ };
43
+ } finally {
44
+ safeClose(channel);
45
+ }
46
+ }
47
+ };
48
+ };
49
+ var createCollectDiagnosticsBroadcastHandler = (systemService) => {
50
+ let channel;
51
+ return {
52
+ start: () => {
53
+ channel = new BroadcastChannel(CHANNEL_NAME);
54
+ channel.onmessage = async (message) => {
55
+ try {
56
+ if (message.data.type === "probe") {
57
+ channel?.postMessage({
58
+ type: "probe-ack"
59
+ });
60
+ } else if (message.data.type === "request-diagnostics") {
61
+ const diagnostics = await systemService.getDiagnostics({});
62
+ channel?.postMessage({
63
+ type: "receive-diagnostics",
64
+ payload: diagnostics
65
+ });
66
+ }
67
+ } catch (error) {
68
+ log.catch(error, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 73, S: void 0 });
69
+ }
70
+ };
71
+ },
72
+ stop: () => {
73
+ safeClose(channel);
74
+ channel = void 0;
75
+ }
76
+ };
77
+ };
78
+ var safeClose = (channel) => {
79
+ try {
80
+ channel?.close();
81
+ } catch (e) {
82
+ }
83
+ };
84
+ export {
85
+ createCollectDiagnosticsBroadcastHandler,
86
+ createCollectDiagnosticsBroadcastSender
87
+ };
88
+ //# sourceMappingURL=browser-diagnostics-broadcast.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/packlets/diagnostics/browser-diagnostics-broadcast.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { type SystemService } from '@dxos/protocols/proto/dxos/client/services';\n\nimport {\n type CollectDiagnosticsBroadcastHandler,\n type CollectDiagnosticsBroadcastSender,\n} from './diagnostics-collector';\n\nconst CHANNEL_NAME = 'dxos.diagnostics.broadcast';\n\nenum MessageType {\n PROBE = 'probe',\n PROBE_ACK = 'probe-ack',\n REQUEST_DIAGNOSTICS = 'request-diagnostics',\n RECEIVE_DIAGNOSTICS = 'receive-diagnostics',\n}\n\ninterface Message {\n type: MessageType;\n payload?: any;\n}\n\nexport const createCollectDiagnosticsBroadcastSender = (): CollectDiagnosticsBroadcastSender => {\n return {\n broadcastDiagnosticsRequest: async () => {\n let expectedResponse = MessageType.PROBE_ACK;\n let channel: BroadcastChannel | undefined;\n try {\n const trigger = new Trigger<Message>();\n channel = new BroadcastChannel(CHANNEL_NAME);\n channel.onmessage = (msg) => {\n if (expectedResponse === msg.data.type) {\n trigger.wake(msg.data);\n }\n };\n channel.postMessage({ type: MessageType.PROBE });\n await trigger.wait({ timeout: 200 });\n expectedResponse = MessageType.RECEIVE_DIAGNOSTICS;\n trigger.reset();\n channel.postMessage({ type: MessageType.REQUEST_DIAGNOSTICS });\n const diagnostics = await trigger.wait({ timeout: 5000 });\n return diagnostics.payload;\n } catch (e) {\n const errorDescription = e instanceof Error ? e.message : JSON.stringify(e);\n return { expectedResponse, errorDescription };\n } finally {\n safeClose(channel);\n }\n },\n };\n};\n\nexport const createCollectDiagnosticsBroadcastHandler = (\n systemService: SystemService,\n): CollectDiagnosticsBroadcastHandler => {\n let channel: BroadcastChannel | undefined;\n return {\n start: () => {\n channel = new BroadcastChannel(CHANNEL_NAME);\n channel.onmessage = async (message) => {\n try {\n if (message.data.type === MessageType.PROBE) {\n channel?.postMessage({ type: MessageType.PROBE_ACK });\n } else if (message.data.type === MessageType.REQUEST_DIAGNOSTICS) {\n const diagnostics = await systemService.getDiagnostics({});\n channel?.postMessage({\n type: MessageType.RECEIVE_DIAGNOSTICS,\n payload: diagnostics,\n });\n }\n } catch (error) {\n log.catch(error);\n }\n };\n },\n stop: () => {\n safeClose(channel);\n channel = undefined;\n },\n };\n};\n\nconst safeClose = (channel?: BroadcastChannel) => {\n try {\n channel?.close();\n } catch (e) {\n // ignored\n }\n};\n"],
5
+ "mappings": ";;;;AAIA,SAASA,eAAe;AACxB,SAASC,WAAW;AAQpB,IAAA,eAAMC;;IAgBFC,0CAA6B,MAAA;;iCAEvBC,YAAAA;AACJ,UAAI,mBAAA;UACF;UACAA;AACAA,cAAAA,UAAQC,IAAY,QAACC;kBACfC,IAAAA,iBAAqBD,YAAa;gBACpCE,YAAY,CAACF,QAAIG;AACnB,cAAA,qBAAA,IAAA,KAAA,MAAA;AACF,oBAAA,KAAA,IAAA,IAAA;UACAL;;AAA8C,gBAAA,YAAA;UAC9C,MAAMI;;AAA4B,cAAA,QAAA,KAAA;UAClCD,SAAAA;QACAC,CAAAA;AACAJ,2BAAmB;gBAAO,MAAA;AAAkC,gBAAA,YAAA;UAC5D,MAAMM;;AAAiD,cAAA,cAAA,MAAA,QAAA,KAAA;UACvD,SAAOA;QACP,CAAA;AACA,eAAMC,YAAAA;eACN,GAAO;cAAEJ,mBAAAA,aAAAA,QAAAA,EAAAA,UAAAA,KAAAA,UAAAA,CAAAA;eAAkBI;UAAiB;UAC9C;QACEC;MACF,UAAA;AACF,kBAAA,OAAA;MACF;IACA;EAEF;;AAIE,IAAO,2CAAA,CAAA,kBAAA;MACLC;;WAEET,MAAAA;gBACM,IAAA,iBAAA,YAAA;cACF,YAAYK,OAAKK,YAAI;;sBACQ,KAAA,SAAA,SAAA;AAAwB,qBAAA,YAAA;cAC9C,MAAIC;YACT,CAAA;qBACAX,QAASY,KAAAA,SAAY,uBAAA;kBACnBF,cAAI,MAAA,cAAA,eAAA,CAAA,CAAA;qBACJG,YAASP;cACX,MAAA;cACF,SAAA;YACA,CAAOQ;UACPC;QACF,SAAA,OAAA;AACF,cAAA,MAAA,OAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,OAAA,CAAA;QACF;MACAC;;UAEEhB,MAAAA;AACF,gBAAA,OAAA;AACF,gBAAA;IACA;EAEF;;gBAEaiB,CAAAA,YAAAA;AACX,MAAE;AACA,aAAU,MAAA;EACZ,SAAA,GAAA;;;",
6
+ "names": ["Trigger", "log", "CHANNEL_NAME", "broadcastDiagnosticsRequest", "channel", "onmessage", "msg", "expectedResponse", "trigger", "data", "diagnostics", "errorDescription", "safeClose", "start", "type", "message", "postMessage", "payload", "error", "log", "stop", "close"]
7
+ }
@@ -0,0 +1,11 @@
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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,86 @@
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
@@ -0,0 +1,7 @@
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,IAAE,eAAA;;;;;;AAIF;AAamBC,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
+ }
@@ -0,0 +1,48 @@
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
@@ -0,0 +1,7 @@
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
+ }
@@ -6,7 +6,9 @@ import {
6
6
  InvitationsManager,
7
7
  ServiceContext,
8
8
  SpaceInvitationProtocol
9
- } from "../chunk-FZDVFED2.mjs";
9
+ } from "../chunk-KW4WMU5R.mjs";
10
+ import "../chunk-XJRPB3GA.mjs";
11
+ import "../chunk-QCWEHHJW.mjs";
10
12
 
11
13
  // src/packlets/testing/credential-utils.ts
12
14
  import { createCredential } from "@dxos/credentials";
@@ -27,13 +29,14 @@ var createMockCredential = async ({ signer, issuer }) => createCredential({
27
29
  // src/packlets/testing/invitation-utils.ts
28
30
  import { Trigger } from "@dxos/async";
29
31
  import { InvitationEncoder } from "@dxos/client-protocol";
32
+ import { Context } from "@dxos/context";
30
33
  import { invariant } from "@dxos/invariant";
31
34
  import { Invitation } from "@dxos/protocols/proto/dxos/client/services";
32
35
  var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/invitation-utils.ts";
33
36
  var sanitizeInvitation = (invitation) => {
34
37
  return InvitationEncoder.decode(InvitationEncoder.encode(invitation));
35
38
  };
36
- var performInvitation = ({ host, guest, options, hooks, guestDeviceProfile, codeInputDelay }) => {
39
+ var performInvitation = ({ host, guest, guestDeviceProfile, options, hooks, codeInputDelay }) => {
37
40
  let guestError = false;
38
41
  let guestConnected = false;
39
42
  let wereConnected = false;
@@ -63,15 +66,7 @@ var performInvitation = ({ host, guest, options, hooks, guestDeviceProfile, code
63
66
  if (hooks?.guest?.onConnecting?.(guestObservable)) {
64
67
  break;
65
68
  }
66
- invariant(hostInvitation.swarmKey.equals(guestInvitation.swarmKey), void 0, {
67
- F: __dxlog_file,
68
- L: 95,
69
- S: void 0,
70
- A: [
71
- "hostInvitation.swarmKey!.equals(guestInvitation.swarmKey!)",
72
- ""
73
- ]
74
- });
69
+ invariant(hostInvitation.swarmKey.equals(guestInvitation.swarmKey), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 51, S: void 0, A: ["hostInvitation.swarmKey.equals(guestInvitation.swarmKey)", ""] });
75
70
  break;
76
71
  }
77
72
  case Invitation.State.CONNECTED: {
@@ -197,12 +192,12 @@ var performInvitation = ({ host, guest, options, hooks, guestDeviceProfile, code
197
192
  ];
198
193
  };
199
194
  var createInvitation = async (host, options) => {
200
- options ?? (options = {
195
+ options ??= {
201
196
  authMethod: Invitation.AuthMethod.NONE,
202
197
  ...options ?? {}
203
- });
198
+ };
204
199
  if (host instanceof ServiceContext) {
205
- return host.invitationsManager.createInvitation({
200
+ return host.invitationsManager.createInvitation(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 194 }), {
206
201
  kind: Invitation.Kind.SPACE,
207
202
  ...options
208
203
  });
@@ -212,7 +207,7 @@ var createInvitation = async (host, options) => {
212
207
  var acceptInvitation = (guest, invitation, guestDeviceProfile) => {
213
208
  invitation = sanitizeInvitation(invitation);
214
209
  if (guest instanceof ServiceContext) {
215
- return guest.invitationsManager.acceptInvitation({
210
+ return guest.invitationsManager.acceptInvitation(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 204 }), {
216
211
  invitation,
217
212
  deviceProfile: guestDeviceProfile
218
213
  });
@@ -221,7 +216,10 @@ var acceptInvitation = (guest, invitation, guestDeviceProfile) => {
221
216
  };
222
217
 
223
218
  // src/packlets/testing/test-builder.ts
224
- import { Context } from "@dxos/context";
219
+ import * as Reactivity from "@effect/experimental/Reactivity";
220
+ import * as Layer from "effect/Layer";
221
+ import * as ManagedRuntime from "effect/ManagedRuntime";
222
+ import { Context as Context2 } from "@dxos/context";
225
223
  import { CredentialGenerator, createCredentialSignerWithChain } from "@dxos/credentials";
226
224
  import { failUndefined } from "@dxos/debug";
227
225
  import { EchoHost, MeshEchoReplicator, MetadataStore, SpaceManager, valueEncoding } from "@dxos/echo-pipeline";
@@ -232,26 +230,16 @@ import { MemorySignalManager, MemorySignalManagerContext } from "@dxos/messaging
232
230
  import { MemoryTransportFactory, SwarmNetworkManager } from "@dxos/network-manager";
233
231
  import { Invitation as Invitation2 } from "@dxos/protocols/proto/dxos/client/services";
234
232
  import { StorageType, createStorage } from "@dxos/random-access-storage";
233
+ import { layerMemory as sqliteLayerMemory } from "@dxos/sql-sqlite/platform";
234
+ import * as SqlTransaction from "@dxos/sql-sqlite/SqlTransaction";
235
235
  import { BlobStore } from "@dxos/teleport-extension-object-sync";
236
- function _define_property(obj, key, value) {
237
- if (key in obj) {
238
- Object.defineProperty(obj, key, {
239
- value,
240
- enumerable: true,
241
- configurable: true,
242
- writable: true
243
- });
244
- } else {
245
- obj[key] = value;
246
- }
247
- return obj;
248
- }
249
236
  var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/test-builder.ts";
250
237
  var createServiceHost = (config, signalManagerContext) => {
251
238
  return new ClientServicesHost({
252
239
  config,
253
240
  signalManager: new MemorySignalManager(signalManagerContext),
254
- transportFactory: MemoryTransportFactory
241
+ transportFactory: MemoryTransportFactory,
242
+ runtime: ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect
255
243
  });
256
244
  };
257
245
  var createServiceContext = async ({ signalManagerFactory = async () => {
@@ -259,7 +247,7 @@ var createServiceContext = async ({ signalManagerFactory = async () => {
259
247
  return new MemorySignalManager(signalContext);
260
248
  }, storage = createStorage({
261
249
  type: StorageType.RAM
262
- }), runtimeParams } = {}) => {
250
+ }), runtimeProps } = {}) => {
263
251
  const signalManager = await signalManagerFactory();
264
252
  const networkManager = new SwarmNetworkManager({
265
253
  signalManager,
@@ -267,13 +255,14 @@ var createServiceContext = async ({ signalManagerFactory = async () => {
267
255
  });
268
256
  const level = createTestLevel();
269
257
  await level.open();
270
- return new ServiceContext(storage, level, networkManager, signalManager, void 0, void 0, {
271
- invitationConnectionDefaultParams: {
258
+ const runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect;
259
+ return new ServiceContext(storage, level, networkManager, signalManager, void 0, void 0, runtime, {
260
+ invitationConnectionDefaultProps: {
272
261
  teleport: {
273
262
  controlHeartbeatInterval: 200
274
263
  }
275
264
  },
276
- ...runtimeParams
265
+ ...runtimeProps
277
266
  });
278
267
  };
279
268
  var createPeers = async (numPeers, signalManagerFactory) => {
@@ -285,10 +274,7 @@ var createPeers = async (numPeers, signalManagerFactory) => {
285
274
  const peer = await createServiceContext({
286
275
  signalManagerFactory
287
276
  });
288
- await peer.open(new Context(void 0, {
289
- F: __dxlog_file2,
290
- L: 70
291
- }));
277
+ await peer.open(new Context2(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 67 }));
292
278
  return peer;
293
279
  }));
294
280
  };
@@ -297,6 +283,8 @@ var createIdentity = async (peer) => {
297
283
  return peer;
298
284
  };
299
285
  var TestBuilder = class {
286
+ signalContext = new MemorySignalManagerContext();
287
+ _ctx = new Context2(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 77 });
300
288
  createPeer(peerOptions) {
301
289
  const peer = new TestPeer(this.signalContext, peerOptions);
302
290
  this._ctx.onDispose(async () => peer.destroy());
@@ -305,35 +293,34 @@ var TestBuilder = class {
305
293
  async destroy() {
306
294
  await this._ctx.dispose();
307
295
  }
308
- constructor() {
309
- _define_property(this, "signalContext", new MemorySignalManagerContext());
310
- _define_property(this, "_ctx", new Context(void 0, {
311
- F: __dxlog_file2,
312
- L: 83
313
- }));
314
- }
315
296
  };
316
297
  var TestPeer = class {
298
+ _signalContext;
299
+ _opts;
300
+ _props = {};
301
+ _runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
302
+ constructor(_signalContext, _opts = {
303
+ dataStore: StorageType.RAM
304
+ }) {
305
+ this._signalContext = _signalContext;
306
+ this._opts = _opts;
307
+ }
317
308
  get props() {
318
309
  return this._props;
319
310
  }
320
311
  get storage() {
321
- var _this__props;
322
- return (_this__props = this._props).storage ?? (_this__props.storage = createStorage({
312
+ return this._props.storage ??= createStorage({
323
313
  type: this._opts.dataStore
324
- }));
314
+ });
325
315
  }
326
316
  get keyring() {
327
- var _this__props;
328
- return (_this__props = this._props).keyring ?? (_this__props.keyring = new Keyring(this.storage.createDirectory("keyring")));
317
+ return this._props.keyring ??= new Keyring(this.storage.createDirectory("keyring"));
329
318
  }
330
319
  get level() {
331
- var _this__props;
332
- return (_this__props = this._props).level ?? (_this__props.level = createTestLevel());
320
+ return this._props.level ??= createTestLevel();
333
321
  }
334
322
  get feedStore() {
335
- var _this__props;
336
- return (_this__props = this._props).feedStore ?? (_this__props.feedStore = new FeedStore({
323
+ return this._props.feedStore ??= new FeedStore({
337
324
  factory: new FeedFactory({
338
325
  root: this.storage.createDirectory("feeds"),
339
326
  signer: this.keyring,
@@ -341,48 +328,42 @@ var TestPeer = class {
341
328
  valueEncoding
342
329
  }
343
330
  })
344
- }));
331
+ });
345
332
  }
346
333
  get metadataStore() {
347
- var _this__props;
348
- return (_this__props = this._props).metadataStore ?? (_this__props.metadataStore = new MetadataStore(this.storage.createDirectory("metadata")));
334
+ return this._props.metadataStore ??= new MetadataStore(this.storage.createDirectory("metadata"));
349
335
  }
350
336
  get blobStore() {
351
- var _this__props;
352
- return (_this__props = this._props).blobStore ?? (_this__props.blobStore = new BlobStore(this.storage.createDirectory("blobs")));
337
+ return this._props.blobStore ??= new BlobStore(this.storage.createDirectory("blobs"));
353
338
  }
354
339
  get networkManager() {
355
- var _this__props;
356
- return (_this__props = this._props).networkManager ?? (_this__props.networkManager = new SwarmNetworkManager({
340
+ return this._props.networkManager ??= new SwarmNetworkManager({
357
341
  signalManager: new MemorySignalManager(this._signalContext),
358
342
  transportFactory: MemoryTransportFactory
359
- }));
343
+ });
360
344
  }
361
345
  get spaceManager() {
362
- var _this__props;
363
- return (_this__props = this._props).spaceManager ?? (_this__props.spaceManager = new SpaceManager({
346
+ return this._props.spaceManager ??= new SpaceManager({
364
347
  feedStore: this.feedStore,
365
348
  networkManager: this.networkManager,
366
349
  metadataStore: this.metadataStore,
367
350
  blobStore: this.blobStore
368
- }));
351
+ });
369
352
  }
370
353
  get identity() {
371
354
  return this._props.signingContext ?? failUndefined();
372
355
  }
373
356
  get echoHost() {
374
- var _this__props;
375
- return (_this__props = this._props).echoHost ?? (_this__props.echoHost = new EchoHost({
376
- kv: this.level
377
- }));
357
+ return this._props.echoHost ??= new EchoHost({
358
+ kv: this.level,
359
+ runtime: this._runtime.runtimeEffect
360
+ });
378
361
  }
379
362
  get meshEchoReplicator() {
380
- var _this__props;
381
- return (_this__props = this._props).meshEchoReplicator ?? (_this__props.meshEchoReplicator = new MeshEchoReplicator());
363
+ return this._props.meshEchoReplicator ??= new MeshEchoReplicator();
382
364
  }
383
365
  get dataSpaceManager() {
384
- var _this__props;
385
- return (_this__props = this._props).dataSpaceManager ?? (_this__props.dataSpaceManager = new DataSpaceManager({
366
+ return this._props.dataSpaceManager ??= new DataSpaceManager({
386
367
  spaceManager: this.spaceManager,
387
368
  metadataStore: this.metadataStore,
388
369
  keyring: this.keyring,
@@ -393,22 +374,20 @@ var TestPeer = class {
393
374
  edgeConnection: void 0,
394
375
  meshReplicator: this.meshEchoReplicator,
395
376
  echoEdgeReplicator: void 0,
396
- runtimeParams: this._opts.dataSpaceParams
397
- }));
377
+ runtimeProps: this._opts.dataSpaceProps
378
+ });
398
379
  }
399
380
  get invitationsManager() {
400
- var _this__props;
401
- return (_this__props = this._props).invitationsManager ?? (_this__props.invitationsManager = new InvitationsManager(new InvitationsHandler(this.networkManager), (invitation) => {
381
+ return this._props.invitationsManager ??= new InvitationsManager(new InvitationsHandler(this.networkManager), (invitation) => {
402
382
  if (invitation.kind === Invitation2.Kind.SPACE) {
403
383
  return new SpaceInvitationProtocol(this.dataSpaceManager, this.identity, this.keyring, invitation.spaceKey);
404
384
  } else {
405
385
  throw new Error("not implemented");
406
386
  }
407
- }, this.metadataStore));
387
+ }, this.metadataStore);
408
388
  }
409
389
  async createIdentity() {
410
- var _this__props;
411
- (_this__props = this._props).signingContext ?? (_this__props.signingContext = await createSigningContext(this.keyring));
390
+ this._props.signingContext ??= await createSigningContext(this.keyring);
412
391
  this.networkManager.setPeerInfo({
413
392
  identityKey: this._props.signingContext.identityKey.toHex(),
414
393
  peerKey: this._props.signingContext.deviceKey.toHex()
@@ -417,16 +396,7 @@ var TestPeer = class {
417
396
  async destroy() {
418
397
  await this.level.close();
419
398
  await this.storage.reset();
420
- }
421
- constructor(_signalContext, _opts = {
422
- dataStore: StorageType.RAM
423
- }) {
424
- _define_property(this, "_signalContext", void 0);
425
- _define_property(this, "_opts", void 0);
426
- _define_property(this, "_props", void 0);
427
- this._signalContext = _signalContext;
428
- this._opts = _opts;
429
- this._props = {};
399
+ await this._runtime.dispose();
430
400
  }
431
401
  };
432
402
  var createSigningContext = async (keyring) => {