@dxos/client-services 0.8.4-main.1da679c → 0.8.4-main.21d9917
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-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/{chunk-XT2YQZXS.mjs → chunk-QWDES2YZ.mjs} +1681 -2334
- package/dist/lib/browser/chunk-QWDES2YZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +513 -171
- 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-MDSLKO5V.mjs → chunk-2ZEVKBWH.mjs} +1231 -1753
- package/dist/lib/node-esm/chunk-2ZEVKBWH.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 +513 -171
- 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/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/service-context.d.ts +13 -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 +23 -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/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 +1 -1
- package/src/packlets/services/client-rpc-server.ts +4 -4
- package/src/packlets/services/service-context.ts +30 -19
- package/src/packlets/services/service-host.ts +62 -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 +7 -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 +141 -11
- package/src/packlets/worker/worker-session.ts +4 -4
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-XT2YQZXS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MDSLKO5V.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-QWDES2YZ.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,140 @@ var WorkerSession = class {
|
|
|
236
449
|
});
|
|
237
450
|
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
238
451
|
}
|
|
452
|
+
async open() {
|
|
453
|
+
log2.info("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.info("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.info("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.info("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, enableFullTextIndexing }) {
|
|
552
|
+
this._configProvider = configProvider;
|
|
553
|
+
this._acquireLock = acquireLock;
|
|
554
|
+
this._releaseLock = releaseLock;
|
|
555
|
+
this._onStop = onStop;
|
|
556
|
+
this._channel = channel;
|
|
557
|
+
this._runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(LocalSqliteOpfsLayer), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
|
|
558
|
+
this._clientServices = new ClientServicesHost({
|
|
559
|
+
callbacks: {
|
|
560
|
+
onReset: async () => this.stop()
|
|
561
|
+
},
|
|
562
|
+
runtime: this._runtime.runtimeEffect,
|
|
563
|
+
runtimeProps: {
|
|
564
|
+
enableFullTextIndexing,
|
|
565
|
+
// Auto-activate spaces that were previously active after leader changeover.
|
|
566
|
+
autoActivateSpaces: true
|
|
567
|
+
}
|
|
255
568
|
});
|
|
256
|
-
|
|
257
|
-
obj[key] = value;
|
|
569
|
+
this._automaticallyConnectWebrtc = automaticallyConnectWebrtc;
|
|
258
570
|
}
|
|
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
571
|
get host() {
|
|
264
572
|
return this._clientServices;
|
|
265
573
|
}
|
|
574
|
+
get livenessLockKey() {
|
|
575
|
+
return this._livenessLock.key;
|
|
576
|
+
}
|
|
266
577
|
async start() {
|
|
267
|
-
|
|
268
|
-
F:
|
|
269
|
-
L:
|
|
578
|
+
log3("starting...", void 0, {
|
|
579
|
+
F: __dxlog_file3,
|
|
580
|
+
L: 125,
|
|
270
581
|
S: this,
|
|
271
582
|
C: (f, a) => f(...a)
|
|
272
583
|
});
|
|
273
584
|
try {
|
|
585
|
+
void this._livenessLock.acquire();
|
|
274
586
|
this._broadcastChannel = new BroadcastChannel(this._channel);
|
|
275
587
|
this._broadcastChannel.postMessage({
|
|
276
588
|
action: "stop"
|
|
@@ -289,13 +601,13 @@ var WorkerRuntime = class {
|
|
|
289
601
|
transportFactory: this._transportFactory
|
|
290
602
|
});
|
|
291
603
|
await this._clientServices.open(new Context(void 0, {
|
|
292
|
-
F:
|
|
293
|
-
L:
|
|
604
|
+
F: __dxlog_file3,
|
|
605
|
+
L: 151
|
|
294
606
|
}));
|
|
295
607
|
this._ready.wake(void 0);
|
|
296
|
-
|
|
297
|
-
F:
|
|
298
|
-
L:
|
|
608
|
+
log3("started", void 0, {
|
|
609
|
+
F: __dxlog_file3,
|
|
610
|
+
L: 153,
|
|
299
611
|
S: this,
|
|
300
612
|
C: (f, a) => f(...a)
|
|
301
613
|
});
|
|
@@ -308,9 +620,9 @@ var WorkerRuntime = class {
|
|
|
308
620
|
});
|
|
309
621
|
} catch (err) {
|
|
310
622
|
this._ready.wake(err);
|
|
311
|
-
|
|
312
|
-
F:
|
|
313
|
-
L:
|
|
623
|
+
log3.error("starting", err, {
|
|
624
|
+
F: __dxlog_file3,
|
|
625
|
+
L: 163,
|
|
314
626
|
S: this,
|
|
315
627
|
C: (f, a) => f(...a)
|
|
316
628
|
});
|
|
@@ -321,7 +633,9 @@ var WorkerRuntime = class {
|
|
|
321
633
|
this._broadcastChannel?.close();
|
|
322
634
|
this._broadcastChannel = void 0;
|
|
323
635
|
await this._clientServices.close();
|
|
636
|
+
await this._runtime.dispose();
|
|
324
637
|
await this._onStop?.();
|
|
638
|
+
await this._livenessLock.release();
|
|
325
639
|
}
|
|
326
640
|
/**
|
|
327
641
|
* Create a new session.
|
|
@@ -339,13 +653,15 @@ var WorkerRuntime = class {
|
|
|
339
653
|
if (this._sessions.size === 0) {
|
|
340
654
|
await this.stop();
|
|
341
655
|
} else {
|
|
342
|
-
this.
|
|
656
|
+
if (this._automaticallyConnectWebrtc) {
|
|
657
|
+
this._reconnectWebrtc();
|
|
658
|
+
}
|
|
343
659
|
}
|
|
344
660
|
});
|
|
345
661
|
await session.open();
|
|
346
|
-
|
|
347
|
-
F:
|
|
348
|
-
L:
|
|
662
|
+
invariant3(!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin, `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`, {
|
|
663
|
+
F: __dxlog_file3,
|
|
664
|
+
L: 205,
|
|
349
665
|
S: this,
|
|
350
666
|
A: [
|
|
351
667
|
"!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin",
|
|
@@ -358,15 +674,30 @@ var WorkerRuntime = class {
|
|
|
358
674
|
this._signalTelemetryEnabled = session.signalTelemetryEnabled ?? false;
|
|
359
675
|
this._signalMetadataTags.origin = session.origin;
|
|
360
676
|
this._sessions.add(session);
|
|
361
|
-
this.
|
|
677
|
+
if (this._automaticallyConnectWebrtc) {
|
|
678
|
+
this._reconnectWebrtc();
|
|
679
|
+
}
|
|
680
|
+
return session;
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* Connects the WebRTC bridge to the specified session.
|
|
684
|
+
* If no session is provided, disconnects the WebRTC bridge.
|
|
685
|
+
*
|
|
686
|
+
* Called automatically if `automaticallyConnectWebrtc` is true.
|
|
687
|
+
*
|
|
688
|
+
* @param session The session to connect the WebRTC bridge to.
|
|
689
|
+
*/
|
|
690
|
+
connectWebrtcBridge(session) {
|
|
691
|
+
this._sessionForNetworking = session;
|
|
692
|
+
this._transportFactory.setBridgeService(session?.bridgeService);
|
|
362
693
|
}
|
|
363
694
|
/**
|
|
364
695
|
* Selects one of the existing session for WebRTC networking.
|
|
365
696
|
*/
|
|
366
697
|
_reconnectWebrtc() {
|
|
367
|
-
|
|
368
|
-
F:
|
|
369
|
-
L:
|
|
698
|
+
log3("reconnecting webrtc...", void 0, {
|
|
699
|
+
F: __dxlog_file3,
|
|
700
|
+
L: 240,
|
|
370
701
|
S: this,
|
|
371
702
|
C: (f, a) => f(...a)
|
|
372
703
|
});
|
|
@@ -377,42 +708,57 @@ var WorkerRuntime = class {
|
|
|
377
708
|
}
|
|
378
709
|
if (!this._sessionForNetworking) {
|
|
379
710
|
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
|
-
}
|
|
711
|
+
this.connectWebrtcBridge(selected);
|
|
386
712
|
}
|
|
387
713
|
}
|
|
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
|
-
|
|
714
|
+
};
|
|
715
|
+
var DB_NAME = "DXOS";
|
|
716
|
+
var SqlExportLayer = Layer.effect(SqlExport.SqlExport, Effect.gen(function* () {
|
|
717
|
+
const sql = yield* SqliteClient.SqliteClient;
|
|
718
|
+
return {
|
|
719
|
+
export: sql.export
|
|
720
|
+
};
|
|
721
|
+
}));
|
|
722
|
+
var LocalSqliteOpfsLayer = Layer.unwrapScoped(Effect.gen(function* () {
|
|
723
|
+
const { port1: clientPort, port2: serverPort } = new MessageChannel();
|
|
724
|
+
clientPort.start();
|
|
725
|
+
serverPort.start();
|
|
726
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => {
|
|
727
|
+
clientPort.close();
|
|
728
|
+
serverPort.close();
|
|
729
|
+
}));
|
|
730
|
+
yield* Effect.forkScoped(OpfsWorker.run({
|
|
731
|
+
port: serverPort,
|
|
732
|
+
dbName: DB_NAME
|
|
733
|
+
}));
|
|
734
|
+
return SqlExportLayer.pipe(Layer.provideMerge(SqliteClient.layer({
|
|
735
|
+
worker: Effect.succeed(clientPort)
|
|
736
|
+
})));
|
|
737
|
+
}));
|
|
738
|
+
var WebLockWrapper = class {
|
|
739
|
+
#key;
|
|
740
|
+
#release;
|
|
741
|
+
constructor(key) {
|
|
742
|
+
this.#key = key;
|
|
743
|
+
}
|
|
744
|
+
get key() {
|
|
745
|
+
return this.#key;
|
|
746
|
+
}
|
|
747
|
+
acquire(options = {}) {
|
|
748
|
+
return navigator.locks.request(this.#key, options, async () => {
|
|
749
|
+
await new Promise((resolve) => {
|
|
750
|
+
this.#release = resolve;
|
|
751
|
+
});
|
|
752
|
+
this.#release = void 0;
|
|
414
753
|
});
|
|
415
754
|
}
|
|
755
|
+
release() {
|
|
756
|
+
this.#release?.();
|
|
757
|
+
this.#release = void 0;
|
|
758
|
+
}
|
|
759
|
+
[Symbol.dispose]() {
|
|
760
|
+
this.release();
|
|
761
|
+
}
|
|
416
762
|
};
|
|
417
763
|
export {
|
|
418
764
|
ClientRpcServer,
|
|
@@ -432,7 +778,6 @@ export {
|
|
|
432
778
|
InvitationsHandler,
|
|
433
779
|
InvitationsManager,
|
|
434
780
|
InvitationsServiceImpl,
|
|
435
|
-
Lock,
|
|
436
781
|
ServiceContext,
|
|
437
782
|
ServiceRegistry,
|
|
438
783
|
SpaceInvitationProtocol,
|
|
@@ -442,8 +787,6 @@ export {
|
|
|
442
787
|
WorkerSession,
|
|
443
788
|
createAdmissionKeypair,
|
|
444
789
|
createAuthProvider,
|
|
445
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
446
|
-
createCollectDiagnosticsBroadcastSender,
|
|
447
790
|
createDiagnostics,
|
|
448
791
|
createLevel,
|
|
449
792
|
createStorageObjects,
|
|
@@ -452,7 +795,6 @@ export {
|
|
|
452
795
|
exportProfileData,
|
|
453
796
|
getNetworkPeers,
|
|
454
797
|
importProfileData,
|
|
455
|
-
isLocked,
|
|
456
798
|
subscribeToFeedBlocks,
|
|
457
799
|
subscribeToFeeds,
|
|
458
800
|
subscribeToNetworkStatus,
|