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