@dxos/client-services 0.8.4-main.fd6878d → 0.8.4-staging.60fe92afc8
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-6C7MTZLC.mjs → chunk-HPR4MJ4W.mjs} +2916 -3802
- package/dist/lib/browser/chunk-HPR4MJ4W.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 +576 -139
- 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 +59 -55
- 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-YOHACH7G.mjs → chunk-JW6QHPRJ.mjs} +2859 -3614
- package/dist/lib/node-esm/chunk-JW6QHPRJ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +576 -139
- 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 +59 -55
- 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 +7 -3
- 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 +2 -2
- 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 +3 -3
- 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 +10 -10
- package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +14 -9
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-service.d.ts +7 -11
- package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity.d.ts +10 -13
- package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts +7 -6
- 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 +5 -5
- 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 +6 -5
- 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 +22 -19
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +20 -13
- 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/sqlite-storage.d.ts +27 -0
- package/dist/types/src/packlets/services/sqlite-storage.d.ts.map +1 -0
- 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 +49 -22
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +38 -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 +1 -1
- package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/genesis.d.ts +4 -3
- 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/index.d.ts +1 -0
- package/dist/types/src/packlets/storage/index.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-sqlite.d.ts +24 -0
- package/dist/types/src/packlets/storage/profile-archive-sqlite.d.ts.map +1 -0
- package/dist/types/src/packlets/storage/profile-archive-sqlite.test.d.ts +2 -0
- package/dist/types/src/packlets/storage/profile-archive-sqlite.test.d.ts.map +1 -0
- 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 +20 -22
- 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 -57
- package/src/index.ts +1 -0
- package/src/packlets/agents/edge-agent-manager.ts +10 -7
- package/src/packlets/agents/edge-agent-service.ts +15 -3
- package/src/packlets/devices/devices-service.test.ts +0 -1
- package/src/packlets/devices/devices-service.ts +1 -1
- package/src/packlets/devtools/devtools.ts +28 -7
- package/src/packlets/devtools/feeds.ts +1 -1
- package/src/packlets/devtools/keys.ts +2 -2
- package/src/packlets/devtools/spaces.ts +1 -1
- package/src/packlets/diagnostics/diagnostics.ts +1 -2
- package/src/packlets/diagnostics/index.ts +1 -1
- package/src/packlets/identity/authenticator.ts +3 -3
- package/src/packlets/identity/contacts-service.ts +1 -2
- package/src/packlets/identity/identity-manager.test.ts +6 -6
- package/src/packlets/identity/identity-manager.ts +29 -28
- package/src/packlets/identity/identity-recovery-manager.ts +31 -22
- package/src/packlets/identity/identity-service.test.ts +6 -27
- package/src/packlets/identity/identity-service.ts +17 -83
- package/src/packlets/identity/identity.test.ts +7 -7
- package/src/packlets/identity/identity.ts +12 -35
- package/src/packlets/invitations/device-invitation-protocol.ts +10 -9
- 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 +42 -17
- 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 +13 -18
- 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 +218 -80
- package/src/packlets/services/service-host.test.ts +8 -10
- package/src/packlets/services/service-host.ts +104 -65
- package/src/packlets/services/service-registry.test.ts +0 -1
- package/src/packlets/services/sqlite-storage.ts +390 -0
- 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 +129 -0
- package/src/packlets/space-export/serialized-space-writer.ts +260 -0
- package/src/packlets/space-export/space-archive-reader.ts +65 -4
- package/src/packlets/space-export/space-archive-writer.ts +43 -5
- package/src/packlets/space-export/space-archive.test.ts +482 -0
- package/src/packlets/spaces/data-space-manager.test.ts +169 -14
- package/src/packlets/spaces/data-space-manager.ts +209 -128
- package/src/packlets/spaces/data-space.ts +89 -43
- package/src/packlets/spaces/edge-feed-replicator.test.ts +3 -3
- package/src/packlets/spaces/edge-feed-replicator.ts +12 -10
- package/src/packlets/spaces/epoch-migrations.ts +7 -6
- package/src/packlets/spaces/genesis.ts +9 -4
- 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 +131 -25
- package/src/packlets/storage/index.ts +1 -0
- package/src/packlets/storage/profile-archive-sqlite.test.ts +79 -0
- package/src/packlets/storage/profile-archive-sqlite.ts +100 -0
- package/src/packlets/storage/profile-archive.ts +3 -0
- package/src/packlets/storage/storage.ts +4 -4
- package/src/packlets/testing/invitation-utils.ts +10 -6
- package/src/packlets/testing/test-builder.ts +59 -40
- package/src/packlets/worker/worker-runtime.ts +173 -17
- package/src/packlets/worker/worker-session.ts +12 -18
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-6C7MTZLC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YOHACH7G.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,63 +10,472 @@ 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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
encodeProfileArchive,
|
|
35
|
-
exportProfileData,
|
|
30
|
+
detectSpaceArchiveFormat,
|
|
31
|
+
diagnostics_exports,
|
|
32
|
+
extractSpaceArchive,
|
|
36
33
|
getNetworkPeers,
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
locks_exports,
|
|
35
|
+
objJsonToObjectStructure,
|
|
36
|
+
objectStructureToObjJson,
|
|
37
|
+
orderObjJsonFields,
|
|
38
|
+
readSerializedSpaceArchive,
|
|
39
39
|
subscribeToFeedBlocks,
|
|
40
40
|
subscribeToFeeds,
|
|
41
41
|
subscribeToNetworkStatus,
|
|
42
42
|
subscribeToNetworkTopics,
|
|
43
43
|
subscribeToSignal,
|
|
44
44
|
subscribeToSpaces,
|
|
45
|
-
subscribeToSwarmInfo
|
|
46
|
-
|
|
45
|
+
subscribeToSwarmInfo,
|
|
46
|
+
writeSerializedSpaceArchive
|
|
47
|
+
} from "./chunk-HPR4MJ4W.mjs";
|
|
48
|
+
import "./chunk-XJRPB3GA.mjs";
|
|
49
|
+
import {
|
|
50
|
+
__export,
|
|
51
|
+
__reExport
|
|
52
|
+
} from "./chunk-QCWEHHJW.mjs";
|
|
53
|
+
|
|
54
|
+
// src/index.ts
|
|
55
|
+
var index_exports = {};
|
|
56
|
+
__export(index_exports, {
|
|
57
|
+
ClientRpcServer: () => ClientRpcServer,
|
|
58
|
+
ClientServicesHost: () => ClientServicesHost,
|
|
59
|
+
DataSpace: () => DataSpace,
|
|
60
|
+
DataSpaceManager: () => DataSpaceManager,
|
|
61
|
+
DeviceInvitationProtocol: () => DeviceInvitationProtocol,
|
|
62
|
+
DevtoolsHostEvents: () => DevtoolsHostEvents,
|
|
63
|
+
DevtoolsServiceImpl: () => DevtoolsServiceImpl,
|
|
64
|
+
DiagnosticsCollector: () => DiagnosticsCollector,
|
|
65
|
+
EdgeAgentManager: () => EdgeAgentManager,
|
|
66
|
+
EdgeAgentServiceImpl: () => EdgeAgentServiceImpl,
|
|
67
|
+
EdgeFeedReplicator: () => EdgeFeedReplicator,
|
|
68
|
+
FeedSyncer: () => FeedSyncer,
|
|
69
|
+
Identity: () => Identity,
|
|
70
|
+
IdentityManager: () => IdentityManager,
|
|
71
|
+
IdentityServiceImpl: () => IdentityServiceImpl,
|
|
72
|
+
InvitationsHandler: () => InvitationsHandler,
|
|
73
|
+
InvitationsManager: () => InvitationsManager,
|
|
74
|
+
InvitationsServiceImpl: () => InvitationsServiceImpl,
|
|
75
|
+
OPFS_SQLITE_DB_FILENAME: () => OPFS_SQLITE_DB_FILENAME,
|
|
76
|
+
ServiceContext: () => ServiceContext,
|
|
77
|
+
ServiceRegistry: () => ServiceRegistry,
|
|
78
|
+
SpaceArchiveWriter: () => SpaceArchiveWriter,
|
|
79
|
+
SpaceInvitationProtocol: () => SpaceInvitationProtocol,
|
|
80
|
+
SpacesServiceImpl: () => SpacesServiceImpl,
|
|
81
|
+
TrustedKeySetAuthVerifier: () => TrustedKeySetAuthVerifier,
|
|
82
|
+
WorkerRuntime: () => WorkerRuntime,
|
|
83
|
+
WorkerSession: () => WorkerSession,
|
|
84
|
+
buildDatabaseDirectoryFromObjects: () => buildDatabaseDirectoryFromObjects,
|
|
85
|
+
createAdmissionKeypair: () => createAdmissionKeypair,
|
|
86
|
+
createAuthProvider: () => createAuthProvider,
|
|
87
|
+
createDiagnostics: () => createDiagnostics,
|
|
88
|
+
createLevel: () => createLevel,
|
|
89
|
+
createSqliteProfileArchive: () => createSqliteProfileArchive,
|
|
90
|
+
createStorageObjects: () => createStorageObjects,
|
|
91
|
+
decodeProfileArchive: () => decodeProfileArchive,
|
|
92
|
+
detectSpaceArchiveFormat: () => detectSpaceArchiveFormat,
|
|
93
|
+
encodeProfileArchive: () => encodeProfileArchive,
|
|
94
|
+
exportProfileData: () => exportProfileData,
|
|
95
|
+
extractSpaceArchive: () => extractSpaceArchive,
|
|
96
|
+
getNetworkPeers: () => getNetworkPeers,
|
|
97
|
+
getSqliteProfileEntries: () => getSqliteProfileEntries,
|
|
98
|
+
importProfileData: () => importProfileData,
|
|
99
|
+
isValidSqliteDatabase: () => isValidSqliteDatabase,
|
|
100
|
+
objJsonToObjectStructure: () => objJsonToObjectStructure,
|
|
101
|
+
objectStructureToObjJson: () => objectStructureToObjJson,
|
|
102
|
+
orderObjJsonFields: () => orderObjJsonFields,
|
|
103
|
+
readSerializedSpaceArchive: () => readSerializedSpaceArchive,
|
|
104
|
+
subscribeToFeedBlocks: () => subscribeToFeedBlocks,
|
|
105
|
+
subscribeToFeeds: () => subscribeToFeeds,
|
|
106
|
+
subscribeToNetworkStatus: () => subscribeToNetworkStatus,
|
|
107
|
+
subscribeToNetworkTopics: () => subscribeToNetworkTopics,
|
|
108
|
+
subscribeToSignal: () => subscribeToSignal,
|
|
109
|
+
subscribeToSpaces: () => subscribeToSpaces,
|
|
110
|
+
subscribeToSwarmInfo: () => subscribeToSwarmInfo,
|
|
111
|
+
writeSerializedSpaceArchive: () => writeSerializedSpaceArchive
|
|
112
|
+
});
|
|
113
|
+
__reExport(index_exports, diagnostics_exports);
|
|
114
|
+
__reExport(index_exports, locks_exports);
|
|
115
|
+
|
|
116
|
+
// src/packlets/services/client-rpc-server.ts
|
|
117
|
+
import { Stream } from "@dxos/codec-protobuf";
|
|
118
|
+
import { raise } from "@dxos/debug";
|
|
119
|
+
import { RpcPeer, parseMethodName } from "@dxos/rpc";
|
|
120
|
+
import { MapCounter, trace } from "@dxos/tracing";
|
|
121
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
122
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
123
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
124
|
+
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;
|
|
125
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
126
|
+
}
|
|
127
|
+
var ClientRpcServer = class {
|
|
128
|
+
_serviceRegistry;
|
|
129
|
+
_rpcPeer;
|
|
130
|
+
_handlerCache = /* @__PURE__ */ new Map();
|
|
131
|
+
_handleCall;
|
|
132
|
+
_handleStream;
|
|
133
|
+
_callMetrics = new MapCounter();
|
|
134
|
+
get _services() {
|
|
135
|
+
return Object.keys(this._serviceRegistry.services);
|
|
136
|
+
}
|
|
137
|
+
constructor(params) {
|
|
138
|
+
const { serviceRegistry, handleCall, handleStream, ...rpcOptions } = params;
|
|
139
|
+
this._handleCall = handleCall;
|
|
140
|
+
this._handleStream = handleStream;
|
|
141
|
+
this._serviceRegistry = serviceRegistry;
|
|
142
|
+
this._rpcPeer = new RpcPeer({
|
|
143
|
+
...rpcOptions,
|
|
144
|
+
callHandler: (method, params2, options) => {
|
|
145
|
+
const [serviceName, methodName] = parseMethodName(method);
|
|
146
|
+
const handler = (method2, params3, handlerOptions) => this._getServiceHandler(serviceName).call(method2, params3, handlerOptions);
|
|
147
|
+
this._callMetrics.inc(`${serviceName}.${methodName} request`);
|
|
148
|
+
if (this._handleCall) {
|
|
149
|
+
return this._handleCall(methodName, params2, handler, options);
|
|
150
|
+
} else {
|
|
151
|
+
return handler(methodName, params2, options);
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
streamHandler: (method, params2, options) => {
|
|
155
|
+
const [serviceName, methodName] = parseMethodName(method);
|
|
156
|
+
const handler = (method2, params3, handlerOptions) => this._getServiceHandler(serviceName).callStream(method2, params3, handlerOptions);
|
|
157
|
+
this._callMetrics.inc(`${serviceName}.${methodName} request stream`);
|
|
158
|
+
if (this._handleStream) {
|
|
159
|
+
return Stream.map(Stream.unwrapPromise(this._handleStream(methodName, params2, handler, options)), (data) => {
|
|
160
|
+
this._callMetrics.inc(`${serviceName}.${methodName} response stream`);
|
|
161
|
+
return data;
|
|
162
|
+
});
|
|
163
|
+
} else {
|
|
164
|
+
return handler(methodName, params2, options);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
async open() {
|
|
170
|
+
await this._rpcPeer.open();
|
|
171
|
+
}
|
|
172
|
+
async close() {
|
|
173
|
+
await this._rpcPeer.close();
|
|
174
|
+
}
|
|
175
|
+
_getServiceHandler(serviceName) {
|
|
176
|
+
if (!this._handlerCache.has(serviceName)) {
|
|
177
|
+
const [key, descriptor] = Object.entries(this._serviceRegistry.descriptors).find(([key2, descriptor2]) => descriptor2.name === serviceName) ?? raise(new Error(`Service not available: ${serviceName}`));
|
|
178
|
+
const service = this._serviceRegistry.services[key];
|
|
179
|
+
if (!service) {
|
|
180
|
+
throw new Error(`Service not available: ${serviceName}`);
|
|
181
|
+
}
|
|
182
|
+
this._handlerCache.set(serviceName, descriptor.createServer(service));
|
|
183
|
+
}
|
|
184
|
+
return this._handlerCache.get(serviceName);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
_ts_decorate([
|
|
188
|
+
trace.metricsCounter()
|
|
189
|
+
], ClientRpcServer.prototype, "_callMetrics", void 0);
|
|
190
|
+
_ts_decorate([
|
|
191
|
+
trace.info()
|
|
192
|
+
], ClientRpcServer.prototype, "_services", null);
|
|
193
|
+
ClientRpcServer = _ts_decorate([
|
|
194
|
+
trace.resource()
|
|
195
|
+
], ClientRpcServer);
|
|
196
|
+
|
|
197
|
+
// src/packlets/storage/storage.ts
|
|
198
|
+
import { InvalidConfigError } from "@dxos/protocols";
|
|
199
|
+
import { Runtime as Runtime2 } from "@dxos/protocols/proto/dxos/config";
|
|
200
|
+
import { StorageType, createStorage } from "@dxos/random-access-storage";
|
|
201
|
+
|
|
202
|
+
// src/packlets/storage/util.ts
|
|
203
|
+
import { DX_DATA } from "@dxos/client-protocol";
|
|
204
|
+
import { Runtime } from "@dxos/protocols/proto/dxos/config";
|
|
205
|
+
import { isNode } from "@dxos/util";
|
|
206
|
+
var getRootPath = (config) => {
|
|
207
|
+
const { dataRoot = isNode() ? DX_DATA : "dxos/storage" } = config ?? {};
|
|
208
|
+
return `${dataRoot}/`;
|
|
209
|
+
};
|
|
210
|
+
var isPersistent = (config) => {
|
|
211
|
+
const { persistent = false } = config ?? {};
|
|
212
|
+
return config.dataStore !== void 0 && config.dataStore !== Runtime.Client.Storage.StorageDriver.RAM || persistent;
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
// src/packlets/storage/storage.ts
|
|
216
|
+
var StorageDriver = Runtime2.Client.Storage.StorageDriver;
|
|
217
|
+
var createStorageObjects = (config) => {
|
|
218
|
+
const { persistent = false, keyStore, dataStore } = config ?? {};
|
|
219
|
+
if (persistent && dataStore === StorageDriver.RAM) {
|
|
220
|
+
throw new InvalidConfigError({
|
|
221
|
+
message: "RAM storage cannot be used in persistent mode."
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
if (!persistent && dataStore !== void 0 && dataStore !== StorageDriver.RAM) {
|
|
225
|
+
throw new InvalidConfigError({
|
|
226
|
+
message: "Cannot use a persistent storage in not persistent mode."
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
if (persistent && keyStore === StorageDriver.RAM) {
|
|
230
|
+
throw new InvalidConfigError({
|
|
231
|
+
message: "RAM key storage cannot be used in persistent mode."
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
if (!persistent && keyStore !== StorageDriver.RAM && keyStore !== void 0) {
|
|
235
|
+
throw new InvalidConfigError({
|
|
236
|
+
message: "Cannot use a persistent key storage in not persistent mode."
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
storage: createStorage({
|
|
241
|
+
type: persistent ? toStorageType(dataStore) : StorageType.RAM,
|
|
242
|
+
root: getRootPath(config)
|
|
243
|
+
})
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
var toStorageType = (type) => {
|
|
247
|
+
switch (type) {
|
|
248
|
+
case void 0:
|
|
249
|
+
return void 0;
|
|
250
|
+
case StorageDriver.RAM:
|
|
251
|
+
return StorageType.RAM;
|
|
252
|
+
case StorageDriver.CHROME:
|
|
253
|
+
return StorageType.CHROME;
|
|
254
|
+
case StorageDriver.FIREFOX:
|
|
255
|
+
return StorageType.FIREFOX;
|
|
256
|
+
case StorageDriver.IDB:
|
|
257
|
+
return StorageType.IDB;
|
|
258
|
+
case StorageDriver.NODE:
|
|
259
|
+
return StorageType.NODE;
|
|
260
|
+
case StorageDriver.WEBFS:
|
|
261
|
+
return StorageType.WEBFS;
|
|
262
|
+
default:
|
|
263
|
+
throw new Error(`Invalid storage type: ${StorageDriver[type]}`);
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
// src/packlets/storage/level.ts
|
|
268
|
+
import path from "@dxos/node-std/path";
|
|
269
|
+
import { PublicKey } from "@dxos/keys";
|
|
270
|
+
import { createLevel as createKV } from "@dxos/kv-store";
|
|
271
|
+
var createLevel = async (config) => {
|
|
272
|
+
const persistent = isPersistent(config);
|
|
273
|
+
const storagePath = persistent ? path.join(getRootPath(config), "level") : `/tmp/dxos-${PublicKey.random().toHex()}`;
|
|
274
|
+
const level = createKV(storagePath);
|
|
275
|
+
await level.open();
|
|
276
|
+
return level;
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
// src/packlets/storage/profile-archive.ts
|
|
280
|
+
import { cbor } from "@automerge/automerge-repo";
|
|
281
|
+
import { invariant } from "@dxos/invariant";
|
|
282
|
+
import { log } from "@dxos/log";
|
|
283
|
+
import { ProfileArchiveEntryType } from "@dxos/protocols";
|
|
284
|
+
import { arrayToBuffer } from "@dxos/util";
|
|
285
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/storage/profile-archive.ts";
|
|
286
|
+
var encodeProfileArchive = (profile) => cbor.encode(profile);
|
|
287
|
+
var decodeProfileArchive = (data) => cbor.decode(data);
|
|
288
|
+
var exportProfileData = async ({ storage, level }) => {
|
|
289
|
+
const archive = {
|
|
290
|
+
storage: [],
|
|
291
|
+
meta: {
|
|
292
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
{
|
|
296
|
+
const directory = await storage.createDirectory();
|
|
297
|
+
const files = await directory.list();
|
|
298
|
+
log.info("begin exporting files", {
|
|
299
|
+
count: files.length
|
|
300
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 21, S: void 0 });
|
|
301
|
+
for (const filename of files) {
|
|
302
|
+
const file = await directory.getOrCreateFile(filename);
|
|
303
|
+
const { size } = await file.stat();
|
|
304
|
+
const data = await file.read(0, size);
|
|
305
|
+
archive.storage.push({
|
|
306
|
+
type: ProfileArchiveEntryType.FILE,
|
|
307
|
+
key: filename,
|
|
308
|
+
value: data
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
log.info("done exporting files", {
|
|
312
|
+
count: files.length
|
|
313
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 34, S: void 0 });
|
|
314
|
+
}
|
|
315
|
+
{
|
|
316
|
+
log.info("begin exporting kv pairs", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 39, S: void 0 });
|
|
317
|
+
const iter = await level.iterator({
|
|
318
|
+
keyEncoding: "binary",
|
|
319
|
+
valueEncoding: "binary"
|
|
320
|
+
});
|
|
321
|
+
let count = 0;
|
|
322
|
+
for await (const [key, value] of iter) {
|
|
323
|
+
archive.storage.push({
|
|
324
|
+
type: ProfileArchiveEntryType.KEY_VALUE,
|
|
325
|
+
key,
|
|
326
|
+
value
|
|
327
|
+
});
|
|
328
|
+
count++;
|
|
329
|
+
}
|
|
330
|
+
log.info("done exporting kv pairs", {
|
|
331
|
+
count
|
|
332
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 53, S: void 0 });
|
|
333
|
+
}
|
|
334
|
+
return archive;
|
|
335
|
+
};
|
|
336
|
+
var importProfileData = async ({ storage, level }, archive) => {
|
|
337
|
+
let batch = level.batch();
|
|
338
|
+
let count = 0;
|
|
339
|
+
for (const entry of archive.storage) {
|
|
340
|
+
switch (entry.type) {
|
|
341
|
+
case ProfileArchiveEntryType.FILE: {
|
|
342
|
+
const directory = await storage.createDirectory();
|
|
343
|
+
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'"] });
|
|
344
|
+
const file = await directory.getOrCreateFile(entry.key);
|
|
345
|
+
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'"] });
|
|
346
|
+
await file.write(0, arrayToBuffer(entry.value));
|
|
347
|
+
await file.close();
|
|
348
|
+
break;
|
|
349
|
+
}
|
|
350
|
+
case ProfileArchiveEntryType.KEY_VALUE: {
|
|
351
|
+
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'"] });
|
|
352
|
+
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'"] });
|
|
353
|
+
batch.put(entry.key, entry.value, {
|
|
354
|
+
keyEncoding: "binary",
|
|
355
|
+
valueEncoding: "binary"
|
|
356
|
+
});
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
case ProfileArchiveEntryType.SQLITE_DATABASE:
|
|
360
|
+
log.warn("Skipping SQLITE_DATABASE entry (import via OPFS recovery API)", {
|
|
361
|
+
key: entry.key
|
|
362
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 85, S: void 0 });
|
|
363
|
+
break;
|
|
364
|
+
default:
|
|
365
|
+
throw new Error(`Invalid entry type: ${entry.type}`);
|
|
366
|
+
}
|
|
367
|
+
if (++count % 1e3 === 0) {
|
|
368
|
+
await batch.write();
|
|
369
|
+
batch = level.batch();
|
|
370
|
+
log.info("importing", {
|
|
371
|
+
count,
|
|
372
|
+
total: archive.storage.length,
|
|
373
|
+
progress: `${(count / archive.storage.length * 100).toFixed()}%`
|
|
374
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 96, S: void 0 });
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
log.info("committing changes..", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 103, S: void 0 });
|
|
378
|
+
await batch.write();
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
// src/packlets/storage/profile-archive-sqlite.ts
|
|
382
|
+
import { ProfileArchiveEntryType as ProfileArchiveEntryType2 } from "@dxos/protocols";
|
|
383
|
+
var OPFS_SQLITE_DB_FILENAME = "DXOS";
|
|
384
|
+
var SQLITE_MAGIC = new TextEncoder().encode("SQLite format 3\0");
|
|
385
|
+
var isValidSqliteDatabase = (bytes) => {
|
|
386
|
+
if (bytes.byteLength < SQLITE_MAGIC.byteLength) {
|
|
387
|
+
return false;
|
|
388
|
+
}
|
|
389
|
+
for (let index = 0; index < SQLITE_MAGIC.byteLength; index++) {
|
|
390
|
+
if (bytes[index] !== SQLITE_MAGIC[index]) {
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return true;
|
|
395
|
+
};
|
|
396
|
+
var coerceToUint8Array = (value) => {
|
|
397
|
+
if (value instanceof Uint8Array) {
|
|
398
|
+
return value;
|
|
399
|
+
}
|
|
400
|
+
if (value instanceof ArrayBuffer) {
|
|
401
|
+
return new Uint8Array(value);
|
|
402
|
+
}
|
|
403
|
+
if (Array.isArray(value)) {
|
|
404
|
+
return new Uint8Array(value);
|
|
405
|
+
}
|
|
406
|
+
return void 0;
|
|
407
|
+
};
|
|
408
|
+
var createSqliteProfileArchive = (opfsFilename, database, options) => {
|
|
409
|
+
if (!isValidSqliteDatabase(database)) {
|
|
410
|
+
throw new Error("Invalid SQLite database (missing SQLite format 3 header)");
|
|
411
|
+
}
|
|
412
|
+
return {
|
|
413
|
+
meta: {
|
|
414
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
415
|
+
...options?.origin ? {
|
|
416
|
+
origin: options.origin
|
|
417
|
+
} : {}
|
|
418
|
+
},
|
|
419
|
+
storage: [
|
|
420
|
+
{
|
|
421
|
+
type: ProfileArchiveEntryType2.SQLITE_DATABASE,
|
|
422
|
+
key: opfsFilename,
|
|
423
|
+
value: database
|
|
424
|
+
}
|
|
425
|
+
]
|
|
426
|
+
};
|
|
427
|
+
};
|
|
428
|
+
var getSqliteProfileEntries = (archive) => {
|
|
429
|
+
const entries = [];
|
|
430
|
+
for (const entry of archive.storage) {
|
|
431
|
+
if (entry.type !== ProfileArchiveEntryType2.SQLITE_DATABASE) {
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
if (typeof entry.key !== "string") {
|
|
435
|
+
continue;
|
|
436
|
+
}
|
|
437
|
+
const database = coerceToUint8Array(entry.value);
|
|
438
|
+
if (!database || !isValidSqliteDatabase(database)) {
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
entries.push({
|
|
442
|
+
opfsFilename: entry.key,
|
|
443
|
+
database
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
return entries;
|
|
447
|
+
};
|
|
47
448
|
|
|
48
449
|
// src/packlets/worker/worker-runtime.ts
|
|
450
|
+
import * as Reactivity from "@effect/experimental/Reactivity";
|
|
451
|
+
import * as Effect from "effect/Effect";
|
|
452
|
+
import * as Layer from "effect/Layer";
|
|
453
|
+
import * as ManagedRuntime from "effect/ManagedRuntime";
|
|
49
454
|
import { Trigger as Trigger2 } from "@dxos/async";
|
|
50
455
|
import { DEFAULT_WORKER_BROADCAST_CHANNEL } from "@dxos/client-protocol";
|
|
51
456
|
import { Context } from "@dxos/context";
|
|
52
|
-
import { invariant as
|
|
53
|
-
import { log as
|
|
457
|
+
import { invariant as invariant3 } from "@dxos/invariant";
|
|
458
|
+
import { log as log3 } from "@dxos/log";
|
|
54
459
|
import { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager, setIdentityTags } from "@dxos/messaging";
|
|
55
460
|
import { RtcTransportProxyFactory } from "@dxos/network-manager";
|
|
461
|
+
import * as SqlExport from "@dxos/sql-sqlite/SqlExport";
|
|
462
|
+
import * as SqliteClient from "@dxos/sql-sqlite/SqliteClient";
|
|
463
|
+
import * as SqlTransaction from "@dxos/sql-sqlite/SqlTransaction";
|
|
56
464
|
|
|
57
465
|
// src/packlets/worker/worker-session.ts
|
|
58
466
|
import { Trigger, asyncTimeout } from "@dxos/async";
|
|
59
467
|
import { PROXY_CONNECTION_TIMEOUT, iframeServiceBundle, workerServiceBundle } from "@dxos/client-protocol";
|
|
60
|
-
import { invariant } from "@dxos/invariant";
|
|
61
|
-
import { log, logInfo } from "@dxos/log";
|
|
468
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
469
|
+
import { log as log2, logInfo } from "@dxos/log";
|
|
62
470
|
import { createProtoRpcPeer } from "@dxos/rpc";
|
|
63
471
|
import { Callback } from "@dxos/util";
|
|
64
|
-
|
|
472
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
|
|
473
|
+
function _ts_decorate2(decorators, target, key, desc) {
|
|
65
474
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
66
475
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
67
476
|
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
477
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
69
478
|
}
|
|
70
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
|
|
71
479
|
var WorkerSession = class {
|
|
72
480
|
_clientRpc;
|
|
73
481
|
_shellClientRpc;
|
|
@@ -76,40 +484,29 @@ var WorkerSession = class {
|
|
|
76
484
|
_serviceHost;
|
|
77
485
|
onClose = new Callback();
|
|
78
486
|
origin;
|
|
79
|
-
// TODO(nf): factor out?
|
|
80
|
-
observabilityGroup;
|
|
81
|
-
signalTelemetryEnabled;
|
|
82
487
|
lockKey;
|
|
83
488
|
bridgeService;
|
|
84
489
|
constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
|
|
85
|
-
|
|
86
|
-
F: __dxlog_file,
|
|
87
|
-
L: 54,
|
|
88
|
-
S: this,
|
|
89
|
-
A: [
|
|
90
|
-
"serviceHost",
|
|
91
|
-
""
|
|
92
|
-
]
|
|
93
|
-
});
|
|
490
|
+
invariant2(serviceHost, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 30, S: this, A: ["serviceHost", ""] });
|
|
94
491
|
this._serviceHost = serviceHost;
|
|
95
492
|
const middleware = {
|
|
96
|
-
handleCall: async (method, params, handler) => {
|
|
493
|
+
handleCall: async (method, params, handler, options) => {
|
|
97
494
|
const error = await readySignal.wait({
|
|
98
495
|
timeout: PROXY_CONNECTION_TIMEOUT
|
|
99
496
|
});
|
|
100
497
|
if (error) {
|
|
101
498
|
throw error;
|
|
102
499
|
}
|
|
103
|
-
return handler(method, params);
|
|
500
|
+
return handler(method, params, options);
|
|
104
501
|
},
|
|
105
|
-
handleStream: async (method, params, handler) => {
|
|
502
|
+
handleStream: async (method, params, handler, options) => {
|
|
106
503
|
const error = await readySignal.wait({
|
|
107
504
|
timeout: PROXY_CONNECTION_TIMEOUT
|
|
108
505
|
});
|
|
109
506
|
if (error) {
|
|
110
507
|
throw error;
|
|
111
508
|
}
|
|
112
|
-
return handler(method, params);
|
|
509
|
+
return handler(method, params, options);
|
|
113
510
|
}
|
|
114
511
|
};
|
|
115
512
|
this._clientRpc = new ClientRpcServer({
|
|
@@ -130,8 +527,6 @@ var WorkerSession = class {
|
|
|
130
527
|
start: async (request) => {
|
|
131
528
|
this.origin = request.origin;
|
|
132
529
|
this.lockKey = request.lockKey;
|
|
133
|
-
this.observabilityGroup = request.observabilityGroup;
|
|
134
|
-
this.signalTelemetryEnabled = request.signalTelemetryEnabled;
|
|
135
530
|
this._startTrigger.wake();
|
|
136
531
|
},
|
|
137
532
|
stop: async () => {
|
|
@@ -139,12 +534,7 @@ var WorkerSession = class {
|
|
|
139
534
|
try {
|
|
140
535
|
await this.close();
|
|
141
536
|
} catch (err) {
|
|
142
|
-
|
|
143
|
-
F: __dxlog_file,
|
|
144
|
-
L: 108,
|
|
145
|
-
S: this,
|
|
146
|
-
C: (f, a) => f(...a)
|
|
147
|
-
});
|
|
537
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 77, S: this });
|
|
148
538
|
}
|
|
149
539
|
});
|
|
150
540
|
}
|
|
@@ -156,12 +546,7 @@ var WorkerSession = class {
|
|
|
156
546
|
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
157
547
|
}
|
|
158
548
|
async open() {
|
|
159
|
-
|
|
160
|
-
F: __dxlog_file,
|
|
161
|
-
L: 122,
|
|
162
|
-
S: this,
|
|
163
|
-
C: (f, a) => f(...a)
|
|
164
|
-
});
|
|
549
|
+
log2("opening...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 89, S: this });
|
|
165
550
|
await Promise.all([
|
|
166
551
|
this._clientRpc.open(),
|
|
167
552
|
this._iframeRpc.open(),
|
|
@@ -173,51 +558,26 @@ var WorkerSession = class {
|
|
|
173
558
|
if (this.lockKey) {
|
|
174
559
|
void this._afterLockReleases(this.lockKey, () => this.close());
|
|
175
560
|
}
|
|
176
|
-
|
|
177
|
-
F: __dxlog_file,
|
|
178
|
-
L: 133,
|
|
179
|
-
S: this,
|
|
180
|
-
C: (f, a) => f(...a)
|
|
181
|
-
});
|
|
561
|
+
log2("opened", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 103, S: this });
|
|
182
562
|
}
|
|
183
563
|
async close() {
|
|
184
|
-
|
|
185
|
-
F: __dxlog_file,
|
|
186
|
-
L: 137,
|
|
187
|
-
S: this,
|
|
188
|
-
C: (f, a) => f(...a)
|
|
189
|
-
});
|
|
564
|
+
log2.debug("closing...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 106, S: this });
|
|
190
565
|
try {
|
|
191
566
|
await this.onClose.callIfSet();
|
|
192
567
|
} catch (err) {
|
|
193
|
-
|
|
194
|
-
F: __dxlog_file,
|
|
195
|
-
L: 141,
|
|
196
|
-
S: this,
|
|
197
|
-
C: (f, a) => f(...a)
|
|
198
|
-
});
|
|
568
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 110, S: this });
|
|
199
569
|
}
|
|
200
570
|
await Promise.all([
|
|
201
571
|
this._clientRpc.close(),
|
|
202
572
|
this._iframeRpc.close()
|
|
203
573
|
]);
|
|
204
|
-
|
|
205
|
-
F: __dxlog_file,
|
|
206
|
-
L: 145,
|
|
207
|
-
S: this,
|
|
208
|
-
C: (f, a) => f(...a)
|
|
209
|
-
});
|
|
574
|
+
log2.debug("closed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 116, S: this });
|
|
210
575
|
}
|
|
211
576
|
async _maybeOpenShell() {
|
|
212
577
|
try {
|
|
213
578
|
this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
|
|
214
579
|
} catch {
|
|
215
|
-
|
|
216
|
-
F: __dxlog_file,
|
|
217
|
-
L: 152,
|
|
218
|
-
S: this,
|
|
219
|
-
C: (f, a) => f(...a)
|
|
220
|
-
});
|
|
580
|
+
log2.info("No shell connected.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 122, S: this });
|
|
221
581
|
}
|
|
222
582
|
}
|
|
223
583
|
_afterLockReleases(lockKey, callback) {
|
|
@@ -225,15 +585,15 @@ var WorkerSession = class {
|
|
|
225
585
|
}).then(callback);
|
|
226
586
|
}
|
|
227
587
|
};
|
|
228
|
-
|
|
588
|
+
_ts_decorate2([
|
|
229
589
|
logInfo
|
|
230
590
|
], WorkerSession.prototype, "origin", void 0);
|
|
231
|
-
|
|
591
|
+
_ts_decorate2([
|
|
232
592
|
logInfo
|
|
233
593
|
], WorkerSession.prototype, "lockKey", void 0);
|
|
234
594
|
|
|
235
595
|
// src/packlets/worker/worker-runtime.ts
|
|
236
|
-
var
|
|
596
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
|
|
237
597
|
var WorkerRuntime = class {
|
|
238
598
|
_configProvider;
|
|
239
599
|
_acquireLock;
|
|
@@ -244,6 +604,8 @@ var WorkerRuntime = class {
|
|
|
244
604
|
_sessions = /* @__PURE__ */ new Set();
|
|
245
605
|
_clientServices;
|
|
246
606
|
_channel;
|
|
607
|
+
_automaticallyConnectWebrtc;
|
|
608
|
+
_livenessLock = new WebLockWrapper(`@dxos/client-services/WorkerRuntime/${crypto.randomUUID()}`);
|
|
247
609
|
_broadcastChannel;
|
|
248
610
|
_sessionForNetworking;
|
|
249
611
|
_config;
|
|
@@ -251,57 +613,73 @@ var WorkerRuntime = class {
|
|
|
251
613
|
runtime: "worker-runtime"
|
|
252
614
|
};
|
|
253
615
|
_signalTelemetryEnabled = false;
|
|
254
|
-
|
|
616
|
+
_runtime;
|
|
617
|
+
constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop, automaticallyConnectWebrtc = true, sqliteLayer }) {
|
|
255
618
|
this._configProvider = configProvider;
|
|
256
619
|
this._acquireLock = acquireLock;
|
|
257
620
|
this._releaseLock = releaseLock;
|
|
258
621
|
this._onStop = onStop;
|
|
259
622
|
this._channel = channel;
|
|
623
|
+
if (sqliteLayer) {
|
|
624
|
+
log3.warn("Using testing SQLite layer", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 51, S: this });
|
|
625
|
+
}
|
|
626
|
+
this._runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayer ?? LocalSqliteOpfsLayer), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
|
|
260
627
|
this._clientServices = new ClientServicesHost({
|
|
261
628
|
callbacks: {
|
|
262
629
|
onReset: async () => this.stop()
|
|
630
|
+
},
|
|
631
|
+
runtime: this._runtime.runtimeEffect,
|
|
632
|
+
runtimeProps: {
|
|
633
|
+
// Auto-activate spaces that were previously active after leader changeover.
|
|
634
|
+
autoActivateSpaces: true
|
|
263
635
|
}
|
|
264
636
|
});
|
|
637
|
+
this._automaticallyConnectWebrtc = automaticallyConnectWebrtc;
|
|
265
638
|
}
|
|
266
639
|
get host() {
|
|
267
640
|
return this._clientServices;
|
|
268
641
|
}
|
|
642
|
+
get livenessLockKey() {
|
|
643
|
+
return this._livenessLock.key;
|
|
644
|
+
}
|
|
269
645
|
async start() {
|
|
270
|
-
|
|
271
|
-
F: __dxlog_file2,
|
|
272
|
-
L: 85,
|
|
273
|
-
S: this,
|
|
274
|
-
C: (f, a) => f(...a)
|
|
275
|
-
});
|
|
646
|
+
log3("starting...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 73, S: this });
|
|
276
647
|
try {
|
|
648
|
+
log3("worker-runtime: acquiring liveness lock (background)", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 75, S: this });
|
|
649
|
+
void this._livenessLock.acquire();
|
|
650
|
+
log3("worker-runtime: broadcasting stop to displace previous worker", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 78, S: this });
|
|
277
651
|
this._broadcastChannel = new BroadcastChannel(this._channel);
|
|
278
652
|
this._broadcastChannel.postMessage({
|
|
279
653
|
action: "stop"
|
|
280
654
|
});
|
|
281
655
|
this._broadcastChannel.onmessage = async (event) => {
|
|
282
656
|
if (event.data?.action === "stop") {
|
|
657
|
+
log3("worker-runtime: received stop broadcast", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 85, S: this });
|
|
283
658
|
await this.stop();
|
|
284
659
|
}
|
|
285
660
|
};
|
|
661
|
+
log3("worker-runtime: acquiring storage lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 89, S: this });
|
|
286
662
|
await this._acquireLock();
|
|
663
|
+
log3("worker-runtime: storage lock acquired, resolving config", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 91, S: this });
|
|
287
664
|
this._config = await this._configProvider();
|
|
665
|
+
log3("worker-runtime: config resolved", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 93, S: this });
|
|
666
|
+
this._signalTelemetryEnabled = this._config.get("runtime.client.signalTelemetryEnabled") ?? false;
|
|
667
|
+
const observabilityGroup = this._config.get("runtime.client.observabilityGroup");
|
|
668
|
+
if (observabilityGroup) {
|
|
669
|
+
this._signalMetadataTags.group = observabilityGroup;
|
|
670
|
+
}
|
|
288
671
|
const signals = this._config.get("runtime.services.signaling");
|
|
672
|
+
log3("worker-runtime: initializing client services host", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 100, S: this });
|
|
289
673
|
this._clientServices.initialize({
|
|
290
674
|
config: this._config,
|
|
291
675
|
signalManager: this._config.get("runtime.client.edgeFeatures")?.signaling ? void 0 : signals ? new WebsocketSignalManager(signals, () => this._signalTelemetryEnabled ? this._signalMetadataTags : {}) : new MemorySignalManager(new MemorySignalManagerContext()),
|
|
292
676
|
transportFactory: this._transportFactory
|
|
293
677
|
});
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
}));
|
|
678
|
+
log3("worker-runtime: client services host initialized, opening", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 106, S: this });
|
|
679
|
+
await this._clientServices.open(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 107 }));
|
|
680
|
+
log3("worker-runtime: client services host opened, signalling ready", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 108, S: this });
|
|
298
681
|
this._ready.wake(void 0);
|
|
299
|
-
|
|
300
|
-
F: __dxlog_file2,
|
|
301
|
-
L: 110,
|
|
302
|
-
S: this,
|
|
303
|
-
C: (f, a) => f(...a)
|
|
304
|
-
});
|
|
682
|
+
log3("started", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 110, S: this });
|
|
305
683
|
setIdentityTags({
|
|
306
684
|
identityService: this._clientServices.services.IdentityService,
|
|
307
685
|
devicesService: this._clientServices.services.DevicesService,
|
|
@@ -311,25 +689,43 @@ var WorkerRuntime = class {
|
|
|
311
689
|
});
|
|
312
690
|
} catch (err) {
|
|
313
691
|
this._ready.wake(err);
|
|
314
|
-
|
|
315
|
-
F: __dxlog_file2,
|
|
316
|
-
L: 120,
|
|
317
|
-
S: this,
|
|
318
|
-
C: (f, a) => f(...a)
|
|
319
|
-
});
|
|
692
|
+
log3.error("starting", err, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 120, S: this });
|
|
320
693
|
}
|
|
321
694
|
}
|
|
322
695
|
async stop() {
|
|
323
696
|
this._releaseLock();
|
|
324
697
|
this._broadcastChannel?.close();
|
|
325
698
|
this._broadcastChannel = void 0;
|
|
326
|
-
await this._clientServices.close();
|
|
699
|
+
await this._clientServices.close(Context.default(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 128 }));
|
|
700
|
+
await this._runtime.dispose();
|
|
327
701
|
await this._onStop?.();
|
|
702
|
+
await this._livenessLock.release();
|
|
703
|
+
}
|
|
704
|
+
/**
|
|
705
|
+
* Update signaling telemetry tags from a client-supplied config overlay.
|
|
706
|
+
*
|
|
707
|
+
* The worker services outlive individual client connections, so the first client seeds the
|
|
708
|
+
* worker's core config (storage, signaling, edge features). For fields that can legitimately
|
|
709
|
+
* differ per tab — `observabilityGroup` and `signalTelemetryEnabled` — this method lets later
|
|
710
|
+
* connections refresh the signal metadata the worker attaches to its signaling requests
|
|
711
|
+
* (last-writer-wins, matching the pre-DX-930 per-session RPC behaviour).
|
|
712
|
+
*/
|
|
713
|
+
updateSignalMetadata(config) {
|
|
714
|
+
const observabilityGroup = config.get("runtime.client.observabilityGroup");
|
|
715
|
+
if (observabilityGroup) {
|
|
716
|
+
this._signalMetadataTags.group = observabilityGroup;
|
|
717
|
+
} else {
|
|
718
|
+
delete this._signalMetadataTags.group;
|
|
719
|
+
}
|
|
720
|
+
const signalTelemetryEnabled = config.get("runtime.client.signalTelemetryEnabled");
|
|
721
|
+
if (signalTelemetryEnabled !== void 0) {
|
|
722
|
+
this._signalTelemetryEnabled = signalTelemetryEnabled;
|
|
723
|
+
}
|
|
328
724
|
}
|
|
329
725
|
/**
|
|
330
726
|
* Create a new session.
|
|
331
727
|
*/
|
|
332
|
-
async createSession({ appPort, systemPort, shellPort }) {
|
|
728
|
+
async createSession({ appPort, systemPort, shellPort, onClose }) {
|
|
333
729
|
const session = new WorkerSession({
|
|
334
730
|
serviceHost: this._clientServices,
|
|
335
731
|
appPort,
|
|
@@ -342,37 +738,38 @@ var WorkerRuntime = class {
|
|
|
342
738
|
if (this._sessions.size === 0) {
|
|
343
739
|
await this.stop();
|
|
344
740
|
} else {
|
|
345
|
-
this.
|
|
741
|
+
if (this._automaticallyConnectWebrtc) {
|
|
742
|
+
this._reconnectWebrtc();
|
|
743
|
+
}
|
|
346
744
|
}
|
|
745
|
+
await onClose?.();
|
|
347
746
|
});
|
|
348
747
|
await session.open();
|
|
349
|
-
|
|
350
|
-
F: __dxlog_file2,
|
|
351
|
-
L: 158,
|
|
352
|
-
S: this,
|
|
353
|
-
A: [
|
|
354
|
-
"!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin",
|
|
355
|
-
"`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`"
|
|
356
|
-
]
|
|
357
|
-
});
|
|
358
|
-
if (session.observabilityGroup) {
|
|
359
|
-
this._signalMetadataTags.group = session.observabilityGroup;
|
|
360
|
-
}
|
|
361
|
-
this._signalTelemetryEnabled = session.signalTelemetryEnabled ?? false;
|
|
748
|
+
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: 180, S: this, A: ["!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin", "`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`"] });
|
|
362
749
|
this._signalMetadataTags.origin = session.origin;
|
|
363
750
|
this._sessions.add(session);
|
|
364
|
-
this.
|
|
751
|
+
if (this._automaticallyConnectWebrtc) {
|
|
752
|
+
this._reconnectWebrtc();
|
|
753
|
+
}
|
|
754
|
+
return session;
|
|
755
|
+
}
|
|
756
|
+
/**
|
|
757
|
+
* Connects the WebRTC bridge to the specified session.
|
|
758
|
+
* If no session is provided, disconnects the WebRTC bridge.
|
|
759
|
+
*
|
|
760
|
+
* Called automatically if `automaticallyConnectWebrtc` is true.
|
|
761
|
+
*
|
|
762
|
+
* @param session The session to connect the WebRTC bridge to.
|
|
763
|
+
*/
|
|
764
|
+
connectWebrtcBridge(session) {
|
|
765
|
+
this._sessionForNetworking = session;
|
|
766
|
+
this._transportFactory.setBridgeService(session?.bridgeService);
|
|
365
767
|
}
|
|
366
768
|
/**
|
|
367
769
|
* Selects one of the existing session for WebRTC networking.
|
|
368
770
|
*/
|
|
369
771
|
_reconnectWebrtc() {
|
|
370
|
-
|
|
371
|
-
F: __dxlog_file2,
|
|
372
|
-
L: 176,
|
|
373
|
-
S: this,
|
|
374
|
-
C: (f, a) => f(...a)
|
|
375
|
-
});
|
|
772
|
+
log3("reconnecting webrtc...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 202, S: this });
|
|
376
773
|
if (this._sessionForNetworking) {
|
|
377
774
|
if (!this._sessions.has(this._sessionForNetworking)) {
|
|
378
775
|
this._sessionForNetworking = void 0;
|
|
@@ -380,15 +777,45 @@ var WorkerRuntime = class {
|
|
|
380
777
|
}
|
|
381
778
|
if (!this._sessionForNetworking) {
|
|
382
779
|
const selected = Array.from(this._sessions).find((session) => session.bridgeService);
|
|
383
|
-
|
|
384
|
-
this._sessionForNetworking = selected;
|
|
385
|
-
this._transportFactory.setBridgeService(selected.bridgeService);
|
|
386
|
-
} else {
|
|
387
|
-
this._transportFactory.setBridgeService(void 0);
|
|
388
|
-
}
|
|
780
|
+
this.connectWebrtcBridge(selected);
|
|
389
781
|
}
|
|
390
782
|
}
|
|
391
783
|
};
|
|
784
|
+
var DB_NAME = "DXOS";
|
|
785
|
+
var SqlExportLayer = Layer.effect(SqlExport.SqlExport, Effect.gen(function* () {
|
|
786
|
+
const sql = yield* SqliteClient.SqliteClient;
|
|
787
|
+
return {
|
|
788
|
+
export: sql.export
|
|
789
|
+
};
|
|
790
|
+
}));
|
|
791
|
+
var LocalSqliteOpfsLayer = SqlExportLayer.pipe(Layer.provideMerge(SqliteClient.layerOpfs({
|
|
792
|
+
dbName: DB_NAME
|
|
793
|
+
})), Layer.provideMerge(Reactivity.layer));
|
|
794
|
+
var WebLockWrapper = class {
|
|
795
|
+
#key;
|
|
796
|
+
#release;
|
|
797
|
+
constructor(key) {
|
|
798
|
+
this.#key = key;
|
|
799
|
+
}
|
|
800
|
+
get key() {
|
|
801
|
+
return this.#key;
|
|
802
|
+
}
|
|
803
|
+
acquire(options = {}) {
|
|
804
|
+
return navigator.locks.request(this.#key, options, async () => {
|
|
805
|
+
await new Promise((resolve) => {
|
|
806
|
+
this.#release = resolve;
|
|
807
|
+
});
|
|
808
|
+
this.#release = void 0;
|
|
809
|
+
});
|
|
810
|
+
}
|
|
811
|
+
release() {
|
|
812
|
+
this.#release?.();
|
|
813
|
+
this.#release = void 0;
|
|
814
|
+
}
|
|
815
|
+
[Symbol.dispose]() {
|
|
816
|
+
this.release();
|
|
817
|
+
}
|
|
818
|
+
};
|
|
392
819
|
export {
|
|
393
820
|
ClientRpcServer,
|
|
394
821
|
ClientServicesHost,
|
|
@@ -401,39 +828,49 @@ export {
|
|
|
401
828
|
EdgeAgentManager,
|
|
402
829
|
EdgeAgentServiceImpl,
|
|
403
830
|
EdgeFeedReplicator,
|
|
831
|
+
FeedSyncer,
|
|
404
832
|
Identity,
|
|
405
833
|
IdentityManager,
|
|
406
834
|
IdentityServiceImpl,
|
|
407
835
|
InvitationsHandler,
|
|
408
836
|
InvitationsManager,
|
|
409
837
|
InvitationsServiceImpl,
|
|
410
|
-
|
|
838
|
+
OPFS_SQLITE_DB_FILENAME,
|
|
411
839
|
ServiceContext,
|
|
412
840
|
ServiceRegistry,
|
|
841
|
+
SpaceArchiveWriter,
|
|
413
842
|
SpaceInvitationProtocol,
|
|
414
843
|
SpacesServiceImpl,
|
|
415
844
|
TrustedKeySetAuthVerifier,
|
|
416
845
|
WorkerRuntime,
|
|
417
846
|
WorkerSession,
|
|
847
|
+
buildDatabaseDirectoryFromObjects,
|
|
418
848
|
createAdmissionKeypair,
|
|
419
849
|
createAuthProvider,
|
|
420
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
421
|
-
createCollectDiagnosticsBroadcastSender,
|
|
422
850
|
createDiagnostics,
|
|
423
851
|
createLevel,
|
|
852
|
+
createSqliteProfileArchive,
|
|
424
853
|
createStorageObjects,
|
|
425
854
|
decodeProfileArchive,
|
|
855
|
+
detectSpaceArchiveFormat,
|
|
426
856
|
encodeProfileArchive,
|
|
427
857
|
exportProfileData,
|
|
858
|
+
extractSpaceArchive,
|
|
428
859
|
getNetworkPeers,
|
|
860
|
+
getSqliteProfileEntries,
|
|
429
861
|
importProfileData,
|
|
430
|
-
|
|
862
|
+
isValidSqliteDatabase,
|
|
863
|
+
objJsonToObjectStructure,
|
|
864
|
+
objectStructureToObjJson,
|
|
865
|
+
orderObjJsonFields,
|
|
866
|
+
readSerializedSpaceArchive,
|
|
431
867
|
subscribeToFeedBlocks,
|
|
432
868
|
subscribeToFeeds,
|
|
433
869
|
subscribeToNetworkStatus,
|
|
434
870
|
subscribeToNetworkTopics,
|
|
435
871
|
subscribeToSignal,
|
|
436
872
|
subscribeToSpaces,
|
|
437
|
-
subscribeToSwarmInfo
|
|
873
|
+
subscribeToSwarmInfo,
|
|
874
|
+
writeSerializedSpaceArchive
|
|
438
875
|
};
|
|
439
876
|
//# sourceMappingURL=index.mjs.map
|