@dxos/client-services 0.8.4-main.ae835ea → 0.8.4-main.bc2380dfbc
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/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/browser/chunk-QCWEHHJW.mjs +24 -0
- package/dist/lib/browser/chunk-QCWEHHJW.mjs.map +7 -0
- package/dist/lib/browser/{chunk-KPYVJG6G.mjs → chunk-TUCJORVO.mjs} +2153 -3654
- package/dist/lib/browser/chunk-TUCJORVO.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 +424 -137
- 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 +28 -29
- 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-BBBSS6UL.mjs → chunk-IQLAKNSR.mjs} +2099 -3469
- package/dist/lib/node-esm/chunk-IQLAKNSR.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +424 -137
- 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 +28 -29
- 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 +30 -19
- 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 +71 -56
- package/src/index.ts +1 -0
- package/src/packlets/agents/edge-agent-manager.ts +8 -5
- package/src/packlets/agents/edge-agent-service.ts +4 -2
- package/src/packlets/devices/devices-service.test.ts +0 -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 +2 -2
- 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 +377 -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 +153 -61
- 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 +252 -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 +108 -120
- package/src/packlets/spaces/data-space.ts +64 -36
- package/src/packlets/spaces/edge-feed-replicator.test.ts +1 -1
- package/src/packlets/spaces/edge-feed-replicator.ts +11 -9
- package/src/packlets/spaces/epoch-migrations.ts +6 -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 +124 -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-KPYVJG6G.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BBBSS6UL.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 { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
ClientRpcServer,
|
|
4
3
|
ClientServicesHost,
|
|
5
4
|
DataSpace,
|
|
6
5
|
DataSpaceManager,
|
|
@@ -17,57 +16,308 @@ 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-IQLAKNSR.mjs";
|
|
49
|
+
import "./chunk-2DT3MZRL.mjs";
|
|
50
|
+
import {
|
|
51
|
+
__export,
|
|
52
|
+
__reExport
|
|
53
|
+
} from "./chunk-2SZHAWBN.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
|
-
|
|
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) {
|
|
65
316
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
66
317
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
67
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;
|
|
68
319
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
69
320
|
}
|
|
70
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
|
|
71
321
|
var WorkerSession = class {
|
|
72
322
|
_clientRpc;
|
|
73
323
|
_shellClientRpc;
|
|
@@ -76,40 +326,29 @@ var WorkerSession = class {
|
|
|
76
326
|
_serviceHost;
|
|
77
327
|
onClose = new Callback();
|
|
78
328
|
origin;
|
|
79
|
-
// TODO(nf): factor out?
|
|
80
|
-
observabilityGroup;
|
|
81
|
-
signalTelemetryEnabled;
|
|
82
329
|
lockKey;
|
|
83
330
|
bridgeService;
|
|
84
331
|
constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
|
|
85
|
-
|
|
86
|
-
F: __dxlog_file,
|
|
87
|
-
L: 54,
|
|
88
|
-
S: this,
|
|
89
|
-
A: [
|
|
90
|
-
"serviceHost",
|
|
91
|
-
""
|
|
92
|
-
]
|
|
93
|
-
});
|
|
332
|
+
invariant2(serviceHost, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 30, S: this, A: ["serviceHost", ""] });
|
|
94
333
|
this._serviceHost = serviceHost;
|
|
95
334
|
const middleware = {
|
|
96
|
-
handleCall: async (method, params, handler) => {
|
|
335
|
+
handleCall: async (method, params, handler, options) => {
|
|
97
336
|
const error = await readySignal.wait({
|
|
98
337
|
timeout: PROXY_CONNECTION_TIMEOUT
|
|
99
338
|
});
|
|
100
339
|
if (error) {
|
|
101
340
|
throw error;
|
|
102
341
|
}
|
|
103
|
-
return handler(method, params);
|
|
342
|
+
return handler(method, params, options);
|
|
104
343
|
},
|
|
105
|
-
handleStream: async (method, params, handler) => {
|
|
344
|
+
handleStream: async (method, params, handler, options) => {
|
|
106
345
|
const error = await readySignal.wait({
|
|
107
346
|
timeout: PROXY_CONNECTION_TIMEOUT
|
|
108
347
|
});
|
|
109
348
|
if (error) {
|
|
110
349
|
throw error;
|
|
111
350
|
}
|
|
112
|
-
return handler(method, params);
|
|
351
|
+
return handler(method, params, options);
|
|
113
352
|
}
|
|
114
353
|
};
|
|
115
354
|
this._clientRpc = new ClientRpcServer({
|
|
@@ -130,8 +369,6 @@ var WorkerSession = class {
|
|
|
130
369
|
start: async (request) => {
|
|
131
370
|
this.origin = request.origin;
|
|
132
371
|
this.lockKey = request.lockKey;
|
|
133
|
-
this.observabilityGroup = request.observabilityGroup;
|
|
134
|
-
this.signalTelemetryEnabled = request.signalTelemetryEnabled;
|
|
135
372
|
this._startTrigger.wake();
|
|
136
373
|
},
|
|
137
374
|
stop: async () => {
|
|
@@ -139,12 +376,7 @@ var WorkerSession = class {
|
|
|
139
376
|
try {
|
|
140
377
|
await this.close();
|
|
141
378
|
} catch (err) {
|
|
142
|
-
|
|
143
|
-
F: __dxlog_file,
|
|
144
|
-
L: 108,
|
|
145
|
-
S: this,
|
|
146
|
-
C: (f, a) => f(...a)
|
|
147
|
-
});
|
|
379
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 77, S: this });
|
|
148
380
|
}
|
|
149
381
|
});
|
|
150
382
|
}
|
|
@@ -156,12 +388,7 @@ var WorkerSession = class {
|
|
|
156
388
|
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
157
389
|
}
|
|
158
390
|
async open() {
|
|
159
|
-
|
|
160
|
-
F: __dxlog_file,
|
|
161
|
-
L: 122,
|
|
162
|
-
S: this,
|
|
163
|
-
C: (f, a) => f(...a)
|
|
164
|
-
});
|
|
391
|
+
log2("opening...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 89, S: this });
|
|
165
392
|
await Promise.all([
|
|
166
393
|
this._clientRpc.open(),
|
|
167
394
|
this._iframeRpc.open(),
|
|
@@ -173,51 +400,26 @@ var WorkerSession = class {
|
|
|
173
400
|
if (this.lockKey) {
|
|
174
401
|
void this._afterLockReleases(this.lockKey, () => this.close());
|
|
175
402
|
}
|
|
176
|
-
|
|
177
|
-
F: __dxlog_file,
|
|
178
|
-
L: 133,
|
|
179
|
-
S: this,
|
|
180
|
-
C: (f, a) => f(...a)
|
|
181
|
-
});
|
|
403
|
+
log2("opened", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 103, S: this });
|
|
182
404
|
}
|
|
183
405
|
async close() {
|
|
184
|
-
|
|
185
|
-
F: __dxlog_file,
|
|
186
|
-
L: 137,
|
|
187
|
-
S: this,
|
|
188
|
-
C: (f, a) => f(...a)
|
|
189
|
-
});
|
|
406
|
+
log2.debug("closing...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 106, S: this });
|
|
190
407
|
try {
|
|
191
408
|
await this.onClose.callIfSet();
|
|
192
409
|
} catch (err) {
|
|
193
|
-
|
|
194
|
-
F: __dxlog_file,
|
|
195
|
-
L: 141,
|
|
196
|
-
S: this,
|
|
197
|
-
C: (f, a) => f(...a)
|
|
198
|
-
});
|
|
410
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 110, S: this });
|
|
199
411
|
}
|
|
200
412
|
await Promise.all([
|
|
201
413
|
this._clientRpc.close(),
|
|
202
414
|
this._iframeRpc.close()
|
|
203
415
|
]);
|
|
204
|
-
|
|
205
|
-
F: __dxlog_file,
|
|
206
|
-
L: 145,
|
|
207
|
-
S: this,
|
|
208
|
-
C: (f, a) => f(...a)
|
|
209
|
-
});
|
|
416
|
+
log2.debug("closed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 116, S: this });
|
|
210
417
|
}
|
|
211
418
|
async _maybeOpenShell() {
|
|
212
419
|
try {
|
|
213
420
|
this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
|
|
214
421
|
} catch {
|
|
215
|
-
|
|
216
|
-
F: __dxlog_file,
|
|
217
|
-
L: 152,
|
|
218
|
-
S: this,
|
|
219
|
-
C: (f, a) => f(...a)
|
|
220
|
-
});
|
|
422
|
+
log2.info("No shell connected.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 122, S: this });
|
|
221
423
|
}
|
|
222
424
|
}
|
|
223
425
|
_afterLockReleases(lockKey, callback) {
|
|
@@ -225,15 +427,15 @@ var WorkerSession = class {
|
|
|
225
427
|
}).then(callback);
|
|
226
428
|
}
|
|
227
429
|
};
|
|
228
|
-
|
|
430
|
+
_ts_decorate2([
|
|
229
431
|
logInfo
|
|
230
432
|
], WorkerSession.prototype, "origin", void 0);
|
|
231
|
-
|
|
433
|
+
_ts_decorate2([
|
|
232
434
|
logInfo
|
|
233
435
|
], WorkerSession.prototype, "lockKey", void 0);
|
|
234
436
|
|
|
235
437
|
// src/packlets/worker/worker-runtime.ts
|
|
236
|
-
var
|
|
438
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
|
|
237
439
|
var WorkerRuntime = class {
|
|
238
440
|
_configProvider;
|
|
239
441
|
_acquireLock;
|
|
@@ -244,6 +446,8 @@ var WorkerRuntime = class {
|
|
|
244
446
|
_sessions = /* @__PURE__ */ new Set();
|
|
245
447
|
_clientServices;
|
|
246
448
|
_channel;
|
|
449
|
+
_automaticallyConnectWebrtc;
|
|
450
|
+
_livenessLock = new WebLockWrapper(`@dxos/client-services/WorkerRuntime/${crypto.randomUUID()}`);
|
|
247
451
|
_broadcastChannel;
|
|
248
452
|
_sessionForNetworking;
|
|
249
453
|
_config;
|
|
@@ -251,57 +455,73 @@ var WorkerRuntime = class {
|
|
|
251
455
|
runtime: "worker-runtime"
|
|
252
456
|
};
|
|
253
457
|
_signalTelemetryEnabled = false;
|
|
254
|
-
|
|
458
|
+
_runtime;
|
|
459
|
+
constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop, automaticallyConnectWebrtc = true, sqliteLayer }) {
|
|
255
460
|
this._configProvider = configProvider;
|
|
256
461
|
this._acquireLock = acquireLock;
|
|
257
462
|
this._releaseLock = releaseLock;
|
|
258
463
|
this._onStop = onStop;
|
|
259
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));
|
|
260
469
|
this._clientServices = new ClientServicesHost({
|
|
261
470
|
callbacks: {
|
|
262
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
|
|
263
477
|
}
|
|
264
478
|
});
|
|
479
|
+
this._automaticallyConnectWebrtc = automaticallyConnectWebrtc;
|
|
265
480
|
}
|
|
266
481
|
get host() {
|
|
267
482
|
return this._clientServices;
|
|
268
483
|
}
|
|
484
|
+
get livenessLockKey() {
|
|
485
|
+
return this._livenessLock.key;
|
|
486
|
+
}
|
|
269
487
|
async start() {
|
|
270
|
-
|
|
271
|
-
F: __dxlog_file2,
|
|
272
|
-
L: 85,
|
|
273
|
-
S: this,
|
|
274
|
-
C: (f, a) => f(...a)
|
|
275
|
-
});
|
|
488
|
+
log3("starting...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 74, S: this });
|
|
276
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 });
|
|
277
493
|
this._broadcastChannel = new BroadcastChannel(this._channel);
|
|
278
494
|
this._broadcastChannel.postMessage({
|
|
279
495
|
action: "stop"
|
|
280
496
|
});
|
|
281
497
|
this._broadcastChannel.onmessage = async (event) => {
|
|
282
498
|
if (event.data?.action === "stop") {
|
|
499
|
+
log3("worker-runtime: received stop broadcast", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 86, S: this });
|
|
283
500
|
await this.stop();
|
|
284
501
|
}
|
|
285
502
|
};
|
|
503
|
+
log3("worker-runtime: acquiring storage lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 90, S: this });
|
|
286
504
|
await this._acquireLock();
|
|
505
|
+
log3("worker-runtime: storage lock acquired, resolving config", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 92, S: this });
|
|
287
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
|
+
}
|
|
288
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 });
|
|
289
515
|
this._clientServices.initialize({
|
|
290
516
|
config: this._config,
|
|
291
517
|
signalManager: this._config.get("runtime.client.edgeFeatures")?.signaling ? void 0 : signals ? new WebsocketSignalManager(signals, () => this._signalTelemetryEnabled ? this._signalMetadataTags : {}) : new MemorySignalManager(new MemorySignalManagerContext()),
|
|
292
518
|
transportFactory: this._transportFactory
|
|
293
519
|
});
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
}));
|
|
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 });
|
|
298
523
|
this._ready.wake(void 0);
|
|
299
|
-
|
|
300
|
-
F: __dxlog_file2,
|
|
301
|
-
L: 110,
|
|
302
|
-
S: this,
|
|
303
|
-
C: (f, a) => f(...a)
|
|
304
|
-
});
|
|
524
|
+
log3("started", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 111, S: this });
|
|
305
525
|
setIdentityTags({
|
|
306
526
|
identityService: this._clientServices.services.IdentityService,
|
|
307
527
|
devicesService: this._clientServices.services.DevicesService,
|
|
@@ -311,25 +531,43 @@ var WorkerRuntime = class {
|
|
|
311
531
|
});
|
|
312
532
|
} catch (err) {
|
|
313
533
|
this._ready.wake(err);
|
|
314
|
-
|
|
315
|
-
F: __dxlog_file2,
|
|
316
|
-
L: 120,
|
|
317
|
-
S: this,
|
|
318
|
-
C: (f, a) => f(...a)
|
|
319
|
-
});
|
|
534
|
+
log3.error("starting", err, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 121, S: this });
|
|
320
535
|
}
|
|
321
536
|
}
|
|
322
537
|
async stop() {
|
|
323
538
|
this._releaseLock();
|
|
324
539
|
this._broadcastChannel?.close();
|
|
325
540
|
this._broadcastChannel = void 0;
|
|
326
|
-
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();
|
|
327
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
|
+
}
|
|
328
566
|
}
|
|
329
567
|
/**
|
|
330
568
|
* Create a new session.
|
|
331
569
|
*/
|
|
332
|
-
async createSession({ appPort, systemPort, shellPort }) {
|
|
570
|
+
async createSession({ appPort, systemPort, shellPort, onClose }) {
|
|
333
571
|
const session = new WorkerSession({
|
|
334
572
|
serviceHost: this._clientServices,
|
|
335
573
|
appPort,
|
|
@@ -342,37 +580,38 @@ var WorkerRuntime = class {
|
|
|
342
580
|
if (this._sessions.size === 0) {
|
|
343
581
|
await this.stop();
|
|
344
582
|
} else {
|
|
345
|
-
this.
|
|
583
|
+
if (this._automaticallyConnectWebrtc) {
|
|
584
|
+
this._reconnectWebrtc();
|
|
585
|
+
}
|
|
346
586
|
}
|
|
587
|
+
await onClose?.();
|
|
347
588
|
});
|
|
348
589
|
await session.open();
|
|
349
|
-
|
|
350
|
-
F: __dxlog_file2,
|
|
351
|
-
L: 158,
|
|
352
|
-
S: this,
|
|
353
|
-
A: [
|
|
354
|
-
"!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin",
|
|
355
|
-
"`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`"
|
|
356
|
-
]
|
|
357
|
-
});
|
|
358
|
-
if (session.observabilityGroup) {
|
|
359
|
-
this._signalMetadataTags.group = session.observabilityGroup;
|
|
360
|
-
}
|
|
361
|
-
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}?`"] });
|
|
362
591
|
this._signalMetadataTags.origin = session.origin;
|
|
363
592
|
this._sessions.add(session);
|
|
364
|
-
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);
|
|
365
609
|
}
|
|
366
610
|
/**
|
|
367
611
|
* Selects one of the existing session for WebRTC networking.
|
|
368
612
|
*/
|
|
369
613
|
_reconnectWebrtc() {
|
|
370
|
-
|
|
371
|
-
F: __dxlog_file2,
|
|
372
|
-
L: 176,
|
|
373
|
-
S: this,
|
|
374
|
-
C: (f, a) => f(...a)
|
|
375
|
-
});
|
|
614
|
+
log3("reconnecting webrtc...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 203, S: this });
|
|
376
615
|
if (this._sessionForNetworking) {
|
|
377
616
|
if (!this._sessions.has(this._sessionForNetworking)) {
|
|
378
617
|
this._sessionForNetworking = void 0;
|
|
@@ -380,15 +619,58 @@ var WorkerRuntime = class {
|
|
|
380
619
|
}
|
|
381
620
|
if (!this._sessionForNetworking) {
|
|
382
621
|
const selected = Array.from(this._sessions).find((session) => session.bridgeService);
|
|
383
|
-
|
|
384
|
-
this._sessionForNetworking = selected;
|
|
385
|
-
this._transportFactory.setBridgeService(selected.bridgeService);
|
|
386
|
-
} else {
|
|
387
|
-
this._transportFactory.setBridgeService(void 0);
|
|
388
|
-
}
|
|
622
|
+
this.connectWebrtcBridge(selected);
|
|
389
623
|
}
|
|
390
624
|
}
|
|
391
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;
|
|
664
|
+
});
|
|
665
|
+
}
|
|
666
|
+
release() {
|
|
667
|
+
this.#release?.();
|
|
668
|
+
this.#release = void 0;
|
|
669
|
+
}
|
|
670
|
+
[Symbol.dispose]() {
|
|
671
|
+
this.release();
|
|
672
|
+
}
|
|
673
|
+
};
|
|
392
674
|
export {
|
|
393
675
|
ClientRpcServer,
|
|
394
676
|
ClientServicesHost,
|
|
@@ -407,33 +689,38 @@ export {
|
|
|
407
689
|
InvitationsHandler,
|
|
408
690
|
InvitationsManager,
|
|
409
691
|
InvitationsServiceImpl,
|
|
410
|
-
Lock,
|
|
411
692
|
ServiceContext,
|
|
412
693
|
ServiceRegistry,
|
|
694
|
+
SpaceArchiveWriter,
|
|
413
695
|
SpaceInvitationProtocol,
|
|
414
696
|
SpacesServiceImpl,
|
|
415
697
|
TrustedKeySetAuthVerifier,
|
|
416
698
|
WorkerRuntime,
|
|
417
699
|
WorkerSession,
|
|
700
|
+
buildDatabaseDirectoryFromObjects,
|
|
418
701
|
createAdmissionKeypair,
|
|
419
702
|
createAuthProvider,
|
|
420
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
421
|
-
createCollectDiagnosticsBroadcastSender,
|
|
422
703
|
createDiagnostics,
|
|
423
704
|
createLevel,
|
|
424
705
|
createStorageObjects,
|
|
425
706
|
decodeProfileArchive,
|
|
707
|
+
detectSpaceArchiveFormat,
|
|
426
708
|
encodeProfileArchive,
|
|
427
709
|
exportProfileData,
|
|
710
|
+
extractSpaceArchive,
|
|
428
711
|
getNetworkPeers,
|
|
429
712
|
importProfileData,
|
|
430
|
-
|
|
713
|
+
objJsonToObjectStructure,
|
|
714
|
+
objectStructureToObjJson,
|
|
715
|
+
orderObjJsonFields,
|
|
716
|
+
readSerializedSpaceArchive,
|
|
431
717
|
subscribeToFeedBlocks,
|
|
432
718
|
subscribeToFeeds,
|
|
433
719
|
subscribeToNetworkStatus,
|
|
434
720
|
subscribeToNetworkTopics,
|
|
435
721
|
subscribeToSignal,
|
|
436
722
|
subscribeToSpaces,
|
|
437
|
-
subscribeToSwarmInfo
|
|
723
|
+
subscribeToSwarmInfo,
|
|
724
|
+
writeSerializedSpaceArchive
|
|
438
725
|
};
|
|
439
726
|
//# sourceMappingURL=index.mjs.map
|