@dxos/client-services 0.8.4-main.c4373fc → 0.8.4-main.c85a9c8dae
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{chunk-HWGM5TYF.mjs → chunk-MQ6PWJ76.mjs} +1936 -2336
- package/dist/lib/browser/chunk-MQ6PWJ76.mjs.map +7 -0
- package/dist/lib/browser/chunk-NQSC7HOE.mjs +22 -0
- package/dist/lib/browser/chunk-NQSC7HOE.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/index.mjs +522 -172
- 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 +93 -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 +126 -0
- package/dist/lib/browser/packlets/locks/browser.mjs.map +7 -0
- package/dist/lib/browser/packlets/locks/node.mjs +66 -0
- package/dist/lib/browser/packlets/locks/node.mjs.map +7 -0
- package/dist/lib/browser/testing/index.mjs +59 -76
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- 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-XUIY55CH.mjs → chunk-GUAL4U7S.mjs} +1468 -1737
- package/dist/lib/node-esm/chunk-GUAL4U7S.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-PKEGMOQ4.mjs +22 -0
- package/dist/lib/node-esm/chunk-PKEGMOQ4.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +522 -172
- 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 +93 -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 +126 -0
- package/dist/lib/node-esm/packlets/locks/browser.mjs.map +7 -0
- package/dist/lib/node-esm/packlets/locks/node.mjs +66 -0
- package/dist/lib/node-esm/packlets/locks/node.mjs.map +7 -0
- package/dist/lib/node-esm/testing/index.mjs +59 -76
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/packlets/agents/edge-agent-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/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/default-space-state-machine.d.ts +2 -2
- package/dist/types/src/packlets/identity/default-space-state-machine.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-manager.d.ts +4 -4
- package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +2 -2
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity.d.ts +2 -2
- package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts +4 -4
- package/dist/types/src/packlets/invitations/device-invitation-protocol.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 +2 -3
- package/dist/types/src/packlets/invitations/invitation-protocol.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/space-invitation-protocol.d.ts +2 -2
- package/dist/types/src/packlets/invitations/space-invitation-protocol.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/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/services/client-rpc-server.d.ts +2 -2
- package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +1 -1
- package/dist/types/src/packlets/services/feed-syncer.d.ts +59 -0
- package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -0
- package/dist/types/src/packlets/services/feed-syncer.test.d.ts +2 -0
- package/dist/types/src/packlets/services/feed-syncer.test.d.ts.map +1 -0
- package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-context.d.ts +12 -7
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +19 -5
- package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts +10 -5
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +2 -2
- 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/notarization-plugin.d.ts +6 -6
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.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 +31 -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 -2
- package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +70 -48
- package/src/packlets/agents/edge-agent-service.ts +11 -1
- package/src/packlets/devices/devices-service.ts +1 -1
- package/src/packlets/devtools/devtools.ts +2 -2
- package/src/packlets/diagnostics/index.ts +1 -1
- package/src/packlets/identity/authenticator.ts +2 -2
- package/src/packlets/identity/default-space-state-machine.ts +2 -2
- package/src/packlets/identity/identity-manager.ts +6 -6
- package/src/packlets/identity/identity-recovery-manager.ts +2 -2
- package/src/packlets/identity/identity.test.ts +4 -4
- package/src/packlets/identity/identity.ts +2 -2
- package/src/packlets/invitations/device-invitation-protocol.ts +5 -5
- package/src/packlets/invitations/invitation-guest-extenstion.ts +6 -4
- package/src/packlets/invitations/invitation-host-extension.ts +6 -4
- package/src/packlets/invitations/invitation-protocol.ts +2 -3
- package/src/packlets/invitations/invitations-handler.ts +7 -7
- package/src/packlets/invitations/space-invitation-protocol.ts +7 -13
- package/src/packlets/locks/index.ts +1 -1
- package/src/packlets/logging/logging-service.ts +5 -1
- package/src/packlets/services/client-rpc-server.ts +4 -4
- package/src/packlets/services/feed-syncer.test.ts +340 -0
- package/src/packlets/services/feed-syncer.ts +330 -0
- package/src/packlets/services/platform.ts +7 -1
- package/src/packlets/services/service-context.ts +53 -21
- package/src/packlets/services/service-host.ts +53 -16
- package/src/packlets/space-export/space-archive-reader.ts +1 -1
- package/src/packlets/space-export/space-archive-writer.ts +3 -1
- package/src/packlets/spaces/data-space-manager.ts +56 -21
- package/src/packlets/spaces/data-space.ts +10 -6
- package/src/packlets/spaces/edge-feed-replicator.test.ts +1 -1
- package/src/packlets/spaces/edge-feed-replicator.ts +3 -3
- package/src/packlets/spaces/epoch-migrations.ts +2 -2
- package/src/packlets/spaces/notarization-plugin.test.ts +2 -2
- package/src/packlets/spaces/notarization-plugin.ts +8 -8
- package/src/packlets/spaces/spaces-service.ts +10 -7
- package/src/packlets/storage/storage.ts +4 -4
- package/src/packlets/testing/invitation-utils.ts +7 -4
- package/src/packlets/testing/test-builder.ts +36 -10
- package/src/packlets/worker/worker-runtime.ts +149 -11
- package/src/packlets/worker/worker-session.ts +8 -8
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-HWGM5TYF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XUIY55CH.mjs.map +0 -7
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import "@dxos/node-std/globals";
|
|
2
2
|
import {
|
|
3
|
-
ClientRpcServer,
|
|
4
3
|
ClientServicesHost,
|
|
5
4
|
DataSpace,
|
|
6
5
|
DataSpaceManager,
|
|
@@ -17,7 +16,6 @@ import {
|
|
|
17
16
|
InvitationsHandler,
|
|
18
17
|
InvitationsManager,
|
|
19
18
|
InvitationsServiceImpl,
|
|
20
|
-
Lock,
|
|
21
19
|
ServiceContext,
|
|
22
20
|
ServiceRegistry,
|
|
23
21
|
SpaceInvitationProtocol,
|
|
@@ -25,17 +23,12 @@ import {
|
|
|
25
23
|
TrustedKeySetAuthVerifier,
|
|
26
24
|
createAdmissionKeypair,
|
|
27
25
|
createAuthProvider,
|
|
28
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
29
|
-
createCollectDiagnosticsBroadcastSender,
|
|
30
26
|
createDiagnostics,
|
|
31
27
|
createLevel,
|
|
32
28
|
createStorageObjects,
|
|
33
|
-
|
|
34
|
-
encodeProfileArchive,
|
|
35
|
-
exportProfileData,
|
|
29
|
+
diagnostics_exports,
|
|
36
30
|
getNetworkPeers,
|
|
37
|
-
|
|
38
|
-
isLocked,
|
|
31
|
+
locks_exports,
|
|
39
32
|
subscribeToFeedBlocks,
|
|
40
33
|
subscribeToFeeds,
|
|
41
34
|
subscribeToNetworkStatus,
|
|
@@ -43,128 +36,348 @@ import {
|
|
|
43
36
|
subscribeToSignal,
|
|
44
37
|
subscribeToSpaces,
|
|
45
38
|
subscribeToSwarmInfo
|
|
46
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-MQ6PWJ76.mjs";
|
|
40
|
+
import "./chunk-NQSC7HOE.mjs";
|
|
41
|
+
import {
|
|
42
|
+
__export,
|
|
43
|
+
__reExport
|
|
44
|
+
} from "./chunk-QCWEHHJW.mjs";
|
|
47
45
|
|
|
48
|
-
// src/
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
// src/index.ts
|
|
47
|
+
var index_exports = {};
|
|
48
|
+
__export(index_exports, {
|
|
49
|
+
ClientRpcServer: () => ClientRpcServer,
|
|
50
|
+
ClientServicesHost: () => ClientServicesHost,
|
|
51
|
+
DataSpace: () => DataSpace,
|
|
52
|
+
DataSpaceManager: () => DataSpaceManager,
|
|
53
|
+
DeviceInvitationProtocol: () => DeviceInvitationProtocol,
|
|
54
|
+
DevtoolsHostEvents: () => DevtoolsHostEvents,
|
|
55
|
+
DevtoolsServiceImpl: () => DevtoolsServiceImpl,
|
|
56
|
+
DiagnosticsCollector: () => DiagnosticsCollector,
|
|
57
|
+
EdgeAgentManager: () => EdgeAgentManager,
|
|
58
|
+
EdgeAgentServiceImpl: () => EdgeAgentServiceImpl,
|
|
59
|
+
EdgeFeedReplicator: () => EdgeFeedReplicator,
|
|
60
|
+
Identity: () => Identity,
|
|
61
|
+
IdentityManager: () => IdentityManager,
|
|
62
|
+
IdentityServiceImpl: () => IdentityServiceImpl,
|
|
63
|
+
InvitationsHandler: () => InvitationsHandler,
|
|
64
|
+
InvitationsManager: () => InvitationsManager,
|
|
65
|
+
InvitationsServiceImpl: () => InvitationsServiceImpl,
|
|
66
|
+
ServiceContext: () => ServiceContext,
|
|
67
|
+
ServiceRegistry: () => ServiceRegistry,
|
|
68
|
+
SpaceInvitationProtocol: () => SpaceInvitationProtocol,
|
|
69
|
+
SpacesServiceImpl: () => SpacesServiceImpl,
|
|
70
|
+
TrustedKeySetAuthVerifier: () => TrustedKeySetAuthVerifier,
|
|
71
|
+
WorkerRuntime: () => WorkerRuntime,
|
|
72
|
+
WorkerSession: () => WorkerSession,
|
|
73
|
+
createAdmissionKeypair: () => createAdmissionKeypair,
|
|
74
|
+
createAuthProvider: () => createAuthProvider,
|
|
75
|
+
createDiagnostics: () => createDiagnostics,
|
|
76
|
+
createLevel: () => createLevel,
|
|
77
|
+
createStorageObjects: () => createStorageObjects,
|
|
78
|
+
decodeProfileArchive: () => decodeProfileArchive,
|
|
79
|
+
encodeProfileArchive: () => encodeProfileArchive,
|
|
80
|
+
exportProfileData: () => exportProfileData,
|
|
81
|
+
getNetworkPeers: () => getNetworkPeers,
|
|
82
|
+
importProfileData: () => importProfileData,
|
|
83
|
+
subscribeToFeedBlocks: () => subscribeToFeedBlocks,
|
|
84
|
+
subscribeToFeeds: () => subscribeToFeeds,
|
|
85
|
+
subscribeToNetworkStatus: () => subscribeToNetworkStatus,
|
|
86
|
+
subscribeToNetworkTopics: () => subscribeToNetworkTopics,
|
|
87
|
+
subscribeToSignal: () => subscribeToSignal,
|
|
88
|
+
subscribeToSpaces: () => subscribeToSpaces,
|
|
89
|
+
subscribeToSwarmInfo: () => subscribeToSwarmInfo
|
|
90
|
+
});
|
|
91
|
+
__reExport(index_exports, diagnostics_exports);
|
|
92
|
+
__reExport(index_exports, locks_exports);
|
|
56
93
|
|
|
57
|
-
// src/packlets/
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import {
|
|
61
|
-
import {
|
|
62
|
-
import { createProtoRpcPeer } from "@dxos/rpc";
|
|
63
|
-
import { Callback } from "@dxos/util";
|
|
64
|
-
function _define_property(obj, key, value) {
|
|
65
|
-
if (key in obj) {
|
|
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
|
-
}
|
|
94
|
+
// src/packlets/services/client-rpc-server.ts
|
|
95
|
+
import { Stream } from "@dxos/codec-protobuf";
|
|
96
|
+
import { raise } from "@dxos/debug";
|
|
97
|
+
import { RpcPeer, parseMethodName } from "@dxos/rpc";
|
|
98
|
+
import { MapCounter, trace } from "@dxos/tracing";
|
|
77
99
|
function _ts_decorate(decorators, target, key, desc) {
|
|
78
100
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
79
101
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
80
102
|
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
103
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
82
104
|
}
|
|
83
|
-
var
|
|
84
|
-
|
|
105
|
+
var ClientRpcServer = class {
|
|
106
|
+
_serviceRegistry;
|
|
107
|
+
_rpcPeer;
|
|
108
|
+
_handlerCache = /* @__PURE__ */ new Map();
|
|
109
|
+
_handleCall;
|
|
110
|
+
_handleStream;
|
|
111
|
+
_callMetrics = new MapCounter();
|
|
112
|
+
get _services() {
|
|
113
|
+
return Object.keys(this._serviceRegistry.services);
|
|
114
|
+
}
|
|
115
|
+
constructor(params) {
|
|
116
|
+
const { serviceRegistry, handleCall, handleStream, ...rpcOptions } = params;
|
|
117
|
+
this._handleCall = handleCall;
|
|
118
|
+
this._handleStream = handleStream;
|
|
119
|
+
this._serviceRegistry = serviceRegistry;
|
|
120
|
+
this._rpcPeer = new RpcPeer({
|
|
121
|
+
...rpcOptions,
|
|
122
|
+
callHandler: (method, params2) => {
|
|
123
|
+
const [serviceName, methodName] = parseMethodName(method);
|
|
124
|
+
const handler = (method2, params3) => this._getServiceHandler(serviceName).call(method2, params3);
|
|
125
|
+
this._callMetrics.inc(`${serviceName}.${methodName} request`);
|
|
126
|
+
if (this._handleCall) {
|
|
127
|
+
return this._handleCall(methodName, params2, handler);
|
|
128
|
+
} else {
|
|
129
|
+
return handler(methodName, params2);
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
streamHandler: (method, params2) => {
|
|
133
|
+
const [serviceName, methodName] = parseMethodName(method);
|
|
134
|
+
const handler = (method2, params3) => this._getServiceHandler(serviceName).callStream(method2, params3);
|
|
135
|
+
this._callMetrics.inc(`${serviceName}.${methodName} request stream`);
|
|
136
|
+
if (this._handleStream) {
|
|
137
|
+
return Stream.map(Stream.unwrapPromise(this._handleStream(methodName, params2, handler)), (data) => {
|
|
138
|
+
this._callMetrics.inc(`${serviceName}.${methodName} response stream`);
|
|
139
|
+
return data;
|
|
140
|
+
});
|
|
141
|
+
} else {
|
|
142
|
+
return handler(methodName, params2);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
85
147
|
async open() {
|
|
86
|
-
|
|
148
|
+
await this._rpcPeer.open();
|
|
149
|
+
}
|
|
150
|
+
async close() {
|
|
151
|
+
await this._rpcPeer.close();
|
|
152
|
+
}
|
|
153
|
+
_getServiceHandler(serviceName) {
|
|
154
|
+
if (!this._handlerCache.has(serviceName)) {
|
|
155
|
+
const [key, descriptor] = Object.entries(this._serviceRegistry.descriptors).find(([key2, descriptor2]) => descriptor2.name === serviceName) ?? raise(new Error(`Service not available: ${serviceName}`));
|
|
156
|
+
const service = this._serviceRegistry.services[key];
|
|
157
|
+
if (!service) {
|
|
158
|
+
throw new Error(`Service not available: ${serviceName}`);
|
|
159
|
+
}
|
|
160
|
+
this._handlerCache.set(serviceName, descriptor.createServer(service));
|
|
161
|
+
}
|
|
162
|
+
return this._handlerCache.get(serviceName);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
_ts_decorate([
|
|
166
|
+
trace.metricsCounter()
|
|
167
|
+
], ClientRpcServer.prototype, "_callMetrics", void 0);
|
|
168
|
+
_ts_decorate([
|
|
169
|
+
trace.info()
|
|
170
|
+
], ClientRpcServer.prototype, "_services", null);
|
|
171
|
+
ClientRpcServer = _ts_decorate([
|
|
172
|
+
trace.resource()
|
|
173
|
+
], ClientRpcServer);
|
|
174
|
+
|
|
175
|
+
// src/packlets/storage/profile-archive.ts
|
|
176
|
+
import { cbor } from "@automerge/automerge-repo";
|
|
177
|
+
import { invariant } from "@dxos/invariant";
|
|
178
|
+
import { log } from "@dxos/log";
|
|
179
|
+
import { ProfileArchiveEntryType } from "@dxos/protocols";
|
|
180
|
+
import { arrayToBuffer } from "@dxos/util";
|
|
181
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/storage/profile-archive.ts";
|
|
182
|
+
var encodeProfileArchive = (profile) => cbor.encode(profile);
|
|
183
|
+
var decodeProfileArchive = (data) => cbor.decode(data);
|
|
184
|
+
var exportProfileData = async ({ storage, level }) => {
|
|
185
|
+
const archive = {
|
|
186
|
+
storage: [],
|
|
187
|
+
meta: {
|
|
188
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
{
|
|
192
|
+
const directory = await storage.createDirectory();
|
|
193
|
+
const files = await directory.list();
|
|
194
|
+
log.info("begin exporting files", {
|
|
195
|
+
count: files.length
|
|
196
|
+
}, {
|
|
87
197
|
F: __dxlog_file,
|
|
88
|
-
L:
|
|
89
|
-
S:
|
|
198
|
+
L: 31,
|
|
199
|
+
S: void 0,
|
|
90
200
|
C: (f, a) => f(...a)
|
|
91
201
|
});
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
void this._afterLockReleases(this.lockKey, () => this.close());
|
|
202
|
+
for (const filename of files) {
|
|
203
|
+
const file = await directory.getOrCreateFile(filename);
|
|
204
|
+
const { size } = await file.stat();
|
|
205
|
+
const data = await file.read(0, size);
|
|
206
|
+
archive.storage.push({
|
|
207
|
+
type: ProfileArchiveEntryType.FILE,
|
|
208
|
+
key: filename,
|
|
209
|
+
value: data
|
|
210
|
+
});
|
|
102
211
|
}
|
|
103
|
-
log.info("
|
|
212
|
+
log.info("done exporting files", {
|
|
213
|
+
count: files.length
|
|
214
|
+
}, {
|
|
104
215
|
F: __dxlog_file,
|
|
105
|
-
L:
|
|
106
|
-
S:
|
|
216
|
+
L: 42,
|
|
217
|
+
S: void 0,
|
|
107
218
|
C: (f, a) => f(...a)
|
|
108
219
|
});
|
|
109
220
|
}
|
|
110
|
-
|
|
111
|
-
log.info("
|
|
221
|
+
{
|
|
222
|
+
log.info("begin exporting kv pairs", void 0, {
|
|
112
223
|
F: __dxlog_file,
|
|
113
|
-
L:
|
|
114
|
-
S:
|
|
224
|
+
L: 46,
|
|
225
|
+
S: void 0,
|
|
115
226
|
C: (f, a) => f(...a)
|
|
116
227
|
});
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
228
|
+
const iter = await level.iterator({
|
|
229
|
+
keyEncoding: "binary",
|
|
230
|
+
valueEncoding: "binary"
|
|
231
|
+
});
|
|
232
|
+
let count = 0;
|
|
233
|
+
for await (const [key, value] of iter) {
|
|
234
|
+
archive.storage.push({
|
|
235
|
+
type: ProfileArchiveEntryType.KEY_VALUE,
|
|
236
|
+
key,
|
|
237
|
+
value
|
|
125
238
|
});
|
|
239
|
+
count++;
|
|
126
240
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
]);
|
|
131
|
-
log.info("closed", void 0, {
|
|
241
|
+
log.info("done exporting kv pairs", {
|
|
242
|
+
count
|
|
243
|
+
}, {
|
|
132
244
|
F: __dxlog_file,
|
|
133
|
-
L:
|
|
134
|
-
S:
|
|
245
|
+
L: 57,
|
|
246
|
+
S: void 0,
|
|
135
247
|
C: (f, a) => f(...a)
|
|
136
248
|
});
|
|
137
249
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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", {
|
|
260
|
+
F: __dxlog_file,
|
|
261
|
+
L: 80,
|
|
262
|
+
S: void 0,
|
|
263
|
+
A: [
|
|
264
|
+
"typeof entry.key === 'string'",
|
|
265
|
+
"'Invalid key type'"
|
|
266
|
+
]
|
|
267
|
+
});
|
|
268
|
+
const file = await directory.getOrCreateFile(entry.key);
|
|
269
|
+
invariant(entry.value instanceof Uint8Array, "Invalid value type", {
|
|
270
|
+
F: __dxlog_file,
|
|
271
|
+
L: 82,
|
|
272
|
+
S: void 0,
|
|
273
|
+
A: [
|
|
274
|
+
"entry.value instanceof Uint8Array",
|
|
275
|
+
"'Invalid value type'"
|
|
276
|
+
]
|
|
277
|
+
});
|
|
278
|
+
await file.write(0, arrayToBuffer(entry.value));
|
|
279
|
+
await file.close();
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
case ProfileArchiveEntryType.KEY_VALUE: {
|
|
283
|
+
invariant(entry.key instanceof Uint8Array, "Invalid key type", {
|
|
284
|
+
F: __dxlog_file,
|
|
285
|
+
L: 88,
|
|
286
|
+
S: void 0,
|
|
287
|
+
A: [
|
|
288
|
+
"entry.key instanceof Uint8Array",
|
|
289
|
+
"'Invalid key type'"
|
|
290
|
+
]
|
|
291
|
+
});
|
|
292
|
+
invariant(entry.value instanceof Uint8Array, "Invalid value type", {
|
|
293
|
+
F: __dxlog_file,
|
|
294
|
+
L: 89,
|
|
295
|
+
S: void 0,
|
|
296
|
+
A: [
|
|
297
|
+
"entry.value instanceof Uint8Array",
|
|
298
|
+
"'Invalid value type'"
|
|
299
|
+
]
|
|
300
|
+
});
|
|
301
|
+
batch.put(entry.key, entry.value, {
|
|
302
|
+
keyEncoding: "binary",
|
|
303
|
+
valueEncoding: "binary"
|
|
304
|
+
});
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
307
|
+
default:
|
|
308
|
+
throw new Error(`Invalid entry type: ${entry.type}`);
|
|
309
|
+
}
|
|
310
|
+
if (++count % 1e3 === 0) {
|
|
311
|
+
await batch.write();
|
|
312
|
+
batch = level.batch();
|
|
313
|
+
log.info("importing", {
|
|
314
|
+
count,
|
|
315
|
+
total: archive.storage.length,
|
|
316
|
+
progress: `${(count / archive.storage.length * 100).toFixed()}%`
|
|
317
|
+
}, {
|
|
143
318
|
F: __dxlog_file,
|
|
144
|
-
L:
|
|
145
|
-
S:
|
|
319
|
+
L: 102,
|
|
320
|
+
S: void 0,
|
|
146
321
|
C: (f, a) => f(...a)
|
|
147
322
|
});
|
|
148
323
|
}
|
|
149
324
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
325
|
+
log.info("committing changes..", void 0, {
|
|
326
|
+
F: __dxlog_file,
|
|
327
|
+
L: 110,
|
|
328
|
+
S: void 0,
|
|
329
|
+
C: (f, a) => f(...a)
|
|
330
|
+
});
|
|
331
|
+
await batch.write();
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
// src/packlets/worker/worker-runtime.ts
|
|
335
|
+
import * as Reactivity from "@effect/experimental/Reactivity";
|
|
336
|
+
import * as Effect from "effect/Effect";
|
|
337
|
+
import * as Layer from "effect/Layer";
|
|
338
|
+
import * as ManagedRuntime from "effect/ManagedRuntime";
|
|
339
|
+
import { Trigger as Trigger2 } from "@dxos/async";
|
|
340
|
+
import { DEFAULT_WORKER_BROADCAST_CHANNEL } from "@dxos/client-protocol";
|
|
341
|
+
import { Context } from "@dxos/context";
|
|
342
|
+
import { invariant as invariant3 } from "@dxos/invariant";
|
|
343
|
+
import { log as log3 } from "@dxos/log";
|
|
344
|
+
import { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager, setIdentityTags } from "@dxos/messaging";
|
|
345
|
+
import { RtcTransportProxyFactory } from "@dxos/network-manager";
|
|
346
|
+
import * as OpfsWorker from "@dxos/sql-sqlite/OpfsWorker";
|
|
347
|
+
import * as SqlExport from "@dxos/sql-sqlite/SqlExport";
|
|
348
|
+
import * as SqliteClient from "@dxos/sql-sqlite/SqliteClient";
|
|
349
|
+
import * as SqlTransaction from "@dxos/sql-sqlite/SqlTransaction";
|
|
350
|
+
|
|
351
|
+
// src/packlets/worker/worker-session.ts
|
|
352
|
+
import { Trigger, asyncTimeout } from "@dxos/async";
|
|
353
|
+
import { PROXY_CONNECTION_TIMEOUT, iframeServiceBundle, workerServiceBundle } from "@dxos/client-protocol";
|
|
354
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
355
|
+
import { log as log2, logInfo } from "@dxos/log";
|
|
356
|
+
import { createProtoRpcPeer } from "@dxos/rpc";
|
|
357
|
+
import { Callback } from "@dxos/util";
|
|
358
|
+
function _ts_decorate2(decorators, target, key, desc) {
|
|
359
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
360
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
361
|
+
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;
|
|
362
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
363
|
+
}
|
|
364
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
|
|
365
|
+
var WorkerSession = class {
|
|
366
|
+
_clientRpc;
|
|
367
|
+
_shellClientRpc;
|
|
368
|
+
_iframeRpc;
|
|
369
|
+
_startTrigger = new Trigger();
|
|
370
|
+
_serviceHost;
|
|
371
|
+
onClose = new Callback();
|
|
372
|
+
origin;
|
|
373
|
+
// TODO(nf): factor out?
|
|
374
|
+
observabilityGroup;
|
|
375
|
+
signalTelemetryEnabled;
|
|
376
|
+
lockKey;
|
|
377
|
+
bridgeService;
|
|
154
378
|
constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
|
|
155
|
-
|
|
156
|
-
|
|
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,
|
|
379
|
+
invariant2(serviceHost, void 0, {
|
|
380
|
+
F: __dxlog_file2,
|
|
168
381
|
L: 54,
|
|
169
382
|
S: this,
|
|
170
383
|
A: [
|
|
@@ -220,8 +433,8 @@ var WorkerSession = class {
|
|
|
220
433
|
try {
|
|
221
434
|
await this.close();
|
|
222
435
|
} catch (err) {
|
|
223
|
-
|
|
224
|
-
F:
|
|
436
|
+
log2.catch(err, void 0, {
|
|
437
|
+
F: __dxlog_file2,
|
|
225
438
|
L: 108,
|
|
226
439
|
S: this,
|
|
227
440
|
C: (f, a) => f(...a)
|
|
@@ -236,41 +449,147 @@ var WorkerSession = class {
|
|
|
236
449
|
});
|
|
237
450
|
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
238
451
|
}
|
|
452
|
+
async open() {
|
|
453
|
+
log2("opening...", void 0, {
|
|
454
|
+
F: __dxlog_file2,
|
|
455
|
+
L: 122,
|
|
456
|
+
S: this,
|
|
457
|
+
C: (f, a) => f(...a)
|
|
458
|
+
});
|
|
459
|
+
await Promise.all([
|
|
460
|
+
this._clientRpc.open(),
|
|
461
|
+
this._iframeRpc.open(),
|
|
462
|
+
this._maybeOpenShell()
|
|
463
|
+
]);
|
|
464
|
+
await this._startTrigger.wait({
|
|
465
|
+
timeout: PROXY_CONNECTION_TIMEOUT
|
|
466
|
+
});
|
|
467
|
+
if (this.lockKey) {
|
|
468
|
+
void this._afterLockReleases(this.lockKey, () => this.close());
|
|
469
|
+
}
|
|
470
|
+
log2("opened", void 0, {
|
|
471
|
+
F: __dxlog_file2,
|
|
472
|
+
L: 133,
|
|
473
|
+
S: this,
|
|
474
|
+
C: (f, a) => f(...a)
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
async close() {
|
|
478
|
+
log2.debug("closing...", void 0, {
|
|
479
|
+
F: __dxlog_file2,
|
|
480
|
+
L: 137,
|
|
481
|
+
S: this,
|
|
482
|
+
C: (f, a) => f(...a)
|
|
483
|
+
});
|
|
484
|
+
try {
|
|
485
|
+
await this.onClose.callIfSet();
|
|
486
|
+
} catch (err) {
|
|
487
|
+
log2.catch(err, void 0, {
|
|
488
|
+
F: __dxlog_file2,
|
|
489
|
+
L: 141,
|
|
490
|
+
S: this,
|
|
491
|
+
C: (f, a) => f(...a)
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
await Promise.all([
|
|
495
|
+
this._clientRpc.close(),
|
|
496
|
+
this._iframeRpc.close()
|
|
497
|
+
]);
|
|
498
|
+
log2.debug("closed", void 0, {
|
|
499
|
+
F: __dxlog_file2,
|
|
500
|
+
L: 145,
|
|
501
|
+
S: this,
|
|
502
|
+
C: (f, a) => f(...a)
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
async _maybeOpenShell() {
|
|
506
|
+
try {
|
|
507
|
+
this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
|
|
508
|
+
} catch {
|
|
509
|
+
log2.info("No shell connected.", void 0, {
|
|
510
|
+
F: __dxlog_file2,
|
|
511
|
+
L: 152,
|
|
512
|
+
S: this,
|
|
513
|
+
C: (f, a) => f(...a)
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
_afterLockReleases(lockKey, callback) {
|
|
518
|
+
return navigator.locks.request(lockKey, () => {
|
|
519
|
+
}).then(callback);
|
|
520
|
+
}
|
|
239
521
|
};
|
|
240
|
-
|
|
522
|
+
_ts_decorate2([
|
|
241
523
|
logInfo
|
|
242
524
|
], WorkerSession.prototype, "origin", void 0);
|
|
243
|
-
|
|
525
|
+
_ts_decorate2([
|
|
244
526
|
logInfo
|
|
245
527
|
], WorkerSession.prototype, "lockKey", void 0);
|
|
246
528
|
|
|
247
529
|
// src/packlets/worker/worker-runtime.ts
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
530
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
|
|
531
|
+
var WorkerRuntime = class {
|
|
532
|
+
_configProvider;
|
|
533
|
+
_acquireLock;
|
|
534
|
+
_releaseLock;
|
|
535
|
+
_onStop;
|
|
536
|
+
_transportFactory = new RtcTransportProxyFactory();
|
|
537
|
+
_ready = new Trigger2();
|
|
538
|
+
_sessions = /* @__PURE__ */ new Set();
|
|
539
|
+
_clientServices;
|
|
540
|
+
_channel;
|
|
541
|
+
_automaticallyConnectWebrtc;
|
|
542
|
+
_livenessLock = new WebLockWrapper(`@dxos/client-services/WorkerRuntime/${crypto.randomUUID()}`);
|
|
543
|
+
_broadcastChannel;
|
|
544
|
+
_sessionForNetworking;
|
|
545
|
+
_config;
|
|
546
|
+
_signalMetadataTags = {
|
|
547
|
+
runtime: "worker-runtime"
|
|
548
|
+
};
|
|
549
|
+
_signalTelemetryEnabled = false;
|
|
550
|
+
_runtime;
|
|
551
|
+
constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop, automaticallyConnectWebrtc = true, sqliteLayer }) {
|
|
552
|
+
this._configProvider = configProvider;
|
|
553
|
+
this._acquireLock = acquireLock;
|
|
554
|
+
this._releaseLock = releaseLock;
|
|
555
|
+
this._onStop = onStop;
|
|
556
|
+
this._channel = channel;
|
|
557
|
+
if (sqliteLayer) {
|
|
558
|
+
log3.warn("Using testing SQLite layer", void 0, {
|
|
559
|
+
F: __dxlog_file3,
|
|
560
|
+
L: 103,
|
|
561
|
+
S: this,
|
|
562
|
+
C: (f, a) => f(...a)
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
this._runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayer ?? LocalSqliteOpfsLayer), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
|
|
566
|
+
this._clientServices = new ClientServicesHost({
|
|
567
|
+
callbacks: {
|
|
568
|
+
onReset: async () => this.stop()
|
|
569
|
+
},
|
|
570
|
+
runtime: this._runtime.runtimeEffect,
|
|
571
|
+
runtimeProps: {
|
|
572
|
+
// Auto-activate spaces that were previously active after leader changeover.
|
|
573
|
+
autoActivateSpaces: true
|
|
574
|
+
}
|
|
255
575
|
});
|
|
256
|
-
|
|
257
|
-
obj[key] = value;
|
|
576
|
+
this._automaticallyConnectWebrtc = automaticallyConnectWebrtc;
|
|
258
577
|
}
|
|
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
578
|
get host() {
|
|
264
579
|
return this._clientServices;
|
|
265
580
|
}
|
|
581
|
+
get livenessLockKey() {
|
|
582
|
+
return this._livenessLock.key;
|
|
583
|
+
}
|
|
266
584
|
async start() {
|
|
267
|
-
|
|
268
|
-
F:
|
|
269
|
-
L:
|
|
585
|
+
log3("starting...", void 0, {
|
|
586
|
+
F: __dxlog_file3,
|
|
587
|
+
L: 132,
|
|
270
588
|
S: this,
|
|
271
589
|
C: (f, a) => f(...a)
|
|
272
590
|
});
|
|
273
591
|
try {
|
|
592
|
+
void this._livenessLock.acquire();
|
|
274
593
|
this._broadcastChannel = new BroadcastChannel(this._channel);
|
|
275
594
|
this._broadcastChannel.postMessage({
|
|
276
595
|
action: "stop"
|
|
@@ -289,13 +608,13 @@ var WorkerRuntime = class {
|
|
|
289
608
|
transportFactory: this._transportFactory
|
|
290
609
|
});
|
|
291
610
|
await this._clientServices.open(new Context(void 0, {
|
|
292
|
-
F:
|
|
293
|
-
L:
|
|
611
|
+
F: __dxlog_file3,
|
|
612
|
+
L: 158
|
|
294
613
|
}));
|
|
295
614
|
this._ready.wake(void 0);
|
|
296
|
-
|
|
297
|
-
F:
|
|
298
|
-
L:
|
|
615
|
+
log3("started", void 0, {
|
|
616
|
+
F: __dxlog_file3,
|
|
617
|
+
L: 160,
|
|
299
618
|
S: this,
|
|
300
619
|
C: (f, a) => f(...a)
|
|
301
620
|
});
|
|
@@ -308,9 +627,9 @@ var WorkerRuntime = class {
|
|
|
308
627
|
});
|
|
309
628
|
} catch (err) {
|
|
310
629
|
this._ready.wake(err);
|
|
311
|
-
|
|
312
|
-
F:
|
|
313
|
-
L:
|
|
630
|
+
log3.error("starting", err, {
|
|
631
|
+
F: __dxlog_file3,
|
|
632
|
+
L: 170,
|
|
314
633
|
S: this,
|
|
315
634
|
C: (f, a) => f(...a)
|
|
316
635
|
});
|
|
@@ -321,12 +640,14 @@ var WorkerRuntime = class {
|
|
|
321
640
|
this._broadcastChannel?.close();
|
|
322
641
|
this._broadcastChannel = void 0;
|
|
323
642
|
await this._clientServices.close();
|
|
643
|
+
await this._runtime.dispose();
|
|
324
644
|
await this._onStop?.();
|
|
645
|
+
await this._livenessLock.release();
|
|
325
646
|
}
|
|
326
647
|
/**
|
|
327
648
|
* Create a new session.
|
|
328
649
|
*/
|
|
329
|
-
async createSession({ appPort, systemPort, shellPort }) {
|
|
650
|
+
async createSession({ appPort, systemPort, shellPort, onClose }) {
|
|
330
651
|
const session = new WorkerSession({
|
|
331
652
|
serviceHost: this._clientServices,
|
|
332
653
|
appPort,
|
|
@@ -339,13 +660,16 @@ var WorkerRuntime = class {
|
|
|
339
660
|
if (this._sessions.size === 0) {
|
|
340
661
|
await this.stop();
|
|
341
662
|
} else {
|
|
342
|
-
this.
|
|
663
|
+
if (this._automaticallyConnectWebrtc) {
|
|
664
|
+
this._reconnectWebrtc();
|
|
665
|
+
}
|
|
343
666
|
}
|
|
667
|
+
await onClose?.();
|
|
344
668
|
});
|
|
345
669
|
await session.open();
|
|
346
|
-
|
|
347
|
-
F:
|
|
348
|
-
L:
|
|
670
|
+
invariant3(!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin, `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`, {
|
|
671
|
+
F: __dxlog_file3,
|
|
672
|
+
L: 213,
|
|
349
673
|
S: this,
|
|
350
674
|
A: [
|
|
351
675
|
"!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin",
|
|
@@ -358,15 +682,30 @@ var WorkerRuntime = class {
|
|
|
358
682
|
this._signalTelemetryEnabled = session.signalTelemetryEnabled ?? false;
|
|
359
683
|
this._signalMetadataTags.origin = session.origin;
|
|
360
684
|
this._sessions.add(session);
|
|
361
|
-
this.
|
|
685
|
+
if (this._automaticallyConnectWebrtc) {
|
|
686
|
+
this._reconnectWebrtc();
|
|
687
|
+
}
|
|
688
|
+
return session;
|
|
689
|
+
}
|
|
690
|
+
/**
|
|
691
|
+
* Connects the WebRTC bridge to the specified session.
|
|
692
|
+
* If no session is provided, disconnects the WebRTC bridge.
|
|
693
|
+
*
|
|
694
|
+
* Called automatically if `automaticallyConnectWebrtc` is true.
|
|
695
|
+
*
|
|
696
|
+
* @param session The session to connect the WebRTC bridge to.
|
|
697
|
+
*/
|
|
698
|
+
connectWebrtcBridge(session) {
|
|
699
|
+
this._sessionForNetworking = session;
|
|
700
|
+
this._transportFactory.setBridgeService(session?.bridgeService);
|
|
362
701
|
}
|
|
363
702
|
/**
|
|
364
703
|
* Selects one of the existing session for WebRTC networking.
|
|
365
704
|
*/
|
|
366
705
|
_reconnectWebrtc() {
|
|
367
|
-
|
|
368
|
-
F:
|
|
369
|
-
L:
|
|
706
|
+
log3("reconnecting webrtc...", void 0, {
|
|
707
|
+
F: __dxlog_file3,
|
|
708
|
+
L: 248,
|
|
370
709
|
S: this,
|
|
371
710
|
C: (f, a) => f(...a)
|
|
372
711
|
});
|
|
@@ -377,42 +716,57 @@ var WorkerRuntime = class {
|
|
|
377
716
|
}
|
|
378
717
|
if (!this._sessionForNetworking) {
|
|
379
718
|
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
|
-
}
|
|
719
|
+
this.connectWebrtcBridge(selected);
|
|
386
720
|
}
|
|
387
721
|
}
|
|
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
|
-
|
|
722
|
+
};
|
|
723
|
+
var DB_NAME = "DXOS";
|
|
724
|
+
var SqlExportLayer = Layer.effect(SqlExport.SqlExport, Effect.gen(function* () {
|
|
725
|
+
const sql = yield* SqliteClient.SqliteClient;
|
|
726
|
+
return {
|
|
727
|
+
export: sql.export
|
|
728
|
+
};
|
|
729
|
+
}));
|
|
730
|
+
var LocalSqliteOpfsLayer = Layer.unwrapScoped(Effect.gen(function* () {
|
|
731
|
+
const { port1: clientPort, port2: serverPort } = new MessageChannel();
|
|
732
|
+
clientPort.start();
|
|
733
|
+
serverPort.start();
|
|
734
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => {
|
|
735
|
+
clientPort.close();
|
|
736
|
+
serverPort.close();
|
|
737
|
+
}));
|
|
738
|
+
yield* Effect.forkScoped(OpfsWorker.run({
|
|
739
|
+
port: serverPort,
|
|
740
|
+
dbName: DB_NAME
|
|
741
|
+
}));
|
|
742
|
+
return SqlExportLayer.pipe(Layer.provideMerge(SqliteClient.layer({
|
|
743
|
+
worker: Effect.succeed(clientPort)
|
|
744
|
+
})));
|
|
745
|
+
}));
|
|
746
|
+
var WebLockWrapper = class {
|
|
747
|
+
#key;
|
|
748
|
+
#release;
|
|
749
|
+
constructor(key) {
|
|
750
|
+
this.#key = key;
|
|
751
|
+
}
|
|
752
|
+
get key() {
|
|
753
|
+
return this.#key;
|
|
754
|
+
}
|
|
755
|
+
acquire(options = {}) {
|
|
756
|
+
return navigator.locks.request(this.#key, options, async () => {
|
|
757
|
+
await new Promise((resolve) => {
|
|
758
|
+
this.#release = resolve;
|
|
759
|
+
});
|
|
760
|
+
this.#release = void 0;
|
|
414
761
|
});
|
|
415
762
|
}
|
|
763
|
+
release() {
|
|
764
|
+
this.#release?.();
|
|
765
|
+
this.#release = void 0;
|
|
766
|
+
}
|
|
767
|
+
[Symbol.dispose]() {
|
|
768
|
+
this.release();
|
|
769
|
+
}
|
|
416
770
|
};
|
|
417
771
|
export {
|
|
418
772
|
ClientRpcServer,
|
|
@@ -432,7 +786,6 @@ export {
|
|
|
432
786
|
InvitationsHandler,
|
|
433
787
|
InvitationsManager,
|
|
434
788
|
InvitationsServiceImpl,
|
|
435
|
-
Lock,
|
|
436
789
|
ServiceContext,
|
|
437
790
|
ServiceRegistry,
|
|
438
791
|
SpaceInvitationProtocol,
|
|
@@ -442,8 +795,6 @@ export {
|
|
|
442
795
|
WorkerSession,
|
|
443
796
|
createAdmissionKeypair,
|
|
444
797
|
createAuthProvider,
|
|
445
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
446
|
-
createCollectDiagnosticsBroadcastSender,
|
|
447
798
|
createDiagnostics,
|
|
448
799
|
createLevel,
|
|
449
800
|
createStorageObjects,
|
|
@@ -452,7 +803,6 @@ export {
|
|
|
452
803
|
exportProfileData,
|
|
453
804
|
getNetworkPeers,
|
|
454
805
|
importProfileData,
|
|
455
|
-
isLocked,
|
|
456
806
|
subscribeToFeedBlocks,
|
|
457
807
|
subscribeToFeeds,
|
|
458
808
|
subscribeToNetworkStatus,
|