@dxos/client-services 0.8.4-main.b97322e → 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-WKKP35EC.mjs → chunk-TUCJORVO.mjs} +3173 -4457
- 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 +451 -145
- 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 +35 -36
- 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-ZE2HYS56.mjs → chunk-IQLAKNSR.mjs} +3052 -4204
- package/dist/lib/node-esm/chunk-IQLAKNSR.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +451 -145
- 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 +35 -36
- 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 +3 -2
- 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 +20 -20
- package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/feeds.d.ts +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 +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 +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 +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 +3 -4
- 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 +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 +7 -7
- 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 +9 -12
- 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 +2 -2
- 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 +8 -5
- 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 +4 -4
- package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +5 -4
- 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 +5 -1
- package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
- package/dist/types/src/packlets/network/network-service.d.ts +7 -6
- 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 +14 -10
- 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 +8 -2
- 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 +1 -1
- 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 +31 -20
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +30 -13
- 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 +11 -8
- 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 +2 -2
- 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 +8 -7
- 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 +73 -56
- package/src/index.ts +1 -0
- package/src/packlets/agents/edge-agent-manager.ts +10 -7
- package/src/packlets/agents/edge-agent-service.ts +17 -5
- package/src/packlets/devices/devices-service.test.ts +3 -3
- package/src/packlets/devices/devices-service.ts +2 -2
- package/src/packlets/devtools/devtools.ts +29 -29
- package/src/packlets/devtools/feeds.ts +2 -2
- package/src/packlets/devtools/network.ts +1 -1
- package/src/packlets/diagnostics/browser-diagnostics-broadcast.ts +1 -1
- package/src/packlets/diagnostics/diagnostics-broadcast.ts +1 -1
- package/src/packlets/diagnostics/diagnostics-collector.ts +1 -1
- package/src/packlets/diagnostics/diagnostics.ts +2 -3
- package/src/packlets/diagnostics/index.ts +1 -1
- package/src/packlets/identity/authenticator.node.test.ts +1 -1
- package/src/packlets/identity/authenticator.ts +3 -3
- package/src/packlets/identity/contacts-service.ts +2 -2
- package/src/packlets/identity/identity-manager.test.ts +8 -8
- package/src/packlets/identity/identity-manager.ts +25 -24
- package/src/packlets/identity/identity-recovery-manager.ts +22 -18
- package/src/packlets/identity/identity-service.test.ts +8 -28
- package/src/packlets/identity/identity-service.ts +13 -80
- package/src/packlets/identity/identity.test.ts +11 -11
- package/src/packlets/identity/identity.ts +17 -39
- package/src/packlets/invitations/device-invitation-protocol.test.ts +1 -1
- package/src/packlets/invitations/device-invitation-protocol.ts +8 -6
- package/src/packlets/invitations/edge-invitation-handler.ts +10 -6
- package/src/packlets/invitations/invitation-guest-extenstion.ts +7 -5
- package/src/packlets/invitations/invitation-host-extension.ts +15 -16
- package/src/packlets/invitations/invitation-protocol.ts +8 -5
- package/src/packlets/invitations/invitation-state.ts +1 -15
- package/src/packlets/invitations/invitations-handler.test.ts +7 -7
- package/src/packlets/invitations/invitations-handler.ts +77 -25
- package/src/packlets/invitations/invitations-manager.ts +43 -18
- package/src/packlets/invitations/invitations-service.ts +10 -10
- package/src/packlets/invitations/space-invitation-protocol.test.ts +19 -18
- package/src/packlets/invitations/space-invitation-protocol.ts +13 -17
- package/src/packlets/invitations/utils.ts +1 -1
- package/src/packlets/locks/browser.ts +1 -1
- package/src/packlets/locks/index.ts +1 -1
- package/src/packlets/logging/logging-service.ts +22 -18
- package/src/packlets/logging/logging.test.ts +1 -1
- package/src/packlets/network/network-service.test.ts +3 -3
- package/src/packlets/network/network-service.ts +12 -10
- package/src/packlets/services/client-rpc-server.ts +20 -17
- 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 +4 -3
- package/src/packlets/services/service-context.ts +160 -67
- package/src/packlets/services/service-host.test.ts +10 -9
- package/src/packlets/services/service-host.ts +85 -47
- package/src/packlets/services/service-registry.test.ts +1 -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 +65 -4
- package/src/packlets/space-export/space-archive-writer.ts +44 -6
- package/src/packlets/space-export/space-archive.test.ts +461 -0
- package/src/packlets/space-export/tar.test.ts +1 -1
- package/src/packlets/spaces/automerge-space-state.ts +1 -1
- package/src/packlets/spaces/data-space-manager.test.ts +79 -13
- package/src/packlets/spaces/data-space-manager.ts +134 -129
- package/src/packlets/spaces/data-space.ts +71 -42
- package/src/packlets/spaces/edge-feed-replicator.test.ts +4 -4
- package/src/packlets/spaces/edge-feed-replicator.ts +13 -11
- 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 +3 -3
- package/src/packlets/spaces/notarization-plugin.ts +13 -12
- package/src/packlets/spaces/spaces-service.test.ts +20 -12
- package/src/packlets/spaces/spaces-service.ts +139 -38
- package/src/packlets/storage/profile-archive.ts +1 -1
- package/src/packlets/storage/storage.ts +7 -8
- package/src/packlets/system/system-service.test.ts +1 -1
- package/src/packlets/system/system-service.ts +4 -4
- package/src/packlets/testing/invitation-utils.ts +11 -7
- package/src/packlets/testing/test-builder.ts +39 -13
- package/src/packlets/worker/worker-runtime.ts +189 -17
- package/src/packlets/worker/worker-session.ts +15 -21
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-WKKP35EC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZE2HYS56.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,89 +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-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
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import { invariant } from "@dxos/invariant";
|
|
61
|
-
import { log, logInfo } from "@dxos/log";
|
|
308
|
+
import { Trigger, asyncTimeout } from "@dxos/async";
|
|
309
|
+
import { PROXY_CONNECTION_TIMEOUT, iframeServiceBundle, workerServiceBundle } from "@dxos/client-protocol";
|
|
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 {
|
|
322
|
+
_clientRpc;
|
|
323
|
+
_shellClientRpc;
|
|
324
|
+
_iframeRpc;
|
|
325
|
+
_startTrigger = new Trigger();
|
|
326
|
+
_serviceHost;
|
|
327
|
+
onClose = new Callback();
|
|
328
|
+
origin;
|
|
329
|
+
lockKey;
|
|
330
|
+
bridgeService;
|
|
72
331
|
constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
|
|
73
|
-
this
|
|
74
|
-
this.onClose = new Callback();
|
|
75
|
-
invariant(serviceHost, void 0, {
|
|
76
|
-
F: __dxlog_file,
|
|
77
|
-
L: 54,
|
|
78
|
-
S: this,
|
|
79
|
-
A: [
|
|
80
|
-
"serviceHost",
|
|
81
|
-
""
|
|
82
|
-
]
|
|
83
|
-
});
|
|
332
|
+
invariant2(serviceHost, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 30, S: this, A: ["serviceHost", ""] });
|
|
84
333
|
this._serviceHost = serviceHost;
|
|
85
334
|
const middleware = {
|
|
86
|
-
handleCall: async (method, params, handler) => {
|
|
335
|
+
handleCall: async (method, params, handler, options) => {
|
|
87
336
|
const error = await readySignal.wait({
|
|
88
337
|
timeout: PROXY_CONNECTION_TIMEOUT
|
|
89
338
|
});
|
|
90
339
|
if (error) {
|
|
91
340
|
throw error;
|
|
92
341
|
}
|
|
93
|
-
return handler(method, params);
|
|
342
|
+
return handler(method, params, options);
|
|
94
343
|
},
|
|
95
|
-
handleStream: async (method, params, handler) => {
|
|
344
|
+
handleStream: async (method, params, handler, options) => {
|
|
96
345
|
const error = await readySignal.wait({
|
|
97
346
|
timeout: PROXY_CONNECTION_TIMEOUT
|
|
98
347
|
});
|
|
99
348
|
if (error) {
|
|
100
349
|
throw error;
|
|
101
350
|
}
|
|
102
|
-
return handler(method, params);
|
|
351
|
+
return handler(method, params, options);
|
|
103
352
|
}
|
|
104
353
|
};
|
|
105
354
|
this._clientRpc = new ClientRpcServer({
|
|
@@ -120,8 +369,6 @@ var WorkerSession = class {
|
|
|
120
369
|
start: async (request) => {
|
|
121
370
|
this.origin = request.origin;
|
|
122
371
|
this.lockKey = request.lockKey;
|
|
123
|
-
this.observabilityGroup = request.observabilityGroup;
|
|
124
|
-
this.signalTelemetryEnabled = request.signalTelemetryEnabled;
|
|
125
372
|
this._startTrigger.wake();
|
|
126
373
|
},
|
|
127
374
|
stop: async () => {
|
|
@@ -129,12 +376,7 @@ var WorkerSession = class {
|
|
|
129
376
|
try {
|
|
130
377
|
await this.close();
|
|
131
378
|
} catch (err) {
|
|
132
|
-
|
|
133
|
-
F: __dxlog_file,
|
|
134
|
-
L: 108,
|
|
135
|
-
S: this,
|
|
136
|
-
C: (f, a) => f(...a)
|
|
137
|
-
});
|
|
379
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 77, S: this });
|
|
138
380
|
}
|
|
139
381
|
});
|
|
140
382
|
}
|
|
@@ -146,12 +388,7 @@ var WorkerSession = class {
|
|
|
146
388
|
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
147
389
|
}
|
|
148
390
|
async open() {
|
|
149
|
-
|
|
150
|
-
F: __dxlog_file,
|
|
151
|
-
L: 122,
|
|
152
|
-
S: this,
|
|
153
|
-
C: (f, a) => f(...a)
|
|
154
|
-
});
|
|
391
|
+
log2("opening...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 89, S: this });
|
|
155
392
|
await Promise.all([
|
|
156
393
|
this._clientRpc.open(),
|
|
157
394
|
this._iframeRpc.open(),
|
|
@@ -163,51 +400,26 @@ var WorkerSession = class {
|
|
|
163
400
|
if (this.lockKey) {
|
|
164
401
|
void this._afterLockReleases(this.lockKey, () => this.close());
|
|
165
402
|
}
|
|
166
|
-
|
|
167
|
-
F: __dxlog_file,
|
|
168
|
-
L: 133,
|
|
169
|
-
S: this,
|
|
170
|
-
C: (f, a) => f(...a)
|
|
171
|
-
});
|
|
403
|
+
log2("opened", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 103, S: this });
|
|
172
404
|
}
|
|
173
405
|
async close() {
|
|
174
|
-
|
|
175
|
-
F: __dxlog_file,
|
|
176
|
-
L: 137,
|
|
177
|
-
S: this,
|
|
178
|
-
C: (f, a) => f(...a)
|
|
179
|
-
});
|
|
406
|
+
log2.debug("closing...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 106, S: this });
|
|
180
407
|
try {
|
|
181
408
|
await this.onClose.callIfSet();
|
|
182
409
|
} catch (err) {
|
|
183
|
-
|
|
184
|
-
F: __dxlog_file,
|
|
185
|
-
L: 141,
|
|
186
|
-
S: this,
|
|
187
|
-
C: (f, a) => f(...a)
|
|
188
|
-
});
|
|
410
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 110, S: this });
|
|
189
411
|
}
|
|
190
412
|
await Promise.all([
|
|
191
413
|
this._clientRpc.close(),
|
|
192
414
|
this._iframeRpc.close()
|
|
193
415
|
]);
|
|
194
|
-
|
|
195
|
-
F: __dxlog_file,
|
|
196
|
-
L: 145,
|
|
197
|
-
S: this,
|
|
198
|
-
C: (f, a) => f(...a)
|
|
199
|
-
});
|
|
416
|
+
log2.debug("closed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 116, S: this });
|
|
200
417
|
}
|
|
201
418
|
async _maybeOpenShell() {
|
|
202
419
|
try {
|
|
203
420
|
this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
|
|
204
421
|
} catch {
|
|
205
|
-
|
|
206
|
-
F: __dxlog_file,
|
|
207
|
-
L: 152,
|
|
208
|
-
S: this,
|
|
209
|
-
C: (f, a) => f(...a)
|
|
210
|
-
});
|
|
422
|
+
log2.info("No shell connected.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 122, S: this });
|
|
211
423
|
}
|
|
212
424
|
}
|
|
213
425
|
_afterLockReleases(lockKey, callback) {
|
|
@@ -215,74 +427,101 @@ var WorkerSession = class {
|
|
|
215
427
|
}).then(callback);
|
|
216
428
|
}
|
|
217
429
|
};
|
|
218
|
-
|
|
430
|
+
_ts_decorate2([
|
|
219
431
|
logInfo
|
|
220
432
|
], WorkerSession.prototype, "origin", void 0);
|
|
221
|
-
|
|
433
|
+
_ts_decorate2([
|
|
222
434
|
logInfo
|
|
223
435
|
], WorkerSession.prototype, "lockKey", void 0);
|
|
224
436
|
|
|
225
437
|
// src/packlets/worker/worker-runtime.ts
|
|
226
|
-
var
|
|
438
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
|
|
227
439
|
var WorkerRuntime = class {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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 }) {
|
|
236
460
|
this._configProvider = configProvider;
|
|
237
461
|
this._acquireLock = acquireLock;
|
|
238
462
|
this._releaseLock = releaseLock;
|
|
239
463
|
this._onStop = onStop;
|
|
240
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));
|
|
241
469
|
this._clientServices = new ClientServicesHost({
|
|
242
470
|
callbacks: {
|
|
243
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
|
|
244
477
|
}
|
|
245
478
|
});
|
|
479
|
+
this._automaticallyConnectWebrtc = automaticallyConnectWebrtc;
|
|
246
480
|
}
|
|
247
481
|
get host() {
|
|
248
482
|
return this._clientServices;
|
|
249
483
|
}
|
|
484
|
+
get livenessLockKey() {
|
|
485
|
+
return this._livenessLock.key;
|
|
486
|
+
}
|
|
250
487
|
async start() {
|
|
251
|
-
|
|
252
|
-
F: __dxlog_file2,
|
|
253
|
-
L: 84,
|
|
254
|
-
S: this,
|
|
255
|
-
C: (f, a) => f(...a)
|
|
256
|
-
});
|
|
488
|
+
log3("starting...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 74, S: this });
|
|
257
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 });
|
|
258
493
|
this._broadcastChannel = new BroadcastChannel(this._channel);
|
|
259
494
|
this._broadcastChannel.postMessage({
|
|
260
495
|
action: "stop"
|
|
261
496
|
});
|
|
262
497
|
this._broadcastChannel.onmessage = async (event) => {
|
|
263
498
|
if (event.data?.action === "stop") {
|
|
499
|
+
log3("worker-runtime: received stop broadcast", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 86, S: this });
|
|
264
500
|
await this.stop();
|
|
265
501
|
}
|
|
266
502
|
};
|
|
503
|
+
log3("worker-runtime: acquiring storage lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 90, S: this });
|
|
267
504
|
await this._acquireLock();
|
|
505
|
+
log3("worker-runtime: storage lock acquired, resolving config", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 92, S: this });
|
|
268
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
|
+
}
|
|
269
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 });
|
|
270
515
|
this._clientServices.initialize({
|
|
271
516
|
config: this._config,
|
|
272
517
|
signalManager: this._config.get("runtime.client.edgeFeatures")?.signaling ? void 0 : signals ? new WebsocketSignalManager(signals, () => this._signalTelemetryEnabled ? this._signalMetadataTags : {}) : new MemorySignalManager(new MemorySignalManagerContext()),
|
|
273
518
|
transportFactory: this._transportFactory
|
|
274
519
|
});
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
}));
|
|
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 });
|
|
279
523
|
this._ready.wake(void 0);
|
|
280
|
-
|
|
281
|
-
F: __dxlog_file2,
|
|
282
|
-
L: 109,
|
|
283
|
-
S: this,
|
|
284
|
-
C: (f, a) => f(...a)
|
|
285
|
-
});
|
|
524
|
+
log3("started", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 111, S: this });
|
|
286
525
|
setIdentityTags({
|
|
287
526
|
identityService: this._clientServices.services.IdentityService,
|
|
288
527
|
devicesService: this._clientServices.services.DevicesService,
|
|
@@ -292,25 +531,43 @@ var WorkerRuntime = class {
|
|
|
292
531
|
});
|
|
293
532
|
} catch (err) {
|
|
294
533
|
this._ready.wake(err);
|
|
295
|
-
|
|
296
|
-
F: __dxlog_file2,
|
|
297
|
-
L: 119,
|
|
298
|
-
S: this,
|
|
299
|
-
C: (f, a) => f(...a)
|
|
300
|
-
});
|
|
534
|
+
log3.error("starting", err, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 121, S: this });
|
|
301
535
|
}
|
|
302
536
|
}
|
|
303
537
|
async stop() {
|
|
304
538
|
this._releaseLock();
|
|
305
539
|
this._broadcastChannel?.close();
|
|
306
540
|
this._broadcastChannel = void 0;
|
|
307
|
-
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();
|
|
308
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
|
+
}
|
|
309
566
|
}
|
|
310
567
|
/**
|
|
311
568
|
* Create a new session.
|
|
312
569
|
*/
|
|
313
|
-
async createSession({ appPort, systemPort, shellPort }) {
|
|
570
|
+
async createSession({ appPort, systemPort, shellPort, onClose }) {
|
|
314
571
|
const session = new WorkerSession({
|
|
315
572
|
serviceHost: this._clientServices,
|
|
316
573
|
appPort,
|
|
@@ -323,37 +580,38 @@ var WorkerRuntime = class {
|
|
|
323
580
|
if (this._sessions.size === 0) {
|
|
324
581
|
await this.stop();
|
|
325
582
|
} else {
|
|
326
|
-
this.
|
|
583
|
+
if (this._automaticallyConnectWebrtc) {
|
|
584
|
+
this._reconnectWebrtc();
|
|
585
|
+
}
|
|
327
586
|
}
|
|
587
|
+
await onClose?.();
|
|
328
588
|
});
|
|
329
589
|
await session.open();
|
|
330
|
-
|
|
331
|
-
F: __dxlog_file2,
|
|
332
|
-
L: 157,
|
|
333
|
-
S: this,
|
|
334
|
-
A: [
|
|
335
|
-
"!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin",
|
|
336
|
-
"`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`"
|
|
337
|
-
]
|
|
338
|
-
});
|
|
339
|
-
if (session.observabilityGroup) {
|
|
340
|
-
this._signalMetadataTags.group = session.observabilityGroup;
|
|
341
|
-
}
|
|
342
|
-
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}?`"] });
|
|
343
591
|
this._signalMetadataTags.origin = session.origin;
|
|
344
592
|
this._sessions.add(session);
|
|
345
|
-
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);
|
|
346
609
|
}
|
|
347
610
|
/**
|
|
348
611
|
* Selects one of the existing session for WebRTC networking.
|
|
349
612
|
*/
|
|
350
613
|
_reconnectWebrtc() {
|
|
351
|
-
|
|
352
|
-
F: __dxlog_file2,
|
|
353
|
-
L: 175,
|
|
354
|
-
S: this,
|
|
355
|
-
C: (f, a) => f(...a)
|
|
356
|
-
});
|
|
614
|
+
log3("reconnecting webrtc...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 203, S: this });
|
|
357
615
|
if (this._sessionForNetworking) {
|
|
358
616
|
if (!this._sessions.has(this._sessionForNetworking)) {
|
|
359
617
|
this._sessionForNetworking = void 0;
|
|
@@ -361,15 +619,58 @@ var WorkerRuntime = class {
|
|
|
361
619
|
}
|
|
362
620
|
if (!this._sessionForNetworking) {
|
|
363
621
|
const selected = Array.from(this._sessions).find((session) => session.bridgeService);
|
|
364
|
-
|
|
365
|
-
this._sessionForNetworking = selected;
|
|
366
|
-
this._transportFactory.setBridgeService(selected.bridgeService);
|
|
367
|
-
} else {
|
|
368
|
-
this._transportFactory.setBridgeService(void 0);
|
|
369
|
-
}
|
|
622
|
+
this.connectWebrtcBridge(selected);
|
|
370
623
|
}
|
|
371
624
|
}
|
|
372
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
|
+
};
|
|
373
674
|
export {
|
|
374
675
|
ClientRpcServer,
|
|
375
676
|
ClientServicesHost,
|
|
@@ -388,33 +689,38 @@ export {
|
|
|
388
689
|
InvitationsHandler,
|
|
389
690
|
InvitationsManager,
|
|
390
691
|
InvitationsServiceImpl,
|
|
391
|
-
Lock,
|
|
392
692
|
ServiceContext,
|
|
393
693
|
ServiceRegistry,
|
|
694
|
+
SpaceArchiveWriter,
|
|
394
695
|
SpaceInvitationProtocol,
|
|
395
696
|
SpacesServiceImpl,
|
|
396
697
|
TrustedKeySetAuthVerifier,
|
|
397
698
|
WorkerRuntime,
|
|
398
699
|
WorkerSession,
|
|
700
|
+
buildDatabaseDirectoryFromObjects,
|
|
399
701
|
createAdmissionKeypair,
|
|
400
702
|
createAuthProvider,
|
|
401
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
402
|
-
createCollectDiagnosticsBroadcastSender,
|
|
403
703
|
createDiagnostics,
|
|
404
704
|
createLevel,
|
|
405
705
|
createStorageObjects,
|
|
406
706
|
decodeProfileArchive,
|
|
707
|
+
detectSpaceArchiveFormat,
|
|
407
708
|
encodeProfileArchive,
|
|
408
709
|
exportProfileData,
|
|
710
|
+
extractSpaceArchive,
|
|
409
711
|
getNetworkPeers,
|
|
410
712
|
importProfileData,
|
|
411
|
-
|
|
713
|
+
objJsonToObjectStructure,
|
|
714
|
+
objectStructureToObjJson,
|
|
715
|
+
orderObjJsonFields,
|
|
716
|
+
readSerializedSpaceArchive,
|
|
412
717
|
subscribeToFeedBlocks,
|
|
413
718
|
subscribeToFeeds,
|
|
414
719
|
subscribeToNetworkStatus,
|
|
415
720
|
subscribeToNetworkTopics,
|
|
416
721
|
subscribeToSignal,
|
|
417
722
|
subscribeToSpaces,
|
|
418
|
-
subscribeToSwarmInfo
|
|
723
|
+
subscribeToSwarmInfo,
|
|
724
|
+
writeSerializedSpaceArchive
|
|
419
725
|
};
|
|
420
726
|
//# sourceMappingURL=index.mjs.map
|