@dxos/client-services 0.8.4-main.ae835ea → 0.8.4-main.bc674ce
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-KPYVJG6G.mjs → chunk-J33W6T4Q.mjs} +1025 -1331
- package/dist/lib/browser/chunk-J33W6T4Q.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 +432 -65
- 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 +24 -12
- 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-BBBSS6UL.mjs → chunk-34HKLADW.mjs} +517 -692
- package/dist/lib/node-esm/chunk-34HKLADW.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 +432 -65
- 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 +24 -12
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- 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/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.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 +56 -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 +43 -20
- package/src/packlets/spaces/data-space.ts +7 -6
- package/src/packlets/spaces/edge-feed-replicator.ts +2 -2
- 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-KPYVJG6G.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BBBSS6UL.mjs.map +0 -7
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import "@dxos/node-std/globals";
|
|
2
|
+
import "../../chunk-QCWEHHJW.mjs";
|
|
3
|
+
|
|
4
|
+
// src/packlets/diagnostics/browser-diagnostics-broadcast.ts
|
|
5
|
+
import { Trigger } from "@dxos/async";
|
|
6
|
+
import { log } from "@dxos/log";
|
|
7
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/diagnostics/browser-diagnostics-broadcast.ts";
|
|
8
|
+
var CHANNEL_NAME = "dxos.diagnostics.broadcast";
|
|
9
|
+
var createCollectDiagnosticsBroadcastSender = () => {
|
|
10
|
+
return {
|
|
11
|
+
broadcastDiagnosticsRequest: async () => {
|
|
12
|
+
let expectedResponse = "probe-ack";
|
|
13
|
+
let channel;
|
|
14
|
+
try {
|
|
15
|
+
const trigger = new Trigger();
|
|
16
|
+
channel = new BroadcastChannel(CHANNEL_NAME);
|
|
17
|
+
channel.onmessage = (msg) => {
|
|
18
|
+
if (expectedResponse === msg.data.type) {
|
|
19
|
+
trigger.wake(msg.data);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
channel.postMessage({
|
|
23
|
+
type: "probe"
|
|
24
|
+
});
|
|
25
|
+
await trigger.wait({
|
|
26
|
+
timeout: 200
|
|
27
|
+
});
|
|
28
|
+
expectedResponse = "receive-diagnostics";
|
|
29
|
+
trigger.reset();
|
|
30
|
+
channel.postMessage({
|
|
31
|
+
type: "request-diagnostics"
|
|
32
|
+
});
|
|
33
|
+
const diagnostics = await trigger.wait({
|
|
34
|
+
timeout: 5e3
|
|
35
|
+
});
|
|
36
|
+
return diagnostics.payload;
|
|
37
|
+
} catch (e) {
|
|
38
|
+
const errorDescription = e instanceof Error ? e.message : JSON.stringify(e);
|
|
39
|
+
return {
|
|
40
|
+
expectedResponse,
|
|
41
|
+
errorDescription
|
|
42
|
+
};
|
|
43
|
+
} finally {
|
|
44
|
+
safeClose(channel);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
var createCollectDiagnosticsBroadcastHandler = (systemService) => {
|
|
50
|
+
let channel;
|
|
51
|
+
return {
|
|
52
|
+
start: () => {
|
|
53
|
+
channel = new BroadcastChannel(CHANNEL_NAME);
|
|
54
|
+
channel.onmessage = async (message) => {
|
|
55
|
+
try {
|
|
56
|
+
if (message.data.type === "probe") {
|
|
57
|
+
channel?.postMessage({
|
|
58
|
+
type: "probe-ack"
|
|
59
|
+
});
|
|
60
|
+
} else if (message.data.type === "request-diagnostics") {
|
|
61
|
+
const diagnostics = await systemService.getDiagnostics({});
|
|
62
|
+
channel?.postMessage({
|
|
63
|
+
type: "receive-diagnostics",
|
|
64
|
+
payload: diagnostics
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
} catch (error) {
|
|
68
|
+
log.catch(error, void 0, {
|
|
69
|
+
F: __dxlog_file,
|
|
70
|
+
L: 77,
|
|
71
|
+
S: void 0,
|
|
72
|
+
C: (f, a) => f(...a)
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
stop: () => {
|
|
78
|
+
safeClose(channel);
|
|
79
|
+
channel = void 0;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
var safeClose = (channel) => {
|
|
84
|
+
try {
|
|
85
|
+
channel?.close();
|
|
86
|
+
} catch (e) {
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
export {
|
|
90
|
+
createCollectDiagnosticsBroadcastHandler,
|
|
91
|
+
createCollectDiagnosticsBroadcastSender
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=browser-diagnostics-broadcast.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/packlets/diagnostics/browser-diagnostics-broadcast.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { type SystemService } from '@dxos/protocols/proto/dxos/client/services';\n\nimport {\n type CollectDiagnosticsBroadcastHandler,\n type CollectDiagnosticsBroadcastSender,\n} from './diagnostics-collector';\n\nconst CHANNEL_NAME = 'dxos.diagnostics.broadcast';\n\nenum MessageType {\n PROBE = 'probe',\n PROBE_ACK = 'probe-ack',\n REQUEST_DIAGNOSTICS = 'request-diagnostics',\n RECEIVE_DIAGNOSTICS = 'receive-diagnostics',\n}\n\ninterface Message {\n type: MessageType;\n payload?: any;\n}\n\nexport const createCollectDiagnosticsBroadcastSender = (): CollectDiagnosticsBroadcastSender => {\n return {\n broadcastDiagnosticsRequest: async () => {\n let expectedResponse = MessageType.PROBE_ACK;\n let channel: BroadcastChannel | undefined;\n try {\n const trigger = new Trigger<Message>();\n channel = new BroadcastChannel(CHANNEL_NAME);\n channel.onmessage = (msg) => {\n if (expectedResponse === msg.data.type) {\n trigger.wake(msg.data);\n }\n };\n channel.postMessage({ type: MessageType.PROBE });\n await trigger.wait({ timeout: 200 });\n expectedResponse = MessageType.RECEIVE_DIAGNOSTICS;\n trigger.reset();\n channel.postMessage({ type: MessageType.REQUEST_DIAGNOSTICS });\n const diagnostics = await trigger.wait({ timeout: 5000 });\n return diagnostics.payload;\n } catch (e) {\n const errorDescription = e instanceof Error ? e.message : JSON.stringify(e);\n return { expectedResponse, errorDescription };\n } finally {\n safeClose(channel);\n }\n },\n };\n};\n\nexport const createCollectDiagnosticsBroadcastHandler = (\n systemService: SystemService,\n): CollectDiagnosticsBroadcastHandler => {\n let channel: BroadcastChannel | undefined;\n return {\n start: () => {\n channel = new BroadcastChannel(CHANNEL_NAME);\n channel.onmessage = async (message) => {\n try {\n if (message.data.type === MessageType.PROBE) {\n channel?.postMessage({ type: MessageType.PROBE_ACK });\n } else if (message.data.type === MessageType.REQUEST_DIAGNOSTICS) {\n const diagnostics = await systemService.getDiagnostics({});\n channel?.postMessage({\n type: MessageType.RECEIVE_DIAGNOSTICS,\n payload: diagnostics,\n });\n }\n } catch (error) {\n log.catch(error);\n }\n };\n },\n stop: () => {\n safeClose(channel);\n channel = undefined;\n },\n };\n};\n\nconst safeClose = (channel?: BroadcastChannel) => {\n try {\n channel?.close();\n } catch (e) {\n // ignored\n }\n};\n"],
|
|
5
|
+
"mappings": ";;;;AAIA,SAASA,eAAe;AACxB,SAASC,WAAW;;AAQpB,IAAMC,eAAe;AAcd,IAAMC,0CAA0C,MAAA;AACrD,SAAO;IACLC,6BAA6B,YAAA;AAC3B,UAAIC,mBAAAA;AACJ,UAAIC;AACJ,UAAI;AACF,cAAMC,UAAU,IAAIC,QAAAA;AACpBF,kBAAU,IAAIG,iBAAiBC,YAAAA;AAC/BJ,gBAAQK,YAAY,CAACC,QAAAA;AACnB,cAAIP,qBAAqBO,IAAIC,KAAKC,MAAM;AACtCP,oBAAQQ,KAAKH,IAAIC,IAAI;UACvB;QACF;AACAP,gBAAQU,YAAY;UAAEF,MAAI;QAAoB,CAAA;AAC9C,cAAMP,QAAQU,KAAK;UAAEC,SAAS;QAAI,CAAA;AAClCb,2BAAAA;AACAE,gBAAQY,MAAK;AACbb,gBAAQU,YAAY;UAAEF,MAAI;QAAkC,CAAA;AAC5D,cAAMM,cAAc,MAAMb,QAAQU,KAAK;UAAEC,SAAS;QAAK,CAAA;AACvD,eAAOE,YAAYC;MACrB,SAASC,GAAG;AACV,cAAMC,mBAAmBD,aAAaE,QAAQF,EAAEG,UAAUC,KAAKC,UAAUL,CAAAA;AACzE,eAAO;UAAEjB;UAAkBkB;QAAiB;MAC9C,UAAA;AACEK,kBAAUtB,OAAAA;MACZ;IACF;EACF;AACF;AAEO,IAAMuB,2CAA2C,CACtDC,kBAAAA;AAEA,MAAIxB;AACJ,SAAO;IACLyB,OAAO,MAAA;AACLzB,gBAAU,IAAIG,iBAAiBC,YAAAA;AAC/BJ,cAAQK,YAAY,OAAOc,YAAAA;AACzB,YAAI;AACF,cAAIA,QAAQZ,KAAKC,SAAI,SAAwB;AAC3CR,qBAASU,YAAY;cAAEF,MAAI;YAAwB,CAAA;UACrD,WAAWW,QAAQZ,KAAKC,SAAI,uBAAsC;AAChE,kBAAMM,cAAc,MAAMU,cAAcE,eAAe,CAAC,CAAA;AACxD1B,qBAASU,YAAY;cACnBF,MAAI;cACJO,SAASD;YACX,CAAA;UACF;QACF,SAASa,OAAO;AACdC,cAAIC,MAAMF,OAAAA,QAAAA;;;;;;QACZ;MACF;IACF;IACAG,MAAM,MAAA;AACJR,gBAAUtB,OAAAA;AACVA,gBAAU+B;IACZ;EACF;AACF;AAEA,IAAMT,YAAY,CAACtB,YAAAA;AACjB,MAAI;AACFA,aAASgC,MAAAA;EACX,SAAShB,GAAG;EAEZ;AACF;",
|
|
6
|
+
"names": ["Trigger", "log", "CHANNEL_NAME", "createCollectDiagnosticsBroadcastSender", "broadcastDiagnosticsRequest", "expectedResponse", "channel", "trigger", "Trigger", "BroadcastChannel", "CHANNEL_NAME", "onmessage", "msg", "data", "type", "wake", "postMessage", "wait", "timeout", "reset", "diagnostics", "payload", "e", "errorDescription", "Error", "message", "JSON", "stringify", "safeClose", "createCollectDiagnosticsBroadcastHandler", "systemService", "start", "getDiagnostics", "error", "log", "catch", "stop", "undefined", "close"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "@dxos/node-std/globals";
|
|
2
|
+
import {
|
|
3
|
+
createCollectDiagnosticsBroadcastHandler,
|
|
4
|
+
createCollectDiagnosticsBroadcastSender
|
|
5
|
+
} from "../../chunk-NQSC7HOE.mjs";
|
|
6
|
+
import "../../chunk-QCWEHHJW.mjs";
|
|
7
|
+
export {
|
|
8
|
+
createCollectDiagnosticsBroadcastHandler,
|
|
9
|
+
createCollectDiagnosticsBroadcastSender
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=diagnostics-broadcast.mjs.map
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import "@dxos/node-std/globals";
|
|
2
|
+
import "../../chunk-QCWEHHJW.mjs";
|
|
3
|
+
|
|
4
|
+
// src/packlets/locks/browser.ts
|
|
5
|
+
import { Trigger, asyncTimeout } from "@dxos/async";
|
|
6
|
+
import { RESOURCE_LOCK_TIMEOUT } from "@dxos/client-protocol";
|
|
7
|
+
import { log, logInfo } from "@dxos/log";
|
|
8
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
9
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
10
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
11
|
+
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;
|
|
12
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13
|
+
}
|
|
14
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/locks/browser.ts";
|
|
15
|
+
var Lock = class {
|
|
16
|
+
_broadcastChannel = new BroadcastChannel("vault-resource-lock");
|
|
17
|
+
_lockKey;
|
|
18
|
+
_onAcquire;
|
|
19
|
+
_onRelease;
|
|
20
|
+
_releaseTrigger = new Trigger();
|
|
21
|
+
constructor({ lockKey, onAcquire, onRelease }) {
|
|
22
|
+
this._lockKey = lockKey;
|
|
23
|
+
this._onAcquire = onAcquire;
|
|
24
|
+
this._onRelease = onRelease;
|
|
25
|
+
this._broadcastChannel.onmessage = this._onMessage.bind(this);
|
|
26
|
+
}
|
|
27
|
+
get lockKey() {
|
|
28
|
+
return this._lockKey;
|
|
29
|
+
}
|
|
30
|
+
async acquire() {
|
|
31
|
+
this._broadcastChannel.postMessage({
|
|
32
|
+
message: "acquiring"
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
log("aquiring lock...", void 0, {
|
|
36
|
+
F: __dxlog_file,
|
|
37
|
+
L: 42,
|
|
38
|
+
S: this,
|
|
39
|
+
C: (f, a) => f(...a)
|
|
40
|
+
});
|
|
41
|
+
await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);
|
|
42
|
+
log("acquired lock", void 0, {
|
|
43
|
+
F: __dxlog_file,
|
|
44
|
+
L: 44,
|
|
45
|
+
S: this,
|
|
46
|
+
C: (f, a) => f(...a)
|
|
47
|
+
});
|
|
48
|
+
} catch {
|
|
49
|
+
log("stealing lock...", void 0, {
|
|
50
|
+
F: __dxlog_file,
|
|
51
|
+
L: 46,
|
|
52
|
+
S: this,
|
|
53
|
+
C: (f, a) => f(...a)
|
|
54
|
+
});
|
|
55
|
+
await this._requestLock(true);
|
|
56
|
+
log("stolen lock", void 0, {
|
|
57
|
+
F: __dxlog_file,
|
|
58
|
+
L: 48,
|
|
59
|
+
S: this,
|
|
60
|
+
C: (f, a) => f(...a)
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async release() {
|
|
65
|
+
this._releaseTrigger.wake();
|
|
66
|
+
}
|
|
67
|
+
_onMessage(event) {
|
|
68
|
+
if (event.data.message === "acquiring") {
|
|
69
|
+
this._releaseTrigger.wake();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async _requestLock(steal = false) {
|
|
73
|
+
log("requesting lock...", {
|
|
74
|
+
steal
|
|
75
|
+
}, {
|
|
76
|
+
F: __dxlog_file,
|
|
77
|
+
L: 63,
|
|
78
|
+
S: this,
|
|
79
|
+
C: (f, a) => f(...a)
|
|
80
|
+
});
|
|
81
|
+
const acquired = new Trigger();
|
|
82
|
+
void navigator.locks.request(this._lockKey, {
|
|
83
|
+
steal
|
|
84
|
+
}, async () => {
|
|
85
|
+
await this._onAcquire?.();
|
|
86
|
+
acquired.wake();
|
|
87
|
+
this._releaseTrigger = new Trigger();
|
|
88
|
+
await this._releaseTrigger.wait();
|
|
89
|
+
log("releasing lock...", void 0, {
|
|
90
|
+
F: __dxlog_file,
|
|
91
|
+
L: 72,
|
|
92
|
+
S: this,
|
|
93
|
+
C: (f, a) => f(...a)
|
|
94
|
+
});
|
|
95
|
+
await this._onRelease?.();
|
|
96
|
+
log("released lock", void 0, {
|
|
97
|
+
F: __dxlog_file,
|
|
98
|
+
L: 74,
|
|
99
|
+
S: this,
|
|
100
|
+
C: (f, a) => f(...a)
|
|
101
|
+
});
|
|
102
|
+
}).catch(async () => {
|
|
103
|
+
await this._onRelease?.();
|
|
104
|
+
});
|
|
105
|
+
await acquired.wait();
|
|
106
|
+
log("recieved lock", {
|
|
107
|
+
steal
|
|
108
|
+
}, {
|
|
109
|
+
F: __dxlog_file,
|
|
110
|
+
L: 81,
|
|
111
|
+
S: this,
|
|
112
|
+
C: (f, a) => f(...a)
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
_ts_decorate([
|
|
117
|
+
logInfo
|
|
118
|
+
], Lock.prototype, "lockKey", null);
|
|
119
|
+
var isLocked = (lockPath) => {
|
|
120
|
+
throw new Error("Not implemented");
|
|
121
|
+
};
|
|
122
|
+
export {
|
|
123
|
+
Lock,
|
|
124
|
+
isLocked
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=browser.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/packlets/locks/browser.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Trigger, asyncTimeout } from '@dxos/async';\nimport { RESOURCE_LOCK_TIMEOUT } from '@dxos/client-protocol';\nimport { log, logInfo } from '@dxos/log';\n\nimport { type ResourceLock, type ResourceLockOptions } from './resource-lock';\n\nenum Message {\n ACQUIRING = 'acquiring',\n}\n\n// TODO(mykola): Factor out.\n// TODO(burdon): Extend to support locking for web and NodeJS (use npm lockfile). Use to lock agents.\nexport class Lock implements ResourceLock {\n private readonly _broadcastChannel = new BroadcastChannel('vault-resource-lock');\n private readonly _lockKey: string;\n private readonly _onAcquire: ResourceLockOptions['onAcquire'];\n private readonly _onRelease: ResourceLockOptions['onRelease'];\n private _releaseTrigger = new Trigger();\n\n constructor({ lockKey, onAcquire, onRelease }: ResourceLockOptions) {\n this._lockKey = lockKey;\n this._onAcquire = onAcquire;\n this._onRelease = onRelease;\n this._broadcastChannel.onmessage = this._onMessage.bind(this);\n }\n\n @logInfo\n get lockKey() {\n return this._lockKey;\n }\n\n async acquire(): Promise<void> {\n this._broadcastChannel.postMessage({\n message: Message.ACQUIRING,\n });\n\n try {\n log('aquiring lock...');\n await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);\n log('acquired lock');\n } catch {\n log('stealing lock...');\n await this._requestLock(true);\n log('stolen lock');\n }\n }\n\n async release(): Promise<void> {\n this._releaseTrigger.wake();\n }\n\n private _onMessage(event: MessageEvent<any>): void {\n if (event.data.message === Message.ACQUIRING) {\n this._releaseTrigger.wake();\n }\n }\n\n private async _requestLock(steal = false): Promise<void> {\n log('requesting lock...', { steal });\n const acquired = new Trigger();\n\n void navigator.locks\n .request(this._lockKey, { steal }, async () => {\n await this._onAcquire?.();\n acquired.wake();\n this._releaseTrigger = new Trigger();\n await this._releaseTrigger.wait();\n log('releasing lock...');\n await this._onRelease?.();\n log('released lock');\n })\n .catch(async () => {\n await this._onRelease?.();\n });\n\n await acquired.wait();\n log('recieved lock', { steal });\n }\n}\n\n// TODO(mykola): Implement.\nexport const isLocked = (lockPath: string) => {\n throw new Error('Not implemented');\n};\n"],
|
|
5
|
+
"mappings": ";;;;AAIA,SAASA,SAASC,oBAAoB;AACtC,SAASC,6BAA6B;AACtC,SAASC,KAAKC,eAAe;;;;;;;;AAUtB,IAAMC,OAAN,MAAMA;EACMC,oBAAoB,IAAIC,iBAAiB,qBAAA;EACzCC;EACAC;EACAC;EACTC,kBAAkB,IAAIC,QAAAA;EAE9B,YAAY,EAAEC,SAASC,WAAWC,UAAS,GAAyB;AAClE,SAAKP,WAAWK;AAChB,SAAKJ,aAAaK;AAClB,SAAKJ,aAAaK;AAClB,SAAKT,kBAAkBU,YAAY,KAAKC,WAAWC,KAAK,IAAI;EAC9D;EAEA,IACIL,UAAU;AACZ,WAAO,KAAKL;EACd;EAEA,MAAMW,UAAyB;AAC7B,SAAKb,kBAAkBc,YAAY;MACjCC,SAAO;IACT,CAAA;AAEA,QAAI;AACFC,UAAI,oBAAA,QAAA;;;;;;AACJ,YAAMC,aAAa,KAAKC,aAAY,GAAIC,qBAAAA;AACxCH,UAAI,iBAAA,QAAA;;;;;;IACN,QAAQ;AACNA,UAAI,oBAAA,QAAA;;;;;;AACJ,YAAM,KAAKE,aAAa,IAAA;AACxBF,UAAI,eAAA,QAAA;;;;;;IACN;EACF;EAEA,MAAMI,UAAyB;AAC7B,SAAKf,gBAAgBgB,KAAI;EAC3B;EAEQV,WAAWW,OAAgC;AACjD,QAAIA,MAAMC,KAAKR,YAAO,aAAwB;AAC5C,WAAKV,gBAAgBgB,KAAI;IAC3B;EACF;EAEA,MAAcH,aAAaM,QAAQ,OAAsB;AACvDR,QAAI,sBAAsB;MAAEQ;IAAM,GAAA;;;;;;AAClC,UAAMC,WAAW,IAAInB,QAAAA;AAErB,SAAKoB,UAAUC,MACZC,QAAQ,KAAK1B,UAAU;MAAEsB;IAAM,GAAG,YAAA;AACjC,YAAM,KAAKrB,aAAU;AACrBsB,eAASJ,KAAI;AACb,WAAKhB,kBAAkB,IAAIC,QAAAA;AAC3B,YAAM,KAAKD,gBAAgBwB,KAAI;AAC/Bb,UAAI,qBAAA,QAAA;;;;;;AACJ,YAAM,KAAKZ,aAAU;AACrBY,UAAI,iBAAA,QAAA;;;;;;IACN,CAAA,EACCc,MAAM,YAAA;AACL,YAAM,KAAK1B,aAAU;IACvB,CAAA;AAEF,UAAMqB,SAASI,KAAI;AACnBb,QAAI,iBAAiB;MAAEQ;IAAM,GAAA;;;;;;EAC/B;AACF;;;;AAGO,IAAMO,WAAW,CAACC,aAAAA;AACvB,QAAM,IAAIC,MAAM,iBAAA;AAClB;",
|
|
6
|
+
"names": ["Trigger", "asyncTimeout", "RESOURCE_LOCK_TIMEOUT", "log", "logInfo", "Lock", "_broadcastChannel", "BroadcastChannel", "_lockKey", "_onAcquire", "_onRelease", "_releaseTrigger", "Trigger", "lockKey", "onAcquire", "onRelease", "onmessage", "_onMessage", "bind", "acquire", "postMessage", "message", "log", "asyncTimeout", "_requestLock", "RESOURCE_LOCK_TIMEOUT", "release", "wake", "event", "data", "steal", "acquired", "navigator", "locks", "request", "wait", "catch", "isLocked", "lockPath", "Error"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import "@dxos/node-std/globals";
|
|
2
|
+
import "../../chunk-QCWEHHJW.mjs";
|
|
3
|
+
|
|
4
|
+
// src/packlets/locks/node.ts
|
|
5
|
+
import { invariant } from "@dxos/invariant";
|
|
6
|
+
import { LockFile } from "@dxos/lock-file";
|
|
7
|
+
import { log, logInfo } from "@dxos/log";
|
|
8
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
9
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
10
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
11
|
+
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;
|
|
12
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13
|
+
}
|
|
14
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/locks/node.ts";
|
|
15
|
+
var Lock = class {
|
|
16
|
+
_lockPath;
|
|
17
|
+
_onAcquire;
|
|
18
|
+
_onRelease;
|
|
19
|
+
_fileHandle;
|
|
20
|
+
constructor({ lockKey: lockPath, onAcquire, onRelease }) {
|
|
21
|
+
this._lockPath = lockPath;
|
|
22
|
+
this._onAcquire = onAcquire;
|
|
23
|
+
this._onRelease = onRelease;
|
|
24
|
+
}
|
|
25
|
+
get lockKey() {
|
|
26
|
+
return this._lockPath;
|
|
27
|
+
}
|
|
28
|
+
async acquire() {
|
|
29
|
+
log("acquiring lock...", void 0, {
|
|
30
|
+
F: __dxlog_file,
|
|
31
|
+
L: 32,
|
|
32
|
+
S: this,
|
|
33
|
+
C: (f, a) => f(...a)
|
|
34
|
+
});
|
|
35
|
+
this._fileHandle = await LockFile.acquire(this._lockPath);
|
|
36
|
+
await this._onAcquire?.();
|
|
37
|
+
log("acquired lock", void 0, {
|
|
38
|
+
F: __dxlog_file,
|
|
39
|
+
L: 37,
|
|
40
|
+
S: this,
|
|
41
|
+
C: (f, a) => f(...a)
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async release() {
|
|
45
|
+
await this._onRelease?.();
|
|
46
|
+
invariant(this._fileHandle, "Lock is not acquired", {
|
|
47
|
+
F: __dxlog_file,
|
|
48
|
+
L: 42,
|
|
49
|
+
S: this,
|
|
50
|
+
A: [
|
|
51
|
+
"this._fileHandle",
|
|
52
|
+
"'Lock is not acquired'"
|
|
53
|
+
]
|
|
54
|
+
});
|
|
55
|
+
await LockFile.release(this._fileHandle);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
_ts_decorate([
|
|
59
|
+
logInfo
|
|
60
|
+
], Lock.prototype, "lockKey", null);
|
|
61
|
+
var isLocked = (lockPath) => LockFile.isLocked(lockPath);
|
|
62
|
+
export {
|
|
63
|
+
Lock,
|
|
64
|
+
isLocked
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=node.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/packlets/locks/node.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type FileHandle } from 'node:fs/promises';\n\nimport { invariant } from '@dxos/invariant';\nimport { LockFile } from '@dxos/lock-file';\nimport { log, logInfo } from '@dxos/log';\n\nimport { type ResourceLock, type ResourceLockOptions } from './resource-lock';\n\n// TODO(mykola): Factor out.\nexport class Lock implements ResourceLock {\n private readonly _lockPath: string;\n private readonly _onAcquire: ResourceLockOptions['onAcquire'];\n private readonly _onRelease: ResourceLockOptions['onRelease'];\n private _fileHandle?: FileHandle;\n\n constructor({ lockKey: lockPath, onAcquire, onRelease }: ResourceLockOptions) {\n this._lockPath = lockPath;\n this._onAcquire = onAcquire;\n this._onRelease = onRelease;\n }\n\n @logInfo\n get lockKey() {\n return this._lockPath;\n }\n\n async acquire(): Promise<void> {\n log('acquiring lock...');\n this._fileHandle = await LockFile.acquire(this._lockPath);\n\n await this._onAcquire?.();\n\n log('acquired lock');\n }\n\n async release(): Promise<void> {\n await this._onRelease?.();\n invariant(this._fileHandle, 'Lock is not acquired');\n await LockFile.release(this._fileHandle);\n }\n}\n\nexport const isLocked = (lockPath: string) => LockFile.isLocked(lockPath);\n"],
|
|
5
|
+
"mappings": ";;;;AAMA,SAASA,iBAAiB;AAC1B,SAASC,gBAAgB;AACzB,SAASC,KAAKC,eAAe;;;;;;;;AAKtB,IAAMC,OAAN,MAAMA;EACMC;EACAC;EACAC;EACTC;EAER,YAAY,EAAEC,SAASC,UAAUC,WAAWC,UAAS,GAAyB;AAC5E,SAAKP,YAAYK;AACjB,SAAKJ,aAAaK;AAClB,SAAKJ,aAAaK;EACpB;EAEA,IACIH,UAAU;AACZ,WAAO,KAAKJ;EACd;EAEA,MAAMQ,UAAyB;AAC7BX,QAAI,qBAAA,QAAA;;;;;;AACJ,SAAKM,cAAc,MAAMP,SAASY,QAAQ,KAAKR,SAAS;AAExD,UAAM,KAAKC,aAAU;AAErBJ,QAAI,iBAAA,QAAA;;;;;;EACN;EAEA,MAAMY,UAAyB;AAC7B,UAAM,KAAKP,aAAU;AACrBP,cAAU,KAAKQ,aAAa,wBAAA;;;;;;;;;AAC5B,UAAMP,SAASa,QAAQ,KAAKN,WAAW;EACzC;AACF;;;;AAEO,IAAMO,WAAW,CAACL,aAAqBT,SAASc,SAASL,QAAAA;",
|
|
6
|
+
"names": ["invariant", "LockFile", "log", "logInfo", "Lock", "_lockPath", "_onAcquire", "_onRelease", "_fileHandle", "lockKey", "lockPath", "onAcquire", "onRelease", "acquire", "release", "isLocked"]
|
|
7
|
+
}
|
|
@@ -6,7 +6,9 @@ import {
|
|
|
6
6
|
InvitationsManager,
|
|
7
7
|
ServiceContext,
|
|
8
8
|
SpaceInvitationProtocol
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-J33W6T4Q.mjs";
|
|
10
|
+
import "../chunk-NQSC7HOE.mjs";
|
|
11
|
+
import "../chunk-QCWEHHJW.mjs";
|
|
10
12
|
|
|
11
13
|
// src/packlets/testing/credential-utils.ts
|
|
12
14
|
import { createCredential } from "@dxos/credentials";
|
|
@@ -33,7 +35,7 @@ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/tes
|
|
|
33
35
|
var sanitizeInvitation = (invitation) => {
|
|
34
36
|
return InvitationEncoder.decode(InvitationEncoder.encode(invitation));
|
|
35
37
|
};
|
|
36
|
-
var performInvitation = ({ host, guest, options, hooks,
|
|
38
|
+
var performInvitation = ({ host, guest, guestDeviceProfile, options, hooks, codeInputDelay }) => {
|
|
37
39
|
let guestError = false;
|
|
38
40
|
let guestConnected = false;
|
|
39
41
|
let wereConnected = false;
|
|
@@ -65,7 +67,7 @@ var performInvitation = ({ host, guest, options, hooks, guestDeviceProfile, code
|
|
|
65
67
|
}
|
|
66
68
|
invariant(hostInvitation.swarmKey.equals(guestInvitation.swarmKey), void 0, {
|
|
67
69
|
F: __dxlog_file,
|
|
68
|
-
L:
|
|
70
|
+
L: 98,
|
|
69
71
|
S: void 0,
|
|
70
72
|
A: [
|
|
71
73
|
"hostInvitation.swarmKey!.equals(guestInvitation.swarmKey!)",
|
|
@@ -221,6 +223,9 @@ var acceptInvitation = (guest, invitation, guestDeviceProfile) => {
|
|
|
221
223
|
};
|
|
222
224
|
|
|
223
225
|
// src/packlets/testing/test-builder.ts
|
|
226
|
+
import * as Reactivity from "@effect/experimental/Reactivity";
|
|
227
|
+
import * as Layer from "effect/Layer";
|
|
228
|
+
import * as ManagedRuntime from "effect/ManagedRuntime";
|
|
224
229
|
import { Context } from "@dxos/context";
|
|
225
230
|
import { CredentialGenerator, createCredentialSignerWithChain } from "@dxos/credentials";
|
|
226
231
|
import { failUndefined } from "@dxos/debug";
|
|
@@ -232,13 +237,16 @@ import { MemorySignalManager, MemorySignalManagerContext } from "@dxos/messaging
|
|
|
232
237
|
import { MemoryTransportFactory, SwarmNetworkManager } from "@dxos/network-manager";
|
|
233
238
|
import { Invitation as Invitation2 } from "@dxos/protocols/proto/dxos/client/services";
|
|
234
239
|
import { StorageType, createStorage } from "@dxos/random-access-storage";
|
|
240
|
+
import { layerMemory as sqliteLayerMemory } from "@dxos/sql-sqlite/platform";
|
|
241
|
+
import * as SqlTransaction from "@dxos/sql-sqlite/SqlTransaction";
|
|
235
242
|
import { BlobStore } from "@dxos/teleport-extension-object-sync";
|
|
236
243
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/test-builder.ts";
|
|
237
244
|
var createServiceHost = (config, signalManagerContext) => {
|
|
238
245
|
return new ClientServicesHost({
|
|
239
246
|
config,
|
|
240
247
|
signalManager: new MemorySignalManager(signalManagerContext),
|
|
241
|
-
transportFactory: MemoryTransportFactory
|
|
248
|
+
transportFactory: MemoryTransportFactory,
|
|
249
|
+
runtime: ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect
|
|
242
250
|
});
|
|
243
251
|
};
|
|
244
252
|
var createServiceContext = async ({ signalManagerFactory = async () => {
|
|
@@ -246,7 +254,7 @@ var createServiceContext = async ({ signalManagerFactory = async () => {
|
|
|
246
254
|
return new MemorySignalManager(signalContext);
|
|
247
255
|
}, storage = createStorage({
|
|
248
256
|
type: StorageType.RAM
|
|
249
|
-
}),
|
|
257
|
+
}), runtimeProps } = {}) => {
|
|
250
258
|
const signalManager = await signalManagerFactory();
|
|
251
259
|
const networkManager = new SwarmNetworkManager({
|
|
252
260
|
signalManager,
|
|
@@ -254,13 +262,14 @@ var createServiceContext = async ({ signalManagerFactory = async () => {
|
|
|
254
262
|
});
|
|
255
263
|
const level = createTestLevel();
|
|
256
264
|
await level.open();
|
|
257
|
-
|
|
258
|
-
|
|
265
|
+
const runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect;
|
|
266
|
+
return new ServiceContext(storage, level, networkManager, signalManager, void 0, void 0, runtime, {
|
|
267
|
+
invitationConnectionDefaultProps: {
|
|
259
268
|
teleport: {
|
|
260
269
|
controlHeartbeatInterval: 200
|
|
261
270
|
}
|
|
262
271
|
},
|
|
263
|
-
...
|
|
272
|
+
...runtimeProps
|
|
264
273
|
});
|
|
265
274
|
};
|
|
266
275
|
var createPeers = async (numPeers, signalManagerFactory) => {
|
|
@@ -274,7 +283,7 @@ var createPeers = async (numPeers, signalManagerFactory) => {
|
|
|
274
283
|
});
|
|
275
284
|
await peer.open(new Context(void 0, {
|
|
276
285
|
F: __dxlog_file2,
|
|
277
|
-
L:
|
|
286
|
+
L: 87
|
|
278
287
|
}));
|
|
279
288
|
return peer;
|
|
280
289
|
}));
|
|
@@ -287,7 +296,7 @@ var TestBuilder = class {
|
|
|
287
296
|
signalContext = new MemorySignalManagerContext();
|
|
288
297
|
_ctx = new Context(void 0, {
|
|
289
298
|
F: __dxlog_file2,
|
|
290
|
-
L:
|
|
299
|
+
L: 100
|
|
291
300
|
});
|
|
292
301
|
createPeer(peerOptions) {
|
|
293
302
|
const peer = new TestPeer(this.signalContext, peerOptions);
|
|
@@ -302,6 +311,7 @@ var TestPeer = class {
|
|
|
302
311
|
_signalContext;
|
|
303
312
|
_opts;
|
|
304
313
|
_props = {};
|
|
314
|
+
_runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
|
|
305
315
|
constructor(_signalContext, _opts = {
|
|
306
316
|
dataStore: StorageType.RAM
|
|
307
317
|
}) {
|
|
@@ -358,7 +368,8 @@ var TestPeer = class {
|
|
|
358
368
|
}
|
|
359
369
|
get echoHost() {
|
|
360
370
|
return this._props.echoHost ??= new EchoHost({
|
|
361
|
-
kv: this.level
|
|
371
|
+
kv: this.level,
|
|
372
|
+
runtime: this._runtime.runtimeEffect
|
|
362
373
|
});
|
|
363
374
|
}
|
|
364
375
|
get meshEchoReplicator() {
|
|
@@ -376,7 +387,7 @@ var TestPeer = class {
|
|
|
376
387
|
edgeConnection: void 0,
|
|
377
388
|
meshReplicator: this.meshEchoReplicator,
|
|
378
389
|
echoEdgeReplicator: void 0,
|
|
379
|
-
|
|
390
|
+
runtimeProps: this._opts.dataSpaceProps
|
|
380
391
|
});
|
|
381
392
|
}
|
|
382
393
|
get invitationsManager() {
|
|
@@ -398,6 +409,7 @@ var TestPeer = class {
|
|
|
398
409
|
async destroy() {
|
|
399
410
|
await this.level.close();
|
|
400
411
|
await this.storage.reset();
|
|
412
|
+
await this._runtime.dispose();
|
|
401
413
|
}
|
|
402
414
|
};
|
|
403
415
|
var createSigningContext = async (keyring) => {
|