@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
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import "@dxos/node-std/globals";
|
|
2
2
|
import {
|
|
3
|
-
ClientRpcServer,
|
|
4
3
|
ClientServicesHost,
|
|
5
4
|
DataSpace,
|
|
6
5
|
DataSpaceManager,
|
|
@@ -17,180 +16,339 @@ import {
|
|
|
17
16
|
InvitationsHandler,
|
|
18
17
|
InvitationsManager,
|
|
19
18
|
InvitationsServiceImpl,
|
|
20
|
-
Lock,
|
|
21
19
|
ServiceContext,
|
|
22
20
|
ServiceRegistry,
|
|
21
|
+
SpaceArchiveWriter,
|
|
23
22
|
SpaceInvitationProtocol,
|
|
24
23
|
SpacesServiceImpl,
|
|
25
24
|
TrustedKeySetAuthVerifier,
|
|
25
|
+
buildDatabaseDirectoryFromObjects,
|
|
26
26
|
createAdmissionKeypair,
|
|
27
27
|
createAuthProvider,
|
|
28
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
29
|
-
createCollectDiagnosticsBroadcastSender,
|
|
30
28
|
createDiagnostics,
|
|
31
29
|
createLevel,
|
|
32
30
|
createStorageObjects,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
detectSpaceArchiveFormat,
|
|
32
|
+
diagnostics_exports,
|
|
33
|
+
extractSpaceArchive,
|
|
36
34
|
getNetworkPeers,
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
locks_exports,
|
|
36
|
+
objJsonToObjectStructure,
|
|
37
|
+
objectStructureToObjJson,
|
|
38
|
+
orderObjJsonFields,
|
|
39
|
+
readSerializedSpaceArchive,
|
|
39
40
|
subscribeToFeedBlocks,
|
|
40
41
|
subscribeToFeeds,
|
|
41
42
|
subscribeToNetworkStatus,
|
|
42
43
|
subscribeToNetworkTopics,
|
|
43
44
|
subscribeToSignal,
|
|
44
45
|
subscribeToSpaces,
|
|
45
|
-
subscribeToSwarmInfo
|
|
46
|
-
|
|
46
|
+
subscribeToSwarmInfo,
|
|
47
|
+
writeSerializedSpaceArchive
|
|
48
|
+
} from "./chunk-KW4WMU5R.mjs";
|
|
49
|
+
import "./chunk-XJRPB3GA.mjs";
|
|
50
|
+
import {
|
|
51
|
+
__export,
|
|
52
|
+
__reExport
|
|
53
|
+
} from "./chunk-QCWEHHJW.mjs";
|
|
54
|
+
|
|
55
|
+
// src/index.ts
|
|
56
|
+
var index_exports = {};
|
|
57
|
+
__export(index_exports, {
|
|
58
|
+
ClientRpcServer: () => ClientRpcServer,
|
|
59
|
+
ClientServicesHost: () => ClientServicesHost,
|
|
60
|
+
DataSpace: () => DataSpace,
|
|
61
|
+
DataSpaceManager: () => DataSpaceManager,
|
|
62
|
+
DeviceInvitationProtocol: () => DeviceInvitationProtocol,
|
|
63
|
+
DevtoolsHostEvents: () => DevtoolsHostEvents,
|
|
64
|
+
DevtoolsServiceImpl: () => DevtoolsServiceImpl,
|
|
65
|
+
DiagnosticsCollector: () => DiagnosticsCollector,
|
|
66
|
+
EdgeAgentManager: () => EdgeAgentManager,
|
|
67
|
+
EdgeAgentServiceImpl: () => EdgeAgentServiceImpl,
|
|
68
|
+
EdgeFeedReplicator: () => EdgeFeedReplicator,
|
|
69
|
+
Identity: () => Identity,
|
|
70
|
+
IdentityManager: () => IdentityManager,
|
|
71
|
+
IdentityServiceImpl: () => IdentityServiceImpl,
|
|
72
|
+
InvitationsHandler: () => InvitationsHandler,
|
|
73
|
+
InvitationsManager: () => InvitationsManager,
|
|
74
|
+
InvitationsServiceImpl: () => InvitationsServiceImpl,
|
|
75
|
+
ServiceContext: () => ServiceContext,
|
|
76
|
+
ServiceRegistry: () => ServiceRegistry,
|
|
77
|
+
SpaceArchiveWriter: () => SpaceArchiveWriter,
|
|
78
|
+
SpaceInvitationProtocol: () => SpaceInvitationProtocol,
|
|
79
|
+
SpacesServiceImpl: () => SpacesServiceImpl,
|
|
80
|
+
TrustedKeySetAuthVerifier: () => TrustedKeySetAuthVerifier,
|
|
81
|
+
WorkerRuntime: () => WorkerRuntime,
|
|
82
|
+
WorkerSession: () => WorkerSession,
|
|
83
|
+
buildDatabaseDirectoryFromObjects: () => buildDatabaseDirectoryFromObjects,
|
|
84
|
+
createAdmissionKeypair: () => createAdmissionKeypair,
|
|
85
|
+
createAuthProvider: () => createAuthProvider,
|
|
86
|
+
createDiagnostics: () => createDiagnostics,
|
|
87
|
+
createLevel: () => createLevel,
|
|
88
|
+
createStorageObjects: () => createStorageObjects,
|
|
89
|
+
decodeProfileArchive: () => decodeProfileArchive,
|
|
90
|
+
detectSpaceArchiveFormat: () => detectSpaceArchiveFormat,
|
|
91
|
+
encodeProfileArchive: () => encodeProfileArchive,
|
|
92
|
+
exportProfileData: () => exportProfileData,
|
|
93
|
+
extractSpaceArchive: () => extractSpaceArchive,
|
|
94
|
+
getNetworkPeers: () => getNetworkPeers,
|
|
95
|
+
importProfileData: () => importProfileData,
|
|
96
|
+
objJsonToObjectStructure: () => objJsonToObjectStructure,
|
|
97
|
+
objectStructureToObjJson: () => objectStructureToObjJson,
|
|
98
|
+
orderObjJsonFields: () => orderObjJsonFields,
|
|
99
|
+
readSerializedSpaceArchive: () => readSerializedSpaceArchive,
|
|
100
|
+
subscribeToFeedBlocks: () => subscribeToFeedBlocks,
|
|
101
|
+
subscribeToFeeds: () => subscribeToFeeds,
|
|
102
|
+
subscribeToNetworkStatus: () => subscribeToNetworkStatus,
|
|
103
|
+
subscribeToNetworkTopics: () => subscribeToNetworkTopics,
|
|
104
|
+
subscribeToSignal: () => subscribeToSignal,
|
|
105
|
+
subscribeToSpaces: () => subscribeToSpaces,
|
|
106
|
+
subscribeToSwarmInfo: () => subscribeToSwarmInfo,
|
|
107
|
+
writeSerializedSpaceArchive: () => writeSerializedSpaceArchive
|
|
108
|
+
});
|
|
109
|
+
__reExport(index_exports, diagnostics_exports);
|
|
110
|
+
__reExport(index_exports, locks_exports);
|
|
111
|
+
|
|
112
|
+
// src/packlets/services/client-rpc-server.ts
|
|
113
|
+
import { Stream } from "@dxos/codec-protobuf";
|
|
114
|
+
import { raise } from "@dxos/debug";
|
|
115
|
+
import { RpcPeer, parseMethodName } from "@dxos/rpc";
|
|
116
|
+
import { MapCounter, trace } from "@dxos/tracing";
|
|
117
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
118
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
119
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
120
|
+
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;
|
|
121
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
122
|
+
}
|
|
123
|
+
var ClientRpcServer = class {
|
|
124
|
+
_serviceRegistry;
|
|
125
|
+
_rpcPeer;
|
|
126
|
+
_handlerCache = /* @__PURE__ */ new Map();
|
|
127
|
+
_handleCall;
|
|
128
|
+
_handleStream;
|
|
129
|
+
_callMetrics = new MapCounter();
|
|
130
|
+
get _services() {
|
|
131
|
+
return Object.keys(this._serviceRegistry.services);
|
|
132
|
+
}
|
|
133
|
+
constructor(params) {
|
|
134
|
+
const { serviceRegistry, handleCall, handleStream, ...rpcOptions } = params;
|
|
135
|
+
this._handleCall = handleCall;
|
|
136
|
+
this._handleStream = handleStream;
|
|
137
|
+
this._serviceRegistry = serviceRegistry;
|
|
138
|
+
this._rpcPeer = new RpcPeer({
|
|
139
|
+
...rpcOptions,
|
|
140
|
+
callHandler: (method, params2, options) => {
|
|
141
|
+
const [serviceName, methodName] = parseMethodName(method);
|
|
142
|
+
const handler = (method2, params3, handlerOptions) => this._getServiceHandler(serviceName).call(method2, params3, handlerOptions);
|
|
143
|
+
this._callMetrics.inc(`${serviceName}.${methodName} request`);
|
|
144
|
+
if (this._handleCall) {
|
|
145
|
+
return this._handleCall(methodName, params2, handler, options);
|
|
146
|
+
} else {
|
|
147
|
+
return handler(methodName, params2, options);
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
streamHandler: (method, params2, options) => {
|
|
151
|
+
const [serviceName, methodName] = parseMethodName(method);
|
|
152
|
+
const handler = (method2, params3, handlerOptions) => this._getServiceHandler(serviceName).callStream(method2, params3, handlerOptions);
|
|
153
|
+
this._callMetrics.inc(`${serviceName}.${methodName} request stream`);
|
|
154
|
+
if (this._handleStream) {
|
|
155
|
+
return Stream.map(Stream.unwrapPromise(this._handleStream(methodName, params2, handler, options)), (data) => {
|
|
156
|
+
this._callMetrics.inc(`${serviceName}.${methodName} response stream`);
|
|
157
|
+
return data;
|
|
158
|
+
});
|
|
159
|
+
} else {
|
|
160
|
+
return handler(methodName, params2, options);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
async open() {
|
|
166
|
+
await this._rpcPeer.open();
|
|
167
|
+
}
|
|
168
|
+
async close() {
|
|
169
|
+
await this._rpcPeer.close();
|
|
170
|
+
}
|
|
171
|
+
_getServiceHandler(serviceName) {
|
|
172
|
+
if (!this._handlerCache.has(serviceName)) {
|
|
173
|
+
const [key, descriptor] = Object.entries(this._serviceRegistry.descriptors).find(([key2, descriptor2]) => descriptor2.name === serviceName) ?? raise(new Error(`Service not available: ${serviceName}`));
|
|
174
|
+
const service = this._serviceRegistry.services[key];
|
|
175
|
+
if (!service) {
|
|
176
|
+
throw new Error(`Service not available: ${serviceName}`);
|
|
177
|
+
}
|
|
178
|
+
this._handlerCache.set(serviceName, descriptor.createServer(service));
|
|
179
|
+
}
|
|
180
|
+
return this._handlerCache.get(serviceName);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
_ts_decorate([
|
|
184
|
+
trace.metricsCounter()
|
|
185
|
+
], ClientRpcServer.prototype, "_callMetrics", void 0);
|
|
186
|
+
_ts_decorate([
|
|
187
|
+
trace.info()
|
|
188
|
+
], ClientRpcServer.prototype, "_services", null);
|
|
189
|
+
ClientRpcServer = _ts_decorate([
|
|
190
|
+
trace.resource()
|
|
191
|
+
], ClientRpcServer);
|
|
192
|
+
|
|
193
|
+
// src/packlets/storage/profile-archive.ts
|
|
194
|
+
import { cbor } from "@automerge/automerge-repo";
|
|
195
|
+
import { invariant } from "@dxos/invariant";
|
|
196
|
+
import { log } from "@dxos/log";
|
|
197
|
+
import { ProfileArchiveEntryType } from "@dxos/protocols";
|
|
198
|
+
import { arrayToBuffer } from "@dxos/util";
|
|
199
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/storage/profile-archive.ts";
|
|
200
|
+
var encodeProfileArchive = (profile) => cbor.encode(profile);
|
|
201
|
+
var decodeProfileArchive = (data) => cbor.decode(data);
|
|
202
|
+
var exportProfileData = async ({ storage, level }) => {
|
|
203
|
+
const archive = {
|
|
204
|
+
storage: [],
|
|
205
|
+
meta: {
|
|
206
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
{
|
|
210
|
+
const directory = await storage.createDirectory();
|
|
211
|
+
const files = await directory.list();
|
|
212
|
+
log.info("begin exporting files", {
|
|
213
|
+
count: files.length
|
|
214
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 21, S: void 0 });
|
|
215
|
+
for (const filename of files) {
|
|
216
|
+
const file = await directory.getOrCreateFile(filename);
|
|
217
|
+
const { size } = await file.stat();
|
|
218
|
+
const data = await file.read(0, size);
|
|
219
|
+
archive.storage.push({
|
|
220
|
+
type: ProfileArchiveEntryType.FILE,
|
|
221
|
+
key: filename,
|
|
222
|
+
value: data
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
log.info("done exporting files", {
|
|
226
|
+
count: files.length
|
|
227
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 34, S: void 0 });
|
|
228
|
+
}
|
|
229
|
+
{
|
|
230
|
+
log.info("begin exporting kv pairs", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 39, S: void 0 });
|
|
231
|
+
const iter = await level.iterator({
|
|
232
|
+
keyEncoding: "binary",
|
|
233
|
+
valueEncoding: "binary"
|
|
234
|
+
});
|
|
235
|
+
let count = 0;
|
|
236
|
+
for await (const [key, value] of iter) {
|
|
237
|
+
archive.storage.push({
|
|
238
|
+
type: ProfileArchiveEntryType.KEY_VALUE,
|
|
239
|
+
key,
|
|
240
|
+
value
|
|
241
|
+
});
|
|
242
|
+
count++;
|
|
243
|
+
}
|
|
244
|
+
log.info("done exporting kv pairs", {
|
|
245
|
+
count
|
|
246
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 53, S: void 0 });
|
|
247
|
+
}
|
|
248
|
+
return archive;
|
|
249
|
+
};
|
|
250
|
+
var importProfileData = async ({ storage, level }, archive) => {
|
|
251
|
+
let batch = level.batch();
|
|
252
|
+
let count = 0;
|
|
253
|
+
for (const entry of archive.storage) {
|
|
254
|
+
switch (entry.type) {
|
|
255
|
+
case ProfileArchiveEntryType.FILE: {
|
|
256
|
+
const directory = await storage.createDirectory();
|
|
257
|
+
invariant(typeof entry.key === "string", "Invalid key type", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 67, S: void 0, A: ["typeof entry.key === 'string'", "'Invalid key type'"] });
|
|
258
|
+
const file = await directory.getOrCreateFile(entry.key);
|
|
259
|
+
invariant(entry.value instanceof Uint8Array, "Invalid value type", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 69, S: void 0, A: ["entry.value instanceof Uint8Array", "'Invalid value type'"] });
|
|
260
|
+
await file.write(0, arrayToBuffer(entry.value));
|
|
261
|
+
await file.close();
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
case ProfileArchiveEntryType.KEY_VALUE: {
|
|
265
|
+
invariant(entry.key instanceof Uint8Array, "Invalid key type", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 76, S: void 0, A: ["entry.key instanceof Uint8Array", "'Invalid key type'"] });
|
|
266
|
+
invariant(entry.value instanceof Uint8Array, "Invalid value type", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 77, S: void 0, A: ["entry.value instanceof Uint8Array", "'Invalid value type'"] });
|
|
267
|
+
batch.put(entry.key, entry.value, {
|
|
268
|
+
keyEncoding: "binary",
|
|
269
|
+
valueEncoding: "binary"
|
|
270
|
+
});
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
default:
|
|
274
|
+
throw new Error(`Invalid entry type: ${entry.type}`);
|
|
275
|
+
}
|
|
276
|
+
if (++count % 1e3 === 0) {
|
|
277
|
+
await batch.write();
|
|
278
|
+
batch = level.batch();
|
|
279
|
+
log.info("importing", {
|
|
280
|
+
count,
|
|
281
|
+
total: archive.storage.length,
|
|
282
|
+
progress: `${(count / archive.storage.length * 100).toFixed()}%`
|
|
283
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 91, S: void 0 });
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
log.info("committing changes..", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 98, S: void 0 });
|
|
287
|
+
await batch.write();
|
|
288
|
+
};
|
|
47
289
|
|
|
48
290
|
// src/packlets/worker/worker-runtime.ts
|
|
291
|
+
import * as Reactivity from "@effect/experimental/Reactivity";
|
|
292
|
+
import * as Effect from "effect/Effect";
|
|
293
|
+
import * as Layer from "effect/Layer";
|
|
294
|
+
import * as ManagedRuntime from "effect/ManagedRuntime";
|
|
49
295
|
import { Trigger as Trigger2 } from "@dxos/async";
|
|
50
296
|
import { DEFAULT_WORKER_BROADCAST_CHANNEL } from "@dxos/client-protocol";
|
|
51
297
|
import { Context } from "@dxos/context";
|
|
52
|
-
import { invariant as
|
|
53
|
-
import { log as
|
|
298
|
+
import { invariant as invariant3 } from "@dxos/invariant";
|
|
299
|
+
import { log as log3 } from "@dxos/log";
|
|
54
300
|
import { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager, setIdentityTags } from "@dxos/messaging";
|
|
55
301
|
import { RtcTransportProxyFactory } from "@dxos/network-manager";
|
|
302
|
+
import * as OpfsWorker from "@dxos/sql-sqlite/OpfsWorker";
|
|
303
|
+
import * as SqlExport from "@dxos/sql-sqlite/SqlExport";
|
|
304
|
+
import * as SqliteClient from "@dxos/sql-sqlite/SqliteClient";
|
|
305
|
+
import * as SqlTransaction from "@dxos/sql-sqlite/SqlTransaction";
|
|
56
306
|
|
|
57
307
|
// src/packlets/worker/worker-session.ts
|
|
58
308
|
import { Trigger, asyncTimeout } from "@dxos/async";
|
|
59
309
|
import { PROXY_CONNECTION_TIMEOUT, iframeServiceBundle, workerServiceBundle } from "@dxos/client-protocol";
|
|
60
|
-
import { invariant } from "@dxos/invariant";
|
|
61
|
-
import { log, logInfo } from "@dxos/log";
|
|
310
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
311
|
+
import { log as log2, logInfo } from "@dxos/log";
|
|
62
312
|
import { createProtoRpcPeer } from "@dxos/rpc";
|
|
63
313
|
import { Callback } from "@dxos/util";
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
Object.defineProperty(obj, key, {
|
|
67
|
-
value,
|
|
68
|
-
enumerable: true,
|
|
69
|
-
configurable: true,
|
|
70
|
-
writable: true
|
|
71
|
-
});
|
|
72
|
-
} else {
|
|
73
|
-
obj[key] = value;
|
|
74
|
-
}
|
|
75
|
-
return obj;
|
|
76
|
-
}
|
|
77
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
314
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
|
|
315
|
+
function _ts_decorate2(decorators, target, key, desc) {
|
|
78
316
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
79
317
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
80
318
|
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;
|
|
81
319
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
82
320
|
}
|
|
83
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
|
|
84
321
|
var WorkerSession = class {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this._iframeRpc.open(),
|
|
95
|
-
this._maybeOpenShell()
|
|
96
|
-
]);
|
|
97
|
-
await this._startTrigger.wait({
|
|
98
|
-
timeout: PROXY_CONNECTION_TIMEOUT
|
|
99
|
-
});
|
|
100
|
-
if (this.lockKey) {
|
|
101
|
-
void this._afterLockReleases(this.lockKey, () => this.close());
|
|
102
|
-
}
|
|
103
|
-
log.info("opened", void 0, {
|
|
104
|
-
F: __dxlog_file,
|
|
105
|
-
L: 133,
|
|
106
|
-
S: this,
|
|
107
|
-
C: (f, a) => f(...a)
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
async close() {
|
|
111
|
-
log.info("closing...", void 0, {
|
|
112
|
-
F: __dxlog_file,
|
|
113
|
-
L: 137,
|
|
114
|
-
S: this,
|
|
115
|
-
C: (f, a) => f(...a)
|
|
116
|
-
});
|
|
117
|
-
try {
|
|
118
|
-
await this.onClose.callIfSet();
|
|
119
|
-
} catch (err) {
|
|
120
|
-
log.catch(err, void 0, {
|
|
121
|
-
F: __dxlog_file,
|
|
122
|
-
L: 141,
|
|
123
|
-
S: this,
|
|
124
|
-
C: (f, a) => f(...a)
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
await Promise.all([
|
|
128
|
-
this._clientRpc.close(),
|
|
129
|
-
this._iframeRpc.close()
|
|
130
|
-
]);
|
|
131
|
-
log.info("closed", void 0, {
|
|
132
|
-
F: __dxlog_file,
|
|
133
|
-
L: 145,
|
|
134
|
-
S: this,
|
|
135
|
-
C: (f, a) => f(...a)
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
async _maybeOpenShell() {
|
|
139
|
-
try {
|
|
140
|
-
this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
|
|
141
|
-
} catch {
|
|
142
|
-
log.info("No shell connected.", void 0, {
|
|
143
|
-
F: __dxlog_file,
|
|
144
|
-
L: 152,
|
|
145
|
-
S: this,
|
|
146
|
-
C: (f, a) => f(...a)
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
_afterLockReleases(lockKey, callback) {
|
|
151
|
-
return navigator.locks.request(lockKey, () => {
|
|
152
|
-
}).then(callback);
|
|
153
|
-
}
|
|
322
|
+
_clientRpc;
|
|
323
|
+
_shellClientRpc;
|
|
324
|
+
_iframeRpc;
|
|
325
|
+
_startTrigger = new Trigger();
|
|
326
|
+
_serviceHost;
|
|
327
|
+
onClose = new Callback();
|
|
328
|
+
origin;
|
|
329
|
+
lockKey;
|
|
330
|
+
bridgeService;
|
|
154
331
|
constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
|
|
155
|
-
|
|
156
|
-
_define_property(this, "_shellClientRpc", void 0);
|
|
157
|
-
_define_property(this, "_iframeRpc", void 0);
|
|
158
|
-
_define_property(this, "_startTrigger", new Trigger());
|
|
159
|
-
_define_property(this, "_serviceHost", void 0);
|
|
160
|
-
_define_property(this, "onClose", new Callback());
|
|
161
|
-
_define_property(this, "origin", void 0);
|
|
162
|
-
_define_property(this, "observabilityGroup", void 0);
|
|
163
|
-
_define_property(this, "signalTelemetryEnabled", void 0);
|
|
164
|
-
_define_property(this, "lockKey", void 0);
|
|
165
|
-
_define_property(this, "bridgeService", void 0);
|
|
166
|
-
invariant(serviceHost, void 0, {
|
|
167
|
-
F: __dxlog_file,
|
|
168
|
-
L: 54,
|
|
169
|
-
S: this,
|
|
170
|
-
A: [
|
|
171
|
-
"serviceHost",
|
|
172
|
-
""
|
|
173
|
-
]
|
|
174
|
-
});
|
|
332
|
+
invariant2(serviceHost, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 30, S: this, A: ["serviceHost", ""] });
|
|
175
333
|
this._serviceHost = serviceHost;
|
|
176
334
|
const middleware = {
|
|
177
|
-
handleCall: async (method, params, handler) => {
|
|
335
|
+
handleCall: async (method, params, handler, options) => {
|
|
178
336
|
const error = await readySignal.wait({
|
|
179
337
|
timeout: PROXY_CONNECTION_TIMEOUT
|
|
180
338
|
});
|
|
181
339
|
if (error) {
|
|
182
340
|
throw error;
|
|
183
341
|
}
|
|
184
|
-
return handler(method, params);
|
|
342
|
+
return handler(method, params, options);
|
|
185
343
|
},
|
|
186
|
-
handleStream: async (method, params, handler) => {
|
|
344
|
+
handleStream: async (method, params, handler, options) => {
|
|
187
345
|
const error = await readySignal.wait({
|
|
188
346
|
timeout: PROXY_CONNECTION_TIMEOUT
|
|
189
347
|
});
|
|
190
348
|
if (error) {
|
|
191
349
|
throw error;
|
|
192
350
|
}
|
|
193
|
-
return handler(method, params);
|
|
351
|
+
return handler(method, params, options);
|
|
194
352
|
}
|
|
195
353
|
};
|
|
196
354
|
this._clientRpc = new ClientRpcServer({
|
|
@@ -211,8 +369,6 @@ var WorkerSession = class {
|
|
|
211
369
|
start: async (request) => {
|
|
212
370
|
this.origin = request.origin;
|
|
213
371
|
this.lockKey = request.lockKey;
|
|
214
|
-
this.observabilityGroup = request.observabilityGroup;
|
|
215
|
-
this.signalTelemetryEnabled = request.signalTelemetryEnabled;
|
|
216
372
|
this._startTrigger.wake();
|
|
217
373
|
},
|
|
218
374
|
stop: async () => {
|
|
@@ -220,12 +376,7 @@ var WorkerSession = class {
|
|
|
220
376
|
try {
|
|
221
377
|
await this.close();
|
|
222
378
|
} catch (err) {
|
|
223
|
-
|
|
224
|
-
F: __dxlog_file,
|
|
225
|
-
L: 108,
|
|
226
|
-
S: this,
|
|
227
|
-
C: (f, a) => f(...a)
|
|
228
|
-
});
|
|
379
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 77, S: this });
|
|
229
380
|
}
|
|
230
381
|
});
|
|
231
382
|
}
|
|
@@ -236,69 +387,141 @@ var WorkerSession = class {
|
|
|
236
387
|
});
|
|
237
388
|
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
238
389
|
}
|
|
390
|
+
async open() {
|
|
391
|
+
log2("opening...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 89, S: this });
|
|
392
|
+
await Promise.all([
|
|
393
|
+
this._clientRpc.open(),
|
|
394
|
+
this._iframeRpc.open(),
|
|
395
|
+
this._maybeOpenShell()
|
|
396
|
+
]);
|
|
397
|
+
await this._startTrigger.wait({
|
|
398
|
+
timeout: PROXY_CONNECTION_TIMEOUT
|
|
399
|
+
});
|
|
400
|
+
if (this.lockKey) {
|
|
401
|
+
void this._afterLockReleases(this.lockKey, () => this.close());
|
|
402
|
+
}
|
|
403
|
+
log2("opened", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 103, S: this });
|
|
404
|
+
}
|
|
405
|
+
async close() {
|
|
406
|
+
log2.debug("closing...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 106, S: this });
|
|
407
|
+
try {
|
|
408
|
+
await this.onClose.callIfSet();
|
|
409
|
+
} catch (err) {
|
|
410
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 110, S: this });
|
|
411
|
+
}
|
|
412
|
+
await Promise.all([
|
|
413
|
+
this._clientRpc.close(),
|
|
414
|
+
this._iframeRpc.close()
|
|
415
|
+
]);
|
|
416
|
+
log2.debug("closed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 116, S: this });
|
|
417
|
+
}
|
|
418
|
+
async _maybeOpenShell() {
|
|
419
|
+
try {
|
|
420
|
+
this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
|
|
421
|
+
} catch {
|
|
422
|
+
log2.info("No shell connected.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 122, S: this });
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
_afterLockReleases(lockKey, callback) {
|
|
426
|
+
return navigator.locks.request(lockKey, () => {
|
|
427
|
+
}).then(callback);
|
|
428
|
+
}
|
|
239
429
|
};
|
|
240
|
-
|
|
430
|
+
_ts_decorate2([
|
|
241
431
|
logInfo
|
|
242
432
|
], WorkerSession.prototype, "origin", void 0);
|
|
243
|
-
|
|
433
|
+
_ts_decorate2([
|
|
244
434
|
logInfo
|
|
245
435
|
], WorkerSession.prototype, "lockKey", void 0);
|
|
246
436
|
|
|
247
437
|
// src/packlets/worker/worker-runtime.ts
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
438
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
|
|
439
|
+
var WorkerRuntime = class {
|
|
440
|
+
_configProvider;
|
|
441
|
+
_acquireLock;
|
|
442
|
+
_releaseLock;
|
|
443
|
+
_onStop;
|
|
444
|
+
_transportFactory = new RtcTransportProxyFactory();
|
|
445
|
+
_ready = new Trigger2();
|
|
446
|
+
_sessions = /* @__PURE__ */ new Set();
|
|
447
|
+
_clientServices;
|
|
448
|
+
_channel;
|
|
449
|
+
_automaticallyConnectWebrtc;
|
|
450
|
+
_livenessLock = new WebLockWrapper(`@dxos/client-services/WorkerRuntime/${crypto.randomUUID()}`);
|
|
451
|
+
_broadcastChannel;
|
|
452
|
+
_sessionForNetworking;
|
|
453
|
+
_config;
|
|
454
|
+
_signalMetadataTags = {
|
|
455
|
+
runtime: "worker-runtime"
|
|
456
|
+
};
|
|
457
|
+
_signalTelemetryEnabled = false;
|
|
458
|
+
_runtime;
|
|
459
|
+
constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop, automaticallyConnectWebrtc = true, sqliteLayer }) {
|
|
460
|
+
this._configProvider = configProvider;
|
|
461
|
+
this._acquireLock = acquireLock;
|
|
462
|
+
this._releaseLock = releaseLock;
|
|
463
|
+
this._onStop = onStop;
|
|
464
|
+
this._channel = channel;
|
|
465
|
+
if (sqliteLayer) {
|
|
466
|
+
log3.warn("Using testing SQLite layer", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 52, S: this });
|
|
467
|
+
}
|
|
468
|
+
this._runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayer ?? LocalSqliteOpfsLayer), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
|
|
469
|
+
this._clientServices = new ClientServicesHost({
|
|
470
|
+
callbacks: {
|
|
471
|
+
onReset: async () => this.stop()
|
|
472
|
+
},
|
|
473
|
+
runtime: this._runtime.runtimeEffect,
|
|
474
|
+
runtimeProps: {
|
|
475
|
+
// Auto-activate spaces that were previously active after leader changeover.
|
|
476
|
+
autoActivateSpaces: true
|
|
477
|
+
}
|
|
255
478
|
});
|
|
256
|
-
|
|
257
|
-
obj[key] = value;
|
|
479
|
+
this._automaticallyConnectWebrtc = automaticallyConnectWebrtc;
|
|
258
480
|
}
|
|
259
|
-
return obj;
|
|
260
|
-
}
|
|
261
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
|
|
262
|
-
var WorkerRuntime = class {
|
|
263
481
|
get host() {
|
|
264
482
|
return this._clientServices;
|
|
265
483
|
}
|
|
484
|
+
get livenessLockKey() {
|
|
485
|
+
return this._livenessLock.key;
|
|
486
|
+
}
|
|
266
487
|
async start() {
|
|
267
|
-
|
|
268
|
-
F: __dxlog_file2,
|
|
269
|
-
L: 85,
|
|
270
|
-
S: this,
|
|
271
|
-
C: (f, a) => f(...a)
|
|
272
|
-
});
|
|
488
|
+
log3("starting...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 74, S: this });
|
|
273
489
|
try {
|
|
490
|
+
log3("worker-runtime: acquiring liveness lock (background)", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 76, S: this });
|
|
491
|
+
void this._livenessLock.acquire();
|
|
492
|
+
log3("worker-runtime: broadcasting stop to displace previous worker", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 79, S: this });
|
|
274
493
|
this._broadcastChannel = new BroadcastChannel(this._channel);
|
|
275
494
|
this._broadcastChannel.postMessage({
|
|
276
495
|
action: "stop"
|
|
277
496
|
});
|
|
278
497
|
this._broadcastChannel.onmessage = async (event) => {
|
|
279
498
|
if (event.data?.action === "stop") {
|
|
499
|
+
log3("worker-runtime: received stop broadcast", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 86, S: this });
|
|
280
500
|
await this.stop();
|
|
281
501
|
}
|
|
282
502
|
};
|
|
503
|
+
log3("worker-runtime: acquiring storage lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 90, S: this });
|
|
283
504
|
await this._acquireLock();
|
|
505
|
+
log3("worker-runtime: storage lock acquired, resolving config", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 92, S: this });
|
|
284
506
|
this._config = await this._configProvider();
|
|
507
|
+
log3("worker-runtime: config resolved", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 94, S: this });
|
|
508
|
+
this._signalTelemetryEnabled = this._config.get("runtime.client.signalTelemetryEnabled") ?? false;
|
|
509
|
+
const observabilityGroup = this._config.get("runtime.client.observabilityGroup");
|
|
510
|
+
if (observabilityGroup) {
|
|
511
|
+
this._signalMetadataTags.group = observabilityGroup;
|
|
512
|
+
}
|
|
285
513
|
const signals = this._config.get("runtime.services.signaling");
|
|
514
|
+
log3("worker-runtime: initializing client services host", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 101, S: this });
|
|
286
515
|
this._clientServices.initialize({
|
|
287
516
|
config: this._config,
|
|
288
517
|
signalManager: this._config.get("runtime.client.edgeFeatures")?.signaling ? void 0 : signals ? new WebsocketSignalManager(signals, () => this._signalTelemetryEnabled ? this._signalMetadataTags : {}) : new MemorySignalManager(new MemorySignalManagerContext()),
|
|
289
518
|
transportFactory: this._transportFactory
|
|
290
519
|
});
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}));
|
|
520
|
+
log3("worker-runtime: client services host initialized, opening", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 107, S: this });
|
|
521
|
+
await this._clientServices.open(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 108 }));
|
|
522
|
+
log3("worker-runtime: client services host opened, signalling ready", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 109, S: this });
|
|
295
523
|
this._ready.wake(void 0);
|
|
296
|
-
|
|
297
|
-
F: __dxlog_file2,
|
|
298
|
-
L: 110,
|
|
299
|
-
S: this,
|
|
300
|
-
C: (f, a) => f(...a)
|
|
301
|
-
});
|
|
524
|
+
log3("started", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 111, S: this });
|
|
302
525
|
setIdentityTags({
|
|
303
526
|
identityService: this._clientServices.services.IdentityService,
|
|
304
527
|
devicesService: this._clientServices.services.DevicesService,
|
|
@@ -308,25 +531,43 @@ var WorkerRuntime = class {
|
|
|
308
531
|
});
|
|
309
532
|
} catch (err) {
|
|
310
533
|
this._ready.wake(err);
|
|
311
|
-
|
|
312
|
-
F: __dxlog_file2,
|
|
313
|
-
L: 120,
|
|
314
|
-
S: this,
|
|
315
|
-
C: (f, a) => f(...a)
|
|
316
|
-
});
|
|
534
|
+
log3.error("starting", err, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 121, S: this });
|
|
317
535
|
}
|
|
318
536
|
}
|
|
319
537
|
async stop() {
|
|
320
538
|
this._releaseLock();
|
|
321
539
|
this._broadcastChannel?.close();
|
|
322
540
|
this._broadcastChannel = void 0;
|
|
323
|
-
await this._clientServices.close();
|
|
541
|
+
await this._clientServices.close(Context.default(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 129 }));
|
|
542
|
+
await this._runtime.dispose();
|
|
324
543
|
await this._onStop?.();
|
|
544
|
+
await this._livenessLock.release();
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Update signaling telemetry tags from a client-supplied config overlay.
|
|
548
|
+
*
|
|
549
|
+
* The worker services outlive individual client connections, so the first client seeds the
|
|
550
|
+
* worker's core config (storage, signaling, edge features). For fields that can legitimately
|
|
551
|
+
* differ per tab — `observabilityGroup` and `signalTelemetryEnabled` — this method lets later
|
|
552
|
+
* connections refresh the signal metadata the worker attaches to its signaling requests
|
|
553
|
+
* (last-writer-wins, matching the pre-DX-930 per-session RPC behaviour).
|
|
554
|
+
*/
|
|
555
|
+
updateSignalMetadata(config) {
|
|
556
|
+
const observabilityGroup = config.get("runtime.client.observabilityGroup");
|
|
557
|
+
if (observabilityGroup) {
|
|
558
|
+
this._signalMetadataTags.group = observabilityGroup;
|
|
559
|
+
} else {
|
|
560
|
+
delete this._signalMetadataTags.group;
|
|
561
|
+
}
|
|
562
|
+
const signalTelemetryEnabled = config.get("runtime.client.signalTelemetryEnabled");
|
|
563
|
+
if (signalTelemetryEnabled !== void 0) {
|
|
564
|
+
this._signalTelemetryEnabled = signalTelemetryEnabled;
|
|
565
|
+
}
|
|
325
566
|
}
|
|
326
567
|
/**
|
|
327
568
|
* Create a new session.
|
|
328
569
|
*/
|
|
329
|
-
async createSession({ appPort, systemPort, shellPort }) {
|
|
570
|
+
async createSession({ appPort, systemPort, shellPort, onClose }) {
|
|
330
571
|
const session = new WorkerSession({
|
|
331
572
|
serviceHost: this._clientServices,
|
|
332
573
|
appPort,
|
|
@@ -339,37 +580,38 @@ var WorkerRuntime = class {
|
|
|
339
580
|
if (this._sessions.size === 0) {
|
|
340
581
|
await this.stop();
|
|
341
582
|
} else {
|
|
342
|
-
this.
|
|
583
|
+
if (this._automaticallyConnectWebrtc) {
|
|
584
|
+
this._reconnectWebrtc();
|
|
585
|
+
}
|
|
343
586
|
}
|
|
587
|
+
await onClose?.();
|
|
344
588
|
});
|
|
345
589
|
await session.open();
|
|
346
|
-
|
|
347
|
-
F: __dxlog_file2,
|
|
348
|
-
L: 158,
|
|
349
|
-
S: this,
|
|
350
|
-
A: [
|
|
351
|
-
"!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin",
|
|
352
|
-
"`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`"
|
|
353
|
-
]
|
|
354
|
-
});
|
|
355
|
-
if (session.observabilityGroup) {
|
|
356
|
-
this._signalMetadataTags.group = session.observabilityGroup;
|
|
357
|
-
}
|
|
358
|
-
this._signalTelemetryEnabled = session.signalTelemetryEnabled ?? false;
|
|
590
|
+
invariant3(!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin, `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 181, S: this, A: ["!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin", "`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`"] });
|
|
359
591
|
this._signalMetadataTags.origin = session.origin;
|
|
360
592
|
this._sessions.add(session);
|
|
361
|
-
this.
|
|
593
|
+
if (this._automaticallyConnectWebrtc) {
|
|
594
|
+
this._reconnectWebrtc();
|
|
595
|
+
}
|
|
596
|
+
return session;
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Connects the WebRTC bridge to the specified session.
|
|
600
|
+
* If no session is provided, disconnects the WebRTC bridge.
|
|
601
|
+
*
|
|
602
|
+
* Called automatically if `automaticallyConnectWebrtc` is true.
|
|
603
|
+
*
|
|
604
|
+
* @param session The session to connect the WebRTC bridge to.
|
|
605
|
+
*/
|
|
606
|
+
connectWebrtcBridge(session) {
|
|
607
|
+
this._sessionForNetworking = session;
|
|
608
|
+
this._transportFactory.setBridgeService(session?.bridgeService);
|
|
362
609
|
}
|
|
363
610
|
/**
|
|
364
611
|
* Selects one of the existing session for WebRTC networking.
|
|
365
612
|
*/
|
|
366
613
|
_reconnectWebrtc() {
|
|
367
|
-
|
|
368
|
-
F: __dxlog_file2,
|
|
369
|
-
L: 176,
|
|
370
|
-
S: this,
|
|
371
|
-
C: (f, a) => f(...a)
|
|
372
|
-
});
|
|
614
|
+
log3("reconnecting webrtc...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 203, S: this });
|
|
373
615
|
if (this._sessionForNetworking) {
|
|
374
616
|
if (!this._sessions.has(this._sessionForNetworking)) {
|
|
375
617
|
this._sessionForNetworking = void 0;
|
|
@@ -377,42 +619,57 @@ var WorkerRuntime = class {
|
|
|
377
619
|
}
|
|
378
620
|
if (!this._sessionForNetworking) {
|
|
379
621
|
const selected = Array.from(this._sessions).find((session) => session.bridgeService);
|
|
380
|
-
|
|
381
|
-
this._sessionForNetworking = selected;
|
|
382
|
-
this._transportFactory.setBridgeService(selected.bridgeService);
|
|
383
|
-
} else {
|
|
384
|
-
this._transportFactory.setBridgeService(void 0);
|
|
385
|
-
}
|
|
622
|
+
this.connectWebrtcBridge(selected);
|
|
386
623
|
}
|
|
387
624
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
625
|
+
};
|
|
626
|
+
var DB_NAME = "DXOS";
|
|
627
|
+
var SqlExportLayer = Layer.effect(SqlExport.SqlExport, Effect.gen(function* () {
|
|
628
|
+
const sql = yield* SqliteClient.SqliteClient;
|
|
629
|
+
return {
|
|
630
|
+
export: sql.export
|
|
631
|
+
};
|
|
632
|
+
}));
|
|
633
|
+
var LocalSqliteOpfsLayer = Layer.unwrapScoped(Effect.gen(function* () {
|
|
634
|
+
const { port1: clientPort, port2: serverPort } = new MessageChannel();
|
|
635
|
+
clientPort.start();
|
|
636
|
+
serverPort.start();
|
|
637
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => {
|
|
638
|
+
clientPort.close();
|
|
639
|
+
serverPort.close();
|
|
640
|
+
}));
|
|
641
|
+
yield* Effect.forkScoped(OpfsWorker.run({
|
|
642
|
+
port: serverPort,
|
|
643
|
+
dbName: DB_NAME
|
|
644
|
+
}));
|
|
645
|
+
return SqlExportLayer.pipe(Layer.provideMerge(SqliteClient.layer({
|
|
646
|
+
worker: Effect.succeed(clientPort)
|
|
647
|
+
})));
|
|
648
|
+
}));
|
|
649
|
+
var WebLockWrapper = class {
|
|
650
|
+
#key;
|
|
651
|
+
#release;
|
|
652
|
+
constructor(key) {
|
|
653
|
+
this.#key = key;
|
|
654
|
+
}
|
|
655
|
+
get key() {
|
|
656
|
+
return this.#key;
|
|
657
|
+
}
|
|
658
|
+
acquire(options = {}) {
|
|
659
|
+
return navigator.locks.request(this.#key, options, async () => {
|
|
660
|
+
await new Promise((resolve) => {
|
|
661
|
+
this.#release = resolve;
|
|
662
|
+
});
|
|
663
|
+
this.#release = void 0;
|
|
414
664
|
});
|
|
415
665
|
}
|
|
666
|
+
release() {
|
|
667
|
+
this.#release?.();
|
|
668
|
+
this.#release = void 0;
|
|
669
|
+
}
|
|
670
|
+
[Symbol.dispose]() {
|
|
671
|
+
this.release();
|
|
672
|
+
}
|
|
416
673
|
};
|
|
417
674
|
export {
|
|
418
675
|
ClientRpcServer,
|
|
@@ -432,33 +689,38 @@ export {
|
|
|
432
689
|
InvitationsHandler,
|
|
433
690
|
InvitationsManager,
|
|
434
691
|
InvitationsServiceImpl,
|
|
435
|
-
Lock,
|
|
436
692
|
ServiceContext,
|
|
437
693
|
ServiceRegistry,
|
|
694
|
+
SpaceArchiveWriter,
|
|
438
695
|
SpaceInvitationProtocol,
|
|
439
696
|
SpacesServiceImpl,
|
|
440
697
|
TrustedKeySetAuthVerifier,
|
|
441
698
|
WorkerRuntime,
|
|
442
699
|
WorkerSession,
|
|
700
|
+
buildDatabaseDirectoryFromObjects,
|
|
443
701
|
createAdmissionKeypair,
|
|
444
702
|
createAuthProvider,
|
|
445
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
446
|
-
createCollectDiagnosticsBroadcastSender,
|
|
447
703
|
createDiagnostics,
|
|
448
704
|
createLevel,
|
|
449
705
|
createStorageObjects,
|
|
450
706
|
decodeProfileArchive,
|
|
707
|
+
detectSpaceArchiveFormat,
|
|
451
708
|
encodeProfileArchive,
|
|
452
709
|
exportProfileData,
|
|
710
|
+
extractSpaceArchive,
|
|
453
711
|
getNetworkPeers,
|
|
454
712
|
importProfileData,
|
|
455
|
-
|
|
713
|
+
objJsonToObjectStructure,
|
|
714
|
+
objectStructureToObjJson,
|
|
715
|
+
orderObjJsonFields,
|
|
716
|
+
readSerializedSpaceArchive,
|
|
456
717
|
subscribeToFeedBlocks,
|
|
457
718
|
subscribeToFeeds,
|
|
458
719
|
subscribeToNetworkStatus,
|
|
459
720
|
subscribeToNetworkTopics,
|
|
460
721
|
subscribeToSignal,
|
|
461
722
|
subscribeToSpaces,
|
|
462
|
-
subscribeToSwarmInfo
|
|
723
|
+
subscribeToSwarmInfo,
|
|
724
|
+
writeSerializedSpaceArchive
|
|
463
725
|
};
|
|
464
726
|
//# sourceMappingURL=index.mjs.map
|