@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.
- package/dist/lib/browser/{chunk-FZDVFED2.mjs → chunk-KW4WMU5R.mjs} +2698 -4599
- package/dist/lib/browser/chunk-KW4WMU5R.mjs.map +7 -0
- package/dist/lib/browser/chunk-QCWEHHJW.mjs +24 -0
- package/dist/lib/browser/chunk-QCWEHHJW.mjs.map +7 -0
- package/dist/lib/browser/chunk-XJRPB3GA.mjs +22 -0
- package/dist/lib/browser/chunk-XJRPB3GA.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +490 -228
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
- package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
- package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
- package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
- package/dist/lib/browser/packlets/locks/browser.mjs +86 -0
- package/dist/lib/browser/packlets/locks/browser.mjs.map +7 -0
- package/dist/lib/browser/packlets/locks/node.mjs +48 -0
- package/dist/lib/browser/packlets/locks/node.mjs.map +7 -0
- package/dist/lib/browser/testing/index.mjs +60 -90
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/chunk-2DT3MZRL.mjs +22 -0
- package/dist/lib/node-esm/chunk-2DT3MZRL.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +24 -0
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-JDTIU3EP.mjs → chunk-NDMKP2CH.mjs} +2621 -4391
- package/dist/lib/node-esm/chunk-NDMKP2CH.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +490 -228
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
- package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
- package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
- package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
- package/dist/lib/node-esm/packlets/locks/browser.mjs +86 -0
- package/dist/lib/node-esm/packlets/locks/browser.mjs.map +7 -0
- package/dist/lib/node-esm/packlets/locks/node.mjs +48 -0
- package/dist/lib/node-esm/packlets/locks/node.mjs.map +7 -0
- package/dist/lib/node-esm/testing/index.mjs +60 -90
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/packlets/agents/edge-agent-manager.d.ts +3 -2
- package/dist/types/src/packlets/agents/edge-agent-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/agents/edge-agent-service.d.ts +2 -1
- package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -1
- package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/devtools.d.ts +2 -2
- package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/keys.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/metadata.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/spaces.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/diagnostics.d.ts +2 -3
- package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/index.d.ts +1 -1
- package/dist/types/src/packlets/diagnostics/index.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/authenticator.d.ts +2 -2
- package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-manager.d.ts +6 -6
- package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +8 -7
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-service.d.ts +6 -10
- package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity.d.ts +8 -11
- package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts +6 -5
- package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts +1 -1
- package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-guest-extenstion.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-host-extension.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-protocol.d.ts +7 -4
- package/dist/types/src/packlets/invitations/invitation-protocol.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-state.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-topology.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts +4 -4
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-manager.d.ts +3 -3
- package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-service.d.ts +3 -3
- package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +4 -3
- package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/utils.d.ts.map +1 -1
- package/dist/types/src/packlets/locks/browser.d.ts.map +1 -1
- package/dist/types/src/packlets/locks/index.d.ts +1 -1
- package/dist/types/src/packlets/locks/index.d.ts.map +1 -1
- package/dist/types/src/packlets/locks/node.d.ts.map +1 -1
- package/dist/types/src/packlets/logging/logging-service.d.ts +4 -0
- package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
- package/dist/types/src/packlets/network/network-service.d.ts +5 -4
- package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
- package/dist/types/src/packlets/services/client-rpc-server.d.ts +5 -5
- package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +1 -1
- package/dist/types/src/packlets/services/feed-syncer.d.ts +59 -0
- package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -0
- package/dist/types/src/packlets/services/feed-syncer.test.d.ts +2 -0
- package/dist/types/src/packlets/services/feed-syncer.test.d.ts.map +1 -0
- package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-context.d.ts +13 -9
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +20 -7
- package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-registry.d.ts.map +1 -1
- package/dist/types/src/packlets/services/util.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/archive-format.d.ts +9 -0
- package/dist/types/src/packlets/space-export/archive-format.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/index.d.ts +4 -1
- package/dist/types/src/packlets/space-export/index.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts +23 -0
- package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts +36 -0
- package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/space-archive-reader.d.ts +9 -1
- package/dist/types/src/packlets/space-export/space-archive-reader.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/space-archive-writer.d.ts +7 -1
- package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/space-archive.test.d.ts +2 -0
- package/dist/types/src/packlets/space-export/space-archive.test.d.ts.map +1 -0
- package/dist/types/src/packlets/spaces/automerge-space-state.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts +28 -17
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +26 -9
- package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts +2 -2
- package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/genesis.d.ts +2 -1
- package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +6 -9
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts +10 -7
- package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/level.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/profile-archive.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/storage.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/util.d.ts.map +1 -1
- package/dist/types/src/packlets/system/system-service.d.ts +1 -1
- package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/credential-utils.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/invitation-utils.d.ts +6 -3
- package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/test-builder.d.ts +6 -5
- package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/packlets/worker/worker-runtime.d.ts +41 -4
- package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
- package/dist/types/src/packlets/worker/worker-session.d.ts +2 -4
- package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
- package/dist/types/src/testing/setup.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +70 -55
- package/src/index.ts +1 -0
- package/src/packlets/agents/edge-agent-manager.ts +8 -5
- package/src/packlets/agents/edge-agent-service.ts +15 -3
- package/src/packlets/devices/devices-service.test.ts +0 -1
- package/src/packlets/devices/devices-service.ts +1 -1
- package/src/packlets/devtools/devtools.ts +2 -3
- package/src/packlets/diagnostics/diagnostics.ts +1 -2
- package/src/packlets/diagnostics/index.ts +1 -1
- package/src/packlets/identity/authenticator.ts +2 -2
- package/src/packlets/identity/contacts-service.ts +0 -1
- package/src/packlets/identity/identity-manager.test.ts +5 -5
- package/src/packlets/identity/identity-manager.ts +23 -22
- package/src/packlets/identity/identity-recovery-manager.ts +22 -18
- package/src/packlets/identity/identity-service.test.ts +6 -27
- package/src/packlets/identity/identity-service.ts +13 -81
- package/src/packlets/identity/identity.test.ts +6 -6
- package/src/packlets/identity/identity.ts +11 -34
- package/src/packlets/invitations/device-invitation-protocol.ts +8 -7
- package/src/packlets/invitations/edge-invitation-handler.ts +9 -5
- package/src/packlets/invitations/invitation-guest-extenstion.ts +6 -4
- package/src/packlets/invitations/invitation-host-extension.ts +13 -14
- package/src/packlets/invitations/invitation-protocol.ts +7 -4
- package/src/packlets/invitations/invitation-state.ts +1 -15
- package/src/packlets/invitations/invitations-handler.test.ts +4 -5
- package/src/packlets/invitations/invitations-handler.ts +74 -22
- package/src/packlets/invitations/invitations-manager.ts +40 -15
- package/src/packlets/invitations/invitations-service.ts +9 -9
- package/src/packlets/invitations/space-invitation-protocol.test.ts +17 -16
- package/src/packlets/invitations/space-invitation-protocol.ts +11 -16
- package/src/packlets/locks/index.ts +1 -1
- package/src/packlets/logging/logging-service.ts +20 -16
- package/src/packlets/network/network-service.test.ts +0 -1
- package/src/packlets/network/network-service.ts +10 -8
- package/src/packlets/services/client-rpc-server.ts +19 -16
- package/src/packlets/services/feed-syncer.test.ts +340 -0
- package/src/packlets/services/feed-syncer.ts +337 -0
- package/src/packlets/services/platform.ts +7 -1
- package/src/packlets/services/service-context.test.ts +3 -2
- package/src/packlets/services/service-context.ts +138 -56
- package/src/packlets/services/service-host.test.ts +8 -8
- package/src/packlets/services/service-host.ts +70 -40
- package/src/packlets/services/service-registry.test.ts +0 -1
- package/src/packlets/space-export/archive-format.ts +42 -0
- package/src/packlets/space-export/index.ts +4 -1
- package/src/packlets/space-export/serialized-space-reader.ts +111 -0
- package/src/packlets/space-export/serialized-space-writer.ts +253 -0
- package/src/packlets/space-export/space-archive-reader.ts +64 -3
- package/src/packlets/space-export/space-archive-writer.ts +41 -3
- package/src/packlets/space-export/space-archive.test.ts +461 -0
- package/src/packlets/spaces/data-space-manager.test.ts +79 -13
- package/src/packlets/spaces/data-space-manager.ts +115 -115
- package/src/packlets/spaces/data-space.ts +58 -33
- package/src/packlets/spaces/edge-feed-replicator.test.ts +2 -2
- package/src/packlets/spaces/edge-feed-replicator.ts +12 -10
- package/src/packlets/spaces/epoch-migrations.ts +5 -5
- package/src/packlets/spaces/genesis.ts +6 -1
- package/src/packlets/spaces/notarization-plugin.test.ts +2 -2
- package/src/packlets/spaces/notarization-plugin.ts +10 -9
- package/src/packlets/spaces/spaces-service.test.ts +18 -11
- package/src/packlets/spaces/spaces-service.ts +123 -24
- package/src/packlets/storage/storage.ts +4 -4
- package/src/packlets/testing/invitation-utils.ts +10 -6
- package/src/packlets/testing/test-builder.ts +36 -10
- package/src/packlets/worker/worker-runtime.ts +188 -17
- package/src/packlets/worker/worker-session.ts +12 -18
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-FZDVFED2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JDTIU3EP.mjs.map +0 -7
- package/dist/types/src/packlets/identity/default-space-state-machine.d.ts +0 -19
- package/dist/types/src/packlets/identity/default-space-state-machine.d.ts.map +0 -1
- 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,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-
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
}),
|
|
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
|
-
|
|
271
|
-
|
|
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
|
-
...
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
332
|
-
return (_this__props = this._props).level ?? (_this__props.level = createTestLevel());
|
|
320
|
+
return this._props.level ??= createTestLevel();
|
|
333
321
|
}
|
|
334
322
|
get feedStore() {
|
|
335
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
375
|
-
|
|
376
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
397
|
-
})
|
|
377
|
+
runtimeProps: this._opts.dataSpaceProps
|
|
378
|
+
});
|
|
398
379
|
}
|
|
399
380
|
get invitationsManager() {
|
|
400
|
-
|
|
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
|
-
|
|
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) => {
|