@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
|
@@ -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-MQ6PWJ76.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!)",
|
|
@@ -197,10 +199,10 @@ var performInvitation = ({ host, guest, options, hooks, guestDeviceProfile, code
|
|
|
197
199
|
];
|
|
198
200
|
};
|
|
199
201
|
var createInvitation = async (host, options) => {
|
|
200
|
-
options
|
|
202
|
+
options ??= {
|
|
201
203
|
authMethod: Invitation.AuthMethod.NONE,
|
|
202
204
|
...options ?? {}
|
|
203
|
-
}
|
|
205
|
+
};
|
|
204
206
|
if (host instanceof ServiceContext) {
|
|
205
207
|
return host.invitationsManager.createInvitation({
|
|
206
208
|
kind: Invitation.Kind.SPACE,
|
|
@@ -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,26 +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
|
-
function _define_property(obj, key, value) {
|
|
237
|
-
if (key in obj) {
|
|
238
|
-
Object.defineProperty(obj, key, {
|
|
239
|
-
value,
|
|
240
|
-
enumerable: true,
|
|
241
|
-
configurable: true,
|
|
242
|
-
writable: true
|
|
243
|
-
});
|
|
244
|
-
} else {
|
|
245
|
-
obj[key] = value;
|
|
246
|
-
}
|
|
247
|
-
return obj;
|
|
248
|
-
}
|
|
249
243
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/test-builder.ts";
|
|
250
244
|
var createServiceHost = (config, signalManagerContext) => {
|
|
251
245
|
return new ClientServicesHost({
|
|
252
246
|
config,
|
|
253
247
|
signalManager: new MemorySignalManager(signalManagerContext),
|
|
254
|
-
transportFactory: MemoryTransportFactory
|
|
248
|
+
transportFactory: MemoryTransportFactory,
|
|
249
|
+
runtime: ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect
|
|
255
250
|
});
|
|
256
251
|
};
|
|
257
252
|
var createServiceContext = async ({ signalManagerFactory = async () => {
|
|
@@ -259,7 +254,7 @@ var createServiceContext = async ({ signalManagerFactory = async () => {
|
|
|
259
254
|
return new MemorySignalManager(signalContext);
|
|
260
255
|
}, storage = createStorage({
|
|
261
256
|
type: StorageType.RAM
|
|
262
|
-
}),
|
|
257
|
+
}), runtimeProps } = {}) => {
|
|
263
258
|
const signalManager = await signalManagerFactory();
|
|
264
259
|
const networkManager = new SwarmNetworkManager({
|
|
265
260
|
signalManager,
|
|
@@ -267,13 +262,14 @@ var createServiceContext = async ({ signalManagerFactory = async () => {
|
|
|
267
262
|
});
|
|
268
263
|
const level = createTestLevel();
|
|
269
264
|
await level.open();
|
|
270
|
-
|
|
271
|
-
|
|
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: {
|
|
272
268
|
teleport: {
|
|
273
269
|
controlHeartbeatInterval: 200
|
|
274
270
|
}
|
|
275
271
|
},
|
|
276
|
-
...
|
|
272
|
+
...runtimeProps
|
|
277
273
|
});
|
|
278
274
|
};
|
|
279
275
|
var createPeers = async (numPeers, signalManagerFactory) => {
|
|
@@ -287,7 +283,7 @@ var createPeers = async (numPeers, signalManagerFactory) => {
|
|
|
287
283
|
});
|
|
288
284
|
await peer.open(new Context(void 0, {
|
|
289
285
|
F: __dxlog_file2,
|
|
290
|
-
L:
|
|
286
|
+
L: 87
|
|
291
287
|
}));
|
|
292
288
|
return peer;
|
|
293
289
|
}));
|
|
@@ -297,6 +293,11 @@ var createIdentity = async (peer) => {
|
|
|
297
293
|
return peer;
|
|
298
294
|
};
|
|
299
295
|
var TestBuilder = class {
|
|
296
|
+
signalContext = new MemorySignalManagerContext();
|
|
297
|
+
_ctx = new Context(void 0, {
|
|
298
|
+
F: __dxlog_file2,
|
|
299
|
+
L: 100
|
|
300
|
+
});
|
|
300
301
|
createPeer(peerOptions) {
|
|
301
302
|
const peer = new TestPeer(this.signalContext, peerOptions);
|
|
302
303
|
this._ctx.onDispose(async () => peer.destroy());
|
|
@@ -305,35 +306,34 @@ var TestBuilder = class {
|
|
|
305
306
|
async destroy() {
|
|
306
307
|
await this._ctx.dispose();
|
|
307
308
|
}
|
|
308
|
-
constructor() {
|
|
309
|
-
_define_property(this, "signalContext", new MemorySignalManagerContext());
|
|
310
|
-
_define_property(this, "_ctx", new Context(void 0, {
|
|
311
|
-
F: __dxlog_file2,
|
|
312
|
-
L: 83
|
|
313
|
-
}));
|
|
314
|
-
}
|
|
315
309
|
};
|
|
316
310
|
var TestPeer = class {
|
|
311
|
+
_signalContext;
|
|
312
|
+
_opts;
|
|
313
|
+
_props = {};
|
|
314
|
+
_runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
|
|
315
|
+
constructor(_signalContext, _opts = {
|
|
316
|
+
dataStore: StorageType.RAM
|
|
317
|
+
}) {
|
|
318
|
+
this._signalContext = _signalContext;
|
|
319
|
+
this._opts = _opts;
|
|
320
|
+
}
|
|
317
321
|
get props() {
|
|
318
322
|
return this._props;
|
|
319
323
|
}
|
|
320
324
|
get storage() {
|
|
321
|
-
|
|
322
|
-
return (_this__props = this._props).storage ?? (_this__props.storage = createStorage({
|
|
325
|
+
return this._props.storage ??= createStorage({
|
|
323
326
|
type: this._opts.dataStore
|
|
324
|
-
})
|
|
327
|
+
});
|
|
325
328
|
}
|
|
326
329
|
get keyring() {
|
|
327
|
-
|
|
328
|
-
return (_this__props = this._props).keyring ?? (_this__props.keyring = new Keyring(this.storage.createDirectory("keyring")));
|
|
330
|
+
return this._props.keyring ??= new Keyring(this.storage.createDirectory("keyring"));
|
|
329
331
|
}
|
|
330
332
|
get level() {
|
|
331
|
-
|
|
332
|
-
return (_this__props = this._props).level ?? (_this__props.level = createTestLevel());
|
|
333
|
+
return this._props.level ??= createTestLevel();
|
|
333
334
|
}
|
|
334
335
|
get feedStore() {
|
|
335
|
-
|
|
336
|
-
return (_this__props = this._props).feedStore ?? (_this__props.feedStore = new FeedStore({
|
|
336
|
+
return this._props.feedStore ??= new FeedStore({
|
|
337
337
|
factory: new FeedFactory({
|
|
338
338
|
root: this.storage.createDirectory("feeds"),
|
|
339
339
|
signer: this.keyring,
|
|
@@ -341,48 +341,42 @@ var TestPeer = class {
|
|
|
341
341
|
valueEncoding
|
|
342
342
|
}
|
|
343
343
|
})
|
|
344
|
-
})
|
|
344
|
+
});
|
|
345
345
|
}
|
|
346
346
|
get metadataStore() {
|
|
347
|
-
|
|
348
|
-
return (_this__props = this._props).metadataStore ?? (_this__props.metadataStore = new MetadataStore(this.storage.createDirectory("metadata")));
|
|
347
|
+
return this._props.metadataStore ??= new MetadataStore(this.storage.createDirectory("metadata"));
|
|
349
348
|
}
|
|
350
349
|
get blobStore() {
|
|
351
|
-
|
|
352
|
-
return (_this__props = this._props).blobStore ?? (_this__props.blobStore = new BlobStore(this.storage.createDirectory("blobs")));
|
|
350
|
+
return this._props.blobStore ??= new BlobStore(this.storage.createDirectory("blobs"));
|
|
353
351
|
}
|
|
354
352
|
get networkManager() {
|
|
355
|
-
|
|
356
|
-
return (_this__props = this._props).networkManager ?? (_this__props.networkManager = new SwarmNetworkManager({
|
|
353
|
+
return this._props.networkManager ??= new SwarmNetworkManager({
|
|
357
354
|
signalManager: new MemorySignalManager(this._signalContext),
|
|
358
355
|
transportFactory: MemoryTransportFactory
|
|
359
|
-
})
|
|
356
|
+
});
|
|
360
357
|
}
|
|
361
358
|
get spaceManager() {
|
|
362
|
-
|
|
363
|
-
return (_this__props = this._props).spaceManager ?? (_this__props.spaceManager = new SpaceManager({
|
|
359
|
+
return this._props.spaceManager ??= new SpaceManager({
|
|
364
360
|
feedStore: this.feedStore,
|
|
365
361
|
networkManager: this.networkManager,
|
|
366
362
|
metadataStore: this.metadataStore,
|
|
367
363
|
blobStore: this.blobStore
|
|
368
|
-
})
|
|
364
|
+
});
|
|
369
365
|
}
|
|
370
366
|
get identity() {
|
|
371
367
|
return this._props.signingContext ?? failUndefined();
|
|
372
368
|
}
|
|
373
369
|
get echoHost() {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
})
|
|
370
|
+
return this._props.echoHost ??= new EchoHost({
|
|
371
|
+
kv: this.level,
|
|
372
|
+
runtime: this._runtime.runtimeEffect
|
|
373
|
+
});
|
|
378
374
|
}
|
|
379
375
|
get meshEchoReplicator() {
|
|
380
|
-
|
|
381
|
-
return (_this__props = this._props).meshEchoReplicator ?? (_this__props.meshEchoReplicator = new MeshEchoReplicator());
|
|
376
|
+
return this._props.meshEchoReplicator ??= new MeshEchoReplicator();
|
|
382
377
|
}
|
|
383
378
|
get dataSpaceManager() {
|
|
384
|
-
|
|
385
|
-
return (_this__props = this._props).dataSpaceManager ?? (_this__props.dataSpaceManager = new DataSpaceManager({
|
|
379
|
+
return this._props.dataSpaceManager ??= new DataSpaceManager({
|
|
386
380
|
spaceManager: this.spaceManager,
|
|
387
381
|
metadataStore: this.metadataStore,
|
|
388
382
|
keyring: this.keyring,
|
|
@@ -393,22 +387,20 @@ var TestPeer = class {
|
|
|
393
387
|
edgeConnection: void 0,
|
|
394
388
|
meshReplicator: this.meshEchoReplicator,
|
|
395
389
|
echoEdgeReplicator: void 0,
|
|
396
|
-
|
|
397
|
-
})
|
|
390
|
+
runtimeProps: this._opts.dataSpaceProps
|
|
391
|
+
});
|
|
398
392
|
}
|
|
399
393
|
get invitationsManager() {
|
|
400
|
-
|
|
401
|
-
return (_this__props = this._props).invitationsManager ?? (_this__props.invitationsManager = new InvitationsManager(new InvitationsHandler(this.networkManager), (invitation) => {
|
|
394
|
+
return this._props.invitationsManager ??= new InvitationsManager(new InvitationsHandler(this.networkManager), (invitation) => {
|
|
402
395
|
if (invitation.kind === Invitation2.Kind.SPACE) {
|
|
403
396
|
return new SpaceInvitationProtocol(this.dataSpaceManager, this.identity, this.keyring, invitation.spaceKey);
|
|
404
397
|
} else {
|
|
405
398
|
throw new Error("not implemented");
|
|
406
399
|
}
|
|
407
|
-
}, this.metadataStore)
|
|
400
|
+
}, this.metadataStore);
|
|
408
401
|
}
|
|
409
402
|
async createIdentity() {
|
|
410
|
-
|
|
411
|
-
(_this__props = this._props).signingContext ?? (_this__props.signingContext = await createSigningContext(this.keyring));
|
|
403
|
+
this._props.signingContext ??= await createSigningContext(this.keyring);
|
|
412
404
|
this.networkManager.setPeerInfo({
|
|
413
405
|
identityKey: this._props.signingContext.identityKey.toHex(),
|
|
414
406
|
peerKey: this._props.signingContext.deviceKey.toHex()
|
|
@@ -417,16 +409,7 @@ var TestPeer = class {
|
|
|
417
409
|
async destroy() {
|
|
418
410
|
await this.level.close();
|
|
419
411
|
await this.storage.reset();
|
|
420
|
-
|
|
421
|
-
constructor(_signalContext, _opts = {
|
|
422
|
-
dataStore: StorageType.RAM
|
|
423
|
-
}) {
|
|
424
|
-
_define_property(this, "_signalContext", void 0);
|
|
425
|
-
_define_property(this, "_opts", void 0);
|
|
426
|
-
_define_property(this, "_props", void 0);
|
|
427
|
-
this._signalContext = _signalContext;
|
|
428
|
-
this._opts = _opts;
|
|
429
|
-
this._props = {};
|
|
412
|
+
await this._runtime.dispose();
|
|
430
413
|
}
|
|
431
414
|
};
|
|
432
415
|
var createSigningContext = async (keyring) => {
|